summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/ChangeLog837
-rw-r--r--src/Makefile.in4
-rw-r--r--src/alloc.c186
-rw-r--r--src/bidi.c4
-rw-r--r--src/blockinput.h7
-rw-r--r--src/buffer.c8
-rw-r--r--src/buffer.h75
-rw-r--r--src/bytecode.c10
-rw-r--r--src/casetab.c4
-rw-r--r--src/category.c2
-rw-r--r--src/category.h5
-rw-r--r--src/ccl.c8
-rw-r--r--src/character.c2
-rw-r--r--src/character.h9
-rw-r--r--src/charset.c4
-rw-r--r--src/charset.h5
-rw-r--r--src/chartab.c4
-rw-r--r--src/composite.c6
-rw-r--r--src/composite.h19
-rw-r--r--src/conf_post.h39
-rw-r--r--src/data.c545
-rw-r--r--src/dired.c2
-rw-r--r--src/dispextern.h111
-rw-r--r--src/dispnew.c161
-rw-r--r--src/disptab.h2
-rw-r--r--src/emacs.c15
-rw-r--r--src/eval.c11
-rw-r--r--src/fileio.c3
-rw-r--r--src/filelock.c16
-rw-r--r--src/fns.c8
-rw-r--r--src/font.c17
-rw-r--r--src/font.h1
-rw-r--r--src/fontset.c15
-rw-r--r--src/frame.c103
-rw-r--r--src/frame.h197
-rw-r--r--src/ftfont.c2
-rw-r--r--src/gfilenotify.c2
-rw-r--r--src/gtkutil.c16
-rw-r--r--src/gtkutil.h4
-rw-r--r--src/image.c45
-rw-r--r--src/indent.c6
-rw-r--r--src/insdel.c3
-rw-r--r--src/intervals.c4
-rw-r--r--src/intervals.h7
-rw-r--r--src/keyboard.c41
-rw-r--r--src/keyboard.h19
-rw-r--r--src/lisp.h451
-rw-r--r--src/lisp.mk1
-rw-r--r--src/lread.c7
-rw-r--r--src/macfont.h144
-rw-r--r--src/macfont.m3858
-rw-r--r--src/macuvs.h9215
-rw-r--r--src/menu.c4
-rw-r--r--src/minibuf.c7
-rw-r--r--src/msdos.c8
-rw-r--r--src/msdos.h2
-rw-r--r--src/nsfns.m99
-rw-r--r--src/nsfont.m49
-rw-r--r--src/nsmenu.m2
-rw-r--r--src/nsterm.h51
-rw-r--r--src/nsterm.m202
-rw-r--r--src/process.c34
-rw-r--r--src/process.h7
-rw-r--r--src/ralloc.c22
-rw-r--r--src/regex.c6
-rw-r--r--src/syntax.c10
-rw-r--r--src/syntax.h55
-rw-r--r--src/sysdep.c2
-rw-r--r--src/systime.h9
-rw-r--r--src/term.c29
-rw-r--r--src/termchar.h4
-rw-r--r--src/termhooks.h15
-rw-r--r--src/terminal.c2
-rw-r--r--src/w32console.c1
-rw-r--r--src/w32fns.c114
-rw-r--r--src/w32font.c2
-rw-r--r--src/w32menu.c8
-rw-r--r--src/w32proc.c2
-rw-r--r--src/w32reg.c8
-rw-r--r--src/w32term.c247
-rw-r--r--src/w32term.h63
-rw-r--r--src/w32xfns.c8
-rw-r--r--src/widget.c2
-rw-r--r--src/window.c47
-rw-r--r--src/window.h30
-rw-r--r--src/xdisp.c410
-rw-r--r--src/xfaces.c45
-rw-r--r--src/xfns.c358
-rw-r--r--src/xfont.c12
-rw-r--r--src/xmenu.c24
-rw-r--r--src/xrdb.c4
-rw-r--r--src/xselect.c26
-rw-r--r--src/xsettings.c17
-rw-r--r--src/xsettings.h5
-rw-r--r--src/xterm.c1277
-rw-r--r--src/xterm.h115
96 files changed, 16977 insertions, 2737 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index 3ef8bee2f0b..a6774e30b0c 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,840 @@
+2013-09-26 Barry O'Reilly <gundaetiapo@gmail.com>
+
+ Signal error when reading an empty byte-code object (Bug#15405)
+ * lread.c (read1): signal error
+ * alloc.c (make_byte_code): eassert header size
+ (sweep_vectors): change an int to size_t
+
+2013-09-24 Paul Eggert <eggert@cs.ucla.edu>
+
+ * dispnew.c (clear_glyph_row, copy_row_except_pointers): Use enums
+ instead of ints, as it's the usual style for offsetof constants. See:
+ http://lists.gnu.org/archive/html/emacs-devel/2013-09/msg00478.html
+
+ * data.c (POPCOUNT_STATIC_INLINE): New macro, as a hack for popcount.
+ This is ugly, but it should fix the performance problem for older
+ GCC versions in the short run. I'll look into integrating the
+ Gnulib module for popcount, as a better fix.
+ See the thread starting in:
+ http://lists.gnu.org/archive/html/emacs-devel/2013-09/msg00474.html
+ (popcount_size_t_generic) [NEED_GENERIC_POPCOUNT]:
+ (popcount_size_t_msc) [USE_MSC_POPCOUNT]:
+ (popcount_size_t_gcc) [USE_GCC_POPCOUNT]:
+ (popcount_size_t): Use it.
+
+2013-09-24 Daniel Colascione <dancol@dancol.org>
+
+ * process.c (Fnetwork_interface_info): Fix build break due to
+ vector changes.
+
+2013-09-24 Paul Eggert <eggert@cs.ucla.edu>
+
+ * dispnew.c (clear_glyph_row, copy_row_except_pointers):
+ Prefer signed to unsigned integers where either will do.
+ No need for 'const' on locals that do not escape.
+ Omit easserts with unnecessary and unportable assumptions about
+ alignment. Avoid unnecessary casts to char *.
+
+2013-09-24 Dmitry Antipov <dmantipov@yandex.ru>
+
+ Use union for the payload of struct Lisp_Vector.
+ This helps to avoid a few glitches dictated by C's aliasing rules.
+ * lisp.h (struct Lisp_Vector): Use union for next and
+ contents member. Adjust comment. Change related users.
+ * alloc.c (next_in_free_list, set_next_in_free_list): Remove.
+ Related users changed.
+ * buffer.c, bytecode.c, ccl.c, character.h, chartab.c, composite.c:
+ * composite.h, disptab.h, fns.c, fontset.c, indent.c, keyboard.c:
+ * lread.c, msdos.c, process.c, w32menu.c, window.c, xdisp.c:
+ * xfaces.c, xfont.c, xmenu.c: Related users changed.
+
+2013-09-24 Dmitry Antipov <dmantipov@yandex.ru>
+
+ Optimize glyph row clearing and copying routines.
+ * dispextern.h (struct glyph_row): Change layout of struct
+ glyph_row to help copy_row_except_pointers. Adjust comment.
+ * dispnew.c (null_row): Remove.
+ (clear_glyph_row): Use offsetof and memset to find and clear
+ just the members that need clearing. Adjust comment.
+ (copy_row_except_pointers): Likewise for copying.
+
+2013-09-24 Paul Eggert <eggert@cs.ucla.edu>
+
+ Some minor cleanups of recently-added bool vector code.
+ * conf_post.h (assume): Always return void. Use lint version
+ only if GCC and MSC versions don't apply.
+ * conf_post.h (assume):
+ * data.c (USC_MSC_POPCOUNT, count_trailing_zero_bits):
+ Depend on _MSC_VER, not __MSC_VER, for consistency with
+ the rest of Emacs.
+ * data.c (bool_vector_spare_mask, popcount_size_t_generic)
+ (popcount_size_t_msc, popcount_size_t_gcc, popcount_size_t)
+ (bool_vector_binop_driver, count_trailing_zero_bits)
+ (size_t_to_host_endian): Now static, not static inline;
+ the latter isn't needed with modern compilers and doesn't
+ work with older compilers anyway.
+
+ * alloc.c (valgrind_p): Use bool for boolean.
+
+2013-09-23 Dmitry Antipov <dmantipov@yandex.ru>
+
+ * xdisp.c (noninteractive_need_newline, message_log_need_newline)
+ (overlay_arrow_seen, message_enable_multibyte, line_number_displayed)
+ (display_last_displayed_message_p, message_buf_print)
+ (message_cleared_p, help_echo_showing_p, hourglass_shown_p):
+ Use bool for boolean.
+ * dispextern.h (cancel_line, init_desired_glyphs):
+ Remove ancient leftover.
+ (help_echo_showing_p, hourglass_shown_p):
+ * lisp.h (noninteractive_need_newline): Adjust declaration.
+
+2013-09-23 Dmitry Antipov <dmantipov@yandex.ru>
+
+ * dispnew.c (frame_garbaged, selected_frame, last_nonminibuf_frame):
+ Move to...
+ * frame.c (frame_garbaged, selected_frame, last_nonminibuf_frame):
+ ...this file and convert the latter to static. Adjust comment.
+ (make_initial_frame):
+ * window.c (init_window_once): Adjust user.
+ * frame.h (last_nonminibuf_frame): Remove declaration.
+ * lisp.h (selected_frame): Likewise.
+ * msdos.c (the_only_display_info): Adjust comment.
+
+2013-09-23 Eli Zaretskii <eliz@gnu.org>
+
+ * xdisp.c (mouse_face_from_string_pos): Fix off-by-one error in
+ computing the end column of mouse-highlight that comes from
+ display or overlay strings. (Bug#15437)
+ (note_mouse_highlight): Adapt calculation of last argument to
+ mouse_face_from_string_pos to the above change.
+
+ * conf_post.h (__has_builtin): Define to zero, if undefined, on
+ all platforms, not just for clang.
+
+2013-09-23 Jan Djärv <jan.h.d@swipnet.se>
+
+ * filelock.c (lock_file_1): Rearrange to remove compiler warning
+ about excess arguments to snprintf.
+
+ * conf_post.h(assume): Use __builtin_unreachable for clang.
+
+2013-09-23 Juanma Barranquero <lekktu@gmail.com>
+
+ * w32console.c (initialize_w32_display): Remove unused variable hlinfo.
+ * w32term.c (w32_scroll_bar_handle_click): Remove unused variable f.
+
+2013-09-23 Daniel Colascione <dancol@dancol.org>
+
+ * alloc.c (USE_VALGRIND): New macro; on by default
+ when ENABLE_CHECKING.
+ (mark_maybe_object,mark_maybe_pointer)
+ [USE_VALGRIND]: Mark conservatively-scanned regions valid for
+ valgrind purposes.
+ (valgrind_p) [USE_VALGRIND]: New variable.
+ (init_alloc) [USE_VALGRIND]: Initialize valgrind_p.
+
+2013-09-22 Jan Djärv <jan.h.d@swipnet.se>
+
+ * process.c (wait_reading_process_output): Change int pnamelen to
+ socklen_t.
+
+ * nsterm.m (setMarkedText:selectedRange:):
+ (deleteWorkingText):
+ * nsmenu.m (addDisplayItemWithImage:idx:tag:helpText:enabled:):
+ * nsfont.m (ns_get_covering_families, ns_findfonts): Cast NSLog
+ argument to unsigned long to avoid warning.
+ (nsfont_draw): Use 0.25 instead of Fix2X (kATSItalicQDSkew).
+
+ * conf_post.h (assume): Fix compiler error: x shall be cond.
+
+2013-09-22 Daniel Colascione <dancol@dancol.org>
+
+ * xfns.c (x_get_monitor_attributes): Suppress unused variable
+ warning when compiling without a window system.
+
+2013-09-22 Daniel Colascione <dancol@dancol.org>
+
+ * data.c (Qbool_vector_p): New symbol.
+ (bool_vector_spare_mask,popcount_size_t_generic)
+ (popcount_size_t_msc,popcount_size_t_gcc)
+ (popcount_size_t)
+ (bool_vector_binop_driver)
+ (count_trailing_zero_bits,size_t_to_host_endian)
+ (Fbool_vector_exclusive_or)
+ (Fbool_vector_union)
+ (Fbool_vector_intersection,Fbool_vector_set_difference)
+ (Fbool_vector_subsetp,Fbool_vector_not)
+ (Fbool_vector_count_matches)
+ (Fbool_vector_count_matches_at): New functions.
+ (syms_of_data): Intern new symbol, functions.
+ * alloc.c (bool_vector_payload_bytes): New function.
+ (Fmake_bool_vector): Instead of calling Fmake_vector,
+ which performs redundant initialization and argument checking,
+ just call allocate_vector ourselves. Make sure we clear any
+ terminating padding to zero.
+ (vector_nbytes,sweep_vectors): Use bool_vector_payload_bytes
+ instead of open-coding the size calculation.
+ (vroundup_ct): New macro.
+ (vroundup): Assume argument >= 0; invoke vroundup_ct.
+ * casetab.c (shuffle,set_identity): Change lint_assume to assume.
+ * composite.c (composition_gstring_put_cache): Change
+ lint_assume to assume.
+ * conf_post.h (assume): New macro.
+ (lint_assume): Remove.
+ * dispnew.c (update_frame_1): Change lint_assume to assume.
+ * ftfont.c (ftfont_shape_by_flt): Change lint_assume
+ to assume.
+ * image.c (gif_load): Change lint_assume to assume.
+ * lisp.h (eassert_and_assume): New macro.
+ (Qbool_vector_p): Declare.
+ (CHECK_BOOL_VECTOR,ROUNDUP,BITS_PER_SIZE_T): New macros.
+ (swap16,swap32,swap64): New inline functions.
+ * macfont.c (macfont_shape): Change lint_assume to assume.
+ * ralloc.c: Rename ROUNDUP to PAGE_ROUNDUP throughout.
+ * xsettings.c (parse_settings): Use new swap16 and
+ swap32 from lisp.h instead of file-specific macros.
+
+2013-09-22 Eli Zaretskii <eliz@gnu.org>
+
+ * xdisp.c (try_window_id): Don't abort if cursor row could not be
+ found (which can legitimately happen when the glyph row at the
+ window start is disabled in the current_matrix. (Bug#15365)
+
+2013-09-22 Paul Eggert <eggert@cs.ucla.edu>
+
+ Fix syntax.h bug introduced by recent INLINE change.
+ syntax.h defined an extern inline function SYNTAX_ENTRY that was
+ conditionally compiled one way in some modules, and a different
+ way in others. This doesn't work with extern inline functions,
+ which must have the same definition in all modules, because the
+ defining code might be shared across modules, depending on the
+ implementation. Symptoms reported by Martin Rudalics in:
+ http://lists.gnu.org/archive/html/emacs-devel/2013-09/msg00414.html
+ * regex.c, syntax.c (SYNTAX_ENTRY_VIA_PROPERTY): Remove.
+ (SYNTAX, SYNTAX_ENTRY, SYNTAX_WITH_FLAGS): New macros,
+ overriding the corresponding functions in syntax.h.
+ * syntax.h (syntax_property_entry, syntax_property_with_flags)
+ (syntax_property): New inline functions.
+ (SYNTAX_ENTRY, SYNTAX_WITH_FLAGS, SYNTAX):
+ Rewrite in terms of these new functions.
+
+2013-09-21 Eli Zaretskii <eliz@gnu.org>
+
+ * dired.c (directory_files_internal): Use multibyte_chars_in_text,
+ not chars_in_text, whose result depends on the multibyteness of
+ the current buffer. (Bug#15426)
+
+2013-09-20 Paul Eggert <eggert@cs.ucla.edu>
+
+ Port recent change to hosts where pointers aren't 'long'.
+ * xterm.c (x_send_scroll_bar_event, x_scroll_bar_to_input_event):
+ Don't assume that pointers are the same width as 'long'.
+ Add a compile-time check that a pointer fits into two X slots.
+
+ A simpler, centralized INLINE.
+ * conf_post.h (INLINE): Define only if not already defined.
+ This allows us to use a single INLINE, defined by one file
+ per executable.
+ * emacs.c (INLINE): Define it.
+ Also, include category.h, charset.h, composite.h, dispextern.h,
+ syntax.h, systime.h, so that their INLINE definitions are expanded
+ properly for Emacs.
+ * blockinput.h, keyboard.c (BLOCKINPUT_INLINE):
+ * buffer.h, buffer.c (BUFFER_INLINE):
+ * category.h, category.c (CATEGORY_INLINE):
+ * character.h, character.c (CHARACTER_INLINE):
+ * charset.h, charset.c (CHARSET_INLINE):
+ * composite.h, composite.c (COMPOSITE_INLINE):
+ * dispextern.h, dispnew.c (DISPEXTERN_INLINE):
+ * frame.h, frame.c (FRAME_INLINE):
+ * intervals.h, intervals.c (INTERVALS_INLINE):
+ * keyboard.h, keyboard.c (KEYBOARD_INLINE):
+ * lisp.h, alloc.c (LISP_INLINE):
+ * process.h, process.c (PROCESS_INLINE):
+ * syntax.h, syntax.c (SYNTAX_INLINE):
+ * systime.h, sysdep.c (SYSTIME_INLINE):
+ * termhooks.h, terminal.h (TERMHOOKS_INLINE):
+ * window.h, window.c (WINDOW_INLINE):
+ Remove. All uses replaced with INLINE.
+
+2013-09-20 Dmitry Antipov <dmantipov@yandex.ru>
+
+ * xterm.c (handle_one_xevent): Revert part of 2013-09-17 change
+ to avoid Bug#15398.
+
+2013-09-19 Eli Zaretskii <eliz@gnu.org>
+
+ * w32reg.c (w32_get_string_resource): Make the first 2 arguments
+ 'const char *' to avoid compiler warnings due to similar change in
+ the prototype of x_get_string_resource.
+
+2013-09-19 Dmitry Antipov <dmantipov@yandex.ru>
+
+ * xterm.h (struct x_display_info): New members last_mouse_glyph_frame,
+ last_mouse_scroll_bar, last_mouse_glyph and last_mouse_movement_time,
+ going to replace static variables below. Adjust comments.
+ * xterm.c (last_mouse_glyph, last_mouse_glyph_frame)
+ (last_mouse_scroll_bar, last_mouse_movement_time): Remove.
+ (note_mouse_movement, XTmouse_position, x_scroll_bar_note_movement)
+ (x_scroll_bar_report_motion, handle_one_xevent, syms_of_xterm):
+ Related users changed.
+ * w32term.h (struct w32_display_info): New members last_mouse_glyph_frame,
+ last_mouse_scroll_bar, last_mouse_scroll_bar_pos, last_mouse_glyph and
+ last_mouse_movement_time, going to replace static variables below.
+ Adjust comments.
+ * w32term.c (last_mouse_glyph_frame, last_mouse_scroll_bar)
+ (last_mouse_scroll_bar_pos, last_mouse_glyph, last_mouse_movement_time):
+ Remove.
+ (note_mouse_movement, w32_mouse_position, w32_scroll_bar_handle_click)
+ (x_scroll_bar_report_motion, syms_of_w32term): Related users changed.
+ * nsterm.h (struct ns_display_info): New members last_mouse_glyph,
+ last_mouse_movement_time and last_mouse_scroll_bar, going to replace
+ static variables below.
+ * nsterm.m (last_mouse_glyph, last_mouse_movement_time)
+ (last_mouse_scroll_bar): Remove.
+ (note_mouse_movement, ns_mouse_position, mouseMoved, mouseEntered)
+ (mouseExited): Related users changed.
+
+2013-09-19 Dmitry Antipov <dmantipov@yandex.ru>
+
+ Do not use external array to process X scroll bar messages.
+ * xterm.c (scroll_bar_windows, scroll_bar_windows_size): Remove.
+ (x_send_scroll_bar_event): Pack window pointer into two slots
+ of XClientMessageEvent if we're 64-bit. Adjust comment.
+ (x_scroll_bar_to_input_event): Unpack accordingly.
+
+2013-09-18 Dmitry Antipov <dmantipov@yandex.ru>
+
+ Ifdef away recent changes which aren't relevant to NS port.
+ * dispextern.h (x_mouse_grabbed, x_redo_mouse_highlight)
+ [!HAVE_NS]: Declare as such.
+ * frame.c (x_mouse_grabbed, x_redo_mouse_highlight)
+ [!HAVE_NS]: Define as such.
+
+2013-09-18 Dmitry Antipov <dmantipov@yandex.ru>
+
+ * frame.c (x_redo_mouse_highlight): New function
+ to factor out common code used in W32 and X ports.
+ * dispextern.h (x_redo_mouse_highlight): Add prototype.
+ * xterm.h (struct x_display_info):
+ * w32term.h (struct w32_display_info):
+ * nsterm.h (struct ns_display_info): New members
+ last_mouse_motion_frame, last_mouse_motion_x and
+ last_mouse_motion_y, going to replace static variables below.
+ * xterm.c (last_mouse_motion_event, last_mouse_motion_frame)
+ (redo_mouse_highlight): Remove.
+ (note_mouse_movement, syms_of_xterm): Adjust user.
+ (handle_one_xevent): Likewise. Use x_redo_mouse_highlight.
+ * w32term.c (last_mouse_motion_event, last_mouse_motion_frame)
+ (redo_mouse_highlight): Remove.
+ (note_mouse_movement, syms_of_w32term): Adjust user.
+ (w32_read_socket): Likewise. Use x_redo_mouse_highlight.
+ * nsterm.m (last_mouse_motion_position, last_mouse_motion_frame):
+ Remove.
+ (note_mouse_movement, mouseMoved, syms_of_nsterm):
+ * nsfns.m (compute_tip_xy): Adjust user.
+
+2013-09-18 Dmitry Antipov <dmantipov@yandex.ru>
+
+ * frame.c (x_mouse_grabbed): New function.
+ * dispextern.h (x_mouse_grabbed): Add prototype.
+ (last_mouse_frame): Remove declaration.
+ * xterm.h (struct x_display_info):
+ * w32term.h (struct w32_display_info):
+ * nsterm.h (struct ns_display_info): New member
+ last_mouse_frame, going to replace...
+ * xdisp.c (last_mouse_frame): ...global variable.
+ (note_tool_bar_highlight):
+ * w32term.c (w32_mouse_position, w32_read_socket):
+ * xterm.c (XTmouse_position, handle_one_xevent):
+ Use x_mouse_grabbed.
+ * nsterm.m (ns_mouse_position, mouseDown): Adjust user.
+
+2013-09-17 Dmitry Antipov <dmantipov@yandex.ru>
+
+ * w32term.c (w32_read_socket): Avoid temporary
+ variables in a call to x_real_positions.
+ * xterm.c (handle_one_xevent): Likewise.
+
+2013-09-17 Dmitry Antipov <dmantipov@yandex.ru>
+
+ * frame.h (x_set_bitmap_icon) [!HAVE_NS]: New function.
+ (x_icon_type): Remove prototype.
+ (x_bitmap_icon) [!HAVE_NS]: Declare as such.
+ * frame.c (x_icon_type): Remove.
+ * w32term.c (x_make_frame_visible, x_iconify_frame):
+ * xterm.c (x_make_frame_visible, x_iconify_frame):
+ Use x_set_bitmap_icon to factor out common code.
+
+2013-09-17 Dmitry Antipov <dmantipov@yandex.ru>
+
+ * dispextern.h (check_x_display_info, x_get_string_resource):
+ Declare here just once and unify the latter.
+ * frame.c (check_x_display_info, x_get_string_resource):
+ * nsterm.h (check_x_display_info):
+ * xrdb.c (x_get_string_resource):
+ * xterm.h (check_x_display_info): Remove prototypes.
+ * nsfns.m (x_get_string_resource): Likewise. Adjust definition.
+ * w32reg.c (x_get_string_resource): Likewise.
+ (w32_get_rdb_resource): Adjust user.
+
+2013-09-17 Dmitry Antipov <dmantipov@yandex.ru>
+
+ * xterm.h (struct x_display_info): New member
+ x_pending_autoraise_frame, going to replace...
+ * xterm.c (pending_autoraise_frame): ...static variable.
+ (x_new_focus_frame, XTread_socket): Adjust users.
+ * w32term.h (struct w32_display_info): New member
+ w32_pending_autoraise_frame, going to replace...
+ * w32term.c (pending_autoraise_frame): ...global variable.
+ (x_new_focus_frame, w32_read_socket): Adjust users.
+
+2013-09-17 Glenn Morris <rgm@gnu.org>
+
+ * xdisp.c (message_dolog): If we create *Messages*,
+ switch it to messages-buffer-mode.
+
+2013-09-17 Paul Eggert <eggert@cs.ucla.edu>
+
+ Don't overuse 'const' in types of locals.
+ * bidi.c (bidi_count_bytes):
+ * gtkutil.c, gtkutil.h (xg_event_is_for_menubar)
+ (xg_event_is_for_scrollbar):
+ * xselect.c (x_handle_property_notify)
+ (x_handle_selection_notify, x_handle_dnd_message):
+ * xsettings.c, xsettings.h (xft_settings_event):
+ * xterm.c (x_handle_net_wm_state, handle_one_event)
+ (x_menubar_window_to_frame, x_detect_focus_change)
+ (construct_mouse_click, note_mouse_movement)
+ (x_scroll_bar_to_input_event, x_scroll_bar_expose)
+ (x_scroll_bar_handle_click, x_scroll_bar_note_movement)
+ (handle_one_xevent, x_handle_net_wm_state):
+ * xterm.h (x_handle_property_notify, x_handle_selection_notify)
+ (x_handle_dnd_message):
+ Avoid unnecessary 'const', typically the second 'const' in
+ 'const foo * const arg', a 'const' that does not affect the API
+ and doesn't significantly help the human reader.
+
+2013-09-17 Dmitry Antipov <dmantipov@yandex.ru>
+
+ * image.c (fn_g_type_init) [WINDOWSNT]: Define and load
+ only if Glib < 2.36.0.
+ (fn_g_type_init) [!WINDOWSNT]: Define only if Glib < 2.36.0.
+ * xsettings.c (init_gconf, init_gsettings): Do not check
+ for g_type_init.
+ * xterm.c (handle_one_xevent): Do not call to x_clear_area
+ if GTK >= 2.7.0.
+ (toplevel) [USE_MOTIF]: Include xlwmenu.h to pacify GCC.
+
+2013-09-16 Jan Djärv <jan.h.d@swipnet.se>
+
+ * xsettings.c (init_gconf, init_gsettings): Check for Glib 2.36.0
+ before calling g_type_init.
+
+ * font.c (syms_of_font): Move call to syms_of_(ns|mac)font ...
+
+ * nsterm.m (syms_of_nsterm): ... to here.
+
+2013-09-16 Dmitry Antipov <dmantipov@yandex.ru>
+
+ * xterm.c (toolkit_scroll_bar_interaction): Use bool for boolean.
+ (ignore_next_mouse_click_timeout): Use Time as X does.
+ (handle_one_xevent): Avoid cast and use unsigned comparison.
+
+2013-09-16 Dmitry Antipov <dmantipov@yandex.ru>
+
+ Do not copy X event in handle_one_xevent except KeyPress case.
+ Wnen XEvent is processed, it is unlikely to be changed except
+ KeyPress case, so we can avoid copying and use const pointer to
+ const data to make sure that an event is not changed elsewhere.
+ * xterm.c (handle_one_xevent): Change 2nd arg to 'const XEvent *
+ const' and do not create local copy except for the KeyPress event.
+ Use casts to avoid a few glitches. Adjust formatting. Add comments.
+ (SET_SAVED_BUTTON_EVENT): Remove and move the code to the only user.
+ (x_handle_net_wm_state, x_menubar_window_to_frame)
+ (x_detect_focus_change, construct_mouse_click, note_mouse_movement)
+ (x_scroll_bar_to_input_event, x_scroll_bar_expose)
+ (x_scroll_bar_handle_click, x_scroll_bar_note_movement):
+ * gtkutil.c (xg_event_is_for_menubar, xg_event_is_for_scrollbar):
+ * xselect.c (x_handle_property_notify, x_handle_selection_notify)
+ (x_handle_dnd_message):
+ * xsettings.c (xft_settings_event):
+ Use 'const XEvent * const' where appropriate.
+ * xterm.h, gtkutil.h, xsettngs.h: Adjust related prototypes.
+
+2013-09-16 Dmitry Antipov <dmantipov@yandex.ru>
+
+ Fix X event waiting to handle multiple frames.
+ * frame.h (struct frame) [HAVE_X_WINDOWS]: New member wait_event_type.
+ * xterm.c (pending_event_wait): Remove. Adjust users.
+ (x_detect_focus_change): Pass frame arg.
+ (handle_one_xevent): Find related frame early and clear per-frame
+ wait_event_type only if this is an event for the relevant frame.
+ (x_wait_for_event): Use per-frame wait_event_type.
+
+2013-09-15 Jan Djärv <jan.h.d@swipnet.se>
+
+ * nsfns.m (Fx_create_frame): Fix font driver registration for
+ GNUStep.
+
+ * font.c (syms_of_font): Check MAC_OS_X_VERSION_MAX_ALLOWED >= 1050
+ for syms_of_macfont.
+
+ * nsterm.m: Include macfont.h.
+ (ns_tmp_flags, ns_tmp_font): Remove.
+ (ns_compute_glyph_string_overhangs): Check for driver Qns.
+ (ns_draw_glyph_string): Use local variables instead of ns_tmp_flags,
+ ns_tmp_font. Call ns_draw_text_decoration here instead of nsfont.m.
+ (changeFont:): Fix code style. Check for font driver type when
+ getiing font.
+
+ * nsterm.h (FONT_DESCENT, FONT_ASCENT): Define to (f)->ascent and
+ (f)->descent.
+
+ * nsfont.m (ns_tmp_flags, ns_tmp_font): Remove.
+ (nsfont_open): Set font driver type.
+ Set font->ascent and font->descent. Figure out font instead of
+ ns_tmp_font, and flags instead of ns_tmp_flags.
+ Fix indentation. Remove call to ns_draw_text_decoration,
+ moved to nsterm.
+
+ * nsfns.m: Include macfont.h.
+ (Fx_create_frame): Register macfont driver, make a better default font.
+ (Fns_popup_font_panel): Get font from macfont driver, if used.
+
+ * macfont.m, macfont.h, maccuvs.h: New files.
+
+ * font.h: Declare syms_of_macfont.
+
+ * font.c (syms_of_font): Call syms_of_macfont.
+
+ * Makefile.in (NS_OBJ, SOME_MACHINE_OBJECTS): Add macfont.o.
+
+2013-09-15 Dmitry Antipov <dmantipov@yandex.ru>
+
+ Drop VERTICAL_SCROLL_BAR_WIDTH_TRIM. For X, it is zero since 1999,
+ and it is always zero for others, so I assume that this is an ancient
+ leftover which nobody will want to change any more.
+ * xterm.h, w32term.h, nsterm.h (VERTICAL_SCROLL_BAR_WIDTH_TRIM): Remove.
+ (VERTICAL_SCROLL_BAR_INSIDE_WIDTH):
+ * frame.c (x_set_scroll_bar_width):
+ * w32fns.c (w32_createscrollbar):
+ * w32term.c (w32_set_vertical_scroll_bar):
+ * xfns.c (x_set_scroll_bar_default_width):
+ * xterm.c (XTflash, x_scroll_bar_create, XTset_vertical_scroll_bar)
+ (x_scroll_bar_expose): Related users changed.
+
+2013-09-15 Dmitry Antipov <dmantipov@yandex.ru>
+
+ * xterm.h (FRAME_X_SCREEN_NUMBER): Add comment.
+ (BLACK_PIX_DEFAULT, WHITE_PIX_DEFAULT): Use FRAME_X_SCREEN_NUMBER.
+ (SCROLL_BAR_X_WIDGET, SET_SCROLL_BAR_X_WIDGET) [USE_X_TOOLKIT]:
+ Define as such.
+ * frame.h (FRAME_SMALLEST_CHAR_WIDTH, FRAME_SMALLEST_FONT_HEIGHT):
+ Define once here...
+ * nsterm.h, w32term.h, xterm.h: ...and not here.
+ * w32term.h (SCROLL_BAR_X_WIDGET, SET_SCROLL_BAR_X_WIDGET):
+ Remove unused Xisms.
+ * xterm.c, xfns.c (toplevel): Remove #ifdef HAVE_X_WINDOWS because
+ these modules are never compiled otherwise.
+
+2013-09-14 Eli Zaretskii <eliz@gnu.org>
+
+ * buffer.c (syms_of_buffer) <left-margin-width, right-margin-width>:
+ Doc fix. (Bug#15375)
+
+2013-09-13 Dmitry Antipov <dmantipov@yandex.ru>
+
+ Unify Fx_focus_frame between all ports.
+ * frame.h (x_focus_frame): New prototype.
+ * xfns.c (Fx_focus_frame): Remove.
+ (syms_of_xfns): Do not defsubr it.
+ (x_focus_frame): X implementation.
+ * nsfns.m (Fx_focus_frame): Remove.
+ (syms_of_nsfns): Do not defsubr it.
+ (x_focus_frame): NS implementation.
+ * w32term.c (Fx_focus_frame): Remove.
+ (x_focus_on_frame): Rename to...
+ (x_focus_frame): W32 implementation.
+ * w32term.h (x_focus_on_frame): Remove prototype.
+ * w32fns.c (Fx_focus_frame): Remove.
+ (syms_of_w32fns): Do not defsubr it.
+ * frame.c (Fx_focus_frame): Define here.
+ (syms_of_frame): Defsubr here.
+ * gtkutil.c (xg_tool_bar_callback): Use x_focus_frame.
+
+2013-09-13 Dmitry Antipov <dmantipov@yandex.ru>
+
+ Unify FRAME_window_system_DISPLAY_INFO macros between all ports.
+ All of them are replaced with FRAME_DISPLAY_INFO, defined in
+ each port to reference the port-specific window system data.
+ * msdos.h (FRAME_X_DISPLAY_INFO): Remove.
+ (FRAME_DISPLAY_INFO): Define.
+ * w32term.h (FRAME_W32_DISPLAY_INFO, FRAME_X_DISPLAY_INFO): Remove.
+ (FRAME_DISPLAY_INFO): Define. Adjust users.
+ * xterm.h (FRAME_X_DISPLAY_INFO): Remove.
+ (FRAME_DISPLAY_INFO): Define. Adjust users.
+ * frame.h (FRAME_RES_X, FRAME_RES_Y): Unify.
+ * font.c, frame.c, gtkutil.c, image.c, menu.c, msdos.c, nsfns.m:
+ * nsfont.m, nsterm.m, w32fns.c, w32font.c, w32menu.c, w32term.c:
+ * w32xfns.c, widget.c, xdisp.c, xfaces.c, xfns.c, xfont.c, xmenu.c:
+ * xselect.c, xterm.c: All related users changed.
+
+2013-09-13 Dmitry Antipov <dmantipov@yandex.ru>
+
+ * xterm.h (x_window_to_frame, x_any_window_to_frame)
+ (x_menubar_window_to_frame): Remove prototypes.
+ * xfns.c (x_window_to_frame, x_any_window_to_frame)
+ (x_menubar_window_to_frame, x_top_window_to_frame):
+ Move from here...
+ * xterm.c (x_window_to_frame, x_any_window_to_frame)
+ (x_menubar_window_to_frame, x_top_window_to_frame):
+ ...to here and convert all but the last to static.
+
+2013-09-12 Eli Zaretskii <eliz@gnu.org>
+
+ * lisp.mk (lisp): Add w32-common-fns.elc.
+
+2013-09-12 Xue Fuqiao <xfq.free@gmail.com>
+
+ * charset.c (char_charset): Document an exception for char-charset.
+
+2013-09-12 Dmitry Antipov <dmantipov@yandex.ru>
+
+ * xterm.h (x_display_info): New field last_user_time...
+ * xterm.c (toplevel): ...to replace static last_user_time.
+ (handle_one_xevent, x_ewmh_activate_frame): Adjust users.
+
+2013-09-12 Dmitry Antipov <dmantipov@yandex.ru>
+
+ * xterm.c (x_set_scroll_bar_thumb) [USE_LUCID && !HAVE_XAW3D]: Clip
+ scroll bar values to prevent thumb from disappear and update comment.
+
+2013-09-11 Glenn Morris <rgm@gnu.org>
+
+ * emacs.c (usage_message): Possessive apostrophe tweak.
+
+2013-09-11 Dmitry Antipov <dmantipov@yandex.ru>
+
+ * nsterm.m (syms_of_nsterm): Use Qns.
+ * w32fns.c (Fx_open_connection): Remove old '#if 0' code.
+ * w32term.c (w32_create_terminal, syms_of_w32term): Use Qw32.
+ * xfns.c (x_display_info_for_name, Fx_open_connection):
+ Remove old '#if 0' code.
+ (syms_of_xfns): Use Qx.
+ * termhooks.h (fullscreen_hook): Remove the leftover.
+ (struct terminal): Fix typo in comment.
+
+2013-09-11 Dmitry Antipov <dmantipov@yandex.ru>
+
+ Cleaning up a few X scroll bar bits.
+ * termhooks.h (enum scroll_bar_part): Add scroll_bar_nowhere member.
+ * xterm.h (struct scroll_bar) [USE_TOOLKIT_SCROLL_BARS && USE_LUCID]:
+ New member last_seen_part, going to replace...
+ * xterm.c [USE_TOOLKIT_SCROLL_BARS]: ...global last_scroll_bar_part.
+ (xt_action_hook) [USE_LUCID]: Adjust user.
+ (xm_scroll_callback, xg_scroll_callback): Do not bloat with
+ Lucid-specific scroll bar support.
+ (xaw_jump_callback, xaw_scroll_callback): Prefer enum scroll_par_part
+ to int and adjust to use last_seen_part member.
+ (x_set_toolkit_scroll_bar_thumb) [USE_LUCID]: Adjust user.
+ (x_scroll_bar_create) [USE_TOOLKIT_SCROLL_BARS && USE_LUCID]:
+ Initialize last_seen_part.
+
+2013-09-11 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * insdel.c (insert_from_buffer_1): Don't mark buffer as modified when
+ insert-buffer-substring an empty string.
+
+2013-09-11 Paul Eggert <eggert@cs.ucla.edu>
+
+ * xdisp.c (Ftool_bar_lines_needed): Declare as 'const' if ifdeffed out,
+ avoiding a GCC warning.
+
+2013-09-11 Dmitry Antipov <dmantipov@yandex.ru>
+
+ Ifdef away frame tool bar code when it is not really used.
+ * frame.h (struct frame) [HAVE_WINDOW_SYSTEM && !USE_GTK && !HAVE_NS]:
+ Move tool_bar_window, desired_tool_bar_string, current_tool_bar_string
+ and minimize_tool_bar_window_p under the above.
+ (fset_current_tool_bar_string, fset_desired_tool_bar_string)
+ (fset_tool_bar_window): Likewise.
+ * dispnew.c (clear_current_matrices, clear_desired_matrices)
+ (adjust_frame_glyphs_for_window_redisplay, free_glyphs, update_frame)
+ (change_frame_size_1):
+ * window.c (window_from_coordinates, Frecenter): Adjust users.
+ * window.h (WINDOW_TOOL_BAR_P): Define to zero when frame tool bar
+ code is not really used.
+ * xdisp.c (build_desired_tool_bar_string, display_tool_bar_line)
+ (tool_bar_lines_needed, MAX_FRAME_TOOL_BAR_HEIGHT, tool_bar_item_info)
+ (get_tool_bar_item, handle_tool_bar_click, note_tool_bar_highlight)
+ [!USE_GTK && !HAVE_NS]: Define as such.
+ (Ftool_bar_lines_needed, redisplay_tool_bar, show_mouse_face)
+ (note_mouse_highlight, expose_frame):
+ * xfns.c (x_set_tool_bar_lines):
+ * xterm.c (handle_one_xevent): Adjust users.
+
+2013-09-11 Paul Eggert <eggert@cs.ucla.edu>
+
+ Fix corruption with multiple emacsclient -t instances (Bug#15222).
+ This bug was introduced by my 2013-08-26 patch, which incorrectly
+ assumed that the terminfo implementation doesn't use termcap buffers.
+ * term.c (init_tty) [TERMINFO]: Remove optimization, as
+ these buffers apparently are used after all.
+ * termchar.h (TERMCAP_BUFFER_SIZE) [TERMINFO]: Define here too.
+ (struct tty_display_info): Define members termcap_term_buffer and
+ termcap_strings_buffer even if TERMINFO.
+
+2013-09-11 Dmitry Antipov <dmantipov@yandex.ru>
+
+ Fix last change.
+ * data.c (Feqlsign, Flss, Fgtr, Fleq, Fgeq): Add convenient
+ 'usage' docstring entry to pacify make-docfile.
+
+2013-09-11 Barry O'Reilly <gundaetiapo@gmail.com>
+
+ Change comparison functions =, <, >, <=, >= to take many arguments.
+ * data.c: Change comparison functions' interface and implementation.
+ * lisp.h: Make arithcompare available for efficient two arg
+ comparisons.
+ * bytecode.c: Use arithcompare.
+ * fileio.c: Use new interface.
+
+2013-09-11 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * keyboard.c (read_char): Don't break immediate_echo (bug#15332).
+
+2013-09-10 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * eval.c (Feval): Document the new use of `lexical'.
+
+2013-09-09 Dmitry Antipov <dmantipov@yandex.ru>
+
+ Review and drop old frame resize hack.
+ * frame.h (struct frame): Remove force_flush_display_p.
+ * dispnew.c (update_frame): Adjust user and don't call
+ flush_frame here. The comment has said that there was an issues
+ with redisplaying fringes, but I don't see any differences with
+ and without this hack. Hopefully we can continue without it.
+ * xdisp.c (clear_garbaged_frames): Adjust user and do not clear
+ current frame matrices twice if resized_p is set.
+
+2013-09-09 Dmitry Antipov <dmantipov@yandex.ru>
+
+ Do not populate pure Xism x_sync to other ports.
+ * frame.h (x_sync): Move under HAVE_X_WINDOWS.
+ * frame.c (other_visible_frames) [HAVE_X_WINDOWS]: Use as such.
+ * nsfns.m, w32xfns.c (x_sync): Remove no-op.
+ * w32term.h (x_sync): Remove prototype.
+
+2013-09-09 Dmitry Antipov <dmantipov@yandex.ru>
+
+ Cleanup frame flushing.
+ * dispextern.h (struct redisplay_interface):
+ Drop flush_display_optional because flush_display is enough
+ for X and flushing via RIF is just a no-op for others.
+ * frame.h (flush_frame): New function.
+ * dispnew.c (update_frame):
+ * minibuf.c (read_minibuf):
+ * xdisp.c (echo_area_display, redisplay_preserve_echo_area):
+ Use it.
+ * keyboard.c (detect_input_pending_run_timers): Do not flush
+ all frames but selected one in redisplay_preserve_echo_area.
+ * nsterm.m (ns_flush): Remove no-op.
+ (ns_redisplay_interface): Adjust user.
+ * w32term.h (x_flush): Remove no-op.
+ (w32_redisplay_interface): Adjust user.
+ * xterm.c (x_flush): Simplify because we do not flush all
+ frames at once any more. Adjust comment.
+ (x_redisplay_interface): Adjust user.
+
+2013-09-07 Paul Eggert <eggert@cs.ucla.edu>
+
+ Port --without-x --enable-gcc-warnings to Fedora 19.
+ * gfilenotify.c (globals_of_gfilenotify):
+ Call g_type_init only if using an older glib version that needs it.
+
+2013-09-06 Dmitry Antipov <dmantipov@yandex.ru>
+
+ * lisp.h (last_glyphless_glyph_frame, last_glyphless_glyph_face_id)
+ (last_glyphless_glyph_merged_face_id): Remove declarations.
+ * dispextern.h (merge_glyphless_glyph_face): Add prototype.
+ * xdisp.c (last_glyphless_glyph_frame, last_glyphless_glyph_face_id)
+ (last_glyphless_glyph_merged_face_id): Now static.
+ (merge_escape_glyph_face): New function, refactored from...
+ (get_next_display_element): ...here.
+ (merge_glyphless_glyph_face): New function, refactored from...
+ (produce_glyphless_glyph): ...here...
+ * term.c (produce_glyphless_glyph): ...and here.
+
+2013-09-06 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * eval.c (eval_sub): Only call Ffunction if necessary.
+
+2013-09-06 Dmitry Antipov <dmantipov@yandex.ru>
+
+ Attempt to make redisplay more selective when changing cursor type.
+ * frame.h (struct frame): New bitfield cursor_type_changed.
+ * xdisp.c (cursor_type_changed): Remove.
+ (try_cursor_movement, redisplay_window, try_window_id)
+ (set_frame_cursor_types, try_window_reusing_current_matrix):
+ Adjust to use per-frame bitfield.
+ (redisplay_internal): Look for cursor type change on each visible
+ frame and consider all frames if cursor type has been changed on
+ the frame other than selected. If cursor type has been changed on
+ selected frame only, do not use fast update.
+
+2013-09-06 Dmitry Antipov <dmantipov@yandex.ru>
+
+ Attempt to make redisplay more selective when changing fonts.
+ * frame.h (struct frame): New bitfield fonts_changed.
+ * dispextern.h (fonts_changed_p, adjust_glyphs): Remove declaration.
+ (adjust_frame_glyphs): Add prototype.
+ * dispnew.c (fonts_changed_p): Remove.
+ (adjust_glyphs): Remove because we do not
+ adjust matrices on all frames at once any more.
+ (adjust_frame_glyphs): Block and unblock input here.
+ (adjust_glyph_matrix): Use fonts_changed.
+ (change_frame_size_1): Use adjust_frame_glyphs.
+ * font.c (font_open_entity): Use fonts_changed.
+ * frame.c (set_menu_bar_lines, Fmake_terminal_frame):
+ * w32fns.c (x_set_menu_bar_lines, x_set_tool_bar_lines, Fx_show_tip):
+ * window.c (Fdelete_other_windows_internal, Fwindow_resize_apply)
+ (Fsplit_window_internal, Fdelete_window_internal, grow_mini_window)
+ (shrink_mini_window, Fresize_mini_window_internal)
+ (window_scroll_pixel_based, Fset_window_configuration)
+ (apply_window_adjustment, Fset_window_vscroll):
+ * xfns.c (x_set_menu_bar_lines, x_set_tool_bar_lines, Fx_show_tip):
+ Use adjust_frame_glyphs.
+ * xdisp.c (redisplay_tool_bar, redisplay_window, try_window)
+ (try_window_reusing_current_matrix, try_window_id, display_line)
+ (IT_EXPAND_MATRIX_WIDTH): Use fonts_changed.
+ (redisplay_internal): Consider fonts_changed and adjust frame
+ matrices for each frame only if the frame is visible. If font
+ has been changed on some frame during full redisplay, retry
+ only visible frames where the font has been actually changed.
+
+2013-09-05 Dmitry Antipov <dmantipov@yandex.ru>
+
+ Cache current header and mode line height for each window.
+ * window.h (struct window): New fields mode_line_height
+ and header_line_height.
+ * window.c (make_window): Initialize them.
+ * dispextern.h (CURRENT_MODE_LINE_HEIGHT)
+ (CURRENT_HEADER_LINE_HEIGHT): Use them. Adjust comment.
+ (current_mode_line_height, current_header_line_height):
+ Remove declaration.
+ * xdisp.c (current_mode_line_height, current_header_line_height):
+ Remove.
+ (pos_visible_p, init_xdisp): Adjust user.
+ (redisplay_window): Invalidate mode_line_height and
+ header_line_height if current and desired matrices do not agree.
+
+2013-09-05 Dmitry Antipov <dmantipov@yandex.ru>
+
+ * fontset.c, window.c, xdisp.c (toplevel): Use TERM_HEADER.
+ * xfaces.c (toplevel) [HAVE_X_WINDOWS]: Do not include xterm.h twice.
+
2013-09-05 Dmitry Antipov <dmantipov@yandex.ru>
Make --without-x compatible with --enable-gcc-warnings.
diff --git a/src/Makefile.in b/src/Makefile.in
index fe8d2d13ce0..254aa175d49 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -266,7 +266,7 @@ MSDOS_OBJ =
MSDOS_X_OBJ =
NS_OBJ=@NS_OBJ@
-## nsterm.o nsfns.o nsmenu.o nsselect.o nsimage.o nsfont.o if HAVE_NS.
+## nsterm.o nsfns.o nsmenu.o nsselect.o nsimage.o nsfont.o macfont.o if HAVE_NS.
NS_OBJC_OBJ=@NS_OBJC_OBJ@
## Only set if NS_IMPL_GNUSTEP.
GNU_OBJC_CFLAGS=@GNU_OBJC_CFLAGS@
@@ -388,7 +388,7 @@ obj = $(base_obj) $(NS_OBJC_OBJ)
SOME_MACHINE_OBJECTS = dosfns.o msdos.o \
xterm.o xfns.o xmenu.o xselect.o xrdb.o xsmfns.o fringe.o image.o \
fontset.o dbusbind.o cygw32.o \
- nsterm.o nsfns.o nsmenu.o nsselect.o nsimage.o nsfont.o \
+ nsterm.o nsfns.o nsmenu.o nsselect.o nsimage.o nsfont.o macfont.o \
w32.o w32console.o w32fns.o w32heap.o w32inevt.o w32notify.o \
w32menu.o w32proc.o w32reg.o w32select.o w32term.o w32xfns.o \
w16select.o widget.o xfont.o ftfont.o xftfont.o ftxfont.o gtkutil.o \
diff --git a/src/alloc.c b/src/alloc.c
index a8cbee1cf36..621693fc096 100644
--- a/src/alloc.c
+++ b/src/alloc.c
@@ -20,8 +20,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include <config.h>
-#define LISP_INLINE EXTERN_INLINE
-
#include <stdio.h>
#include <limits.h> /* For CHAR_BIT. */
@@ -47,6 +45,18 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include <verify.h>
+#if (defined ENABLE_CHECKING \
+ && defined HAVE_VALGRIND_VALGRIND_H \
+ && !defined USE_VALGRIND)
+# define USE_VALGRIND 1
+#endif
+
+#if USE_VALGRIND
+#include <valgrind/valgrind.h>
+#include <valgrind/memcheck.h>
+static bool valgrind_p;
+#endif
+
/* GC_CHECK_MARKED_OBJECTS means do sanity checks on allocated objects.
Doable only if GC_MARK_STACK. */
#if ! GC_MARK_STACK
@@ -971,7 +981,7 @@ struct ablocks
#define ABLOCKS_BASE(abase) (abase)
#else
#define ABLOCKS_BASE(abase) \
- (1 & (intptr_t) ABLOCKS_BUSY (abase) ? abase : ((void**)abase)[-1])
+ (1 & (intptr_t) ABLOCKS_BUSY (abase) ? abase : ((void **)abase)[-1])
#endif
/* The list of free ablock. */
@@ -1026,7 +1036,7 @@ lisp_align_malloc (size_t nbytes, enum mem_type type)
aligned = (base == abase);
if (!aligned)
- ((void**)abase)[-1] = base;
+ ((void **) abase)[-1] = base;
#ifdef DOUG_LEA_MALLOC
/* Back to a reasonable maximum of mmap'ed areas. */
@@ -2003,6 +2013,34 @@ INIT must be an integer that represents a character. */)
return val;
}
+verify (sizeof (size_t) * CHAR_BIT == BITS_PER_SIZE_T);
+verify ((BITS_PER_SIZE_T & (BITS_PER_SIZE_T - 1)) == 0);
+
+static ptrdiff_t
+bool_vector_payload_bytes (ptrdiff_t nr_bits,
+ ptrdiff_t *exact_needed_bytes_out)
+{
+ ptrdiff_t exact_needed_bytes;
+ ptrdiff_t needed_bytes;
+
+ eassert_and_assume (nr_bits >= 0);
+
+ exact_needed_bytes = ROUNDUP ((size_t) nr_bits, CHAR_BIT) / CHAR_BIT;
+ needed_bytes = ROUNDUP ((size_t) nr_bits, BITS_PER_SIZE_T) / CHAR_BIT;
+
+ if (needed_bytes == 0)
+ {
+ /* Always allocate at least one machine word of payload so that
+ bool-vector operations in data.c don't need a special case
+ for empty vectors. */
+ needed_bytes = sizeof (size_t);
+ }
+
+ if (exact_needed_bytes_out != NULL)
+ *exact_needed_bytes_out = exact_needed_bytes;
+
+ return needed_bytes;
+}
DEFUN ("make-bool-vector", Fmake_bool_vector, Smake_bool_vector, 2, 2, 0,
doc: /* Return a new bool-vector of length LENGTH, using INIT for each element.
@@ -2011,37 +2049,43 @@ LENGTH must be a number. INIT matters only in whether it is t or nil. */)
{
register Lisp_Object val;
struct Lisp_Bool_Vector *p;
- ptrdiff_t length_in_chars;
- EMACS_INT length_in_elts;
- int bits_per_value;
- int extra_bool_elts = ((bool_header_size - header_size + word_size - 1)
- / word_size);
+ ptrdiff_t exact_payload_bytes;
+ ptrdiff_t total_payload_bytes;
+ ptrdiff_t needed_elements;
CHECK_NATNUM (length);
+ if (PTRDIFF_MAX < XFASTINT (length))
+ memory_full (SIZE_MAX);
- bits_per_value = sizeof (EMACS_INT) * BOOL_VECTOR_BITS_PER_CHAR;
+ total_payload_bytes = bool_vector_payload_bytes
+ (XFASTINT (length), &exact_payload_bytes);
- length_in_elts = (XFASTINT (length) + bits_per_value - 1) / bits_per_value;
+ eassert_and_assume (exact_payload_bytes <= total_payload_bytes);
+ eassert_and_assume (0 <= exact_payload_bytes);
- val = Fmake_vector (make_number (length_in_elts + extra_bool_elts), Qnil);
+ needed_elements = ROUNDUP ((size_t) ((bool_header_size - header_size)
+ + total_payload_bytes),
+ word_size) / word_size;
- /* No Lisp_Object to trace in there. */
+ p = (struct Lisp_Bool_Vector *) allocate_vector (needed_elements);
+ XSETVECTOR (val, p);
XSETPVECTYPESIZE (XVECTOR (val), PVEC_BOOL_VECTOR, 0, 0);
- p = XBOOL_VECTOR (val);
p->size = XFASTINT (length);
-
- length_in_chars = ((XFASTINT (length) + BOOL_VECTOR_BITS_PER_CHAR - 1)
- / BOOL_VECTOR_BITS_PER_CHAR);
- if (length_in_chars)
+ if (exact_payload_bytes)
{
- memset (p->data, ! NILP (init) ? -1 : 0, length_in_chars);
+ memset (p->data, ! NILP (init) ? -1 : 0, exact_payload_bytes);
/* Clear any extraneous bits in the last byte. */
- p->data[length_in_chars - 1]
+ p->data[exact_payload_bytes - 1]
&= (1 << ((XFASTINT (length) - 1) % BOOL_VECTOR_BITS_PER_CHAR + 1)) - 1;
}
+ /* Clear padding at the end. */
+ memset (p->data + exact_payload_bytes,
+ 0,
+ total_payload_bytes - exact_payload_bytes);
+
return val;
}
@@ -2567,24 +2611,22 @@ enum
roundup_size = COMMON_MULTIPLE (word_size, USE_LSB_TAG ? GCALIGNMENT : 1)
};
-/* ROUNDUP_SIZE must be a power of 2. */
-verify ((roundup_size & (roundup_size - 1)) == 0);
-
/* Verify assumptions described above. */
verify ((VECTOR_BLOCK_SIZE % roundup_size) == 0);
verify (VECTOR_BLOCK_SIZE <= (1 << PSEUDOVECTOR_SIZE_BITS));
-/* Round up X to nearest mult-of-ROUNDUP_SIZE. */
-
-#define vroundup(x) (((x) + (roundup_size - 1)) & ~(roundup_size - 1))
+/* Round up X to nearest mult-of-ROUNDUP_SIZE --- use at compile time. */
+#define vroundup_ct(x) ROUNDUP ((size_t) (x), roundup_size)
+/* Round up X to nearest mult-of-ROUNDUP_SIZE --- use at runtime. */
+#define vroundup(x) (assume ((x) >= 0), vroundup_ct (x))
/* Rounding helps to maintain alignment constraints if USE_LSB_TAG. */
-#define VECTOR_BLOCK_BYTES (VECTOR_BLOCK_SIZE - vroundup (sizeof (void *)))
+#define VECTOR_BLOCK_BYTES (VECTOR_BLOCK_SIZE - vroundup_ct (sizeof (void *)))
/* Size of the minimal vector allocated from block. */
-#define VBLOCK_BYTES_MIN vroundup (header_size + sizeof (Lisp_Object))
+#define VBLOCK_BYTES_MIN vroundup_ct (header_size + sizeof (Lisp_Object))
/* Size of the largest vector allocated from block. */
@@ -2605,22 +2647,6 @@ verify (VECTOR_BLOCK_SIZE <= (1 << PSEUDOVECTOR_SIZE_BITS));
#define VINDEX(nbytes) (((nbytes) - VBLOCK_BYTES_MIN) / roundup_size)
-/* Get and set the next field in block-allocated vectorlike objects on
- the free list. Doing it this way respects C's aliasing rules.
- We could instead make 'contents' a union, but that would mean
- changes everywhere that the code uses 'contents'. */
-static struct Lisp_Vector *
-next_in_free_list (struct Lisp_Vector *v)
-{
- intptr_t i = XLI (v->contents[0]);
- return (struct Lisp_Vector *) i;
-}
-static void
-set_next_in_free_list (struct Lisp_Vector *v, struct Lisp_Vector *next)
-{
- v->contents[0] = XIL ((intptr_t) next);
-}
-
/* Common shortcut to setup vector on a free list. */
#define SETUP_ON_FREE_LIST(v, nbytes, tmp) \
@@ -2630,7 +2656,7 @@ set_next_in_free_list (struct Lisp_Vector *v, struct Lisp_Vector *next)
eassert ((nbytes) % roundup_size == 0); \
(tmp) = VINDEX (nbytes); \
eassert ((tmp) < VECTOR_MAX_FREE_LIST_INDEX); \
- set_next_in_free_list (v, vector_free_lists[tmp]); \
+ v->u.next = vector_free_lists[tmp]; \
vector_free_lists[tmp] = (v); \
total_free_vector_slots += (nbytes) / word_size; \
} while (0)
@@ -2644,7 +2670,7 @@ struct large_vector
struct large_vector *vector;
#if USE_LSB_TAG
/* We need to maintain ROUNDUP_SIZE alignment for the vector member. */
- unsigned char c[vroundup (sizeof (struct large_vector *))];
+ unsigned char c[vroundup_ct (sizeof (struct large_vector *))];
#endif
} next;
struct Lisp_Vector v;
@@ -2727,7 +2753,7 @@ allocate_vector_from_block (size_t nbytes)
if (vector_free_lists[index])
{
vector = vector_free_lists[index];
- vector_free_lists[index] = next_in_free_list (vector);
+ vector_free_lists[index] = vector->u.next;
total_free_vector_slots -= nbytes / word_size;
return vector;
}
@@ -2741,7 +2767,7 @@ allocate_vector_from_block (size_t nbytes)
{
/* This vector is larger than requested. */
vector = vector_free_lists[index];
- vector_free_lists[index] = next_in_free_list (vector);
+ vector_free_lists[index] = vector->u.next;
total_free_vector_slots -= nbytes / word_size;
/* Excess bytes are used for the smaller vector,
@@ -2785,10 +2811,14 @@ vector_nbytes (struct Lisp_Vector *v)
if (size & PSEUDOVECTOR_FLAG)
{
if (PSEUDOVECTOR_TYPEP (&v->header, PVEC_BOOL_VECTOR))
- size = (bool_header_size
- + (((struct Lisp_Bool_Vector *) v)->size
- + BOOL_VECTOR_BITS_PER_CHAR - 1)
- / BOOL_VECTOR_BITS_PER_CHAR);
+ {
+ struct Lisp_Bool_Vector *bv = (struct Lisp_Bool_Vector *) v;
+ ptrdiff_t payload_bytes =
+ bool_vector_payload_bytes (bv->size, NULL);
+
+ eassert_and_assume (payload_bytes >= 0);
+ size = bool_header_size + ROUNDUP (payload_bytes, word_size);
+ }
else
size = (header_size
+ ((size & PSEUDOVECTOR_SIZE_MASK)
@@ -2859,7 +2889,7 @@ sweep_vectors (void)
free_this_block = 1;
else
{
- int tmp;
+ size_t tmp;
SETUP_ON_FREE_LIST (vector, total_bytes, tmp);
}
}
@@ -2888,17 +2918,11 @@ sweep_vectors (void)
total_vectors++;
if (vector->header.size & PSEUDOVECTOR_FLAG)
{
- struct Lisp_Bool_Vector *b = (struct Lisp_Bool_Vector *) vector;
-
/* All non-bool pseudovectors are small enough to be allocated
from vector blocks. This code should be redesigned if some
pseudovector type grows beyond VBLOCK_BYTES_MAX. */
eassert (PSEUDOVECTOR_TYPEP (&vector->header, PVEC_BOOL_VECTOR));
-
- total_vector_slots
- += (bool_header_size
- + ((b->size + BOOL_VECTOR_BITS_PER_CHAR - 1)
- / BOOL_VECTOR_BITS_PER_CHAR)) / word_size;
+ total_vector_slots += vector_nbytes (vector) / word_size;
}
else
total_vector_slots
@@ -2941,7 +2965,7 @@ allocate_vectorlike (ptrdiff_t len)
else
{
struct large_vector *lv
- = lisp_malloc ((offsetof (struct large_vector, v.contents)
+ = lisp_malloc ((offsetof (struct large_vector, v.u.contents)
+ len * word_size),
MEM_TYPE_VECTORLIKE);
lv->next.vector = large_vectors;
@@ -2995,7 +3019,7 @@ allocate_pseudovector (int memlen, int lisplen, enum pvec_type tag)
/* Only the first lisplen slots will be traced normally by the GC. */
for (i = 0; i < lisplen; ++i)
- v->contents[i] = Qnil;
+ v->u.contents[i] = Qnil;
XSETPVECTYPESIZE (v, tag, lisplen, memlen - lisplen);
return v;
@@ -3083,7 +3107,7 @@ See also the function `vector'. */)
p = allocate_vector (XFASTINT (length));
sizei = XFASTINT (length);
for (i = 0; i < sizei; i++)
- p->contents[i] = init;
+ p->u.contents[i] = init;
XSETVECTOR (vector, p);
return vector;
@@ -3101,21 +3125,23 @@ usage: (vector &rest OBJECTS) */)
register struct Lisp_Vector *p = XVECTOR (val);
for (i = 0; i < nargs; i++)
- p->contents[i] = args[i];
+ p->u.contents[i] = args[i];
return val;
}
void
make_byte_code (struct Lisp_Vector *v)
{
- if (v->header.size > 1 && STRINGP (v->contents[1])
- && STRING_MULTIBYTE (v->contents[1]))
+ /* Don't allow the global zero_vector to become a byte code object. */
+ eassert(0 < v->header.size);
+ if (v->header.size > 1 && STRINGP (v->u.contents[1])
+ && STRING_MULTIBYTE (v->u.contents[1]))
/* BYTECODE-STRING must have been produced by Emacs 20.2 or the
earlier because they produced a raw 8-bit string for byte-code
and now such a byte-code string is loaded as multibyte while
raw 8-bit characters converted to multibyte form. Thus, now we
must convert them back to the original unibyte form. */
- v->contents[1] = Fstring_as_unibyte (v->contents[1]);
+ v->u.contents[1] = Fstring_as_unibyte (v->u.contents[1]);
XSETPVECTYPE (v, PVEC_COMPILED);
}
@@ -3150,7 +3176,7 @@ usage: (make-byte-code ARGLIST BYTE-CODE CONSTANTS DEPTH &optional DOCSTRING INT
to be setcar'd). */
for (i = 0; i < nargs; i++)
- p->contents[i] = args[i];
+ p->u.contents[i] = args[i];
make_byte_code (p);
XSETCOMPILED (val, p);
return val;
@@ -4296,6 +4322,11 @@ mark_maybe_object (Lisp_Object obj)
void *po;
struct mem_node *m;
+#if USE_VALGRIND
+ if (valgrind_p)
+ VALGRIND_MAKE_MEM_DEFINED (&obj, sizeof (obj));
+#endif
+
if (INTEGERP (obj))
return;
@@ -4364,6 +4395,11 @@ mark_maybe_pointer (void *p)
{
struct mem_node *m;
+#if USE_VALGRIND
+ if (valgrind_p)
+ VALGRIND_MAKE_MEM_DEFINED (&p, sizeof (p));
+#endif
+
/* Quickly rule out some values which can't point to Lisp data.
USE_LSB_TAG needs Lisp data to be aligned on multiples of GCALIGNMENT.
Otherwise, assume that Lisp data is aligned on even addresses. */
@@ -5131,7 +5167,7 @@ Does not copy symbols. Copies strings without text properties. */)
size &= PSEUDOVECTOR_SIZE_MASK;
vec = XVECTOR (make_pure_vector (size));
for (i = 0; i < size; i++)
- vec->contents[i] = Fpurecopy (AREF (obj, i));
+ vec->u.contents[i] = Fpurecopy (AREF (obj, i));
if (COMPILEDP (obj))
{
XSETPVECTYPE (vec, PVEC_COMPILED);
@@ -5622,7 +5658,7 @@ mark_vectorlike (struct Lisp_Vector *ptr)
The distinction is used e.g. by Lisp_Process which places extra
non-Lisp_Object fields at the end of the structure... */
for (i = 0; i < size; i++) /* ...and then mark its elements. */
- mark_object (ptr->contents[i]);
+ mark_object (ptr->u.contents[i]);
}
/* Like mark_vectorlike but optimized for char-tables (and
@@ -5639,7 +5675,7 @@ mark_char_table (struct Lisp_Vector *ptr)
VECTOR_MARK (ptr);
for (i = 0; i < size; i++)
{
- Lisp_Object val = ptr->contents[i];
+ Lisp_Object val = ptr->u.contents[i];
if (INTEGERP (val) || (SYMBOLP (val) && XSYMBOL (val)->gcmarkbit))
continue;
@@ -5844,10 +5880,10 @@ mark_object (Lisp_Object arg)
VECTOR_MARK (ptr);
for (i = 0; i < size; i++)
if (i != COMPILED_CONSTANTS)
- mark_object (ptr->contents[i]);
+ mark_object (ptr->u.contents[i]);
if (size > COMPILED_CONSTANTS)
{
- obj = ptr->contents[COMPILED_CONSTANTS];
+ obj = ptr->u.contents[COMPILED_CONSTANTS];
goto loop;
}
}
@@ -6612,6 +6648,10 @@ init_alloc (void)
#endif
Vgc_elapsed = make_float (0.0);
gcs_done = 0;
+
+#if USE_VALGRIND
+ valgrind_p = RUNNING_ON_VALGRIND != 0;
+#endif
}
void
diff --git a/src/bidi.c b/src/bidi.c
index 7d082a94997..dc905cd9e5f 100644
--- a/src/bidi.c
+++ b/src/bidi.c
@@ -870,8 +870,8 @@ bidi_line_init (struct bidi_it *bidi_it)
are zero-based character positions in S, BEGBYTE is byte position
corresponding to BEG. UNIBYTE means S is a unibyte string. */
static ptrdiff_t
-bidi_count_bytes (const unsigned char *s, const ptrdiff_t beg,
- const ptrdiff_t begbyte, const ptrdiff_t end, bool unibyte)
+bidi_count_bytes (const unsigned char *s, ptrdiff_t beg,
+ ptrdiff_t begbyte, ptrdiff_t end, bool unibyte)
{
ptrdiff_t pos = beg;
const unsigned char *p = s + begbyte, *start = p;
diff --git a/src/blockinput.h b/src/blockinput.h
index 6dc22c6f5dd..8f1b1e18985 100644
--- a/src/blockinput.h
+++ b/src/blockinput.h
@@ -20,9 +20,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#define EMACS_BLOCKINPUT_H
INLINE_HEADER_BEGIN
-#ifndef BLOCKINPUT_INLINE
-# define BLOCKINPUT_INLINE INLINE
-#endif
/* Emacs should avoid doing anything hairy in a signal handler, because
so many system functions are non-reentrant. For example, malloc
@@ -52,7 +49,7 @@ extern volatile int interrupt_input_blocked;
/* Begin critical section. */
-BLOCKINPUT_INLINE void
+INLINE void
block_input (void)
{
interrupt_input_blocked++;
@@ -64,7 +61,7 @@ extern void unblock_input_to (int);
/* In critical section ? */
-BLOCKINPUT_INLINE bool
+INLINE bool
input_blocked_p (void)
{
return interrupt_input_blocked > 0;
diff --git a/src/buffer.c b/src/buffer.c
index 0bcb608dbd3..1570f3831ac 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -20,8 +20,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include <config.h>
-#define BUFFER_INLINE EXTERN_INLINE
-
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/param.h>
@@ -4536,7 +4534,7 @@ report_overlay_modification (Lisp_Object start, Lisp_Object end, bool after,
Lisp_Object *copy = alloca (size * sizeof *copy);
ptrdiff_t i;
- memcpy (copy, XVECTOR (last_overlay_modification_hooks)->contents,
+ memcpy (copy, XVECTOR (last_overlay_modification_hooks)->u.contents,
size * word_size);
gcpro1.var = copy;
gcpro1.nvars = size;
@@ -5900,7 +5898,7 @@ See also the functions `display-table-slot' and `set-display-table-slot'. */);
DEFVAR_PER_BUFFER ("left-margin-width", &BVAR (current_buffer, left_margin_cols),
Qintegerp,
- doc: /* Width of left marginal area for display of a buffer.
+ doc: /* Width in columns of left marginal area for display of a buffer.
A value of nil means no marginal area.
Setting this variable does not take effect until a new buffer is displayed
@@ -5908,7 +5906,7 @@ in a window. To make the change take effect, call `set-window-buffer'. */);
DEFVAR_PER_BUFFER ("right-margin-width", &BVAR (current_buffer, right_margin_cols),
Qintegerp,
- doc: /* Width of right marginal area for display of a buffer.
+ doc: /* Width in columns of right marginal area for display of a buffer.
A value of nil means no marginal area.
Setting this variable does not take effect until a new buffer is displayed
diff --git a/src/buffer.h b/src/buffer.h
index 169a15c7d0f..a36c0d13c9e 100644
--- a/src/buffer.h
+++ b/src/buffer.h
@@ -22,9 +22,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include <time.h>
INLINE_HEADER_BEGIN
-#ifndef BUFFER_INLINE
-# define BUFFER_INLINE INLINE
-#endif
/* Accessing the parameters of the current buffer. */
@@ -875,97 +872,97 @@ struct buffer
/* Most code should use these functions to set Lisp fields in struct
buffer. */
-BUFFER_INLINE void
+INLINE void
bset_bidi_paragraph_direction (struct buffer *b, Lisp_Object val)
{
b->INTERNAL_FIELD (bidi_paragraph_direction) = val;
}
-BUFFER_INLINE void
+INLINE void
bset_case_canon_table (struct buffer *b, Lisp_Object val)
{
b->INTERNAL_FIELD (case_canon_table) = val;
}
-BUFFER_INLINE void
+INLINE void
bset_case_eqv_table (struct buffer *b, Lisp_Object val)
{
b->INTERNAL_FIELD (case_eqv_table) = val;
}
-BUFFER_INLINE void
+INLINE void
bset_directory (struct buffer *b, Lisp_Object val)
{
b->INTERNAL_FIELD (directory) = val;
}
-BUFFER_INLINE void
+INLINE void
bset_display_count (struct buffer *b, Lisp_Object val)
{
b->INTERNAL_FIELD (display_count) = val;
}
-BUFFER_INLINE void
+INLINE void
bset_display_time (struct buffer *b, Lisp_Object val)
{
b->INTERNAL_FIELD (display_time) = val;
}
-BUFFER_INLINE void
+INLINE void
bset_downcase_table (struct buffer *b, Lisp_Object val)
{
b->INTERNAL_FIELD (downcase_table) = val;
}
-BUFFER_INLINE void
+INLINE void
bset_enable_multibyte_characters (struct buffer *b, Lisp_Object val)
{
b->INTERNAL_FIELD (enable_multibyte_characters) = val;
}
-BUFFER_INLINE void
+INLINE void
bset_filename (struct buffer *b, Lisp_Object val)
{
b->INTERNAL_FIELD (filename) = val;
}
-BUFFER_INLINE void
+INLINE void
bset_keymap (struct buffer *b, Lisp_Object val)
{
b->INTERNAL_FIELD (keymap) = val;
}
-BUFFER_INLINE void
+INLINE void
bset_last_selected_window (struct buffer *b, Lisp_Object val)
{
b->INTERNAL_FIELD (last_selected_window) = val;
}
-BUFFER_INLINE void
+INLINE void
bset_local_var_alist (struct buffer *b, Lisp_Object val)
{
b->INTERNAL_FIELD (local_var_alist) = val;
}
-BUFFER_INLINE void
+INLINE void
bset_mark_active (struct buffer *b, Lisp_Object val)
{
b->INTERNAL_FIELD (mark_active) = val;
}
-BUFFER_INLINE void
+INLINE void
bset_point_before_scroll (struct buffer *b, Lisp_Object val)
{
b->INTERNAL_FIELD (point_before_scroll) = val;
}
-BUFFER_INLINE void
+INLINE void
bset_read_only (struct buffer *b, Lisp_Object val)
{
b->INTERNAL_FIELD (read_only) = val;
}
-BUFFER_INLINE void
+INLINE void
bset_truncate_lines (struct buffer *b, Lisp_Object val)
{
b->INTERNAL_FIELD (truncate_lines) = val;
}
-BUFFER_INLINE void
+INLINE void
bset_undo_list (struct buffer *b, Lisp_Object val)
{
b->INTERNAL_FIELD (undo_list) = val;
}
-BUFFER_INLINE void
+INLINE void
bset_upcase_table (struct buffer *b, Lisp_Object val)
{
b->INTERNAL_FIELD (upcase_table) = val;
}
-BUFFER_INLINE void
+INLINE void
bset_width_table (struct buffer *b, Lisp_Object val)
{
b->INTERNAL_FIELD (width_table) = val;
@@ -1089,7 +1086,7 @@ extern void set_buffer_if_live (Lisp_Object);
windows than the selected one requires a select_window at some
time, and that increments windows_or_buffers_changed. */
-BUFFER_INLINE void
+INLINE void
set_buffer_internal (struct buffer *b)
{
if (current_buffer != b)
@@ -1099,7 +1096,7 @@ set_buffer_internal (struct buffer *b)
/* Arrange to go back to the original buffer after the next
call to unbind_to if the original buffer is still alive. */
-BUFFER_INLINE void
+INLINE void
record_unwind_current_buffer (void)
{
record_unwind_protect (set_buffer_if_live, Fcurrent_buffer ());
@@ -1138,7 +1135,7 @@ extern Lisp_Object Qpriority, Qbefore_string, Qafter_string;
/* Get text properties of B. */
-BUFFER_INLINE INTERVAL
+INLINE INTERVAL
buffer_intervals (struct buffer *b)
{
eassert (b->text != NULL);
@@ -1147,7 +1144,7 @@ buffer_intervals (struct buffer *b)
/* Set text properties of B to I. */
-BUFFER_INLINE void
+INLINE void
set_buffer_intervals (struct buffer *b, INTERVAL i)
{
eassert (b->text != NULL);
@@ -1156,7 +1153,7 @@ set_buffer_intervals (struct buffer *b, INTERVAL i)
/* Non-zero if current buffer has overlays. */
-BUFFER_INLINE bool
+INLINE bool
buffer_has_overlays (void)
{
return current_buffer->overlays_before || current_buffer->overlays_after;
@@ -1176,7 +1173,7 @@ buffer_has_overlays (void)
the buffer to the next character after fetching this one. Instead,
use either FETCH_CHAR_ADVANCE or STRING_CHAR_AND_LENGTH. */
-BUFFER_INLINE int
+INLINE int
FETCH_MULTIBYTE_CHAR (ptrdiff_t pos)
{
unsigned char *p = ((pos >= GPT_BYTE ? GAP_SIZE : 0)
@@ -1188,7 +1185,7 @@ FETCH_MULTIBYTE_CHAR (ptrdiff_t pos)
If POS doesn't point the head of valid multi-byte form, only the byte at
POS is returned. No range checking. */
-BUFFER_INLINE int
+INLINE int
BUF_FETCH_MULTIBYTE_CHAR (struct buffer *buf, ptrdiff_t pos)
{
unsigned char *p
@@ -1199,7 +1196,7 @@ BUF_FETCH_MULTIBYTE_CHAR (struct buffer *buf, ptrdiff_t pos)
/* Return number of windows showing B. */
-BUFFER_INLINE int
+INLINE int
buffer_window_count (struct buffer *b)
{
if (b->base_buffer)
@@ -1306,13 +1303,13 @@ extern int last_per_buffer_idx;
/* Functions to get and set default value of the per-buffer
variable at offset OFFSET in the buffer structure. */
-BUFFER_INLINE Lisp_Object
+INLINE Lisp_Object
per_buffer_default (int offset)
{
return *(Lisp_Object *)(offset + (char *) &buffer_defaults);
}
-BUFFER_INLINE void
+INLINE void
set_per_buffer_default (int offset, Lisp_Object value)
{
*(Lisp_Object *)(offset + (char *) &buffer_defaults) = value;
@@ -1321,20 +1318,20 @@ set_per_buffer_default (int offset, Lisp_Object value)
/* Functions to get and set buffer-local value of the per-buffer
variable at offset OFFSET in the buffer structure. */
-BUFFER_INLINE Lisp_Object
+INLINE Lisp_Object
per_buffer_value (struct buffer *b, int offset)
{
return *(Lisp_Object *)(offset + (char *) b);
}
-BUFFER_INLINE void
+INLINE void
set_per_buffer_value (struct buffer *b, int offset, Lisp_Object value)
{
*(Lisp_Object *)(offset + (char *) b) = value;
}
/* Downcase a character C, or make no change if that cannot be done. */
-BUFFER_INLINE int
+INLINE int
downcase (int c)
{
Lisp_Object downcase_table = BVAR (current_buffer, downcase_table);
@@ -1343,10 +1340,10 @@ downcase (int c)
}
/* 1 if C is upper case. */
-BUFFER_INLINE bool uppercasep (int c) { return downcase (c) != c; }
+INLINE bool uppercasep (int c) { return downcase (c) != c; }
/* Upcase a character C known to be not upper case. */
-BUFFER_INLINE int
+INLINE int
upcase1 (int c)
{
Lisp_Object upcase_table = BVAR (current_buffer, upcase_table);
@@ -1355,13 +1352,13 @@ upcase1 (int c)
}
/* 1 if C is lower case. */
-BUFFER_INLINE bool
+INLINE bool
lowercasep (int c)
{
return !uppercasep (c) && upcase1 (c) != c;
}
/* Upcase a character C, or make no change if that cannot be done. */
-BUFFER_INLINE int upcase (int c) { return uppercasep (c) ? c : upcase1 (c); }
+INLINE int upcase (int c) { return uppercasep (c) ? c : upcase1 (c); }
INLINE_HEADER_END
diff --git a/src/bytecode.c b/src/bytecode.c
index e0e7b22ea13..23e50826633 100644
--- a/src/bytecode.c
+++ b/src/bytecode.c
@@ -536,7 +536,7 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth,
#ifdef BYTE_CODE_SAFE
bytestr_length = SBYTES (bytestr);
#endif
- vectorp = XVECTOR (vector)->contents;
+ vectorp = XVECTOR (vector)->u.contents;
stack.byte_string = bytestr;
stack.pc = stack.byte_string_start = SDATA (bytestr);
@@ -1367,7 +1367,7 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth,
Lisp_Object v1;
BEFORE_POTENTIAL_GC ();
v1 = POP;
- TOP = Fgtr (TOP, v1);
+ TOP = arithcompare (TOP, v1, ARITH_GRTR);
AFTER_POTENTIAL_GC ();
NEXT;
}
@@ -1377,7 +1377,7 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth,
Lisp_Object v1;
BEFORE_POTENTIAL_GC ();
v1 = POP;
- TOP = Flss (TOP, v1);
+ TOP = arithcompare (TOP, v1, ARITH_LESS);
AFTER_POTENTIAL_GC ();
NEXT;
}
@@ -1387,7 +1387,7 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth,
Lisp_Object v1;
BEFORE_POTENTIAL_GC ();
v1 = POP;
- TOP = Fleq (TOP, v1);
+ TOP = arithcompare (TOP, v1, ARITH_LESS_OR_EQUAL);
AFTER_POTENTIAL_GC ();
NEXT;
}
@@ -1397,7 +1397,7 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth,
Lisp_Object v1;
BEFORE_POTENTIAL_GC ();
v1 = POP;
- TOP = Fgeq (TOP, v1);
+ TOP = arithcompare (TOP, v1, ARITH_GRTR_OR_EQUAL);
AFTER_POTENTIAL_GC ();
NEXT;
}
diff --git a/src/casetab.c b/src/casetab.c
index b6b1c99c39f..69cd784f4cc 100644
--- a/src/casetab.c
+++ b/src/casetab.c
@@ -205,7 +205,7 @@ set_identity (Lisp_Object table, Lisp_Object c, Lisp_Object elt)
from = to = XINT (c);
to++;
- lint_assume (to <= MAX_CHAR + 1);
+ assume (to <= MAX_CHAR + 1);
for (; from < to; from++)
CHAR_TABLE_SET (table, from, make_number (from));
}
@@ -232,7 +232,7 @@ shuffle (Lisp_Object table, Lisp_Object c, Lisp_Object elt)
from = to = XINT (c);
to++;
- lint_assume (to <= MAX_CHAR + 1);
+ assume (to <= MAX_CHAR + 1);
for (; from < to; from++)
{
Lisp_Object tem = Faref (table, elt);
diff --git a/src/category.c b/src/category.c
index b28978fb721..da5e81e4709 100644
--- a/src/category.c
+++ b/src/category.c
@@ -30,8 +30,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include <config.h>
-#define CATEGORY_INLINE EXTERN_INLINE
-
#include "lisp.h"
#include "character.h"
#include "buffer.h"
diff --git a/src/category.h b/src/category.h
index 17cd203db45..828dcd1f325 100644
--- a/src/category.h
+++ b/src/category.h
@@ -54,9 +54,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
But, for the moment, we are not using this slot. */
INLINE_HEADER_BEGIN
-#ifndef CATEGORY_INLINE
-# define CATEGORY_INLINE INLINE
-#endif
#define CATEGORYP(x) RANGED_INTEGERP (0x20, x, 0x7E)
@@ -84,7 +81,7 @@ INLINE_HEADER_BEGIN
>> ((category) % 8)) & 1)
/* Return true if category set of CH contains CATEGORY. */
-CATEGORY_INLINE bool
+INLINE bool
CHAR_HAS_CATEGORY (int ch, int category)
{
Lisp_Object category_set = CATEGORY_SET (ch);
diff --git a/src/ccl.c b/src/ccl.c
index 8fec18296a6..d1783c25718 100644
--- a/src/ccl.c
+++ b/src/ccl.c
@@ -1094,7 +1094,7 @@ ccl_driver (struct ccl_program *ccl, int *source, int *destination, int src_size
ccl_prog_stack_struct[stack_idx].ic = ic;
ccl_prog_stack_struct[stack_idx].eof_ic = eof_ic;
stack_idx++;
- ccl_prog = XVECTOR (AREF (slot, 1))->contents;
+ ccl_prog = XVECTOR (AREF (slot, 1))->u.contents;
ic = CCL_HEADER_MAIN;
eof_ic = XFASTINT (ccl_prog[CCL_HEADER_EOF]);
}
@@ -1936,9 +1936,9 @@ setup_ccl_program (struct ccl_program *ccl, Lisp_Object ccl_prog)
return -1;
vp = XVECTOR (ccl_prog);
ccl->size = vp->header.size;
- ccl->prog = vp->contents;
- ccl->eof_ic = XINT (vp->contents[CCL_HEADER_EOF]);
- ccl->buf_magnification = XINT (vp->contents[CCL_HEADER_BUF_MAG]);
+ ccl->prog = vp->u.contents;
+ ccl->eof_ic = XINT (vp->u.contents[CCL_HEADER_EOF]);
+ ccl->buf_magnification = XINT (vp->u.contents[CCL_HEADER_BUF_MAG]);
if (ccl->idx >= 0)
{
Lisp_Object slot;
diff --git a/src/character.c b/src/character.c
index 6fefb6e8824..9807339a61e 100644
--- a/src/character.c
+++ b/src/character.c
@@ -29,8 +29,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include <config.h>
#endif
-#define CHARACTER_INLINE EXTERN_INLINE
-
#include <stdio.h>
#ifdef emacs
diff --git a/src/character.h b/src/character.h
index b2cdcb76699..d1b781caa53 100644
--- a/src/character.h
+++ b/src/character.h
@@ -26,9 +26,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include <verify.h>
INLINE_HEADER_BEGIN
-#ifndef CHARACTER_INLINE
-# define CHARACTER_INLINE INLINE
-#endif
/* character code 1st byte byte sequence
-------------- -------- -------------
@@ -558,7 +555,7 @@ INLINE_HEADER_BEGIN
#define SANE_TAB_WIDTH(buf) \
sanitize_tab_width (XFASTINT (BVAR (buf, tab_width)))
-CHARACTER_INLINE int
+INLINE int
sanitize_tab_width (EMACS_INT width)
{
return 0 < width && width <= 1000 ? width : 8;
@@ -579,7 +576,7 @@ sanitize_tab_width (EMACS_INT width)
/* Return a non-outlandish value for a character width. */
-CHARACTER_INLINE int
+INLINE int
sanitize_char_width (EMACS_INT width)
{
return 0 <= width && width <= 1000 ? width : 1000;
@@ -680,7 +677,7 @@ extern Lisp_Object string_escape_byte8 (Lisp_Object);
/* Return a translation table of id number ID. */
#define GET_TRANSLATION_TABLE(id) \
- (XCDR(XVECTOR(Vtranslation_table_vector)->contents[(id)]))
+ (XCDR (XVECTOR (Vtranslation_table_vector)->u.contents[(id)]))
INLINE_HEADER_END
diff --git a/src/charset.c b/src/charset.c
index eedf65faa6c..ef040a94605 100644
--- a/src/charset.c
+++ b/src/charset.c
@@ -26,8 +26,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include <config.h>
-#define CHARSET_INLINE EXTERN_INLINE
-
#include <errno.h>
#include <stdio.h>
#include <unistd.h>
@@ -2053,6 +2051,8 @@ CH in the charset. */)
DEFUN ("char-charset", Fchar_charset, Schar_charset, 1, 2, 0,
doc: /* Return the charset of highest priority that contains CH.
+ASCII characters are an exception: for them, this function always
+returns `ascii'.
If optional 2nd arg RESTRICTION is non-nil, it is a list of charsets
from which to find the charset. It may also be a coding system. In
that case, find the charset from what supported by that coding system. */)
diff --git a/src/charset.h b/src/charset.h
index d9a5662e520..6e6a8891b4a 100644
--- a/src/charset.h
+++ b/src/charset.h
@@ -30,9 +30,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include <verify.h>
INLINE_HEADER_BEGIN
-#ifndef CHARSET_INLINE
-# define CHARSET_INLINE INLINE
-#endif
/* Index to arguments of Fdefine_charset_internal. */
@@ -331,7 +328,7 @@ extern int emacs_mule_charset[256];
#define CHARSET_DEUNIFIER(charset) \
(CHARSET_ATTR_DEUNIFIER (CHARSET_ATTRIBUTES (charset)))
-CHARSET_INLINE void
+INLINE void
set_charset_attr (struct charset *charset, enum charset_attr_index idx,
Lisp_Object val)
{
diff --git a/src/chartab.c b/src/chartab.c
index b7b9590a538..089c4254da6 100644
--- a/src/chartab.c
+++ b/src/chartab.c
@@ -1258,7 +1258,7 @@ uniprop_encode_value_character (Lisp_Object table, Lisp_Object value)
static Lisp_Object
uniprop_encode_value_run_length (Lisp_Object table, Lisp_Object value)
{
- Lisp_Object *value_table = XVECTOR (XCHAR_TABLE (table)->extras[4])->contents;
+ Lisp_Object *value_table = XVECTOR (XCHAR_TABLE (table)->extras[4])->u.contents;
int i, size = ASIZE (XCHAR_TABLE (table)->extras[4]);
for (i = 0; i < size; i++)
@@ -1276,7 +1276,7 @@ uniprop_encode_value_run_length (Lisp_Object table, Lisp_Object value)
static Lisp_Object
uniprop_encode_value_numeric (Lisp_Object table, Lisp_Object value)
{
- Lisp_Object *value_table = XVECTOR (XCHAR_TABLE (table)->extras[4])->contents;
+ Lisp_Object *value_table = XVECTOR (XCHAR_TABLE (table)->extras[4])->u.contents;
int i, size = ASIZE (XCHAR_TABLE (table)->extras[4]);
CHECK_NUMBER (value);
diff --git a/src/composite.c b/src/composite.c
index 28942fe4f74..4f125522e38 100644
--- a/src/composite.c
+++ b/src/composite.c
@@ -24,8 +24,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include <config.h>
-#define COMPOSITE_INLINE EXTERN_INLINE
-
#include "lisp.h"
#include "character.h"
#include "buffer.h"
@@ -268,7 +266,7 @@ get_composition_id (ptrdiff_t charpos, ptrdiff_t bytepos, ptrdiff_t nchars,
composition_table = xpalloc (composition_table, &composition_table_size,
1, -1, sizeof *composition_table);
- key_contents = XVECTOR (key)->contents;
+ key_contents = XVECTOR (key)->u.contents;
/* Check if the contents of COMPONENTS are valid if COMPONENTS is a
vector or a list. It should be a sequence of:
@@ -676,7 +674,7 @@ composition_gstring_put_cache (Lisp_Object gstring, ptrdiff_t len)
len = j;
}
- lint_assume (len <= TYPE_MAXIMUM (ptrdiff_t) - 2);
+ assume (len <= TYPE_MAXIMUM (ptrdiff_t) - 2);
copy = Fmake_vector (make_number (len + 2), Qnil);
LGSTRING_SET_HEADER (copy, Fcopy_sequence (header));
for (i = 0; i < len; i++)
diff --git a/src/composite.h b/src/composite.h
index df170093797..b3ea5cd1ed8 100644
--- a/src/composite.h
+++ b/src/composite.h
@@ -28,9 +28,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include "font.h"
INLINE_HEADER_BEGIN
-#ifndef COMPOSITE_INLINE
-# define COMPOSITE_INLINE INLINE
-#endif
/* Methods to display a sequence of components of a composition. */
enum composition_method {
@@ -59,7 +56,7 @@ enum composition_method {
They don't check validity of PROP. */
/* Return true if PROP is already registered. */
-COMPOSITE_INLINE bool
+INLINE bool
composition_registered_p (Lisp_Object prop)
{
return INTEGERP (XCAR (prop));
@@ -91,8 +88,8 @@ composition_registered_p (Lisp_Object prop)
#define COMPOSITION_GLYPH(cmp, n) \
XINT (XVECTOR (XVECTOR (XHASH_TABLE (composition_hash_table) \
->key_and_value) \
- ->contents[cmp->hash_index * 2]) \
- ->contents[cmp->method == COMPOSITION_WITH_RULE_ALTCHARS \
+ ->u.contents[cmp->hash_index * 2]) \
+ ->u.contents[cmp->method == COMPOSITION_WITH_RULE_ALTCHARS \
? (n) * 2 : (n)])
/* Return the encoded composition rule to compose the Nth glyph of
@@ -101,8 +98,8 @@ composition_registered_p (Lisp_Object prop)
#define COMPOSITION_RULE(cmp, n) \
XINT (XVECTOR (XVECTOR (XHASH_TABLE (composition_hash_table) \
->key_and_value) \
- ->contents[cmp->hash_index * 2]) \
- ->contents[(n) * 2 - 1])
+ ->u.contents[cmp->hash_index * 2]) \
+ ->u.contents[(n) * 2 - 1])
/* Decode encoded composition rule RULE_CODE into GREF (global
reference point code), NREF (new ref. point code). Don't check RULE_CODE;
@@ -207,7 +204,7 @@ extern void compose_text (ptrdiff_t, ptrdiff_t, Lisp_Object, Lisp_Object,
/* Return the method of a composition with property PROP. */
-COMPOSITE_INLINE enum composition_method
+INLINE enum composition_method
composition_method (Lisp_Object prop)
{
if (composition_registered_p (prop))
@@ -226,7 +223,7 @@ composition_method (Lisp_Object prop)
/* Given offsets START and END, return true if PROP is a valid composition
property with length END - START. */
-COMPOSITE_INLINE bool
+INLINE bool
composition_valid_p (ptrdiff_t start, ptrdiff_t end, Lisp_Object prop)
{
return (CONSP (prop)
@@ -262,7 +259,7 @@ composition_valid_p (ptrdiff_t start, ptrdiff_t end, Lisp_Object prop)
#define LGSTRING_GLYPH_LEN(lgs) (ASIZE ((lgs)) - 2)
#define LGSTRING_GLYPH(lgs, idx) AREF ((lgs), (idx) + 2)
#define LGSTRING_SET_GLYPH(lgs, idx, val) ASET ((lgs), (idx) + 2, (val))
-COMPOSITE_INLINE Lisp_Object *
+INLINE Lisp_Object *
lgstring_glyph_addr (Lisp_Object lgs, ptrdiff_t idx)
{
return aref_addr (lgs, idx + 2);
diff --git a/src/conf_post.h b/src/conf_post.h
index 16714076f6f..0786bdfeb33 100644
--- a/src/conf_post.h
+++ b/src/conf_post.h
@@ -208,11 +208,8 @@ extern void _DebPrint (const char *fmt, ...);
[#include any other .h files first.]
...
INLINE_HEADER_BEGIN
- #ifndef FOO_INLINE
- # define FOO_INLINE INLINE
- #endif
...
- FOO_INLINE int
+ INLINE int
incr (int i)
{
return i + 1;
@@ -220,19 +217,22 @@ extern void _DebPrint (const char *fmt, ...);
...
INLINE_HEADER_END
- The corresponding foo.c file should do this:
+ For every executable, exactly one file that includes the header
+ should do this:
- #define FOO_INLINE EXTERN_INLINE
+ #define INLINE EXTERN_INLINE
- before including any .h file other than config.h.
- Other .c files should not define FOO_INLINE.
+ before including config.h or any other .h file.
+ Other .c files should not define INLINE.
C99 compilers compile functions like 'incr' as C99-style extern
inline functions. Pre-C99 GCCs do something similar with
GNU-specific keywords. Pre-C99 non-GCC compilers use static
functions, which bloats the code but is good enough. */
-#define INLINE _GL_INLINE
+#ifndef INLINE
+# define INLINE _GL_INLINE
+#endif
#define EXTERN_INLINE _GL_EXTERN_INLINE
#define INLINE_HEADER_BEGIN _GL_INLINE_HEADER_BEGIN
#define INLINE_HEADER_END _GL_INLINE_HEADER_END
@@ -248,16 +248,29 @@ extern void _DebPrint (const char *fmt, ...);
# define FLEXIBLE_ARRAY_MEMBER 1
#endif
+#ifndef __has_builtin
+# define __has_builtin(x) 0
+#endif
+
+/* Tell the compiler (and lint) that COND will always hold, and that
+ it should optimize (or check) accordingly. */
+#if (__has_builtin (__builtin_unreachable) \
+ || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5) || __GNUC__ > 4)
+# define assume(cond) ((cond) ? (void) 0 : __builtin_unreachable ())
+#elif defined _MSC_VER
+# define assume(cond) __assume (cond)
+#elif defined lint
+# define assume(cond) ((cond) ? (void) 0 : abort ())
+#else
+# define assume(cond) ((void) (0 && (cond)))
+#endif
+
/* Use this to suppress gcc's `...may be used before initialized' warnings. */
#ifdef lint
/* Use CODE only if lint checking is in effect. */
# define IF_LINT(Code) Code
-/* Assume that the expression COND is true. This differs in intent
- from 'assert', as it is a message from the programmer to the compiler. */
-# define lint_assume(cond) ((cond) ? (void) 0 : abort ())
#else
# define IF_LINT(Code) /* empty */
-# define lint_assume(cond) ((void) (0 && (cond)))
#endif
/* conf_post.h ends here */
diff --git a/src/data.c b/src/data.c
index 9f4bd1f1c02..79679bae444 100644
--- a/src/data.c
+++ b/src/data.c
@@ -54,6 +54,7 @@ Lisp_Object Qintegerp, Qwholenump, Qsymbolp, Qlistp, Qconsp;
static Lisp_Object Qnatnump;
Lisp_Object Qstringp, Qarrayp, Qsequencep, Qbufferp;
Lisp_Object Qchar_or_string_p, Qmarkerp, Qinteger_or_marker_p, Qvectorp;
+Lisp_Object Qbool_vector_p;
Lisp_Object Qbuffer_or_string_p;
static Lisp_Object Qkeywordp, Qboundp;
Lisp_Object Qfboundp;
@@ -616,7 +617,7 @@ global value outside of any lexical scope. */)
struct Lisp_Buffer_Local_Value *blv = SYMBOL_BLV (sym);
if (blv->fwd)
/* In set_internal, we un-forward vars when their value is
- set to Qunbound. */
+ set to Qunbound. */
return Qt;
else
{
@@ -627,7 +628,7 @@ global value outside of any lexical scope. */)
}
case SYMBOL_FORWARDED:
/* In set_internal, we un-forward vars when their value is
- set to Qunbound. */
+ set to Qunbound. */
return Qt;
default: emacs_abort ();
}
@@ -1995,7 +1996,7 @@ If the current binding is global (the default), the value is nil. */)
}
/* This code is disabled now that we use the selected frame to return
- keyboard-local-values. */
+ keyboard-local-values. */
#if 0
extern struct terminal *get_terminal (Lisp_Object display, int);
@@ -2255,10 +2256,8 @@ bool-vector. IDX starts at 0. */)
/* Arithmetic functions */
-enum comparison { equal, notequal, less, grtr, less_or_equal, grtr_or_equal };
-
-static Lisp_Object
-arithcompare (Lisp_Object num1, Lisp_Object num2, enum comparison comparison)
+Lisp_Object
+arithcompare (Lisp_Object num1, Lisp_Object num2, enum Arith_Comparison comparison)
{
double f1 = 0, f2 = 0;
bool floatp = 0;
@@ -2275,32 +2274,32 @@ arithcompare (Lisp_Object num1, Lisp_Object num2, enum comparison comparison)
switch (comparison)
{
- case equal:
+ case ARITH_EQUAL:
if (floatp ? f1 == f2 : XINT (num1) == XINT (num2))
return Qt;
return Qnil;
- case notequal:
+ case ARITH_NOTEQUAL:
if (floatp ? f1 != f2 : XINT (num1) != XINT (num2))
return Qt;
return Qnil;
- case less:
+ case ARITH_LESS:
if (floatp ? f1 < f2 : XINT (num1) < XINT (num2))
return Qt;
return Qnil;
- case less_or_equal:
+ case ARITH_LESS_OR_EQUAL:
if (floatp ? f1 <= f2 : XINT (num1) <= XINT (num2))
return Qt;
return Qnil;
- case grtr:
+ case ARITH_GRTR:
if (floatp ? f1 > f2 : XINT (num1) > XINT (num2))
return Qt;
return Qnil;
- case grtr_or_equal:
+ case ARITH_GRTR_OR_EQUAL:
if (floatp ? f1 >= f2 : XINT (num1) >= XINT (num2))
return Qt;
return Qnil;
@@ -2310,48 +2309,65 @@ arithcompare (Lisp_Object num1, Lisp_Object num2, enum comparison comparison)
}
}
-DEFUN ("=", Feqlsign, Seqlsign, 2, 2, 0,
- doc: /* Return t if two args, both numbers or markers, are equal. */)
- (register Lisp_Object num1, Lisp_Object num2)
+static Lisp_Object
+arithcompare_driver (ptrdiff_t nargs, Lisp_Object *args,
+ enum Arith_Comparison comparison)
{
- return arithcompare (num1, num2, equal);
+ for (ptrdiff_t argnum = 1; argnum < nargs; ++argnum)
+ {
+ if (EQ (Qnil, arithcompare (args[argnum-1], args[argnum], comparison)))
+ return Qnil;
+ }
+ return Qt;
}
-DEFUN ("<", Flss, Slss, 2, 2, 0,
- doc: /* Return t if first arg is less than second arg. Both must be numbers or markers. */)
- (register Lisp_Object num1, Lisp_Object num2)
+DEFUN ("=", Feqlsign, Seqlsign, 1, MANY, 0,
+ doc: /* Return t if args, all numbers or markers, are equal.
+usage: (= NUMBER-OR-MARKER &rest NUMBERS-OR-MARKERS) */)
+ (ptrdiff_t nargs, Lisp_Object *args)
{
- return arithcompare (num1, num2, less);
+ return arithcompare_driver (nargs, args, ARITH_EQUAL);
}
-DEFUN (">", Fgtr, Sgtr, 2, 2, 0,
- doc: /* Return t if first arg is greater than second arg. Both must be numbers or markers. */)
- (register Lisp_Object num1, Lisp_Object num2)
+DEFUN ("<", Flss, Slss, 1, MANY, 0,
+ doc: /* Return t if each arg is less than the next arg. All must be numbers or markers.
+usage: (< NUMBER-OR-MARKER &rest NUMBERS-OR-MARKERS) */)
+ (ptrdiff_t nargs, Lisp_Object *args)
{
- return arithcompare (num1, num2, grtr);
+ return arithcompare_driver (nargs, args, ARITH_LESS);
}
-DEFUN ("<=", Fleq, Sleq, 2, 2, 0,
- doc: /* Return t if first arg is less than or equal to second arg.
-Both must be numbers or markers. */)
- (register Lisp_Object num1, Lisp_Object num2)
+DEFUN (">", Fgtr, Sgtr, 1, MANY, 0,
+ doc: /* Return t if each arg is greater than the next arg. All must be numbers or markers.
+usage: (> NUMBER-OR-MARKER &rest NUMBERS-OR-MARKERS) */)
+ (ptrdiff_t nargs, Lisp_Object *args)
{
- return arithcompare (num1, num2, less_or_equal);
+ return arithcompare_driver (nargs, args, ARITH_GRTR);
}
-DEFUN (">=", Fgeq, Sgeq, 2, 2, 0,
- doc: /* Return t if first arg is greater than or equal to second arg.
-Both must be numbers or markers. */)
- (register Lisp_Object num1, Lisp_Object num2)
+DEFUN ("<=", Fleq, Sleq, 1, MANY, 0,
+ doc: /* Return t if each arg is less than or equal to the next arg.
+All must be numbers or markers.
+usage: (<= NUMBER-OR-MARKER &rest NUMBERS-OR-MARKERS) */)
+ (ptrdiff_t nargs, Lisp_Object *args)
+{
+ return arithcompare_driver (nargs, args, ARITH_LESS_OR_EQUAL);
+}
+
+DEFUN (">=", Fgeq, Sgeq, 1, MANY, 0,
+ doc: /* Return t if each arg is greater than or equal to the next arg.
+All must be numbers or markers.
+usage: (= NUMBER-OR-MARKER &rest NUMBERS-OR-MARKERS) */)
+ (ptrdiff_t nargs, Lisp_Object *args)
{
- return arithcompare (num1, num2, grtr_or_equal);
+ return arithcompare_driver (nargs, args, ARITH_GRTR_OR_EQUAL);
}
DEFUN ("/=", Fneq, Sneq, 2, 2, 0,
doc: /* Return t if first arg is not equal to second arg. Both must be numbers or markers. */)
(register Lisp_Object num1, Lisp_Object num2)
{
- return arithcompare (num1, num2, notequal);
+ return arithcompare (num1, num2, ARITH_NOTEQUAL);
}
DEFUN ("zerop", Fzerop, Szerop, 1, 1, 0,
@@ -2941,6 +2957,453 @@ lowercase l) for small endian machines. */)
return make_number (order);
}
+/* Because we round up the bool vector allocate size to word_size
+ units, we can safely read past the "end" of the vector in the
+ operations below. These extra bits are always zero. Also, we
+ always allocate bool vectors with at least one size_t of storage so
+ that we don't have to special-case empty bit vectors. */
+
+static size_t
+bool_vector_spare_mask (ptrdiff_t nr_bits)
+{
+ eassert_and_assume (nr_bits > 0);
+ return (((size_t) 1) << (nr_bits % BITS_PER_SIZE_T)) - 1;
+}
+
+#if _MSC_VER >= 1500 && (defined _M_IX86 || defined _M_X64)
+# define USE_MSC_POPCOUNT
+# define POPCOUNT_STATIC_INLINE static inline
+#elif __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)
+# define USE_GCC_POPCOUNT
+# if 199901L <= __STDC_VERSION__ || !__STRICT_ANSI__
+# define POPCOUNT_STATIC_INLINE static inline
+# endif
+#else
+# define NEED_GENERIC_POPCOUNT
+#endif
+#ifndef POPCOUNT_STATIC_INLINE
+# define POPCOUNT_STATIC_INLINE static
+#endif
+
+#ifdef USE_MSC_POPCOUNT
+# define NEED_GENERIC_POPCOUNT
+#endif
+
+#ifdef NEED_GENERIC_POPCOUNT
+POPCOUNT_STATIC_INLINE unsigned int
+popcount_size_t_generic (size_t val)
+{
+ unsigned short j;
+ unsigned int count = 0;
+
+ for (j = 0; j < BITS_PER_SIZE_T; ++j)
+ count += !!((((size_t) 1) << j) & val);
+
+ return count;
+}
+#endif
+
+#ifdef USE_MSC_POPCOUNT
+POPCOUNT_STATIC_INLINE unsigned int
+popcount_size_t_msc (size_t val)
+{
+ unsigned int count;
+
+#pragma intrinsic __cpuid
+ /* While gcc falls back to its own generic code if the machine on
+ which it's running doesn't support popcount, we need to perform the
+ detection and fallback ourselves when compiling with Microsoft's
+ compiler. */
+
+ static enum {
+ popcount_unknown_support,
+ popcount_use_generic,
+ popcount_use_intrinsic
+ } popcount_state;
+
+ if (popcount_state == popcount_unknown_support)
+ {
+ int cpu_info[4];
+ __cpuid (cpu_info, 1);
+ if (cpu_info[2] & (1<<23)) /* See MSDN. */
+ popcount_state = popcount_use_intrinsic;
+ else
+ popcount_state = popcount_use_generic;
+ }
+
+ if (popcount_state == popcount_use_intrinsic)
+ {
+# if BITS_PER_SIZE_T == 64
+# pragma intrinsic __popcnt64
+ count = __popcnt64 (val);
+# else
+# pragma intrinsic __popcnt
+ count = __popcnt (val);
+# endif
+ }
+ else
+ count = popcount_size_t_generic (val);
+
+ return count;
+}
+#endif /* USE_MSC_POPCOUNT */
+
+#ifdef USE_GCC_POPCOUNT
+POPCOUNT_STATIC_INLINE unsigned int
+popcount_size_t_gcc (size_t val)
+{
+# if BITS_PER_SIZE_T == 64
+ return __builtin_popcountll (val);
+# else
+ return __builtin_popcount (val);
+# endif
+}
+#endif /* USE_GCC_POPCOUNT */
+
+POPCOUNT_STATIC_INLINE unsigned int
+popcount_size_t (size_t val)
+{
+#if defined USE_MSC_POPCOUNT
+ return popcount_size_t_msc (val);
+#elif defined USE_GCC_POPCOUNT
+ return popcount_size_t_gcc (val);
+#else
+ return popcount_size_t_generic (val);
+#endif
+}
+
+enum bool_vector_op { bool_vector_exclusive_or,
+ bool_vector_union,
+ bool_vector_intersection,
+ bool_vector_set_difference,
+ bool_vector_subsetp };
+
+static Lisp_Object
+bool_vector_binop_driver (Lisp_Object op1,
+ Lisp_Object op2,
+ Lisp_Object dest,
+ enum bool_vector_op op)
+{
+ EMACS_INT nr_bits;
+ size_t *adata, *bdata, *cdata;
+ ptrdiff_t i;
+ size_t changed = 0;
+ size_t mword;
+ ptrdiff_t nr_words;
+
+ CHECK_BOOL_VECTOR (op1);
+ CHECK_BOOL_VECTOR (op2);
+
+ nr_bits = min (XBOOL_VECTOR (op1)->size,
+ XBOOL_VECTOR (op2)->size);
+
+ if (NILP (dest))
+ {
+ dest = Fmake_bool_vector (make_number (nr_bits), Qnil);
+ changed = 1;
+ }
+ else
+ {
+ CHECK_BOOL_VECTOR (dest);
+ nr_bits = min (nr_bits, XBOOL_VECTOR (dest)->size);
+ }
+
+ eassert_and_assume (nr_bits >= 0);
+ nr_words = ROUNDUP (nr_bits, BITS_PER_SIZE_T) / BITS_PER_SIZE_T;
+
+ adata = (size_t *) XBOOL_VECTOR (dest)->data;
+ bdata = (size_t *) XBOOL_VECTOR (op1)->data;
+ cdata = (size_t *) XBOOL_VECTOR (op2)->data;
+ i = 0;
+ do
+ {
+ if (op == bool_vector_exclusive_or)
+ mword = bdata[i] ^ cdata[i];
+ else if (op == bool_vector_union || op == bool_vector_subsetp)
+ mword = bdata[i] | cdata[i];
+ else if (op == bool_vector_intersection)
+ mword = bdata[i] & cdata[i];
+ else if (op == bool_vector_set_difference)
+ mword = bdata[i] &~ cdata[i];
+ else
+ abort ();
+
+ changed |= adata[i] ^ mword;
+
+ if (op != bool_vector_subsetp)
+ adata[i] = mword;
+
+ i++;
+ }
+ while (i < nr_words);
+
+ return changed ? dest : Qnil;
+}
+
+/* Compute the number of trailing zero bits in val. If val is zero,
+ return the number of bits in val. */
+static unsigned int
+count_trailing_zero_bits (size_t val)
+{
+ if (val == 0)
+ return CHAR_BIT * sizeof (val);
+
+#if defined USE_GCC_POPCOUNT && BITS_PER_SIZE_T == 64
+ return __builtin_ctzll (val);
+#elif defined USE_GCC_POPCOUNT && BITS_PER_SIZE_T == 32
+ return __builtin_ctz (val);
+#elif _MSC_VER && BITS_PER_SIZE_T == 64
+# pragma intrinsic _BitScanForward64
+ {
+ /* No support test needed: support since 386. */
+ unsigned long result;
+ _BitScanForward64 (&result, val);
+ return (unsigned int) result;
+ }
+#elif _MSC_VER && BITS_PER_SIZE_T == 32
+# pragma intrinsic _BitScanForward
+ {
+ /* No support test needed: support since 386. */
+ unsigned long result;
+ _BitScanForward (&result, val);
+ return (unsigned int) result;
+ }
+#else
+ {
+ unsigned int count;
+ count = 0;
+ for (val = ~val; val & 1; val >>= 1)
+ ++count;
+
+ return count;
+ }
+#endif
+}
+
+static size_t
+size_t_to_host_endian (size_t val)
+{
+#ifdef WORDS_BIGENDIAN
+# if BITS_PER_SIZE_T == 64
+ return swap64 (val);
+# else
+ return swap32 (val);
+# endif
+#else
+ return val;
+#endif
+}
+
+DEFUN ("bool-vector-exclusive-or", Fbool_vector_exclusive_or,
+ Sbool_vector_exclusive_or, 2, 3, 0,
+ doc: /* Compute C = A ^ B, bitwise exclusive or.
+A, B, and C must be bool vectors. If C is nil, allocate a new bool
+vector in which to store the result. Return the destination vector if
+it changed or nil otherwise. */
+ )
+ (Lisp_Object a, Lisp_Object b, Lisp_Object c)
+{
+ return bool_vector_binop_driver (a, b, c, bool_vector_exclusive_or);
+}
+
+DEFUN ("bool-vector-union", Fbool_vector_union,
+ Sbool_vector_union, 2, 3, 0,
+ doc: /* Compute C = A | B, bitwise or.
+A, B, and C must be bool vectors. If C is nil, allocate a new bool
+vector in which to store the result. Return the destination vector if
+it changed or nil otherwise. */)
+ (Lisp_Object a, Lisp_Object b, Lisp_Object c)
+{
+ return bool_vector_binop_driver (a, b, c, bool_vector_union);
+}
+
+DEFUN ("bool-vector-intersection", Fbool_vector_intersection,
+ Sbool_vector_intersection, 2, 3, 0,
+ doc: /* Compute C = A & B, bitwise and.
+A, B, and C must be bool vectors. If C is nil, allocate a new bool
+vector in which to store the result. Return the destination vector if
+it changed or nil otherwise. */)
+ (Lisp_Object a, Lisp_Object b, Lisp_Object c)
+{
+ return bool_vector_binop_driver (a, b, c, bool_vector_intersection);
+}
+
+DEFUN ("bool-vector-set-difference", Fbool_vector_set_difference,
+ Sbool_vector_set_difference, 2, 3, 0,
+ doc: /* Compute C = A &~ B, set difference.
+A, B, and C must be bool vectors. If C is nil, allocate a new bool
+vector in which to store the result. Return the destination vector if
+it changed or nil otherwise. */)
+ (Lisp_Object a, Lisp_Object b, Lisp_Object c)
+{
+ return bool_vector_binop_driver (a, b, c, bool_vector_set_difference);
+}
+
+DEFUN ("bool-vector-subsetp", Fbool_vector_subsetp,
+ Sbool_vector_subsetp, 2, 2, 0,
+ doc: )
+ (Lisp_Object a, Lisp_Object b)
+{
+ /* Like bool_vector_union, but doesn't modify b. */
+ return bool_vector_binop_driver (b, a, b, bool_vector_subsetp);
+}
+
+DEFUN ("bool-vector-not", Fbool_vector_not,
+ Sbool_vector_not, 1, 2, 0,
+ doc: /* Compute B = ~A.
+B must be a bool vector. A must be a bool vector or nil.
+If A is nil, allocate a new bool vector in which to store the result.
+Return the destination vector. */)
+ (Lisp_Object a, Lisp_Object b)
+{
+ EMACS_INT nr_bits;
+ size_t *bdata, *adata;
+ ptrdiff_t i;
+ size_t mword;
+
+ CHECK_BOOL_VECTOR (a);
+ nr_bits = XBOOL_VECTOR (a)->size;
+
+ if (NILP (b))
+ b = Fmake_bool_vector (make_number (nr_bits), Qnil);
+ else
+ {
+ CHECK_BOOL_VECTOR (b);
+ nr_bits = min (nr_bits, XBOOL_VECTOR (b)->size);
+ }
+
+ bdata = (size_t *) XBOOL_VECTOR (b)->data;
+ adata = (size_t *) XBOOL_VECTOR (a)->data;
+
+ eassert_and_assume (nr_bits >= 0);
+
+ for (i = 0; i < nr_bits / BITS_PER_SIZE_T; i++)
+ bdata[i] = ~adata[i];
+
+ if (nr_bits % BITS_PER_SIZE_T)
+ {
+ mword = size_t_to_host_endian (adata[i]);
+ mword = ~mword;
+ mword &= bool_vector_spare_mask (nr_bits);
+ bdata[i] = size_t_to_host_endian (mword);
+ }
+
+ return b;
+}
+
+DEFUN ("bool-vector-count-matches", Fbool_vector_count_matches,
+ Sbool_vector_count_matches, 2, 2, 0,
+ doc: /* Count how many elements in A equal B.
+A must be a bool vector. B is a generalized bool. */)
+ (Lisp_Object a, Lisp_Object b)
+{
+ ptrdiff_t count;
+ EMACS_INT nr_bits;
+ size_t *adata;
+ size_t match;
+ ptrdiff_t i;
+
+ CHECK_BOOL_VECTOR (a);
+
+ nr_bits = XBOOL_VECTOR (a)->size;
+ count = 0;
+ match = NILP (b) ? (size_t) -1 : 0;
+ adata = (size_t *) XBOOL_VECTOR (a)->data;
+
+ eassert_and_assume (nr_bits >= 0);
+
+ for (i = 0; i < nr_bits / BITS_PER_SIZE_T; ++i)
+ count += popcount_size_t (adata[i] ^ match);
+
+ /* Mask out trailing parts of final mword. */
+ if (nr_bits % BITS_PER_SIZE_T)
+ {
+ size_t mword = adata[i] ^ match;
+ mword = size_t_to_host_endian (mword);
+ count += popcount_size_t (mword & bool_vector_spare_mask (nr_bits));
+ }
+
+ return make_number (count);
+}
+
+DEFUN ("bool-vector-count-matches-at",
+ Fbool_vector_count_matches_at,
+ Sbool_vector_count_matches_at, 3, 3, 0,
+ doc: /* Count how many consecutive elements in A equal B at i.
+A must be a bool vector. B is a generalized boolean. i is an
+index into the vector. */)
+ (Lisp_Object a, Lisp_Object b, Lisp_Object i)
+{
+ ptrdiff_t count;
+ EMACS_INT nr_bits;
+ ptrdiff_t offset;
+ size_t *adata;
+ size_t twiddle;
+ size_t mword; /* Machine word. */
+ ptrdiff_t pos;
+ ptrdiff_t nr_words;
+
+ CHECK_BOOL_VECTOR (a);
+ CHECK_NATNUM (i);
+
+ nr_bits = XBOOL_VECTOR (a)->size;
+ if (XFASTINT (i) > nr_bits) /* Allow one past the end for convenience */
+ args_out_of_range (a, i);
+
+ adata = (size_t *) XBOOL_VECTOR (a)->data;
+
+ assume (nr_bits >= 0);
+ nr_words = ROUNDUP (nr_bits, BITS_PER_SIZE_T) / BITS_PER_SIZE_T;
+
+ pos = XFASTINT (i) / BITS_PER_SIZE_T;
+ offset = XFASTINT (i) % BITS_PER_SIZE_T;
+ count = 0;
+
+ /* By XORing with twiddle, we transform the problem of "count
+ consecutive equal values" into "count the zero bits". The latter
+ operation usually has hardware support. */
+ twiddle = NILP (b) ? 0 : (size_t) -1;
+
+ /* Scan the remainder of the mword at the current offset. */
+ if (pos < nr_words && offset != 0)
+ {
+ mword = size_t_to_host_endian (adata[pos]);
+ mword ^= twiddle;
+ mword >>= offset;
+ count = count_trailing_zero_bits (mword);
+ count = min (count, BITS_PER_SIZE_T - offset);
+ pos++;
+ if (count + offset < BITS_PER_SIZE_T)
+ return make_number (count);
+ }
+
+ /* Scan whole words until we either reach the end of the vector or
+ find an mword that doesn't completely match. twiddle is
+ endian-independent. */
+ while (pos < nr_words && adata[pos] == twiddle)
+ {
+ count += BITS_PER_SIZE_T;
+ ++pos;
+ }
+
+ if (pos < nr_words)
+ {
+ /* If we stopped because of a mismatch, see how many bits match
+ in the current mword. */
+ mword = size_t_to_host_endian (adata[pos]);
+ mword ^= twiddle;
+ count += count_trailing_zero_bits (mword);
+ }
+ else if (nr_bits % BITS_PER_SIZE_T != 0)
+ {
+ /* If we hit the end, we might have overshot our count. Reduce
+ the total by the number of spare bits at the end of the
+ vector. */
+ count -= BITS_PER_SIZE_T - nr_bits % BITS_PER_SIZE_T;
+ }
+
+ return make_number (count);
+}
void
@@ -2990,6 +3453,7 @@ syms_of_data (void)
DEFSYM (Qsequencep, "sequencep");
DEFSYM (Qbufferp, "bufferp");
DEFSYM (Qvectorp, "vectorp");
+ DEFSYM (Qbool_vector_p, "bool-vector-p");
DEFSYM (Qchar_or_string_p, "char-or-string-p");
DEFSYM (Qmarkerp, "markerp");
DEFSYM (Qbuffer_or_string_p, "buffer-or-string-p");
@@ -3207,6 +3671,15 @@ syms_of_data (void)
defsubr (&Ssubr_arity);
defsubr (&Ssubr_name);
+ defsubr (&Sbool_vector_exclusive_or);
+ defsubr (&Sbool_vector_union);
+ defsubr (&Sbool_vector_intersection);
+ defsubr (&Sbool_vector_set_difference);
+ defsubr (&Sbool_vector_not);
+ defsubr (&Sbool_vector_subsetp);
+ defsubr (&Sbool_vector_count_matches);
+ defsubr (&Sbool_vector_count_matches_at);
+
set_symbol_function (Qwholenump, XSYMBOL (Qnatnump)->function);
DEFVAR_LISP ("most-positive-fixnum", Vmost_positive_fixnum,
diff --git a/src/dired.c b/src/dired.c
index 2b79b54f2a4..1bdb171c4d0 100644
--- a/src/dired.c
+++ b/src/dired.c
@@ -278,7 +278,7 @@ directory_files_internal (Lisp_Object directory, Lisp_Object full,
memcpy (SDATA (fullname) + directory_nbytes + needsep,
SDATA (name), len);
- nchars = chars_in_text (SDATA (fullname), nbytes);
+ nchars = multibyte_chars_in_text (SDATA (fullname), nbytes);
/* Some bug somewhere. */
if (nchars > nbytes)
diff --git a/src/dispextern.h b/src/dispextern.h
index f70b1f8092e..af9efe660d9 100644
--- a/src/dispextern.h
+++ b/src/dispextern.h
@@ -49,18 +49,16 @@ typedef struct {
#endif
INLINE_HEADER_BEGIN
-#ifndef DISPEXTERN_INLINE
-# define DISPEXTERN_INLINE INLINE
-#endif
#include <c-strcase.h>
-DISPEXTERN_INLINE int
+INLINE int
xstrcasecmp (char const *a, char const *b)
{
return c_strcasecmp (a, b);
}
#ifdef HAVE_X_WINDOWS
+#include <X11/Xresource.h> /* for XrmDatabase */
typedef struct x_display_info Display_Info;
typedef XImage * XImagePtr;
typedef XImagePtr XImagePtr_or_DC;
@@ -288,10 +286,10 @@ typedef struct {
} GLYPH;
/* Return a glyph's character code. */
-DISPEXTERN_INLINE int GLYPH_CHAR (GLYPH glyph) { return glyph.ch; }
+INLINE int GLYPH_CHAR (GLYPH glyph) { return glyph.ch; }
/* Return a glyph's face ID. */
-DISPEXTERN_INLINE int GLYPH_FACE (GLYPH glyph) { return glyph.face_id; }
+INLINE int GLYPH_FACE (GLYPH glyph) { return glyph.face_id; }
#define SET_GLYPH_CHAR(glyph, char) ((glyph).ch = (char))
#define SET_GLYPH_FACE(glyph, face) ((glyph).face_id = (face))
@@ -300,7 +298,7 @@ DISPEXTERN_INLINE int GLYPH_FACE (GLYPH glyph) { return glyph.face_id; }
/* The following are valid only if GLYPH_CODE_P (gc). */
-DISPEXTERN_INLINE int
+INLINE int
GLYPH_CODE_CHAR (Lisp_Object gc)
{
return (CONSP (gc)
@@ -308,7 +306,7 @@ GLYPH_CODE_CHAR (Lisp_Object gc)
: XINT (gc) & MAX_CHAR);
}
-DISPEXTERN_INLINE int
+INLINE int
GLYPH_CODE_FACE (Lisp_Object gc)
{
return CONSP (gc) ? XINT (XCDR (gc)) : XINT (gc) >> CHARACTERBITS;
@@ -794,7 +792,10 @@ enum glyph_row_area
Rows in window matrices on frames having no frame matrices point to
glyphs allocated from the heap via xmalloc;
glyphs[LEFT_MARGIN_AREA] is the start address of the allocated
- glyph structure array. */
+ glyph structure array.
+
+ NOTE: layout of first four members of this structure is important,
+ see clear_glyph_row and copy_row_except_pointers to check why. */
struct glyph_row
{
@@ -814,8 +815,13 @@ struct glyph_row
removed some day, so don't use it in new code. */
struct glyph *glyphs[1 + LAST_AREA];
- /* Number of glyphs actually filled in areas. */
- short used[LAST_AREA];
+ /* Number of glyphs actually filled in areas. This could have size
+ LAST_AREA, but it's 1 + LAST_AREA to simplify offset calculations. */
+ short used[1 + LAST_AREA];
+
+ /* Hash code. This hash code is available as soon as the row
+ is constructed, i.e. after a call to display_line. */
+ unsigned hash;
/* Window-relative x and y-position of the top-left corner of this
row. If y < 0, this means that eabs (y) pixels of the row are
@@ -848,10 +854,6 @@ struct glyph_row
in last row when checking if row is fully visible. */
int extra_line_spacing;
- /* Hash code. This hash code is available as soon as the row
- is constructed, i.e. after a call to display_line. */
- unsigned hash;
-
/* First position in this row. This is the text position, including
overlay position information etc, where the display of this row
started, and can thus be less than the position of the first
@@ -1195,12 +1197,6 @@ struct glyph_row *matrix_row (struct glyph_matrix *, int);
((ROW)->phys_height - (ROW)->phys_ascent \
> (ROW)->height - (ROW)->ascent)
-/* True means that fonts have been loaded since the last glyph
- matrix adjustments. The function redisplay_internal adjusts glyph
- matrices when this flag is true. */
-
-extern bool fonts_changed_p;
-
/* A glyph for a space. */
extern struct glyph space_glyph;
@@ -1428,31 +1424,31 @@ struct glyph_string
#define CURRENT_MODE_LINE_FACE_ID(W) \
(CURRENT_MODE_LINE_FACE_ID_3((W), XWINDOW (selected_window), (W)))
-/* Return the current height of the mode line of window W. If not
- known from current_mode_line_height, look at W's current glyph
- matrix, or return a default based on the height of the font of the
- face `mode-line'. */
+/* Return the current height of the mode line of window W. If not known
+ from W->mode_line_height, look at W's current glyph matrix, or return
+ a default based on the height of the font of the face `mode-line'. */
-#define CURRENT_MODE_LINE_HEIGHT(W) \
- (current_mode_line_height >= 0 \
- ? current_mode_line_height \
- : (MATRIX_MODE_LINE_HEIGHT ((W)->current_matrix) \
- ? MATRIX_MODE_LINE_HEIGHT ((W)->current_matrix) \
- : estimate_mode_line_height (XFRAME ((W)->frame), \
- CURRENT_MODE_LINE_FACE_ID (W))))
+#define CURRENT_MODE_LINE_HEIGHT(W) \
+ (W->mode_line_height >= 0 \
+ ? W->mode_line_height \
+ : (W->mode_line_height \
+ = (MATRIX_MODE_LINE_HEIGHT (W->current_matrix) \
+ ? MATRIX_MODE_LINE_HEIGHT (W->current_matrix) \
+ : estimate_mode_line_height \
+ (XFRAME (W->frame), CURRENT_MODE_LINE_FACE_ID (W)))))
-/* Return the current height of the header line of window W. If not
- known from current_header_line_height, look at W's current glyph
- matrix, or return an estimation based on the height of the font of
- the face `header-line'. */
+/* Return the current height of the header line of window W. If not known
+ from W->header_line_height, look at W's current glyph matrix, or return
+ an estimation based on the height of the font of the face `header-line'. */
#define CURRENT_HEADER_LINE_HEIGHT(W) \
- (current_header_line_height >= 0 \
- ? current_header_line_height \
- : (MATRIX_HEADER_LINE_HEIGHT ((W)->current_matrix) \
- ? MATRIX_HEADER_LINE_HEIGHT ((W)->current_matrix) \
- : estimate_mode_line_height (XFRAME ((W)->frame), \
- HEADER_LINE_FACE_ID)))
+ (W->header_line_height >= 0 \
+ ? W->header_line_height \
+ : (W->header_line_height \
+ = (MATRIX_HEADER_LINE_HEIGHT (W->current_matrix) \
+ ? MATRIX_HEADER_LINE_HEIGHT (W->current_matrix) \
+ : estimate_mode_line_height \
+ (XFRAME (W->frame), HEADER_LINE_FACE_ID))))
/* Return the height of the desired mode line of window W. */
@@ -1829,7 +1825,7 @@ struct face_cache
#endif /* not HAVE_WINDOW_SYSTEM */
/* Return true if G contains a valid character code. */
-DISPEXTERN_INLINE bool
+INLINE bool
GLYPH_CHAR_VALID_P (GLYPH g)
{
return CHAR_VALID_P (GLYPH_CHAR (g));
@@ -1839,7 +1835,7 @@ GLYPH_CHAR_VALID_P (GLYPH g)
encodes a char code in the lower CHARACTERBITS bits and a (very small)
face-id in the upper bits, or it may be a cons (CHAR . FACE-ID). */
-DISPEXTERN_INLINE bool
+INLINE bool
GLYPH_CODE_P (Lisp_Object gc)
{
return (CONSP (gc)
@@ -2710,7 +2706,7 @@ typedef struct {
unsigned mouse_face_hidden : 1;
} Mouse_HLInfo;
-DISPEXTERN_INLINE void
+INLINE void
reset_mouse_highlight (Mouse_HLInfo *hlinfo)
{
@@ -2802,11 +2798,6 @@ struct redisplay_interface
/* Flush the display of frame F. For X, this is XFlush. */
void (*flush_display) (struct frame *f);
- /* Flush the display of frame F if non-NULL. This is called
- during redisplay, and should be NULL on systems which flush
- automatically before reading input. */
- void (*flush_display_optional) (struct frame *f);
-
/* Clear the mouse highlight in window W, if there is any. */
void (*clear_window_mouse_face) (struct window *w);
@@ -3200,12 +3191,10 @@ int in_display_vector_p (struct it *);
int frame_mode_line_height (struct frame *);
extern Lisp_Object Qtool_bar;
extern bool redisplaying_p;
-extern int help_echo_showing_p;
-extern int current_mode_line_height, current_header_line_height;
+extern bool help_echo_showing_p;
extern Lisp_Object help_echo_string, help_echo_window;
extern Lisp_Object help_echo_object, previous_help_echo_string;
extern ptrdiff_t help_echo_pos;
-extern struct frame *last_mouse_frame;
extern int last_tool_bar_item;
extern void reseat_at_previous_visible_line_start (struct it *);
extern Lisp_Object lookup_glyphless_char_display (int, struct it *);
@@ -3215,6 +3204,7 @@ extern ptrdiff_t compute_display_string_pos (struct text_pos *,
extern ptrdiff_t compute_display_string_end (ptrdiff_t,
struct bidi_string_data *);
extern void produce_stretch_glyph (struct it *);
+extern int merge_glyphless_glyph_face (struct it *);
#ifdef HAVE_WINDOW_SYSTEM
@@ -3404,7 +3394,7 @@ extern frame_parm_handler x_frame_parm_handlers[];
extern void start_hourglass (void);
extern void cancel_hourglass (void);
-extern int hourglass_shown_p;
+extern bool hourglass_shown_p;
/* If non-null, an asynchronous timer that, when it expires, displays
an hourglass cursor on all frames. */
extern struct atimer *hourglass_atimer;
@@ -3454,13 +3444,10 @@ extern Lisp_Object marginal_area_string (struct window *, enum window_part,
Lisp_Object *,
int *, int *, int *, int *);
extern void redraw_frame (struct frame *);
-extern void cancel_line (int, struct frame *);
-extern void init_desired_glyphs (struct frame *);
extern bool update_frame (struct frame *, bool, bool);
extern void update_frame_with_menu (struct frame *);
extern void bitch_at_user (void);
-void adjust_glyphs (struct frame *);
-struct glyph_matrix *save_current_matrix (struct frame *);
+extern void adjust_frame_glyphs (struct frame *);
void free_glyphs (struct frame *);
void free_window_matrices (struct window *);
void check_glyph_memory (void);
@@ -3546,6 +3533,7 @@ enum resource_types
RES_TYPE_BOOLEAN_NUMBER
};
+extern Display_Info *check_x_display_info (Lisp_Object);
extern Lisp_Object x_get_arg (Display_Info *, Lisp_Object,
Lisp_Object, const char *, const char *class,
enum resource_types);
@@ -3557,6 +3545,13 @@ extern Lisp_Object x_default_parameter (struct frame *, Lisp_Object,
Lisp_Object, Lisp_Object,
const char *, const char *,
enum resource_types);
+extern char *x_get_string_resource (XrmDatabase, const char *,
+ const char *);
+
+#ifndef HAVE_NS /* These both used on W32 and X only. */
+extern bool x_mouse_grabbed (Display_Info *);
+extern void x_redo_mouse_highlight (Display_Info *);
+#endif /* HAVE_NS */
#endif /* HAVE_WINDOW_SYSTEM */
diff --git a/src/dispnew.c b/src/dispnew.c
index 0a9ce116ebb..b1384a6feb3 100644
--- a/src/dispnew.c
+++ b/src/dispnew.c
@@ -20,8 +20,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include <config.h>
-#define DISPEXTERN_INLINE EXTERN_INLINE
-
#include "sysstdio.h"
#include <unistd.h>
@@ -77,7 +75,6 @@ struct dim
static void update_frame_line (struct frame *, int);
static int required_matrix_height (struct window *);
static int required_matrix_width (struct window *);
-static void adjust_frame_glyphs (struct frame *);
static void change_frame_size_1 (struct frame *, int, int, bool, bool, bool);
static void increment_row_positions (struct glyph_row *, ptrdiff_t, ptrdiff_t);
static void fill_up_frame_row_with_spaces (struct glyph_row *, int);
@@ -105,30 +102,12 @@ static void set_window_cursor_after_update (struct window *);
static void adjust_frame_glyphs_for_window_redisplay (struct frame *);
static void adjust_frame_glyphs_for_frame_redisplay (struct frame *);
-/* True upon entry to redisplay means do not assume anything about
- current contents of actual terminal frame; clear and redraw it. */
-
-bool frame_garbaged;
-
/* True means last display completed. False means it was preempted. */
bool display_completed;
Lisp_Object Qdisplay_table, Qredisplay_dont_pause;
-
-/* The currently selected frame. In a single-frame version, this
- variable always equals the_only_frame. */
-
-Lisp_Object selected_frame;
-
-/* A frame which is not just a mini-buffer, or 0 if there are no such
- frames. This is usually the most recent such frame that was
- selected. In a single-frame version, this variable always holds
- the address of the_only_frame. */
-
-struct frame *last_nonminibuf_frame;
-
/* True means SIGWINCH happened when not safe. */
static bool delayed_size_change;
@@ -152,16 +131,6 @@ static int glyph_pool_count;
static struct frame *frame_matrix_frame;
-/* True means that fonts have been loaded since the last glyph
- matrix adjustments. Redisplay must stop, and glyph matrices must
- be adjusted when this flag becomes true during display. The
- reason fonts can be loaded so late is that fonts of fontsets are
- loaded on demand. Another reason is that a line contains many
- characters displayed by zero width or very narrow glyphs of
- variable-width fonts. */
-
-bool fonts_changed_p;
-
/* Convert vpos and hpos from frame to window and vice versa.
This may only be used for terminal frames. */
@@ -433,7 +402,7 @@ adjust_glyph_matrix (struct window *w, struct glyph_matrix *matrix, int x, int y
|| right != matrix->right_margin_glyphs);
if (!marginal_areas_changed_p
- && !fonts_changed_p
+ && !XFRAME (w->frame)->fonts_changed
&& !header_line_changed_p
&& matrix->window_left_col == WINDOW_LEFT_EDGE_COL (w)
&& matrix->window_top_line == WINDOW_TOP_EDGE_LINE (w)
@@ -794,9 +763,11 @@ clear_current_matrices (register struct frame *f)
clear_glyph_matrix (XWINDOW (f->menu_bar_window)->current_matrix);
#endif
+#if defined (HAVE_WINDOW_SYSTEM) && ! defined (USE_GTK) && ! defined (HAVE_NS)
/* Clear the matrix of the tool-bar window, if any. */
if (WINDOWP (f->tool_bar_window))
clear_glyph_matrix (XWINDOW (f->tool_bar_window)->current_matrix);
+#endif
/* Clear current window matrices. */
eassert (WINDOWP (FRAME_ROOT_WINDOW (f)));
@@ -817,8 +788,10 @@ clear_desired_matrices (register struct frame *f)
clear_glyph_matrix (XWINDOW (f->menu_bar_window)->desired_matrix);
#endif
+#if defined (HAVE_WINDOW_SYSTEM) && ! defined (USE_GTK) && ! defined (HAVE_NS)
if (WINDOWP (f->tool_bar_window))
clear_glyph_matrix (XWINDOW (f->tool_bar_window)->desired_matrix);
+#endif
/* Do it for window matrices. */
eassert (WINDOWP (FRAME_ROOT_WINDOW (f)));
@@ -859,41 +832,16 @@ clear_window_matrices (struct window *w, bool desired_p)
See dispextern.h for an overall explanation of glyph rows.
***********************************************************************/
-/* Clear glyph row ROW. Do it in a way that makes it robust against
- changes in the glyph_row structure, i.e. addition or removal of
- structure members. */
-
-static struct glyph_row null_row;
+/* Clear glyph row ROW. NOTE: this code relies on the current
+ layout of `glyphs' and `used' fields of `struct glyph_row'. */
void
clear_glyph_row (struct glyph_row *row)
{
- struct glyph *p[1 + LAST_AREA];
-
- /* Save pointers. */
- p[LEFT_MARGIN_AREA] = row->glyphs[LEFT_MARGIN_AREA];
- p[TEXT_AREA] = row->glyphs[TEXT_AREA];
- p[RIGHT_MARGIN_AREA] = row->glyphs[RIGHT_MARGIN_AREA];
- p[LAST_AREA] = row->glyphs[LAST_AREA];
-
- /* Clear. */
- *row = null_row;
-
- /* Restore pointers. */
- row->glyphs[LEFT_MARGIN_AREA] = p[LEFT_MARGIN_AREA];
- row->glyphs[TEXT_AREA] = p[TEXT_AREA];
- row->glyphs[RIGHT_MARGIN_AREA] = p[RIGHT_MARGIN_AREA];
- row->glyphs[LAST_AREA] = p[LAST_AREA];
-
-#if 0 /* At some point, some bit-fields of struct glyph were not set,
- which made glyphs unequal when compared with GLYPH_EQUAL_P.
- Redisplay outputs such glyphs, and flickering effects were
- the result. This also depended on the contents of memory
- returned by xmalloc. If flickering happens again, activate
- the code below. If the flickering is gone with that, chances
- are that the flickering has the same reason as here. */
- memset (p[0], 0, (char *) p[LAST_AREA] - (char *) p[0]);
-#endif
+ enum { off = offsetof (struct glyph_row, used) };
+
+ /* Zero everything except pointers in `glyphs'. */
+ memset (row->used, 0, sizeof *row - off);
}
@@ -1032,29 +980,17 @@ swap_glyph_pointers (struct glyph_row *a, struct glyph_row *b)
}
-/* Copy glyph row structure FROM to glyph row structure TO, except
- that glyph pointers, the `used' counts, and the hash values in the
- structures are left unchanged. */
+/* Copy glyph row structure FROM to glyph row structure TO, except that
+ glyph pointers, the `used' counts, and the hash values in the structures
+ are left unchanged. NOTE: this code relies on the current layout of
+ `glyphs', `used', `hash' and `x' fields of `struct glyph_row'. */
static void
copy_row_except_pointers (struct glyph_row *to, struct glyph_row *from)
{
- struct glyph *pointers[1 + LAST_AREA];
- short used[LAST_AREA];
- unsigned hashval;
-
- /* Save glyph pointers of TO. */
- memcpy (pointers, to->glyphs, sizeof to->glyphs);
- memcpy (used, to->used, sizeof to->used);
- hashval = to->hash;
-
- /* Do a structure assignment. */
- *to = *from;
-
- /* Restore original pointers of TO. */
- memcpy (to->glyphs, pointers, sizeof to->glyphs);
- memcpy (to->used, used, sizeof to->used);
- to->hash = hashval;
+ enum { off = offsetof (struct glyph_row, x) };
+
+ memcpy (&to->x, &from->x, sizeof *to - off);
}
@@ -1799,37 +1735,17 @@ allocate_matrices_for_window_redisplay (struct window *w)
}
}
-
-/* Re-allocate/ re-compute glyph matrices on frame F. If F is null,
- do it for all frames; otherwise do it just for the given frame.
- This function must be called when a new frame is created, its size
- changes, or its window configuration changes. */
+/* Allocate/reallocate glyph matrices of a single frame F.
+ This function must be called when a new frame is created,
+ its size changes, or its window configuration changes. */
void
-adjust_glyphs (struct frame *f)
+adjust_frame_glyphs (struct frame *f)
{
/* Block input so that expose events and other events that access
glyph matrices are not processed while we are changing them. */
block_input ();
- if (f)
- adjust_frame_glyphs (f);
- else
- {
- Lisp_Object tail, lisp_frame;
-
- FOR_EACH_FRAME (tail, lisp_frame)
- adjust_frame_glyphs (XFRAME (lisp_frame));
- }
-
- unblock_input ();
-}
-
-/* Allocate/reallocate glyph matrices of a single frame F. */
-
-static void
-adjust_frame_glyphs (struct frame *f)
-{
if (FRAME_WINDOW_P (f))
adjust_frame_glyphs_for_window_redisplay (f);
else
@@ -1839,6 +1755,8 @@ adjust_frame_glyphs (struct frame *f)
adjust_decode_mode_spec_buffer (f);
f->glyphs_initialized_p = 1;
+
+ unblock_input ();
}
/* Return true if any window in the tree has nonzero window margins. See
@@ -1913,7 +1831,7 @@ fake_current_matrices (Lisp_Object window)
/* Save away the contents of frame F's current frame matrix. Value is
a glyph matrix holding the contents of F's current frame matrix. */
-struct glyph_matrix *
+static struct glyph_matrix *
save_current_matrix (struct frame *f)
{
int i;
@@ -2110,10 +2028,9 @@ adjust_frame_glyphs_for_window_redisplay (struct frame *f)
/* Allocate/reallocate window matrices. */
allocate_matrices_for_window_redisplay (XWINDOW (FRAME_ROOT_WINDOW (f)));
-#ifdef HAVE_X_WINDOWS
+#if defined (HAVE_X_WINDOWS) && ! defined (USE_X_TOOLKIT) && ! defined (USE_GTK)
/* Allocate/ reallocate matrices of the dummy window used to display
the menu bar under X when no X toolkit support is available. */
-#if ! defined (USE_X_TOOLKIT) && ! defined (USE_GTK)
{
/* Allocate a dummy window if not already done. */
struct window *w;
@@ -2137,10 +2054,9 @@ adjust_frame_glyphs_for_window_redisplay (struct frame *f)
w->total_cols = FRAME_TOTAL_COLS (f);
allocate_matrices_for_window_redisplay (w);
}
-#endif /* not USE_X_TOOLKIT && not USE_GTK */
-#endif /* HAVE_X_WINDOWS */
+#endif
-#ifndef USE_GTK
+#if defined (HAVE_WINDOW_SYSTEM) && ! defined (USE_GTK) && ! defined (HAVE_NS)
{
/* Allocate/ reallocate matrices of the tool bar window. If we
don't have a tool bar window yet, make one. */
@@ -2214,6 +2130,7 @@ free_glyphs (struct frame *f)
}
#endif
+#if defined (HAVE_WINDOW_SYSTEM) && ! defined (USE_GTK) && ! defined (HAVE_NS)
/* Free the tool bar window and its glyph matrices. */
if (!NILP (f->tool_bar_window))
{
@@ -2223,6 +2140,7 @@ free_glyphs (struct frame *f)
w->desired_matrix = w->current_matrix = NULL;
fset_tool_bar_window (f, Qnil);
}
+#endif
/* Release frame glyph matrices. Reset fields to zero in
case we are called a second time. */
@@ -3105,6 +3023,7 @@ update_frame (struct frame *f, bool force_p, bool inhibit_hairy_id_p)
update_window (XWINDOW (f->menu_bar_window), 1);
#endif
+#if defined (HAVE_WINDOW_SYSTEM) && ! defined (USE_GTK) && ! defined (HAVE_NS)
/* Update the tool-bar window, if present. */
if (WINDOWP (f->tool_bar_window))
{
@@ -3125,21 +3044,11 @@ update_frame (struct frame *f, bool force_p, bool inhibit_hairy_id_p)
fset_desired_tool_bar_string (f, tem);
}
}
-
+#endif
/* Update windows. */
paused_p = update_window_tree (root_window, force_p);
update_end (f);
-
- /* This flush is a performance bottleneck under X,
- and it doesn't seem to be necessary anyway (in general).
- It is necessary when resizing the window with the mouse, or
- at least the fringes are not redrawn in a timely manner. ++kfs */
- if (f->force_flush_display_p)
- {
- FRAME_RIF (f)->flush_display (f);
- f->force_flush_display_p = 0;
- }
}
else
{
@@ -4568,7 +4477,7 @@ update_frame_1 (struct frame *f, bool force_p, bool inhibit_id_p)
}
}
- lint_assume (0 <= FRAME_LINES (f));
+ assume (0 <= FRAME_LINES (f));
pause_p = 0 < i && i < FRAME_LINES (f) - 1;
/* Now just clean up termcap drivers and set cursor, etc. */
@@ -5608,8 +5517,10 @@ change_frame_size_1 (struct frame *f, int newheight, int newwidth,
if ((FRAME_TERMCAP_P (f) && !pretend) || FRAME_MSDOS_P (f))
FrameCols (FRAME_TTY (f)) = newwidth;
+#if defined (HAVE_WINDOW_SYSTEM) && ! defined (USE_GTK) && ! defined (HAVE_NS)
if (WINDOWP (f->tool_bar_window))
XWINDOW (f->tool_bar_window)->total_cols = newwidth;
+#endif
}
FRAME_LINES (f) = newheight;
@@ -5627,7 +5538,7 @@ change_frame_size_1 (struct frame *f, int newheight, int newwidth,
w->cursor.vpos = w->cursor.y = 0;
}
- adjust_glyphs (f);
+ adjust_frame_glyphs (f);
calculate_costs (f);
SET_FRAME_GARBAGED (f);
f->resized_p = 1;
diff --git a/src/disptab.h b/src/disptab.h
index e02bab04bbc..87dc5a22a68 100644
--- a/src/disptab.h
+++ b/src/disptab.h
@@ -59,7 +59,7 @@ extern Lisp_Object Qdisplay_table;
/* Return the current base (for indexing) of the GLYPH table,
or 0 if the table isn't currently valid. */
#define GLYPH_TABLE_BASE \
- ((VECTORP (Vglyph_table)) ? XVECTOR (Vglyph_table)->contents : 0)
+ ((VECTORP (Vglyph_table)) ? XVECTOR (Vglyph_table)->u.contents : 0)
/* Given BASE and LEN returned by the two previous macros,
return nonzero if the GLYPH code G should be output as a single
diff --git a/src/emacs.c b/src/emacs.c
index 05384145330..79f759cd5b5 100644
--- a/src/emacs.c
+++ b/src/emacs.c
@@ -1,7 +1,7 @@
/* Fully extensible Emacs, running on Unix, intended for GNU.
-Copyright (C) 1985-1987, 1993-1995, 1997-1999, 2001-2013 Free Software
-Foundation, Inc.
+Copyright (C) 1985-1987, 1993-1995, 1997-1999, 2001-2013
+ Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -18,8 +18,9 @@ GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
-
+#define INLINE EXTERN_INLINE
#include <config.h>
+
#include <errno.h>
#include <stdio.h>
@@ -72,6 +73,12 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include "termhooks.h"
#include "keyboard.h"
#include "keymap.h"
+#include "category.h"
+#include "charset.h"
+#include "composite.h"
+#include "dispextern.h"
+#include "syntax.h"
+#include "systime.h"
#ifdef HAVE_GNUTLS
#include "gnutls.h"
@@ -310,7 +317,7 @@ example, -batch as well as --batch. You can use any unambiguous\n\
abbreviation for a --option.\n\
\n\
Various environment variables and window system resources also affect\n\
-Emacs' operation. See the main documentation.\n\
+the operation of Emacs. See the main documentation.\n\
\n\
Report bugs to bug-gnu-emacs@gnu.org. First, please see the Bugs\n\
section of the Emacs manual or the file BUGS.\n"
diff --git a/src/eval.c b/src/eval.c
index 1ce14ae94a6..6e964f6604b 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -2033,7 +2033,9 @@ it is defines a macro. */)
DEFUN ("eval", Feval, Seval, 1, 2, 0,
doc: /* Evaluate FORM and return its value.
-If LEXICAL is t, evaluate using lexical scoping. */)
+If LEXICAL is t, evaluate using lexical scoping.
+LEXICAL can also be an actual lexical environment, in the form of an
+alist mapping symbols to their value. */)
(Lisp_Object form, Lisp_Object lexical)
{
ptrdiff_t count = SPECPDL_INDEX ();
@@ -2146,11 +2148,10 @@ eval_sub (Lisp_Object form)
/* Optimize for no indirection. */
fun = original_fun;
- if (SYMBOLP (fun) && !NILP (fun)
- && (fun = XSYMBOL (fun)->function, SYMBOLP (fun)))
- fun = indirect_function (fun);
- else
+ if (!SYMBOLP (fun))
fun = Ffunction (Fcons (fun, Qnil));
+ else if (!NILP (fun) && (fun = XSYMBOL (fun)->function, SYMBOLP (fun)))
+ fun = indirect_function (fun);
if (SUBRP (fun))
{
diff --git a/src/fileio.c b/src/fileio.c
index 0e6113f349d..1a2bdfa237c 100644
--- a/src/fileio.c
+++ b/src/fileio.c
@@ -5121,7 +5121,8 @@ DEFUN ("car-less-than-car", Fcar_less_than_car, Scar_less_than_car, 2, 2, 0,
doc: /* Return t if (car A) is numerically less than (car B). */)
(Lisp_Object a, Lisp_Object b)
{
- return Flss (Fcar (a), Fcar (b));
+ Lisp_Object args[2] = { Fcar (a), Fcar (b), };
+ return Flss (2, args);
}
/* Build the complete list of annotations appropriate for writing out
diff --git a/src/filelock.c b/src/filelock.c
index df72eff5950..2f53047f526 100644
--- a/src/filelock.c
+++ b/src/filelock.c
@@ -459,10 +459,18 @@ lock_file_1 (char *lfname, bool force)
char lock_info_str[MAX_LFINFO + 1];
printmax_t pid = getpid ();
- if (sizeof lock_info_str
- <= snprintf (lock_info_str, sizeof lock_info_str,
- boot ? "%s@%s.%"pMd":%"pMd : "%s@%s.%"pMd,
- user_name, host_name, pid, boot))
+ if (boot)
+ {
+ if (sizeof lock_info_str
+ <= snprintf (lock_info_str, sizeof lock_info_str,
+ "%s@%s.%"pMd":%"pMd,
+ user_name, host_name, pid, boot))
+ return ENAMETOOLONG;
+ }
+ else if (sizeof lock_info_str
+ <= snprintf (lock_info_str, sizeof lock_info_str,
+ "%s@%s.%"pMd,
+ user_name, host_name, pid))
return ENAMETOOLONG;
return create_lock_file (lfname, lock_info_str, force);
diff --git a/src/fns.c b/src/fns.c
index de90fd731fb..e4618919640 100644
--- a/src/fns.c
+++ b/src/fns.c
@@ -1604,7 +1604,7 @@ changing the value of a sequence `foo'. */)
for (i = n = 0; i < ASIZE (seq); ++i)
if (NILP (Fequal (AREF (seq, i), elt)))
- p->contents[n++] = AREF (seq, i);
+ p->u.contents[n++] = AREF (seq, i);
XSETVECTOR (seq, p);
}
@@ -3450,7 +3450,7 @@ larger_vector (Lisp_Object vec, ptrdiff_t incr_min, ptrdiff_t nitems_max)
{
struct Lisp_Vector *v;
ptrdiff_t i, incr, incr_max, old_size, new_size;
- ptrdiff_t C_language_max = min (PTRDIFF_MAX, SIZE_MAX) / sizeof *v->contents;
+ ptrdiff_t C_language_max = min (PTRDIFF_MAX, SIZE_MAX) / sizeof *v->u.contents;
ptrdiff_t n_max = (0 <= nitems_max && nitems_max < C_language_max
? nitems_max : C_language_max);
eassert (VECTORP (vec));
@@ -3462,9 +3462,9 @@ larger_vector (Lisp_Object vec, ptrdiff_t incr_min, ptrdiff_t nitems_max)
memory_full (SIZE_MAX);
new_size = old_size + incr;
v = allocate_vector (new_size);
- memcpy (v->contents, XVECTOR (vec)->contents, old_size * sizeof *v->contents);
+ memcpy (v->u.contents, XVECTOR (vec)->u.contents, old_size * sizeof *v->u.contents);
for (i = old_size; i < new_size; ++i)
- v->contents[i] = Qnil;
+ v->u.contents[i] = Qnil;
XSETVECTOR (vec, v);
return vec;
}
diff --git a/src/font.c b/src/font.c
index 49398e1b876..68db9f2ef2d 100644
--- a/src/font.c
+++ b/src/font.c
@@ -2861,19 +2861,19 @@ font_open_entity (struct frame *f, Lisp_Object entity, int pixel_size)
: 1);
height = (font->height ? font->height : 1);
#ifdef HAVE_WINDOW_SYSTEM
- FRAME_X_DISPLAY_INFO (f)->n_fonts++;
- if (FRAME_X_DISPLAY_INFO (f)->n_fonts == 1)
+ FRAME_DISPLAY_INFO (f)->n_fonts++;
+ if (FRAME_DISPLAY_INFO (f)->n_fonts == 1)
{
FRAME_SMALLEST_CHAR_WIDTH (f) = min_width;
FRAME_SMALLEST_FONT_HEIGHT (f) = height;
- fonts_changed_p = 1;
+ f->fonts_changed = 1;
}
else
{
if (FRAME_SMALLEST_CHAR_WIDTH (f) > min_width)
- FRAME_SMALLEST_CHAR_WIDTH (f) = min_width, fonts_changed_p = 1;
+ FRAME_SMALLEST_CHAR_WIDTH (f) = min_width, f->fonts_changed = 1;
if (FRAME_SMALLEST_FONT_HEIGHT (f) > height)
- FRAME_SMALLEST_FONT_HEIGHT (f) = height, fonts_changed_p = 1;
+ FRAME_SMALLEST_FONT_HEIGHT (f) = height, f->fonts_changed = 1;
}
#endif
@@ -2894,8 +2894,8 @@ font_close_object (struct frame *f, Lisp_Object font_object)
FONT_ADD_LOG ("close", font_object, Qnil);
font->driver->close (f, font);
#ifdef HAVE_WINDOW_SYSTEM
- eassert (FRAME_X_DISPLAY_INFO (f)->n_fonts);
- FRAME_X_DISPLAY_INFO (f)->n_fonts--;
+ eassert (FRAME_DISPLAY_INFO (f)->n_fonts);
+ FRAME_DISPLAY_INFO (f)->n_fonts--;
#endif
}
@@ -5197,9 +5197,6 @@ EMACS_FONT_LOG is set. Otherwise, it is set to t. */);
#ifdef HAVE_NTGUI
syms_of_w32font ();
#endif /* HAVE_NTGUI */
-#ifdef HAVE_NS
- syms_of_nsfont ();
-#endif /* HAVE_NS */
#endif /* HAVE_WINDOW_SYSTEM */
}
diff --git a/src/font.h b/src/font.h
index 3e0d97baaac..0ec56590916 100644
--- a/src/font.h
+++ b/src/font.h
@@ -825,6 +825,7 @@ extern void syms_of_w32font (void);
extern Lisp_Object Qfontsize;
extern struct font_driver nsfont_driver;
extern void syms_of_nsfont (void);
+extern void syms_of_macfont (void);
#endif /* HAVE_NS */
#ifndef FONT_DEBUG
diff --git a/src/fontset.c b/src/fontset.c
index a6277b050d5..15fdf9f41a0 100644
--- a/src/fontset.c
+++ b/src/fontset.c
@@ -39,17 +39,10 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include "intervals.h"
#include "fontset.h"
#include "window.h"
-#ifdef HAVE_X_WINDOWS
-#include "xterm.h"
-#endif
-#ifdef HAVE_NTGUI
-#include "w32term.h"
-#endif
-#ifdef HAVE_NS
-#include "nsterm.h"
-#endif
+#ifdef HAVE_WINDOW_SYSTEM
+#include TERM_HEADER
+#endif /* HAVE_WINDOW_SYSTEM */
#include "termhooks.h"
-
#include "font.h"
/* FONTSET
@@ -460,7 +453,7 @@ reorder_font_vector (Lisp_Object font_group, struct font *font)
}
if (score_changed)
- qsort (XVECTOR (vec)->contents, size, word_size,
+ qsort (XVECTOR (vec)->u.contents, size, word_size,
fontset_compare_rfontdef);
XSETCAR (font_group, make_number (charset_ordered_list_tick));
}
diff --git a/src/frame.c b/src/frame.c
index b4638ed53c8..2e90713b6c3 100644
--- a/src/frame.c
+++ b/src/frame.c
@@ -19,8 +19,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include <config.h>
-#define FRAME_INLINE EXTERN_INLINE
-
#include <stdio.h>
#include <errno.h>
#include <limits.h>
@@ -115,6 +113,19 @@ static Lisp_Object Qdelete_frame_functions;
static Lisp_Object Qgeometry, Qworkarea, Qmm_size, Qframes, Qsource;
+/* The currently selected frame. */
+
+Lisp_Object selected_frame;
+
+/* A frame which is not just a mini-buffer, or NULL if there are no such
+ frames. This is usually the most recent such frame that was selected. */
+
+static struct frame *last_nonminibuf_frame;
+
+/* Nonzero means there is at least one garbaged frame. */
+
+bool frame_garbaged;
+
#ifdef HAVE_WINDOW_SYSTEM
static void x_report_frame_params (struct frame *, Lisp_Object *);
#endif
@@ -224,7 +235,7 @@ set_menu_bar_lines (struct frame *f, Lisp_Object value, Lisp_Object oldval)
FRAME_WINDOW_SIZES_CHANGED (f) = 1;
FRAME_MENU_BAR_LINES (f) = nlines;
set_menu_bar_lines_1 (f->root_window, nlines - olines);
- adjust_glyphs (f);
+ adjust_frame_glyphs (f);
}
}
@@ -548,6 +559,8 @@ make_initial_frame (void)
if (!noninteractive)
init_frame_faces (f);
+ last_nonminibuf_frame = f;
+
return f;
}
@@ -712,7 +725,7 @@ affects all frames on the same terminal device. */)
change_frame_size (f, height, width, 0, 0, 0);
}
- adjust_glyphs (f);
+ adjust_frame_glyphs (f);
calculate_costs (f);
XSETFRAME (frame, f);
@@ -1108,7 +1121,7 @@ other_visible_frames (struct frame *f)
/* Verify that we can still talk to the frame's X window,
and note any recent change in visibility. */
-#ifdef HAVE_WINDOW_SYSTEM
+#ifdef HAVE_X_WINDOWS
if (FRAME_WINDOW_P (XFRAME (this)))
x_sync (XFRAME (this));
#endif
@@ -1901,6 +1914,17 @@ See `redirect-frame-focus'. */)
return FRAME_FOCUS_FRAME (decode_live_frame (frame));
}
+DEFUN ("x-focus-frame", Fx_focus_frame, Sx_focus_frame, 1, 1, 0,
+ doc: /* Set the input focus to FRAME.
+FRAME nil means use the selected frame.
+If there is no window system support, this function does nothing. */)
+ (Lisp_Object frame)
+{
+#ifdef HAVE_WINDOW_SYSTEM
+ x_focus_frame (decode_window_system_frame (frame));
+#endif
+ return Qnil;
+}
/* Return the value of frame parameter PROP in frame FRAME. */
@@ -2207,7 +2231,7 @@ If FRAME is nil, describe the currently selected frame. */)
value = f->name;
#ifdef HAVE_X_WINDOWS
else if (EQ (parameter, Qdisplay) && FRAME_X_P (f))
- value = XCAR (FRAME_X_DISPLAY_INFO (f)->name_list_element);
+ value = XCAR (FRAME_DISPLAY_INFO (f)->name_list_element);
#endif /* HAVE_X_WINDOWS */
else if (EQ (parameter, Qbackground_color)
|| EQ (parameter, Qforeground_color))
@@ -2598,7 +2622,7 @@ x_fullscreen_adjust (struct frame *f, int *width, int *height, int *top_pos, int
{
int newwidth = FRAME_COLS (f);
int newheight = FRAME_LINES (f);
- Display_Info *dpyinfo = FRAME_X_DISPLAY_INFO (f);
+ Display_Info *dpyinfo = FRAME_DISPLAY_INFO (f);
*top_pos = f->top_pos;
*left_pos = f->left_pos;
@@ -2973,9 +2997,9 @@ x_report_frame_params (struct frame *f, Lisp_Object *alistptr)
(FRAME_VISIBLE_P (f) ? Qt
: FRAME_ICONIFIED_P (f) ? Qicon : Qnil));
store_in_alist (alistptr, Qdisplay,
- XCAR (FRAME_X_DISPLAY_INFO (f)->name_list_element));
+ XCAR (FRAME_DISPLAY_INFO (f)->name_list_element));
- if (FRAME_X_OUTPUT (f)->parent_desc == FRAME_X_DISPLAY_INFO (f)->root_window)
+ if (FRAME_X_OUTPUT (f)->parent_desc == FRAME_DISPLAY_INFO (f)->root_window)
tem = Qnil;
else
tem = make_natnum ((uintptr_t) FRAME_X_OUTPUT (f)->parent_desc);
@@ -3358,9 +3382,6 @@ x_set_scroll_bar_width (struct frame *f, Lisp_Object arg, Lisp_Object oldval)
else if (RANGED_INTEGERP (1, arg, INT_MAX)
&& XFASTINT (arg) != FRAME_CONFIG_SCROLL_BAR_WIDTH (f))
{
- if (XFASTINT (arg) <= 2 * VERTICAL_SCROLL_BAR_WIDTH_TRIM)
- XSETINT (arg, 2 * VERTICAL_SCROLL_BAR_WIDTH_TRIM + 1);
-
FRAME_CONFIG_SCROLL_BAR_WIDTH (f) = XFASTINT (arg);
FRAME_CONFIG_SCROLL_BAR_COLS (f) = (XFASTINT (arg) + wid-1) / wid;
if (FRAME_X_WINDOW (f))
@@ -3373,22 +3394,6 @@ x_set_scroll_bar_width (struct frame *f, Lisp_Object arg, Lisp_Object oldval)
XWINDOW (FRAME_SELECTED_WINDOW (f))->cursor.x = 0;
}
-
-
-/* Return non-nil if frame F wants a bitmap icon. */
-
-Lisp_Object
-x_icon_type (struct frame *f)
-{
- Lisp_Object tem;
-
- tem = assq_no_quit (Qicon_type, f->param_alist);
- if (CONSP (tem))
- return XCDR (tem);
- else
- return Qnil;
-}
-
void
x_set_alpha (struct frame *f, Lisp_Object arg, Lisp_Object oldval)
{
@@ -3440,7 +3445,33 @@ x_set_alpha (struct frame *f, Lisp_Object arg, Lisp_Object oldval)
return;
}
-
+#ifndef HAVE_NS
+
+/* Non-zero if mouse is grabbed on DPYINFO
+ and we know the frame where it is. */
+
+bool x_mouse_grabbed (Display_Info *dpyinfo)
+{
+ return (dpyinfo->grabbed
+ && dpyinfo->last_mouse_frame
+ && FRAME_LIVE_P (dpyinfo->last_mouse_frame));
+}
+
+/* Re-highlight something with mouse-face properties
+ on DPYINFO using saved frame and mouse position. */
+
+void
+x_redo_mouse_highlight (Display_Info *dpyinfo)
+{
+ if (dpyinfo->last_mouse_motion_frame
+ && FRAME_LIVE_P (dpyinfo->last_mouse_motion_frame))
+ note_mouse_highlight (dpyinfo->last_mouse_motion_frame,
+ dpyinfo->last_mouse_motion_x,
+ dpyinfo->last_mouse_motion_y);
+}
+
+#endif /* HAVE_NS */
+
/* Subroutines of creating an X frame. */
/* Make sure that Vx_resource_name is set to a reasonable value.
@@ -3512,11 +3543,6 @@ validate_x_resource_name (void)
}
}
-
-extern char *x_get_string_resource (XrmDatabase, const char *, const char *);
-extern Display_Info *check_x_display_info (Lisp_Object);
-
-
/* Get specified attribute from resource database RDB.
See Fx_get_resource below for other parameters. */
@@ -3631,7 +3657,7 @@ x_get_resource_string (const char *attribute, const char *class)
esprintf (name_key, "%s.%s", SSDATA (Vinvocation_name), attribute);
sprintf (class_key, "%s.%s", EMACS_CLASS, class);
- result = x_get_string_resource (FRAME_X_DISPLAY_INFO (sf)->xrdb,
+ result = x_get_string_resource (FRAME_DISPLAY_INFO (sf)->xrdb,
name_key, class_key);
SAFE_FREE ();
return result;
@@ -3753,7 +3779,7 @@ x_frame_get_arg (struct frame *f, Lisp_Object alist, Lisp_Object param,
const char *attribute, const char *class,
enum resource_types type)
{
- return x_get_arg (FRAME_X_DISPLAY_INFO (f),
+ return x_get_arg (FRAME_DISPLAY_INFO (f),
alist, param, attribute, class, type);
}
@@ -3767,7 +3793,7 @@ x_frame_get_and_record_arg (struct frame *f, Lisp_Object alist,
{
Lisp_Object value;
- value = x_get_arg (FRAME_X_DISPLAY_INFO (f), alist, param,
+ value = x_get_arg (FRAME_DISPLAY_INFO (f), alist, param,
attribute, class, type);
if (! NILP (value) && ! EQ (value, Qunbound))
store_frame_param (f, param, value);
@@ -3971,7 +3997,7 @@ x_figure_window_size (struct frame *f, Lisp_Object parms, bool toolbar_p)
{
register Lisp_Object tem0, tem1, tem2;
long window_prompting = 0;
- Display_Info *dpyinfo = FRAME_X_DISPLAY_INFO (f);
+ Display_Info *dpyinfo = FRAME_DISPLAY_INFO (f);
/* Default values if we fall through.
Actually, if that happens we should get
@@ -4524,6 +4550,7 @@ automatically. See also `mouse-autoselect-window'. */);
defsubr (&Svisible_frame_list);
defsubr (&Sraise_frame);
defsubr (&Slower_frame);
+ defsubr (&Sx_focus_frame);
defsubr (&Sredirect_frame_focus);
defsubr (&Sframe_focus);
defsubr (&Sframe_parameters);
diff --git a/src/frame.h b/src/frame.h
index 17b6089120a..09e4112d3a2 100644
--- a/src/frame.h
+++ b/src/frame.h
@@ -27,9 +27,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include "termhooks.h"
INLINE_HEADER_BEGIN
-#ifndef FRAME_INLINE
-# define FRAME_INLINE INLINE
-#endif
enum vertical_scroll_bar_type
{
@@ -145,9 +142,15 @@ struct frame
Lisp_Object menu_bar_window;
#endif
+#if defined (HAVE_WINDOW_SYSTEM) && ! defined (USE_GTK) && ! defined (HAVE_NS)
/* A window used to display the tool-bar of a frame. */
Lisp_Object tool_bar_window;
+ /* Desired and current contents displayed in that window. */
+ Lisp_Object desired_tool_bar_string;
+ Lisp_Object current_tool_bar_string;
+#endif
+
/* Desired and current tool-bar items. */
Lisp_Object tool_bar_items;
@@ -155,10 +158,6 @@ struct frame
tool bar only supports top. */
Lisp_Object tool_bar_position;
- /* Desired and current contents displayed in tool_bar_window. */
- Lisp_Object desired_tool_bar_string;
- Lisp_Object current_tool_bar_string;
-
/* Beyond here, there should be no more Lisp_Object components. */
/* Cache of realized faces. */
@@ -185,10 +184,6 @@ struct frame
Clear the frame in clear_garbaged_frames if set. */
unsigned resized_p : 1;
- /* Set to non-zero in when we want for force a flush_display in
- update_frame, usually after resizing the frame. */
- unsigned force_flush_display_p : 1;
-
/* Set to non-zero if the default face for the frame has been
realized. Reset to zero whenever the default face changes.
Used to see the difference between a font change and face change. */
@@ -201,15 +196,24 @@ struct frame
/* Set to non-zero when current redisplay has updated frame. */
unsigned updated_p : 1;
+#if defined (HAVE_WINDOW_SYSTEM) && ! defined (USE_GTK) && ! defined (HAVE_NS)
/* Set to non-zero to minimize tool-bar height even when
auto-resize-tool-bar is set to grow-only. */
unsigned minimize_tool_bar_window_p : 1;
+#endif
#if defined (USE_GTK) || defined (HAVE_NS)
/* Nonzero means using a tool bar that comes from the toolkit. */
unsigned external_tool_bar : 1;
#endif
+ /* Nonzero means that fonts have been loaded since the last glyph
+ matrix adjustments. */
+ unsigned fonts_changed : 1;
+
+ /* Nonzero means that cursor type has been changed. */
+ unsigned cursor_type_changed : 1;
+
/* Margin at the top of the frame. Used to display the tool-bar. */
int tool_bar_lines;
@@ -321,6 +325,11 @@ struct frame
unsigned int external_menu_bar : 1;
#endif
+#if defined (HAVE_X_WINDOWS)
+ /* Used by x_wait_for_event when watching for an X event on this frame. */
+ int wait_event_type;
+#endif
+
/* Next two bitfields are mutually exclusive. They might both be
zero if the frame has been made invisible without an icon. */
@@ -436,112 +445,114 @@ struct frame
/* Most code should use these functions to set Lisp fields in struct frame. */
-FRAME_INLINE void
+INLINE void
fset_buffer_list (struct frame *f, Lisp_Object val)
{
f->buffer_list = val;
}
-FRAME_INLINE void
+INLINE void
fset_buried_buffer_list (struct frame *f, Lisp_Object val)
{
f->buried_buffer_list = val;
}
-FRAME_INLINE void
+INLINE void
fset_condemned_scroll_bars (struct frame *f, Lisp_Object val)
{
f->condemned_scroll_bars = val;
}
-FRAME_INLINE void
-fset_current_tool_bar_string (struct frame *f, Lisp_Object val)
-{
- f->current_tool_bar_string = val;
-}
-FRAME_INLINE void
-fset_desired_tool_bar_string (struct frame *f, Lisp_Object val)
-{
- f->desired_tool_bar_string = val;
-}
-FRAME_INLINE void
+INLINE void
fset_face_alist (struct frame *f, Lisp_Object val)
{
f->face_alist = val;
}
-FRAME_INLINE void
+INLINE void
fset_focus_frame (struct frame *f, Lisp_Object val)
{
f->focus_frame = val;
}
-FRAME_INLINE void
+INLINE void
fset_icon_name (struct frame *f, Lisp_Object val)
{
f->icon_name = val;
}
-FRAME_INLINE void
+INLINE void
fset_menu_bar_items (struct frame *f, Lisp_Object val)
{
f->menu_bar_items = val;
}
-FRAME_INLINE void
+INLINE void
fset_menu_bar_vector (struct frame *f, Lisp_Object val)
{
f->menu_bar_vector = val;
}
#if defined (HAVE_X_WINDOWS) && ! defined (USE_X_TOOLKIT) && ! defined (USE_GTK)
-FRAME_INLINE void
+INLINE void
fset_menu_bar_window (struct frame *f, Lisp_Object val)
{
f->menu_bar_window = val;
}
#endif
-FRAME_INLINE void
+INLINE void
fset_name (struct frame *f, Lisp_Object val)
{
f->name = val;
}
-FRAME_INLINE void
+INLINE void
fset_param_alist (struct frame *f, Lisp_Object val)
{
f->param_alist = val;
}
-FRAME_INLINE void
+INLINE void
fset_root_window (struct frame *f, Lisp_Object val)
{
f->root_window = val;
}
-FRAME_INLINE void
+INLINE void
fset_scroll_bars (struct frame *f, Lisp_Object val)
{
f->scroll_bars = val;
}
-FRAME_INLINE void
+INLINE void
fset_selected_window (struct frame *f, Lisp_Object val)
{
f->selected_window = val;
}
-FRAME_INLINE void
+INLINE void
fset_title (struct frame *f, Lisp_Object val)
{
f->title = val;
}
-FRAME_INLINE void
+INLINE void
fset_tool_bar_items (struct frame *f, Lisp_Object val)
{
f->tool_bar_items = val;
}
-FRAME_INLINE void
+INLINE void
fset_tool_bar_position (struct frame *f, Lisp_Object val)
{
f->tool_bar_position = val;
}
-FRAME_INLINE void
+#if defined (HAVE_WINDOW_SYSTEM) && ! defined (USE_GTK) && ! defined (HAVE_NS)
+INLINE void
fset_tool_bar_window (struct frame *f, Lisp_Object val)
{
f->tool_bar_window = val;
}
+INLINE void
+fset_current_tool_bar_string (struct frame *f, Lisp_Object val)
+{
+ f->current_tool_bar_string = val;
+}
+INLINE void
+fset_desired_tool_bar_string (struct frame *f, Lisp_Object val)
+{
+ f->desired_tool_bar_string = val;
+}
+#endif /* HAVE_WINDOW_SYSTEM && !USE_GTK && !HAVE_NS */
#define NUMVAL(X) ((INTEGERP (X) || FLOATP (X)) ? XFLOATINT (X) : -1)
-FRAME_INLINE double
+INLINE double
default_pixels_per_inch_x (void)
{
Lisp_Object v = (CONSP (Vdisplay_pixels_per_inch)
@@ -550,7 +561,7 @@ default_pixels_per_inch_x (void)
return NUMVAL (v) > 0 ? NUMVAL (v) : 72.0;
}
-FRAME_INLINE double
+INLINE double
default_pixels_per_inch_y (void)
{
Lisp_Object v = (CONSP (Vdisplay_pixels_per_inch)
@@ -591,36 +602,6 @@ default_pixels_per_inch_y (void)
#define FRAME_NS_P(f) ((f)->output_method == output_ns)
#endif
-/* Dots per inch of the screen the frame F is on. */
-
-#ifdef HAVE_X_WINDOWS
-#define FRAME_RES_X(f) \
- (eassert (FRAME_X_P (f)), FRAME_X_DISPLAY_INFO (f)->resx)
-#define FRAME_RES_Y(f) \
- (eassert (FRAME_X_P (f)), FRAME_X_DISPLAY_INFO (f)->resy)
-#endif
-
-#ifdef HAVE_NTGUI
-#define FRAME_RES_X(f) \
- (eassert (FRAME_W32_P (f)), FRAME_W32_DISPLAY_INFO (f)->resx)
-#define FRAME_RES_Y(f) \
- (eassert (FRAME_W32_P (f)), FRAME_W32_DISPLAY_INFO (f)->resy)
-#endif
-
-#ifdef HAVE_NS
-#define FRAME_RES_X(f) \
- (eassert (FRAME_NS_P (f)), FRAME_NS_DISPLAY_INFO (f)->resx)
-#define FRAME_RES_Y(f) \
- (eassert (FRAME_NS_P (f)), FRAME_NS_DISPLAY_INFO (f)->resy)
-#endif
-
-/* Defaults when no window system available. */
-
-#ifndef FRAME_RES_X
-#define FRAME_RES_X(f) default_pixels_per_inch_x ()
-#define FRAME_RES_Y(f) default_pixels_per_inch_y ()
-#endif
-
/* FRAME_WINDOW_P tests whether the frame is a window, and is
defined to be the predicate for the window system being used. */
@@ -637,14 +618,32 @@ default_pixels_per_inch_y (void)
#define FRAME_WINDOW_P(f) ((void) (f), 0)
#endif
+/* Dots per inch of the screen the frame F is on. */
+
+#ifdef HAVE_WINDOW_SYSTEM
+
+#define FRAME_RES_X(f) \
+ (eassert (FRAME_WINDOW_P (f)), FRAME_DISPLAY_INFO (f)->resx)
+#define FRAME_RES_Y(f) \
+ (eassert (FRAME_WINDOW_P (f)), FRAME_DISPLAY_INFO (f)->resy)
+
+#else /* !HAVE_WINDOW_SYSTEM */
+
+/* Defaults when no window system available. */
+
+#define FRAME_RES_X(f) default_pixels_per_inch_x ()
+#define FRAME_RES_Y(f) default_pixels_per_inch_y ()
+
+#endif /* HAVE_WINDOW_SYSTEM */
+
/* Return a pointer to the structure holding information about the
region of text, if any, that is currently shown in mouse-face on
frame F. We need to define two versions because a TTY-only build
- does not have FRAME_X_DISPLAY_INFO. */
+ does not have FRAME_DISPLAY_INFO. */
#ifdef HAVE_WINDOW_SYSTEM
# define MOUSE_HL_INFO(F) \
(FRAME_WINDOW_P(F) \
- ? &FRAME_X_DISPLAY_INFO(F)->mouse_highlight \
+ ? &FRAME_DISPLAY_INFO(F)->mouse_highlight \
: &(F)->output_data.tty->display_info->mouse_highlight)
#else
# define MOUSE_HL_INFO(F) \
@@ -926,6 +925,7 @@ default_pixels_per_inch_y (void)
#define SET_FRAME_ICONIFIED(f, i) \
(f)->iconified = (eassert (0 <= (i) && (i) <= 1), (i))
+extern Lisp_Object selected_frame;
extern Lisp_Object Qframep, Qframe_live_p;
extern Lisp_Object Qtty, Qtty_type;
extern Lisp_Object Qtty_color_mode;
@@ -935,8 +935,6 @@ extern Lisp_Object Qnoelisp;
/* Nonzero means there is at least one garbaged frame. */
extern bool frame_garbaged;
-extern struct frame *last_nonminibuf_frame;
-
extern void set_menu_bar_lines (struct frame *, Lisp_Object, Lisp_Object);
extern struct frame *decode_window_system_frame (Lisp_Object);
extern struct frame *decode_live_frame (Lisp_Object);
@@ -956,10 +954,6 @@ extern void frame_make_pointer_visible (void);
extern Lisp_Object delete_frame (Lisp_Object, Lisp_Object);
extern Lisp_Object Vframe_list;
-
-/* The currently selected frame. */
-
-extern Lisp_Object selected_frame;
/* Value is a pointer to the selected frame. If the selected frame
isn't live, abort. */
@@ -1134,6 +1128,15 @@ extern Lisp_Object selected_frame;
(FRAME_PIXEL_Y_TO_LINE (f, ((height) \
- FRAME_INTERNAL_BORDER_WIDTH (f))))
+/* Value is the smallest width of any character in any font on frame F. */
+
+#define FRAME_SMALLEST_CHAR_WIDTH(f) \
+ FRAME_DISPLAY_INFO (f)->smallest_char_width
+
+/* Value is the smallest height of any font on frame F. */
+
+#define FRAME_SMALLEST_FONT_HEIGHT(f) \
+ FRAME_DISPLAY_INFO (f)->smallest_font_height
/***********************************************************************
Frame Parameters
@@ -1219,8 +1222,6 @@ extern void x_set_vertical_scroll_bars (struct frame *, Lisp_Object,
extern void x_set_scroll_bar_width (struct frame *, Lisp_Object,
Lisp_Object);
-extern Lisp_Object x_icon_type (struct frame *);
-
extern long x_figure_window_size (struct frame *, Lisp_Object, bool);
extern void x_set_alpha (struct frame *, Lisp_Object, Lisp_Object);
@@ -1236,7 +1237,6 @@ extern Lisp_Object display_x_get_resource (Display_Info *,
extern void set_frame_menubar (struct frame *f, bool first_time, bool deep_p);
extern void x_set_window_size (struct frame *f, int change_grav,
int cols, int rows);
-extern void x_sync (struct frame *);
extern Lisp_Object x_get_focus_frame (struct frame *);
extern void x_set_mouse_position (struct frame *f, int h, int v);
extern void x_set_mouse_pixel_position (struct frame *f, int pix_x, int pix_y);
@@ -1250,7 +1250,6 @@ extern void x_set_tool_bar_lines (struct frame *f,
Lisp_Object oldval);
extern void x_activate_menubar (struct frame *);
extern void x_real_positions (struct frame *, int *, int *);
-extern int x_bitmap_icon (struct frame *, Lisp_Object);
extern void x_set_menu_bar_lines (struct frame *,
Lisp_Object,
Lisp_Object);
@@ -1262,13 +1261,41 @@ extern void x_wm_set_icon_position (struct frame *, int, int);
#if !defined USE_X_TOOLKIT
extern char *x_get_resource_string (const char *, const char *);
#endif
-#endif
+extern void x_sync (struct frame *);
+#endif /* HAVE_X_WINDOWS */
extern void x_query_colors (struct frame *f, XColor *, int);
extern void x_query_color (struct frame *f, XColor *);
+extern void x_focus_frame (struct frame *);
+
+#ifndef HAVE_NS
+
+extern int x_bitmap_icon (struct frame *, Lisp_Object);
+
+/* Set F's bitmap icon, if specified among F's parameters. */
+
+INLINE void
+x_set_bitmap_icon (struct frame *f)
+{
+ Lisp_Object obj = assq_no_quit (Qicon_type, f->param_alist);
+
+ if (CONSP (obj))
+ x_bitmap_icon (f, XCDR (obj));
+}
+
+#endif /* !HAVE_NS */
#endif /* HAVE_WINDOW_SYSTEM */
-
+
+INLINE void
+flush_frame (struct frame *f)
+{
+ struct redisplay_interface *rif = FRAME_RIF (f);
+
+ if (rif && rif->flush_display)
+ rif->flush_display (f);
+}
+
/***********************************************************************
Multimonitor data
***********************************************************************/
diff --git a/src/ftfont.c b/src/ftfont.c
index 3636f86f5c4..4e58d83fd64 100644
--- a/src/ftfont.c
+++ b/src/ftfont.c
@@ -2425,7 +2425,7 @@ ftfont_shape_by_flt (Lisp_Object lgstring, struct font *font,
}
len = i;
- lint_assume (len <= STRING_BYTES_BOUND);
+ assume (len <= STRING_BYTES_BOUND);
if (with_variation_selector)
{
diff --git a/src/gfilenotify.c b/src/gfilenotify.c
index 8f13c72df81..7415c3a2413 100644
--- a/src/gfilenotify.c
+++ b/src/gfilenotify.c
@@ -249,7 +249,9 @@ WATCH-DESCRIPTOR should be an object returned by `gfile-add-watch'. */)
void
globals_of_gfilenotify (void)
{
+#if ! GLIB_CHECK_VERSION (2, 36, 0)
g_type_init ();
+#endif
watch_list = Qnil;
}
diff --git a/src/gtkutil.c b/src/gtkutil.c
index 6228f2150f5..e20d01521f0 100644
--- a/src/gtkutil.c
+++ b/src/gtkutil.c
@@ -2737,7 +2737,7 @@ xg_create_widget (const char *type, const char *name, struct frame *f,
{
/* Must realize so the GdkWindow inside the widget is created. */
gtk_widget_realize (w);
- xg_set_cursor (w, FRAME_X_DISPLAY_INFO (f)->xg_cursor);
+ xg_set_cursor (w, FRAME_DISPLAY_INFO (f)->xg_cursor);
}
}
else
@@ -3409,7 +3409,7 @@ free_frame_menubar (struct frame *f)
}
bool
-xg_event_is_for_menubar (struct frame *f, XEvent *event)
+xg_event_is_for_menubar (struct frame *f, const XEvent *event)
{
struct x_output *x = f->output_data.x;
GList *iter;
@@ -3676,7 +3676,7 @@ xg_create_scroll_bar (struct frame *f,
/* Set the cursor to an arrow. */
- xg_set_cursor (webox, FRAME_X_DISPLAY_INFO (f)->xg_cursor);
+ xg_set_cursor (webox, FRAME_DISPLAY_INFO (f)->xg_cursor);
bar->x_window = scroll_id;
}
@@ -3861,7 +3861,7 @@ xg_set_toolkit_scroll_bar_thumb (struct scroll_bar *bar,
frame. This function does additional checks. */
bool
-xg_event_is_for_scrollbar (struct frame *f, XEvent *event)
+xg_event_is_for_scrollbar (struct frame *f, const XEvent *event)
{
bool retval = 0;
@@ -3972,12 +3972,12 @@ xg_tool_bar_callback (GtkWidget *w, gpointer client_data)
/* Convert between the modifier bits GDK uses and the modifier bits
Emacs uses. This assumes GDK and X masks are the same, which they are when
this is written. */
- event.modifiers = x_x_to_emacs_modifiers (FRAME_X_DISPLAY_INFO (f), mod);
+ event.modifiers = x_x_to_emacs_modifiers (FRAME_DISPLAY_INFO (f), mod);
kbd_buffer_store_event (&event);
- /* Return focus to the frame after we have clicked on a detached
- tool bar button. */
- Fx_focus_frame (frame);
+ /* Return focus to the frame after we have clicked on a detached
+ tool bar button. */
+ x_focus_frame (f);
}
/* Callback function invoked when a tool bar item is pressed in a detached
diff --git a/src/gtkutil.h b/src/gtkutil.h
index fc959862fd3..1c26d2aa44b 100644
--- a/src/gtkutil.h
+++ b/src/gtkutil.h
@@ -105,7 +105,7 @@ extern void xg_modify_menubar_widgets (GtkWidget *menubar,
extern void xg_update_frame_menubar (struct frame *f);
-extern bool xg_event_is_for_menubar (struct frame *f, XEvent *event);
+extern bool xg_event_is_for_menubar (struct frame *, const XEvent *);
extern bool xg_have_tear_offs (void);
@@ -129,7 +129,7 @@ extern void xg_set_toolkit_scroll_bar_thumb (struct scroll_bar *bar,
int portion,
int position,
int whole);
-extern bool xg_event_is_for_scrollbar (struct frame *f, XEvent *event);
+extern bool xg_event_is_for_scrollbar (struct frame *, const XEvent *);
extern int xg_get_default_scrollbar_width (void);
extern void update_frame_tool_bar (struct frame *f);
diff --git a/src/image.c b/src/image.c
index 1271376bcab..e429830cc96 100644
--- a/src/image.c
+++ b/src/image.c
@@ -161,13 +161,13 @@ XPutPixel (XImagePtr ximage, int x, int y, unsigned long pixel)
int
x_bitmap_height (struct frame *f, ptrdiff_t id)
{
- return FRAME_X_DISPLAY_INFO (f)->bitmaps[id - 1].height;
+ return FRAME_DISPLAY_INFO (f)->bitmaps[id - 1].height;
}
int
x_bitmap_width (struct frame *f, ptrdiff_t id)
{
- return FRAME_X_DISPLAY_INFO (f)->bitmaps[id - 1].width;
+ return FRAME_DISPLAY_INFO (f)->bitmaps[id - 1].width;
}
#if defined (HAVE_X_WINDOWS) || defined (HAVE_NTGUI)
@@ -175,7 +175,7 @@ ptrdiff_t
x_bitmap_pixmap (struct frame *f, ptrdiff_t id)
{
/* HAVE_NTGUI needs the explicit cast here. */
- return (ptrdiff_t) FRAME_X_DISPLAY_INFO (f)->bitmaps[id - 1].pixmap;
+ return (ptrdiff_t) FRAME_DISPLAY_INFO (f)->bitmaps[id - 1].pixmap;
}
#endif
@@ -183,7 +183,7 @@ x_bitmap_pixmap (struct frame *f, ptrdiff_t id)
int
x_bitmap_mask (struct frame *f, ptrdiff_t id)
{
- return FRAME_X_DISPLAY_INFO (f)->bitmaps[id - 1].mask;
+ return FRAME_DISPLAY_INFO (f)->bitmaps[id - 1].mask;
}
#endif
@@ -192,7 +192,7 @@ x_bitmap_mask (struct frame *f, ptrdiff_t id)
static ptrdiff_t
x_allocate_bitmap_record (struct frame *f)
{
- Display_Info *dpyinfo = FRAME_X_DISPLAY_INFO (f);
+ Display_Info *dpyinfo = FRAME_DISPLAY_INFO (f);
ptrdiff_t i;
if (dpyinfo->bitmaps_last < dpyinfo->bitmaps_size)
@@ -213,7 +213,7 @@ x_allocate_bitmap_record (struct frame *f)
void
x_reference_bitmap (struct frame *f, ptrdiff_t id)
{
- ++FRAME_X_DISPLAY_INFO (f)->bitmaps[id - 1].refcount;
+ ++FRAME_DISPLAY_INFO (f)->bitmaps[id - 1].refcount;
}
/* Create a bitmap for frame F from a HEIGHT x WIDTH array of bits at BITS. */
@@ -221,7 +221,7 @@ x_reference_bitmap (struct frame *f, ptrdiff_t id)
ptrdiff_t
x_create_bitmap_from_data (struct frame *f, char *bits, unsigned int width, unsigned int height)
{
- Display_Info *dpyinfo = FRAME_X_DISPLAY_INFO (f);
+ Display_Info *dpyinfo = FRAME_DISPLAY_INFO (f);
ptrdiff_t id;
#ifdef HAVE_X_WINDOWS
@@ -235,8 +235,8 @@ x_create_bitmap_from_data (struct frame *f, char *bits, unsigned int width, unsi
#ifdef HAVE_NTGUI
Pixmap bitmap;
bitmap = CreateBitmap (width, height,
- FRAME_X_DISPLAY_INFO (XFRAME (frame))->n_planes,
- FRAME_X_DISPLAY_INFO (XFRAME (frame))->n_cbits,
+ FRAME_DISPLAY_INFO (XFRAME (frame))->n_planes,
+ FRAME_DISPLAY_INFO (XFRAME (frame))->n_cbits,
bits);
if (! bitmap)
return -1;
@@ -280,7 +280,7 @@ x_create_bitmap_from_data (struct frame *f, char *bits, unsigned int width, unsi
ptrdiff_t
x_create_bitmap_from_file (struct frame *f, Lisp_Object file)
{
- Display_Info *dpyinfo = FRAME_X_DISPLAY_INFO (f);
+ Display_Info *dpyinfo = FRAME_DISPLAY_INFO (f);
#ifdef HAVE_NTGUI
return -1; /* W32_TODO : bitmap support */
@@ -379,7 +379,7 @@ free_bitmap_record (Display_Info *dpyinfo, Bitmap_Record *bm)
void
x_destroy_bitmap (struct frame *f, ptrdiff_t id)
{
- Display_Info *dpyinfo = FRAME_X_DISPLAY_INFO (f);
+ Display_Info *dpyinfo = FRAME_DISPLAY_INFO (f);
if (id > 0)
{
@@ -454,7 +454,7 @@ x_create_bitmap_mask (struct frame *f, ptrdiff_t id)
unsigned long x, y, xp, xm, yp, ym;
GC gc;
- Display_Info *dpyinfo = FRAME_X_DISPLAY_INFO (f);
+ Display_Info *dpyinfo = FRAME_DISPLAY_INFO (f);
if (!(id > 0))
return;
@@ -3421,7 +3421,7 @@ xpm_image_p (Lisp_Object object)
ptrdiff_t
x_create_bitmap_from_xpm_data (struct frame *f, const char **bits)
{
- Display_Info *dpyinfo = FRAME_X_DISPLAY_INFO (f);
+ Display_Info *dpyinfo = FRAME_DISPLAY_INFO (f);
ptrdiff_t id;
int rc;
XpmAttributes attrs;
@@ -4325,7 +4325,7 @@ lookup_rgb_color (struct frame *f, int r, int g, int b)
two orders of magnitude. Freeing colors on TrueColor visuals is
a nop, and pixel colors specify RGB values directly. See also
the Xlib spec, chapter 3.1. */
- dpyinfo = FRAME_X_DISPLAY_INFO (f);
+ dpyinfo = FRAME_DISPLAY_INFO (f);
if (dpyinfo->red_bits > 0)
{
unsigned long pr, pg, pb;
@@ -4820,7 +4820,7 @@ x_edge_detection (struct frame *f, struct image *img, Lisp_Object matrix,
static void
x_disable_image (struct frame *f, struct image *img)
{
- Display_Info *dpyinfo = FRAME_X_DISPLAY_INFO (f);
+ Display_Info *dpyinfo = FRAME_DISPLAY_INFO (f);
#ifdef HAVE_NTGUI
int n_planes = dpyinfo->n_planes * dpyinfo->n_cbits;
#else
@@ -7523,7 +7523,7 @@ gif_load (struct frame *f, struct image *img)
{
while (subimg_height <= row)
{
- lint_assume (pass < 3);
+ assume (pass < 3);
row = interlace_start[++pass];
}
@@ -8590,7 +8590,9 @@ DEF_IMGLIB_FN (int, gdk_pixbuf_get_n_channels, (const GdkPixbuf *));
DEF_IMGLIB_FN (gboolean, gdk_pixbuf_get_has_alpha, (const GdkPixbuf *));
DEF_IMGLIB_FN (int, gdk_pixbuf_get_bits_per_sample, (const GdkPixbuf *));
+#if ! GLIB_CHECK_VERSION (2, 36, 0)
DEF_IMGLIB_FN (void, g_type_init, (void));
+#endif
DEF_IMGLIB_FN (void, g_object_unref, (gpointer));
DEF_IMGLIB_FN (void, g_error_free, (GError *));
@@ -8622,7 +8624,9 @@ init_svg_functions (void)
LOAD_IMGLIB_FN (gdklib, gdk_pixbuf_get_has_alpha);
LOAD_IMGLIB_FN (gdklib, gdk_pixbuf_get_bits_per_sample);
+#if ! GLIB_CHECK_VERSION (2, 36, 0)
LOAD_IMGLIB_FN (gobject, g_type_init);
+#endif
LOAD_IMGLIB_FN (gobject, g_object_unref);
LOAD_IMGLIB_FN (glib, g_error_free);
@@ -8647,7 +8651,9 @@ init_svg_functions (void)
#define fn_gdk_pixbuf_get_has_alpha gdk_pixbuf_get_has_alpha
#define fn_gdk_pixbuf_get_bits_per_sample gdk_pixbuf_get_bits_per_sample
+#if ! GLIB_CHECK_VERSION (2, 36, 0)
#define fn_g_type_init g_type_init
+#endif
#define fn_g_object_unref g_object_unref
#define fn_g_error_free g_error_free
#endif /* !WINDOWSNT */
@@ -8732,9 +8738,12 @@ svg_load_image (struct frame *f, /* Pointer to emacs frame structure. *
int x;
int y;
- /* g_type_init is a glib function that must be called prior to using
- gnome type library functions. */
+#if ! GLIB_CHECK_VERSION (2, 36, 0)
+ /* g_type_init is a glib function that must be called prior to
+ using gnome type library functions (obsolete since 2.36.0). */
fn_g_type_init ();
+#endif
+
/* Make a handle to a new rsvg object. */
rsvg_handle = fn_rsvg_handle_new ();
diff --git a/src/indent.c b/src/indent.c
index 891b42788ed..d956e627ba9 100644
--- a/src/indent.c
+++ b/src/indent.c
@@ -118,7 +118,7 @@ disptab_matches_widthtab (struct Lisp_Char_Table *disptab, struct Lisp_Vector *w
for (i = 0; i < 256; i++)
if (character_width (i, disptab)
- != XFASTINT (widthtab->contents[i]))
+ != XFASTINT (widthtab->u.contents[i]))
return 0;
return 1;
@@ -138,7 +138,7 @@ recompute_width_table (struct buffer *buf, struct Lisp_Char_Table *disptab)
eassert (widthtab->header.size == 256);
for (i = 0; i < 256; i++)
- XSETFASTINT (widthtab->contents[i], character_width (i, disptab));
+ XSETFASTINT (widthtab->u.contents[i], character_width (i, disptab));
}
/* Allocate or free the width run cache, as requested by the
@@ -1136,7 +1136,7 @@ compute_motion (ptrdiff_t from, ptrdiff_t frombyte, EMACS_INT fromvpos,
width_run_cache_on_off ();
if (dp == buffer_display_table ())
width_table = (VECTORP (BVAR (current_buffer, width_table))
- ? XVECTOR (BVAR (current_buffer, width_table))->contents
+ ? XVECTOR (BVAR (current_buffer, width_table))->u.contents
: 0);
else
/* If the window has its own display table, we can't use the width
diff --git a/src/insdel.c b/src/insdel.c
index f746fd34330..ebd096a2927 100644
--- a/src/insdel.c
+++ b/src/insdel.c
@@ -1057,6 +1057,9 @@ insert_from_buffer_1 (struct buffer *buf,
ptrdiff_t outgoing_nbytes = incoming_nbytes;
INTERVAL intervals;
+ if (nchars == 0)
+ return;
+
/* Make OUTGOING_NBYTES describe the text
as it will be inserted in this buffer. */
diff --git a/src/intervals.c b/src/intervals.c
index ded536ca3c8..69a33867283 100644
--- a/src/intervals.c
+++ b/src/intervals.c
@@ -40,8 +40,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include <config.h>
-#define INTERVALS_INLINE EXTERN_INLINE
-
#include <intprops.h>
#include "lisp.h"
#include "intervals.h"
@@ -1407,7 +1405,7 @@ offset_intervals (struct buffer *buffer, ptrdiff_t start, ptrdiff_t length)
start, length);
else
{
- lint_assume (- TYPE_MAXIMUM (ptrdiff_t) <= length);
+ assume (- TYPE_MAXIMUM (ptrdiff_t) <= length);
adjust_intervals_for_deletion (buffer, start, -length);
}
}
diff --git a/src/intervals.h b/src/intervals.h
index a38e83cf10e..51dfa09c5c4 100644
--- a/src/intervals.h
+++ b/src/intervals.h
@@ -19,9 +19,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include "dispextern.h"
INLINE_HEADER_BEGIN
-#ifndef INTERVALS_INLINE
-# define INTERVALS_INLINE INLINE
-#endif
/* Basic data type for use of intervals. */
@@ -136,14 +133,14 @@ struct interval
/* Use these functions to set Lisp_Object
or pointer slots of struct interval. */
-INTERVALS_INLINE void
+INLINE void
set_interval_parent (INTERVAL i, INTERVAL parent)
{
i->up_obj = 0;
i->up.interval = parent;
}
-INTERVALS_INLINE void
+INLINE void
set_interval_plist (INTERVAL i, Lisp_Object plist)
{
i->plist = plist;
diff --git a/src/keyboard.c b/src/keyboard.c
index fad04920e2e..a595742ace8 100644
--- a/src/keyboard.c
+++ b/src/keyboard.c
@@ -20,9 +20,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include <config.h>
-#define BLOCKINPUT_INLINE EXTERN_INLINE
-#define KEYBOARD_INLINE EXTERN_INLINE
-
#include "sysstdio.h"
#include "lisp.h"
@@ -2624,10 +2621,8 @@ read_char (int commandflag, Lisp_Object map,
if (/* There currently is something in the echo area. */
!NILP (echo_area_buffer[0])
- && (/* And it's either not from echoing. */
- !EQ (echo_area_buffer[0], echo_message_buffer)
- /* Or it's an echo from a different kboard. */
- || echo_kboard != current_kboard
+ && (/* It's an echo from a different kboard. */
+ echo_kboard != current_kboard
/* Or we explicitly allow overwriting whatever there is. */
|| ok_to_echo_at_next_pause == NULL))
cancel_echoing ();
@@ -4389,7 +4384,7 @@ decode_timer (Lisp_Object timer, struct timespec *result)
if (! (VECTORP (timer) && ASIZE (timer) == 9))
return 0;
- vector = XVECTOR (timer)->contents;
+ vector = XVECTOR (timer)->u.contents;
if (! NILP (vector[0]))
return 0;
@@ -8046,7 +8041,7 @@ process_tool_bar_item (Lisp_Object key, Lisp_Object def, Lisp_Object data, void
discard any previously made item. */
for (i = 0; i < ntool_bar_items; i += TOOL_BAR_ITEM_NSLOTS)
{
- Lisp_Object *v = XVECTOR (tool_bar_items_vector)->contents + i;
+ Lisp_Object *v = XVECTOR (tool_bar_items_vector)->u.contents + i;
if (EQ (key, v[TOOL_BAR_ITEM_KEY]))
{
@@ -8370,7 +8365,7 @@ append_tool_bar_item (void)
/* Append entries from tool_bar_item_properties to the end of
tool_bar_items_vector. */
vcopy (tool_bar_items_vector, ntool_bar_items,
- XVECTOR (tool_bar_item_properties)->contents, TOOL_BAR_ITEM_NSLOTS);
+ XVECTOR (tool_bar_item_properties)->u.contents, TOOL_BAR_ITEM_NSLOTS);
ntool_bar_items += TOOL_BAR_ITEM_NSLOTS;
}
@@ -9921,20 +9916,7 @@ detect_input_pending_run_timers (bool do_display)
get_input_pending (READABLE_EVENTS_DO_TIMERS_NOW);
if (old_timers_run != timers_run && do_display)
- {
- redisplay_preserve_echo_area (8);
- /* The following fixes a bug when using lazy-lock with
- lazy-lock-defer-on-the-fly set to t, i.e. when fontifying
- from an idle timer function. The symptom of the bug is that
- the cursor sometimes doesn't become visible until the next X
- event is processed. --gerd. */
- {
- Lisp_Object tail, frame;
- FOR_EACH_FRAME (tail, frame)
- if (FRAME_RIF (XFRAME (frame)))
- FRAME_RIF (XFRAME (frame))->flush_display (XFRAME (frame));
- }
- }
+ redisplay_preserve_echo_area (8);
return input_pending;
}
@@ -9985,7 +9967,7 @@ DEFUN ("recent-keys", Frecent_keys, Srecent_keys, 0, 0, 0,
doc: /* Return vector of last 300 events, not counting those from keyboard macros. */)
(void)
{
- Lisp_Object *keys = XVECTOR (recent_keys)->contents;
+ Lisp_Object *keys = XVECTOR (recent_keys)->u.contents;
Lisp_Object val;
if (total_keys < NUM_RECENT_KEYS)
@@ -10011,7 +9993,7 @@ See also `this-command-keys-vector'. */)
(void)
{
return make_event_array (this_command_key_count,
- XVECTOR (this_command_keys)->contents);
+ XVECTOR (this_command_keys)->u.contents);
}
DEFUN ("this-command-keys-vector", Fthis_command_keys_vector, Sthis_command_keys_vector, 0, 0, 0,
@@ -10023,7 +10005,7 @@ See also `this-command-keys'. */)
(void)
{
return Fvector (this_command_key_count,
- XVECTOR (this_command_keys)->contents);
+ XVECTOR (this_command_keys)->u.contents);
}
DEFUN ("this-single-command-keys", Fthis_single_command_keys,
@@ -10038,7 +10020,7 @@ The value is always a vector. */)
{
return Fvector (this_command_key_count
- this_single_command_key_start,
- (XVECTOR (this_command_keys)->contents
+ (XVECTOR (this_command_keys)->u.contents
+ this_single_command_key_start));
}
@@ -10052,8 +10034,7 @@ shows the events before all translations (except for input methods).
The value is always a vector. */)
(void)
{
- return Fvector (raw_keybuf_count,
- (XVECTOR (raw_keybuf)->contents));
+ return Fvector (raw_keybuf_count, XVECTOR (raw_keybuf)->u.contents);
}
DEFUN ("reset-this-command-lengths", Freset_this_command_lengths,
diff --git a/src/keyboard.h b/src/keyboard.h
index b015f3fe4d3..8a8505e406b 100644
--- a/src/keyboard.h
+++ b/src/keyboard.h
@@ -22,9 +22,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include "termhooks.h"
INLINE_HEADER_BEGIN
-#ifndef KEYBOARD_INLINE
-# define KEYBOARD_INLINE INLINE
-#endif
/* Most code should use this macro to access Lisp fields in struct kboard. */
@@ -179,42 +176,42 @@ struct kboard
ptrdiff_t echo_after_prompt;
};
-KEYBOARD_INLINE void
+INLINE void
kset_default_minibuffer_frame (struct kboard *kb, Lisp_Object val)
{
kb->INTERNAL_FIELD (Vdefault_minibuffer_frame) = val;
}
-KEYBOARD_INLINE void
+INLINE void
kset_defining_kbd_macro (struct kboard *kb, Lisp_Object val)
{
kb->INTERNAL_FIELD (defining_kbd_macro) = val;
}
-KEYBOARD_INLINE void
+INLINE void
kset_input_decode_map (struct kboard *kb, Lisp_Object val)
{
kb->INTERNAL_FIELD (Vinput_decode_map) = val;
}
-KEYBOARD_INLINE void
+INLINE void
kset_last_command (struct kboard *kb, Lisp_Object val)
{
kb->INTERNAL_FIELD (Vlast_command) = val;
}
-KEYBOARD_INLINE void
+INLINE void
kset_last_kbd_macro (struct kboard *kb, Lisp_Object val)
{
kb->INTERNAL_FIELD (Vlast_kbd_macro) = val;
}
-KEYBOARD_INLINE void
+INLINE void
kset_prefix_arg (struct kboard *kb, Lisp_Object val)
{
kb->INTERNAL_FIELD (Vprefix_arg) = val;
}
-KEYBOARD_INLINE void
+INLINE void
kset_system_key_alist (struct kboard *kb, Lisp_Object val)
{
kb->INTERNAL_FIELD (Vsystem_key_alist) = val;
}
-KEYBOARD_INLINE void
+INLINE void
kset_window_system (struct kboard *kb, Lisp_Object val)
{
kb->INTERNAL_FIELD (Vwindow_system) = val;
diff --git a/src/lisp.h b/src/lisp.h
index 27359ffeb3f..63597e86be6 100644
--- a/src/lisp.h
+++ b/src/lisp.h
@@ -33,9 +33,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include <intprops.h>
INLINE_HEADER_BEGIN
-#ifndef LISP_INLINE
-# define LISP_INLINE INLINE
-#endif
/* The ubiquitous max and min macros. */
#undef min
@@ -134,6 +131,13 @@ extern bool suppress_checking EXTERNALLY_VISIBLE;
? (void) 0 \
: die (# cond, __FILE__, __LINE__))
#endif /* ENABLE_CHECKING */
+
+/* When checking is enabled, identical to eassert. When checking is
+ * disabled, instruct the compiler (when the compiler has such
+ * capability) to assume that cond is true and optimize
+ * accordingly. */
+#define eassert_and_assume(cond) (eassert (cond), assume (cond))
+
/* Use the configure flag --enable-check-lisp-object-type to make
Lisp_Object use a struct type instead of the default int. The flag
@@ -345,11 +349,11 @@ enum enum_USE_LSB_TAG { USE_LSB_TAG = 0 };
ARGS should be parenthesized. Implement the function by calling
lisp_h_NAME ARGS. */
#define LISP_MACRO_DEFUN(name, type, argdecls, args) \
- LISP_INLINE type (name) argdecls { return lisp_h_##name args; }
+ INLINE type (name) argdecls { return lisp_h_##name args; }
/* like LISP_MACRO_DEFUN, except NAME returns void. */
#define LISP_MACRO_DEFUN_VOID(name, argdecls, args) \
- LISP_INLINE void (name) argdecls { lisp_h_##name args; }
+ INLINE void (name) argdecls { lisp_h_##name args; }
/* Define the fundamental Lisp data structures. */
@@ -610,14 +614,14 @@ LISP_MACRO_DEFUN (XUNTAG, void *, (Lisp_Object a, int type), (a, type))
/* Make a Lisp integer representing the value of the low order
bits of N. */
-LISP_INLINE Lisp_Object
+INLINE Lisp_Object
make_number (EMACS_INT n)
{
return XIL (USE_LSB_TAG ? n << INTTYPEBITS : n & INTMASK);
}
/* Extract A's value as a signed integer. */
-LISP_INLINE EMACS_INT
+INLINE EMACS_INT
XINT (Lisp_Object a)
{
EMACS_INT i = XLI (a);
@@ -627,7 +631,7 @@ XINT (Lisp_Object a)
/* Like XINT (A), but may be faster. A must be nonnegative.
If ! USE_LSB_TAG, this takes advantage of the fact that Lisp
integers have zero-bits in their tags. */
-LISP_INLINE EMACS_INT
+INLINE EMACS_INT
XFASTINT (Lisp_Object a)
{
EMACS_INT n = USE_LSB_TAG ? XINT (a) : XLI (a);
@@ -636,7 +640,7 @@ XFASTINT (Lisp_Object a)
}
/* Extract A's type. */
-LISP_INLINE enum Lisp_Type
+INLINE enum Lisp_Type
XTYPE (Lisp_Object a)
{
EMACS_UINT i = XLI (a);
@@ -644,7 +648,7 @@ XTYPE (Lisp_Object a)
}
/* Extract A's pointer value, assuming A's type is TYPE. */
-LISP_INLINE void *
+INLINE void *
XUNTAG (Lisp_Object a, int type)
{
if (USE_LSB_TAG)
@@ -658,7 +662,7 @@ XUNTAG (Lisp_Object a, int type)
#endif /* ! USE_LSB_TAG */
/* Extract A's value as an unsigned integer. */
-LISP_INLINE EMACS_UINT
+INLINE EMACS_UINT
XUINT (Lisp_Object a)
{
EMACS_UINT i = XLI (a);
@@ -671,7 +675,7 @@ XUINT (Lisp_Object a)
LISP_MACRO_DEFUN (XHASH, EMACS_INT, (Lisp_Object a), (a))
/* Like make_number (N), but may be faster. N must be in nonnegative range. */
-LISP_INLINE Lisp_Object
+INLINE Lisp_Object
make_natnum (EMACS_INT n)
{
eassert (0 <= n && n <= MOST_POSITIVE_FIXNUM);
@@ -688,7 +692,7 @@ LISP_MACRO_DEFUN (EQ, bool, (Lisp_Object x, Lisp_Object y), (x, y))
#define FIXNUM_OVERFLOW_P(i) \
(! ((0 <= (i) || MOST_NEGATIVE_FIXNUM <= (i)) && (i) <= MOST_POSITIVE_FIXNUM))
-LISP_INLINE ptrdiff_t
+INLINE ptrdiff_t
clip_to_bounds (ptrdiff_t lower, EMACS_INT num, ptrdiff_t upper)
{
return num < lower ? lower : num <= upper ? num : upper;
@@ -698,31 +702,31 @@ clip_to_bounds (ptrdiff_t lower, EMACS_INT num, ptrdiff_t upper)
/* Defined in this file. */
union Lisp_Fwd;
-LISP_INLINE bool BOOL_VECTOR_P (Lisp_Object);
-LISP_INLINE bool BUFFER_OBJFWDP (union Lisp_Fwd *);
-LISP_INLINE bool BUFFERP (Lisp_Object);
-LISP_INLINE bool CHAR_TABLE_P (Lisp_Object);
-LISP_INLINE Lisp_Object CHAR_TABLE_REF_ASCII (Lisp_Object, ptrdiff_t);
-LISP_INLINE bool (CONSP) (Lisp_Object);
-LISP_INLINE bool (FLOATP) (Lisp_Object);
-LISP_INLINE bool functionp (Lisp_Object);
-LISP_INLINE bool (INTEGERP) (Lisp_Object);
-LISP_INLINE bool (MARKERP) (Lisp_Object);
-LISP_INLINE bool (MISCP) (Lisp_Object);
-LISP_INLINE bool (NILP) (Lisp_Object);
-LISP_INLINE bool OVERLAYP (Lisp_Object);
-LISP_INLINE bool PROCESSP (Lisp_Object);
-LISP_INLINE bool PSEUDOVECTORP (Lisp_Object, int);
-LISP_INLINE bool SAVE_VALUEP (Lisp_Object);
-LISP_INLINE void set_sub_char_table_contents (Lisp_Object, ptrdiff_t,
+INLINE bool BOOL_VECTOR_P (Lisp_Object);
+INLINE bool BUFFER_OBJFWDP (union Lisp_Fwd *);
+INLINE bool BUFFERP (Lisp_Object);
+INLINE bool CHAR_TABLE_P (Lisp_Object);
+INLINE Lisp_Object CHAR_TABLE_REF_ASCII (Lisp_Object, ptrdiff_t);
+INLINE bool (CONSP) (Lisp_Object);
+INLINE bool (FLOATP) (Lisp_Object);
+INLINE bool functionp (Lisp_Object);
+INLINE bool (INTEGERP) (Lisp_Object);
+INLINE bool (MARKERP) (Lisp_Object);
+INLINE bool (MISCP) (Lisp_Object);
+INLINE bool (NILP) (Lisp_Object);
+INLINE bool OVERLAYP (Lisp_Object);
+INLINE bool PROCESSP (Lisp_Object);
+INLINE bool PSEUDOVECTORP (Lisp_Object, int);
+INLINE bool SAVE_VALUEP (Lisp_Object);
+INLINE void set_sub_char_table_contents (Lisp_Object, ptrdiff_t,
Lisp_Object);
-LISP_INLINE bool STRINGP (Lisp_Object);
-LISP_INLINE bool SUB_CHAR_TABLE_P (Lisp_Object);
-LISP_INLINE bool SUBRP (Lisp_Object);
-LISP_INLINE bool (SYMBOLP) (Lisp_Object);
-LISP_INLINE bool (VECTORLIKEP) (Lisp_Object);
-LISP_INLINE bool WINDOWP (Lisp_Object);
-LISP_INLINE struct Lisp_Save_Value *XSAVE_VALUE (Lisp_Object);
+INLINE bool STRINGP (Lisp_Object);
+INLINE bool SUB_CHAR_TABLE_P (Lisp_Object);
+INLINE bool SUBRP (Lisp_Object);
+INLINE bool (SYMBOLP) (Lisp_Object);
+INLINE bool (VECTORLIKEP) (Lisp_Object);
+INLINE bool WINDOWP (Lisp_Object);
+INLINE struct Lisp_Save_Value *XSAVE_VALUE (Lisp_Object);
/* Defined in chartab.c. */
extern Lisp_Object char_table_ref (Lisp_Object, int);
@@ -733,6 +737,7 @@ extern int char_table_translate (Lisp_Object, int);
extern Lisp_Object Qarrayp, Qbufferp, Qbuffer_or_string_p, Qchar_table_p;
extern Lisp_Object Qconsp, Qfloatp, Qintegerp, Qlambda, Qlistp, Qmarkerp, Qnil;
extern Lisp_Object Qnumberp, Qstringp, Qsymbolp, Qvectorp;
+extern Lisp_Object Qbool_vector_p;
extern Lisp_Object Qvector_or_char_table_p, Qwholenump;
extern Lisp_Object Qwindow;
extern Lisp_Object Ffboundp (Lisp_Object);
@@ -761,14 +766,14 @@ extern Lisp_Object Qimage;
LISP_MACRO_DEFUN (XCONS, struct Lisp_Cons *, (Lisp_Object a), (a))
-LISP_INLINE struct Lisp_Vector *
+INLINE struct Lisp_Vector *
XVECTOR (Lisp_Object a)
{
eassert (VECTORLIKEP (a));
return XUNTAG (a, Lisp_Vectorlike);
}
-LISP_INLINE struct Lisp_String *
+INLINE struct Lisp_String *
XSTRING (Lisp_Object a)
{
eassert (STRINGP (a));
@@ -777,7 +782,7 @@ XSTRING (Lisp_Object a)
LISP_MACRO_DEFUN (XSYMBOL, struct Lisp_Symbol *, (Lisp_Object a), (a))
-LISP_INLINE struct Lisp_Float *
+INLINE struct Lisp_Float *
XFLOAT (Lisp_Object a)
{
eassert (FLOATP (a));
@@ -786,55 +791,55 @@ XFLOAT (Lisp_Object a)
/* Pseudovector types. */
-LISP_INLINE struct Lisp_Process *
+INLINE struct Lisp_Process *
XPROCESS (Lisp_Object a)
{
eassert (PROCESSP (a));
return XUNTAG (a, Lisp_Vectorlike);
}
-LISP_INLINE struct window *
+INLINE struct window *
XWINDOW (Lisp_Object a)
{
eassert (WINDOWP (a));
return XUNTAG (a, Lisp_Vectorlike);
}
-LISP_INLINE struct terminal *
+INLINE struct terminal *
XTERMINAL (Lisp_Object a)
{
return XUNTAG (a, Lisp_Vectorlike);
}
-LISP_INLINE struct Lisp_Subr *
+INLINE struct Lisp_Subr *
XSUBR (Lisp_Object a)
{
eassert (SUBRP (a));
return XUNTAG (a, Lisp_Vectorlike);
}
-LISP_INLINE struct buffer *
+INLINE struct buffer *
XBUFFER (Lisp_Object a)
{
eassert (BUFFERP (a));
return XUNTAG (a, Lisp_Vectorlike);
}
-LISP_INLINE struct Lisp_Char_Table *
+INLINE struct Lisp_Char_Table *
XCHAR_TABLE (Lisp_Object a)
{
eassert (CHAR_TABLE_P (a));
return XUNTAG (a, Lisp_Vectorlike);
}
-LISP_INLINE struct Lisp_Sub_Char_Table *
+INLINE struct Lisp_Sub_Char_Table *
XSUB_CHAR_TABLE (Lisp_Object a)
{
eassert (SUB_CHAR_TABLE_P (a));
return XUNTAG (a, Lisp_Vectorlike);
}
-LISP_INLINE struct Lisp_Bool_Vector *
+INLINE struct Lisp_Bool_Vector *
XBOOL_VECTOR (Lisp_Object a)
{
eassert (BOOL_VECTOR_P (a));
@@ -843,7 +848,7 @@ XBOOL_VECTOR (Lisp_Object a)
/* Construct a Lisp_Object from a value or address. */
-LISP_INLINE Lisp_Object
+INLINE Lisp_Object
make_lisp_ptr (void *ptr, enum Lisp_Type type)
{
EMACS_UINT utype = type;
@@ -853,7 +858,7 @@ make_lisp_ptr (void *ptr, enum Lisp_Type type)
return a;
}
-LISP_INLINE Lisp_Object
+INLINE Lisp_Object
make_lisp_proc (struct Lisp_Process *p)
{
return make_lisp_ptr (p, Lisp_Vectorlike);
@@ -937,12 +942,12 @@ struct Lisp_Cons
fields are not accessible. (What if we want to switch to
a copying collector someday? Cached cons cell field addresses may be
invalidated at arbitrary points.) */
-LISP_INLINE Lisp_Object *
+INLINE Lisp_Object *
xcar_addr (Lisp_Object c)
{
return &XCONS (c)->car;
}
-LISP_INLINE Lisp_Object *
+INLINE Lisp_Object *
xcdr_addr (Lisp_Object c)
{
return &XCONS (c)->u.cdr;
@@ -956,26 +961,26 @@ LISP_MACRO_DEFUN (XCDR, Lisp_Object, (Lisp_Object c), (c))
Note that both arguments may refer to the same object, so 'n'
should not be read after 'c' is first modified. */
-LISP_INLINE void
+INLINE void
XSETCAR (Lisp_Object c, Lisp_Object n)
{
*xcar_addr (c) = n;
}
-LISP_INLINE void
+INLINE void
XSETCDR (Lisp_Object c, Lisp_Object n)
{
*xcdr_addr (c) = n;
}
/* Take the car or cdr of something whose type is not known. */
-LISP_INLINE Lisp_Object
+INLINE Lisp_Object
CAR (Lisp_Object c)
{
return (CONSP (c) ? XCAR (c)
: NILP (c) ? Qnil
: wrong_type_argument (Qlistp, c));
}
-LISP_INLINE Lisp_Object
+INLINE Lisp_Object
CDR (Lisp_Object c)
{
return (CONSP (c) ? XCDR (c)
@@ -984,12 +989,12 @@ CDR (Lisp_Object c)
}
/* Take the car or cdr of something whose type is not known. */
-LISP_INLINE Lisp_Object
+INLINE Lisp_Object
CAR_SAFE (Lisp_Object c)
{
return CONSP (c) ? XCAR (c) : Qnil;
}
-LISP_INLINE Lisp_Object
+INLINE Lisp_Object
CDR_SAFE (Lisp_Object c)
{
return CONSP (c) ? XCDR (c) : Qnil;
@@ -1006,7 +1011,7 @@ struct Lisp_String
};
/* True if STR is a multibyte string. */
-LISP_INLINE bool
+INLINE bool
STRING_MULTIBYTE (Lisp_Object str)
{
return 0 <= XSTRING (str)->size_byte;
@@ -1043,28 +1048,28 @@ STRING_MULTIBYTE (Lisp_Object str)
/* Convenience functions for dealing with Lisp strings. */
-LISP_INLINE unsigned char *
+INLINE unsigned char *
SDATA (Lisp_Object string)
{
return XSTRING (string)->data;
}
-LISP_INLINE char *
+INLINE char *
SSDATA (Lisp_Object string)
{
/* Avoid "differ in sign" warnings. */
return (char *) SDATA (string);
}
-LISP_INLINE unsigned char
+INLINE unsigned char
SREF (Lisp_Object string, ptrdiff_t index)
{
return SDATA (string)[index];
}
-LISP_INLINE void
+INLINE void
SSET (Lisp_Object string, ptrdiff_t index, unsigned char new)
{
SDATA (string)[index] = new;
}
-LISP_INLINE ptrdiff_t
+INLINE ptrdiff_t
SCHARS (Lisp_Object string)
{
return XSTRING (string)->size;
@@ -1073,7 +1078,7 @@ SCHARS (Lisp_Object string)
#ifdef GC_CHECK_STRING_BYTES
extern ptrdiff_t string_bytes (struct Lisp_String *);
#endif
-LISP_INLINE ptrdiff_t
+INLINE ptrdiff_t
STRING_BYTES (struct Lisp_String *s)
{
#ifdef GC_CHECK_STRING_BYTES
@@ -1083,17 +1088,17 @@ STRING_BYTES (struct Lisp_String *s)
#endif
}
-LISP_INLINE ptrdiff_t
+INLINE ptrdiff_t
SBYTES (Lisp_Object string)
{
return STRING_BYTES (XSTRING (string));
}
-LISP_INLINE void
+INLINE void
STRING_SET_CHARS (Lisp_Object string, ptrdiff_t newsize)
{
XSTRING (string)->size = newsize;
}
-LISP_INLINE void
+INLINE void
STRING_COPYIN (Lisp_Object string, ptrdiff_t index, char const *new,
ptrdiff_t count)
{
@@ -1131,12 +1136,19 @@ struct vectorlike_header
ptrdiff_t size;
};
-/* Regular vector is just a header plus array of Lisp_Objects. */
+/* Regular vector is just a header plus array of Lisp_Objects... */
struct Lisp_Vector
{
struct vectorlike_header header;
- Lisp_Object contents[FLEXIBLE_ARRAY_MEMBER];
+ union {
+ /* ...but sometimes there is also a pointer internally used in
+ vector allocation code. Usually you don't want to touch this. */
+ struct Lisp_Vector *next;
+
+ /* We can't use FLEXIBLE_ARRAY_MEMBER here. */
+ Lisp_Object contents[1];
+ } u;
};
/* A boolvector is a kind of vectorlike, with contents are like a string. */
@@ -1157,45 +1169,45 @@ struct Lisp_Bool_Vector
enum
{
- header_size = offsetof (struct Lisp_Vector, contents),
+ header_size = offsetof (struct Lisp_Vector, u.contents),
bool_header_size = offsetof (struct Lisp_Bool_Vector, data),
word_size = sizeof (Lisp_Object)
};
/* Conveniences for dealing with Lisp arrays. */
-LISP_INLINE Lisp_Object
+INLINE Lisp_Object
AREF (Lisp_Object array, ptrdiff_t idx)
{
- return XVECTOR (array)->contents[idx];
+ return XVECTOR (array)->u.contents[idx];
}
-LISP_INLINE Lisp_Object *
+INLINE Lisp_Object *
aref_addr (Lisp_Object array, ptrdiff_t idx)
{
- return & XVECTOR (array)->contents[idx];
+ return & XVECTOR (array)->u.contents[idx];
}
-LISP_INLINE ptrdiff_t
+INLINE ptrdiff_t
ASIZE (Lisp_Object array)
{
return XVECTOR (array)->header.size;
}
-LISP_INLINE void
+INLINE void
ASET (Lisp_Object array, ptrdiff_t idx, Lisp_Object val)
{
eassert (0 <= idx && idx < ASIZE (array));
- XVECTOR (array)->contents[idx] = val;
+ XVECTOR (array)->u.contents[idx] = val;
}
-LISP_INLINE void
+INLINE void
gc_aset (Lisp_Object array, ptrdiff_t idx, Lisp_Object val)
{
/* Like ASET, but also can be used in the garbage collector:
sweep_weak_table calls set_hash_key etc. while the table is marked. */
eassert (0 <= idx && idx < (ASIZE (array) & ~ARRAY_MARK_FLAG));
- XVECTOR (array)->contents[idx] = val;
+ XVECTOR (array)->u.contents[idx] = val;
}
/* If a struct is made to look like a vector, this macro returns the length
@@ -1296,7 +1308,7 @@ struct Lisp_Sub_Char_Table
Lisp_Object contents[FLEXIBLE_ARRAY_MEMBER];
};
-LISP_INLINE Lisp_Object
+INLINE Lisp_Object
CHAR_TABLE_REF_ASCII (Lisp_Object ct, ptrdiff_t idx)
{
struct Lisp_Char_Table *tbl = NULL;
@@ -1316,7 +1328,7 @@ CHAR_TABLE_REF_ASCII (Lisp_Object ct, ptrdiff_t idx)
/* Almost equivalent to Faref (CT, IDX) with optimization for ASCII
characters. Do not check validity of CT. */
-LISP_INLINE Lisp_Object
+INLINE Lisp_Object
CHAR_TABLE_REF (Lisp_Object ct, int idx)
{
return (ASCII_CHAR_P (idx)
@@ -1326,7 +1338,7 @@ CHAR_TABLE_REF (Lisp_Object ct, int idx)
/* Equivalent to Faset (CT, IDX, VAL) with optimization for ASCII and
8-bit European characters. Do not check validity of CT. */
-LISP_INLINE void
+INLINE void
CHAR_TABLE_SET (Lisp_Object ct, int idx, Lisp_Object val)
{
if (ASCII_CHAR_P (idx) && SUB_CHAR_TABLE_P (XCHAR_TABLE (ct)->ascii))
@@ -1371,7 +1383,7 @@ enum CHAR_TABLE_STANDARD_SLOTS
/* Return the number of "extra" slots in the char table CT. */
-LISP_INLINE int
+INLINE int
CHAR_TABLE_EXTRA_SLOTS (struct Lisp_Char_Table *ct)
{
return ((ct->header.size & PSEUDOVECTOR_SIZE_MASK)
@@ -1450,19 +1462,19 @@ struct Lisp_Symbol
LISP_MACRO_DEFUN (SYMBOL_VAL, Lisp_Object, (struct Lisp_Symbol *sym), (sym))
-LISP_INLINE struct Lisp_Symbol *
+INLINE struct Lisp_Symbol *
SYMBOL_ALIAS (struct Lisp_Symbol *sym)
{
eassert (sym->redirect == SYMBOL_VARALIAS);
return sym->val.alias;
}
-LISP_INLINE struct Lisp_Buffer_Local_Value *
+INLINE struct Lisp_Buffer_Local_Value *
SYMBOL_BLV (struct Lisp_Symbol *sym)
{
eassert (sym->redirect == SYMBOL_LOCALIZED);
return sym->val.blv;
}
-LISP_INLINE union Lisp_Fwd *
+INLINE union Lisp_Fwd *
SYMBOL_FWD (struct Lisp_Symbol *sym)
{
eassert (sym->redirect == SYMBOL_FORWARDED);
@@ -1472,26 +1484,26 @@ SYMBOL_FWD (struct Lisp_Symbol *sym)
LISP_MACRO_DEFUN_VOID (SET_SYMBOL_VAL,
(struct Lisp_Symbol *sym, Lisp_Object v), (sym, v))
-LISP_INLINE void
+INLINE void
SET_SYMBOL_ALIAS (struct Lisp_Symbol *sym, struct Lisp_Symbol *v)
{
eassert (sym->redirect == SYMBOL_VARALIAS);
sym->val.alias = v;
}
-LISP_INLINE void
+INLINE void
SET_SYMBOL_BLV (struct Lisp_Symbol *sym, struct Lisp_Buffer_Local_Value *v)
{
eassert (sym->redirect == SYMBOL_LOCALIZED);
sym->val.blv = v;
}
-LISP_INLINE void
+INLINE void
SET_SYMBOL_FWD (struct Lisp_Symbol *sym, union Lisp_Fwd *v)
{
eassert (sym->redirect == SYMBOL_FORWARDED);
sym->val.fwd = v;
}
-LISP_INLINE Lisp_Object
+INLINE Lisp_Object
SYMBOL_NAME (Lisp_Object sym)
{
return XSYMBOL (sym)->name;
@@ -1499,7 +1511,7 @@ SYMBOL_NAME (Lisp_Object sym)
/* Value is true if SYM is an interned symbol. */
-LISP_INLINE bool
+INLINE bool
SYMBOL_INTERNED_P (Lisp_Object sym)
{
return XSYMBOL (sym)->interned != SYMBOL_UNINTERNED;
@@ -1507,7 +1519,7 @@ SYMBOL_INTERNED_P (Lisp_Object sym)
/* Value is true if SYM is interned in initial_obarray. */
-LISP_INLINE bool
+INLINE bool
SYMBOL_INTERNED_IN_INITIAL_OBARRAY_P (Lisp_Object sym)
{
return XSYMBOL (sym)->interned == SYMBOL_INTERNED_IN_INITIAL_OBARRAY;
@@ -1603,7 +1615,7 @@ struct Lisp_Hash_Table
};
-LISP_INLINE struct Lisp_Hash_Table *
+INLINE struct Lisp_Hash_Table *
XHASH_TABLE (Lisp_Object a)
{
return XUNTAG (a, Lisp_Vectorlike);
@@ -1612,21 +1624,21 @@ XHASH_TABLE (Lisp_Object a)
#define XSET_HASH_TABLE(VAR, PTR) \
(XSETPSEUDOVECTOR (VAR, PTR, PVEC_HASH_TABLE))
-LISP_INLINE bool
+INLINE bool
HASH_TABLE_P (Lisp_Object a)
{
return PSEUDOVECTORP (a, PVEC_HASH_TABLE);
}
/* Value is the key part of entry IDX in hash table H. */
-LISP_INLINE Lisp_Object
+INLINE Lisp_Object
HASH_KEY (struct Lisp_Hash_Table *h, ptrdiff_t idx)
{
return AREF (h->key_and_value, 2 * idx);
}
/* Value is the value part of entry IDX in hash table H. */
-LISP_INLINE Lisp_Object
+INLINE Lisp_Object
HASH_VALUE (struct Lisp_Hash_Table *h, ptrdiff_t idx)
{
return AREF (h->key_and_value, 2 * idx + 1);
@@ -1634,14 +1646,14 @@ HASH_VALUE (struct Lisp_Hash_Table *h, ptrdiff_t idx)
/* Value is the index of the next entry following the one at IDX
in hash table H. */
-LISP_INLINE Lisp_Object
+INLINE Lisp_Object
HASH_NEXT (struct Lisp_Hash_Table *h, ptrdiff_t idx)
{
return AREF (h->next, idx);
}
/* Value is the hash code computed for entry IDX in hash table H. */
-LISP_INLINE Lisp_Object
+INLINE Lisp_Object
HASH_HASH (struct Lisp_Hash_Table *h, ptrdiff_t idx)
{
return AREF (h->hash, idx);
@@ -1649,14 +1661,14 @@ HASH_HASH (struct Lisp_Hash_Table *h, ptrdiff_t idx)
/* Value is the index of the element in hash table H that is the
start of the collision list at index IDX in the index vector of H. */
-LISP_INLINE Lisp_Object
+INLINE Lisp_Object
HASH_INDEX (struct Lisp_Hash_Table *h, ptrdiff_t idx)
{
return AREF (h->index, idx);
}
/* Value is the size of hash table H. */
-LISP_INLINE ptrdiff_t
+INLINE ptrdiff_t
HASH_TABLE_SIZE (struct Lisp_Hash_Table *h)
{
return ASIZE (h->next);
@@ -1679,7 +1691,7 @@ static double const DEFAULT_REHASH_SIZE = 1.5;
/* Combine two integers X and Y for hashing. The result might not fit
into a Lisp integer. */
-LISP_INLINE EMACS_UINT
+INLINE EMACS_UINT
sxhash_combine (EMACS_UINT x, EMACS_UINT y)
{
return (x << 4) + (x >> (BITS_PER_EMACS_INT - 4)) + y;
@@ -1687,7 +1699,7 @@ sxhash_combine (EMACS_UINT x, EMACS_UINT y)
/* Hash X, returning a value that fits into a fixnum. */
-LISP_INLINE EMACS_UINT
+INLINE EMACS_UINT
SXHASH_REDUCE (EMACS_UINT x)
{
return (x ^ x >> (BITS_PER_EMACS_INT - FIXNUM_BITS)) & INTMASK;
@@ -1857,7 +1869,7 @@ struct Lisp_Save_Value
};
/* Return the type of V's Nth saved value. */
-LISP_INLINE int
+INLINE int
save_type (struct Lisp_Save_Value *v, int n)
{
eassert (0 <= n && n < SAVE_VALUE_SLOTS);
@@ -1866,19 +1878,19 @@ save_type (struct Lisp_Save_Value *v, int n)
/* Get and set the Nth saved pointer. */
-LISP_INLINE void *
+INLINE void *
XSAVE_POINTER (Lisp_Object obj, int n)
{
eassert (save_type (XSAVE_VALUE (obj), n) == SAVE_POINTER);
return XSAVE_VALUE (obj)->data[n].pointer;
}
-LISP_INLINE void
+INLINE void
set_save_pointer (Lisp_Object obj, int n, void *val)
{
eassert (save_type (XSAVE_VALUE (obj), n) == SAVE_POINTER);
XSAVE_VALUE (obj)->data[n].pointer = val;
}
-LISP_INLINE voidfuncptr
+INLINE voidfuncptr
XSAVE_FUNCPOINTER (Lisp_Object obj, int n)
{
eassert (save_type (XSAVE_VALUE (obj), n) == SAVE_FUNCPOINTER);
@@ -1887,13 +1899,13 @@ XSAVE_FUNCPOINTER (Lisp_Object obj, int n)
/* Likewise for the saved integer. */
-LISP_INLINE ptrdiff_t
+INLINE ptrdiff_t
XSAVE_INTEGER (Lisp_Object obj, int n)
{
eassert (save_type (XSAVE_VALUE (obj), n) == SAVE_INTEGER);
return XSAVE_VALUE (obj)->data[n].integer;
}
-LISP_INLINE void
+INLINE void
set_save_integer (Lisp_Object obj, int n, ptrdiff_t val)
{
eassert (save_type (XSAVE_VALUE (obj), n) == SAVE_INTEGER);
@@ -1902,7 +1914,7 @@ set_save_integer (Lisp_Object obj, int n, ptrdiff_t val)
/* Extract Nth saved object. */
-LISP_INLINE Lisp_Object
+INLINE Lisp_Object
XSAVE_OBJECT (Lisp_Object obj, int n)
{
eassert (save_type (XSAVE_VALUE (obj), n) == SAVE_OBJECT);
@@ -1930,40 +1942,40 @@ union Lisp_Misc
struct Lisp_Save_Value u_save_value;
};
-LISP_INLINE union Lisp_Misc *
+INLINE union Lisp_Misc *
XMISC (Lisp_Object a)
{
return XUNTAG (a, Lisp_Misc);
}
-LISP_INLINE struct Lisp_Misc_Any *
+INLINE struct Lisp_Misc_Any *
XMISCANY (Lisp_Object a)
{
eassert (MISCP (a));
return & XMISC (a)->u_any;
}
-LISP_INLINE enum Lisp_Misc_Type
+INLINE enum Lisp_Misc_Type
XMISCTYPE (Lisp_Object a)
{
return XMISCANY (a)->type;
}
-LISP_INLINE struct Lisp_Marker *
+INLINE struct Lisp_Marker *
XMARKER (Lisp_Object a)
{
eassert (MARKERP (a));
return & XMISC (a)->u_marker;
}
-LISP_INLINE struct Lisp_Overlay *
+INLINE struct Lisp_Overlay *
XOVERLAY (Lisp_Object a)
{
eassert (OVERLAYP (a));
return & XMISC (a)->u_overlay;
}
-LISP_INLINE struct Lisp_Save_Value *
+INLINE struct Lisp_Save_Value *
XSAVE_VALUE (Lisp_Object a)
{
eassert (SAVE_VALUEP (a));
@@ -2077,13 +2089,13 @@ union Lisp_Fwd
struct Lisp_Kboard_Objfwd u_kboard_objfwd;
};
-LISP_INLINE enum Lisp_Fwd_Type
+INLINE enum Lisp_Fwd_Type
XFWDTYPE (union Lisp_Fwd *a)
{
return a->u_intfwd.type;
}
-LISP_INLINE struct Lisp_Buffer_Objfwd *
+INLINE struct Lisp_Buffer_Objfwd *
XBUFFER_OBJFWD (union Lisp_Fwd *a)
{
eassert (BUFFER_OBJFWDP (a));
@@ -2100,7 +2112,7 @@ struct Lisp_Float
} u;
};
-LISP_INLINE double
+INLINE double
XFLOAT_DATA (Lisp_Object f)
{
return XFLOAT (f)->u.data;
@@ -2164,18 +2176,18 @@ enum char_bits
LISP_MACRO_DEFUN (NILP, bool, (Lisp_Object x), (x))
-LISP_INLINE bool
+INLINE bool
NUMBERP (Lisp_Object x)
{
return INTEGERP (x) || FLOATP (x);
}
-LISP_INLINE bool
+INLINE bool
NATNUMP (Lisp_Object x)
{
return INTEGERP (x) && 0 <= XINT (x);
}
-LISP_INLINE bool
+INLINE bool
RANGED_INTEGERP (intmax_t lo, Lisp_Object x, intmax_t hi)
{
return INTEGERP (x) && lo <= XINT (x) && XINT (x) <= hi;
@@ -2194,40 +2206,40 @@ LISP_MACRO_DEFUN (INTEGERP, bool, (Lisp_Object x), (x))
LISP_MACRO_DEFUN (VECTORLIKEP, bool, (Lisp_Object x), (x))
LISP_MACRO_DEFUN (MARKERP, bool, (Lisp_Object x), (x))
-LISP_INLINE bool
+INLINE bool
STRINGP (Lisp_Object x)
{
return XTYPE (x) == Lisp_String;
}
-LISP_INLINE bool
+INLINE bool
VECTORP (Lisp_Object x)
{
return VECTORLIKEP (x) && ! (ASIZE (x) & PSEUDOVECTOR_FLAG);
}
-LISP_INLINE bool
+INLINE bool
OVERLAYP (Lisp_Object x)
{
return MISCP (x) && XMISCTYPE (x) == Lisp_Misc_Overlay;
}
-LISP_INLINE bool
+INLINE bool
SAVE_VALUEP (Lisp_Object x)
{
return MISCP (x) && XMISCTYPE (x) == Lisp_Misc_Save_Value;
}
-LISP_INLINE bool
+INLINE bool
AUTOLOADP (Lisp_Object x)
{
return CONSP (x) && EQ (Qautoload, XCAR (x));
}
-LISP_INLINE bool
+INLINE bool
BUFFER_OBJFWDP (union Lisp_Fwd *a)
{
return XFWDTYPE (a) == Lisp_Fwd_Buffer_Obj;
}
-LISP_INLINE bool
+INLINE bool
PSEUDOVECTOR_TYPEP (struct vectorlike_header *a, int code)
{
return ((a->size & (PSEUDOVECTOR_FLAG | PVEC_TYPE_MASK))
@@ -2235,7 +2247,7 @@ PSEUDOVECTOR_TYPEP (struct vectorlike_header *a, int code)
}
/* True if A is a pseudovector whose code is CODE. */
-LISP_INLINE bool
+INLINE bool
PSEUDOVECTORP (Lisp_Object a, int code)
{
if (! VECTORLIKEP (a))
@@ -2251,87 +2263,87 @@ PSEUDOVECTORP (Lisp_Object a, int code)
/* Test for specific pseudovector types. */
-LISP_INLINE bool
+INLINE bool
WINDOW_CONFIGURATIONP (Lisp_Object a)
{
return PSEUDOVECTORP (a, PVEC_WINDOW_CONFIGURATION);
}
-LISP_INLINE bool
+INLINE bool
PROCESSP (Lisp_Object a)
{
return PSEUDOVECTORP (a, PVEC_PROCESS);
}
-LISP_INLINE bool
+INLINE bool
WINDOWP (Lisp_Object a)
{
return PSEUDOVECTORP (a, PVEC_WINDOW);
}
-LISP_INLINE bool
+INLINE bool
TERMINALP (Lisp_Object a)
{
return PSEUDOVECTORP (a, PVEC_TERMINAL);
}
-LISP_INLINE bool
+INLINE bool
SUBRP (Lisp_Object a)
{
return PSEUDOVECTORP (a, PVEC_SUBR);
}
-LISP_INLINE bool
+INLINE bool
COMPILEDP (Lisp_Object a)
{
return PSEUDOVECTORP (a, PVEC_COMPILED);
}
-LISP_INLINE bool
+INLINE bool
BUFFERP (Lisp_Object a)
{
return PSEUDOVECTORP (a, PVEC_BUFFER);
}
-LISP_INLINE bool
+INLINE bool
CHAR_TABLE_P (Lisp_Object a)
{
return PSEUDOVECTORP (a, PVEC_CHAR_TABLE);
}
-LISP_INLINE bool
+INLINE bool
SUB_CHAR_TABLE_P (Lisp_Object a)
{
return PSEUDOVECTORP (a, PVEC_SUB_CHAR_TABLE);
}
-LISP_INLINE bool
+INLINE bool
BOOL_VECTOR_P (Lisp_Object a)
{
return PSEUDOVECTORP (a, PVEC_BOOL_VECTOR);
}
-LISP_INLINE bool
+INLINE bool
FRAMEP (Lisp_Object a)
{
return PSEUDOVECTORP (a, PVEC_FRAME);
}
/* Test for image (image . spec) */
-LISP_INLINE bool
+INLINE bool
IMAGEP (Lisp_Object x)
{
return CONSP (x) && EQ (XCAR (x), Qimage);
}
/* Array types. */
-LISP_INLINE bool
+INLINE bool
ARRAYP (Lisp_Object x)
{
return VECTORP (x) || STRINGP (x) || CHAR_TABLE_P (x) || BOOL_VECTOR_P (x);
}
-LISP_INLINE void
+INLINE void
CHECK_LIST (Lisp_Object x)
{
CHECK_TYPE (CONSP (x) || NILP (x), Qlistp, x);
@@ -2341,52 +2353,57 @@ LISP_MACRO_DEFUN_VOID (CHECK_LIST_CONS, (Lisp_Object x, Lisp_Object y), (x, y))
LISP_MACRO_DEFUN_VOID (CHECK_SYMBOL, (Lisp_Object x), (x))
LISP_MACRO_DEFUN_VOID (CHECK_NUMBER, (Lisp_Object x), (x))
-LISP_INLINE void
+INLINE void
CHECK_STRING (Lisp_Object x)
{
CHECK_TYPE (STRINGP (x), Qstringp, x);
}
-LISP_INLINE void
+INLINE void
CHECK_STRING_CAR (Lisp_Object x)
{
CHECK_TYPE (STRINGP (XCAR (x)), Qstringp, XCAR (x));
}
-LISP_INLINE void
+INLINE void
CHECK_CONS (Lisp_Object x)
{
CHECK_TYPE (CONSP (x), Qconsp, x);
}
-LISP_INLINE void
+INLINE void
CHECK_VECTOR (Lisp_Object x)
{
CHECK_TYPE (VECTORP (x), Qvectorp, x);
}
-LISP_INLINE void
+INLINE void
+CHECK_BOOL_VECTOR (Lisp_Object x)
+{
+ CHECK_TYPE (BOOL_VECTOR_P (x), Qbool_vector_p, x);
+}
+INLINE void
CHECK_VECTOR_OR_STRING (Lisp_Object x)
{
CHECK_TYPE (VECTORP (x) || STRINGP (x), Qarrayp, x);
}
-LISP_INLINE void
+INLINE void
CHECK_ARRAY (Lisp_Object x, Lisp_Object Qxxxp)
{
CHECK_TYPE (ARRAYP (x), Qxxxp, x);
}
-LISP_INLINE void
+INLINE void
CHECK_BUFFER (Lisp_Object x)
{
CHECK_TYPE (BUFFERP (x), Qbufferp, x);
}
-LISP_INLINE void
+INLINE void
CHECK_WINDOW (Lisp_Object x)
{
CHECK_TYPE (WINDOWP (x), Qwindowp, x);
}
-LISP_INLINE void
+INLINE void
CHECK_PROCESS (Lisp_Object x)
{
CHECK_TYPE (PROCESSP (x), Qprocessp, x);
}
-LISP_INLINE void
+INLINE void
CHECK_NATNUM (Lisp_Object x)
{
CHECK_TYPE (NATNUMP (x), Qwholenump, x);
@@ -2415,13 +2432,13 @@ CHECK_NATNUM (Lisp_Object x)
do { if (MARKERP ((x))) XSETFASTINT (x, marker_position (x)); \
else CHECK_TYPE (INTEGERP (x), Qinteger_or_marker_p, x); } while (0)
-LISP_INLINE double
+INLINE double
XFLOATINT (Lisp_Object n)
{
return extract_float (n);
}
-LISP_INLINE void
+INLINE void
CHECK_NUMBER_OR_FLOAT (Lisp_Object x)
{
CHECK_TYPE (FLOATP (x) || INTEGERP (x), Qnumberp, x);
@@ -2433,7 +2450,7 @@ CHECK_NUMBER_OR_FLOAT (Lisp_Object x)
/* Since we can't assign directly to the CAR or CDR fields of a cons
cell, use these when checking that those fields contain numbers. */
-LISP_INLINE void
+INLINE void
CHECK_NUMBER_CAR (Lisp_Object x)
{
Lisp_Object tmp = XCAR (x);
@@ -2441,7 +2458,7 @@ CHECK_NUMBER_CAR (Lisp_Object x)
XSETCAR (x, tmp);
}
-LISP_INLINE void
+INLINE void
CHECK_NUMBER_CDR (Lisp_Object x)
{
Lisp_Object tmp = XCDR (x);
@@ -2519,7 +2536,7 @@ CHECK_NUMBER_CDR (Lisp_Object x)
Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object)
/* True if OBJ is a Lisp function. */
-LISP_INLINE bool
+INLINE bool
FUNCTIONP (Lisp_Object obj)
{
return functionp (obj);
@@ -2686,7 +2703,7 @@ extern union specbinding *specpdl;
extern union specbinding *specpdl_ptr;
extern ptrdiff_t specpdl_size;
-LISP_INLINE ptrdiff_t
+INLINE ptrdiff_t
SPECPDL_INDEX (void)
{
return specpdl_ptr - specpdl;
@@ -3014,22 +3031,22 @@ struct frame;
/* Copy COUNT Lisp_Objects from ARGS to contents of V starting from OFFSET. */
-LISP_INLINE void
+INLINE void
vcopy (Lisp_Object v, ptrdiff_t offset, Lisp_Object *args, ptrdiff_t count)
{
eassert (0 <= offset && 0 <= count && offset + count <= ASIZE (v));
- memcpy (XVECTOR (v)->contents + offset, args, count * sizeof *args);
+ memcpy (XVECTOR (v)->u.contents + offset, args, count * sizeof *args);
}
/* Functions to modify hash tables. */
-LISP_INLINE void
+INLINE void
set_hash_key_slot (struct Lisp_Hash_Table *h, ptrdiff_t idx, Lisp_Object val)
{
gc_aset (h->key_and_value, 2 * idx, val);
}
-LISP_INLINE void
+INLINE void
set_hash_value_slot (struct Lisp_Hash_Table *h, ptrdiff_t idx, Lisp_Object val)
{
gc_aset (h->key_and_value, 2 * idx + 1, val);
@@ -3038,19 +3055,19 @@ set_hash_value_slot (struct Lisp_Hash_Table *h, ptrdiff_t idx, Lisp_Object val)
/* Use these functions to set Lisp_Object
or pointer slots of struct Lisp_Symbol. */
-LISP_INLINE void
+INLINE void
set_symbol_function (Lisp_Object sym, Lisp_Object function)
{
XSYMBOL (sym)->function = function;
}
-LISP_INLINE void
+INLINE void
set_symbol_plist (Lisp_Object sym, Lisp_Object plist)
{
XSYMBOL (sym)->plist = plist;
}
-LISP_INLINE void
+INLINE void
set_symbol_next (Lisp_Object sym, struct Lisp_Symbol *next)
{
XSYMBOL (sym)->next = next;
@@ -3058,7 +3075,7 @@ set_symbol_next (Lisp_Object sym, struct Lisp_Symbol *next)
/* Buffer-local (also frame-local) variable access functions. */
-LISP_INLINE int
+INLINE int
blv_found (struct Lisp_Buffer_Local_Value *blv)
{
eassert (blv->found == !EQ (blv->defcell, blv->valcell));
@@ -3067,7 +3084,7 @@ blv_found (struct Lisp_Buffer_Local_Value *blv)
/* Set overlay's property list. */
-LISP_INLINE void
+INLINE void
set_overlay_plist (Lisp_Object overlay, Lisp_Object plist)
{
XOVERLAY (overlay)->plist = plist;
@@ -3075,7 +3092,7 @@ set_overlay_plist (Lisp_Object overlay, Lisp_Object plist)
/* Get text properties of S. */
-LISP_INLINE INTERVAL
+INLINE INTERVAL
string_intervals (Lisp_Object s)
{
return XSTRING (s)->intervals;
@@ -3083,7 +3100,7 @@ string_intervals (Lisp_Object s)
/* Set text properties of S to I. */
-LISP_INLINE void
+INLINE void
set_string_intervals (Lisp_Object s, INTERVAL i)
{
XSTRING (s)->intervals = i;
@@ -3092,12 +3109,12 @@ set_string_intervals (Lisp_Object s, INTERVAL i)
/* Set a Lisp slot in TABLE to VAL. Most code should use this instead
of setting slots directly. */
-LISP_INLINE void
+INLINE void
set_char_table_defalt (Lisp_Object table, Lisp_Object val)
{
XCHAR_TABLE (table)->defalt = val;
}
-LISP_INLINE void
+INLINE void
set_char_table_purpose (Lisp_Object table, Lisp_Object val)
{
XCHAR_TABLE (table)->purpose = val;
@@ -3105,21 +3122,21 @@ set_char_table_purpose (Lisp_Object table, Lisp_Object val)
/* Set different slots in (sub)character tables. */
-LISP_INLINE void
+INLINE void
set_char_table_extras (Lisp_Object table, ptrdiff_t idx, Lisp_Object val)
{
eassert (0 <= idx && idx < CHAR_TABLE_EXTRA_SLOTS (XCHAR_TABLE (table)));
XCHAR_TABLE (table)->extras[idx] = val;
}
-LISP_INLINE void
+INLINE void
set_char_table_contents (Lisp_Object table, ptrdiff_t idx, Lisp_Object val)
{
eassert (0 <= idx && idx < (1 << CHARTAB_SIZE_BITS_0));
XCHAR_TABLE (table)->contents[idx] = val;
}
-LISP_INLINE void
+INLINE void
set_sub_char_table_contents (Lisp_Object table, ptrdiff_t idx, Lisp_Object val)
{
XSUB_CHAR_TABLE (table)->contents[idx] = val;
@@ -3160,6 +3177,16 @@ EXFUN (Fbyteorder, 0) ATTRIBUTE_CONST;
/* Defined in data.c. */
extern Lisp_Object indirect_function (Lisp_Object);
extern Lisp_Object find_symbol_value (Lisp_Object);
+enum Arith_Comparison {
+ ARITH_EQUAL,
+ ARITH_NOTEQUAL,
+ ARITH_LESS,
+ ARITH_GRTR,
+ ARITH_LESS_OR_EQUAL,
+ ARITH_GRTR_OR_EQUAL
+};
+extern Lisp_Object arithcompare (Lisp_Object num1, Lisp_Object num2,
+ enum Arith_Comparison comparison);
/* Convert the integer I to an Emacs representation, either the integer
itself, or a cons of two or three integers, or if all else fails a float.
@@ -3339,7 +3366,6 @@ extern void syms_of_insdel (void);
&& (defined __FreeBSD__ || defined GNU_LINUX || defined __MINGW32__))
_Noreturn void __executable_start (void);
#endif
-extern Lisp_Object selected_frame;
extern Lisp_Object Vwindow_system;
extern Lisp_Object sit_for (Lisp_Object, bool, int);
extern void init_display (void);
@@ -3359,10 +3385,7 @@ extern Lisp_Object Qglyphless_char;
extern Lisp_Object QCdata, QCfile;
extern Lisp_Object QCmap;
extern Lisp_Object Qrisky_local_variable;
-extern struct frame *last_glyphless_glyph_frame;
-extern int last_glyphless_glyph_face_id;
-extern int last_glyphless_glyph_merged_face_id;
-extern int noninteractive_need_newline;
+extern bool noninteractive_need_newline;
extern Lisp_Object echo_area_buffer[2];
extern void add_to_log (const char *, Lisp_Object, Lisp_Object);
extern void check_message_stack (void);
@@ -3429,19 +3452,19 @@ extern Lisp_Object listn (enum constype, ptrdiff_t, Lisp_Object, ...);
/* Build a frequently used 2/3/4-integer lists. */
-LISP_INLINE Lisp_Object
+INLINE Lisp_Object
list2i (EMACS_INT x, EMACS_INT y)
{
return list2 (make_number (x), make_number (y));
}
-LISP_INLINE Lisp_Object
+INLINE Lisp_Object
list3i (EMACS_INT x, EMACS_INT y, EMACS_INT w)
{
return list3 (make_number (x), make_number (y), make_number (w));
}
-LISP_INLINE Lisp_Object
+INLINE Lisp_Object
list4i (EMACS_INT x, EMACS_INT y, EMACS_INT w, EMACS_INT h)
{
return list4 (make_number (x), make_number (y),
@@ -3456,7 +3479,7 @@ extern Lisp_Object make_unibyte_string (const char *, ptrdiff_t);
/* Make unibyte string from C string when the length isn't known. */
-LISP_INLINE Lisp_Object
+INLINE Lisp_Object
build_unibyte_string (const char *str)
{
return make_unibyte_string (str, strlen (str));
@@ -3474,7 +3497,7 @@ extern Lisp_Object make_pure_c_string (const char *, ptrdiff_t);
/* Make a string allocated in pure space, use STR as string data. */
-LISP_INLINE Lisp_Object
+INLINE Lisp_Object
build_pure_c_string (const char *str)
{
return make_pure_c_string (str, strlen (str));
@@ -3483,7 +3506,7 @@ build_pure_c_string (const char *str)
/* Make a string from the data at STR, treating it as multibyte if the
data warrants. */
-LISP_INLINE Lisp_Object
+INLINE Lisp_Object
build_string (const char *str)
{
return make_string (str, strlen (str));
@@ -3504,7 +3527,7 @@ extern struct Lisp_Vector *allocate_vector (EMACS_INT);
ASET (v, 1, Ffunction_can_gc ());
ASET (v, 2, obj1); */
-LISP_INLINE Lisp_Object
+INLINE Lisp_Object
make_uninit_vector (ptrdiff_t size)
{
Lisp_Object v;
@@ -3551,7 +3574,7 @@ extern int valid_lisp_object_p (Lisp_Object);
#ifdef GC_CHECK_CONS_LIST
extern void check_cons_list (void);
#else
-LISP_INLINE void (check_cons_list) (void) { lisp_h_check_cons_list (); }
+INLINE void (check_cons_list) (void) { lisp_h_check_cons_list (); }
#endif
#ifdef REL_ALLOC
@@ -3619,7 +3642,7 @@ extern Lisp_Object check_obarray (Lisp_Object);
extern Lisp_Object intern_1 (const char *, ptrdiff_t);
extern Lisp_Object intern_c_string_1 (const char *, ptrdiff_t);
extern Lisp_Object oblookup (Lisp_Object, const char *, ptrdiff_t, ptrdiff_t);
-LISP_INLINE void
+INLINE void
LOADHIST_ATTACH (Lisp_Object x)
{
if (initialized)
@@ -3635,13 +3658,13 @@ extern void init_obarray (void);
extern void init_lread (void);
extern void syms_of_lread (void);
-LISP_INLINE Lisp_Object
+INLINE Lisp_Object
intern (const char *str)
{
return intern_1 (str, strlen (str));
}
-LISP_INLINE Lisp_Object
+INLINE Lisp_Object
intern_c_string (const char *str)
{
return intern_c_string_1 (str, strlen (str));
@@ -3920,9 +3943,9 @@ void fixup_locale (void);
void synchronize_system_messages_locale (void);
void synchronize_system_time_locale (void);
#else
-LISP_INLINE void fixup_locale (void) {}
-LISP_INLINE void synchronize_system_messages_locale (void) {}
-LISP_INLINE void synchronize_system_time_locale (void) {}
+INLINE void fixup_locale (void) {}
+INLINE void synchronize_system_messages_locale (void) {}
+INLINE void synchronize_system_time_locale (void) {}
#endif
extern void shut_down_emacs (int, Lisp_Object);
@@ -4301,7 +4324,7 @@ extern void *record_xmalloc (size_t);
/* Check whether it's time for GC, and run it if so. */
-LISP_INLINE void
+INLINE void
maybe_gc (void)
{
if ((consing_since_gc > gc_cons_threshold
@@ -4311,7 +4334,7 @@ maybe_gc (void)
Fgarbage_collect ();
}
-LISP_INLINE bool
+INLINE bool
functionp (Lisp_Object object)
{
if (SYMBOLP (object) && !NILP (Ffboundp (object)))
@@ -4343,6 +4366,40 @@ functionp (Lisp_Object object)
return 0;
}
+INLINE uint16_t
+swap16 (uint16_t val)
+{
+ return (val << 8) | (val & 0xFF);
+}
+
+INLINE uint32_t
+swap32 (uint32_t val)
+{
+ uint32_t low = swap16 (val & 0xFFFF);
+ uint32_t high = swap16 (val >> 16);
+ return (low << 16) | high;
+}
+
+#ifdef UINT64_MAX
+INLINE uint64_t
+swap64 (uint64_t val)
+{
+ uint64_t low = swap32 (val & 0xFFFFFFFF);
+ uint64_t high = swap32 (val >> 32);
+ return (low << 32) | high;
+}
+#endif
+
+#if ((SIZE_MAX >> 31) >> 1) & 1
+# define BITS_PER_SIZE_T 64
+#else
+# define BITS_PER_SIZE_T 32
+#endif
+
+/* Round x to the next multiple of y. Does not overflow. Evaluates
+ arguments repeatedly. */
+#define ROUNDUP(x,y) ((y)*((x)/(y) + ((x)%(y)!=0)))
+
INLINE_HEADER_END
#endif /* EMACS_LISP_H */
diff --git a/src/lisp.mk b/src/lisp.mk
index a9a661ea3a8..c12deebd893 100644
--- a/src/lisp.mk
+++ b/src/lisp.mk
@@ -152,6 +152,7 @@ lisp = \
$(lispsource)/term/w32-win.elc \
$(lispsource)/ls-lisp.elc \
$(lispsource)/disp-table.elc \
+ $(lispsource)/w32-common-fns.elc \
$(lispsource)/dos-w32.elc \
$(lispsource)/w32-fns.elc \
$(lispsource)/dos-fns.elc \
diff --git a/src/lread.c b/src/lread.c
index 9518631ba6d..fe2b92a34b3 100644
--- a/src/lread.c
+++ b/src/lread.c
@@ -2597,7 +2597,10 @@ read1 (Lisp_Object readcharfun, int *pch, bool first_in_list)
build them using function calls. */
Lisp_Object tmp;
tmp = read_vector (readcharfun, 1);
- make_byte_code (XVECTOR (tmp));
+ struct Lisp_Vector* vec = XVECTOR (tmp);
+ if (vec->header.size==0)
+ invalid_syntax ("Empty byte-code object");
+ make_byte_code (vec);
return tmp;
}
if (c == '(')
@@ -3459,7 +3462,7 @@ read_vector (Lisp_Object readcharfun, bool bytecodeflag)
vector = Fmake_vector (len, Qnil);
size = ASIZE (vector);
- ptr = XVECTOR (vector)->contents;
+ ptr = XVECTOR (vector)->u.contents;
for (i = 0; i < size; i++)
{
item = Fcar (tem);
diff --git a/src/macfont.h b/src/macfont.h
new file mode 100644
index 00000000000..141d60bfb0a
--- /dev/null
+++ b/src/macfont.h
@@ -0,0 +1,144 @@
+/* Interface definition for Mac OSX Core text font backend.
+ Copyright (C) 2009-2013 Free Software Foundation, Inc.
+
+This file is part of GNU Emacs.
+
+GNU Emacs is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+GNU Emacs is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
+
+Original author: YAMAMOTO Mitsuharu
+*/
+
+/* Structure used by Mac `shape' functions for storing layout
+ information for each glyph. */
+struct mac_glyph_layout
+{
+ /* Range of indices of the characters composed into the group of
+ glyphs that share the cursor position with this glyph. The
+ members `location' and `length' are in UTF-16 indices. */
+ CFRange comp_range;
+
+ /* UTF-16 index in the source string for the first character
+ associated with this glyph. */
+ CFIndex string_index;
+
+ /* Horizontal and vertical adjustments of glyph position. The
+ coordinate space is that of Core Text. So, the `baseline_delta'
+ value is negative if the glyph should be placed below the
+ baseline. */
+ CGFloat advance_delta, baseline_delta;
+
+ /* Typographical width of the glyph. */
+ CGFloat advance;
+
+ /* Glyph ID of the glyph. */
+ CGGlyph glyph_id;
+};
+
+typedef CTFontDescriptorRef FontDescriptorRef;
+typedef CTFontRef FontRef;
+typedef CTFontSymbolicTraits FontSymbolicTraits;
+typedef CTCharacterCollection CharacterCollection;
+
+#define MAC_FONT_NAME_ATTRIBUTE kCTFontNameAttribute
+#define MAC_FONT_FAMILY_NAME_ATTRIBUTE kCTFontFamilyNameAttribute
+#define MAC_FONT_TRAITS_ATTRIBUTE kCTFontTraitsAttribute
+#define MAC_FONT_SIZE_ATTRIBUTE kCTFontSizeAttribute
+#define MAC_FONT_CASCADE_LIST_ATTRIBUTE kCTFontCascadeListAttribute
+#define MAC_FONT_CHARACTER_SET_ATTRIBUTE kCTFontCharacterSetAttribute
+#define MAC_FONT_LANGUAGES_ATTRIBUTE kCTFontLanguagesAttribute
+#if MAC_OS_X_VERSION_MIN_REQUIRED >= 1060
+#define MAC_FONT_FORMAT_ATTRIBUTE kCTFontFormatAttribute
+#else
+#define MAC_FONT_FORMAT_ATTRIBUTE (CFSTR ("NSCTFontFormatAttribute"))
+#endif
+#define MAC_FONT_SYMBOLIC_TRAIT kCTFontSymbolicTrait
+#define MAC_FONT_WEIGHT_TRAIT kCTFontWeightTrait
+#define MAC_FONT_WIDTH_TRAIT kCTFontWidthTrait
+#define MAC_FONT_SLANT_TRAIT kCTFontSlantTrait
+
+enum {
+ MAC_FONT_TRAIT_ITALIC = kCTFontItalicTrait,
+ MAC_FONT_TRAIT_BOLD = kCTFontBoldTrait,
+ MAC_FONT_TRAIT_MONO_SPACE = kCTFontMonoSpaceTrait,
+#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1070
+ MAC_FONT_TRAIT_COLOR_GLYPHS = kCTFontColorGlyphsTrait
+#else
+ MAC_FONT_TRAIT_COLOR_GLYPHS = (1 << 13)
+#endif
+};
+
+enum {
+#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1060
+ MAC_FONT_FORMAT_BITMAP = kCTFontFormatBitmap
+#else
+ MAC_FONT_FORMAT_BITMAP = 5
+#endif
+};
+
+enum {
+ MAC_CHARACTER_COLLECTION_IDENTITY_MAPPING = kCTIdentityMappingCharacterCollection,
+ MAC_CHARACTER_COLLECTION_ADOBE_JAPAN1 = kCTAdobeJapan1CharacterCollection
+};
+
+#define mac_font_descriptor_create_with_attributes \
+ CTFontDescriptorCreateWithAttributes
+#define mac_font_descriptor_create_matching_font_descriptors \
+ CTFontDescriptorCreateMatchingFontDescriptors
+#define mac_font_descriptor_create_matching_font_descriptor \
+ CTFontDescriptorCreateMatchingFontDescriptor
+#define mac_font_descriptor_copy_attribute CTFontDescriptorCopyAttribute
+#define mac_font_descriptor_supports_languages \
+ mac_ctfont_descriptor_supports_languages
+#define mac_font_create_with_name(name, size) \
+ CTFontCreateWithName (name, size, NULL)
+#define mac_font_get_size CTFontGetSize
+#define mac_font_copy_family_name CTFontCopyFamilyName
+#define mac_font_copy_character_set CTFontCopyCharacterSet
+#define mac_font_get_glyphs_for_characters CTFontGetGlyphsForCharacters
+#define mac_font_get_ascent CTFontGetAscent
+#define mac_font_get_descent CTFontGetDescent
+#define mac_font_get_leading CTFontGetLeading
+#define mac_font_get_underline_position CTFontGetUnderlinePosition
+#define mac_font_get_underline_thickness CTFontGetUnderlineThickness
+#define mac_font_copy_graphics_font(font) CTFontCopyGraphicsFont (font, NULL)
+#if MAC_OS_X_VERSION_MIN_REQUIRED >= 1060
+#define mac_font_copy_non_synthetic_table(font, table) \
+ CTFontCopyTable (font, table, kCTFontTableOptionNoOptions)
+#else
+#define mac_font_copy_non_synthetic_table(font, table) \
+ CTFontCopyTable (font, table, kCTFontTableOptionExcludeSynthetic)
+#endif
+
+#define mac_font_create_preferred_family_for_attributes \
+ mac_ctfont_create_preferred_family_for_attributes
+#define mac_font_get_advance_width_for_glyph \
+ mac_ctfont_get_advance_width_for_glyph
+#define mac_font_get_bounding_rect_for_glyph \
+ mac_ctfont_get_bounding_rect_for_glyph
+#define mac_font_create_available_families mac_ctfont_create_available_families
+#define mac_font_shape mac_ctfont_shape
+#if USE_CT_GLYPH_INFO
+#define mac_font_get_glyph_for_cid mac_ctfont_get_glyph_for_cid
+#endif
+
+#define mac_nsctfont_copy_font_descriptor CTFontCopyFontDescriptor
+
+#define MAC_FONT_CHARACTER_SET_STRING_ATTRIBUTE \
+ (CFSTR ("MAC_FONT_CHARACTER_SET_STRING_ATTRIBUTE"))
+
+typedef const struct _EmacsScreenFont *ScreenFontRef; /* opaque */
+
+extern void mac_register_font_driver (struct frame *f);
+extern void *macfont_get_nsctfont (struct font *font);
+
diff --git a/src/macfont.m b/src/macfont.m
new file mode 100644
index 00000000000..ab5029743ef
--- /dev/null
+++ b/src/macfont.m
@@ -0,0 +1,3858 @@
+/* Font driver on Mac OSX Core text.
+ Copyright (C) 2009-2013 Free Software Foundation, Inc.
+
+This file is part of GNU Emacs.
+
+GNU Emacs is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+GNU Emacs is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
+
+Original author: YAMAMOTO Mitsuharu
+*/
+
+#include <config.h>
+
+#include "lisp.h"
+#include "dispextern.h"
+#include "frame.h"
+#include "blockinput.h"
+#include "character.h"
+#include "charset.h"
+#include "composite.h"
+#include "fontset.h"
+#include "font.h"
+#include "nsgui.h"
+#include "nsterm.h"
+#include "macfont.h"
+#include "macuvs.h"
+
+#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1050
+
+#include <libkern/OSByteOrder.h>
+
+static struct font_driver macfont_driver;
+
+/* Core Text, for Mac OS X 10.5 and later. */
+static Lisp_Object Qmac_ct;
+
+static double mac_ctfont_get_advance_width_for_glyph (CTFontRef, CGGlyph);
+static CGRect mac_ctfont_get_bounding_rect_for_glyph (CTFontRef, CGGlyph);
+static CFArrayRef mac_ctfont_create_available_families (void);
+static Boolean mac_ctfont_equal_in_postscript_name (CTFontRef, CTFontRef);
+static CTLineRef mac_ctfont_create_line_with_string_and_font (CFStringRef,
+ CTFontRef);
+static CFComparisonResult mac_font_family_compare (const void *,
+ const void *, void *);
+static Boolean mac_ctfont_descriptor_supports_languages (CTFontDescriptorRef,
+ CFArrayRef);
+static CFStringRef mac_ctfont_create_preferred_family_for_attributes (CFDictionaryRef);
+static CFIndex mac_ctfont_shape (CTFontRef, CFStringRef,
+ struct mac_glyph_layout *, CFIndex);
+#if USE_CT_GLYPH_INFO
+static CGGlyph mac_ctfont_get_glyph_for_cid (CTFontRef,
+ CTCharacterCollection,
+ CGFontIndex);
+#endif
+
+/* The font property key specifying the font design destination. The
+ value is an unsigned integer code: 0 for WYSIWIG, and 1 for Video
+ text. (See the documentation of X Logical Font Description
+ Conventions.) In the Mac font driver, 1 means the screen font is
+ used for calculating some glyph metrics. You can see the
+ difference with Monaco 8pt or 9pt, for example. */
+static Lisp_Object QCdestination;
+
+/* The boolean-valued font property key specifying the use of
+ leading. */
+static Lisp_Object QCminspace;
+
+struct macfont_metrics;
+
+/* The actual structure for Mac font that can be casted to struct font. */
+
+struct macfont_info
+{
+ struct font font;
+ FontRef macfont;
+ CGFontRef cgfont;
+ ScreenFontRef screen_font;
+ struct macfont_cache *cache;
+ struct macfont_metrics **metrics;
+ short metrics_nrows;
+ unsigned synthetic_italic_p : 1;
+ unsigned synthetic_bold_p : 1;
+ unsigned spacing : 2;
+ unsigned antialias : 2;
+ unsigned color_bitmap_p : 1;
+};
+
+/* Values for the `spacing' member in `struct macfont_info'. */
+
+enum
+ {
+ MACFONT_SPACING_PROPORTIONAL,
+ MACFONT_SPACING_MONO,
+ MACFONT_SPACING_SYNTHETIC_MONO,
+ };
+
+/* Values for the `antialias' member in `struct macfont_info'. */
+
+enum
+ {
+ MACFONT_ANTIALIAS_DEFAULT,
+ MACFONT_ANTIALIAS_OFF,
+ MACFONT_ANTIALIAS_ON,
+ };
+
+enum {FONT_SLANT_SYNTHETIC_ITALIC = 200}; /* FC_SLANT_ITALIC + 100 */
+enum {FONT_WEIGHT_SYNTHETIC_BOLD = 200}; /* FC_WEIGHT_BOLD */
+enum {FONT_SPACING_SYNTHETIC_MONO = FONT_SPACING_MONO};
+
+static const CGAffineTransform synthetic_italic_atfm = {1, 0, 0.25, 1, 0, 0};
+static const CGFloat synthetic_bold_factor = 0.024;
+
+static Boolean cfnumber_get_font_symbolic_traits_value (CFNumberRef,
+ FontSymbolicTraits *);
+static void macfont_store_descriptor_attributes (FontDescriptorRef,
+ Lisp_Object);
+static Lisp_Object macfont_descriptor_entity (FontDescriptorRef,
+ Lisp_Object,
+ FontSymbolicTraits);
+static CFStringRef macfont_create_family_with_symbol (Lisp_Object);
+static int macfont_glyph_extents (struct font *, CGGlyph,
+ struct font_metrics *, CGFloat *, int);
+static CFMutableDictionaryRef macfont_create_attributes_with_spec (Lisp_Object);
+static Boolean macfont_supports_charset_and_languages_p (FontDescriptorRef,
+ CFCharacterSetRef,
+ Lisp_Object,
+ CFArrayRef);
+static CFIndex macfont_closest_traits_index (CFArrayRef,
+ FontSymbolicTraits);
+static CFDataRef mac_font_copy_uvs_table (FontRef);
+static void mac_font_get_glyphs_for_variants (CFDataRef, UTF32Char,
+ const UTF32Char [],
+ CGGlyph [], CFIndex);
+
+/* From CFData to a lisp string. Always returns a unibyte string. */
+
+static Lisp_Object
+cfdata_to_lisp (CFDataRef data)
+{
+ CFIndex len = CFDataGetLength (data);
+ Lisp_Object result = make_uninit_string (len);
+
+ CFDataGetBytes (data, CFRangeMake (0, len), SDATA (result));
+
+ return result;
+}
+
+
+
+/* From CFString to a lisp string. Returns a unibyte string
+ containing a UTF-8 byte sequence. */
+
+static Lisp_Object
+cfstring_to_lisp_nodecode (CFStringRef string)
+{
+ Lisp_Object result = Qnil;
+ CFDataRef data;
+ const char *s = CFStringGetCStringPtr (string, kCFStringEncodingUTF8);
+
+ if (s)
+ {
+ CFIndex i, length = CFStringGetLength (string);
+
+ for (i = 0; i < length; i++)
+ if (CFStringGetCharacterAtIndex (string, i) == 0)
+ break;
+
+ if (i == length)
+ return make_unibyte_string (s, strlen (s));
+ }
+
+ data = CFStringCreateExternalRepresentation (NULL, string,
+ kCFStringEncodingUTF8, '?');
+ if (data)
+ {
+ result = cfdata_to_lisp (data);
+ CFRelease (data);
+ }
+
+ return result;
+}
+
+/* Lisp string containing a UTF-8 byte sequence to CFString. Unlike
+ cfstring_create_with_utf8_cstring, this function preserves NUL
+ characters. */
+
+static CFStringRef
+cfstring_create_with_string_noencode (Lisp_Object s)
+{
+ CFStringRef string = CFStringCreateWithBytes (NULL, SDATA (s), SBYTES (s),
+ kCFStringEncodingUTF8, false);
+
+ if (string == NULL)
+ /* Failed to interpret as UTF 8. Fall back on Mac Roman. */
+ string = CFStringCreateWithBytes (NULL, SDATA (s), SBYTES (s),
+ kCFStringEncodingMacRoman, false);
+
+ return string;
+}
+
+static CGFloat
+mac_screen_font_get_advance_width_for_glyph (ScreenFontRef font, CGGlyph glyph)
+{
+ NSSize advancement = [(NSFont *)font advancementForGlyph:glyph];
+
+ return advancement.width;
+}
+
+static CGGlyph
+mac_font_get_glyph_for_cid (FontRef font, CharacterCollection collection,
+ CGFontIndex cid)
+{
+#if USE_CT_GLYPH_INFO
+ return mac_ctfont_get_glyph_for_cid ((CTFontRef) font, collection, cid);
+#else
+ {
+ CGGlyph result = kCGFontIndexInvalid;
+ NSFont *nsFont = (NSFont *) font;
+ unichar characters[] = {0xfffd};
+ NSString *string =
+ [NSString stringWithCharacters:characters
+ length:(sizeof (characters)
+ / sizeof (characters[0]))];
+ NSGlyphInfo *glyphInfo =
+ [NSGlyphInfo glyphInfoWithCharacterIdentifier:cid
+ collection:collection
+ baseString:string];
+ NSDictionary *attributes =
+ [NSDictionary dictionaryWithObjectsAndKeys:nsFont,NSFontAttributeName,
+ glyphInfo,NSGlyphInfoAttributeName,nil];
+ NSTextStorage *textStorage =
+ [[NSTextStorage alloc] initWithString:string
+ attributes:attributes];
+ NSLayoutManager *layoutManager = [[NSLayoutManager alloc] init];
+ NSTextContainer *textContainer = [[NSTextContainer alloc] init];
+ NSFont *fontInTextStorage;
+
+ [layoutManager addTextContainer:textContainer];
+ [textContainer release];
+ [textStorage addLayoutManager:layoutManager];
+ [layoutManager release];
+
+ /* Force layout. */
+ (void) [layoutManager glyphRangeForTextContainer:textContainer];
+
+ fontInTextStorage = [textStorage attribute:NSFontAttributeName atIndex:0
+ effectiveRange:NULL];
+ if (fontInTextStorage == nsFont
+ || [[fontInTextStorage fontName] isEqualToString:[nsFont fontName]])
+ {
+ NSGlyph glyph = [layoutManager glyphAtIndex:0];
+
+ if (glyph < [nsFont numberOfGlyphs])
+ result = glyph;
+ }
+
+ [textStorage release];
+
+ return result;
+ }
+}
+#endif
+
+static ScreenFontRef
+mac_screen_font_create_with_name (CFStringRef name, CGFloat size)
+{
+ NSFont *result, *font;
+
+ font = [NSFont fontWithName:((NSString *) name) size:size];
+ result = [font screenFont];
+
+ return (ScreenFontRef)[result retain];
+}
+
+
+static Boolean
+mac_screen_font_get_metrics (ScreenFontRef font, CGFloat *ascent,
+ CGFloat *descent, CGFloat *leading)
+{
+ NSFont *nsFont = [(NSFont *)font printerFont];
+ NSTextStorage *textStorage;
+ NSLayoutManager *layoutManager;
+ NSTextContainer *textContainer;
+ NSRect usedRect;
+ NSPoint spaceLocation;
+ CGFloat descender;
+
+ textStorage = [[NSTextStorage alloc] initWithString:@" "];
+ layoutManager = [[NSLayoutManager alloc] init];
+ textContainer = [[NSTextContainer alloc] init];
+
+ [textStorage setFont:nsFont];
+ [textContainer setLineFragmentPadding:0];
+ [layoutManager setUsesScreenFonts:YES];
+
+ [layoutManager addTextContainer:textContainer];
+ [textContainer release];
+ [textStorage addLayoutManager:layoutManager];
+ [layoutManager release];
+
+ if (!(textStorage && layoutManager && textContainer))
+ {
+ [textStorage release];
+
+ return false;
+ }
+
+ usedRect = [layoutManager lineFragmentUsedRectForGlyphAtIndex:0
+ effectiveRange:NULL];
+ spaceLocation = [layoutManager locationForGlyphAtIndex:0];
+ [textStorage release];
+
+ *ascent = spaceLocation.y;
+ *descent = NSHeight (usedRect) - spaceLocation.y;
+ *leading = 0;
+ descender = [nsFont descender];
+ if (- descender < *descent)
+ {
+ *leading = *descent + descender;
+ *descent = - descender;
+ }
+
+ return true;
+}
+
+static CFIndex
+mac_font_shape_1 (NSFont *font, NSString *string,
+ struct mac_glyph_layout *glyph_layouts, CFIndex glyph_len,
+ BOOL screen_font_p)
+{
+ NSUInteger i;
+ CFIndex result = 0;
+ NSTextStorage *textStorage;
+ NSLayoutManager *layoutManager;
+ NSTextContainer *textContainer;
+ NSUInteger stringLength;
+ NSPoint spaceLocation;
+ NSUInteger used, numberOfGlyphs;
+
+ textStorage = [[NSTextStorage alloc] initWithString:string];
+ layoutManager = [[NSLayoutManager alloc] init];
+ textContainer = [[NSTextContainer alloc] init];
+
+ /* Append a trailing space to measure baseline position. */
+ [textStorage appendAttributedString:([[[NSAttributedString alloc]
+ initWithString:@" "] autorelease])];
+ [textStorage setFont:font];
+ [textContainer setLineFragmentPadding:0];
+ [layoutManager setUsesScreenFonts:screen_font_p];
+
+ [layoutManager addTextContainer:textContainer];
+ [textContainer release];
+ [textStorage addLayoutManager:layoutManager];
+ [layoutManager release];
+
+ if (!(textStorage && layoutManager && textContainer))
+ {
+ [textStorage release];
+
+ return 0;
+ }
+
+ stringLength = [string length];
+
+ /* Force layout. */
+ (void) [layoutManager glyphRangeForTextContainer:textContainer];
+
+ spaceLocation = [layoutManager locationForGlyphAtIndex:stringLength];
+
+ /* Remove the appended trailing space because otherwise it may
+ generate a wrong result for a right-to-left text. */
+ [textStorage beginEditing];
+ [textStorage deleteCharactersInRange:(NSMakeRange (stringLength, 1))];
+ [textStorage endEditing];
+ (void) [layoutManager glyphRangeForTextContainer:textContainer];
+
+ i = 0;
+ while (i < stringLength)
+ {
+ NSRange range;
+ NSFont *fontInTextStorage =
+ [textStorage attribute:NSFontAttributeName atIndex:i
+ longestEffectiveRange:&range
+ inRange:(NSMakeRange (0, stringLength))];
+
+ if (!(fontInTextStorage == font
+ || [[fontInTextStorage fontName] isEqualToString:[font fontName]]))
+ break;
+ i = NSMaxRange (range);
+ }
+ if (i < stringLength)
+ /* Make the test `used <= glyph_len' below fail if textStorage
+ contained some fonts other than the specified one. */
+ used = glyph_len + 1;
+ else
+ {
+ NSRange range = NSMakeRange (0, stringLength);
+
+ range = [layoutManager glyphRangeForCharacterRange:range
+ actualCharacterRange:NULL];
+ numberOfGlyphs = NSMaxRange (range);
+ used = numberOfGlyphs;
+ for (i = 0; i < numberOfGlyphs; i++)
+ if ([layoutManager notShownAttributeForGlyphAtIndex:i])
+ used--;
+ }
+
+ if (0 < used && used <= glyph_len)
+ {
+ NSUInteger glyphIndex, prevGlyphIndex;
+ unsigned char bidiLevel;
+ NSUInteger *permutation;
+ NSRange compRange, range;
+ CGFloat totalAdvance;
+
+ glyphIndex = 0;
+ while ([layoutManager notShownAttributeForGlyphAtIndex:glyphIndex])
+ glyphIndex++;
+
+ /* For now we assume the direction is not changed within the
+ string. */
+ [layoutManager getGlyphsInRange:(NSMakeRange (glyphIndex, 1))
+ glyphs:NULL characterIndexes:NULL
+ glyphInscriptions:NULL elasticBits:NULL
+ bidiLevels:&bidiLevel];
+ if (bidiLevel & 1)
+ permutation = xmalloc (sizeof (NSUInteger) * used);
+ else
+ permutation = NULL;
+
+#define RIGHT_TO_LEFT_P permutation
+
+ /* Fill the `comp_range' member of struct mac_glyph_layout, and
+ setup a permutation for right-to-left text. */
+ compRange = NSMakeRange (0, 0);
+ for (range = NSMakeRange (0, 0); NSMaxRange (range) < used;
+ range.length++)
+ {
+ struct mac_glyph_layout *gl = glyph_layouts + NSMaxRange (range);
+ NSUInteger characterIndex =
+ [layoutManager characterIndexForGlyphAtIndex:glyphIndex];
+
+ gl->string_index = characterIndex;
+
+ if (characterIndex >= NSMaxRange (compRange))
+ {
+ compRange.location = NSMaxRange (compRange);
+ do
+ {
+ NSRange characterRange =
+ [string
+ rangeOfComposedCharacterSequenceAtIndex:characterIndex];
+
+ compRange.length =
+ NSMaxRange (characterRange) - compRange.location;
+ [layoutManager glyphRangeForCharacterRange:compRange
+ actualCharacterRange:&characterRange];
+ characterIndex = NSMaxRange (characterRange) - 1;
+ }
+ while (characterIndex >= NSMaxRange (compRange));
+
+ if (RIGHT_TO_LEFT_P)
+ for (i = 0; i < range.length; i++)
+ permutation[range.location + i] = NSMaxRange (range) - i - 1;
+
+ range = NSMakeRange (NSMaxRange (range), 0);
+ }
+
+ gl->comp_range.location = compRange.location;
+ gl->comp_range.length = compRange.length;
+
+ while (++glyphIndex < numberOfGlyphs)
+ if (![layoutManager notShownAttributeForGlyphAtIndex:glyphIndex])
+ break;
+ }
+ if (RIGHT_TO_LEFT_P)
+ for (i = 0; i < range.length; i++)
+ permutation[range.location + i] = NSMaxRange (range) - i - 1;
+
+ /* Then fill the remaining members. */
+ glyphIndex = prevGlyphIndex = 0;
+ while ([layoutManager notShownAttributeForGlyphAtIndex:glyphIndex])
+ glyphIndex++;
+
+ if (!RIGHT_TO_LEFT_P)
+ totalAdvance = 0;
+ else
+ {
+ NSUInteger nrects;
+ NSRect *glyphRects =
+ [layoutManager
+ rectArrayForGlyphRange:(NSMakeRange (0, numberOfGlyphs))
+ withinSelectedGlyphRange:(NSMakeRange (NSNotFound, 0))
+ inTextContainer:textContainer rectCount:&nrects];
+
+ totalAdvance = NSMaxX (glyphRects[0]);
+ }
+
+ for (i = 0; i < used; i++)
+ {
+ struct mac_glyph_layout *gl;
+ NSPoint location;
+ NSUInteger nextGlyphIndex;
+ NSRange glyphRange;
+ NSRect *glyphRects;
+ NSUInteger nrects;
+
+ if (!RIGHT_TO_LEFT_P)
+ gl = glyph_layouts + i;
+ else
+ {
+ NSUInteger dest = permutation[i];
+
+ gl = glyph_layouts + dest;
+ if (i < dest)
+ {
+ CFIndex tmp = gl->string_index;
+
+ gl->string_index = glyph_layouts[i].string_index;
+ glyph_layouts[i].string_index = tmp;
+ }
+ }
+ gl->glyph_id = [layoutManager glyphAtIndex:glyphIndex];
+
+ location = [layoutManager locationForGlyphAtIndex:glyphIndex];
+ gl->baseline_delta = spaceLocation.y - location.y;
+
+ for (nextGlyphIndex = glyphIndex + 1; nextGlyphIndex < numberOfGlyphs;
+ nextGlyphIndex++)
+ if (![layoutManager
+ notShownAttributeForGlyphAtIndex:nextGlyphIndex])
+ break;
+
+ if (!RIGHT_TO_LEFT_P)
+ {
+ CGFloat maxX;
+
+ if (prevGlyphIndex == 0)
+ glyphRange = NSMakeRange (0, nextGlyphIndex);
+ else
+ glyphRange = NSMakeRange (glyphIndex,
+ nextGlyphIndex - glyphIndex);
+ glyphRects =
+ [layoutManager
+ rectArrayForGlyphRange:glyphRange
+ withinSelectedGlyphRange:(NSMakeRange (NSNotFound, 0))
+ inTextContainer:textContainer rectCount:&nrects];
+ maxX = max (NSMaxX (glyphRects[0]), totalAdvance);
+ gl->advance_delta = location.x - totalAdvance;
+ gl->advance = maxX - totalAdvance;
+ totalAdvance = maxX;
+ }
+ else
+ {
+ CGFloat minX;
+
+ if (nextGlyphIndex == numberOfGlyphs)
+ glyphRange = NSMakeRange (prevGlyphIndex,
+ numberOfGlyphs - prevGlyphIndex);
+ else
+ glyphRange = NSMakeRange (prevGlyphIndex,
+ glyphIndex + 1 - prevGlyphIndex);
+ glyphRects =
+ [layoutManager
+ rectArrayForGlyphRange:glyphRange
+ withinSelectedGlyphRange:(NSMakeRange (NSNotFound, 0))
+ inTextContainer:textContainer rectCount:&nrects];
+ minX = min (NSMinX (glyphRects[0]), totalAdvance);
+ gl->advance = totalAdvance - minX;
+ totalAdvance = minX;
+ gl->advance_delta = location.x - totalAdvance;
+ }
+
+ prevGlyphIndex = glyphIndex + 1;
+ glyphIndex = nextGlyphIndex;
+ }
+
+ if (RIGHT_TO_LEFT_P)
+ xfree (permutation);
+
+#undef RIGHT_TO_LEFT_P
+
+ result = used;
+ }
+ [textStorage release];
+
+ return result;
+}
+
+static CFIndex
+mac_screen_font_shape (ScreenFontRef font, CFStringRef string,
+ struct mac_glyph_layout *glyph_layouts,
+ CFIndex glyph_len)
+{
+ return mac_font_shape_1 ([(NSFont *)font printerFont],
+ (NSString *) string,
+ glyph_layouts, glyph_len, YES);
+}
+
+static CGColorRef
+get_cgcolor(unsigned long idx, struct frame *f)
+{
+ NSColor *nsColor = ns_lookup_indexed_color (idx, f);
+ [nsColor set];
+ CGColorSpaceRef colorSpace = [[nsColor colorSpace] CGColorSpace];
+ NSInteger noc = [nsColor numberOfComponents];
+ CGFloat *components = xmalloc (sizeof(CGFloat)*(1+noc));
+ CGColorRef cgColor;
+
+ [nsColor getComponents: components];
+ cgColor = CGColorCreate (colorSpace, components);
+ xfree (components);
+ return cgColor;
+}
+
+#define CG_SET_FILL_COLOR_WITH_GC_FOREGROUND(context, s) \
+ CGContextSetFillColorWithColor (context, \
+ get_cgcolor (NS_FACE_FOREGROUND (s->face), \
+ s->f))
+
+#define CG_SET_FILL_COLOR_WITH_GC_BACKGROUND(context, s) \
+ CGContextSetFillColorWithColor (context, \
+ get_cgcolor (NS_FACE_BACKGROUND (s->face), \
+ s->f))
+
+#define CG_SET_STROKE_COLOR_WITH_GC_FOREGROUND(context, s) \
+ CGContextSetStrokeColorWithColor (context, \
+ get_cgcolor (NS_FACE_FOREGROUND (s->face),\
+ s->f))
+
+
+/* Mac font driver. */
+
+static struct
+{
+ /* registry name */
+ const char *name;
+ /* characters to distinguish the charset from the others */
+ int uniquifier[6];
+ /* additional constraint by language */
+ CFStringRef lang;
+ /* set on demand */
+ CFCharacterSetRef cf_charset;
+ CFStringRef cf_charset_string;
+} cf_charset_table[] =
+ { { "iso8859-1", { 0x00A0, 0x00A1, 0x00B4, 0x00BC, 0x00D0 } },
+ { "iso8859-2", { 0x00A0, 0x010E }},
+ { "iso8859-3", { 0x00A0, 0x0108 }},
+ { "iso8859-4", { 0x00A0, 0x00AF, 0x0128, 0x0156, 0x02C7 }},
+ { "iso8859-5", { 0x00A0, 0x0401 }},
+ { "iso8859-6", { 0x00A0, 0x060C }},
+ { "iso8859-7", { 0x00A0, 0x0384 }},
+ { "iso8859-8", { 0x00A0, 0x05D0 }},
+ { "iso8859-9", { 0x00A0, 0x00A1, 0x00BC, 0x011E }},
+ { "iso8859-10", { 0x00A0, 0x00D0, 0x0128, 0x2015 }},
+ { "iso8859-11", { 0x00A0, 0x0E01 }},
+ { "iso8859-13", { 0x00A0, 0x201C }},
+ { "iso8859-14", { 0x00A0, 0x0174 }},
+ { "iso8859-15", { 0x00A0, 0x00A1, 0x00D0, 0x0152 }},
+ { "iso8859-16", { 0x00A0, 0x0218}},
+ { "gb2312.1980-0", { 0x4E13 }, CFSTR ("zh-Hans")},
+ { "big5-0", { /* 0xF6B1 in ftfont.c */ 0xF7E5 }, CFSTR ("zh-Hant") },
+ { "jisx0208.1983-0", { 0x4E55 }, CFSTR ("ja")},
+ { "ksc5601.1987-0", { 0xAC00 }, CFSTR ("ko")},
+ { "cns11643.1992-1", { 0xFE32 }, CFSTR ("zh-Hant")},
+ { "cns11643.1992-2", { 0x4E33, 0x7934 }},
+ { "cns11643.1992-3", { 0x201A9 }},
+ { "cns11643.1992-4", { 0x20057 }},
+ { "cns11643.1992-5", { 0x20000 }},
+ { "cns11643.1992-6", { 0x20003 }},
+ { "cns11643.1992-7", { 0x20055 }},
+ { "gbk-0", { 0x4E06 }, CFSTR ("zh-Hans")},
+ { "jisx0212.1990-0", { 0x4E44 }},
+ { "jisx0213.2000-1", { 0xFA10 }, CFSTR ("ja")},
+ { "jisx0213.2000-2", { 0xFA49 }},
+ { "jisx0213.2004-1", { 0x20B9F }},
+ { "viscii1.1-1", { 0x1EA0, 0x1EAE, 0x1ED2 }, CFSTR ("vi")},
+ { "tis620.2529-1", { 0x0E01 }, CFSTR ("th")},
+ { "windows-1251", { 0x0401, 0x0490 }, CFSTR ("ru")},
+ { "koi8-r", { 0x0401, 0x2219 }, CFSTR ("ru")},
+ { "mulelao-1", { 0x0E81 }, CFSTR ("lo")},
+ { "unicode-sip", { 0x20000 }},
+ { NULL }
+ };
+
+static CGFloat macfont_antialias_threshold;
+
+void
+macfont_update_antialias_threshold (void)
+{
+ int threshold;
+ Boolean valid_p;
+
+ threshold =
+ CFPreferencesGetAppIntegerValue (CFSTR ("AppleAntiAliasingThreshold"),
+ kCFPreferencesCurrentApplication,
+ &valid_p);
+ if (valid_p)
+ macfont_antialias_threshold = threshold;
+}
+
+static inline Lisp_Object
+macfont_intern_prop_cfstring (CFStringRef cfstring)
+{
+ Lisp_Object string = cfstring_to_lisp_nodecode (cfstring);
+
+ return font_intern_prop (SSDATA (string), SBYTES (string), 1);
+}
+
+static inline CFIndex
+macfont_store_utf32char_to_unichars (UTF32Char c, UniChar *unichars)
+{
+ if (c < 0x10000)
+ {
+ unichars[0] = c;
+
+ return 1;
+ }
+ else
+ {
+ c -= 0x10000;
+ unichars[0] = (c >> 10) + 0xD800;
+ unichars[1] = (c & 0x3FF) + 0xDC00;
+
+ return 2;
+ }
+}
+
+static Boolean
+cfnumber_get_font_symbolic_traits_value (CFNumberRef number,
+ FontSymbolicTraits *sym_traits)
+{
+ SInt64 sint64_value;
+
+ /* Getting symbolic traits with kCFNumberSInt32Type is lossy on Mac
+ OS 10.6 when the value is greater than or equal to 1 << 31. */
+ if (CFNumberGetValue (number, kCFNumberSInt64Type, &sint64_value))
+ {
+ *sym_traits = (FontSymbolicTraits) sint64_value;
+
+ return true;
+ }
+
+ return false;
+}
+
+static void
+macfont_store_descriptor_attributes (FontDescriptorRef desc,
+ Lisp_Object spec_or_entity)
+{
+ CFStringRef str;
+ CFDictionaryRef dict;
+ CFNumberRef num;
+ CGFloat floatval;
+
+ str = mac_font_descriptor_copy_attribute (desc,
+ MAC_FONT_FAMILY_NAME_ATTRIBUTE);
+ if (str)
+ {
+ ASET (spec_or_entity, FONT_FAMILY_INDEX,
+ macfont_intern_prop_cfstring (str));
+ CFRelease (str);
+ }
+ dict = mac_font_descriptor_copy_attribute (desc, MAC_FONT_TRAITS_ATTRIBUTE);
+ if (dict)
+ {
+ struct {
+ enum font_property_index index;
+ CFStringRef trait;
+ CGPoint points[6];
+ } numeric_traits[] =
+ {{FONT_WEIGHT_INDEX, MAC_FONT_WEIGHT_TRAIT,
+ {{-0.4, 50}, /* light */
+ {-0.24, 87.5}, /* (semi-light + normal) / 2 */
+ {0, 100}, /* normal */
+ {0.24, 140}, /* (semi-bold + normal) / 2 */
+ {0.4, 200}, /* bold */
+ {CGFLOAT_MAX, CGFLOAT_MAX}}},
+ {FONT_SLANT_INDEX, MAC_FONT_SLANT_TRAIT,
+ {{0, 100}, {0.1, 200}, {CGFLOAT_MAX, CGFLOAT_MAX}}},
+ {FONT_WIDTH_INDEX, MAC_FONT_WIDTH_TRAIT,
+ {{0, 100}, {1, 200}, {CGFLOAT_MAX, CGFLOAT_MAX}}}};
+ int i;
+
+ for (i = 0; i < sizeof (numeric_traits) / sizeof (numeric_traits[0]); i++)
+ {
+ num = CFDictionaryGetValue (dict, numeric_traits[i].trait);
+ if (num && CFNumberGetValue (num, kCFNumberCGFloatType, &floatval))
+ {
+ CGPoint *point = numeric_traits[i].points;
+
+ while (point->x < floatval)
+ point++;
+ if (point == numeric_traits[i].points)
+ point++;
+ else if (point->x == CGFLOAT_MAX)
+ point--;
+ floatval = (point - 1)->y + ((floatval - (point - 1)->x)
+ * ((point->y - (point - 1)->y)
+ / (point->x - (point - 1)->x)));
+ FONT_SET_STYLE (spec_or_entity, numeric_traits[i].index,
+ make_number (lround (floatval)));
+ }
+ }
+
+ num = CFDictionaryGetValue (dict, MAC_FONT_SYMBOLIC_TRAIT);
+ if (num)
+ {
+ FontSymbolicTraits sym_traits;
+ int spacing;
+
+ cfnumber_get_font_symbolic_traits_value (num, &sym_traits);
+ spacing = (sym_traits & MAC_FONT_TRAIT_MONO_SPACE
+ ? FONT_SPACING_MONO : FONT_SPACING_PROPORTIONAL);
+ ASET (spec_or_entity, FONT_SPACING_INDEX, make_number (spacing));
+ }
+
+ CFRelease (dict);
+ }
+ num = mac_font_descriptor_copy_attribute (desc, MAC_FONT_SIZE_ATTRIBUTE);
+ if (num && CFNumberGetValue (num, kCFNumberCGFloatType, &floatval))
+ ASET (spec_or_entity, FONT_SIZE_INDEX, make_number (floatval));
+ else
+ ASET (spec_or_entity, FONT_SIZE_INDEX, make_number (0));
+ if (num)
+ CFRelease (num);
+}
+
+static Lisp_Object
+macfont_descriptor_entity (FontDescriptorRef desc, Lisp_Object extra,
+ FontSymbolicTraits synth_sym_traits)
+{
+ Lisp_Object entity;
+ CFDictionaryRef dict;
+ FontSymbolicTraits sym_traits = 0;
+ CFStringRef name;
+
+ entity = font_make_entity ();
+
+ ASET (entity, FONT_TYPE_INDEX, macfont_driver.type);
+ ASET (entity, FONT_REGISTRY_INDEX, Qiso10646_1);
+
+ macfont_store_descriptor_attributes (desc, entity);
+
+ dict = mac_font_descriptor_copy_attribute (desc, MAC_FONT_TRAITS_ATTRIBUTE);
+ if (dict)
+ {
+ CFNumberRef num = CFDictionaryGetValue (dict, MAC_FONT_SYMBOLIC_TRAIT);
+
+ if (num)
+ cfnumber_get_font_symbolic_traits_value (num, &sym_traits);
+ CFRelease (dict);
+ }
+ if (EQ (AREF (entity, FONT_SIZE_INDEX), make_number (0)))
+ ASET (entity, FONT_AVGWIDTH_INDEX, make_number (0));
+ ASET (entity, FONT_EXTRA_INDEX, Fcopy_sequence (extra));
+ name = mac_font_descriptor_copy_attribute (desc, MAC_FONT_NAME_ATTRIBUTE);
+ font_put_extra (entity, QCfont_entity,
+ make_save_ptr_int ((void *) name, sym_traits));
+ if (synth_sym_traits & MAC_FONT_TRAIT_ITALIC)
+ FONT_SET_STYLE (entity, FONT_SLANT_INDEX,
+ make_number (FONT_SLANT_SYNTHETIC_ITALIC));
+ if (synth_sym_traits & MAC_FONT_TRAIT_BOLD)
+ FONT_SET_STYLE (entity, FONT_WEIGHT_INDEX,
+ make_number (FONT_WEIGHT_SYNTHETIC_BOLD));
+ if (synth_sym_traits & MAC_FONT_TRAIT_MONO_SPACE)
+ ASET (entity, FONT_SPACING_INDEX,
+ make_number (FONT_SPACING_SYNTHETIC_MONO));
+
+ return entity;
+}
+
+static CFStringRef
+macfont_create_family_with_symbol (Lisp_Object symbol)
+{
+ static CFArrayRef families = NULL;
+ CFStringRef result = NULL, family_name;
+ int using_cache_p = 1;
+ CFComparatorFunction family_name_comparator;
+
+ family_name = cfstring_create_with_string_noencode (SYMBOL_NAME (symbol));
+ if (family_name == NULL)
+ return NULL;
+
+#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1060
+#if MAC_OS_X_VERSION_MIN_REQUIRED < 1060
+ if (CTFontManagerCompareFontFamilyNames != NULL)
+#endif
+ {
+ family_name_comparator = CTFontManagerCompareFontFamilyNames;
+ }
+#if MAC_OS_X_VERSION_MIN_REQUIRED < 1060
+ else /* CTFontManagerCompareFontFamilyNames == NULL */
+#endif
+#endif /* MAC_OS_X_VERSION_MAX_ALLOWED >= 1060 */
+#if MAC_OS_X_VERSION_MIN_REQUIRED < 1060
+ {
+ family_name_comparator = mac_font_family_compare;
+ }
+#endif
+
+ if ((*family_name_comparator) (family_name, CFSTR ("LastResort"), NULL)
+ == kCFCompareEqualTo)
+ result = CFSTR ("LastResort");
+ else
+ while (1)
+ {
+ CFIndex i, count;
+
+ if (families == NULL)
+ {
+ families = mac_font_create_available_families ();
+ using_cache_p = 0;
+ if (families == NULL)
+ break;
+ }
+
+ count = CFArrayGetCount (families);
+ i = CFArrayBSearchValues (families, CFRangeMake (0, count),
+ (const void *) family_name,
+ family_name_comparator, NULL);
+ if (i < count)
+ {
+ CFStringRef name = CFArrayGetValueAtIndex (families, i);
+
+ if ((*family_name_comparator) (name, family_name, NULL)
+ == kCFCompareEqualTo)
+ result = CFRetain (name);
+ }
+
+ if (result || !using_cache_p)
+ break;
+ else
+ {
+ CFRelease (families);
+ families = NULL;
+ }
+ }
+
+ CFRelease (family_name);
+
+ return result;
+}
+
+#define WIDTH_FRAC_BITS (4)
+#define WIDTH_FRAC_SCALE (2 * ((1 << (WIDTH_FRAC_BITS - 1)) - 1))
+
+struct macfont_metrics
+{
+ unsigned char lbearing_low, rbearing_low;
+ signed lbearing_high : 4, rbearing_high : 4;
+ unsigned char ascent_low, descent_low;
+ signed ascent_high : 4, descent_high : 4;
+
+ /* These two members are used for fixed-point representation of
+ glyph width. The `width_int' member is an integer that is
+ closest to the width. The `width_frac' member is the fractional
+ adjustment representing a value in [-.5, .5], multiplied by
+ WIDTH_FRAC_SCALE. For synthetic monospace fonts, they represent
+ the advance delta for centering instead of the glyph width. */
+ signed width_frac : WIDTH_FRAC_BITS, width_int : 16 - WIDTH_FRAC_BITS;
+};
+
+#define METRICS_VALUE(metrics, member) \
+ (((metrics)->member##_high << 8) | (metrics)->member##_low)
+#define METRICS_SET_VALUE(metrics, member, value) \
+ do {short tmp = (value); (metrics)->member##_low = tmp & 0xff; \
+ (metrics)->member##_high = tmp >> 8;} while (0)
+
+enum metrics_status
+ {
+ METRICS_INVALID = -1, /* metrics entry is invalid */
+ METRICS_WIDTH_VALID = -2 /* width is valid but others are invalid */
+ };
+
+#define METRICS_STATUS(metrics) \
+ (METRICS_VALUE (metrics, ascent) + METRICS_VALUE (metrics, descent))
+#define METRICS_SET_STATUS(metrics, status) \
+ do {METRICS_SET_VALUE (metrics, ascent, 0); \
+ METRICS_SET_VALUE (metrics, descent, status);} while (0)
+
+#define METRICS_NCOLS_PER_ROW (128)
+#define LCD_FONT_SMOOTHING_LEFT_MARGIN (0.396f)
+#define LCD_FONT_SMOOTHING_RIGHT_MARGIN (0.396f)
+
+static int
+macfont_glyph_extents (struct font *font, CGGlyph glyph,
+ struct font_metrics *metrics, CGFloat *advance_delta,
+ int force_integral_p)
+{
+ struct macfont_info *macfont_info = (struct macfont_info *) font;
+ FontRef macfont = macfont_info->macfont;
+ int row, col;
+ struct macfont_metrics *cache;
+ int width;
+
+ row = glyph / METRICS_NCOLS_PER_ROW;
+ col = glyph % METRICS_NCOLS_PER_ROW;
+ if (row >= macfont_info->metrics_nrows)
+ {
+ macfont_info->metrics =
+ xrealloc (macfont_info->metrics,
+ sizeof (struct macfont_metrics *) * (row + 1));
+ memset (macfont_info->metrics + macfont_info->metrics_nrows, 0,
+ (sizeof (struct macfont_metrics *)
+ * (row + 1 - macfont_info->metrics_nrows)));
+ macfont_info->metrics_nrows = row + 1;
+ }
+ if (macfont_info->metrics[row] == NULL)
+ {
+ struct macfont_metrics *new;
+ int i;
+
+ new = xmalloc (sizeof (struct macfont_metrics) * METRICS_NCOLS_PER_ROW);
+ for (i = 0; i < METRICS_NCOLS_PER_ROW; i++)
+ METRICS_SET_STATUS (new + i, METRICS_INVALID);
+ macfont_info->metrics[row] = new;
+ }
+ cache = macfont_info->metrics[row] + col;
+
+ if (METRICS_STATUS (cache) == METRICS_INVALID)
+ {
+ CGFloat fwidth;
+
+ if (macfont_info->screen_font)
+ fwidth = mac_screen_font_get_advance_width_for_glyph (macfont_info->screen_font, glyph);
+ else
+ fwidth = mac_font_get_advance_width_for_glyph (macfont, glyph);
+
+ /* For synthetic mono fonts, cache->width_{int,frac} holds the
+ advance delta value. */
+ if (macfont_info->spacing == MACFONT_SPACING_SYNTHETIC_MONO)
+ fwidth = (font->pixel_size - fwidth) / 2;
+ cache->width_int = lround (fwidth);
+ cache->width_frac = lround ((fwidth - cache->width_int)
+ * WIDTH_FRAC_SCALE);
+ METRICS_SET_STATUS (cache, METRICS_WIDTH_VALID);
+ }
+ if (macfont_info->spacing == MACFONT_SPACING_SYNTHETIC_MONO)
+ width = font->pixel_size;
+ else
+ width = cache->width_int;
+
+ if (metrics)
+ {
+ if (METRICS_STATUS (cache) == METRICS_WIDTH_VALID)
+ {
+ CGRect bounds = mac_font_get_bounding_rect_for_glyph (macfont, glyph);
+
+ if (macfont_info->synthetic_italic_p)
+ {
+ /* We assume the members a, b, c, and d in
+ synthetic_italic_atfm are non-negative. */
+ bounds.origin =
+ CGPointApplyAffineTransform (bounds.origin,
+ synthetic_italic_atfm);
+ bounds.size =
+ CGSizeApplyAffineTransform (bounds.size, synthetic_italic_atfm);
+ }
+ if (macfont_info->synthetic_bold_p)
+ {
+ CGFloat d =
+ - synthetic_bold_factor * mac_font_get_size (macfont) / 2;
+
+ bounds = CGRectInset (bounds, d, d);
+ }
+ switch (macfont_info->spacing)
+ {
+ case MACFONT_SPACING_PROPORTIONAL:
+ bounds.origin.x += - (cache->width_frac
+ / (CGFloat) (WIDTH_FRAC_SCALE * 2));
+ break;
+ case MACFONT_SPACING_MONO:
+ break;
+ case MACFONT_SPACING_SYNTHETIC_MONO:
+ bounds.origin.x += (cache->width_int
+ + (cache->width_frac
+ / (CGFloat) WIDTH_FRAC_SCALE));
+ break;
+ }
+ if (bounds.size.width > 0)
+ {
+ bounds.origin.x -= LCD_FONT_SMOOTHING_LEFT_MARGIN;
+ bounds.size.width += (LCD_FONT_SMOOTHING_LEFT_MARGIN
+ + LCD_FONT_SMOOTHING_RIGHT_MARGIN);
+ }
+ bounds = CGRectIntegral (bounds);
+ METRICS_SET_VALUE (cache, lbearing, CGRectGetMinX (bounds));
+ METRICS_SET_VALUE (cache, rbearing, CGRectGetMaxX (bounds));
+ METRICS_SET_VALUE (cache, ascent, CGRectGetMaxY (bounds));
+ METRICS_SET_VALUE (cache, descent, -CGRectGetMinY (bounds));
+ }
+ metrics->lbearing = METRICS_VALUE (cache, lbearing);
+ metrics->rbearing = METRICS_VALUE (cache, rbearing);
+ metrics->width = width;
+ metrics->ascent = METRICS_VALUE (cache, ascent);
+ metrics->descent = METRICS_VALUE (cache, descent);
+ }
+
+ if (advance_delta)
+ {
+ switch (macfont_info->spacing)
+ {
+ case MACFONT_SPACING_PROPORTIONAL:
+ *advance_delta = (force_integral_p ? 0
+ : - (cache->width_frac
+ / (CGFloat) (WIDTH_FRAC_SCALE * 2)));
+ break;
+ case MACFONT_SPACING_MONO:
+ *advance_delta = 0;
+ break;
+ case MACFONT_SPACING_SYNTHETIC_MONO:
+ *advance_delta = (force_integral_p ? cache->width_int
+ : (cache->width_int
+ + (cache->width_frac
+ / (CGFloat) WIDTH_FRAC_SCALE)));
+ break;
+ }
+ }
+
+ return width;
+}
+
+static CFMutableDictionaryRef macfont_cache_dictionary;
+
+/* Threshold used in row_nkeys_or_perm. This must be less than or
+ equal to the number of rows that are invalid as BMP (i.e., from
+ U+D800 to U+DFFF). */
+#define ROW_PERM_OFFSET (8)
+
+/* The number of glyphs that can be stored in a value for a single
+ entry of CFDictionary. */
+#define NGLYPHS_IN_VALUE (sizeof (void *) / sizeof (CGGlyph))
+
+struct macfont_cache
+{
+ int reference_count;
+ CFCharacterSetRef cf_charset;
+ struct {
+ /* The cached glyph for a BMP character c is stored in
+ matrix[row_nkeys_or_perm[c / 256] - ROW_PERM_OFFSET][c % 256]
+ if row_nkeys_or_perm[c / 256] >= ROW_PERM_OFFSET. */
+ unsigned char row_nkeys_or_perm[256];
+ CGGlyph **matrix;
+
+ /* Number of rows for which the BMP cache is allocated so far.
+ I.e., matrix[0] ... matrix[nrows - 1] are non-NULL. */
+ int nrows;
+
+ /* The cached glyph for a character c is stored as the (c %
+ NGLYPHS_IN_VALUE)-th CGGlyph block of a value for the key (c /
+ NGLYPHS_IN_VALUE). However, the glyph for a BMP characrer c is
+ not stored here if row_nkeys_or_perm[c / 256] >=
+ ROW_PERM_OFFSET. */
+ CFMutableDictionaryRef dictionary;
+ } glyph;
+
+ struct {
+ /* UVS (Unicode Variation Sequence) subtable data, which is of
+ type CFDataRef if available. NULL means it is not initialized
+ yet. kCFNull means the subtable is not found and there is no
+ suitable fallback table for this font. */
+ CFTypeRef table;
+
+ /* Character collection specifying the destination of the mapping
+ provided by `table' above. If `table' is obtained from the UVS
+ subtable in the font cmap table, then the value of this member
+ should be MAC_CHARACTER_COLLECTION_IDENTITY_MAPPING. */
+ CharacterCollection collection;
+ } uvs;
+};
+
+static struct macfont_cache *macfont_lookup_cache (CFStringRef);
+static struct macfont_cache *macfont_retain_cache (struct macfont_cache *);
+static void macfont_release_cache (struct macfont_cache *);
+static CFCharacterSetRef macfont_get_cf_charset (struct font *);
+static CFCharacterSetRef macfont_get_cf_charset_for_name (CFStringRef);
+static CGGlyph macfont_get_glyph_for_character (struct font *, UTF32Char);
+static CGGlyph macfont_get_glyph_for_cid (struct font *font,
+ CharacterCollection, CGFontIndex);
+static CFDataRef macfont_get_uvs_table (struct font *, CharacterCollection *);
+
+static struct macfont_cache *
+macfont_lookup_cache (CFStringRef key)
+{
+ struct macfont_cache *cache;
+
+ if (macfont_cache_dictionary == NULL)
+ {
+ macfont_cache_dictionary =
+ CFDictionaryCreateMutable (NULL, 0,
+ &kCFTypeDictionaryKeyCallBacks, NULL);
+ cache = NULL;
+ }
+ else
+ cache = ((struct macfont_cache *)
+ CFDictionaryGetValue (macfont_cache_dictionary, key));
+
+ if (cache == NULL)
+ {
+ FontRef macfont = mac_font_create_with_name (key, 0);
+
+ if (macfont)
+ {
+ cache = xzalloc (sizeof (struct macfont_cache));
+ /* Treat the LastResort font as if it contained glyphs for
+ all characters. This may look too rough, but neither
+ CTFontCopyCharacterSet nor -[NSFont coveredCharacterSet]
+ for this font is correct for non-BMP characters on Mac OS
+ X 10.5, anyway. */
+ if (CFStringCompare (key, CFSTR ("LastResort"), 0)
+ == kCFCompareEqualTo)
+ {
+ CFRange range = CFRangeMake (0, MAX_UNICODE_CHAR + 1);
+
+ cache->cf_charset =
+ CFCharacterSetCreateWithCharactersInRange (NULL, range);
+ }
+ if (cache->cf_charset == NULL)
+ cache->cf_charset = mac_font_copy_character_set (macfont);
+ CFDictionaryAddValue (macfont_cache_dictionary, key,
+ (const void *) cache);
+ CFRelease (macfont);
+ }
+ }
+
+ return cache;
+}
+
+static struct macfont_cache *
+macfont_retain_cache (struct macfont_cache *cache)
+{
+ cache->reference_count++;
+
+ return cache;
+}
+
+static void
+macfont_release_cache (struct macfont_cache *cache)
+{
+ if (--cache->reference_count == 0)
+ {
+ int i;
+
+ for (i = 0; i < cache->glyph.nrows; i++)
+ xfree (cache->glyph.matrix[i]);
+ xfree (cache->glyph.matrix);
+ if (cache->glyph.dictionary)
+ CFRelease (cache->glyph.dictionary);
+ memset (&cache->glyph, 0, sizeof (cache->glyph));
+ if (cache->uvs.table)
+ CFRelease (cache->uvs.table);
+ memset (&cache->uvs, 0, sizeof (cache->uvs));
+ }
+}
+
+static CFCharacterSetRef
+macfont_get_cf_charset (struct font *font)
+{
+ struct macfont_info *macfont_info = (struct macfont_info *) font;
+
+ return macfont_info->cache->cf_charset;
+}
+
+static CFCharacterSetRef
+macfont_get_cf_charset_for_name (CFStringRef name)
+{
+ struct macfont_cache *cache = macfont_lookup_cache (name);
+
+ return cache->cf_charset;
+}
+
+static CGGlyph
+macfont_get_glyph_for_character (struct font *font, UTF32Char c)
+{
+ struct macfont_info *macfont_info = (struct macfont_info *) font;
+ FontRef macfont = macfont_info->macfont;
+ struct macfont_cache *cache = macfont_info->cache;
+
+ if (c < 0xD800 || (c > 0xDFFF && c < 0x10000))
+ {
+ int row = c / 256;
+ int nkeys_or_perm = cache->glyph.row_nkeys_or_perm[row];
+
+ if (nkeys_or_perm < ROW_PERM_OFFSET)
+ {
+ UniChar unichars[256], ch;
+ CGGlyph *glyphs;
+ int i, len;
+ int nrows;
+#if MAC_OS_X_VERSION_MIN_REQUIRED >= 1060
+ dispatch_queue_t queue;
+ dispatch_group_t group = NULL;
+#else
+ int nkeys;
+#endif
+
+ if (row != 0)
+ {
+ CFMutableDictionaryRef dictionary;
+ uintptr_t key, value;
+ int nshifts;
+ CGGlyph glyph;
+
+ if (cache->glyph.dictionary == NULL)
+ cache->glyph.dictionary =
+ CFDictionaryCreateMutable (NULL, 0, NULL, NULL);
+ dictionary = cache->glyph.dictionary;
+ key = c / NGLYPHS_IN_VALUE;
+ nshifts = ((c % NGLYPHS_IN_VALUE) * sizeof (CGGlyph) * 8);
+ value = ((uintptr_t)
+ CFDictionaryGetValue (dictionary, (const void *) key));
+ glyph = (value >> nshifts);
+ if (glyph)
+ return glyph;
+
+ if (nkeys_or_perm + 1 != ROW_PERM_OFFSET)
+ {
+ ch = c;
+ if (!mac_font_get_glyphs_for_characters (macfont, &ch,
+ &glyph, 1)
+ || glyph == 0)
+ glyph = kCGFontIndexInvalid;
+
+ if (value == 0)
+ cache->glyph.row_nkeys_or_perm[row] = nkeys_or_perm + 1;
+ value |= ((uintptr_t) glyph << nshifts);
+ CFDictionarySetValue (dictionary, (const void *) key,
+ (const void *) value);
+
+ return glyph;
+ }
+
+#if MAC_OS_X_VERSION_MIN_REQUIRED >= 1060
+ queue =
+ dispatch_get_global_queue (DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
+ group = dispatch_group_create ();
+ dispatch_group_async (group, queue, ^{
+ int nkeys;
+ uintptr_t key;
+#endif
+ nkeys = nkeys_or_perm;
+ for (key = row * (256 / NGLYPHS_IN_VALUE); ; key++)
+ if (CFDictionaryContainsKey (dictionary,
+ (const void *) key))
+ {
+ CFDictionaryRemoveValue (dictionary,
+ (const void *) key);
+ if (--nkeys == 0)
+ break;
+ }
+#if MAC_OS_X_VERSION_MIN_REQUIRED >= 1060
+ });
+#endif
+ }
+
+ len = 0;
+ for (i = 0; i < 256; i++)
+ {
+ ch = row * 256 + i;
+ if (CFCharacterSetIsLongCharacterMember (cache->cf_charset, ch))
+ unichars[len++] = ch;
+ }
+
+ glyphs = xmalloc (sizeof (CGGlyph) * 256);
+ if (len > 0)
+ {
+ mac_font_get_glyphs_for_characters (macfont, unichars,
+ glyphs, len);
+ while (i > len)
+ {
+ int next = unichars[len - 1] % 256;
+
+ while (--i > next)
+ glyphs[i] = kCGFontIndexInvalid;
+
+ len--;
+ glyphs[i] = glyphs[len];
+ if (len == 0)
+ break;
+ }
+ }
+ if (i > len)
+ while (i-- > 0)
+ glyphs[i] = kCGFontIndexInvalid;
+
+ nrows = cache->glyph.nrows;
+ nkeys_or_perm = nrows + ROW_PERM_OFFSET;
+ cache->glyph.row_nkeys_or_perm[row] = nkeys_or_perm;
+ nrows++;
+ cache->glyph.matrix = xrealloc (cache->glyph.matrix,
+ sizeof (CGGlyph *) * nrows);
+ cache->glyph.matrix[nrows - 1] = glyphs;
+ cache->glyph.nrows = nrows;
+
+#if MAC_OS_X_VERSION_MIN_REQUIRED >= 1060
+ if (group)
+ {
+ dispatch_group_wait (group, DISPATCH_TIME_FOREVER);
+ dispatch_release (group);
+ }
+#endif
+ }
+
+ return cache->glyph.matrix[nkeys_or_perm - ROW_PERM_OFFSET][c % 256];
+ }
+ else
+ {
+ uintptr_t key, value;
+ int nshifts;
+ CGGlyph glyph;
+
+ if (cache->glyph.dictionary == NULL)
+ cache->glyph.dictionary =
+ CFDictionaryCreateMutable (NULL, 0, NULL, NULL);
+ key = c / NGLYPHS_IN_VALUE;
+ nshifts = ((c % NGLYPHS_IN_VALUE) * sizeof (CGGlyph) * 8);
+ value = (uintptr_t) CFDictionaryGetValue (cache->glyph.dictionary,
+ (const void *) key);
+ glyph = (value >> nshifts);
+ if (glyph == 0)
+ {
+ UniChar unichars[2];
+ CGGlyph glyphs[2];
+ CFIndex count = macfont_store_utf32char_to_unichars (c, unichars);
+
+ if (mac_font_get_glyphs_for_characters (macfont, unichars, glyphs,
+ count))
+ glyph = glyphs[0];
+ if (glyph == 0)
+ glyph = kCGFontIndexInvalid;
+
+ value |= ((uintptr_t) glyph << nshifts);
+ CFDictionarySetValue (cache->glyph.dictionary,
+ (const void *) key, (const void *) value);
+ }
+
+ return glyph;
+ }
+}
+
+static CGGlyph
+macfont_get_glyph_for_cid (struct font *font, CharacterCollection collection,
+ CGFontIndex cid)
+{
+ struct macfont_info *macfont_info = (struct macfont_info *) font;
+ FontRef macfont = macfont_info->macfont;
+
+ /* Cache it? */
+ return mac_font_get_glyph_for_cid (macfont, collection, cid);
+}
+
+static CFDataRef
+macfont_get_uvs_table (struct font *font, CharacterCollection *collection)
+{
+ struct macfont_info *macfont_info = (struct macfont_info *) font;
+ FontRef macfont = macfont_info->macfont;
+ struct macfont_cache *cache = macfont_info->cache;
+ CFDataRef result = NULL;
+
+ if (cache->uvs.table == NULL)
+ {
+ CFDataRef uvs_table = mac_font_copy_uvs_table (macfont);
+ CharacterCollection uvs_collection =
+ MAC_CHARACTER_COLLECTION_IDENTITY_MAPPING;
+
+ if (uvs_table == NULL
+ && mac_font_get_glyph_for_cid (macfont,
+ MAC_CHARACTER_COLLECTION_ADOBE_JAPAN1,
+ 6480) != kCGFontIndexInvalid)
+ {
+ /* If the glyph for U+4E55 is accessible via its CID 6480,
+ then we use the Adobe-Japan1 UVS table, which maps a
+ variation sequence to a CID, as a fallback. */
+ static CFDataRef mac_uvs_table_adobe_japan1 = NULL;
+
+ if (mac_uvs_table_adobe_japan1 == NULL)
+ mac_uvs_table_adobe_japan1 =
+ CFDataCreateWithBytesNoCopy (NULL,
+ mac_uvs_table_adobe_japan1_bytes,
+ sizeof (mac_uvs_table_adobe_japan1_bytes),
+ kCFAllocatorNull);
+ if (mac_uvs_table_adobe_japan1)
+ {
+ uvs_table = CFRetain (mac_uvs_table_adobe_japan1);
+ uvs_collection = MAC_CHARACTER_COLLECTION_ADOBE_JAPAN1;
+ }
+ }
+ if (uvs_table == NULL)
+ cache->uvs.table = kCFNull;
+ else
+ cache->uvs.table = uvs_table;
+ cache->uvs.collection = uvs_collection;
+ }
+
+ if (cache->uvs.table != kCFNull)
+ {
+ result = cache->uvs.table;
+ *collection = cache->uvs.collection;
+ }
+
+ return result;
+}
+
+static Lisp_Object macfont_get_cache (struct frame *);
+static Lisp_Object macfont_list (struct frame *, Lisp_Object);
+static Lisp_Object macfont_match (struct frame *, Lisp_Object);
+static Lisp_Object macfont_list_family (struct frame *);
+static void macfont_free_entity (Lisp_Object);
+static Lisp_Object macfont_open (struct frame *, Lisp_Object, int);
+static void macfont_close (struct frame *, struct font *);
+static int macfont_has_char (Lisp_Object, int);
+static unsigned macfont_encode_char (struct font *, int);
+static int macfont_text_extents (struct font *, unsigned int *, int,
+ struct font_metrics *);
+static int macfont_draw (struct glyph_string *, int, int, int, int, bool);
+static Lisp_Object macfont_shape (Lisp_Object);
+static int macfont_variation_glyphs (struct font *, int c,
+ unsigned variations[256]);
+static void macfont_filter_properties (Lisp_Object, Lisp_Object);
+
+static struct font_driver macfont_driver =
+ {
+ LISP_INITIALLY_ZERO, /* Qmac_ct */
+ 0, /* case insensitive */
+ macfont_get_cache,
+ macfont_list,
+ macfont_match,
+ macfont_list_family,
+ macfont_free_entity,
+ macfont_open,
+ macfont_close,
+ NULL, /* prepare_face */
+ NULL, /* done_face */
+ macfont_has_char,
+ macfont_encode_char,
+ macfont_text_extents,
+ macfont_draw,
+ NULL, /* get_bitmap */
+ NULL, /* free_bitmap */
+ NULL, /* get_outline */
+ NULL, /* free_outline */
+ NULL, /* anchor_point */
+ NULL, /* otf_capability */
+ NULL, /* otf_drive */
+ NULL, /* start_for_frame */
+ NULL, /* end_for_frame */
+ macfont_shape,
+ NULL, /* check */
+ macfont_variation_glyphs,
+ macfont_filter_properties,
+ };
+
+static Lisp_Object
+macfont_get_cache (struct frame * f)
+{
+ Display_Info *dpyinfo = FRAME_DISPLAY_INFO (f);
+
+ return (dpyinfo->name_list_element);
+}
+
+static int
+macfont_get_charset (Lisp_Object registry)
+{
+ char *str = SSDATA (SYMBOL_NAME (registry));
+ char *re = alloca (SBYTES (SYMBOL_NAME (registry)) * 2 + 1);
+ Lisp_Object regexp;
+ int i, j;
+
+ for (i = j = 0; i < SBYTES (SYMBOL_NAME (registry)); i++, j++)
+ {
+ if (str[i] == '.')
+ re[j++] = '\\';
+ else if (str[i] == '*')
+ re[j++] = '.';
+ re[j] = str[i];
+ if (re[j] == '?')
+ re[j] = '.';
+ }
+ re[j] = '\0';
+ regexp = make_unibyte_string (re, j);
+ for (i = 0; cf_charset_table[i].name; i++)
+ if (fast_c_string_match_ignore_case
+ (regexp, cf_charset_table[i].name,
+ strlen (cf_charset_table[i].name)) >= 0)
+ break;
+ if (! cf_charset_table[i].name)
+ return -1;
+ if (! cf_charset_table[i].cf_charset)
+ {
+ int *uniquifier = cf_charset_table[i].uniquifier;
+ UniChar *unichars = alloca (sizeof (cf_charset_table[i].uniquifier));
+ CFIndex count = 0;
+ CFStringRef string;
+ CFMutableCharacterSetRef charset = CFCharacterSetCreateMutable (NULL);
+
+ if (! charset)
+ return -1;
+ for (j = 0; uniquifier[j]; j++)
+ {
+ count += macfont_store_utf32char_to_unichars (uniquifier[j],
+ unichars + count);
+ CFCharacterSetAddCharactersInRange (charset,
+ CFRangeMake (uniquifier[j], 1));
+ }
+
+ string = CFStringCreateWithCharacters (NULL, unichars, count);
+ if (! string)
+ {
+ CFRelease (charset);
+ return -1;
+ }
+ cf_charset_table[i].cf_charset = CFCharacterSetCreateCopy (NULL,
+ charset);
+ CFRelease (charset);
+ /* CFCharacterSetCreateWithCharactersInString does not handle
+ surrogate pairs properly as of Mac OS X 10.5. */
+ cf_charset_table[i].cf_charset_string = string;
+ }
+ return i;
+}
+
+struct OpenTypeSpec
+{
+ Lisp_Object script;
+ unsigned int script_tag, langsys_tag;
+ int nfeatures[2];
+ unsigned int *features[2];
+};
+
+#define OTF_SYM_TAG(SYM, TAG) \
+ do { \
+ unsigned char *p = SDATA (SYMBOL_NAME (SYM)); \
+ TAG = (p[0] << 24) | (p[1] << 16) | (p[2] << 8) | p[3]; \
+ } while (0)
+
+#define OTF_TAG_STR(TAG, P) \
+ do { \
+ (P)[0] = (char) (TAG >> 24); \
+ (P)[1] = (char) ((TAG >> 16) & 0xFF); \
+ (P)[2] = (char) ((TAG >> 8) & 0xFF); \
+ (P)[3] = (char) (TAG & 0xFF); \
+ (P)[4] = '\0'; \
+ } while (0)
+
+static struct OpenTypeSpec *
+macfont_get_open_type_spec (Lisp_Object otf_spec)
+{
+ struct OpenTypeSpec *spec = xmalloc (sizeof *spec);
+ Lisp_Object val;
+ int i, j;
+ bool negative;
+
+ if (! spec)
+ return NULL;
+ spec->script = XCAR (otf_spec);
+ if (! NILP (spec->script))
+ {
+ OTF_SYM_TAG (spec->script, spec->script_tag);
+ val = assq_no_quit (spec->script, Votf_script_alist);
+ if (CONSP (val) && SYMBOLP (XCDR (val)))
+ spec->script = XCDR (val);
+ else
+ spec->script = Qnil;
+ }
+ else
+ spec->script_tag = 0x44464C54; /* "DFLT" */
+ otf_spec = XCDR (otf_spec);
+ spec->langsys_tag = 0;
+ if (! NILP (otf_spec))
+ {
+ val = XCAR (otf_spec);
+ if (! NILP (val))
+ OTF_SYM_TAG (val, spec->langsys_tag);
+ otf_spec = XCDR (otf_spec);
+ }
+ spec->nfeatures[0] = spec->nfeatures[1] = 0;
+ for (i = 0; i < 2 && ! NILP (otf_spec); i++, otf_spec = XCDR (otf_spec))
+ {
+ Lisp_Object len;
+
+ val = XCAR (otf_spec);
+ if (NILP (val))
+ continue;
+ len = Flength (val);
+ spec->features[i] =
+ (min (PTRDIFF_MAX, SIZE_MAX) / sizeof (int) < XINT (len)
+ ? 0
+ : malloc (XINT (len) * sizeof *spec->features[i]));
+ if (! spec->features[i])
+ {
+ if (i > 0 && spec->features[0])
+ free (spec->features[0]);
+ free (spec);
+ return NULL;
+ }
+ for (j = 0, negative = 0; CONSP (val); val = XCDR (val))
+ {
+ if (NILP (XCAR (val)))
+ negative = 1;
+ else
+ {
+ unsigned int tag;
+
+ OTF_SYM_TAG (XCAR (val), tag);
+ spec->features[i][j++] = negative ? tag & 0x80000000 : tag;
+ }
+ }
+ spec->nfeatures[i] = j;
+ }
+ return spec;
+}
+
+static CFMutableDictionaryRef
+macfont_create_attributes_with_spec (Lisp_Object spec)
+{
+ Lisp_Object tmp, extra;
+ CFMutableArrayRef langarray = NULL;
+ CFCharacterSetRef charset = NULL;
+ CFStringRef charset_string = NULL;
+ CFMutableDictionaryRef attributes = NULL, traits = NULL;
+ Lisp_Object script = Qnil;
+ Lisp_Object registry;
+ int cf_charset_idx, i;
+ struct OpenTypeSpec *otspec = NULL;
+ struct {
+ enum font_property_index index;
+ CFStringRef trait;
+ CGPoint points[6];
+ } numeric_traits[] =
+ {{FONT_WEIGHT_INDEX, MAC_FONT_WEIGHT_TRAIT,
+ {{-0.4, 50}, /* light */
+ {-0.24, 87.5}, /* (semi-light + normal) / 2 */
+ {0, 100}, /* normal */
+ {0.24, 140}, /* (semi-bold + normal) / 2 */
+ {0.4, 200}, /* bold */
+ {CGFLOAT_MAX, CGFLOAT_MAX}}},
+ {FONT_SLANT_INDEX, MAC_FONT_SLANT_TRAIT,
+ {{0, 100}, {0.1, 200}, {CGFLOAT_MAX, CGFLOAT_MAX}}},
+ {FONT_WIDTH_INDEX, MAC_FONT_WIDTH_TRAIT,
+ {{0, 100}, {1, 200}, {CGFLOAT_MAX, CGFLOAT_MAX}}}};
+
+ registry = AREF (spec, FONT_REGISTRY_INDEX);
+ if (NILP (registry)
+ || EQ (registry, Qascii_0)
+ || EQ (registry, Qiso10646_1)
+ || EQ (registry, Qunicode_bmp))
+ cf_charset_idx = -1;
+ else
+ {
+ CFStringRef lang;
+
+ cf_charset_idx = macfont_get_charset (registry);
+ if (cf_charset_idx < 0)
+ goto err;
+ charset = cf_charset_table[cf_charset_idx].cf_charset;
+ charset_string = cf_charset_table[cf_charset_idx].cf_charset_string;
+ lang = cf_charset_table[cf_charset_idx].lang;
+ if (lang)
+ {
+ langarray = CFArrayCreateMutable (NULL, 0, &kCFTypeArrayCallBacks);
+ if (! langarray)
+ goto err;
+ CFArrayAppendValue (langarray, lang);
+ }
+ }
+
+ for (extra = AREF (spec, FONT_EXTRA_INDEX);
+ CONSP (extra); extra = XCDR (extra))
+ {
+ Lisp_Object key, val;
+
+ tmp = XCAR (extra);
+ key = XCAR (tmp), val = XCDR (tmp);
+ if (EQ (key, QClang))
+ {
+ if (! langarray)
+ langarray = CFArrayCreateMutable (NULL, 0, &kCFTypeArrayCallBacks);
+ if (! langarray)
+ goto err;
+ if (SYMBOLP (val))
+ val = list1 (val);
+ for (; CONSP (val); val = XCDR (val))
+ if (SYMBOLP (XCAR (val)))
+ {
+ CFStringRef lang =
+ cfstring_create_with_string_noencode (SYMBOL_NAME
+ (XCAR (val)));
+
+ if (lang == NULL)
+ goto err;
+ CFArrayAppendValue (langarray, lang);
+ CFRelease (lang);
+ }
+ }
+ else if (EQ (key, QCotf))
+ {
+ otspec = macfont_get_open_type_spec (val);
+ if (! otspec)
+ goto err;
+ script = otspec->script;
+ }
+ else if (EQ (key, QCscript))
+ script = val;
+ }
+
+ if (! NILP (script) && ! charset)
+ {
+ Lisp_Object chars = assq_no_quit (script, Vscript_representative_chars);
+
+ if (CONSP (chars) && CONSP (CDR (chars)))
+ {
+ CFMutableStringRef string = CFStringCreateMutable (NULL, 0);
+ CFMutableCharacterSetRef cs = CFCharacterSetCreateMutable (NULL);
+
+ if (! string || !cs)
+ {
+ if (string)
+ CFRelease (string);
+ else if (cs)
+ CFRelease (cs);
+ goto err;
+ }
+ for (chars = XCDR (chars); CONSP (chars); chars = XCDR (chars))
+ if (CHARACTERP (XCAR (chars)))
+ {
+ UniChar unichars[2];
+ CFIndex count =
+ macfont_store_utf32char_to_unichars (XFASTINT (XCAR (chars)),
+ unichars);
+ CFRange range = CFRangeMake (XFASTINT (XCAR (chars)), 1);
+
+ CFStringAppendCharacters (string, unichars, count);
+ CFCharacterSetAddCharactersInRange (cs, range);
+ }
+ charset = cs;
+ /* CFCharacterSetCreateWithCharactersInString does not
+ handle surrogate pairs properly as of Mac OS X 10.5. */
+ charset_string = string;
+ }
+ }
+
+ attributes = CFDictionaryCreateMutable (NULL, 0,
+ &kCFTypeDictionaryKeyCallBacks,
+ &kCFTypeDictionaryValueCallBacks);
+ if (! attributes)
+ goto err;
+
+ tmp = AREF (spec, FONT_FAMILY_INDEX);
+ if (SYMBOLP (tmp) && ! NILP (tmp))
+ {
+ CFStringRef family = macfont_create_family_with_symbol (tmp);
+
+ if (! family)
+ goto err;
+ CFDictionaryAddValue (attributes, MAC_FONT_FAMILY_NAME_ATTRIBUTE,
+ family);
+ CFRelease (family);
+ }
+
+ traits = CFDictionaryCreateMutable (NULL, 4,
+ &kCFTypeDictionaryKeyCallBacks,
+ &kCFTypeDictionaryValueCallBacks);
+ if (! traits)
+ goto err;
+
+ for (i = 0; i < sizeof (numeric_traits) / sizeof (numeric_traits[0]); i++)
+ {
+ tmp = AREF (spec, numeric_traits[i].index);
+ if (INTEGERP (tmp))
+ {
+ CGPoint *point = numeric_traits[i].points;
+ CGFloat floatval = (XINT (tmp) >> 8); // XXX
+ CFNumberRef num;
+
+ while (point->y < floatval)
+ point++;
+ if (point == numeric_traits[i].points)
+ point++;
+ else if (point->y == CGFLOAT_MAX)
+ point--;
+ floatval = (point - 1)->x + ((floatval - (point - 1)->y)
+ * ((point->x - (point - 1)->x)
+ / (point->y - (point - 1)->y)));
+ if (floatval > 1.0)
+ floatval = 1.0;
+ else if (floatval < -1.0)
+ floatval = -1.0;
+ num = CFNumberCreate (NULL, kCFNumberCGFloatType, &floatval);
+ if (! num)
+ goto err;
+ CFDictionaryAddValue (traits, numeric_traits[i].trait, num);
+ CFRelease (num);
+ }
+ }
+ if (CFDictionaryGetCount (traits))
+ CFDictionaryAddValue (attributes, MAC_FONT_TRAITS_ATTRIBUTE, traits);
+
+ if (charset)
+ CFDictionaryAddValue (attributes, MAC_FONT_CHARACTER_SET_ATTRIBUTE,
+ charset);
+ if (charset_string)
+ CFDictionaryAddValue (attributes, MAC_FONT_CHARACTER_SET_STRING_ATTRIBUTE,
+ charset_string);
+ if (langarray)
+ CFDictionaryAddValue (attributes, MAC_FONT_LANGUAGES_ATTRIBUTE, langarray);
+
+ goto finish;
+
+ err:
+ if (attributes)
+ {
+ CFRelease (attributes);
+ attributes = NULL;
+ }
+
+ finish:
+ if (langarray) CFRelease (langarray);
+ if (charset && cf_charset_idx < 0) CFRelease (charset);
+ if (charset_string && cf_charset_idx < 0) CFRelease (charset_string);
+ if (traits) CFRelease (traits);
+ if (otspec)
+ {
+ if (otspec->nfeatures[0] > 0)
+ free (otspec->features[0]);
+ if (otspec->nfeatures[1] > 0)
+ free (otspec->features[1]);
+ free (otspec);
+ }
+
+ return attributes;
+}
+
+static Boolean
+macfont_supports_charset_and_languages_p (FontDescriptorRef desc,
+ CFCharacterSetRef charset,
+ Lisp_Object chars,
+ CFArrayRef languages)
+{
+ Boolean result = true;
+
+ if (charset || VECTORP (chars))
+ {
+ CFCharacterSetRef desc_charset =
+ mac_font_descriptor_copy_attribute (desc,
+ MAC_FONT_CHARACTER_SET_ATTRIBUTE);
+
+ if (desc_charset == NULL)
+ result = false;
+ else
+ {
+ if (charset)
+ result = CFCharacterSetIsSupersetOfSet (desc_charset, charset);
+ else /* VECTORP (chars) */
+ {
+ ptrdiff_t j;
+
+ for (j = 0; j < ASIZE (chars); j++)
+ if (TYPE_RANGED_INTEGERP (UTF32Char, AREF (chars, j))
+ && CFCharacterSetIsLongCharacterMember (desc_charset,
+ XFASTINT (AREF (chars, j))))
+ break;
+ if (j == ASIZE (chars))
+ result = false;
+ }
+ CFRelease (desc_charset);
+ }
+ }
+ if (result && languages)
+ result = mac_font_descriptor_supports_languages (desc, languages);
+
+ return result;
+}
+
+static CFIndex
+macfont_closest_traits_index (CFArrayRef traits_array,
+ FontSymbolicTraits target)
+{
+ CFIndex i, result = -1, count = CFArrayGetCount (traits_array);
+ int min_distance = (1 << 3);
+
+ for (i = 0; i < count; i++)
+ {
+ FontSymbolicTraits traits, diff;
+ int distance = 0;
+
+ traits = ((FontSymbolicTraits) (uintptr_t)
+ CFArrayGetValueAtIndex (traits_array, i));
+ diff = (target ^ traits);
+ /* We prefer synthetic bold of italic to synthetic italic of
+ bold when both bold and italic are available but bold-italic
+ is not available. */
+ if (diff & MAC_FONT_TRAIT_BOLD)
+ distance |= (1 << 0);
+ if (diff & MAC_FONT_TRAIT_ITALIC)
+ distance |= (1 << 1);
+ if (diff & MAC_FONT_TRAIT_MONO_SPACE)
+ distance |= (1 << 2);
+ if (distance < min_distance)
+ {
+ min_distance = distance;
+ result = i;
+ }
+ }
+
+ return result;
+}
+
+static Lisp_Object
+macfont_list (struct frame *f, Lisp_Object spec)
+{
+ Lisp_Object val = Qnil, family, extra;
+ int i, n;
+ CFStringRef family_name = NULL;
+ CFMutableDictionaryRef attributes = NULL, traits;
+ Lisp_Object chars = Qnil;
+ int spacing = -1;
+ FontSymbolicTraits synth_sym_traits = 0;
+ CFArrayRef families;
+ CFIndex families_count;
+ CFCharacterSetRef charset = NULL;
+ CFArrayRef languages = NULL;
+
+ block_input ();
+
+ family = AREF (spec, FONT_FAMILY_INDEX);
+ if (! NILP (family))
+ {
+ family_name = macfont_create_family_with_symbol (family);
+ if (family_name == NULL)
+ goto finish;
+ }
+
+ attributes = macfont_create_attributes_with_spec (spec);
+ if (! attributes)
+ goto finish;
+
+ charset = ((CFCharacterSetRef)
+ CFDictionaryGetValue (attributes,
+ MAC_FONT_CHARACTER_SET_ATTRIBUTE));
+ if (charset)
+ {
+ CFRetain (charset);
+ CFDictionaryRemoveValue (attributes, MAC_FONT_CHARACTER_SET_ATTRIBUTE);
+ }
+ else
+ {
+ val = assq_no_quit (QCscript, AREF (spec, FONT_EXTRA_INDEX));
+ if (! NILP (val))
+ {
+ val = assq_no_quit (XCDR (val), Vscript_representative_chars);
+ if (CONSP (val) && VECTORP (XCDR (val)))
+ chars = XCDR (val);
+ }
+ val = Qnil;
+ }
+
+ languages = ((CFArrayRef)
+ CFDictionaryGetValue (attributes, MAC_FONT_LANGUAGES_ATTRIBUTE));
+ if (languages)
+ {
+ CFRetain (languages);
+ CFDictionaryRemoveValue (attributes, MAC_FONT_LANGUAGES_ATTRIBUTE);
+ }
+
+ if (INTEGERP (AREF (spec, FONT_SPACING_INDEX)))
+ spacing = XINT (AREF (spec, FONT_SPACING_INDEX));
+
+ traits = ((CFMutableDictionaryRef)
+ CFDictionaryGetValue (attributes, MAC_FONT_TRAITS_ATTRIBUTE));
+
+ n = FONT_SLANT_NUMERIC (spec);
+ if (n < 0 || n == FONT_SLANT_SYNTHETIC_ITALIC)
+ {
+ synth_sym_traits |= MAC_FONT_TRAIT_ITALIC;
+ if (traits)
+ CFDictionaryRemoveValue (traits, MAC_FONT_SLANT_TRAIT);
+ }
+
+ n = FONT_WEIGHT_NUMERIC (spec);
+ if (n < 0 || n == FONT_WEIGHT_SYNTHETIC_BOLD)
+ {
+ synth_sym_traits |= MAC_FONT_TRAIT_BOLD;
+ if (traits)
+ CFDictionaryRemoveValue (traits, MAC_FONT_WEIGHT_TRAIT);
+ }
+
+ if (languages
+ && (spacing < 0 || spacing == FONT_SPACING_SYNTHETIC_MONO))
+ {
+ CFStringRef language = CFArrayGetValueAtIndex (languages, 0);
+
+ if (CFStringHasPrefix (language, CFSTR ("ja"))
+ || CFStringHasPrefix (language, CFSTR ("ko"))
+ || CFStringHasPrefix (language, CFSTR ("zh")))
+ synth_sym_traits |= MAC_FONT_TRAIT_MONO_SPACE;
+ }
+
+ /* Create array of families. */
+ if (family_name)
+ families = CFArrayCreate (NULL, (const void **) &family_name,
+ 1, &kCFTypeArrayCallBacks);
+ else
+ {
+ CFStringRef pref_family;
+ CFIndex families_count, pref_family_index = -1;
+
+ families = mac_font_create_available_families ();
+ if (families == NULL)
+ goto err;
+
+ families_count = CFArrayGetCount (families);
+
+ /* Move preferred family to the front if exists. */
+ pref_family =
+ mac_font_create_preferred_family_for_attributes (attributes);
+ if (pref_family)
+ {
+ pref_family_index =
+ CFArrayGetFirstIndexOfValue (families,
+ CFRangeMake (0, families_count),
+ pref_family);
+ CFRelease (pref_family);
+ }
+ if (pref_family_index > 0)
+ {
+ CFMutableArrayRef mutable_families =
+ CFArrayCreateMutable (NULL, families_count, &kCFTypeArrayCallBacks);
+
+ if (mutable_families)
+ {
+ CFArrayAppendValue (mutable_families,
+ CFArrayGetValueAtIndex (families,
+ pref_family_index));
+ CFArrayAppendArray (mutable_families, families,
+ CFRangeMake (0, pref_family_index));
+ if (pref_family_index + 1 < families_count)
+ CFArrayAppendArray (mutable_families, families,
+ CFRangeMake (pref_family_index + 1,
+ families_count
+ - (pref_family_index + 1)));
+ CFRelease (families);
+ families = mutable_families;
+ }
+ }
+ }
+
+ val = Qnil;
+ extra = AREF (spec, FONT_EXTRA_INDEX);
+ families_count = CFArrayGetCount (families);
+ for (i = 0; i < families_count; i++)
+ {
+ CFStringRef family_name = CFArrayGetValueAtIndex (families, i);
+ FontDescriptorRef pat_desc;
+ CFArrayRef descs;
+ CFIndex descs_count;
+ CFMutableArrayRef filtered_descs, traits_array;
+ Lisp_Object entity;
+ int j;
+
+ CFDictionarySetValue (attributes, MAC_FONT_FAMILY_NAME_ATTRIBUTE,
+ family_name);
+ pat_desc = mac_font_descriptor_create_with_attributes (attributes);
+ if (! pat_desc)
+ goto err;
+
+ /* CTFontDescriptorCreateMatchingFontDescriptors on Mac OS X
+ 10.7 returns NULL if pat_desc represents the LastResort font.
+ So we use CTFontDescriptorCreateMatchingFontDescriptor (no
+ trailing "s") for such a font. */
+ if (CFStringCompare (family_name, CFSTR ("LastResort"), 0)
+ != kCFCompareEqualTo)
+ descs = mac_font_descriptor_create_matching_font_descriptors (pat_desc,
+ NULL);
+ else
+ {
+ FontDescriptorRef lr_desc =
+ mac_font_descriptor_create_matching_font_descriptor (pat_desc,
+ NULL);
+ if (lr_desc)
+ {
+ descs = CFArrayCreate (NULL, (const void **) &lr_desc, 1,
+ &kCFTypeArrayCallBacks);
+ CFRelease (lr_desc);
+ }
+ else
+ descs = NULL;
+ }
+ CFRelease (pat_desc);
+ if (! descs)
+ goto err;
+
+ descs_count = CFArrayGetCount (descs);
+ if (descs_count == 0
+ || !macfont_supports_charset_and_languages_p (CFArrayGetValueAtIndex (descs, 0),
+ charset, chars,
+ languages))
+ {
+ CFRelease (descs);
+ continue;
+ }
+
+ filtered_descs =
+ CFArrayCreateMutable (NULL, descs_count, &kCFTypeArrayCallBacks);
+ traits_array = CFArrayCreateMutable (NULL, descs_count, NULL);
+ for (j = 0; j < descs_count; j++)
+ {
+ FontDescriptorRef desc = CFArrayGetValueAtIndex (descs, j);
+ CFDictionaryRef dict;
+ CFNumberRef num;
+ FontSymbolicTraits sym_traits;
+
+ dict = mac_font_descriptor_copy_attribute (desc,
+ MAC_FONT_TRAITS_ATTRIBUTE);
+ if (dict == NULL)
+ continue;
+
+ num = CFDictionaryGetValue (dict, MAC_FONT_SYMBOLIC_TRAIT);
+ CFRelease (dict);
+ if (num == NULL
+ || !cfnumber_get_font_symbolic_traits_value (num, &sym_traits))
+ continue;
+
+ if (spacing >= 0
+ && !(synth_sym_traits & MAC_FONT_TRAIT_MONO_SPACE)
+ && (((sym_traits & MAC_FONT_TRAIT_MONO_SPACE) != 0)
+ != (spacing >= FONT_SPACING_MONO)))
+ continue;
+
+ /* Don't use a color bitmap font unless its family is
+ explicitly specified. */
+ if ((sym_traits & MAC_FONT_TRAIT_COLOR_GLYPHS) && NILP (family))
+ continue;
+
+ if (j > 0
+ && !macfont_supports_charset_and_languages_p (desc, charset,
+ chars, languages))
+ continue;
+
+ CFArrayAppendValue (filtered_descs, desc);
+ CFArrayAppendValue (traits_array,
+ (const void *) (uintptr_t) sym_traits);
+ }
+
+ CFRelease (descs);
+ descs = filtered_descs;
+ descs_count = CFArrayGetCount (descs);
+
+ for (j = 0; j < descs_count; j++)
+ {
+ FontDescriptorRef desc = CFArrayGetValueAtIndex (descs, j);
+ FontSymbolicTraits sym_traits =
+ ((FontSymbolicTraits) (uintptr_t)
+ CFArrayGetValueAtIndex (traits_array, j));
+ FontSymbolicTraits mask_min, mask_max, imask, bmask, mmask;
+
+ mask_min = ((synth_sym_traits ^ sym_traits)
+ & (MAC_FONT_TRAIT_ITALIC | MAC_FONT_TRAIT_BOLD));
+ if (FONT_SLANT_NUMERIC (spec) < 0)
+ mask_min &= ~MAC_FONT_TRAIT_ITALIC;
+ if (FONT_WEIGHT_NUMERIC (spec) < 0)
+ mask_min &= ~MAC_FONT_TRAIT_BOLD;
+
+ mask_max = (synth_sym_traits & ~sym_traits);
+ /* Synthetic bold does not work for bitmap-only fonts on Mac
+ OS X 10.6. */
+ if ((mask_min ^ mask_max) & MAC_FONT_TRAIT_BOLD)
+ {
+ CFNumberRef format =
+ mac_font_descriptor_copy_attribute (desc,
+ MAC_FONT_FORMAT_ATTRIBUTE);
+
+ if (format)
+ {
+ uint32_t format_val;
+
+ if (CFNumberGetValue (format, kCFNumberSInt32Type,
+ &format_val)
+ && format_val == MAC_FONT_FORMAT_BITMAP)
+ mask_max &= ~MAC_FONT_TRAIT_BOLD;
+ }
+ }
+ if (spacing >= 0)
+ mask_min |= (mask_max & MAC_FONT_TRAIT_MONO_SPACE);
+
+ for (mmask = (mask_min & MAC_FONT_TRAIT_MONO_SPACE);
+ mmask <= (mask_max & MAC_FONT_TRAIT_MONO_SPACE);
+ mmask += MAC_FONT_TRAIT_MONO_SPACE)
+ for (bmask = (mask_min & MAC_FONT_TRAIT_BOLD);
+ bmask <= (mask_max & MAC_FONT_TRAIT_BOLD);
+ bmask += MAC_FONT_TRAIT_BOLD)
+ for (imask = (mask_min & MAC_FONT_TRAIT_ITALIC);
+ imask <= (mask_max & MAC_FONT_TRAIT_ITALIC);
+ imask += MAC_FONT_TRAIT_ITALIC)
+ {
+ FontSymbolicTraits synth = (imask | bmask | mmask);
+
+ if (synth == 0
+ || j == macfont_closest_traits_index (traits_array,
+ (sym_traits | synth)))
+ {
+ entity = macfont_descriptor_entity (desc, extra, synth);
+ if (! NILP (entity))
+ val = Fcons (entity, val);
+ }
+ }
+ }
+
+ CFRelease (traits_array);
+ CFRelease (descs);
+ }
+
+ CFRelease (families);
+ val = Fnreverse (val);
+ goto finish;
+ err:
+ val = Qnil;
+
+ finish:
+ FONT_ADD_LOG ("macfont-list", spec, val);
+ if (charset) CFRelease (charset);
+ if (languages) CFRelease (languages);
+ if (attributes) CFRelease (attributes);
+ if (family_name) CFRelease (family_name);
+
+ unblock_input ();
+
+ return val;
+}
+
+static Lisp_Object
+macfont_match (struct frame * frame, Lisp_Object spec)
+{
+ Lisp_Object entity = Qnil;
+ CFMutableDictionaryRef attributes;
+ FontDescriptorRef pat_desc = NULL, desc = NULL;
+
+ block_input ();
+
+ attributes = macfont_create_attributes_with_spec (spec);
+ if (attributes)
+ {
+ pat_desc = mac_font_descriptor_create_with_attributes (attributes);
+ CFRelease (attributes);
+ }
+ if (pat_desc)
+ {
+ desc = mac_font_descriptor_create_matching_font_descriptor (pat_desc,
+ NULL);
+ CFRelease (pat_desc);
+ }
+ if (desc)
+ {
+ entity = macfont_descriptor_entity (desc, AREF (spec, FONT_EXTRA_INDEX),
+ 0);
+ CFRelease (desc);
+ }
+ unblock_input ();
+
+ FONT_ADD_LOG ("macfont-match", spec, entity);
+ return entity;
+}
+
+static Lisp_Object
+macfont_list_family (struct frame *frame)
+{
+ Lisp_Object list = Qnil;
+ CFArrayRef families;
+
+ block_input ();
+
+ families = mac_font_create_available_families ();
+ if (families)
+ {
+ CFIndex i, count = CFArrayGetCount (families);
+
+ for (i = 0; i < count; i++)
+ list = Fcons (macfont_intern_prop_cfstring (CFArrayGetValueAtIndex (families, i)), list);
+ CFRelease (families);
+ }
+
+ unblock_input ();
+
+ return list;
+}
+
+static void
+macfont_free_entity (Lisp_Object entity)
+{
+ Lisp_Object val = assq_no_quit (QCfont_entity,
+ AREF (entity, FONT_EXTRA_INDEX));
+ CFStringRef name = XSAVE_POINTER (XCDR (val), 0);
+
+ block_input ();
+ CFRelease (name);
+ unblock_input ();
+}
+
+static Lisp_Object
+macfont_open (struct frame * f, Lisp_Object entity, int pixel_size)
+{
+ Lisp_Object val, font_object;
+ CFStringRef font_name;
+ struct macfont_info *macfont_info = NULL;
+ struct font *font;
+ int size;
+ FontRef macfont;
+ FontSymbolicTraits sym_traits;
+ char name[256];
+ int len, i, total_width;
+ CGGlyph glyph;
+ CGFloat ascent, descent, leading;
+
+ val = assq_no_quit (QCfont_entity, AREF (entity, FONT_EXTRA_INDEX));
+ if (! CONSP (val)
+ || XTYPE (XCDR (val)) != Lisp_Misc
+ || XMISCTYPE (XCDR (val)) != Lisp_Misc_Save_Value)
+ return Qnil;
+ font_name = XSAVE_POINTER (XCDR (val), 0);
+ sym_traits = XSAVE_INTEGER (XCDR (val), 1);
+
+ size = XINT (AREF (entity, FONT_SIZE_INDEX));
+ if (size == 0)
+ size = pixel_size;
+
+ block_input ();
+ macfont = mac_font_create_with_name (font_name, size);
+ if (macfont)
+ {
+ int fontsize = (int) [((NSFont *) macfont) pointSize];
+ if (fontsize != size) size = fontsize;
+ }
+ unblock_input ();
+ if (! macfont)
+ return Qnil;
+
+ font_object = font_make_object (VECSIZE (struct macfont_info), entity, size);
+ ASET (font_object, FONT_TYPE_INDEX, macfont_driver.type);
+ len = font_unparse_xlfd (entity, size, name, 256);
+ if (len > 0)
+ ASET (font_object, FONT_NAME_INDEX, make_string (name, len));
+ len = font_unparse_fcname (entity, size, name, 256);
+ if (len > 0)
+ ASET (font_object, FONT_FULLNAME_INDEX, make_string (name, len));
+ else
+ ASET (font_object, FONT_FULLNAME_INDEX,
+ AREF (font_object, FONT_NAME_INDEX));
+ font = XFONT_OBJECT (font_object);
+ font->pixel_size = size;
+ font->driver = &macfont_driver;
+ font->encoding_charset = font->repertory_charset = -1;
+
+ block_input ();
+
+ macfont_info = (struct macfont_info *) font;
+ macfont_info->macfont = macfont;
+ macfont_info->cgfont = mac_font_copy_graphics_font (macfont);
+
+ val = assq_no_quit (QCdestination, AREF (entity, FONT_EXTRA_INDEX));
+ if (CONSP (val) && EQ (XCDR (val), make_number (1)))
+ macfont_info->screen_font = mac_screen_font_create_with_name (font_name,
+ size);
+ else
+ macfont_info->screen_font = NULL;
+ macfont_info->cache = macfont_lookup_cache (font_name);
+ macfont_retain_cache (macfont_info->cache);
+ macfont_info->metrics = NULL;
+ macfont_info->metrics_nrows = 0;
+ macfont_info->synthetic_italic_p = 0;
+ macfont_info->synthetic_bold_p = 0;
+ macfont_info->spacing = MACFONT_SPACING_PROPORTIONAL;
+ macfont_info->antialias = MACFONT_ANTIALIAS_DEFAULT;
+ if (!(sym_traits & MAC_FONT_TRAIT_ITALIC)
+ && FONT_SLANT_NUMERIC (entity) == FONT_SLANT_SYNTHETIC_ITALIC)
+ macfont_info->synthetic_italic_p = 1;
+ if (!(sym_traits & MAC_FONT_TRAIT_BOLD)
+ && FONT_WEIGHT_NUMERIC (entity) == FONT_WEIGHT_SYNTHETIC_BOLD)
+ macfont_info->synthetic_bold_p = 1;
+ if (sym_traits & MAC_FONT_TRAIT_MONO_SPACE)
+ macfont_info->spacing = MACFONT_SPACING_MONO;
+ else if (INTEGERP (AREF (entity, FONT_SPACING_INDEX))
+ && (XINT (AREF (entity, FONT_SPACING_INDEX))
+ == FONT_SPACING_SYNTHETIC_MONO))
+ macfont_info->spacing = MACFONT_SPACING_SYNTHETIC_MONO;
+ if (macfont_info->synthetic_italic_p || macfont_info->synthetic_bold_p)
+ macfont_info->antialias = MACFONT_ANTIALIAS_ON;
+ else
+ {
+ val = assq_no_quit (QCantialias, AREF (entity, FONT_EXTRA_INDEX));
+ if (CONSP (val))
+ macfont_info->antialias =
+ NILP (XCDR (val)) ? MACFONT_ANTIALIAS_OFF : MACFONT_ANTIALIAS_ON;
+ }
+ macfont_info->color_bitmap_p = 0;
+ if (sym_traits & MAC_FONT_TRAIT_COLOR_GLYPHS)
+ macfont_info->color_bitmap_p = 1;
+
+ glyph = macfont_get_glyph_for_character (font, ' ');
+ if (glyph != kCGFontIndexInvalid)
+ font->space_width = macfont_glyph_extents (font, glyph, NULL, NULL, 0);
+ else
+ /* dirty workaround */
+ font->space_width = pixel_size;
+
+ total_width = font->space_width;
+ for (i = 1; i < 95; i++)
+ {
+ glyph = macfont_get_glyph_for_character (font, ' ' + i);
+ if (glyph == kCGFontIndexInvalid)
+ break;
+ total_width += macfont_glyph_extents (font, glyph, NULL, NULL, 0);
+ }
+ if (i == 95)
+ font->average_width = total_width / 95;
+ else
+ font->average_width = font->space_width; /* XXX */
+
+ if (!(macfont_info->screen_font
+ && mac_screen_font_get_metrics (macfont_info->screen_font,
+ &ascent, &descent, &leading)))
+ {
+ CFStringRef family_name;
+
+ ascent = mac_font_get_ascent (macfont);
+ descent = mac_font_get_descent (macfont);
+ leading = mac_font_get_leading (macfont);
+ /* AppKit and WebKit do some adjustment to the heights of
+ Courier, Helvetica, and Times. */
+ family_name = mac_font_copy_family_name (macfont);
+ if (family_name)
+ {
+ if ((CFStringCompare (family_name, CFSTR ("Courier"), 0)
+ == kCFCompareEqualTo)
+ || (CFStringCompare (family_name, CFSTR ("Helvetica"), 0)
+ == kCFCompareEqualTo)
+ || (CFStringCompare (family_name, CFSTR ("Times"), 0)
+ == kCFCompareEqualTo))
+ ascent += (ascent + descent) * .15f;
+ else if (CFStringHasPrefix (family_name, CFSTR ("Hiragino")))
+ {
+ leading *= .25f;
+ ascent += leading;
+ }
+ CFRelease (family_name);
+ }
+ }
+ font->ascent = ascent + 0.5f;
+ val = assq_no_quit (QCminspace, AREF (entity, FONT_EXTRA_INDEX));
+ if (CONSP (val) && !NILP (XCDR (val)))
+ font->descent = descent + 0.5f;
+ else
+ font->descent = descent + leading + 0.5f;
+ font->height = font->ascent + font->descent;
+
+ font->underline_position = - mac_font_get_underline_position (macfont) + 0.5f;
+ font->underline_thickness = mac_font_get_underline_thickness (macfont) + 0.5f;
+
+ unblock_input ();
+
+ /* Unfortunately Xft doesn't provide a way to get minimum char
+ width. So, we use space_width instead. */
+ font->min_width = font->max_width = font->space_width; /* XXX */
+
+ font->baseline_offset = 0;
+ font->relative_compose = 0;
+ font->default_ascent = 0;
+ font->vertical_centering = 0;
+
+ return font_object;
+}
+
+static void
+macfont_close (struct frame * f, struct font *font)
+{
+ struct macfont_info *macfont_info = (struct macfont_info *) font;
+ int i;
+
+ block_input ();
+ CFRelease (macfont_info->macfont);
+ CGFontRelease (macfont_info->cgfont);
+ if (macfont_info->screen_font)
+ CFRelease (macfont_info->screen_font);
+ macfont_release_cache (macfont_info->cache);
+ for (i = 0; i < macfont_info->metrics_nrows; i++)
+ if (macfont_info->metrics[i])
+ xfree (macfont_info->metrics[i]);
+ if (macfont_info->metrics)
+ xfree (macfont_info->metrics);
+ unblock_input ();
+}
+
+static int
+macfont_has_char (Lisp_Object font, int c)
+{
+ int result;
+ CFCharacterSetRef charset;
+
+ block_input ();
+ if (FONT_ENTITY_P (font))
+ {
+ Lisp_Object val;
+ CFStringRef name;
+
+ val = assq_no_quit (QCfont_entity, AREF (font, FONT_EXTRA_INDEX));
+ val = XCDR (val);
+ name = XSAVE_POINTER (val, 0);
+ charset = macfont_get_cf_charset_for_name (name);
+ }
+ else
+ charset = macfont_get_cf_charset (XFONT_OBJECT (font));
+
+ result = CFCharacterSetIsLongCharacterMember (charset, c);
+ unblock_input ();
+
+ return result;
+}
+
+static unsigned
+macfont_encode_char (struct font *font, int c)
+{
+ struct macfont_info *macfont_info = (struct macfont_info *) font;
+ CGGlyph glyph;
+
+ block_input ();
+ glyph = macfont_get_glyph_for_character (font, c);
+ unblock_input ();
+
+ return glyph != kCGFontIndexInvalid ? glyph : FONT_INVALID_CODE;
+}
+
+static int
+macfont_text_extents (struct font *font, unsigned int *code, int nglyphs,
+ struct font_metrics *metrics)
+{
+ int width, i;
+
+ block_input ();
+ width = macfont_glyph_extents (font, code[0], metrics, NULL, 0);
+ for (i = 1; i < nglyphs; i++)
+ {
+ struct font_metrics m;
+ int w = macfont_glyph_extents (font, code[i], metrics ? &m : NULL,
+ NULL, 0);
+
+ if (metrics)
+ {
+ if (width + m.lbearing < metrics->lbearing)
+ metrics->lbearing = width + m.lbearing;
+ if (width + m.rbearing > metrics->rbearing)
+ metrics->rbearing = width + m.rbearing;
+ if (m.ascent > metrics->ascent)
+ metrics->ascent = m.ascent;
+ if (m.descent > metrics->descent)
+ metrics->descent = m.descent;
+ }
+ width += w;
+ }
+ unblock_input ();
+
+ if (metrics)
+ metrics->width = width;
+
+ return width;
+}
+
+static int
+macfont_draw (struct glyph_string *s, int from, int to, int x, int y,
+ bool with_background)
+{
+ struct frame * f = s->f;
+ struct macfont_info *macfont_info = (struct macfont_info *) s->font;
+ FontRef macfont = macfont_info->macfont;
+ CGContextRef context;
+ BOOL isComposite = s->first_glyph->type == COMPOSITE_GLYPH;
+ int end = isComposite ? s->cmp_to : s->nchars;
+ int len = end - s->cmp_from;
+ int i;
+
+ block_input ();
+
+ context = [[NSGraphicsContext currentContext] graphicsPort];
+ CGContextSaveGState (context);
+
+#if 0
+ if (s->num_clips > 0)
+ {
+ CGRect clips[2];
+
+ for (i = 0; i < s->num_clips; i++)
+ clips[i] = mac_rect_make (f, s->clip[i].left, s->clip[i].top,
+ s->clip[i].right - s->clip[i].left,
+ s->clip[i].bottom - s->clip[i].top);
+ CGContextClipToRects (context, clips, s->num_clips);
+ }
+#endif
+
+ if (with_background)
+ {
+ CG_SET_FILL_COLOR_WITH_GC_BACKGROUND (context, s);
+ CGContextFillRect (context,
+ NSMakeRect (x, y,
+ s->width, FONT_HEIGHT (s->font)));
+ }
+
+ if (macfont_info->cgfont)
+ {
+ CGGlyph *glyphs = alloca (sizeof (CGGlyph) * len);
+ CGPoint *positions = alloca (sizeof (CGPoint) * len);
+ CGFloat total_width = 0;
+ CGFloat font_size = mac_font_get_size (macfont);
+ CGAffineTransform atfm;
+ CGFloat advance_delta = 0;
+ int y_draw = -y-FONT_BASE (s->font);
+ int no_antialias_p =
+ (macfont_info->antialias == MACFONT_ANTIALIAS_OFF
+ || (macfont_info->antialias == MACFONT_ANTIALIAS_DEFAULT
+ && font_size <= macfont_antialias_threshold));
+
+ for (i = 0; i < len; i++)
+ {
+ int width;
+
+ glyphs[i] = *(s->char2b + s->cmp_from + i);
+ width = (s->padding_p ? 1
+ : macfont_glyph_extents (s->font, glyphs[i],
+ NULL, &advance_delta,
+ no_antialias_p));
+ positions[i].x = total_width + advance_delta;
+ positions[i].y = 0;
+ total_width += width;
+ }
+
+ CGContextScaleCTM (context, 1, -1);
+ CG_SET_FILL_COLOR_WITH_GC_FOREGROUND (context, s);
+ if (macfont_info->synthetic_italic_p)
+ atfm = synthetic_italic_atfm;
+ else
+ atfm = CGAffineTransformIdentity;
+ if (macfont_info->synthetic_bold_p)
+ {
+ CGContextSetTextDrawingMode (context, kCGTextFillStroke);
+ CGContextSetLineWidth (context, synthetic_bold_factor * font_size);
+ CG_SET_STROKE_COLOR_WITH_GC_FOREGROUND (context, s);
+ }
+ if (no_antialias_p)
+ CGContextSetShouldAntialias (context, false);
+
+ CGContextSetTextMatrix (context, atfm);
+ CGContextSetTextPosition (context, x, y_draw);
+
+#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1070
+ if (macfont_info->color_bitmap_p
+#if MAC_OS_X_VERSION_MIN_REQUIRED < 1070
+ && CTFontDrawGlyphs != NULL
+#endif
+ )
+ {
+ if (len > 0)
+ {
+ CTFontDrawGlyphs (macfont, glyphs, positions, len, context);
+ }
+ }
+ else
+#endif /* MAC_OS_X_VERSION_MAX_ALLOWED >= 1070 */
+ {
+ CGContextSetFont (context, macfont_info->cgfont);
+ CGContextSetFontSize (context, font_size);
+ CGContextShowGlyphsAtPositions (context, glyphs, positions, len);
+ }
+ }
+
+ CGContextRestoreGState (context);
+
+ unblock_input ();
+
+ return len;
+}
+
+Lisp_Object
+macfont_shape (Lisp_Object lgstring)
+{
+ struct font *font;
+ struct macfont_info *macfont_info;
+ FontRef macfont;
+ ptrdiff_t glyph_len, len, i, j;
+ CFIndex nonbmp_len;
+ UniChar *unichars;
+ CFIndex *nonbmp_indices;
+ CFStringRef string;
+ CFIndex used = 0;
+ struct mac_glyph_layout *glyph_layouts;
+
+ CHECK_FONT_GET_OBJECT (LGSTRING_FONT (lgstring), font);
+ macfont_info = (struct macfont_info *) font;
+ macfont = macfont_info->macfont;
+
+ glyph_len = LGSTRING_GLYPH_LEN (lgstring);
+ nonbmp_len = 0;
+ for (i = 0; i < glyph_len; i++)
+ {
+ Lisp_Object lglyph = LGSTRING_GLYPH (lgstring, i);
+
+ if (NILP (lglyph))
+ break;
+ if (LGLYPH_CHAR (lglyph) >= 0x10000)
+ nonbmp_len++;
+ }
+
+ len = i;
+ assume (len <= TYPE_MAXIMUM (EMACS_INT) - 2);
+
+ if (INT_MAX / 2 < len)
+ memory_full (SIZE_MAX);
+
+ unichars = alloca (sizeof (UniChar) * (len + nonbmp_len));
+ nonbmp_indices = alloca (sizeof (CFIndex) * (nonbmp_len + 1));
+ for (i = j = 0; i < len; i++)
+ {
+ UTF32Char c = LGLYPH_CHAR (LGSTRING_GLYPH (lgstring, i));
+
+ if (macfont_store_utf32char_to_unichars (c, unichars + i + j) > 1)
+ {
+ nonbmp_indices[j] = i + j;
+ j++;
+ }
+ }
+ nonbmp_indices[j] = len + j; /* sentinel */
+
+ block_input ();
+
+ string = CFStringCreateWithCharactersNoCopy (NULL, unichars, len + nonbmp_len,
+ kCFAllocatorNull);
+ if (string)
+ {
+ glyph_layouts = alloca (sizeof (struct mac_glyph_layout) * glyph_len);
+ if (macfont_info->screen_font)
+ used = mac_screen_font_shape (macfont_info->screen_font, string,
+ glyph_layouts, glyph_len);
+ else
+ used = mac_font_shape (macfont, string, glyph_layouts, glyph_len);
+ CFRelease (string);
+ }
+
+ unblock_input ();
+
+ if (used == 0)
+ return Qnil;
+
+ block_input ();
+
+ for (i = 0; i < used; i++)
+ {
+ Lisp_Object lglyph = LGSTRING_GLYPH (lgstring, i);
+ struct mac_glyph_layout *gl = glyph_layouts + i;
+ EMACS_INT from, to;
+ struct font_metrics metrics;
+ int xoff, yoff, wadjust;
+
+ if (NILP (lglyph))
+ {
+ lglyph = Fmake_vector (make_number (LGLYPH_SIZE), Qnil);
+ LGSTRING_SET_GLYPH (lgstring, i, lglyph);
+ }
+
+ from = gl->comp_range.location;
+ /* Convert UTF-16 index to UTF-32. */
+ j = 0;
+ while (nonbmp_indices[j] < from)
+ j++;
+ from -= j;
+ LGLYPH_SET_FROM (lglyph, from);
+
+ to = gl->comp_range.location + gl->comp_range.length;
+ /* Convert UTF-16 index to UTF-32. */
+ while (nonbmp_indices[j] < to)
+ j++;
+ to -= j;
+ LGLYPH_SET_TO (lglyph, to - 1);
+
+ /* LGLYPH_CHAR is used in `describe-char' for checking whether
+ the composition is trivial. */
+ {
+ UTF32Char c;
+
+ if (unichars[gl->string_index] >= 0xD800
+ && unichars[gl->string_index] < 0xDC00)
+ c = (((unichars[gl->string_index] - 0xD800) << 10)
+ + (unichars[gl->string_index + 1] - 0xDC00) + 0x10000);
+ else
+ c = unichars[gl->string_index];
+ if (macfont_get_glyph_for_character (font, c) != gl->glyph_id)
+ c = 0;
+ LGLYPH_SET_CHAR (lglyph, c);
+ }
+
+ {
+ unsigned long cc = gl->glyph_id;
+ LGLYPH_SET_CODE (lglyph, cc);
+ }
+
+ macfont_glyph_extents (font, gl->glyph_id, &metrics, NULL, 0);
+ LGLYPH_SET_WIDTH (lglyph, metrics.width);
+ LGLYPH_SET_LBEARING (lglyph, metrics.lbearing);
+ LGLYPH_SET_RBEARING (lglyph, metrics.rbearing);
+ LGLYPH_SET_ASCENT (lglyph, metrics.ascent);
+ LGLYPH_SET_DESCENT (lglyph, metrics.descent);
+
+ xoff = lround (gl->advance_delta);
+ yoff = lround (- gl->baseline_delta);
+ wadjust = lround (gl->advance);
+ if (xoff != 0 || yoff != 0 || wadjust != metrics.width)
+ {
+ Lisp_Object vec;
+
+ vec = Fmake_vector (make_number (3), Qnil);
+ ASET (vec, 0, make_number (xoff));
+ ASET (vec, 1, make_number (yoff));
+ ASET (vec, 2, make_number (wadjust));
+ LGLYPH_SET_ADJUSTMENT (lglyph, vec);
+ }
+ }
+
+ unblock_input ();
+
+ return make_number (used);
+}
+
+/* Structures for the UVS subtable (format 14) in the cmap table. */
+typedef UInt8 UINT24[3];
+
+#pragma pack(push, 1)
+struct variation_selector_record
+{
+ UINT24 var_selector;
+ UInt32 default_uvs_offset, non_default_uvs_offset;
+};
+struct uvs_table
+{
+ UInt16 format;
+ UInt32 length, num_var_selector_records;
+ struct variation_selector_record variation_selector_records[1];
+};
+#define SIZEOF_UVS_TABLE_HEADER \
+ (sizeof (struct uvs_table) - sizeof (struct variation_selector_record))
+
+struct unicode_value_range
+{
+ UINT24 start_unicode_value;
+ UInt8 additional_count;
+};
+struct default_uvs_table {
+ UInt32 num_unicode_value_ranges;
+ struct unicode_value_range unicode_value_ranges[1];
+};
+#define SIZEOF_DEFAULT_UVS_TABLE_HEADER \
+ (sizeof (struct default_uvs_table) - sizeof (struct unicode_value_range))
+
+struct uvs_mapping
+{
+ UINT24 unicode_value;
+ UInt16 glyph_id;
+};
+struct non_default_uvs_table
+{
+ UInt32 num_uvs_mappings;
+ struct uvs_mapping uvs_mappings[1];
+};
+#define SIZEOF_NON_DEFAULT_UVS_TABLE_HEADER \
+ (sizeof (struct non_default_uvs_table) - sizeof (struct uvs_mapping))
+#pragma pack(pop)
+
+/* Read big endian values. The argument LVAL must be an lvalue. */
+/* I suppose OSReadBigInt* takes care of unaligned data. At least, we
+ can find "... = OSReadBigInt32(cdb, 2);" followed by "... =
+ OSReadBigInt16(cdb, 7);" in a sample code by Apple. */
+#define BUINT8_VALUE(lval) (*((UInt8 *) &(lval)))
+#define BUINT16_VALUE(lval) OSReadBigInt16 (&(lval), 0)
+/* Succeeding one byte should also be accessible. */
+#define BUINT24_VALUE(lval) (OSReadBigInt32 (&(lval), 0) >> 8)
+#define BUINT32_VALUE(lval) OSReadBigInt32 (&(lval), 0)
+
+/* Return UVS subtable for the specified FONT. If the subtable is not
+ found or ill-formated, then return NULL. */
+
+static CFDataRef
+mac_font_copy_uvs_table (FontRef font)
+{
+ CFDataRef cmap_table, uvs_table = NULL;
+
+ cmap_table = mac_font_copy_non_synthetic_table (font, cmapFontTableTag);
+ if (cmap_table)
+ {
+ sfntCMapHeader *cmap = (sfntCMapHeader *) CFDataGetBytePtr (cmap_table);
+ struct uvs_table *uvs;
+ struct variation_selector_record *records;
+ UInt32 cmap_len, ntables, i, uvs_offset, uvs_len, nrecords;
+
+#if __LP64__
+ if (CFDataGetLength (cmap_table) > UINT32_MAX)
+ goto finish;
+#endif
+
+ cmap_len = CFDataGetLength (cmap_table);
+ if (sizeof_sfntCMapHeader > cmap_len)
+ goto finish;
+
+ ntables = BUINT16_VALUE (cmap->numTables);
+ if (ntables > ((cmap_len - sizeof_sfntCMapHeader)
+ / sizeof_sfntCMapEncoding))
+ goto finish;
+
+ for (i = 0; i < ntables; i++)
+ if ((BUINT16_VALUE (cmap->encoding[i].platformID)
+ == kFontUnicodePlatform)
+ && (BUINT16_VALUE (cmap->encoding[i].scriptID)
+ == 5)) /* kFontUnicodeV4_0VariationSequenceSemantics */
+ {
+ uvs_offset = BUINT32_VALUE (cmap->encoding[i].offset);
+ break;
+ }
+ if (i == ntables
+ || uvs_offset > cmap_len
+ || SIZEOF_UVS_TABLE_HEADER > cmap_len - uvs_offset)
+ goto finish;
+
+ uvs = (struct uvs_table *) ((UInt8 *) cmap + uvs_offset);
+ uvs_len = BUINT32_VALUE (uvs->length);
+ if (uvs_len > cmap_len - uvs_offset
+ || SIZEOF_UVS_TABLE_HEADER > uvs_len)
+ goto finish;
+
+ if (BUINT16_VALUE (uvs->format) != 14)
+ goto finish;
+
+ nrecords = BUINT32_VALUE (uvs->num_var_selector_records);
+ if (nrecords > ((uvs_len - SIZEOF_UVS_TABLE_HEADER)
+ / sizeof (struct variation_selector_record)))
+ goto finish;
+
+ records = uvs->variation_selector_records;
+ for (i = 0; i < nrecords; i++)
+ {
+ UInt32 default_uvs_offset, non_default_uvs_offset;
+
+ default_uvs_offset = BUINT32_VALUE (records[i].default_uvs_offset);
+ if (default_uvs_offset)
+ {
+ struct default_uvs_table *default_uvs;
+ UInt32 nranges;
+
+ if (default_uvs_offset > uvs_len
+ || (SIZEOF_DEFAULT_UVS_TABLE_HEADER
+ > uvs_len - default_uvs_offset))
+ goto finish;
+
+ default_uvs = ((struct default_uvs_table *)
+ ((UInt8 *) uvs + default_uvs_offset));
+ nranges = BUINT32_VALUE (default_uvs->num_unicode_value_ranges);
+ if (nranges > ((uvs_len - default_uvs_offset
+ - SIZEOF_DEFAULT_UVS_TABLE_HEADER)
+ / sizeof (struct unicode_value_range)))
+ goto finish;
+ /* Now 2 * nranges can't overflow, so we can safely use
+ `(lo + hi) / 2' instead of `lo + (hi - lo) / 2' in
+ mac_font_get_glyphs_for_variants. */
+ }
+
+ non_default_uvs_offset =
+ BUINT32_VALUE (records[i].non_default_uvs_offset);
+ if (non_default_uvs_offset)
+ {
+ struct non_default_uvs_table *non_default_uvs;
+ UInt32 nmappings;
+
+ if (non_default_uvs_offset > uvs_len
+ || (SIZEOF_NON_DEFAULT_UVS_TABLE_HEADER
+ > uvs_len - non_default_uvs_offset))
+ goto finish;
+
+ non_default_uvs = ((struct non_default_uvs_table *)
+ ((UInt8 *) uvs + non_default_uvs_offset));
+ nmappings = BUINT32_VALUE (non_default_uvs->num_uvs_mappings);
+ if (nmappings > ((uvs_len - non_default_uvs_offset
+ - SIZEOF_NON_DEFAULT_UVS_TABLE_HEADER)
+ / sizeof (struct uvs_mapping)))
+ goto finish;
+ /* Now 2 * nmappings can't overflow, so we can safely
+ use `(lo + hi) / 2' instead of `lo + (hi - lo) / 2'
+ in mac_font_get_glyphs_for_variants. */
+ }
+ }
+
+ uvs_table = CFDataCreate (NULL, (UInt8 *) uvs, uvs_len);
+
+ finish:
+ CFRelease (cmap_table);
+ }
+
+ return uvs_table;
+}
+
+/* Find an entry in the given UVS subtable UVS_TABLE for a variation
+ sequence consisting of the given base character C and each
+ variation selector SELECTORS[i] for 0 <= i < COUNT, and store the
+ result (explained below) into the corresponding GLYPHS[i]. If the
+ entry is found in the Default UVS Table, then the result is 0. If
+ the entry is found in the Non-Default UVS Table, then the result is
+ the associated glyph ID. Otherwise, kCGFontIndexInvalid. The
+ elements in SELECTORS must be sorted in strictly increasing
+ order. */
+
+static void
+mac_font_get_glyphs_for_variants (CFDataRef uvs_table, UTF32Char c,
+ const UTF32Char selectors[], CGGlyph glyphs[],
+ CFIndex count)
+{
+ struct uvs_table *uvs = (struct uvs_table *) CFDataGetBytePtr (uvs_table);
+ struct variation_selector_record *records = uvs->variation_selector_records;
+ CFIndex i;
+ UInt32 ir, nrecords;
+#if MAC_OS_X_VERSION_MIN_REQUIRED >= 1060
+ dispatch_queue_t queue =
+ dispatch_get_global_queue (DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
+ dispatch_group_t group = dispatch_group_create ();
+#endif
+
+ nrecords = BUINT32_VALUE (uvs->num_var_selector_records);
+ i = 0;
+ ir = 0;
+ while (i < count && ir < nrecords)
+ {
+ UInt32 default_uvs_offset, non_default_uvs_offset;
+
+ if (selectors[i] < BUINT24_VALUE (records[ir].var_selector))
+ {
+ glyphs[i++] = kCGFontIndexInvalid;
+ continue;
+ }
+ else if (selectors[i] > BUINT24_VALUE (records[ir].var_selector))
+ {
+ ir++;
+ continue;
+ }
+
+ /* selectors[i] == BUINT24_VALUE (records[ir].var_selector) */
+ default_uvs_offset = BUINT32_VALUE (records[ir].default_uvs_offset);
+ non_default_uvs_offset =
+ BUINT32_VALUE (records[ir].non_default_uvs_offset);
+#if MAC_OS_X_VERSION_MIN_REQUIRED >= 1060
+ dispatch_group_async (group, queue, ^{
+#endif
+ glyphs[i] = kCGFontIndexInvalid;
+
+ if (default_uvs_offset)
+ {
+ struct default_uvs_table *default_uvs =
+ (struct default_uvs_table *) ((UInt8 *) uvs
+ + default_uvs_offset);
+ struct unicode_value_range *ranges =
+ default_uvs->unicode_value_ranges;
+ UInt32 lo, hi;
+
+ lo = 0;
+ hi = BUINT32_VALUE (default_uvs->num_unicode_value_ranges);
+ while (lo < hi)
+ {
+ UInt32 mid = (lo + hi) / 2;
+
+ if (c < BUINT24_VALUE (ranges[mid].start_unicode_value))
+ hi = mid;
+ else
+ lo = mid + 1;
+ }
+ if (hi > 0
+ && (c <= (BUINT24_VALUE (ranges[hi - 1].start_unicode_value)
+ + BUINT8_VALUE (ranges[hi - 1].additional_count))))
+ glyphs[i] = 0;
+ }
+
+ if (glyphs[i] == kCGFontIndexInvalid && non_default_uvs_offset)
+ {
+ struct non_default_uvs_table *non_default_uvs =
+ (struct non_default_uvs_table *) ((UInt8 *) uvs
+ + non_default_uvs_offset);
+ struct uvs_mapping *mappings = non_default_uvs->uvs_mappings;
+ UInt32 lo, hi;
+
+ lo = 0;
+ hi = BUINT32_VALUE (non_default_uvs->num_uvs_mappings);
+ while (lo < hi)
+ {
+ UInt32 mid = (lo + hi) / 2;
+
+ if (c < BUINT24_VALUE (mappings[mid].unicode_value))
+ hi = mid;
+ else
+ lo = mid + 1;
+ }
+ if (hi > 0 &&
+ BUINT24_VALUE (mappings[hi - 1].unicode_value) == c)
+ glyphs[i] = BUINT16_VALUE (mappings[hi - 1].glyph_id);
+ }
+#if MAC_OS_X_VERSION_MIN_REQUIRED >= 1060
+ });
+#endif
+ i++;
+ ir++;
+ }
+ while (i < count)
+ glyphs[i++] = kCGFontIndexInvalid;
+#if MAC_OS_X_VERSION_MIN_REQUIRED >= 1060
+ dispatch_group_wait (group, DISPATCH_TIME_FOREVER);
+ dispatch_release (group);
+#endif
+}
+
+static int
+macfont_variation_glyphs (struct font *font, int c, unsigned variations[256])
+{
+ CFDataRef uvs_table;
+ CharacterCollection uvs_collection;
+ int i, n = 0;
+
+ block_input ();
+ uvs_table = macfont_get_uvs_table (font, &uvs_collection);
+
+ if (uvs_table)
+ {
+ UTF32Char selectors[256];
+ CGGlyph glyphs[256];
+
+ for (i = 0; i < 16; i++)
+ selectors[i] = 0xFE00 + i;
+ for (; i < 256; i++)
+ selectors[i] = 0xE0100 + (i - 16);
+ mac_font_get_glyphs_for_variants (uvs_table, c, selectors, glyphs, 256);
+ for (i = 0; i < 256; i++)
+ {
+ CGGlyph glyph = glyphs[i];
+
+ if (uvs_collection != MAC_CHARACTER_COLLECTION_IDENTITY_MAPPING
+ && glyph != kCGFontIndexInvalid)
+ glyph = macfont_get_glyph_for_cid (font, uvs_collection, glyph);
+ if (glyph == kCGFontIndexInvalid)
+ variations[i] = 0;
+ else
+ {
+ variations[i] = (glyph ? glyph
+ : macfont_get_glyph_for_character (font, c));
+ n++;
+ }
+ }
+ }
+ unblock_input ();
+
+ return n;
+}
+
+static const char *const macfont_booleans[] = {
+ ":antialias",
+ ":minspace",
+ NULL,
+};
+
+static const char *const macfont_non_booleans[] = {
+ ":lang",
+ ":script",
+ ":destination",
+ NULL,
+};
+
+static void
+macfont_filter_properties (Lisp_Object font, Lisp_Object alist)
+{
+ font_filter_properties (font, alist, macfont_booleans, macfont_non_booleans);
+}
+
+static Boolean
+mac_ctfont_descriptor_supports_languages (CTFontDescriptorRef descriptor,
+ CFArrayRef languages)
+{
+ Boolean result = true;
+ CFArrayRef desc_languages =
+ CTFontDescriptorCopyAttribute (descriptor, kCTFontLanguagesAttribute);
+
+ if (desc_languages == NULL)
+ result = false;
+ else
+ {
+ CFIndex desc_languages_count, i, languages_count;
+
+ desc_languages_count = CFArrayGetCount (desc_languages);
+ languages_count = CFArrayGetCount (languages);
+ for (i = 0; i < languages_count; i++)
+ if (!CFArrayContainsValue (desc_languages,
+ CFRangeMake (0, desc_languages_count),
+ CFArrayGetValueAtIndex (languages, i)))
+ {
+ result = false;
+ break;
+ }
+ CFRelease (desc_languages);
+ }
+
+ return result;
+}
+
+static CFStringRef
+mac_ctfont_create_preferred_family_for_attributes (CFDictionaryRef attributes)
+{
+ CFStringRef result = NULL;
+ CFStringRef charset_string =
+ CFDictionaryGetValue (attributes, MAC_FONT_CHARACTER_SET_STRING_ATTRIBUTE);
+ CFIndex length;
+
+ if (charset_string
+ && (length = CFStringGetLength (charset_string)) > 0)
+ {
+ CFAttributedStringRef attr_string = NULL;
+ CTLineRef ctline = NULL;
+ CFDictionaryRef attrs =
+ CFDictionaryCreate (NULL, NULL, NULL, 0,
+ &kCFTypeDictionaryKeyCallBacks,
+ &kCFTypeDictionaryValueCallBacks);
+
+ if (attrs)
+ {
+ attr_string = CFAttributedStringCreate (NULL, charset_string, attrs);
+ CFRelease (attrs);
+ }
+ if (attr_string)
+ {
+ ctline = CTLineCreateWithAttributedString (attr_string);
+ CFRelease (attr_string);
+ }
+ if (ctline)
+ {
+ CFArrayRef runs = CTLineGetGlyphRuns (ctline);
+ CFIndex i, nruns = CFArrayGetCount (runs);
+ CTFontRef font;
+
+ for (i = 0; i < nruns; i++)
+ {
+ CTRunRef run = CFArrayGetValueAtIndex (runs, i);
+ CFDictionaryRef attributes = CTRunGetAttributes (run);
+ CTFontRef font_in_run;
+
+ if (attributes == NULL)
+ break;
+ font_in_run =
+ CFDictionaryGetValue (attributes, kCTFontAttributeName);
+ if (font_in_run == NULL)
+ break;
+ if (i == 0)
+ font = font_in_run;
+ else if (!mac_ctfont_equal_in_postscript_name (font, font_in_run))
+ break;
+ }
+ if (nruns > 0 && i == nruns)
+ result = CTFontCopyAttribute (font, kCTFontFamilyNameAttribute);
+ CFRelease (ctline);
+ }
+ }
+
+ return result;
+}
+
+static inline double
+mac_ctfont_get_advance_width_for_glyph (CTFontRef font, CGGlyph glyph)
+{
+ return CTFontGetAdvancesForGlyphs (font, kCTFontDefaultOrientation,
+ &glyph, NULL, 1);
+}
+
+static inline CGRect
+mac_ctfont_get_bounding_rect_for_glyph (CTFontRef font, CGGlyph glyph)
+{
+ return CTFontGetBoundingRectsForGlyphs (font, kCTFontDefaultOrientation,
+ &glyph, NULL, 1);
+}
+
+static CFArrayRef
+mac_ctfont_create_available_families (void)
+{
+ CFMutableArrayRef families = NULL;
+
+#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1060
+#if MAC_OS_X_VERSION_MIN_REQUIRED < 1060
+ if (CTFontManagerCopyAvailableFontFamilyNames != NULL)
+#endif
+ {
+ CFArrayRef orig_families = CTFontManagerCopyAvailableFontFamilyNames ();
+
+ if (orig_families)
+ {
+ CFIndex i, count = CFArrayGetCount (orig_families);
+
+ families = CFArrayCreateMutable (NULL, count, &kCFTypeArrayCallBacks);
+ if (families)
+ for (i = 0; i < count; i++)
+ {
+ CFStringRef family = CFArrayGetValueAtIndex (orig_families, i);
+
+ if (!CFStringHasPrefix (family, CFSTR ("."))
+ && (CTFontManagerCompareFontFamilyNames (family,
+ CFSTR ("LastResort"),
+ NULL)
+ != kCFCompareEqualTo))
+ CFArrayAppendValue (families, family);
+ }
+ CFRelease (orig_families);
+ }
+ }
+#if MAC_OS_X_VERSION_MIN_REQUIRED < 1060
+ else /* CTFontManagerCopyAvailableFontFamilyNames == NULL */
+#endif
+#endif /* MAC_OS_X_VERSION_MAX_ALLOWED >= 1060 */
+#if MAC_OS_X_VERSION_MIN_REQUIRED < 1060
+ {
+ CTFontCollectionRef collection;
+ CFArrayRef descs = NULL;
+
+ collection = CTFontCollectionCreateFromAvailableFonts (NULL);
+ if (collection)
+ {
+ descs = CTFontCollectionCreateMatchingFontDescriptors (collection);
+ CFRelease (collection);
+ }
+ if (descs)
+ {
+ CFIndex i, count = CFArrayGetCount (descs);
+
+ families = CFArrayCreateMutable (NULL, count, &kCFTypeArrayCallBacks);
+ if (families)
+ for (i = 0; i < count; i++)
+ {
+ FontDescriptorRef desc = CFArrayGetValueAtIndex (descs, i);
+ CFStringRef name =
+ mac_font_descriptor_copy_attribute (desc,
+ MAC_FONT_FAMILY_NAME_ATTRIBUTE);
+
+ if (name)
+ {
+ CFIndex p, limit = CFArrayGetCount (families);
+
+ p = CFArrayBSearchValues (families, CFRangeMake (0, limit),
+ (const void *) name,
+ mac_font_family_compare, NULL);
+ if (p >= limit)
+ CFArrayAppendValue (families, name);
+ else if (mac_font_family_compare
+ (CFArrayGetValueAtIndex (families, p),
+ name, NULL) != kCFCompareEqualTo)
+ CFArrayInsertValueAtIndex (families, p, name);
+ CFRelease (name);
+ }
+ }
+ CFRelease (descs);
+ }
+ }
+#endif
+
+ return families;
+}
+
+static Boolean
+mac_ctfont_equal_in_postscript_name (CTFontRef font1, CTFontRef font2)
+{
+ Boolean result;
+ CFStringRef name1, name2;
+
+ if (font1 == font2)
+ return true;
+
+ result = false;
+ name1 = CTFontCopyPostScriptName (font1);
+ if (name1)
+ {
+ name2 = CTFontCopyPostScriptName (font2);
+ if (name2)
+ {
+ result = (CFStringCompare (name1, name2, 0) == kCFCompareEqualTo);
+ CFRelease (name2);
+ }
+ CFRelease (name1);
+ }
+
+ return result;
+}
+
+static CTLineRef
+mac_ctfont_create_line_with_string_and_font (CFStringRef string,
+ CTFontRef macfont)
+{
+ CFStringRef keys[] = {kCTFontAttributeName, kCTKernAttributeName};
+ CFTypeRef values[] = {NULL, NULL};
+ CFDictionaryRef attributes = NULL;
+ CFAttributedStringRef attr_string = NULL;
+ CTLineRef ctline = NULL;
+ float float_zero = 0.0f;
+
+ values[0] = macfont;
+ values[1] = CFNumberCreate (NULL, kCFNumberFloatType, &float_zero);
+ if (values[1])
+ {
+ attributes = CFDictionaryCreate (NULL, (const void **) keys,
+ (const void **) values,
+ sizeof (keys) / sizeof (keys[0]),
+ &kCFTypeDictionaryKeyCallBacks,
+ &kCFTypeDictionaryValueCallBacks);
+ CFRelease (values[1]);
+ }
+ if (attributes)
+ {
+ attr_string = CFAttributedStringCreate (NULL, string, attributes);
+ CFRelease (attributes);
+ }
+ if (attr_string)
+ {
+ ctline = CTLineCreateWithAttributedString (attr_string);
+ CFRelease (attr_string);
+ }
+ if (ctline)
+ {
+ /* Abandon if ctline contains some fonts other than the
+ specified one. */
+ CFArrayRef runs = CTLineGetGlyphRuns (ctline);
+ CFIndex i, nruns = CFArrayGetCount (runs);
+
+ for (i = 0; i < nruns; i++)
+ {
+ CTRunRef run = CFArrayGetValueAtIndex (runs, i);
+ CFDictionaryRef attributes = CTRunGetAttributes (run);
+ CTFontRef font_in_run;
+
+ if (attributes == NULL)
+ break;
+ font_in_run =
+ CFDictionaryGetValue (attributes, kCTFontAttributeName);
+ if (font_in_run == NULL)
+ break;
+ if (!mac_ctfont_equal_in_postscript_name (macfont, font_in_run))
+ break;
+ }
+ if (i < nruns)
+ {
+ CFRelease (ctline);
+ ctline = NULL;
+ }
+ }
+
+ return ctline;
+}
+
+CFIndex
+mac_ctfont_shape (CTFontRef font, CFStringRef string,
+ struct mac_glyph_layout *glyph_layouts, CFIndex glyph_len)
+{
+ CFIndex used, result = 0;
+ CTLineRef ctline = mac_ctfont_create_line_with_string_and_font (string, font);
+
+ if (ctline == NULL)
+ return 0;
+
+ used = CTLineGetGlyphCount (ctline);
+ if (used <= glyph_len)
+ {
+ CFArrayRef ctruns = CTLineGetGlyphRuns (ctline);
+ CFIndex k, ctrun_count = CFArrayGetCount (ctruns);
+ CGFloat total_advance = 0;
+ CFIndex total_glyph_count = 0;
+
+ for (k = 0; k < ctrun_count; k++)
+ {
+ CTRunRef ctrun = CFArrayGetValueAtIndex (ctruns, k);
+ CFIndex i, min_location, glyph_count = CTRunGetGlyphCount (ctrun);
+ struct mac_glyph_layout *glbuf = glyph_layouts + total_glyph_count;
+ CFRange string_range, comp_range, range;
+ CFIndex *permutation;
+
+ if (CTRunGetStatus (ctrun) & kCTRunStatusRightToLeft)
+ permutation = xmalloc (sizeof (CFIndex) * glyph_count);
+ else
+ permutation = NULL;
+
+#define RIGHT_TO_LEFT_P permutation
+
+ /* Now the `comp_range' member of struct mac_glyph_layout is
+ temporarily used as a work area such that:
+ glbuf[i].comp_range.location =
+ min {compRange[i + 1].location, ...,
+ compRange[glyph_count - 1].location,
+ maxRange (stringRangeForCTRun)}
+ glbuf[i].comp_range.length = maxRange (compRange[i])
+ where compRange[i] is the range of composed characters
+ containing i-th glyph. */
+ string_range = CTRunGetStringRange (ctrun);
+ min_location = string_range.location + string_range.length;
+ for (i = 0; i < glyph_count; i++)
+ {
+ struct mac_glyph_layout *gl = glbuf + glyph_count - i - 1;
+ CFIndex glyph_index;
+ CFRange rng;
+
+ if (!RIGHT_TO_LEFT_P)
+ glyph_index = glyph_count - i - 1;
+ else
+ glyph_index = i;
+ CTRunGetStringIndices (ctrun, CFRangeMake (glyph_index, 1),
+ &gl->string_index);
+ rng =
+ CFStringGetRangeOfComposedCharactersAtIndex (string,
+ gl->string_index);
+ gl->comp_range.location = min_location;
+ gl->comp_range.length = rng.location + rng.length;
+ if (rng.location < min_location)
+ min_location = rng.location;
+ }
+
+ /* Fill the `comp_range' member of struct mac_glyph_layout,
+ and setup a permutation for right-to-left text. */
+ comp_range = CFRangeMake (string_range.location, 0);
+ range = CFRangeMake (0, 0);
+ while (1)
+ {
+ struct mac_glyph_layout *gl =
+ glbuf + range.location + range.length;
+
+ if (gl->comp_range.length
+ > comp_range.location + comp_range.length)
+ comp_range.length = gl->comp_range.length - comp_range.location;
+ min_location = gl->comp_range.location;
+ range.length++;
+
+ if (min_location >= comp_range.location + comp_range.length)
+ {
+ comp_range.length = min_location - comp_range.location;
+ for (i = 0; i < range.length; i++)
+ {
+ glbuf[range.location + i].comp_range = comp_range;
+ if (RIGHT_TO_LEFT_P)
+ permutation[range.location + i] =
+ range.location + range.length - i - 1;
+ }
+
+ comp_range = CFRangeMake (min_location, 0);
+ range.location += range.length;
+ range.length = 0;
+ if (range.location == glyph_count)
+ break;
+ }
+ }
+
+ /* Then fill the remaining members. */
+ for (range = CFRangeMake (0, 1); range.location < glyph_count;
+ range.location++)
+ {
+ struct mac_glyph_layout *gl;
+ CGPoint position;
+
+ if (!RIGHT_TO_LEFT_P)
+ gl = glbuf + range.location;
+ else
+ {
+ CFIndex src, dest;
+
+ src = glyph_count - 1 - range.location;
+ dest = permutation[src];
+ gl = glbuf + dest;
+ if (src < dest)
+ {
+ CFIndex tmp = gl->string_index;
+
+ gl->string_index = glbuf[src].string_index;
+ glbuf[src].string_index = tmp;
+ }
+ }
+ CTRunGetGlyphs (ctrun, range, &gl->glyph_id);
+
+ CTRunGetPositions (ctrun, range, &position);
+ gl->advance_delta = position.x - total_advance;
+ gl->baseline_delta = position.y;
+ gl->advance = (gl->advance_delta
+ + CTRunGetTypographicBounds (ctrun, range,
+ NULL, NULL, NULL));
+ total_advance += gl->advance;
+ }
+
+ if (RIGHT_TO_LEFT_P)
+ xfree (permutation);
+
+#undef RIGHT_TO_LEFT_P
+
+ total_glyph_count += glyph_count;
+ }
+
+ result = used;
+ }
+ CFRelease (ctline);
+
+ return result;
+}
+
+/* The function below seems to cause a memory leak for the CFString
+ created by CFStringCreateWithCharacters as of Mac OS X 10.5.8 and
+ 10.6.3. For now, we use the NSGlyphInfo version instead. */
+#if USE_CT_GLYPH_INFO
+CGGlyph
+mac_ctfont_get_glyph_for_cid (CTFontRef font, CTCharacterCollection collection,
+ CGFontIndex cid)
+{
+ CGGlyph result = kCGFontIndexInvalid;
+ UniChar characters[] = {0xfffd};
+ CFStringRef string;
+ CFAttributedStringRef attr_string = NULL;
+ CTLineRef ctline = NULL;
+
+ string = CFStringCreateWithCharacters (NULL, characters,
+ sizeof (characters)
+ / sizeof (characters[0]));
+ if (string)
+ {
+ CTGlyphInfoRef glyph_info =
+ CTGlyphInfoCreateWithCharacterIdentifier (cid, collection, string);
+ CFDictionaryRef attributes = NULL;
+
+ if (glyph_info)
+ {
+ CFStringRef keys[] = {kCTFontAttributeName,
+ kCTGlyphInfoAttributeName};
+ CFTypeRef values[] = {font, glyph_info};
+
+ attributes = CFDictionaryCreate (NULL, (const void **) keys,
+ (const void **) values,
+ sizeof (keys) / sizeof (keys[0]),
+ &kCFTypeDictionaryKeyCallBacks,
+ &kCFTypeDictionaryValueCallBacks);
+ CFRelease (glyph_info);
+ }
+ if (attributes)
+ {
+ attr_string = CFAttributedStringCreate (NULL, string, attributes);
+ CFRelease (attributes);
+ }
+ CFRelease (string);
+ }
+ if (attr_string)
+ {
+ ctline = CTLineCreateWithAttributedString (attr_string);
+ CFRelease (attr_string);
+ }
+ if (ctline)
+ {
+ CFArrayRef runs = CTLineGetGlyphRuns (ctline);
+
+ if (CFArrayGetCount (runs) > 0)
+ {
+ CTRunRef run = CFArrayGetValueAtIndex (runs, 0);
+ CFDictionaryRef attributes = CTRunGetAttributes (run);
+
+ if (attributes)
+ {
+ CTFontRef font_in_run =
+ CFDictionaryGetValue (attributes, kCTFontAttributeName);
+
+ if (font_in_run
+ && mac_ctfont_equal_in_postscript_name (font_in_run, font))
+ {
+ CTRunGetGlyphs (run, CFRangeMake (0, 1), &result);
+ if (result >= CTFontGetGlyphCount (font))
+ result = kCGFontIndexInvalid;
+ }
+ }
+ }
+ CFRelease (ctline);
+ }
+
+ return result;
+}
+#endif
+
+#if MAC_OS_X_VERSION_MIN_REQUIRED < 1060
+static inline int
+mac_font_family_group (CFStringRef family)
+{
+ if (CFStringHasPrefix (family, CFSTR ("#")))
+ return 2;
+ else
+ {
+ CFRange range;
+
+ range = CFStringFind (family, CFSTR ("Apple"),
+ kCFCompareCaseInsensitive | kCFCompareAnchored);
+ if (range.location != kCFNotFound)
+ return 1;
+
+ return 0;
+ }
+}
+
+CFComparisonResult
+mac_font_family_compare (const void *val1, const void *val2, void *context)
+{
+ CFStringRef family1 = (CFStringRef) val1, family2 = (CFStringRef) val2;
+ int group1, group2;
+
+ group1 = mac_font_family_group (family1);
+ group2 = mac_font_family_group (family2);
+ if (group1 < group2)
+ return kCFCompareLessThan;
+ if (group1 > group2)
+ return kCFCompareGreaterThan;
+ return CFStringCompare (family1, family2, kCFCompareCaseInsensitive);
+}
+#endif /* MAC_OS_X_VERSION_MIN_REQUIRED < 1060 */
+
+void *
+macfont_get_nsctfont (struct font *font)
+{
+ struct macfont_info *macfont_info = (struct macfont_info *) font;
+ FontRef macfont = macfont_info->macfont;
+
+ return (void *) macfont;
+}
+
+void
+mac_register_font_driver (struct frame *f)
+{
+ register_font_driver (&macfont_driver, f);
+}
+
+#endif // MAC_OS_X_VERSION_MAX_ALLOWED >= 1050
+
+
+void
+syms_of_macfont (void)
+{
+#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1050
+ static struct font_driver mac_font_driver;
+
+ DEFSYM (Qmac_ct, "mac-ct");
+ macfont_driver.type = Qmac_ct;
+ register_font_driver (&macfont_driver, NULL);
+
+ DEFSYM (QCdestination, ":destination");
+ DEFSYM (QCminspace, ":minspace");
+#endif
+}
diff --git a/src/macuvs.h b/src/macuvs.h
new file mode 100644
index 00000000000..20879888f9a
--- /dev/null
+++ b/src/macuvs.h
@@ -0,0 +1,9215 @@
+/* UVS (Unicode Variation Sequence) table definitions.
+
+This file is part of GNU Emacs. */
+
+/* This was generated from the Ideographic Variation Database file at
+ http://www.unicode.org/ivd/data/2012-03-02/IVD_Sequences.txt
+ using admin/mac/uvs.el in GNU Emacs, and distributed under
+ the Terms of Use in http://www.unicode.org/terms_of_use.html. */
+static const unsigned char mac_uvs_table_adobe_japan1_bytes[] =
+ {
+ 0x00, 0x0e, 0x00, 0x01, 0x1f, 0x9e, 0x00, 0x00,
+ 0x00, 0x0f, 0x0e, 0x01, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xaf, 0x0e, 0x01, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x9a,
+ 0x0e, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x1c, 0x31, 0x0e, 0x01, 0x03, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x01, 0x1e, 0xb0, 0x0e, 0x01,
+ 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x1f,
+ 0x09, 0x0e, 0x01, 0x05, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x01, 0x1f, 0x2b, 0x0e, 0x01, 0x06, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x01, 0x1f, 0x43, 0x0e,
+ 0x01, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
+ 0x1f, 0x51, 0x0e, 0x01, 0x08, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x01, 0x1f, 0x5f, 0x0e, 0x01, 0x09,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x1f, 0x68,
+ 0x0e, 0x01, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x1f, 0x71, 0x0e, 0x01, 0x0b, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x01, 0x1f, 0x7a, 0x0e, 0x01,
+ 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x1f,
+ 0x83, 0x0e, 0x01, 0x0d, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x01, 0x1f, 0x8c, 0x0e, 0x01, 0x0e, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x01, 0x1f, 0x95, 0x00,
+ 0x00, 0x33, 0xfb, 0x00, 0x34, 0x02, 0x35, 0x82,
+ 0x00, 0x34, 0x05, 0x3c, 0x1b, 0x00, 0x34, 0x06,
+ 0x43, 0x5a, 0x00, 0x34, 0x27, 0x36, 0x56, 0x00,
+ 0x34, 0x2c, 0x43, 0x5e, 0x00, 0x34, 0x2e, 0x37,
+ 0x88, 0x00, 0x34, 0x68, 0x36, 0xdf, 0x00, 0x34,
+ 0x6a, 0x43, 0x75, 0x00, 0x34, 0x88, 0x3c, 0x52,
+ 0x00, 0x34, 0x92, 0x43, 0x8e, 0x00, 0x34, 0xb5,
+ 0x41, 0x99, 0x00, 0x34, 0xbc, 0x43, 0x97, 0x00,
+ 0x34, 0xc1, 0x47, 0xd0, 0x00, 0x34, 0xc7, 0x43,
+ 0x9b, 0x00, 0x34, 0xdb, 0x3c, 0x41, 0x00, 0x35,
+ 0x1f, 0x36, 0x29, 0x00, 0x35, 0x3e, 0x37, 0x1e,
+ 0x00, 0x35, 0x5d, 0x43, 0xbd, 0x00, 0x35, 0x5e,
+ 0x43, 0xbe, 0x00, 0x35, 0x63, 0x43, 0xc0, 0x00,
+ 0x35, 0x6e, 0x43, 0xc4, 0x00, 0x35, 0xa6, 0x43,
+ 0xd9, 0x00, 0x35, 0xa8, 0x43, 0xdb, 0x00, 0x35,
+ 0xc5, 0x43, 0xe1, 0x00, 0x35, 0xda, 0x43, 0xea,
+ 0x00, 0x35, 0xde, 0x4e, 0x63, 0x00, 0x35, 0xf4,
+ 0x43, 0xf3, 0x00, 0x36, 0x05, 0x43, 0xfa, 0x00,
+ 0x36, 0x14, 0x4a, 0xbb, 0x00, 0x36, 0x4a, 0x44,
+ 0x21, 0x00, 0x36, 0x91, 0x44, 0x41, 0x00, 0x36,
+ 0x96, 0x44, 0x45, 0x00, 0x36, 0x99, 0x44, 0x43,
+ 0x00, 0x36, 0xcf, 0x44, 0x56, 0x00, 0x37, 0x61,
+ 0x44, 0x78, 0x00, 0x37, 0x62, 0x44, 0x79, 0x00,
+ 0x37, 0x6b, 0x44, 0x7d, 0x00, 0x37, 0x6c, 0x44,
+ 0x7c, 0x00, 0x37, 0x75, 0x44, 0x80, 0x00, 0x37,
+ 0x8d, 0x36, 0x1a, 0x00, 0x37, 0xc1, 0x44, 0x8e,
+ 0x00, 0x37, 0xe2, 0x37, 0x2b, 0x00, 0x37, 0xe8,
+ 0x44, 0xa2, 0x00, 0x37, 0xf4, 0x44, 0xa5, 0x00,
+ 0x37, 0xfd, 0x44, 0xa8, 0x00, 0x38, 0x00, 0x44,
+ 0xaa, 0x00, 0x38, 0x2f, 0x44, 0xb4, 0x00, 0x38,
+ 0x36, 0x44, 0xb5, 0x00, 0x38, 0x40, 0x44, 0xb6,
+ 0x00, 0x38, 0x5c, 0x44, 0xba, 0x00, 0x38, 0x61,
+ 0x44, 0xbc, 0x00, 0x38, 0xa1, 0x4e, 0xcb, 0x00,
+ 0x38, 0xad, 0x4a, 0xbc, 0x00, 0x38, 0xfa, 0x36,
+ 0x1c, 0x00, 0x39, 0x17, 0x44, 0xd9, 0x00, 0x39,
+ 0x1a, 0x44, 0xdc, 0x00, 0x39, 0x6f, 0x44, 0xeb,
+ 0x00, 0x39, 0xa4, 0x4e, 0x9a, 0x00, 0x39, 0xb8,
+ 0x4e, 0x9b, 0x00, 0x3a, 0x5c, 0x4e, 0x9f, 0x00,
+ 0x3a, 0x6e, 0x45, 0x31, 0x00, 0x3a, 0x73, 0x45,
+ 0x34, 0x00, 0x3a, 0x85, 0x4e, 0xae, 0x00, 0x3a,
+ 0xc4, 0x4e, 0xa7, 0x00, 0x3a, 0xcb, 0x4e, 0xa8,
+ 0x00, 0x3a, 0xd6, 0x45, 0x43, 0x00, 0x3a, 0xd7,
+ 0x45, 0x5e, 0x00, 0x3a, 0xea, 0x45, 0x4d, 0x00,
+ 0x3a, 0xf3, 0x3c, 0x40, 0x00, 0x3b, 0x0e, 0x45,
+ 0x58, 0x00, 0x3b, 0x1a, 0x45, 0x5c, 0x00, 0x3b,
+ 0x1c, 0x45, 0x5d, 0x00, 0x3b, 0x22, 0x3c, 0x49,
+ 0x00, 0x3b, 0x6d, 0x45, 0x8c, 0x00, 0x3b, 0x77,
+ 0x45, 0x85, 0x00, 0x3b, 0x87, 0x45, 0xa2, 0x00,
+ 0x3b, 0x88, 0x36, 0x8d, 0x00, 0x3b, 0x8d, 0x45,
+ 0xa4, 0x00, 0x3b, 0xa4, 0x45, 0xaa, 0x00, 0x3b,
+ 0xb6, 0x42, 0x0e, 0x00, 0x3b, 0xc3, 0x42, 0x0f,
+ 0x00, 0x3b, 0xcd, 0x45, 0xb8, 0x00, 0x3b, 0xf0,
+ 0x45, 0xc9, 0x00, 0x3b, 0xf3, 0x4e, 0xb7, 0x00,
+ 0x3c, 0x0f, 0x42, 0x17, 0x00, 0x3c, 0x26, 0x45,
+ 0xdf, 0x00, 0x3c, 0xc3, 0x45, 0xfc, 0x00, 0x3c,
+ 0xd2, 0x46, 0x01, 0x00, 0x3d, 0x11, 0x46, 0x25,
+ 0x00, 0x3d, 0x1e, 0x46, 0x30, 0x00, 0x3d, 0x31,
+ 0x4e, 0xbe, 0x00, 0x3d, 0x4e, 0x1d, 0xe7, 0x00,
+ 0x3d, 0x64, 0x46, 0x4a, 0x00, 0x3d, 0x9a, 0x46,
+ 0x58, 0x00, 0x3d, 0xc0, 0x46, 0x6a, 0x00, 0x3d,
+ 0xcc, 0x4a, 0xbd, 0x00, 0x3d, 0xd4, 0x46, 0x6f,
+ 0x00, 0x3e, 0x05, 0x46, 0x7b, 0x00, 0x3e, 0x3f,
+ 0x42, 0x48, 0x00, 0x3e, 0x40, 0x4e, 0xca, 0x00,
+ 0x3e, 0x60, 0x46, 0x8b, 0x00, 0x3e, 0x66, 0x46,
+ 0x8d, 0x00, 0x3e, 0x68, 0x46, 0x8e, 0x00, 0x3e,
+ 0x83, 0x46, 0x95, 0x00, 0x3e, 0x8a, 0x3c, 0x43,
+ 0x00, 0x3e, 0x94, 0x46, 0x9b, 0x00, 0x3e, 0xda,
+ 0x3c, 0x48, 0x00, 0x3f, 0x57, 0x46, 0xcb, 0x00,
+ 0x3f, 0x72, 0x42, 0x58, 0x00, 0x3f, 0x75, 0x46,
+ 0xd9, 0x00, 0x3f, 0x77, 0x46, 0xdb, 0x00, 0x3f,
+ 0xae, 0x46, 0xed, 0x00, 0x3f, 0xb1, 0x37, 0x54,
+ 0x00, 0x3f, 0xc9, 0x46, 0xf8, 0x00, 0x3f, 0xd7,
+ 0x46, 0xfd, 0x00, 0x3f, 0xdc, 0x4a, 0xbe, 0x00,
+ 0x40, 0x39, 0x47, 0x0f, 0x00, 0x40, 0x58, 0x47,
+ 0x16, 0x00, 0x40, 0x93, 0x3c, 0x4c, 0x00, 0x41,
+ 0x03, 0x3c, 0x4f, 0x00, 0x41, 0x05, 0x47, 0x3b,
+ 0x00, 0x41, 0x48, 0x47, 0x47, 0x00, 0x41, 0x4f,
+ 0x47, 0x4a, 0x00, 0x41, 0x63, 0x47, 0x4e, 0x00,
+ 0x41, 0xb4, 0x47, 0x5d, 0x00, 0x41, 0xbf, 0x47,
+ 0x60, 0x00, 0x41, 0xe6, 0x47, 0x6b, 0x00, 0x41,
+ 0xee, 0x47, 0x6f, 0x00, 0x41, 0xf3, 0x47, 0x6c,
+ 0x00, 0x42, 0x07, 0x47, 0x76, 0x00, 0x42, 0x0e,
+ 0x47, 0x79, 0x00, 0x42, 0x64, 0x37, 0x60, 0x00,
+ 0x42, 0x93, 0x3c, 0x50, 0x00, 0x42, 0xc6, 0x47,
+ 0x9f, 0x00, 0x42, 0xd6, 0x47, 0xaa, 0x00, 0x42,
+ 0xdd, 0x47, 0xae, 0x00, 0x43, 0x02, 0x47, 0xbc,
+ 0x00, 0x43, 0x2b, 0x47, 0xc9, 0x00, 0x43, 0x43,
+ 0x47, 0xcb, 0x00, 0x43, 0xee, 0x47, 0xf7, 0x00,
+ 0x43, 0xf0, 0x47, 0xfa, 0x00, 0x44, 0x08, 0x48,
+ 0x00, 0x00, 0x44, 0x0c, 0x3c, 0x42, 0x00, 0x44,
+ 0x17, 0x48, 0x02, 0x00, 0x44, 0x1c, 0x48, 0x03,
+ 0x00, 0x44, 0x22, 0x48, 0x05, 0x00, 0x44, 0x53,
+ 0x37, 0x73, 0x00, 0x44, 0x5b, 0x42, 0xa4, 0x00,
+ 0x44, 0x76, 0x48, 0x1c, 0x00, 0x44, 0x7a, 0x48,
+ 0x1d, 0x00, 0x44, 0x91, 0x48, 0x23, 0x00, 0x44,
+ 0xb3, 0x48, 0x3e, 0x00, 0x44, 0xbe, 0x48, 0x3c,
+ 0x00, 0x44, 0xd4, 0x48, 0x3d, 0x00, 0x45, 0x08,
+ 0x48, 0x5c, 0x00, 0x45, 0x0d, 0x48, 0x58, 0x00,
+ 0x45, 0x25, 0x37, 0x7e, 0x00, 0x45, 0x43, 0x48,
+ 0x6c, 0x00, 0x45, 0x7a, 0x3c, 0x4b, 0x00, 0x45,
+ 0x9d, 0x42, 0xd4, 0x00, 0x45, 0xb8, 0x48, 0xa0,
+ 0x00, 0x45, 0xbe, 0x4a, 0xbf, 0x00, 0x45, 0xe5,
+ 0x48, 0xba, 0x00, 0x45, 0xea, 0x42, 0xd9, 0x00,
+ 0x46, 0x0f, 0x48, 0xca, 0x00, 0x46, 0x10, 0x4a,
+ 0xc0, 0x00, 0x46, 0x41, 0x48, 0xd8, 0x00, 0x46,
+ 0x65, 0x3c, 0x4e, 0x00, 0x46, 0xa1, 0x48, 0xe9,
+ 0x00, 0x46, 0xae, 0x3c, 0x51, 0x00, 0x46, 0xaf,
+ 0x48, 0xed, 0x00, 0x47, 0x0c, 0x49, 0x02, 0x00,
+ 0x47, 0x1f, 0x4e, 0xfb, 0x00, 0x47, 0x64, 0x49,
+ 0x18, 0x00, 0x47, 0xe6, 0x37, 0x90, 0x00, 0x47,
+ 0xfd, 0x49, 0x24, 0x00, 0x48, 0x16, 0x49, 0x2e,
+ 0x00, 0x48, 0x1e, 0x4f, 0x01, 0x00, 0x48, 0x44,
+ 0x42, 0xf5, 0x00, 0x48, 0x4e, 0x49, 0x3a, 0x00,
+ 0x48, 0xb5, 0x49, 0x5b, 0x00, 0x49, 0xb0, 0x43,
+ 0x1f, 0x00, 0x49, 0xe7, 0x49, 0xd2, 0x00, 0x49,
+ 0xfa, 0x49, 0xd6, 0x00, 0x4a, 0x04, 0x49, 0xdb,
+ 0x00, 0x4a, 0x29, 0x49, 0xde, 0x00, 0x4a, 0xbc,
+ 0x49, 0xf6, 0x00, 0x4b, 0x38, 0x35, 0xdf, 0x00,
+ 0x4b, 0x3b, 0x4a, 0x0e, 0x00, 0x4b, 0x7e, 0x4a,
+ 0xc1, 0x00, 0x4b, 0xc2, 0x4a, 0x33, 0x00, 0x4b,
+ 0xca, 0x4a, 0x35, 0x00, 0x4b, 0xd2, 0x4a, 0x37,
+ 0x00, 0x4b, 0xe8, 0x3c, 0x46, 0x00, 0x4c, 0x17,
+ 0x43, 0x34, 0x00, 0x4c, 0x20, 0x4a, 0x48, 0x00,
+ 0x4c, 0x38, 0x4a, 0xc2, 0x00, 0x4c, 0xc4, 0x4a,
+ 0x84, 0x00, 0x4c, 0xd1, 0x4a, 0x87, 0x00, 0x4c,
+ 0xe1, 0x4a, 0xc3, 0x00, 0x4d, 0x07, 0x4a, 0x9b,
+ 0x00, 0x4d, 0x77, 0x4a, 0xab, 0x00, 0x4e, 0x00,
+ 0x04, 0xb0, 0x00, 0x4e, 0x01, 0x0b, 0xb8, 0x00,
+ 0x4e, 0x02, 0x43, 0x52, 0x00, 0x4e, 0x03, 0x08,
+ 0xe3, 0x00, 0x4e, 0x04, 0x37, 0xd8, 0x00, 0x4e,
+ 0x05, 0x37, 0xd9, 0x00, 0x4e, 0x07, 0x0e, 0xaa,
+ 0x00, 0x4e, 0x08, 0x09, 0xce, 0x00, 0x4e, 0x09,
+ 0x08, 0x7e, 0x00, 0x4e, 0x0a, 0x09, 0xcd, 0x00,
+ 0x4e, 0x0b, 0x05, 0x3c, 0x00, 0x4e, 0x0c, 0x4a,
+ 0xc4, 0x00, 0x4e, 0x0d, 0x0d, 0xc6, 0x00, 0x4e,
+ 0x0e, 0x0f, 0x29, 0x00, 0x4e, 0x0f, 0x43, 0x53,
+ 0x00, 0x4e, 0x10, 0x0f, 0xfb, 0x00, 0x4e, 0x11,
+ 0x04, 0xd1, 0x00, 0x4e, 0x12, 0x43, 0x54, 0x00,
+ 0x4e, 0x14, 0x05, 0xcc, 0x00, 0x4e, 0x15, 0x0f,
+ 0xfc, 0x00, 0x4e, 0x16, 0x0a, 0x48, 0x00, 0x4e,
+ 0x17, 0x10, 0xd7, 0x00, 0x4e, 0x18, 0x06, 0x70,
+ 0x00, 0x4e, 0x19, 0x0e, 0x0a, 0x00, 0x4e, 0x1e,
+ 0x09, 0xcf, 0x00, 0x4e, 0x1f, 0x37, 0xda, 0x00,
+ 0x4e, 0x21, 0x0f, 0x86, 0x00, 0x4e, 0x23, 0x4a,
+ 0xc5, 0x00, 0x4e, 0x24, 0x4a, 0xc6, 0x00, 0x4e,
+ 0x26, 0x0e, 0x12, 0x00, 0x4e, 0x28, 0x20, 0xb3,
+ 0x00, 0x4e, 0x29, 0x43, 0x55, 0x00, 0x4e, 0x2a,
+ 0x0f, 0xfd, 0x00, 0x4e, 0x2b, 0x37, 0xdb, 0x00,
+ 0x4e, 0x2c, 0x37, 0x4d, 0x00, 0x4e, 0x2d, 0x0b,
+ 0xa4, 0x00, 0x4e, 0x2e, 0x43, 0x56, 0x00, 0x4e,
+ 0x2f, 0x37, 0xdc, 0x00, 0x4e, 0x30, 0x37, 0xdd,
+ 0x00, 0x4e, 0x31, 0x0f, 0xfe, 0x00, 0x4e, 0x32,
+ 0x06, 0xf2, 0x00, 0x4e, 0x35, 0x52, 0x53, 0x00,
+ 0x4e, 0x36, 0x0f, 0xff, 0x00, 0x4e, 0x37, 0x36,
+ 0x9d, 0x00, 0x4e, 0x38, 0x06, 0x19, 0x00, 0x4e,
+ 0x39, 0x0b, 0x6e, 0x00, 0x4e, 0x3b, 0x09, 0x13,
+ 0x00, 0x4e, 0x3c, 0x10, 0x00, 0x00, 0x4e, 0x3f,
+ 0x10, 0x01, 0x00, 0x4e, 0x40, 0x37, 0xde, 0x00,
+ 0x4e, 0x41, 0x37, 0xdf, 0x00, 0x4e, 0x42, 0x10,
+ 0x02, 0x00, 0x4e, 0x43, 0x0c, 0xeb, 0x00, 0x4e,
+ 0x44, 0x37, 0xe0, 0x00, 0x4e, 0x45, 0x06, 0x71,
+ 0x00, 0x4e, 0x47, 0x43, 0x57, 0x00, 0x4e, 0x48,
+ 0x37, 0x2e, 0x00, 0x4e, 0x4b, 0x0c, 0xed, 0x00,
+ 0x4e, 0x4d, 0x0c, 0xbb, 0x00, 0x4e, 0x4e, 0x07,
+ 0x77, 0x00, 0x4e, 0x4f, 0x0e, 0x61, 0x00, 0x4e,
+ 0x51, 0x43, 0x59, 0x00, 0x4e, 0x55, 0x19, 0x50,
+ 0x00, 0x4e, 0x56, 0x10, 0x03, 0x00, 0x4e, 0x57,
+ 0x09, 0xd0, 0x00, 0x4e, 0x58, 0x10, 0x04, 0x00,
+ 0x4e, 0x59, 0x05, 0x35, 0x00, 0x4e, 0x5a, 0x37,
+ 0xe1, 0x00, 0x4e, 0x5c, 0x52, 0x54, 0x00, 0x4e,
+ 0x5d, 0x06, 0xdd, 0x00, 0x4e, 0x5e, 0x07, 0xa4,
+ 0x00, 0x4e, 0x5f, 0x0e, 0xf5, 0x00, 0x4e, 0x62,
+ 0x12, 0x33, 0x00, 0x4e, 0x63, 0x52, 0x55, 0x00,
+ 0x4e, 0x68, 0x52, 0x56, 0x00, 0x4e, 0x69, 0x43,
+ 0x5c, 0x00, 0x4e, 0x71, 0x0f, 0x5a, 0x00, 0x4e,
+ 0x73, 0x0c, 0xd5, 0x00, 0x4e, 0x74, 0x52, 0x57,
+ 0x00, 0x4e, 0x75, 0x52, 0x58, 0x00, 0x4e, 0x79,
+ 0x4a, 0xc7, 0x00, 0x4e, 0x7e, 0x05, 0xe1, 0x00,
+ 0x4e, 0x7f, 0x37, 0xe2, 0x00, 0x4e, 0x80, 0x06,
+ 0x4f, 0x00, 0x4e, 0x82, 0x10, 0x05, 0x00, 0x4e,
+ 0x85, 0x10, 0x06, 0x00, 0x4e, 0x86, 0x0f, 0x83,
+ 0x00, 0x4e, 0x88, 0x0f, 0x27, 0x00, 0x4e, 0x89,
+ 0x0a, 0xea, 0x00, 0x4e, 0x8a, 0x10, 0x08, 0x00,
+ 0x4e, 0x8b, 0x08, 0xc4, 0x00, 0x4e, 0x8c, 0x0c,
+ 0xcb, 0x00, 0x4e, 0x8d, 0x37, 0xe3, 0x00, 0x4e,
+ 0x8e, 0x10, 0x0b, 0x00, 0x4e, 0x91, 0x04, 0xe0,
+ 0x00, 0x4e, 0x92, 0x07, 0x93, 0x00, 0x4e, 0x94,
+ 0x07, 0x92, 0x00, 0x4e, 0x95, 0x04, 0xaa, 0x00,
+ 0x4e, 0x96, 0x37, 0xe4, 0x00, 0x4e, 0x97, 0x52,
+ 0x59, 0x00, 0x4e, 0x98, 0x0f, 0xf1, 0x00, 0x4e,
+ 0x99, 0x0f, 0xf0, 0x00, 0x4e, 0x9b, 0x08, 0x23,
+ 0x00, 0x4e, 0x9c, 0x04, 0x65, 0x00, 0x4e, 0x9d,
+ 0x43, 0x5d, 0x00, 0x4e, 0x9e, 0x10, 0x0c, 0x00,
+ 0x4e, 0x9f, 0x10, 0x0d, 0x00, 0x4e, 0xa0, 0x10,
+ 0x0e, 0x00, 0x4e, 0xa1, 0x0e, 0x62, 0x00, 0x4e,
+ 0xa2, 0x10, 0x0f, 0x00, 0x4e, 0xa4, 0x07, 0xa6,
+ 0x00, 0x4e, 0xa5, 0x04, 0xab, 0x00, 0x4e, 0xa6,
+ 0x0e, 0xa0, 0x00, 0x4e, 0xa8, 0x06, 0x96, 0x00,
+ 0x4e, 0xab, 0x06, 0x97, 0x00, 0x4e, 0xac, 0x06,
+ 0x98, 0x00, 0x4e, 0xad, 0x0b, 0xfe, 0x00, 0x4e,
+ 0xae, 0x0f, 0x84, 0x00, 0x4e, 0xaf, 0x52, 0x5a,
+ 0x00, 0x4e, 0xb0, 0x10, 0x10, 0x00, 0x4e, 0xb3,
+ 0x10, 0x11, 0x00, 0x4e, 0xb6, 0x10, 0x12, 0x00,
+ 0x4e, 0xb9, 0x37, 0xe5, 0x00, 0x4e, 0xba, 0x0a,
+ 0x13, 0x00, 0x4e, 0xbb, 0x36, 0x20, 0x00, 0x4e,
+ 0xbc, 0x43, 0x5f, 0x00, 0x4e, 0xc0, 0x09, 0x44,
+ 0x00, 0x4e, 0xc1, 0x0a, 0x14, 0x00, 0x4e, 0xc2,
+ 0x10, 0x17, 0x00, 0x4e, 0xc3, 0x43, 0x60, 0x00,
+ 0x4e, 0xc4, 0x10, 0x15, 0x00, 0x4e, 0xc6, 0x10,
+ 0x16, 0x00, 0x4e, 0xc7, 0x06, 0x72, 0x00, 0x4e,
+ 0xc8, 0x43, 0x61, 0x00, 0x4e, 0xca, 0x08, 0x13,
+ 0x00, 0x4e, 0xcb, 0x05, 0x70, 0x00, 0x4e, 0xcd,
+ 0x10, 0x14, 0x00, 0x4e, 0xce, 0x10, 0x13, 0x00,
+ 0x4e, 0xcf, 0x0d, 0xf9, 0x00, 0x4e, 0xd0, 0x37,
+ 0xe6, 0x00, 0x4e, 0xd4, 0x08, 0x94, 0x00, 0x4e,
+ 0xd5, 0x08, 0x93, 0x00, 0x4e, 0xd6, 0x0b, 0x1e,
+ 0x00, 0x4e, 0xd7, 0x10, 0x18, 0x00, 0x4e, 0xd8,
+ 0x0d, 0xc7, 0x00, 0x4e, 0xd9, 0x0a, 0x8b, 0x00,
+ 0x4e, 0xda, 0x43, 0x63, 0x00, 0x4e, 0xdb, 0x52,
+ 0x5b, 0x00, 0x4e, 0xdd, 0x02, 0x90, 0x00, 0x4e,
+ 0xde, 0x10, 0x19, 0x00, 0x4e, 0xdf, 0x10, 0x1b,
+ 0x00, 0x4e, 0xe0, 0x37, 0xe7, 0x00, 0x4e, 0xe1,
+ 0x20, 0xb4, 0x00, 0x4e, 0xe2, 0x52, 0x5c, 0x00,
+ 0x4e, 0xe3, 0x0b, 0x45, 0x00, 0x4e, 0xe4, 0x0f,
+ 0xa9, 0x00, 0x4e, 0xe5, 0x04, 0x8e, 0x00, 0x4e,
+ 0xe8, 0x52, 0x5d, 0x00, 0x4e, 0xeb, 0x43, 0x62,
+ 0x00, 0x4e, 0xed, 0x10, 0x1a, 0x00, 0x4e, 0xee,
+ 0x05, 0x3e, 0x00, 0x4e, 0xef, 0x52, 0x5e, 0x00,
+ 0x4e, 0xf0, 0x06, 0xbc, 0x00, 0x4e, 0xf1, 0x43,
+ 0x64, 0x00, 0x4e, 0xf2, 0x0b, 0xa5, 0x00, 0x4e,
+ 0xf3, 0x4a, 0xc8, 0x00, 0x4e, 0xf5, 0x43, 0x65,
+ 0x00, 0x4e, 0xf6, 0x07, 0x45, 0x00, 0x4e, 0xf7,
+ 0x10, 0x1c, 0x00, 0x4e, 0xfb, 0x0c, 0xda, 0x00,
+ 0x4e, 0xfc, 0x20, 0xb5, 0x00, 0x4e, 0xfd, 0x37,
+ 0xe8, 0x00, 0x4e, 0xfe, 0x52, 0x5f, 0x00, 0x4e,
+ 0xff, 0x37, 0xe9, 0x00, 0x4f, 0x00, 0x20, 0xb6,
+ 0x00, 0x4f, 0x01, 0x06, 0x27, 0x00, 0x4f, 0x02,
+ 0x52, 0x60, 0x00, 0x4f, 0x03, 0x20, 0xb7, 0x00,
+ 0x4f, 0x08, 0x52, 0x61, 0x00, 0x4f, 0x09, 0x10,
+ 0x1d, 0x00, 0x4f, 0x0a, 0x04, 0x8f, 0x00, 0x4f,
+ 0x0b, 0x37, 0xea, 0x00, 0x4f, 0x0c, 0x4a, 0xc9,
+ 0x00, 0x4f, 0x0d, 0x07, 0x94, 0x00, 0x4f, 0x0e,
+ 0x06, 0x28, 0x00, 0x4f, 0x0f, 0x0d, 0xec, 0x00,
+ 0x4f, 0x10, 0x0d, 0x46, 0x00, 0x4f, 0x11, 0x06,
+ 0x73, 0x00, 0x4f, 0x12, 0x52, 0x62, 0x00, 0x4f,
+ 0x15, 0x37, 0xeb, 0x00, 0x4f, 0x16, 0x43, 0x66,
+ 0x00, 0x4f, 0x17, 0x52, 0x63, 0x00, 0x4f, 0x19,
+ 0x4a, 0xca, 0x00, 0x4f, 0x1a, 0x05, 0x71, 0x00,
+ 0x4f, 0x1c, 0x10, 0x40, 0x00, 0x4f, 0x1d, 0x0c,
+ 0x3b, 0x00, 0x4f, 0x2b, 0x4a, 0xcb, 0x00, 0x4f,
+ 0x2e, 0x4a, 0xcc, 0x00, 0x4f, 0x2f, 0x0d, 0x22,
+ 0x00, 0x4f, 0x30, 0x10, 0x1f, 0x00, 0x4f, 0x31,
+ 0x4a, 0xcd, 0x00, 0x4f, 0x33, 0x52, 0x64, 0x00,
+ 0x4f, 0x34, 0x0d, 0x50, 0x00, 0x4f, 0x35, 0x52,
+ 0x65, 0x00, 0x4f, 0x36, 0x0f, 0xaa, 0x00, 0x4f,
+ 0x37, 0x43, 0x68, 0x00, 0x4f, 0x38, 0x09, 0xf3,
+ 0x00, 0x4f, 0x39, 0x20, 0xb8, 0x00, 0x4f, 0x3a,
+ 0x08, 0x95, 0x00, 0x4f, 0x3b, 0x37, 0xed, 0x00,
+ 0x4f, 0x3c, 0x08, 0xc5, 0x00, 0x4f, 0x3d, 0x05,
+ 0x40, 0x00, 0x4f, 0x3e, 0x43, 0x69, 0x00, 0x4f,
+ 0x40, 0x52, 0x66, 0x00, 0x4f, 0x42, 0x52, 0x67,
+ 0x00, 0x4f, 0x43, 0x0b, 0xed, 0x00, 0x4f, 0x46,
+ 0x0b, 0x60, 0x00, 0x4f, 0x47, 0x10, 0x23, 0x00,
+ 0x4f, 0x48, 0x41, 0x8b, 0x00, 0x4f, 0x49, 0x37,
+ 0xee, 0x00, 0x4f, 0x4b, 0x52, 0x68, 0x00, 0x4f,
+ 0x4c, 0x52, 0x69, 0x00, 0x4f, 0x4d, 0x04, 0x90,
+ 0x00, 0x4f, 0x4e, 0x0b, 0xff, 0x00, 0x4f, 0x4f,
+ 0x09, 0x45, 0x00, 0x4f, 0x50, 0x08, 0x24, 0x00,
+ 0x4f, 0x51, 0x0f, 0x0e, 0x00, 0x4f, 0x52, 0x52,
+ 0x6a, 0x00, 0x4f, 0x53, 0x0b, 0x2e, 0x00, 0x4f,
+ 0x54, 0x37, 0xef, 0x00, 0x4f, 0x55, 0x05, 0x3f,
+ 0x00, 0x4f, 0x56, 0x20, 0xb9, 0x00, 0x4f, 0x57,
+ 0x10, 0x22, 0x00, 0x4f, 0x58, 0x43, 0x6a, 0x00,
+ 0x4f, 0x59, 0x0f, 0x28, 0x00, 0x4f, 0x5a, 0x10,
+ 0x1e, 0x00, 0x4f, 0x5b, 0x10, 0x20, 0x00, 0x4f,
+ 0x5c, 0x08, 0x5e, 0x00, 0x4f, 0x5d, 0x10, 0x21,
+ 0x00, 0x4f, 0x5e, 0x11, 0xd3, 0x00, 0x4f, 0x5f,
+ 0x41, 0x8c, 0x00, 0x4f, 0x60, 0x37, 0xec, 0x00,
+ 0x4f, 0x63, 0x52, 0x6b, 0x00, 0x4f, 0x64, 0x43,
+ 0x67, 0x00, 0x4f, 0x69, 0x10, 0x29, 0x00, 0x4f,
+ 0x6a, 0x41, 0x8d, 0x00, 0x4f, 0x6c, 0x41, 0x8e,
+ 0x00, 0x4f, 0x6e, 0x52, 0x6c, 0x00, 0x4f, 0x6f,
+ 0x10, 0x2c, 0x00, 0x4f, 0x70, 0x10, 0x2a, 0x00,
+ 0x4f, 0x71, 0x52, 0x6d, 0x00, 0x4f, 0x73, 0x05,
+ 0x42, 0x00, 0x4f, 0x75, 0x0e, 0x0b, 0x00, 0x4f,
+ 0x76, 0x10, 0x24, 0x00, 0x4f, 0x77, 0x43, 0x6c,
+ 0x00, 0x4f, 0x78, 0x43, 0x6d, 0x00, 0x4f, 0x79,
+ 0x52, 0x6e, 0x00, 0x4f, 0x7a, 0x37, 0xf0, 0x00,
+ 0x4f, 0x7b, 0x10, 0x28, 0x00, 0x4f, 0x7c, 0x07,
+ 0xa7, 0x00, 0x4f, 0x7d, 0x37, 0xf1, 0x00, 0x4f,
+ 0x7e, 0x37, 0xf2, 0x00, 0x4f, 0x7f, 0x08, 0x96,
+ 0x00, 0x4f, 0x81, 0x52, 0x6f, 0x00, 0x4f, 0x82,
+ 0x43, 0x6e, 0x00, 0x4f, 0x83, 0x05, 0xe2, 0x00,
+ 0x4f, 0x84, 0x4a, 0xce, 0x00, 0x4f, 0x85, 0x43,
+ 0x6f, 0x00, 0x4f, 0x86, 0x10, 0x2d, 0x00, 0x4f,
+ 0x88, 0x10, 0x25, 0x00, 0x4f, 0x89, 0x52, 0x70,
+ 0x00, 0x4f, 0x8a, 0x20, 0xbb, 0x00, 0x4f, 0x8b,
+ 0x0f, 0xab, 0x00, 0x4f, 0x8c, 0x52, 0x71, 0x00,
+ 0x4f, 0x8d, 0x08, 0xc6, 0x00, 0x4f, 0x8e, 0x52,
+ 0x72, 0x00, 0x4f, 0x8f, 0x10, 0x26, 0x00, 0x4f,
+ 0x90, 0x52, 0x73, 0x00, 0x4f, 0x91, 0x10, 0x2b,
+ 0x00, 0x4f, 0x92, 0x20, 0xba, 0x00, 0x4f, 0x93,
+ 0x52, 0x74, 0x00, 0x4f, 0x94, 0x20, 0xbd, 0x00,
+ 0x4f, 0x96, 0x10, 0x2e, 0x00, 0x4f, 0x97, 0x37,
+ 0xf3, 0x00, 0x4f, 0x98, 0x10, 0x27, 0x00, 0x4f,
+ 0x99, 0x52, 0x75, 0x00, 0x4f, 0x9a, 0x20, 0xbc,
+ 0x00, 0x4f, 0x9b, 0x06, 0x99, 0x00, 0x4f, 0x9d,
+ 0x04, 0x91, 0x00, 0x4f, 0x9e, 0x4a, 0xcf, 0x00,
+ 0x4f, 0x9f, 0x52, 0x76, 0x00, 0x4f, 0xa0, 0x06,
+ 0x9a, 0x00, 0x4f, 0xa1, 0x05, 0x41, 0x00, 0x4f,
+ 0xab, 0x11, 0xd4, 0x00, 0x4f, 0xad, 0x0e, 0xa7,
+ 0x00, 0x4f, 0xae, 0x0d, 0xe0, 0x00, 0x4f, 0xaf,
+ 0x07, 0xa8, 0x00, 0x4f, 0xb2, 0x43, 0x71, 0x00,
+ 0x4f, 0xb5, 0x09, 0xf5, 0x00, 0x4f, 0xb6, 0x0f,
+ 0x7f, 0x00, 0x4f, 0xb7, 0x4a, 0xd0, 0x00, 0x4f,
+ 0xb9, 0x52, 0x77, 0x00, 0x4f, 0xbb, 0x52, 0x78,
+ 0x00, 0x4f, 0xbc, 0x52, 0x79, 0x00, 0x4f, 0xbd,
+ 0x52, 0x7a, 0x00, 0x4f, 0xbe, 0x37, 0xf4, 0x00,
+ 0x4f, 0xbf, 0x0e, 0x28, 0x00, 0x4f, 0xc0, 0x52,
+ 0x7b, 0x00, 0x4f, 0xc1, 0x52, 0x7c, 0x00, 0x4f,
+ 0xc2, 0x07, 0x0e, 0x00, 0x4f, 0xc3, 0x0b, 0x05,
+ 0x00, 0x4f, 0xc4, 0x05, 0x64, 0x00, 0x4f, 0xc5,
+ 0x43, 0x72, 0x00, 0x4f, 0xc6, 0x52, 0x7d, 0x00,
+ 0x4f, 0xc8, 0x52, 0x7e, 0x00, 0x4f, 0xc9, 0x20,
+ 0xac, 0x00, 0x4f, 0xca, 0x09, 0x5d, 0x00, 0x4f,
+ 0xcb, 0x43, 0x73, 0x00, 0x4f, 0xcc, 0x52, 0x7f,
+ 0x00, 0x4f, 0xcd, 0x20, 0xbe, 0x00, 0x4f, 0xce,
+ 0x10, 0x32, 0x00, 0x4f, 0xcf, 0x37, 0xf5, 0x00,
+ 0x4f, 0xd0, 0x10, 0x37, 0x00, 0x4f, 0xd1, 0x10,
+ 0x35, 0x00, 0x4f, 0xd2, 0x43, 0x74, 0x00, 0x4f,
+ 0xd3, 0x3c, 0x2f, 0x00, 0x4f, 0xd4, 0x10, 0x30,
+ 0x00, 0x4f, 0xd7, 0x0b, 0x0f, 0x00, 0x4f, 0xd8,
+ 0x10, 0x33, 0x00, 0x4f, 0xda, 0x10, 0x36, 0x00,
+ 0x4f, 0xdb, 0x10, 0x34, 0x00, 0x4f, 0xdc, 0x52,
+ 0x80, 0x00, 0x4f, 0xdd, 0x0e, 0x2d, 0x00, 0x4f,
+ 0xdf, 0x10, 0x31, 0x00, 0x4f, 0xe0, 0x1d, 0xec,
+ 0x00, 0x4f, 0xe1, 0x09, 0xf4, 0x00, 0x4f, 0xe2,
+ 0x52, 0x81, 0x00, 0x4f, 0xe3, 0x0e, 0xa1, 0x00,
+ 0x4f, 0xe4, 0x10, 0x38, 0x00, 0x4f, 0xe5, 0x10,
+ 0x39, 0x00, 0x4f, 0xe6, 0x43, 0x70, 0x00, 0x4f,
+ 0xee, 0x09, 0x2e, 0x00, 0x4f, 0xef, 0x10, 0x46,
+ 0x00, 0x4f, 0xf0, 0x52, 0x82, 0x00, 0x4f, 0xf1,
+ 0x35, 0xa3, 0x00, 0x4f, 0xf2, 0x43, 0x76, 0x00,
+ 0x4f, 0xf3, 0x0d, 0x06, 0x00, 0x4f, 0xf5, 0x0d,
+ 0xa8, 0x00, 0x4f, 0xf6, 0x10, 0x41, 0x00, 0x4f,
+ 0xf8, 0x0e, 0x40, 0x00, 0x4f, 0xfa, 0x05, 0x36,
+ 0x00, 0x4f, 0xfc, 0x52, 0x83, 0x00, 0x4f, 0xfd,
+ 0x37, 0xf6, 0x00, 0x4f, 0xfe, 0x10, 0x45, 0x00,
+ 0x4f, 0xff, 0x20, 0xc1, 0x00, 0x50, 0x00, 0x37,
+ 0xf7, 0x00, 0x50, 0x01, 0x37, 0xf8, 0x00, 0x50,
+ 0x02, 0x4f, 0x4b, 0x00, 0x50, 0x04, 0x4a, 0xd1,
+ 0x00, 0x50, 0x05, 0x10, 0x3f, 0x00, 0x50, 0x06,
+ 0x10, 0x48, 0x00, 0x50, 0x07, 0x52, 0x84, 0x00,
+ 0x50, 0x09, 0x0a, 0xd4, 0x00, 0x50, 0x0a, 0x52,
+ 0x85, 0x00, 0x50, 0x0b, 0x07, 0x78, 0x00, 0x50,
+ 0x0c, 0x4a, 0xd2, 0x00, 0x50, 0x0d, 0x0d, 0x12,
+ 0x00, 0x50, 0x0e, 0x41, 0x8f, 0x00, 0x50, 0x0f,
+ 0x16, 0x00, 0x00, 0x50, 0x10, 0x37, 0xf9, 0x00,
+ 0x50, 0x11, 0x10, 0x47, 0x00, 0x50, 0x12, 0x0c,
+ 0x57, 0x00, 0x50, 0x13, 0x43, 0x77, 0x00, 0x50,
+ 0x14, 0x10, 0x3c, 0x00, 0x50, 0x16, 0x07, 0xaa,
+ 0x00, 0x50, 0x17, 0x52, 0x86, 0x00, 0x50, 0x18,
+ 0x41, 0x90, 0x00, 0x50, 0x19, 0x07, 0xa9, 0x00,
+ 0x50, 0x1a, 0x10, 0x3a, 0x00, 0x50, 0x1b, 0x37,
+ 0xfa, 0x00, 0x50, 0x1c, 0x43, 0x78, 0x00, 0x50,
+ 0x1d, 0x52, 0x87, 0x00, 0x50, 0x1e, 0x20, 0xc2,
+ 0x00, 0x50, 0x1f, 0x09, 0x06, 0x00, 0x50, 0x21,
+ 0x10, 0x42, 0x00, 0x50, 0x22, 0x20, 0xc0, 0x00,
+ 0x50, 0x23, 0x0e, 0x3f, 0x00, 0x50, 0x24, 0x0b,
+ 0x8b, 0x00, 0x50, 0x25, 0x10, 0x3e, 0x00, 0x50,
+ 0x26, 0x07, 0x47, 0x00, 0x50, 0x27, 0x37, 0xfb,
+ 0x00, 0x50, 0x28, 0x10, 0x3b, 0x00, 0x50, 0x29,
+ 0x10, 0x43, 0x00, 0x50, 0x2a, 0x10, 0x3d, 0x00,
+ 0x50, 0x2b, 0x0f, 0x99, 0x00, 0x50, 0x2c, 0x10,
+ 0x44, 0x00, 0x50, 0x2d, 0x0f, 0xe7, 0x00, 0x50,
+ 0x2e, 0x37, 0xfc, 0x00, 0x50, 0x30, 0x52, 0x88,
+ 0x00, 0x50, 0x32, 0x52, 0x89, 0x00, 0x50, 0x33,
+ 0x52, 0x8a, 0x00, 0x50, 0x35, 0x52, 0x8b, 0x00,
+ 0x50, 0x36, 0x06, 0xde, 0x00, 0x50, 0x39, 0x07,
+ 0x46, 0x00, 0x50, 0x3b, 0x38, 0x00, 0x00, 0x50,
+ 0x40, 0x20, 0xbf, 0x00, 0x50, 0x41, 0x41, 0x91,
+ 0x00, 0x50, 0x42, 0x20, 0xc5, 0x00, 0x50, 0x43,
+ 0x10, 0x49, 0x00, 0x50, 0x45, 0x52, 0x8c, 0x00,
+ 0x50, 0x46, 0x20, 0xc3, 0x00, 0x50, 0x47, 0x10,
+ 0x4a, 0x00, 0x50, 0x48, 0x10, 0x4e, 0x00, 0x50,
+ 0x49, 0x04, 0x92, 0x00, 0x50, 0x4a, 0x52, 0x8d,
+ 0x00, 0x50, 0x4c, 0x4a, 0xd3, 0x00, 0x50, 0x4e,
+ 0x43, 0x79, 0x00, 0x50, 0x4f, 0x0e, 0x20, 0x00,
+ 0x50, 0x50, 0x10, 0x4d, 0x00, 0x50, 0x51, 0x52,
+ 0x8e, 0x00, 0x50, 0x52, 0x52, 0x8f, 0x00, 0x50,
+ 0x53, 0x43, 0x7a, 0x00, 0x50, 0x55, 0x10, 0x4c,
+ 0x00, 0x50, 0x56, 0x10, 0x50, 0x00, 0x50, 0x57,
+ 0x37, 0xfd, 0x00, 0x50, 0x59, 0x52, 0x90, 0x00,
+ 0x50, 0x5a, 0x10, 0x4f, 0x00, 0x50, 0x5c, 0x0c,
+ 0x00, 0x00, 0x50, 0x5f, 0x4a, 0xd4, 0x00, 0x50,
+ 0x60, 0x52, 0x91, 0x00, 0x50, 0x62, 0x4a, 0xd5,
+ 0x00, 0x50, 0x63, 0x43, 0x7b, 0x00, 0x50, 0x65,
+ 0x07, 0x48, 0x00, 0x50, 0x66, 0x37, 0xfe, 0x00,
+ 0x50, 0x67, 0x52, 0x92, 0x00, 0x50, 0x6a, 0x37,
+ 0xff, 0x00, 0x50, 0x6c, 0x10, 0x51, 0x00, 0x50,
+ 0x6d, 0x52, 0x93, 0x00, 0x50, 0x70, 0x20, 0xc4,
+ 0x00, 0x50, 0x71, 0x52, 0x94, 0x00, 0x50, 0x72,
+ 0x08, 0xf1, 0x00, 0x50, 0x74, 0x0b, 0x06, 0x00,
+ 0x50, 0x75, 0x0c, 0x01, 0x00, 0x50, 0x76, 0x06,
+ 0xee, 0x00, 0x50, 0x77, 0x4a, 0xd6, 0x00, 0x50,
+ 0x78, 0x10, 0x52, 0x00, 0x50, 0x7d, 0x06, 0x50,
+ 0x00, 0x50, 0x80, 0x10, 0x53, 0x00, 0x50, 0x81,
+ 0x52, 0x95, 0x00, 0x50, 0x83, 0x52, 0x96, 0x00,
+ 0x50, 0x84, 0x52, 0x97, 0x00, 0x50, 0x85, 0x10,
+ 0x55, 0x00, 0x50, 0x86, 0x52, 0x98, 0x00, 0x50,
+ 0x88, 0x43, 0x7d, 0x00, 0x50, 0x8a, 0x52, 0x99,
+ 0x00, 0x50, 0x8d, 0x0e, 0x63, 0x00, 0x50, 0x8e,
+ 0x4a, 0xd7, 0x00, 0x50, 0x8f, 0x38, 0x01, 0x00,
+ 0x50, 0x90, 0x52, 0x9a, 0x00, 0x50, 0x91, 0x07,
+ 0x3c, 0x00, 0x50, 0x92, 0x43, 0x7e, 0x00, 0x50,
+ 0x93, 0x43, 0x7f, 0x00, 0x50, 0x94, 0x20, 0xc6,
+ 0x00, 0x50, 0x95, 0x43, 0x80, 0x00, 0x50, 0x96,
+ 0x38, 0x02, 0x00, 0x50, 0x98, 0x08, 0x7f, 0x00,
+ 0x50, 0x99, 0x0d, 0x8b, 0x00, 0x50, 0x9a, 0x10,
+ 0x54, 0x00, 0x50, 0x9b, 0x52, 0x9b, 0x00, 0x50,
+ 0x9c, 0x38, 0x03, 0x00, 0x50, 0x9e, 0x4a, 0xd8,
+ 0x00, 0x50, 0x9f, 0x52, 0x9c, 0x00, 0x50, 0xa0,
+ 0x52, 0x9d, 0x00, 0x50, 0xa1, 0x52, 0x9e, 0x00,
+ 0x50, 0xa2, 0x4a, 0xd9, 0x00, 0x50, 0xa3, 0x43,
+ 0x7c, 0x00, 0x50, 0xaa, 0x43, 0x81, 0x00, 0x50,
+ 0xac, 0x08, 0x35, 0x00, 0x50, 0xad, 0x0f, 0x2d,
+ 0x00, 0x50, 0xaf, 0x52, 0x9f, 0x00, 0x50, 0xb0,
+ 0x52, 0xa0, 0x00, 0x50, 0xb1, 0x43, 0x83, 0x00,
+ 0x50, 0xb2, 0x10, 0x57, 0x00, 0x50, 0xb3, 0x10,
+ 0x5a, 0x00, 0x50, 0xb4, 0x10, 0x56, 0x00, 0x50,
+ 0xb5, 0x08, 0x34, 0x00, 0x50, 0xb7, 0x09, 0x87,
+ 0x00, 0x50, 0xb9, 0x52, 0xa1, 0x00, 0x50, 0xba,
+ 0x43, 0x84, 0x00, 0x50, 0xbb, 0x43, 0x85, 0x00,
+ 0x50, 0xbd, 0x52, 0xa2, 0x00, 0x50, 0xbe, 0x07,
+ 0x0f, 0x00, 0x50, 0xc0, 0x52, 0xa3, 0x00, 0x50,
+ 0xc2, 0x10, 0x5b, 0x00, 0x50, 0xc3, 0x4a, 0xda,
+ 0x00, 0x50, 0xc4, 0x43, 0x86, 0x00, 0x50, 0xc5,
+ 0x06, 0xc7, 0x00, 0x50, 0xc7, 0x43, 0x87, 0x00,
+ 0x50, 0xc9, 0x10, 0x58, 0x00, 0x50, 0xca, 0x10,
+ 0x59, 0x00, 0x50, 0xcc, 0x38, 0x04, 0x00, 0x50,
+ 0xcd, 0x0c, 0x87, 0x00, 0x50, 0xce, 0x43, 0x8a,
+ 0x00, 0x50, 0xcf, 0x0a, 0xfe, 0x00, 0x50, 0xd0,
+ 0x41, 0x93, 0x00, 0x50, 0xd1, 0x06, 0x9b, 0x00,
+ 0x50, 0xd3, 0x52, 0xa4, 0x00, 0x50, 0xd4, 0x43,
+ 0x8c, 0x00, 0x50, 0xd5, 0x0e, 0x7b, 0x00, 0x50,
+ 0xd6, 0x10, 0x5c, 0x00, 0x50, 0xd8, 0x20, 0xc8,
+ 0x00, 0x50, 0xd9, 0x3c, 0x30, 0x00, 0x50, 0xda,
+ 0x0f, 0x85, 0x00, 0x50, 0xdc, 0x52, 0xa5, 0x00,
+ 0x50, 0xdd, 0x52, 0xa6, 0x00, 0x50, 0xde, 0x10,
+ 0x5d, 0x00, 0x50, 0xdf, 0x52, 0xa7, 0x00, 0x50,
+ 0xe1, 0x43, 0x8d, 0x00, 0x50, 0xe2, 0x52, 0xa8,
+ 0x00, 0x50, 0xe3, 0x10, 0x60, 0x00, 0x50, 0xe4,
+ 0x52, 0xa9, 0x00, 0x50, 0xe5, 0x10, 0x5e, 0x00,
+ 0x50, 0xe6, 0x38, 0x05, 0x00, 0x50, 0xe7, 0x0a,
+ 0xd0, 0x00, 0x50, 0xe8, 0x4a, 0xdb, 0x00, 0x50,
+ 0xe9, 0x38, 0x06, 0x00, 0x50, 0xed, 0x10, 0x5f,
+ 0x00, 0x50, 0xee, 0x10, 0x61, 0x00, 0x50, 0xef,
+ 0x38, 0x07, 0x00, 0x50, 0xf0, 0x3c, 0x31, 0x00,
+ 0x50, 0xf1, 0x4a, 0xdc, 0x00, 0x50, 0xf2, 0x41,
+ 0x92, 0x00, 0x50, 0xf3, 0x43, 0x88, 0x00, 0x50,
+ 0xf4, 0x20, 0xc7, 0x00, 0x50, 0xf5, 0x10, 0x63,
+ 0x00, 0x50, 0xf6, 0x52, 0xaa, 0x00, 0x50, 0xf9,
+ 0x10, 0x62, 0x00, 0x50, 0xfa, 0x52, 0xab, 0x00,
+ 0x50, 0xfb, 0x0e, 0x18, 0x00, 0x50, 0xfe, 0x4a,
+ 0xdd, 0x00, 0x51, 0x00, 0x06, 0x51, 0x00, 0x51,
+ 0x01, 0x10, 0x65, 0x00, 0x51, 0x02, 0x10, 0x66,
+ 0x00, 0x51, 0x03, 0x41, 0x95, 0x00, 0x51, 0x04,
+ 0x05, 0x2f, 0x00, 0x51, 0x06, 0x41, 0x94, 0x00,
+ 0x51, 0x07, 0x4a, 0xde, 0x00, 0x51, 0x08, 0x38,
+ 0x08, 0x00, 0x51, 0x09, 0x10, 0x64, 0x00, 0x51,
+ 0x0b, 0x38, 0x09, 0x00, 0x51, 0x0c, 0x4a, 0xdf,
+ 0x00, 0x51, 0x0d, 0x4a, 0xe0, 0x00, 0x51, 0x0e,
+ 0x4a, 0xe1, 0x00, 0x51, 0x10, 0x38, 0x0a, 0x00,
+ 0x51, 0x12, 0x09, 0x20, 0x00, 0x51, 0x14, 0x10,
+ 0x69, 0x00, 0x51, 0x15, 0x10, 0x68, 0x00, 0x51,
+ 0x16, 0x10, 0x67, 0x00, 0x51, 0x17, 0x43, 0x90,
+ 0x00, 0x51, 0x18, 0x10, 0x2f, 0x00, 0x51, 0x19,
+ 0x52, 0xad, 0x00, 0x51, 0x1a, 0x10, 0x6a, 0x00,
+ 0x51, 0x1b, 0x38, 0x0b, 0x00, 0x51, 0x1c, 0x52,
+ 0xae, 0x00, 0x51, 0x1d, 0x52, 0xaf, 0x00, 0x51,
+ 0x1e, 0x38, 0x0c, 0x00, 0x51, 0x1f, 0x09, 0x88,
+ 0x00, 0x51, 0x21, 0x10, 0x6b, 0x00, 0x51, 0x23,
+ 0x52, 0xb0, 0x00, 0x51, 0x27, 0x52, 0xb1, 0x00,
+ 0x51, 0x28, 0x52, 0xb2, 0x00, 0x51, 0x2a, 0x0f,
+ 0x0f, 0x00, 0x51, 0x2c, 0x52, 0xb3, 0x00, 0x51,
+ 0x2d, 0x52, 0xb4, 0x00, 0x51, 0x2f, 0x52, 0xb5,
+ 0x00, 0x51, 0x31, 0x52, 0xb6, 0x00, 0x51, 0x32,
+ 0x0e, 0xe5, 0x00, 0x51, 0x33, 0x4a, 0xe2, 0x00,
+ 0x51, 0x34, 0x52, 0xb7, 0x00, 0x51, 0x35, 0x41,
+ 0x96, 0x00, 0x51, 0x37, 0x10, 0x6d, 0x00, 0x51,
+ 0x38, 0x4a, 0xe3, 0x00, 0x51, 0x39, 0x52, 0xb8,
+ 0x00, 0x51, 0x3a, 0x10, 0x6c, 0x00, 0x51, 0x3b,
+ 0x10, 0x6f, 0x00, 0x51, 0x3c, 0x10, 0x6e, 0x00,
+ 0x51, 0x3f, 0x10, 0x70, 0x00, 0x51, 0x40, 0x10,
+ 0x71, 0x00, 0x51, 0x41, 0x04, 0xb8, 0x00, 0x51,
+ 0x42, 0x52, 0xb9, 0x00, 0x51, 0x43, 0x07, 0x69,
+ 0x00, 0x51, 0x44, 0x07, 0x11, 0x00, 0x51, 0x45,
+ 0x09, 0x46, 0x00, 0x51, 0x46, 0x0b, 0xb9, 0x00,
+ 0x51, 0x47, 0x06, 0x9c, 0x00, 0x51, 0x48, 0x0a,
+ 0x8c, 0x00, 0x51, 0x49, 0x07, 0xab, 0x00, 0x51,
+ 0x4a, 0x20, 0xc9, 0x00, 0x51, 0x4b, 0x08, 0x00,
+ 0x00, 0x51, 0x4c, 0x10, 0x73, 0x00, 0x51, 0x4d,
+ 0x0e, 0xd4, 0x00, 0x51, 0x4e, 0x0c, 0x40, 0x00,
+ 0x51, 0x4f, 0x52, 0xba, 0x00, 0x51, 0x50, 0x08,
+ 0xc7, 0x00, 0x51, 0x52, 0x10, 0x72, 0x00, 0x51,
+ 0x53, 0x52, 0xbb, 0x00, 0x51, 0x54, 0x1e, 0x86,
+ 0x00, 0x51, 0x55, 0x41, 0x97, 0x00, 0x51, 0x57,
+ 0x41, 0x98, 0x00, 0x51, 0x58, 0x52, 0xbc, 0x00,
+ 0x51, 0x5a, 0x0c, 0x58, 0x00, 0x51, 0x5c, 0x05,
+ 0xd3, 0x00, 0x51, 0x5f, 0x38, 0x0d, 0x00, 0x51,
+ 0x60, 0x43, 0x92, 0x00, 0x51, 0x62, 0x10, 0x75,
+ 0x00, 0x51, 0x64, 0x20, 0xca, 0x00, 0x51, 0x65,
+ 0x0c, 0xd6, 0x00, 0x51, 0x66, 0x52, 0xbd, 0x00,
+ 0x51, 0x67, 0x36, 0x8e, 0x00, 0x51, 0x68, 0x0a,
+ 0xb6, 0x00, 0x51, 0x69, 0x10, 0x77, 0x00, 0x51,
+ 0x6a, 0x10, 0x78, 0x00, 0x51, 0x6b, 0x0d, 0x40,
+ 0x00, 0x51, 0x6c, 0x07, 0xac, 0x00, 0x51, 0x6d,
+ 0x0f, 0xe1, 0x00, 0x51, 0x6e, 0x10, 0x79, 0x00,
+ 0x51, 0x71, 0x06, 0x9e, 0x00, 0x51, 0x73, 0x43,
+ 0x94, 0x00, 0x51, 0x74, 0x4a, 0xe4, 0x00, 0x51,
+ 0x75, 0x0e, 0x0c, 0x00, 0x51, 0x76, 0x0b, 0x16,
+ 0x00, 0x51, 0x77, 0x06, 0xe9, 0x00, 0x51, 0x78,
+ 0x0c, 0x2f, 0x00, 0x51, 0x79, 0x37, 0x79, 0x00,
+ 0x51, 0x7b, 0x47, 0xd9, 0x00, 0x51, 0x7c, 0x07,
+ 0x49, 0x00, 0x51, 0x7e, 0x52, 0xbe, 0x00, 0x51,
+ 0x80, 0x10, 0x7a, 0x00, 0x51, 0x82, 0x10, 0x7b,
+ 0x00, 0x51, 0x83, 0x43, 0x95, 0x00, 0x51, 0x84,
+ 0x4a, 0xe5, 0x00, 0x51, 0x85, 0x0c, 0xba, 0x00,
+ 0x51, 0x86, 0x05, 0x01, 0x00, 0x51, 0x89, 0x10,
+ 0x7e, 0x00, 0x51, 0x8a, 0x08, 0x6d, 0x00, 0x51,
+ 0x8b, 0x43, 0x96, 0x00, 0x51, 0x8c, 0x10, 0x7d,
+ 0x00, 0x51, 0x8d, 0x4e, 0x5d, 0x00, 0x51, 0x8e,
+ 0x52, 0xbf, 0x00, 0x51, 0x8f, 0x10, 0x7f, 0x00,
+ 0x51, 0x90, 0x18, 0x5b, 0x00, 0x51, 0x91, 0x10,
+ 0x80, 0x00, 0x51, 0x92, 0x0e, 0x6f, 0x00, 0x51,
+ 0x93, 0x10, 0x81, 0x00, 0x51, 0x95, 0x1e, 0x88,
+ 0x00, 0x51, 0x96, 0x10, 0x83, 0x00, 0x51, 0x97,
+ 0x09, 0xd1, 0x00, 0x51, 0x98, 0x43, 0x98, 0x00,
+ 0x51, 0x99, 0x08, 0xf8, 0x00, 0x51, 0x9d, 0x20,
+ 0xcb, 0x00, 0x51, 0xa0, 0x05, 0xe3, 0x00, 0x51,
+ 0xa1, 0x38, 0x0e, 0x00, 0x51, 0xa2, 0x10, 0x86,
+ 0x00, 0x51, 0xa3, 0x43, 0x99, 0x00, 0x51, 0xa4,
+ 0x10, 0x84, 0x00, 0x51, 0xa5, 0x0e, 0xc9, 0x00,
+ 0x51, 0xa6, 0x10, 0x85, 0x00, 0x51, 0xa8, 0x0d,
+ 0xcc, 0x00, 0x51, 0xa9, 0x10, 0x87, 0x00, 0x51,
+ 0xaa, 0x10, 0x88, 0x00, 0x51, 0xab, 0x10, 0x89,
+ 0x00, 0x51, 0xac, 0x36, 0x82, 0x00, 0x51, 0xad,
+ 0x43, 0x9a, 0x00, 0x51, 0xb0, 0x10, 0x8d, 0x00,
+ 0x51, 0xb1, 0x10, 0x8b, 0x00, 0x51, 0xb2, 0x10,
+ 0x8c, 0x00, 0x51, 0xb3, 0x10, 0x8a, 0x00, 0x51,
+ 0xb4, 0x08, 0x53, 0x00, 0x51, 0xb5, 0x10, 0x8e,
+ 0x00, 0x51, 0xb6, 0x0e, 0xf6, 0x00, 0x51, 0xb7,
+ 0x0f, 0xac, 0x00, 0x51, 0xb8, 0x4a, 0xe6, 0x00,
+ 0x51, 0xba, 0x4a, 0xe7, 0x00, 0x51, 0xbc, 0x38,
+ 0x0f, 0x00, 0x51, 0xbd, 0x10, 0x8f, 0x00, 0x51,
+ 0xbe, 0x20, 0xcc, 0x00, 0x51, 0xbf, 0x52, 0xc0,
+ 0x00, 0x51, 0xc2, 0x52, 0xc1, 0x00, 0x51, 0xc3,
+ 0x3c, 0x32, 0x00, 0x51, 0xc4, 0x0a, 0x4c, 0x00,
+ 0x51, 0xc5, 0x10, 0x90, 0x00, 0x51, 0xc6, 0x09,
+ 0x64, 0x00, 0x51, 0xc8, 0x4a, 0xe8, 0x00, 0x51,
+ 0xc9, 0x10, 0x91, 0x00, 0x51, 0xca, 0x41, 0x9a,
+ 0x00, 0x51, 0xcb, 0x0b, 0xba, 0x00, 0x51, 0xcc,
+ 0x0f, 0x87, 0x00, 0x51, 0xcd, 0x0c, 0x5a, 0x00,
+ 0x51, 0xcf, 0x4a, 0xe9, 0x00, 0x51, 0xd1, 0x4a,
+ 0xea, 0x00, 0x51, 0xd2, 0x52, 0xc2, 0x00, 0x51,
+ 0xd3, 0x4a, 0xeb, 0x00, 0x51, 0xd4, 0x4a, 0xec,
+ 0x00, 0x51, 0xd5, 0x52, 0xc3, 0x00, 0x51, 0xd6,
+ 0x10, 0xda, 0x00, 0x51, 0xd8, 0x4a, 0xed, 0x00,
+ 0x51, 0xdb, 0x10, 0x92, 0x00, 0x51, 0xdc, 0x20,
+ 0x5c, 0x00, 0x51, 0xdd, 0x06, 0xbd, 0x00, 0x51,
+ 0xde, 0x4f, 0x4c, 0x00, 0x51, 0xdf, 0x4a, 0xee,
+ 0x00, 0x51, 0xe0, 0x10, 0x93, 0x00, 0x51, 0xe1,
+ 0x0e, 0x8c, 0x00, 0x51, 0xe2, 0x41, 0x9b, 0x00,
+ 0x51, 0xe5, 0x52, 0xc4, 0x00, 0x51, 0xe6, 0x09,
+ 0x72, 0x00, 0x51, 0xe7, 0x0b, 0x5c, 0x00, 0x51,
+ 0xe9, 0x10, 0x95, 0x00, 0x51, 0xea, 0x0c, 0xbc,
+ 0x00, 0x51, 0xec, 0x20, 0xcd, 0x00, 0x51, 0xed,
+ 0x10, 0x96, 0x00, 0x51, 0xee, 0x38, 0x11, 0x00,
+ 0x51, 0xf0, 0x10, 0x97, 0x00, 0x51, 0xf1, 0x05,
+ 0x8c, 0x00, 0x51, 0xf2, 0x52, 0xc5, 0x00, 0x51,
+ 0xf3, 0x43, 0x9d, 0x00, 0x51, 0xf4, 0x38, 0x12,
+ 0x00, 0x51, 0xf5, 0x10, 0x98, 0x00, 0x51, 0xf6,
+ 0x06, 0x9f, 0x00, 0x51, 0xf7, 0x52, 0xc6, 0x00,
+ 0x51, 0xf8, 0x0c, 0xa4, 0x00, 0x51, 0xf9, 0x05,
+ 0x1c, 0x00, 0x51, 0xfa, 0x09, 0x5a, 0x00, 0x51,
+ 0xfd, 0x0d, 0x35, 0x00, 0x51, 0xfe, 0x10, 0x99,
+ 0x00, 0x52, 0x00, 0x0c, 0x5b, 0x00, 0x52, 0x01,
+ 0x38, 0x13, 0x00, 0x52, 0x02, 0x38, 0x14, 0x00,
+ 0x52, 0x03, 0x0a, 0x15, 0x00, 0x52, 0x04, 0x10,
+ 0x9a, 0x00, 0x52, 0x05, 0x4a, 0xef, 0x00, 0x52,
+ 0x06, 0x0d, 0xfc, 0x00, 0x52, 0x07, 0x0a, 0x7e,
+ 0x00, 0x52, 0x08, 0x05, 0xde, 0x00, 0x52, 0x0a,
+ 0x05, 0xe5, 0x00, 0x52, 0x0b, 0x10, 0x9b, 0x00,
+ 0x52, 0x0e, 0x10, 0x9d, 0x00, 0x52, 0x11, 0x07,
+ 0x10, 0x00, 0x52, 0x12, 0x43, 0x9e, 0x00, 0x52,
+ 0x13, 0x38, 0x15, 0x00, 0x52, 0x14, 0x10, 0x9c,
+ 0x00, 0x52, 0x15, 0x20, 0xce, 0x00, 0x52, 0x16,
+ 0x43, 0x9f, 0x00, 0x52, 0x17, 0x0f, 0xbb, 0x00,
+ 0x52, 0x18, 0x52, 0xc7, 0x00, 0x52, 0x1d, 0x09,
+ 0x73, 0x00, 0x52, 0x22, 0x52, 0xc8, 0x00, 0x52,
+ 0x24, 0x0d, 0x51, 0x00, 0x52, 0x25, 0x0e, 0x1c,
+ 0x00, 0x52, 0x26, 0x4a, 0xf0, 0x00, 0x52, 0x27,
+ 0x10, 0x9e, 0x00, 0x52, 0x28, 0x4a, 0xf1, 0x00,
+ 0x52, 0x29, 0x0f, 0x62, 0x00, 0x52, 0x2a, 0x10,
+ 0x9f, 0x00, 0x52, 0x2b, 0x4a, 0xf2, 0x00, 0x52,
+ 0x2e, 0x10, 0xa0, 0x00, 0x52, 0x30, 0x0c, 0x78,
+ 0x00, 0x52, 0x31, 0x4a, 0xf3, 0x00, 0x52, 0x32,
+ 0x4a, 0xf4, 0x00, 0x52, 0x33, 0x10, 0xa1, 0x00,
+ 0x52, 0x35, 0x4a, 0xf5, 0x00, 0x52, 0x36, 0x0a,
+ 0x4d, 0x00, 0x52, 0x37, 0x08, 0x6e, 0x00, 0x52,
+ 0x38, 0x07, 0x4a, 0x00, 0x52, 0x39, 0x10, 0xa2,
+ 0x00, 0x52, 0x3a, 0x08, 0x97, 0x00, 0x52, 0x3b,
+ 0x08, 0x01, 0x00, 0x52, 0x3c, 0x4a, 0xf6, 0x00,
+ 0x52, 0x43, 0x0c, 0x02, 0x00, 0x52, 0x44, 0x10,
+ 0xa4, 0x00, 0x52, 0x45, 0x52, 0xc9, 0x00, 0x52,
+ 0x47, 0x0b, 0x07, 0x00, 0x52, 0x49, 0x38, 0x16,
+ 0x00, 0x52, 0x4a, 0x08, 0x5f, 0x00, 0x52, 0x4b,
+ 0x10, 0xa5, 0x00, 0x52, 0x4c, 0x10, 0xa6, 0x00,
+ 0x52, 0x4d, 0x0a, 0xb2, 0x00, 0x52, 0x4f, 0x10,
+ 0xa3, 0x00, 0x52, 0x54, 0x10, 0xa8, 0x00, 0x52,
+ 0x55, 0x43, 0xa1, 0x00, 0x52, 0x56, 0x0e, 0x64,
+ 0x00, 0x52, 0x57, 0x41, 0x9c, 0x00, 0x52, 0x58,
+ 0x52, 0xca, 0x00, 0x52, 0x5a, 0x4a, 0xf7, 0x00,
+ 0x52, 0x5b, 0x07, 0xf6, 0x00, 0x52, 0x5c, 0x43,
+ 0xa2, 0x00, 0x52, 0x5d, 0x1e, 0x5e, 0x00, 0x52,
+ 0x5e, 0x10, 0xa7, 0x00, 0x52, 0x5f, 0x52, 0xcb,
+ 0x00, 0x52, 0x60, 0x4a, 0xf8, 0x00, 0x52, 0x61,
+ 0x38, 0x17, 0x00, 0x52, 0x63, 0x07, 0x4b, 0x00,
+ 0x52, 0x64, 0x08, 0x4e, 0x00, 0x52, 0x65, 0x0d,
+ 0x23, 0x00, 0x52, 0x66, 0x38, 0x18, 0x00, 0x52,
+ 0x69, 0x10, 0xab, 0x00, 0x52, 0x6a, 0x10, 0xa9,
+ 0x00, 0x52, 0x6c, 0x43, 0xa3, 0x00, 0x52, 0x6e,
+ 0x4a, 0xf9, 0x00, 0x52, 0x6f, 0x0d, 0xed, 0x00,
+ 0x52, 0x70, 0x09, 0xd2, 0x00, 0x52, 0x71, 0x10,
+ 0xb2, 0x00, 0x52, 0x72, 0x35, 0x74, 0x00, 0x52,
+ 0x73, 0x10, 0xac, 0x00, 0x52, 0x74, 0x10, 0xaa,
+ 0x00, 0x52, 0x75, 0x0a, 0xd1, 0x00, 0x52, 0x77,
+ 0x43, 0xa4, 0x00, 0x52, 0x78, 0x4a, 0xfa, 0x00,
+ 0x52, 0x79, 0x4a, 0xfb, 0x00, 0x52, 0x7d, 0x10,
+ 0xae, 0x00, 0x52, 0x7f, 0x10, 0xad, 0x00, 0x52,
+ 0x80, 0x52, 0xcc, 0x00, 0x52, 0x82, 0x43, 0xa6,
+ 0x00, 0x52, 0x83, 0x05, 0xa2, 0x00, 0x52, 0x84,
+ 0x43, 0xa5, 0x00, 0x52, 0x85, 0x52, 0xcd, 0x00,
+ 0x52, 0x87, 0x07, 0x36, 0x00, 0x52, 0x88, 0x10,
+ 0xb3, 0x00, 0x52, 0x89, 0x0f, 0x75, 0x00, 0x52,
+ 0x8a, 0x4a, 0xfc, 0x00, 0x52, 0x8c, 0x4a, 0xfd,
+ 0x00, 0x52, 0x8d, 0x10, 0xaf, 0x00, 0x52, 0x91,
+ 0x10, 0xb4, 0x00, 0x52, 0x92, 0x10, 0xb1, 0x00,
+ 0x52, 0x93, 0x38, 0x19, 0x00, 0x52, 0x94, 0x10,
+ 0xb0, 0x00, 0x52, 0x95, 0x52, 0xce, 0x00, 0x52,
+ 0x96, 0x52, 0xcf, 0x00, 0x52, 0x97, 0x52, 0xd0,
+ 0x00, 0x52, 0x98, 0x43, 0xa8, 0x00, 0x52, 0x9a,
+ 0x52, 0xd1, 0x00, 0x52, 0x9b, 0x0f, 0x97, 0x00,
+ 0x52, 0x9c, 0x20, 0xcf, 0x00, 0x52, 0x9f, 0x07,
+ 0xad, 0x00, 0x52, 0xa0, 0x05, 0x43, 0x00, 0x52,
+ 0xa3, 0x0f, 0xbc, 0x00, 0x52, 0xa4, 0x43, 0xaa,
+ 0x00, 0x52, 0xa5, 0x52, 0xd2, 0x00, 0x52, 0xa6,
+ 0x20, 0xd0, 0x00, 0x52, 0xa7, 0x52, 0xd3, 0x00,
+ 0x52, 0xa9, 0x09, 0x7f, 0x00, 0x52, 0xaa, 0x0c,
+ 0x52, 0x00, 0x52, 0xab, 0x07, 0xf7, 0x00, 0x52,
+ 0xac, 0x10, 0xb7, 0x00, 0x52, 0xad, 0x10, 0xb8,
+ 0x00, 0x52, 0xaf, 0x21, 0x7d, 0x00, 0x52, 0xb0,
+ 0x52, 0xd4, 0x00, 0x52, 0xb1, 0x0f, 0xad, 0x00,
+ 0x52, 0xb4, 0x0f, 0xd1, 0x00, 0x52, 0xb5, 0x10,
+ 0xba, 0x00, 0x52, 0xb6, 0x52, 0xd5, 0x00, 0x52,
+ 0xb7, 0x52, 0xd6, 0x00, 0x52, 0xb8, 0x52, 0xd7,
+ 0x00, 0x52, 0xb9, 0x07, 0xae, 0x00, 0x52, 0xba,
+ 0x43, 0xab, 0x00, 0x52, 0xbb, 0x43, 0xac, 0x00,
+ 0x52, 0xbc, 0x10, 0xb9, 0x00, 0x52, 0xbd, 0x52,
+ 0xd8, 0x00, 0x52, 0xbe, 0x05, 0x8d, 0x00, 0x52,
+ 0xc0, 0x20, 0xd1, 0x00, 0x52, 0xc1, 0x10, 0xbb,
+ 0x00, 0x52, 0xc3, 0x0e, 0x84, 0x00, 0x52, 0xc4,
+ 0x52, 0xd9, 0x00, 0x52, 0xc5, 0x0b, 0xd8, 0x00,
+ 0x52, 0xc6, 0x52, 0xda, 0x00, 0x52, 0xc7, 0x0f,
+ 0x10, 0x00, 0x52, 0xc8, 0x38, 0x1a, 0x00, 0x52,
+ 0xc9, 0x34, 0x49, 0x00, 0x52, 0xca, 0x43, 0xad,
+ 0x00, 0x52, 0xcc, 0x41, 0x9d, 0x00, 0x52, 0xcd,
+ 0x10, 0xbc, 0x00, 0x52, 0xcf, 0x52, 0xdb, 0x00,
+ 0x52, 0xd0, 0x36, 0xe8, 0x00, 0x52, 0xd1, 0x43,
+ 0xae, 0x00, 0x52, 0xd2, 0x1b, 0xee, 0x00, 0x52,
+ 0xd4, 0x52, 0xdc, 0x00, 0x52, 0xd5, 0x0c, 0x88,
+ 0x00, 0x52, 0xd6, 0x41, 0x9e, 0x00, 0x52, 0xd7,
+ 0x10, 0xbd, 0x00, 0x52, 0xd8, 0x05, 0xe6, 0x00,
+ 0x52, 0xd9, 0x0e, 0xbf, 0x00, 0x52, 0xdb, 0x20,
+ 0xd2, 0x00, 0x52, 0xdc, 0x52, 0xdd, 0x00, 0x52,
+ 0xdd, 0x09, 0x89, 0x00, 0x52, 0xde, 0x10, 0xbe,
+ 0x00, 0x52, 0xdf, 0x0e, 0x37, 0x00, 0x52, 0xe0,
+ 0x10, 0xc2, 0x00, 0x52, 0xe1, 0x4a, 0xfe, 0x00,
+ 0x52, 0xe2, 0x0a, 0x4e, 0x00, 0x52, 0xe3, 0x10,
+ 0xbf, 0x00, 0x52, 0xe4, 0x06, 0xc8, 0x00, 0x52,
+ 0xe5, 0x52, 0xde, 0x00, 0x52, 0xe6, 0x10, 0xc0,
+ 0x00, 0x52, 0xe7, 0x05, 0xe7, 0x00, 0x52, 0xe8,
+ 0x52, 0xdf, 0x00, 0x52, 0xe9, 0x4a, 0xff, 0x00,
+ 0x52, 0xea, 0x52, 0xe0, 0x00, 0x52, 0xec, 0x52,
+ 0xe1, 0x00, 0x52, 0xf0, 0x38, 0x1b, 0x00, 0x52,
+ 0xf1, 0x4b, 0x00, 0x00, 0x52, 0xf2, 0x07, 0x04,
+ 0x00, 0x52, 0xf3, 0x10, 0xc3, 0x00, 0x52, 0xf4,
+ 0x52, 0xe2, 0x00, 0x52, 0xf5, 0x10, 0xc4, 0x00,
+ 0x52, 0xf6, 0x52, 0xe3, 0x00, 0x52, 0xf7, 0x43,
+ 0xb0, 0x00, 0x52, 0xf8, 0x10, 0xc5, 0x00, 0x52,
+ 0xf9, 0x10, 0xc6, 0x00, 0x52, 0xfa, 0x35, 0xef,
+ 0x00, 0x52, 0xfb, 0x41, 0x9f, 0x00, 0x52, 0xfe,
+ 0x07, 0xaf, 0x00, 0x52, 0xff, 0x0e, 0xea, 0x00,
+ 0x53, 0x00, 0x20, 0xd3, 0x00, 0x53, 0x01, 0x0e,
+ 0xf4, 0x00, 0x53, 0x02, 0x0c, 0xcf, 0x00, 0x53,
+ 0x03, 0x4b, 0x01, 0x00, 0x53, 0x05, 0x0e, 0x41,
+ 0x00, 0x53, 0x06, 0x10, 0xc7, 0x00, 0x53, 0x07,
+ 0x4f, 0x4d, 0x00, 0x53, 0x08, 0x10, 0xc8, 0x00,
+ 0x53, 0x0a, 0x38, 0x1c, 0x00, 0x53, 0x0b, 0x38,
+ 0x1d, 0x00, 0x53, 0x0c, 0x52, 0xe4, 0x00, 0x53,
+ 0x0d, 0x10, 0xca, 0x00, 0x53, 0x0f, 0x10, 0xcc,
+ 0x00, 0x53, 0x10, 0x10, 0xcb, 0x00, 0x53, 0x11,
+ 0x4b, 0x02, 0x00, 0x53, 0x13, 0x52, 0xe5, 0x00,
+ 0x53, 0x15, 0x10, 0xcd, 0x00, 0x53, 0x16, 0x05,
+ 0x3d, 0x00, 0x53, 0x17, 0x0e, 0x7a, 0x00, 0x53,
+ 0x18, 0x52, 0xe6, 0x00, 0x53, 0x19, 0x08, 0x6c,
+ 0x00, 0x53, 0x1a, 0x10, 0xce, 0x00, 0x53, 0x1b,
+ 0x52, 0xe7, 0x00, 0x53, 0x1c, 0x41, 0xa0, 0x00,
+ 0x53, 0x1d, 0x0a, 0xdb, 0x00, 0x53, 0x1e, 0x52,
+ 0xe8, 0x00, 0x53, 0x1f, 0x4b, 0x03, 0x00, 0x53,
+ 0x20, 0x09, 0x8a, 0x00, 0x53, 0x21, 0x06, 0xa1,
+ 0x00, 0x53, 0x23, 0x10, 0xcf, 0x00, 0x53, 0x24,
+ 0x20, 0xd5, 0x00, 0x53, 0x25, 0x52, 0xe9, 0x00,
+ 0x53, 0x27, 0x52, 0xea, 0x00, 0x53, 0x28, 0x52,
+ 0xeb, 0x00, 0x53, 0x29, 0x52, 0xec, 0x00, 0x53,
+ 0x2a, 0x0d, 0x6f, 0x00, 0x53, 0x2b, 0x52, 0xed,
+ 0x00, 0x53, 0x2c, 0x52, 0xee, 0x00, 0x53, 0x2d,
+ 0x4b, 0x04, 0x00, 0x53, 0x2f, 0x10, 0xd0, 0x00,
+ 0x53, 0x30, 0x52, 0xef, 0x00, 0x53, 0x31, 0x10,
+ 0xd1, 0x00, 0x53, 0x32, 0x4b, 0x05, 0x00, 0x53,
+ 0x33, 0x10, 0xd2, 0x00, 0x53, 0x35, 0x43, 0xb1,
+ 0x00, 0x53, 0x38, 0x10, 0xd3, 0x00, 0x53, 0x39,
+ 0x0d, 0x96, 0x00, 0x53, 0x3a, 0x06, 0xe0, 0x00,
+ 0x53, 0x3b, 0x04, 0xa9, 0x00, 0x53, 0x3c, 0x52,
+ 0xf0, 0x00, 0x53, 0x3d, 0x4b, 0x06, 0x00, 0x53,
+ 0x3e, 0x38, 0x1e, 0x00, 0x53, 0x3f, 0x0c, 0x97,
+ 0x00, 0x53, 0x40, 0x10, 0xd4, 0x00, 0x53, 0x41,
+ 0x09, 0x47, 0x00, 0x53, 0x42, 0x43, 0xb2, 0x00,
+ 0x53, 0x43, 0x0a, 0x8d, 0x00, 0x53, 0x45, 0x10,
+ 0xd6, 0x00, 0x53, 0x46, 0x10, 0xd5, 0x00, 0x53,
+ 0x47, 0x09, 0x8b, 0x00, 0x53, 0x48, 0x07, 0x95,
+ 0x00, 0x53, 0x49, 0x10, 0xd8, 0x00, 0x53, 0x4a,
+ 0x0d, 0x52, 0x00, 0x53, 0x4b, 0x38, 0x20, 0x00,
+ 0x53, 0x4c, 0x38, 0x1f, 0x00, 0x53, 0x4d, 0x10,
+ 0xd9, 0x00, 0x53, 0x51, 0x34, 0x42, 0x00, 0x53,
+ 0x52, 0x0b, 0x14, 0x00, 0x53, 0x53, 0x0b, 0x4e,
+ 0x00, 0x53, 0x54, 0x06, 0xa0, 0x00, 0x53, 0x57,
+ 0x0c, 0xc6, 0x00, 0x53, 0x58, 0x0b, 0x6f, 0x00,
+ 0x53, 0x59, 0x52, 0xf1, 0x00, 0x53, 0x5a, 0x0d,
+ 0x24, 0x00, 0x53, 0x5b, 0x52, 0xf2, 0x00, 0x53,
+ 0x5c, 0x0e, 0x7c, 0x00, 0x53, 0x5e, 0x10, 0xdb,
+ 0x00, 0x53, 0x60, 0x0a, 0x8e, 0x00, 0x53, 0x61,
+ 0x38, 0x21, 0x00, 0x53, 0x63, 0x41, 0xa1, 0x00,
+ 0x53, 0x65, 0x4b, 0x07, 0x00, 0x53, 0x66, 0x07,
+ 0x0b, 0x00, 0x53, 0x67, 0x43, 0xb5, 0x00, 0x53,
+ 0x69, 0x10, 0xdc, 0x00, 0x53, 0x6c, 0x38, 0x22,
+ 0x00, 0x53, 0x6d, 0x4b, 0x08, 0x00, 0x53, 0x6e,
+ 0x10, 0xdd, 0x00, 0x53, 0x6f, 0x04, 0xce, 0x00,
+ 0x53, 0x70, 0x04, 0xb9, 0x00, 0x53, 0x71, 0x06,
+ 0x29, 0x00, 0x53, 0x72, 0x20, 0xd6, 0x00, 0x53,
+ 0x73, 0x0b, 0x08, 0x00, 0x53, 0x74, 0x06, 0x6b,
+ 0x00, 0x53, 0x75, 0x0f, 0x5b, 0x00, 0x53, 0x77,
+ 0x10, 0xe0, 0x00, 0x53, 0x78, 0x05, 0x37, 0x00,
+ 0x53, 0x79, 0x4b, 0x09, 0x00, 0x53, 0x7a, 0x43,
+ 0xb6, 0x00, 0x53, 0x7b, 0x10, 0xdf, 0x00, 0x53,
+ 0x7d, 0x34, 0x35, 0x00, 0x53, 0x7e, 0x4b, 0x0a,
+ 0x00, 0x53, 0x7f, 0x35, 0x97, 0x00, 0x53, 0x82,
+ 0x10, 0xe1, 0x00, 0x53, 0x83, 0x52, 0xf4, 0x00,
+ 0x53, 0x84, 0x0e, 0xfd, 0x00, 0x53, 0x87, 0x52,
+ 0xf5, 0x00, 0x53, 0x88, 0x52, 0xf6, 0x00, 0x53,
+ 0x89, 0x37, 0xd0, 0x00, 0x53, 0x8e, 0x52, 0xf7,
+ 0x00, 0x53, 0x93, 0x20, 0xd7, 0x00, 0x53, 0x94,
+ 0x4b, 0x0b, 0x00, 0x53, 0x96, 0x10, 0xe2, 0x00,
+ 0x53, 0x98, 0x0f, 0x9a, 0x00, 0x53, 0x99, 0x4b,
+ 0x0c, 0x00, 0x53, 0x9a, 0x07, 0xb0, 0x00, 0x53,
+ 0x9d, 0x41, 0xa2, 0x00, 0x53, 0x9f, 0x07, 0x6a,
+ 0x00, 0x53, 0xa0, 0x10, 0xe3, 0x00, 0x53, 0xa1,
+ 0x52, 0xf8, 0x00, 0x53, 0xa4, 0x43, 0xb7, 0x00,
+ 0x53, 0xa5, 0x10, 0xe5, 0x00, 0x53, 0xa6, 0x10,
+ 0xe4, 0x00, 0x53, 0xa8, 0x0a, 0x25, 0x00, 0x53,
+ 0xa9, 0x04, 0xdb, 0x00, 0x53, 0xaa, 0x4b, 0x0d,
+ 0x00, 0x53, 0xab, 0x38, 0x23, 0x00, 0x53, 0xad,
+ 0x05, 0x00, 0x00, 0x53, 0xae, 0x10, 0xe6, 0x00,
+ 0x53, 0xaf, 0x4b, 0x0e, 0x00, 0x53, 0xb0, 0x10,
+ 0xe7, 0x00, 0x53, 0xb2, 0x20, 0xd8, 0x00, 0x53,
+ 0xb3, 0x07, 0x6b, 0x00, 0x53, 0xb4, 0x43, 0xb8,
+ 0x00, 0x53, 0xb5, 0x52, 0xf9, 0x00, 0x53, 0xb6,
+ 0x10, 0xe8, 0x00, 0x53, 0xb7, 0x43, 0xba, 0x00,
+ 0x53, 0xb8, 0x52, 0xfa, 0x00, 0x53, 0xba, 0x4b,
+ 0x0f, 0x00, 0x53, 0xbb, 0x06, 0x88, 0x00, 0x53,
+ 0xbd, 0x52, 0xfb, 0x00, 0x53, 0xc0, 0x43, 0xbb,
+ 0x00, 0x53, 0xc1, 0x4b, 0x10, 0x00, 0x53, 0xc2,
+ 0x08, 0x80, 0x00, 0x53, 0xc3, 0x10, 0xe9, 0x00,
+ 0x53, 0xc4, 0x4b, 0x11, 0x00, 0x53, 0xc5, 0x4b,
+ 0x12, 0x00, 0x53, 0xc8, 0x0e, 0xa2, 0x00, 0x53,
+ 0xc9, 0x08, 0x25, 0x00, 0x53, 0xca, 0x06, 0x74,
+ 0x00, 0x53, 0xcb, 0x0f, 0x11, 0x00, 0x53, 0xcc,
+ 0x0a, 0xd2, 0x00, 0x53, 0xcd, 0x0d, 0x53, 0x00,
+ 0x53, 0xce, 0x09, 0x29, 0x00, 0x53, 0xcf, 0x52,
+ 0xfc, 0x00, 0x53, 0xd2, 0x52, 0xfd, 0x00, 0x53,
+ 0xd3, 0x52, 0xfe, 0x00, 0x53, 0xd4, 0x09, 0x51,
+ 0x00, 0x53, 0xd5, 0x43, 0xbf, 0x00, 0x53, 0xd6,
+ 0x09, 0x14, 0x00, 0x53, 0xd7, 0x09, 0x21, 0x00,
+ 0x53, 0xd9, 0x09, 0x80, 0x00, 0x53, 0xda, 0x38,
+ 0x24, 0x00, 0x53, 0xdb, 0x0d, 0x54, 0x00, 0x53,
+ 0xdd, 0x20, 0xd9, 0x00, 0x53, 0xde, 0x52, 0xff,
+ 0x00, 0x53, 0xdf, 0x10, 0xec, 0x00, 0x53, 0xe0,
+ 0x4b, 0x13, 0x00, 0x53, 0xe1, 0x04, 0xe5, 0x00,
+ 0x53, 0xe2, 0x0a, 0xd3, 0x00, 0x53, 0xe3, 0x07,
+ 0xb1, 0x00, 0x53, 0xe4, 0x07, 0x79, 0x00, 0x53,
+ 0xe5, 0x06, 0xdf, 0x00, 0x53, 0xe6, 0x38, 0x25,
+ 0x00, 0x53, 0xe7, 0x53, 0x01, 0x00, 0x53, 0xe8,
+ 0x10, 0xf0, 0x00, 0x53, 0xe9, 0x0b, 0x5f, 0x00,
+ 0x53, 0xea, 0x0b, 0x5e, 0x00, 0x53, 0xeb, 0x06,
+ 0xa3, 0x00, 0x53, 0xec, 0x09, 0x8c, 0x00, 0x53,
+ 0xed, 0x10, 0xf1, 0x00, 0x53, 0xee, 0x10, 0xef,
+ 0x00, 0x53, 0xef, 0x05, 0x44, 0x00, 0x53, 0xf0,
+ 0x0b, 0x46, 0x00, 0x53, 0xf1, 0x08, 0xe4, 0x00,
+ 0x53, 0xf2, 0x08, 0x99, 0x00, 0x53, 0xf3, 0x04,
+ 0xc8, 0x00, 0x53, 0xf4, 0x43, 0xc1, 0x00, 0x53,
+ 0xf5, 0x38, 0x26, 0x00, 0x53, 0xf6, 0x05, 0xce,
+ 0x00, 0x53, 0xf7, 0x07, 0xf8, 0x00, 0x53, 0xf8,
+ 0x08, 0x98, 0x00, 0x53, 0xfa, 0x10, 0xf2, 0x00,
+ 0x54, 0x01, 0x10, 0xf3, 0x00, 0x54, 0x02, 0x53,
+ 0x02, 0x00, 0x54, 0x03, 0x06, 0x63, 0x00, 0x54,
+ 0x04, 0x05, 0xa4, 0x00, 0x54, 0x08, 0x07, 0xf9,
+ 0x00, 0x54, 0x09, 0x06, 0x62, 0x00, 0x54, 0x0a,
+ 0x0b, 0xfb, 0x00, 0x54, 0x0b, 0x04, 0xc7, 0x00,
+ 0x54, 0x0c, 0x0c, 0x89, 0x00, 0x54, 0x0d, 0x0e,
+ 0xca, 0x00, 0x54, 0x0e, 0x07, 0xb3, 0x00, 0x54,
+ 0x0f, 0x0f, 0x63, 0x00, 0x54, 0x10, 0x0c, 0x41,
+ 0x00, 0x54, 0x11, 0x07, 0xb2, 0x00, 0x54, 0x12,
+ 0x41, 0xa3, 0x00, 0x54, 0x13, 0x4b, 0x14, 0x00,
+ 0x54, 0x1a, 0x53, 0x03, 0x00, 0x54, 0x1b, 0x07,
+ 0x05, 0x00, 0x54, 0x1d, 0x10, 0xfc, 0x00, 0x54,
+ 0x1e, 0x36, 0x8c, 0x00, 0x54, 0x1f, 0x06, 0xdb,
+ 0x00, 0x54, 0x20, 0x0e, 0x78, 0x00, 0x54, 0x21,
+ 0x53, 0x04, 0x00, 0x54, 0x24, 0x43, 0xc2, 0x00,
+ 0x54, 0x26, 0x0d, 0x71, 0x00, 0x54, 0x27, 0x38,
+ 0x27, 0x00, 0x54, 0x28, 0x43, 0xc3, 0x00, 0x54,
+ 0x29, 0x10, 0xfb, 0x00, 0x54, 0x2a, 0x4b, 0x15,
+ 0x00, 0x54, 0x2b, 0x06, 0x1a, 0x00, 0x54, 0x2c,
+ 0x10, 0xf6, 0x00, 0x54, 0x2d, 0x10, 0xf7, 0x00,
+ 0x54, 0x2e, 0x10, 0xf9, 0x00, 0x54, 0x2f, 0x53,
+ 0x05, 0x00, 0x54, 0x31, 0x4b, 0x16, 0x00, 0x54,
+ 0x33, 0x35, 0xc0, 0x00, 0x54, 0x34, 0x4b, 0x17,
+ 0x00, 0x54, 0x35, 0x4b, 0x18, 0x00, 0x54, 0x36,
+ 0x10, 0xfa, 0x00, 0x54, 0x38, 0x06, 0x75, 0x00,
+ 0x54, 0x39, 0x0a, 0x27, 0x00, 0x54, 0x3b, 0x0d,
+ 0xfd, 0x00, 0x54, 0x3c, 0x10, 0xf8, 0x00, 0x54,
+ 0x3d, 0x10, 0xf4, 0x00, 0x54, 0x3e, 0x07, 0x97,
+ 0x00, 0x54, 0x3f, 0x35, 0xcf, 0x00, 0x54, 0x40,
+ 0x10, 0xf5, 0x00, 0x54, 0x42, 0x0f, 0xca, 0x00,
+ 0x54, 0x43, 0x43, 0xc5, 0x00, 0x54, 0x44, 0x53,
+ 0x06, 0x00, 0x54, 0x46, 0x0e, 0x42, 0x00, 0x54,
+ 0x47, 0x53, 0x07, 0x00, 0x54, 0x48, 0x0c, 0x04,
+ 0x00, 0x54, 0x49, 0x07, 0x96, 0x00, 0x54, 0x4a,
+ 0x08, 0x02, 0x00, 0x54, 0x4c, 0x4b, 0x19, 0x00,
+ 0x54, 0x4d, 0x38, 0x28, 0x00, 0x54, 0x4e, 0x10,
+ 0xfd, 0x00, 0x54, 0x4f, 0x53, 0x08, 0x00, 0x54,
+ 0x51, 0x0c, 0xb5, 0x00, 0x54, 0x55, 0x37, 0x23,
+ 0x00, 0x54, 0x5e, 0x53, 0x09, 0x00, 0x54, 0x5f,
+ 0x11, 0x01, 0x00, 0x54, 0x62, 0x43, 0xc6, 0x00,
+ 0x54, 0x64, 0x53, 0x0a, 0x00, 0x54, 0x66, 0x38,
+ 0x29, 0x00, 0x54, 0x67, 0x53, 0x0b, 0x00, 0x54,
+ 0x68, 0x35, 0xf7, 0x00, 0x54, 0x69, 0x53, 0x0c,
+ 0x00, 0x54, 0x6a, 0x09, 0x22, 0x00, 0x54, 0x6b,
+ 0x38, 0x2a, 0x00, 0x54, 0x6c, 0x43, 0xc7, 0x00,
+ 0x54, 0x6d, 0x53, 0x0d, 0x00, 0x54, 0x6e, 0x53,
+ 0x0e, 0x00, 0x54, 0x70, 0x11, 0x04, 0x00, 0x54,
+ 0x71, 0x11, 0x02, 0x00, 0x54, 0x73, 0x0e, 0xaf,
+ 0x00, 0x54, 0x74, 0x38, 0x2b, 0x00, 0x54, 0x75,
+ 0x10, 0xff, 0x00, 0x54, 0x76, 0x11, 0x08, 0x00,
+ 0x54, 0x77, 0x11, 0x03, 0x00, 0x54, 0x7b, 0x11,
+ 0x06, 0x00, 0x54, 0x7c, 0x07, 0x7a, 0x00, 0x54,
+ 0x7d, 0x0e, 0xcb, 0x00, 0x54, 0x7f, 0x41, 0xa4,
+ 0x00, 0x54, 0x80, 0x11, 0x07, 0x00, 0x54, 0x81,
+ 0x53, 0x0f, 0x00, 0x54, 0x83, 0x53, 0x10, 0x00,
+ 0x54, 0x84, 0x11, 0x09, 0x00, 0x54, 0x85, 0x53,
+ 0x11, 0x00, 0x54, 0x86, 0x11, 0x0b, 0x00, 0x54,
+ 0x88, 0x41, 0xa5, 0x00, 0x54, 0x89, 0x53, 0x12,
+ 0x00, 0x54, 0x8a, 0x20, 0xdc, 0x00, 0x54, 0x8b,
+ 0x08, 0x60, 0x00, 0x54, 0x8c, 0x0f, 0xe8, 0x00,
+ 0x54, 0x8d, 0x38, 0x2c, 0x00, 0x54, 0x8e, 0x11,
+ 0x00, 0x00, 0x54, 0x8f, 0x10, 0xfe, 0x00, 0x54,
+ 0x90, 0x11, 0x0a, 0x00, 0x54, 0x91, 0x53, 0x13,
+ 0x00, 0x54, 0x92, 0x11, 0x05, 0x00, 0x54, 0x95,
+ 0x43, 0xc8, 0x00, 0x54, 0x96, 0x38, 0x2d, 0x00,
+ 0x54, 0x9c, 0x20, 0xdb, 0x00, 0x54, 0x9f, 0x53,
+ 0x14, 0x00, 0x54, 0xa0, 0x43, 0xc9, 0x00, 0x54,
+ 0xa1, 0x38, 0x2e, 0x00, 0x54, 0xa2, 0x11, 0x0d,
+ 0x00, 0x54, 0xa4, 0x11, 0x16, 0x00, 0x54, 0xa5,
+ 0x11, 0x0f, 0x00, 0x54, 0xa6, 0x43, 0xca, 0x00,
+ 0x54, 0xa7, 0x4b, 0x1a, 0x00, 0x54, 0xa8, 0x11,
+ 0x13, 0x00, 0x54, 0xa9, 0x20, 0xdd, 0x00, 0x54,
+ 0xaa, 0x4b, 0x1b, 0x00, 0x54, 0xab, 0x11, 0x14,
+ 0x00, 0x54, 0xac, 0x11, 0x10, 0x00, 0x54, 0xad,
+ 0x38, 0x2f, 0x00, 0x54, 0xae, 0x43, 0xcb, 0x00,
+ 0x54, 0xaf, 0x11, 0x31, 0x00, 0x54, 0xb1, 0x4b,
+ 0x1c, 0x00, 0x54, 0xb2, 0x08, 0x59, 0x00, 0x54,
+ 0xb3, 0x05, 0x8f, 0x00, 0x54, 0xb7, 0x43, 0xcc,
+ 0x00, 0x54, 0xb8, 0x11, 0x0e, 0x00, 0x54, 0xb9,
+ 0x38, 0x30, 0x00, 0x54, 0xba, 0x43, 0xcd, 0x00,
+ 0x54, 0xbb, 0x4b, 0x1d, 0x00, 0x54, 0xbc, 0x11,
+ 0x18, 0x00, 0x54, 0xbd, 0x04, 0xba, 0x00, 0x54,
+ 0xbe, 0x11, 0x17, 0x00, 0x54, 0xbf, 0x38, 0x31,
+ 0x00, 0x54, 0xc0, 0x04, 0x69, 0x00, 0x54, 0xc1,
+ 0x0d, 0xbc, 0x00, 0x54, 0xc2, 0x11, 0x15, 0x00,
+ 0x54, 0xc3, 0x43, 0xce, 0x00, 0x54, 0xc4, 0x11,
+ 0x11, 0x00, 0x54, 0xc6, 0x38, 0x32, 0x00, 0x54,
+ 0xc7, 0x11, 0x0c, 0x00, 0x54, 0xc8, 0x11, 0x12,
+ 0x00, 0x54, 0xc9, 0x08, 0x38, 0x00, 0x54, 0xca,
+ 0x53, 0x15, 0x00, 0x54, 0xcd, 0x38, 0x33, 0x00,
+ 0x54, 0xce, 0x4b, 0x1e, 0x00, 0x54, 0xd8, 0x11,
+ 0x19, 0x00, 0x54, 0xe0, 0x53, 0x16, 0x00, 0x54,
+ 0xe1, 0x04, 0xbb, 0x00, 0x54, 0xe2, 0x11, 0x22,
+ 0x00, 0x54, 0xe5, 0x11, 0x1a, 0x00, 0x54, 0xe6,
+ 0x11, 0x1b, 0x00, 0x54, 0xe8, 0x09, 0x8d, 0x00,
+ 0x54, 0xe9, 0x0e, 0x97, 0x00, 0x54, 0xea, 0x4b,
+ 0x1f, 0x00, 0x54, 0xec, 0x43, 0xd0, 0x00, 0x54,
+ 0xed, 0x11, 0x20, 0x00, 0x54, 0xee, 0x11, 0x1f,
+ 0x00, 0x54, 0xef, 0x43, 0xd1, 0x00, 0x54, 0xf1,
+ 0x43, 0xd2, 0x00, 0x54, 0xf2, 0x0c, 0x29, 0x00,
+ 0x54, 0xf3, 0x43, 0xd3, 0x00, 0x54, 0xf6, 0x53,
+ 0x17, 0x00, 0x54, 0xfa, 0x11, 0x21, 0x00, 0x54,
+ 0xfc, 0x4b, 0x20, 0x00, 0x54, 0xfd, 0x11, 0x1e,
+ 0x00, 0x54, 0xfe, 0x53, 0x18, 0x00, 0x54, 0xff,
+ 0x20, 0xde, 0x00, 0x55, 0x00, 0x43, 0xd4, 0x00,
+ 0x55, 0x01, 0x43, 0xd5, 0x00, 0x55, 0x04, 0x04,
+ 0xd6, 0x00, 0x55, 0x05, 0x4b, 0x21, 0x00, 0x55,
+ 0x06, 0x08, 0x26, 0x00, 0x55, 0x07, 0x09, 0xf6,
+ 0x00, 0x55, 0x08, 0x4b, 0x22, 0x00, 0x55, 0x09,
+ 0x43, 0xd6, 0x00, 0x55, 0x0c, 0x53, 0x19, 0x00,
+ 0x55, 0x0d, 0x53, 0x1a, 0x00, 0x55, 0x0e, 0x38,
+ 0x34, 0x00, 0x55, 0x0f, 0x11, 0x1c, 0x00, 0x55,
+ 0x10, 0x0c, 0x5c, 0x00, 0x55, 0x14, 0x11, 0x1d,
+ 0x00, 0x55, 0x15, 0x4b, 0x23, 0x00, 0x55, 0x16,
+ 0x04, 0x66, 0x00, 0x55, 0x27, 0x4b, 0x24, 0x00,
+ 0x55, 0x2a, 0x4b, 0x25, 0x00, 0x55, 0x2b, 0x38,
+ 0x35, 0x00, 0x55, 0x2e, 0x11, 0x27, 0x00, 0x55,
+ 0x2f, 0x0f, 0x0d, 0x00, 0x55, 0x31, 0x09, 0x8f,
+ 0x00, 0x55, 0x32, 0x53, 0x1b, 0x00, 0x55, 0x33,
+ 0x11, 0x2d, 0x00, 0x55, 0x35, 0x38, 0x36, 0x00,
+ 0x55, 0x36, 0x4b, 0x26, 0x00, 0x55, 0x38, 0x11,
+ 0x2c, 0x00, 0x55, 0x39, 0x11, 0x23, 0x00, 0x55,
+ 0x3b, 0x53, 0x1c, 0x00, 0x55, 0x3c, 0x43, 0xd7,
+ 0x00, 0x55, 0x3d, 0x53, 0x1d, 0x00, 0x55, 0x3e,
+ 0x0b, 0x23, 0x00, 0x55, 0x40, 0x11, 0x24, 0x00,
+ 0x55, 0x41, 0x43, 0xd8, 0x00, 0x55, 0x44, 0x0b,
+ 0x4f, 0x00, 0x55, 0x45, 0x11, 0x29, 0x00, 0x55,
+ 0x46, 0x09, 0x8e, 0x00, 0x55, 0x47, 0x43, 0xda,
+ 0x00, 0x55, 0x49, 0x53, 0x1e, 0x00, 0x55, 0x4a,
+ 0x38, 0x37, 0x00, 0x55, 0x4c, 0x11, 0x26, 0x00,
+ 0x55, 0x4d, 0x53, 0x1f, 0x00, 0x55, 0x4f, 0x0e,
+ 0xf0, 0x00, 0x55, 0x50, 0x41, 0xa6, 0x00, 0x55,
+ 0x51, 0x4b, 0x27, 0x00, 0x55, 0x53, 0x07, 0x12,
+ 0x00, 0x55, 0x56, 0x11, 0x2a, 0x00, 0x55, 0x57,
+ 0x11, 0x2b, 0x00, 0x55, 0x58, 0x53, 0x20, 0x00,
+ 0x55, 0x5a, 0x53, 0x21, 0x00, 0x55, 0x5b, 0x53,
+ 0x22, 0x00, 0x55, 0x5c, 0x11, 0x28, 0x00, 0x55,
+ 0x5d, 0x11, 0x2e, 0x00, 0x55, 0x5e, 0x1d, 0xd1,
+ 0x00, 0x55, 0x60, 0x38, 0x38, 0x00, 0x55, 0x61,
+ 0x4f, 0x54, 0x00, 0x55, 0x63, 0x11, 0x25, 0x00,
+ 0x55, 0x64, 0x43, 0xdc, 0x00, 0x55, 0x66, 0x4b,
+ 0x28, 0x00, 0x55, 0x7b, 0x11, 0x34, 0x00, 0x55,
+ 0x7c, 0x11, 0x39, 0x00, 0x55, 0x7d, 0x43, 0xde,
+ 0x00, 0x55, 0x7e, 0x11, 0x35, 0x00, 0x55, 0x7f,
+ 0x53, 0x23, 0x00, 0x55, 0x80, 0x11, 0x30, 0x00,
+ 0x55, 0x81, 0x41, 0xa7, 0x00, 0x55, 0x82, 0x43,
+ 0xdf, 0x00, 0x55, 0x83, 0x11, 0x3a, 0x00, 0x55,
+ 0x84, 0x0a, 0xb3, 0x00, 0x55, 0x86, 0x20, 0xdf,
+ 0x00, 0x55, 0x87, 0x11, 0x3c, 0x00, 0x55, 0x88,
+ 0x38, 0x3a, 0x00, 0x55, 0x89, 0x07, 0xb4, 0x00,
+ 0x55, 0x8a, 0x11, 0x32, 0x00, 0x55, 0x8b, 0x0b,
+ 0xbb, 0x00, 0x55, 0x8e, 0x38, 0x3b, 0x00, 0x55,
+ 0x8f, 0x4b, 0x29, 0x00, 0x55, 0x91, 0x43, 0xe0,
+ 0x00, 0x55, 0x92, 0x4b, 0x2a, 0x00, 0x55, 0x93,
+ 0x53, 0x24, 0x00, 0x55, 0x94, 0x4b, 0x2b, 0x00,
+ 0x55, 0x97, 0x53, 0x25, 0x00, 0x55, 0x98, 0x11,
+ 0x36, 0x00, 0x55, 0x99, 0x11, 0x2f, 0x00, 0x55,
+ 0x9a, 0x05, 0xe9, 0x00, 0x55, 0x9c, 0x06, 0x2a,
+ 0x00, 0x55, 0x9d, 0x05, 0xc3, 0x00, 0x55, 0x9e,
+ 0x11, 0x37, 0x00, 0x55, 0x9f, 0x11, 0x33, 0x00,
+ 0x55, 0xa3, 0x53, 0x26, 0x00, 0x55, 0xa4, 0x4b,
+ 0x2c, 0x00, 0x55, 0xa7, 0x07, 0x4c, 0x00, 0x55,
+ 0xa8, 0x11, 0x3d, 0x00, 0x55, 0xa9, 0x11, 0x3b,
+ 0x00, 0x55, 0xaa, 0x0a, 0xd5, 0x00, 0x55, 0xab,
+ 0x06, 0x64, 0x00, 0x55, 0xac, 0x06, 0xa4, 0x00,
+ 0x55, 0xad, 0x41, 0xa8, 0x00, 0x55, 0xae, 0x11,
+ 0x38, 0x00, 0x55, 0xb0, 0x06, 0xec, 0x00, 0x55,
+ 0xb2, 0x4b, 0x2d, 0x00, 0x55, 0xb6, 0x04, 0xe6,
+ 0x00, 0x55, 0xbf, 0x43, 0xe5, 0x00, 0x55, 0xc1,
+ 0x53, 0x27, 0x00, 0x55, 0xc3, 0x4b, 0x2e, 0x00,
+ 0x55, 0xc4, 0x11, 0x41, 0x00, 0x55, 0xc5, 0x11,
+ 0x3f, 0x00, 0x55, 0xc6, 0x4b, 0x2f, 0x00, 0x55,
+ 0xc7, 0x11, 0x78, 0x00, 0x55, 0xc9, 0x43, 0xe6,
+ 0x00, 0x55, 0xcb, 0x53, 0x28, 0x00, 0x55, 0xcc,
+ 0x43, 0xe7, 0x00, 0x55, 0xce, 0x41, 0xa9, 0x00,
+ 0x55, 0xd1, 0x43, 0xe8, 0x00, 0x55, 0xd2, 0x43,
+ 0xe2, 0x00, 0x55, 0xd3, 0x4b, 0x30, 0x00, 0x55,
+ 0xd4, 0x11, 0x44, 0x00, 0x55, 0xd7, 0x53, 0x29,
+ 0x00, 0x55, 0xd8, 0x53, 0x2a, 0x00, 0x55, 0xda,
+ 0x11, 0x3e, 0x00, 0x55, 0xdb, 0x4b, 0x31, 0x00,
+ 0x55, 0xdc, 0x11, 0x42, 0x00, 0x55, 0xdd, 0x43,
+ 0xe9, 0x00, 0x55, 0xde, 0x53, 0x2b, 0x00, 0x55,
+ 0xdf, 0x11, 0x40, 0x00, 0x55, 0xe2, 0x43, 0xeb,
+ 0x00, 0x55, 0xe3, 0x08, 0x9a, 0x00, 0x55, 0xe4,
+ 0x11, 0x43, 0x00, 0x55, 0xe9, 0x43, 0xed, 0x00,
+ 0x55, 0xec, 0x4b, 0x32, 0x00, 0x55, 0xee, 0x4b,
+ 0x33, 0x00, 0x55, 0xf1, 0x4b, 0x34, 0x00, 0x55,
+ 0xf6, 0x4b, 0x35, 0x00, 0x55, 0xf7, 0x11, 0x46,
+ 0x00, 0x55, 0xf8, 0x4b, 0x36, 0x00, 0x55, 0xf9,
+ 0x11, 0x4b, 0x00, 0x55, 0xfd, 0x11, 0x49, 0x00,
+ 0x55, 0xfe, 0x11, 0x48, 0x00, 0x55, 0xff, 0x53,
+ 0x2c, 0x00, 0x56, 0x05, 0x4b, 0x37, 0x00, 0x56,
+ 0x06, 0x34, 0x36, 0x00, 0x56, 0x07, 0x43, 0xf0,
+ 0x00, 0x56, 0x08, 0x38, 0x3c, 0x00, 0x56, 0x09,
+ 0x05, 0x45, 0x00, 0x56, 0x0a, 0x53, 0x2e, 0x00,
+ 0x56, 0x0d, 0x4b, 0x38, 0x00, 0x56, 0x0e, 0x38,
+ 0x3d, 0x00, 0x56, 0x0f, 0x38, 0x3e, 0x00, 0x56,
+ 0x10, 0x43, 0xf1, 0x00, 0x56, 0x11, 0x4b, 0x39,
+ 0x00, 0x56, 0x12, 0x4b, 0x3a, 0x00, 0x56, 0x14,
+ 0x11, 0x45, 0x00, 0x56, 0x16, 0x11, 0x47, 0x00,
+ 0x56, 0x17, 0x09, 0x90, 0x00, 0x56, 0x18, 0x04,
+ 0xd5, 0x00, 0x56, 0x19, 0x53, 0x2f, 0x00, 0x56,
+ 0x1b, 0x11, 0x4a, 0x00, 0x56, 0x20, 0x3c, 0x1d,
+ 0x00, 0x56, 0x28, 0x43, 0xee, 0x00, 0x56, 0x29,
+ 0x05, 0x5e, 0x00, 0x56, 0x2c, 0x4b, 0x3b, 0x00,
+ 0x56, 0x2f, 0x11, 0x55, 0x00, 0x56, 0x30, 0x43,
+ 0xf2, 0x00, 0x56, 0x31, 0x09, 0xe4, 0x00, 0x56,
+ 0x32, 0x11, 0x51, 0x00, 0x56, 0x33, 0x53, 0x30,
+ 0x00, 0x56, 0x34, 0x11, 0x4f, 0x00, 0x56, 0x35,
+ 0x4b, 0x3c, 0x00, 0x56, 0x36, 0x11, 0x50, 0x00,
+ 0x56, 0x37, 0x38, 0x3f, 0x00, 0x56, 0x38, 0x11,
+ 0x52, 0x00, 0x56, 0x39, 0x4b, 0x3d, 0x00, 0x56,
+ 0x3b, 0x41, 0xaa, 0x00, 0x56, 0x3c, 0x53, 0x31,
+ 0x00, 0x56, 0x3d, 0x43, 0xf4, 0x00, 0x56, 0x3f,
+ 0x38, 0x40, 0x00, 0x56, 0x40, 0x43, 0xf5, 0x00,
+ 0x56, 0x41, 0x53, 0x32, 0x00, 0x56, 0x42, 0x04,
+ 0xdf, 0x00, 0x56, 0x43, 0x53, 0x33, 0x00, 0x56,
+ 0x44, 0x53, 0x34, 0x00, 0x56, 0x46, 0x53, 0x35,
+ 0x00, 0x56, 0x47, 0x43, 0xf6, 0x00, 0x56, 0x49,
+ 0x38, 0x41, 0x00, 0x56, 0x4b, 0x38, 0x42, 0x00,
+ 0x56, 0x4c, 0x0a, 0xbb, 0x00, 0x56, 0x4d, 0x4b,
+ 0x3e, 0x00, 0x56, 0x4e, 0x11, 0x4c, 0x00, 0x56,
+ 0x4f, 0x38, 0x43, 0x00, 0x56, 0x50, 0x11, 0x4d,
+ 0x00, 0x56, 0x53, 0x1f, 0x1b, 0x00, 0x56, 0x54,
+ 0x4b, 0x3f, 0x00, 0x56, 0x5b, 0x05, 0xd8, 0x00,
+ 0x56, 0x5e, 0x43, 0xf7, 0x00, 0x56, 0x60, 0x43,
+ 0xf8, 0x00, 0x56, 0x61, 0x53, 0x36, 0x00, 0x56,
+ 0x62, 0x53, 0x37, 0x00, 0x56, 0x63, 0x53, 0x38,
+ 0x00, 0x56, 0x64, 0x11, 0x54, 0x00, 0x56, 0x66,
+ 0x38, 0x44, 0x00, 0x56, 0x68, 0x06, 0x2b, 0x00,
+ 0x56, 0x69, 0x38, 0x45, 0x00, 0x56, 0x6a, 0x11,
+ 0x57, 0x00, 0x56, 0x6b, 0x11, 0x53, 0x00, 0x56,
+ 0x6c, 0x11, 0x56, 0x00, 0x56, 0x6d, 0x43, 0xf9,
+ 0x00, 0x56, 0x6f, 0x38, 0x46, 0x00, 0x56, 0x71,
+ 0x38, 0x47, 0x00, 0x56, 0x72, 0x38, 0x48, 0x00,
+ 0x56, 0x74, 0x0d, 0xfe, 0x00, 0x56, 0x75, 0x53,
+ 0x39, 0x00, 0x56, 0x76, 0x3c, 0x33, 0x00, 0x56,
+ 0x78, 0x0c, 0xad, 0x00, 0x56, 0x7a, 0x0d, 0x4c,
+ 0x00, 0x56, 0x80, 0x11, 0x59, 0x00, 0x56, 0x84,
+ 0x53, 0x3a, 0x00, 0x56, 0x85, 0x4b, 0x40, 0x00,
+ 0x56, 0x86, 0x11, 0x58, 0x00, 0x56, 0x87, 0x05,
+ 0xa3, 0x00, 0x56, 0x88, 0x43, 0xfb, 0x00, 0x56,
+ 0x8a, 0x11, 0x5a, 0x00, 0x56, 0x8b, 0x53, 0x3b,
+ 0x00, 0x56, 0x8c, 0x43, 0xfc, 0x00, 0x56, 0x8f,
+ 0x11, 0x5d, 0x00, 0x56, 0x94, 0x11, 0x5c, 0x00,
+ 0x56, 0x95, 0x38, 0x49, 0x00, 0x56, 0x99, 0x1d,
+ 0xe6, 0x00, 0x56, 0x9a, 0x38, 0x4a, 0x00, 0x56,
+ 0x9d, 0x43, 0xfd, 0x00, 0x56, 0x9e, 0x41, 0xab,
+ 0x00, 0x56, 0x9f, 0x4b, 0x41, 0x00, 0x56, 0xa0,
+ 0x11, 0x5b, 0x00, 0x56, 0xa2, 0x0c, 0xef, 0x00,
+ 0x56, 0xa5, 0x11, 0x5e, 0x00, 0x56, 0xa6, 0x4b,
+ 0x42, 0x00, 0x56, 0xa7, 0x53, 0x3c, 0x00, 0x56,
+ 0xa8, 0x43, 0xfe, 0x00, 0x56, 0xa9, 0x41, 0xac,
+ 0x00, 0x56, 0xab, 0x53, 0x3d, 0x00, 0x56, 0xac,
+ 0x38, 0x4b, 0x00, 0x56, 0xad, 0x38, 0x4c, 0x00,
+ 0x56, 0xae, 0x11, 0x5f, 0x00, 0x56, 0xb1, 0x38,
+ 0x4d, 0x00, 0x56, 0xb2, 0x43, 0xff, 0x00, 0x56,
+ 0xb3, 0x41, 0xad, 0x00, 0x56, 0xb4, 0x11, 0x61,
+ 0x00, 0x56, 0xb6, 0x11, 0x60, 0x00, 0x56, 0xb7,
+ 0x4b, 0x43, 0x00, 0x56, 0xbc, 0x11, 0x63, 0x00,
+ 0x56, 0xbe, 0x53, 0x3e, 0x00, 0x56, 0xc0, 0x11,
+ 0x66, 0x00, 0x56, 0xc1, 0x11, 0x64, 0x00, 0x56,
+ 0xc2, 0x11, 0x62, 0x00, 0x56, 0xc3, 0x11, 0x65,
+ 0x00, 0x56, 0xc5, 0x44, 0x00, 0x00, 0x56, 0xc8,
+ 0x11, 0x67, 0x00, 0x56, 0xc9, 0x38, 0x4e, 0x00,
+ 0x56, 0xca, 0x1e, 0x5a, 0x00, 0x56, 0xcb, 0x53,
+ 0x3f, 0x00, 0x56, 0xcc, 0x4b, 0x44, 0x00, 0x56,
+ 0xcd, 0x44, 0x01, 0x00, 0x56, 0xce, 0x11, 0x68,
+ 0x00, 0x56, 0xcf, 0x4b, 0x45, 0x00, 0x56, 0xd0,
+ 0x53, 0x40, 0x00, 0x56, 0xd1, 0x11, 0x69, 0x00,
+ 0x56, 0xd3, 0x11, 0x6a, 0x00, 0x56, 0xd7, 0x11,
+ 0x6b, 0x00, 0x56, 0xd8, 0x10, 0x7c, 0x00, 0x56,
+ 0xd9, 0x4b, 0x46, 0x00, 0x56, 0xda, 0x09, 0x28,
+ 0x00, 0x56, 0xdb, 0x08, 0x9b, 0x00, 0x56, 0xdc,
+ 0x53, 0x41, 0x00, 0x56, 0xdd, 0x38, 0x4f, 0x00,
+ 0x56, 0xde, 0x05, 0x73, 0x00, 0x56, 0xdf, 0x44,
+ 0x02, 0x00, 0x56, 0xe0, 0x04, 0xbc, 0x00, 0x56,
+ 0xe1, 0x4b, 0x47, 0x00, 0x56, 0xe3, 0x0b, 0x82,
+ 0x00, 0x56, 0xe4, 0x38, 0x50, 0x00, 0x56, 0xe5,
+ 0x53, 0x42, 0x00, 0x56, 0xe6, 0x53, 0x43, 0x00,
+ 0x56, 0xe7, 0x53, 0x44, 0x00, 0x56, 0xe8, 0x44,
+ 0x03, 0x00, 0x56, 0xeb, 0x4b, 0x48, 0x00, 0x56,
+ 0xed, 0x4b, 0x49, 0x00, 0x56, 0xee, 0x11, 0x6c,
+ 0x00, 0x56, 0xf0, 0x08, 0x14, 0x00, 0x56, 0xf1,
+ 0x4b, 0x4a, 0x00, 0x56, 0xf2, 0x04, 0x93, 0x00,
+ 0x56, 0xf3, 0x0a, 0x24, 0x00, 0x56, 0xf6, 0x44,
+ 0x04, 0x00, 0x56, 0xf7, 0x44, 0x05, 0x00, 0x56,
+ 0xf9, 0x11, 0x6d, 0x00, 0x56, 0xfa, 0x07, 0x7b,
+ 0x00, 0x56, 0xfd, 0x08, 0x03, 0x00, 0x56, 0xff,
+ 0x11, 0x6f, 0x00, 0x57, 0x00, 0x11, 0x6e, 0x00,
+ 0x57, 0x01, 0x53, 0x45, 0x00, 0x57, 0x02, 0x53,
+ 0x46, 0x00, 0x57, 0x03, 0x0e, 0x30, 0x00, 0x57,
+ 0x04, 0x11, 0x70, 0x00, 0x57, 0x07, 0x4b, 0x4b,
+ 0x00, 0x57, 0x08, 0x11, 0x72, 0x00, 0x57, 0x09,
+ 0x11, 0x71, 0x00, 0x57, 0x0a, 0x38, 0x51, 0x00,
+ 0x57, 0x0b, 0x11, 0x73, 0x00, 0x57, 0x0c, 0x4b,
+ 0x4c, 0x00, 0x57, 0x0d, 0x11, 0x74, 0x00, 0x57,
+ 0x0f, 0x07, 0x4d, 0x00, 0x57, 0x11, 0x53, 0x47,
+ 0x00, 0x57, 0x12, 0x05, 0x02, 0x00, 0x57, 0x13,
+ 0x11, 0x75, 0x00, 0x57, 0x15, 0x38, 0x52, 0x00,
+ 0x57, 0x16, 0x11, 0x77, 0x00, 0x57, 0x18, 0x11,
+ 0x76, 0x00, 0x57, 0x1a, 0x4b, 0x4d, 0x00, 0x57,
+ 0x1b, 0x4b, 0x4e, 0x00, 0x57, 0x1c, 0x11, 0x79,
+ 0x00, 0x57, 0x1d, 0x4b, 0x4f, 0x00, 0x57, 0x1f,
+ 0x0c, 0x54, 0x00, 0x57, 0x20, 0x53, 0x48, 0x00,
+ 0x57, 0x21, 0x36, 0x80, 0x00, 0x57, 0x22, 0x53,
+ 0x49, 0x00, 0x57, 0x23, 0x38, 0x53, 0x00, 0x57,
+ 0x24, 0x53, 0x4a, 0x00, 0x57, 0x25, 0x53, 0x4b,
+ 0x00, 0x57, 0x26, 0x11, 0x7a, 0x00, 0x57, 0x27,
+ 0x04, 0x79, 0x00, 0x57, 0x28, 0x08, 0x4f, 0x00,
+ 0x57, 0x29, 0x44, 0x08, 0x00, 0x57, 0x2a, 0x53,
+ 0x4c, 0x00, 0x57, 0x2c, 0x4b, 0x50, 0x00, 0x57,
+ 0x2d, 0x07, 0x13, 0x00, 0x57, 0x2e, 0x4b, 0x51,
+ 0x00, 0x57, 0x2f, 0x38, 0x54, 0x00, 0x57, 0x30,
+ 0x0b, 0x8d, 0x00, 0x57, 0x33, 0x38, 0x55, 0x00,
+ 0x57, 0x34, 0x38, 0x56, 0x00, 0x57, 0x37, 0x11,
+ 0x7b, 0x00, 0x57, 0x38, 0x11, 0x7c, 0x00, 0x57,
+ 0x3b, 0x11, 0x7e, 0x00, 0x57, 0x3d, 0x4b, 0x52,
+ 0x00, 0x57, 0x3e, 0x4b, 0x53, 0x00, 0x57, 0x3f,
+ 0x53, 0x4d, 0x00, 0x57, 0x40, 0x11, 0x7f, 0x00,
+ 0x57, 0x42, 0x08, 0x54, 0x00, 0x57, 0x45, 0x44,
+ 0x0a, 0x00, 0x57, 0x46, 0x44, 0x0b, 0x00, 0x57,
+ 0x47, 0x06, 0xc9, 0x00, 0x57, 0x4a, 0x0e, 0x65,
+ 0x00, 0x57, 0x4c, 0x38, 0x57, 0x00, 0x57, 0x4d,
+ 0x44, 0x0c, 0x00, 0x57, 0x4e, 0x11, 0x7d, 0x00,
+ 0x57, 0x4f, 0x11, 0x80, 0x00, 0x57, 0x50, 0x08,
+ 0x31, 0x00, 0x57, 0x51, 0x07, 0xb5, 0x00, 0x57,
+ 0x52, 0x53, 0x4e, 0x00, 0x57, 0x59, 0x20, 0xe0,
+ 0x00, 0x57, 0x5f, 0x4b, 0x54, 0x00, 0x57, 0x61,
+ 0x11, 0x84, 0x00, 0x57, 0x62, 0x53, 0x4f, 0x00,
+ 0x57, 0x64, 0x08, 0x15, 0x00, 0x57, 0x65, 0x20,
+ 0xe1, 0x00, 0x57, 0x66, 0x0b, 0x71, 0x00, 0x57,
+ 0x67, 0x53, 0x50, 0x00, 0x57, 0x68, 0x44, 0x0e,
+ 0x00, 0x57, 0x69, 0x11, 0x81, 0x00, 0x57, 0x6a,
+ 0x0b, 0xf6, 0x00, 0x57, 0x6b, 0x4b, 0x55, 0x00,
+ 0x57, 0x6d, 0x4b, 0x56, 0x00, 0x57, 0x6e, 0x53,
+ 0x51, 0x00, 0x57, 0x6f, 0x44, 0x0f, 0x00, 0x57,
+ 0x70, 0x38, 0x58, 0x00, 0x57, 0x71, 0x53, 0x52,
+ 0x00, 0x57, 0x73, 0x44, 0x10, 0x00, 0x57, 0x74,
+ 0x44, 0x11, 0x00, 0x57, 0x75, 0x44, 0x12, 0x00,
+ 0x57, 0x77, 0x41, 0xae, 0x00, 0x57, 0x79, 0x53,
+ 0x53, 0x00, 0x57, 0x7a, 0x4b, 0x57, 0x00, 0x57,
+ 0x7b, 0x44, 0x13, 0x00, 0x57, 0x7c, 0x41, 0xaf,
+ 0x00, 0x57, 0x7e, 0x53, 0x54, 0x00, 0x57, 0x7f,
+ 0x11, 0x85, 0x00, 0x57, 0x81, 0x53, 0x55, 0x00,
+ 0x57, 0x82, 0x0a, 0x28, 0x00, 0x57, 0x83, 0x4b,
+ 0x58, 0x00, 0x57, 0x88, 0x11, 0x83, 0x00, 0x57,
+ 0x89, 0x11, 0x86, 0x00, 0x57, 0x8b, 0x07, 0x15,
+ 0x00, 0x57, 0x8c, 0x38, 0x59, 0x00, 0x57, 0x93,
+ 0x11, 0x87, 0x00, 0x57, 0x94, 0x53, 0x56, 0x00,
+ 0x57, 0x95, 0x53, 0x5a, 0x00, 0x57, 0x97, 0x4b,
+ 0x59, 0x00, 0x57, 0x99, 0x53, 0x57, 0x00, 0x57,
+ 0x9a, 0x44, 0x16, 0x00, 0x57, 0x9c, 0x38, 0x5a,
+ 0x00, 0x57, 0x9d, 0x44, 0x17, 0x00, 0x57, 0x9e,
+ 0x44, 0x18, 0x00, 0x57, 0x9f, 0x53, 0x58, 0x00,
+ 0x57, 0xa0, 0x11, 0x88, 0x00, 0x57, 0xa1, 0x53,
+ 0x59, 0x00, 0x57, 0xa2, 0x07, 0xb6, 0x00, 0x57,
+ 0xa3, 0x05, 0x9e, 0x00, 0x57, 0xa4, 0x11, 0x8a,
+ 0x00, 0x57, 0xa7, 0x53, 0x5b, 0x00, 0x57, 0xa8,
+ 0x44, 0x19, 0x00, 0x57, 0xa9, 0x53, 0x5c, 0x00,
+ 0x57, 0xaa, 0x11, 0x8b, 0x00, 0x57, 0xac, 0x20,
+ 0xe2, 0x00, 0x57, 0xae, 0x4b, 0x5a, 0x00, 0x57,
+ 0xb0, 0x11, 0x8c, 0x00, 0x57, 0xb3, 0x11, 0x89,
+ 0x00, 0x57, 0xb8, 0x38, 0x5b, 0x00, 0x57, 0xbd,
+ 0x53, 0x5d, 0x00, 0x57, 0xc0, 0x11, 0x82, 0x00,
+ 0x57, 0xc3, 0x11, 0x8d, 0x00, 0x57, 0xc6, 0x11,
+ 0x8e, 0x00, 0x57, 0xc7, 0x20, 0xe4, 0x00, 0x57,
+ 0xc8, 0x20, 0xe3, 0x00, 0x57, 0xcb, 0x0e, 0x92,
+ 0x00, 0x57, 0xcc, 0x44, 0x1c, 0x00, 0x57, 0xce,
+ 0x36, 0x11, 0x00, 0x57, 0xcf, 0x41, 0xb1, 0x00,
+ 0x57, 0xd2, 0x11, 0x90, 0x00, 0x57, 0xd3, 0x11,
+ 0x91, 0x00, 0x57, 0xd4, 0x11, 0x8f, 0x00, 0x57,
+ 0xd5, 0x4b, 0x5b, 0x00, 0x57, 0xd6, 0x11, 0x93,
+ 0x00, 0x57, 0xd7, 0x44, 0x1a, 0x00, 0x57, 0xdc,
+ 0x0c, 0xee, 0x00, 0x57, 0xdd, 0x53, 0x5e, 0x00,
+ 0x57, 0xde, 0x44, 0x1f, 0x00, 0x57, 0xdf, 0x04,
+ 0xac, 0x00, 0x57, 0xe0, 0x0d, 0xc8, 0x00, 0x57,
+ 0xe1, 0x53, 0x63, 0x00, 0x57, 0xe3, 0x11, 0x94,
+ 0x00, 0x57, 0xe4, 0x41, 0xb2, 0x00, 0x57, 0xe6,
+ 0x38, 0x5c, 0x00, 0x57, 0xe7, 0x4b, 0x5c, 0x00,
+ 0x57, 0xe9, 0x53, 0x5f, 0x00, 0x57, 0xed, 0x38,
+ 0x5d, 0x00, 0x57, 0xf0, 0x44, 0x20, 0x00, 0x57,
+ 0xf4, 0x09, 0xe5, 0x00, 0x57, 0xf5, 0x38, 0x5e,
+ 0x00, 0x57, 0xf6, 0x38, 0x5f, 0x00, 0x57, 0xf7,
+ 0x08, 0xe5, 0x00, 0x57, 0xf8, 0x44, 0x22, 0x00,
+ 0x57, 0xf9, 0x0d, 0x13, 0x00, 0x57, 0xfa, 0x06,
+ 0x2c, 0x00, 0x57, 0xfb, 0x44, 0x23, 0x00, 0x57,
+ 0xfc, 0x08, 0x5b, 0x00, 0x57, 0xfd, 0x44, 0x24,
+ 0x00, 0x57, 0xfe, 0x53, 0x60, 0x00, 0x57, 0xff,
+ 0x38, 0x60, 0x00, 0x58, 0x00, 0x0e, 0x87, 0x00,
+ 0x58, 0x02, 0x0c, 0x8a, 0x00, 0x58, 0x03, 0x53,
+ 0x61, 0x00, 0x58, 0x04, 0x44, 0x25, 0x00, 0x58,
+ 0x05, 0x07, 0x4e, 0x00, 0x58, 0x06, 0x0b, 0x2f,
+ 0x00, 0x58, 0x08, 0x53, 0x62, 0x00, 0x58, 0x09,
+ 0x38, 0x61, 0x00, 0x58, 0x0a, 0x11, 0x92, 0x00,
+ 0x58, 0x0b, 0x11, 0x95, 0x00, 0x58, 0x0c, 0x53,
+ 0x64, 0x00, 0x58, 0x0d, 0x4b, 0x5d, 0x00, 0x58,
+ 0x15, 0x0b, 0x24, 0x00, 0x58, 0x19, 0x11, 0x96,
+ 0x00, 0x58, 0x1b, 0x53, 0x65, 0x00, 0x58, 0x1d,
+ 0x11, 0x97, 0x00, 0x58, 0x1e, 0x44, 0x26, 0x00,
+ 0x58, 0x1f, 0x53, 0x66, 0x00, 0x58, 0x20, 0x38,
+ 0x62, 0x00, 0x58, 0x21, 0x11, 0x99, 0x00, 0x58,
+ 0x24, 0x0c, 0x05, 0x00, 0x58, 0x26, 0x4b, 0x5e,
+ 0x00, 0x58, 0x27, 0x44, 0x27, 0x00, 0x58, 0x2a,
+ 0x05, 0xea, 0x00, 0x58, 0x2d, 0x53, 0x67, 0x00,
+ 0x58, 0x2f, 0x1d, 0x32, 0x00, 0x58, 0x30, 0x05,
+ 0x03, 0x00, 0x58, 0x31, 0x0e, 0x43, 0x00, 0x58,
+ 0x32, 0x38, 0x63, 0x00, 0x58, 0x34, 0x09, 0xd4,
+ 0x00, 0x58, 0x35, 0x0c, 0x42, 0x00, 0x58, 0x39,
+ 0x44, 0x28, 0x00, 0x58, 0x3a, 0x08, 0x56, 0x00,
+ 0x58, 0x3d, 0x11, 0x9f, 0x00, 0x58, 0x3f, 0x53,
+ 0x68, 0x00, 0x58, 0x40, 0x0e, 0x0d, 0x00, 0x58,
+ 0x41, 0x0f, 0xa5, 0x00, 0x58, 0x49, 0x44, 0x2a,
+ 0x00, 0x58, 0x4a, 0x05, 0x74, 0x00, 0x58, 0x4b,
+ 0x11, 0x9b, 0x00, 0x58, 0x4c, 0x44, 0x2b, 0x00,
+ 0x58, 0x4d, 0x4b, 0x5f, 0x00, 0x58, 0x4f, 0x4b,
+ 0x60, 0x00, 0x58, 0x50, 0x53, 0x69, 0x00, 0x58,
+ 0x51, 0x0a, 0xbc, 0x00, 0x58, 0x52, 0x11, 0x9e,
+ 0x00, 0x58, 0x54, 0x0c, 0x5d, 0x00, 0x58, 0x55,
+ 0x53, 0x6a, 0x00, 0x58, 0x57, 0x0c, 0x43, 0x00,
+ 0x58, 0x58, 0x0c, 0x5e, 0x00, 0x58, 0x59, 0x0d,
+ 0x4d, 0x00, 0x58, 0x5a, 0x0b, 0xe9, 0x00, 0x58,
+ 0x5e, 0x08, 0x39, 0x00, 0x58, 0x5f, 0x4b, 0x61,
+ 0x00, 0x58, 0x61, 0x1e, 0x47, 0x00, 0x58, 0x62,
+ 0x11, 0x9a, 0x00, 0x58, 0x64, 0x41, 0xb3, 0x00,
+ 0x58, 0x67, 0x44, 0x2c, 0x00, 0x58, 0x68, 0x53,
+ 0x6b, 0x00, 0x58, 0x69, 0x05, 0x18, 0x00, 0x58,
+ 0x6b, 0x0c, 0x30, 0x00, 0x58, 0x6d, 0x4b, 0x62,
+ 0x00, 0x58, 0x70, 0x11, 0x9c, 0x00, 0x58, 0x72,
+ 0x11, 0x98, 0x00, 0x58, 0x75, 0x0a, 0x16, 0x00,
+ 0x58, 0x78, 0x53, 0x6c, 0x00, 0x58, 0x79, 0x11,
+ 0xa0, 0x00, 0x58, 0x7c, 0x38, 0x64, 0x00, 0x58,
+ 0x7e, 0x09, 0x58, 0x00, 0x58, 0x7f, 0x4b, 0x63,
+ 0x00, 0x58, 0x80, 0x38, 0x65, 0x00, 0x58, 0x81,
+ 0x4b, 0x64, 0x00, 0x58, 0x83, 0x06, 0xa5, 0x00,
+ 0x58, 0x85, 0x11, 0xa1, 0x00, 0x58, 0x87, 0x53,
+ 0x6d, 0x00, 0x58, 0x88, 0x53, 0x6e, 0x00, 0x58,
+ 0x89, 0x41, 0xb4, 0x00, 0x58, 0x8a, 0x44, 0x2d,
+ 0x00, 0x58, 0x8b, 0x44, 0x2e, 0x00, 0x58, 0x8c,
+ 0x53, 0x6f, 0x00, 0x58, 0x8d, 0x44, 0x2f, 0x00,
+ 0x58, 0x8f, 0x44, 0x30, 0x00, 0x58, 0x90, 0x44,
+ 0x31, 0x00, 0x58, 0x93, 0x0e, 0x38, 0x00, 0x58,
+ 0x94, 0x44, 0x32, 0x00, 0x58, 0x96, 0x53, 0x70,
+ 0x00, 0x58, 0x97, 0x0a, 0xff, 0x00, 0x58, 0x98,
+ 0x4b, 0x65, 0x00, 0x58, 0x9c, 0x0b, 0xe2, 0x00,
+ 0x58, 0x9d, 0x44, 0x33, 0x00, 0x58, 0x9e, 0x20,
+ 0xe7, 0x00, 0x58, 0x9f, 0x11, 0xa3, 0x00, 0x58,
+ 0xa0, 0x53, 0x71, 0x00, 0x58, 0xa1, 0x53, 0x72,
+ 0x00, 0x58, 0xa2, 0x53, 0x73, 0x00, 0x58, 0xa6,
+ 0x53, 0x74, 0x00, 0x58, 0xa8, 0x34, 0x4b, 0x00,
+ 0x58, 0xa9, 0x38, 0x66, 0x00, 0x58, 0xaa, 0x44,
+ 0x34, 0x00, 0x58, 0xab, 0x11, 0xa4, 0x00, 0x58,
+ 0xae, 0x11, 0xa9, 0x00, 0x58, 0xb1, 0x44, 0x35,
+ 0x00, 0x58, 0xb2, 0x20, 0xe8, 0x00, 0x58, 0xb3,
+ 0x0d, 0xff, 0x00, 0x58, 0xb8, 0x11, 0xa8, 0x00,
+ 0x58, 0xb9, 0x11, 0xa2, 0x00, 0x58, 0xba, 0x11,
+ 0xa5, 0x00, 0x58, 0xbb, 0x11, 0xa7, 0x00, 0x58,
+ 0xbc, 0x4b, 0x66, 0x00, 0x58, 0xbe, 0x08, 0x16,
+ 0x00, 0x58, 0xc1, 0x0e, 0x19, 0x00, 0x58, 0xc2,
+ 0x53, 0x76, 0x00, 0x58, 0xc3, 0x44, 0x37, 0x00,
+ 0x58, 0xc4, 0x53, 0x75, 0x00, 0x58, 0xc5, 0x11,
+ 0xaa, 0x00, 0x58, 0xc7, 0x0b, 0x83, 0x00, 0x58,
+ 0xc8, 0x53, 0x77, 0x00, 0x58, 0xca, 0x05, 0x75,
+ 0x00, 0x58, 0xcc, 0x09, 0xd5, 0x00, 0x58, 0xcd,
+ 0x44, 0x38, 0x00, 0x58, 0xce, 0x38, 0x67, 0x00,
+ 0x58, 0xd0, 0x38, 0x68, 0x00, 0x58, 0xd1, 0x11,
+ 0xac, 0x00, 0x58, 0xd2, 0x41, 0xb6, 0x00, 0x58,
+ 0xd3, 0x11, 0xab, 0x00, 0x58, 0xd4, 0x38, 0x69,
+ 0x00, 0x58, 0xd5, 0x07, 0xfa, 0x00, 0x58, 0xd6,
+ 0x53, 0x78, 0x00, 0x58, 0xd7, 0x11, 0xad, 0x00,
+ 0x58, 0xd8, 0x11, 0xaf, 0x00, 0x58, 0xd9, 0x11,
+ 0xae, 0x00, 0x58, 0xda, 0x38, 0x6a, 0x00, 0x58,
+ 0xdc, 0x11, 0xb1, 0x00, 0x58, 0xdd, 0x53, 0x79,
+ 0x00, 0x58, 0xde, 0x11, 0xa6, 0x00, 0x58, 0xdf,
+ 0x11, 0xb3, 0x00, 0x58, 0xe0, 0x41, 0xb7, 0x00,
+ 0x58, 0xe1, 0x53, 0x7a, 0x00, 0x58, 0xe2, 0x44,
+ 0x39, 0x00, 0x58, 0xe4, 0x11, 0xb2, 0x00, 0x58,
+ 0xe5, 0x11, 0xb0, 0x00, 0x58, 0xe9, 0x38, 0x6b,
+ 0x00, 0x58, 0xeb, 0x08, 0x9c, 0x00, 0x58, 0xec,
+ 0x0a, 0x17, 0x00, 0x58, 0xee, 0x0a, 0xd6, 0x00,
+ 0x58, 0xef, 0x11, 0xb4, 0x00, 0x58, 0xf0, 0x0a,
+ 0x60, 0x00, 0x58, 0xf1, 0x04, 0xb1, 0x00, 0x58,
+ 0xf2, 0x0d, 0x1a, 0x00, 0x58, 0xf3, 0x44, 0x3a,
+ 0x00, 0x58, 0xf4, 0x44, 0x3b, 0x00, 0x58, 0xf7,
+ 0x0b, 0xf7, 0x00, 0x58, 0xf9, 0x11, 0xb6, 0x00,
+ 0x58, 0xfa, 0x11, 0xb5, 0x00, 0x58, 0xfb, 0x11,
+ 0xb7, 0x00, 0x58, 0xfc, 0x11, 0xb8, 0x00, 0x58,
+ 0xfd, 0x11, 0xb9, 0x00, 0x59, 0x02, 0x11, 0xba,
+ 0x00, 0x59, 0x05, 0x44, 0x3c, 0x00, 0x59, 0x06,
+ 0x44, 0x3d, 0x00, 0x59, 0x09, 0x0e, 0x21, 0x00,
+ 0x59, 0x0a, 0x11, 0xbb, 0x00, 0x59, 0x0b, 0x20,
+ 0xe9, 0x00, 0x59, 0x0c, 0x38, 0x6c, 0x00, 0x59,
+ 0x0d, 0x44, 0x3e, 0x00, 0x59, 0x0f, 0x05, 0x46,
+ 0x00, 0x59, 0x10, 0x11, 0xbc, 0x00, 0x59, 0x12,
+ 0x53, 0x7c, 0x00, 0x59, 0x13, 0x53, 0x7d, 0x00,
+ 0x59, 0x14, 0x44, 0x3f, 0x00, 0x59, 0x15, 0x0f,
+ 0x26, 0x00, 0x59, 0x16, 0x05, 0x8e, 0x00, 0x59,
+ 0x18, 0x10, 0xde, 0x00, 0x59, 0x19, 0x09, 0x52,
+ 0x00, 0x59, 0x1a, 0x0b, 0x1f, 0x00, 0x59, 0x1b,
+ 0x11, 0xbd, 0x00, 0x59, 0x1c, 0x0e, 0xf7, 0x00,
+ 0x59, 0x1d, 0x53, 0x7e, 0x00, 0x59, 0x1f, 0x4b,
+ 0x67, 0x00, 0x59, 0x21, 0x53, 0x7f, 0x00, 0x59,
+ 0x22, 0x0e, 0xc0, 0x00, 0x59, 0x23, 0x4b, 0x68,
+ 0x00, 0x59, 0x24, 0x38, 0x6d, 0x00, 0x59, 0x25,
+ 0x11, 0xbf, 0x00, 0x59, 0x27, 0x0b, 0x47, 0x00,
+ 0x59, 0x28, 0x53, 0x80, 0x00, 0x59, 0x29, 0x0c,
+ 0x31, 0x00, 0x59, 0x2a, 0x0b, 0x20, 0x00, 0x59,
+ 0x2b, 0x0d, 0xc9, 0x00, 0x59, 0x2c, 0x11, 0xc0,
+ 0x00, 0x59, 0x2d, 0x11, 0xc1, 0x00, 0x59, 0x2e,
+ 0x05, 0x1d, 0x00, 0x59, 0x2f, 0x38, 0x6e, 0x00,
+ 0x59, 0x30, 0x53, 0x81, 0x00, 0x59, 0x31, 0x08,
+ 0xe6, 0x00, 0x59, 0x32, 0x11, 0xc2, 0x00, 0x59,
+ 0x33, 0x53, 0x82, 0x00, 0x59, 0x35, 0x53, 0x83,
+ 0x00, 0x59, 0x36, 0x53, 0x84, 0x00, 0x59, 0x37,
+ 0x04, 0x94, 0x00, 0x59, 0x38, 0x11, 0xc3, 0x00,
+ 0x59, 0x39, 0x37, 0x25, 0x00, 0x59, 0x3d, 0x44,
+ 0x42, 0x00, 0x59, 0x3e, 0x11, 0xc4, 0x00, 0x59,
+ 0x3f, 0x53, 0x85, 0x00, 0x59, 0x43, 0x53, 0x86,
+ 0x00, 0x59, 0x44, 0x05, 0x04, 0x00, 0x59, 0x46,
+ 0x44, 0x44, 0x00, 0x59, 0x47, 0x06, 0x2d, 0x00,
+ 0x59, 0x48, 0x0c, 0xb8, 0x00, 0x59, 0x49, 0x0e,
+ 0x44, 0x00, 0x59, 0x4e, 0x11, 0xc8, 0x00, 0x59,
+ 0x4f, 0x0a, 0xd7, 0x00, 0x59, 0x50, 0x11, 0xc7,
+ 0x00, 0x59, 0x51, 0x07, 0x16, 0x00, 0x59, 0x52,
+ 0x53, 0x87, 0x00, 0x59, 0x53, 0x20, 0xea, 0x00,
+ 0x59, 0x54, 0x0e, 0x89, 0x00, 0x59, 0x55, 0x11,
+ 0xc6, 0x00, 0x59, 0x57, 0x0c, 0x5f, 0x00, 0x59,
+ 0x58, 0x11, 0xca, 0x00, 0x59, 0x59, 0x4b, 0x69,
+ 0x00, 0x59, 0x5a, 0x11, 0xc9, 0x00, 0x59, 0x5b,
+ 0x20, 0xeb, 0x00, 0x59, 0x5d, 0x20, 0xec, 0x00,
+ 0x59, 0x5e, 0x53, 0x88, 0x00, 0x59, 0x5f, 0x44,
+ 0x47, 0x00, 0x59, 0x60, 0x11, 0xcc, 0x00, 0x59,
+ 0x61, 0x38, 0x6f, 0x00, 0x59, 0x62, 0x11, 0xcb,
+ 0x00, 0x59, 0x63, 0x20, 0xed, 0x00, 0x59, 0x65,
+ 0x05, 0x1e, 0x00, 0x59, 0x67, 0x11, 0xcd, 0x00,
+ 0x59, 0x68, 0x09, 0x91, 0x00, 0x59, 0x69, 0x11,
+ 0xcf, 0x00, 0x59, 0x6a, 0x0b, 0x63, 0x00, 0x59,
+ 0x6b, 0x53, 0x89, 0x00, 0x59, 0x6c, 0x11, 0xce,
+ 0x00, 0x59, 0x6d, 0x38, 0x70, 0x00, 0x59, 0x6e,
+ 0x0e, 0x03, 0x00, 0x59, 0x6f, 0x53, 0x8a, 0x00,
+ 0x59, 0x72, 0x53, 0x8b, 0x00, 0x59, 0x73, 0x09,
+ 0x81, 0x00, 0x59, 0x74, 0x0c, 0x55, 0x00, 0x59,
+ 0x75, 0x44, 0x49, 0x00, 0x59, 0x76, 0x44, 0x4a,
+ 0x00, 0x59, 0x78, 0x11, 0xd0, 0x00, 0x59, 0x79,
+ 0x4b, 0x6a, 0x00, 0x59, 0x7b, 0x53, 0x8c, 0x00,
+ 0x59, 0x7c, 0x44, 0x4b, 0x00, 0x59, 0x7d, 0x07,
+ 0xb7, 0x00, 0x59, 0x81, 0x11, 0xd1, 0x00, 0x59,
+ 0x82, 0x0c, 0xd7, 0x00, 0x59, 0x83, 0x0d, 0x72,
+ 0x00, 0x59, 0x84, 0x0e, 0xdd, 0x00, 0x59, 0x8a,
+ 0x0c, 0xdb, 0x00, 0x59, 0x8b, 0x41, 0xb9, 0x00,
+ 0x59, 0x8c, 0x53, 0x8d, 0x00, 0x59, 0x8d, 0x11,
+ 0xda, 0x00, 0x59, 0x8e, 0x53, 0x8e, 0x00, 0x59,
+ 0x92, 0x41, 0xba, 0x00, 0x59, 0x93, 0x06, 0x52,
+ 0x00, 0x59, 0x95, 0x53, 0x8f, 0x00, 0x59, 0x96,
+ 0x0f, 0x2f, 0x00, 0x59, 0x97, 0x4b, 0x6b, 0x00,
+ 0x59, 0x99, 0x0e, 0xbb, 0x00, 0x59, 0x9b, 0x12,
+ 0x39, 0x00, 0x59, 0x9d, 0x11, 0xd2, 0x00, 0x59,
+ 0x9f, 0x44, 0x4c, 0x00, 0x59, 0xa3, 0x11, 0xd5,
+ 0x00, 0x59, 0xa4, 0x20, 0xee, 0x00, 0x59, 0xa5,
+ 0x0b, 0x25, 0x00, 0x59, 0xa7, 0x53, 0x90, 0x00,
+ 0x59, 0xa8, 0x0e, 0x66, 0x00, 0x59, 0xac, 0x0c,
+ 0x44, 0x00, 0x59, 0xad, 0x53, 0x91, 0x00, 0x59,
+ 0xae, 0x44, 0x4d, 0x00, 0x59, 0xaf, 0x4b, 0x6c,
+ 0x00, 0x59, 0xb0, 0x53, 0x92, 0x00, 0x59, 0xb2,
+ 0x11, 0xd6, 0x00, 0x59, 0xb3, 0x4b, 0x6d, 0x00,
+ 0x59, 0xb7, 0x53, 0x93, 0x00, 0x59, 0xb9, 0x0e,
+ 0x93, 0x00, 0x59, 0xba, 0x20, 0xef, 0x00, 0x59,
+ 0xbb, 0x08, 0x3a, 0x00, 0x59, 0xbc, 0x44, 0x4e,
+ 0x00, 0x59, 0xbe, 0x09, 0x92, 0x00, 0x59, 0xc1,
+ 0x53, 0x94, 0x00, 0x59, 0xc3, 0x41, 0xbb, 0x00,
+ 0x59, 0xc4, 0x53, 0x95, 0x00, 0x59, 0xc6, 0x11,
+ 0xd7, 0x00, 0x59, 0xc8, 0x44, 0x4f, 0x00, 0x59,
+ 0xc9, 0x08, 0x9e, 0x00, 0x59, 0xca, 0x38, 0x71,
+ 0x00, 0x59, 0xcb, 0x08, 0x9d, 0x00, 0x59, 0xcd,
+ 0x44, 0x50, 0x00, 0x59, 0xd0, 0x04, 0x7d, 0x00,
+ 0x59, 0xd1, 0x07, 0x7c, 0x00, 0x59, 0xd2, 0x38,
+ 0x72, 0x00, 0x59, 0xd3, 0x0a, 0x4f, 0x00, 0x59,
+ 0xd4, 0x04, 0x95, 0x00, 0x59, 0xd9, 0x11, 0xdb,
+ 0x00, 0x59, 0xda, 0x11, 0xdc, 0x00, 0x59, 0xdc,
+ 0x11, 0xd9, 0x00, 0x59, 0xdd, 0x38, 0x73, 0x00,
+ 0x59, 0xde, 0x44, 0x51, 0x00, 0x59, 0xdf, 0x4b,
+ 0x6e, 0x00, 0x59, 0xe3, 0x38, 0x74, 0x00, 0x59,
+ 0xe4, 0x38, 0x75, 0x00, 0x59, 0xe5, 0x04, 0xda,
+ 0x00, 0x59, 0xe6, 0x05, 0xeb, 0x00, 0x59, 0xe7,
+ 0x44, 0x52, 0x00, 0x59, 0xe8, 0x11, 0xd8, 0x00,
+ 0x59, 0xea, 0x0e, 0xd1, 0x00, 0x59, 0xeb, 0x0d,
+ 0xa3, 0x00, 0x59, 0xec, 0x36, 0xad, 0x00, 0x59,
+ 0xee, 0x44, 0x53, 0x00, 0x59, 0xef, 0x53, 0x96,
+ 0x00, 0x59, 0xf1, 0x4b, 0x6f, 0x00, 0x59, 0xf2,
+ 0x53, 0x97, 0x00, 0x59, 0xf4, 0x53, 0x98, 0x00,
+ 0x59, 0xf6, 0x04, 0x6c, 0x00, 0x59, 0xf7, 0x53,
+ 0x99, 0x00, 0x59, 0xf8, 0x4b, 0x70, 0x00, 0x59,
+ 0xfb, 0x04, 0xbd, 0x00, 0x59, 0xff, 0x08, 0x9f,
+ 0x00, 0x5a, 0x00, 0x53, 0x9a, 0x00, 0x5a, 0x01,
+ 0x04, 0x96, 0x00, 0x5a, 0x03, 0x04, 0x67, 0x00,
+ 0x5a, 0x04, 0x38, 0x76, 0x00, 0x5a, 0x09, 0x11,
+ 0xe1, 0x00, 0x5a, 0x0c, 0x38, 0x77, 0x00, 0x5a,
+ 0x0d, 0x44, 0x57, 0x00, 0x5a, 0x0e, 0x53, 0x9b,
+ 0x00, 0x5a, 0x11, 0x11, 0xdf, 0x00, 0x5a, 0x12,
+ 0x53, 0x9c, 0x00, 0x5a, 0x13, 0x41, 0xbc, 0x00,
+ 0x5a, 0x17, 0x44, 0x58, 0x00, 0x5a, 0x18, 0x0e,
+ 0xc8, 0x00, 0x5a, 0x1a, 0x11, 0xe2, 0x00, 0x5a,
+ 0x1b, 0x35, 0xc1, 0x00, 0x5a, 0x1c, 0x11, 0xe0,
+ 0x00, 0x5a, 0x1e, 0x53, 0x9d, 0x00, 0x5a, 0x1f,
+ 0x11, 0xde, 0x00, 0x5a, 0x20, 0x09, 0xf7, 0x00,
+ 0x5a, 0x23, 0x38, 0x78, 0x00, 0x5a, 0x24, 0x53,
+ 0x9e, 0x00, 0x5a, 0x25, 0x11, 0xdd, 0x00, 0x5a,
+ 0x27, 0x44, 0x59, 0x00, 0x5a, 0x28, 0x53, 0x9f,
+ 0x00, 0x5a, 0x29, 0x0e, 0x2a, 0x00, 0x5a, 0x2a,
+ 0x53, 0xa0, 0x00, 0x5a, 0x2d, 0x44, 0x5a, 0x00,
+ 0x5a, 0x2f, 0x07, 0x98, 0x00, 0x5a, 0x30, 0x53,
+ 0xa1, 0x00, 0x5a, 0x35, 0x11, 0xe6, 0x00, 0x5a,
+ 0x36, 0x11, 0xe7, 0x00, 0x5a, 0x3c, 0x09, 0x93,
+ 0x00, 0x5a, 0x40, 0x11, 0xe3, 0x00, 0x5a, 0x41,
+ 0x0f, 0xd2, 0x00, 0x5a, 0x44, 0x53, 0xa2, 0x00,
+ 0x5a, 0x45, 0x53, 0xa3, 0x00, 0x5a, 0x46, 0x0d,
+ 0x02, 0x00, 0x5a, 0x47, 0x38, 0x79, 0x00, 0x5a,
+ 0x48, 0x53, 0xa4, 0x00, 0x5a, 0x49, 0x11, 0xe5,
+ 0x00, 0x5a, 0x4c, 0x53, 0xa5, 0x00, 0x5a, 0x50,
+ 0x53, 0xa6, 0x00, 0x5a, 0x55, 0x38, 0x7a, 0x00,
+ 0x5a, 0x5a, 0x08, 0x17, 0x00, 0x5a, 0x5e, 0x53,
+ 0xa7, 0x00, 0x5a, 0x62, 0x11, 0xe8, 0x00, 0x5a,
+ 0x63, 0x38, 0x7b, 0x00, 0x5a, 0x65, 0x44, 0x5b,
+ 0x00, 0x5a, 0x66, 0x0d, 0xca, 0x00, 0x5a, 0x67,
+ 0x41, 0xbd, 0x00, 0x5a, 0x6a, 0x11, 0xe9, 0x00,
+ 0x5a, 0x6c, 0x11, 0xe4, 0x00, 0x5a, 0x6d, 0x38,
+ 0x7c, 0x00, 0x5a, 0x77, 0x41, 0xbe, 0x00, 0x5a,
+ 0x7a, 0x44, 0x5c, 0x00, 0x5a, 0x7b, 0x53, 0xa8,
+ 0x00, 0x5a, 0x7e, 0x38, 0x7d, 0x00, 0x5a, 0x7f,
+ 0x0e, 0xc7, 0x00, 0x5a, 0x84, 0x41, 0xbf, 0x00,
+ 0x5a, 0x8b, 0x44, 0x5d, 0x00, 0x5a, 0x90, 0x53,
+ 0xa9, 0x00, 0x5a, 0x92, 0x0d, 0x14, 0x00, 0x5a,
+ 0x93, 0x53, 0xaa, 0x00, 0x5a, 0x96, 0x53, 0xab,
+ 0x00, 0x5a, 0x99, 0x53, 0xac, 0x00, 0x5a, 0x9a,
+ 0x11, 0xea, 0x00, 0x5a, 0x9b, 0x0d, 0xa4, 0x00,
+ 0x5a, 0x9c, 0x44, 0x5e, 0x00, 0x5a, 0x9e, 0x38,
+ 0x7e, 0x00, 0x5a, 0x9f, 0x44, 0x5f, 0x00, 0x5a,
+ 0xa0, 0x44, 0x60, 0x00, 0x5a, 0xa2, 0x44, 0x61,
+ 0x00, 0x5a, 0xa7, 0x38, 0x7f, 0x00, 0x5a, 0xac,
+ 0x38, 0x80, 0x00, 0x5a, 0xb1, 0x44, 0x62, 0x00,
+ 0x5a, 0xb2, 0x4b, 0x71, 0x00, 0x5a, 0xb3, 0x38,
+ 0x81, 0x00, 0x5a, 0xb5, 0x44, 0x63, 0x00, 0x5a,
+ 0xb8, 0x4b, 0x72, 0x00, 0x5a, 0xba, 0x44, 0x64,
+ 0x00, 0x5a, 0xbb, 0x53, 0xad, 0x00, 0x5a, 0xbc,
+ 0x11, 0xeb, 0x00, 0x5a, 0xbd, 0x11, 0xef, 0x00,
+ 0x5a, 0xbe, 0x11, 0xec, 0x00, 0x5a, 0xbf, 0x44,
+ 0x65, 0x00, 0x5a, 0xc1, 0x05, 0x47, 0x00, 0x5a,
+ 0xc2, 0x11, 0xee, 0x00, 0x5a, 0xc4, 0x41, 0xc0,
+ 0x00, 0x5a, 0xc6, 0x53, 0xae, 0x00, 0x5a, 0xc8,
+ 0x53, 0xaf, 0x00, 0x5a, 0xc9, 0x08, 0xe7, 0x00,
+ 0x5a, 0xcb, 0x11, 0xed, 0x00, 0x5a, 0xcc, 0x07,
+ 0x4f, 0x00, 0x5a, 0xcf, 0x53, 0xb0, 0x00, 0x5a,
+ 0xd0, 0x11, 0xfb, 0x00, 0x5a, 0xd6, 0x11, 0xf4,
+ 0x00, 0x5a, 0xd7, 0x11, 0xf1, 0x00, 0x5a, 0xda,
+ 0x44, 0x66, 0x00, 0x5a, 0xdc, 0x44, 0x67, 0x00,
+ 0x5a, 0xe0, 0x38, 0x82, 0x00, 0x5a, 0xe1, 0x0b,
+ 0xa2, 0x00, 0x5a, 0xe3, 0x11, 0xf0, 0x00, 0x5a,
+ 0xe5, 0x44, 0x68, 0x00, 0x5a, 0xe6, 0x11, 0xf2,
+ 0x00, 0x5a, 0xe9, 0x11, 0xf3, 0x00, 0x5a, 0xea,
+ 0x4b, 0x73, 0x00, 0x5a, 0xee, 0x44, 0x6a, 0x00,
+ 0x5a, 0xf0, 0x44, 0x69, 0x00, 0x5a, 0xf5, 0x44,
+ 0x6b, 0x00, 0x5a, 0xf6, 0x4b, 0x74, 0x00, 0x5a,
+ 0xfa, 0x11, 0xf5, 0x00, 0x5a, 0xfb, 0x11, 0xf6,
+ 0x00, 0x5a, 0xfd, 0x53, 0xb1, 0x00, 0x5b, 0x00,
+ 0x38, 0x83, 0x00, 0x5b, 0x01, 0x53, 0xb2, 0x00,
+ 0x5b, 0x08, 0x44, 0x6c, 0x00, 0x5b, 0x09, 0x06,
+ 0x2e, 0x00, 0x5b, 0x0b, 0x11, 0xf8, 0x00, 0x5b,
+ 0x0c, 0x11, 0xf7, 0x00, 0x5b, 0x16, 0x11, 0xf9,
+ 0x00, 0x5b, 0x17, 0x44, 0x6d, 0x00, 0x5b, 0x19,
+ 0x38, 0x84, 0x00, 0x5b, 0x1b, 0x4b, 0x75, 0x00,
+ 0x5b, 0x1d, 0x4b, 0x76, 0x00, 0x5b, 0x21, 0x4b,
+ 0x77, 0x00, 0x5b, 0x22, 0x09, 0xd6, 0x00, 0x5b,
+ 0x25, 0x38, 0x85, 0x00, 0x5b, 0x2a, 0x11, 0xfc,
+ 0x00, 0x5b, 0x2c, 0x0b, 0xf8, 0x00, 0x5b, 0x2d,
+ 0x38, 0x86, 0x00, 0x5b, 0x30, 0x04, 0xe7, 0x00,
+ 0x5b, 0x32, 0x11, 0xfa, 0x00, 0x5b, 0x34, 0x44,
+ 0x6e, 0x00, 0x5b, 0x36, 0x11, 0xfd, 0x00, 0x5b,
+ 0x38, 0x4b, 0x78, 0x00, 0x5b, 0x3e, 0x11, 0xfe,
+ 0x00, 0x5b, 0x40, 0x12, 0x01, 0x00, 0x5b, 0x41,
+ 0x38, 0x87, 0x00, 0x5b, 0x43, 0x11, 0xff, 0x00,
+ 0x5b, 0x45, 0x12, 0x00, 0x00, 0x5b, 0x4b, 0x53,
+ 0xb3, 0x00, 0x5b, 0x4c, 0x44, 0x6f, 0x00, 0x5b,
+ 0x50, 0x08, 0xa0, 0x00, 0x5b, 0x51, 0x12, 0x02,
+ 0x00, 0x5b, 0x52, 0x44, 0x70, 0x00, 0x5b, 0x54,
+ 0x07, 0xb8, 0x00, 0x5b, 0x55, 0x12, 0x03, 0x00,
+ 0x5b, 0x56, 0x20, 0xf0, 0x00, 0x5b, 0x57, 0x08,
+ 0xc8, 0x00, 0x5b, 0x58, 0x0b, 0x18, 0x00, 0x5b,
+ 0x5a, 0x12, 0x04, 0x00, 0x5b, 0x5b, 0x12, 0x05,
+ 0x00, 0x5b, 0x5c, 0x08, 0xa8, 0x00, 0x5b, 0x5d,
+ 0x07, 0xb9, 0x00, 0x5b, 0x5e, 0x53, 0xb4, 0x00,
+ 0x5b, 0x5f, 0x0e, 0xde, 0x00, 0x5b, 0x63, 0x06,
+ 0x42, 0x00, 0x5b, 0x64, 0x07, 0x7d, 0x00, 0x5b,
+ 0x65, 0x12, 0x06, 0x00, 0x5b, 0x66, 0x05, 0xb6,
+ 0x00, 0x5b, 0x68, 0x44, 0x71, 0x00, 0x5b, 0x69,
+ 0x12, 0x07, 0x00, 0x5b, 0x6b, 0x0b, 0x19, 0x00,
+ 0x5b, 0x6e, 0x53, 0xb5, 0x00, 0x5b, 0x6f, 0x44,
+ 0x72, 0x00, 0x5b, 0x70, 0x12, 0x08, 0x00, 0x5b,
+ 0x71, 0x12, 0x30, 0x00, 0x5b, 0x73, 0x12, 0x09,
+ 0x00, 0x5b, 0x75, 0x12, 0x0a, 0x00, 0x5b, 0x76,
+ 0x37, 0x28, 0x00, 0x5b, 0x78, 0x12, 0x0b, 0x00,
+ 0x5b, 0x7a, 0x12, 0x0d, 0x00, 0x5b, 0x7c, 0x38,
+ 0x88, 0x00, 0x5b, 0x7d, 0x41, 0xc2, 0x00, 0x5b,
+ 0x7e, 0x38, 0x89, 0x00, 0x5b, 0x7f, 0x38, 0x8a,
+ 0x00, 0x5b, 0x80, 0x12, 0x0e, 0x00, 0x5b, 0x81,
+ 0x44, 0x73, 0x00, 0x5b, 0x82, 0x36, 0x10, 0x00,
+ 0x5b, 0x83, 0x12, 0x0f, 0x00, 0x5b, 0x84, 0x44,
+ 0x74, 0x00, 0x5b, 0x85, 0x0b, 0x50, 0x00, 0x5b,
+ 0x86, 0x53, 0xb6, 0x00, 0x5b, 0x87, 0x04, 0xc9,
+ 0x00, 0x5b, 0x88, 0x09, 0x15, 0x00, 0x5b, 0x89,
+ 0x04, 0x86, 0x00, 0x5b, 0x8a, 0x38, 0x8b, 0x00,
+ 0x5b, 0x8b, 0x0a, 0xd9, 0x00, 0x5b, 0x8c, 0x05,
+ 0xec, 0x00, 0x5b, 0x8d, 0x08, 0xe1, 0x00, 0x5b,
+ 0x8e, 0x53, 0xb7, 0x00, 0x5b, 0x8f, 0x07, 0xba,
+ 0x00, 0x5b, 0x90, 0x53, 0xb8, 0x00, 0x5b, 0x91,
+ 0x53, 0xb9, 0x00, 0x5b, 0x93, 0x41, 0xc3, 0x00,
+ 0x5b, 0x94, 0x53, 0xba, 0x00, 0x5b, 0x95, 0x0c,
+ 0x60, 0x00, 0x5b, 0x96, 0x44, 0x76, 0x00, 0x5b,
+ 0x97, 0x09, 0x2b, 0x00, 0x5b, 0x98, 0x05, 0xed,
+ 0x00, 0x5b, 0x99, 0x0b, 0xa6, 0x00, 0x5b, 0x9a,
+ 0x0c, 0x06, 0x00, 0x5b, 0x9b, 0x04, 0x7c, 0x00,
+ 0x5b, 0x9c, 0x06, 0x53, 0x00, 0x5b, 0x9d, 0x0e,
+ 0x45, 0x00, 0x5b, 0x9f, 0x08, 0xee, 0x00, 0x5b,
+ 0xa2, 0x06, 0x6c, 0x00, 0x5b, 0xa3, 0x0a, 0x8f,
+ 0x00, 0x5b, 0xa4, 0x08, 0xe8, 0x00, 0x5b, 0xa5,
+ 0x0f, 0x12, 0x00, 0x5b, 0xa6, 0x12, 0x10, 0x00,
+ 0x5b, 0xa8, 0x53, 0xbb, 0x00, 0x5b, 0xa9, 0x53,
+ 0xbc, 0x00, 0x5b, 0xac, 0x44, 0x77, 0x00, 0x5b,
+ 0xad, 0x53, 0xbd, 0x00, 0x5b, 0xae, 0x06, 0x76,
+ 0x00, 0x5b, 0xaf, 0x53, 0xbe, 0x00, 0x5b, 0xb0,
+ 0x08, 0x3b, 0x00, 0x5b, 0xb1, 0x53, 0xbf, 0x00,
+ 0x5b, 0xb2, 0x53, 0xc0, 0x00, 0x5b, 0xb3, 0x05,
+ 0x90, 0x00, 0x5b, 0xb4, 0x05, 0x05, 0x00, 0x5b,
+ 0xb5, 0x09, 0x94, 0x00, 0x5b, 0xb6, 0x05, 0x48,
+ 0x00, 0x5b, 0xb7, 0x4b, 0x79, 0x00, 0x5b, 0xb8,
+ 0x12, 0x11, 0x00, 0x5b, 0xb9, 0x0f, 0x30, 0x00,
+ 0x5b, 0xba, 0x53, 0xc1, 0x00, 0x5b, 0xbc, 0x53,
+ 0xc2, 0x00, 0x5b, 0xbf, 0x09, 0x53, 0x00, 0x5b,
+ 0xc0, 0x20, 0xf1, 0x00, 0x5b, 0xc1, 0x53, 0xc3,
+ 0x00, 0x5b, 0xc2, 0x09, 0x10, 0x00, 0x5b, 0xc3,
+ 0x12, 0x12, 0x00, 0x5b, 0xc4, 0x06, 0x2f, 0x00,
+ 0x5b, 0xc5, 0x0c, 0xaa, 0x00, 0x5b, 0xc6, 0x0e,
+ 0xb5, 0x00, 0x5b, 0xc7, 0x12, 0x13, 0x00, 0x5b,
+ 0xc9, 0x12, 0x14, 0x00, 0x5b, 0xcc, 0x0d, 0xcb,
+ 0x00, 0x5b, 0xcd, 0x53, 0xc4, 0x00, 0x5b, 0xce,
+ 0x44, 0x7a, 0x00, 0x5b, 0xcf, 0x53, 0xc5, 0x00,
+ 0x5b, 0xd0, 0x12, 0x16, 0x00, 0x5b, 0xd2, 0x05,
+ 0xe4, 0x00, 0x5b, 0xd3, 0x06, 0xef, 0x00, 0x5b,
+ 0xd4, 0x12, 0x15, 0x00, 0x5b, 0xd6, 0x44, 0x7b,
+ 0x00, 0x5b, 0xd7, 0x4b, 0x7a, 0x00, 0x5b, 0xd8,
+ 0x20, 0xf3, 0x00, 0x5b, 0xd9, 0x53, 0xc6, 0x00,
+ 0x5b, 0xda, 0x53, 0xc7, 0x00, 0x5b, 0xdb, 0x05,
+ 0xee, 0x00, 0x5b, 0xdd, 0x09, 0xf8, 0x00, 0x5b,
+ 0xde, 0x12, 0x1a, 0x00, 0x5b, 0xdf, 0x08, 0x6f,
+ 0x00, 0x5b, 0xe0, 0x4b, 0x7b, 0x00, 0x5b, 0xe1,
+ 0x05, 0x49, 0x00, 0x5b, 0xe2, 0x12, 0x19, 0x00,
+ 0x5b, 0xe4, 0x12, 0x17, 0x00, 0x5b, 0xe5, 0x12,
+ 0x1b, 0x00, 0x5b, 0xe6, 0x12, 0x18, 0x00, 0x5b,
+ 0xe7, 0x36, 0x93, 0x00, 0x5b, 0xe8, 0x14, 0x8e,
+ 0x00, 0x5b, 0xe9, 0x09, 0xf9, 0x00, 0x5b, 0xeb,
+ 0x12, 0x1c, 0x00, 0x5b, 0xec, 0x4f, 0x4e, 0x00,
+ 0x5b, 0xee, 0x0f, 0x88, 0x00, 0x5b, 0xef, 0x53,
+ 0xc8, 0x00, 0x5b, 0xf0, 0x12, 0x1d, 0x00, 0x5b,
+ 0xf1, 0x44, 0x7e, 0x00, 0x5b, 0xf3, 0x12, 0x1f,
+ 0x00, 0x5b, 0xf4, 0x53, 0xc9, 0x00, 0x5b, 0xf5,
+ 0x0b, 0xbc, 0x00, 0x5b, 0xf6, 0x12, 0x1e, 0x00,
+ 0x5b, 0xf8, 0x0a, 0x47, 0x00, 0x5b, 0xfa, 0x08,
+ 0xc9, 0x00, 0x5b, 0xfd, 0x44, 0x7f, 0x00, 0x5b,
+ 0xfe, 0x0b, 0x30, 0x00, 0x5b, 0xff, 0x09, 0x23,
+ 0x00, 0x5c, 0x01, 0x0d, 0xe7, 0x00, 0x5c, 0x02,
+ 0x0a, 0x90, 0x00, 0x5c, 0x03, 0x44, 0x81, 0x00,
+ 0x5c, 0x04, 0x08, 0xf9, 0x00, 0x5c, 0x05, 0x12,
+ 0x20, 0x00, 0x5c, 0x06, 0x36, 0x08, 0x00, 0x5c,
+ 0x07, 0x12, 0x21, 0x00, 0x5c, 0x08, 0x12, 0x22,
+ 0x00, 0x5c, 0x09, 0x04, 0x97, 0x00, 0x5c, 0x0a,
+ 0x0b, 0x1a, 0x00, 0x5c, 0x0b, 0x0a, 0x18, 0x00,
+ 0x5c, 0x0c, 0x53, 0xca, 0x00, 0x5c, 0x0d, 0x12,
+ 0x23, 0x00, 0x5c, 0x0e, 0x0c, 0x8b, 0x00, 0x5c,
+ 0x0f, 0x09, 0x96, 0x00, 0x5c, 0x11, 0x09, 0x97,
+ 0x00, 0x5c, 0x12, 0x41, 0xc4, 0x00, 0x5c, 0x13,
+ 0x12, 0x24, 0x00, 0x5c, 0x14, 0x37, 0x2a, 0x00,
+ 0x5c, 0x16, 0x0a, 0x91, 0x00, 0x5c, 0x17, 0x53,
+ 0xcb, 0x00, 0x5c, 0x19, 0x36, 0x0b, 0x00, 0x5c,
+ 0x1a, 0x09, 0x98, 0x00, 0x5c, 0x1e, 0x20, 0xf5,
+ 0x00, 0x5c, 0x1f, 0x4b, 0x7c, 0x00, 0x5c, 0x20,
+ 0x12, 0x25, 0x00, 0x5c, 0x22, 0x12, 0x26, 0x00,
+ 0x5c, 0x23, 0x38, 0x8c, 0x00, 0x5c, 0x24, 0x0e,
+ 0xec, 0x00, 0x5c, 0x26, 0x53, 0xcc, 0x00, 0x5c,
+ 0x28, 0x12, 0x27, 0x00, 0x5c, 0x29, 0x44, 0x82,
+ 0x00, 0x5c, 0x2a, 0x4b, 0x7d, 0x00, 0x5c, 0x2b,
+ 0x38, 0x8d, 0x00, 0x5c, 0x2c, 0x4b, 0x7e, 0x00,
+ 0x5c, 0x2d, 0x06, 0xbe, 0x00, 0x5c, 0x2e, 0x53,
+ 0xcd, 0x00, 0x5c, 0x30, 0x38, 0x8e, 0x00, 0x5c,
+ 0x31, 0x09, 0x2c, 0x00, 0x5c, 0x32, 0x53, 0xce,
+ 0x00, 0x5c, 0x35, 0x53, 0xcf, 0x00, 0x5c, 0x36,
+ 0x4b, 0x7f, 0x00, 0x5c, 0x38, 0x12, 0x28, 0x00,
+ 0x5c, 0x39, 0x12, 0x29, 0x00, 0x5c, 0x3a, 0x09,
+ 0x08, 0x00, 0x5c, 0x3b, 0x09, 0xf2, 0x00, 0x5c,
+ 0x3c, 0x0c, 0xcc, 0x00, 0x5c, 0x3d, 0x0a, 0x1a,
+ 0x00, 0x5c, 0x3e, 0x0d, 0x8c, 0x00, 0x5c, 0x3f,
+ 0x0c, 0xd8, 0x00, 0x5c, 0x40, 0x06, 0xc1, 0x00,
+ 0x5c, 0x41, 0x12, 0x2a, 0x00, 0x5c, 0x45, 0x06,
+ 0x89, 0x00, 0x5c, 0x46, 0x12, 0x2b, 0x00, 0x5c,
+ 0x48, 0x06, 0xf6, 0x00, 0x5c, 0x4a, 0x0c, 0xa7,
+ 0x00, 0x5c, 0x4b, 0x05, 0x30, 0x00, 0x5c, 0x4d,
+ 0x08, 0xa1, 0x00, 0x5c, 0x4e, 0x12, 0x2c, 0x00,
+ 0x5c, 0x4f, 0x12, 0x2f, 0x00, 0x5c, 0x50, 0x12,
+ 0x2e, 0x00, 0x5c, 0x51, 0x06, 0xf5, 0x00, 0x5c,
+ 0x53, 0x12, 0x2d, 0x00, 0x5c, 0x55, 0x0c, 0x32,
+ 0x00, 0x5c, 0x59, 0x4b, 0x80, 0x00, 0x5c, 0x5a,
+ 0x53, 0xd0, 0x00, 0x5c, 0x5b, 0x1e, 0x92, 0x00,
+ 0x5c, 0x5c, 0x4b, 0x81, 0x00, 0x5c, 0x5e, 0x0b,
+ 0x10, 0x00, 0x5c, 0x5f, 0x44, 0x84, 0x00, 0x5c,
+ 0x60, 0x0c, 0x45, 0x00, 0x5c, 0x61, 0x08, 0xf4,
+ 0x00, 0x5c, 0x62, 0x1e, 0x0d, 0x00, 0x5c, 0x63,
+ 0x38, 0x8f, 0x00, 0x5c, 0x64, 0x0a, 0xda, 0x00,
+ 0x5c, 0x65, 0x0f, 0x64, 0x00, 0x5c, 0x67, 0x44,
+ 0x85, 0x00, 0x5c, 0x68, 0x44, 0x86, 0x00, 0x5c,
+ 0x69, 0x38, 0x90, 0x00, 0x5c, 0x6c, 0x12, 0x31,
+ 0x00, 0x5c, 0x6d, 0x4b, 0x82, 0x00, 0x5c, 0x6e,
+ 0x41, 0xc5, 0x00, 0x5c, 0x6f, 0x0c, 0xae, 0x00,
+ 0x5c, 0x70, 0x44, 0x87, 0x00, 0x5c, 0x71, 0x08,
+ 0x81, 0x00, 0x5c, 0x74, 0x53, 0xd1, 0x00, 0x5c,
+ 0x75, 0x53, 0xd2, 0x00, 0x5c, 0x76, 0x12, 0x34,
+ 0x00, 0x5c, 0x79, 0x12, 0x35, 0x00, 0x5c, 0x7a,
+ 0x41, 0xc7, 0x00, 0x5c, 0x7b, 0x53, 0xd3, 0x00,
+ 0x5c, 0x7c, 0x38, 0x91, 0x00, 0x5c, 0x7d, 0x53,
+ 0xd4, 0x00, 0x5c, 0x87, 0x53, 0xd5, 0x00, 0x5c,
+ 0x88, 0x44, 0x8c, 0x00, 0x5c, 0x8a, 0x44, 0x8d,
+ 0x00, 0x5c, 0x8c, 0x12, 0x36, 0x00, 0x5c, 0x8f,
+ 0x41, 0xc8, 0x00, 0x5c, 0x90, 0x06, 0x30, 0x00,
+ 0x5c, 0x91, 0x12, 0x37, 0x00, 0x5c, 0x92, 0x53,
+ 0xd6, 0x00, 0x5c, 0x94, 0x12, 0x38, 0x00, 0x5c,
+ 0x9d, 0x53, 0xd7, 0x00, 0x5c, 0x9f, 0x41, 0xc9,
+ 0x00, 0x5c, 0xa0, 0x44, 0x91, 0x00, 0x5c, 0xa1,
+ 0x05, 0x2c, 0x00, 0x5c, 0xa2, 0x44, 0x92, 0x00,
+ 0x5c, 0xa3, 0x41, 0xca, 0x00, 0x5c, 0xa6, 0x20,
+ 0xf6, 0x00, 0x5c, 0xa7, 0x44, 0x93, 0x00, 0x5c,
+ 0xa8, 0x0a, 0xbd, 0x00, 0x5c, 0xa9, 0x06, 0x20,
+ 0x00, 0x5c, 0xaa, 0x41, 0xcb, 0x00, 0x5c, 0xab,
+ 0x12, 0x3a, 0x00, 0x5c, 0xac, 0x0e, 0xb4, 0x00,
+ 0x5c, 0xad, 0x44, 0x95, 0x00, 0x5c, 0xb1, 0x0b,
+ 0x32, 0x00, 0x5c, 0xb2, 0x53, 0xd8, 0x00, 0x5c,
+ 0xb3, 0x05, 0xb7, 0x00, 0x5c, 0xb4, 0x53, 0xd9,
+ 0x00, 0x5c, 0xb5, 0x44, 0x96, 0x00, 0x5c, 0xb6,
+ 0x12, 0x3c, 0x00, 0x5c, 0xb7, 0x12, 0x3e, 0x00,
+ 0x5c, 0xb8, 0x06, 0x1b, 0x00, 0x5c, 0xba, 0x20,
+ 0xf7, 0x00, 0x5c, 0xbb, 0x12, 0x3b, 0x00, 0x5c,
+ 0xbc, 0x12, 0x3d, 0x00, 0x5c, 0xbe, 0x12, 0x40,
+ 0x00, 0x5c, 0xc5, 0x12, 0x3f, 0x00, 0x5c, 0xc7,
+ 0x12, 0x41, 0x00, 0x5c, 0xc9, 0x44, 0x98, 0x00,
+ 0x5c, 0xcb, 0x38, 0x92, 0x00, 0x5c, 0xd0, 0x41,
+ 0xcc, 0x00, 0x5c, 0xd2, 0x38, 0x93, 0x00, 0x5c,
+ 0xd7, 0x53, 0xda, 0x00, 0x5c, 0xd9, 0x12, 0x42,
+ 0x00, 0x5c, 0xdd, 0x4b, 0x83, 0x00, 0x5c, 0xe0,
+ 0x0c, 0x95, 0x00, 0x5c, 0xe1, 0x06, 0xa6, 0x00,
+ 0x5c, 0xe6, 0x37, 0x2c, 0x00, 0x5c, 0xe8, 0x05,
+ 0x65, 0x00, 0x5c, 0xe9, 0x12, 0x43, 0x00, 0x5c,
+ 0xea, 0x12, 0x48, 0x00, 0x5c, 0xed, 0x12, 0x46,
+ 0x00, 0x5c, 0xee, 0x53, 0xdb, 0x00, 0x5c, 0xef,
+ 0x0e, 0x47, 0x00, 0x5c, 0xf0, 0x0e, 0x46, 0x00,
+ 0x5c, 0xf1, 0x53, 0xdc, 0x00, 0x5c, 0xf2, 0x53,
+ 0xdd, 0x00, 0x5c, 0xf4, 0x38, 0x94, 0x00, 0x5c,
+ 0xf5, 0x20, 0xf8, 0x00, 0x5c, 0xf6, 0x0c, 0x61,
+ 0x00, 0x5c, 0xfa, 0x12, 0x45, 0x00, 0x5c, 0xfb,
+ 0x09, 0x5e, 0x00, 0x5c, 0xfd, 0x12, 0x44, 0x00,
+ 0x5d, 0x01, 0x4b, 0x84, 0x00, 0x5d, 0x06, 0x44,
+ 0x9b, 0x00, 0x5d, 0x07, 0x0a, 0x38, 0x00, 0x5d,
+ 0x0b, 0x12, 0x49, 0x00, 0x5d, 0x0d, 0x41, 0xce,
+ 0x00, 0x5d, 0x0e, 0x08, 0x5a, 0x00, 0x5d, 0x10,
+ 0x44, 0x9c, 0x00, 0x5d, 0x11, 0x12, 0x4f, 0x00,
+ 0x5d, 0x12, 0x53, 0xde, 0x00, 0x5d, 0x14, 0x12,
+ 0x50, 0x00, 0x5d, 0x15, 0x12, 0x4a, 0x00, 0x5d,
+ 0x16, 0x05, 0x91, 0x00, 0x5d, 0x17, 0x12, 0x4b,
+ 0x00, 0x5d, 0x18, 0x12, 0x54, 0x00, 0x5d, 0x19,
+ 0x12, 0x53, 0x00, 0x5d, 0x1a, 0x12, 0x52, 0x00,
+ 0x5d, 0x1b, 0x12, 0x4e, 0x00, 0x5d, 0x1d, 0x44,
+ 0x9e, 0x00, 0x5d, 0x1f, 0x12, 0x4d, 0x00, 0x5d,
+ 0x20, 0x44, 0x9f, 0x00, 0x5d, 0x22, 0x12, 0x51,
+ 0x00, 0x5d, 0x23, 0x53, 0xdf, 0x00, 0x5d, 0x24,
+ 0x38, 0x95, 0x00, 0x5d, 0x26, 0x38, 0x96, 0x00,
+ 0x5d, 0x27, 0x20, 0xf9, 0x00, 0x5d, 0x29, 0x0e,
+ 0x48, 0x00, 0x5d, 0x2b, 0x44, 0x9d, 0x00, 0x5d,
+ 0x31, 0x44, 0xa0, 0x00, 0x5d, 0x34, 0x4b, 0x85,
+ 0x00, 0x5d, 0x39, 0x44, 0xa1, 0x00, 0x5d, 0x3d,
+ 0x4b, 0x86, 0x00, 0x5d, 0x3f, 0x53, 0xe0, 0x00,
+ 0x5d, 0x42, 0x20, 0xfc, 0x00, 0x5d, 0x43, 0x38,
+ 0x97, 0x00, 0x5d, 0x46, 0x38, 0x98, 0x00, 0x5d,
+ 0x47, 0x41, 0xcf, 0x00, 0x5d, 0x48, 0x53, 0xe1,
+ 0x00, 0x5d, 0x4a, 0x38, 0x99, 0x00, 0x5d, 0x4b,
+ 0x12, 0x58, 0x00, 0x5d, 0x4c, 0x12, 0x55, 0x00,
+ 0x5d, 0x4e, 0x12, 0x57, 0x00, 0x5d, 0x50, 0x0f,
+ 0x5c, 0x00, 0x5d, 0x51, 0x53, 0xe3, 0x00, 0x5d,
+ 0x52, 0x12, 0x56, 0x00, 0x5d, 0x53, 0x20, 0xfa,
+ 0x00, 0x5d, 0x55, 0x53, 0xe2, 0x00, 0x5d, 0x59,
+ 0x4b, 0x87, 0x00, 0x5d, 0x5c, 0x12, 0x4c, 0x00,
+ 0x5d, 0x5f, 0x53, 0xe4, 0x00, 0x5d, 0x60, 0x53,
+ 0xe5, 0x00, 0x5d, 0x61, 0x44, 0xa3, 0x00, 0x5d,
+ 0x62, 0x53, 0xe6, 0x00, 0x5d, 0x64, 0x53, 0xe7,
+ 0x00, 0x5d, 0x69, 0x0a, 0x39, 0x00, 0x5d, 0x6a,
+ 0x44, 0xa4, 0x00, 0x5d, 0x6c, 0x12, 0x59, 0x00,
+ 0x5d, 0x6d, 0x20, 0xfd, 0x00, 0x5d, 0x6f, 0x08,
+ 0x27, 0x00, 0x5d, 0x70, 0x44, 0xa6, 0x00, 0x5d,
+ 0x73, 0x12, 0x5a, 0x00, 0x5d, 0x76, 0x12, 0x5b,
+ 0x00, 0x5d, 0x79, 0x53, 0xe8, 0x00, 0x5d, 0x7a,
+ 0x53, 0xe9, 0x00, 0x5d, 0x7e, 0x4b, 0x88, 0x00,
+ 0x5d, 0x7f, 0x53, 0xea, 0x00, 0x5d, 0x81, 0x41,
+ 0xd0, 0x00, 0x5d, 0x82, 0x12, 0x5e, 0x00, 0x5d,
+ 0x83, 0x4b, 0x89, 0x00, 0x5d, 0x84, 0x12, 0x5d,
+ 0x00, 0x5d, 0x87, 0x12, 0x5c, 0x00, 0x5d, 0x88,
+ 0x44, 0xa9, 0x00, 0x5d, 0x8a, 0x53, 0xeb, 0x00,
+ 0x5d, 0x8b, 0x0c, 0x62, 0x00, 0x5d, 0x8c, 0x12,
+ 0x47, 0x00, 0x5d, 0x90, 0x12, 0x64, 0x00, 0x5d,
+ 0x92, 0x38, 0x9a, 0x00, 0x5d, 0x93, 0x53, 0xec,
+ 0x00, 0x5d, 0x94, 0x38, 0x9b, 0x00, 0x5d, 0x95,
+ 0x53, 0xed, 0x00, 0x5d, 0x97, 0x44, 0xab, 0x00,
+ 0x5d, 0x99, 0x38, 0x9c, 0x00, 0x5d, 0x9b, 0x53,
+ 0xee, 0x00, 0x5d, 0x9d, 0x12, 0x60, 0x00, 0x5d,
+ 0x9f, 0x53, 0xef, 0x00, 0x5d, 0xa0, 0x38, 0x9d,
+ 0x00, 0x5d, 0xa2, 0x12, 0x5f, 0x00, 0x5d, 0xa4,
+ 0x41, 0xd1, 0x00, 0x5d, 0xa7, 0x41, 0xd2, 0x00,
+ 0x5d, 0xab, 0x53, 0xf0, 0x00, 0x5d, 0xac, 0x12,
+ 0x61, 0x00, 0x5d, 0xae, 0x12, 0x62, 0x00, 0x5d,
+ 0xb0, 0x44, 0xac, 0x00, 0x5d, 0xb2, 0x3b, 0xa5,
+ 0x00, 0x5d, 0xb4, 0x44, 0xad, 0x00, 0x5d, 0xb7,
+ 0x12, 0x65, 0x00, 0x5d, 0xb8, 0x20, 0xfe, 0x00,
+ 0x5d, 0xb9, 0x20, 0xff, 0x00, 0x5d, 0xba, 0x0f,
+ 0xae, 0x00, 0x5d, 0xbc, 0x12, 0x66, 0x00, 0x5d,
+ 0xbd, 0x12, 0x63, 0x00, 0x5d, 0xc3, 0x53, 0xf1,
+ 0x00, 0x5d, 0xc7, 0x4b, 0x8a, 0x00, 0x5d, 0xc9,
+ 0x12, 0x67, 0x00, 0x5d, 0xcb, 0x41, 0xd3, 0x00,
+ 0x5d, 0xcc, 0x06, 0x1c, 0x00, 0x5d, 0xcd, 0x12,
+ 0x68, 0x00, 0x5d, 0xce, 0x53, 0xf2, 0x00, 0x5d,
+ 0xd0, 0x21, 0x00, 0x00, 0x5d, 0xd1, 0x44, 0xaf,
+ 0x00, 0x5d, 0xd2, 0x12, 0x6a, 0x00, 0x5d, 0xd3,
+ 0x12, 0x69, 0x00, 0x5d, 0xd6, 0x12, 0x6b, 0x00,
+ 0x5d, 0xd7, 0x44, 0xb0, 0x00, 0x5d, 0xd8, 0x38,
+ 0x9e, 0x00, 0x5d, 0xd9, 0x53, 0xf3, 0x00, 0x5d,
+ 0xdb, 0x12, 0x6c, 0x00, 0x5d, 0xdd, 0x0a, 0x92,
+ 0x00, 0x5d, 0xde, 0x09, 0x2d, 0x00, 0x5d, 0xe0,
+ 0x38, 0x9f, 0x00, 0x5d, 0xe1, 0x09, 0x6e, 0x00,
+ 0x5d, 0xe2, 0x34, 0x32, 0x00, 0x5d, 0xe3, 0x0a,
+ 0xe5, 0x00, 0x5d, 0xe4, 0x44, 0xb2, 0x00, 0x5d,
+ 0xe5, 0x07, 0xbb, 0x00, 0x5d, 0xe6, 0x08, 0x28,
+ 0x00, 0x5d, 0xe7, 0x07, 0xbc, 0x00, 0x5d, 0xe8,
+ 0x06, 0x8a, 0x00, 0x5d, 0xe9, 0x44, 0xb3, 0x00,
+ 0x5d, 0xeb, 0x12, 0x6d, 0x00, 0x5d, 0xee, 0x08,
+ 0x29, 0x00, 0x5d, 0xf1, 0x07, 0x7e, 0x00, 0x5d,
+ 0xf2, 0x12, 0x6e, 0x00, 0x5d, 0xf3, 0x0e, 0xb2,
+ 0x00, 0x5d, 0xf4, 0x0c, 0xf9, 0x00, 0x5d, 0xf5,
+ 0x12, 0x6f, 0x00, 0x5d, 0xf7, 0x07, 0xbd, 0x00,
+ 0x5d, 0xf8, 0x38, 0xa0, 0x00, 0x5d, 0xf9, 0x4b,
+ 0x8b, 0x00, 0x5d, 0xfb, 0x05, 0xe8, 0x00, 0x5d,
+ 0xfd, 0x1e, 0x36, 0x00, 0x5d, 0xfe, 0x06, 0xca,
+ 0x00, 0x5d, 0xff, 0x35, 0xe2, 0x00, 0x5e, 0x00,
+ 0x38, 0xa1, 0x00, 0x5e, 0x02, 0x08, 0xa2, 0x00,
+ 0x5e, 0x03, 0x0d, 0xcd, 0x00, 0x5e, 0x06, 0x0d,
+ 0x55, 0x00, 0x5e, 0x07, 0x53, 0xf4, 0x00, 0x5e,
+ 0x0b, 0x12, 0x70, 0x00, 0x5e, 0x0c, 0x06, 0x31,
+ 0x00, 0x5e, 0x0d, 0x53, 0xf5, 0x00, 0x5e, 0x11,
+ 0x12, 0x73, 0x00, 0x5e, 0x12, 0x38, 0xa2, 0x00,
+ 0x5e, 0x14, 0x38, 0xa3, 0x00, 0x5e, 0x15, 0x38,
+ 0xa4, 0x00, 0x5e, 0x16, 0x0b, 0xbd, 0x00, 0x5e,
+ 0x18, 0x38, 0xa5, 0x00, 0x5e, 0x19, 0x12, 0x72,
+ 0x00, 0x5e, 0x1a, 0x12, 0x71, 0x00, 0x5e, 0x1b,
+ 0x12, 0x74, 0x00, 0x5e, 0x1d, 0x0c, 0x07, 0x00,
+ 0x5e, 0x1f, 0x44, 0xb7, 0x00, 0x5e, 0x20, 0x53,
+ 0xf6, 0x00, 0x5e, 0x25, 0x0a, 0x29, 0x00, 0x5e,
+ 0x28, 0x4b, 0x8c, 0x00, 0x5e, 0x2b, 0x08, 0xa3,
+ 0x00, 0x5e, 0x2d, 0x0a, 0x6e, 0x00, 0x5e, 0x2e,
+ 0x38, 0xa6, 0x00, 0x5e, 0x2f, 0x0b, 0x33, 0x00,
+ 0x5e, 0x30, 0x06, 0x3c, 0x00, 0x5e, 0x32, 0x4b,
+ 0x8d, 0x00, 0x5e, 0x33, 0x0b, 0xbe, 0x00, 0x5e,
+ 0x35, 0x4b, 0x8e, 0x00, 0x5e, 0x36, 0x12, 0x75,
+ 0x00, 0x5e, 0x37, 0x12, 0x76, 0x00, 0x5e, 0x38,
+ 0x09, 0xd7, 0x00, 0x5e, 0x3d, 0x0e, 0x67, 0x00,
+ 0x5e, 0x3e, 0x44, 0xb8, 0x00, 0x5e, 0x40, 0x12,
+ 0x79, 0x00, 0x5e, 0x43, 0x12, 0x78, 0x00, 0x5e,
+ 0x44, 0x12, 0x77, 0x00, 0x5e, 0x45, 0x0d, 0xef,
+ 0x00, 0x5e, 0x47, 0x12, 0x80, 0x00, 0x5e, 0x49,
+ 0x44, 0xb9, 0x00, 0x5e, 0x4b, 0x53, 0xf7, 0x00,
+ 0x5e, 0x4c, 0x0e, 0x88, 0x00, 0x5e, 0x4e, 0x12,
+ 0x7a, 0x00, 0x5e, 0x50, 0x53, 0xf8, 0x00, 0x5e,
+ 0x51, 0x53, 0xf9, 0x00, 0x5e, 0x54, 0x12, 0x7c,
+ 0x00, 0x5e, 0x55, 0x0e, 0x99, 0x00, 0x5e, 0x56,
+ 0x44, 0xbb, 0x00, 0x5e, 0x57, 0x12, 0x7b, 0x00,
+ 0x5e, 0x58, 0x38, 0xa7, 0x00, 0x5e, 0x5b, 0x4b,
+ 0x8f, 0x00, 0x5e, 0x5c, 0x53, 0xfa, 0x00, 0x5e,
+ 0x5e, 0x41, 0xd4, 0x00, 0x5e, 0x5f, 0x12, 0x7d,
+ 0x00, 0x5e, 0x61, 0x0d, 0x3c, 0x00, 0x5e, 0x62,
+ 0x12, 0x7e, 0x00, 0x5e, 0x63, 0x0e, 0x0e, 0x00,
+ 0x5e, 0x64, 0x12, 0x7f, 0x00, 0x5e, 0x68, 0x4b,
+ 0x90, 0x00, 0x5e, 0x6a, 0x4b, 0x91, 0x00, 0x5e,
+ 0x6b, 0x38, 0xa8, 0x00, 0x5e, 0x6c, 0x38, 0xa9,
+ 0x00, 0x5e, 0x6d, 0x44, 0xbd, 0x00, 0x5e, 0x6e,
+ 0x44, 0xbe, 0x00, 0x5e, 0x70, 0x53, 0xfb, 0x00,
+ 0x5e, 0x72, 0x05, 0xef, 0x00, 0x5e, 0x73, 0x0e,
+ 0x0f, 0x00, 0x5e, 0x74, 0x0c, 0xe5, 0x00, 0x5e,
+ 0x75, 0x12, 0x81, 0x00, 0x5e, 0x76, 0x12, 0x82,
+ 0x00, 0x5e, 0x77, 0x4b, 0x92, 0x00, 0x5e, 0x78,
+ 0x07, 0xbe, 0x00, 0x5e, 0x79, 0x05, 0xf0, 0x00,
+ 0x5e, 0x7a, 0x12, 0x83, 0x00, 0x5e, 0x7b, 0x07,
+ 0x6c, 0x00, 0x5e, 0x7c, 0x0f, 0x2e, 0x00, 0x5e,
+ 0x7d, 0x0f, 0x13, 0x00, 0x5e, 0x7e, 0x06, 0x32,
+ 0x00, 0x5e, 0x7f, 0x12, 0x85, 0x00, 0x5e, 0x80,
+ 0x4b, 0x93, 0x00, 0x5e, 0x81, 0x0b, 0xbf, 0x00,
+ 0x5e, 0x83, 0x07, 0xbf, 0x00, 0x5e, 0x84, 0x09,
+ 0x99, 0x00, 0x5e, 0x87, 0x0d, 0x73, 0x00, 0x5e,
+ 0x8a, 0x09, 0x9a, 0x00, 0x5e, 0x8b, 0x4b, 0x94,
+ 0x00, 0x5e, 0x8e, 0x53, 0xfc, 0x00, 0x5e, 0x8f,
+ 0x09, 0x82, 0x00, 0x5e, 0x95, 0x0c, 0x08, 0x00,
+ 0x5e, 0x96, 0x0e, 0x49, 0x00, 0x5e, 0x97, 0x0c,
+ 0x33, 0x00, 0x5e, 0x99, 0x36, 0xb0, 0x00, 0x5e,
+ 0x9a, 0x07, 0xc0, 0x00, 0x5e, 0x9c, 0x0d, 0xce,
+ 0x00, 0x5e, 0xa0, 0x12, 0x86, 0x00, 0x5e, 0xa2,
+ 0x53, 0xfd, 0x00, 0x5e, 0xa4, 0x53, 0xfe, 0x00,
+ 0x5e, 0xa5, 0x44, 0xc0, 0x00, 0x5e, 0xa6, 0x0c,
+ 0x53, 0x00, 0x5e, 0xa7, 0x08, 0x32, 0x00, 0x5e,
+ 0xa8, 0x38, 0xaa, 0x00, 0x5e, 0xaa, 0x38, 0xab,
+ 0x00, 0x5e, 0xab, 0x07, 0x7f, 0x00, 0x5e, 0xac,
+ 0x44, 0xc1, 0x00, 0x5e, 0xad, 0x0c, 0x09, 0x00,
+ 0x5e, 0xb1, 0x53, 0xff, 0x00, 0x5e, 0xb3, 0x4b,
+ 0x95, 0x00, 0x5e, 0xb5, 0x04, 0x87, 0x00, 0x5e,
+ 0xb6, 0x09, 0x78, 0x00, 0x5e, 0xb7, 0x07, 0xc1,
+ 0x00, 0x5e, 0xb8, 0x0f, 0x31, 0x00, 0x5e, 0xb9,
+ 0x44, 0xc2, 0x00, 0x5e, 0xbd, 0x4b, 0x96, 0x00,
+ 0x5e, 0xbe, 0x38, 0xac, 0x00, 0x5e, 0xbf, 0x38,
+ 0xad, 0x00, 0x5e, 0xc1, 0x12, 0x87, 0x00, 0x5e,
+ 0xc2, 0x12, 0x88, 0x00, 0x5e, 0xc3, 0x0d, 0x07,
+ 0x00, 0x5e, 0xc6, 0x44, 0xc3, 0x00, 0x5e, 0xc8,
+ 0x12, 0x89, 0x00, 0x5e, 0xc9, 0x37, 0x0f, 0x00,
+ 0x5e, 0xca, 0x0f, 0xd3, 0x00, 0x5e, 0xcb, 0x3c,
+ 0x1e, 0x00, 0x5e, 0xcc, 0x54, 0x00, 0x00, 0x5e,
+ 0xce, 0x54, 0x01, 0x00, 0x5e, 0xcf, 0x12, 0x8b,
+ 0x00, 0x5e, 0xd0, 0x12, 0x8a, 0x00, 0x5e, 0xd1,
+ 0x4b, 0x97, 0x00, 0x5e, 0xd2, 0x38, 0xaf, 0x00,
+ 0x5e, 0xd3, 0x05, 0xa5, 0x00, 0x5e, 0xd4, 0x4b,
+ 0x98, 0x00, 0x5e, 0xd5, 0x4b, 0x99, 0x00, 0x5e,
+ 0xd6, 0x12, 0x8c, 0x00, 0x5e, 0xd9, 0x44, 0xc4,
+ 0x00, 0x5e, 0xda, 0x12, 0x8f, 0x00, 0x5e, 0xdb,
+ 0x12, 0x90, 0x00, 0x5e, 0xdc, 0x54, 0x02, 0x00,
+ 0x5e, 0xdd, 0x12, 0x8e, 0x00, 0x5e, 0xde, 0x54,
+ 0x03, 0x00, 0x5e, 0xdf, 0x0d, 0xb2, 0x00, 0x5e,
+ 0xe0, 0x09, 0x9b, 0x00, 0x5e, 0xe1, 0x12, 0x92,
+ 0x00, 0x5e, 0xe2, 0x12, 0x91, 0x00, 0x5e, 0xe3,
+ 0x12, 0x8d, 0x00, 0x5e, 0xe5, 0x54, 0x04, 0x00,
+ 0x5e, 0xe8, 0x12, 0x93, 0x00, 0x5e, 0xe9, 0x12,
+ 0x94, 0x00, 0x5e, 0xeb, 0x54, 0x05, 0x00, 0x5e,
+ 0xec, 0x12, 0x95, 0x00, 0x5e, 0xf0, 0x12, 0x98,
+ 0x00, 0x5e, 0xf1, 0x12, 0x96, 0x00, 0x5e, 0xf3,
+ 0x12, 0x97, 0x00, 0x5e, 0xf4, 0x12, 0x99, 0x00,
+ 0x5e, 0xf6, 0x05, 0x06, 0x00, 0x5e, 0xf7, 0x0c,
+ 0x0a, 0x00, 0x5e, 0xf8, 0x12, 0x9a, 0x00, 0x5e,
+ 0xf9, 0x41, 0xd5, 0x00, 0x5e, 0xfa, 0x07, 0x50,
+ 0x00, 0x5e, 0xfb, 0x05, 0x76, 0x00, 0x5e, 0xfc,
+ 0x0c, 0xec, 0x00, 0x5e, 0xfd, 0x44, 0xc6, 0x00,
+ 0x5e, 0xfe, 0x12, 0x9b, 0x00, 0x5e, 0xff, 0x0c,
+ 0xd3, 0x00, 0x5f, 0x00, 0x41, 0xd6, 0x00, 0x5f,
+ 0x01, 0x0e, 0x2b, 0x00, 0x5f, 0x02, 0x41, 0xd7,
+ 0x00, 0x5f, 0x03, 0x12, 0x9c, 0x00, 0x5f, 0x04,
+ 0x0f, 0xd4, 0x00, 0x5f, 0x06, 0x54, 0x06, 0x00,
+ 0x5f, 0x07, 0x38, 0xb0, 0x00, 0x5f, 0x08, 0x44,
+ 0xc7, 0x00, 0x5f, 0x09, 0x12, 0x9d, 0x00, 0x5f,
+ 0x0a, 0x0e, 0x10, 0x00, 0x5f, 0x0b, 0x12, 0xa0,
+ 0x00, 0x5f, 0x0c, 0x0f, 0xfa, 0x00, 0x5f, 0x0d,
+ 0x10, 0x0a, 0x00, 0x5f, 0x0e, 0x38, 0xb1, 0x00,
+ 0x5f, 0x0f, 0x08, 0xdc, 0x00, 0x5f, 0x10, 0x0c,
+ 0xcd, 0x00, 0x5f, 0x11, 0x12, 0xa1, 0x00, 0x5f,
+ 0x13, 0x06, 0x77, 0x00, 0x5f, 0x14, 0x0b, 0xc0,
+ 0x00, 0x5f, 0x15, 0x04, 0xbe, 0x00, 0x5f, 0x16,
+ 0x12, 0xa2, 0x00, 0x5f, 0x17, 0x0d, 0xf6, 0x00,
+ 0x5f, 0x18, 0x07, 0xc2, 0x00, 0x5f, 0x19, 0x54,
+ 0x07, 0x00, 0x5f, 0x1b, 0x0b, 0x8e, 0x00, 0x5f,
+ 0x1c, 0x38, 0xb2, 0x00, 0x5f, 0x1d, 0x38, 0xb3,
+ 0x00, 0x5f, 0x1e, 0x44, 0xc9, 0x00, 0x5f, 0x1f,
+ 0x0c, 0x0b, 0x00, 0x5f, 0x21, 0x21, 0x01, 0x00,
+ 0x5f, 0x22, 0x38, 0xb4, 0x00, 0x5f, 0x23, 0x41,
+ 0xd8, 0x00, 0x5f, 0x24, 0x54, 0x08, 0x00, 0x5f,
+ 0x25, 0x0e, 0xfb, 0x00, 0x5f, 0x26, 0x07, 0x6d,
+ 0x00, 0x5f, 0x27, 0x07, 0x80, 0x00, 0x5f, 0x28,
+ 0x38, 0xb5, 0x00, 0x5f, 0x29, 0x12, 0xa3, 0x00,
+ 0x5f, 0x2b, 0x54, 0x09, 0x00, 0x5f, 0x2c, 0x54,
+ 0x0a, 0x00, 0x5f, 0x2d, 0x12, 0xa4, 0x00, 0x5f,
+ 0x2e, 0x54, 0x0b, 0x00, 0x5f, 0x2f, 0x12, 0xaa,
+ 0x00, 0x5f, 0x30, 0x54, 0x0c, 0x00, 0x5f, 0x31,
+ 0x09, 0x11, 0x00, 0x5f, 0x34, 0x21, 0x02, 0x00,
+ 0x5f, 0x35, 0x0b, 0xc1, 0x00, 0x5f, 0x36, 0x38,
+ 0xb6, 0x00, 0x5f, 0x37, 0x06, 0xa7, 0x00, 0x5f,
+ 0x38, 0x12, 0xa5, 0x00, 0x5f, 0x3a, 0x35, 0x98,
+ 0x00, 0x5f, 0x3b, 0x38, 0xb7, 0x00, 0x5f, 0x3c,
+ 0x0d, 0x9d, 0x00, 0x5f, 0x3d, 0x41, 0xd9, 0x00,
+ 0x5f, 0x3e, 0x0b, 0x84, 0x00, 0x5f, 0x3f, 0x54,
+ 0x0d, 0x00, 0x5f, 0x40, 0x38, 0xb8, 0x00, 0x5f,
+ 0x41, 0x12, 0xa6, 0x00, 0x5f, 0x44, 0x54, 0x0e,
+ 0x00, 0x5f, 0x45, 0x20, 0xb2, 0x00, 0x5f, 0x47,
+ 0x44, 0xca, 0x00, 0x5f, 0x48, 0x12, 0xa7, 0x00,
+ 0x5f, 0x4a, 0x06, 0xa8, 0x00, 0x5f, 0x4c, 0x12,
+ 0xa8, 0x00, 0x5f, 0x4d, 0x4b, 0x9a, 0x00, 0x5f,
+ 0x4e, 0x12, 0xa9, 0x00, 0x5f, 0x50, 0x38, 0xb9,
+ 0x00, 0x5f, 0x51, 0x12, 0xab, 0x00, 0x5f, 0x53,
+ 0x0c, 0x70, 0x00, 0x5f, 0x54, 0x41, 0xda, 0x00,
+ 0x5f, 0x56, 0x12, 0xac, 0x00, 0x5f, 0x57, 0x12,
+ 0xad, 0x00, 0x5f, 0x58, 0x38, 0xba, 0x00, 0x5f,
+ 0x59, 0x12, 0xae, 0x00, 0x5f, 0x5b, 0x54, 0x0f,
+ 0x00, 0x5f, 0x5c, 0x12, 0x9f, 0x00, 0x5f, 0x5d,
+ 0x12, 0x9e, 0x00, 0x5f, 0x60, 0x54, 0x10, 0x00,
+ 0x5f, 0x61, 0x12, 0xaf, 0x00, 0x5f, 0x62, 0x07,
+ 0x17, 0x00, 0x5f, 0x63, 0x44, 0xcb, 0x00, 0x5f,
+ 0x64, 0x38, 0xbb, 0x00, 0x5f, 0x65, 0x36, 0xac,
+ 0x00, 0x5f, 0x66, 0x0d, 0x99, 0x00, 0x5f, 0x67,
+ 0x21, 0x03, 0x00, 0x5f, 0x69, 0x08, 0x3c, 0x00,
+ 0x5f, 0x6a, 0x0d, 0xa9, 0x00, 0x5f, 0x6b, 0x0b,
+ 0xc2, 0x00, 0x5f, 0x6c, 0x0d, 0xbd, 0x00, 0x5f,
+ 0x6d, 0x12, 0xb0, 0x00, 0x5f, 0x6f, 0x54, 0x11,
+ 0x00, 0x5f, 0x70, 0x09, 0x9c, 0x00, 0x5f, 0x71,
+ 0x04, 0xe8, 0x00, 0x5f, 0x72, 0x44, 0xcc, 0x00,
+ 0x5f, 0x73, 0x12, 0xb1, 0x00, 0x5f, 0x74, 0x54,
+ 0x12, 0x00, 0x5f, 0x75, 0x54, 0x13, 0x00, 0x5f,
+ 0x77, 0x12, 0xb2, 0x00, 0x5f, 0x78, 0x54, 0x14,
+ 0x00, 0x5f, 0x79, 0x0e, 0xfe, 0x00, 0x5f, 0x7a,
+ 0x54, 0x15, 0x00, 0x5f, 0x7c, 0x0d, 0x74, 0x00,
+ 0x5f, 0x7d, 0x41, 0xdb, 0x00, 0x5f, 0x7e, 0x44,
+ 0xcd, 0x00, 0x5f, 0x7f, 0x12, 0xb5, 0x00, 0x5f,
+ 0x80, 0x05, 0x1f, 0x00, 0x5f, 0x81, 0x0a, 0x50,
+ 0x00, 0x5f, 0x82, 0x12, 0xb4, 0x00, 0x5f, 0x83,
+ 0x12, 0xb3, 0x00, 0x5f, 0x84, 0x07, 0x18, 0x00,
+ 0x5f, 0x85, 0x0b, 0x34, 0x00, 0x5f, 0x87, 0x12,
+ 0xb9, 0x00, 0x5f, 0x88, 0x12, 0xb7, 0x00, 0x5f,
+ 0x89, 0x38, 0xbc, 0x00, 0x5f, 0x8a, 0x12, 0xb6,
+ 0x00, 0x5f, 0x8b, 0x0f, 0x6f, 0x00, 0x5f, 0x8c,
+ 0x07, 0x99, 0x00, 0x5f, 0x8d, 0x54, 0x16, 0x00,
+ 0x5f, 0x8f, 0x44, 0xce, 0x00, 0x5f, 0x90, 0x09,
+ 0x83, 0x00, 0x5f, 0x91, 0x12, 0xb8, 0x00, 0x5f,
+ 0x92, 0x0c, 0x46, 0x00, 0x5f, 0x93, 0x09, 0x48,
+ 0x00, 0x5f, 0x96, 0x54, 0x17, 0x00, 0x5f, 0x97,
+ 0x0c, 0x98, 0x00, 0x5f, 0x98, 0x12, 0xbc, 0x00,
+ 0x5f, 0x99, 0x12, 0xbb, 0x00, 0x5f, 0x9c, 0x38,
+ 0xbd, 0x00, 0x5f, 0x9d, 0x54, 0x18, 0x00, 0x5f,
+ 0x9e, 0x12, 0xba, 0x00, 0x5f, 0xa0, 0x12, 0xbd,
+ 0x00, 0x5f, 0xa1, 0x07, 0x9a, 0x00, 0x5f, 0xa2,
+ 0x44, 0xcf, 0x00, 0x5f, 0xa4, 0x38, 0xbf, 0x00,
+ 0x5f, 0xa7, 0x38, 0xbe, 0x00, 0x5f, 0xa8, 0x12,
+ 0xbe, 0x00, 0x5f, 0xa9, 0x0d, 0xee, 0x00, 0x5f,
+ 0xaa, 0x09, 0x65, 0x00, 0x5f, 0xab, 0x54, 0x19,
+ 0x00, 0x5f, 0xac, 0x4b, 0x9b, 0x00, 0x5f, 0xad,
+ 0x12, 0xbf, 0x00, 0x5f, 0xae, 0x0d, 0x8d, 0x00,
+ 0x5f, 0xaf, 0x38, 0xc0, 0x00, 0x5f, 0xb0, 0x54,
+ 0x1a, 0x00, 0x5f, 0xb1, 0x54, 0x1b, 0x00, 0x5f,
+ 0xb3, 0x0c, 0x99, 0x00, 0x5f, 0xb4, 0x0b, 0xc3,
+ 0x00, 0x5f, 0xb5, 0x34, 0x38, 0x00, 0x5f, 0xb7,
+ 0x21, 0x04, 0x00, 0x5f, 0xb8, 0x38, 0xc1, 0x00,
+ 0x5f, 0xb9, 0x0c, 0x2a, 0x00, 0x5f, 0xbc, 0x12,
+ 0xc0, 0x00, 0x5f, 0xbd, 0x06, 0x45, 0x00, 0x5f,
+ 0xc3, 0x09, 0xfa, 0x00, 0x5f, 0xc4, 0x38, 0xc2,
+ 0x00, 0x5f, 0xc5, 0x0d, 0x9e, 0x00, 0x5f, 0xc7,
+ 0x44, 0xd0, 0x00, 0x5f, 0xc8, 0x54, 0x1c, 0x00,
+ 0x5f, 0xc9, 0x38, 0xc3, 0x00, 0x5f, 0xcb, 0x44,
+ 0xd1, 0x00, 0x5f, 0xcc, 0x06, 0x33, 0x00, 0x5f,
+ 0xcd, 0x0c, 0xdc, 0x00, 0x5f, 0xd0, 0x54, 0x1d,
+ 0x00, 0x5f, 0xd1, 0x54, 0x1e, 0x00, 0x5f, 0xd2,
+ 0x44, 0xd2, 0x00, 0x5f, 0xd3, 0x44, 0xd3, 0x00,
+ 0x5f, 0xd4, 0x44, 0xd4, 0x00, 0x5f, 0xd6, 0x12,
+ 0xc1, 0x00, 0x5f, 0xd7, 0x08, 0xa4, 0x00, 0x5f,
+ 0xd8, 0x0e, 0x68, 0x00, 0x5f, 0xd9, 0x0e, 0x69,
+ 0x00, 0x5f, 0xdc, 0x05, 0x20, 0x00, 0x5f, 0xdd,
+ 0x12, 0xc6, 0x00, 0x5f, 0xde, 0x21, 0x05, 0x00,
+ 0x5f, 0xe0, 0x0b, 0xa7, 0x00, 0x5f, 0xe1, 0x38,
+ 0xc4, 0x00, 0x5f, 0xe2, 0x44, 0xd5, 0x00, 0x5f,
+ 0xe4, 0x12, 0xc3, 0x00, 0x5f, 0xe8, 0x54, 0x1f,
+ 0x00, 0x5f, 0xe9, 0x38, 0xc5, 0x00, 0x5f, 0xea,
+ 0x4b, 0x9c, 0x00, 0x5f, 0xeb, 0x05, 0x77, 0x00,
+ 0x5f, 0xec, 0x54, 0x20, 0x00, 0x5f, 0xed, 0x38,
+ 0xc6, 0x00, 0x5f, 0xee, 0x44, 0xd6, 0x00, 0x5f,
+ 0xef, 0x44, 0xd7, 0x00, 0x5f, 0xf0, 0x12, 0xf6,
+ 0x00, 0x5f, 0xf1, 0x12, 0xc5, 0x00, 0x5f, 0xf2,
+ 0x54, 0x21, 0x00, 0x5f, 0xf3, 0x44, 0xd8, 0x00,
+ 0x5f, 0xf5, 0x0c, 0xe6, 0x00, 0x5f, 0xf6, 0x54,
+ 0x22, 0x00, 0x5f, 0xf8, 0x12, 0xc4, 0x00, 0x5f,
+ 0xfa, 0x54, 0x23, 0x00, 0x5f, 0xfb, 0x12, 0xc2,
+ 0x00, 0x5f, 0xfc, 0x38, 0xc7, 0x00, 0x5f, 0xfd,
+ 0x08, 0x0c, 0x00, 0x5f, 0xff, 0x12, 0xc8, 0x00,
+ 0x60, 0x07, 0x4b, 0x9d, 0x00, 0x60, 0x0a, 0x54,
+ 0x24, 0x00, 0x60, 0x0d, 0x41, 0xdc, 0x00, 0x60,
+ 0x0e, 0x12, 0xce, 0x00, 0x60, 0x0f, 0x12, 0xd4,
+ 0x00, 0x60, 0x10, 0x12, 0xcc, 0x00, 0x60, 0x12,
+ 0x0c, 0x56, 0x00, 0x60, 0x13, 0x54, 0x25, 0x00,
+ 0x60, 0x14, 0x41, 0xdd, 0x00, 0x60, 0x15, 0x12,
+ 0xd1, 0x00, 0x60, 0x16, 0x0d, 0xcf, 0x00, 0x60,
+ 0x17, 0x38, 0xc8, 0x00, 0x60, 0x18, 0x41, 0xde,
+ 0x00, 0x60, 0x19, 0x12, 0xcb, 0x00, 0x60, 0x1a,
+ 0x38, 0xc9, 0x00, 0x60, 0x1b, 0x12, 0xd0, 0x00,
+ 0x60, 0x1c, 0x0f, 0xaf, 0x00, 0x60, 0x1d, 0x08,
+ 0xa5, 0x00, 0x60, 0x1f, 0x54, 0x26, 0x00, 0x60,
+ 0x20, 0x0b, 0x35, 0x00, 0x60, 0x21, 0x12, 0xc9,
+ 0x00, 0x60, 0x22, 0x44, 0xda, 0x00, 0x60, 0x24,
+ 0x44, 0xdb, 0x00, 0x60, 0x25, 0x06, 0x78, 0x00,
+ 0x60, 0x26, 0x12, 0xd3, 0x00, 0x60, 0x27, 0x0a,
+ 0x51, 0x00, 0x60, 0x28, 0x05, 0x07, 0x00, 0x60,
+ 0x29, 0x12, 0xcd, 0x00, 0x60, 0x2a, 0x05, 0x78,
+ 0x00, 0x60, 0x2b, 0x12, 0xd2, 0x00, 0x60, 0x2d,
+ 0x54, 0x27, 0x00, 0x60, 0x2f, 0x06, 0xa9, 0x00,
+ 0x60, 0x31, 0x12, 0xcf, 0x00, 0x60, 0x33, 0x38,
+ 0xca, 0x00, 0x60, 0x35, 0x41, 0xdf, 0x00, 0x60,
+ 0x3a, 0x12, 0xd5, 0x00, 0x60, 0x40, 0x54, 0x28,
+ 0x00, 0x60, 0x41, 0x12, 0xd7, 0x00, 0x60, 0x42,
+ 0x12, 0xe1, 0x00, 0x60, 0x43, 0x12, 0xdf, 0x00,
+ 0x60, 0x46, 0x12, 0xdc, 0x00, 0x60, 0x47, 0x41,
+ 0xe0, 0x00, 0x60, 0x48, 0x54, 0x29, 0x00, 0x60,
+ 0x49, 0x4b, 0x9e, 0x00, 0x60, 0x4a, 0x12, 0xdb,
+ 0x00, 0x60, 0x4b, 0x0f, 0xc0, 0x00, 0x60, 0x4c,
+ 0x44, 0xdd, 0x00, 0x60, 0x4d, 0x12, 0xdd, 0x00,
+ 0x60, 0x50, 0x06, 0xaa, 0x00, 0x60, 0x51, 0x54,
+ 0x2a, 0x00, 0x60, 0x52, 0x07, 0xc3, 0x00, 0x60,
+ 0x54, 0x4b, 0x9f, 0x00, 0x60, 0x55, 0x09, 0x84,
+ 0x00, 0x60, 0x56, 0x54, 0x2b, 0x00, 0x60, 0x57,
+ 0x54, 0x2c, 0x00, 0x60, 0x59, 0x12, 0xe4, 0x00,
+ 0x60, 0x5a, 0x12, 0xd6, 0x00, 0x60, 0x5d, 0x21,
+ 0x06, 0x00, 0x60, 0x5f, 0x12, 0xda, 0x00, 0x60,
+ 0x60, 0x12, 0xca, 0x00, 0x60, 0x61, 0x38, 0xcb,
+ 0x00, 0x60, 0x62, 0x05, 0x7a, 0x00, 0x60, 0x63,
+ 0x12, 0xde, 0x00, 0x60, 0x64, 0x12, 0xe0, 0x00,
+ 0x60, 0x65, 0x0b, 0x8f, 0x00, 0x60, 0x67, 0x4b,
+ 0xa0, 0x00, 0x60, 0x68, 0x08, 0x18, 0x00, 0x60,
+ 0x69, 0x05, 0x38, 0x00, 0x60, 0x6a, 0x12, 0xd8,
+ 0x00, 0x60, 0x6b, 0x12, 0xe3, 0x00, 0x60, 0x6c,
+ 0x12, 0xe2, 0x00, 0x60, 0x6d, 0x06, 0xab, 0x00,
+ 0x60, 0x6f, 0x0b, 0x09, 0x00, 0x60, 0x70, 0x05,
+ 0xc4, 0x00, 0x60, 0x71, 0x54, 0x2d, 0x00, 0x60,
+ 0x75, 0x07, 0x19, 0x00, 0x60, 0x77, 0x12, 0xd9,
+ 0x00, 0x60, 0x7e, 0x54, 0x2e, 0x00, 0x60, 0x7f,
+ 0x38, 0xcc, 0x00, 0x60, 0x81, 0x12, 0xe5, 0x00,
+ 0x60, 0x82, 0x54, 0x2f, 0x00, 0x60, 0x83, 0x12,
+ 0xe8, 0x00, 0x60, 0x84, 0x12, 0xea, 0x00, 0x60,
+ 0x85, 0x21, 0x07, 0x00, 0x60, 0x86, 0x54, 0x30,
+ 0x00, 0x60, 0x88, 0x54, 0x31, 0x00, 0x60, 0x89,
+ 0x08, 0xe9, 0x00, 0x60, 0x8a, 0x21, 0x08, 0x00,
+ 0x60, 0x8b, 0x12, 0xf0, 0x00, 0x60, 0x8c, 0x0c,
+ 0x0c, 0x00, 0x60, 0x8d, 0x12, 0xe6, 0x00, 0x60,
+ 0x8e, 0x54, 0x32, 0x00, 0x60, 0x91, 0x54, 0x33,
+ 0x00, 0x60, 0x92, 0x12, 0xee, 0x00, 0x60, 0x93,
+ 0x54, 0x34, 0x00, 0x60, 0x94, 0x34, 0x0e, 0x00,
+ 0x60, 0x95, 0x44, 0xde, 0x00, 0x60, 0x96, 0x12,
+ 0xec, 0x00, 0x60, 0x97, 0x12, 0xed, 0x00, 0x60,
+ 0x98, 0x54, 0x35, 0x00, 0x60, 0x9a, 0x12, 0xe9,
+ 0x00, 0x60, 0x9b, 0x12, 0xeb, 0x00, 0x60, 0x9d,
+ 0x41, 0xe1, 0x00, 0x60, 0x9e, 0x38, 0xcd, 0x00,
+ 0x60, 0x9f, 0x07, 0x9b, 0x00, 0x60, 0xa0, 0x0f,
+ 0x14, 0x00, 0x60, 0xa2, 0x54, 0x37, 0x00, 0x60,
+ 0xa3, 0x05, 0xf1, 0x00, 0x60, 0xa4, 0x38, 0xce,
+ 0x00, 0x60, 0xa5, 0x54, 0x38, 0x00, 0x60, 0xa6,
+ 0x04, 0xfb, 0x00, 0x60, 0xa7, 0x12, 0xef, 0x00,
+ 0x60, 0xa8, 0x44, 0xdf, 0x00, 0x60, 0xa9, 0x0c,
+ 0xf0, 0x00, 0x60, 0xaa, 0x04, 0x71, 0x00, 0x60,
+ 0xb0, 0x38, 0xcf, 0x00, 0x60, 0xb1, 0x44, 0xe1,
+ 0x00, 0x60, 0xb2, 0x0d, 0x75, 0x00, 0x60, 0xb3,
+ 0x12, 0xc7, 0x00, 0x60, 0xb4, 0x12, 0xf5, 0x00,
+ 0x60, 0xb5, 0x12, 0xf9, 0x00, 0x60, 0xb6, 0x0e,
+ 0xf1, 0x00, 0x60, 0xb7, 0x54, 0x39, 0x00, 0x60,
+ 0xb8, 0x12, 0xf2, 0x00, 0x60, 0xbb, 0x4b, 0xa1,
+ 0x00, 0x60, 0xbc, 0x0c, 0x63, 0x00, 0x60, 0xbd,
+ 0x12, 0xf7, 0x00, 0x60, 0xbe, 0x44, 0xe2, 0x00,
+ 0x60, 0xc2, 0x54, 0x3a, 0x00, 0x60, 0xc4, 0x4b,
+ 0xa2, 0x00, 0x60, 0xc5, 0x09, 0xd8, 0x00, 0x60,
+ 0xc6, 0x12, 0xf8, 0x00, 0x60, 0xc7, 0x0c, 0xaf,
+ 0x00, 0x60, 0xc8, 0x44, 0xe3, 0x00, 0x60, 0xc9,
+ 0x54, 0x3b, 0x00, 0x60, 0xca, 0x54, 0x3c, 0x00,
+ 0x60, 0xcb, 0x38, 0xd0, 0x00, 0x60, 0xce, 0x54,
+ 0x3d, 0x00, 0x60, 0xcf, 0x54, 0x3e, 0x00, 0x60,
+ 0xd1, 0x0f, 0xed, 0x00, 0x60, 0xd3, 0x12, 0xf4,
+ 0x00, 0x60, 0xd4, 0x41, 0xe2, 0x00, 0x60, 0xd5,
+ 0x21, 0x0a, 0x00, 0x60, 0xd8, 0x12, 0xfa, 0x00,
+ 0x60, 0xd9, 0x44, 0xe4, 0x00, 0x60, 0xda, 0x08,
+ 0x0d, 0x00, 0x60, 0xdb, 0x38, 0xd1, 0x00, 0x60,
+ 0xdc, 0x0a, 0x6f, 0x00, 0x60, 0xdd, 0x41, 0xe3,
+ 0x00, 0x60, 0xde, 0x21, 0x09, 0x00, 0x60, 0xdf,
+ 0x04, 0x98, 0x00, 0x60, 0xe0, 0x12, 0xf3, 0x00,
+ 0x60, 0xe1, 0x12, 0xf1, 0x00, 0x60, 0xe2, 0x54,
+ 0x3f, 0x00, 0x60, 0xe3, 0x0a, 0xdc, 0x00, 0x60,
+ 0xe5, 0x54, 0x40, 0x00, 0x60, 0xe7, 0x12, 0xe7,
+ 0x00, 0x60, 0xe8, 0x08, 0x82, 0x00, 0x60, 0xee,
+ 0x44, 0xe5, 0x00, 0x60, 0xf0, 0x0b, 0x26, 0x00,
+ 0x60, 0xf1, 0x13, 0x06, 0x00, 0x60, 0xf2, 0x21,
+ 0x0c, 0x00, 0x60, 0xf3, 0x0a, 0xdd, 0x00, 0x60,
+ 0xf4, 0x13, 0x01, 0x00, 0x60, 0xf5, 0x44, 0xe6,
+ 0x00, 0x60, 0xf6, 0x12, 0xfe, 0x00, 0x60, 0xf7,
+ 0x12, 0xff, 0x00, 0x60, 0xf8, 0x38, 0xd2, 0x00,
+ 0x60, 0xf9, 0x09, 0x12, 0x00, 0x60, 0xfa, 0x13,
+ 0x02, 0x00, 0x60, 0xfb, 0x13, 0x05, 0x00, 0x60,
+ 0xfc, 0x54, 0x41, 0x00, 0x60, 0xfd, 0x4b, 0xa3,
+ 0x00, 0x61, 0x00, 0x13, 0x00, 0x00, 0x61, 0x01,
+ 0x09, 0x2f, 0x00, 0x61, 0x02, 0x54, 0x42, 0x00,
+ 0x61, 0x03, 0x13, 0x03, 0x00, 0x61, 0x06, 0x12,
+ 0xfd, 0x00, 0x61, 0x07, 0x54, 0x43, 0x00, 0x61,
+ 0x08, 0x0f, 0x08, 0x00, 0x61, 0x09, 0x0f, 0x07,
+ 0x00, 0x61, 0x0a, 0x4b, 0xa4, 0x00, 0x61, 0x0c,
+ 0x54, 0x44, 0x00, 0x61, 0x0d, 0x13, 0x07, 0x00,
+ 0x61, 0x0e, 0x13, 0x08, 0x00, 0x61, 0x0f, 0x04,
+ 0x99, 0x00, 0x61, 0x10, 0x44, 0xe7, 0x00, 0x61,
+ 0x11, 0x21, 0x0d, 0x00, 0x61, 0x12, 0x38, 0xd3,
+ 0x00, 0x61, 0x13, 0x38, 0xd4, 0x00, 0x61, 0x14,
+ 0x38, 0xd5, 0x00, 0x61, 0x15, 0x12, 0xfc, 0x00,
+ 0x61, 0x16, 0x4b, 0xa5, 0x00, 0x61, 0x17, 0x54,
+ 0x45, 0x00, 0x61, 0x19, 0x44, 0xe8, 0x00, 0x61,
+ 0x1a, 0x06, 0xea, 0x00, 0x61, 0x1b, 0x04, 0x6a,
+ 0x00, 0x61, 0x1c, 0x38, 0xd6, 0x00, 0x61, 0x1e,
+ 0x44, 0xe9, 0x00, 0x61, 0x1f, 0x05, 0xf2, 0x00,
+ 0x61, 0x20, 0x21, 0x0b, 0x00, 0x61, 0x21, 0x13,
+ 0x04, 0x00, 0x61, 0x22, 0x54, 0x46, 0x00, 0x61,
+ 0x27, 0x13, 0x0c, 0x00, 0x61, 0x28, 0x13, 0x0b,
+ 0x00, 0x61, 0x2a, 0x4b, 0xa6, 0x00, 0x61, 0x2b,
+ 0x41, 0xe4, 0x00, 0x61, 0x2c, 0x13, 0x10, 0x00,
+ 0x61, 0x30, 0x21, 0x0f, 0x00, 0x61, 0x31, 0x54,
+ 0x47, 0x00, 0x61, 0x34, 0x13, 0x11, 0x00, 0x61,
+ 0x35, 0x54, 0x48, 0x00, 0x61, 0x36, 0x4b, 0xa7,
+ 0x00, 0x61, 0x37, 0x21, 0x0e, 0x00, 0x61, 0x39,
+ 0x54, 0x49, 0x00, 0x61, 0x3a, 0x44, 0xea, 0x00,
+ 0x61, 0x3c, 0x13, 0x0f, 0x00, 0x61, 0x3d, 0x13,
+ 0x12, 0x00, 0x61, 0x3e, 0x13, 0x0a, 0x00, 0x61,
+ 0x3f, 0x13, 0x0e, 0x00, 0x61, 0x41, 0x44, 0xec,
+ 0x00, 0x61, 0x42, 0x13, 0x13, 0x00, 0x61, 0x44,
+ 0x13, 0x14, 0x00, 0x61, 0x45, 0x54, 0x4a, 0x00,
+ 0x61, 0x46, 0x44, 0xed, 0x00, 0x61, 0x47, 0x13,
+ 0x09, 0x00, 0x61, 0x48, 0x08, 0xca, 0x00, 0x61,
+ 0x49, 0x54, 0x4b, 0x00, 0x61, 0x4a, 0x13, 0x0d,
+ 0x00, 0x61, 0x4b, 0x0b, 0x36, 0x00, 0x61, 0x4c,
+ 0x07, 0xc4, 0x00, 0x61, 0x4d, 0x12, 0xfb, 0x00,
+ 0x61, 0x4e, 0x09, 0xfb, 0x00, 0x61, 0x53, 0x13,
+ 0x21, 0x00, 0x61, 0x55, 0x0e, 0x39, 0x00, 0x61,
+ 0x58, 0x13, 0x17, 0x00, 0x61, 0x59, 0x13, 0x18,
+ 0x00, 0x61, 0x5a, 0x13, 0x19, 0x00, 0x61, 0x5d,
+ 0x13, 0x20, 0x00, 0x61, 0x5e, 0x4b, 0xa8, 0x00,
+ 0x61, 0x5f, 0x13, 0x1f, 0x00, 0x61, 0x60, 0x44,
+ 0xee, 0x00, 0x61, 0x62, 0x0e, 0xab, 0x00, 0x61,
+ 0x63, 0x05, 0xf3, 0x00, 0x61, 0x64, 0x4b, 0xa9,
+ 0x00, 0x61, 0x65, 0x13, 0x1d, 0x00, 0x61, 0x67,
+ 0x07, 0x1b, 0x00, 0x61, 0x68, 0x05, 0x92, 0x00,
+ 0x61, 0x6b, 0x13, 0x1a, 0x00, 0x61, 0x6c, 0x54,
+ 0x4c, 0x00, 0x61, 0x6e, 0x0f, 0x80, 0x00, 0x61,
+ 0x6f, 0x13, 0x1c, 0x00, 0x61, 0x70, 0x04, 0x9a,
+ 0x00, 0x61, 0x71, 0x13, 0x1e, 0x00, 0x61, 0x72,
+ 0x54, 0x4d, 0x00, 0x61, 0x73, 0x13, 0x15, 0x00,
+ 0x61, 0x74, 0x13, 0x1b, 0x00, 0x61, 0x75, 0x13,
+ 0x22, 0x00, 0x61, 0x76, 0x07, 0x1a, 0x00, 0x61,
+ 0x77, 0x13, 0x16, 0x00, 0x61, 0x78, 0x54, 0x4e,
+ 0x00, 0x61, 0x7b, 0x4b, 0xaa, 0x00, 0x61, 0x7c,
+ 0x38, 0xd7, 0x00, 0x61, 0x7d, 0x4b, 0xab, 0x00,
+ 0x61, 0x7e, 0x0f, 0x47, 0x00, 0x61, 0x7f, 0x4b,
+ 0xac, 0x00, 0x61, 0x80, 0x54, 0x4f, 0x00, 0x61,
+ 0x81, 0x54, 0x50, 0x00, 0x61, 0x82, 0x0f, 0x15,
+ 0x00, 0x61, 0x83, 0x54, 0x51, 0x00, 0x61, 0x84,
+ 0x54, 0x52, 0x00, 0x61, 0x87, 0x13, 0x25, 0x00,
+ 0x61, 0x8a, 0x13, 0x29, 0x00, 0x61, 0x8b, 0x54,
+ 0x53, 0x00, 0x61, 0x8d, 0x38, 0xd8, 0x00, 0x61,
+ 0x8e, 0x34, 0x33, 0x00, 0x61, 0x90, 0x0f, 0xc1,
+ 0x00, 0x61, 0x91, 0x13, 0x2a, 0x00, 0x61, 0x92,
+ 0x44, 0xf0, 0x00, 0x61, 0x93, 0x44, 0xf1, 0x00,
+ 0x61, 0x94, 0x13, 0x27, 0x00, 0x61, 0x96, 0x13,
+ 0x24, 0x00, 0x61, 0x97, 0x44, 0xf2, 0x00, 0x61,
+ 0x98, 0x21, 0x10, 0x00, 0x61, 0x99, 0x13, 0x23,
+ 0x00, 0x61, 0x9a, 0x13, 0x28, 0x00, 0x61, 0x9c,
+ 0x54, 0x54, 0x00, 0x61, 0x9d, 0x4b, 0xad, 0x00,
+ 0x61, 0x9f, 0x38, 0xd9, 0x00, 0x61, 0xa0, 0x54,
+ 0x55, 0x00, 0x61, 0xa4, 0x0e, 0x00, 0x00, 0x61,
+ 0xa5, 0x44, 0xf3, 0x00, 0x61, 0xa7, 0x0c, 0x8c,
+ 0x00, 0x61, 0xa8, 0x38, 0xda, 0x00, 0x61, 0xa9,
+ 0x07, 0x1c, 0x00, 0x61, 0xaa, 0x54, 0x56, 0x00,
+ 0x61, 0xab, 0x13, 0x2b, 0x00, 0x61, 0xac, 0x13,
+ 0x26, 0x00, 0x61, 0xad, 0x44, 0xf4, 0x00, 0x61,
+ 0xae, 0x13, 0x2c, 0x00, 0x61, 0xb2, 0x07, 0x51,
+ 0x00, 0x61, 0xb6, 0x05, 0x31, 0x00, 0x61, 0xb8,
+ 0x4b, 0xae, 0x00, 0x61, 0xb9, 0x41, 0xe6, 0x00,
+ 0x61, 0xba, 0x13, 0x34, 0x00, 0x61, 0xbc, 0x41,
+ 0xe5, 0x00, 0x61, 0xbe, 0x05, 0xf4, 0x00, 0x61,
+ 0xc0, 0x54, 0x57, 0x00, 0x61, 0xc1, 0x54, 0x58,
+ 0x00, 0x61, 0xc2, 0x38, 0xdb, 0x00, 0x61, 0xc3,
+ 0x13, 0x32, 0x00, 0x61, 0xc6, 0x13, 0x33, 0x00,
+ 0x61, 0xc7, 0x08, 0x19, 0x00, 0x61, 0xc8, 0x13,
+ 0x31, 0x00, 0x61, 0xc9, 0x13, 0x2f, 0x00, 0x61,
+ 0xca, 0x13, 0x2e, 0x00, 0x61, 0xcb, 0x13, 0x35,
+ 0x00, 0x61, 0xcc, 0x13, 0x2d, 0x00, 0x61, 0xcd,
+ 0x13, 0x37, 0x00, 0x61, 0xce, 0x54, 0x59, 0x00,
+ 0x61, 0xcf, 0x54, 0x5a, 0x00, 0x61, 0xd0, 0x05,
+ 0x7b, 0x00, 0x61, 0xd5, 0x44, 0xf6, 0x00, 0x61,
+ 0xdc, 0x4b, 0xaf, 0x00, 0x61, 0xdd, 0x44, 0xf7,
+ 0x00, 0x61, 0xde, 0x54, 0x5b, 0x00, 0x61, 0xdf,
+ 0x38, 0xdc, 0x00, 0x61, 0xe1, 0x54, 0x5c, 0x00,
+ 0x61, 0xe2, 0x4b, 0xb0, 0x00, 0x61, 0xe3, 0x13,
+ 0x39, 0x00, 0x61, 0xe5, 0x4b, 0xb1, 0x00, 0x61,
+ 0xe6, 0x13, 0x38, 0x00, 0x61, 0xe7, 0x54, 0x5d,
+ 0x00, 0x61, 0xe8, 0x4b, 0xb2, 0x00, 0x61, 0xe9,
+ 0x54, 0x5e, 0x00, 0x61, 0xec, 0x54, 0x5f, 0x00,
+ 0x61, 0xed, 0x54, 0x60, 0x00, 0x61, 0xef, 0x54,
+ 0x61, 0x00, 0x61, 0xf2, 0x0b, 0xc4, 0x00, 0x61,
+ 0xf4, 0x13, 0x3c, 0x00, 0x61, 0xf5, 0x44, 0xf8,
+ 0x00, 0x61, 0xf6, 0x13, 0x3a, 0x00, 0x61, 0xf7,
+ 0x13, 0x30, 0x00, 0x61, 0xf8, 0x07, 0x52, 0x00,
+ 0x61, 0xfa, 0x13, 0x3b, 0x00, 0x61, 0xfc, 0x13,
+ 0x3f, 0x00, 0x61, 0xfd, 0x13, 0x3e, 0x00, 0x61,
+ 0xfe, 0x13, 0x40, 0x00, 0x61, 0xff, 0x13, 0x3d,
+ 0x00, 0x62, 0x00, 0x13, 0x41, 0x00, 0x62, 0x01,
+ 0x54, 0x62, 0x00, 0x62, 0x03, 0x54, 0x63, 0x00,
+ 0x62, 0x04, 0x4b, 0xb3, 0x00, 0x62, 0x07, 0x4b,
+ 0xb4, 0x00, 0x62, 0x08, 0x13, 0x42, 0x00, 0x62,
+ 0x09, 0x13, 0x43, 0x00, 0x62, 0x0a, 0x0e, 0x3a,
+ 0x00, 0x62, 0x0c, 0x13, 0x45, 0x00, 0x62, 0x0d,
+ 0x13, 0x44, 0x00, 0x62, 0x0e, 0x09, 0x49, 0x00,
+ 0x62, 0x10, 0x0a, 0x52, 0x00, 0x62, 0x11, 0x05,
+ 0x66, 0x00, 0x62, 0x12, 0x05, 0x7c, 0x00, 0x62,
+ 0x13, 0x21, 0x11, 0x00, 0x62, 0x14, 0x13, 0x46,
+ 0x00, 0x62, 0x15, 0x38, 0xdd, 0x00, 0x62, 0x16,
+ 0x04, 0x83, 0x00, 0x62, 0x1a, 0x0a, 0x70, 0x00,
+ 0x62, 0x1b, 0x13, 0x47, 0x00, 0x62, 0x1c, 0x54,
+ 0x64, 0x00, 0x62, 0x1d, 0x1a, 0x64, 0x00, 0x62,
+ 0x1e, 0x13, 0x48, 0x00, 0x62, 0x1f, 0x07, 0x37,
+ 0x00, 0x62, 0x20, 0x54, 0x65, 0x00, 0x62, 0x21,
+ 0x13, 0x49, 0x00, 0x62, 0x22, 0x41, 0xe7, 0x00,
+ 0x62, 0x23, 0x44, 0xfa, 0x00, 0x62, 0x26, 0x0a,
+ 0x93, 0x00, 0x62, 0x27, 0x54, 0x66, 0x00, 0x62,
+ 0x29, 0x38, 0xde, 0x00, 0x62, 0x2a, 0x13, 0x4a,
+ 0x00, 0x62, 0x2b, 0x54, 0x67, 0x00, 0x62, 0x2e,
+ 0x13, 0x4b, 0x00, 0x62, 0x2f, 0x06, 0x54, 0x00,
+ 0x62, 0x30, 0x13, 0x4c, 0x00, 0x62, 0x31, 0x4b,
+ 0xb5, 0x00, 0x62, 0x32, 0x13, 0x4d, 0x00, 0x62,
+ 0x33, 0x13, 0x4e, 0x00, 0x62, 0x34, 0x0b, 0x37,
+ 0x00, 0x62, 0x36, 0x35, 0xbd, 0x00, 0x62, 0x38,
+ 0x07, 0x81, 0x00, 0x62, 0x39, 0x4b, 0xb6, 0x00,
+ 0x62, 0x3b, 0x0e, 0xed, 0x00, 0x62, 0x3d, 0x4b,
+ 0xb7, 0x00, 0x62, 0x3e, 0x34, 0x4e, 0x00, 0x62,
+ 0x3f, 0x0e, 0x6a, 0x00, 0x62, 0x40, 0x09, 0x74,
+ 0x00, 0x62, 0x41, 0x13, 0x4f, 0x00, 0x62, 0x42,
+ 0x54, 0x68, 0x00, 0x62, 0x43, 0x38, 0xdf, 0x00,
+ 0x62, 0x44, 0x54, 0x69, 0x00, 0x62, 0x46, 0x38,
+ 0xe0, 0x00, 0x62, 0x47, 0x0a, 0x94, 0x00, 0x62,
+ 0x48, 0x1b, 0x1a, 0x00, 0x62, 0x49, 0x0d, 0x76,
+ 0x00, 0x62, 0x4b, 0x09, 0x16, 0x00, 0x62, 0x4c,
+ 0x38, 0xe1, 0x00, 0x62, 0x4d, 0x08, 0x3d, 0x00,
+ 0x62, 0x4e, 0x13, 0x50, 0x00, 0x62, 0x50, 0x54,
+ 0x6a, 0x00, 0x62, 0x51, 0x38, 0xe2, 0x00, 0x62,
+ 0x52, 0x44, 0xfb, 0x00, 0x62, 0x53, 0x0b, 0x27,
+ 0x00, 0x62, 0x54, 0x54, 0x6b, 0x00, 0x62, 0x55,
+ 0x0d, 0xf7, 0x00, 0x62, 0x56, 0x38, 0xe3, 0x00,
+ 0x62, 0x58, 0x0b, 0x51, 0x00, 0x62, 0x5a, 0x41,
+ 0xe8, 0x00, 0x62, 0x5b, 0x13, 0x53, 0x00, 0x62,
+ 0x5c, 0x54, 0x6c, 0x00, 0x62, 0x5e, 0x13, 0x51,
+ 0x00, 0x62, 0x60, 0x13, 0x54, 0x00, 0x62, 0x61,
+ 0x44, 0xfc, 0x00, 0x62, 0x63, 0x13, 0x52, 0x00,
+ 0x62, 0x64, 0x44, 0xfd, 0x00, 0x62, 0x68, 0x13,
+ 0x55, 0x00, 0x62, 0x6d, 0x44, 0xff, 0x00, 0x62,
+ 0x6e, 0x0e, 0x01, 0x00, 0x62, 0x6f, 0x41, 0xe9,
+ 0x00, 0x62, 0x71, 0x04, 0x7b, 0x00, 0x62, 0x73,
+ 0x45, 0x00, 0x00, 0x62, 0x76, 0x0d, 0xd0, 0x00,
+ 0x62, 0x79, 0x0d, 0x77, 0x00, 0x62, 0x7a, 0x4b,
+ 0xb8, 0x00, 0x62, 0x7b, 0x44, 0xfe, 0x00, 0x62,
+ 0x7c, 0x13, 0x56, 0x00, 0x62, 0x7d, 0x54, 0x6d,
+ 0x00, 0x62, 0x7e, 0x13, 0x59, 0x00, 0x62, 0x7f,
+ 0x09, 0x9d, 0x00, 0x62, 0x80, 0x06, 0x55, 0x00,
+ 0x62, 0x82, 0x13, 0x57, 0x00, 0x62, 0x83, 0x13,
+ 0x5e, 0x00, 0x62, 0x84, 0x09, 0x9e, 0x00, 0x62,
+ 0x85, 0x35, 0xc5, 0x00, 0x62, 0x89, 0x13, 0x58,
+ 0x00, 0x62, 0x8a, 0x0c, 0xfa, 0x00, 0x62, 0x8d,
+ 0x54, 0x6e, 0x00, 0x62, 0x8e, 0x54, 0x6f, 0x00,
+ 0x62, 0x8f, 0x54, 0x70, 0x00, 0x62, 0x90, 0x4b,
+ 0xb9, 0x00, 0x62, 0x91, 0x0f, 0x48, 0x00, 0x62,
+ 0x92, 0x13, 0x5a, 0x00, 0x62, 0x93, 0x13, 0x5b,
+ 0x00, 0x62, 0x94, 0x13, 0x5f, 0x00, 0x62, 0x95,
+ 0x0c, 0x64, 0x00, 0x62, 0x96, 0x13, 0x5c, 0x00,
+ 0x62, 0x97, 0x07, 0xc5, 0x00, 0x62, 0x98, 0x0a,
+ 0x82, 0x00, 0x62, 0x99, 0x45, 0x01, 0x00, 0x62,
+ 0x9b, 0x13, 0x6d, 0x00, 0x62, 0x9c, 0x0d, 0x48,
+ 0x00, 0x62, 0x9e, 0x0b, 0x52, 0x00, 0x62, 0xa6,
+ 0x21, 0x12, 0x00, 0x62, 0xa8, 0x4b, 0xba, 0x00,
+ 0x62, 0xab, 0x0d, 0x78, 0x00, 0x62, 0xac, 0x13,
+ 0xb2, 0x00, 0x62, 0xb1, 0x0e, 0x4a, 0x00, 0x62,
+ 0xb3, 0x54, 0x71, 0x00, 0x62, 0xb5, 0x0c, 0x0d,
+ 0x00, 0x62, 0xb6, 0x54, 0x72, 0x00, 0x62, 0xb7,
+ 0x54, 0x73, 0x00, 0x62, 0xb9, 0x0e, 0xa3, 0x00,
+ 0x62, 0xba, 0x54, 0x74, 0x00, 0x62, 0xbb, 0x13,
+ 0x62, 0x00, 0x62, 0xbc, 0x05, 0x21, 0x00, 0x62,
+ 0xbd, 0x0b, 0xa8, 0x00, 0x62, 0xbe, 0x54, 0x75,
+ 0x00, 0x62, 0xbf, 0x54, 0x76, 0x00, 0x62, 0xc2,
+ 0x13, 0x6b, 0x00, 0x62, 0xc4, 0x38, 0xe4, 0x00,
+ 0x62, 0xc5, 0x0b, 0x72, 0x00, 0x62, 0xc6, 0x13,
+ 0x65, 0x00, 0x62, 0xc7, 0x13, 0x6c, 0x00, 0x62,
+ 0xc8, 0x13, 0x67, 0x00, 0x62, 0xc9, 0x13, 0x6e,
+ 0x00, 0x62, 0xca, 0x13, 0x6a, 0x00, 0x62, 0xcc,
+ 0x13, 0x69, 0x00, 0x62, 0xcd, 0x0d, 0x25, 0x00,
+ 0x62, 0xce, 0x54, 0x77, 0x00, 0x62, 0xcf, 0x13,
+ 0x63, 0x00, 0x62, 0xd0, 0x05, 0x7d, 0x00, 0x62,
+ 0xd1, 0x13, 0x61, 0x00, 0x62, 0xd2, 0x06, 0x8b,
+ 0x00, 0x62, 0xd3, 0x0b, 0x53, 0x00, 0x62, 0xd4,
+ 0x37, 0x31, 0x00, 0x62, 0xd5, 0x45, 0x02, 0x00,
+ 0x62, 0xd6, 0x41, 0xea, 0x00, 0x62, 0xd7, 0x13,
+ 0x60, 0x00, 0x62, 0xd8, 0x07, 0xc6, 0x00, 0x62,
+ 0xd9, 0x0a, 0x7f, 0x00, 0x62, 0xda, 0x4b, 0xbb,
+ 0x00, 0x62, 0xdb, 0x09, 0x9f, 0x00, 0x62, 0xdc,
+ 0x13, 0x68, 0x00, 0x62, 0xdd, 0x0d, 0x08, 0x00,
+ 0x62, 0xe0, 0x06, 0x8c, 0x00, 0x62, 0xe1, 0x05,
+ 0xa6, 0x00, 0x62, 0xea, 0x54, 0x78, 0x00, 0x62,
+ 0xec, 0x05, 0xc5, 0x00, 0x62, 0xed, 0x09, 0xe7,
+ 0x00, 0x62, 0xee, 0x13, 0x70, 0x00, 0x62, 0xef,
+ 0x13, 0x75, 0x00, 0x62, 0xf1, 0x13, 0x71, 0x00,
+ 0x62, 0xf2, 0x54, 0x79, 0x00, 0x62, 0xf3, 0x07,
+ 0x53, 0x00, 0x62, 0xf4, 0x4b, 0xbc, 0x00, 0x62,
+ 0xf5, 0x13, 0x76, 0x00, 0x62, 0xf6, 0x08, 0x70,
+ 0x00, 0x62, 0xf7, 0x07, 0xfb, 0x00, 0x62, 0xfc,
+ 0x38, 0xe5, 0x00, 0x62, 0xfd, 0x45, 0x04, 0x00,
+ 0x62, 0xfe, 0x09, 0x30, 0x00, 0x62, 0xff, 0x13,
+ 0x64, 0x00, 0x63, 0x01, 0x08, 0xcb, 0x00, 0x63,
+ 0x02, 0x13, 0x73, 0x00, 0x63, 0x03, 0x45, 0x05,
+ 0x00, 0x63, 0x04, 0x54, 0x7a, 0x00, 0x63, 0x07,
+ 0x08, 0xa6, 0x00, 0x63, 0x08, 0x13, 0x74, 0x00,
+ 0x63, 0x09, 0x04, 0x88, 0x00, 0x63, 0x0a, 0x38,
+ 0xe6, 0x00, 0x63, 0x0b, 0x54, 0x7b, 0x00, 0x63,
+ 0x0c, 0x13, 0x6f, 0x00, 0x63, 0x0d, 0x38, 0xe7,
+ 0x00, 0x63, 0x10, 0x45, 0x06, 0x00, 0x63, 0x11,
+ 0x0b, 0xc5, 0x00, 0x63, 0x13, 0x54, 0x7c, 0x00,
+ 0x63, 0x16, 0x4b, 0xbd, 0x00, 0x63, 0x18, 0x38,
+ 0xe8, 0x00, 0x63, 0x19, 0x06, 0x8d, 0x00, 0x63,
+ 0x1b, 0x37, 0x37, 0x00, 0x63, 0x1f, 0x06, 0xac,
+ 0x00, 0x63, 0x27, 0x13, 0x72, 0x00, 0x63, 0x28,
+ 0x04, 0x6b, 0x00, 0x63, 0x29, 0x54, 0x7d, 0x00,
+ 0x63, 0x2a, 0x4b, 0xbe, 0x00, 0x63, 0x2b, 0x08,
+ 0x33, 0x00, 0x63, 0x2d, 0x54, 0x7e, 0x00, 0x63,
+ 0x2f, 0x09, 0xfc, 0x00, 0x63, 0x32, 0x45, 0x09,
+ 0x00, 0x63, 0x35, 0x45, 0x0a, 0x00, 0x63, 0x36,
+ 0x4b, 0xbf, 0x00, 0x63, 0x39, 0x38, 0xe9, 0x00,
+ 0x63, 0x3a, 0x0c, 0x0e, 0x00, 0x63, 0x3b, 0x45,
+ 0x0b, 0x00, 0x63, 0x3c, 0x45, 0x0c, 0x00, 0x63,
+ 0x3d, 0x0d, 0x68, 0x00, 0x63, 0x3e, 0x13, 0x78,
+ 0x00, 0x63, 0x3f, 0x0a, 0xe0, 0x00, 0x63, 0x41,
+ 0x45, 0x0d, 0x00, 0x63, 0x42, 0x38, 0xea, 0x00,
+ 0x63, 0x43, 0x38, 0xeb, 0x00, 0x63, 0x44, 0x45,
+ 0x0e, 0x00, 0x63, 0x46, 0x4b, 0xc0, 0x00, 0x63,
+ 0x49, 0x0b, 0x0a, 0x00, 0x63, 0x4a, 0x54, 0x7f,
+ 0x00, 0x63, 0x4b, 0x4b, 0xc1, 0x00, 0x63, 0x4c,
+ 0x08, 0x79, 0x00, 0x63, 0x4d, 0x13, 0x79, 0x00,
+ 0x63, 0x4e, 0x45, 0x0f, 0x00, 0x63, 0x4f, 0x13,
+ 0x7b, 0x00, 0x63, 0x50, 0x13, 0x77, 0x00, 0x63,
+ 0x52, 0x54, 0x80, 0x00, 0x63, 0x53, 0x4b, 0xc2,
+ 0x00, 0x63, 0x54, 0x54, 0x81, 0x00, 0x63, 0x55,
+ 0x0e, 0x31, 0x00, 0x63, 0x57, 0x0b, 0xd9, 0x00,
+ 0x63, 0x58, 0x54, 0x82, 0x00, 0x63, 0x59, 0x45,
+ 0x11, 0x00, 0x63, 0x5b, 0x54, 0x83, 0x00, 0x63,
+ 0x5c, 0x0a, 0xde, 0x00, 0x63, 0x65, 0x38, 0xec,
+ 0x00, 0x63, 0x66, 0x54, 0x84, 0x00, 0x63, 0x67,
+ 0x0e, 0x4b, 0x00, 0x63, 0x68, 0x08, 0xfa, 0x00,
+ 0x63, 0x69, 0x13, 0x87, 0x00, 0x63, 0x6b, 0x13,
+ 0x86, 0x00, 0x63, 0x6c, 0x45, 0x14, 0x00, 0x63,
+ 0x6d, 0x54, 0x85, 0x00, 0x63, 0x6e, 0x0a, 0x3e,
+ 0x00, 0x63, 0x71, 0x4b, 0xc3, 0x00, 0x63, 0x72,
+ 0x07, 0x54, 0x00, 0x63, 0x74, 0x38, 0xed, 0x00,
+ 0x63, 0x75, 0x4b, 0xc4, 0x00, 0x63, 0x76, 0x13,
+ 0x80, 0x00, 0x63, 0x77, 0x09, 0xa1, 0x00, 0x63,
+ 0x78, 0x54, 0x86, 0x00, 0x63, 0x7a, 0x0c, 0xc0,
+ 0x00, 0x63, 0x7b, 0x0c, 0xe7, 0x00, 0x63, 0x7c,
+ 0x41, 0xeb, 0x00, 0x63, 0x7d, 0x38, 0xee, 0x00,
+ 0x63, 0x7f, 0x4b, 0xc5, 0x00, 0x63, 0x80, 0x13,
+ 0x7e, 0x00, 0x63, 0x82, 0x4b, 0xc6, 0x00, 0x63,
+ 0x83, 0x0a, 0xdf, 0x00, 0x63, 0x84, 0x38, 0xef,
+ 0x00, 0x63, 0x87, 0x38, 0xf0, 0x00, 0x63, 0x88,
+ 0x09, 0x24, 0x00, 0x63, 0x89, 0x13, 0x83, 0x00,
+ 0x63, 0x8a, 0x4b, 0xc7, 0x00, 0x63, 0x8c, 0x09,
+ 0xa0, 0x00, 0x63, 0x8e, 0x13, 0x7d, 0x00, 0x63,
+ 0x8f, 0x13, 0x82, 0x00, 0x63, 0x90, 0x38, 0xf1,
+ 0x00, 0x63, 0x92, 0x0d, 0x09, 0x00, 0x63, 0x94,
+ 0x45, 0x17, 0x00, 0x63, 0x95, 0x54, 0x87, 0x00,
+ 0x63, 0x96, 0x13, 0x7c, 0x00, 0x63, 0x98, 0x06,
+ 0xf7, 0x00, 0x63, 0x99, 0x45, 0x15, 0x00, 0x63,
+ 0x9a, 0x54, 0x88, 0x00, 0x63, 0x9b, 0x05, 0xbb,
+ 0x00, 0x63, 0x9e, 0x38, 0xf2, 0x00, 0x63, 0x9f,
+ 0x13, 0x84, 0x00, 0x63, 0xa0, 0x0f, 0x73, 0x00,
+ 0x63, 0xa1, 0x08, 0x3e, 0x00, 0x63, 0xa2, 0x0b,
+ 0x73, 0x00, 0x63, 0xa3, 0x13, 0x81, 0x00, 0x63,
+ 0xa4, 0x54, 0x89, 0x00, 0x63, 0xa5, 0x0a, 0x80,
+ 0x00, 0x63, 0xa6, 0x54, 0x8a, 0x00, 0x63, 0xa7,
+ 0x07, 0xc7, 0x00, 0x63, 0xa8, 0x0a, 0x2a, 0x00,
+ 0x63, 0xa9, 0x05, 0x08, 0x00, 0x63, 0xaa, 0x0a,
+ 0xbe, 0x00, 0x63, 0xab, 0x13, 0x7f, 0x00, 0x63,
+ 0xac, 0x06, 0x5f, 0x00, 0x63, 0xad, 0x54, 0x8b,
+ 0x00, 0x63, 0xae, 0x4b, 0xc8, 0x00, 0x63, 0xaf,
+ 0x4b, 0xc9, 0x00, 0x63, 0xb2, 0x07, 0x1d, 0x00,
+ 0x63, 0xb4, 0x0b, 0xeb, 0x00, 0x63, 0xb5, 0x13,
+ 0x85, 0x00, 0x63, 0xbb, 0x0a, 0xe1, 0x00, 0x63,
+ 0xbd, 0x45, 0x18, 0x00, 0x63, 0xbe, 0x13, 0x88,
+ 0x00, 0x63, 0xc0, 0x13, 0x8a, 0x00, 0x63, 0xc1,
+ 0x54, 0x8c, 0x00, 0x63, 0xc3, 0x0b, 0x17, 0x00,
+ 0x63, 0xc4, 0x13, 0x90, 0x00, 0x63, 0xc5, 0x54,
+ 0x8d, 0x00, 0x63, 0xc6, 0x13, 0x8b, 0x00, 0x63,
+ 0xc8, 0x54, 0x8e, 0x00, 0x63, 0xc9, 0x13, 0x8d,
+ 0x00, 0x63, 0xce, 0x54, 0x8f, 0x00, 0x63, 0xcf,
+ 0x0d, 0xb3, 0x00, 0x63, 0xd0, 0x0c, 0x0f, 0x00,
+ 0x63, 0xd1, 0x38, 0xf3, 0x00, 0x63, 0xd2, 0x13,
+ 0x8e, 0x00, 0x63, 0xd3, 0x54, 0x90, 0x00, 0x63,
+ 0xd4, 0x45, 0x19, 0x00, 0x63, 0xd5, 0x45, 0x1a,
+ 0x00, 0x63, 0xd6, 0x0f, 0x16, 0x00, 0x63, 0xda,
+ 0x0f, 0x32, 0x00, 0x63, 0xdb, 0x05, 0xf5, 0x00,
+ 0x63, 0xdc, 0x38, 0xf4, 0x00, 0x63, 0xe0, 0x45,
+ 0x1b, 0x00, 0x63, 0xe1, 0x04, 0x72, 0x00, 0x63,
+ 0xe3, 0x13, 0x8c, 0x00, 0x63, 0xe5, 0x41, 0xec,
+ 0x00, 0x63, 0xe9, 0x13, 0x89, 0x00, 0x63, 0xea,
+ 0x4b, 0xca, 0x00, 0x63, 0xeb, 0x45, 0x1c, 0x00,
+ 0x63, 0xec, 0x45, 0x1d, 0x00, 0x63, 0xed, 0x34,
+ 0x1c, 0x00, 0x63, 0xee, 0x06, 0x34, 0x00, 0x63,
+ 0xf2, 0x45, 0x1e, 0x00, 0x63, 0xf3, 0x54, 0x91,
+ 0x00, 0x63, 0xf4, 0x05, 0x09, 0x00, 0x63, 0xf5,
+ 0x21, 0x13, 0x00, 0x63, 0xf6, 0x13, 0x8f, 0x00,
+ 0x63, 0xf7, 0x36, 0x44, 0x00, 0x63, 0xf8, 0x4b,
+ 0xcb, 0x00, 0x63, 0xf9, 0x4b, 0xcc, 0x00, 0x63,
+ 0xfa, 0x0f, 0x33, 0x00, 0x64, 0x06, 0x13, 0x93,
+ 0x00, 0x64, 0x09, 0x38, 0xf5, 0x00, 0x64, 0x0a,
+ 0x54, 0x92, 0x00, 0x64, 0x0d, 0x0b, 0x1b, 0x00,
+ 0x64, 0x0f, 0x13, 0x9a, 0x00, 0x64, 0x10, 0x38,
+ 0xf6, 0x00, 0x64, 0x12, 0x4b, 0xcd, 0x00, 0x64,
+ 0x13, 0x13, 0x94, 0x00, 0x64, 0x14, 0x1e, 0x2c,
+ 0x00, 0x64, 0x16, 0x13, 0x91, 0x00, 0x64, 0x17,
+ 0x13, 0x98, 0x00, 0x64, 0x18, 0x4b, 0xce, 0x00,
+ 0x64, 0x1c, 0x13, 0x7a, 0x00, 0x64, 0x1e, 0x45,
+ 0x1f, 0x00, 0x64, 0x20, 0x4b, 0xcf, 0x00, 0x64,
+ 0x22, 0x38, 0xf7, 0x00, 0x64, 0x24, 0x4b, 0xd0,
+ 0x00, 0x64, 0x25, 0x45, 0x20, 0x00, 0x64, 0x26,
+ 0x13, 0x95, 0x00, 0x64, 0x28, 0x13, 0x99, 0x00,
+ 0x64, 0x29, 0x45, 0x21, 0x00, 0x64, 0x2a, 0x4b,
+ 0xd1, 0x00, 0x64, 0x2c, 0x0d, 0x56, 0x00, 0x64,
+ 0x2d, 0x0c, 0x65, 0x00, 0x64, 0x2f, 0x45, 0x22,
+ 0x00, 0x64, 0x30, 0x54, 0x93, 0x00, 0x64, 0x34,
+ 0x13, 0x92, 0x00, 0x64, 0x35, 0x4b, 0xd2, 0x00,
+ 0x64, 0x36, 0x13, 0x96, 0x00, 0x64, 0x3a, 0x07,
+ 0x1e, 0x00, 0x64, 0x3d, 0x4b, 0xd3, 0x00, 0x64,
+ 0x3e, 0x08, 0x61, 0x00, 0x64, 0x3f, 0x4b, 0xd4,
+ 0x00, 0x64, 0x42, 0x0a, 0x81, 0x00, 0x64, 0x4b,
+ 0x54, 0x94, 0x00, 0x64, 0x4e, 0x13, 0x9e, 0x00,
+ 0x64, 0x4f, 0x54, 0x95, 0x00, 0x64, 0x51, 0x1e,
+ 0x43, 0x00, 0x64, 0x52, 0x4b, 0xd5, 0x00, 0x64,
+ 0x53, 0x54, 0x96, 0x00, 0x64, 0x54, 0x38, 0xf8,
+ 0x00, 0x64, 0x58, 0x0c, 0x20, 0x00, 0x64, 0x5a,
+ 0x45, 0x23, 0x00, 0x64, 0x5b, 0x38, 0xf9, 0x00,
+ 0x64, 0x5c, 0x54, 0x97, 0x00, 0x64, 0x5d, 0x45,
+ 0x24, 0x00, 0x64, 0x5f, 0x4b, 0xd6, 0x00, 0x64,
+ 0x60, 0x21, 0x14, 0x00, 0x64, 0x61, 0x54, 0x98,
+ 0x00, 0x64, 0x63, 0x54, 0x99, 0x00, 0x64, 0x67,
+ 0x13, 0x9b, 0x00, 0x64, 0x69, 0x0e, 0x8e, 0x00,
+ 0x64, 0x6d, 0x38, 0xfa, 0x00, 0x64, 0x6f, 0x13,
+ 0x9c, 0x00, 0x64, 0x73, 0x45, 0x25, 0x00, 0x64,
+ 0x74, 0x4b, 0xd7, 0x00, 0x64, 0x76, 0x13, 0x9d,
+ 0x00, 0x64, 0x78, 0x0e, 0xda, 0x00, 0x64, 0x79,
+ 0x41, 0xed, 0x00, 0x64, 0x7a, 0x0a, 0x46, 0x00,
+ 0x64, 0x7b, 0x38, 0xfb, 0x00, 0x64, 0x7d, 0x45,
+ 0x26, 0x00, 0x64, 0x83, 0x07, 0x38, 0x00, 0x64,
+ 0x85, 0x54, 0x9a, 0x00, 0x64, 0x87, 0x45, 0x27,
+ 0x00, 0x64, 0x88, 0x13, 0xa4, 0x00, 0x64, 0x8f,
+ 0x54, 0x9b, 0x00, 0x64, 0x90, 0x4b, 0xd8, 0x00,
+ 0x64, 0x91, 0x45, 0x28, 0x00, 0x64, 0x92, 0x08,
+ 0x83, 0x00, 0x64, 0x93, 0x13, 0xa1, 0x00, 0x64,
+ 0x95, 0x13, 0xa0, 0x00, 0x64, 0x98, 0x4b, 0xd9,
+ 0x00, 0x64, 0x99, 0x4b, 0xda, 0x00, 0x64, 0x9a,
+ 0x0c, 0xe8, 0x00, 0x64, 0x9b, 0x54, 0x9c, 0x00,
+ 0x64, 0x9d, 0x21, 0x15, 0x00, 0x64, 0x9e, 0x0c,
+ 0x8d, 0x00, 0x64, 0x9f, 0x45, 0x29, 0x00, 0x64,
+ 0xa1, 0x54, 0x9d, 0x00, 0x64, 0xa3, 0x54, 0x9e,
+ 0x00, 0x64, 0xa4, 0x0c, 0x2b, 0x00, 0x64, 0xa5,
+ 0x13, 0xa2, 0x00, 0x64, 0xa6, 0x54, 0x9f, 0x00,
+ 0x64, 0xa8, 0x54, 0xa0, 0x00, 0x64, 0xa9, 0x13,
+ 0xa3, 0x00, 0x64, 0xab, 0x0d, 0xe1, 0x00, 0x64,
+ 0xac, 0x4b, 0xdb, 0x00, 0x64, 0xad, 0x0c, 0xfb,
+ 0x00, 0x64, 0xae, 0x08, 0x71, 0x00, 0x64, 0xb0,
+ 0x0a, 0x95, 0x00, 0x64, 0xb2, 0x0e, 0x7e, 0x00,
+ 0x64, 0xb3, 0x4b, 0xdc, 0x00, 0x64, 0xb9, 0x05,
+ 0xa7, 0x00, 0x64, 0xbb, 0x13, 0xaa, 0x00, 0x64,
+ 0xbc, 0x13, 0xa5, 0x00, 0x64, 0xbd, 0x54, 0xa1,
+ 0x00, 0x64, 0xbe, 0x38, 0xfc, 0x00, 0x64, 0xbf,
+ 0x38, 0xfd, 0x00, 0x64, 0xc1, 0x0f, 0x34, 0x00,
+ 0x64, 0xc2, 0x13, 0xac, 0x00, 0x64, 0xc4, 0x41,
+ 0xee, 0x00, 0x64, 0xc5, 0x13, 0xa8, 0x00, 0x64,
+ 0xc7, 0x13, 0xa9, 0x00, 0x64, 0xc9, 0x54, 0xa2,
+ 0x00, 0x64, 0xca, 0x34, 0x1d, 0x00, 0x64, 0xcb,
+ 0x45, 0x2a, 0x00, 0x64, 0xcc, 0x45, 0x2b, 0x00,
+ 0x64, 0xcd, 0x0a, 0xe2, 0x00, 0x64, 0xce, 0x21,
+ 0x16, 0x00, 0x64, 0xd0, 0x41, 0xef, 0x00, 0x64,
+ 0xd1, 0x54, 0xa3, 0x00, 0x64, 0xd2, 0x13, 0xa7,
+ 0x00, 0x64, 0xd4, 0x13, 0x66, 0x00, 0x64, 0xd5,
+ 0x45, 0x2c, 0x00, 0x64, 0xd7, 0x45, 0x2d, 0x00,
+ 0x64, 0xd8, 0x13, 0xab, 0x00, 0x64, 0xda, 0x13,
+ 0xa6, 0x00, 0x64, 0xe0, 0x13, 0xb0, 0x00, 0x64,
+ 0xe1, 0x13, 0xb1, 0x00, 0x64, 0xe2, 0x0c, 0x21,
+ 0x00, 0x64, 0xe3, 0x13, 0xb3, 0x00, 0x64, 0xe4,
+ 0x45, 0x2f, 0x00, 0x64, 0xe5, 0x38, 0xfe, 0x00,
+ 0x64, 0xe6, 0x08, 0x72, 0x00, 0x64, 0xe7, 0x13,
+ 0xae, 0x00, 0x64, 0xe9, 0x54, 0xa4, 0x00, 0x64,
+ 0xea, 0x54, 0xa5, 0x00, 0x64, 0xec, 0x06, 0x56,
+ 0x00, 0x64, 0xed, 0x4b, 0xdd, 0x00, 0x64, 0xef,
+ 0x13, 0xb4, 0x00, 0x64, 0xf0, 0x4b, 0xde, 0x00,
+ 0x64, 0xf1, 0x13, 0xad, 0x00, 0x64, 0xf2, 0x13,
+ 0xb8, 0x00, 0x64, 0xf4, 0x13, 0xb7, 0x00, 0x64,
+ 0xf5, 0x54, 0xa6, 0x00, 0x64, 0xf6, 0x13, 0xb6,
+ 0x00, 0x64, 0xf7, 0x38, 0xff, 0x00, 0x64, 0xfa,
+ 0x13, 0xb9, 0x00, 0x64, 0xfb, 0x39, 0x00, 0x00,
+ 0x64, 0xfd, 0x13, 0xbb, 0x00, 0x64, 0xfe, 0x09,
+ 0xd9, 0x00, 0x64, 0xff, 0x45, 0x30, 0x00, 0x65,
+ 0x00, 0x13, 0xba, 0x00, 0x65, 0x01, 0x54, 0xa7,
+ 0x00, 0x65, 0x04, 0x39, 0x01, 0x00, 0x65, 0x05,
+ 0x13, 0xbe, 0x00, 0x65, 0x08, 0x54, 0xa8, 0x00,
+ 0x65, 0x09, 0x54, 0xa9, 0x00, 0x65, 0x0a, 0x54,
+ 0xaa, 0x00, 0x65, 0x0f, 0x45, 0x32, 0x00, 0x65,
+ 0x13, 0x54, 0xab, 0x00, 0x65, 0x14, 0x45, 0x33,
+ 0x00, 0x65, 0x16, 0x39, 0x02, 0x00, 0x65, 0x18,
+ 0x13, 0xbc, 0x00, 0x65, 0x19, 0x39, 0x03, 0x00,
+ 0x65, 0x1b, 0x4b, 0xdf, 0x00, 0x65, 0x1c, 0x13,
+ 0xbd, 0x00, 0x65, 0x1d, 0x13, 0x97, 0x00, 0x65,
+ 0x1e, 0x45, 0x35, 0x00, 0x65, 0x1f, 0x4b, 0xe0,
+ 0x00, 0x65, 0x22, 0x1e, 0x97, 0x00, 0x65, 0x23,
+ 0x13, 0xc0, 0x00, 0x65, 0x24, 0x13, 0xbf, 0x00,
+ 0x65, 0x26, 0x54, 0xac, 0x00, 0x65, 0x29, 0x41,
+ 0xf0, 0x00, 0x65, 0x2a, 0x13, 0x9f, 0x00, 0x65,
+ 0x2b, 0x13, 0xc1, 0x00, 0x65, 0x2c, 0x13, 0xb5,
+ 0x00, 0x65, 0x2e, 0x4b, 0xe1, 0x00, 0x65, 0x2f,
+ 0x08, 0xa7, 0x00, 0x65, 0x31, 0x54, 0xad, 0x00,
+ 0x65, 0x32, 0x45, 0x36, 0x00, 0x65, 0x34, 0x13,
+ 0xc2, 0x00, 0x65, 0x35, 0x13, 0xc3, 0x00, 0x65,
+ 0x36, 0x13, 0xc5, 0x00, 0x65, 0x37, 0x13, 0xc4,
+ 0x00, 0x65, 0x38, 0x13, 0xc6, 0x00, 0x65, 0x39,
+ 0x05, 0x7e, 0x00, 0x65, 0x3a, 0x54, 0xae, 0x00,
+ 0x65, 0x3b, 0x07, 0xc8, 0x00, 0x65, 0x3c, 0x54,
+ 0xaf, 0x00, 0x65, 0x3d, 0x54, 0xb0, 0x00, 0x65,
+ 0x3e, 0x0e, 0x4c, 0x00, 0x65, 0x3f, 0x0a, 0x53,
+ 0x00, 0x65, 0x43, 0x54, 0xb1, 0x00, 0x65, 0x44,
+ 0x45, 0x37, 0x00, 0x65, 0x45, 0x07, 0x82, 0x00,
+ 0x65, 0x47, 0x39, 0x04, 0x00, 0x65, 0x48, 0x13,
+ 0xc8, 0x00, 0x65, 0x49, 0x4b, 0xe2, 0x00, 0x65,
+ 0x4d, 0x13, 0xcb, 0x00, 0x65, 0x4e, 0x21, 0x17,
+ 0x00, 0x65, 0x4f, 0x34, 0x45, 0x00, 0x65, 0x50,
+ 0x54, 0xb2, 0x00, 0x65, 0x51, 0x06, 0x79, 0x00,
+ 0x65, 0x52, 0x54, 0xb3, 0x00, 0x65, 0x54, 0x45,
+ 0x38, 0x00, 0x65, 0x55, 0x13, 0xca, 0x00, 0x65,
+ 0x56, 0x13, 0xc9, 0x00, 0x65, 0x57, 0x0d, 0x0a,
+ 0x00, 0x65, 0x58, 0x13, 0xcc, 0x00, 0x65, 0x59,
+ 0x06, 0xad, 0x00, 0x65, 0x5d, 0x13, 0xce, 0x00,
+ 0x65, 0x5e, 0x13, 0xcd, 0x00, 0x65, 0x5f, 0x54,
+ 0xb4, 0x00, 0x65, 0x60, 0x4b, 0xe3, 0x00, 0x65,
+ 0x62, 0x05, 0xf6, 0x00, 0x65, 0x63, 0x08, 0x84,
+ 0x00, 0x65, 0x66, 0x0c, 0xb0, 0x00, 0x65, 0x67,
+ 0x39, 0x05, 0x00, 0x65, 0x6b, 0x45, 0x39, 0x00,
+ 0x65, 0x6c, 0x07, 0x1f, 0x00, 0x65, 0x70, 0x0a,
+ 0x3a, 0x00, 0x65, 0x72, 0x13, 0xcf, 0x00, 0x65,
+ 0x74, 0x0a, 0x54, 0x00, 0x65, 0x75, 0x0c, 0x22,
+ 0x00, 0x65, 0x77, 0x0d, 0xd1, 0x00, 0x65, 0x78,
+ 0x13, 0xd0, 0x00, 0x65, 0x7a, 0x45, 0x3a, 0x00,
+ 0x65, 0x7d, 0x54, 0xb5, 0x00, 0x65, 0x81, 0x39,
+ 0x06, 0x00, 0x65, 0x82, 0x13, 0xd1, 0x00, 0x65,
+ 0x83, 0x13, 0xd2, 0x00, 0x65, 0x84, 0x45, 0x3b,
+ 0x00, 0x65, 0x85, 0x39, 0x07, 0x00, 0x65, 0x87,
+ 0x0e, 0x08, 0x00, 0x65, 0x88, 0x12, 0x0c, 0x00,
+ 0x65, 0x89, 0x0a, 0x6a, 0x00, 0x65, 0x8a, 0x45,
+ 0x3c, 0x00, 0x65, 0x8c, 0x0d, 0xbe, 0x00, 0x65,
+ 0x8e, 0x08, 0x48, 0x00, 0x65, 0x90, 0x0d, 0x79,
+ 0x00, 0x65, 0x91, 0x0d, 0x57, 0x00, 0x65, 0x92,
+ 0x4b, 0xe4, 0x00, 0x65, 0x95, 0x4b, 0xe5, 0x00,
+ 0x65, 0x97, 0x0c, 0x47, 0x00, 0x65, 0x98, 0x54,
+ 0xb6, 0x00, 0x65, 0x99, 0x0f, 0x89, 0x00, 0x65,
+ 0x9b, 0x13, 0xd4, 0x00, 0x65, 0x9c, 0x08, 0xfc,
+ 0x00, 0x65, 0x9d, 0x41, 0xf1, 0x00, 0x65, 0x9f,
+ 0x13, 0xd5, 0x00, 0x65, 0xa0, 0x54, 0xb7, 0x00,
+ 0x65, 0xa1, 0x04, 0x7a, 0x00, 0x65, 0xa3, 0x54,
+ 0xb8, 0x00, 0x65, 0xa4, 0x06, 0xcc, 0x00, 0x65,
+ 0xa5, 0x0a, 0x71, 0x00, 0x65, 0xa6, 0x54, 0xb9,
+ 0x00, 0x65, 0xa7, 0x0d, 0xd2, 0x00, 0x65, 0xab,
+ 0x13, 0xd6, 0x00, 0x65, 0xac, 0x08, 0x90, 0x00,
+ 0x65, 0xad, 0x0b, 0x85, 0x00, 0x65, 0xae, 0x54,
+ 0xba, 0x00, 0x65, 0xaf, 0x08, 0xa9, 0x00, 0x65,
+ 0xb0, 0x09, 0xfd, 0x00, 0x65, 0xb2, 0x45, 0x3d,
+ 0x00, 0x65, 0xb3, 0x54, 0xbb, 0x00, 0x65, 0xb4,
+ 0x4b, 0xe6, 0x00, 0x65, 0xb5, 0x45, 0x3e, 0x00,
+ 0x65, 0xb7, 0x13, 0xd7, 0x00, 0x65, 0xb8, 0x45,
+ 0x3f, 0x00, 0x65, 0xb9, 0x0e, 0x4d, 0x00, 0x65,
+ 0xbc, 0x05, 0x19, 0x00, 0x65, 0xbd, 0x08, 0xaa,
+ 0x00, 0x65, 0xbe, 0x4b, 0xe7, 0x00, 0x65, 0xbf,
+ 0x45, 0x40, 0x00, 0x65, 0xc1, 0x13, 0xda, 0x00,
+ 0x65, 0xc2, 0x39, 0x08, 0x00, 0x65, 0xc3, 0x13,
+ 0xd8, 0x00, 0x65, 0xc4, 0x13, 0xdb, 0x00, 0x65,
+ 0xc5, 0x0f, 0x81, 0x00, 0x65, 0xc6, 0x13, 0xd9,
+ 0x00, 0x65, 0xc8, 0x4b, 0xe8, 0x00, 0x65, 0xc9,
+ 0x45, 0x41, 0x00, 0x65, 0xcb, 0x0a, 0x9f, 0x00,
+ 0x65, 0xcc, 0x13, 0xdc, 0x00, 0x65, 0xce, 0x4b,
+ 0xe9, 0x00, 0x65, 0xcf, 0x0b, 0x12, 0x00, 0x65,
+ 0xd0, 0x4b, 0xea, 0x00, 0x65, 0xd2, 0x13, 0xdd,
+ 0x00, 0x65, 0xd4, 0x45, 0x42, 0x00, 0x65, 0xd6,
+ 0x54, 0xbc, 0x00, 0x65, 0xd7, 0x06, 0x36, 0x00,
+ 0x65, 0xd8, 0x54, 0xbd, 0x00, 0x65, 0xd9, 0x13,
+ 0xdf, 0x00, 0x65, 0xdb, 0x13, 0xde, 0x00, 0x65,
+ 0xdf, 0x4b, 0xeb, 0x00, 0x65, 0xe0, 0x13, 0xe0,
+ 0x00, 0x65, 0xe1, 0x13, 0xe1, 0x00, 0x65, 0xe2,
+ 0x34, 0x16, 0x00, 0x65, 0xe3, 0x35, 0x85, 0x00,
+ 0x65, 0xe5, 0x0c, 0xd4, 0x00, 0x65, 0xe6, 0x0b,
+ 0x74, 0x00, 0x65, 0xe7, 0x06, 0x86, 0x00, 0x65,
+ 0xe8, 0x08, 0xab, 0x00, 0x65, 0xe9, 0x0a, 0xe3,
+ 0x00, 0x65, 0xec, 0x09, 0x66, 0x00, 0x65, 0xed,
+ 0x04, 0x74, 0x00, 0x65, 0xf0, 0x39, 0x09, 0x00,
+ 0x65, 0xf1, 0x13, 0xe2, 0x00, 0x65, 0xf2, 0x39,
+ 0x0a, 0x00, 0x65, 0xf4, 0x54, 0xbf, 0x00, 0x65,
+ 0xf5, 0x54, 0xc0, 0x00, 0x65, 0xf9, 0x45, 0x44,
+ 0x00, 0x65, 0xfa, 0x05, 0x22, 0x00, 0x65, 0xfb,
+ 0x13, 0xe6, 0x00, 0x65, 0xfc, 0x45, 0x45, 0x00,
+ 0x65, 0xfe, 0x54, 0xc1, 0x00, 0x65, 0xff, 0x54,
+ 0xc2, 0x00, 0x66, 0x00, 0x21, 0x18, 0x00, 0x66,
+ 0x02, 0x07, 0xc9, 0x00, 0x66, 0x03, 0x13, 0xe5,
+ 0x00, 0x66, 0x04, 0x45, 0x46, 0x00, 0x66, 0x06,
+ 0x08, 0x1b, 0x00, 0x66, 0x07, 0x09, 0xa2, 0x00,
+ 0x66, 0x08, 0x45, 0x47, 0x00, 0x66, 0x09, 0x21,
+ 0x1a, 0x00, 0x66, 0x0a, 0x13, 0xe4, 0x00, 0x66,
+ 0x0c, 0x09, 0xa3, 0x00, 0x66, 0x0d, 0x54, 0xc3,
+ 0x00, 0x66, 0x0e, 0x0e, 0xcc, 0x00, 0x66, 0x0f,
+ 0x08, 0x1a, 0x00, 0x66, 0x11, 0x54, 0xc4, 0x00,
+ 0x66, 0x12, 0x54, 0xc5, 0x00, 0x66, 0x13, 0x04,
+ 0x9b, 0x00, 0x66, 0x14, 0x0a, 0x72, 0x00, 0x66,
+ 0x15, 0x21, 0x19, 0x00, 0x66, 0x16, 0x54, 0xc6,
+ 0x00, 0x66, 0x1c, 0x13, 0xeb, 0x00, 0x66, 0x1d,
+ 0x54, 0xc7, 0x00, 0x66, 0x1e, 0x4f, 0x50, 0x00,
+ 0x66, 0x1f, 0x0a, 0x55, 0x00, 0x66, 0x20, 0x04,
+ 0xe9, 0x00, 0x66, 0x21, 0x45, 0x48, 0x00, 0x66,
+ 0x22, 0x41, 0xf3, 0x00, 0x66, 0x23, 0x54, 0xc8,
+ 0x00, 0x66, 0x24, 0x21, 0x1d, 0x00, 0x66, 0x25,
+ 0x09, 0x5f, 0x00, 0x66, 0x26, 0x54, 0xc9, 0x00,
+ 0x66, 0x27, 0x0e, 0x94, 0x00, 0x66, 0x28, 0x08,
+ 0x62, 0x00, 0x66, 0x29, 0x54, 0xca, 0x00, 0x66,
+ 0x2a, 0x45, 0x49, 0x00, 0x66, 0x2b, 0x41, 0xf4,
+ 0x00, 0x66, 0x2c, 0x39, 0x0b, 0x00, 0x66, 0x2d,
+ 0x09, 0xa4, 0x00, 0x66, 0x2e, 0x21, 0x1b, 0x00,
+ 0x66, 0x2f, 0x0a, 0x4b, 0x00, 0x66, 0x30, 0x41,
+ 0xf5, 0x00, 0x66, 0x31, 0x20, 0xae, 0x00, 0x66,
+ 0x33, 0x41, 0xf6, 0x00, 0x66, 0x34, 0x13, 0xea,
+ 0x00, 0x66, 0x35, 0x13, 0xe8, 0x00, 0x66, 0x36,
+ 0x13, 0xe9, 0x00, 0x66, 0x37, 0x54, 0xcc, 0x00,
+ 0x66, 0x39, 0x54, 0xcb, 0x00, 0x66, 0x3a, 0x41,
+ 0xf2, 0x00, 0x66, 0x3b, 0x1e, 0x00, 0x00, 0x66,
+ 0x3c, 0x0b, 0xa9, 0x00, 0x66, 0x3f, 0x14, 0x09,
+ 0x00, 0x66, 0x40, 0x54, 0xcd, 0x00, 0x66, 0x41,
+ 0x13, 0xef, 0x00, 0x66, 0x42, 0x08, 0xcc, 0x00,
+ 0x66, 0x43, 0x07, 0xca, 0x00, 0x66, 0x44, 0x13,
+ 0xed, 0x00, 0x66, 0x45, 0x45, 0x4a, 0x00, 0x66,
+ 0x46, 0x54, 0xce, 0x00, 0x66, 0x48, 0x41, 0xf7,
+ 0x00, 0x66, 0x49, 0x13, 0xee, 0x00, 0x66, 0x4a,
+ 0x54, 0xcf, 0x00, 0x66, 0x4b, 0x09, 0xfe, 0x00,
+ 0x66, 0x4c, 0x39, 0x0c, 0x00, 0x66, 0x4e, 0x45,
+ 0x4c, 0x00, 0x66, 0x4f, 0x13, 0xec, 0x00, 0x66,
+ 0x51, 0x45, 0x4b, 0x00, 0x66, 0x52, 0x08, 0x7d,
+ 0x00, 0x66, 0x57, 0x21, 0x1f, 0x00, 0x66, 0x58,
+ 0x54, 0xd0, 0x00, 0x66, 0x59, 0x21, 0x20, 0x00,
+ 0x66, 0x5a, 0x34, 0x41, 0x00, 0x66, 0x5b, 0x39,
+ 0x0d, 0x00, 0x66, 0x5c, 0x39, 0x0e, 0x00, 0x66,
+ 0x5d, 0x13, 0xf1, 0x00, 0x66, 0x5e, 0x13, 0xf0,
+ 0x00, 0x66, 0x5f, 0x13, 0xf5, 0x00, 0x66, 0x60,
+ 0x54, 0xd1, 0x00, 0x66, 0x61, 0x39, 0x0f, 0x00,
+ 0x66, 0x62, 0x13, 0xf6, 0x00, 0x66, 0x63, 0x37,
+ 0x3a, 0x00, 0x66, 0x64, 0x13, 0xf2, 0x00, 0x66,
+ 0x65, 0x21, 0x1e, 0x00, 0x66, 0x66, 0x05, 0x80,
+ 0x00, 0x66, 0x67, 0x13, 0xf3, 0x00, 0x66, 0x68,
+ 0x13, 0xf4, 0x00, 0x66, 0x69, 0x0d, 0x69, 0x00,
+ 0x66, 0x6a, 0x45, 0x51, 0x00, 0x66, 0x6b, 0x39,
+ 0x10, 0x00, 0x66, 0x6c, 0x45, 0x52, 0x00, 0x66,
+ 0x6d, 0x45, 0x53, 0x00, 0x66, 0x6e, 0x0d, 0xd3,
+ 0x00, 0x66, 0x6f, 0x07, 0x20, 0x00, 0x66, 0x70,
+ 0x13, 0xf7, 0x00, 0x66, 0x73, 0x21, 0x22, 0x00,
+ 0x66, 0x74, 0x21, 0x21, 0x00, 0x66, 0x75, 0x54,
+ 0xd2, 0x00, 0x66, 0x76, 0x09, 0xa5, 0x00, 0x66,
+ 0x77, 0x41, 0xf9, 0x00, 0x66, 0x78, 0x41, 0xfa,
+ 0x00, 0x66, 0x79, 0x54, 0xd4, 0x00, 0x66, 0x7a,
+ 0x0b, 0x90, 0x00, 0x66, 0x7b, 0x45, 0x54, 0x00,
+ 0x66, 0x7c, 0x54, 0xd5, 0x00, 0x66, 0x7e, 0x4b,
+ 0xec, 0x00, 0x66, 0x7f, 0x54, 0xd3, 0x00, 0x66,
+ 0x80, 0x45, 0x55, 0x00, 0x66, 0x81, 0x06, 0xbf,
+ 0x00, 0x66, 0x83, 0x13, 0xf8, 0x00, 0x66, 0x84,
+ 0x13, 0xfc, 0x00, 0x66, 0x87, 0x05, 0x4b, 0x00,
+ 0x66, 0x88, 0x13, 0xf9, 0x00, 0x66, 0x89, 0x13,
+ 0xfb, 0x00, 0x66, 0x8b, 0x4b, 0xed, 0x00, 0x66,
+ 0x8c, 0x4b, 0xee, 0x00, 0x66, 0x8d, 0x41, 0xfb,
+ 0x00, 0x66, 0x8e, 0x13, 0xfa, 0x00, 0x66, 0x90,
+ 0x45, 0x56, 0x00, 0x66, 0x91, 0x09, 0x75, 0x00,
+ 0x66, 0x92, 0x45, 0x57, 0x00, 0x66, 0x96, 0x0b,
+ 0x86, 0x00, 0x66, 0x97, 0x04, 0x89, 0x00, 0x66,
+ 0x98, 0x13, 0xfd, 0x00, 0x66, 0x99, 0x21, 0x23,
+ 0x00, 0x66, 0x9a, 0x54, 0xd6, 0x00, 0x66, 0x9b,
+ 0x54, 0xd7, 0x00, 0x66, 0x9c, 0x54, 0xd8, 0x00,
+ 0x66, 0x9d, 0x13, 0xfe, 0x00, 0x66, 0x9f, 0x54,
+ 0xd9, 0x00, 0x66, 0xa0, 0x21, 0x24, 0x00, 0x66,
+ 0xa2, 0x0b, 0xc6, 0x00, 0x66, 0xa4, 0x39, 0x12,
+ 0x00, 0x66, 0xa6, 0x0f, 0xb9, 0x00, 0x66, 0xab,
+ 0x08, 0x91, 0x00, 0x66, 0xad, 0x45, 0x59, 0x00,
+ 0x66, 0xae, 0x0e, 0x3b, 0x00, 0x66, 0xb1, 0x45,
+ 0x5a, 0x00, 0x66, 0xb2, 0x21, 0x25, 0x00, 0x66,
+ 0xb3, 0x4b, 0xef, 0x00, 0x66, 0xb4, 0x0e, 0x6b,
+ 0x00, 0x66, 0xb5, 0x45, 0x5b, 0x00, 0x66, 0xb8,
+ 0x14, 0x05, 0x00, 0x66, 0xb9, 0x14, 0x00, 0x00,
+ 0x66, 0xbb, 0x41, 0xfc, 0x00, 0x66, 0xbc, 0x14,
+ 0x03, 0x00, 0x66, 0xbe, 0x14, 0x02, 0x00, 0x66,
+ 0xbf, 0x21, 0x26, 0x00, 0x66, 0xc0, 0x4b, 0xf0,
+ 0x00, 0x66, 0xc1, 0x13, 0xff, 0x00, 0x66, 0xc2,
+ 0x54, 0xdb, 0x00, 0x66, 0xc3, 0x54, 0xdc, 0x00,
+ 0x66, 0xc4, 0x14, 0x04, 0x00, 0x66, 0xc6, 0x34,
+ 0x55, 0x00, 0x66, 0xc7, 0x0c, 0xb6, 0x00, 0x66,
+ 0xc8, 0x39, 0x13, 0x00, 0x66, 0xc9, 0x14, 0x01,
+ 0x00, 0x66, 0xcc, 0x54, 0xdd, 0x00, 0x66, 0xce,
+ 0x54, 0xde, 0x00, 0x66, 0xcf, 0x4b, 0xf1, 0x00,
+ 0x66, 0xd4, 0x54, 0xdf, 0x00, 0x66, 0xd6, 0x14,
+ 0x06, 0x00, 0x66, 0xd9, 0x09, 0x76, 0x00, 0x66,
+ 0xda, 0x14, 0x07, 0x00, 0x66, 0xdb, 0x41, 0xfd,
+ 0x00, 0x66, 0xdc, 0x0f, 0x35, 0x00, 0x66, 0xdd,
+ 0x0d, 0x2e, 0x00, 0x66, 0xdf, 0x54, 0xe0, 0x00,
+ 0x66, 0xe0, 0x14, 0x08, 0x00, 0x66, 0xe6, 0x14,
+ 0x0a, 0x00, 0x66, 0xe8, 0x41, 0xfe, 0x00, 0x66,
+ 0xe9, 0x14, 0x0b, 0x00, 0x66, 0xeb, 0x54, 0xe1,
+ 0x00, 0x66, 0xec, 0x39, 0x14, 0x00, 0x66, 0xee,
+ 0x54, 0xe2, 0x00, 0x66, 0xf0, 0x14, 0x0c, 0x00,
+ 0x66, 0xf2, 0x06, 0xc2, 0x00, 0x66, 0xf3, 0x04,
+ 0xea, 0x00, 0x66, 0xf4, 0x07, 0xcb, 0x00, 0x66,
+ 0xf5, 0x14, 0x0d, 0x00, 0x66, 0xf7, 0x14, 0x0e,
+ 0x00, 0x66, 0xf8, 0x09, 0x7b, 0x00, 0x66, 0xf9,
+ 0x0a, 0xe4, 0x00, 0x66, 0xfa, 0x21, 0x27, 0x00,
+ 0x66, 0xfb, 0x20, 0xb1, 0x00, 0x66, 0xfc, 0x10,
+ 0xed, 0x00, 0x66, 0xfd, 0x0a, 0xc0, 0x00, 0x66,
+ 0xfe, 0x0a, 0xbf, 0x00, 0x66, 0xff, 0x0b, 0x38,
+ 0x00, 0x67, 0x00, 0x08, 0x37, 0x00, 0x67, 0x01,
+ 0x45, 0x5f, 0x00, 0x67, 0x03, 0x10, 0x4b, 0x00,
+ 0x67, 0x05, 0x39, 0x15, 0x00, 0x67, 0x07, 0x54,
+ 0xe3, 0x00, 0x67, 0x08, 0x07, 0x44, 0x00, 0x67,
+ 0x09, 0x0f, 0x17, 0x00, 0x67, 0x0b, 0x0e, 0x4e,
+ 0x00, 0x67, 0x0d, 0x0d, 0xf0, 0x00, 0x67, 0x0e,
+ 0x21, 0x28, 0x00, 0x67, 0x0f, 0x14, 0x0f, 0x00,
+ 0x67, 0x12, 0x45, 0x60, 0x00, 0x67, 0x13, 0x39,
+ 0x16, 0x00, 0x67, 0x14, 0x08, 0x63, 0x00, 0x67,
+ 0x15, 0x0b, 0xdb, 0x00, 0x67, 0x16, 0x14, 0x10,
+ 0x00, 0x67, 0x17, 0x4f, 0x51, 0x00, 0x67, 0x19,
+ 0x45, 0x62, 0x00, 0x67, 0x1b, 0x0e, 0x6c, 0x00,
+ 0x67, 0x1c, 0x54, 0xe4, 0x00, 0x67, 0x1d, 0x0b,
+ 0xc7, 0x00, 0x67, 0x1e, 0x14, 0x11, 0x00, 0x67,
+ 0x1f, 0x06, 0x38, 0x00, 0x67, 0x20, 0x54, 0xe5,
+ 0x00, 0x67, 0x22, 0x54, 0xe6, 0x00, 0x67, 0x25,
+ 0x4b, 0xf2, 0x00, 0x67, 0x26, 0x14, 0x12, 0x00,
+ 0x67, 0x27, 0x14, 0x13, 0x00, 0x67, 0x28, 0x0e,
+ 0xe6, 0x00, 0x67, 0x2a, 0x0e, 0xb0, 0x00, 0x67,
+ 0x2b, 0x0e, 0xa4, 0x00, 0x67, 0x2c, 0x0e, 0x8a,
+ 0x00, 0x67, 0x2d, 0x08, 0x73, 0x00, 0x67, 0x2e,
+ 0x14, 0x15, 0x00, 0x67, 0x31, 0x09, 0x17, 0x00,
+ 0x67, 0x33, 0x39, 0x17, 0x00, 0x67, 0x34, 0x0e,
+ 0x7f, 0x00, 0x67, 0x35, 0x4b, 0xf3, 0x00, 0x67,
+ 0x36, 0x14, 0x17, 0x00, 0x67, 0x37, 0x14, 0x1a,
+ 0x00, 0x67, 0x38, 0x14, 0x19, 0x00, 0x67, 0x3a,
+ 0x06, 0x35, 0x00, 0x67, 0x3d, 0x06, 0x7a, 0x00,
+ 0x67, 0x3e, 0x54, 0xe7, 0x00, 0x67, 0x3f, 0x14,
+ 0x16, 0x00, 0x67, 0x41, 0x14, 0x18, 0x00, 0x67,
+ 0x43, 0x35, 0xb7, 0x00, 0x67, 0x45, 0x54, 0xe8,
+ 0x00, 0x67, 0x46, 0x14, 0x1b, 0x00, 0x67, 0x47,
+ 0x41, 0xff, 0x00, 0x67, 0x48, 0x39, 0x18, 0x00,
+ 0x67, 0x49, 0x0a, 0x3f, 0x00, 0x67, 0x4c, 0x39,
+ 0x19, 0x00, 0x67, 0x4d, 0x45, 0x65, 0x00, 0x67,
+ 0x4e, 0x0f, 0x65, 0x00, 0x67, 0x4f, 0x04, 0x8d,
+ 0x00, 0x67, 0x50, 0x08, 0x50, 0x00, 0x67, 0x51,
+ 0x0b, 0x1c, 0x00, 0x67, 0x53, 0x09, 0x09, 0x00,
+ 0x67, 0x54, 0x45, 0x66, 0x00, 0x67, 0x55, 0x4b,
+ 0xf4, 0x00, 0x67, 0x56, 0x09, 0xdb, 0x00, 0x67,
+ 0x59, 0x14, 0x1e, 0x00, 0x67, 0x5c, 0x0c, 0x48,
+ 0x00, 0x67, 0x5d, 0x45, 0x67, 0x00, 0x67, 0x5e,
+ 0x14, 0x1c, 0x00, 0x67, 0x5f, 0x0b, 0x0b, 0x00,
+ 0x67, 0x60, 0x14, 0x1d, 0x00, 0x67, 0x61, 0x09,
+ 0xda, 0x00, 0x67, 0x62, 0x0e, 0xe9, 0x00, 0x67,
+ 0x63, 0x14, 0x1f, 0x00, 0x67, 0x64, 0x14, 0x20,
+ 0x00, 0x67, 0x65, 0x0f, 0x52, 0x00, 0x67, 0x66,
+ 0x21, 0x2a, 0x00, 0x67, 0x6a, 0x14, 0x25, 0x00,
+ 0x67, 0x6c, 0x54, 0xe9, 0x00, 0x67, 0x6d, 0x07,
+ 0xcc, 0x00, 0x67, 0x6e, 0x35, 0x71, 0x00, 0x67,
+ 0x6f, 0x0d, 0x0b, 0x00, 0x67, 0x70, 0x14, 0x22,
+ 0x00, 0x67, 0x71, 0x0c, 0x66, 0x00, 0x67, 0x72,
+ 0x13, 0xe3, 0x00, 0x67, 0x73, 0x13, 0xe7, 0x00,
+ 0x67, 0x74, 0x45, 0x6b, 0x00, 0x67, 0x75, 0x06,
+ 0x69, 0x00, 0x67, 0x76, 0x39, 0x1a, 0x00, 0x67,
+ 0x77, 0x0c, 0xfd, 0x00, 0x67, 0x7b, 0x39, 0x1b,
+ 0x00, 0x67, 0x7c, 0x14, 0x24, 0x00, 0x67, 0x7e,
+ 0x09, 0xa6, 0x00, 0x67, 0x7f, 0x0d, 0x58, 0x00,
+ 0x67, 0x80, 0x4b, 0xf5, 0x00, 0x67, 0x81, 0x42,
+ 0x00, 0x00, 0x67, 0x84, 0x54, 0xea, 0x00, 0x67,
+ 0x85, 0x14, 0x2a, 0x00, 0x67, 0x87, 0x0d, 0x8e,
+ 0x00, 0x67, 0x89, 0x14, 0x21, 0x00, 0x67, 0x8b,
+ 0x14, 0x27, 0x00, 0x67, 0x8c, 0x14, 0x26, 0x00,
+ 0x67, 0x8e, 0x54, 0xeb, 0x00, 0x67, 0x8f, 0x4b,
+ 0xf6, 0x00, 0x67, 0x90, 0x0a, 0x73, 0x00, 0x67,
+ 0x91, 0x4b, 0xf7, 0x00, 0x67, 0x92, 0x45, 0x6d,
+ 0x00, 0x67, 0x93, 0x42, 0x01, 0x00, 0x67, 0x95,
+ 0x0e, 0x9b, 0x00, 0x67, 0x96, 0x54, 0xec, 0x00,
+ 0x67, 0x97, 0x0f, 0x9b, 0x00, 0x67, 0x98, 0x42,
+ 0x02, 0x00, 0x67, 0x99, 0x54, 0xed, 0x00, 0x67,
+ 0x9a, 0x0e, 0x95, 0x00, 0x67, 0x9b, 0x42, 0x03,
+ 0x00, 0x67, 0x9c, 0x05, 0x4c, 0x00, 0x67, 0x9d,
+ 0x08, 0xac, 0x00, 0x67, 0xa0, 0x0f, 0xee, 0x00,
+ 0x67, 0xa1, 0x14, 0x29, 0x00, 0x67, 0xa2, 0x0a,
+ 0x3b, 0x00, 0x67, 0xa4, 0x4b, 0xf8, 0x00, 0x67,
+ 0xa6, 0x14, 0x28, 0x00, 0x67, 0xa9, 0x14, 0x23,
+ 0x00, 0x67, 0xaf, 0x07, 0x83, 0x00, 0x67, 0xb0,
+ 0x39, 0x1c, 0x00, 0x67, 0xb1, 0x4b, 0xf9, 0x00,
+ 0x67, 0xb2, 0x39, 0x1d, 0x00, 0x67, 0xb3, 0x14,
+ 0x2f, 0x00, 0x67, 0xb4, 0x14, 0x2d, 0x00, 0x67,
+ 0xb5, 0x4b, 0xfa, 0x00, 0x67, 0xb6, 0x05, 0x4d,
+ 0x00, 0x67, 0xb7, 0x14, 0x2b, 0x00, 0x67, 0xb8,
+ 0x14, 0x31, 0x00, 0x67, 0xb9, 0x14, 0x37, 0x00,
+ 0x67, 0xbb, 0x21, 0x2b, 0x00, 0x67, 0xbc, 0x54,
+ 0xee, 0x00, 0x67, 0xbd, 0x54, 0xef, 0x00, 0x67,
+ 0xbe, 0x4b, 0xfb, 0x00, 0x67, 0xc0, 0x21, 0x2d,
+ 0x00, 0x67, 0xc1, 0x0b, 0x28, 0x00, 0x67, 0xc2,
+ 0x54, 0xf0, 0x00, 0x67, 0xc3, 0x45, 0x71, 0x00,
+ 0x67, 0xc4, 0x0e, 0x11, 0x00, 0x67, 0xc5, 0x54,
+ 0xf1, 0x00, 0x67, 0xc6, 0x14, 0x39, 0x00, 0x67,
+ 0xc8, 0x45, 0x72, 0x00, 0x67, 0xc9, 0x54, 0xf2,
+ 0x00, 0x67, 0xca, 0x0d, 0x94, 0x00, 0x67, 0xce,
+ 0x14, 0x38, 0x00, 0x67, 0xcf, 0x0d, 0x26, 0x00,
+ 0x67, 0xd0, 0x0e, 0x6d, 0x00, 0x67, 0xd1, 0x05,
+ 0xf7, 0x00, 0x67, 0xd2, 0x45, 0x73, 0x00, 0x67,
+ 0xd3, 0x0a, 0x9b, 0x00, 0x67, 0xd4, 0x09, 0x4a,
+ 0x00, 0x67, 0xd7, 0x39, 0x1f, 0x00, 0x67, 0xd8,
+ 0x0b, 0xef, 0x00, 0x67, 0xd9, 0x39, 0x20, 0x00,
+ 0x67, 0xda, 0x0f, 0x18, 0x00, 0x67, 0xdb, 0x45,
+ 0x74, 0x00, 0x67, 0xdc, 0x54, 0xf3, 0x00, 0x67,
+ 0xdd, 0x14, 0x34, 0x00, 0x67, 0xde, 0x14, 0x33,
+ 0x00, 0x67, 0xe1, 0x54, 0xf4, 0x00, 0x67, 0xe2,
+ 0x14, 0x35, 0x00, 0x67, 0xe4, 0x14, 0x32, 0x00,
+ 0x67, 0xe6, 0x54, 0xf5, 0x00, 0x67, 0xe7, 0x14,
+ 0x3a, 0x00, 0x67, 0xe9, 0x14, 0x30, 0x00, 0x67,
+ 0xec, 0x14, 0x2e, 0x00, 0x67, 0xee, 0x14, 0x36,
+ 0x00, 0x67, 0xef, 0x14, 0x2c, 0x00, 0x67, 0xf0,
+ 0x39, 0x21, 0x00, 0x67, 0xf1, 0x0b, 0xaa, 0x00,
+ 0x67, 0xf2, 0x54, 0xf6, 0x00, 0x67, 0xf3, 0x0f,
+ 0x04, 0x00, 0x67, 0xf4, 0x08, 0xf2, 0x00, 0x67,
+ 0xf5, 0x08, 0x64, 0x00, 0x67, 0xf6, 0x54, 0xf7,
+ 0x00, 0x67, 0xf7, 0x45, 0x75, 0x00, 0x67, 0xf9,
+ 0x39, 0x1e, 0x00, 0x67, 0xfa, 0x1e, 0x9a, 0x00,
+ 0x67, 0xfb, 0x08, 0x2a, 0x00, 0x67, 0xfc, 0x42,
+ 0x04, 0x00, 0x67, 0xfe, 0x0e, 0x9d, 0x00, 0x67,
+ 0xff, 0x05, 0x9f, 0x00, 0x68, 0x01, 0x36, 0xf2,
+ 0x00, 0x68, 0x02, 0x0b, 0xea, 0x00, 0x68, 0x03,
+ 0x0c, 0xa2, 0x00, 0x68, 0x04, 0x04, 0xeb, 0x00,
+ 0x68, 0x05, 0x1e, 0x07, 0x00, 0x68, 0x10, 0x45,
+ 0x70, 0x00, 0x68, 0x13, 0x0a, 0x96, 0x00, 0x68,
+ 0x14, 0x54, 0xf8, 0x00, 0x68, 0x16, 0x0a, 0x58,
+ 0x00, 0x68, 0x17, 0x07, 0x00, 0x00, 0x68, 0x18,
+ 0x45, 0x79, 0x00, 0x68, 0x19, 0x54, 0xf9, 0x00,
+ 0x68, 0x1d, 0x42, 0x05, 0x00, 0x68, 0x1e, 0x14,
+ 0x3c, 0x00, 0x68, 0x1f, 0x45, 0x7a, 0x00, 0x68,
+ 0x21, 0x07, 0xcd, 0x00, 0x68, 0x22, 0x05, 0xda,
+ 0x00, 0x68, 0x27, 0x54, 0xfa, 0x00, 0x68, 0x28,
+ 0x4b, 0xfc, 0x00, 0x68, 0x29, 0x14, 0x3e, 0x00,
+ 0x68, 0x2a, 0x05, 0xd2, 0x00, 0x68, 0x2b, 0x14,
+ 0x44, 0x00, 0x68, 0x2c, 0x39, 0x22, 0x00, 0x68,
+ 0x2d, 0x45, 0x7b, 0x00, 0x68, 0x2f, 0x54, 0xfb,
+ 0x00, 0x68, 0x30, 0x39, 0x23, 0x00, 0x68, 0x31,
+ 0x39, 0x24, 0x00, 0x68, 0x32, 0x14, 0x41, 0x00,
+ 0x68, 0x33, 0x45, 0x7d, 0x00, 0x68, 0x34, 0x0a,
+ 0x97, 0x00, 0x68, 0x38, 0x05, 0xa9, 0x00, 0x68,
+ 0x39, 0x08, 0x1c, 0x00, 0x68, 0x3b, 0x45, 0x7e,
+ 0x00, 0x68, 0x3c, 0x05, 0xa8, 0x00, 0x68, 0x3d,
+ 0x08, 0x3f, 0x00, 0x68, 0x3e, 0x45, 0x7f, 0x00,
+ 0x68, 0x3f, 0x54, 0xfc, 0x00, 0x68, 0x40, 0x14,
+ 0x3f, 0x00, 0x68, 0x41, 0x07, 0x3b, 0x00, 0x68,
+ 0x42, 0x07, 0x21, 0x00, 0x68, 0x43, 0x0c, 0x67,
+ 0x00, 0x68, 0x44, 0x21, 0x2f, 0x00, 0x68, 0x45,
+ 0x45, 0x80, 0x00, 0x68, 0x46, 0x14, 0x3d, 0x00,
+ 0x68, 0x48, 0x04, 0x8a, 0x00, 0x68, 0x49, 0x45,
+ 0x81, 0x00, 0x68, 0x4a, 0x54, 0xfd, 0x00, 0x68,
+ 0x4c, 0x45, 0x82, 0x00, 0x68, 0x4d, 0x14, 0x40,
+ 0x00, 0x68, 0x4e, 0x14, 0x42, 0x00, 0x68, 0x50,
+ 0x06, 0xc5, 0x00, 0x68, 0x51, 0x07, 0x02, 0x00,
+ 0x68, 0x52, 0x37, 0xd3, 0x00, 0x68, 0x53, 0x05,
+ 0xf8, 0x00, 0x68, 0x54, 0x06, 0x65, 0x00, 0x68,
+ 0x55, 0x45, 0x83, 0x00, 0x68, 0x57, 0x45, 0x84,
+ 0x00, 0x68, 0x58, 0x54, 0xfe, 0x00, 0x68, 0x59,
+ 0x14, 0x45, 0x00, 0x68, 0x5b, 0x39, 0x25, 0x00,
+ 0x68, 0x5c, 0x08, 0x69, 0x00, 0x68, 0x5d, 0x0e,
+ 0x9f, 0x00, 0x68, 0x5f, 0x08, 0x85, 0x00, 0x68,
+ 0x63, 0x14, 0x46, 0x00, 0x68, 0x67, 0x0d, 0xa2,
+ 0x00, 0x68, 0x6b, 0x45, 0x86, 0x00, 0x68, 0x6e,
+ 0x45, 0x87, 0x00, 0x68, 0x6f, 0x54, 0xff, 0x00,
+ 0x68, 0x70, 0x55, 0x00, 0x00, 0x68, 0x71, 0x55,
+ 0x01, 0x00, 0x68, 0x72, 0x39, 0x26, 0x00, 0x68,
+ 0x74, 0x14, 0x52, 0x00, 0x68, 0x75, 0x39, 0x27,
+ 0x00, 0x68, 0x76, 0x05, 0x33, 0x00, 0x68, 0x77,
+ 0x14, 0x47, 0x00, 0x68, 0x79, 0x55, 0x02, 0x00,
+ 0x68, 0x7a, 0x39, 0x28, 0x00, 0x68, 0x7b, 0x55,
+ 0x03, 0x00, 0x68, 0x7c, 0x45, 0x88, 0x00, 0x68,
+ 0x7e, 0x14, 0x58, 0x00, 0x68, 0x7f, 0x14, 0x48,
+ 0x00, 0x68, 0x81, 0x0f, 0x8a, 0x00, 0x68, 0x82,
+ 0x45, 0x89, 0x00, 0x68, 0x83, 0x14, 0x4f, 0x00,
+ 0x68, 0x84, 0x39, 0x29, 0x00, 0x68, 0x85, 0x34,
+ 0x3f, 0x00, 0x68, 0x86, 0x4b, 0xfd, 0x00, 0x68,
+ 0x88, 0x55, 0x04, 0x00, 0x68, 0x8d, 0x14, 0x57,
+ 0x00, 0x68, 0x8e, 0x1e, 0x9c, 0x00, 0x68, 0x8f,
+ 0x14, 0x4a, 0x00, 0x68, 0x90, 0x45, 0x8a, 0x00,
+ 0x68, 0x93, 0x04, 0x78, 0x00, 0x68, 0x94, 0x14,
+ 0x4c, 0x00, 0x68, 0x96, 0x45, 0x8b, 0x00, 0x68,
+ 0x97, 0x07, 0xce, 0x00, 0x68, 0x98, 0x45, 0x8d,
+ 0x00, 0x68, 0x99, 0x45, 0x8e, 0x00, 0x68, 0x9a,
+ 0x45, 0x8f, 0x00, 0x68, 0x9b, 0x14, 0x4e, 0x00,
+ 0x68, 0x9c, 0x45, 0x90, 0x00, 0x68, 0x9d, 0x14,
+ 0x4d, 0x00, 0x68, 0x9f, 0x14, 0x49, 0x00, 0x68,
+ 0xa0, 0x14, 0x54, 0x00, 0x68, 0xa1, 0x55, 0x05,
+ 0x00, 0x68, 0xa2, 0x09, 0xa7, 0x00, 0x68, 0xa3,
+ 0x42, 0x06, 0x00, 0x68, 0xa5, 0x39, 0x2a, 0x00,
+ 0x68, 0xa6, 0x11, 0xbe, 0x00, 0x68, 0xa7, 0x07,
+ 0x9c, 0x00, 0x68, 0xa8, 0x0f, 0x66, 0x00, 0x68,
+ 0xa9, 0x55, 0x06, 0x00, 0x68, 0xaa, 0x45, 0x91,
+ 0x00, 0x68, 0xab, 0x45, 0x92, 0x00, 0x68, 0xad,
+ 0x14, 0x4b, 0x00, 0x68, 0xae, 0x55, 0x07, 0x00,
+ 0x68, 0xaf, 0x0c, 0x10, 0x00, 0x68, 0xb0, 0x05,
+ 0x81, 0x00, 0x68, 0xb1, 0x08, 0x1d, 0x00, 0x68,
+ 0xb2, 0x39, 0x2b, 0x00, 0x68, 0xb3, 0x14, 0x43,
+ 0x00, 0x68, 0xb4, 0x45, 0x93, 0x00, 0x68, 0xb5,
+ 0x14, 0x53, 0x00, 0x68, 0xb6, 0x05, 0xbf, 0x00,
+ 0x68, 0xb9, 0x14, 0x51, 0x00, 0x68, 0xba, 0x14,
+ 0x55, 0x00, 0x68, 0xbb, 0x45, 0x94, 0x00, 0x68,
+ 0xbc, 0x0c, 0x68, 0x00, 0x68, 0xc3, 0x45, 0x98,
+ 0x00, 0x68, 0xc4, 0x06, 0x3a, 0x00, 0x68, 0xc5,
+ 0x45, 0x99, 0x00, 0x68, 0xc6, 0x14, 0x73, 0x00,
+ 0x68, 0xc8, 0x20, 0xaf, 0x00, 0x68, 0xc9, 0x0e,
+ 0xd5, 0x00, 0x68, 0xca, 0x14, 0x5a, 0x00, 0x68,
+ 0xcb, 0x06, 0x39, 0x00, 0x68, 0xcc, 0x45, 0x9a,
+ 0x00, 0x68, 0xcd, 0x14, 0x61, 0x00, 0x68, 0xcf,
+ 0x21, 0x30, 0x00, 0x68, 0xd0, 0x39, 0x2c, 0x00,
+ 0x68, 0xd1, 0x55, 0x08, 0x00, 0x68, 0xd2, 0x0e,
+ 0x6e, 0x00, 0x68, 0xd3, 0x55, 0x09, 0x00, 0x68,
+ 0xd4, 0x14, 0x62, 0x00, 0x68, 0xd5, 0x14, 0x64,
+ 0x00, 0x68, 0xd6, 0x39, 0x2d, 0x00, 0x68, 0xd7,
+ 0x14, 0x68, 0x00, 0x68, 0xd8, 0x14, 0x5c, 0x00,
+ 0x68, 0xd9, 0x45, 0x9b, 0x00, 0x68, 0xda, 0x0b,
+ 0x68, 0x00, 0x68, 0xdc, 0x55, 0x0a, 0x00, 0x68,
+ 0xdd, 0x55, 0x0b, 0x00, 0x68, 0xdf, 0x0c, 0x69,
+ 0x00, 0x68, 0xe0, 0x14, 0x6c, 0x00, 0x68, 0xe1,
+ 0x14, 0x5f, 0x00, 0x68, 0xe3, 0x14, 0x69, 0x00,
+ 0x68, 0xe4, 0x45, 0x9c, 0x00, 0x68, 0xe5, 0x45,
+ 0x9d, 0x00, 0x68, 0xe7, 0x14, 0x63, 0x00, 0x68,
+ 0xe8, 0x39, 0x2e, 0x00, 0x68, 0xea, 0x55, 0x0c,
+ 0x00, 0x68, 0xeb, 0x4b, 0xfe, 0x00, 0x68, 0xec,
+ 0x45, 0x9e, 0x00, 0x68, 0xed, 0x39, 0x2f, 0x00,
+ 0x68, 0xee, 0x09, 0xff, 0x00, 0x68, 0xef, 0x14,
+ 0x6d, 0x00, 0x68, 0xf0, 0x39, 0x30, 0x00, 0x68,
+ 0xf1, 0x39, 0x31, 0x00, 0x68, 0xf2, 0x0a, 0x57,
+ 0x00, 0x68, 0xf5, 0x4b, 0xff, 0x00, 0x68, 0xf6,
+ 0x55, 0x0d, 0x00, 0x68, 0xf7, 0x45, 0x9f, 0x00,
+ 0x68, 0xf9, 0x14, 0x6b, 0x00, 0x68, 0xfa, 0x05,
+ 0xf9, 0x00, 0x68, 0xfb, 0x45, 0x95, 0x00, 0x68,
+ 0xfc, 0x39, 0x32, 0x00, 0x68, 0xfd, 0x55, 0x0e,
+ 0x00, 0x69, 0x00, 0x0f, 0xf6, 0x00, 0x69, 0x01,
+ 0x14, 0x59, 0x00, 0x69, 0x03, 0x45, 0xa0, 0x00,
+ 0x69, 0x04, 0x14, 0x67, 0x00, 0x69, 0x05, 0x04,
+ 0x9c, 0x00, 0x69, 0x06, 0x55, 0x0f, 0x00, 0x69,
+ 0x07, 0x45, 0xa1, 0x00, 0x69, 0x08, 0x14, 0x5b,
+ 0x00, 0x69, 0x09, 0x55, 0x10, 0x00, 0x69, 0x0a,
+ 0x42, 0x07, 0x00, 0x69, 0x0b, 0x0e, 0xc6, 0x00,
+ 0x69, 0x0c, 0x14, 0x60, 0x00, 0x69, 0x0d, 0x09,
+ 0xe8, 0x00, 0x69, 0x0e, 0x0b, 0xe3, 0x00, 0x69,
+ 0x0f, 0x14, 0x56, 0x00, 0x69, 0x10, 0x55, 0x11,
+ 0x00, 0x69, 0x11, 0x39, 0x33, 0x00, 0x69, 0x12,
+ 0x14, 0x66, 0x00, 0x69, 0x13, 0x39, 0x34, 0x00,
+ 0x69, 0x16, 0x55, 0x12, 0x00, 0x69, 0x17, 0x4c,
+ 0x00, 0x00, 0x69, 0x19, 0x0a, 0x40, 0x00, 0x69,
+ 0x1a, 0x14, 0x70, 0x00, 0x69, 0x1b, 0x05, 0xcf,
+ 0x00, 0x69, 0x1c, 0x07, 0x55, 0x00, 0x69, 0x21,
+ 0x14, 0x72, 0x00, 0x69, 0x22, 0x14, 0x5d, 0x00,
+ 0x69, 0x23, 0x14, 0x71, 0x00, 0x69, 0x25, 0x14,
+ 0x6a, 0x00, 0x69, 0x26, 0x14, 0x5e, 0x00, 0x69,
+ 0x28, 0x14, 0x6e, 0x00, 0x69, 0x2a, 0x14, 0x6f,
+ 0x00, 0x69, 0x30, 0x14, 0x80, 0x00, 0x69, 0x31,
+ 0x55, 0x13, 0x00, 0x69, 0x33, 0x4c, 0x01, 0x00,
+ 0x69, 0x34, 0x0c, 0xa6, 0x00, 0x69, 0x35, 0x39,
+ 0x35, 0x00, 0x69, 0x36, 0x14, 0x65, 0x00, 0x69,
+ 0x38, 0x4c, 0x02, 0x00, 0x69, 0x39, 0x14, 0x7c,
+ 0x00, 0x69, 0x3b, 0x39, 0x36, 0x00, 0x69, 0x3d,
+ 0x14, 0x7e, 0x00, 0x69, 0x3f, 0x0b, 0xf4, 0x00,
+ 0x69, 0x42, 0x42, 0x0a, 0x00, 0x69, 0x45, 0x55,
+ 0x14, 0x00, 0x69, 0x46, 0x45, 0xa5, 0x00, 0x69,
+ 0x49, 0x42, 0x08, 0x00, 0x69, 0x4a, 0x0f, 0x36,
+ 0x00, 0x69, 0x4e, 0x55, 0x15, 0x00, 0x69, 0x53,
+ 0x0d, 0xe8, 0x00, 0x69, 0x54, 0x14, 0x79, 0x00,
+ 0x69, 0x55, 0x0b, 0x2a, 0x00, 0x69, 0x57, 0x39,
+ 0x37, 0x00, 0x69, 0x59, 0x14, 0x7f, 0x00, 0x69,
+ 0x5a, 0x0a, 0xc1, 0x00, 0x69, 0x5b, 0x4c, 0x03,
+ 0x00, 0x69, 0x5c, 0x14, 0x76, 0x00, 0x69, 0x5d,
+ 0x14, 0x83, 0x00, 0x69, 0x5e, 0x14, 0x82, 0x00,
+ 0x69, 0x60, 0x0c, 0xc7, 0x00, 0x69, 0x61, 0x14,
+ 0x81, 0x00, 0x69, 0x62, 0x0c, 0xc2, 0x00, 0x69,
+ 0x63, 0x39, 0x38, 0x00, 0x69, 0x64, 0x42, 0x0b,
+ 0x00, 0x69, 0x65, 0x4c, 0x04, 0x00, 0x69, 0x66,
+ 0x55, 0x16, 0x00, 0x69, 0x68, 0x21, 0x32, 0x00,
+ 0x69, 0x69, 0x45, 0xa6, 0x00, 0x69, 0x6a, 0x14,
+ 0x85, 0x00, 0x69, 0x6b, 0x14, 0x78, 0x00, 0x69,
+ 0x6c, 0x45, 0xa7, 0x00, 0x69, 0x6d, 0x06, 0xc0,
+ 0x00, 0x69, 0x6e, 0x14, 0x7b, 0x00, 0x69, 0x6f,
+ 0x09, 0x67, 0x00, 0x69, 0x70, 0x55, 0x17, 0x00,
+ 0x69, 0x71, 0x55, 0x18, 0x00, 0x69, 0x72, 0x39,
+ 0x39, 0x00, 0x69, 0x73, 0x0d, 0x16, 0x00, 0x69,
+ 0x74, 0x14, 0x7d, 0x00, 0x69, 0x75, 0x06, 0xc3,
+ 0x00, 0x69, 0x77, 0x14, 0x75, 0x00, 0x69, 0x78,
+ 0x14, 0x77, 0x00, 0x69, 0x79, 0x14, 0x74, 0x00,
+ 0x69, 0x7a, 0x45, 0xa8, 0x00, 0x69, 0x7b, 0x55,
+ 0x19, 0x00, 0x69, 0x7c, 0x0f, 0xd6, 0x00, 0x69,
+ 0x7d, 0x05, 0xb8, 0x00, 0x69, 0x7e, 0x14, 0x7a,
+ 0x00, 0x69, 0x7f, 0x39, 0x3a, 0x00, 0x69, 0x80,
+ 0x39, 0x3b, 0x00, 0x69, 0x81, 0x14, 0x84, 0x00,
+ 0x69, 0x82, 0x05, 0x93, 0x00, 0x69, 0x86, 0x37,
+ 0x40, 0x00, 0x69, 0x8a, 0x08, 0x57, 0x00, 0x69,
+ 0x8d, 0x55, 0x1a, 0x00, 0x69, 0x8e, 0x04, 0xff,
+ 0x00, 0x69, 0x91, 0x14, 0x95, 0x00, 0x69, 0x92,
+ 0x45, 0xa9, 0x00, 0x69, 0x94, 0x0f, 0xd7, 0x00,
+ 0x69, 0x95, 0x14, 0x98, 0x00, 0x69, 0x96, 0x45,
+ 0xab, 0x00, 0x69, 0x98, 0x21, 0x34, 0x00, 0x69,
+ 0x9b, 0x0a, 0x00, 0x00, 0x69, 0x9c, 0x14, 0x97,
+ 0x00, 0x69, 0xa0, 0x14, 0x96, 0x00, 0x69, 0xa1,
+ 0x55, 0x1b, 0x00, 0x69, 0xa5, 0x42, 0x0c, 0x00,
+ 0x69, 0xa6, 0x39, 0x3c, 0x00, 0x69, 0xa7, 0x14,
+ 0x93, 0x00, 0x69, 0xa8, 0x4c, 0x05, 0x00, 0x69,
+ 0xab, 0x4c, 0x06, 0x00, 0x69, 0xad, 0x39, 0x3d,
+ 0x00, 0x69, 0xae, 0x14, 0x87, 0x00, 0x69, 0xaf,
+ 0x4c, 0x07, 0x00, 0x69, 0xb0, 0x45, 0xac, 0x00,
+ 0x69, 0xb1, 0x14, 0xa4, 0x00, 0x69, 0xb2, 0x14,
+ 0x86, 0x00, 0x69, 0xb4, 0x14, 0x99, 0x00, 0x69,
+ 0xb7, 0x39, 0x3e, 0x00, 0x69, 0xb8, 0x55, 0x1c,
+ 0x00, 0x69, 0xba, 0x45, 0xad, 0x00, 0x69, 0xbb,
+ 0x14, 0x91, 0x00, 0x69, 0xbc, 0x45, 0xae, 0x00,
+ 0x69, 0xbe, 0x14, 0x8c, 0x00, 0x69, 0xbf, 0x14,
+ 0x89, 0x00, 0x69, 0xc0, 0x45, 0xaf, 0x00, 0x69,
+ 0xc1, 0x14, 0x8a, 0x00, 0x69, 0xc3, 0x14, 0x92,
+ 0x00, 0x69, 0xc5, 0x55, 0x1d, 0x00, 0x69, 0xc7,
+ 0x1d, 0x33, 0x00, 0x69, 0xc8, 0x55, 0x1e, 0x00,
+ 0x69, 0xca, 0x14, 0x8f, 0x00, 0x69, 0xcb, 0x07,
+ 0xcf, 0x00, 0x69, 0xcc, 0x0b, 0xe4, 0x00, 0x69,
+ 0xcd, 0x0a, 0xe6, 0x00, 0x69, 0xce, 0x14, 0x8d,
+ 0x00, 0x69, 0xcf, 0x42, 0x0d, 0x00, 0x69, 0xd0,
+ 0x14, 0x88, 0x00, 0x69, 0xd1, 0x45, 0xb0, 0x00,
+ 0x69, 0xd3, 0x14, 0x8b, 0x00, 0x69, 0xd6, 0x39,
+ 0x3f, 0x00, 0x69, 0xd7, 0x39, 0x40, 0x00, 0x69,
+ 0xd8, 0x0f, 0x37, 0x00, 0x69, 0xd9, 0x0e, 0x98,
+ 0x00, 0x69, 0xdd, 0x14, 0x90, 0x00, 0x69, 0xde,
+ 0x14, 0x9a, 0x00, 0x69, 0xe2, 0x21, 0x35, 0x00,
+ 0x69, 0xe3, 0x45, 0xb4, 0x00, 0x69, 0xe5, 0x4c,
+ 0x08, 0x00, 0x69, 0xe7, 0x14, 0xa2, 0x00, 0x69,
+ 0xe8, 0x14, 0x9b, 0x00, 0x69, 0xe9, 0x42, 0x10,
+ 0x00, 0x69, 0xea, 0x34, 0x11, 0x00, 0x69, 0xeb,
+ 0x14, 0xa8, 0x00, 0x69, 0xed, 0x14, 0xa6, 0x00,
+ 0x69, 0xee, 0x45, 0xb5, 0x00, 0x69, 0xef, 0x45,
+ 0xb6, 0x00, 0x69, 0xf1, 0x4c, 0x09, 0x00, 0x69,
+ 0xf2, 0x14, 0xa1, 0x00, 0x69, 0xf3, 0x45, 0xb7,
+ 0x00, 0x69, 0xf4, 0x45, 0xb9, 0x00, 0x69, 0xf5,
+ 0x42, 0x11, 0x00, 0x69, 0xf6, 0x37, 0x3f, 0x00,
+ 0x69, 0xf9, 0x14, 0xa0, 0x00, 0x69, 0xfb, 0x0b,
+ 0xec, 0x00, 0x69, 0xfd, 0x0a, 0xe7, 0x00, 0x69,
+ 0xfe, 0x45, 0xba, 0x00, 0x69, 0xff, 0x14, 0x9e,
+ 0x00, 0x6a, 0x00, 0x55, 0x20, 0x00, 0x6a, 0x01,
+ 0x39, 0x41, 0x00, 0x6a, 0x02, 0x14, 0x9c, 0x00,
+ 0x6a, 0x03, 0x55, 0x21, 0x00, 0x6a, 0x05, 0x14,
+ 0xa3, 0x00, 0x6a, 0x0a, 0x14, 0xa9, 0x00, 0x6a,
+ 0x0b, 0x0d, 0x89, 0x00, 0x6a, 0x0c, 0x14, 0xaf,
+ 0x00, 0x6a, 0x0f, 0x39, 0x42, 0x00, 0x6a, 0x11,
+ 0x45, 0xbb, 0x00, 0x6a, 0x12, 0x14, 0xaa, 0x00,
+ 0x6a, 0x13, 0x14, 0xad, 0x00, 0x6a, 0x14, 0x14,
+ 0xa7, 0x00, 0x6a, 0x15, 0x39, 0x43, 0x00, 0x6a,
+ 0x17, 0x0b, 0xb2, 0x00, 0x6a, 0x19, 0x0d, 0xaa,
+ 0x00, 0x6a, 0x1a, 0x45, 0xbc, 0x00, 0x6a, 0x1b,
+ 0x14, 0x9d, 0x00, 0x6a, 0x1d, 0x45, 0xbd, 0x00,
+ 0x6a, 0x1e, 0x14, 0xa5, 0x00, 0x6a, 0x1f, 0x09,
+ 0xa8, 0x00, 0x6a, 0x20, 0x55, 0x22, 0x00, 0x6a,
+ 0x21, 0x0e, 0xdb, 0x00, 0x6a, 0x22, 0x14, 0xb9,
+ 0x00, 0x6a, 0x23, 0x14, 0xac, 0x00, 0x6a, 0x24,
+ 0x55, 0x23, 0x00, 0x6a, 0x28, 0x39, 0x44, 0x00,
+ 0x6a, 0x29, 0x07, 0x56, 0x00, 0x6a, 0x2a, 0x05,
+ 0x23, 0x00, 0x6a, 0x2b, 0x05, 0xbd, 0x00, 0x6a,
+ 0x2e, 0x14, 0x94, 0x00, 0x6a, 0x30, 0x21, 0x36,
+ 0x00, 0x6a, 0x32, 0x45, 0xbf, 0x00, 0x6a, 0x33,
+ 0x45, 0xc0, 0x00, 0x6a, 0x34, 0x39, 0x45, 0x00,
+ 0x6a, 0x35, 0x09, 0xa9, 0x00, 0x6a, 0x36, 0x14,
+ 0xb1, 0x00, 0x6a, 0x37, 0x55, 0x24, 0x00, 0x6a,
+ 0x38, 0x14, 0xb8, 0x00, 0x6a, 0x39, 0x09, 0x25,
+ 0x00, 0x6a, 0x3a, 0x05, 0xd0, 0x00, 0x6a, 0x3b,
+ 0x42, 0x13, 0x00, 0x6a, 0x3d, 0x0b, 0x6c, 0x00,
+ 0x6a, 0x3e, 0x39, 0x46, 0x00, 0x6a, 0x3f, 0x45,
+ 0xc1, 0x00, 0x6a, 0x44, 0x14, 0xae, 0x00, 0x6a,
+ 0x45, 0x39, 0x47, 0x00, 0x6a, 0x46, 0x21, 0x38,
+ 0x00, 0x6a, 0x47, 0x14, 0xb3, 0x00, 0x6a, 0x48,
+ 0x14, 0xb7, 0x00, 0x6a, 0x49, 0x45, 0xc2, 0x00,
+ 0x6a, 0x4a, 0x4c, 0x0a, 0x00, 0x6a, 0x4b, 0x06,
+ 0xae, 0x00, 0x6a, 0x4e, 0x45, 0xc4, 0x00, 0x6a,
+ 0x50, 0x39, 0x48, 0x00, 0x6a, 0x51, 0x39, 0x49,
+ 0x00, 0x6a, 0x52, 0x45, 0xc5, 0x00, 0x6a, 0x54,
+ 0x3c, 0x34, 0x00, 0x6a, 0x55, 0x4c, 0x0b, 0x00,
+ 0x6a, 0x56, 0x39, 0x4a, 0x00, 0x6a, 0x58, 0x06,
+ 0x66, 0x00, 0x6a, 0x59, 0x14, 0xb5, 0x00, 0x6a,
+ 0x5b, 0x39, 0x4b, 0x00, 0x6a, 0x5f, 0x06, 0x3b,
+ 0x00, 0x6a, 0x61, 0x0c, 0xa3, 0x00, 0x6a, 0x62,
+ 0x14, 0xb4, 0x00, 0x6a, 0x64, 0x45, 0xc6, 0x00,
+ 0x6a, 0x66, 0x14, 0xb6, 0x00, 0x6a, 0x67, 0x4c,
+ 0x0c, 0x00, 0x6a, 0x6a, 0x55, 0x26, 0x00, 0x6a,
+ 0x6b, 0x21, 0x37, 0x00, 0x6a, 0x71, 0x4c, 0x0d,
+ 0x00, 0x6a, 0x72, 0x14, 0xb0, 0x00, 0x6a, 0x73,
+ 0x21, 0x39, 0x00, 0x6a, 0x78, 0x14, 0xb2, 0x00,
+ 0x6a, 0x7a, 0x45, 0xc3, 0x00, 0x6a, 0x7e, 0x21,
+ 0x3a, 0x00, 0x6a, 0x7f, 0x05, 0xbe, 0x00, 0x6a,
+ 0x80, 0x0b, 0x87, 0x00, 0x6a, 0x81, 0x55, 0x27,
+ 0x00, 0x6a, 0x83, 0x39, 0x4c, 0x00, 0x6a, 0x84,
+ 0x14, 0xbd, 0x00, 0x6a, 0x86, 0x55, 0x28, 0x00,
+ 0x6a, 0x87, 0x55, 0x29, 0x00, 0x6a, 0x89, 0x39,
+ 0x4d, 0x00, 0x6a, 0x8b, 0x45, 0xc8, 0x00, 0x6a,
+ 0x8d, 0x14, 0xbb, 0x00, 0x6a, 0x8e, 0x07, 0x9d,
+ 0x00, 0x6a, 0x90, 0x14, 0xba, 0x00, 0x6a, 0x91,
+ 0x39, 0x4e, 0x00, 0x6a, 0x94, 0x42, 0x15, 0x00,
+ 0x6a, 0x97, 0x14, 0xc0, 0x00, 0x6a, 0x9b, 0x55,
+ 0x2a, 0x00, 0x6a, 0x9c, 0x14, 0x3b, 0x00, 0x6a,
+ 0x9d, 0x39, 0x4f, 0x00, 0x6a, 0x9e, 0x39, 0x50,
+ 0x00, 0x6a, 0x9f, 0x39, 0x51, 0x00, 0x6a, 0xa0,
+ 0x14, 0xbc, 0x00, 0x6a, 0xa1, 0x45, 0xca, 0x00,
+ 0x6a, 0xa2, 0x14, 0xbe, 0x00, 0x6a, 0xa3, 0x14,
+ 0xbf, 0x00, 0x6a, 0xa5, 0x42, 0x16, 0x00, 0x6a,
+ 0xaa, 0x14, 0xcb, 0x00, 0x6a, 0xab, 0x45, 0xcc,
+ 0x00, 0x6a, 0xac, 0x14, 0xc7, 0x00, 0x6a, 0xae,
+ 0x14, 0x50, 0x00, 0x6a, 0xaf, 0x4c, 0x0e, 0x00,
+ 0x6a, 0xb0, 0x55, 0x2b, 0x00, 0x6a, 0xb1, 0x55,
+ 0x2c, 0x00, 0x6a, 0xb3, 0x14, 0xc6, 0x00, 0x6a,
+ 0xb4, 0x55, 0x2d, 0x00, 0x6a, 0xb8, 0x14, 0xc5,
+ 0x00, 0x6a, 0xbb, 0x14, 0xc2, 0x00, 0x6a, 0xbd,
+ 0x45, 0xcd, 0x00, 0x6a, 0xbe, 0x55, 0x2e, 0x00,
+ 0x6a, 0xbf, 0x55, 0x2f, 0x00, 0x6a, 0xc1, 0x14,
+ 0xab, 0x00, 0x6a, 0xc2, 0x14, 0xc4, 0x00, 0x6a,
+ 0xc3, 0x14, 0xc3, 0x00, 0x6a, 0xc6, 0x45, 0xce,
+ 0x00, 0x6a, 0xc8, 0x4c, 0x0f, 0x00, 0x6a, 0xc9,
+ 0x4c, 0x10, 0x00, 0x6a, 0xcc, 0x55, 0x30, 0x00,
+ 0x6a, 0xd0, 0x45, 0xd0, 0x00, 0x6a, 0xd1, 0x14,
+ 0xc9, 0x00, 0x6a, 0xd3, 0x0f, 0xcc, 0x00, 0x6a,
+ 0xd4, 0x45, 0xcf, 0x00, 0x6a, 0xd5, 0x55, 0x31,
+ 0x00, 0x6a, 0xd6, 0x55, 0x32, 0x00, 0x6a, 0xda,
+ 0x14, 0xcc, 0x00, 0x6a, 0xdb, 0x1d, 0xf1, 0x00,
+ 0x6a, 0xdc, 0x39, 0x52, 0x00, 0x6a, 0xdd, 0x45,
+ 0xd1, 0x00, 0x6a, 0xde, 0x14, 0xc8, 0x00, 0x6a,
+ 0xdf, 0x14, 0xca, 0x00, 0x6a, 0xe2, 0x21, 0x3b,
+ 0x00, 0x6a, 0xe4, 0x21, 0x3c, 0x00, 0x6a, 0xe7,
+ 0x39, 0x53, 0x00, 0x6a, 0xe8, 0x0d, 0x3b, 0x00,
+ 0x6a, 0xea, 0x14, 0xcd, 0x00, 0x6a, 0xec, 0x39,
+ 0x54, 0x00, 0x6a, 0xf0, 0x55, 0x33, 0x00, 0x6a,
+ 0xf1, 0x45, 0xd4, 0x00, 0x6a, 0xf2, 0x45, 0xd5,
+ 0x00, 0x6a, 0xf3, 0x45, 0xd6, 0x00, 0x6a, 0xf8,
+ 0x4e, 0xb8, 0x00, 0x6a, 0xfa, 0x14, 0xd1, 0x00,
+ 0x6a, 0xfb, 0x14, 0xce, 0x00, 0x6a, 0xfc, 0x55,
+ 0x34, 0x00, 0x6a, 0xfd, 0x45, 0xd7, 0x00, 0x6b,
+ 0x02, 0x55, 0x35, 0x00, 0x6b, 0x03, 0x4c, 0x11,
+ 0x00, 0x6b, 0x04, 0x34, 0x50, 0x00, 0x6b, 0x05,
+ 0x14, 0xcf, 0x00, 0x6b, 0x06, 0x55, 0x36, 0x00,
+ 0x6b, 0x07, 0x55, 0x37, 0x00, 0x6b, 0x09, 0x55,
+ 0x38, 0x00, 0x6b, 0x0a, 0x14, 0x9f, 0x00, 0x6b,
+ 0x0b, 0x45, 0xd9, 0x00, 0x6b, 0x0f, 0x45, 0xda,
+ 0x00, 0x6b, 0x10, 0x45, 0xdb, 0x00, 0x6b, 0x11,
+ 0x45, 0xdc, 0x00, 0x6b, 0x12, 0x14, 0xd2, 0x00,
+ 0x6b, 0x16, 0x14, 0xd3, 0x00, 0x6b, 0x17, 0x45,
+ 0xde, 0x00, 0x6b, 0x1b, 0x42, 0x18, 0x00, 0x6b,
+ 0x1d, 0x04, 0xd7, 0x00, 0x6b, 0x1e, 0x39, 0x55,
+ 0x00, 0x6b, 0x1f, 0x14, 0xd5, 0x00, 0x6b, 0x20,
+ 0x07, 0x3d, 0x00, 0x6b, 0x21, 0x08, 0xcd, 0x00,
+ 0x6b, 0x23, 0x06, 0xcd, 0x00, 0x6b, 0x24, 0x39,
+ 0x56, 0x00, 0x6b, 0x27, 0x05, 0x24, 0x00, 0x6b,
+ 0x28, 0x55, 0x39, 0x00, 0x6b, 0x2b, 0x55, 0x3a,
+ 0x00, 0x6b, 0x2c, 0x42, 0x19, 0x00, 0x6b, 0x2f,
+ 0x45, 0xe0, 0x00, 0x6b, 0x32, 0x0f, 0x49, 0x00,
+ 0x6b, 0x35, 0x39, 0x57, 0x00, 0x6b, 0x36, 0x55,
+ 0x3b, 0x00, 0x6b, 0x37, 0x14, 0xd7, 0x00, 0x6b,
+ 0x38, 0x14, 0xd6, 0x00, 0x6b, 0x39, 0x14, 0xd9,
+ 0x00, 0x6b, 0x3a, 0x06, 0x57, 0x00, 0x6b, 0x3b,
+ 0x4c, 0x12, 0x00, 0x6b, 0x3d, 0x06, 0xce, 0x00,
+ 0x6b, 0x3e, 0x05, 0xfa, 0x00, 0x6b, 0x3f, 0x4c,
+ 0x13, 0x00, 0x6b, 0x43, 0x14, 0xdc, 0x00, 0x6b,
+ 0x46, 0x39, 0x58, 0x00, 0x6b, 0x47, 0x14, 0xdb,
+ 0x00, 0x6b, 0x49, 0x14, 0xdd, 0x00, 0x6b, 0x4a,
+ 0x45, 0xe1, 0x00, 0x6b, 0x4c, 0x05, 0x4e, 0x00,
+ 0x6b, 0x4d, 0x55, 0x3c, 0x00, 0x6b, 0x4e, 0x0b,
+ 0x75, 0x00, 0x6b, 0x50, 0x14, 0xde, 0x00, 0x6b,
+ 0x52, 0x55, 0x3d, 0x00, 0x6b, 0x53, 0x05, 0xfb,
+ 0x00, 0x6b, 0x54, 0x14, 0xe0, 0x00, 0x6b, 0x56,
+ 0x39, 0x59, 0x00, 0x6b, 0x58, 0x45, 0xe2, 0x00,
+ 0x6b, 0x59, 0x14, 0xdf, 0x00, 0x6b, 0x5b, 0x14,
+ 0xe1, 0x00, 0x6b, 0x5d, 0x55, 0x3e, 0x00, 0x6b,
+ 0x5f, 0x14, 0xe2, 0x00, 0x6b, 0x60, 0x39, 0x5a,
+ 0x00, 0x6b, 0x61, 0x14, 0xe3, 0x00, 0x6b, 0x62,
+ 0x08, 0xad, 0x00, 0x6b, 0x63, 0x0a, 0x59, 0x00,
+ 0x6b, 0x64, 0x08, 0x11, 0x00, 0x6b, 0x65, 0x34,
+ 0x4a, 0x00, 0x6b, 0x66, 0x0d, 0xe2, 0x00, 0x6b,
+ 0x67, 0x42, 0x1a, 0x00, 0x6b, 0x69, 0x0e, 0x32,
+ 0x00, 0x6b, 0x6a, 0x0f, 0xea, 0x00, 0x6b, 0x6b,
+ 0x55, 0x3f, 0x00, 0x6b, 0x6c, 0x45, 0xe3, 0x00,
+ 0x6b, 0x6e, 0x55, 0x40, 0x00, 0x6b, 0x6f, 0x08,
+ 0xc3, 0x00, 0x6b, 0x70, 0x55, 0x41, 0x00, 0x6b,
+ 0x72, 0x35, 0xd9, 0x00, 0x6b, 0x73, 0x08, 0x40,
+ 0x00, 0x6b, 0x74, 0x0f, 0xba, 0x00, 0x6b, 0x75,
+ 0x45, 0xe4, 0x00, 0x6b, 0x77, 0x34, 0x56, 0x00,
+ 0x6b, 0x78, 0x14, 0xe4, 0x00, 0x6b, 0x79, 0x14,
+ 0xe5, 0x00, 0x6b, 0x7a, 0x45, 0xe5, 0x00, 0x6b,
+ 0x7b, 0x08, 0xae, 0x00, 0x6b, 0x7d, 0x4c, 0x14,
+ 0x00, 0x6b, 0x7e, 0x4c, 0x15, 0x00, 0x6b, 0x7f,
+ 0x14, 0xe6, 0x00, 0x6b, 0x80, 0x14, 0xe7, 0x00,
+ 0x6b, 0x81, 0x45, 0xe6, 0x00, 0x6b, 0x82, 0x39,
+ 0x5b, 0x00, 0x6b, 0x83, 0x14, 0xe9, 0x00, 0x6b,
+ 0x84, 0x14, 0xe8, 0x00, 0x6b, 0x85, 0x55, 0x42,
+ 0x00, 0x6b, 0x86, 0x0e, 0x86, 0x00, 0x6b, 0x89,
+ 0x09, 0x68, 0x00, 0x6b, 0x8a, 0x09, 0x18, 0x00,
+ 0x6b, 0x8b, 0x08, 0x92, 0x00, 0x6b, 0x8d, 0x14,
+ 0xea, 0x00, 0x6b, 0x95, 0x14, 0xec, 0x00, 0x6b,
+ 0x96, 0x09, 0xe9, 0x00, 0x6b, 0x97, 0x55, 0x43,
+ 0x00, 0x6b, 0x98, 0x14, 0xeb, 0x00, 0x6b, 0x9b,
+ 0x45, 0xe7, 0x00, 0x6b, 0x9e, 0x14, 0xed, 0x00,
+ 0x6b, 0x9f, 0x55, 0x44, 0x00, 0x6b, 0xa0, 0x55,
+ 0x45, 0x00, 0x6b, 0xa2, 0x55, 0x46, 0x00, 0x6b,
+ 0xa3, 0x55, 0x47, 0x00, 0x6b, 0xa4, 0x14, 0xee,
+ 0x00, 0x6b, 0xa8, 0x55, 0x48, 0x00, 0x6b, 0xa9,
+ 0x42, 0x1b, 0x00, 0x6b, 0xaa, 0x14, 0xef, 0x00,
+ 0x6b, 0xab, 0x14, 0xf0, 0x00, 0x6b, 0xac, 0x55,
+ 0x49, 0x00, 0x6b, 0xad, 0x42, 0x1c, 0x00, 0x6b,
+ 0xae, 0x45, 0xe8, 0x00, 0x6b, 0xaf, 0x14, 0xf1,
+ 0x00, 0x6b, 0xb0, 0x4c, 0x16, 0x00, 0x6b, 0xb1,
+ 0x14, 0xf3, 0x00, 0x6b, 0xb2, 0x14, 0xf2, 0x00,
+ 0x6b, 0xb3, 0x14, 0xf4, 0x00, 0x6b, 0xb4, 0x05,
+ 0x25, 0x00, 0x6b, 0xb5, 0x0b, 0x88, 0x00, 0x6b,
+ 0xb7, 0x14, 0xf5, 0x00, 0x6b, 0xb8, 0x55, 0x4a,
+ 0x00, 0x6b, 0xb9, 0x55, 0x4b, 0x00, 0x6b, 0xba,
+ 0x34, 0x20, 0x00, 0x6b, 0xbb, 0x05, 0xaa, 0x00,
+ 0x6b, 0xbc, 0x14, 0xf6, 0x00, 0x6b, 0xbd, 0x45,
+ 0xea, 0x00, 0x6b, 0xbe, 0x39, 0x5c, 0x00, 0x6b,
+ 0xbf, 0x0c, 0x3c, 0x00, 0x6b, 0xc0, 0x11, 0x9d,
+ 0x00, 0x6b, 0xc3, 0x55, 0x4c, 0x00, 0x6b, 0xc4,
+ 0x55, 0x4d, 0x00, 0x6b, 0xc5, 0x06, 0x3d, 0x00,
+ 0x6b, 0xc6, 0x14, 0xf7, 0x00, 0x6b, 0xc7, 0x45,
+ 0xeb, 0x00, 0x6b, 0xc8, 0x45, 0xec, 0x00, 0x6b,
+ 0xc9, 0x45, 0xed, 0x00, 0x6b, 0xcb, 0x14, 0xf8,
+ 0x00, 0x6b, 0xcc, 0x37, 0x44, 0x00, 0x6b, 0xcd,
+ 0x0e, 0x3c, 0x00, 0x6b, 0xce, 0x0e, 0x96, 0x00,
+ 0x6b, 0xcf, 0x34, 0x4c, 0x00, 0x6b, 0xd2, 0x0c,
+ 0x9f, 0x00, 0x6b, 0xd3, 0x14, 0xf9, 0x00, 0x6b,
+ 0xd4, 0x0d, 0x7a, 0x00, 0x6b, 0xd6, 0x21, 0x3d,
+ 0x00, 0x6b, 0xd7, 0x42, 0x1d, 0x00, 0x6b, 0xd8,
+ 0x0d, 0x8f, 0x00, 0x6b, 0xda, 0x45, 0xee, 0x00,
+ 0x6b, 0xdb, 0x0e, 0xdf, 0x00, 0x6b, 0xdf, 0x14,
+ 0xfa, 0x00, 0x6b, 0xe1, 0x39, 0x5d, 0x00, 0x6b,
+ 0xe3, 0x55, 0x4e, 0x00, 0x6b, 0xe6, 0x45, 0xef,
+ 0x00, 0x6b, 0xe7, 0x45, 0xf0, 0x00, 0x6b, 0xeb,
+ 0x14, 0xfc, 0x00, 0x6b, 0xec, 0x14, 0xfb, 0x00,
+ 0x6b, 0xee, 0x45, 0xf1, 0x00, 0x6b, 0xef, 0x14,
+ 0xfe, 0x00, 0x6b, 0xf1, 0x39, 0x5e, 0x00, 0x6b,
+ 0xf3, 0x14, 0xfd, 0x00, 0x6b, 0xf7, 0x4c, 0x17,
+ 0x00, 0x6b, 0xf9, 0x4c, 0x18, 0x00, 0x6b, 0xff,
+ 0x42, 0x1e, 0x00, 0x6c, 0x02, 0x45, 0xf2, 0x00,
+ 0x6c, 0x04, 0x4c, 0x19, 0x00, 0x6c, 0x05, 0x42,
+ 0x1f, 0x00, 0x6c, 0x08, 0x15, 0x00, 0x00, 0x6c,
+ 0x09, 0x4c, 0x1a, 0x00, 0x6c, 0x0a, 0x45, 0xf3,
+ 0x00, 0x6c, 0x0d, 0x4c, 0x1b, 0x00, 0x6c, 0x0e,
+ 0x45, 0xf4, 0x00, 0x6c, 0x0f, 0x08, 0xaf, 0x00,
+ 0x6c, 0x10, 0x39, 0x5f, 0x00, 0x6c, 0x11, 0x0e,
+ 0xbd, 0x00, 0x6c, 0x12, 0x55, 0x4f, 0x00, 0x6c,
+ 0x13, 0x15, 0x01, 0x00, 0x6c, 0x14, 0x15, 0x02,
+ 0x00, 0x6c, 0x17, 0x06, 0x3e, 0x00, 0x6c, 0x19,
+ 0x55, 0x50, 0x00, 0x6c, 0x1b, 0x15, 0x03, 0x00,
+ 0x6c, 0x1f, 0x55, 0x51, 0x00, 0x6c, 0x23, 0x15,
+ 0x05, 0x00, 0x6c, 0x24, 0x15, 0x04, 0x00, 0x6c,
+ 0x26, 0x55, 0x52, 0x00, 0x6c, 0x27, 0x55, 0x53,
+ 0x00, 0x6c, 0x28, 0x55, 0x54, 0x00, 0x6c, 0x2c,
+ 0x4c, 0x1c, 0x00, 0x6c, 0x2e, 0x55, 0x55, 0x00,
+ 0x6c, 0x33, 0x39, 0x60, 0x00, 0x6c, 0x34, 0x0a,
+ 0x2b, 0x00, 0x6c, 0x35, 0x39, 0x61, 0x00, 0x6c,
+ 0x36, 0x45, 0xf5, 0x00, 0x6c, 0x37, 0x0d, 0xab,
+ 0x00, 0x6c, 0x38, 0x04, 0xec, 0x00, 0x6c, 0x3a,
+ 0x4f, 0x55, 0x00, 0x6c, 0x3b, 0x55, 0x56, 0x00,
+ 0x6c, 0x3e, 0x0d, 0x59, 0x00, 0x6c, 0x3f, 0x21,
+ 0x3e, 0x00, 0x6c, 0x40, 0x0c, 0x11, 0x00, 0x6c,
+ 0x41, 0x09, 0x4b, 0x00, 0x6c, 0x42, 0x06, 0x7b,
+ 0x00, 0x6c, 0x4a, 0x4c, 0x1d, 0x00, 0x6c, 0x4b,
+ 0x55, 0x57, 0x00, 0x6c, 0x4d, 0x45, 0xf7, 0x00,
+ 0x6c, 0x4e, 0x0d, 0x5a, 0x00, 0x6c, 0x4f, 0x55,
+ 0x58, 0x00, 0x6c, 0x50, 0x08, 0xda, 0x00, 0x6c,
+ 0x52, 0x4c, 0x1e, 0x00, 0x6c, 0x54, 0x4c, 0x1f,
+ 0x00, 0x6c, 0x55, 0x15, 0x07, 0x00, 0x6c, 0x57,
+ 0x05, 0xfc, 0x00, 0x6c, 0x59, 0x39, 0x63, 0x00,
+ 0x6c, 0x5a, 0x05, 0x1a, 0x00, 0x6c, 0x5b, 0x45,
+ 0xf8, 0x00, 0x6c, 0x5c, 0x21, 0x3f, 0x00, 0x6c,
+ 0x5d, 0x0c, 0xca, 0x00, 0x6c, 0x5e, 0x15, 0x06,
+ 0x00, 0x6c, 0x5f, 0x07, 0xd0, 0x00, 0x6c, 0x60,
+ 0x0b, 0x91, 0x00, 0x6c, 0x62, 0x15, 0x08, 0x00,
+ 0x6c, 0x67, 0x46, 0x0a, 0x00, 0x6c, 0x68, 0x15,
+ 0x10, 0x00, 0x6c, 0x6a, 0x15, 0x09, 0x00, 0x6c,
+ 0x6b, 0x55, 0x59, 0x00, 0x6c, 0x6d, 0x45, 0xf9,
+ 0x00, 0x6c, 0x6f, 0x21, 0x41, 0x00, 0x6c, 0x70,
+ 0x0b, 0x21, 0x00, 0x6c, 0x72, 0x06, 0x7c, 0x00,
+ 0x6c, 0x73, 0x15, 0x11, 0x00, 0x6c, 0x74, 0x42,
+ 0x20, 0x00, 0x6c, 0x76, 0x39, 0x64, 0x00, 0x6c,
+ 0x78, 0x55, 0x5a, 0x00, 0x6c, 0x79, 0x4c, 0x20,
+ 0x00, 0x6c, 0x7a, 0x07, 0x3e, 0x00, 0x6c, 0x7b,
+ 0x39, 0x65, 0x00, 0x6c, 0x7d, 0x06, 0x3f, 0x00,
+ 0x6c, 0x7e, 0x15, 0x0f, 0x00, 0x6c, 0x81, 0x15,
+ 0x0d, 0x00, 0x6c, 0x82, 0x15, 0x0a, 0x00, 0x6c,
+ 0x83, 0x0f, 0x4a, 0x00, 0x6c, 0x84, 0x45, 0xfa,
+ 0x00, 0x6c, 0x85, 0x39, 0x66, 0x00, 0x6c, 0x86,
+ 0x21, 0x40, 0x00, 0x6c, 0x87, 0x55, 0x5b, 0x00,
+ 0x6c, 0x88, 0x0b, 0xdc, 0x00, 0x6c, 0x89, 0x45,
+ 0xfb, 0x00, 0x6c, 0x8c, 0x0c, 0xb1, 0x00, 0x6c,
+ 0x8d, 0x15, 0x0b, 0x00, 0x6c, 0x90, 0x15, 0x13,
+ 0x00, 0x6c, 0x92, 0x15, 0x12, 0x00, 0x6c, 0x93,
+ 0x06, 0xf9, 0x00, 0x6c, 0x94, 0x45, 0xfd, 0x00,
+ 0x6c, 0x95, 0x39, 0x67, 0x00, 0x6c, 0x96, 0x05,
+ 0x2d, 0x00, 0x6c, 0x97, 0x45, 0xfe, 0x00, 0x6c,
+ 0x98, 0x42, 0x21, 0x00, 0x6c, 0x99, 0x08, 0x2b,
+ 0x00, 0x6c, 0x9a, 0x15, 0x0c, 0x00, 0x6c, 0x9b,
+ 0x15, 0x0e, 0x00, 0x6c, 0x9c, 0x39, 0x68, 0x00,
+ 0x6c, 0x9f, 0x55, 0x5c, 0x00, 0x6c, 0xa1, 0x0e,
+ 0x85, 0x00, 0x6c, 0xa2, 0x0b, 0x54, 0x00, 0x6c,
+ 0xaa, 0x37, 0x49, 0x00, 0x6c, 0xab, 0x0e, 0xa5,
+ 0x00, 0x6c, 0xac, 0x4c, 0x21, 0x00, 0x6c, 0xad,
+ 0x45, 0xff, 0x00, 0x6c, 0xae, 0x15, 0x1b, 0x00,
+ 0x6c, 0xb0, 0x55, 0x5d, 0x00, 0x6c, 0xb1, 0x15,
+ 0x1c, 0x00, 0x6c, 0xb2, 0x55, 0x5e, 0x00, 0x6c,
+ 0xb3, 0x05, 0x4f, 0x00, 0x6c, 0xb4, 0x4c, 0x22,
+ 0x00, 0x6c, 0xb8, 0x0d, 0xf8, 0x00, 0x6c, 0xb9,
+ 0x0f, 0x09, 0x00, 0x6c, 0xba, 0x15, 0x1e, 0x00,
+ 0x6c, 0xbb, 0x08, 0xcf, 0x00, 0x6c, 0xbc, 0x09,
+ 0xaa, 0x00, 0x6c, 0xbd, 0x15, 0x17, 0x00, 0x6c,
+ 0xbe, 0x15, 0x1d, 0x00, 0x6c, 0xbf, 0x35, 0x58,
+ 0x00, 0x6c, 0xc1, 0x06, 0xaf, 0x00, 0x6c, 0xc2,
+ 0x46, 0x00, 0x00, 0x6c, 0xc4, 0x15, 0x14, 0x00,
+ 0x6c, 0xc5, 0x15, 0x19, 0x00, 0x6c, 0xc6, 0x42,
+ 0x23, 0x00, 0x6c, 0xc9, 0x0a, 0x98, 0x00, 0x6c,
+ 0xca, 0x0d, 0x27, 0x00, 0x6c, 0xcc, 0x0d, 0x7b,
+ 0x00, 0x6c, 0xcd, 0x55, 0x5f, 0x00, 0x6c, 0xcf,
+ 0x55, 0x60, 0x00, 0x6c, 0xd0, 0x39, 0x69, 0x00,
+ 0x6c, 0xd1, 0x55, 0x61, 0x00, 0x6c, 0xd2, 0x4c,
+ 0x23, 0x00, 0x6c, 0xd3, 0x15, 0x16, 0x00, 0x6c,
+ 0xd4, 0x39, 0x6a, 0x00, 0x6c, 0xd5, 0x0e, 0x4f,
+ 0x00, 0x6c, 0xd6, 0x39, 0x6b, 0x00, 0x6c, 0xd7,
+ 0x15, 0x18, 0x00, 0x6c, 0xd9, 0x15, 0x21, 0x00,
+ 0x6c, 0xda, 0x21, 0x42, 0x00, 0x6c, 0xdb, 0x15,
+ 0x1f, 0x00, 0x6c, 0xdc, 0x46, 0x02, 0x00, 0x6c,
+ 0xdd, 0x15, 0x1a, 0x00, 0x6c, 0xe0, 0x39, 0x6c,
+ 0x00, 0x6c, 0xe1, 0x0e, 0x50, 0x00, 0x6c, 0xe2,
+ 0x0c, 0xfe, 0x00, 0x6c, 0xe3, 0x06, 0x7d, 0x00,
+ 0x6c, 0xe5, 0x0c, 0x1f, 0x00, 0x6c, 0xe7, 0x55,
+ 0x62, 0x00, 0x6c, 0xe8, 0x0b, 0xab, 0x00, 0x6c,
+ 0xe9, 0x46, 0x03, 0x00, 0x6c, 0xea, 0x15, 0x22,
+ 0x00, 0x6c, 0xeb, 0x39, 0x6d, 0x00, 0x6c, 0xec,
+ 0x39, 0x6e, 0x00, 0x6c, 0xed, 0x46, 0x04, 0x00,
+ 0x6c, 0xee, 0x39, 0x6f, 0x00, 0x6c, 0xef, 0x15,
+ 0x20, 0x00, 0x6c, 0xf0, 0x0b, 0x39, 0x00, 0x6c,
+ 0xf1, 0x15, 0x15, 0x00, 0x6c, 0xf2, 0x55, 0x63,
+ 0x00, 0x6c, 0xf3, 0x04, 0xed, 0x00, 0x6c, 0xf4,
+ 0x55, 0x64, 0x00, 0x6c, 0xfb, 0x42, 0x22, 0x00,
+ 0x6d, 0x00, 0x46, 0x06, 0x00, 0x6d, 0x01, 0x3c,
+ 0x35, 0x00, 0x6d, 0x04, 0x21, 0x43, 0x00, 0x6d,
+ 0x07, 0x55, 0x65, 0x00, 0x6d, 0x0a, 0x39, 0x70,
+ 0x00, 0x6d, 0x0b, 0x0f, 0x38, 0x00, 0x6d, 0x0c,
+ 0x15, 0x2d, 0x00, 0x6d, 0x0e, 0x39, 0x71, 0x00,
+ 0x6d, 0x0f, 0x55, 0x66, 0x00, 0x6d, 0x11, 0x39,
+ 0x72, 0x00, 0x6d, 0x12, 0x15, 0x2c, 0x00, 0x6d,
+ 0x13, 0x55, 0x67, 0x00, 0x6d, 0x17, 0x0a, 0x9a,
+ 0x00, 0x6d, 0x19, 0x15, 0x29, 0x00, 0x6d, 0x1a,
+ 0x55, 0x68, 0x00, 0x6d, 0x1b, 0x0f, 0x56, 0x00,
+ 0x6d, 0x1e, 0x0c, 0x8e, 0x00, 0x6d, 0x1f, 0x15,
+ 0x23, 0x00, 0x6d, 0x24, 0x46, 0x07, 0x00, 0x6d,
+ 0x25, 0x0b, 0xe1, 0x00, 0x6d, 0x26, 0x46, 0x08,
+ 0x00, 0x6d, 0x27, 0x46, 0x09, 0x00, 0x6d, 0x28,
+ 0x55, 0x69, 0x00, 0x6d, 0x29, 0x04, 0xee, 0x00,
+ 0x6d, 0x2a, 0x07, 0xd1, 0x00, 0x6d, 0x2b, 0x15,
+ 0x26, 0x00, 0x6d, 0x2e, 0x39, 0x73, 0x00, 0x6d,
+ 0x2f, 0x46, 0x0b, 0x00, 0x6d, 0x31, 0x42, 0x24,
+ 0x00, 0x6d, 0x32, 0x09, 0x31, 0x00, 0x6d, 0x33,
+ 0x15, 0x2b, 0x00, 0x6d, 0x34, 0x46, 0x1e, 0x00,
+ 0x6d, 0x35, 0x15, 0x2a, 0x00, 0x6d, 0x36, 0x15,
+ 0x25, 0x00, 0x6d, 0x38, 0x15, 0x28, 0x00, 0x6d,
+ 0x39, 0x42, 0x25, 0x00, 0x6d, 0x3b, 0x05, 0xc6,
+ 0x00, 0x6d, 0x3c, 0x46, 0x0c, 0x00, 0x6d, 0x3d,
+ 0x15, 0x27, 0x00, 0x6d, 0x3e, 0x0c, 0xff, 0x00,
+ 0x6d, 0x3f, 0x42, 0x26, 0x00, 0x6d, 0x41, 0x0f,
+ 0x76, 0x00, 0x6d, 0x44, 0x09, 0xdc, 0x00, 0x6d,
+ 0x45, 0x0a, 0x99, 0x00, 0x6d, 0x57, 0x39, 0x74,
+ 0x00, 0x6d, 0x58, 0x42, 0x27, 0x00, 0x6d, 0x59,
+ 0x15, 0x33, 0x00, 0x6d, 0x5a, 0x15, 0x31, 0x00,
+ 0x6d, 0x5b, 0x46, 0x0d, 0x00, 0x6d, 0x5c, 0x0d,
+ 0xbf, 0x00, 0x6d, 0x5e, 0x39, 0x75, 0x00, 0x6d,
+ 0x5f, 0x55, 0x6a, 0x00, 0x6d, 0x60, 0x46, 0x0e,
+ 0x00, 0x6d, 0x61, 0x4c, 0x24, 0x00, 0x6d, 0x63,
+ 0x15, 0x2e, 0x00, 0x6d, 0x64, 0x15, 0x30, 0x00,
+ 0x6d, 0x65, 0x39, 0x76, 0x00, 0x6d, 0x66, 0x04,
+ 0xdc, 0x00, 0x6d, 0x67, 0x55, 0x6b, 0x00, 0x6d,
+ 0x69, 0x07, 0xd2, 0x00, 0x6d, 0x6a, 0x0f, 0xd8,
+ 0x00, 0x6d, 0x6c, 0x05, 0x9b, 0x00, 0x6d, 0x6e,
+ 0x0d, 0xd4, 0x00, 0x6d, 0x6f, 0x21, 0x45, 0x00,
+ 0x6d, 0x70, 0x46, 0x0f, 0x00, 0x6d, 0x74, 0x0f,
+ 0x4b, 0x00, 0x6d, 0x77, 0x34, 0x0f, 0x00, 0x6d,
+ 0x78, 0x0a, 0x01, 0x00, 0x6d, 0x79, 0x15, 0x32,
+ 0x00, 0x6d, 0x7c, 0x4c, 0x25, 0x00, 0x6d, 0x80,
+ 0x46, 0x10, 0x00, 0x6d, 0x81, 0x46, 0x11, 0x00,
+ 0x6d, 0x82, 0x39, 0x77, 0x00, 0x6d, 0x85, 0x15,
+ 0x37, 0x00, 0x6d, 0x87, 0x21, 0x44, 0x00, 0x6d,
+ 0x88, 0x09, 0xab, 0x00, 0x6d, 0x89, 0x34, 0x2a,
+ 0x00, 0x6d, 0x8a, 0x46, 0x12, 0x00, 0x6d, 0x8c,
+ 0x0f, 0x1a, 0x00, 0x6d, 0x8d, 0x46, 0x13, 0x00,
+ 0x6d, 0x8e, 0x15, 0x34, 0x00, 0x6d, 0x91, 0x46,
+ 0x14, 0x00, 0x6d, 0x92, 0x55, 0x6c, 0x00, 0x6d,
+ 0x93, 0x15, 0x2f, 0x00, 0x6d, 0x94, 0x42, 0x28,
+ 0x00, 0x6d, 0x95, 0x15, 0x35, 0x00, 0x6d, 0x96,
+ 0x21, 0x46, 0x00, 0x6d, 0x97, 0x55, 0x6d, 0x00,
+ 0x6d, 0x98, 0x46, 0x15, 0x00, 0x6d, 0x99, 0x0f,
+ 0xa6, 0x00, 0x6d, 0x9b, 0x0c, 0x6d, 0x00, 0x6d,
+ 0x9c, 0x0c, 0x9a, 0x00, 0x6d, 0xaa, 0x42, 0x29,
+ 0x00, 0x6d, 0xab, 0x46, 0x1a, 0x00, 0x6d, 0xac,
+ 0x21, 0x47, 0x00, 0x6d, 0xae, 0x46, 0x1b, 0x00,
+ 0x6d, 0xaf, 0x05, 0x94, 0x00, 0x6d, 0xb2, 0x04,
+ 0xf7, 0x00, 0x6d, 0xb4, 0x46, 0x1c, 0x00, 0x6d,
+ 0xb5, 0x15, 0x3b, 0x00, 0x6d, 0xb7, 0x55, 0x6e,
+ 0x00, 0x6d, 0xb8, 0x15, 0x3e, 0x00, 0x6d, 0xb9,
+ 0x4c, 0x26, 0x00, 0x6d, 0xbc, 0x0f, 0x8b, 0x00,
+ 0x6d, 0xbd, 0x55, 0x6f, 0x00, 0x6d, 0xbf, 0x39,
+ 0x78, 0x00, 0x6d, 0xc0, 0x0f, 0x4e, 0x00, 0x6d,
+ 0xc2, 0x46, 0x1d, 0x00, 0x6d, 0xc4, 0x39, 0x79,
+ 0x00, 0x6d, 0xc5, 0x15, 0x45, 0x00, 0x6d, 0xc6,
+ 0x15, 0x3f, 0x00, 0x6d, 0xc7, 0x15, 0x3c, 0x00,
+ 0x6d, 0xc8, 0x46, 0x1f, 0x00, 0x6d, 0xca, 0x39,
+ 0x7a, 0x00, 0x6d, 0xcb, 0x0f, 0x9c, 0x00, 0x6d,
+ 0xcc, 0x15, 0x42, 0x00, 0x6d, 0xce, 0x46, 0x20,
+ 0x00, 0x6d, 0xcf, 0x21, 0x48, 0x00, 0x6d, 0xd0,
+ 0x3c, 0x36, 0x00, 0x6d, 0xd1, 0x09, 0x54, 0x00,
+ 0x6d, 0xd2, 0x15, 0x44, 0x00, 0x6d, 0xd5, 0x15,
+ 0x49, 0x00, 0x6d, 0xd6, 0x39, 0x7b, 0x00, 0x6d,
+ 0xd8, 0x0c, 0x6b, 0x00, 0x6d, 0xd9, 0x15, 0x47,
+ 0x00, 0x6d, 0xda, 0x34, 0x53, 0x00, 0x6d, 0xdb,
+ 0x42, 0x2a, 0x00, 0x6d, 0xdd, 0x42, 0x2b, 0x00,
+ 0x6d, 0xde, 0x15, 0x41, 0x00, 0x6d, 0xdf, 0x46,
+ 0x21, 0x00, 0x6d, 0xe0, 0x55, 0x70, 0x00, 0x6d,
+ 0xe1, 0x0b, 0x76, 0x00, 0x6d, 0xe2, 0x55, 0x71,
+ 0x00, 0x6d, 0xe4, 0x15, 0x48, 0x00, 0x6d, 0xe5,
+ 0x55, 0x72, 0x00, 0x6d, 0xe6, 0x15, 0x3d, 0x00,
+ 0x6d, 0xe8, 0x15, 0x43, 0x00, 0x6d, 0xe9, 0x39,
+ 0x7c, 0x00, 0x6d, 0xea, 0x15, 0x4a, 0x00, 0x6d,
+ 0xeb, 0x04, 0xc0, 0x00, 0x6d, 0xec, 0x15, 0x40,
+ 0x00, 0x6d, 0xee, 0x15, 0x4b, 0x00, 0x6d, 0xef,
+ 0x55, 0x73, 0x00, 0x6d, 0xf0, 0x4c, 0x27, 0x00,
+ 0x6d, 0xf1, 0x0a, 0x02, 0x00, 0x6d, 0xf2, 0x21,
+ 0x4a, 0x00, 0x6d, 0xf3, 0x09, 0x69, 0x00, 0x6d,
+ 0xf4, 0x55, 0x74, 0x00, 0x6d, 0xf5, 0x0d, 0xf5,
+ 0x00, 0x6d, 0xf6, 0x46, 0x22, 0x00, 0x6d, 0xf7,
+ 0x08, 0x1e, 0x00, 0x6d, 0xf8, 0x21, 0x49, 0x00,
+ 0x6d, 0xf9, 0x15, 0x38, 0x00, 0x6d, 0xfa, 0x15,
+ 0x46, 0x00, 0x6d, 0xfb, 0x0c, 0x34, 0x00, 0x6d,
+ 0xfc, 0x21, 0x4b, 0x00, 0x6e, 0x00, 0x55, 0x75,
+ 0x00, 0x6e, 0x04, 0x55, 0x76, 0x00, 0x6e, 0x05,
+ 0x0a, 0x5a, 0x00, 0x6e, 0x07, 0x05, 0xc7, 0x00,
+ 0x6e, 0x08, 0x08, 0x41, 0x00, 0x6e, 0x09, 0x09,
+ 0xac, 0x00, 0x6e, 0x0a, 0x15, 0x3a, 0x00, 0x6e,
+ 0x0b, 0x09, 0x4c, 0x00, 0x6e, 0x13, 0x07, 0x22,
+ 0x00, 0x6e, 0x15, 0x15, 0x39, 0x00, 0x6e, 0x17,
+ 0x37, 0x46, 0x00, 0x6e, 0x19, 0x15, 0x4f, 0x00,
+ 0x6e, 0x1a, 0x1e, 0x14, 0x00, 0x6e, 0x1b, 0x07,
+ 0x6e, 0x00, 0x6e, 0x1d, 0x15, 0x5e, 0x00, 0x6e,
+ 0x1e, 0x46, 0x24, 0x00, 0x6e, 0x1f, 0x15, 0x58,
+ 0x00, 0x6e, 0x20, 0x06, 0x8e, 0x00, 0x6e, 0x21,
+ 0x0c, 0x49, 0x00, 0x6e, 0x22, 0x39, 0x7d, 0x00,
+ 0x6e, 0x23, 0x15, 0x53, 0x00, 0x6e, 0x24, 0x15,
+ 0x5c, 0x00, 0x6e, 0x25, 0x04, 0x73, 0x00, 0x6e,
+ 0x26, 0x04, 0xd4, 0x00, 0x6e, 0x27, 0x21, 0x4e,
+ 0x00, 0x6e, 0x29, 0x05, 0x39, 0x00, 0x6e, 0x2b,
+ 0x15, 0x55, 0x00, 0x6e, 0x2c, 0x0b, 0x0c, 0x00,
+ 0x6e, 0x2d, 0x15, 0x4c, 0x00, 0x6e, 0x2e, 0x15,
+ 0x4e, 0x00, 0x6e, 0x2f, 0x07, 0xd3, 0x00, 0x6e,
+ 0x32, 0x46, 0x26, 0x00, 0x6e, 0x34, 0x34, 0x12,
+ 0x00, 0x6e, 0x36, 0x46, 0x23, 0x00, 0x6e, 0x38,
+ 0x15, 0x5f, 0x00, 0x6e, 0x39, 0x21, 0x4c, 0x00,
+ 0x6e, 0x3a, 0x15, 0x5a, 0x00, 0x6e, 0x3b, 0x55,
+ 0x77, 0x00, 0x6e, 0x3c, 0x21, 0x4f, 0x00, 0x6e,
+ 0x3e, 0x15, 0x52, 0x00, 0x6e, 0x42, 0x3c, 0x37,
+ 0x00, 0x6e, 0x43, 0x15, 0x59, 0x00, 0x6e, 0x44,
+ 0x42, 0x2c, 0x00, 0x6e, 0x45, 0x4c, 0x28, 0x00,
+ 0x6e, 0x48, 0x46, 0x27, 0x00, 0x6e, 0x49, 0x46,
+ 0x28, 0x00, 0x6e, 0x4a, 0x0e, 0xb7, 0x00, 0x6e,
+ 0x4b, 0x46, 0x29, 0x00, 0x6e, 0x4c, 0x46, 0x2a,
+ 0x00, 0x6e, 0x4d, 0x15, 0x57, 0x00, 0x6e, 0x4e,
+ 0x15, 0x5b, 0x00, 0x6e, 0x4f, 0x46, 0x2b, 0x00,
+ 0x6e, 0x51, 0x39, 0x7e, 0x00, 0x6e, 0x52, 0x55,
+ 0x78, 0x00, 0x6e, 0x53, 0x46, 0x2c, 0x00, 0x6e,
+ 0x54, 0x46, 0x2d, 0x00, 0x6e, 0x56, 0x07, 0x84,
+ 0x00, 0x6e, 0x57, 0x46, 0x2e, 0x00, 0x6e, 0x58,
+ 0x09, 0xad, 0x00, 0x6e, 0x5b, 0x0b, 0x77, 0x00,
+ 0x6e, 0x5c, 0x21, 0x4d, 0x00, 0x6e, 0x5d, 0x55,
+ 0x79, 0x00, 0x6e, 0x5e, 0x42, 0x2d, 0x00, 0x6e,
+ 0x5f, 0x15, 0x51, 0x00, 0x6e, 0x62, 0x55, 0x7a,
+ 0x00, 0x6e, 0x63, 0x46, 0x2f, 0x00, 0x6e, 0x67,
+ 0x0f, 0x19, 0x00, 0x6e, 0x68, 0x55, 0x7b, 0x00,
+ 0x6e, 0x6b, 0x15, 0x54, 0x00, 0x6e, 0x6e, 0x15,
+ 0x4d, 0x00, 0x6e, 0x6f, 0x0c, 0x6c, 0x00, 0x6e,
+ 0x72, 0x15, 0x50, 0x00, 0x6e, 0x73, 0x4c, 0x29,
+ 0x00, 0x6e, 0x76, 0x15, 0x56, 0x00, 0x6e, 0x7b,
+ 0x4c, 0x2a, 0x00, 0x6e, 0x7d, 0x4c, 0x2b, 0x00,
+ 0x6e, 0x7e, 0x0f, 0xf7, 0x00, 0x6e, 0x7f, 0x08,
+ 0xea, 0x00, 0x6e, 0x80, 0x0e, 0xac, 0x00, 0x6e,
+ 0x82, 0x15, 0x60, 0x00, 0x6e, 0x89, 0x4c, 0x2c,
+ 0x00, 0x6e, 0x8c, 0x0d, 0x42, 0x00, 0x6e, 0x8d,
+ 0x55, 0x7c, 0x00, 0x6e, 0x8f, 0x15, 0x6c, 0x00,
+ 0x6e, 0x90, 0x07, 0x6f, 0x00, 0x6e, 0x93, 0x46,
+ 0x31, 0x00, 0x6e, 0x96, 0x09, 0x6a, 0x00, 0x6e,
+ 0x98, 0x15, 0x62, 0x00, 0x6e, 0x99, 0x55, 0x7d,
+ 0x00, 0x6e, 0x9c, 0x0f, 0x77, 0x00, 0x6e, 0x9d,
+ 0x07, 0xd4, 0x00, 0x6e, 0x9f, 0x15, 0x6f, 0x00,
+ 0x6e, 0xa0, 0x55, 0x7e, 0x00, 0x6e, 0xa2, 0x04,
+ 0xb2, 0x00, 0x6e, 0xa5, 0x15, 0x6d, 0x00, 0x6e,
+ 0xa7, 0x46, 0x32, 0x00, 0x6e, 0xaa, 0x15, 0x61,
+ 0x00, 0x6e, 0xab, 0x34, 0x0c, 0x00, 0x6e, 0xad,
+ 0x55, 0x7f, 0x00, 0x6e, 0xae, 0x55, 0x80, 0x00,
+ 0x6e, 0xaf, 0x15, 0x67, 0x00, 0x6e, 0xb1, 0x42,
+ 0x2e, 0x00, 0x6e, 0xb2, 0x15, 0x69, 0x00, 0x6e,
+ 0xb3, 0x55, 0x81, 0x00, 0x6e, 0xb4, 0x46, 0x33,
+ 0x00, 0x6e, 0xb6, 0x0f, 0x39, 0x00, 0x6e, 0xb7,
+ 0x15, 0x64, 0x00, 0x6e, 0xba, 0x0c, 0x28, 0x00,
+ 0x6e, 0xbb, 0x55, 0x82, 0x00, 0x6e, 0xbc, 0x4c,
+ 0x2d, 0x00, 0x6e, 0xbd, 0x15, 0x66, 0x00, 0x6e,
+ 0xbf, 0x21, 0x50, 0x00, 0x6e, 0xc0, 0x55, 0x83,
+ 0x00, 0x6e, 0xc1, 0x42, 0x2f, 0x00, 0x6e, 0xc2,
+ 0x15, 0x6e, 0x00, 0x6e, 0xc3, 0x46, 0x34, 0x00,
+ 0x6e, 0xc4, 0x15, 0x68, 0x00, 0x6e, 0xc5, 0x0e,
+ 0xd3, 0x00, 0x6e, 0xc7, 0x39, 0x7f, 0x00, 0x6e,
+ 0xc8, 0x55, 0x84, 0x00, 0x6e, 0xc9, 0x15, 0x63,
+ 0x00, 0x6e, 0xca, 0x39, 0x80, 0x00, 0x6e, 0xcb,
+ 0x08, 0xce, 0x00, 0x6e, 0xcc, 0x15, 0x7b, 0x00,
+ 0x6e, 0xcd, 0x55, 0x85, 0x00, 0x6e, 0xce, 0x39,
+ 0x81, 0x00, 0x6e, 0xcf, 0x55, 0x86, 0x00, 0x6e,
+ 0xd1, 0x05, 0xc8, 0x00, 0x6e, 0xd3, 0x15, 0x65,
+ 0x00, 0x6e, 0xd4, 0x15, 0x6a, 0x00, 0x6e, 0xd5,
+ 0x15, 0x6b, 0x00, 0x6e, 0xd9, 0x3c, 0x38, 0x00,
+ 0x6e, 0xda, 0x4c, 0x2e, 0x00, 0x6e, 0xdb, 0x4c,
+ 0x2f, 0x00, 0x6e, 0xdd, 0x0b, 0x4c, 0x00, 0x6e,
+ 0xde, 0x0b, 0x3a, 0x00, 0x6e, 0xe6, 0x3c, 0x24,
+ 0x00, 0x6e, 0xeb, 0x46, 0x36, 0x00, 0x6e, 0xec,
+ 0x15, 0x73, 0x00, 0x6e, 0xed, 0x55, 0x87, 0x00,
+ 0x6e, 0xee, 0x55, 0x88, 0x00, 0x6e, 0xef, 0x15,
+ 0x79, 0x00, 0x6e, 0xf2, 0x15, 0x77, 0x00, 0x6e,
+ 0xf4, 0x0c, 0x23, 0x00, 0x6e, 0xf7, 0x15, 0x7e,
+ 0x00, 0x6e, 0xf8, 0x15, 0x74, 0x00, 0x6e, 0xf9,
+ 0x46, 0x37, 0x00, 0x6e, 0xfb, 0x46, 0x38, 0x00,
+ 0x6e, 0xfd, 0x39, 0x82, 0x00, 0x6e, 0xfe, 0x15,
+ 0x75, 0x00, 0x6e, 0xff, 0x15, 0x5d, 0x00, 0x6f,
+ 0x01, 0x06, 0x93, 0x00, 0x6f, 0x02, 0x0d, 0xac,
+ 0x00, 0x6f, 0x04, 0x55, 0x89, 0x00, 0x6f, 0x06,
+ 0x08, 0xeb, 0x00, 0x6f, 0x08, 0x55, 0x8a, 0x00,
+ 0x6f, 0x09, 0x08, 0x09, 0x00, 0x6f, 0x0a, 0x46,
+ 0x39, 0x00, 0x6f, 0x0c, 0x46, 0x3a, 0x00, 0x6f,
+ 0x0d, 0x55, 0x8b, 0x00, 0x6f, 0x0f, 0x0f, 0xd9,
+ 0x00, 0x6f, 0x10, 0x42, 0x30, 0x00, 0x6f, 0x11,
+ 0x15, 0x71, 0x00, 0x6f, 0x13, 0x15, 0x7d, 0x00,
+ 0x6f, 0x14, 0x05, 0x0b, 0x00, 0x6f, 0x15, 0x0a,
+ 0xe8, 0x00, 0x6f, 0x16, 0x55, 0x8c, 0x00, 0x6f,
+ 0x18, 0x46, 0x3b, 0x00, 0x6f, 0x1a, 0x39, 0x83,
+ 0x00, 0x6f, 0x1b, 0x55, 0x8d, 0x00, 0x6f, 0x20,
+ 0x0d, 0x2f, 0x00, 0x6f, 0x22, 0x05, 0xfd, 0x00,
+ 0x6f, 0x23, 0x1e, 0x81, 0x00, 0x6f, 0x25, 0x46,
+ 0x3c, 0x00, 0x6f, 0x26, 0x4c, 0x30, 0x00, 0x6f,
+ 0x29, 0x4c, 0x31, 0x00, 0x6f, 0x2a, 0x39, 0x84,
+ 0x00, 0x6f, 0x2b, 0x0e, 0xad, 0x00, 0x6f, 0x2c,
+ 0x0b, 0xee, 0x00, 0x6f, 0x2d, 0x55, 0x8f, 0x00,
+ 0x6f, 0x2f, 0x39, 0x85, 0x00, 0x6f, 0x30, 0x4c,
+ 0x32, 0x00, 0x6f, 0x31, 0x15, 0x78, 0x00, 0x6f,
+ 0x32, 0x15, 0x7a, 0x00, 0x6f, 0x33, 0x39, 0x86,
+ 0x00, 0x6f, 0x35, 0x46, 0x35, 0x00, 0x6f, 0x36,
+ 0x46, 0x3d, 0x00, 0x6f, 0x38, 0x0a, 0xb4, 0x00,
+ 0x6f, 0x3b, 0x55, 0x8e, 0x00, 0x6f, 0x3c, 0x46,
+ 0x3e, 0x00, 0x6f, 0x3e, 0x15, 0x7c, 0x00, 0x6f,
+ 0x3f, 0x15, 0x76, 0x00, 0x6f, 0x41, 0x15, 0x70,
+ 0x00, 0x6f, 0x45, 0x05, 0xff, 0x00, 0x6f, 0x4f,
+ 0x55, 0x90, 0x00, 0x6f, 0x51, 0x1e, 0x60, 0x00,
+ 0x6f, 0x52, 0x46, 0x40, 0x00, 0x6f, 0x53, 0x55,
+ 0x91, 0x00, 0x6f, 0x54, 0x07, 0x3f, 0x00, 0x6f,
+ 0x57, 0x46, 0x41, 0x00, 0x6f, 0x58, 0x15, 0x8a,
+ 0x00, 0x6f, 0x59, 0x42, 0x31, 0x00, 0x6f, 0x5a,
+ 0x39, 0x87, 0x00, 0x6f, 0x5b, 0x15, 0x85, 0x00,
+ 0x6f, 0x5c, 0x0a, 0x9c, 0x00, 0x6f, 0x5d, 0x55,
+ 0x92, 0x00, 0x6f, 0x5e, 0x39, 0x88, 0x00, 0x6f,
+ 0x5f, 0x05, 0xc1, 0x00, 0x6f, 0x60, 0x46, 0x42,
+ 0x00, 0x6f, 0x61, 0x42, 0x32, 0x00, 0x6f, 0x62,
+ 0x39, 0x89, 0x00, 0x6f, 0x64, 0x09, 0x6b, 0x00,
+ 0x6f, 0x66, 0x15, 0x8e, 0x00, 0x6f, 0x68, 0x46,
+ 0x43, 0x00, 0x6f, 0x6c, 0x55, 0x93, 0x00, 0x6f,
+ 0x6d, 0x15, 0x87, 0x00, 0x6f, 0x6e, 0x36, 0x6c,
+ 0x00, 0x6f, 0x6f, 0x15, 0x84, 0x00, 0x6f, 0x70,
+ 0x0b, 0xf5, 0x00, 0x6f, 0x74, 0x15, 0xa7, 0x00,
+ 0x6f, 0x78, 0x15, 0x81, 0x00, 0x6f, 0x7a, 0x15,
+ 0x80, 0x00, 0x6f, 0x7c, 0x15, 0x89, 0x00, 0x6f,
+ 0x7d, 0x39, 0x8a, 0x00, 0x6f, 0x7e, 0x42, 0x33,
+ 0x00, 0x6f, 0x80, 0x15, 0x83, 0x00, 0x6f, 0x81,
+ 0x15, 0x82, 0x00, 0x6f, 0x82, 0x15, 0x88, 0x00,
+ 0x6f, 0x83, 0x55, 0x94, 0x00, 0x6f, 0x84, 0x0a,
+ 0x45, 0x00, 0x6f, 0x86, 0x15, 0x7f, 0x00, 0x6f,
+ 0x87, 0x4c, 0x33, 0x00, 0x6f, 0x88, 0x21, 0x51,
+ 0x00, 0x6f, 0x8b, 0x39, 0x8b, 0x00, 0x6f, 0x8c,
+ 0x42, 0x34, 0x00, 0x6f, 0x8d, 0x39, 0x8c, 0x00,
+ 0x6f, 0x8e, 0x15, 0x8b, 0x00, 0x6f, 0x90, 0x46,
+ 0x44, 0x00, 0x6f, 0x91, 0x15, 0x8c, 0x00, 0x6f,
+ 0x92, 0x39, 0x8d, 0x00, 0x6f, 0x93, 0x55, 0x95,
+ 0x00, 0x6f, 0x94, 0x39, 0x8e, 0x00, 0x6f, 0x96,
+ 0x46, 0x45, 0x00, 0x6f, 0x97, 0x05, 0xfe, 0x00,
+ 0x6f, 0x98, 0x36, 0x3c, 0x00, 0x6f, 0x9a, 0x39,
+ 0x8f, 0x00, 0x6f, 0x9d, 0x4c, 0x34, 0x00, 0x6f,
+ 0x9f, 0x46, 0x47, 0x00, 0x6f, 0xa0, 0x42, 0x35,
+ 0x00, 0x6f, 0xa1, 0x15, 0x91, 0x00, 0x6f, 0xa3,
+ 0x15, 0x90, 0x00, 0x6f, 0xa4, 0x15, 0x92, 0x00,
+ 0x6f, 0xa5, 0x46, 0x48, 0x00, 0x6f, 0xa6, 0x55,
+ 0x96, 0x00, 0x6f, 0xa7, 0x39, 0x90, 0x00, 0x6f,
+ 0xa8, 0x39, 0x91, 0x00, 0x6f, 0xaa, 0x15, 0x95,
+ 0x00, 0x6f, 0xae, 0x4c, 0x35, 0x00, 0x6f, 0xaf,
+ 0x46, 0x49, 0x00, 0x6f, 0xb0, 0x55, 0x97, 0x00,
+ 0x6f, 0xb1, 0x0c, 0x3d, 0x00, 0x6f, 0xb3, 0x15,
+ 0x8f, 0x00, 0x6f, 0xb5, 0x21, 0x52, 0x00, 0x6f,
+ 0xb6, 0x39, 0x92, 0x00, 0x6f, 0xb7, 0x4c, 0x36,
+ 0x00, 0x6f, 0xb9, 0x15, 0x93, 0x00, 0x6f, 0xbc,
+ 0x42, 0x36, 0x00, 0x6f, 0xbe, 0x46, 0x46, 0x00,
+ 0x6f, 0xc0, 0x07, 0x39, 0x00, 0x6f, 0xc1, 0x0b,
+ 0x59, 0x00, 0x6f, 0xc2, 0x15, 0x8d, 0x00, 0x6f,
+ 0xc3, 0x0c, 0xf1, 0x00, 0x6f, 0xc5, 0x55, 0x98,
+ 0x00, 0x6f, 0xc6, 0x15, 0x94, 0x00, 0x6f, 0xc7,
+ 0x42, 0x37, 0x00, 0x6f, 0xc8, 0x46, 0x4b, 0x00,
+ 0x6f, 0xc9, 0x46, 0x4c, 0x00, 0x6f, 0xca, 0x42,
+ 0x38, 0x00, 0x6f, 0xd4, 0x15, 0x99, 0x00, 0x6f,
+ 0xd5, 0x15, 0x97, 0x00, 0x6f, 0xd8, 0x15, 0x9a,
+ 0x00, 0x6f, 0xda, 0x39, 0x93, 0x00, 0x6f, 0xdb,
+ 0x15, 0x9d, 0x00, 0x6f, 0xde, 0x39, 0x94, 0x00,
+ 0x6f, 0xdf, 0x15, 0x96, 0x00, 0x6f, 0xe0, 0x07,
+ 0xfc, 0x00, 0x6f, 0xe1, 0x0c, 0xde, 0x00, 0x6f,
+ 0xe4, 0x15, 0x36, 0x00, 0x6f, 0xe8, 0x55, 0x99,
+ 0x00, 0x6f, 0xe9, 0x46, 0x4d, 0x00, 0x6f, 0xeb,
+ 0x0f, 0x5e, 0x00, 0x6f, 0xec, 0x15, 0x98, 0x00,
+ 0x6f, 0xee, 0x15, 0x9c, 0x00, 0x6f, 0xef, 0x0b,
+ 0x55, 0x00, 0x6f, 0xf0, 0x42, 0x39, 0x00, 0x6f,
+ 0xf1, 0x15, 0x9b, 0x00, 0x6f, 0xf3, 0x15, 0x86,
+ 0x00, 0x6f, 0xf5, 0x21, 0x53, 0x00, 0x6f, 0xf6,
+ 0x1b, 0xa4, 0x00, 0x6f, 0xf9, 0x3c, 0x23, 0x00,
+ 0x6f, 0xfa, 0x15, 0xa0, 0x00, 0x6f, 0xfc, 0x46,
+ 0x4f, 0x00, 0x6f, 0xfd, 0x55, 0x9a, 0x00, 0x6f,
+ 0xfe, 0x15, 0xa4, 0x00, 0x70, 0x00, 0x46, 0x50,
+ 0x00, 0x70, 0x01, 0x15, 0xa2, 0x00, 0x70, 0x05,
+ 0x21, 0x54, 0x00, 0x70, 0x06, 0x1e, 0x50, 0x00,
+ 0x70, 0x07, 0x21, 0x55, 0x00, 0x70, 0x09, 0x15,
+ 0x9e, 0x00, 0x70, 0x0a, 0x46, 0x51, 0x00, 0x70,
+ 0x0b, 0x15, 0x9f, 0x00, 0x70, 0x0d, 0x4c, 0x37,
+ 0x00, 0x70, 0x0f, 0x15, 0xa3, 0x00, 0x70, 0x11,
+ 0x15, 0xa1, 0x00, 0x70, 0x15, 0x0d, 0xc0, 0x00,
+ 0x70, 0x17, 0x55, 0x9b, 0x00, 0x70, 0x18, 0x15,
+ 0xa9, 0x00, 0x70, 0x1a, 0x15, 0xa6, 0x00, 0x70,
+ 0x1b, 0x15, 0xa5, 0x00, 0x70, 0x1d, 0x15, 0xa8,
+ 0x00, 0x70, 0x1e, 0x0c, 0xac, 0x00, 0x70, 0x1f,
+ 0x15, 0xaa, 0x00, 0x70, 0x20, 0x4c, 0x38, 0x00,
+ 0x70, 0x23, 0x46, 0x52, 0x00, 0x70, 0x26, 0x0b,
+ 0xb3, 0x00, 0x70, 0x27, 0x0b, 0x4d, 0x00, 0x70,
+ 0x28, 0x21, 0x56, 0x00, 0x70, 0x2c, 0x0a, 0x49,
+ 0x00, 0x70, 0x2f, 0x55, 0x9c, 0x00, 0x70, 0x30,
+ 0x15, 0xab, 0x00, 0x70, 0x32, 0x15, 0xad, 0x00,
+ 0x70, 0x34, 0x55, 0x9d, 0x00, 0x70, 0x37, 0x55,
+ 0x9e, 0x00, 0x70, 0x39, 0x39, 0x96, 0x00, 0x70,
+ 0x3a, 0x46, 0x54, 0x00, 0x70, 0x3c, 0x39, 0x97,
+ 0x00, 0x70, 0x3e, 0x15, 0xac, 0x00, 0x70, 0x43,
+ 0x46, 0x55, 0x00, 0x70, 0x44, 0x55, 0x9f, 0x00,
+ 0x70, 0x47, 0x46, 0x56, 0x00, 0x70, 0x48, 0x55,
+ 0xa0, 0x00, 0x70, 0x49, 0x4c, 0x39, 0x00, 0x70,
+ 0x4a, 0x4f, 0x52, 0x00, 0x70, 0x4b, 0x46, 0x57,
+ 0x00, 0x70, 0x4c, 0x15, 0x72, 0x00, 0x70, 0x4e,
+ 0x42, 0x3a, 0x00, 0x70, 0x51, 0x15, 0xae, 0x00,
+ 0x70, 0x54, 0x39, 0x99, 0x00, 0x70, 0x55, 0x55,
+ 0xa1, 0x00, 0x70, 0x58, 0x0c, 0xbf, 0x00, 0x70,
+ 0x5d, 0x39, 0x9a, 0x00, 0x70, 0x5e, 0x39, 0x9b,
+ 0x00, 0x70, 0x63, 0x15, 0xaf, 0x00, 0x70, 0x64,
+ 0x39, 0x9c, 0x00, 0x70, 0x65, 0x46, 0x59, 0x00,
+ 0x70, 0x69, 0x46, 0x5a, 0x00, 0x70, 0x6b, 0x05,
+ 0x50, 0x00, 0x70, 0x6c, 0x39, 0x9d, 0x00, 0x70,
+ 0x6e, 0x46, 0x5b, 0x00, 0x70, 0x6f, 0x0c, 0x6e,
+ 0x00, 0x70, 0x70, 0x05, 0x83, 0x00, 0x70, 0x75,
+ 0x42, 0x3b, 0x00, 0x70, 0x76, 0x46, 0x5c, 0x00,
+ 0x70, 0x78, 0x06, 0x7e, 0x00, 0x70, 0x7c, 0x09,
+ 0x0a, 0x00, 0x70, 0x7d, 0x08, 0x42, 0x00, 0x70,
+ 0x7e, 0x39, 0x9e, 0x00, 0x70, 0x81, 0x39, 0x9f,
+ 0x00, 0x70, 0x85, 0x21, 0x57, 0x00, 0x70, 0x86,
+ 0x46, 0x5d, 0x00, 0x70, 0x89, 0x0f, 0xcd, 0x00,
+ 0x70, 0x8a, 0x0a, 0x2c, 0x00, 0x70, 0x8e, 0x05,
+ 0x0c, 0x00, 0x70, 0x92, 0x15, 0xb1, 0x00, 0x70,
+ 0x94, 0x55, 0xa2, 0x00, 0x70, 0x95, 0x39, 0xa0,
+ 0x00, 0x70, 0x96, 0x55, 0xa3, 0x00, 0x70, 0x97,
+ 0x46, 0x5e, 0x00, 0x70, 0x98, 0x4c, 0x3a, 0x00,
+ 0x70, 0x99, 0x15, 0xb0, 0x00, 0x70, 0x9b, 0x55,
+ 0xa4, 0x00, 0x70, 0x9f, 0x46, 0x60, 0x00, 0x70,
+ 0xa4, 0x42, 0x3c, 0x00, 0x70, 0xab, 0x21, 0x58,
+ 0x00, 0x70, 0xac, 0x15, 0xb4, 0x00, 0x70, 0xad,
+ 0x0b, 0x78, 0x00, 0x70, 0xae, 0x15, 0xb7, 0x00,
+ 0x70, 0xaf, 0x15, 0xb2, 0x00, 0x70, 0xb0, 0x4c,
+ 0x3b, 0x00, 0x70, 0xb1, 0x46, 0x61, 0x00, 0x70,
+ 0xb3, 0x15, 0xb6, 0x00, 0x70, 0xb4, 0x55, 0xa5,
+ 0x00, 0x70, 0xb7, 0x39, 0xa1, 0x00, 0x70, 0xb8,
+ 0x15, 0xb5, 0x00, 0x70, 0xb9, 0x0c, 0x3a, 0x00,
+ 0x70, 0xba, 0x04, 0x9d, 0x00, 0x70, 0xbb, 0x20,
+ 0xad, 0x00, 0x70, 0xc8, 0x0f, 0xbd, 0x00, 0x70,
+ 0xca, 0x46, 0x64, 0x00, 0x70, 0xcb, 0x15, 0xb9,
+ 0x00, 0x70, 0xcf, 0x04, 0xca, 0x00, 0x70, 0xd1,
+ 0x46, 0x65, 0x00, 0x70, 0xd3, 0x39, 0xa2, 0x00,
+ 0x70, 0xd4, 0x39, 0xa3, 0x00, 0x70, 0xd5, 0x4c,
+ 0x3c, 0x00, 0x70, 0xd6, 0x4c, 0x3d, 0x00, 0x70,
+ 0xd8, 0x39, 0xa4, 0x00, 0x70, 0xd9, 0x15, 0xbb,
+ 0x00, 0x70, 0xdc, 0x39, 0xa5, 0x00, 0x70, 0xdd,
+ 0x15, 0xba, 0x00, 0x70, 0xdf, 0x15, 0xb8, 0x00,
+ 0x70, 0xe4, 0x42, 0x3d, 0x00, 0x70, 0xec, 0x46,
+ 0x63, 0x00, 0x70, 0xf1, 0x15, 0xb3, 0x00, 0x70,
+ 0xf9, 0x0e, 0x51, 0x00, 0x70, 0xfa, 0x55, 0xa6,
+ 0x00, 0x70, 0xfd, 0x15, 0xbd, 0x00, 0x71, 0x03,
+ 0x46, 0x66, 0x00, 0x71, 0x04, 0x21, 0x5a, 0x00,
+ 0x71, 0x05, 0x55, 0xa7, 0x00, 0x71, 0x06, 0x46,
+ 0x67, 0x00, 0x71, 0x07, 0x39, 0xa6, 0x00, 0x71,
+ 0x08, 0x46, 0x68, 0x00, 0x71, 0x09, 0x15, 0xbc,
+ 0x00, 0x71, 0x0b, 0x55, 0xa8, 0x00, 0x71, 0x0c,
+ 0x46, 0x69, 0x00, 0x71, 0x0f, 0x21, 0x59, 0x00,
+ 0x71, 0x14, 0x05, 0x0d, 0x00, 0x71, 0x19, 0x15,
+ 0xbf, 0x00, 0x71, 0x1a, 0x0e, 0x02, 0x00, 0x71,
+ 0x1c, 0x15, 0xbe, 0x00, 0x71, 0x1e, 0x42, 0x3f,
+ 0x00, 0x71, 0x20, 0x39, 0xa7, 0x00, 0x71, 0x21,
+ 0x0e, 0xc1, 0x00, 0x71, 0x26, 0x09, 0xaf, 0x00,
+ 0x71, 0x2b, 0x42, 0x3e, 0x00, 0x71, 0x2d, 0x55,
+ 0xa9, 0x00, 0x71, 0x2e, 0x42, 0x40, 0x00, 0x71,
+ 0x2f, 0x46, 0x6b, 0x00, 0x71, 0x30, 0x1d, 0xdc,
+ 0x00, 0x71, 0x31, 0x39, 0xa8, 0x00, 0x71, 0x36,
+ 0x0a, 0xb5, 0x00, 0x71, 0x38, 0x55, 0xaa, 0x00,
+ 0x71, 0x3c, 0x09, 0xae, 0x00, 0x71, 0x41, 0x55,
+ 0xab, 0x00, 0x71, 0x45, 0x4c, 0x3e, 0x00, 0x71,
+ 0x46, 0x21, 0x5c, 0x00, 0x71, 0x47, 0x21, 0x5d,
+ 0x00, 0x71, 0x49, 0x1e, 0x82, 0x00, 0x71, 0x4a,
+ 0x39, 0xa9, 0x00, 0x71, 0x4b, 0x55, 0xac, 0x00,
+ 0x71, 0x4c, 0x15, 0xc5, 0x00, 0x71, 0x4e, 0x0a,
+ 0x9d, 0x00, 0x71, 0x50, 0x46, 0x6c, 0x00, 0x71,
+ 0x51, 0x42, 0x41, 0x00, 0x71, 0x52, 0x39, 0xaa,
+ 0x00, 0x71, 0x53, 0x46, 0x6d, 0x00, 0x71, 0x55,
+ 0x15, 0xc1, 0x00, 0x71, 0x56, 0x15, 0xc6, 0x00,
+ 0x71, 0x57, 0x55, 0xae, 0x00, 0x71, 0x59, 0x05,
+ 0x0e, 0x00, 0x71, 0x5a, 0x55, 0xaf, 0x00, 0x71,
+ 0x5c, 0x21, 0x5b, 0x00, 0x71, 0x5e, 0x46, 0x6e,
+ 0x00, 0x71, 0x60, 0x39, 0xab, 0x00, 0x71, 0x62,
+ 0x15, 0xc4, 0x00, 0x71, 0x64, 0x0d, 0x17, 0x00,
+ 0x71, 0x65, 0x15, 0xc0, 0x00, 0x71, 0x66, 0x15,
+ 0xc3, 0x00, 0x71, 0x67, 0x09, 0xb0, 0x00, 0x71,
+ 0x68, 0x42, 0x42, 0x00, 0x71, 0x69, 0x0d, 0x65,
+ 0x00, 0x71, 0x6c, 0x15, 0xc7, 0x00, 0x71, 0x6e,
+ 0x34, 0x23, 0x00, 0x71, 0x79, 0x39, 0xac, 0x00,
+ 0x71, 0x7d, 0x0a, 0x9e, 0x00, 0x71, 0x80, 0x46,
+ 0x71, 0x00, 0x71, 0x84, 0x15, 0xca, 0x00, 0x71,
+ 0x85, 0x42, 0x43, 0x00, 0x71, 0x87, 0x42, 0x44,
+ 0x00, 0x71, 0x88, 0x15, 0xc2, 0x00, 0x71, 0x8a,
+ 0x06, 0xfd, 0x00, 0x71, 0x8c, 0x55, 0xb0, 0x00,
+ 0x71, 0x8f, 0x15, 0xc8, 0x00, 0x71, 0x92, 0x39,
+ 0xad, 0x00, 0x71, 0x94, 0x0f, 0x3a, 0x00, 0x71,
+ 0x95, 0x15, 0xcb, 0x00, 0x71, 0x96, 0x46, 0x70,
+ 0x00, 0x71, 0x99, 0x20, 0x5d, 0x00, 0x71, 0x9a,
+ 0x55, 0xb1, 0x00, 0x71, 0x9b, 0x46, 0x72, 0x00,
+ 0x71, 0x9f, 0x09, 0x59, 0x00, 0x71, 0xa0, 0x46,
+ 0x73, 0x00, 0x71, 0xa2, 0x46, 0x74, 0x00, 0x71,
+ 0xa8, 0x15, 0xcc, 0x00, 0x71, 0xac, 0x15, 0xcd,
+ 0x00, 0x71, 0xae, 0x46, 0x75, 0x00, 0x71, 0xaf,
+ 0x46, 0x76, 0x00, 0x71, 0xb0, 0x55, 0xb2, 0x00,
+ 0x71, 0xb1, 0x0c, 0xe4, 0x00, 0x71, 0xb2, 0x4c,
+ 0x3f, 0x00, 0x71, 0xb3, 0x3c, 0x25, 0x00, 0x71,
+ 0xb9, 0x15, 0xcf, 0x00, 0x71, 0xba, 0x42, 0x45,
+ 0x00, 0x71, 0xbe, 0x15, 0xd0, 0x00, 0x71, 0xbf,
+ 0x55, 0xb3, 0x00, 0x71, 0xc0, 0x55, 0xb4, 0x00,
+ 0x71, 0xc1, 0x21, 0x5f, 0x00, 0x71, 0xc3, 0x0c,
+ 0xe9, 0x00, 0x71, 0xc4, 0x42, 0x46, 0x00, 0x71,
+ 0xc8, 0x0c, 0x6f, 0x00, 0x71, 0xc9, 0x15, 0xd2,
+ 0x00, 0x71, 0xcb, 0x39, 0xaf, 0x00, 0x71, 0xcc,
+ 0x55, 0xb5, 0x00, 0x71, 0xce, 0x15, 0xd4, 0x00,
+ 0x71, 0xd0, 0x0f, 0x9d, 0x00, 0x71, 0xd2, 0x15,
+ 0xd1, 0x00, 0x71, 0xd3, 0x39, 0xb0, 0x00, 0x71,
+ 0xd4, 0x15, 0xd3, 0x00, 0x71, 0xd5, 0x05, 0x0f,
+ 0x00, 0x71, 0xd6, 0x39, 0xb1, 0x00, 0x71, 0xd7,
+ 0x15, 0xce, 0x00, 0x71, 0xd9, 0x46, 0x78, 0x00,
+ 0x71, 0xda, 0x55, 0xb6, 0x00, 0x71, 0xdc, 0x46,
+ 0x79, 0x00, 0x71, 0xdf, 0x11, 0x4e, 0x00, 0x71,
+ 0xe0, 0x15, 0xd5, 0x00, 0x71, 0xe5, 0x0a, 0xe9,
+ 0x00, 0x71, 0xe6, 0x08, 0x86, 0x00, 0x71, 0xe7,
+ 0x15, 0xd7, 0x00, 0x71, 0xec, 0x15, 0xd6, 0x00,
+ 0x71, 0xed, 0x09, 0xea, 0x00, 0x71, 0xee, 0x10,
+ 0xee, 0x00, 0x71, 0xf4, 0x4c, 0x40, 0x00, 0x71,
+ 0xf5, 0x15, 0xd8, 0x00, 0x71, 0xf8, 0x55, 0xb7,
+ 0x00, 0x71, 0xf9, 0x15, 0xda, 0x00, 0x71, 0xfb,
+ 0x15, 0xc9, 0x00, 0x71, 0xfc, 0x15, 0xd9, 0x00,
+ 0x71, 0xfe, 0x21, 0x60, 0x00, 0x71, 0xff, 0x15,
+ 0xdb, 0x00, 0x72, 0x00, 0x39, 0xb2, 0x00, 0x72,
+ 0x06, 0x0d, 0x30, 0x00, 0x72, 0x07, 0x46, 0x7a,
+ 0x00, 0x72, 0x08, 0x55, 0xb8, 0x00, 0x72, 0x09,
+ 0x55, 0xb9, 0x00, 0x72, 0x0d, 0x15, 0xdc, 0x00,
+ 0x72, 0x10, 0x15, 0xdd, 0x00, 0x72, 0x13, 0x55,
+ 0xba, 0x00, 0x72, 0x15, 0x42, 0x47, 0x00, 0x72,
+ 0x17, 0x4c, 0x41, 0x00, 0x72, 0x1a, 0x55, 0xbb,
+ 0x00, 0x72, 0x1b, 0x15, 0xde, 0x00, 0x72, 0x1d,
+ 0x39, 0xb3, 0x00, 0x72, 0x1f, 0x4c, 0x42, 0x00,
+ 0x72, 0x24, 0x55, 0xbc, 0x00, 0x72, 0x28, 0x1e,
+ 0x9f, 0x00, 0x72, 0x2a, 0x0b, 0xfa, 0x00, 0x72,
+ 0x2b, 0x39, 0xb4, 0x00, 0x72, 0x2c, 0x15, 0xe1,
+ 0x00, 0x72, 0x2d, 0x15, 0xe0, 0x00, 0x72, 0x2f,
+ 0x55, 0xbd, 0x00, 0x72, 0x30, 0x15, 0xe2, 0x00,
+ 0x72, 0x32, 0x15, 0xe3, 0x00, 0x72, 0x34, 0x46,
+ 0x7c, 0x00, 0x72, 0x35, 0x35, 0xf1, 0x00, 0x72,
+ 0x36, 0x0d, 0xd5, 0x00, 0x72, 0x38, 0x39, 0xb5,
+ 0x00, 0x72, 0x39, 0x46, 0x7d, 0x00, 0x72, 0x3a,
+ 0x0e, 0xf8, 0x00, 0x72, 0x3b, 0x15, 0xe4, 0x00,
+ 0x72, 0x3c, 0x15, 0xe5, 0x00, 0x72, 0x3d, 0x0a,
+ 0xd8, 0x00, 0x72, 0x3e, 0x08, 0xd0, 0x00, 0x72,
+ 0x3f, 0x15, 0xe6, 0x00, 0x72, 0x40, 0x15, 0xe7,
+ 0x00, 0x72, 0x41, 0x39, 0xb6, 0x00, 0x72, 0x42,
+ 0x46, 0x7e, 0x00, 0x72, 0x43, 0x4c, 0x43, 0x00,
+ 0x72, 0x45, 0x55, 0xbe, 0x00, 0x72, 0x46, 0x15,
+ 0xe8, 0x00, 0x72, 0x47, 0x0e, 0x22, 0x00, 0x72,
+ 0x48, 0x0d, 0x5b, 0x00, 0x72, 0x4b, 0x15, 0xe9,
+ 0x00, 0x72, 0x4c, 0x0d, 0x0d, 0x00, 0x72, 0x4e,
+ 0x55, 0xbf, 0x00, 0x72, 0x4f, 0x4c, 0x44, 0x00,
+ 0x72, 0x50, 0x4c, 0x45, 0x00, 0x72, 0x52, 0x0b,
+ 0xc9, 0x00, 0x72, 0x53, 0x39, 0xb7, 0x00, 0x72,
+ 0x55, 0x39, 0xb8, 0x00, 0x72, 0x56, 0x39, 0xb9,
+ 0x00, 0x72, 0x57, 0x46, 0x7f, 0x00, 0x72, 0x58,
+ 0x15, 0xea, 0x00, 0x72, 0x59, 0x05, 0x67, 0x00,
+ 0x72, 0x5a, 0x4c, 0x46, 0x00, 0x72, 0x5b, 0x06,
+ 0x87, 0x00, 0x72, 0x5c, 0x39, 0xba, 0x00, 0x72,
+ 0x5d, 0x0e, 0xd2, 0x00, 0x72, 0x5e, 0x55, 0xc0,
+ 0x00, 0x72, 0x5f, 0x0e, 0xc2, 0x00, 0x72, 0x60,
+ 0x4c, 0x47, 0x00, 0x72, 0x61, 0x05, 0x34, 0x00,
+ 0x72, 0x62, 0x0f, 0xda, 0x00, 0x72, 0x63, 0x46,
+ 0x80, 0x00, 0x72, 0x67, 0x0e, 0x80, 0x00, 0x72,
+ 0x68, 0x4c, 0x48, 0x00, 0x72, 0x69, 0x0d, 0xfa,
+ 0x00, 0x72, 0x6b, 0x55, 0xc1, 0x00, 0x72, 0x6e,
+ 0x46, 0x82, 0x00, 0x72, 0x6f, 0x46, 0x83, 0x00,
+ 0x72, 0x71, 0x55, 0xc2, 0x00, 0x72, 0x72, 0x0a,
+ 0x5b, 0x00, 0x72, 0x74, 0x15, 0xeb, 0x00, 0x72,
+ 0x77, 0x4c, 0x49, 0x00, 0x72, 0x78, 0x46, 0x84,
+ 0x00, 0x72, 0x79, 0x0c, 0x9b, 0x00, 0x72, 0x7b,
+ 0x55, 0xc3, 0x00, 0x72, 0x7c, 0x55, 0xc4, 0x00,
+ 0x72, 0x7d, 0x07, 0x57, 0x00, 0x72, 0x7e, 0x15,
+ 0xec, 0x00, 0x72, 0x7f, 0x46, 0x85, 0x00, 0x72,
+ 0x80, 0x08, 0x44, 0x00, 0x72, 0x81, 0x15, 0xee,
+ 0x00, 0x72, 0x82, 0x15, 0xed, 0x00, 0x72, 0x84,
+ 0x4c, 0x4a, 0x00, 0x72, 0x87, 0x15, 0xef, 0x00,
+ 0x72, 0x89, 0x55, 0xc5, 0x00, 0x72, 0x8d, 0x39,
+ 0xbb, 0x00, 0x72, 0x8e, 0x46, 0x86, 0x00, 0x72,
+ 0x92, 0x15, 0xf0, 0x00, 0x72, 0x93, 0x55, 0xc6,
+ 0x00, 0x72, 0x96, 0x15, 0xf1, 0x00, 0x72, 0x9b,
+ 0x42, 0x49, 0x00, 0x72, 0xa0, 0x06, 0x58, 0x00,
+ 0x72, 0xa2, 0x15, 0xf2, 0x00, 0x72, 0xa7, 0x15,
+ 0xf3, 0x00, 0x72, 0xa8, 0x55, 0xc7, 0x00, 0x72,
+ 0xac, 0x07, 0x58, 0x00, 0x72, 0xad, 0x39, 0xbc,
+ 0x00, 0x72, 0xae, 0x46, 0x88, 0x00, 0x72, 0xaf,
+ 0x0d, 0x5c, 0x00, 0x72, 0xb0, 0x46, 0x89, 0x00,
+ 0x72, 0xb1, 0x21, 0x61, 0x00, 0x72, 0xb2, 0x15,
+ 0xf5, 0x00, 0x72, 0xb4, 0x39, 0xbd, 0x00, 0x72,
+ 0xb6, 0x09, 0xdd, 0x00, 0x72, 0xb9, 0x15, 0xf4,
+ 0x00, 0x72, 0xbe, 0x21, 0x62, 0x00, 0x72, 0xc0,
+ 0x34, 0x2b, 0x00, 0x72, 0xc1, 0x46, 0x8a, 0x00,
+ 0x72, 0xc2, 0x06, 0xb0, 0x00, 0x72, 0xc3, 0x15,
+ 0xf6, 0x00, 0x72, 0xc4, 0x15, 0xf8, 0x00, 0x72,
+ 0xc6, 0x15, 0xf7, 0x00, 0x72, 0xc7, 0x39, 0xbe,
+ 0x00, 0x72, 0xc9, 0x4c, 0x4b, 0x00, 0x72, 0xcc,
+ 0x46, 0x8c, 0x00, 0x72, 0xce, 0x15, 0xf9, 0x00,
+ 0x72, 0xd0, 0x07, 0x85, 0x00, 0x72, 0xd2, 0x15,
+ 0xfa, 0x00, 0x72, 0xd5, 0x55, 0xc8, 0x00, 0x72,
+ 0xd6, 0x55, 0xc9, 0x00, 0x72, 0xd7, 0x06, 0xe1,
+ 0x00, 0x72, 0xd8, 0x55, 0xca, 0x00, 0x72, 0xd9,
+ 0x0a, 0xc2, 0x00, 0x72, 0xdb, 0x08, 0x0f, 0x00,
+ 0x72, 0xdf, 0x55, 0xcb, 0x00, 0x72, 0xe0, 0x15,
+ 0xfc, 0x00, 0x72, 0xe1, 0x15, 0xfd, 0x00, 0x72,
+ 0xe2, 0x15, 0xfb, 0x00, 0x72, 0xe5, 0x4c, 0x4c,
+ 0x00, 0x72, 0xe9, 0x09, 0x19, 0x00, 0x72, 0xec,
+ 0x0c, 0xa0, 0x00, 0x72, 0xed, 0x06, 0xb1, 0x00,
+ 0x72, 0xf3, 0x46, 0x8f, 0x00, 0x72, 0xf4, 0x4c,
+ 0x4d, 0x00, 0x72, 0xf7, 0x15, 0xff, 0x00, 0x72,
+ 0xf8, 0x0b, 0x6a, 0x00, 0x72, 0xf9, 0x15, 0xfe,
+ 0x00, 0x72, 0xfa, 0x46, 0x90, 0x00, 0x72, 0xfb,
+ 0x39, 0xbf, 0x00, 0x72, 0xfc, 0x0f, 0xdb, 0x00,
+ 0x72, 0xfd, 0x0d, 0x18, 0x00, 0x72, 0xfe, 0x55,
+ 0xcc, 0x00, 0x73, 0x02, 0x4c, 0x4e, 0x00, 0x73,
+ 0x04, 0x39, 0xc0, 0x00, 0x73, 0x05, 0x39, 0xc1,
+ 0x00, 0x73, 0x07, 0x46, 0x91, 0x00, 0x73, 0x0a,
+ 0x16, 0x02, 0x00, 0x73, 0x0b, 0x4c, 0x4f, 0x00,
+ 0x73, 0x0d, 0x55, 0xcd, 0x00, 0x73, 0x12, 0x46,
+ 0x92, 0x00, 0x73, 0x13, 0x55, 0xce, 0x00, 0x73,
+ 0x16, 0x16, 0x04, 0x00, 0x73, 0x17, 0x16, 0x01,
+ 0x00, 0x73, 0x18, 0x46, 0x93, 0x00, 0x73, 0x19,
+ 0x46, 0x94, 0x00, 0x73, 0x1b, 0x0e, 0xe0, 0x00,
+ 0x73, 0x1c, 0x16, 0x03, 0x00, 0x73, 0x1d, 0x16,
+ 0x05, 0x00, 0x73, 0x1e, 0x4c, 0x50, 0x00, 0x73,
+ 0x1f, 0x0f, 0x8c, 0x00, 0x73, 0x22, 0x4c, 0x51,
+ 0x00, 0x73, 0x24, 0x21, 0x63, 0x00, 0x73, 0x25,
+ 0x16, 0x09, 0x00, 0x73, 0x27, 0x42, 0x4b, 0x00,
+ 0x73, 0x28, 0x39, 0xc2, 0x00, 0x73, 0x29, 0x16,
+ 0x08, 0x00, 0x73, 0x2a, 0x21, 0x64, 0x00, 0x73,
+ 0x2b, 0x0c, 0xe3, 0x00, 0x73, 0x2c, 0x46, 0x97,
+ 0x00, 0x73, 0x2e, 0x07, 0x59, 0x00, 0x73, 0x2f,
+ 0x16, 0x07, 0x00, 0x73, 0x31, 0x39, 0xc3, 0x00,
+ 0x73, 0x32, 0x55, 0xcf, 0x00, 0x73, 0x33, 0x46,
+ 0x98, 0x00, 0x73, 0x34, 0x16, 0x06, 0x00, 0x73,
+ 0x35, 0x55, 0xd0, 0x00, 0x73, 0x36, 0x0f, 0x1b,
+ 0x00, 0x73, 0x37, 0x0f, 0x1c, 0x00, 0x73, 0x39,
+ 0x46, 0x96, 0x00, 0x73, 0x3a, 0x4c, 0x52, 0x00,
+ 0x73, 0x3b, 0x4c, 0x53, 0x00, 0x73, 0x3d, 0x46,
+ 0x99, 0x00, 0x73, 0x3e, 0x16, 0x0a, 0x00, 0x73,
+ 0x3f, 0x05, 0x10, 0x00, 0x73, 0x43, 0x39, 0xc4,
+ 0x00, 0x73, 0x44, 0x08, 0x08, 0x00, 0x73, 0x45,
+ 0x08, 0xb0, 0x00, 0x73, 0x4d, 0x4c, 0x54, 0x00,
+ 0x73, 0x4e, 0x16, 0x0b, 0x00, 0x73, 0x4f, 0x16,
+ 0x0c, 0x00, 0x73, 0x50, 0x42, 0x4c, 0x00, 0x73,
+ 0x52, 0x46, 0x9a, 0x00, 0x73, 0x56, 0x55, 0xd1,
+ 0x00, 0x73, 0x57, 0x16, 0x0e, 0x00, 0x73, 0x58,
+ 0x4c, 0x55, 0x00, 0x73, 0x5d, 0x55, 0xd2, 0x00,
+ 0x73, 0x5e, 0x55, 0xd3, 0x00, 0x73, 0x5f, 0x55,
+ 0xd4, 0x00, 0x73, 0x60, 0x55, 0xd5, 0x00, 0x73,
+ 0x63, 0x09, 0x4d, 0x00, 0x73, 0x66, 0x42, 0x4d,
+ 0x00, 0x73, 0x67, 0x4c, 0x56, 0x00, 0x73, 0x68,
+ 0x16, 0x10, 0x00, 0x73, 0x69, 0x55, 0xd6, 0x00,
+ 0x73, 0x6a, 0x16, 0x0f, 0x00, 0x73, 0x6b, 0x46,
+ 0x9c, 0x00, 0x73, 0x6c, 0x39, 0xc5, 0x00, 0x73,
+ 0x6e, 0x46, 0x9e, 0x00, 0x73, 0x6f, 0x46, 0x9f,
+ 0x00, 0x73, 0x70, 0x16, 0x11, 0x00, 0x73, 0x71,
+ 0x46, 0xa0, 0x00, 0x73, 0x72, 0x05, 0xab, 0x00,
+ 0x73, 0x75, 0x16, 0x13, 0x00, 0x73, 0x77, 0x21,
+ 0x65, 0x00, 0x73, 0x78, 0x16, 0x12, 0x00, 0x73,
+ 0x79, 0x55, 0xd7, 0x00, 0x73, 0x7a, 0x16, 0x15,
+ 0x00, 0x73, 0x7b, 0x16, 0x14, 0x00, 0x73, 0x7c,
+ 0x39, 0xc6, 0x00, 0x73, 0x80, 0x55, 0xd8, 0x00,
+ 0x73, 0x81, 0x46, 0xa1, 0x00, 0x73, 0x83, 0x39,
+ 0xc7, 0x00, 0x73, 0x84, 0x07, 0x70, 0x00, 0x73,
+ 0x85, 0x39, 0xc8, 0x00, 0x73, 0x86, 0x39, 0xc9,
+ 0x00, 0x73, 0x87, 0x0f, 0x70, 0x00, 0x73, 0x89,
+ 0x06, 0xc4, 0x00, 0x73, 0x8a, 0x46, 0xa2, 0x00,
+ 0x73, 0x8b, 0x05, 0x26, 0x00, 0x73, 0x8e, 0x55,
+ 0xd9, 0x00, 0x73, 0x90, 0x55, 0xda, 0x00, 0x73,
+ 0x93, 0x55, 0xdb, 0x00, 0x73, 0x94, 0x46, 0xa3,
+ 0x00, 0x73, 0x95, 0x39, 0xca, 0x00, 0x73, 0x96,
+ 0x06, 0xe2, 0x00, 0x73, 0x97, 0x55, 0xdc, 0x00,
+ 0x73, 0x98, 0x46, 0xa4, 0x00, 0x73, 0x9c, 0x46,
+ 0xa5, 0x00, 0x73, 0x9e, 0x39, 0xcb, 0x00, 0x73,
+ 0x9f, 0x39, 0xcc, 0x00, 0x73, 0xa0, 0x39, 0xcd,
+ 0x00, 0x73, 0xa2, 0x42, 0x4e, 0x00, 0x73, 0xa5,
+ 0x46, 0xa6, 0x00, 0x73, 0xa6, 0x39, 0xce, 0x00,
+ 0x73, 0xa8, 0x3c, 0x3f, 0x00, 0x73, 0xa9, 0x06,
+ 0x1d, 0x00, 0x73, 0xaa, 0x55, 0xdd, 0x00, 0x73,
+ 0xab, 0x39, 0xcf, 0x00, 0x73, 0xad, 0x55, 0xde,
+ 0x00, 0x73, 0xb2, 0x0f, 0xb0, 0x00, 0x73, 0xb3,
+ 0x16, 0x17, 0x00, 0x73, 0xb5, 0x39, 0xd0, 0x00,
+ 0x73, 0xb7, 0x39, 0xd1, 0x00, 0x73, 0xb9, 0x46,
+ 0xa7, 0x00, 0x73, 0xba, 0x35, 0xea, 0x00, 0x73,
+ 0xbb, 0x16, 0x19, 0x00, 0x73, 0xbc, 0x39, 0xd2,
+ 0x00, 0x73, 0xbd, 0x21, 0x66, 0x00, 0x73, 0xbf,
+ 0x46, 0xa8, 0x00, 0x73, 0xc0, 0x16, 0x1a, 0x00,
+ 0x73, 0xc2, 0x05, 0x51, 0x00, 0x73, 0xc5, 0x46,
+ 0xa9, 0x00, 0x73, 0xc6, 0x55, 0xdf, 0x00, 0x73,
+ 0xc8, 0x16, 0x16, 0x00, 0x73, 0xc9, 0x21, 0x67,
+ 0x00, 0x73, 0xca, 0x08, 0x87, 0x00, 0x73, 0xcb,
+ 0x46, 0xaa, 0x00, 0x73, 0xcc, 0x55, 0xe0, 0x00,
+ 0x73, 0xcd, 0x0b, 0xdd, 0x00, 0x73, 0xce, 0x16,
+ 0x18, 0x00, 0x73, 0xcf, 0x39, 0xd3, 0x00, 0x73,
+ 0xd2, 0x21, 0x6a, 0x00, 0x73, 0xd3, 0x55, 0xe1,
+ 0x00, 0x73, 0xd6, 0x21, 0x68, 0x00, 0x73, 0xd9,
+ 0x39, 0xd4, 0x00, 0x73, 0xdd, 0x55, 0xe2, 0x00,
+ 0x73, 0xde, 0x16, 0x1d, 0x00, 0x73, 0xe0, 0x09,
+ 0x1a, 0x00, 0x73, 0xe1, 0x46, 0xab, 0x00, 0x73,
+ 0xe3, 0x21, 0x69, 0x00, 0x73, 0xe4, 0x3c, 0x39,
+ 0x00, 0x73, 0xe5, 0x16, 0x1b, 0x00, 0x73, 0xe6,
+ 0x55, 0xe3, 0x00, 0x73, 0xe7, 0x46, 0xac, 0x00,
+ 0x73, 0xe9, 0x39, 0xd5, 0x00, 0x73, 0xea, 0x07,
+ 0x14, 0x00, 0x73, 0xed, 0x0d, 0x5d, 0x00, 0x73,
+ 0xee, 0x16, 0x1c, 0x00, 0x73, 0xf1, 0x16, 0x37,
+ 0x00, 0x73, 0xf4, 0x39, 0xd6, 0x00, 0x73, 0xf5,
+ 0x21, 0x6c, 0x00, 0x73, 0xf7, 0x55, 0xe4, 0x00,
+ 0x73, 0xf8, 0x16, 0x22, 0x00, 0x73, 0xf9, 0x46,
+ 0xad, 0x00, 0x73, 0xfa, 0x46, 0xaf, 0x00, 0x73,
+ 0xfb, 0x55, 0xe5, 0x00, 0x73, 0xfd, 0x39, 0xd7,
+ 0x00, 0x73, 0xfe, 0x07, 0x71, 0x00, 0x73, 0xff,
+ 0x55, 0xe6, 0x00, 0x74, 0x00, 0x55, 0xe7, 0x00,
+ 0x74, 0x01, 0x46, 0xb0, 0x00, 0x74, 0x03, 0x06,
+ 0x7f, 0x00, 0x74, 0x04, 0x39, 0xd8, 0x00, 0x74,
+ 0x05, 0x16, 0x1f, 0x00, 0x74, 0x06, 0x0f, 0x67,
+ 0x00, 0x74, 0x07, 0x21, 0x6b, 0x00, 0x74, 0x09,
+ 0x0f, 0x78, 0x00, 0x74, 0x0a, 0x39, 0xd9, 0x00,
+ 0x74, 0x11, 0x55, 0xe8, 0x00, 0x74, 0x13, 0x46,
+ 0xae, 0x00, 0x74, 0x1a, 0x39, 0xda, 0x00, 0x74,
+ 0x1b, 0x39, 0xdb, 0x00, 0x74, 0x21, 0x3c, 0x3a,
+ 0x00, 0x74, 0x22, 0x1e, 0x34, 0x00, 0x74, 0x24,
+ 0x39, 0xdc, 0x00, 0x74, 0x25, 0x16, 0x21, 0x00,
+ 0x74, 0x26, 0x21, 0x6d, 0x00, 0x74, 0x28, 0x39,
+ 0xdd, 0x00, 0x74, 0x29, 0x21, 0x6f, 0x00, 0x74,
+ 0x2a, 0x21, 0x6e, 0x00, 0x74, 0x2b, 0x42, 0x4f,
+ 0x00, 0x74, 0x2c, 0x39, 0xde, 0x00, 0x74, 0x2d,
+ 0x55, 0xe9, 0x00, 0x74, 0x2e, 0x21, 0x70, 0x00,
+ 0x74, 0x2f, 0x39, 0xdf, 0x00, 0x74, 0x30, 0x39,
+ 0xe0, 0x00, 0x74, 0x31, 0x39, 0xe1, 0x00, 0x74,
+ 0x32, 0x16, 0x23, 0x00, 0x74, 0x33, 0x0f, 0x9e,
+ 0x00, 0x74, 0x34, 0x06, 0xcf, 0x00, 0x74, 0x35,
+ 0x0d, 0x90, 0x00, 0x74, 0x36, 0x0d, 0x00, 0x00,
+ 0x74, 0x39, 0x39, 0xe2, 0x00, 0x74, 0x3a, 0x16,
+ 0x24, 0x00, 0x74, 0x3f, 0x16, 0x26, 0x00, 0x74,
+ 0x40, 0x46, 0xb2, 0x00, 0x74, 0x41, 0x16, 0x29,
+ 0x00, 0x74, 0x43, 0x46, 0xb3, 0x00, 0x74, 0x44,
+ 0x39, 0xe3, 0x00, 0x74, 0x46, 0x42, 0x50, 0x00,
+ 0x74, 0x47, 0x39, 0xe4, 0x00, 0x74, 0x4b, 0x39,
+ 0xe5, 0x00, 0x74, 0x4d, 0x39, 0xe6, 0x00, 0x74,
+ 0x51, 0x39, 0xe7, 0x00, 0x74, 0x52, 0x46, 0xb4,
+ 0x00, 0x74, 0x53, 0x46, 0xb1, 0x00, 0x74, 0x55,
+ 0x16, 0x25, 0x00, 0x74, 0x57, 0x39, 0xe8, 0x00,
+ 0x74, 0x59, 0x16, 0x28, 0x00, 0x74, 0x5a, 0x07,
+ 0x9e, 0x00, 0x74, 0x5b, 0x04, 0xef, 0x00, 0x74,
+ 0x5c, 0x16, 0x2a, 0x00, 0x74, 0x5d, 0x46, 0xb5,
+ 0x00, 0x74, 0x5e, 0x0a, 0x36, 0x00, 0x74, 0x5f,
+ 0x16, 0x27, 0x00, 0x74, 0x60, 0x0f, 0xa4, 0x00,
+ 0x74, 0x62, 0x42, 0x51, 0x00, 0x74, 0x63, 0x16,
+ 0x2d, 0x00, 0x74, 0x64, 0x1d, 0x35, 0x00, 0x74,
+ 0x66, 0x39, 0xe9, 0x00, 0x74, 0x67, 0x55, 0xea,
+ 0x00, 0x74, 0x68, 0x55, 0xeb, 0x00, 0x74, 0x69,
+ 0x16, 0x2b, 0x00, 0x74, 0x6a, 0x16, 0x2e, 0x00,
+ 0x74, 0x6b, 0x39, 0xea, 0x00, 0x74, 0x6d, 0x42,
+ 0x52, 0x00, 0x74, 0x6e, 0x55, 0xec, 0x00, 0x74,
+ 0x6f, 0x16, 0x20, 0x00, 0x74, 0x70, 0x16, 0x2c,
+ 0x00, 0x74, 0x71, 0x39, 0xeb, 0x00, 0x74, 0x72,
+ 0x4c, 0x57, 0x00, 0x74, 0x73, 0x08, 0x2c, 0x00,
+ 0x74, 0x76, 0x16, 0x2f, 0x00, 0x74, 0x7e, 0x16,
+ 0x30, 0x00, 0x74, 0x80, 0x39, 0xec, 0x00, 0x74,
+ 0x81, 0x46, 0xb6, 0x00, 0x74, 0x83, 0x0f, 0x68,
+ 0x00, 0x74, 0x85, 0x39, 0xed, 0x00, 0x74, 0x86,
+ 0x39, 0xee, 0x00, 0x74, 0x87, 0x39, 0xef, 0x00,
+ 0x74, 0x88, 0x46, 0xb7, 0x00, 0x74, 0x89, 0x21,
+ 0x72, 0x00, 0x74, 0x8b, 0x16, 0x31, 0x00, 0x74,
+ 0x8f, 0x55, 0xed, 0x00, 0x74, 0x90, 0x39, 0xf0,
+ 0x00, 0x74, 0x91, 0x55, 0xee, 0x00, 0x74, 0x92,
+ 0x46, 0xb9, 0x00, 0x74, 0x97, 0x46, 0xba, 0x00,
+ 0x74, 0x98, 0x39, 0xf1, 0x00, 0x74, 0x99, 0x46,
+ 0xbb, 0x00, 0x74, 0x9a, 0x55, 0xef, 0x00, 0x74,
+ 0x9c, 0x39, 0xf2, 0x00, 0x74, 0x9e, 0x16, 0x32,
+ 0x00, 0x74, 0x9f, 0x21, 0x73, 0x00, 0x74, 0xa0,
+ 0x39, 0xf3, 0x00, 0x74, 0xa1, 0x46, 0xbc, 0x00,
+ 0x74, 0xa2, 0x16, 0x1e, 0x00, 0x74, 0xa3, 0x39,
+ 0xf4, 0x00, 0x74, 0xa5, 0x46, 0xbd, 0x00, 0x74,
+ 0xa6, 0x42, 0x53, 0x00, 0x74, 0xa7, 0x16, 0x33,
+ 0x00, 0x74, 0xa8, 0x39, 0xf5, 0x00, 0x74, 0xa9,
+ 0x42, 0x54, 0x00, 0x74, 0xaa, 0x46, 0xbe, 0x00,
+ 0x74, 0xab, 0x39, 0xf6, 0x00, 0x74, 0xae, 0x55,
+ 0xf0, 0x00, 0x74, 0xaf, 0x4c, 0x58, 0x00, 0x74,
+ 0xb0, 0x06, 0x00, 0x00, 0x74, 0xb1, 0x55, 0xf1,
+ 0x00, 0x74, 0xb2, 0x55, 0xf2, 0x00, 0x74, 0xb5,
+ 0x39, 0xf7, 0x00, 0x74, 0xb9, 0x46, 0xbf, 0x00,
+ 0x74, 0xba, 0x46, 0xc1, 0x00, 0x74, 0xbb, 0x46,
+ 0xc0, 0x00, 0x74, 0xbd, 0x08, 0xd1, 0x00, 0x74,
+ 0xbf, 0x39, 0xf8, 0x00, 0x74, 0xc8, 0x39, 0xf9,
+ 0x00, 0x74, 0xc9, 0x42, 0x55, 0x00, 0x74, 0xca,
+ 0x16, 0x34, 0x00, 0x74, 0xcc, 0x55, 0xf3, 0x00,
+ 0x74, 0xcf, 0x16, 0x35, 0x00, 0x74, 0xd0, 0x55,
+ 0xf4, 0x00, 0x74, 0xd3, 0x55, 0xf5, 0x00, 0x74,
+ 0xd4, 0x16, 0x36, 0x00, 0x74, 0xd6, 0x46, 0xc2,
+ 0x00, 0x74, 0xd8, 0x46, 0xc3, 0x00, 0x74, 0xda,
+ 0x39, 0xfa, 0x00, 0x74, 0xdb, 0x55, 0xf7, 0x00,
+ 0x74, 0xdc, 0x04, 0xdd, 0x00, 0x74, 0xde, 0x39,
+ 0xfb, 0x00, 0x74, 0xdf, 0x4c, 0x59, 0x00, 0x74,
+ 0xe0, 0x16, 0x38, 0x00, 0x74, 0xe2, 0x0d, 0xad,
+ 0x00, 0x74, 0xe3, 0x16, 0x39, 0x00, 0x74, 0xe4,
+ 0x4c, 0x5a, 0x00, 0x74, 0xe6, 0x05, 0xe0, 0x00,
+ 0x74, 0xe7, 0x16, 0x3a, 0x00, 0x74, 0xe8, 0x55,
+ 0xf8, 0x00, 0x74, 0xe9, 0x16, 0x3b, 0x00, 0x74,
+ 0xea, 0x55, 0xf9, 0x00, 0x74, 0xeb, 0x46, 0xc4,
+ 0x00, 0x74, 0xee, 0x16, 0x3c, 0x00, 0x74, 0xef,
+ 0x37, 0x50, 0x00, 0x74, 0xf0, 0x16, 0x3e, 0x00,
+ 0x74, 0xf1, 0x16, 0x3f, 0x00, 0x74, 0xf2, 0x16,
+ 0x3d, 0x00, 0x74, 0xf4, 0x4c, 0x5b, 0x00, 0x74,
+ 0xf6, 0x0d, 0xc5, 0x00, 0x74, 0xf7, 0x16, 0x41,
+ 0x00, 0x74, 0xf8, 0x16, 0x40, 0x00, 0x74, 0xfa,
+ 0x46, 0xc6, 0x00, 0x74, 0xfb, 0x4c, 0x5c, 0x00,
+ 0x74, 0xfc, 0x55, 0xfb, 0x00, 0x74, 0xff, 0x42,
+ 0x56, 0x00, 0x75, 0x01, 0x21, 0x74, 0x00, 0x75,
+ 0x03, 0x16, 0x43, 0x00, 0x75, 0x04, 0x16, 0x42,
+ 0x00, 0x75, 0x05, 0x16, 0x44, 0x00, 0x75, 0x06,
+ 0x55, 0xfc, 0x00, 0x75, 0x0c, 0x16, 0x45, 0x00,
+ 0x75, 0x0d, 0x16, 0x47, 0x00, 0x75, 0x0e, 0x16,
+ 0x46, 0x00, 0x75, 0x11, 0x08, 0x0b, 0x00, 0x75,
+ 0x12, 0x55, 0xfd, 0x00, 0x75, 0x13, 0x16, 0x49,
+ 0x00, 0x75, 0x15, 0x16, 0x48, 0x00, 0x75, 0x16,
+ 0x4c, 0x5d, 0x00, 0x75, 0x17, 0x42, 0x57, 0x00,
+ 0x75, 0x18, 0x06, 0x01, 0x00, 0x75, 0x1a, 0x0a,
+ 0x19, 0x00, 0x75, 0x1c, 0x0c, 0x36, 0x00, 0x75,
+ 0x1e, 0x16, 0x4a, 0x00, 0x75, 0x1f, 0x0a, 0x5c,
+ 0x00, 0x75, 0x20, 0x46, 0xc8, 0x00, 0x75, 0x21,
+ 0x4c, 0x5e, 0x00, 0x75, 0x22, 0x35, 0xde, 0x00,
+ 0x75, 0x23, 0x08, 0x88, 0x00, 0x75, 0x24, 0x46,
+ 0xc9, 0x00, 0x75, 0x25, 0x05, 0x1b, 0x00, 0x75,
+ 0x26, 0x16, 0x4b, 0x00, 0x75, 0x27, 0x55, 0xfe,
+ 0x00, 0x75, 0x28, 0x0f, 0x3b, 0x00, 0x75, 0x29,
+ 0x55, 0xff, 0x00, 0x75, 0x2a, 0x46, 0xca, 0x00,
+ 0x75, 0x2b, 0x0e, 0x33, 0x00, 0x75, 0x2c, 0x16,
+ 0x4c, 0x00, 0x75, 0x2f, 0x20, 0xf2, 0x00, 0x75,
+ 0x30, 0x0c, 0x3e, 0x00, 0x75, 0x31, 0x0f, 0x1d,
+ 0x00, 0x75, 0x32, 0x07, 0xd5, 0x00, 0x75, 0x33,
+ 0x0a, 0x03, 0x00, 0x75, 0x36, 0x56, 0x00, 0x00,
+ 0x75, 0x37, 0x0b, 0x89, 0x00, 0x75, 0x38, 0x10,
+ 0xc9, 0x00, 0x75, 0x39, 0x56, 0x01, 0x00, 0x75,
+ 0x3a, 0x0b, 0xca, 0x00, 0x75, 0x3b, 0x05, 0x68,
+ 0x00, 0x75, 0x3c, 0x16, 0x4d, 0x00, 0x75, 0x3d,
+ 0x46, 0xcd, 0x00, 0x75, 0x3e, 0x46, 0xce, 0x00,
+ 0x75, 0x3f, 0x4c, 0x5f, 0x00, 0x75, 0x40, 0x46,
+ 0xcf, 0x00, 0x75, 0x43, 0x56, 0x02, 0x00, 0x75,
+ 0x44, 0x16, 0x4e, 0x00, 0x75, 0x46, 0x16, 0x53,
+ 0x00, 0x75, 0x47, 0x56, 0x03, 0x00, 0x75, 0x48,
+ 0x46, 0xd0, 0x00, 0x75, 0x49, 0x16, 0x51, 0x00,
+ 0x75, 0x4a, 0x16, 0x50, 0x00, 0x75, 0x4b, 0x13,
+ 0xc7, 0x00, 0x75, 0x4c, 0x05, 0x84, 0x00, 0x75,
+ 0x4d, 0x16, 0x4f, 0x00, 0x75, 0x4e, 0x39, 0xfc,
+ 0x00, 0x75, 0x4f, 0x04, 0x9e, 0x00, 0x75, 0x50,
+ 0x46, 0xd1, 0x00, 0x75, 0x51, 0x0d, 0x3e, 0x00,
+ 0x75, 0x52, 0x46, 0xd2, 0x00, 0x75, 0x54, 0x0d,
+ 0x5e, 0x00, 0x75, 0x57, 0x56, 0x04, 0x00, 0x75,
+ 0x59, 0x0f, 0x79, 0x00, 0x75, 0x5a, 0x16, 0x54,
+ 0x00, 0x75, 0x5b, 0x16, 0x52, 0x00, 0x75, 0x5c,
+ 0x0b, 0x9a, 0x00, 0x75, 0x5d, 0x0a, 0x4a, 0x00,
+ 0x75, 0x5e, 0x4c, 0x60, 0x00, 0x75, 0x5f, 0x56,
+ 0x05, 0x00, 0x75, 0x60, 0x0d, 0x3f, 0x00, 0x75,
+ 0x61, 0x56, 0x06, 0x00, 0x75, 0x62, 0x0d, 0x9f,
+ 0x00, 0x75, 0x64, 0x16, 0x56, 0x00, 0x75, 0x65,
+ 0x0f, 0x74, 0x00, 0x75, 0x66, 0x07, 0x23, 0x00,
+ 0x75, 0x67, 0x16, 0x57, 0x00, 0x75, 0x69, 0x16,
+ 0x55, 0x00, 0x75, 0x6a, 0x0d, 0x6a, 0x00, 0x75,
+ 0x6b, 0x16, 0x58, 0x00, 0x75, 0x6c, 0x3c, 0x3b,
+ 0x00, 0x75, 0x6d, 0x16, 0x59, 0x00, 0x75, 0x6f,
+ 0x21, 0x75, 0x00, 0x75, 0x70, 0x04, 0x9f, 0x00,
+ 0x75, 0x71, 0x46, 0xd4, 0x00, 0x75, 0x72, 0x46,
+ 0xd3, 0x00, 0x75, 0x73, 0x09, 0xde, 0x00, 0x75,
+ 0x74, 0x16, 0x5e, 0x00, 0x75, 0x75, 0x37, 0x51,
+ 0x00, 0x75, 0x76, 0x16, 0x5b, 0x00, 0x75, 0x77,
+ 0x0c, 0xc5, 0x00, 0x75, 0x78, 0x16, 0x5a, 0x00,
+ 0x75, 0x79, 0x39, 0xfd, 0x00, 0x75, 0x7a, 0x46,
+ 0xd5, 0x00, 0x75, 0x7b, 0x56, 0x07, 0x00, 0x75,
+ 0x7c, 0x56, 0x08, 0x00, 0x75, 0x7d, 0x46, 0xd6,
+ 0x00, 0x75, 0x7e, 0x46, 0xd7, 0x00, 0x75, 0x7f,
+ 0x06, 0x40, 0x00, 0x75, 0x81, 0x39, 0xfe, 0x00,
+ 0x75, 0x82, 0x16, 0x61, 0x00, 0x75, 0x85, 0x56,
+ 0x09, 0x00, 0x75, 0x86, 0x16, 0x5c, 0x00, 0x75,
+ 0x87, 0x16, 0x5d, 0x00, 0x75, 0x89, 0x16, 0x60,
+ 0x00, 0x75, 0x8a, 0x16, 0x5f, 0x00, 0x75, 0x8b,
+ 0x0d, 0x97, 0x00, 0x75, 0x8c, 0x46, 0xd8, 0x00,
+ 0x75, 0x8e, 0x0a, 0xc4, 0x00, 0x75, 0x8f, 0x0a,
+ 0xc3, 0x00, 0x75, 0x90, 0x39, 0xff, 0x00, 0x75,
+ 0x91, 0x06, 0x59, 0x00, 0x75, 0x92, 0x3a, 0x00,
+ 0x00, 0x75, 0x93, 0x3a, 0x01, 0x00, 0x75, 0x94,
+ 0x16, 0x62, 0x00, 0x75, 0x95, 0x56, 0x0a, 0x00,
+ 0x75, 0x99, 0x4c, 0x61, 0x00, 0x75, 0x9a, 0x16,
+ 0x63, 0x00, 0x75, 0x9c, 0x56, 0x0b, 0x00, 0x75,
+ 0x9d, 0x16, 0x64, 0x00, 0x75, 0xa2, 0x46, 0xda,
+ 0x00, 0x75, 0xa3, 0x16, 0x66, 0x00, 0x75, 0xa4,
+ 0x4c, 0x62, 0x00, 0x75, 0xa5, 0x16, 0x65, 0x00,
+ 0x75, 0xab, 0x04, 0xf8, 0x00, 0x75, 0xb0, 0x46,
+ 0xdc, 0x00, 0x75, 0xb1, 0x16, 0x6e, 0x00, 0x75,
+ 0xb2, 0x0d, 0x7c, 0x00, 0x75, 0xb3, 0x16, 0x68,
+ 0x00, 0x75, 0xb4, 0x3a, 0x02, 0x00, 0x75, 0xb5,
+ 0x16, 0x6a, 0x00, 0x75, 0xb7, 0x46, 0xdd, 0x00,
+ 0x75, 0xb8, 0x16, 0x6c, 0x00, 0x75, 0xb9, 0x0a,
+ 0x04, 0x00, 0x75, 0xba, 0x56, 0x0c, 0x00, 0x75,
+ 0xbc, 0x16, 0x6d, 0x00, 0x75, 0xbd, 0x16, 0x6b,
+ 0x00, 0x75, 0xbe, 0x08, 0xec, 0x00, 0x75, 0xbf,
+ 0x46, 0xde, 0x00, 0x75, 0xc0, 0x46, 0xdf, 0x00,
+ 0x75, 0xc1, 0x4c, 0x63, 0x00, 0x75, 0xc2, 0x16,
+ 0x67, 0x00, 0x75, 0xc3, 0x16, 0x69, 0x00, 0x75,
+ 0xc4, 0x4c, 0x64, 0x00, 0x75, 0xc5, 0x0d, 0xb4,
+ 0x00, 0x75, 0xc6, 0x46, 0xe0, 0x00, 0x75, 0xc7,
+ 0x09, 0xb1, 0x00, 0x75, 0xca, 0x16, 0x70, 0x00,
+ 0x75, 0xcc, 0x4c, 0x65, 0x00, 0x75, 0xcd, 0x16,
+ 0x6f, 0x00, 0x75, 0xce, 0x42, 0x59, 0x00, 0x75,
+ 0xcf, 0x46, 0xe1, 0x00, 0x75, 0xd2, 0x16, 0x71,
+ 0x00, 0x75, 0xd3, 0x46, 0xe2, 0x00, 0x75, 0xd4,
+ 0x08, 0xd2, 0x00, 0x75, 0xd5, 0x08, 0x1f, 0x00,
+ 0x75, 0xd7, 0x4c, 0x66, 0x00, 0x75, 0xd8, 0x0c,
+ 0x71, 0x00, 0x75, 0xd9, 0x16, 0x72, 0x00, 0x75,
+ 0xdb, 0x0b, 0xe7, 0x00, 0x75, 0xdc, 0x4c, 0x67,
+ 0x00, 0x75, 0xdd, 0x46, 0xe3, 0x00, 0x75, 0xde,
+ 0x16, 0x74, 0x00, 0x75, 0xdf, 0x46, 0xe4, 0x00,
+ 0x75, 0xe0, 0x46, 0xe5, 0x00, 0x75, 0xe1, 0x4c,
+ 0x68, 0x00, 0x75, 0xe2, 0x0f, 0x69, 0x00, 0x75,
+ 0xe3, 0x16, 0x73, 0x00, 0x75, 0xe4, 0x3a, 0x03,
+ 0x00, 0x75, 0xe7, 0x46, 0xe6, 0x00, 0x75, 0xe9,
+ 0x0a, 0xeb, 0x00, 0x75, 0xec, 0x37, 0x52, 0x00,
+ 0x75, 0xee, 0x46, 0xe7, 0x00, 0x75, 0xef, 0x4c,
+ 0x69, 0x00, 0x75, 0xf0, 0x16, 0x79, 0x00, 0x75,
+ 0xf1, 0x46, 0xe8, 0x00, 0x75, 0xf2, 0x16, 0x7b,
+ 0x00, 0x75, 0xf3, 0x16, 0x7c, 0x00, 0x75, 0xf4,
+ 0x0b, 0x92, 0x00, 0x75, 0xf9, 0x3a, 0x04, 0x00,
+ 0x75, 0xfa, 0x16, 0x7a, 0x00, 0x75, 0xfc, 0x16,
+ 0x77, 0x00, 0x75, 0xfe, 0x16, 0x75, 0x00, 0x75,
+ 0xff, 0x16, 0x76, 0x00, 0x76, 0x00, 0x3a, 0x05,
+ 0x00, 0x76, 0x01, 0x16, 0x78, 0x00, 0x76, 0x02,
+ 0x42, 0x5a, 0x00, 0x76, 0x03, 0x46, 0xe9, 0x00,
+ 0x76, 0x04, 0x4c, 0x6a, 0x00, 0x76, 0x07, 0x46,
+ 0xeb, 0x00, 0x76, 0x08, 0x42, 0x5b, 0x00, 0x76,
+ 0x09, 0x16, 0x7f, 0x00, 0x76, 0x0a, 0x3a, 0x06,
+ 0x00, 0x76, 0x0b, 0x16, 0x7d, 0x00, 0x76, 0x0c,
+ 0x4c, 0x6b, 0x00, 0x76, 0x0d, 0x16, 0x7e, 0x00,
+ 0x76, 0x0f, 0x46, 0xec, 0x00, 0x76, 0x12, 0x56,
+ 0x0d, 0x00, 0x76, 0x13, 0x46, 0xef, 0x00, 0x76,
+ 0x15, 0x3a, 0x07, 0x00, 0x76, 0x16, 0x3a, 0x08,
+ 0x00, 0x76, 0x18, 0x46, 0xea, 0x00, 0x76, 0x19,
+ 0x3a, 0x09, 0x00, 0x76, 0x1b, 0x46, 0xf0, 0x00,
+ 0x76, 0x1c, 0x46, 0xf1, 0x00, 0x76, 0x1d, 0x4c,
+ 0x6c, 0x00, 0x76, 0x1e, 0x3a, 0x0a, 0x00, 0x76,
+ 0x1f, 0x16, 0x80, 0x00, 0x76, 0x20, 0x16, 0x82,
+ 0x00, 0x76, 0x21, 0x16, 0x83, 0x00, 0x76, 0x22,
+ 0x16, 0x84, 0x00, 0x76, 0x23, 0x56, 0x0e, 0x00,
+ 0x76, 0x24, 0x16, 0x85, 0x00, 0x76, 0x25, 0x46,
+ 0xf3, 0x00, 0x76, 0x26, 0x36, 0x45, 0x00, 0x76,
+ 0x27, 0x16, 0x81, 0x00, 0x76, 0x28, 0x46, 0xf4,
+ 0x00, 0x76, 0x29, 0x56, 0x0f, 0x00, 0x76, 0x2d,
+ 0x3a, 0x0b, 0x00, 0x76, 0x30, 0x16, 0x87, 0x00,
+ 0x76, 0x32, 0x4c, 0x6d, 0x00, 0x76, 0x33, 0x46,
+ 0xf6, 0x00, 0x76, 0x34, 0x16, 0x86, 0x00, 0x76,
+ 0x35, 0x3a, 0x0c, 0x00, 0x76, 0x38, 0x4c, 0x6e,
+ 0x00, 0x76, 0x39, 0x56, 0x10, 0x00, 0x76, 0x3a,
+ 0x56, 0x11, 0x00, 0x76, 0x3b, 0x16, 0x88, 0x00,
+ 0x76, 0x3c, 0x46, 0xf5, 0x00, 0x76, 0x40, 0x56,
+ 0x12, 0x00, 0x76, 0x41, 0x46, 0xf9, 0x00, 0x76,
+ 0x42, 0x0f, 0x8d, 0x00, 0x76, 0x43, 0x3a, 0x0d,
+ 0x00, 0x76, 0x44, 0x56, 0x13, 0x00, 0x76, 0x45,
+ 0x4c, 0x6f, 0x00, 0x76, 0x46, 0x16, 0x8b, 0x00,
+ 0x76, 0x47, 0x16, 0x89, 0x00, 0x76, 0x48, 0x16,
+ 0x8a, 0x00, 0x76, 0x49, 0x46, 0xfb, 0x00, 0x76,
+ 0x4a, 0x4c, 0x70, 0x00, 0x76, 0x4b, 0x3a, 0x0e,
+ 0x00, 0x76, 0x4c, 0x06, 0x1e, 0x00, 0x76, 0x4e,
+ 0x37, 0x53, 0x00, 0x76, 0x52, 0x0f, 0x0a, 0x00,
+ 0x76, 0x55, 0x46, 0xfc, 0x00, 0x76, 0x56, 0x0e,
+ 0x1a, 0x00, 0x76, 0x58, 0x16, 0x8d, 0x00, 0x76,
+ 0x59, 0x56, 0x14, 0x00, 0x76, 0x5c, 0x16, 0x8c,
+ 0x00, 0x76, 0x5f, 0x4c, 0x71, 0x00, 0x76, 0x61,
+ 0x16, 0x8e, 0x00, 0x76, 0x62, 0x16, 0x8f, 0x00,
+ 0x76, 0x64, 0x42, 0x5c, 0x00, 0x76, 0x65, 0x3a,
+ 0x0f, 0x00, 0x76, 0x67, 0x16, 0x93, 0x00, 0x76,
+ 0x68, 0x16, 0x90, 0x00, 0x76, 0x69, 0x16, 0x91,
+ 0x00, 0x76, 0x6a, 0x16, 0x92, 0x00, 0x76, 0x6c,
+ 0x16, 0x94, 0x00, 0x76, 0x6d, 0x3a, 0x10, 0x00,
+ 0x76, 0x6e, 0x46, 0xfe, 0x00, 0x76, 0x6f, 0x3a,
+ 0x11, 0x00, 0x76, 0x70, 0x16, 0x95, 0x00, 0x76,
+ 0x71, 0x3a, 0x12, 0x00, 0x76, 0x72, 0x16, 0x96,
+ 0x00, 0x76, 0x74, 0x3a, 0x13, 0x00, 0x76, 0x76,
+ 0x16, 0x97, 0x00, 0x76, 0x78, 0x16, 0x98, 0x00,
+ 0x76, 0x7a, 0x0d, 0x43, 0x00, 0x76, 0x7b, 0x0c,
+ 0x4a, 0x00, 0x76, 0x7c, 0x16, 0x99, 0x00, 0x76,
+ 0x7d, 0x0d, 0x28, 0x00, 0x76, 0x7e, 0x0d, 0xa6,
+ 0x00, 0x76, 0x80, 0x16, 0x9a, 0x00, 0x76, 0x81,
+ 0x42, 0x5d, 0x00, 0x76, 0x82, 0x21, 0x76, 0x00,
+ 0x76, 0x83, 0x16, 0x9b, 0x00, 0x76, 0x84, 0x0c,
+ 0x24, 0x00, 0x76, 0x85, 0x56, 0x15, 0x00, 0x76,
+ 0x86, 0x05, 0x85, 0x00, 0x76, 0x87, 0x07, 0xd6,
+ 0x00, 0x76, 0x88, 0x16, 0x9c, 0x00, 0x76, 0x8b,
+ 0x16, 0x9d, 0x00, 0x76, 0x8c, 0x56, 0x16, 0x00,
+ 0x76, 0x8d, 0x56, 0x17, 0x00, 0x76, 0x8e, 0x16,
+ 0x9e, 0x00, 0x76, 0x90, 0x08, 0x77, 0x00, 0x76,
+ 0x93, 0x16, 0xa0, 0x00, 0x76, 0x95, 0x46, 0xff,
+ 0x00, 0x76, 0x96, 0x16, 0x9f, 0x00, 0x76, 0x99,
+ 0x16, 0xa1, 0x00, 0x76, 0x9a, 0x16, 0xa2, 0x00,
+ 0x76, 0x9b, 0x21, 0x79, 0x00, 0x76, 0x9c, 0x21,
+ 0x77, 0x00, 0x76, 0x9d, 0x42, 0x5e, 0x00, 0x76,
+ 0x9e, 0x21, 0x78, 0x00, 0x76, 0x9f, 0x56, 0x18,
+ 0x00, 0x76, 0xa0, 0x47, 0x01, 0x00, 0x76, 0xa1,
+ 0x47, 0x00, 0x00, 0x76, 0xa2, 0x56, 0x19, 0x00,
+ 0x76, 0xa3, 0x56, 0x1a, 0x00, 0x76, 0xa4, 0x3a,
+ 0x14, 0x00, 0x76, 0xa5, 0x3a, 0x15, 0x00, 0x76,
+ 0xa6, 0x21, 0x7a, 0x00, 0x76, 0xa7, 0x47, 0x02,
+ 0x00, 0x76, 0xa8, 0x47, 0x03, 0x00, 0x76, 0xaa,
+ 0x42, 0x5f, 0x00, 0x76, 0xad, 0x4c, 0x72, 0x00,
+ 0x76, 0xae, 0x0d, 0x7d, 0x00, 0x76, 0xaf, 0x47,
+ 0x04, 0x00, 0x76, 0xb0, 0x16, 0xa3, 0x00, 0x76,
+ 0xb4, 0x16, 0xa4, 0x00, 0x76, 0xb6, 0x42, 0x60,
+ 0x00, 0x76, 0xb7, 0x1d, 0x1c, 0x00, 0x76, 0xb8,
+ 0x16, 0xa5, 0x00, 0x76, 0xb9, 0x16, 0xa6, 0x00,
+ 0x76, 0xba, 0x16, 0xa7, 0x00, 0x76, 0xbd, 0x4c,
+ 0x73, 0x00, 0x76, 0xbf, 0x08, 0x7c, 0x00, 0x76,
+ 0xc1, 0x56, 0x1b, 0x00, 0x76, 0xc2, 0x16, 0xa8,
+ 0x00, 0x76, 0xc3, 0x0d, 0x0c, 0x00, 0x76, 0xc5,
+ 0x3a, 0x16, 0x00, 0x76, 0xc6, 0x0e, 0x8d, 0x00,
+ 0x76, 0xc8, 0x04, 0xf0, 0x00, 0x76, 0xc9, 0x47,
+ 0x06, 0x00, 0x76, 0xca, 0x04, 0xf9, 0x00, 0x76,
+ 0xcb, 0x56, 0x1c, 0x00, 0x76, 0xcc, 0x3a, 0x17,
+ 0x00, 0x76, 0xcd, 0x16, 0xa9, 0x00, 0x76, 0xce,
+ 0x42, 0x61, 0x00, 0x76, 0xd2, 0x16, 0xab, 0x00,
+ 0x76, 0xd4, 0x42, 0x62, 0x00, 0x76, 0xd6, 0x16,
+ 0xaa, 0x00, 0x76, 0xd7, 0x0c, 0x6a, 0x00, 0x76,
+ 0xd9, 0x4c, 0x74, 0x00, 0x76, 0xdb, 0x0a, 0x5d,
+ 0x00, 0x76, 0xdc, 0x14, 0xd8, 0x00, 0x76, 0xde,
+ 0x16, 0xac, 0x00, 0x76, 0xdf, 0x0e, 0xcd, 0x00,
+ 0x76, 0xe0, 0x56, 0x1e, 0x00, 0x76, 0xe1, 0x16,
+ 0xad, 0x00, 0x76, 0xe3, 0x06, 0x02, 0x00, 0x76,
+ 0xe4, 0x0d, 0x6b, 0x00, 0x76, 0xe5, 0x16, 0xae,
+ 0x00, 0x76, 0xe6, 0x42, 0x63, 0x00, 0x76, 0xe7,
+ 0x16, 0xaf, 0x00, 0x76, 0xe8, 0x47, 0x08, 0x00,
+ 0x76, 0xea, 0x16, 0xb0, 0x00, 0x76, 0xeb, 0x4c,
+ 0x75, 0x00, 0x76, 0xec, 0x3a, 0x18, 0x00, 0x76,
+ 0xee, 0x0e, 0xe8, 0x00, 0x76, 0xf0, 0x4c, 0x76,
+ 0x00, 0x76, 0xf1, 0x42, 0x64, 0x00, 0x76, 0xf2,
+ 0x0e, 0xe1, 0x00, 0x76, 0xf4, 0x0b, 0xda, 0x00,
+ 0x76, 0xf6, 0x56, 0x1f, 0x00, 0x76, 0xf8, 0x0a,
+ 0xec, 0x00, 0x76, 0xf9, 0x4c, 0x77, 0x00, 0x76,
+ 0xfb, 0x16, 0xb2, 0x00, 0x76, 0xfc, 0x3a, 0x19,
+ 0x00, 0x76, 0xfe, 0x09, 0x6c, 0x00, 0x77, 0x00,
+ 0x4c, 0x78, 0x00, 0x77, 0x01, 0x09, 0xb2, 0x00,
+ 0x77, 0x04, 0x16, 0xb5, 0x00, 0x77, 0x06, 0x56,
+ 0x20, 0x00, 0x77, 0x07, 0x16, 0xb4, 0x00, 0x77,
+ 0x08, 0x16, 0xb3, 0x00, 0x77, 0x09, 0x0d, 0x91,
+ 0x00, 0x77, 0x0a, 0x42, 0x65, 0x00, 0x77, 0x0b,
+ 0x06, 0x03, 0x00, 0x77, 0x0c, 0x07, 0x5d, 0x00,
+ 0x77, 0x0e, 0x4c, 0x79, 0x00, 0x77, 0x12, 0x56,
+ 0x21, 0x00, 0x77, 0x14, 0x56, 0x22, 0x00, 0x77,
+ 0x15, 0x56, 0x23, 0x00, 0x77, 0x17, 0x47, 0x0a,
+ 0x00, 0x77, 0x19, 0x42, 0x66, 0x00, 0x77, 0x1a,
+ 0x47, 0x0b, 0x00, 0x77, 0x1b, 0x16, 0xbb, 0x00,
+ 0x77, 0x1c, 0x56, 0x24, 0x00, 0x77, 0x1e, 0x34,
+ 0x2d, 0x00, 0x77, 0x1f, 0x0a, 0x05, 0x00, 0x77,
+ 0x20, 0x0e, 0xbe, 0x00, 0x77, 0x22, 0x4c, 0x7a,
+ 0x00, 0x77, 0x24, 0x16, 0xb7, 0x00, 0x77, 0x25,
+ 0x16, 0xb9, 0x00, 0x77, 0x26, 0x16, 0xba, 0x00,
+ 0x77, 0x28, 0x4c, 0x7b, 0x00, 0x77, 0x29, 0x16,
+ 0xb6, 0x00, 0x77, 0x2d, 0x47, 0x0c, 0x00, 0x77,
+ 0x2e, 0x56, 0x25, 0x00, 0x77, 0x2f, 0x4c, 0x7c,
+ 0x00, 0x77, 0x34, 0x3a, 0x1a, 0x00, 0x77, 0x35,
+ 0x47, 0x0d, 0x00, 0x77, 0x36, 0x3a, 0x1b, 0x00,
+ 0x77, 0x37, 0x16, 0xbc, 0x00, 0x77, 0x38, 0x16,
+ 0xbd, 0x00, 0x77, 0x39, 0x4c, 0x7d, 0x00, 0x77,
+ 0x3a, 0x0b, 0xcb, 0x00, 0x77, 0x3c, 0x06, 0x1f,
+ 0x00, 0x77, 0x3d, 0x56, 0x26, 0x00, 0x77, 0x3e,
+ 0x4c, 0x7e, 0x00, 0x77, 0x40, 0x0b, 0xa3, 0x00,
+ 0x77, 0x42, 0x56, 0x27, 0x00, 0x77, 0x45, 0x4c,
+ 0x7f, 0x00, 0x77, 0x46, 0x21, 0x7c, 0x00, 0x77,
+ 0x47, 0x16, 0xbe, 0x00, 0x77, 0x4a, 0x4c, 0x80,
+ 0x00, 0x77, 0x4d, 0x42, 0x67, 0x00, 0x77, 0x4e,
+ 0x42, 0x68, 0x00, 0x77, 0x4f, 0x4c, 0x81, 0x00,
+ 0x77, 0x52, 0x56, 0x28, 0x00, 0x77, 0x56, 0x56,
+ 0x29, 0x00, 0x77, 0x57, 0x56, 0x2a, 0x00, 0x77,
+ 0x58, 0x47, 0x12, 0x00, 0x77, 0x5a, 0x16, 0xbf,
+ 0x00, 0x77, 0x5b, 0x16, 0xc2, 0x00, 0x77, 0x5c,
+ 0x3a, 0x1c, 0x00, 0x77, 0x5e, 0x4c, 0x82, 0x00,
+ 0x77, 0x5f, 0x3a, 0x1d, 0x00, 0x77, 0x60, 0x3a,
+ 0x1e, 0x00, 0x77, 0x61, 0x0a, 0x2d, 0x00, 0x77,
+ 0x62, 0x1e, 0xc5, 0x00, 0x77, 0x63, 0x0c, 0x9c,
+ 0x00, 0x77, 0x64, 0x4c, 0x83, 0x00, 0x77, 0x65,
+ 0x16, 0xc3, 0x00, 0x77, 0x66, 0x0e, 0x81, 0x00,
+ 0x77, 0x67, 0x4c, 0x84, 0x00, 0x77, 0x68, 0x16,
+ 0xc0, 0x00, 0x77, 0x6a, 0x37, 0x55, 0x00, 0x77,
+ 0x6b, 0x16, 0xc1, 0x00, 0x77, 0x6c, 0x4c, 0x85,
+ 0x00, 0x77, 0x70, 0x56, 0x2b, 0x00, 0x77, 0x72,
+ 0x3a, 0x1f, 0x00, 0x77, 0x73, 0x56, 0x2c, 0x00,
+ 0x77, 0x74, 0x56, 0x2d, 0x00, 0x77, 0x79, 0x16,
+ 0xc6, 0x00, 0x77, 0x7a, 0x42, 0x69, 0x00, 0x77,
+ 0x7c, 0x47, 0x14, 0x00, 0x77, 0x7d, 0x3a, 0x20,
+ 0x00, 0x77, 0x7e, 0x16, 0xc5, 0x00, 0x77, 0x7f,
+ 0x16, 0xc4, 0x00, 0x77, 0x80, 0x42, 0x6a, 0x00,
+ 0x77, 0x84, 0x4c, 0x86, 0x00, 0x77, 0x8b, 0x16,
+ 0xc8, 0x00, 0x77, 0x8c, 0x4c, 0x87, 0x00, 0x77,
+ 0x8d, 0x4c, 0x88, 0x00, 0x77, 0x8e, 0x16, 0xc7,
+ 0x00, 0x77, 0x91, 0x16, 0xc9, 0x00, 0x77, 0x94,
+ 0x42, 0x6b, 0x00, 0x77, 0x95, 0x3a, 0x21, 0x00,
+ 0x77, 0x96, 0x4c, 0x89, 0x00, 0x77, 0x9a, 0x47,
+ 0x17, 0x00, 0x77, 0x9e, 0x16, 0xcb, 0x00, 0x77,
+ 0x9f, 0x47, 0x18, 0x00, 0x77, 0xa0, 0x16, 0xca,
+ 0x00, 0x77, 0xa2, 0x47, 0x19, 0x00, 0x77, 0xa4,
+ 0x47, 0x1a, 0x00, 0x77, 0xa5, 0x0e, 0x1d, 0x00,
+ 0x77, 0xa7, 0x4c, 0x8a, 0x00, 0x77, 0xa9, 0x37,
+ 0x56, 0x00, 0x77, 0xaa, 0x3a, 0x22, 0x00, 0x77,
+ 0xac, 0x09, 0x60, 0x00, 0x77, 0xad, 0x0f, 0x8e,
+ 0x00, 0x77, 0xae, 0x56, 0x30, 0x00, 0x77, 0xaf,
+ 0x4c, 0x8b, 0x00, 0x77, 0xb0, 0x16, 0xcc, 0x00,
+ 0x77, 0xb1, 0x56, 0x31, 0x00, 0x77, 0xb3, 0x0c,
+ 0x8f, 0x00, 0x77, 0xb5, 0x56, 0x32, 0x00, 0x77,
+ 0xb6, 0x16, 0xcd, 0x00, 0x77, 0xb7, 0x4c, 0x8c,
+ 0x00, 0x77, 0xb9, 0x16, 0xce, 0x00, 0x77, 0xbb,
+ 0x16, 0xd2, 0x00, 0x77, 0xbc, 0x16, 0xd0, 0x00,
+ 0x77, 0xbd, 0x16, 0xd1, 0x00, 0x77, 0xbe, 0x4c,
+ 0x8d, 0x00, 0x77, 0xbf, 0x16, 0xcf, 0x00, 0x77,
+ 0xc3, 0x56, 0x33, 0x00, 0x77, 0xc7, 0x16, 0xd3,
+ 0x00, 0x77, 0xc9, 0x4c, 0x8e, 0x00, 0x77, 0xcd,
+ 0x16, 0xd4, 0x00, 0x77, 0xd1, 0x4c, 0x8f, 0x00,
+ 0x77, 0xd2, 0x56, 0x34, 0x00, 0x77, 0xd5, 0x56,
+ 0x35, 0x00, 0x77, 0xd7, 0x16, 0xd5, 0x00, 0x77,
+ 0xd9, 0x4c, 0x90, 0x00, 0x77, 0xda, 0x16, 0xd6,
+ 0x00, 0x77, 0xdb, 0x0e, 0xc3, 0x00, 0x77, 0xdc,
+ 0x16, 0xd7, 0x00, 0x77, 0xde, 0x47, 0x1b, 0x00,
+ 0x77, 0xdf, 0x47, 0x1c, 0x00, 0x77, 0xe0, 0x42,
+ 0x6c, 0x00, 0x77, 0xe2, 0x0e, 0xfc, 0x00, 0x77,
+ 0xe3, 0x16, 0xd8, 0x00, 0x77, 0xe4, 0x47, 0x1d,
+ 0x00, 0x77, 0xe5, 0x0b, 0x8c, 0x00, 0x77, 0xe6,
+ 0x3a, 0x23, 0x00, 0x77, 0xe7, 0x0d, 0x20, 0x00,
+ 0x77, 0xe9, 0x06, 0xe3, 0x00, 0x77, 0xea, 0x47,
+ 0x1e, 0x00, 0x77, 0xec, 0x47, 0x1f, 0x00, 0x77,
+ 0xed, 0x0b, 0x79, 0x00, 0x77, 0xee, 0x16, 0xd9,
+ 0x00, 0x77, 0xef, 0x06, 0xb2, 0x00, 0x77, 0xf0,
+ 0x3a, 0x24, 0x00, 0x77, 0xf1, 0x4c, 0x91, 0x00,
+ 0x77, 0xf3, 0x0a, 0x74, 0x00, 0x77, 0xf4, 0x3a,
+ 0x25, 0x00, 0x77, 0xf8, 0x56, 0x36, 0x00, 0x77,
+ 0xfb, 0x47, 0x20, 0x00, 0x77, 0xfc, 0x16, 0xda,
+ 0x00, 0x78, 0x02, 0x08, 0x2d, 0x00, 0x78, 0x05,
+ 0x47, 0x22, 0x00, 0x78, 0x06, 0x3a, 0x26, 0x00,
+ 0x78, 0x09, 0x47, 0x23, 0x00, 0x78, 0x0c, 0x16,
+ 0xdb, 0x00, 0x78, 0x0d, 0x47, 0x24, 0x00, 0x78,
+ 0x0e, 0x56, 0x37, 0x00, 0x78, 0x11, 0x56, 0x38,
+ 0x00, 0x78, 0x12, 0x16, 0xdc, 0x00, 0x78, 0x14,
+ 0x07, 0x5a, 0x00, 0x78, 0x15, 0x08, 0x45, 0x00,
+ 0x78, 0x19, 0x47, 0x25, 0x00, 0x78, 0x1d, 0x56,
+ 0x39, 0x00, 0x78, 0x20, 0x16, 0xde, 0x00, 0x78,
+ 0x21, 0x21, 0x7e, 0x00, 0x78, 0x22, 0x3a, 0x27,
+ 0x00, 0x78, 0x23, 0x56, 0x3a, 0x00, 0x78, 0x25,
+ 0x0c, 0x50, 0x00, 0x78, 0x26, 0x08, 0x46, 0x00,
+ 0x78, 0x27, 0x06, 0x68, 0x00, 0x78, 0x2c, 0x47,
+ 0x26, 0x00, 0x78, 0x2d, 0x3a, 0x28, 0x00, 0x78,
+ 0x2e, 0x3a, 0x29, 0x00, 0x78, 0x30, 0x3a, 0x2a,
+ 0x00, 0x78, 0x32, 0x0e, 0x52, 0x00, 0x78, 0x34,
+ 0x0d, 0x01, 0x00, 0x78, 0x35, 0x3a, 0x2b, 0x00,
+ 0x78, 0x37, 0x4c, 0x92, 0x00, 0x78, 0x3a, 0x0c,
+ 0x51, 0x00, 0x78, 0x3f, 0x07, 0xee, 0x00, 0x78,
+ 0x43, 0x42, 0x6e, 0x00, 0x78, 0x44, 0x56, 0x3b,
+ 0x00, 0x78, 0x45, 0x16, 0xe0, 0x00, 0x78, 0x47,
+ 0x47, 0x27, 0x00, 0x78, 0x48, 0x56, 0x3c, 0x00,
+ 0x78, 0x4c, 0x56, 0x3d, 0x00, 0x78, 0x4e, 0x21,
+ 0x7f, 0x00, 0x78, 0x4f, 0x34, 0x1e, 0x00, 0x78,
+ 0x51, 0x3c, 0x3c, 0x00, 0x78, 0x52, 0x56, 0x3e,
+ 0x00, 0x78, 0x5c, 0x4c, 0x93, 0x00, 0x78, 0x5d,
+ 0x09, 0xb3, 0x00, 0x78, 0x5e, 0x56, 0x3f, 0x00,
+ 0x78, 0x60, 0x56, 0x40, 0x00, 0x78, 0x61, 0x56,
+ 0x41, 0x00, 0x78, 0x63, 0x56, 0x42, 0x00, 0x78,
+ 0x64, 0x21, 0x80, 0x00, 0x78, 0x68, 0x3a, 0x2c,
+ 0x00, 0x78, 0x6a, 0x47, 0x28, 0x00, 0x78, 0x6b,
+ 0x0f, 0x7a, 0x00, 0x78, 0x6c, 0x07, 0xd7, 0x00,
+ 0x78, 0x6e, 0x42, 0x6f, 0x00, 0x78, 0x6f, 0x07,
+ 0x5b, 0x00, 0x78, 0x72, 0x0d, 0x37, 0x00, 0x78,
+ 0x74, 0x16, 0xe2, 0x00, 0x78, 0x7a, 0x21, 0x81,
+ 0x00, 0x78, 0x7c, 0x16, 0xe4, 0x00, 0x78, 0x7e,
+ 0x4c, 0x94, 0x00, 0x78, 0x81, 0x07, 0x9f, 0x00,
+ 0x78, 0x86, 0x16, 0xe3, 0x00, 0x78, 0x87, 0x0c,
+ 0x12, 0x00, 0x78, 0x8a, 0x47, 0x2a, 0x00, 0x78,
+ 0x8c, 0x16, 0xe6, 0x00, 0x78, 0x8d, 0x05, 0x95,
+ 0x00, 0x78, 0x8e, 0x16, 0xe1, 0x00, 0x78, 0x8f,
+ 0x56, 0x43, 0x00, 0x78, 0x91, 0x34, 0x43, 0x00,
+ 0x78, 0x93, 0x04, 0xd2, 0x00, 0x78, 0x94, 0x47,
+ 0x2b, 0x00, 0x78, 0x95, 0x08, 0x5c, 0x00, 0x78,
+ 0x97, 0x0f, 0xf8, 0x00, 0x78, 0x98, 0x4c, 0x95,
+ 0x00, 0x78, 0x9a, 0x16, 0xe5, 0x00, 0x78, 0x9d,
+ 0x47, 0x2d, 0x00, 0x78, 0x9e, 0x3a, 0x2d, 0x00,
+ 0x78, 0x9f, 0x47, 0x2e, 0x00, 0x78, 0xa1, 0x4c,
+ 0x96, 0x00, 0x78, 0xa3, 0x16, 0xe7, 0x00, 0x78,
+ 0xa4, 0x47, 0x2c, 0x00, 0x78, 0xa7, 0x0e, 0x1b,
+ 0x00, 0x78, 0xa8, 0x56, 0x44, 0x00, 0x78, 0xa9,
+ 0x0a, 0x7d, 0x00, 0x78, 0xaa, 0x16, 0xe9, 0x00,
+ 0x78, 0xac, 0x56, 0x45, 0x00, 0x78, 0xad, 0x42,
+ 0x72, 0x00, 0x78, 0xaf, 0x16, 0xea, 0x00, 0x78,
+ 0xb0, 0x42, 0x70, 0x00, 0x78, 0xb1, 0x4c, 0x97,
+ 0x00, 0x78, 0xb2, 0x56, 0x46, 0x00, 0x78, 0xb3,
+ 0x4c, 0x98, 0x00, 0x78, 0xb5, 0x16, 0xe8, 0x00,
+ 0x78, 0xba, 0x05, 0xac, 0x00, 0x78, 0xbb, 0x47,
+ 0x2f, 0x00, 0x78, 0xbc, 0x16, 0xf0, 0x00, 0x78,
+ 0xbd, 0x56, 0x47, 0x00, 0x78, 0xbe, 0x16, 0xef,
+ 0x00, 0x78, 0xbf, 0x56, 0x48, 0x00, 0x78, 0xc1,
+ 0x08, 0xd3, 0x00, 0x78, 0xc5, 0x16, 0xf1, 0x00,
+ 0x78, 0xc6, 0x16, 0xec, 0x00, 0x78, 0xc7, 0x56,
+ 0x49, 0x00, 0x78, 0xc8, 0x3a, 0x2e, 0x00, 0x78,
+ 0xc9, 0x4c, 0x99, 0x00, 0x78, 0xca, 0x16, 0xf2,
+ 0x00, 0x78, 0xcb, 0x16, 0xed, 0x00, 0x78, 0xcc,
+ 0x3a, 0x2f, 0x00, 0x78, 0xce, 0x3a, 0x30, 0x00,
+ 0x78, 0xd0, 0x0d, 0x6c, 0x00, 0x78, 0xd1, 0x16,
+ 0xeb, 0x00, 0x78, 0xd2, 0x56, 0x4a, 0x00, 0x78,
+ 0xd3, 0x4c, 0x9a, 0x00, 0x78, 0xd4, 0x16, 0xee,
+ 0x00, 0x78, 0xd5, 0x47, 0x30, 0x00, 0x78, 0xd6,
+ 0x56, 0x4b, 0x00, 0x78, 0xda, 0x16, 0xf5, 0x00,
+ 0x78, 0xdb, 0x56, 0x4c, 0x00, 0x78, 0xdf, 0x56,
+ 0x4d, 0x00, 0x78, 0xe0, 0x3a, 0x32, 0x00, 0x78,
+ 0xe1, 0x3a, 0x33, 0x00, 0x78, 0xe4, 0x3a, 0x31,
+ 0x00, 0x78, 0xe6, 0x47, 0x31, 0x00, 0x78, 0xe7,
+ 0x16, 0xf4, 0x00, 0x78, 0xe8, 0x0e, 0x8f, 0x00,
+ 0x78, 0xea, 0x56, 0x4e, 0x00, 0x78, 0xec, 0x16,
+ 0xf3, 0x00, 0x78, 0xef, 0x04, 0xaf, 0x00, 0x78,
+ 0xf2, 0x3a, 0x34, 0x00, 0x78, 0xf3, 0x56, 0x4f,
+ 0x00, 0x78, 0xf4, 0x16, 0xf7, 0x00, 0x78, 0xf6,
+ 0x56, 0x50, 0x00, 0x78, 0xf7, 0x3a, 0x35, 0x00,
+ 0x78, 0xf9, 0x47, 0x32, 0x00, 0x78, 0xfa, 0x47,
+ 0x33, 0x00, 0x78, 0xfb, 0x3a, 0x36, 0x00, 0x78,
+ 0xfd, 0x16, 0xf6, 0x00, 0x78, 0xfe, 0x47, 0x34,
+ 0x00, 0x78, 0xff, 0x56, 0x51, 0x00, 0x79, 0x00,
+ 0x42, 0x73, 0x00, 0x79, 0x01, 0x09, 0xb4, 0x00,
+ 0x79, 0x06, 0x56, 0x52, 0x00, 0x79, 0x07, 0x16,
+ 0xf8, 0x00, 0x79, 0x0c, 0x4c, 0x9b, 0x00, 0x79,
+ 0x0e, 0x0a, 0xc5, 0x00, 0x79, 0x10, 0x47, 0x36,
+ 0x00, 0x79, 0x11, 0x16, 0xfa, 0x00, 0x79, 0x12,
+ 0x16, 0xf9, 0x00, 0x79, 0x19, 0x16, 0xfb, 0x00,
+ 0x79, 0x1a, 0x56, 0x53, 0x00, 0x79, 0x1b, 0x47,
+ 0x37, 0x00, 0x79, 0x1c, 0x42, 0x74, 0x00, 0x79,
+ 0x1e, 0x56, 0x54, 0x00, 0x79, 0x1f, 0x4c, 0x9c,
+ 0x00, 0x79, 0x20, 0x56, 0x55, 0x00, 0x79, 0x25,
+ 0x47, 0x38, 0x00, 0x79, 0x26, 0x16, 0xdd, 0x00,
+ 0x79, 0x27, 0x4c, 0x9d, 0x00, 0x79, 0x28, 0x4c,
+ 0x9e, 0x00, 0x79, 0x29, 0x56, 0x56, 0x00, 0x79,
+ 0x2a, 0x16, 0xdf, 0x00, 0x79, 0x2b, 0x16, 0xfd,
+ 0x00, 0x79, 0x2c, 0x16, 0xfc, 0x00, 0x79, 0x2d,
+ 0x56, 0x57, 0x00, 0x79, 0x2e, 0x42, 0x75, 0x00,
+ 0x79, 0x30, 0x21, 0x82, 0x00, 0x79, 0x31, 0x3a,
+ 0x37, 0x00, 0x79, 0x34, 0x42, 0x76, 0x00, 0x79,
+ 0x35, 0x56, 0x58, 0x00, 0x79, 0x3a, 0x4a, 0xba,
+ 0x00, 0x79, 0x3b, 0x3a, 0x39, 0x00, 0x79, 0x3c,
+ 0x0f, 0xb1, 0x00, 0x79, 0x3d, 0x3a, 0x3a, 0x00,
+ 0x79, 0x3e, 0x08, 0xfe, 0x00, 0x79, 0x3f, 0x4c,
+ 0x9f, 0x00, 0x79, 0x40, 0x16, 0xfe, 0x00, 0x79,
+ 0x41, 0x07, 0x0d, 0x00, 0x79, 0x42, 0x4c, 0xa0,
+ 0x00, 0x79, 0x44, 0x56, 0x59, 0x00, 0x79, 0x45,
+ 0x3a, 0x3b, 0x00, 0x79, 0x46, 0x42, 0x77, 0x00,
+ 0x79, 0x47, 0x06, 0x5a, 0x00, 0x79, 0x48, 0x34,
+ 0x17, 0x00, 0x79, 0x49, 0x08, 0xb1, 0x00, 0x79,
+ 0x4a, 0x47, 0x39, 0x00, 0x79, 0x4b, 0x56, 0x5a,
+ 0x00, 0x79, 0x4f, 0x56, 0x5b, 0x00, 0x79, 0x50,
+ 0x34, 0x4f, 0x00, 0x79, 0x51, 0x56, 0x5c, 0x00,
+ 0x79, 0x53, 0x17, 0x04, 0x00, 0x79, 0x54, 0x4c,
+ 0xa1, 0x00, 0x79, 0x55, 0x17, 0x03, 0x00, 0x79,
+ 0x56, 0x0a, 0xc6, 0x00, 0x79, 0x57, 0x17, 0x00,
+ 0x00, 0x79, 0x58, 0x47, 0x3a, 0x00, 0x79, 0x5a,
+ 0x17, 0x02, 0x00, 0x79, 0x5b, 0x3a, 0x3c, 0x00,
+ 0x79, 0x5c, 0x3a, 0x3d, 0x00, 0x79, 0x5d, 0x34,
+ 0x27, 0x00, 0x79, 0x5e, 0x21, 0x84, 0x00, 0x79,
+ 0x5f, 0x17, 0x01, 0x00, 0x79, 0x60, 0x16, 0xff,
+ 0x00, 0x79, 0x62, 0x0c, 0xe0, 0x00, 0x79, 0x65,
+ 0x21, 0x85, 0x00, 0x79, 0x67, 0x47, 0x3c, 0x00,
+ 0x79, 0x68, 0x0d, 0xae, 0x00, 0x79, 0x69, 0x56,
+ 0x5d, 0x00, 0x79, 0x6b, 0x4c, 0xa2, 0x00, 0x79,
+ 0x6d, 0x08, 0x47, 0x00, 0x79, 0x72, 0x47, 0x3d,
+ 0x00, 0x79, 0x77, 0x0c, 0x72, 0x00, 0x79, 0x79,
+ 0x42, 0x78, 0x00, 0x79, 0x7a, 0x17, 0x05, 0x00,
+ 0x79, 0x7b, 0x56, 0x5e, 0x00, 0x79, 0x7c, 0x4c,
+ 0xa3, 0x00, 0x79, 0x7e, 0x56, 0x5f, 0x00, 0x79,
+ 0x7f, 0x17, 0x06, 0x00, 0x79, 0x80, 0x17, 0x1c,
+ 0x00, 0x79, 0x81, 0x06, 0xd0, 0x00, 0x79, 0x84,
+ 0x0f, 0xe3, 0x00, 0x79, 0x85, 0x0a, 0xb7, 0x00,
+ 0x79, 0x8a, 0x17, 0x07, 0x00, 0x79, 0x8b, 0x3a,
+ 0x3e, 0x00, 0x79, 0x8c, 0x56, 0x60, 0x00, 0x79,
+ 0x8d, 0x34, 0x0d, 0x00, 0x79, 0x8e, 0x0c, 0x13,
+ 0x00, 0x79, 0x8f, 0x0d, 0xf1, 0x00, 0x79, 0x91,
+ 0x56, 0x61, 0x00, 0x79, 0x93, 0x56, 0x62, 0x00,
+ 0x79, 0x94, 0x21, 0x86, 0x00, 0x79, 0x95, 0x47,
+ 0x3e, 0x00, 0x79, 0x96, 0x3a, 0x3f, 0x00, 0x79,
+ 0x98, 0x3a, 0x40, 0x00, 0x79, 0x9b, 0x21, 0x88,
+ 0x00, 0x79, 0x9c, 0x56, 0x63, 0x00, 0x79, 0x9d,
+ 0x17, 0x08, 0x00, 0x79, 0xa1, 0x47, 0x3f, 0x00,
+ 0x79, 0xa6, 0x06, 0x94, 0x00, 0x79, 0xa7, 0x17,
+ 0x09, 0x00, 0x79, 0xa8, 0x56, 0x64, 0x00, 0x79,
+ 0xa9, 0x47, 0x40, 0x00, 0x79, 0xaa, 0x17, 0x0b,
+ 0x00, 0x79, 0xab, 0x4c, 0xa4, 0x00, 0x79, 0xae,
+ 0x17, 0x0c, 0x00, 0x79, 0xaf, 0x56, 0x65, 0x00,
+ 0x79, 0xb0, 0x0c, 0xdf, 0x00, 0x79, 0xb1, 0x1e,
+ 0x4e, 0x00, 0x79, 0xb3, 0x17, 0x0d, 0x00, 0x79,
+ 0xb4, 0x47, 0x41, 0x00, 0x79, 0xb8, 0x3a, 0x41,
+ 0x00, 0x79, 0xb9, 0x17, 0x0e, 0x00, 0x79, 0xba,
+ 0x17, 0x0f, 0x00, 0x79, 0xbb, 0x3a, 0x42, 0x00,
+ 0x79, 0xbd, 0x06, 0xd1, 0x00, 0x79, 0xbe, 0x05,
+ 0x53, 0x00, 0x79, 0xbf, 0x0c, 0x9d, 0x00, 0x79,
+ 0xc0, 0x09, 0x32, 0x00, 0x79, 0xc1, 0x08, 0xb2,
+ 0x00, 0x79, 0xc2, 0x47, 0x42, 0x00, 0x79, 0xc4,
+ 0x4c, 0xa5, 0x00, 0x79, 0xc7, 0x47, 0x43, 0x00,
+ 0x79, 0xc8, 0x42, 0x79, 0x00, 0x79, 0xc9, 0x17,
+ 0x10, 0x00, 0x79, 0xca, 0x3a, 0x43, 0x00, 0x79,
+ 0xcb, 0x09, 0x33, 0x00, 0x79, 0xcc, 0x47, 0x44,
+ 0x00, 0x79, 0xcd, 0x47, 0x45, 0x00, 0x79, 0xcf,
+ 0x56, 0x66, 0x00, 0x79, 0xd1, 0x05, 0x4a, 0x00,
+ 0x79, 0xd2, 0x0d, 0xb5, 0x00, 0x79, 0xd4, 0x42,
+ 0x7b, 0x00, 0x79, 0xd5, 0x17, 0x11, 0x00, 0x79,
+ 0xd6, 0x47, 0x46, 0x00, 0x79, 0xd8, 0x0d, 0x7f,
+ 0x00, 0x79, 0xda, 0x3a, 0x44, 0x00, 0x79, 0xdd,
+ 0x56, 0x67, 0x00, 0x79, 0xde, 0x42, 0x7c, 0x00,
+ 0x79, 0xdf, 0x0a, 0xc7, 0x00, 0x79, 0xe0, 0x56,
+ 0x68, 0x00, 0x79, 0xe1, 0x17, 0x14, 0x00, 0x79,
+ 0xe2, 0x56, 0x69, 0x00, 0x79, 0xe3, 0x17, 0x15,
+ 0x00, 0x79, 0xe4, 0x0d, 0x1f, 0x00, 0x79, 0xe5,
+ 0x56, 0x6a, 0x00, 0x79, 0xe6, 0x0a, 0x07, 0x00,
+ 0x79, 0xe7, 0x17, 0x12, 0x00, 0x79, 0xe9, 0x0b,
+ 0x9f, 0x00, 0x79, 0xea, 0x4c, 0xa6, 0x00, 0x79,
+ 0xeb, 0x42, 0x7d, 0x00, 0x79, 0xec, 0x17, 0x13,
+ 0x00, 0x79, 0xed, 0x42, 0x7e, 0x00, 0x79, 0xf0,
+ 0x09, 0xb6, 0x00, 0x79, 0xf1, 0x56, 0x6b, 0x00,
+ 0x79, 0xf8, 0x56, 0x6c, 0x00, 0x79, 0xfb, 0x04,
+ 0xa0, 0x00, 0x79, 0xfc, 0x56, 0x6d, 0x00, 0x7a,
+ 0x00, 0x06, 0x43, 0x00, 0x7a, 0x02, 0x4c, 0xa7,
+ 0x00, 0x7a, 0x03, 0x3a, 0x45, 0x00, 0x7a, 0x05,
+ 0x36, 0x33, 0x00, 0x7a, 0x07, 0x56, 0x6e, 0x00,
+ 0x7a, 0x08, 0x17, 0x16, 0x00, 0x7a, 0x09, 0x3a,
+ 0x46, 0x00, 0x7a, 0x0a, 0x47, 0x4b, 0x00, 0x7a,
+ 0x0b, 0x0c, 0x14, 0x00, 0x7a, 0x0c, 0x4c, 0xa8,
+ 0x00, 0x7a, 0x0d, 0x17, 0x17, 0x00, 0x7a, 0x0e,
+ 0x0a, 0x6b, 0x00, 0x7a, 0x11, 0x3a, 0x47, 0x00,
+ 0x7a, 0x14, 0x0e, 0xb9, 0x00, 0x7a, 0x15, 0x47,
+ 0x4c, 0x00, 0x7a, 0x17, 0x0d, 0x95, 0x00, 0x7a,
+ 0x18, 0x17, 0x18, 0x00, 0x7a, 0x19, 0x17, 0x19,
+ 0x00, 0x7a, 0x1a, 0x0b, 0x93, 0x00, 0x7a, 0x1b,
+ 0x47, 0x4d, 0x00, 0x7a, 0x1c, 0x0f, 0x8f, 0x00,
+ 0x7a, 0x1e, 0x3a, 0x48, 0x00, 0x7a, 0x1f, 0x17,
+ 0x1b, 0x00, 0x7a, 0x20, 0x17, 0x1a, 0x00, 0x7a,
+ 0x21, 0x56, 0x6f, 0x00, 0x7a, 0x27, 0x56, 0x70,
+ 0x00, 0x7a, 0x2b, 0x56, 0x71, 0x00, 0x7a, 0x2d,
+ 0x3a, 0x49, 0x00, 0x7a, 0x2e, 0x09, 0x1b, 0x00,
+ 0x7a, 0x2f, 0x56, 0x72, 0x00, 0x7a, 0x30, 0x4c,
+ 0xa9, 0x00, 0x7a, 0x31, 0x17, 0x1d, 0x00, 0x7a,
+ 0x32, 0x04, 0xb4, 0x00, 0x7a, 0x34, 0x56, 0x73,
+ 0x00, 0x7a, 0x35, 0x56, 0x74, 0x00, 0x7a, 0x37,
+ 0x17, 0x20, 0x00, 0x7a, 0x38, 0x47, 0x4f, 0x00,
+ 0x7a, 0x39, 0x3a, 0x4a, 0x00, 0x7a, 0x3a, 0x4c,
+ 0xaa, 0x00, 0x7a, 0x3b, 0x17, 0x1e, 0x00, 0x7a,
+ 0x3c, 0x05, 0x54, 0x00, 0x7a, 0x3d, 0x07, 0x24,
+ 0x00, 0x7a, 0x3e, 0x17, 0x1f, 0x00, 0x7a, 0x3f,
+ 0x07, 0xd8, 0x00, 0x7a, 0x40, 0x34, 0x1f, 0x00,
+ 0x7a, 0x42, 0x0e, 0x36, 0x00, 0x7a, 0x43, 0x17,
+ 0x21, 0x00, 0x7a, 0x44, 0x4c, 0xab, 0x00, 0x7a,
+ 0x45, 0x3a, 0x4b, 0x00, 0x7a, 0x46, 0x0e, 0x82,
+ 0x00, 0x7a, 0x47, 0x47, 0x50, 0x00, 0x7a, 0x48,
+ 0x56, 0x75, 0x00, 0x7a, 0x49, 0x17, 0x23, 0x00,
+ 0x7a, 0x4c, 0x3a, 0x4c, 0x00, 0x7a, 0x4d, 0x0a,
+ 0x75, 0x00, 0x7a, 0x4e, 0x04, 0xf1, 0x00, 0x7a,
+ 0x4f, 0x05, 0x3a, 0x00, 0x7a, 0x50, 0x04, 0x70,
+ 0x00, 0x7a, 0x55, 0x56, 0x76, 0x00, 0x7a, 0x56,
+ 0x47, 0x51, 0x00, 0x7a, 0x57, 0x17, 0x22, 0x00,
+ 0x7a, 0x59, 0x47, 0x52, 0x00, 0x7a, 0x5c, 0x47,
+ 0x53, 0x00, 0x7a, 0x5d, 0x3a, 0x4d, 0x00, 0x7a,
+ 0x5f, 0x47, 0x54, 0x00, 0x7a, 0x60, 0x4f, 0x56,
+ 0x00, 0x7a, 0x61, 0x17, 0x24, 0x00, 0x7a, 0x62,
+ 0x17, 0x25, 0x00, 0x7a, 0x63, 0x09, 0xdf, 0x00,
+ 0x7a, 0x65, 0x56, 0x77, 0x00, 0x7a, 0x67, 0x47,
+ 0x55, 0x00, 0x7a, 0x69, 0x17, 0x26, 0x00, 0x7a,
+ 0x6a, 0x47, 0x56, 0x00, 0x7a, 0x6b, 0x05, 0xad,
+ 0x00, 0x7a, 0x6d, 0x3a, 0x4f, 0x00, 0x7a, 0x70,
+ 0x17, 0x28, 0x00, 0x7a, 0x74, 0x07, 0x40, 0x00,
+ 0x7a, 0x75, 0x47, 0x57, 0x00, 0x7a, 0x76, 0x06,
+ 0x80, 0x00, 0x7a, 0x78, 0x3a, 0x50, 0x00, 0x7a,
+ 0x79, 0x17, 0x29, 0x00, 0x7a, 0x7a, 0x06, 0xed,
+ 0x00, 0x7a, 0x7d, 0x17, 0x2a, 0x00, 0x7a, 0x7e,
+ 0x56, 0x78, 0x00, 0x7a, 0x7f, 0x0a, 0xa0, 0x00,
+ 0x7a, 0x80, 0x4c, 0xac, 0x00, 0x7a, 0x81, 0x0c,
+ 0xa5, 0x00, 0x7a, 0x82, 0x47, 0x58, 0x00, 0x7a,
+ 0x83, 0x0a, 0x84, 0x00, 0x7a, 0x84, 0x08, 0x65,
+ 0x00, 0x7a, 0x85, 0x42, 0x7f, 0x00, 0x7a, 0x86,
+ 0x4c, 0xad, 0x00, 0x7a, 0x88, 0x17, 0x2b, 0x00,
+ 0x7a, 0x8a, 0x47, 0x59, 0x00, 0x7a, 0x8b, 0x56,
+ 0x79, 0x00, 0x7a, 0x90, 0x47, 0x5a, 0x00, 0x7a,
+ 0x91, 0x56, 0x7a, 0x00, 0x7a, 0x92, 0x0b, 0xa0,
+ 0x00, 0x7a, 0x93, 0x0a, 0xed, 0x00, 0x7a, 0x94,
+ 0x4c, 0xae, 0x00, 0x7a, 0x95, 0x17, 0x2d, 0x00,
+ 0x7a, 0x96, 0x17, 0x2f, 0x00, 0x7a, 0x97, 0x17,
+ 0x2c, 0x00, 0x7a, 0x98, 0x17, 0x2e, 0x00, 0x7a,
+ 0x9e, 0x56, 0x7b, 0x00, 0x7a, 0x9f, 0x06, 0xf8,
+ 0x00, 0x7a, 0xa0, 0x3a, 0x51, 0x00, 0x7a, 0xa3,
+ 0x3a, 0x52, 0x00, 0x7a, 0xa9, 0x17, 0x30, 0x00,
+ 0x7a, 0xaa, 0x06, 0xfc, 0x00, 0x7a, 0xac, 0x47,
+ 0x5b, 0x00, 0x7a, 0xae, 0x06, 0x81, 0x00, 0x7a,
+ 0xaf, 0x0f, 0x3c, 0x00, 0x7a, 0xb0, 0x17, 0x32,
+ 0x00, 0x7a, 0xb3, 0x3a, 0x53, 0x00, 0x7a, 0xb5,
+ 0x4c, 0xaf, 0x00, 0x7a, 0xb6, 0x17, 0x33, 0x00,
+ 0x7a, 0xb9, 0x47, 0x5e, 0x00, 0x7a, 0xba, 0x04,
+ 0xd0, 0x00, 0x7a, 0xbb, 0x3a, 0x54, 0x00, 0x7a,
+ 0xbc, 0x3a, 0x55, 0x00, 0x7a, 0xbd, 0x4c, 0xb0,
+ 0x00, 0x7a, 0xbe, 0x47, 0x5f, 0x00, 0x7a, 0xbf,
+ 0x17, 0x36, 0x00, 0x7a, 0xc3, 0x05, 0xd4, 0x00,
+ 0x7a, 0xc4, 0x17, 0x35, 0x00, 0x7a, 0xc5, 0x17,
+ 0x34, 0x00, 0x7a, 0xc6, 0x3a, 0x56, 0x00, 0x7a,
+ 0xc7, 0x17, 0x38, 0x00, 0x7a, 0xc8, 0x17, 0x31,
+ 0x00, 0x7a, 0xc9, 0x56, 0x7c, 0x00, 0x7a, 0xca,
+ 0x17, 0x39, 0x00, 0x7a, 0xcb, 0x0f, 0x71, 0x00,
+ 0x7a, 0xcc, 0x47, 0x61, 0x00, 0x7a, 0xcd, 0x17,
+ 0x3a, 0x00, 0x7a, 0xce, 0x42, 0x81, 0x00, 0x7a,
+ 0xcf, 0x17, 0x3b, 0x00, 0x7a, 0xd1, 0x21, 0x89,
+ 0x00, 0x7a, 0xd2, 0x11, 0xc5, 0x00, 0x7a, 0xd3,
+ 0x17, 0x3d, 0x00, 0x7a, 0xd5, 0x17, 0x3c, 0x00,
+ 0x7a, 0xd9, 0x17, 0x3e, 0x00, 0x7a, 0xda, 0x17,
+ 0x3f, 0x00, 0x7a, 0xdb, 0x56, 0x7d, 0x00, 0x7a,
+ 0xdc, 0x0f, 0x7d, 0x00, 0x7a, 0xdd, 0x17, 0x40,
+ 0x00, 0x7a, 0xdf, 0x1c, 0x08, 0x00, 0x7a, 0xe0,
+ 0x09, 0xb7, 0x00, 0x7a, 0xe1, 0x17, 0x41, 0x00,
+ 0x7a, 0xe2, 0x17, 0x42, 0x00, 0x7a, 0xe3, 0x09,
+ 0x61, 0x00, 0x7a, 0xe5, 0x0c, 0x90, 0x00, 0x7a,
+ 0xe6, 0x17, 0x43, 0x00, 0x7a, 0xe7, 0x21, 0x8a,
+ 0x00, 0x7a, 0xe8, 0x47, 0x62, 0x00, 0x7a, 0xe9,
+ 0x56, 0x7e, 0x00, 0x7a, 0xea, 0x0b, 0x66, 0x00,
+ 0x7a, 0xeb, 0x21, 0x8c, 0x00, 0x7a, 0xec, 0x56,
+ 0x7f, 0x00, 0x7a, 0xed, 0x17, 0x44, 0x00, 0x7a,
+ 0xef, 0x0b, 0x7a, 0x00, 0x7a, 0xf0, 0x17, 0x45,
+ 0x00, 0x7a, 0xf1, 0x56, 0x80, 0x00, 0x7a, 0xf4,
+ 0x47, 0x63, 0x00, 0x7a, 0xf6, 0x06, 0x9d, 0x00,
+ 0x7a, 0xf8, 0x10, 0x76, 0x00, 0x7a, 0xf9, 0x0b,
+ 0x9b, 0x00, 0x7a, 0xfa, 0x08, 0xdf, 0x00, 0x7a,
+ 0xfb, 0x56, 0x81, 0x00, 0x7a, 0xfd, 0x42, 0x82,
+ 0x00, 0x7a, 0xfe, 0x4c, 0xb1, 0x00, 0x7a, 0xff,
+ 0x06, 0x04, 0x00, 0x7b, 0x02, 0x17, 0x46, 0x00,
+ 0x7b, 0x04, 0x17, 0x53, 0x00, 0x7b, 0x06, 0x17,
+ 0x49, 0x00, 0x7b, 0x07, 0x3a, 0x57, 0x00, 0x7b,
+ 0x08, 0x06, 0x82, 0x00, 0x7b, 0x0a, 0x17, 0x48,
+ 0x00, 0x7b, 0x0b, 0x17, 0x55, 0x00, 0x7b, 0x0f,
+ 0x17, 0x47, 0x00, 0x7b, 0x11, 0x09, 0xb8, 0x00,
+ 0x7b, 0x12, 0x42, 0x83, 0x00, 0x7b, 0x14, 0x3a,
+ 0x58, 0x00, 0x7b, 0x18, 0x17, 0x4b, 0x00, 0x7b,
+ 0x19, 0x17, 0x4c, 0x00, 0x7b, 0x1b, 0x0c, 0x25,
+ 0x00, 0x7b, 0x1e, 0x17, 0x4d, 0x00, 0x7b, 0x1f,
+ 0x56, 0x82, 0x00, 0x7b, 0x20, 0x05, 0xbc, 0x00,
+ 0x7b, 0x23, 0x56, 0x83, 0x00, 0x7b, 0x25, 0x0a,
+ 0x20, 0x00, 0x7b, 0x26, 0x0d, 0xd6, 0x00, 0x7b,
+ 0x27, 0x3a, 0x59, 0x00, 0x7b, 0x28, 0x17, 0x4f,
+ 0x00, 0x7b, 0x29, 0x56, 0x84, 0x00, 0x7b, 0x2a,
+ 0x47, 0x68, 0x00, 0x7b, 0x2b, 0x4c, 0xb2, 0x00,
+ 0x7b, 0x2c, 0x0b, 0x48, 0x00, 0x7b, 0x2d, 0x42,
+ 0x84, 0x00, 0x7b, 0x2e, 0x47, 0x69, 0x00, 0x7b,
+ 0x2f, 0x47, 0x6a, 0x00, 0x7b, 0x30, 0x56, 0x85,
+ 0x00, 0x7b, 0x31, 0x3a, 0x5a, 0x00, 0x7b, 0x33,
+ 0x17, 0x4a, 0x00, 0x7b, 0x34, 0x56, 0x86, 0x00,
+ 0x7b, 0x35, 0x17, 0x4e, 0x00, 0x7b, 0x36, 0x17,
+ 0x50, 0x00, 0x7b, 0x39, 0x08, 0x6b, 0x00, 0x7b,
+ 0x3b, 0x42, 0x85, 0x00, 0x7b, 0x3d, 0x47, 0x67,
+ 0x00, 0x7b, 0x3f, 0x56, 0x87, 0x00, 0x7b, 0x40,
+ 0x56, 0x88, 0x00, 0x7b, 0x41, 0x47, 0x6e, 0x00,
+ 0x7b, 0x45, 0x17, 0x57, 0x00, 0x7b, 0x46, 0x0d,
+ 0xa0, 0x00, 0x7b, 0x47, 0x3a, 0x5b, 0x00, 0x7b,
+ 0x48, 0x0d, 0x3a, 0x00, 0x7b, 0x49, 0x0c, 0x73,
+ 0x00, 0x7b, 0x4b, 0x06, 0xd2, 0x00, 0x7b, 0x4c,
+ 0x17, 0x56, 0x00, 0x7b, 0x4d, 0x17, 0x54, 0x00,
+ 0x7b, 0x4e, 0x3a, 0x5c, 0x00, 0x7b, 0x4f, 0x0d,
+ 0x49, 0x00, 0x7b, 0x50, 0x17, 0x51, 0x00, 0x7b,
+ 0x51, 0x0b, 0x9c, 0x00, 0x7b, 0x52, 0x0c, 0x75,
+ 0x00, 0x7b, 0x53, 0x37, 0x5d, 0x00, 0x7b, 0x54,
+ 0x0c, 0x74, 0x00, 0x7b, 0x55, 0x47, 0x70, 0x00,
+ 0x7b, 0x56, 0x08, 0x66, 0x00, 0x7b, 0x5d, 0x17,
+ 0x69, 0x00, 0x7b, 0x60, 0x3a, 0x5d, 0x00, 0x7b,
+ 0x64, 0x47, 0x72, 0x00, 0x7b, 0x65, 0x17, 0x59,
+ 0x00, 0x7b, 0x66, 0x47, 0x73, 0x00, 0x7b, 0x67,
+ 0x17, 0x5b, 0x00, 0x7b, 0x69, 0x3a, 0x5e, 0x00,
+ 0x7b, 0x6a, 0x56, 0x89, 0x00, 0x7b, 0x6c, 0x17,
+ 0x5e, 0x00, 0x7b, 0x6d, 0x3a, 0x5f, 0x00, 0x7b,
+ 0x6e, 0x17, 0x5f, 0x00, 0x7b, 0x6f, 0x42, 0x86,
+ 0x00, 0x7b, 0x70, 0x17, 0x5c, 0x00, 0x7b, 0x71,
+ 0x17, 0x5d, 0x00, 0x7b, 0x72, 0x3a, 0x60, 0x00,
+ 0x7b, 0x73, 0x47, 0x74, 0x00, 0x7b, 0x74, 0x17,
+ 0x5a, 0x00, 0x7b, 0x75, 0x17, 0x58, 0x00, 0x7b,
+ 0x77, 0x4c, 0xb3, 0x00, 0x7b, 0x79, 0x47, 0x71,
+ 0x00, 0x7b, 0x7a, 0x17, 0x52, 0x00, 0x7b, 0x7f,
+ 0x47, 0x6d, 0x00, 0x7b, 0x84, 0x56, 0x8a, 0x00,
+ 0x7b, 0x86, 0x0e, 0x1f, 0x00, 0x7b, 0x87, 0x05,
+ 0x55, 0x00, 0x7b, 0x89, 0x56, 0x8b, 0x00, 0x7b,
+ 0x8b, 0x17, 0x66, 0x00, 0x7b, 0x8d, 0x17, 0x63,
+ 0x00, 0x7b, 0x8e, 0x56, 0x8c, 0x00, 0x7b, 0x8f,
+ 0x17, 0x68, 0x00, 0x7b, 0x90, 0x47, 0x77, 0x00,
+ 0x7b, 0x91, 0x3a, 0x61, 0x00, 0x7b, 0x92, 0x17,
+ 0x67, 0x00, 0x7b, 0x94, 0x0d, 0x29, 0x00, 0x7b,
+ 0x95, 0x0e, 0xb3, 0x00, 0x7b, 0x96, 0x56, 0x8d,
+ 0x00, 0x7b, 0x97, 0x08, 0x89, 0x00, 0x7b, 0x98,
+ 0x17, 0x61, 0x00, 0x7b, 0x99, 0x17, 0x6a, 0x00,
+ 0x7b, 0x9a, 0x17, 0x65, 0x00, 0x7b, 0x9b, 0x47,
+ 0x78, 0x00, 0x7b, 0x9c, 0x17, 0x64, 0x00, 0x7b,
+ 0x9d, 0x17, 0x60, 0x00, 0x7b, 0x9e, 0x21, 0x8d,
+ 0x00, 0x7b, 0x9f, 0x17, 0x62, 0x00, 0x7b, 0xa0,
+ 0x4c, 0xb4, 0x00, 0x7b, 0xa1, 0x06, 0x05, 0x00,
+ 0x7b, 0xa5, 0x56, 0x8e, 0x00, 0x7b, 0xaa, 0x0b,
+ 0x7b, 0x00, 0x7b, 0xac, 0x4c, 0xb5, 0x00, 0x7b,
+ 0xad, 0x0a, 0xa1, 0x00, 0x7b, 0xaf, 0x3a, 0x62,
+ 0x00, 0x7b, 0xb0, 0x4c, 0xb6, 0x00, 0x7b, 0xb1,
+ 0x0d, 0x36, 0x00, 0x7b, 0xb2, 0x56, 0x8f, 0x00,
+ 0x7b, 0xb4, 0x17, 0x6f, 0x00, 0x7b, 0xb5, 0x47,
+ 0x7a, 0x00, 0x7b, 0xb6, 0x56, 0x90, 0x00, 0x7b,
+ 0xb8, 0x0d, 0x38, 0x00, 0x7b, 0xba, 0x56, 0x91,
+ 0x00, 0x7b, 0xbb, 0x56, 0x92, 0x00, 0x7b, 0xbc,
+ 0x47, 0x7b, 0x00, 0x7b, 0xbd, 0x56, 0x93, 0x00,
+ 0x7b, 0xc0, 0x0a, 0x85, 0x00, 0x7b, 0xc1, 0x17,
+ 0x6c, 0x00, 0x7b, 0xc2, 0x56, 0x94, 0x00, 0x7b,
+ 0xc4, 0x0d, 0x63, 0x00, 0x7b, 0xc5, 0x47, 0x7c,
+ 0x00, 0x7b, 0xc6, 0x17, 0x70, 0x00, 0x7b, 0xc7,
+ 0x0e, 0x23, 0x00, 0x7b, 0xc8, 0x56, 0x95, 0x00,
+ 0x7b, 0xc9, 0x0b, 0x99, 0x00, 0x7b, 0xca, 0x47,
+ 0x7d, 0x00, 0x7b, 0xcb, 0x17, 0x6b, 0x00, 0x7b,
+ 0xcc, 0x17, 0x6d, 0x00, 0x7b, 0xcf, 0x17, 0x6e,
+ 0x00, 0x7b, 0xd4, 0x47, 0x80, 0x00, 0x7b, 0xd6,
+ 0x47, 0x81, 0x00, 0x7b, 0xd7, 0x3a, 0x63, 0x00,
+ 0x7b, 0xd9, 0x3a, 0x64, 0x00, 0x7b, 0xda, 0x47,
+ 0x82, 0x00, 0x7b, 0xdb, 0x56, 0x96, 0x00, 0x7b,
+ 0xdd, 0x17, 0x71, 0x00, 0x7b, 0xe0, 0x08, 0xf0,
+ 0x00, 0x7b, 0xe4, 0x0c, 0x9e, 0x00, 0x7b, 0xe5,
+ 0x17, 0x76, 0x00, 0x7b, 0xe6, 0x17, 0x75, 0x00,
+ 0x7b, 0xe8, 0x4c, 0xb7, 0x00, 0x7b, 0xe9, 0x17,
+ 0x72, 0x00, 0x7b, 0xea, 0x47, 0x83, 0x00, 0x7b,
+ 0xed, 0x0f, 0xdc, 0x00, 0x7b, 0xf0, 0x47, 0x84,
+ 0x00, 0x7b, 0xf2, 0x4c, 0xb8, 0x00, 0x7b, 0xf3,
+ 0x17, 0x7b, 0x00, 0x7b, 0xf4, 0x56, 0x97, 0x00,
+ 0x7b, 0xf5, 0x56, 0x98, 0x00, 0x7b, 0xf6, 0x17,
+ 0x7f, 0x00, 0x7b, 0xf7, 0x17, 0x7c, 0x00, 0x7b,
+ 0xf8, 0x4c, 0xb9, 0x00, 0x7b, 0xf9, 0x56, 0x99,
+ 0x00, 0x7b, 0xfa, 0x56, 0x9a, 0x00, 0x7b, 0xfc,
+ 0x4c, 0xba, 0x00, 0x7b, 0xfe, 0x4c, 0xbb, 0x00,
+ 0x7c, 0x00, 0x17, 0x78, 0x00, 0x7c, 0x01, 0x42,
+ 0x87, 0x00, 0x7c, 0x02, 0x56, 0x9b, 0x00, 0x7c,
+ 0x03, 0x47, 0x85, 0x00, 0x7c, 0x04, 0x56, 0x9c,
+ 0x00, 0x7c, 0x06, 0x56, 0x9d, 0x00, 0x7c, 0x07,
+ 0x17, 0x79, 0x00, 0x7c, 0x09, 0x4c, 0xbc, 0x00,
+ 0x7c, 0x0b, 0x3a, 0x65, 0x00, 0x7c, 0x0c, 0x56,
+ 0x9e, 0x00, 0x7c, 0x0d, 0x17, 0x7e, 0x00, 0x7c,
+ 0x0e, 0x47, 0x86, 0x00, 0x7c, 0x0f, 0x3a, 0x66,
+ 0x00, 0x7c, 0x11, 0x17, 0x73, 0x00, 0x7c, 0x12,
+ 0x10, 0xea, 0x00, 0x7c, 0x13, 0x17, 0x7a, 0x00,
+ 0x7c, 0x14, 0x17, 0x74, 0x00, 0x7c, 0x17, 0x17,
+ 0x7d, 0x00, 0x7c, 0x19, 0x56, 0x9f, 0x00, 0x7c,
+ 0x1b, 0x56, 0xa0, 0x00, 0x7c, 0x1e, 0x1e, 0x3b,
+ 0x00, 0x7c, 0x1f, 0x17, 0x83, 0x00, 0x7c, 0x20,
+ 0x3a, 0x67, 0x00, 0x7c, 0x21, 0x06, 0x06, 0x00,
+ 0x7c, 0x23, 0x17, 0x80, 0x00, 0x7c, 0x25, 0x56,
+ 0xa1, 0x00, 0x7c, 0x26, 0x3a, 0x68, 0x00, 0x7c,
+ 0x27, 0x17, 0x81, 0x00, 0x7c, 0x28, 0x4c, 0xbd,
+ 0x00, 0x7c, 0x2a, 0x17, 0x82, 0x00, 0x7c, 0x2b,
+ 0x17, 0x85, 0x00, 0x7c, 0x2c, 0x56, 0xa2, 0x00,
+ 0x7c, 0x2f, 0x4c, 0xbe, 0x00, 0x7c, 0x31, 0x3a,
+ 0x69, 0x00, 0x7c, 0x33, 0x42, 0x88, 0x00, 0x7c,
+ 0x34, 0x56, 0xa3, 0x00, 0x7c, 0x36, 0x3a, 0x6a,
+ 0x00, 0x7c, 0x37, 0x17, 0x84, 0x00, 0x7c, 0x38,
+ 0x0d, 0x8a, 0x00, 0x7c, 0x39, 0x56, 0xa4, 0x00,
+ 0x7c, 0x3a, 0x56, 0xa5, 0x00, 0x7c, 0x3d, 0x17,
+ 0x86, 0x00, 0x7c, 0x3e, 0x0f, 0xc4, 0x00, 0x7c,
+ 0x3f, 0x0e, 0x3d, 0x00, 0x7c, 0x40, 0x17, 0x8b,
+ 0x00, 0x7c, 0x42, 0x4c, 0xbf, 0x00, 0x7c, 0x43,
+ 0x17, 0x88, 0x00, 0x7c, 0x45, 0x47, 0x87, 0x00,
+ 0x7c, 0x46, 0x56, 0xa6, 0x00, 0x7c, 0x4a, 0x47,
+ 0x88, 0x00, 0x7c, 0x4c, 0x17, 0x87, 0x00, 0x7c,
+ 0x4d, 0x0a, 0x76, 0x00, 0x7c, 0x4f, 0x17, 0x8a,
+ 0x00, 0x7c, 0x50, 0x17, 0x8c, 0x00, 0x7c, 0x51,
+ 0x3a, 0x6b, 0x00, 0x7c, 0x52, 0x4c, 0xc0, 0x00,
+ 0x7c, 0x53, 0x4c, 0xc1, 0x00, 0x7c, 0x54, 0x17,
+ 0x89, 0x00, 0x7c, 0x55, 0x56, 0xa7, 0x00, 0x7c,
+ 0x56, 0x17, 0x90, 0x00, 0x7c, 0x57, 0x47, 0x89,
+ 0x00, 0x7c, 0x58, 0x17, 0x8d, 0x00, 0x7c, 0x59,
+ 0x3a, 0x6c, 0x00, 0x7c, 0x5a, 0x56, 0xa8, 0x00,
+ 0x7c, 0x5b, 0x4c, 0xc2, 0x00, 0x7c, 0x5c, 0x4c,
+ 0xc3, 0x00, 0x7c, 0x5d, 0x4c, 0xc4, 0x00, 0x7c,
+ 0x5e, 0x47, 0x8a, 0x00, 0x7c, 0x5f, 0x17, 0x8e,
+ 0x00, 0x7c, 0x60, 0x17, 0x77, 0x00, 0x7c, 0x61,
+ 0x47, 0x8b, 0x00, 0x7c, 0x63, 0x56, 0xa9, 0x00,
+ 0x7c, 0x64, 0x17, 0x8f, 0x00, 0x7c, 0x65, 0x17,
+ 0x91, 0x00, 0x7c, 0x67, 0x3a, 0x6d, 0x00, 0x7c,
+ 0x69, 0x47, 0x8c, 0x00, 0x7c, 0x6c, 0x17, 0x92,
+ 0x00, 0x7c, 0x6d, 0x42, 0x8a, 0x00, 0x7c, 0x6e,
+ 0x3a, 0x6e, 0x00, 0x7c, 0x6f, 0x47, 0x8d, 0x00,
+ 0x7c, 0x70, 0x3a, 0x6f, 0x00, 0x7c, 0x72, 0x4c,
+ 0xc5, 0x00, 0x7c, 0x73, 0x0e, 0x16, 0x00, 0x7c,
+ 0x75, 0x17, 0x93, 0x00, 0x7c, 0x79, 0x42, 0x8b,
+ 0x00, 0x7c, 0x7b, 0x37, 0x0e, 0x00, 0x7c, 0x7c,
+ 0x56, 0xab, 0x00, 0x7c, 0x7d, 0x4c, 0xc6, 0x00,
+ 0x7c, 0x7e, 0x0e, 0xee, 0x00, 0x7c, 0x81, 0x06,
+ 0xc6, 0x00, 0x7c, 0x82, 0x06, 0xff, 0x00, 0x7c,
+ 0x83, 0x17, 0x94, 0x00, 0x7c, 0x86, 0x56, 0xac,
+ 0x00, 0x7c, 0x87, 0x4c, 0xc7, 0x00, 0x7c, 0x89,
+ 0x0e, 0x04, 0x00, 0x7c, 0x8b, 0x0a, 0x2e, 0x00,
+ 0x7c, 0x8d, 0x0e, 0xbc, 0x00, 0x7c, 0x8f, 0x42,
+ 0x8c, 0x00, 0x7c, 0x90, 0x17, 0x95, 0x00, 0x7c,
+ 0x92, 0x0f, 0x7b, 0x00, 0x7c, 0x94, 0x42, 0x8d,
+ 0x00, 0x7c, 0x95, 0x0d, 0x2a, 0x00, 0x7c, 0x97,
+ 0x0a, 0xc8, 0x00, 0x7c, 0x98, 0x0c, 0xea, 0x00,
+ 0x7c, 0x9b, 0x09, 0x57, 0x00, 0x7c, 0x9e, 0x4c,
+ 0xc8, 0x00, 0x7c, 0x9f, 0x04, 0x84, 0x00, 0x7c,
+ 0xa0, 0x42, 0x8e, 0x00, 0x7c, 0xa1, 0x17, 0x9a,
+ 0x00, 0x7c, 0xa2, 0x17, 0x98, 0x00, 0x7c, 0xa4,
+ 0x17, 0x96, 0x00, 0x7c, 0xa5, 0x05, 0xdd, 0x00,
+ 0x7c, 0xa6, 0x47, 0x91, 0x00, 0x7c, 0xa7, 0x09,
+ 0xb9, 0x00, 0x7c, 0xa8, 0x17, 0x9b, 0x00, 0x7c,
+ 0xab, 0x17, 0x99, 0x00, 0x7c, 0xad, 0x17, 0x97,
+ 0x00, 0x7c, 0xae, 0x17, 0x9f, 0x00, 0x7c, 0xb0,
+ 0x56, 0xad, 0x00, 0x7c, 0xb1, 0x17, 0x9e, 0x00,
+ 0x7c, 0xb2, 0x17, 0x9d, 0x00, 0x7c, 0xb3, 0x17,
+ 0x9c, 0x00, 0x7c, 0xb6, 0x47, 0x93, 0x00, 0x7c,
+ 0xb7, 0x47, 0x94, 0x00, 0x7c, 0xb9, 0x17, 0xa0,
+ 0x00, 0x7c, 0xba, 0x4c, 0xc9, 0x00, 0x7c, 0xbb,
+ 0x56, 0xae, 0x00, 0x7c, 0xbc, 0x3a, 0x70, 0x00,
+ 0x7c, 0xbd, 0x17, 0xa1, 0x00, 0x7c, 0xbe, 0x21,
+ 0x8e, 0x00, 0x7c, 0xbf, 0x3a, 0x71, 0x00, 0x7c,
+ 0xc0, 0x17, 0xa2, 0x00, 0x7c, 0xc2, 0x17, 0xa4,
+ 0x00, 0x7c, 0xc4, 0x47, 0x96, 0x00, 0x7c, 0xc5,
+ 0x17, 0xa3, 0x00, 0x7c, 0xc7, 0x4c, 0xca, 0x00,
+ 0x7c, 0xc8, 0x3a, 0x72, 0x00, 0x7c, 0xc9, 0x3a,
+ 0x73, 0x00, 0x7c, 0xca, 0x07, 0x86, 0x00, 0x7c,
+ 0xcd, 0x47, 0x98, 0x00, 0x7c, 0xce, 0x0a, 0xba,
+ 0x00, 0x7c, 0xcf, 0x56, 0xaf, 0x00, 0x7c, 0xd2,
+ 0x17, 0xa6, 0x00, 0x7c, 0xd3, 0x4c, 0xcb, 0x00,
+ 0x7c, 0xd4, 0x56, 0xb0, 0x00, 0x7c, 0xd5, 0x42,
+ 0x8f, 0x00, 0x7c, 0xd6, 0x36, 0x84, 0x00, 0x7c,
+ 0xd7, 0x3a, 0x74, 0x00, 0x7c, 0xd8, 0x17, 0xa5,
+ 0x00, 0x7c, 0xd9, 0x3a, 0x75, 0x00, 0x7c, 0xda,
+ 0x4c, 0xcc, 0x00, 0x7c, 0xdc, 0x17, 0xa7, 0x00,
+ 0x7c, 0xdd, 0x3a, 0x76, 0x00, 0x7c, 0xde, 0x0e,
+ 0x05, 0x00, 0x7c, 0xdf, 0x0a, 0xee, 0x00, 0x7c,
+ 0xe0, 0x07, 0xd9, 0x00, 0x7c, 0xe2, 0x17, 0xa8,
+ 0x00, 0x7c, 0xe6, 0x47, 0x9b, 0x00, 0x7c, 0xe7,
+ 0x0f, 0x90, 0x00, 0x7c, 0xe9, 0x56, 0xb1, 0x00,
+ 0x7c, 0xeb, 0x3a, 0x77, 0x00, 0x7c, 0xef, 0x17,
+ 0xaa, 0x00, 0x7c, 0xf2, 0x17, 0xab, 0x00, 0x7c,
+ 0xf4, 0x17, 0xac, 0x00, 0x7c, 0xf5, 0x47, 0x9d,
+ 0x00, 0x7c, 0xf6, 0x17, 0xad, 0x00, 0x7c, 0xf8,
+ 0x08, 0xb3, 0x00, 0x7c, 0xfa, 0x17, 0xae, 0x00,
+ 0x7c, 0xfb, 0x07, 0x25, 0x00, 0x7c, 0xfe, 0x06,
+ 0x84, 0x00, 0x7d, 0x00, 0x06, 0x44, 0x00, 0x7d,
+ 0x02, 0x17, 0xb0, 0x00, 0x7d, 0x03, 0x47, 0x9e,
+ 0x00, 0x7d, 0x04, 0x0e, 0xff, 0x00, 0x7d, 0x05,
+ 0x07, 0xda, 0x00, 0x7d, 0x06, 0x17, 0xaf, 0x00,
+ 0x7d, 0x07, 0x3a, 0x78, 0x00, 0x7d, 0x08, 0x3a,
+ 0x79, 0x00, 0x7d, 0x09, 0x3a, 0x7a, 0x00, 0x7d,
+ 0x0a, 0x17, 0xb3, 0x00, 0x7d, 0x0b, 0x0e, 0xf2,
+ 0x00, 0x7d, 0x0d, 0x0c, 0xf2, 0x00, 0x7d, 0x0f,
+ 0x56, 0xb2, 0x00, 0x7d, 0x10, 0x0d, 0xa5, 0x00,
+ 0x7d, 0x11, 0x56, 0xb3, 0x00, 0x7d, 0x12, 0x47,
+ 0xa0, 0x00, 0x7d, 0x13, 0x3a, 0x7b, 0x00, 0x7d,
+ 0x14, 0x09, 0x6d, 0x00, 0x7d, 0x15, 0x17, 0xb2,
+ 0x00, 0x7d, 0x16, 0x56, 0xb4, 0x00, 0x7d, 0x17,
+ 0x08, 0xff, 0x00, 0x7d, 0x18, 0x07, 0xdb, 0x00,
+ 0x7d, 0x19, 0x08, 0xb4, 0x00, 0x7d, 0x1a, 0x06,
+ 0x83, 0x00, 0x7d, 0x1b, 0x0e, 0x06, 0x00, 0x7d,
+ 0x1c, 0x17, 0xb1, 0x00, 0x7d, 0x1d, 0x3a, 0x7c,
+ 0x00, 0x7d, 0x1e, 0x47, 0xa1, 0x00, 0x7d, 0x20,
+ 0x0a, 0xc9, 0x00, 0x7d, 0x21, 0x0e, 0x70, 0x00,
+ 0x7d, 0x22, 0x08, 0x67, 0x00, 0x7d, 0x23, 0x3a,
+ 0x7d, 0x00, 0x7d, 0x26, 0x56, 0xb5, 0x00, 0x7d,
+ 0x2a, 0x56, 0xb6, 0x00, 0x7d, 0x2b, 0x08, 0xb5,
+ 0x00, 0x7d, 0x2c, 0x0b, 0xf9, 0x00, 0x7d, 0x2d,
+ 0x56, 0xb7, 0x00, 0x7d, 0x2e, 0x17, 0xb6, 0x00,
+ 0x7d, 0x2f, 0x0f, 0xa7, 0x00, 0x7d, 0x30, 0x08,
+ 0x49, 0x00, 0x7d, 0x31, 0x42, 0x90, 0x00, 0x7d,
+ 0x32, 0x17, 0xb7, 0x00, 0x7d, 0x33, 0x0a, 0x08,
+ 0x00, 0x7d, 0x35, 0x17, 0xb9, 0x00, 0x7d, 0x39,
+ 0x09, 0xba, 0x00, 0x7d, 0x3a, 0x08, 0x20, 0x00,
+ 0x7d, 0x3c, 0x4c, 0xcd, 0x00, 0x7d, 0x3d, 0x47,
+ 0xa4, 0x00, 0x7d, 0x3e, 0x47, 0xa5, 0x00, 0x7d,
+ 0x3f, 0x17, 0xb8, 0x00, 0x7d, 0x40, 0x47, 0xa6,
+ 0x00, 0x7d, 0x41, 0x3a, 0x7e, 0x00, 0x7d, 0x42,
+ 0x09, 0x34, 0x00, 0x7d, 0x43, 0x07, 0x72, 0x00,
+ 0x7d, 0x44, 0x0a, 0xca, 0x00, 0x7d, 0x45, 0x17,
+ 0xb4, 0x00, 0x7d, 0x46, 0x17, 0xba, 0x00, 0x7d,
+ 0x47, 0x47, 0xa7, 0x00, 0x7d, 0x48, 0x21, 0x8f,
+ 0x00, 0x7d, 0x4b, 0x17, 0xb5, 0x00, 0x7d, 0x4c,
+ 0x07, 0x26, 0x00, 0x7d, 0x4d, 0x4c, 0xce, 0x00,
+ 0x7d, 0x4e, 0x17, 0xbd, 0x00, 0x7d, 0x4f, 0x17,
+ 0xc1, 0x00, 0x7d, 0x50, 0x07, 0x41, 0x00, 0x7d,
+ 0x51, 0x56, 0xb8, 0x00, 0x7d, 0x53, 0x3a, 0x7f,
+ 0x00, 0x7d, 0x55, 0x36, 0x3a, 0x00, 0x7d, 0x56,
+ 0x17, 0xbc, 0x00, 0x7d, 0x57, 0x56, 0xb9, 0x00,
+ 0x7d, 0x59, 0x3a, 0x80, 0x00, 0x7d, 0x5a, 0x47,
+ 0xab, 0x00, 0x7d, 0x5b, 0x17, 0xc5, 0x00, 0x7d,
+ 0x5c, 0x42, 0x91, 0x00, 0x7d, 0x5d, 0x3a, 0x81,
+ 0x00, 0x7d, 0x5e, 0x07, 0xdc, 0x00, 0x7d, 0x61,
+ 0x0f, 0x57, 0x00, 0x7d, 0x62, 0x04, 0x80, 0x00,
+ 0x7d, 0x63, 0x17, 0xc2, 0x00, 0x7d, 0x65, 0x56,
+ 0xba, 0x00, 0x7d, 0x66, 0x06, 0x85, 0x00, 0x7d,
+ 0x67, 0x56, 0xbb, 0x00, 0x7d, 0x68, 0x17, 0xbf,
+ 0x00, 0x7d, 0x6a, 0x47, 0xac, 0x00, 0x7d, 0x6e,
+ 0x17, 0xc0, 0x00, 0x7d, 0x70, 0x47, 0xad, 0x00,
+ 0x7d, 0x71, 0x0c, 0x77, 0x00, 0x7d, 0x72, 0x17,
+ 0xbe, 0x00, 0x7d, 0x73, 0x17, 0xbb, 0x00, 0x7d,
+ 0x75, 0x05, 0x86, 0x00, 0x7d, 0x76, 0x0a, 0x88,
+ 0x00, 0x7d, 0x78, 0x56, 0xbc, 0x00, 0x7d, 0x79,
+ 0x07, 0x5c, 0x00, 0x7d, 0x7a, 0x3a, 0x82, 0x00,
+ 0x7d, 0x7b, 0x56, 0xbd, 0x00, 0x7d, 0x7d, 0x17,
+ 0xc7, 0x00, 0x7d, 0x7f, 0x47, 0xaf, 0x00, 0x7d,
+ 0x81, 0x56, 0xbe, 0x00, 0x7d, 0x82, 0x4c, 0xcf,
+ 0x00, 0x7d, 0x83, 0x42, 0x92, 0x00, 0x7d, 0x85,
+ 0x4c, 0xd0, 0x00, 0x7d, 0x86, 0x3a, 0x83, 0x00,
+ 0x7d, 0x88, 0x47, 0xb1, 0x00, 0x7d, 0x89, 0x17,
+ 0xc4, 0x00, 0x7d, 0x8b, 0x3a, 0x84, 0x00, 0x7d,
+ 0x8c, 0x3a, 0x85, 0x00, 0x7d, 0x8d, 0x4c, 0xd1,
+ 0x00, 0x7d, 0x8f, 0x17, 0xc6, 0x00, 0x7d, 0x91,
+ 0x4c, 0xd2, 0x00, 0x7d, 0x93, 0x17, 0xc3, 0x00,
+ 0x7d, 0x96, 0x56, 0xbf, 0x00, 0x7d, 0x97, 0x47,
+ 0xb2, 0x00, 0x7d, 0x99, 0x07, 0x27, 0x00, 0x7d,
+ 0x9a, 0x0b, 0x13, 0x00, 0x7d, 0x9b, 0x17, 0xc8,
+ 0x00, 0x7d, 0x9c, 0x0a, 0xf0, 0x00, 0x7d, 0x9d,
+ 0x47, 0xb4, 0x00, 0x7d, 0x9e, 0x4c, 0xd3, 0x00,
+ 0x7d, 0x9f, 0x17, 0xd5, 0x00, 0x7d, 0xa0, 0x21,
+ 0x92, 0x00, 0x7d, 0xa2, 0x17, 0xd1, 0x00, 0x7d,
+ 0xa3, 0x17, 0xcb, 0x00, 0x7d, 0xa6, 0x42, 0x93,
+ 0x00, 0x7d, 0xa7, 0x47, 0xb5, 0x00, 0x7d, 0xaa,
+ 0x47, 0xb6, 0x00, 0x7d, 0xab, 0x17, 0xcf, 0x00,
+ 0x7d, 0xac, 0x09, 0x26, 0x00, 0x7d, 0xad, 0x04,
+ 0xa1, 0x00, 0x7d, 0xae, 0x17, 0xca, 0x00, 0x7d,
+ 0xaf, 0x17, 0xd2, 0x00, 0x7d, 0xb0, 0x17, 0xd6,
+ 0x00, 0x7d, 0xb1, 0x07, 0xdd, 0x00, 0x7d, 0xb2,
+ 0x0e, 0xe2, 0x00, 0x7d, 0xb3, 0x4c, 0xd4, 0x00,
+ 0x7d, 0xb4, 0x0b, 0xf2, 0x00, 0x7d, 0xb5, 0x17,
+ 0xcc, 0x00, 0x7d, 0xb6, 0x47, 0xb7, 0x00, 0x7d,
+ 0xb7, 0x21, 0x91, 0x00, 0x7d, 0xb8, 0x17, 0xd4,
+ 0x00, 0x7d, 0xb9, 0x4c, 0xd5, 0x00, 0x7d, 0xba,
+ 0x17, 0xc9, 0x00, 0x7d, 0xbb, 0x0b, 0x7c, 0x00,
+ 0x7d, 0xbd, 0x17, 0xce, 0x00, 0x7d, 0xbe, 0x04,
+ 0x81, 0x00, 0x7d, 0xbf, 0x0e, 0xd6, 0x00, 0x7d,
+ 0xc0, 0x47, 0xb8, 0x00, 0x7d, 0xc2, 0x42, 0x94,
+ 0x00, 0x7d, 0xc3, 0x56, 0xc0, 0x00, 0x7d, 0xc4,
+ 0x56, 0xc1, 0x00, 0x7d, 0xc5, 0x56, 0xc2, 0x00,
+ 0x7d, 0xc6, 0x56, 0xc3, 0x00, 0x7d, 0xc7, 0x17,
+ 0xcd, 0x00, 0x7d, 0xca, 0x06, 0xd3, 0x00, 0x7d,
+ 0xcb, 0x0d, 0x80, 0x00, 0x7d, 0xcc, 0x3a, 0x86,
+ 0x00, 0x7d, 0xcd, 0x56, 0xc4, 0x00, 0x7d, 0xce,
+ 0x56, 0xc5, 0x00, 0x7d, 0xcf, 0x0a, 0xef, 0x00,
+ 0x7d, 0xd0, 0x4c, 0xd6, 0x00, 0x7d, 0xd1, 0x0f,
+ 0x98, 0x00, 0x7d, 0xd2, 0x09, 0x79, 0x00, 0x7d,
+ 0xd5, 0x17, 0xfd, 0x00, 0x7d, 0xd6, 0x21, 0x93,
+ 0x00, 0x7d, 0xd7, 0x47, 0xb9, 0x00, 0x7d, 0xd8,
+ 0x17, 0xd7, 0x00, 0x7d, 0xd9, 0x47, 0xba, 0x00,
+ 0x7d, 0xda, 0x0a, 0xa2, 0x00, 0x7d, 0xdc, 0x17,
+ 0xd3, 0x00, 0x7d, 0xdd, 0x17, 0xd8, 0x00, 0x7d,
+ 0xde, 0x17, 0xda, 0x00, 0x7d, 0xe0, 0x0c, 0x15,
+ 0x00, 0x7d, 0xe1, 0x17, 0xdd, 0x00, 0x7d, 0xe2,
+ 0x56, 0xc7, 0x00, 0x7d, 0xe3, 0x34, 0x0a, 0x00,
+ 0x7d, 0xe4, 0x17, 0xd9, 0x00, 0x7d, 0xe5, 0x4c,
+ 0xd7, 0x00, 0x7d, 0xe6, 0x47, 0xbb, 0x00, 0x7d,
+ 0xe8, 0x0e, 0x24, 0x00, 0x7d, 0xe9, 0x06, 0x07,
+ 0x00, 0x7d, 0xea, 0x56, 0xc8, 0x00, 0x7d, 0xeb,
+ 0x3a, 0x87, 0x00, 0x7d, 0xec, 0x0e, 0xd7, 0x00,
+ 0x7d, 0xed, 0x56, 0xc9, 0x00, 0x7d, 0xef, 0x04,
+ 0xa2, 0x00, 0x7d, 0xf1, 0x3a, 0x88, 0x00, 0x7d,
+ 0xf2, 0x17, 0xdc, 0x00, 0x7d, 0xf4, 0x34, 0x57,
+ 0x00, 0x7d, 0xf5, 0x4c, 0xd8, 0x00, 0x7d, 0xf6,
+ 0x4c, 0xd9, 0x00, 0x7d, 0xf9, 0x3a, 0x89, 0x00,
+ 0x7d, 0xfa, 0x56, 0xca, 0x00, 0x7d, 0xfb, 0x17,
+ 0xdb, 0x00, 0x7e, 0x00, 0x56, 0xc6, 0x00, 0x7e,
+ 0x01, 0x05, 0x11, 0x00, 0x7e, 0x04, 0x0c, 0xc4,
+ 0x00, 0x7e, 0x05, 0x17, 0xde, 0x00, 0x7e, 0x08,
+ 0x3a, 0x8a, 0x00, 0x7e, 0x09, 0x17, 0xe5, 0x00,
+ 0x7e, 0x0a, 0x17, 0xdf, 0x00, 0x7e, 0x0b, 0x17,
+ 0xe6, 0x00, 0x7e, 0x10, 0x47, 0xbf, 0x00, 0x7e,
+ 0x11, 0x3a, 0x8b, 0x00, 0x7e, 0x12, 0x17, 0xe2,
+ 0x00, 0x7e, 0x15, 0x3a, 0x8c, 0x00, 0x7e, 0x17,
+ 0x47, 0xc0, 0x00, 0x7e, 0x1b, 0x0d, 0x31, 0x00,
+ 0x7e, 0x1c, 0x56, 0xcb, 0x00, 0x7e, 0x1d, 0x47,
+ 0xc1, 0x00, 0x7e, 0x1e, 0x08, 0xf6, 0x00, 0x7e,
+ 0x1f, 0x17, 0xe4, 0x00, 0x7e, 0x20, 0x3a, 0x8d,
+ 0x00, 0x7e, 0x21, 0x17, 0xe1, 0x00, 0x7e, 0x22,
+ 0x17, 0xe7, 0x00, 0x7e, 0x23, 0x17, 0xe0, 0x00,
+ 0x7e, 0x26, 0x09, 0x4e, 0x00, 0x7e, 0x27, 0x47,
+ 0xc2, 0x00, 0x7e, 0x28, 0x42, 0x95, 0x00, 0x7e,
+ 0x2b, 0x0e, 0x53, 0x00, 0x7e, 0x2c, 0x47, 0xc3,
+ 0x00, 0x7e, 0x2d, 0x56, 0xcc, 0x00, 0x7e, 0x2e,
+ 0x09, 0x56, 0x00, 0x7e, 0x2f, 0x4c, 0xda, 0x00,
+ 0x7e, 0x31, 0x17, 0xe3, 0x00, 0x7e, 0x32, 0x17,
+ 0xef, 0x00, 0x7e, 0x33, 0x56, 0xcd, 0x00, 0x7e,
+ 0x35, 0x17, 0xeb, 0x00, 0x7e, 0x36, 0x4c, 0xdb,
+ 0x00, 0x7e, 0x37, 0x17, 0xee, 0x00, 0x7e, 0x39,
+ 0x17, 0xec, 0x00, 0x7e, 0x3a, 0x17, 0xf0, 0x00,
+ 0x7e, 0x3b, 0x17, 0xea, 0x00, 0x7e, 0x3d, 0x17,
+ 0xd0, 0x00, 0x7e, 0x3e, 0x0a, 0x77, 0x00, 0x7e,
+ 0x3f, 0x56, 0xce, 0x00, 0x7e, 0x41, 0x0d, 0x5f,
+ 0x00, 0x7e, 0x43, 0x17, 0xed, 0x00, 0x7e, 0x44,
+ 0x4c, 0xdc, 0x00, 0x7e, 0x45, 0x47, 0xc4, 0x00,
+ 0x7e, 0x46, 0x17, 0xe8, 0x00, 0x7e, 0x47, 0x3a,
+ 0x8e, 0x00, 0x7e, 0x48, 0x37, 0x67, 0x00, 0x7e,
+ 0x4a, 0x0a, 0xa3, 0x00, 0x7e, 0x4b, 0x07, 0x28,
+ 0x00, 0x7e, 0x4d, 0x09, 0x35, 0x00, 0x7e, 0x4e,
+ 0x56, 0xcf, 0x00, 0x7e, 0x50, 0x56, 0xd0, 0x00,
+ 0x7e, 0x52, 0x21, 0x94, 0x00, 0x7e, 0x54, 0x09,
+ 0xeb, 0x00, 0x7e, 0x55, 0x0a, 0xb8, 0x00, 0x7e,
+ 0x56, 0x17, 0xf3, 0x00, 0x7e, 0x58, 0x56, 0xd1,
+ 0x00, 0x7e, 0x59, 0x17, 0xf5, 0x00, 0x7e, 0x5a,
+ 0x17, 0xf6, 0x00, 0x7e, 0x5d, 0x17, 0xf2, 0x00,
+ 0x7e, 0x5e, 0x17, 0xf4, 0x00, 0x7e, 0x5f, 0x56,
+ 0xd2, 0x00, 0x7e, 0x61, 0x1e, 0x11, 0x00, 0x7e,
+ 0x62, 0x3a, 0x8f, 0x00, 0x7e, 0x65, 0x56, 0xd3,
+ 0x00, 0x7e, 0x66, 0x17, 0xe9, 0x00, 0x7e, 0x67,
+ 0x17, 0xf1, 0x00, 0x7e, 0x69, 0x17, 0xf9, 0x00,
+ 0x7e, 0x6a, 0x17, 0xf8, 0x00, 0x7e, 0x6b, 0x1d,
+ 0xf7, 0x00, 0x7e, 0x6d, 0x0e, 0xa8, 0x00, 0x7e,
+ 0x6e, 0x3a, 0x90, 0x00, 0x7e, 0x6f, 0x4c, 0xdd,
+ 0x00, 0x7e, 0x70, 0x07, 0x01, 0x00, 0x7e, 0x73,
+ 0x3a, 0x91, 0x00, 0x7e, 0x75, 0x47, 0xc5, 0x00,
+ 0x7e, 0x78, 0x4c, 0xde, 0x00, 0x7e, 0x79, 0x17,
+ 0xf7, 0x00, 0x7e, 0x7b, 0x17, 0xfb, 0x00, 0x7e,
+ 0x7c, 0x17, 0xfa, 0x00, 0x7e, 0x7d, 0x17, 0xfe,
+ 0x00, 0x7e, 0x7e, 0x47, 0xc6, 0x00, 0x7e, 0x7f,
+ 0x18, 0x00, 0x00, 0x7e, 0x81, 0x4c, 0xdf, 0x00,
+ 0x7e, 0x82, 0x08, 0x8a, 0x00, 0x7e, 0x83, 0x17,
+ 0xfc, 0x00, 0x7e, 0x86, 0x47, 0xc7, 0x00, 0x7e,
+ 0x87, 0x47, 0xc8, 0x00, 0x7e, 0x88, 0x18, 0x01,
+ 0x00, 0x7e, 0x89, 0x18, 0x02, 0x00, 0x7e, 0x8a,
+ 0x20, 0xa7, 0x00, 0x7e, 0x8c, 0x18, 0x03, 0x00,
+ 0x7e, 0x8d, 0x3a, 0x92, 0x00, 0x7e, 0x8e, 0x18,
+ 0x09, 0x00, 0x7e, 0x8f, 0x0c, 0x35, 0x00, 0x7e,
+ 0x90, 0x18, 0x05, 0x00, 0x7e, 0x91, 0x3a, 0x93,
+ 0x00, 0x7e, 0x92, 0x18, 0x04, 0x00, 0x7e, 0x93,
+ 0x18, 0x06, 0x00, 0x7e, 0x94, 0x18, 0x07, 0x00,
+ 0x7e, 0x95, 0x56, 0xd4, 0x00, 0x7e, 0x96, 0x18,
+ 0x08, 0x00, 0x7e, 0x98, 0x3a, 0x94, 0x00, 0x7e,
+ 0x9a, 0x47, 0xca, 0x00, 0x7e, 0x9b, 0x18, 0x0a,
+ 0x00, 0x7e, 0x9c, 0x18, 0x0b, 0x00, 0x7e, 0x9d,
+ 0x56, 0xd5, 0x00, 0x7e, 0x9e, 0x56, 0xd6, 0x00,
+ 0x7f, 0x36, 0x06, 0x08, 0x00, 0x7f, 0x38, 0x18,
+ 0x0c, 0x00, 0x7f, 0x3a, 0x18, 0x0d, 0x00, 0x7f,
+ 0x3b, 0x47, 0xcd, 0x00, 0x7f, 0x3c, 0x47, 0xcc,
+ 0x00, 0x7f, 0x3d, 0x4c, 0xe0, 0x00, 0x7f, 0x3e,
+ 0x47, 0xce, 0x00, 0x7f, 0x3f, 0x56, 0xd7, 0x00,
+ 0x7f, 0x43, 0x47, 0xcf, 0x00, 0x7f, 0x44, 0x3a,
+ 0x95, 0x00, 0x7f, 0x45, 0x18, 0x0e, 0x00, 0x7f,
+ 0x47, 0x21, 0x95, 0x00, 0x7f, 0x4c, 0x18, 0x0f,
+ 0x00, 0x7f, 0x4d, 0x18, 0x10, 0x00, 0x7f, 0x4e,
+ 0x18, 0x11, 0x00, 0x7f, 0x4f, 0x3a, 0x96, 0x00,
+ 0x7f, 0x50, 0x18, 0x12, 0x00, 0x7f, 0x51, 0x18,
+ 0x13, 0x00, 0x7f, 0x52, 0x3a, 0x97, 0x00, 0x7f,
+ 0x53, 0x3a, 0x98, 0x00, 0x7f, 0x54, 0x18, 0x15,
+ 0x00, 0x7f, 0x55, 0x18, 0x14, 0x00, 0x7f, 0x58,
+ 0x18, 0x16, 0x00, 0x7f, 0x5b, 0x4c, 0xe1, 0x00,
+ 0x7f, 0x5c, 0x56, 0xd8, 0x00, 0x7f, 0x5d, 0x4c,
+ 0xe2, 0x00, 0x7f, 0x5f, 0x18, 0x17, 0x00, 0x7f,
+ 0x60, 0x18, 0x18, 0x00, 0x7f, 0x61, 0x3a, 0x99,
+ 0x00, 0x7f, 0x63, 0x47, 0xd3, 0x00, 0x7f, 0x64,
+ 0x47, 0xd4, 0x00, 0x7f, 0x65, 0x4c, 0xe3, 0x00,
+ 0x7f, 0x66, 0x56, 0xd9, 0x00, 0x7f, 0x67, 0x18,
+ 0x1b, 0x00, 0x7f, 0x68, 0x18, 0x19, 0x00, 0x7f,
+ 0x69, 0x18, 0x1a, 0x00, 0x7f, 0x6a, 0x08, 0x51,
+ 0x00, 0x7f, 0x6b, 0x07, 0x29, 0x00, 0x7f, 0x6d,
+ 0x47, 0xd5, 0x00, 0x7f, 0x6e, 0x0b, 0x94, 0x00,
+ 0x7f, 0x70, 0x0d, 0x47, 0x00, 0x7f, 0x71, 0x4c,
+ 0xe4, 0x00, 0x7f, 0x72, 0x34, 0x29, 0x00, 0x7f,
+ 0x75, 0x0d, 0x03, 0x00, 0x7f, 0x77, 0x0d, 0x81,
+ 0x00, 0x7f, 0x78, 0x18, 0x1c, 0x00, 0x7f, 0x79,
+ 0x13, 0x36, 0x00, 0x7f, 0x7d, 0x47, 0xd6, 0x00,
+ 0x7f, 0x7e, 0x47, 0xd7, 0x00, 0x7f, 0x7f, 0x4c,
+ 0xe5, 0x00, 0x7f, 0x80, 0x4c, 0xe6, 0x00, 0x7f,
+ 0x82, 0x18, 0x1d, 0x00, 0x7f, 0x83, 0x18, 0x1f,
+ 0x00, 0x7f, 0x85, 0x0f, 0x4f, 0x00, 0x7f, 0x86,
+ 0x18, 0x1e, 0x00, 0x7f, 0x87, 0x18, 0x21, 0x00,
+ 0x7f, 0x88, 0x18, 0x20, 0x00, 0x7f, 0x8a, 0x36,
+ 0xfe, 0x00, 0x7f, 0x8b, 0x4c, 0xe7, 0x00, 0x7f,
+ 0x8c, 0x18, 0x22, 0x00, 0x7f, 0x8d, 0x56, 0xdb,
+ 0x00, 0x7f, 0x8e, 0x0d, 0x92, 0x00, 0x7f, 0x8f,
+ 0x56, 0xdc, 0x00, 0x7f, 0x90, 0x47, 0xd8, 0x00,
+ 0x7f, 0x91, 0x3a, 0x9a, 0x00, 0x7f, 0x94, 0x18,
+ 0x23, 0x00, 0x7f, 0x96, 0x47, 0xdb, 0x00, 0x7f,
+ 0x97, 0x42, 0x96, 0x00, 0x7f, 0x9a, 0x18, 0x26,
+ 0x00, 0x7f, 0x9c, 0x47, 0xdc, 0x00, 0x7f, 0x9d,
+ 0x18, 0x25, 0x00, 0x7f, 0x9e, 0x18, 0x24, 0x00,
+ 0x7f, 0xa1, 0x21, 0x96, 0x00, 0x7f, 0xa2, 0x4c,
+ 0xe8, 0x00, 0x7f, 0xa3, 0x18, 0x27, 0x00, 0x7f,
+ 0xa4, 0x07, 0x08, 0x00, 0x7f, 0xa6, 0x56, 0xdd,
+ 0x00, 0x7f, 0xa8, 0x0a, 0xa4, 0x00, 0x7f, 0xa9,
+ 0x06, 0x5b, 0x00, 0x7f, 0xaa, 0x56, 0xde, 0x00,
+ 0x7f, 0xad, 0x47, 0xdd, 0x00, 0x7f, 0xae, 0x18,
+ 0x2b, 0x00, 0x7f, 0xaf, 0x18, 0x28, 0x00, 0x7f,
+ 0xb2, 0x18, 0x29, 0x00, 0x7f, 0xb4, 0x56, 0xdf,
+ 0x00, 0x7f, 0xb6, 0x18, 0x2c, 0x00, 0x7f, 0xb8,
+ 0x18, 0x2d, 0x00, 0x7f, 0xb9, 0x18, 0x2a, 0x00,
+ 0x7f, 0xbc, 0x56, 0xe0, 0x00, 0x7f, 0xbd, 0x21,
+ 0x97, 0x00, 0x7f, 0xbf, 0x3a, 0x9b, 0x00, 0x7f,
+ 0xc0, 0x56, 0xe1, 0x00, 0x7f, 0xc1, 0x05, 0x27,
+ 0x00, 0x7f, 0xc3, 0x47, 0xdf, 0x00, 0x7f, 0xc5,
+ 0x18, 0x2f, 0x00, 0x7f, 0xc6, 0x18, 0x30, 0x00,
+ 0x7f, 0xc8, 0x56, 0xe2, 0x00, 0x7f, 0xca, 0x18,
+ 0x31, 0x00, 0x7f, 0xcc, 0x0f, 0x4c, 0x00, 0x7f,
+ 0xce, 0x3a, 0x9c, 0x00, 0x7f, 0xcf, 0x47, 0xe0,
+ 0x00, 0x7f, 0xd2, 0x09, 0x36, 0x00, 0x7f, 0xd4,
+ 0x18, 0x33, 0x00, 0x7f, 0xd5, 0x18, 0x32, 0x00,
+ 0x7f, 0xdb, 0x42, 0x97, 0x00, 0x7f, 0xdf, 0x3a,
+ 0x9d, 0x00, 0x7f, 0xe0, 0x0a, 0x2f, 0x00, 0x7f,
+ 0xe1, 0x18, 0x34, 0x00, 0x7f, 0xe3, 0x47, 0xe1,
+ 0x00, 0x7f, 0xe5, 0x3a, 0x9e, 0x00, 0x7f, 0xe6,
+ 0x18, 0x35, 0x00, 0x7f, 0xe8, 0x56, 0xe3, 0x00,
+ 0x7f, 0xe9, 0x18, 0x36, 0x00, 0x7f, 0xeb, 0x06,
+ 0x21, 0x00, 0x7f, 0xec, 0x3a, 0x9f, 0x00, 0x7f,
+ 0xee, 0x3a, 0xa0, 0x00, 0x7f, 0xef, 0x3a, 0xa1,
+ 0x00, 0x7f, 0xf0, 0x06, 0x09, 0x00, 0x7f, 0xf2,
+ 0x47, 0xe2, 0x00, 0x7f, 0xf3, 0x18, 0x37, 0x00,
+ 0x7f, 0xf9, 0x18, 0x38, 0x00, 0x7f, 0xfa, 0x3a,
+ 0xa2, 0x00, 0x7f, 0xfb, 0x0e, 0x8b, 0x00, 0x7f,
+ 0xfc, 0x0f, 0x4d, 0x00, 0x7f, 0xfd, 0x4c, 0xe9,
+ 0x00, 0x7f, 0xfe, 0x4c, 0xea, 0x00, 0x7f, 0xff,
+ 0x4c, 0xeb, 0x00, 0x80, 0x00, 0x0f, 0x3e, 0x00,
+ 0x80, 0x01, 0x0f, 0xdd, 0x00, 0x80, 0x02, 0x37,
+ 0x13, 0x00, 0x80, 0x03, 0x07, 0xdf, 0x00, 0x80,
+ 0x04, 0x18, 0x3b, 0x00, 0x80, 0x05, 0x09, 0x00,
+ 0x00, 0x80, 0x06, 0x18, 0x3a, 0x00, 0x80, 0x07,
+ 0x4c, 0xec, 0x00, 0x80, 0x08, 0x47, 0xe4, 0x00,
+ 0x80, 0x0a, 0x47, 0xe3, 0x00, 0x80, 0x0b, 0x18,
+ 0x3c, 0x00, 0x80, 0x0c, 0x08, 0xd5, 0x00, 0x80,
+ 0x0d, 0x4c, 0xed, 0x00, 0x80, 0x0e, 0x3a, 0xa3,
+ 0x00, 0x80, 0x0f, 0x56, 0xe4, 0x00, 0x80, 0x10,
+ 0x0b, 0x31, 0x00, 0x80, 0x11, 0x3a, 0xa4, 0x00,
+ 0x80, 0x12, 0x18, 0x3d, 0x00, 0x80, 0x13, 0x56,
+ 0xe5, 0x00, 0x80, 0x14, 0x3a, 0xa5, 0x00, 0x80,
+ 0x15, 0x07, 0xde, 0x00, 0x80, 0x16, 0x47, 0xe5,
+ 0x00, 0x80, 0x17, 0x0e, 0xe3, 0x00, 0x80, 0x18,
+ 0x18, 0x3e, 0x00, 0x80, 0x19, 0x18, 0x3f, 0x00,
+ 0x80, 0x1c, 0x18, 0x40, 0x00, 0x80, 0x1d, 0x56,
+ 0xe6, 0x00, 0x80, 0x1e, 0x4c, 0xee, 0x00, 0x80,
+ 0x1f, 0x56, 0xe7, 0x00, 0x80, 0x20, 0x56, 0xe8,
+ 0x00, 0x80, 0x21, 0x18, 0x41, 0x00, 0x80, 0x24,
+ 0x3a, 0xa6, 0x00, 0x80, 0x26, 0x3a, 0xa7, 0x00,
+ 0x80, 0x28, 0x18, 0x42, 0x00, 0x80, 0x2c, 0x47,
+ 0xe6, 0x00, 0x80, 0x2e, 0x56, 0xe9, 0x00, 0x80,
+ 0x30, 0x47, 0xe7, 0x00, 0x80, 0x33, 0x08, 0xd6,
+ 0x00, 0x80, 0x34, 0x56, 0xea, 0x00, 0x80, 0x35,
+ 0x42, 0x98, 0x00, 0x80, 0x36, 0x0e, 0xf9, 0x00,
+ 0x80, 0x37, 0x42, 0x99, 0x00, 0x80, 0x39, 0x4c,
+ 0xef, 0x00, 0x80, 0x3a, 0x3a, 0xa8, 0x00, 0x80,
+ 0x3b, 0x18, 0x44, 0x00, 0x80, 0x3c, 0x3a, 0xa9,
+ 0x00, 0x80, 0x3d, 0x0b, 0x7d, 0x00, 0x80, 0x3e,
+ 0x56, 0xeb, 0x00, 0x80, 0x3f, 0x18, 0x43, 0x00,
+ 0x80, 0x40, 0x56, 0xec, 0x00, 0x80, 0x43, 0x47,
+ 0xe8, 0x00, 0x80, 0x44, 0x56, 0xed, 0x00, 0x80,
+ 0x46, 0x18, 0x46, 0x00, 0x80, 0x4a, 0x18, 0x45,
+ 0x00, 0x80, 0x52, 0x18, 0x47, 0x00, 0x80, 0x56,
+ 0x0a, 0x5f, 0x00, 0x80, 0x58, 0x18, 0x48, 0x00,
+ 0x80, 0x5a, 0x18, 0x49, 0x00, 0x80, 0x5e, 0x0e,
+ 0x09, 0x00, 0x80, 0x5f, 0x18, 0x4a, 0x00, 0x80,
+ 0x60, 0x3a, 0xaa, 0x00, 0x80, 0x61, 0x0a, 0xf1,
+ 0x00, 0x80, 0x62, 0x18, 0x4b, 0x00, 0x80, 0x64,
+ 0x56, 0xee, 0x00, 0x80, 0x66, 0x47, 0xe9, 0x00,
+ 0x80, 0x68, 0x18, 0x4c, 0x00, 0x80, 0x6d, 0x56,
+ 0xef, 0x00, 0x80, 0x6f, 0x0f, 0xc6, 0x00, 0x80,
+ 0x70, 0x18, 0x4f, 0x00, 0x80, 0x71, 0x3a, 0xab,
+ 0x00, 0x80, 0x72, 0x18, 0x4e, 0x00, 0x80, 0x73,
+ 0x18, 0x4d, 0x00, 0x80, 0x74, 0x0b, 0xcc, 0x00,
+ 0x80, 0x75, 0x3a, 0xac, 0x00, 0x80, 0x76, 0x18,
+ 0x50, 0x00, 0x80, 0x77, 0x09, 0xec, 0x00, 0x80,
+ 0x79, 0x18, 0x51, 0x00, 0x80, 0x7b, 0x47, 0xea,
+ 0x00, 0x80, 0x7d, 0x18, 0x52, 0x00, 0x80, 0x7e,
+ 0x0f, 0xde, 0x00, 0x80, 0x7f, 0x18, 0x53, 0x00,
+ 0x80, 0x81, 0x56, 0xf0, 0x00, 0x80, 0x84, 0x18,
+ 0x54, 0x00, 0x80, 0x85, 0x18, 0x56, 0x00, 0x80,
+ 0x86, 0x18, 0x55, 0x00, 0x80, 0x87, 0x0d, 0x39,
+ 0x00, 0x80, 0x88, 0x4c, 0xf0, 0x00, 0x80, 0x89,
+ 0x0c, 0xd1, 0x00, 0x80, 0x8b, 0x0f, 0xe4, 0x00,
+ 0x80, 0x8c, 0x0d, 0x3d, 0x00, 0x80, 0x8e, 0x4c,
+ 0xf1, 0x00, 0x80, 0x93, 0x18, 0x58, 0x00, 0x80,
+ 0x96, 0x09, 0xbb, 0x00, 0x80, 0x98, 0x0d, 0x9c,
+ 0x00, 0x80, 0x99, 0x47, 0xeb, 0x00, 0x80, 0x9a,
+ 0x18, 0x59, 0x00, 0x80, 0x9b, 0x18, 0x57, 0x00,
+ 0x80, 0x9c, 0x47, 0xec, 0x00, 0x80, 0x9d, 0x06,
+ 0x0a, 0x00, 0x80, 0x9e, 0x3a, 0xad, 0x00, 0x80,
+ 0xa1, 0x07, 0x88, 0x00, 0x80, 0xa2, 0x08, 0xb6,
+ 0x00, 0x80, 0xa4, 0x47, 0xed, 0x00, 0x80, 0xa5,
+ 0x0d, 0x82, 0x00, 0x80, 0xa6, 0x3a, 0xae, 0x00,
+ 0x80, 0xa7, 0x47, 0xee, 0x00, 0x80, 0xa9, 0x07,
+ 0x5e, 0x00, 0x80, 0xaa, 0x0e, 0x71, 0x00, 0x80,
+ 0xab, 0x3a, 0xaf, 0x00, 0x80, 0xac, 0x18, 0x5c,
+ 0x00, 0x80, 0xad, 0x18, 0x5a, 0x00, 0x80, 0xaf,
+ 0x07, 0xe0, 0x00, 0x80, 0xb1, 0x07, 0xe1, 0x00,
+ 0x80, 0xb2, 0x04, 0xad, 0x00, 0x80, 0xb4, 0x08,
+ 0x58, 0x00, 0x80, 0xb8, 0x47, 0xef, 0x00, 0x80,
+ 0xb9, 0x56, 0xf1, 0x00, 0x80, 0xba, 0x0d, 0x0f,
+ 0x00, 0x80, 0xc3, 0x04, 0xa3, 0x00, 0x80, 0xc4,
+ 0x18, 0x61, 0x00, 0x80, 0xc5, 0x47, 0xf1, 0x00,
+ 0x80, 0xc6, 0x0b, 0x7e, 0x00, 0x80, 0xc8, 0x56,
+ 0xf2, 0x00, 0x80, 0xca, 0x42, 0x9a, 0x00, 0x80,
+ 0xcc, 0x0d, 0x0e, 0x00, 0x80, 0xcd, 0x56, 0xf3,
+ 0x00, 0x80, 0xce, 0x0b, 0x3b, 0x00, 0x80, 0xcf,
+ 0x4c, 0xf2, 0x00, 0x80, 0xd2, 0x56, 0xf4, 0x00,
+ 0x80, 0xd4, 0x4c, 0xf3, 0x00, 0x80, 0xd5, 0x47,
+ 0xf2, 0x00, 0x80, 0xd6, 0x18, 0x63, 0x00, 0x80,
+ 0xd7, 0x3a, 0xb0, 0x00, 0x80, 0xd8, 0x3a, 0xb1,
+ 0x00, 0x80, 0xd9, 0x18, 0x5f, 0x00, 0x80, 0xda,
+ 0x18, 0x62, 0x00, 0x80, 0xdb, 0x18, 0x5d, 0x00,
+ 0x80, 0xdd, 0x18, 0x60, 0x00, 0x80, 0xde, 0x0e,
+ 0x54, 0x00, 0x80, 0xe0, 0x42, 0x9b, 0x00, 0x80,
+ 0xe1, 0x07, 0x89, 0x00, 0x80, 0xe4, 0x04, 0xc1,
+ 0x00, 0x80, 0xe5, 0x18, 0x5e, 0x00, 0x80, 0xe6,
+ 0x47, 0xf3, 0x00, 0x80, 0xed, 0x4c, 0xf4, 0x00,
+ 0x80, 0xee, 0x56, 0xf5, 0x00, 0x80, 0xef, 0x18,
+ 0x65, 0x00, 0x80, 0xf0, 0x4c, 0xf5, 0x00, 0x80,
+ 0xf1, 0x18, 0x66, 0x00, 0x80, 0xf2, 0x56, 0xf6,
+ 0x00, 0x80, 0xf3, 0x42, 0x9c, 0x00, 0x80, 0xf4,
+ 0x0c, 0x91, 0x00, 0x80, 0xf5, 0x47, 0xf5, 0x00,
+ 0x80, 0xf6, 0x56, 0xf7, 0x00, 0x80, 0xf7, 0x4c,
+ 0xf6, 0x00, 0x80, 0xf8, 0x06, 0xb3, 0x00, 0x80,
+ 0xf9, 0x56, 0xf8, 0x00, 0x80, 0xfa, 0x4c, 0xf7,
+ 0x00, 0x80, 0xfb, 0x47, 0xf6, 0x00, 0x80, 0xfc,
+ 0x18, 0x71, 0x00, 0x80, 0xfd, 0x0c, 0xf3, 0x00,
+ 0x80, 0xfe, 0x4c, 0xf8, 0x00, 0x81, 0x02, 0x08,
+ 0xb7, 0x00, 0x81, 0x03, 0x4c, 0xf9, 0x00, 0x81,
+ 0x05, 0x06, 0xb4, 0x00, 0x81, 0x06, 0x0a, 0x6c,
+ 0x00, 0x81, 0x07, 0x0f, 0xec, 0x00, 0x81, 0x08,
+ 0x0e, 0xba, 0x00, 0x81, 0x09, 0x18, 0x64, 0x00,
+ 0x81, 0x0a, 0x0a, 0x78, 0x00, 0x81, 0x0b, 0x56,
+ 0xf9, 0x00, 0x81, 0x0d, 0x47, 0xf4, 0x00, 0x81,
+ 0x16, 0x3a, 0xb2, 0x00, 0x81, 0x17, 0x4c, 0xfa,
+ 0x00, 0x81, 0x18, 0x3a, 0xb3, 0x00, 0x81, 0x1a,
+ 0x06, 0x6d, 0x00, 0x81, 0x1b, 0x18, 0x67, 0x00,
+ 0x81, 0x1c, 0x56, 0xfa, 0x00, 0x81, 0x1e, 0x47,
+ 0xf9, 0x00, 0x81, 0x20, 0x56, 0xfb, 0x00, 0x81,
+ 0x23, 0x18, 0x69, 0x00, 0x81, 0x24, 0x47, 0xfb,
+ 0x00, 0x81, 0x27, 0x47, 0xfc, 0x00, 0x81, 0x29,
+ 0x18, 0x68, 0x00, 0x81, 0x2b, 0x36, 0x59, 0x00,
+ 0x81, 0x2c, 0x47, 0xfd, 0x00, 0x81, 0x2f, 0x18,
+ 0x6a, 0x00, 0x81, 0x30, 0x4c, 0xfb, 0x00, 0x81,
+ 0x31, 0x0b, 0x64, 0x00, 0x81, 0x33, 0x0c, 0xf4,
+ 0x00, 0x81, 0x35, 0x47, 0xf8, 0x00, 0x81, 0x39,
+ 0x0b, 0xcd, 0x00, 0x81, 0x3a, 0x3a, 0xb4, 0x00,
+ 0x81, 0x3c, 0x56, 0xfc, 0x00, 0x81, 0x3d, 0x47,
+ 0xff, 0x00, 0x81, 0x3e, 0x18, 0x6e, 0x00, 0x81,
+ 0x41, 0x37, 0x72, 0x00, 0x81, 0x45, 0x56, 0xfd,
+ 0x00, 0x81, 0x46, 0x18, 0x6d, 0x00, 0x81, 0x47,
+ 0x56, 0xfe, 0x00, 0x81, 0x4a, 0x3a, 0xb5, 0x00,
+ 0x81, 0x4b, 0x18, 0x6b, 0x00, 0x81, 0x4c, 0x3a,
+ 0xb6, 0x00, 0x81, 0x4e, 0x0a, 0x1b, 0x00, 0x81,
+ 0x50, 0x0d, 0xd7, 0x00, 0x81, 0x51, 0x18, 0x70,
+ 0x00, 0x81, 0x52, 0x56, 0xff, 0x00, 0x81, 0x53,
+ 0x18, 0x6f, 0x00, 0x81, 0x54, 0x07, 0xe2, 0x00,
+ 0x81, 0x55, 0x0f, 0xf9, 0x00, 0x81, 0x57, 0x4c,
+ 0xfc, 0x00, 0x81, 0x5f, 0x18, 0x80, 0x00, 0x81,
+ 0x60, 0x42, 0x9d, 0x00, 0x81, 0x61, 0x57, 0x00,
+ 0x00, 0x81, 0x65, 0x18, 0x74, 0x00, 0x81, 0x66,
+ 0x18, 0x75, 0x00, 0x81, 0x67, 0x42, 0x9e, 0x00,
+ 0x81, 0x68, 0x42, 0x9f, 0x00, 0x81, 0x69, 0x48,
+ 0x01, 0x00, 0x81, 0x6b, 0x09, 0x1c, 0x00, 0x81,
+ 0x6d, 0x42, 0xa0, 0x00, 0x81, 0x6e, 0x18, 0x73,
+ 0x00, 0x81, 0x6f, 0x4c, 0xfd, 0x00, 0x81, 0x70,
+ 0x08, 0x0a, 0x00, 0x81, 0x71, 0x18, 0x72, 0x00,
+ 0x81, 0x73, 0x4c, 0xfe, 0x00, 0x81, 0x74, 0x18,
+ 0x76, 0x00, 0x81, 0x77, 0x57, 0x01, 0x00, 0x81,
+ 0x78, 0x0b, 0xce, 0x00, 0x81, 0x79, 0x0d, 0xf2,
+ 0x00, 0x81, 0x7a, 0x0a, 0xa5, 0x00, 0x81, 0x7f,
+ 0x0b, 0x3c, 0x00, 0x81, 0x80, 0x18, 0x7a, 0x00,
+ 0x81, 0x81, 0x3a, 0xb7, 0x00, 0x81, 0x82, 0x18,
+ 0x7b, 0x00, 0x81, 0x83, 0x18, 0x77, 0x00, 0x81,
+ 0x84, 0x3a, 0xb8, 0x00, 0x81, 0x85, 0x48, 0x04,
+ 0x00, 0x81, 0x86, 0x57, 0x02, 0x00, 0x81, 0x88,
+ 0x18, 0x78, 0x00, 0x81, 0x8a, 0x18, 0x79, 0x00,
+ 0x81, 0x8b, 0x4c, 0xff, 0x00, 0x81, 0x8e, 0x57,
+ 0x03, 0x00, 0x81, 0x8f, 0x07, 0xe3, 0x00, 0x81,
+ 0x90, 0x4d, 0x00, 0x00, 0x81, 0x93, 0x18, 0x81,
+ 0x00, 0x81, 0x95, 0x18, 0x7d, 0x00, 0x81, 0x96,
+ 0x57, 0x04, 0x00, 0x81, 0x98, 0x48, 0x06, 0x00,
+ 0x81, 0x9a, 0x0d, 0xd8, 0x00, 0x81, 0x9b, 0x4d,
+ 0x01, 0x00, 0x81, 0x9c, 0x0e, 0x9a, 0x00, 0x81,
+ 0x9d, 0x0d, 0x9a, 0x00, 0x81, 0x9e, 0x4d, 0x02,
+ 0x00, 0x81, 0xa0, 0x18, 0x7c, 0x00, 0x81, 0xa2,
+ 0x57, 0x05, 0x00, 0x81, 0xa3, 0x18, 0x7f, 0x00,
+ 0x81, 0xa4, 0x18, 0x7e, 0x00, 0x81, 0xa8, 0x0e,
+ 0x72, 0x00, 0x81, 0xa9, 0x18, 0x82, 0x00, 0x81,
+ 0xae, 0x57, 0x06, 0x00, 0x81, 0xb0, 0x18, 0x83,
+ 0x00, 0x81, 0xb2, 0x48, 0x07, 0x00, 0x81, 0xb3,
+ 0x0a, 0xb9, 0x00, 0x81, 0xb4, 0x3a, 0xb9, 0x00,
+ 0x81, 0xb5, 0x18, 0x84, 0x00, 0x81, 0xb8, 0x18,
+ 0x86, 0x00, 0x81, 0xba, 0x18, 0x8a, 0x00, 0x81,
+ 0xbb, 0x42, 0xa1, 0x00, 0x81, 0xbd, 0x18, 0x87,
+ 0x00, 0x81, 0xbe, 0x18, 0x85, 0x00, 0x81, 0xbf,
+ 0x0c, 0xf5, 0x00, 0x81, 0xc0, 0x18, 0x88, 0x00,
+ 0x81, 0xc1, 0x48, 0x08, 0x00, 0x81, 0xc2, 0x18,
+ 0x89, 0x00, 0x81, 0xc3, 0x48, 0x09, 0x00, 0x81,
+ 0xc5, 0x57, 0x07, 0x00, 0x81, 0xc6, 0x05, 0x32,
+ 0x00, 0x81, 0xc8, 0x18, 0x90, 0x00, 0x81, 0xc9,
+ 0x18, 0x8b, 0x00, 0x81, 0xca, 0x42, 0xa2, 0x00,
+ 0x81, 0xcb, 0x4d, 0x03, 0x00, 0x81, 0xcd, 0x18,
+ 0x8c, 0x00, 0x81, 0xce, 0x57, 0x08, 0x00, 0x81,
+ 0xcf, 0x3a, 0xba, 0x00, 0x81, 0xd1, 0x18, 0x8d,
+ 0x00, 0x81, 0xd3, 0x0b, 0x01, 0x00, 0x81, 0xd5,
+ 0x4d, 0x04, 0x00, 0x81, 0xd6, 0x48, 0x0a, 0x00,
+ 0x81, 0xd7, 0x42, 0xa3, 0x00, 0x81, 0xd8, 0x18,
+ 0x8f, 0x00, 0x81, 0xd9, 0x18, 0x8e, 0x00, 0x81,
+ 0xda, 0x18, 0x91, 0x00, 0x81, 0xdb, 0x48, 0x0b,
+ 0x00, 0x81, 0xdd, 0x4d, 0x05, 0x00, 0x81, 0xde,
+ 0x4d, 0x06, 0x00, 0x81, 0xdf, 0x18, 0x92, 0x00,
+ 0x81, 0xe0, 0x18, 0x93, 0x00, 0x81, 0xe1, 0x4d,
+ 0x07, 0x00, 0x81, 0xe3, 0x0a, 0x09, 0x00, 0x81,
+ 0xe4, 0x48, 0x0d, 0x00, 0x81, 0xe5, 0x05, 0x69,
+ 0x00, 0x81, 0xe7, 0x18, 0x94, 0x00, 0x81, 0xe8,
+ 0x0f, 0x9f, 0x00, 0x81, 0xea, 0x08, 0xd7, 0x00,
+ 0x81, 0xeb, 0x57, 0x09, 0x00, 0x81, 0xec, 0x48,
+ 0x0f, 0x00, 0x81, 0xed, 0x09, 0x37, 0x00, 0x81,
+ 0xef, 0x4d, 0x08, 0x00, 0x81, 0xf0, 0x57, 0x0a,
+ 0x00, 0x81, 0xf1, 0x57, 0x0b, 0x00, 0x81, 0xf2,
+ 0x57, 0x0c, 0x00, 0x81, 0xf3, 0x08, 0xb8, 0x00,
+ 0x81, 0xf4, 0x0b, 0x95, 0x00, 0x81, 0xf5, 0x57,
+ 0x0d, 0x00, 0x81, 0xf6, 0x4d, 0x09, 0x00, 0x81,
+ 0xf8, 0x57, 0x0e, 0x00, 0x81, 0xf9, 0x3a, 0xbb,
+ 0x00, 0x81, 0xfa, 0x18, 0x95, 0x00, 0x81, 0xfb,
+ 0x18, 0x96, 0x00, 0x81, 0xfc, 0x04, 0xd3, 0x00,
+ 0x81, 0xfd, 0x48, 0x10, 0x00, 0x81, 0xfe, 0x18,
+ 0x97, 0x00, 0x81, 0xff, 0x48, 0x11, 0x00, 0x82,
+ 0x00, 0x4d, 0x0a, 0x00, 0x82, 0x01, 0x18, 0x98,
+ 0x00, 0x82, 0x02, 0x18, 0x99, 0x00, 0x82, 0x03,
+ 0x3a, 0xbc, 0x00, 0x82, 0x04, 0x48, 0x13, 0x00,
+ 0x82, 0x05, 0x18, 0x9a, 0x00, 0x82, 0x07, 0x18,
+ 0x9b, 0x00, 0x82, 0x08, 0x06, 0xb5, 0x00, 0x82,
+ 0x09, 0x13, 0xaf, 0x00, 0x82, 0x0a, 0x18, 0x9c,
+ 0x00, 0x82, 0x0b, 0x4d, 0x0b, 0x00, 0x82, 0x0c,
+ 0x0a, 0x89, 0x00, 0x82, 0x0d, 0x18, 0x9d, 0x00,
+ 0x82, 0x0e, 0x08, 0xf7, 0x00, 0x82, 0x0f, 0x57,
+ 0x10, 0x00, 0x82, 0x10, 0x18, 0x9e, 0x00, 0x82,
+ 0x12, 0x10, 0x09, 0x00, 0x82, 0x13, 0x4d, 0x0c,
+ 0x00, 0x82, 0x14, 0x4d, 0x0d, 0x00, 0x82, 0x16,
+ 0x18, 0x9f, 0x00, 0x82, 0x17, 0x0e, 0x2e, 0x00,
+ 0x82, 0x18, 0x06, 0x18, 0x00, 0x82, 0x19, 0x48,
+ 0x15, 0x00, 0x82, 0x1a, 0x4d, 0x0e, 0x00, 0x82,
+ 0x1b, 0x0a, 0xa6, 0x00, 0x82, 0x1c, 0x09, 0x62,
+ 0x00, 0x82, 0x1d, 0x57, 0x11, 0x00, 0x82, 0x1e,
+ 0x0d, 0xe3, 0x00, 0x82, 0x1f, 0x09, 0x38, 0x00,
+ 0x82, 0x21, 0x3a, 0xbd, 0x00, 0x82, 0x22, 0x48,
+ 0x16, 0x00, 0x82, 0x28, 0x57, 0x12, 0x00, 0x82,
+ 0x29, 0x18, 0xa0, 0x00, 0x82, 0x2a, 0x07, 0xe4,
+ 0x00, 0x82, 0x2b, 0x18, 0xa1, 0x00, 0x82, 0x2c,
+ 0x0d, 0x60, 0x00, 0x82, 0x2e, 0x18, 0xaf, 0x00,
+ 0x82, 0x32, 0x3a, 0xbe, 0x00, 0x82, 0x33, 0x18,
+ 0xa3, 0x00, 0x82, 0x34, 0x3a, 0xbf, 0x00, 0x82,
+ 0x35, 0x0b, 0x29, 0x00, 0x82, 0x36, 0x0d, 0x2b,
+ 0x00, 0x82, 0x37, 0x07, 0x73, 0x00, 0x82, 0x38,
+ 0x18, 0xa2, 0x00, 0x82, 0x39, 0x0a, 0xa7, 0x00,
+ 0x82, 0x3a, 0x4d, 0x0f, 0x00, 0x82, 0x3c, 0x48,
+ 0x18, 0x00, 0x82, 0x40, 0x18, 0xa4, 0x00, 0x82,
+ 0x43, 0x57, 0x13, 0x00, 0x82, 0x44, 0x4d, 0x10,
+ 0x00, 0x82, 0x45, 0x48, 0x1a, 0x00, 0x82, 0x46,
+ 0x3a, 0xc0, 0x00, 0x82, 0x47, 0x0c, 0x16, 0x00,
+ 0x82, 0x49, 0x48, 0x19, 0x00, 0x82, 0x4b, 0x3a,
+ 0xc1, 0x00, 0x82, 0x4e, 0x57, 0x14, 0x00, 0x82,
+ 0x4f, 0x3a, 0xc2, 0x00, 0x82, 0x51, 0x57, 0x15,
+ 0x00, 0x82, 0x56, 0x57, 0x16, 0x00, 0x82, 0x57,
+ 0x48, 0x1e, 0x00, 0x82, 0x58, 0x18, 0xa6, 0x00,
+ 0x82, 0x59, 0x18, 0xa5, 0x00, 0x82, 0x5a, 0x18,
+ 0xa8, 0x00, 0x82, 0x5c, 0x48, 0x20, 0x00, 0x82,
+ 0x5d, 0x18, 0xa7, 0x00, 0x82, 0x5f, 0x18, 0xa9,
+ 0x00, 0x82, 0x60, 0x42, 0xa5, 0x00, 0x82, 0x62,
+ 0x18, 0xab, 0x00, 0x82, 0x63, 0x48, 0x21, 0x00,
+ 0x82, 0x64, 0x18, 0xaa, 0x00, 0x82, 0x66, 0x06,
+ 0x0b, 0x00, 0x82, 0x67, 0x57, 0x17, 0x00, 0x82,
+ 0x68, 0x18, 0xac, 0x00, 0x82, 0x6a, 0x18, 0xad,
+ 0x00, 0x82, 0x6b, 0x18, 0xae, 0x00, 0x82, 0x6d,
+ 0x4d, 0x11, 0x00, 0x82, 0x6e, 0x08, 0x21, 0x00,
+ 0x82, 0x6f, 0x0f, 0x91, 0x00, 0x82, 0x71, 0x18,
+ 0xb0, 0x00, 0x82, 0x72, 0x09, 0xed, 0x00, 0x82,
+ 0x74, 0x42, 0xa6, 0x00, 0x82, 0x76, 0x05, 0x12,
+ 0x00, 0x82, 0x77, 0x18, 0xb1, 0x00, 0x82, 0x78,
+ 0x18, 0xb2, 0x00, 0x82, 0x79, 0x37, 0x75, 0x00,
+ 0x82, 0x7b, 0x57, 0x18, 0x00, 0x82, 0x7d, 0x48,
+ 0x24, 0x00, 0x82, 0x7e, 0x18, 0xb3, 0x00, 0x82,
+ 0x7f, 0x48, 0x25, 0x00, 0x82, 0x80, 0x57, 0x19,
+ 0x00, 0x82, 0x81, 0x57, 0x1a, 0x00, 0x82, 0x83,
+ 0x48, 0x26, 0x00, 0x82, 0x84, 0x4d, 0x12, 0x00,
+ 0x82, 0x87, 0x57, 0x1b, 0x00, 0x82, 0x89, 0x4d,
+ 0x13, 0x00, 0x82, 0x8a, 0x48, 0x27, 0x00, 0x82,
+ 0x8b, 0x04, 0xb6, 0x00, 0x82, 0x8d, 0x18, 0xb4,
+ 0x00, 0x82, 0x8e, 0x3a, 0xc3, 0x00, 0x82, 0x91,
+ 0x4d, 0x14, 0x00, 0x82, 0x92, 0x18, 0xb5, 0x00,
+ 0x82, 0x93, 0x48, 0x28, 0x00, 0x82, 0x94, 0x57,
+ 0x1c, 0x00, 0x82, 0x96, 0x57, 0x1d, 0x00, 0x82,
+ 0x98, 0x57, 0x1e, 0x00, 0x82, 0x99, 0x0d, 0xd9,
+ 0x00, 0x82, 0x9a, 0x57, 0x1f, 0x00, 0x82, 0x9b,
+ 0x57, 0x20, 0x00, 0x82, 0x9d, 0x08, 0xf3, 0x00,
+ 0x82, 0x9f, 0x18, 0xb7, 0x00, 0x82, 0xa0, 0x57,
+ 0x21, 0x00, 0x82, 0xa1, 0x42, 0xa8, 0x00, 0x82,
+ 0xa3, 0x42, 0xa9, 0x00, 0x82, 0xa4, 0x42, 0xaa,
+ 0x00, 0x82, 0xa5, 0x05, 0x87, 0x00, 0x82, 0xa6,
+ 0x04, 0x76, 0x00, 0x82, 0xa7, 0x48, 0x29, 0x00,
+ 0x82, 0xa8, 0x48, 0x2a, 0x00, 0x82, 0xa9, 0x42,
+ 0xab, 0x00, 0x82, 0xaa, 0x4d, 0x15, 0x00, 0x82,
+ 0xab, 0x18, 0xb6, 0x00, 0x82, 0xac, 0x18, 0xb9,
+ 0x00, 0x82, 0xad, 0x0d, 0x04, 0x00, 0x82, 0xae,
+ 0x3a, 0xc4, 0x00, 0x82, 0xaf, 0x0a, 0x0a, 0x00,
+ 0x82, 0xb0, 0x4d, 0x16, 0x00, 0x82, 0xb1, 0x05,
+ 0x56, 0x00, 0x82, 0xb2, 0x48, 0x2b, 0x00, 0x82,
+ 0xb3, 0x0e, 0x55, 0x00, 0x82, 0xb4, 0x48, 0x2c,
+ 0x00, 0x82, 0xb7, 0x3a, 0xc5, 0x00, 0x82, 0xb8,
+ 0x07, 0x33, 0x00, 0x82, 0xb9, 0x06, 0xd4, 0x00,
+ 0x82, 0xba, 0x48, 0x2d, 0x00, 0x82, 0xbb, 0x18,
+ 0xb8, 0x00, 0x82, 0xbc, 0x48, 0x2e, 0x00, 0x82,
+ 0xbd, 0x35, 0x66, 0x00, 0x82, 0xbe, 0x3a, 0xc6,
+ 0x00, 0x82, 0xbf, 0x42, 0xac, 0x00, 0x82, 0xc5,
+ 0x05, 0xdf, 0x00, 0x82, 0xc6, 0x3a, 0xc7, 0x00,
+ 0x82, 0xd0, 0x4d, 0x17, 0x00, 0x82, 0xd1, 0x05,
+ 0x13, 0x00, 0x82, 0xd2, 0x18, 0xbd, 0x00, 0x82,
+ 0xd3, 0x0f, 0xb2, 0x00, 0x82, 0xd4, 0x0b, 0x3d,
+ 0x00, 0x82, 0xd5, 0x42, 0xad, 0x00, 0x82, 0xd7,
+ 0x0d, 0xb6, 0x00, 0x82, 0xd9, 0x18, 0xc9, 0x00,
+ 0x82, 0xda, 0x57, 0x22, 0x00, 0x82, 0xdb, 0x05,
+ 0x57, 0x00, 0x82, 0xdc, 0x18, 0xc7, 0x00, 0x82,
+ 0xde, 0x18, 0xc5, 0x00, 0x82, 0xdf, 0x18, 0xbc,
+ 0x00, 0x82, 0xe0, 0x57, 0x23, 0x00, 0x82, 0xe1,
+ 0x18, 0xba, 0x00, 0x82, 0xe2, 0x48, 0x2f, 0x00,
+ 0x82, 0xe3, 0x18, 0xbb, 0x00, 0x82, 0xe4, 0x57,
+ 0x24, 0x00, 0x82, 0xe5, 0x09, 0x0f, 0x00, 0x82,
+ 0xe6, 0x06, 0xe4, 0x00, 0x82, 0xe7, 0x0b, 0xb5,
+ 0x00, 0x82, 0xe8, 0x48, 0x30, 0x00, 0x82, 0xea,
+ 0x4d, 0x18, 0x00, 0x82, 0xeb, 0x0c, 0xa9, 0x00,
+ 0x82, 0xed, 0x57, 0x25, 0x00, 0x82, 0xef, 0x4d,
+ 0x19, 0x00, 0x82, 0xf1, 0x04, 0xf3, 0x00, 0x82,
+ 0xf3, 0x18, 0xbf, 0x00, 0x82, 0xf4, 0x18, 0xbe,
+ 0x00, 0x82, 0xf6, 0x4d, 0x1a, 0x00, 0x82, 0xf7,
+ 0x48, 0x31, 0x00, 0x82, 0xf9, 0x18, 0xc4, 0x00,
+ 0x82, 0xfa, 0x18, 0xc0, 0x00, 0x82, 0xfb, 0x18,
+ 0xc3, 0x00, 0x82, 0xfd, 0x42, 0xae, 0x00, 0x82,
+ 0xfe, 0x3a, 0xc8, 0x00, 0x83, 0x00, 0x42, 0xaf,
+ 0x00, 0x83, 0x01, 0x21, 0x98, 0x00, 0x83, 0x02,
+ 0x0e, 0xdc, 0x00, 0x83, 0x03, 0x18, 0xc2, 0x00,
+ 0x83, 0x04, 0x05, 0x58, 0x00, 0x83, 0x05, 0x05,
+ 0xdb, 0x00, 0x83, 0x06, 0x18, 0xc6, 0x00, 0x83,
+ 0x07, 0x48, 0x32, 0x00, 0x83, 0x08, 0x48, 0x33,
+ 0x00, 0x83, 0x09, 0x18, 0xc8, 0x00, 0x83, 0x0a,
+ 0x57, 0x26, 0x00, 0x83, 0x0b, 0x57, 0x27, 0x00,
+ 0x83, 0x0c, 0x48, 0x34, 0x00, 0x83, 0x0e, 0x07,
+ 0x2a, 0x00, 0x83, 0x16, 0x18, 0xcc, 0x00, 0x83,
+ 0x17, 0x18, 0xd5, 0x00, 0x83, 0x18, 0x18, 0xd6,
+ 0x00, 0x83, 0x1b, 0x48, 0x36, 0x00, 0x83, 0x1c,
+ 0x04, 0x6f, 0x00, 0x83, 0x1d, 0x48, 0x37, 0x00,
+ 0x83, 0x1e, 0x57, 0x28, 0x00, 0x83, 0x1f, 0x57,
+ 0x29, 0x00, 0x83, 0x21, 0x57, 0x2a, 0x00, 0x83,
+ 0x22, 0x42, 0xb0, 0x00, 0x83, 0x23, 0x18, 0xdd,
+ 0x00, 0x83, 0x28, 0x04, 0xb5, 0x00, 0x83, 0x2b,
+ 0x18, 0xd4, 0x00, 0x83, 0x2c, 0x57, 0x2b, 0x00,
+ 0x83, 0x2d, 0x42, 0xb1, 0x00, 0x83, 0x2e, 0x57,
+ 0x2c, 0x00, 0x83, 0x2f, 0x18, 0xd3, 0x00, 0x83,
+ 0x30, 0x48, 0x38, 0x00, 0x83, 0x31, 0x18, 0xce,
+ 0x00, 0x83, 0x32, 0x18, 0xcd, 0x00, 0x83, 0x33,
+ 0x57, 0x2d, 0x00, 0x83, 0x34, 0x18, 0xcb, 0x00,
+ 0x83, 0x35, 0x18, 0xca, 0x00, 0x83, 0x36, 0x0b,
+ 0xa1, 0x00, 0x83, 0x37, 0x57, 0x2e, 0x00, 0x83,
+ 0x38, 0x0b, 0x5b, 0x00, 0x83, 0x39, 0x18, 0xd0,
+ 0x00, 0x83, 0x3a, 0x42, 0xb2, 0x00, 0x83, 0x3c,
+ 0x48, 0x39, 0x00, 0x83, 0x3d, 0x57, 0x2f, 0x00,
+ 0x83, 0x40, 0x18, 0xcf, 0x00, 0x83, 0x42, 0x57,
+ 0x30, 0x00, 0x83, 0x43, 0x3a, 0xc9, 0x00, 0x83,
+ 0x44, 0x48, 0x3a, 0x00, 0x83, 0x45, 0x18, 0xd2,
+ 0x00, 0x83, 0x46, 0x1d, 0xf8, 0x00, 0x83, 0x47,
+ 0x42, 0xb3, 0x00, 0x83, 0x49, 0x0a, 0xf2, 0x00,
+ 0x83, 0x4a, 0x07, 0x2b, 0x00, 0x83, 0x4d, 0x57,
+ 0x31, 0x00, 0x83, 0x4e, 0x57, 0x32, 0x00, 0x83,
+ 0x4f, 0x04, 0xe3, 0x00, 0x83, 0x50, 0x18, 0xd1,
+ 0x00, 0x83, 0x51, 0x3a, 0xca, 0x00, 0x83, 0x52,
+ 0x07, 0xe5, 0x00, 0x83, 0x53, 0x57, 0x3c, 0x00,
+ 0x83, 0x54, 0x48, 0x35, 0x00, 0x83, 0x55, 0x3a,
+ 0xcb, 0x00, 0x83, 0x56, 0x4d, 0x1b, 0x00, 0x83,
+ 0x57, 0x48, 0x3b, 0x00, 0x83, 0x58, 0x0a, 0xf3,
+ 0x00, 0x83, 0x5a, 0x37, 0x7a, 0x00, 0x83, 0x62,
+ 0x21, 0x99, 0x00, 0x83, 0x63, 0x45, 0x6f, 0x00,
+ 0x83, 0x70, 0x57, 0x33, 0x00, 0x83, 0x73, 0x18,
+ 0xe3, 0x00, 0x83, 0x75, 0x18, 0xe4, 0x00, 0x83,
+ 0x77, 0x05, 0x59, 0x00, 0x83, 0x78, 0x4d, 0x1c,
+ 0x00, 0x83, 0x7b, 0x05, 0x2e, 0x00, 0x83, 0x7c,
+ 0x18, 0xe1, 0x00, 0x83, 0x7d, 0x42, 0xb4, 0x00,
+ 0x83, 0x7f, 0x21, 0x9a, 0x00, 0x83, 0x80, 0x57,
+ 0x34, 0x00, 0x83, 0x82, 0x57, 0x35, 0x00, 0x83,
+ 0x84, 0x57, 0x36, 0x00, 0x83, 0x85, 0x18, 0xd7,
+ 0x00, 0x83, 0x86, 0x3a, 0xcc, 0x00, 0x83, 0x87,
+ 0x18, 0xdf, 0x00, 0x83, 0x89, 0x18, 0xe6, 0x00,
+ 0x83, 0x8a, 0x18, 0xe0, 0x00, 0x83, 0x8d, 0x3a,
+ 0xcd, 0x00, 0x83, 0x8e, 0x18, 0xde, 0x00, 0x83,
+ 0x92, 0x3a, 0xce, 0x00, 0x83, 0x93, 0x18, 0xc1,
+ 0x00, 0x83, 0x94, 0x48, 0x3f, 0x00, 0x83, 0x95,
+ 0x48, 0x40, 0x00, 0x83, 0x96, 0x18, 0xdc, 0x00,
+ 0x83, 0x98, 0x3a, 0xcf, 0x00, 0x83, 0x99, 0x57,
+ 0x37, 0x00, 0x83, 0x9a, 0x18, 0xd8, 0x00, 0x83,
+ 0x9b, 0x48, 0x41, 0x00, 0x83, 0x9c, 0x57, 0x38,
+ 0x00, 0x83, 0x9d, 0x48, 0x42, 0x00, 0x83, 0x9e,
+ 0x06, 0x0c, 0x00, 0x83, 0x9f, 0x18, 0xda, 0x00,
+ 0x83, 0xa0, 0x18, 0xe5, 0x00, 0x83, 0xa2, 0x18,
+ 0xdb, 0x00, 0x83, 0xa6, 0x57, 0x39, 0x00, 0x83,
+ 0xa7, 0x42, 0xb5, 0x00, 0x83, 0xa8, 0x18, 0xe7,
+ 0x00, 0x83, 0xa9, 0x3a, 0xd0, 0x00, 0x83, 0xaa,
+ 0x18, 0xd9, 0x00, 0x83, 0xab, 0x0d, 0x32, 0x00,
+ 0x83, 0xac, 0x57, 0x3a, 0x00, 0x83, 0xad, 0x57,
+ 0x3f, 0x00, 0x83, 0xb1, 0x0f, 0x53, 0x00, 0x83,
+ 0xb5, 0x18, 0xe2, 0x00, 0x83, 0xbd, 0x18, 0xf8,
+ 0x00, 0x83, 0xbe, 0x57, 0x3b, 0x00, 0x83, 0xbf,
+ 0x3a, 0xd1, 0x00, 0x83, 0xc0, 0x3a, 0xd2, 0x00,
+ 0x83, 0xc1, 0x18, 0xf0, 0x00, 0x83, 0xc5, 0x0a,
+ 0x41, 0x00, 0x83, 0xc7, 0x21, 0x9b, 0x00, 0x83,
+ 0xc9, 0x48, 0x43, 0x00, 0x83, 0xca, 0x06, 0x60,
+ 0x00, 0x83, 0xcc, 0x06, 0xd5, 0x00, 0x83, 0xce,
+ 0x18, 0xeb, 0x00, 0x83, 0xcf, 0x42, 0xb6, 0x00,
+ 0x83, 0xd0, 0x48, 0x44, 0x00, 0x83, 0xd1, 0x42,
+ 0xb7, 0x00, 0x83, 0xd3, 0x05, 0x5b, 0x00, 0x83,
+ 0xd4, 0x48, 0x45, 0x00, 0x83, 0xd6, 0x09, 0xbc,
+ 0x00, 0x83, 0xd8, 0x18, 0xee, 0x00, 0x83, 0xdc,
+ 0x08, 0x4a, 0x00, 0x83, 0xdd, 0x48, 0x46, 0x00,
+ 0x83, 0xdf, 0x0c, 0x4b, 0x00, 0x83, 0xe0, 0x18,
+ 0xf3, 0x00, 0x83, 0xe1, 0x42, 0xb8, 0x00, 0x83,
+ 0xe5, 0x48, 0x47, 0x00, 0x83, 0xe8, 0x57, 0x3d,
+ 0x00, 0x83, 0xe9, 0x0e, 0x3e, 0x00, 0x83, 0xea,
+ 0x3a, 0xd3, 0x00, 0x83, 0xeb, 0x18, 0xea, 0x00,
+ 0x83, 0xef, 0x05, 0x5a, 0x00, 0x83, 0xf0, 0x07,
+ 0x8a, 0x00, 0x83, 0xf1, 0x0d, 0x9b, 0x00, 0x83,
+ 0xf2, 0x18, 0xf4, 0x00, 0x83, 0xf4, 0x18, 0xe8,
+ 0x00, 0x83, 0xf6, 0x21, 0x9c, 0x00, 0x83, 0xf7,
+ 0x18, 0xf1, 0x00, 0x83, 0xf8, 0x4d, 0x1d, 0x00,
+ 0x83, 0xf9, 0x48, 0x48, 0x00, 0x83, 0xfb, 0x18,
+ 0xfb, 0x00, 0x83, 0xfc, 0x4d, 0x1e, 0x00, 0x83,
+ 0xfd, 0x18, 0xec, 0x00, 0x84, 0x01, 0x42, 0xb9,
+ 0x00, 0x84, 0x03, 0x18, 0xed, 0x00, 0x84, 0x04,
+ 0x0c, 0x92, 0x00, 0x84, 0x06, 0x42, 0xba, 0x00,
+ 0x84, 0x07, 0x18, 0xf2, 0x00, 0x84, 0x0a, 0x1e,
+ 0x7f, 0x00, 0x84, 0x0b, 0x18, 0xef, 0x00, 0x84,
+ 0x0c, 0x0e, 0x56, 0x00, 0x84, 0x0d, 0x18, 0xf5,
+ 0x00, 0x84, 0x0e, 0x04, 0xa4, 0x00, 0x84, 0x0f,
+ 0x3a, 0xd4, 0x00, 0x84, 0x11, 0x3a, 0xd5, 0x00,
+ 0x84, 0x13, 0x18, 0xe9, 0x00, 0x84, 0x15, 0x48,
+ 0x49, 0x00, 0x84, 0x17, 0x48, 0x4b, 0x00, 0x84,
+ 0x19, 0x57, 0x3e, 0x00, 0x84, 0x20, 0x18, 0xf7,
+ 0x00, 0x84, 0x22, 0x18, 0xf6, 0x00, 0x84, 0x29,
+ 0x0d, 0x21, 0x00, 0x84, 0x2a, 0x18, 0xfd, 0x00,
+ 0x84, 0x2c, 0x19, 0x08, 0x00, 0x84, 0x2f, 0x57,
+ 0x40, 0x00, 0x84, 0x31, 0x05, 0xdc, 0x00, 0x84,
+ 0x35, 0x19, 0x0b, 0x00, 0x84, 0x38, 0x18, 0xf9,
+ 0x00, 0x84, 0x39, 0x48, 0x4c, 0x00, 0x84, 0x3c,
+ 0x18, 0xfe, 0x00, 0x84, 0x3d, 0x0f, 0x58, 0x00,
+ 0x84, 0x45, 0x57, 0x41, 0x00, 0x84, 0x46, 0x19,
+ 0x07, 0x00, 0x84, 0x47, 0x57, 0x42, 0x00, 0x84,
+ 0x48, 0x21, 0x9d, 0x00, 0x84, 0x49, 0x0f, 0x3f,
+ 0x00, 0x84, 0x4a, 0x3a, 0xd6, 0x00, 0x84, 0x4d,
+ 0x57, 0x43, 0x00, 0x84, 0x4e, 0x0f, 0x72, 0x00,
+ 0x84, 0x4f, 0x48, 0x4d, 0x00, 0x84, 0x51, 0x48,
+ 0x4e, 0x00, 0x84, 0x52, 0x48, 0x4f, 0x00, 0x84,
+ 0x56, 0x57, 0x44, 0x00, 0x84, 0x57, 0x0b, 0xb6,
+ 0x00, 0x84, 0x58, 0x4d, 0x1f, 0x00, 0x84, 0x59,
+ 0x48, 0x50, 0x00, 0x84, 0x5a, 0x48, 0x51, 0x00,
+ 0x84, 0x5b, 0x05, 0xc9, 0x00, 0x84, 0x5c, 0x48,
+ 0x52, 0x00, 0x84, 0x5f, 0x42, 0xbb, 0x00, 0x84,
+ 0x60, 0x57, 0x46, 0x00, 0x84, 0x61, 0x0d, 0xe4,
+ 0x00, 0x84, 0x62, 0x19, 0x0d, 0x00, 0x84, 0x63,
+ 0x0c, 0x79, 0x00, 0x84, 0x64, 0x57, 0x47, 0x00,
+ 0x84, 0x65, 0x48, 0x54, 0x00, 0x84, 0x66, 0x04,
+ 0x75, 0x00, 0x84, 0x67, 0x57, 0x48, 0x00, 0x84,
+ 0x69, 0x19, 0x06, 0x00, 0x84, 0x6a, 0x57, 0x49,
+ 0x00, 0x84, 0x6b, 0x19, 0x02, 0x00, 0x84, 0x6c,
+ 0x0a, 0xf4, 0x00, 0x84, 0x6d, 0x18, 0xfc, 0x00,
+ 0x84, 0x6e, 0x19, 0x04, 0x00, 0x84, 0x6f, 0x19,
+ 0x09, 0x00, 0x84, 0x70, 0x42, 0xbc, 0x00, 0x84,
+ 0x71, 0x0c, 0xe2, 0x00, 0x84, 0x73, 0x42, 0xbd,
+ 0x00, 0x84, 0x74, 0x57, 0x4a, 0x00, 0x84, 0x75,
+ 0x04, 0x6e, 0x00, 0x84, 0x76, 0x3a, 0xd7, 0x00,
+ 0x84, 0x77, 0x19, 0x01, 0x00, 0x84, 0x78, 0x48,
+ 0x55, 0x00, 0x84, 0x79, 0x19, 0x0a, 0x00, 0x84,
+ 0x7a, 0x0d, 0xea, 0x00, 0x84, 0x7c, 0x48, 0x56,
+ 0x00, 0x84, 0x7d, 0x57, 0x4b, 0x00, 0x84, 0x81,
+ 0x48, 0x57, 0x00, 0x84, 0x82, 0x19, 0x05, 0x00,
+ 0x84, 0x84, 0x19, 0x00, 0x00, 0x84, 0x85, 0x42,
+ 0xbe, 0x00, 0x84, 0x8b, 0x09, 0xbd, 0x00, 0x84,
+ 0x90, 0x09, 0x39, 0x00, 0x84, 0x92, 0x57, 0x4c,
+ 0x00, 0x84, 0x93, 0x4d, 0x20, 0x00, 0x84, 0x94,
+ 0x08, 0xd8, 0x00, 0x84, 0x95, 0x57, 0x4d, 0x00,
+ 0x84, 0x97, 0x48, 0x59, 0x00, 0x84, 0x99, 0x0e,
+ 0xe4, 0x00, 0x84, 0x9c, 0x0d, 0xb9, 0x00, 0x84,
+ 0x9e, 0x42, 0xbf, 0x00, 0x84, 0x9f, 0x19, 0x10,
+ 0x00, 0x84, 0xa1, 0x19, 0x19, 0x00, 0x84, 0xa6,
+ 0x48, 0x5a, 0x00, 0x84, 0xa8, 0x3a, 0xd8, 0x00,
+ 0x84, 0xa9, 0x57, 0x4e, 0x00, 0x84, 0xaa, 0x57,
+ 0x4f, 0x00, 0x84, 0xad, 0x19, 0x03, 0x00, 0x84,
+ 0xaf, 0x3a, 0xd9, 0x00, 0x84, 0xb1, 0x4d, 0x21,
+ 0x00, 0x84, 0xb2, 0x05, 0xd5, 0x00, 0x84, 0xb4,
+ 0x21, 0x9e, 0x00, 0x84, 0xb8, 0x09, 0xe0, 0x00,
+ 0x84, 0xb9, 0x19, 0x0e, 0x00, 0x84, 0xba, 0x42,
+ 0xc0, 0x00, 0x84, 0xbb, 0x19, 0x13, 0x00, 0x84,
+ 0xbc, 0x0a, 0xf5, 0x00, 0x84, 0xbd, 0x4d, 0x22,
+ 0x00, 0x84, 0xbe, 0x48, 0x5b, 0x00, 0x84, 0xbf,
+ 0x19, 0x0f, 0x00, 0x84, 0xc0, 0x3a, 0xda, 0x00,
+ 0x84, 0xc1, 0x19, 0x16, 0x00, 0x84, 0xc2, 0x3a,
+ 0xdb, 0x00, 0x84, 0xc4, 0x0b, 0x9d, 0x00, 0x84,
+ 0xc6, 0x19, 0x17, 0x00, 0x84, 0xc7, 0x57, 0x50,
+ 0x00, 0x84, 0xc8, 0x57, 0x51, 0x00, 0x84, 0xc9,
+ 0x0f, 0x40, 0x00, 0x84, 0xca, 0x19, 0x0c, 0x00,
+ 0x84, 0xcb, 0x05, 0x96, 0x00, 0x84, 0xcc, 0x57,
+ 0x52, 0x00, 0x84, 0xcd, 0x19, 0x12, 0x00, 0x84,
+ 0xce, 0x48, 0x5d, 0x00, 0x84, 0xcf, 0x48, 0x5e,
+ 0x00, 0x84, 0xd0, 0x19, 0x15, 0x00, 0x84, 0xd1,
+ 0x0e, 0xb8, 0x00, 0x84, 0xd3, 0x48, 0x5f, 0x00,
+ 0x84, 0xd6, 0x19, 0x18, 0x00, 0x84, 0xd9, 0x19,
+ 0x11, 0x00, 0x84, 0xda, 0x19, 0x14, 0x00, 0x84,
+ 0xdc, 0x20, 0xab, 0x00, 0x84, 0xe7, 0x48, 0x61,
+ 0x00, 0x84, 0xea, 0x48, 0x62, 0x00, 0x84, 0xec,
+ 0x0e, 0x57, 0x00, 0x84, 0xee, 0x1e, 0x83, 0x00,
+ 0x84, 0xef, 0x48, 0x63, 0x00, 0x84, 0xf0, 0x3a,
+ 0xdc, 0x00, 0x84, 0xf1, 0x48, 0x64, 0x00, 0x84,
+ 0xf2, 0x57, 0x53, 0x00, 0x84, 0xf4, 0x19, 0x1c,
+ 0x00, 0x84, 0xf7, 0x57, 0x54, 0x00, 0x84, 0xfa,
+ 0x48, 0x65, 0x00, 0x84, 0xfb, 0x4d, 0x23, 0x00,
+ 0x84, 0xfc, 0x19, 0x23, 0x00, 0x84, 0xfd, 0x3a,
+ 0xdd, 0x00, 0x84, 0xff, 0x19, 0x1b, 0x00, 0x85,
+ 0x00, 0x08, 0xef, 0x00, 0x85, 0x02, 0x57, 0x55,
+ 0x00, 0x85, 0x03, 0x57, 0x56, 0x00, 0x85, 0x06,
+ 0x18, 0xfa, 0x00, 0x85, 0x07, 0x57, 0x57, 0x00,
+ 0x85, 0x0c, 0x3a, 0xde, 0x00, 0x85, 0x0e, 0x57,
+ 0x58, 0x00, 0x85, 0x10, 0x57, 0x59, 0x00, 0x85,
+ 0x11, 0x0e, 0x1e, 0x00, 0x85, 0x13, 0x0e, 0xae,
+ 0x00, 0x85, 0x14, 0x19, 0x22, 0x00, 0x85, 0x15,
+ 0x19, 0x21, 0x00, 0x85, 0x17, 0x19, 0x1d, 0x00,
+ 0x85, 0x18, 0x19, 0x1e, 0x00, 0x85, 0x1a, 0x04,
+ 0xd8, 0x00, 0x85, 0x1b, 0x48, 0x66, 0x00, 0x85,
+ 0x1c, 0x57, 0x5a, 0x00, 0x85, 0x1e, 0x42, 0xc3,
+ 0x00, 0x85, 0x1f, 0x19, 0x20, 0x00, 0x85, 0x21,
+ 0x19, 0x1a, 0x00, 0x85, 0x22, 0x57, 0x5b, 0x00,
+ 0x85, 0x23, 0x1e, 0x1a, 0x00, 0x85, 0x24, 0x48,
+ 0x67, 0x00, 0x85, 0x25, 0x48, 0x68, 0x00, 0x85,
+ 0x26, 0x0b, 0xf1, 0x00, 0x85, 0x27, 0x57, 0x5c,
+ 0x00, 0x85, 0x2a, 0x57, 0x5d, 0x00, 0x85, 0x2b,
+ 0x48, 0x69, 0x00, 0x85, 0x2c, 0x19, 0x1f, 0x00,
+ 0x85, 0x2d, 0x04, 0xc2, 0x00, 0x85, 0x2f, 0x42,
+ 0xc4, 0x00, 0x85, 0x32, 0x42, 0xc2, 0x00, 0x85,
+ 0x33, 0x57, 0x5e, 0x00, 0x85, 0x34, 0x3a, 0xdf,
+ 0x00, 0x85, 0x35, 0x0b, 0x02, 0x00, 0x85, 0x36,
+ 0x57, 0x5f, 0x00, 0x85, 0x3d, 0x0e, 0x13, 0x00,
+ 0x85, 0x3e, 0x1e, 0xb5, 0x00, 0x85, 0x3f, 0x57,
+ 0x60, 0x00, 0x85, 0x40, 0x19, 0x24, 0x00, 0x85,
+ 0x41, 0x19, 0x28, 0x00, 0x85, 0x43, 0x0d, 0x6d,
+ 0x00, 0x85, 0x46, 0x4d, 0x24, 0x00, 0x85, 0x48,
+ 0x19, 0x27, 0x00, 0x85, 0x49, 0x09, 0xbe, 0x00,
+ 0x85, 0x4a, 0x08, 0xf5, 0x00, 0x85, 0x4b, 0x19,
+ 0x2a, 0x00, 0x85, 0x4e, 0x06, 0xb6, 0x00, 0x85,
+ 0x4f, 0x48, 0x6a, 0x00, 0x85, 0x50, 0x57, 0x61,
+ 0x00, 0x85, 0x51, 0x48, 0x6d, 0x00, 0x85, 0x52,
+ 0x57, 0x62, 0x00, 0x85, 0x53, 0x21, 0x9f, 0x00,
+ 0x85, 0x55, 0x19, 0x2b, 0x00, 0x85, 0x56, 0x4d,
+ 0x25, 0x00, 0x85, 0x57, 0x0d, 0xeb, 0x00, 0x85,
+ 0x58, 0x19, 0x26, 0x00, 0x85, 0x59, 0x21, 0xa0,
+ 0x00, 0x85, 0x5a, 0x18, 0xff, 0x00, 0x85, 0x5c,
+ 0x57, 0x63, 0x00, 0x85, 0x5d, 0x4d, 0x26, 0x00,
+ 0x85, 0x5e, 0x3a, 0xe0, 0x00, 0x85, 0x5f, 0x57,
+ 0x65, 0x00, 0x85, 0x60, 0x57, 0x66, 0x00, 0x85,
+ 0x61, 0x48, 0x6e, 0x00, 0x85, 0x62, 0x48, 0x6f,
+ 0x00, 0x85, 0x63, 0x19, 0x25, 0x00, 0x85, 0x64,
+ 0x42, 0xc5, 0x00, 0x85, 0x68, 0x0f, 0xf5, 0x00,
+ 0x85, 0x69, 0x0c, 0x7a, 0x00, 0x85, 0x6a, 0x0d,
+ 0xe5, 0x00, 0x85, 0x6b, 0x21, 0xa1, 0x00, 0x85,
+ 0x6d, 0x19, 0x32, 0x00, 0x85, 0x6f, 0x48, 0x6b,
+ 0x00, 0x85, 0x77, 0x19, 0x38, 0x00, 0x85, 0x79,
+ 0x57, 0x67, 0x00, 0x85, 0x7a, 0x42, 0xc6, 0x00,
+ 0x85, 0x7b, 0x48, 0x71, 0x00, 0x85, 0x7d, 0x48,
+ 0x72, 0x00, 0x85, 0x7e, 0x19, 0x39, 0x00, 0x85,
+ 0x7f, 0x48, 0x73, 0x00, 0x85, 0x80, 0x19, 0x2c,
+ 0x00, 0x85, 0x81, 0x48, 0x74, 0x00, 0x85, 0x84,
+ 0x0d, 0x2c, 0x00, 0x85, 0x85, 0x4d, 0x27, 0x00,
+ 0x85, 0x86, 0x48, 0x75, 0x00, 0x85, 0x87, 0x19,
+ 0x36, 0x00, 0x85, 0x88, 0x19, 0x2e, 0x00, 0x85,
+ 0x89, 0x57, 0x68, 0x00, 0x85, 0x8a, 0x19, 0x30,
+ 0x00, 0x85, 0x8b, 0x57, 0x69, 0x00, 0x85, 0x8c,
+ 0x42, 0xc7, 0x00, 0x85, 0x8f, 0x3a, 0xe1, 0x00,
+ 0x85, 0x90, 0x19, 0x3a, 0x00, 0x85, 0x91, 0x19,
+ 0x2f, 0x00, 0x85, 0x93, 0x48, 0x76, 0x00, 0x85,
+ 0x94, 0x19, 0x33, 0x00, 0x85, 0x97, 0x05, 0x14,
+ 0x00, 0x85, 0x98, 0x4d, 0x28, 0x00, 0x85, 0x99,
+ 0x0c, 0xbd, 0x00, 0x85, 0x9b, 0x19, 0x34, 0x00,
+ 0x85, 0x9c, 0x19, 0x37, 0x00, 0x85, 0x9d, 0x48,
+ 0x77, 0x00, 0x85, 0x9f, 0x48, 0x78, 0x00, 0x85,
+ 0xa0, 0x57, 0x6a, 0x00, 0x85, 0xa2, 0x42, 0xc8,
+ 0x00, 0x85, 0xa4, 0x19, 0x2d, 0x00, 0x85, 0xa5,
+ 0x57, 0x6b, 0x00, 0x85, 0xa6, 0x0a, 0xa8, 0x00,
+ 0x85, 0xa7, 0x57, 0x6c, 0x00, 0x85, 0xa8, 0x19,
+ 0x31, 0x00, 0x85, 0xa9, 0x08, 0x75, 0x00, 0x85,
+ 0xaa, 0x0a, 0x0b, 0x00, 0x85, 0xab, 0x07, 0x06,
+ 0x00, 0x85, 0xac, 0x0f, 0x00, 0x00, 0x85, 0xad,
+ 0x3a, 0xe4, 0x00, 0x85, 0xae, 0x0f, 0x05, 0x00,
+ 0x85, 0xaf, 0x09, 0x7c, 0x00, 0x85, 0xb0, 0x21,
+ 0xa3, 0x00, 0x85, 0xb4, 0x57, 0x6d, 0x00, 0x85,
+ 0xb6, 0x57, 0x6e, 0x00, 0x85, 0xb7, 0x3a, 0xe2,
+ 0x00, 0x85, 0xb8, 0x57, 0x6f, 0x00, 0x85, 0xb9,
+ 0x19, 0x3e, 0x00, 0x85, 0xba, 0x19, 0x3c, 0x00,
+ 0x85, 0xbc, 0x48, 0x7c, 0x00, 0x85, 0xbd, 0x57,
+ 0x70, 0x00, 0x85, 0xbe, 0x57, 0x71, 0x00, 0x85,
+ 0xbf, 0x57, 0x72, 0x00, 0x85, 0xc1, 0x0f, 0xf4,
+ 0x00, 0x85, 0xc2, 0x57, 0x73, 0x00, 0x85, 0xc7,
+ 0x48, 0x7d, 0x00, 0x85, 0xc9, 0x19, 0x3b, 0x00,
+ 0x85, 0xca, 0x48, 0x7e, 0x00, 0x85, 0xcb, 0x42,
+ 0xc9, 0x00, 0x85, 0xcd, 0x0f, 0x5f, 0x00, 0x85,
+ 0xce, 0x3a, 0xe3, 0x00, 0x85, 0xcf, 0x19, 0x3d,
+ 0x00, 0x85, 0xd0, 0x19, 0x3f, 0x00, 0x85, 0xd5,
+ 0x19, 0x40, 0x00, 0x85, 0xd8, 0x48, 0x7f, 0x00,
+ 0x85, 0xd9, 0x48, 0x80, 0x00, 0x85, 0xda, 0x57,
+ 0x74, 0x00, 0x85, 0xdc, 0x19, 0x43, 0x00, 0x85,
+ 0xdd, 0x19, 0x41, 0x00, 0x85, 0xdf, 0x48, 0x81,
+ 0x00, 0x85, 0xe0, 0x57, 0x75, 0x00, 0x85, 0xe1,
+ 0x48, 0x82, 0x00, 0x85, 0xe4, 0x0c, 0x7b, 0x00,
+ 0x85, 0xe5, 0x19, 0x42, 0x00, 0x85, 0xe6, 0x48,
+ 0x83, 0x00, 0x85, 0xe8, 0x57, 0x76, 0x00, 0x85,
+ 0xe9, 0x0d, 0x61, 0x00, 0x85, 0xea, 0x19, 0x35,
+ 0x00, 0x85, 0xed, 0x42, 0xca, 0x00, 0x85, 0xf3,
+ 0x57, 0x77, 0x00, 0x85, 0xf4, 0x37, 0x80, 0x00,
+ 0x85, 0xf6, 0x48, 0x84, 0x00, 0x85, 0xf7, 0x09,
+ 0x7d, 0x00, 0x85, 0xf9, 0x19, 0x44, 0x00, 0x85,
+ 0xfa, 0x19, 0x49, 0x00, 0x85, 0xfb, 0x0a, 0xf6,
+ 0x00, 0x85, 0xfc, 0x57, 0x78, 0x00, 0x85, 0xfe,
+ 0x19, 0x48, 0x00, 0x85, 0xff, 0x42, 0xcb, 0x00,
+ 0x86, 0x00, 0x48, 0x85, 0x00, 0x86, 0x02, 0x19,
+ 0x29, 0x00, 0x86, 0x04, 0x42, 0xcc, 0x00, 0x86,
+ 0x05, 0x42, 0xcd, 0x00, 0x86, 0x06, 0x19, 0x4a,
+ 0x00, 0x86, 0x07, 0x0a, 0xcb, 0x00, 0x86, 0x0a,
+ 0x19, 0x45, 0x00, 0x86, 0x0b, 0x19, 0x47, 0x00,
+ 0x86, 0x0d, 0x57, 0x79, 0x00, 0x86, 0x0e, 0x57,
+ 0x7a, 0x00, 0x86, 0x10, 0x42, 0xce, 0x00, 0x86,
+ 0x11, 0x48, 0x86, 0x00, 0x86, 0x12, 0x3a, 0xe5,
+ 0x00, 0x86, 0x13, 0x19, 0x46, 0x00, 0x86, 0x16,
+ 0x14, 0xd0, 0x00, 0x86, 0x17, 0x14, 0xc1, 0x00,
+ 0x86, 0x18, 0x42, 0xd0, 0x00, 0x86, 0x19, 0x57,
+ 0x7b, 0x00, 0x86, 0x1a, 0x19, 0x4c, 0x00, 0x86,
+ 0x1b, 0x57, 0x7c, 0x00, 0x86, 0x1e, 0x48, 0x87,
+ 0x00, 0x86, 0x21, 0x48, 0x88, 0x00, 0x86, 0x22,
+ 0x19, 0x4b, 0x00, 0x86, 0x24, 0x48, 0x89, 0x00,
+ 0x86, 0x27, 0x48, 0x8a, 0x00, 0x86, 0x29, 0x3a,
+ 0xe6, 0x00, 0x86, 0x2d, 0x0f, 0x60, 0x00, 0x86,
+ 0x2f, 0x16, 0xb1, 0x00, 0x86, 0x30, 0x19, 0x4d,
+ 0x00, 0x86, 0x36, 0x57, 0x7d, 0x00, 0x86, 0x38,
+ 0x42, 0xd1, 0x00, 0x86, 0x39, 0x48, 0x8c, 0x00,
+ 0x86, 0x3a, 0x57, 0x7e, 0x00, 0x86, 0x3c, 0x48,
+ 0x8d, 0x00, 0x86, 0x3d, 0x57, 0x7f, 0x00, 0x86,
+ 0x3f, 0x19, 0x4e, 0x00, 0x86, 0x40, 0x48, 0x8f,
+ 0x00, 0x86, 0x41, 0x41, 0xb8, 0x00, 0x86, 0x42,
+ 0x4d, 0x29, 0x00, 0x86, 0x46, 0x4d, 0x2a, 0x00,
+ 0x86, 0x4d, 0x19, 0x4f, 0x00, 0x86, 0x4e, 0x07,
+ 0x8b, 0x00, 0x86, 0x50, 0x06, 0x6e, 0x00, 0x86,
+ 0x52, 0x3a, 0xe7, 0x00, 0x86, 0x53, 0x48, 0x90,
+ 0x00, 0x86, 0x54, 0x19, 0x51, 0x00, 0x86, 0x55,
+ 0x10, 0x94, 0x00, 0x86, 0x56, 0x48, 0x91, 0x00,
+ 0x86, 0x57, 0x42, 0xd2, 0x00, 0x86, 0x58, 0x57,
+ 0x80, 0x00, 0x86, 0x59, 0x57, 0x81, 0x00, 0x86,
+ 0x5a, 0x06, 0x8f, 0x00, 0x86, 0x5b, 0x34, 0x18,
+ 0x00, 0x86, 0x5c, 0x34, 0x52, 0x00, 0x86, 0x5d,
+ 0x57, 0x82, 0x00, 0x86, 0x5e, 0x06, 0xeb, 0x00,
+ 0x86, 0x5f, 0x19, 0x52, 0x00, 0x86, 0x60, 0x57,
+ 0x83, 0x00, 0x86, 0x61, 0x57, 0x84, 0x00, 0x86,
+ 0x62, 0x42, 0xd3, 0x00, 0x86, 0x63, 0x3a, 0xe8,
+ 0x00, 0x86, 0x64, 0x57, 0x85, 0x00, 0x86, 0x67,
+ 0x19, 0x53, 0x00, 0x86, 0x69, 0x57, 0x86, 0x00,
+ 0x86, 0x6b, 0x0b, 0xac, 0x00, 0x86, 0x6c, 0x3a,
+ 0xe9, 0x00, 0x86, 0x6f, 0x3a, 0xea, 0x00, 0x86,
+ 0x71, 0x19, 0x54, 0x00, 0x86, 0x75, 0x42, 0xd5,
+ 0x00, 0x86, 0x76, 0x57, 0x87, 0x00, 0x86, 0x77,
+ 0x48, 0x92, 0x00, 0x86, 0x79, 0x0c, 0xd2, 0x00,
+ 0x86, 0x7a, 0x3a, 0xeb, 0x00, 0x86, 0x7b, 0x04,
+ 0x7e, 0x00, 0x86, 0x7d, 0x37, 0x86, 0x00, 0x86,
+ 0x87, 0x48, 0x93, 0x00, 0x86, 0x88, 0x57, 0x99,
+ 0x00, 0x86, 0x89, 0x48, 0x94, 0x00, 0x86, 0x8a,
+ 0x05, 0x63, 0x00, 0x86, 0x8b, 0x19, 0x59, 0x00,
+ 0x86, 0x8c, 0x19, 0x5a, 0x00, 0x86, 0x8d, 0x3a,
+ 0xec, 0x00, 0x86, 0x91, 0x3a, 0xed, 0x00, 0x86,
+ 0x93, 0x19, 0x55, 0x00, 0x86, 0x95, 0x08, 0x8b,
+ 0x00, 0x86, 0x96, 0x57, 0x88, 0x00, 0x86, 0x98,
+ 0x3a, 0xee, 0x00, 0x86, 0x9a, 0x57, 0x89, 0x00,
+ 0x86, 0x9c, 0x48, 0x95, 0x00, 0x86, 0x9d, 0x48,
+ 0x96, 0x00, 0x86, 0xa1, 0x57, 0x8a, 0x00, 0x86,
+ 0xa3, 0x19, 0x56, 0x00, 0x86, 0xa4, 0x0c, 0xf8,
+ 0x00, 0x86, 0xa6, 0x57, 0x8b, 0x00, 0x86, 0xa7,
+ 0x3a, 0xef, 0x00, 0x86, 0xa8, 0x3a, 0xf0, 0x00,
+ 0x86, 0xa9, 0x19, 0x57, 0x00, 0x86, 0xaa, 0x19,
+ 0x58, 0x00, 0x86, 0xab, 0x19, 0x62, 0x00, 0x86,
+ 0xad, 0x57, 0x8c, 0x00, 0x86, 0xaf, 0x19, 0x5c,
+ 0x00, 0x86, 0xb0, 0x19, 0x5f, 0x00, 0x86, 0xb1,
+ 0x48, 0x97, 0x00, 0x86, 0xb3, 0x48, 0x98, 0x00,
+ 0x86, 0xb4, 0x57, 0x8d, 0x00, 0x86, 0xb5, 0x57,
+ 0x8e, 0x00, 0x86, 0xb6, 0x19, 0x5b, 0x00, 0x86,
+ 0xb7, 0x57, 0x8f, 0x00, 0x86, 0xb8, 0x42, 0xd6,
+ 0x00, 0x86, 0xb9, 0x57, 0x90, 0x00, 0x86, 0xbf,
+ 0x57, 0x91, 0x00, 0x86, 0xc0, 0x4d, 0x2b, 0x00,
+ 0x86, 0xc1, 0x48, 0x99, 0x00, 0x86, 0xc3, 0x48,
+ 0x9a, 0x00, 0x86, 0xc4, 0x19, 0x5d, 0x00, 0x86,
+ 0xc5, 0x57, 0x92, 0x00, 0x86, 0xc6, 0x19, 0x5e,
+ 0x00, 0x86, 0xc7, 0x09, 0x04, 0x00, 0x86, 0xc9,
+ 0x19, 0x60, 0x00, 0x86, 0xcb, 0x0b, 0x7f, 0x00,
+ 0x86, 0xcd, 0x07, 0x2c, 0x00, 0x86, 0xce, 0x05,
+ 0xa0, 0x00, 0x86, 0xd1, 0x48, 0x9b, 0x00, 0x86,
+ 0xd2, 0x57, 0x93, 0x00, 0x86, 0xd4, 0x19, 0x63,
+ 0x00, 0x86, 0xd5, 0x48, 0x9c, 0x00, 0x86, 0xd7,
+ 0x48, 0x9d, 0x00, 0x86, 0xd9, 0x05, 0x9d, 0x00,
+ 0x86, 0xda, 0x57, 0x94, 0x00, 0x86, 0xdb, 0x19,
+ 0x68, 0x00, 0x86, 0xdc, 0x57, 0x95, 0x00, 0x86,
+ 0xde, 0x19, 0x64, 0x00, 0x86, 0xdf, 0x19, 0x67,
+ 0x00, 0x86, 0xe0, 0x57, 0x96, 0x00, 0x86, 0xe3,
+ 0x48, 0x9e, 0x00, 0x86, 0xe4, 0x0d, 0x4e, 0x00,
+ 0x86, 0xe5, 0x57, 0x97, 0x00, 0x86, 0xe6, 0x48,
+ 0x9f, 0x00, 0x86, 0xe7, 0x57, 0x98, 0x00, 0x86,
+ 0xe9, 0x19, 0x65, 0x00, 0x86, 0xec, 0x19, 0x66,
+ 0x00, 0x86, 0xed, 0x0d, 0xba, 0x00, 0x86, 0xee,
+ 0x0d, 0x6e, 0x00, 0x86, 0xef, 0x19, 0x69, 0x00,
+ 0x86, 0xf8, 0x0b, 0x5d, 0x00, 0x86, 0xf9, 0x19,
+ 0x73, 0x00, 0x86, 0xfa, 0x3a, 0xf1, 0x00, 0x86,
+ 0xfb, 0x19, 0x6f, 0x00, 0x86, 0xfc, 0x42, 0xd7,
+ 0x00, 0x86, 0xfd, 0x3a, 0xf2, 0x00, 0x86, 0xfe,
+ 0x05, 0x6b, 0x00, 0x87, 0x00, 0x19, 0x6d, 0x00,
+ 0x87, 0x02, 0x0e, 0x58, 0x00, 0x87, 0x03, 0x19,
+ 0x6e, 0x00, 0x87, 0x04, 0x57, 0x9a, 0x00, 0x87,
+ 0x05, 0x48, 0xa1, 0x00, 0x87, 0x06, 0x19, 0x6b,
+ 0x00, 0x87, 0x07, 0x48, 0xa2, 0x00, 0x87, 0x08,
+ 0x19, 0x6c, 0x00, 0x87, 0x09, 0x19, 0x71, 0x00,
+ 0x87, 0x0a, 0x19, 0x74, 0x00, 0x87, 0x0b, 0x3a,
+ 0xf3, 0x00, 0x87, 0x0d, 0x19, 0x72, 0x00, 0x87,
+ 0x0e, 0x48, 0xa3, 0x00, 0x87, 0x0f, 0x57, 0x9b,
+ 0x00, 0x87, 0x10, 0x48, 0xa4, 0x00, 0x87, 0x11,
+ 0x19, 0x70, 0x00, 0x87, 0x12, 0x19, 0x6a, 0x00,
+ 0x87, 0x13, 0x3a, 0xf4, 0x00, 0x87, 0x14, 0x4d,
+ 0x2c, 0x00, 0x87, 0x18, 0x0b, 0x96, 0x00, 0x87,
+ 0x19, 0x3a, 0xf5, 0x00, 0x87, 0x1a, 0x19, 0x7b,
+ 0x00, 0x87, 0x1c, 0x0e, 0xb6, 0x00, 0x87, 0x1e,
+ 0x3a, 0xf6, 0x00, 0x87, 0x1f, 0x48, 0xa5, 0x00,
+ 0x87, 0x21, 0x48, 0xa6, 0x00, 0x87, 0x22, 0x4d,
+ 0x2d, 0x00, 0x87, 0x23, 0x48, 0xa7, 0x00, 0x87,
+ 0x25, 0x19, 0x79, 0x00, 0x87, 0x28, 0x3a, 0xf7,
+ 0x00, 0x87, 0x29, 0x19, 0x7a, 0x00, 0x87, 0x2e,
+ 0x4d, 0x2e, 0x00, 0x87, 0x2f, 0x57, 0x9c, 0x00,
+ 0x87, 0x31, 0x48, 0xa8, 0x00, 0x87, 0x32, 0x57,
+ 0x9d, 0x00, 0x87, 0x34, 0x19, 0x75, 0x00, 0x87,
+ 0x37, 0x19, 0x77, 0x00, 0x87, 0x39, 0x4d, 0x2f,
+ 0x00, 0x87, 0x3a, 0x48, 0xa9, 0x00, 0x87, 0x3b,
+ 0x19, 0x78, 0x00, 0x87, 0x3c, 0x57, 0x9e, 0x00,
+ 0x87, 0x3d, 0x57, 0x9f, 0x00, 0x87, 0x3e, 0x3a,
+ 0xf8, 0x00, 0x87, 0x3f, 0x19, 0x76, 0x00, 0x87,
+ 0x40, 0x48, 0xaa, 0x00, 0x87, 0x43, 0x48, 0xab,
+ 0x00, 0x87, 0x45, 0x57, 0xa0, 0x00, 0x87, 0x49,
+ 0x0a, 0x8a, 0x00, 0x87, 0x4b, 0x0f, 0xdf, 0x00,
+ 0x87, 0x4c, 0x19, 0x7f, 0x00, 0x87, 0x4d, 0x57,
+ 0xa1, 0x00, 0x87, 0x4e, 0x19, 0x80, 0x00, 0x87,
+ 0x51, 0x48, 0xac, 0x00, 0x87, 0x53, 0x19, 0x86,
+ 0x00, 0x87, 0x55, 0x09, 0xf0, 0x00, 0x87, 0x57,
+ 0x19, 0x82, 0x00, 0x87, 0x58, 0x48, 0xad, 0x00,
+ 0x87, 0x59, 0x19, 0x85, 0x00, 0x87, 0x5d, 0x4d,
+ 0x30, 0x00, 0x87, 0x5f, 0x19, 0x7d, 0x00, 0x87,
+ 0x60, 0x19, 0x7c, 0x00, 0x87, 0x61, 0x57, 0xa2,
+ 0x00, 0x87, 0x63, 0x19, 0x87, 0x00, 0x87, 0x64,
+ 0x48, 0xae, 0x00, 0x87, 0x65, 0x48, 0xaf, 0x00,
+ 0x87, 0x66, 0x05, 0x5c, 0x00, 0x87, 0x68, 0x19,
+ 0x83, 0x00, 0x87, 0x6a, 0x19, 0x88, 0x00, 0x87,
+ 0x6e, 0x19, 0x84, 0x00, 0x87, 0x6f, 0x57, 0xa3,
+ 0x00, 0x87, 0x71, 0x3a, 0xf9, 0x00, 0x87, 0x72,
+ 0x48, 0xb0, 0x00, 0x87, 0x74, 0x19, 0x81, 0x00,
+ 0x87, 0x76, 0x0b, 0xcf, 0x00, 0x87, 0x78, 0x19,
+ 0x7e, 0x00, 0x87, 0x7b, 0x4d, 0x31, 0x00, 0x87,
+ 0x7c, 0x48, 0xb1, 0x00, 0x87, 0x7f, 0x0d, 0x1e,
+ 0x00, 0x87, 0x82, 0x19, 0x8c, 0x00, 0x87, 0x83,
+ 0x57, 0xa4, 0x00, 0x87, 0x84, 0x57, 0xa5, 0x00,
+ 0x87, 0x85, 0x57, 0xa6, 0x00, 0x87, 0x86, 0x57,
+ 0xa7, 0x00, 0x87, 0x87, 0x42, 0xd8, 0x00, 0x87,
+ 0x88, 0x3a, 0xfa, 0x00, 0x87, 0x89, 0x48, 0xb5,
+ 0x00, 0x87, 0x8b, 0x48, 0xb6, 0x00, 0x87, 0x8c,
+ 0x4d, 0x32, 0x00, 0x87, 0x8d, 0x0f, 0x25, 0x00,
+ 0x87, 0x8e, 0x4d, 0x33, 0x00, 0x87, 0x90, 0x57,
+ 0xa8, 0x00, 0x87, 0x93, 0x48, 0xb7, 0x00, 0x87,
+ 0x95, 0x57, 0xa9, 0x00, 0x87, 0x97, 0x4d, 0x34,
+ 0x00, 0x87, 0x98, 0x4d, 0x35, 0x00, 0x87, 0x99,
+ 0x3a, 0xfb, 0x00, 0x87, 0x9e, 0x4d, 0x36, 0x00,
+ 0x87, 0x9f, 0x19, 0x8b, 0x00, 0x87, 0xa0, 0x48,
+ 0xb8, 0x00, 0x87, 0xa2, 0x19, 0x8a, 0x00, 0x87,
+ 0xa3, 0x4d, 0x37, 0x00, 0x87, 0xa7, 0x48, 0xb4,
+ 0x00, 0x87, 0xab, 0x19, 0x93, 0x00, 0x87, 0xac,
+ 0x3a, 0xfc, 0x00, 0x87, 0xad, 0x3a, 0xfd, 0x00,
+ 0x87, 0xae, 0x4d, 0x38, 0x00, 0x87, 0xaf, 0x19,
+ 0x8d, 0x00, 0x87, 0xb1, 0x57, 0xab, 0x00, 0x87,
+ 0xb3, 0x19, 0x95, 0x00, 0x87, 0xb5, 0x3a, 0xfe,
+ 0x00, 0x87, 0xba, 0x0f, 0x50, 0x00, 0x87, 0xbb,
+ 0x19, 0x98, 0x00, 0x87, 0xbd, 0x19, 0x8f, 0x00,
+ 0x87, 0xbe, 0x48, 0xbb, 0x00, 0x87, 0xbf, 0x4d,
+ 0x39, 0x00, 0x87, 0xc0, 0x19, 0x90, 0x00, 0x87,
+ 0xc1, 0x48, 0xbd, 0x00, 0x87, 0xc4, 0x19, 0x94,
+ 0x00, 0x87, 0xc6, 0x19, 0x97, 0x00, 0x87, 0xc7,
+ 0x19, 0x96, 0x00, 0x87, 0xc8, 0x57, 0xac, 0x00,
+ 0x87, 0xc9, 0x4d, 0x3a, 0x00, 0x87, 0xca, 0x57,
+ 0xad, 0x00, 0x87, 0xcb, 0x19, 0x8e, 0x00, 0x87,
+ 0xce, 0x48, 0xbe, 0x00, 0x87, 0xd0, 0x19, 0x91,
+ 0x00, 0x87, 0xd2, 0x19, 0xa2, 0x00, 0x87, 0xd5,
+ 0x57, 0xae, 0x00, 0x87, 0xd6, 0x3a, 0xff, 0x00,
+ 0x87, 0xd9, 0x57, 0xaf, 0x00, 0x87, 0xda, 0x4d,
+ 0x3b, 0x00, 0x87, 0xdc, 0x57, 0xb0, 0x00, 0x87,
+ 0xdf, 0x48, 0xbf, 0x00, 0x87, 0xe0, 0x19, 0x9b,
+ 0x00, 0x87, 0xe2, 0x57, 0xb1, 0x00, 0x87, 0xe3,
+ 0x48, 0xc1, 0x00, 0x87, 0xe4, 0x57, 0xb2, 0x00,
+ 0x87, 0xe5, 0x48, 0xc2, 0x00, 0x87, 0xe6, 0x48,
+ 0xc3, 0x00, 0x87, 0xea, 0x48, 0xc4, 0x00, 0x87,
+ 0xeb, 0x3b, 0x00, 0x00, 0x87, 0xec, 0x1e, 0x23,
+ 0x00, 0x87, 0xed, 0x3b, 0x01, 0x00, 0x87, 0xef,
+ 0x19, 0x99, 0x00, 0x87, 0xf1, 0x57, 0xb3, 0x00,
+ 0x87, 0xf2, 0x19, 0x9a, 0x00, 0x87, 0xf3, 0x57,
+ 0xb4, 0x00, 0x87, 0xf5, 0x3c, 0x3d, 0x00, 0x87,
+ 0xf6, 0x19, 0x9f, 0x00, 0x87, 0xf7, 0x19, 0xa0,
+ 0x00, 0x87, 0xf8, 0x57, 0xb5, 0x00, 0x87, 0xf9,
+ 0x05, 0x88, 0x00, 0x87, 0xfa, 0x57, 0xb6, 0x00,
+ 0x87, 0xfb, 0x06, 0x5c, 0x00, 0x87, 0xfe, 0x19,
+ 0x9e, 0x00, 0x87, 0xff, 0x57, 0xb7, 0x00, 0x88,
+ 0x01, 0x3b, 0x02, 0x00, 0x88, 0x03, 0x4f, 0x58,
+ 0x00, 0x88, 0x05, 0x19, 0x89, 0x00, 0x88, 0x06,
+ 0x3b, 0x04, 0x00, 0x88, 0x07, 0x21, 0xa6, 0x00,
+ 0x88, 0x09, 0x57, 0xb8, 0x00, 0x88, 0x0a, 0x42,
+ 0xda, 0x00, 0x88, 0x0b, 0x3b, 0x05, 0x00, 0x88,
+ 0x0d, 0x19, 0x9d, 0x00, 0x88, 0x0e, 0x19, 0xa1,
+ 0x00, 0x88, 0x0f, 0x19, 0x9c, 0x00, 0x88, 0x10,
+ 0x42, 0xdb, 0x00, 0x88, 0x11, 0x19, 0xa3, 0x00,
+ 0x88, 0x12, 0x57, 0xba, 0x00, 0x88, 0x13, 0x48,
+ 0xc5, 0x00, 0x88, 0x14, 0x3b, 0x06, 0x00, 0x88,
+ 0x15, 0x19, 0xa5, 0x00, 0x88, 0x16, 0x19, 0xa4,
+ 0x00, 0x88, 0x18, 0x4d, 0x3c, 0x00, 0x88, 0x19,
+ 0x57, 0xb9, 0x00, 0x88, 0x1a, 0x57, 0xbb, 0x00,
+ 0x88, 0x1b, 0x4d, 0x3d, 0x00, 0x88, 0x1c, 0x3b,
+ 0x07, 0x00, 0x88, 0x1e, 0x57, 0xbc, 0x00, 0x88,
+ 0x1f, 0x1e, 0x85, 0x00, 0x88, 0x21, 0x19, 0xa7,
+ 0x00, 0x88, 0x22, 0x19, 0xa6, 0x00, 0x88, 0x23,
+ 0x19, 0x61, 0x00, 0x88, 0x27, 0x19, 0xab, 0x00,
+ 0x88, 0x28, 0x48, 0xc6, 0x00, 0x88, 0x2d, 0x4d,
+ 0x3e, 0x00, 0x88, 0x2e, 0x48, 0xc7, 0x00, 0x88,
+ 0x30, 0x57, 0xbd, 0x00, 0x88, 0x31, 0x19, 0xa8,
+ 0x00, 0x88, 0x32, 0x48, 0xc8, 0x00, 0x88, 0x35,
+ 0x57, 0xbe, 0x00, 0x88, 0x36, 0x19, 0xa9, 0x00,
+ 0x88, 0x39, 0x19, 0xaa, 0x00, 0x88, 0x3a, 0x4d,
+ 0x3f, 0x00, 0x88, 0x3b, 0x19, 0xac, 0x00, 0x88,
+ 0x3c, 0x48, 0xc9, 0x00, 0x88, 0x40, 0x07, 0x42,
+ 0x00, 0x88, 0x41, 0x57, 0xbf, 0x00, 0x88, 0x42,
+ 0x19, 0xae, 0x00, 0x88, 0x43, 0x57, 0xc0, 0x00,
+ 0x88, 0x44, 0x19, 0xad, 0x00, 0x88, 0x45, 0x4d,
+ 0x40, 0x00, 0x88, 0x46, 0x09, 0x3a, 0x00, 0x88,
+ 0x48, 0x57, 0xc1, 0x00, 0x88, 0x49, 0x57, 0xc2,
+ 0x00, 0x88, 0x4a, 0x48, 0xcb, 0x00, 0x88, 0x4b,
+ 0x4d, 0x41, 0x00, 0x88, 0x4c, 0x07, 0xe6, 0x00,
+ 0x88, 0x4d, 0x15, 0x24, 0x00, 0x88, 0x4e, 0x4d,
+ 0x42, 0x00, 0x88, 0x51, 0x57, 0xc4, 0x00, 0x88,
+ 0x52, 0x19, 0xaf, 0x00, 0x88, 0x53, 0x09, 0x5b,
+ 0x00, 0x88, 0x55, 0x4d, 0x43, 0x00, 0x88, 0x56,
+ 0x3b, 0x08, 0x00, 0x88, 0x57, 0x05, 0x97, 0x00,
+ 0x88, 0x58, 0x48, 0xcc, 0x00, 0x88, 0x59, 0x19,
+ 0xb0, 0x00, 0x88, 0x5a, 0x4d, 0x44, 0x00, 0x88,
+ 0x5b, 0x04, 0xf4, 0x00, 0x88, 0x5c, 0x57, 0xc5,
+ 0x00, 0x88, 0x5d, 0x09, 0xbf, 0x00, 0x88, 0x5e,
+ 0x19, 0xb1, 0x00, 0x88, 0x5f, 0x3b, 0x09, 0x00,
+ 0x88, 0x60, 0x57, 0xc6, 0x00, 0x88, 0x61, 0x07,
+ 0xe7, 0x00, 0x88, 0x62, 0x19, 0xb2, 0x00, 0x88,
+ 0x63, 0x04, 0xa5, 0x00, 0x88, 0x64, 0x3b, 0x0a,
+ 0x00, 0x88, 0x68, 0x0d, 0xaf, 0x00, 0x88, 0x69,
+ 0x48, 0xcf, 0x00, 0x88, 0x6b, 0x19, 0xb3, 0x00,
+ 0x88, 0x6e, 0x4d, 0x45, 0x00, 0x88, 0x6f, 0x48,
+ 0xd1, 0x00, 0x88, 0x70, 0x0a, 0x30, 0x00, 0x88,
+ 0x71, 0x57, 0xc7, 0x00, 0x88, 0x72, 0x19, 0xba,
+ 0x00, 0x88, 0x75, 0x19, 0xb7, 0x00, 0x88, 0x77,
+ 0x0b, 0xad, 0x00, 0x88, 0x79, 0x57, 0xc8, 0x00,
+ 0x88, 0x7b, 0x57, 0xc9, 0x00, 0x88, 0x7d, 0x19,
+ 0xb8, 0x00, 0x88, 0x7e, 0x19, 0xb5, 0x00, 0x88,
+ 0x7f, 0x06, 0xd6, 0x00, 0x88, 0x80, 0x57, 0xca,
+ 0x00, 0x88, 0x81, 0x19, 0xb4, 0x00, 0x88, 0x82,
+ 0x19, 0xbb, 0x00, 0x88, 0x88, 0x07, 0x0c, 0x00,
+ 0x88, 0x8b, 0x0b, 0x3e, 0x00, 0x88, 0x8d, 0x19,
+ 0xc1, 0x00, 0x88, 0x92, 0x19, 0xbd, 0x00, 0x88,
+ 0x96, 0x0b, 0x15, 0x00, 0x88, 0x97, 0x19, 0xbc,
+ 0x00, 0x88, 0x98, 0x3b, 0x0b, 0x00, 0x88, 0x99,
+ 0x19, 0xbf, 0x00, 0x88, 0x9a, 0x4d, 0x46, 0x00,
+ 0x88, 0x9b, 0x4d, 0x47, 0x00, 0x88, 0x9c, 0x4d,
+ 0x48, 0x00, 0x88, 0x9e, 0x19, 0xb6, 0x00, 0x88,
+ 0x9f, 0x57, 0xcb, 0x00, 0x88, 0xa0, 0x48, 0xd2,
+ 0x00, 0x88, 0xa2, 0x19, 0xc0, 0x00, 0x88, 0xa4,
+ 0x19, 0xc2, 0x00, 0x88, 0xa8, 0x57, 0xcc, 0x00,
+ 0x88, 0xaa, 0x3b, 0x0c, 0x00, 0x88, 0xab, 0x0d,
+ 0x83, 0x00, 0x88, 0xae, 0x19, 0xbe, 0x00, 0x88,
+ 0xb0, 0x19, 0xc3, 0x00, 0x88, 0xb1, 0x19, 0xc5,
+ 0x00, 0x88, 0xb4, 0x07, 0x87, 0x00, 0x88, 0xb5,
+ 0x19, 0xb9, 0x00, 0x88, 0xb7, 0x04, 0x85, 0x00,
+ 0x88, 0xba, 0x57, 0xcd, 0x00, 0x88, 0xbc, 0x48,
+ 0xd3, 0x00, 0x88, 0xbd, 0x3b, 0x0d, 0x00, 0x88,
+ 0xbe, 0x3b, 0x0e, 0x00, 0x88, 0xbf, 0x19, 0xc4,
+ 0x00, 0x88, 0xc0, 0x48, 0xd4, 0x00, 0x88, 0xc1,
+ 0x08, 0x4b, 0x00, 0x88, 0xc2, 0x0f, 0xbe, 0x00,
+ 0x88, 0xc3, 0x19, 0xc6, 0x00, 0x88, 0xc4, 0x19,
+ 0xc7, 0x00, 0x88, 0xc5, 0x0a, 0xf7, 0x00, 0x88,
+ 0xc6, 0x37, 0x89, 0x00, 0x88, 0xca, 0x3b, 0x0f,
+ 0x00, 0x88, 0xcb, 0x57, 0xce, 0x00, 0x88, 0xcc,
+ 0x57, 0xcf, 0x00, 0x88, 0xcd, 0x4d, 0x49, 0x00,
+ 0x88, 0xce, 0x42, 0xdc, 0x00, 0x88, 0xcf, 0x0f,
+ 0x6a, 0x00, 0x88, 0xd1, 0x48, 0xd6, 0x00, 0x88,
+ 0xd2, 0x3b, 0x10, 0x00, 0x88, 0xd3, 0x48, 0xd7,
+ 0x00, 0x88, 0xd4, 0x19, 0xc8, 0x00, 0x88, 0xd5,
+ 0x0f, 0x1f, 0x00, 0x88, 0xd8, 0x19, 0xc9, 0x00,
+ 0x88, 0xd9, 0x19, 0xca, 0x00, 0x88, 0xdb, 0x3b,
+ 0x11, 0x00, 0x88, 0xdc, 0x0e, 0x34, 0x00, 0x88,
+ 0xdd, 0x19, 0xcb, 0x00, 0x88, 0xde, 0x57, 0xd0,
+ 0x00, 0x88, 0xdf, 0x08, 0x30, 0x00, 0x88, 0xe0,
+ 0x4d, 0x4a, 0x00, 0x88, 0xe1, 0x0f, 0x6b, 0x00,
+ 0x88, 0xe7, 0x57, 0xd1, 0x00, 0x88, 0xe8, 0x19,
+ 0xd0, 0x00, 0x88, 0xef, 0x4d, 0x4b, 0x00, 0x88,
+ 0xf0, 0x3b, 0x12, 0x00, 0x88, 0xf1, 0x3b, 0x13,
+ 0x00, 0x88, 0xf2, 0x19, 0xd1, 0x00, 0x88, 0xf3,
+ 0x09, 0xc0, 0x00, 0x88, 0xf4, 0x19, 0xcf, 0x00,
+ 0x88, 0xf5, 0x21, 0xa7, 0x00, 0x88, 0xf7, 0x57,
+ 0xd2, 0x00, 0x88, 0xf8, 0x0f, 0x51, 0x00, 0x88,
+ 0xf9, 0x19, 0xcc, 0x00, 0x88, 0xfc, 0x19, 0xce,
+ 0x00, 0x88, 0xfd, 0x0a, 0x61, 0x00, 0x88, 0xfe,
+ 0x0a, 0x44, 0x00, 0x89, 0x01, 0x48, 0xd9, 0x00,
+ 0x89, 0x02, 0x19, 0xcd, 0x00, 0x89, 0x04, 0x19,
+ 0xd2, 0x00, 0x89, 0x06, 0x3b, 0x14, 0x00, 0x89,
+ 0x07, 0x0d, 0xf3, 0x00, 0x89, 0x0a, 0x19, 0xd4,
+ 0x00, 0x89, 0x0c, 0x19, 0xd3, 0x00, 0x89, 0x0d,
+ 0x57, 0xd3, 0x00, 0x89, 0x0e, 0x4d, 0x4c, 0x00,
+ 0x89, 0x0f, 0x4d, 0x4d, 0x00, 0x89, 0x10, 0x05,
+ 0xca, 0x00, 0x89, 0x12, 0x0e, 0x59, 0x00, 0x89,
+ 0x13, 0x19, 0xd5, 0x00, 0x89, 0x15, 0x57, 0xd4,
+ 0x00, 0x89, 0x16, 0x57, 0xd5, 0x00, 0x89, 0x18,
+ 0x3b, 0x15, 0x00, 0x89, 0x19, 0x3b, 0x16, 0x00,
+ 0x89, 0x1a, 0x3b, 0x17, 0x00, 0x89, 0x1c, 0x20,
+ 0xa8, 0x00, 0x89, 0x1d, 0x19, 0xe1, 0x00, 0x89,
+ 0x1e, 0x19, 0xd7, 0x00, 0x89, 0x20, 0x57, 0xd6,
+ 0x00, 0x89, 0x25, 0x19, 0xd8, 0x00, 0x89, 0x26,
+ 0x4d, 0x4e, 0x00, 0x89, 0x27, 0x3b, 0x18, 0x00,
+ 0x89, 0x28, 0x57, 0xd7, 0x00, 0x89, 0x2a, 0x19,
+ 0xd9, 0x00, 0x89, 0x2b, 0x19, 0xda, 0x00, 0x89,
+ 0x30, 0x3b, 0x19, 0x00, 0x89, 0x31, 0x57, 0xd8,
+ 0x00, 0x89, 0x32, 0x42, 0xde, 0x00, 0x89, 0x35,
+ 0x4d, 0x4f, 0x00, 0x89, 0x36, 0x19, 0xde, 0x00,
+ 0x89, 0x37, 0x48, 0xdb, 0x00, 0x89, 0x38, 0x19,
+ 0xdf, 0x00, 0x89, 0x39, 0x42, 0xdf, 0x00, 0x89,
+ 0x3a, 0x57, 0xd9, 0x00, 0x89, 0x3b, 0x19, 0xdd,
+ 0x00, 0x89, 0x3e, 0x3b, 0x1a, 0x00, 0x89, 0x40,
+ 0x42, 0xe0, 0x00, 0x89, 0x41, 0x19, 0xdb, 0x00,
+ 0x89, 0x42, 0x48, 0xdd, 0x00, 0x89, 0x43, 0x19,
+ 0xd6, 0x00, 0x89, 0x44, 0x19, 0xdc, 0x00, 0x89,
+ 0x45, 0x48, 0xde, 0x00, 0x89, 0x46, 0x57, 0xda,
+ 0x00, 0x89, 0x49, 0x48, 0xdf, 0x00, 0x89, 0x4c,
+ 0x19, 0xe0, 0x00, 0x89, 0x4d, 0x1b, 0xd0, 0x00,
+ 0x89, 0x4f, 0x57, 0xdb, 0x00, 0x89, 0x52, 0x57,
+ 0xdc, 0x00, 0x89, 0x56, 0x05, 0x28, 0x00, 0x89,
+ 0x57, 0x57, 0xdd, 0x00, 0x89, 0x5a, 0x4d, 0x50,
+ 0x00, 0x89, 0x5b, 0x57, 0xde, 0x00, 0x89, 0x5c,
+ 0x4d, 0x51, 0x00, 0x89, 0x5e, 0x19, 0xe3, 0x00,
+ 0x89, 0x5f, 0x06, 0xd7, 0x00, 0x89, 0x60, 0x19,
+ 0xe2, 0x00, 0x89, 0x61, 0x57, 0xdf, 0x00, 0x89,
+ 0x62, 0x48, 0xe1, 0x00, 0x89, 0x63, 0x57, 0xe0,
+ 0x00, 0x89, 0x64, 0x19, 0xe5, 0x00, 0x89, 0x66,
+ 0x19, 0xe4, 0x00, 0x89, 0x6a, 0x19, 0xe7, 0x00,
+ 0x89, 0x6b, 0x4d, 0x52, 0x00, 0x89, 0x6d, 0x19,
+ 0xe6, 0x00, 0x89, 0x6e, 0x57, 0xe1, 0x00, 0x89,
+ 0x6f, 0x19, 0xe8, 0x00, 0x89, 0x70, 0x4d, 0x53,
+ 0x00, 0x89, 0x72, 0x09, 0x3b, 0x00, 0x89, 0x73,
+ 0x57, 0xe2, 0x00, 0x89, 0x74, 0x19, 0xe9, 0x00,
+ 0x89, 0x75, 0x57, 0xe3, 0x00, 0x89, 0x77, 0x19,
+ 0xea, 0x00, 0x89, 0x7a, 0x57, 0xe4, 0x00, 0x89,
+ 0x7b, 0x3b, 0x1b, 0x00, 0x89, 0x7c, 0x4d, 0x54,
+ 0x00, 0x89, 0x7d, 0x57, 0xe5, 0x00, 0x89, 0x7e,
+ 0x19, 0xeb, 0x00, 0x89, 0x7f, 0x0a, 0x62, 0x00,
+ 0x89, 0x80, 0x36, 0x2e, 0x00, 0x89, 0x81, 0x0f,
+ 0x41, 0x00, 0x89, 0x83, 0x19, 0xec, 0x00, 0x89,
+ 0x86, 0x0d, 0xf4, 0x00, 0x89, 0x87, 0x0c, 0xfc,
+ 0x00, 0x89, 0x88, 0x19, 0xed, 0x00, 0x89, 0x89,
+ 0x48, 0xe2, 0x00, 0x89, 0x8a, 0x19, 0xee, 0x00,
+ 0x89, 0x8b, 0x07, 0x5f, 0x00, 0x89, 0x8d, 0x57,
+ 0xe6, 0x00, 0x89, 0x8f, 0x06, 0x46, 0x00, 0x89,
+ 0x90, 0x48, 0xe3, 0x00, 0x89, 0x93, 0x19, 0xef,
+ 0x00, 0x89, 0x94, 0x42, 0xe1, 0x00, 0x89, 0x95,
+ 0x57, 0xe7, 0x00, 0x89, 0x96, 0x08, 0xb9, 0x00,
+ 0x89, 0x97, 0x0c, 0xf7, 0x00, 0x89, 0x98, 0x19,
+ 0xf0, 0x00, 0x89, 0x9a, 0x05, 0xae, 0x00, 0x89,
+ 0x9b, 0x57, 0xe8, 0x00, 0x89, 0x9c, 0x57, 0xe9,
+ 0x00, 0x89, 0x9f, 0x48, 0xe4, 0x00, 0x89, 0xa0,
+ 0x57, 0xea, 0x00, 0x89, 0xa1, 0x19, 0xf1, 0x00,
+ 0x89, 0xa5, 0x4d, 0x55, 0x00, 0x89, 0xa6, 0x19,
+ 0xf3, 0x00, 0x89, 0xa7, 0x0f, 0x61, 0x00, 0x89,
+ 0xa9, 0x19, 0xf2, 0x00, 0x89, 0xaa, 0x0a, 0x0c,
+ 0x00, 0x89, 0xac, 0x19, 0xf4, 0x00, 0x89, 0xaf,
+ 0x19, 0xf5, 0x00, 0x89, 0xb0, 0x48, 0xe5, 0x00,
+ 0x89, 0xb2, 0x19, 0xf6, 0x00, 0x89, 0xb3, 0x06,
+ 0x0d, 0x00, 0x89, 0xb4, 0x57, 0xeb, 0x00, 0x89,
+ 0xb5, 0x4d, 0x56, 0x00, 0x89, 0xb6, 0x57, 0xec,
+ 0x00, 0x89, 0xb7, 0x48, 0xe6, 0x00, 0x89, 0xba,
+ 0x19, 0xf7, 0x00, 0x89, 0xbc, 0x4d, 0x57, 0x00,
+ 0x89, 0xbd, 0x19, 0xf8, 0x00, 0x89, 0xbf, 0x19,
+ 0xf9, 0x00, 0x89, 0xc0, 0x19, 0xfa, 0x00, 0x89,
+ 0xd2, 0x35, 0x72, 0x00, 0x89, 0xd4, 0x3b, 0x1c,
+ 0x00, 0x89, 0xd5, 0x4d, 0x58, 0x00, 0x89, 0xd6,
+ 0x3b, 0x1d, 0x00, 0x89, 0xd7, 0x57, 0xed, 0x00,
+ 0x89, 0xd8, 0x48, 0xe7, 0x00, 0x89, 0xda, 0x19,
+ 0xfb, 0x00, 0x89, 0xdc, 0x19, 0xfc, 0x00, 0x89,
+ 0xdd, 0x19, 0xfd, 0x00, 0x89, 0xe3, 0x05, 0x72,
+ 0x00, 0x89, 0xe5, 0x3b, 0x1e, 0x00, 0x89, 0xe6,
+ 0x09, 0xee, 0x00, 0x89, 0xe7, 0x19, 0xfe, 0x00,
+ 0x89, 0xe9, 0x57, 0xee, 0x00, 0x89, 0xeb, 0x48,
+ 0xe8, 0x00, 0x89, 0xed, 0x57, 0xef, 0x00, 0x89,
+ 0xf1, 0x3b, 0x1f, 0x00, 0x89, 0xf3, 0x48, 0xea,
+ 0x00, 0x89, 0xf4, 0x19, 0xff, 0x00, 0x89, 0xf6,
+ 0x42, 0xe2, 0x00, 0x89, 0xf8, 0x1a, 0x00, 0x00,
+ 0x89, 0xf9, 0x57, 0xf0, 0x00, 0x89, 0xfd, 0x48,
+ 0xeb, 0x00, 0x89, 0xff, 0x48, 0xec, 0x00, 0x8a,
+ 0x00, 0x07, 0x74, 0x00, 0x8a, 0x01, 0x35, 0xbc,
+ 0x00, 0x8a, 0x02, 0x0c, 0x17, 0x00, 0x8a, 0x03,
+ 0x1a, 0x01, 0x00, 0x8a, 0x04, 0x57, 0xf1, 0x00,
+ 0x8a, 0x05, 0x57, 0xf2, 0x00, 0x8a, 0x07, 0x3b,
+ 0x20, 0x00, 0x8a, 0x08, 0x07, 0x2d, 0x00, 0x8a,
+ 0x0a, 0x0a, 0x1c, 0x00, 0x8a, 0x0c, 0x1a, 0x04,
+ 0x00, 0x8a, 0x0e, 0x0c, 0x7c, 0x00, 0x8a, 0x0f,
+ 0x3b, 0x21, 0x00, 0x8a, 0x10, 0x1a, 0x03, 0x00,
+ 0x8a, 0x11, 0x48, 0xee, 0x00, 0x8a, 0x12, 0x21,
+ 0xa8, 0x00, 0x8a, 0x13, 0x07, 0x07, 0x00, 0x8a,
+ 0x14, 0x48, 0xef, 0x00, 0x8a, 0x15, 0x3b, 0x22,
+ 0x00, 0x8a, 0x16, 0x1a, 0x02, 0x00, 0x8a, 0x17,
+ 0x0b, 0x57, 0x00, 0x8a, 0x18, 0x06, 0x47, 0x00,
+ 0x8a, 0x1b, 0x1a, 0x05, 0x00, 0x8a, 0x1d, 0x1a,
+ 0x06, 0x00, 0x8a, 0x1e, 0x57, 0xf3, 0x00, 0x8a,
+ 0x1f, 0x09, 0xc1, 0x00, 0x8a, 0x20, 0x57, 0xf4,
+ 0x00, 0x8a, 0x21, 0x48, 0xf1, 0x00, 0x8a, 0x22,
+ 0x3b, 0x23, 0x00, 0x8a, 0x23, 0x07, 0x43, 0x00,
+ 0x8a, 0x24, 0x57, 0xf5, 0x00, 0x8a, 0x25, 0x1a,
+ 0x07, 0x00, 0x8a, 0x26, 0x57, 0xf6, 0x00, 0x8a,
+ 0x2a, 0x0e, 0x5a, 0x00, 0x8a, 0x2b, 0x57, 0xf7,
+ 0x00, 0x8a, 0x2c, 0x57, 0xf8, 0x00, 0x8a, 0x2d,
+ 0x0a, 0x83, 0x00, 0x8a, 0x2f, 0x57, 0xf9, 0x00,
+ 0x8a, 0x31, 0x06, 0x90, 0x00, 0x8a, 0x33, 0x0f,
+ 0x01, 0x00, 0x8a, 0x34, 0x0a, 0xcc, 0x00, 0x8a,
+ 0x35, 0x48, 0xf2, 0x00, 0x8a, 0x36, 0x1a, 0x08,
+ 0x00, 0x8a, 0x37, 0x21, 0xa9, 0x00, 0x8a, 0x3a,
+ 0x0a, 0x0d, 0x00, 0x8a, 0x3b, 0x0b, 0xae, 0x00,
+ 0x8a, 0x3c, 0x09, 0xc2, 0x00, 0x8a, 0x3d, 0x57,
+ 0xfa, 0x00, 0x8a, 0x3e, 0x48, 0xf3, 0x00, 0x8a,
+ 0x40, 0x57, 0xfb, 0x00, 0x8a, 0x41, 0x1a, 0x09,
+ 0x00, 0x8a, 0x43, 0x57, 0xfc, 0x00, 0x8a, 0x45,
+ 0x48, 0xf4, 0x00, 0x8a, 0x46, 0x1a, 0x0c, 0x00,
+ 0x8a, 0x47, 0x42, 0xe3, 0x00, 0x8a, 0x48, 0x1a,
+ 0x0d, 0x00, 0x8a, 0x49, 0x4d, 0x59, 0x00, 0x8a,
+ 0x4d, 0x48, 0xf5, 0x00, 0x8a, 0x4e, 0x3b, 0x24,
+ 0x00, 0x8a, 0x50, 0x08, 0x2e, 0x00, 0x8a, 0x51,
+ 0x0b, 0x22, 0x00, 0x8a, 0x52, 0x1a, 0x0b, 0x00,
+ 0x8a, 0x53, 0x57, 0xfd, 0x00, 0x8a, 0x54, 0x09,
+ 0xc3, 0x00, 0x8a, 0x55, 0x0d, 0xb0, 0x00, 0x8a,
+ 0x56, 0x57, 0xfe, 0x00, 0x8a, 0x57, 0x4d, 0x5a,
+ 0x00, 0x8a, 0x58, 0x48, 0xf6, 0x00, 0x8a, 0x5b,
+ 0x1a, 0x0a, 0x00, 0x8a, 0x5c, 0x57, 0xff, 0x00,
+ 0x8a, 0x5d, 0x42, 0xe4, 0x00, 0x8a, 0x5e, 0x08,
+ 0xba, 0x00, 0x8a, 0x60, 0x04, 0xf5, 0x00, 0x8a,
+ 0x61, 0x42, 0xe5, 0x00, 0x8a, 0x62, 0x1a, 0x11,
+ 0x00, 0x8a, 0x63, 0x07, 0x2e, 0x00, 0x8a, 0x65,
+ 0x58, 0x00, 0x00, 0x8a, 0x66, 0x08, 0xbc, 0x00,
+ 0x8a, 0x67, 0x4d, 0x5b, 0x00, 0x8a, 0x69, 0x08,
+ 0xbb, 0x00, 0x8a, 0x6b, 0x0f, 0xf3, 0x00, 0x8a,
+ 0x6c, 0x1a, 0x10, 0x00, 0x8a, 0x6d, 0x1a, 0x0f,
+ 0x00, 0x8a, 0x6e, 0x0a, 0xa9, 0x00, 0x8a, 0x70,
+ 0x06, 0x67, 0x00, 0x8a, 0x71, 0x0f, 0xe9, 0x00,
+ 0x8a, 0x72, 0x05, 0x98, 0x00, 0x8a, 0x73, 0x09,
+ 0xc4, 0x00, 0x8a, 0x75, 0x42, 0xe6, 0x00, 0x8a,
+ 0x76, 0x58, 0x01, 0x00, 0x8a, 0x77, 0x58, 0x02,
+ 0x00, 0x8a, 0x79, 0x21, 0xaa, 0x00, 0x8a, 0x7a,
+ 0x58, 0x03, 0x00, 0x8a, 0x7b, 0x58, 0x04, 0x00,
+ 0x8a, 0x7c, 0x1a, 0x0e, 0x00, 0x8a, 0x7e, 0x4d,
+ 0x5c, 0x00, 0x8a, 0x7f, 0x3b, 0x25, 0x00, 0x8a,
+ 0x80, 0x58, 0x05, 0x00, 0x8a, 0x82, 0x1a, 0x13,
+ 0x00, 0x8a, 0x83, 0x58, 0x06, 0x00, 0x8a, 0x84,
+ 0x1a, 0x14, 0x00, 0x8a, 0x85, 0x1a, 0x12, 0x00,
+ 0x8a, 0x86, 0x4d, 0x5d, 0x00, 0x8a, 0x87, 0x07,
+ 0x8c, 0x00, 0x8a, 0x89, 0x0f, 0x2a, 0x00, 0x8a,
+ 0x8b, 0x58, 0x07, 0x00, 0x8a, 0x8c, 0x08, 0xbd,
+ 0x00, 0x8a, 0x8d, 0x0c, 0xdd, 0x00, 0x8a, 0x8f,
+ 0x58, 0x08, 0x00, 0x8a, 0x90, 0x48, 0xf8, 0x00,
+ 0x8a, 0x91, 0x1a, 0x17, 0x00, 0x8a, 0x92, 0x58,
+ 0x09, 0x00, 0x8a, 0x93, 0x0a, 0x64, 0x00, 0x8a,
+ 0x95, 0x0b, 0x80, 0x00, 0x8a, 0x96, 0x4d, 0x5e,
+ 0x00, 0x8a, 0x97, 0x58, 0x0a, 0x00, 0x8a, 0x98,
+ 0x0f, 0x20, 0x00, 0x8a, 0x99, 0x58, 0x0b, 0x00,
+ 0x8a, 0x9a, 0x1a, 0x1a, 0x00, 0x8a, 0x9e, 0x07,
+ 0xa0, 0x00, 0x8a, 0x9f, 0x58, 0x0c, 0x00, 0x8a,
+ 0xa0, 0x0a, 0x63, 0x00, 0x8a, 0xa1, 0x1a, 0x16,
+ 0x00, 0x8a, 0xa3, 0x1a, 0x1b, 0x00, 0x8a, 0xa4,
+ 0x07, 0xa1, 0x00, 0x8a, 0xa5, 0x1a, 0x18, 0x00,
+ 0x8a, 0xa6, 0x1a, 0x19, 0x00, 0x8a, 0xa7, 0x21,
+ 0xab, 0x00, 0x8a, 0xa8, 0x1a, 0x15, 0x00, 0x8a,
+ 0xa9, 0x58, 0x0d, 0x00, 0x8a, 0xaa, 0x36, 0x38,
+ 0x00, 0x8a, 0xac, 0x0a, 0x86, 0x00, 0x8a, 0xad,
+ 0x0c, 0xa1, 0x00, 0x8a, 0xae, 0x48, 0xf7, 0x00,
+ 0x8a, 0xaf, 0x58, 0x0e, 0x00, 0x8a, 0xb0, 0x0b,
+ 0x6d, 0x00, 0x8a, 0xb2, 0x05, 0x5d, 0x00, 0x8a,
+ 0xb3, 0x58, 0x0f, 0x00, 0x8a, 0xb6, 0x4d, 0x5f,
+ 0x00, 0x8a, 0xb7, 0x48, 0xf9, 0x00, 0x8a, 0xb9,
+ 0x0d, 0x84, 0x00, 0x8a, 0xbb, 0x58, 0x10, 0x00,
+ 0x8a, 0xbc, 0x06, 0x5d, 0x00, 0x8a, 0xbe, 0x21,
+ 0xac, 0x00, 0x8a, 0xbf, 0x0b, 0xd0, 0x00, 0x8a,
+ 0xc2, 0x1a, 0x1e, 0x00, 0x8a, 0xc3, 0x58, 0x11,
+ 0x00, 0x8a, 0xc4, 0x1a, 0x1c, 0x00, 0x8a, 0xc6,
+ 0x58, 0x12, 0x00, 0x8a, 0xc7, 0x0b, 0x8a, 0x00,
+ 0x8a, 0xc8, 0x58, 0x13, 0x00, 0x8a, 0xc9, 0x4d,
+ 0x60, 0x00, 0x8a, 0xca, 0x58, 0x14, 0x00, 0x8a,
+ 0xcb, 0x0a, 0x65, 0x00, 0x8a, 0xcc, 0x06, 0x0e,
+ 0x00, 0x8a, 0xcd, 0x1a, 0x1d, 0x00, 0x8a, 0xcf,
+ 0x0a, 0x21, 0x00, 0x8a, 0xd0, 0x42, 0xe7, 0x00,
+ 0x8a, 0xd1, 0x4d, 0x61, 0x00, 0x8a, 0xd2, 0x0f,
+ 0x92, 0x00, 0x8a, 0xd3, 0x58, 0x15, 0x00, 0x8a,
+ 0xd4, 0x58, 0x16, 0x00, 0x8a, 0xd5, 0x58, 0x17,
+ 0x00, 0x8a, 0xd6, 0x0f, 0xe6, 0x00, 0x8a, 0xd7,
+ 0x48, 0xfa, 0x00, 0x8a, 0xda, 0x1a, 0x1f, 0x00,
+ 0x8a, 0xdb, 0x1a, 0x2a, 0x00, 0x8a, 0xdc, 0x0b,
+ 0xd1, 0x00, 0x8a, 0xdd, 0x4d, 0x62, 0x00, 0x8a,
+ 0xde, 0x1a, 0x29, 0x00, 0x8a, 0xdf, 0x21, 0xad,
+ 0x00, 0x8a, 0xe0, 0x1a, 0x26, 0x00, 0x8a, 0xe1,
+ 0x1a, 0x2e, 0x00, 0x8a, 0xe2, 0x1a, 0x27, 0x00,
+ 0x8a, 0xe4, 0x1a, 0x23, 0x00, 0x8a, 0xe6, 0x0c,
+ 0x18, 0x00, 0x8a, 0xe7, 0x1a, 0x22, 0x00, 0x8a,
+ 0xeb, 0x1a, 0x20, 0x00, 0x8a, 0xec, 0x4d, 0x63,
+ 0x00, 0x8a, 0xed, 0x36, 0xf4, 0x00, 0x8a, 0xee,
+ 0x08, 0xbe, 0x00, 0x8a, 0xf0, 0x58, 0x18, 0x00,
+ 0x8a, 0xf1, 0x1a, 0x24, 0x00, 0x8a, 0xf3, 0x1a,
+ 0x21, 0x00, 0x8a, 0xf4, 0x3b, 0x26, 0x00, 0x8a,
+ 0xf5, 0x4d, 0x64, 0x00, 0x8a, 0xf6, 0x21, 0xaf,
+ 0x00, 0x8a, 0xf7, 0x1a, 0x28, 0x00, 0x8a, 0xf8,
+ 0x21, 0xae, 0x00, 0x8a, 0xfa, 0x07, 0x75, 0x00,
+ 0x8a, 0xfc, 0x48, 0xfb, 0x00, 0x8a, 0xfe, 0x0b,
+ 0x5a, 0x00, 0x8a, 0xff, 0x58, 0x19, 0x00, 0x8b,
+ 0x00, 0x0e, 0x73, 0x00, 0x8b, 0x01, 0x34, 0x09,
+ 0x00, 0x8b, 0x02, 0x04, 0xa6, 0x00, 0x8b, 0x04,
+ 0x0c, 0x7d, 0x00, 0x8b, 0x05, 0x48, 0xfe, 0x00,
+ 0x8b, 0x06, 0x4d, 0x65, 0x00, 0x8b, 0x07, 0x1a,
+ 0x2c, 0x00, 0x8b, 0x0a, 0x48, 0xfd, 0x00, 0x8b,
+ 0x0b, 0x58, 0x1a, 0x00, 0x8b, 0x0c, 0x1a, 0x2b,
+ 0x00, 0x8b, 0x0d, 0x48, 0xff, 0x00, 0x8b, 0x0e,
+ 0x0c, 0xbe, 0x00, 0x8b, 0x0f, 0x4d, 0x66, 0x00,
+ 0x8b, 0x10, 0x1a, 0x30, 0x00, 0x8b, 0x11, 0x4d,
+ 0x67, 0x00, 0x8b, 0x14, 0x1a, 0x25, 0x00, 0x8b,
+ 0x16, 0x1a, 0x2f, 0x00, 0x8b, 0x17, 0x1a, 0x31,
+ 0x00, 0x8b, 0x19, 0x07, 0x60, 0x00, 0x8b, 0x1a,
+ 0x1a, 0x2d, 0x00, 0x8b, 0x1b, 0x07, 0xe8, 0x00,
+ 0x8b, 0x1c, 0x49, 0x00, 0x00, 0x8b, 0x1d, 0x09,
+ 0x01, 0x00, 0x8b, 0x1e, 0x58, 0x1b, 0x00, 0x8b,
+ 0x1f, 0x3b, 0x27, 0x00, 0x8b, 0x20, 0x1a, 0x32,
+ 0x00, 0x8b, 0x21, 0x0f, 0x42, 0x00, 0x8b, 0x26,
+ 0x1a, 0x35, 0x00, 0x8b, 0x28, 0x1a, 0x38, 0x00,
+ 0x8b, 0x2b, 0x1a, 0x36, 0x00, 0x8b, 0x2c, 0x0d,
+ 0xa7, 0x00, 0x8b, 0x2d, 0x49, 0x01, 0x00, 0x8b,
+ 0x30, 0x58, 0x1c, 0x00, 0x8b, 0x33, 0x1a, 0x33,
+ 0x00, 0x8b, 0x37, 0x3b, 0x28, 0x00, 0x8b, 0x39,
+ 0x34, 0x1b, 0x00, 0x8b, 0x3c, 0x58, 0x1d, 0x00,
+ 0x8b, 0x3e, 0x1a, 0x37, 0x00, 0x8b, 0x41, 0x1a,
+ 0x39, 0x00, 0x8b, 0x42, 0x58, 0x1e, 0x00, 0x8b,
+ 0x43, 0x3b, 0x29, 0x00, 0x8b, 0x44, 0x3b, 0x2a,
+ 0x00, 0x8b, 0x45, 0x4d, 0x68, 0x00, 0x8b, 0x46,
+ 0x42, 0xe8, 0x00, 0x8b, 0x48, 0x58, 0x1f, 0x00,
+ 0x8b, 0x49, 0x1a, 0x3d, 0x00, 0x8b, 0x4c, 0x1a,
+ 0x3a, 0x00, 0x8b, 0x4d, 0x58, 0x20, 0x00, 0x8b,
+ 0x4e, 0x1a, 0x3c, 0x00, 0x8b, 0x4f, 0x1a, 0x3b,
+ 0x00, 0x8b, 0x51, 0x49, 0x03, 0x00, 0x8b, 0x52,
+ 0x4d, 0x69, 0x00, 0x8b, 0x53, 0x21, 0xb0, 0x00,
+ 0x8b, 0x54, 0x3b, 0x2b, 0x00, 0x8b, 0x56, 0x1a,
+ 0x3e, 0x00, 0x8b, 0x58, 0x08, 0xdd, 0x00, 0x8b,
+ 0x59, 0x42, 0xe9, 0x00, 0x8b, 0x5a, 0x1a, 0x40,
+ 0x00, 0x8b, 0x5b, 0x1a, 0x3f, 0x00, 0x8b, 0x5c,
+ 0x0d, 0xda, 0x00, 0x8b, 0x5e, 0x49, 0x04, 0x00,
+ 0x8b, 0x5f, 0x1a, 0x42, 0x00, 0x8b, 0x63, 0x58,
+ 0x21, 0x00, 0x8b, 0x66, 0x07, 0x2f, 0x00, 0x8b,
+ 0x69, 0x42, 0xea, 0x00, 0x8b, 0x6b, 0x1a, 0x41,
+ 0x00, 0x8b, 0x6c, 0x1a, 0x43, 0x00, 0x8b, 0x6d,
+ 0x4d, 0x6a, 0x00, 0x8b, 0x6f, 0x1a, 0x44, 0x00,
+ 0x8b, 0x70, 0x06, 0x5e, 0x00, 0x8b, 0x71, 0x18,
+ 0x2e, 0x00, 0x8b, 0x72, 0x09, 0xe1, 0x00, 0x8b,
+ 0x74, 0x1a, 0x45, 0x00, 0x8b, 0x76, 0x49, 0x05,
+ 0x00, 0x8b, 0x77, 0x07, 0xa2, 0x00, 0x8b, 0x78,
+ 0x4d, 0x6b, 0x00, 0x8b, 0x79, 0x58, 0x22, 0x00,
+ 0x8b, 0x7c, 0x4d, 0x6c, 0x00, 0x8b, 0x7d, 0x1a,
+ 0x46, 0x00, 0x8b, 0x7e, 0x4d, 0x6d, 0x00, 0x8b,
+ 0x7f, 0x21, 0xb1, 0x00, 0x8b, 0x80, 0x1a, 0x47,
+ 0x00, 0x8b, 0x81, 0x49, 0x06, 0x00, 0x8b, 0x83,
+ 0x08, 0x8c, 0x00, 0x8b, 0x84, 0x58, 0x23, 0x00,
+ 0x8b, 0x85, 0x4d, 0x6e, 0x00, 0x8b, 0x8a, 0x13,
+ 0xd3, 0x00, 0x8b, 0x8b, 0x49, 0x07, 0x00, 0x8b,
+ 0x8c, 0x1a, 0x48, 0x00, 0x8b, 0x8d, 0x58, 0x24,
+ 0x00, 0x8b, 0x8e, 0x1a, 0x49, 0x00, 0x8b, 0x8f,
+ 0x58, 0x25, 0x00, 0x8b, 0x90, 0x09, 0x3c, 0x00,
+ 0x8b, 0x92, 0x1a, 0x4a, 0x00, 0x8b, 0x93, 0x1a,
+ 0x4b, 0x00, 0x8b, 0x94, 0x49, 0x08, 0x00, 0x8b,
+ 0x95, 0x49, 0x09, 0x00, 0x8b, 0x96, 0x1a, 0x4c,
+ 0x00, 0x8b, 0x99, 0x1a, 0x4d, 0x00, 0x8b, 0x9a,
+ 0x1a, 0x4e, 0x00, 0x8b, 0x9c, 0x3b, 0x2c, 0x00,
+ 0x8b, 0x9d, 0x42, 0xeb, 0x00, 0x8b, 0x9e, 0x3b,
+ 0x2d, 0x00, 0x8b, 0x9f, 0x4d, 0x6f, 0x00, 0x8c,
+ 0x37, 0x0b, 0x69, 0x00, 0x8c, 0x38, 0x58, 0x26,
+ 0x00, 0x8c, 0x39, 0x49, 0x0a, 0x00, 0x8c, 0x3a,
+ 0x1a, 0x4f, 0x00, 0x8c, 0x3d, 0x49, 0x0c, 0x00,
+ 0x8c, 0x3e, 0x58, 0x27, 0x00, 0x8c, 0x3f, 0x1a,
+ 0x51, 0x00, 0x8c, 0x41, 0x1a, 0x50, 0x00, 0x8c,
+ 0x45, 0x49, 0x0f, 0x00, 0x8c, 0x46, 0x0c, 0x7e,
+ 0x00, 0x8c, 0x47, 0x3b, 0x2e, 0x00, 0x8c, 0x48,
+ 0x1a, 0x52, 0x00, 0x8c, 0x49, 0x42, 0xec, 0x00,
+ 0x8c, 0x4a, 0x0e, 0x5b, 0x00, 0x8c, 0x4b, 0x4d,
+ 0x70, 0x00, 0x8c, 0x4c, 0x1a, 0x53, 0x00, 0x8c,
+ 0x4e, 0x1a, 0x54, 0x00, 0x8c, 0x4f, 0x49, 0x10,
+ 0x00, 0x8c, 0x50, 0x1a, 0x55, 0x00, 0x8c, 0x51,
+ 0x58, 0x28, 0x00, 0x8c, 0x53, 0x4d, 0x71, 0x00,
+ 0x8c, 0x54, 0x3b, 0x2f, 0x00, 0x8c, 0x55, 0x1a,
+ 0x56, 0x00, 0x8c, 0x57, 0x49, 0x11, 0x00, 0x8c,
+ 0x58, 0x58, 0x29, 0x00, 0x8c, 0x59, 0x58, 0x2c,
+ 0x00, 0x8c, 0x5a, 0x0c, 0xb2, 0x00, 0x8c, 0x5b,
+ 0x58, 0x2a, 0x00, 0x8c, 0x5d, 0x58, 0x2b, 0x00,
+ 0x8c, 0x61, 0x09, 0xc5, 0x00, 0x8c, 0x62, 0x1a,
+ 0x57, 0x00, 0x8c, 0x63, 0x58, 0x2d, 0x00, 0x8c,
+ 0x64, 0x58, 0x2e, 0x00, 0x8c, 0x66, 0x58, 0x2f,
+ 0x00, 0x8c, 0x68, 0x42, 0xed, 0x00, 0x8c, 0x69,
+ 0x49, 0x12, 0x00, 0x8c, 0x6a, 0x07, 0xfd, 0x00,
+ 0x8c, 0x6b, 0x10, 0x07, 0x00, 0x8c, 0x6c, 0x1a,
+ 0x58, 0x00, 0x8c, 0x6d, 0x49, 0x13, 0x00, 0x8c,
+ 0x73, 0x3b, 0x30, 0x00, 0x8c, 0x75, 0x58, 0x30,
+ 0x00, 0x8c, 0x76, 0x58, 0x31, 0x00, 0x8c, 0x78,
+ 0x1a, 0x59, 0x00, 0x8c, 0x79, 0x0d, 0xb1, 0x00,
+ 0x8c, 0x7a, 0x1a, 0x5a, 0x00, 0x8c, 0x7b, 0x4d,
+ 0x72, 0x00, 0x8c, 0x7c, 0x1a, 0x62, 0x00, 0x8c,
+ 0x7e, 0x58, 0x32, 0x00, 0x8c, 0x82, 0x1a, 0x5b,
+ 0x00, 0x8c, 0x85, 0x1a, 0x5d, 0x00, 0x8c, 0x86,
+ 0x58, 0x33, 0x00, 0x8c, 0x87, 0x58, 0x34, 0x00,
+ 0x8c, 0x89, 0x1a, 0x5c, 0x00, 0x8c, 0x8a, 0x1a,
+ 0x5e, 0x00, 0x8c, 0x8b, 0x58, 0x35, 0x00, 0x8c,
+ 0x8c, 0x0e, 0x74, 0x00, 0x8c, 0x8d, 0x1a, 0x5f,
+ 0x00, 0x8c, 0x8e, 0x1a, 0x60, 0x00, 0x8c, 0x90,
+ 0x58, 0x36, 0x00, 0x8c, 0x92, 0x49, 0x16, 0x00,
+ 0x8c, 0x93, 0x49, 0x15, 0x00, 0x8c, 0x94, 0x1a,
+ 0x61, 0x00, 0x8c, 0x98, 0x1a, 0x63, 0x00, 0x8c,
+ 0x99, 0x49, 0x17, 0x00, 0x8c, 0x9b, 0x49, 0x19,
+ 0x00, 0x8c, 0x9c, 0x58, 0x38, 0x00, 0x8c, 0x9d,
+ 0x05, 0x8b, 0x00, 0x8c, 0x9e, 0x0c, 0x03, 0x00,
+ 0x8c, 0x9f, 0x35, 0x4c, 0x00, 0x8c, 0xa0, 0x0d,
+ 0xdb, 0x00, 0x8c, 0xa1, 0x08, 0x52, 0x00, 0x8c,
+ 0xa2, 0x07, 0xe9, 0x00, 0x8c, 0xa4, 0x3b, 0x31,
+ 0x00, 0x8c, 0xa7, 0x0d, 0xc1, 0x00, 0x8c, 0xa8,
+ 0x05, 0x5f, 0x00, 0x8c, 0xa9, 0x0d, 0x62, 0x00,
+ 0x8c, 0xaa, 0x1a, 0x66, 0x00, 0x8c, 0xab, 0x06,
+ 0x0f, 0x00, 0x8c, 0xac, 0x0a, 0x79, 0x00, 0x8c,
+ 0xad, 0x1a, 0x65, 0x00, 0x8c, 0xae, 0x1a, 0x6a,
+ 0x00, 0x8c, 0xaf, 0x0b, 0xb7, 0x00, 0x8c, 0xb0,
+ 0x0e, 0xef, 0x00, 0x8c, 0xb2, 0x1a, 0x68, 0x00,
+ 0x8c, 0xb3, 0x1a, 0x69, 0x00, 0x8c, 0xb4, 0x06,
+ 0x48, 0x00, 0x8c, 0xb6, 0x1a, 0x6b, 0x00, 0x8c,
+ 0xb7, 0x0d, 0x19, 0x00, 0x8c, 0xb8, 0x0b, 0x3f,
+ 0x00, 0x8c, 0xb9, 0x58, 0x39, 0x00, 0x8c, 0xba,
+ 0x4d, 0x73, 0x00, 0x8c, 0xbb, 0x0d, 0x85, 0x00,
+ 0x8c, 0xbc, 0x0c, 0x37, 0x00, 0x8c, 0xbd, 0x1a,
+ 0x67, 0x00, 0x8c, 0xbf, 0x0e, 0x75, 0x00, 0x8c,
+ 0xc0, 0x05, 0x6c, 0x00, 0x8c, 0xc1, 0x1a, 0x6d,
+ 0x00, 0x8c, 0xc2, 0x0f, 0xce, 0x00, 0x8c, 0xc3,
+ 0x0b, 0xde, 0x00, 0x8c, 0xc4, 0x0f, 0xeb, 0x00,
+ 0x8c, 0xc5, 0x4d, 0x74, 0x00, 0x8c, 0xc6, 0x58,
+ 0x3a, 0x00, 0x8c, 0xc7, 0x08, 0xbf, 0x00, 0x8c,
+ 0xc8, 0x1a, 0x6c, 0x00, 0x8c, 0xc9, 0x4d, 0x75,
+ 0x00, 0x8c, 0xca, 0x0b, 0x11, 0x00, 0x8c, 0xcb,
+ 0x58, 0x3b, 0x00, 0x8c, 0xcd, 0x1a, 0x7d, 0x00,
+ 0x8c, 0xce, 0x0a, 0xaa, 0x00, 0x8c, 0xcf, 0x58,
+ 0x3c, 0x00, 0x8c, 0xd1, 0x0c, 0xd0, 0x00, 0x8c,
+ 0xd2, 0x4d, 0x76, 0x00, 0x8c, 0xd3, 0x34, 0x44,
+ 0x00, 0x8c, 0xd5, 0x49, 0x1b, 0x00, 0x8c, 0xd6,
+ 0x49, 0x1a, 0x00, 0x8c, 0xd9, 0x3b, 0x32, 0x00,
+ 0x8c, 0xda, 0x1a, 0x70, 0x00, 0x8c, 0xdb, 0x08,
+ 0x8d, 0x00, 0x8c, 0xdc, 0x08, 0xc0, 0x00, 0x8c,
+ 0xdd, 0x58, 0x3d, 0x00, 0x8c, 0xde, 0x09, 0xc6,
+ 0x00, 0x8c, 0xe0, 0x0d, 0x1b, 0x00, 0x8c, 0xe1,
+ 0x3b, 0x33, 0x00, 0x8c, 0xe2, 0x07, 0x61, 0x00,
+ 0x8c, 0xe3, 0x1a, 0x6f, 0x00, 0x8c, 0xe4, 0x1a,
+ 0x6e, 0x00, 0x8c, 0xe6, 0x0d, 0xdc, 0x00, 0x8c,
+ 0xe8, 0x58, 0x3e, 0x00, 0x8c, 0xea, 0x08, 0xed,
+ 0x00, 0x8c, 0xec, 0x4d, 0x77, 0x00, 0x8c, 0xed,
+ 0x0c, 0x4c, 0x00, 0x8c, 0xef, 0x58, 0x3f, 0x00,
+ 0x8c, 0xf0, 0x21, 0xb2, 0x00, 0x8c, 0xf1, 0x49,
+ 0x1d, 0x00, 0x8c, 0xf2, 0x58, 0x40, 0x00, 0x8c,
+ 0xf4, 0x21, 0xb3, 0x00, 0x8c, 0xf5, 0x4d, 0x78,
+ 0x00, 0x8c, 0xf7, 0x4d, 0x79, 0x00, 0x8c, 0xf8,
+ 0x3b, 0x34, 0x00, 0x8c, 0xfa, 0x1a, 0x72, 0x00,
+ 0x8c, 0xfb, 0x1a, 0x73, 0x00, 0x8c, 0xfc, 0x07,
+ 0xea, 0x00, 0x8c, 0xfd, 0x1a, 0x71, 0x00, 0x8c,
+ 0xfe, 0x3b, 0x35, 0x00, 0x8c, 0xff, 0x58, 0x41,
+ 0x00, 0x8d, 0x01, 0x4d, 0x7a, 0x00, 0x8d, 0x03,
+ 0x4d, 0x7b, 0x00, 0x8d, 0x04, 0x1a, 0x74, 0x00,
+ 0x8d, 0x05, 0x1a, 0x75, 0x00, 0x8d, 0x07, 0x1a,
+ 0x77, 0x00, 0x8d, 0x08, 0x0b, 0x03, 0x00, 0x8d,
+ 0x09, 0x49, 0x1f, 0x00, 0x8d, 0x0a, 0x1a, 0x76,
+ 0x00, 0x8d, 0x0b, 0x06, 0x22, 0x00, 0x8d, 0x0d,
+ 0x1a, 0x79, 0x00, 0x8d, 0x0e, 0x49, 0x20, 0x00,
+ 0x8d, 0x0f, 0x1a, 0x78, 0x00, 0x8d, 0x10, 0x1a,
+ 0x7a, 0x00, 0x8d, 0x12, 0x21, 0xb4, 0x00, 0x8d,
+ 0x13, 0x1a, 0x7c, 0x00, 0x8d, 0x14, 0x1a, 0x7e,
+ 0x00, 0x8d, 0x16, 0x1a, 0x7f, 0x00, 0x8d, 0x17,
+ 0x4d, 0x7c, 0x00, 0x8d, 0x1b, 0x3b, 0x36, 0x00,
+ 0x8d, 0x1c, 0x4d, 0x7d, 0x00, 0x8d, 0x64, 0x0a,
+ 0x7a, 0x00, 0x8d, 0x65, 0x58, 0x42, 0x00, 0x8d,
+ 0x66, 0x08, 0xfb, 0x00, 0x8d, 0x67, 0x1a, 0x80,
+ 0x00, 0x8d, 0x69, 0x3b, 0x37, 0x00, 0x8d, 0x6b,
+ 0x05, 0xb0, 0x00, 0x8d, 0x6c, 0x3b, 0x38, 0x00,
+ 0x8d, 0x6d, 0x1a, 0x81, 0x00, 0x8d, 0x6e, 0x4d,
+ 0x7e, 0x00, 0x8d, 0x70, 0x0a, 0xf8, 0x00, 0x8d,
+ 0x71, 0x1a, 0x82, 0x00, 0x8d, 0x73, 0x1a, 0x83,
+ 0x00, 0x8d, 0x74, 0x0d, 0xdd, 0x00, 0x8d, 0x76,
+ 0x21, 0xb5, 0x00, 0x8d, 0x77, 0x06, 0x49, 0x00,
+ 0x8d, 0x7f, 0x58, 0x43, 0x00, 0x8d, 0x81, 0x1a,
+ 0x84, 0x00, 0x8d, 0x82, 0x58, 0x44, 0x00, 0x8d,
+ 0x84, 0x3b, 0x39, 0x00, 0x8d, 0x85, 0x0b, 0xd2,
+ 0x00, 0x8d, 0x88, 0x58, 0x45, 0x00, 0x8d, 0x8a,
+ 0x04, 0xfd, 0x00, 0x8d, 0x8d, 0x3b, 0x3a, 0x00,
+ 0x8d, 0x90, 0x58, 0x46, 0x00, 0x8d, 0x91, 0x4d,
+ 0x7f, 0x00, 0x8d, 0x95, 0x3b, 0x3b, 0x00, 0x8d,
+ 0x99, 0x1a, 0x85, 0x00, 0x8d, 0x9e, 0x58, 0x47,
+ 0x00, 0x8d, 0x9f, 0x4d, 0x80, 0x00, 0x8d, 0xa0,
+ 0x58, 0x48, 0x00, 0x8d, 0xa3, 0x09, 0x1d, 0x00,
+ 0x8d, 0xa6, 0x3b, 0x3c, 0x00, 0x8d, 0xa8, 0x0a,
+ 0x3c, 0x00, 0x8d, 0xab, 0x4d, 0x81, 0x00, 0x8d,
+ 0xac, 0x58, 0x49, 0x00, 0x8d, 0xaf, 0x42, 0xee,
+ 0x00, 0x8d, 0xb2, 0x4d, 0x82, 0x00, 0x8d, 0xb3,
+ 0x0b, 0x0d, 0x00, 0x8d, 0xb5, 0x58, 0x4a, 0x00,
+ 0x8d, 0xb7, 0x58, 0x4b, 0x00, 0x8d, 0xb9, 0x58,
+ 0x4c, 0x00, 0x8d, 0xba, 0x1a, 0x88, 0x00, 0x8d,
+ 0xbb, 0x58, 0x4d, 0x00, 0x8d, 0xbc, 0x58, 0x55,
+ 0x00, 0x8d, 0xbe, 0x1a, 0x87, 0x00, 0x8d, 0xc0,
+ 0x58, 0x4e, 0x00, 0x8d, 0xc2, 0x1a, 0x86, 0x00,
+ 0x8d, 0xc5, 0x58, 0x4f, 0x00, 0x8d, 0xc6, 0x3b,
+ 0x3d, 0x00, 0x8d, 0xc7, 0x58, 0x50, 0x00, 0x8d,
+ 0xc8, 0x49, 0x21, 0x00, 0x8d, 0xca, 0x58, 0x51,
+ 0x00, 0x8d, 0xcb, 0x1a, 0x8e, 0x00, 0x8d, 0xcc,
+ 0x1a, 0x8c, 0x00, 0x8d, 0xce, 0x3b, 0x3e, 0x00,
+ 0x8d, 0xcf, 0x1a, 0x89, 0x00, 0x8d, 0xd1, 0x42,
+ 0xef, 0x00, 0x8d, 0xd4, 0x58, 0x52, 0x00, 0x8d,
+ 0xd5, 0x4d, 0x83, 0x00, 0x8d, 0xd6, 0x1a, 0x8b,
+ 0x00, 0x8d, 0xd7, 0x42, 0xf0, 0x00, 0x8d, 0xd9,
+ 0x49, 0x22, 0x00, 0x8d, 0xda, 0x1a, 0x8a, 0x00,
+ 0x8d, 0xdb, 0x1a, 0x8d, 0x00, 0x8d, 0xdd, 0x06,
+ 0x91, 0x00, 0x8d, 0xdf, 0x1a, 0x91, 0x00, 0x8d,
+ 0xe1, 0x0a, 0x7b, 0x00, 0x8d, 0xe3, 0x1a, 0x92,
+ 0x00, 0x8d, 0xe4, 0x3b, 0x3f, 0x00, 0x8d, 0xe5,
+ 0x58, 0x53, 0x00, 0x8d, 0xe7, 0x4d, 0x84, 0x00,
+ 0x8d, 0xe8, 0x07, 0x8d, 0x00, 0x8d, 0xea, 0x1a,
+ 0x8f, 0x00, 0x8d, 0xeb, 0x1a, 0x90, 0x00, 0x8d,
+ 0xec, 0x3b, 0x40, 0x00, 0x8d, 0xef, 0x0f, 0xcf,
+ 0x00, 0x8d, 0xf0, 0x58, 0x54, 0x00, 0x8d, 0xf1,
+ 0x4d, 0x85, 0x00, 0x8d, 0xf2, 0x4d, 0x86, 0x00,
+ 0x8d, 0xf3, 0x0b, 0xd3, 0x00, 0x8d, 0xf4, 0x4d,
+ 0x87, 0x00, 0x8d, 0xf5, 0x0a, 0xab, 0x00, 0x8d,
+ 0xfc, 0x1a, 0x93, 0x00, 0x8d, 0xfd, 0x49, 0x25,
+ 0x00, 0x8d, 0xff, 0x1a, 0x96, 0x00, 0x8e, 0x01,
+ 0x4d, 0x88, 0x00, 0x8e, 0x04, 0x58, 0x56, 0x00,
+ 0x8e, 0x05, 0x58, 0x57, 0x00, 0x8e, 0x06, 0x49,
+ 0x26, 0x00, 0x8e, 0x08, 0x1a, 0x94, 0x00, 0x8e,
+ 0x09, 0x1a, 0x95, 0x00, 0x8e, 0x0a, 0x0f, 0x43,
+ 0x00, 0x8e, 0x0b, 0x4d, 0x89, 0x00, 0x8e, 0x0c,
+ 0x49, 0x23, 0x00, 0x8e, 0x0f, 0x0c, 0x7f, 0x00,
+ 0x8e, 0x10, 0x1a, 0x99, 0x00, 0x8e, 0x11, 0x58,
+ 0x58, 0x00, 0x8e, 0x14, 0x49, 0x28, 0x00, 0x8e,
+ 0x16, 0x49, 0x29, 0x00, 0x8e, 0x1d, 0x1a, 0x97,
+ 0x00, 0x8e, 0x1e, 0x1a, 0x98, 0x00, 0x8e, 0x1f,
+ 0x1a, 0x9a, 0x00, 0x8e, 0x20, 0x3b, 0x41, 0x00,
+ 0x8e, 0x21, 0x49, 0x2a, 0x00, 0x8e, 0x22, 0x49,
+ 0x2b, 0x00, 0x8e, 0x23, 0x42, 0xf1, 0x00, 0x8e,
+ 0x26, 0x4d, 0x8a, 0x00, 0x8e, 0x27, 0x49, 0x2c,
+ 0x00, 0x8e, 0x2a, 0x1a, 0xa8, 0x00, 0x8e, 0x30,
+ 0x1a, 0x9d, 0x00, 0x8e, 0x31, 0x4d, 0x8b, 0x00,
+ 0x8e, 0x33, 0x58, 0x59, 0x00, 0x8e, 0x34, 0x1a,
+ 0x9e, 0x00, 0x8e, 0x35, 0x1a, 0x9c, 0x00, 0x8e,
+ 0x36, 0x49, 0x2f, 0x00, 0x8e, 0x37, 0x58, 0x5a,
+ 0x00, 0x8e, 0x38, 0x58, 0x5b, 0x00, 0x8e, 0x39,
+ 0x49, 0x30, 0x00, 0x8e, 0x3d, 0x42, 0xf2, 0x00,
+ 0x8e, 0x40, 0x4d, 0x8c, 0x00, 0x8e, 0x41, 0x4d,
+ 0x8d, 0x00, 0x8e, 0x42, 0x1a, 0x9b, 0x00, 0x8e,
+ 0x44, 0x0c, 0x19, 0x00, 0x8e, 0x47, 0x1a, 0xa0,
+ 0x00, 0x8e, 0x48, 0x1a, 0xa4, 0x00, 0x8e, 0x49,
+ 0x1a, 0xa1, 0x00, 0x8e, 0x4a, 0x1a, 0x9f, 0x00,
+ 0x8e, 0x4b, 0x3b, 0x42, 0x00, 0x8e, 0x4c, 0x1a,
+ 0xa2, 0x00, 0x8e, 0x4d, 0x4d, 0x8e, 0x00, 0x8e,
+ 0x4e, 0x58, 0x5c, 0x00, 0x8e, 0x4f, 0x4d, 0x8f,
+ 0x00, 0x8e, 0x50, 0x1a, 0xa3, 0x00, 0x8e, 0x54,
+ 0x49, 0x31, 0x00, 0x8e, 0x55, 0x1a, 0xaa, 0x00,
+ 0x8e, 0x59, 0x1a, 0xa5, 0x00, 0x8e, 0x5b, 0x58,
+ 0x5d, 0x00, 0x8e, 0x5c, 0x4d, 0x90, 0x00, 0x8e,
+ 0x5d, 0x58, 0x5e, 0x00, 0x8e, 0x5e, 0x58, 0x5f,
+ 0x00, 0x8e, 0x5f, 0x0a, 0x7c, 0x00, 0x8e, 0x60,
+ 0x1a, 0xa7, 0x00, 0x8e, 0x61, 0x4d, 0x91, 0x00,
+ 0x8e, 0x62, 0x49, 0x32, 0x00, 0x8e, 0x63, 0x1a,
+ 0xa9, 0x00, 0x8e, 0x64, 0x1a, 0xa6, 0x00, 0x8e,
+ 0x69, 0x4d, 0x92, 0x00, 0x8e, 0x6c, 0x3b, 0x43,
+ 0x00, 0x8e, 0x6d, 0x49, 0x33, 0x00, 0x8e, 0x6f,
+ 0x49, 0x34, 0x00, 0x8e, 0x70, 0x3b, 0x44, 0x00,
+ 0x8e, 0x71, 0x4d, 0x93, 0x00, 0x8e, 0x72, 0x1a,
+ 0xac, 0x00, 0x8e, 0x74, 0x09, 0x3d, 0x00, 0x8e,
+ 0x75, 0x4d, 0x94, 0x00, 0x8e, 0x76, 0x1a, 0xab,
+ 0x00, 0x8e, 0x77, 0x4d, 0x95, 0x00, 0x8e, 0x79,
+ 0x58, 0x60, 0x00, 0x8e, 0x7a, 0x3b, 0x45, 0x00,
+ 0x8e, 0x7b, 0x42, 0xf3, 0x00, 0x8e, 0x7c, 0x1a,
+ 0xad, 0x00, 0x8e, 0x81, 0x1a, 0xae, 0x00, 0x8e,
+ 0x82, 0x58, 0x61, 0x00, 0x8e, 0x83, 0x58, 0x62,
+ 0x00, 0x8e, 0x84, 0x1a, 0xb1, 0x00, 0x8e, 0x85,
+ 0x1a, 0xb0, 0x00, 0x8e, 0x87, 0x1a, 0xaf, 0x00,
+ 0x8e, 0x89, 0x4d, 0x96, 0x00, 0x8e, 0x8a, 0x1a,
+ 0xb3, 0x00, 0x8e, 0x8b, 0x1a, 0xb2, 0x00, 0x8e,
+ 0x8d, 0x0f, 0x02, 0x00, 0x8e, 0x90, 0x4d, 0x97,
+ 0x00, 0x8e, 0x91, 0x1a, 0xb5, 0x00, 0x8e, 0x92,
+ 0x3b, 0x46, 0x00, 0x8e, 0x93, 0x1a, 0xb4, 0x00,
+ 0x8e, 0x94, 0x1a, 0xb6, 0x00, 0x8e, 0x95, 0x4d,
+ 0x98, 0x00, 0x8e, 0x98, 0x49, 0x35, 0x00, 0x8e,
+ 0x99, 0x1a, 0xb7, 0x00, 0x8e, 0x9a, 0x4d, 0x99,
+ 0x00, 0x8e, 0x9b, 0x58, 0x63, 0x00, 0x8e, 0x9d,
+ 0x58, 0x64, 0x00, 0x8e, 0x9e, 0x49, 0x36, 0x00,
+ 0x8e, 0xa1, 0x1a, 0xb9, 0x00, 0x8e, 0xa2, 0x58,
+ 0x65, 0x00, 0x8e, 0xa7, 0x4d, 0x9a, 0x00, 0x8e,
+ 0xa9, 0x4d, 0x9b, 0x00, 0x8e, 0xaa, 0x1a, 0xb8,
+ 0x00, 0x8e, 0xab, 0x0a, 0x0e, 0x00, 0x8e, 0xac,
+ 0x1a, 0xba, 0x00, 0x8e, 0xad, 0x4d, 0x9c, 0x00,
+ 0x8e, 0xae, 0x3b, 0x47, 0x00, 0x8e, 0xaf, 0x06,
+ 0xe5, 0x00, 0x8e, 0xb0, 0x1a, 0xbb, 0x00, 0x8e,
+ 0xb1, 0x1a, 0xbd, 0x00, 0x8e, 0xb3, 0x3b, 0x48,
+ 0x00, 0x8e, 0xb5, 0x49, 0x37, 0x00, 0x8e, 0xb6,
+ 0x37, 0x03, 0x00, 0x8e, 0xba, 0x58, 0x66, 0x00,
+ 0x8e, 0xbb, 0x49, 0x38, 0x00, 0x8e, 0xbe, 0x1a,
+ 0xbe, 0x00, 0x8e, 0xc0, 0x1d, 0xef, 0x00, 0x8e,
+ 0xc1, 0x58, 0x67, 0x00, 0x8e, 0xc3, 0x58, 0x68,
+ 0x00, 0x8e, 0xc4, 0x58, 0x69, 0x00, 0x8e, 0xc5,
+ 0x1a, 0xbf, 0x00, 0x8e, 0xc6, 0x1a, 0xbc, 0x00,
+ 0x8e, 0xc7, 0x58, 0x6a, 0x00, 0x8e, 0xc8, 0x1a,
+ 0xc0, 0x00, 0x8e, 0xca, 0x09, 0x02, 0x00, 0x8e,
+ 0xcb, 0x1a, 0xc1, 0x00, 0x8e, 0xcc, 0x06, 0x4a,
+ 0x00, 0x8e, 0xcd, 0x07, 0x09, 0x00, 0x8e, 0xcf,
+ 0x21, 0xb7, 0x00, 0x8e, 0xd1, 0x3b, 0x49, 0x00,
+ 0x8e, 0xd2, 0x07, 0x62, 0x00, 0x8e, 0xd4, 0x4e,
+ 0x62, 0x00, 0x8e, 0xdb, 0x1a, 0xc2, 0x00, 0x8e,
+ 0xdc, 0x58, 0x6b, 0x00, 0x8e, 0xdf, 0x0c, 0xc8,
+ 0x00, 0x8e, 0xe2, 0x0c, 0x38, 0x00, 0x8e, 0xe3,
+ 0x1a, 0xc3, 0x00, 0x8e, 0xe8, 0x4d, 0x9d, 0x00,
+ 0x8e, 0xeb, 0x1a, 0xc6, 0x00, 0x8e, 0xed, 0x58,
+ 0x6f, 0x00, 0x8e, 0xee, 0x58, 0x6c, 0x00, 0x8e,
+ 0xf0, 0x4d, 0x9e, 0x00, 0x8e, 0xf1, 0x58, 0x6d,
+ 0x00, 0x8e, 0xf7, 0x58, 0x6e, 0x00, 0x8e, 0xf8,
+ 0x08, 0xe0, 0x00, 0x8e, 0xf9, 0x3b, 0x4b, 0x00,
+ 0x8e, 0xfa, 0x42, 0xf6, 0x00, 0x8e, 0xfb, 0x1a,
+ 0xc5, 0x00, 0x8e, 0xfc, 0x1a, 0xc4, 0x00, 0x8e,
+ 0xfd, 0x07, 0x30, 0x00, 0x8e, 0xfe, 0x1a, 0xc7,
+ 0x00, 0x8f, 0x00, 0x49, 0x3c, 0x00, 0x8f, 0x02,
+ 0x58, 0x70, 0x00, 0x8f, 0x03, 0x05, 0xb1, 0x00,
+ 0x8f, 0x05, 0x1a, 0xc9, 0x00, 0x8f, 0x07, 0x4d,
+ 0x9f, 0x00, 0x8f, 0x08, 0x49, 0x3d, 0x00, 0x8f,
+ 0x09, 0x08, 0x4c, 0x00, 0x8f, 0x0a, 0x1a, 0xc8,
+ 0x00, 0x8f, 0x0c, 0x1a, 0xd1, 0x00, 0x8f, 0x0f,
+ 0x58, 0x71, 0x00, 0x8f, 0x10, 0x58, 0x72, 0x00,
+ 0x8f, 0x12, 0x1a, 0xcb, 0x00, 0x8f, 0x13, 0x1a,
+ 0xcd, 0x00, 0x8f, 0x14, 0x0e, 0x35, 0x00, 0x8f,
+ 0x15, 0x1a, 0xca, 0x00, 0x8f, 0x16, 0x58, 0x73,
+ 0x00, 0x8f, 0x17, 0x3b, 0x4c, 0x00, 0x8f, 0x18,
+ 0x4d, 0xa0, 0x00, 0x8f, 0x19, 0x1a, 0xcc, 0x00,
+ 0x8f, 0x1b, 0x1a, 0xd0, 0x00, 0x8f, 0x1c, 0x1a,
+ 0xce, 0x00, 0x8f, 0x1d, 0x06, 0x4b, 0x00, 0x8f,
+ 0x1e, 0x42, 0xf7, 0x00, 0x8f, 0x1f, 0x1a, 0xcf,
+ 0x00, 0x8f, 0x20, 0x58, 0x74, 0x00, 0x8f, 0x21,
+ 0x58, 0x75, 0x00, 0x8f, 0x23, 0x58, 0x76, 0x00,
+ 0x8f, 0x25, 0x4d, 0xa1, 0x00, 0x8f, 0x26, 0x1a,
+ 0xd2, 0x00, 0x8f, 0x27, 0x4d, 0xa2, 0x00, 0x8f,
+ 0x28, 0x58, 0x77, 0x00, 0x8f, 0x29, 0x0d, 0x10,
+ 0x00, 0x8f, 0x2a, 0x0f, 0xa0, 0x00, 0x8f, 0x2b,
+ 0x49, 0x3e, 0x00, 0x8f, 0x2c, 0x4d, 0xa3, 0x00,
+ 0x8f, 0x2d, 0x42, 0xf8, 0x00, 0x8f, 0x2e, 0x58,
+ 0x78, 0x00, 0x8f, 0x2f, 0x09, 0x3e, 0x00, 0x8f,
+ 0x33, 0x1a, 0xd3, 0x00, 0x8f, 0x34, 0x58, 0x79,
+ 0x00, 0x8f, 0x35, 0x4d, 0xa4, 0x00, 0x8f, 0x36,
+ 0x3b, 0x4d, 0x00, 0x8f, 0x37, 0x58, 0x7a, 0x00,
+ 0x8f, 0x38, 0x0f, 0x0c, 0x00, 0x8f, 0x39, 0x1a,
+ 0xd5, 0x00, 0x8f, 0x3a, 0x4d, 0xa5, 0x00, 0x8f,
+ 0x3b, 0x1a, 0xd4, 0x00, 0x8f, 0x3e, 0x1a, 0xd8,
+ 0x00, 0x8f, 0x3f, 0x0f, 0x2b, 0x00, 0x8f, 0x40,
+ 0x49, 0x3f, 0x00, 0x8f, 0x41, 0x58, 0x7b, 0x00,
+ 0x8f, 0x42, 0x1a, 0xd7, 0x00, 0x8f, 0x43, 0x4d,
+ 0xa6, 0x00, 0x8f, 0x44, 0x05, 0xcb, 0x00, 0x8f,
+ 0x45, 0x1a, 0xd6, 0x00, 0x8f, 0x46, 0x1a, 0xdb,
+ 0x00, 0x8f, 0x47, 0x4d, 0xa7, 0x00, 0x8f, 0x49,
+ 0x1a, 0xda, 0x00, 0x8f, 0x4a, 0x49, 0x40, 0x00,
+ 0x8f, 0x4c, 0x1a, 0xd9, 0x00, 0x8f, 0x4d, 0x0c,
+ 0x2c, 0x00, 0x8f, 0x4e, 0x1a, 0xdc, 0x00, 0x8f,
+ 0x4f, 0x58, 0x7c, 0x00, 0x8f, 0x51, 0x4d, 0xa8,
+ 0x00, 0x8f, 0x52, 0x58, 0x7d, 0x00, 0x8f, 0x53,
+ 0x58, 0x7e, 0x00, 0x8f, 0x54, 0x42, 0xf9, 0x00,
+ 0x8f, 0x55, 0x4d, 0xa9, 0x00, 0x8f, 0x57, 0x1a,
+ 0xdd, 0x00, 0x8f, 0x58, 0x49, 0x41, 0x00, 0x8f,
+ 0x5c, 0x1a, 0xde, 0x00, 0x8f, 0x5d, 0x58, 0x7f,
+ 0x00, 0x8f, 0x5e, 0x58, 0x80, 0x00, 0x8f, 0x5f,
+ 0x07, 0xfe, 0x00, 0x8f, 0x61, 0x06, 0xfb, 0x00,
+ 0x8f, 0x62, 0x1a, 0xdf, 0x00, 0x8f, 0x63, 0x1a,
+ 0xe0, 0x00, 0x8f, 0x64, 0x1a, 0xe1, 0x00, 0x8f,
+ 0x65, 0x58, 0x81, 0x00, 0x8f, 0x9b, 0x0a, 0x0f,
+ 0x00, 0x8f, 0x9c, 0x1a, 0xe2, 0x00, 0x8f, 0x9d,
+ 0x58, 0x82, 0x00, 0x8f, 0x9e, 0x08, 0xd9, 0x00,
+ 0x8f, 0x9f, 0x1a, 0xe3, 0x00, 0x8f, 0xa0, 0x4d,
+ 0xaa, 0x00, 0x8f, 0xa1, 0x4d, 0xab, 0x00, 0x8f,
+ 0xa2, 0x4d, 0xac, 0x00, 0x8f, 0xa3, 0x1a, 0xe4,
+ 0x00, 0x8f, 0xa4, 0x49, 0x43, 0x00, 0x8f, 0xa5,
+ 0x4d, 0xad, 0x00, 0x8f, 0xa6, 0x3b, 0x4e, 0x00,
+ 0x8f, 0xa7, 0x10, 0xb6, 0x00, 0x8f, 0xa8, 0x10,
+ 0xb5, 0x00, 0x8f, 0xad, 0x1a, 0xe5, 0x00, 0x8f,
+ 0xae, 0x17, 0xff, 0x00, 0x8f, 0xaf, 0x1a, 0xe6,
+ 0x00, 0x8f, 0xb0, 0x0b, 0x62, 0x00, 0x8f, 0xb1,
+ 0x09, 0xf1, 0x00, 0x8f, 0xb2, 0x0c, 0xf6, 0x00,
+ 0x8f, 0xb4, 0x49, 0x44, 0x00, 0x8f, 0xb5, 0x3b,
+ 0x4f, 0x00, 0x8f, 0xb6, 0x3b, 0x50, 0x00, 0x8f,
+ 0xb7, 0x1a, 0xe7, 0x00, 0x8f, 0xb8, 0x58, 0x83,
+ 0x00, 0x8f, 0xba, 0x0e, 0x25, 0x00, 0x8f, 0xbb,
+ 0x0b, 0xf0, 0x00, 0x8f, 0xbc, 0x08, 0x10, 0x00,
+ 0x8f, 0xbe, 0x58, 0x84, 0x00, 0x8f, 0xbf, 0x0b,
+ 0x67, 0x00, 0x8f, 0xc0, 0x58, 0x85, 0x00, 0x8f,
+ 0xc1, 0x49, 0x46, 0x00, 0x8f, 0xc2, 0x04, 0xcc,
+ 0x00, 0x8f, 0xc4, 0x0e, 0xa6, 0x00, 0x8f, 0xc5,
+ 0x0a, 0x1d, 0x00, 0x8f, 0xc6, 0x49, 0x47, 0x00,
+ 0x8f, 0xc8, 0x37, 0x99, 0x00, 0x8f, 0xca, 0x49,
+ 0x49, 0x00, 0x8f, 0xcb, 0x58, 0x86, 0x00, 0x8f,
+ 0xcd, 0x49, 0x4a, 0x00, 0x8f, 0xce, 0x07, 0x34,
+ 0x00, 0x8f, 0xd0, 0x58, 0x87, 0x00, 0x8f, 0xd1,
+ 0x06, 0xd9, 0x00, 0x8f, 0xd2, 0x58, 0x88, 0x00,
+ 0x8f, 0xd3, 0x49, 0x4b, 0x00, 0x8f, 0xd4, 0x0e,
+ 0x26, 0x00, 0x8f, 0xd5, 0x49, 0x4c, 0x00, 0x8f,
+ 0xda, 0x1a, 0xe8, 0x00, 0x8f, 0xe0, 0x3b, 0x52,
+ 0x00, 0x8f, 0xe2, 0x1a, 0xea, 0x00, 0x8f, 0xe3,
+ 0x58, 0x89, 0x00, 0x8f, 0xe4, 0x3b, 0x53, 0x00,
+ 0x8f, 0xe5, 0x1a, 0xe9, 0x00, 0x8f, 0xe6, 0x05,
+ 0x60, 0x00, 0x8f, 0xe8, 0x42, 0xfb, 0x00, 0x8f,
+ 0xe9, 0x0c, 0xce, 0x00, 0x8f, 0xea, 0x1a, 0xeb,
+ 0x00, 0x8f, 0xeb, 0x0d, 0x2d, 0x00, 0x8f, 0xed,
+ 0x0c, 0x2d, 0x00, 0x8f, 0xee, 0x42, 0xfc, 0x00,
+ 0x8f, 0xef, 0x1a, 0xec, 0x00, 0x8f, 0xf0, 0x09,
+ 0x5c, 0x00, 0x8f, 0xf1, 0x49, 0x4d, 0x00, 0x8f,
+ 0xf4, 0x1a, 0xee, 0x00, 0x8f, 0xf5, 0x49, 0x4e,
+ 0x00, 0x8f, 0xf6, 0x3b, 0x54, 0x00, 0x8f, 0xf7,
+ 0x0e, 0xce, 0x00, 0x8f, 0xf8, 0x1a, 0xfd, 0x00,
+ 0x8f, 0xf9, 0x1a, 0xf0, 0x00, 0x8f, 0xfa, 0x1a,
+ 0xf1, 0x00, 0x8f, 0xfb, 0x49, 0x4f, 0x00, 0x8f,
+ 0xfd, 0x0b, 0xe5, 0x00, 0x8f, 0xfe, 0x58, 0x8a,
+ 0x00, 0x90, 0x00, 0x0b, 0x40, 0x00, 0x90, 0x01,
+ 0x0a, 0xf9, 0x00, 0x90, 0x02, 0x3b, 0x55, 0x00,
+ 0x90, 0x03, 0x0c, 0x80, 0x00, 0x90, 0x04, 0x4d,
+ 0xae, 0x00, 0x90, 0x05, 0x1a, 0xef, 0x00, 0x90,
+ 0x06, 0x06, 0x6f, 0x00, 0x90, 0x08, 0x42, 0xfd,
+ 0x00, 0x90, 0x0b, 0x1a, 0xf8, 0x00, 0x90, 0x0c,
+ 0x49, 0x50, 0x00, 0x90, 0x0d, 0x1a, 0xf5, 0x00,
+ 0x90, 0x0e, 0x1b, 0x02, 0x00, 0x90, 0x0f, 0x0c,
+ 0x81, 0x00, 0x90, 0x10, 0x0b, 0x9e, 0x00, 0x90,
+ 0x11, 0x1a, 0xf2, 0x00, 0x90, 0x13, 0x0c, 0x1a,
+ 0x00, 0x90, 0x14, 0x0c, 0x4d, 0x00, 0x90, 0x15,
+ 0x1a, 0xf3, 0x00, 0x90, 0x16, 0x1a, 0xf7, 0x00,
+ 0x90, 0x17, 0x0a, 0x26, 0x00, 0x90, 0x18, 0x58,
+ 0x8b, 0x00, 0x90, 0x19, 0x0d, 0x1d, 0x00, 0x90,
+ 0x1a, 0x0b, 0xe8, 0x00, 0x90, 0x1b, 0x4d, 0xaf,
+ 0x00, 0x90, 0x1d, 0x0a, 0x66, 0x00, 0x90, 0x1e,
+ 0x1a, 0xf6, 0x00, 0x90, 0x1f, 0x0b, 0x0e, 0x00,
+ 0x90, 0x20, 0x0b, 0x04, 0x00, 0x90, 0x21, 0x1a,
+ 0xf4, 0x00, 0x90, 0x22, 0x04, 0x6d, 0x00, 0x90,
+ 0x23, 0x37, 0x11, 0x00, 0x90, 0x27, 0x1a, 0xf9,
+ 0x00, 0x90, 0x28, 0x58, 0x8c, 0x00, 0x90, 0x29,
+ 0x58, 0x8d, 0x00, 0x90, 0x2a, 0x58, 0x8e, 0x00,
+ 0x90, 0x2c, 0x3b, 0x56, 0x00, 0x90, 0x2d, 0x42,
+ 0xfe, 0x00, 0x90, 0x2e, 0x0b, 0x41, 0x00, 0x90,
+ 0x2f, 0x4d, 0xb0, 0x00, 0x90, 0x31, 0x09, 0x3f,
+ 0x00, 0x90, 0x32, 0x0a, 0x10, 0x00, 0x90, 0x33,
+ 0x58, 0x8f, 0x00, 0x90, 0x34, 0x58, 0x90, 0x00,
+ 0x90, 0x35, 0x1a, 0xfb, 0x00, 0x90, 0x36, 0x1a,
+ 0xfa, 0x00, 0x90, 0x37, 0x49, 0x51, 0x00, 0x90,
+ 0x38, 0x04, 0xb3, 0x00, 0x90, 0x39, 0x1a, 0xfc,
+ 0x00, 0x90, 0x3c, 0x0d, 0xa1, 0x00, 0x90, 0x3e,
+ 0x1b, 0x04, 0x00, 0x90, 0x3f, 0x58, 0x91, 0x00,
+ 0x90, 0x41, 0x0c, 0xb3, 0x00, 0x90, 0x42, 0x0a,
+ 0x31, 0x00, 0x90, 0x43, 0x49, 0x53, 0x00, 0x90,
+ 0x44, 0x3b, 0x57, 0x00, 0x90, 0x45, 0x0b, 0x97,
+ 0x00, 0x90, 0x47, 0x06, 0xf0, 0x00, 0x90, 0x49,
+ 0x1b, 0x03, 0x00, 0x90, 0x4a, 0x0f, 0x21, 0x00,
+ 0x90, 0x4b, 0x04, 0xe1, 0x00, 0x90, 0x4c, 0x4d,
+ 0xb1, 0x00, 0x90, 0x4d, 0x0e, 0x27, 0x00, 0x90,
+ 0x4e, 0x05, 0x61, 0x00, 0x90, 0x4f, 0x1a, 0xfe,
+ 0x00, 0x90, 0x50, 0x1a, 0xff, 0x00, 0x90, 0x51,
+ 0x1b, 0x00, 0x00, 0x90, 0x52, 0x1b, 0x01, 0x00,
+ 0x90, 0x53, 0x0c, 0x93, 0x00, 0x90, 0x54, 0x0b,
+ 0x61, 0x00, 0x90, 0x55, 0x04, 0xa7, 0x00, 0x90,
+ 0x56, 0x1b, 0x05, 0x00, 0x90, 0x58, 0x1b, 0x06,
+ 0x00, 0x90, 0x59, 0x1d, 0x34, 0x00, 0x90, 0x5b,
+ 0x4d, 0xb2, 0x00, 0x90, 0x5c, 0x0b, 0x1d, 0x00,
+ 0x90, 0x5d, 0x49, 0x54, 0x00, 0x90, 0x5e, 0x1b,
+ 0x07, 0x00, 0x90, 0x60, 0x05, 0x15, 0x00, 0x90,
+ 0x61, 0x0a, 0xce, 0x00, 0x90, 0x62, 0x58, 0x92,
+ 0x00, 0x90, 0x63, 0x07, 0x63, 0x00, 0x90, 0x65,
+ 0x0f, 0x44, 0x00, 0x90, 0x66, 0x58, 0x93, 0x00,
+ 0x90, 0x67, 0x21, 0xba, 0x00, 0x90, 0x68, 0x1b,
+ 0x08, 0x00, 0x90, 0x69, 0x0c, 0x26, 0x00, 0x90,
+ 0x6c, 0x58, 0x94, 0x00, 0x90, 0x6d, 0x0a, 0xfa,
+ 0x00, 0x90, 0x6e, 0x09, 0x03, 0x00, 0x90, 0x6f,
+ 0x1b, 0x09, 0x00, 0x90, 0x70, 0x4d, 0xb3, 0x00,
+ 0x90, 0x72, 0x1b, 0x0c, 0x00, 0x90, 0x74, 0x4d,
+ 0xb4, 0x00, 0x90, 0x75, 0x09, 0x6f, 0x00, 0x90,
+ 0x76, 0x1b, 0x0a, 0x00, 0x90, 0x77, 0x0a, 0xad,
+ 0x00, 0x90, 0x78, 0x0a, 0xac, 0x00, 0x90, 0x79,
+ 0x4d, 0xb5, 0x00, 0x90, 0x7a, 0x04, 0xa8, 0x00,
+ 0x90, 0x7c, 0x0f, 0x93, 0x00, 0x90, 0x7d, 0x1b,
+ 0x0e, 0x00, 0x90, 0x7f, 0x0d, 0x86, 0x00, 0x90,
+ 0x80, 0x1b, 0x10, 0x00, 0x90, 0x81, 0x1b, 0x0f,
+ 0x00, 0x90, 0x82, 0x1b, 0x0d, 0x00, 0x90, 0x83,
+ 0x17, 0x37, 0x00, 0x90, 0x84, 0x06, 0x10, 0x00,
+ 0x90, 0x85, 0x49, 0x57, 0x00, 0x90, 0x87, 0x1a,
+ 0xed, 0x00, 0x90, 0x88, 0x3b, 0x58, 0x00, 0x90,
+ 0x89, 0x1b, 0x12, 0x00, 0x90, 0x8a, 0x1b, 0x11,
+ 0x00, 0x90, 0x8b, 0x4d, 0xb6, 0x00, 0x90, 0x8c,
+ 0x49, 0x58, 0x00, 0x90, 0x8e, 0x58, 0x95, 0x00,
+ 0x90, 0x8f, 0x1b, 0x13, 0x00, 0x90, 0x90, 0x49,
+ 0x59, 0x00, 0x90, 0x91, 0x0f, 0x22, 0x00, 0x90,
+ 0x95, 0x3b, 0x59, 0x00, 0x90, 0x97, 0x42, 0xff,
+ 0x00, 0x90, 0x98, 0x4d, 0xb7, 0x00, 0x90, 0x99,
+ 0x3b, 0x5a, 0x00, 0x90, 0x9b, 0x3b, 0x5b, 0x00,
+ 0x90, 0xa0, 0x4d, 0xb8, 0x00, 0x90, 0xa1, 0x49,
+ 0x5a, 0x00, 0x90, 0xa2, 0x3b, 0x5c, 0x00, 0x90,
+ 0xa3, 0x0c, 0xb9, 0x00, 0x90, 0xa5, 0x58, 0x96,
+ 0x00, 0x90, 0xa6, 0x0e, 0x5c, 0x00, 0x90, 0xa8,
+ 0x1b, 0x14, 0x00, 0x90, 0xaa, 0x09, 0x05, 0x00,
+ 0x90, 0xaf, 0x1b, 0x15, 0x00, 0x90, 0xb0, 0x49,
+ 0x5c, 0x00, 0x90, 0xb1, 0x1b, 0x16, 0x00, 0x90,
+ 0xb2, 0x4d, 0xb9, 0x00, 0x90, 0xb3, 0x43, 0x00,
+ 0x00, 0x90, 0xb4, 0x3b, 0x5d, 0x00, 0x90, 0xb5,
+ 0x1b, 0x17, 0x00, 0x90, 0xb6, 0x49, 0x5d, 0x00,
+ 0x90, 0xb8, 0x0c, 0x1b, 0x00, 0x90, 0xbd, 0x4d,
+ 0xba, 0x00, 0x90, 0xbe, 0x43, 0x01, 0x00, 0x90,
+ 0xc1, 0x04, 0xae, 0x00, 0x90, 0xc3, 0x49, 0x5e,
+ 0x00, 0x90, 0xc4, 0x43, 0x02, 0x00, 0x90, 0xc5,
+ 0x43, 0x03, 0x00, 0x90, 0xc7, 0x43, 0x04, 0x00,
+ 0x90, 0xc8, 0x49, 0x5f, 0x00, 0x90, 0xc9, 0x4d,
+ 0xbb, 0x00, 0x90, 0xca, 0x07, 0xeb, 0x00, 0x90,
+ 0xcc, 0x58, 0x97, 0x00, 0x90, 0xce, 0x0f, 0xe0,
+ 0x00, 0x90, 0xd2, 0x58, 0x9c, 0x00, 0x90, 0xd5,
+ 0x58, 0x98, 0x00, 0x90, 0xd7, 0x3b, 0x5e, 0x00,
+ 0x90, 0xd8, 0x58, 0x99, 0x00, 0x90, 0xd9, 0x58,
+ 0x9a, 0x00, 0x90, 0xdb, 0x1b, 0x1b, 0x00, 0x90,
+ 0xdc, 0x49, 0x61, 0x00, 0x90, 0xdd, 0x3b, 0x5f,
+ 0x00, 0x90, 0xde, 0x21, 0xbb, 0x00, 0x90, 0xdf,
+ 0x49, 0x62, 0x00, 0x90, 0xe1, 0x07, 0x0a, 0x00,
+ 0x90, 0xe2, 0x1b, 0x18, 0x00, 0x90, 0xe4, 0x1b,
+ 0x19, 0x00, 0x90, 0xe5, 0x58, 0x9b, 0x00, 0x90,
+ 0xe8, 0x0d, 0xe6, 0x00, 0x90, 0xeb, 0x49, 0x67,
+ 0x00, 0x90, 0xed, 0x05, 0xb2, 0x00, 0x90, 0xef,
+ 0x43, 0x05, 0x00, 0x90, 0xf0, 0x4d, 0xbc, 0x00,
+ 0x90, 0xf2, 0x49, 0x65, 0x00, 0x90, 0xf4, 0x3b,
+ 0x60, 0x00, 0x90, 0xf5, 0x0f, 0x23, 0x00, 0x90,
+ 0xf6, 0x49, 0x64, 0x00, 0x90, 0xf7, 0x06, 0xb7,
+ 0x00, 0x90, 0xfd, 0x21, 0xbc, 0x00, 0x90, 0xfe,
+ 0x49, 0x68, 0x00, 0x90, 0xff, 0x49, 0x69, 0x00,
+ 0x91, 0x00, 0x49, 0x66, 0x00, 0x91, 0x02, 0x1b,
+ 0x1c, 0x00, 0x91, 0x04, 0x49, 0x6a, 0x00, 0x91,
+ 0x05, 0x4d, 0xbd, 0x00, 0x91, 0x06, 0x49, 0x6b,
+ 0x00, 0x91, 0x08, 0x58, 0x9d, 0x00, 0x91, 0x0d,
+ 0x58, 0x9e, 0x00, 0x91, 0x10, 0x58, 0x9f, 0x00,
+ 0x91, 0x12, 0x1b, 0x1d, 0x00, 0x91, 0x14, 0x43,
+ 0x06, 0x00, 0x91, 0x15, 0x21, 0xbd, 0x00, 0x91,
+ 0x16, 0x43, 0x07, 0x00, 0x91, 0x17, 0x3b, 0x61,
+ 0x00, 0x91, 0x18, 0x49, 0x6c, 0x00, 0x91, 0x19,
+ 0x1b, 0x1e, 0x00, 0x91, 0x1a, 0x58, 0xa0, 0x00,
+ 0x91, 0x1c, 0x3b, 0x62, 0x00, 0x91, 0x1e, 0x49,
+ 0x6d, 0x00, 0x91, 0x20, 0x58, 0xa1, 0x00, 0x91,
+ 0x22, 0x43, 0x08, 0x00, 0x91, 0x23, 0x43, 0x09,
+ 0x00, 0x91, 0x25, 0x4d, 0xbe, 0x00, 0x91, 0x27,
+ 0x21, 0xbe, 0x00, 0x91, 0x29, 0x58, 0xa2, 0x00,
+ 0x91, 0x2d, 0x0c, 0x1c, 0x00, 0x91, 0x2e, 0x58,
+ 0xa3, 0x00, 0x91, 0x2f, 0x43, 0x0a, 0x00, 0x91,
+ 0x30, 0x1b, 0x20, 0x00, 0x91, 0x31, 0x3b, 0x63,
+ 0x00, 0x91, 0x32, 0x1b, 0x1f, 0x00, 0x91, 0x34,
+ 0x43, 0x0b, 0x00, 0x91, 0x36, 0x58, 0xa4, 0x00,
+ 0x91, 0x37, 0x49, 0x6e, 0x00, 0x91, 0x39, 0x49,
+ 0x6f, 0x00, 0x91, 0x3a, 0x3b, 0x64, 0x00, 0x91,
+ 0x3c, 0x58, 0xa5, 0x00, 0x91, 0x3d, 0x3b, 0x65,
+ 0x00, 0x91, 0x43, 0x58, 0xa6, 0x00, 0x91, 0x46,
+ 0x49, 0x70, 0x00, 0x91, 0x47, 0x49, 0x71, 0x00,
+ 0x91, 0x48, 0x3b, 0x66, 0x00, 0x91, 0x49, 0x0c,
+ 0xab, 0x00, 0x91, 0x4a, 0x1b, 0x21, 0x00, 0x91,
+ 0x4b, 0x09, 0x40, 0x00, 0x91, 0x4c, 0x09, 0x0c,
+ 0x00, 0x91, 0x4d, 0x0d, 0x11, 0x00, 0x91, 0x4e,
+ 0x0b, 0xaf, 0x00, 0x91, 0x4f, 0x58, 0xa7, 0x00,
+ 0x91, 0x52, 0x09, 0x1e, 0x00, 0x91, 0x53, 0x58,
+ 0xa8, 0x00, 0x91, 0x54, 0x0a, 0x32, 0x00, 0x91,
+ 0x56, 0x1b, 0x22, 0x00, 0x91, 0x57, 0x49, 0x72,
+ 0x00, 0x91, 0x58, 0x1b, 0x23, 0x00, 0x91, 0x59,
+ 0x49, 0x73, 0x00, 0x91, 0x5a, 0x4d, 0xbf, 0x00,
+ 0x91, 0x5b, 0x3b, 0x67, 0x00, 0x91, 0x61, 0x3b,
+ 0x68, 0x00, 0x91, 0x62, 0x0a, 0x23, 0x00, 0x91,
+ 0x63, 0x1b, 0x24, 0x00, 0x91, 0x64, 0x3b, 0x69,
+ 0x00, 0x91, 0x65, 0x1b, 0x25, 0x00, 0x91, 0x67,
+ 0x4d, 0xc0, 0x00, 0x91, 0x69, 0x1b, 0x26, 0x00,
+ 0x91, 0x6a, 0x0f, 0x59, 0x00, 0x91, 0x6c, 0x09,
+ 0x41, 0x00, 0x91, 0x6d, 0x58, 0xa9, 0x00, 0x91,
+ 0x72, 0x1b, 0x28, 0x00, 0x91, 0x73, 0x1b, 0x27,
+ 0x00, 0x91, 0x74, 0x49, 0x74, 0x00, 0x91, 0x75,
+ 0x07, 0xec, 0x00, 0x91, 0x77, 0x08, 0x05, 0x00,
+ 0x91, 0x78, 0x08, 0x8e, 0x00, 0x91, 0x79, 0x49,
+ 0x75, 0x00, 0x91, 0x7a, 0x4d, 0xc1, 0x00, 0x91,
+ 0x7b, 0x58, 0xaa, 0x00, 0x91, 0x81, 0x58, 0xab,
+ 0x00, 0x91, 0x82, 0x1b, 0x2b, 0x00, 0x91, 0x83,
+ 0x43, 0x0c, 0x00, 0x91, 0x85, 0x49, 0x76, 0x00,
+ 0x91, 0x86, 0x58, 0xac, 0x00, 0x91, 0x87, 0x09,
+ 0x70, 0x00, 0x91, 0x89, 0x1b, 0x2a, 0x00, 0x91,
+ 0x8a, 0x4d, 0xc2, 0x00, 0x91, 0x8b, 0x1b, 0x29,
+ 0x00, 0x91, 0x8d, 0x0b, 0x49, 0x00, 0x91, 0x8e,
+ 0x3b, 0x6a, 0x00, 0x91, 0x90, 0x07, 0xa3, 0x00,
+ 0x91, 0x91, 0x4d, 0xc3, 0x00, 0x91, 0x92, 0x0a,
+ 0x67, 0x00, 0x91, 0x93, 0x58, 0xad, 0x00, 0x91,
+ 0x94, 0x58, 0xae, 0x00, 0x91, 0x95, 0x4d, 0xc4,
+ 0x00, 0x91, 0x97, 0x0d, 0x44, 0x00, 0x91, 0x98,
+ 0x58, 0xaf, 0x00, 0x91, 0x9c, 0x09, 0x43, 0x00,
+ 0x91, 0x9e, 0x3b, 0x6b, 0x00, 0x91, 0xa1, 0x58,
+ 0xb0, 0x00, 0x91, 0xa2, 0x1b, 0x2c, 0x00, 0x91,
+ 0xa4, 0x09, 0xc7, 0x00, 0x91, 0xa6, 0x58, 0xb1,
+ 0x00, 0x91, 0xa8, 0x3b, 0x6c, 0x00, 0x91, 0xaa,
+ 0x1b, 0x2f, 0x00, 0x91, 0xab, 0x1b, 0x2d, 0x00,
+ 0x91, 0xac, 0x1e, 0x1b, 0x00, 0x91, 0xad, 0x3b,
+ 0x6d, 0x00, 0x91, 0xae, 0x3b, 0x6e, 0x00, 0x91,
+ 0xaf, 0x1b, 0x2e, 0x00, 0x91, 0xb0, 0x4d, 0xc5,
+ 0x00, 0x91, 0xb1, 0x1e, 0x61, 0x00, 0x91, 0xb2,
+ 0x3b, 0x6f, 0x00, 0x91, 0xb3, 0x49, 0x77, 0x00,
+ 0x91, 0xb4, 0x1b, 0x31, 0x00, 0x91, 0xb5, 0x1b,
+ 0x30, 0x00, 0x91, 0xb6, 0x49, 0x78, 0x00, 0x91,
+ 0xb8, 0x09, 0xe2, 0x00, 0x91, 0xba, 0x1b, 0x32,
+ 0x00, 0x91, 0xbb, 0x4d, 0xc6, 0x00, 0x91, 0xbc,
+ 0x3b, 0x70, 0x00, 0x91, 0xbd, 0x4d, 0xc7, 0x00,
+ 0x91, 0xbf, 0x58, 0xb2, 0x00, 0x91, 0xc0, 0x1b,
+ 0x33, 0x00, 0x91, 0xc1, 0x1b, 0x34, 0x00, 0x91,
+ 0xc2, 0x4d, 0xc8, 0x00, 0x91, 0xc3, 0x49, 0x79,
+ 0x00, 0x91, 0xc4, 0x49, 0x7a, 0x00, 0x91, 0xc5,
+ 0x4d, 0xc9, 0x00, 0x91, 0xc6, 0x0d, 0x64, 0x00,
+ 0x91, 0xc7, 0x08, 0x43, 0x00, 0x91, 0xc8, 0x09,
+ 0x0d, 0x00, 0x91, 0xc9, 0x1b, 0x35, 0x00, 0x91,
+ 0xcb, 0x1b, 0x36, 0x00, 0x91, 0xcc, 0x0f, 0x6c,
+ 0x00, 0x91, 0xcd, 0x09, 0x4f, 0x00, 0x91, 0xce,
+ 0x0e, 0xfa, 0x00, 0x91, 0xcf, 0x0f, 0x94, 0x00,
+ 0x91, 0xd0, 0x1b, 0x37, 0x00, 0x91, 0xd1, 0x06,
+ 0xda, 0x00, 0x91, 0xd3, 0x58, 0xb3, 0x00, 0x91,
+ 0xd4, 0x58, 0xb4, 0x00, 0x91, 0xd6, 0x1b, 0x38,
+ 0x00, 0x91, 0xd7, 0x21, 0xc0, 0x00, 0x91, 0xd8,
+ 0x0c, 0x1d, 0x00, 0x91, 0xd9, 0x58, 0xb5, 0x00,
+ 0x91, 0xda, 0x21, 0xbf, 0x00, 0x91, 0xdb, 0x1b,
+ 0x3b, 0x00, 0x91, 0xdc, 0x05, 0xd6, 0x00, 0x91,
+ 0xdd, 0x0a, 0x11, 0x00, 0x91, 0xde, 0x21, 0xc1,
+ 0x00, 0x91, 0xdf, 0x1b, 0x39, 0x00, 0x91, 0xe1,
+ 0x1b, 0x3a, 0x00, 0x91, 0xe3, 0x0b, 0xfc, 0x00,
+ 0x91, 0xe4, 0x21, 0xc4, 0x00, 0x91, 0xe5, 0x21,
+ 0xc5, 0x00, 0x91, 0xe6, 0x0e, 0x83, 0x00, 0x91,
+ 0xe7, 0x06, 0xf4, 0x00, 0x91, 0xe9, 0x58, 0xb6,
+ 0x00, 0x91, 0xea, 0x58, 0xb7, 0x00, 0x91, 0xec,
+ 0x49, 0x7d, 0x00, 0x91, 0xed, 0x21, 0xc2, 0x00,
+ 0x91, 0xee, 0x21, 0xc3, 0x00, 0x91, 0xef, 0x58,
+ 0xb8, 0x00, 0x91, 0xf0, 0x3b, 0x71, 0x00, 0x91,
+ 0xf1, 0x43, 0x0d, 0x00, 0x91, 0xf5, 0x1b, 0x3d,
+ 0x00, 0x91, 0xf6, 0x1b, 0x3e, 0x00, 0x91, 0xf7,
+ 0x3b, 0x72, 0x00, 0x91, 0xf9, 0x58, 0xb9, 0x00,
+ 0x91, 0xfb, 0x3b, 0x73, 0x00, 0x91, 0xfc, 0x1b,
+ 0x3c, 0x00, 0x91, 0xfd, 0x58, 0xba, 0x00, 0x91,
+ 0xff, 0x1b, 0x40, 0x00, 0x92, 0x00, 0x4d, 0xca,
+ 0x00, 0x92, 0x01, 0x49, 0x7e, 0x00, 0x92, 0x04,
+ 0x58, 0xbb, 0x00, 0x92, 0x05, 0x58, 0xbc, 0x00,
+ 0x92, 0x06, 0x21, 0xc6, 0x00, 0x92, 0x07, 0x3b,
+ 0x74, 0x00, 0x92, 0x09, 0x4d, 0xcb, 0x00, 0x92,
+ 0x0a, 0x21, 0xc8, 0x00, 0x92, 0x0c, 0x58, 0xbd,
+ 0x00, 0x92, 0x0d, 0x0c, 0xb7, 0x00, 0x92, 0x0e,
+ 0x05, 0xa1, 0x00, 0x92, 0x10, 0x21, 0xc7, 0x00,
+ 0x92, 0x11, 0x1b, 0x44, 0x00, 0x92, 0x12, 0x58,
+ 0xbe, 0x00, 0x92, 0x13, 0x58, 0xbf, 0x00, 0x92,
+ 0x14, 0x1b, 0x41, 0x00, 0x92, 0x15, 0x1b, 0x43,
+ 0x00, 0x92, 0x16, 0x49, 0x7f, 0x00, 0x92, 0x17,
+ 0x49, 0x80, 0x00, 0x92, 0x18, 0x58, 0xc0, 0x00,
+ 0x92, 0x1c, 0x58, 0xc1, 0x00, 0x92, 0x1d, 0x58,
+ 0xc2, 0x00, 0x92, 0x1e, 0x1b, 0x3f, 0x00, 0x92,
+ 0x23, 0x4d, 0xcc, 0x00, 0x92, 0x24, 0x58, 0xc3,
+ 0x00, 0x92, 0x25, 0x58, 0xc4, 0x00, 0x92, 0x26,
+ 0x58, 0xc5, 0x00, 0x92, 0x28, 0x3b, 0x75, 0x00,
+ 0x92, 0x29, 0x1b, 0x8a, 0x00, 0x92, 0x2c, 0x1b,
+ 0x42, 0x00, 0x92, 0x2e, 0x58, 0xc6, 0x00, 0x92,
+ 0x2f, 0x58, 0xc7, 0x00, 0x92, 0x30, 0x58, 0xc8,
+ 0x00, 0x92, 0x33, 0x3b, 0x76, 0x00, 0x92, 0x34,
+ 0x0f, 0xb3, 0x00, 0x92, 0x35, 0x58, 0xc9, 0x00,
+ 0x92, 0x36, 0x58, 0xca, 0x00, 0x92, 0x37, 0x07,
+ 0x8e, 0x00, 0x92, 0x38, 0x3b, 0x77, 0x00, 0x92,
+ 0x39, 0x21, 0xcf, 0x00, 0x92, 0x3a, 0x21, 0xc9,
+ 0x00, 0x92, 0x3c, 0x21, 0xcb, 0x00, 0x92, 0x3e,
+ 0x58, 0xcb, 0x00, 0x92, 0x3f, 0x1b, 0x4c, 0x00,
+ 0x92, 0x40, 0x21, 0xca, 0x00, 0x92, 0x42, 0x49,
+ 0x82, 0x00, 0x92, 0x43, 0x3b, 0x78, 0x00, 0x92,
+ 0x44, 0x0c, 0x2e, 0x00, 0x92, 0x45, 0x1b, 0x47,
+ 0x00, 0x92, 0x46, 0x58, 0xcc, 0x00, 0x92, 0x47,
+ 0x3b, 0x79, 0x00, 0x92, 0x48, 0x1b, 0x4a, 0x00,
+ 0x92, 0x49, 0x1b, 0x48, 0x00, 0x92, 0x4a, 0x49,
+ 0x83, 0x00, 0x92, 0x4b, 0x1b, 0x4d, 0x00, 0x92,
+ 0x4d, 0x58, 0xcd, 0x00, 0x92, 0x4e, 0x21, 0xcc,
+ 0x00, 0x92, 0x4f, 0x3b, 0x7a, 0x00, 0x92, 0x50,
+ 0x1b, 0x4e, 0x00, 0x92, 0x51, 0x21, 0xce, 0x00,
+ 0x92, 0x56, 0x49, 0x84, 0x00, 0x92, 0x57, 0x1b,
+ 0x46, 0x00, 0x92, 0x58, 0x58, 0xce, 0x00, 0x92,
+ 0x59, 0x21, 0xcd, 0x00, 0x92, 0x5a, 0x1b, 0x53,
+ 0x00, 0x92, 0x5b, 0x05, 0x16, 0x00, 0x92, 0x5c,
+ 0x58, 0xcf, 0x00, 0x92, 0x5d, 0x58, 0xd0, 0x00,
+ 0x92, 0x5e, 0x1b, 0x45, 0x00, 0x92, 0x60, 0x3b,
+ 0x7b, 0x00, 0x92, 0x61, 0x49, 0x85, 0x00, 0x92,
+ 0x62, 0x0d, 0x41, 0x00, 0x92, 0x64, 0x1b, 0x49,
+ 0x00, 0x92, 0x65, 0x49, 0x86, 0x00, 0x92, 0x66,
+ 0x09, 0xc8, 0x00, 0x92, 0x67, 0x21, 0xd0, 0x00,
+ 0x92, 0x68, 0x49, 0x87, 0x00, 0x92, 0x69, 0x58,
+ 0xd1, 0x00, 0x92, 0x6e, 0x58, 0xd2, 0x00, 0x92,
+ 0x6f, 0x58, 0xd3, 0x00, 0x92, 0x70, 0x58, 0xd4,
+ 0x00, 0x92, 0x71, 0x07, 0xed, 0x00, 0x92, 0x75,
+ 0x58, 0xd5, 0x00, 0x92, 0x76, 0x4d, 0xcd, 0x00,
+ 0x92, 0x77, 0x21, 0xd2, 0x00, 0x92, 0x78, 0x21,
+ 0xd3, 0x00, 0x92, 0x79, 0x58, 0xd6, 0x00, 0x92,
+ 0x7b, 0x58, 0xd7, 0x00, 0x92, 0x7c, 0x49, 0x89,
+ 0x00, 0x92, 0x7d, 0x49, 0x8a, 0x00, 0x92, 0x7e,
+ 0x0e, 0x76, 0x00, 0x92, 0x7f, 0x49, 0x8b, 0x00,
+ 0x92, 0x80, 0x06, 0xdc, 0x00, 0x92, 0x83, 0x09,
+ 0x50, 0x00, 0x92, 0x85, 0x0c, 0x94, 0x00, 0x92,
+ 0x88, 0x20, 0xaa, 0x00, 0x92, 0x89, 0x49, 0x8c,
+ 0x00, 0x92, 0x8a, 0x58, 0xd8, 0x00, 0x92, 0x8d,
+ 0x49, 0x8d, 0x00, 0x92, 0x8e, 0x4d, 0xce, 0x00,
+ 0x92, 0x91, 0x0a, 0xaf, 0x00, 0x92, 0x92, 0x58,
+ 0xd9, 0x00, 0x92, 0x93, 0x1b, 0x51, 0x00, 0x92,
+ 0x95, 0x1b, 0x4b, 0x00, 0x92, 0x96, 0x1b, 0x50,
+ 0x00, 0x92, 0x97, 0x49, 0x8e, 0x00, 0x92, 0x98,
+ 0x0e, 0xcf, 0x00, 0x92, 0x99, 0x49, 0x8f, 0x00,
+ 0x92, 0x9a, 0x0b, 0xd4, 0x00, 0x92, 0x9b, 0x1b,
+ 0x52, 0x00, 0x92, 0x9c, 0x1b, 0x4f, 0x00, 0x92,
+ 0x9f, 0x49, 0x90, 0x00, 0x92, 0xa0, 0x58, 0xda,
+ 0x00, 0x92, 0xa4, 0x58, 0xdb, 0x00, 0x92, 0xa5,
+ 0x58, 0xdc, 0x00, 0x92, 0xa7, 0x21, 0xd1, 0x00,
+ 0x92, 0xa8, 0x58, 0xdd, 0x00, 0x92, 0xab, 0x49,
+ 0x91, 0x00, 0x92, 0xad, 0x0a, 0xae, 0x00, 0x92,
+ 0xaf, 0x4d, 0xcf, 0x00, 0x92, 0xb2, 0x49, 0x94,
+ 0x00, 0x92, 0xb3, 0x35, 0x54, 0x00, 0x92, 0xb6,
+ 0x58, 0xde, 0x00, 0x92, 0xb7, 0x1b, 0x56, 0x00,
+ 0x92, 0xb8, 0x58, 0xdf, 0x00, 0x92, 0xb9, 0x1b,
+ 0x55, 0x00, 0x92, 0xba, 0x58, 0xe0, 0x00, 0x92,
+ 0xbb, 0x4d, 0xd0, 0x00, 0x92, 0xbc, 0x4d, 0xd1,
+ 0x00, 0x92, 0xbd, 0x58, 0xe1, 0x00, 0x92, 0xbf,
+ 0x49, 0x95, 0x00, 0x92, 0xc0, 0x49, 0x96, 0x00,
+ 0x92, 0xc1, 0x4d, 0xd2, 0x00, 0x92, 0xc2, 0x3b,
+ 0x7c, 0x00, 0x92, 0xc3, 0x4d, 0xd3, 0x00, 0x92,
+ 0xc5, 0x4d, 0xd4, 0x00, 0x92, 0xc6, 0x49, 0x97,
+ 0x00, 0x92, 0xc7, 0x58, 0xe2, 0x00, 0x92, 0xc8,
+ 0x4d, 0xd5, 0x00, 0x92, 0xcb, 0x3b, 0x7d, 0x00,
+ 0x92, 0xcc, 0x3b, 0x7e, 0x00, 0x92, 0xcd, 0x58,
+ 0xe3, 0x00, 0x92, 0xce, 0x49, 0x98, 0x00, 0x92,
+ 0xcf, 0x1b, 0x54, 0x00, 0x92, 0xd0, 0x21, 0xd7,
+ 0x00, 0x92, 0xd2, 0x0e, 0x5d, 0x00, 0x92, 0xd3,
+ 0x21, 0xdb, 0x00, 0x92, 0xd5, 0x21, 0xd9, 0x00,
+ 0x92, 0xd7, 0x21, 0xd5, 0x00, 0x92, 0xd8, 0x58,
+ 0xe4, 0x00, 0x92, 0xd9, 0x21, 0xd6, 0x00, 0x92,
+ 0xdc, 0x58, 0xe5, 0x00, 0x92, 0xdd, 0x58, 0xe6,
+ 0x00, 0x92, 0xdf, 0x3b, 0x7f, 0x00, 0x92, 0xe0,
+ 0x21, 0xda, 0x00, 0x92, 0xe1, 0x58, 0xe7, 0x00,
+ 0x92, 0xe3, 0x58, 0xe8, 0x00, 0x92, 0xe4, 0x09,
+ 0x85, 0x00, 0x92, 0xe5, 0x49, 0x99, 0x00, 0x92,
+ 0xe7, 0x21, 0xd4, 0x00, 0x92, 0xe8, 0x58, 0xe9,
+ 0x00, 0x92, 0xe9, 0x1b, 0x57, 0x00, 0x92, 0xea,
+ 0x0e, 0x2f, 0x00, 0x92, 0xec, 0x58, 0xea, 0x00,
+ 0x92, 0xed, 0x04, 0xf6, 0x00, 0x92, 0xee, 0x58,
+ 0xeb, 0x00, 0x92, 0xf0, 0x58, 0xec, 0x00, 0x92,
+ 0xf2, 0x0d, 0xb8, 0x00, 0x92, 0xf3, 0x0b, 0xb0,
+ 0x00, 0x92, 0xf7, 0x49, 0x9d, 0x00, 0x92, 0xf8,
+ 0x06, 0x92, 0x00, 0x92, 0xf9, 0x20, 0xb0, 0x00,
+ 0x92, 0xfa, 0x1b, 0x59, 0x00, 0x92, 0xfb, 0x21,
+ 0xde, 0x00, 0x92, 0xfc, 0x07, 0xef, 0x00, 0x92,
+ 0xff, 0x21, 0xe1, 0x00, 0x93, 0x00, 0x58, 0xed,
+ 0x00, 0x93, 0x02, 0x21, 0xe3, 0x00, 0x93, 0x04,
+ 0x34, 0x5a, 0x00, 0x93, 0x06, 0x08, 0x7a, 0x00,
+ 0x93, 0x08, 0x58, 0xee, 0x00, 0x93, 0x0d, 0x3b,
+ 0x80, 0x00, 0x93, 0x0f, 0x1b, 0x58, 0x00, 0x93,
+ 0x10, 0x0a, 0x33, 0x00, 0x93, 0x11, 0x49, 0x9a,
+ 0x00, 0x93, 0x14, 0x4d, 0xd6, 0x00, 0x93, 0x15,
+ 0x3b, 0x81, 0x00, 0x93, 0x18, 0x0a, 0x34, 0x00,
+ 0x93, 0x19, 0x1b, 0x5c, 0x00, 0x93, 0x1a, 0x1b,
+ 0x5e, 0x00, 0x93, 0x1c, 0x58, 0xef, 0x00, 0x93,
+ 0x1d, 0x21, 0xe2, 0x00, 0x93, 0x1e, 0x21, 0xe0,
+ 0x00, 0x93, 0x1f, 0x3b, 0x82, 0x00, 0x93, 0x20,
+ 0x09, 0xe3, 0x00, 0x93, 0x21, 0x21, 0xdd, 0x00,
+ 0x93, 0x22, 0x1b, 0x5d, 0x00, 0x93, 0x23, 0x1b,
+ 0x5f, 0x00, 0x93, 0x24, 0x58, 0xf0, 0x00, 0x93,
+ 0x25, 0x21, 0xdc, 0x00, 0x93, 0x26, 0x06, 0xcb,
+ 0x00, 0x93, 0x27, 0x3b, 0x83, 0x00, 0x93, 0x28,
+ 0x0d, 0xb7, 0x00, 0x93, 0x29, 0x49, 0x9e, 0x00,
+ 0x93, 0x2a, 0x58, 0xf1, 0x00, 0x93, 0x2b, 0x09,
+ 0x0e, 0x00, 0x93, 0x2c, 0x0f, 0xc9, 0x00, 0x93,
+ 0x2e, 0x1b, 0x5b, 0x00, 0x93, 0x2f, 0x08, 0x68,
+ 0x00, 0x93, 0x32, 0x0f, 0xe5, 0x00, 0x93, 0x33,
+ 0x4d, 0xd7, 0x00, 0x93, 0x34, 0x58, 0xf2, 0x00,
+ 0x93, 0x35, 0x1b, 0x61, 0x00, 0x93, 0x36, 0x4d,
+ 0xd8, 0x00, 0x93, 0x37, 0x58, 0xf3, 0x00, 0x93,
+ 0x3a, 0x1b, 0x60, 0x00, 0x93, 0x3b, 0x1b, 0x62,
+ 0x00, 0x93, 0x44, 0x1b, 0x5a, 0x00, 0x93, 0x47,
+ 0x3b, 0x84, 0x00, 0x93, 0x48, 0x20, 0xa9, 0x00,
+ 0x93, 0x49, 0x43, 0x0e, 0x00, 0x93, 0x4a, 0x34,
+ 0x58, 0x00, 0x93, 0x4b, 0x0c, 0xc1, 0x00, 0x93,
+ 0x4d, 0x0c, 0x4f, 0x00, 0x93, 0x50, 0x58, 0xf4,
+ 0x00, 0x93, 0x51, 0x49, 0xa1, 0x00, 0x93, 0x52,
+ 0x3b, 0x85, 0x00, 0x93, 0x54, 0x0b, 0xf3, 0x00,
+ 0x93, 0x55, 0x58, 0xf5, 0x00, 0x93, 0x56, 0x1b,
+ 0x67, 0x00, 0x93, 0x57, 0x21, 0xe5, 0x00, 0x93,
+ 0x58, 0x4d, 0xd9, 0x00, 0x93, 0x5a, 0x49, 0xa2,
+ 0x00, 0x93, 0x5b, 0x0b, 0x81, 0x00, 0x93, 0x5c,
+ 0x1b, 0x63, 0x00, 0x93, 0x5e, 0x58, 0xf6, 0x00,
+ 0x93, 0x60, 0x1b, 0x64, 0x00, 0x93, 0x64, 0x43,
+ 0x0f, 0x00, 0x93, 0x65, 0x43, 0x10, 0x00, 0x93,
+ 0x67, 0x58, 0xf7, 0x00, 0x93, 0x69, 0x58, 0xf8,
+ 0x00, 0x93, 0x6a, 0x3b, 0x87, 0x00, 0x93, 0x6b,
+ 0x49, 0xa3, 0x00, 0x93, 0x6c, 0x07, 0x03, 0x00,
+ 0x93, 0x6d, 0x3b, 0x88, 0x00, 0x93, 0x6e, 0x1b,
+ 0x66, 0x00, 0x93, 0x6f, 0x58, 0xf9, 0x00, 0x93,
+ 0x70, 0x21, 0xe4, 0x00, 0x93, 0x71, 0x49, 0xa4,
+ 0x00, 0x93, 0x73, 0x49, 0xa5, 0x00, 0x93, 0x74,
+ 0x58, 0xfa, 0x00, 0x93, 0x75, 0x07, 0x64, 0x00,
+ 0x93, 0x76, 0x58, 0xfb, 0x00, 0x93, 0x7a, 0x58,
+ 0xfc, 0x00, 0x93, 0x7c, 0x1b, 0x65, 0x00, 0x93,
+ 0x7d, 0x58, 0xfd, 0x00, 0x93, 0x7e, 0x09, 0xc9,
+ 0x00, 0x93, 0x7f, 0x4d, 0xda, 0x00, 0x93, 0x80,
+ 0x58, 0xfe, 0x00, 0x93, 0x81, 0x58, 0xff, 0x00,
+ 0x93, 0x82, 0x4d, 0xdb, 0x00, 0x93, 0x88, 0x49,
+ 0xa9, 0x00, 0x93, 0x8a, 0x4d, 0xdc, 0x00, 0x93,
+ 0x8b, 0x49, 0xaa, 0x00, 0x93, 0x8c, 0x05, 0xd7,
+ 0x00, 0x93, 0x8d, 0x59, 0x00, 0x00, 0x93, 0x8f,
+ 0x49, 0xab, 0x00, 0x93, 0x92, 0x59, 0x01, 0x00,
+ 0x93, 0x94, 0x1b, 0x6b, 0x00, 0x93, 0x95, 0x59,
+ 0x02, 0x00, 0x93, 0x96, 0x08, 0x2f, 0x00, 0x93,
+ 0x97, 0x0a, 0xfb, 0x00, 0x93, 0x98, 0x59, 0x03,
+ 0x00, 0x93, 0x9a, 0x0b, 0xe6, 0x00, 0x93, 0x9b,
+ 0x3b, 0x89, 0x00, 0x93, 0x9e, 0x49, 0xac, 0x00,
+ 0x93, 0xa1, 0x49, 0xa6, 0x00, 0x93, 0xa3, 0x43,
+ 0x11, 0x00, 0x93, 0xa4, 0x21, 0xe6, 0x00, 0x93,
+ 0xa6, 0x59, 0x05, 0x00, 0x93, 0xa7, 0x05, 0x99,
+ 0x00, 0x93, 0xa8, 0x59, 0x06, 0x00, 0x93, 0xa9,
+ 0x3b, 0x8b, 0x00, 0x93, 0xab, 0x59, 0x07, 0x00,
+ 0x93, 0xac, 0x1b, 0x69, 0x00, 0x93, 0xad, 0x1b,
+ 0x6a, 0x00, 0x93, 0xae, 0x0b, 0xdf, 0x00, 0x93,
+ 0xb0, 0x1b, 0x68, 0x00, 0x93, 0xb4, 0x59, 0x08,
+ 0x00, 0x93, 0xb5, 0x59, 0x09, 0x00, 0x93, 0xb6,
+ 0x59, 0x0a, 0x00, 0x93, 0xb9, 0x1b, 0x6c, 0x00,
+ 0x93, 0xba, 0x3b, 0x8a, 0x00, 0x93, 0xbb, 0x4d,
+ 0xdd, 0x00, 0x93, 0xc1, 0x3b, 0x8c, 0x00, 0x93,
+ 0xc3, 0x1b, 0x72, 0x00, 0x93, 0xc4, 0x59, 0x0b,
+ 0x00, 0x93, 0xc5, 0x59, 0x0c, 0x00, 0x93, 0xc6,
+ 0x21, 0xe7, 0x00, 0x93, 0xc7, 0x49, 0xb1, 0x00,
+ 0x93, 0xc8, 0x1b, 0x75, 0x00, 0x93, 0xc9, 0x59,
+ 0x0d, 0x00, 0x93, 0xca, 0x3b, 0x8d, 0x00, 0x93,
+ 0xcb, 0x59, 0x0e, 0x00, 0x93, 0xcc, 0x4d, 0xde,
+ 0x00, 0x93, 0xcd, 0x59, 0x0f, 0x00, 0x93, 0xd0,
+ 0x1b, 0x74, 0x00, 0x93, 0xd1, 0x0c, 0x27, 0x00,
+ 0x93, 0xd3, 0x59, 0x10, 0x00, 0x93, 0xd6, 0x1b,
+ 0x6d, 0x00, 0x93, 0xd7, 0x1b, 0x6e, 0x00, 0x93,
+ 0xd8, 0x1b, 0x71, 0x00, 0x93, 0xd9, 0x59, 0x11,
+ 0x00, 0x93, 0xdc, 0x49, 0xb2, 0x00, 0x93, 0xdd,
+ 0x1b, 0x73, 0x00, 0x93, 0xde, 0x21, 0xe8, 0x00,
+ 0x93, 0xdf, 0x43, 0x12, 0x00, 0x93, 0xe1, 0x06,
+ 0xb8, 0x00, 0x93, 0xe2, 0x3b, 0x8e, 0x00, 0x93,
+ 0xe4, 0x1b, 0x76, 0x00, 0x93, 0xe5, 0x1b, 0x70,
+ 0x00, 0x93, 0xe6, 0x4d, 0xdf, 0x00, 0x93, 0xe7,
+ 0x49, 0xb3, 0x00, 0x93, 0xe8, 0x1b, 0x6f, 0x00,
+ 0x93, 0xf1, 0x49, 0xb0, 0x00, 0x93, 0xf5, 0x49,
+ 0xad, 0x00, 0x93, 0xf7, 0x59, 0x12, 0x00, 0x93,
+ 0xf8, 0x21, 0xe9, 0x00, 0x93, 0xf9, 0x4d, 0xe0,
+ 0x00, 0x93, 0xfa, 0x3b, 0x8f, 0x00, 0x93, 0xfb,
+ 0x49, 0xb7, 0x00, 0x93, 0xfd, 0x3b, 0x90, 0x00,
+ 0x94, 0x01, 0x59, 0x13, 0x00, 0x94, 0x02, 0x4d,
+ 0xe1, 0x00, 0x94, 0x03, 0x1b, 0x7a, 0x00, 0x94,
+ 0x04, 0x43, 0x13, 0x00, 0x94, 0x07, 0x1b, 0x7b,
+ 0x00, 0x94, 0x08, 0x59, 0x14, 0x00, 0x94, 0x09,
+ 0x49, 0xb4, 0x00, 0x94, 0x0d, 0x4d, 0xe2, 0x00,
+ 0x94, 0x0e, 0x4d, 0xe3, 0x00, 0x94, 0x0f, 0x3b,
+ 0x91, 0x00, 0x94, 0x10, 0x1b, 0x7c, 0x00, 0x94,
+ 0x13, 0x1b, 0x79, 0x00, 0x94, 0x14, 0x1b, 0x78,
+ 0x00, 0x94, 0x15, 0x59, 0x15, 0x00, 0x94, 0x16,
+ 0x49, 0xb5, 0x00, 0x94, 0x17, 0x49, 0xb6, 0x00,
+ 0x94, 0x18, 0x09, 0xca, 0x00, 0x94, 0x19, 0x0c,
+ 0x82, 0x00, 0x94, 0x1a, 0x1b, 0x77, 0x00, 0x94,
+ 0x1f, 0x59, 0x16, 0x00, 0x94, 0x21, 0x1b, 0x80,
+ 0x00, 0x94, 0x2b, 0x1b, 0x7e, 0x00, 0x94, 0x2e,
+ 0x4d, 0xe4, 0x00, 0x94, 0x2f, 0x59, 0x17, 0x00,
+ 0x94, 0x31, 0x21, 0xea, 0x00, 0x94, 0x32, 0x49,
+ 0xb8, 0x00, 0x94, 0x33, 0x43, 0x14, 0x00, 0x94,
+ 0x34, 0x3b, 0x92, 0x00, 0x94, 0x35, 0x1b, 0x7f,
+ 0x00, 0x94, 0x36, 0x1b, 0x7d, 0x00, 0x94, 0x38,
+ 0x0b, 0x58, 0x00, 0x94, 0x3a, 0x1b, 0x81, 0x00,
+ 0x94, 0x3b, 0x49, 0xb9, 0x00, 0x94, 0x3d, 0x59,
+ 0x18, 0x00, 0x94, 0x3f, 0x3b, 0x93, 0x00, 0x94,
+ 0x41, 0x1b, 0x82, 0x00, 0x94, 0x43, 0x59, 0x19,
+ 0x00, 0x94, 0x44, 0x1b, 0x84, 0x00, 0x94, 0x45,
+ 0x21, 0xeb, 0x00, 0x94, 0x48, 0x21, 0xec, 0x00,
+ 0x94, 0x4a, 0x43, 0x15, 0x00, 0x94, 0x4c, 0x4d,
+ 0xe5, 0x00, 0x94, 0x51, 0x06, 0x11, 0x00, 0x94,
+ 0x52, 0x1b, 0x83, 0x00, 0x94, 0x53, 0x0f, 0x06,
+ 0x00, 0x94, 0x55, 0x3b, 0x94, 0x00, 0x94, 0x59,
+ 0x59, 0x1a, 0x00, 0x94, 0x5a, 0x1b, 0x8f, 0x00,
+ 0x94, 0x5b, 0x1b, 0x85, 0x00, 0x94, 0x5c, 0x59,
+ 0x1b, 0x00, 0x94, 0x5e, 0x1b, 0x88, 0x00, 0x94,
+ 0x5f, 0x59, 0x1c, 0x00, 0x94, 0x60, 0x1b, 0x86,
+ 0x00, 0x94, 0x61, 0x59, 0x1d, 0x00, 0x94, 0x62,
+ 0x1b, 0x87, 0x00, 0x94, 0x63, 0x43, 0x16, 0x00,
+ 0x94, 0x68, 0x59, 0x1e, 0x00, 0x94, 0x6a, 0x1b,
+ 0x89, 0x00, 0x94, 0x6b, 0x3b, 0x95, 0x00, 0x94,
+ 0x6d, 0x49, 0xbc, 0x00, 0x94, 0x6e, 0x59, 0x1f,
+ 0x00, 0x94, 0x6f, 0x49, 0xbd, 0x00, 0x94, 0x70,
+ 0x1b, 0x8b, 0x00, 0x94, 0x71, 0x43, 0x17, 0x00,
+ 0x94, 0x72, 0x3b, 0x96, 0x00, 0x94, 0x75, 0x1b,
+ 0x8c, 0x00, 0x94, 0x77, 0x1b, 0x8d, 0x00, 0x94,
+ 0x7c, 0x1b, 0x90, 0x00, 0x94, 0x7d, 0x1b, 0x8e,
+ 0x00, 0x94, 0x7e, 0x1b, 0x91, 0x00, 0x94, 0x7f,
+ 0x1b, 0x93, 0x00, 0x94, 0x81, 0x1b, 0x92, 0x00,
+ 0x94, 0x83, 0x59, 0x21, 0x00, 0x94, 0x84, 0x59,
+ 0x20, 0x00, 0x95, 0x77, 0x0b, 0xd5, 0x00, 0x95,
+ 0x78, 0x3b, 0x97, 0x00, 0x95, 0x79, 0x49, 0xbe,
+ 0x00, 0x95, 0x7e, 0x59, 0x22, 0x00, 0x95, 0x80,
+ 0x0e, 0xf3, 0x00, 0x95, 0x82, 0x1b, 0x94, 0x00,
+ 0x95, 0x83, 0x0a, 0xb0, 0x00, 0x95, 0x84, 0x59,
+ 0x23, 0x00, 0x95, 0x86, 0x49, 0xbf, 0x00, 0x95,
+ 0x87, 0x1b, 0x95, 0x00, 0x95, 0x88, 0x4d, 0xe6,
+ 0x00, 0x95, 0x89, 0x0e, 0x14, 0x00, 0x95, 0x8a,
+ 0x1b, 0x96, 0x00, 0x95, 0x8b, 0x05, 0x89, 0x00,
+ 0x95, 0x8c, 0x49, 0xc0, 0x00, 0x95, 0x8d, 0x49,
+ 0xc1, 0x00, 0x95, 0x8e, 0x43, 0x18, 0x00, 0x95,
+ 0x8f, 0x04, 0xde, 0x00, 0x95, 0x91, 0x06, 0x13,
+ 0x00, 0x95, 0x92, 0x21, 0xed, 0x00, 0x95, 0x93,
+ 0x06, 0x12, 0x00, 0x95, 0x94, 0x1b, 0x97, 0x00,
+ 0x95, 0x96, 0x1b, 0x98, 0x00, 0x95, 0x98, 0x1b,
+ 0x99, 0x00, 0x95, 0x99, 0x1b, 0x9a, 0x00, 0x95,
+ 0x9d, 0x59, 0x24, 0x00, 0x95, 0x9e, 0x59, 0x25,
+ 0x00, 0x95, 0x9f, 0x43, 0x19, 0x00, 0x95, 0xa0,
+ 0x1b, 0x9b, 0x00, 0x95, 0xa1, 0x4d, 0xe7, 0x00,
+ 0x95, 0xa2, 0x06, 0x14, 0x00, 0x95, 0xa3, 0x05,
+ 0xb3, 0x00, 0x95, 0xa4, 0x07, 0xf0, 0x00, 0x95,
+ 0xa5, 0x0d, 0x4a, 0x00, 0x95, 0xa6, 0x3b, 0x98,
+ 0x00, 0x95, 0xa7, 0x1b, 0x9d, 0x00, 0x95, 0xa8,
+ 0x1b, 0x9c, 0x00, 0x95, 0xa9, 0x3b, 0x99, 0x00,
+ 0x95, 0xab, 0x4f, 0x59, 0x00, 0x95, 0xac, 0x43,
+ 0x1a, 0x00, 0x95, 0xad, 0x1b, 0x9e, 0x00, 0x95,
+ 0xb1, 0x35, 0x55, 0x00, 0x95, 0xb2, 0x04, 0xfe,
+ 0x00, 0x95, 0xb4, 0x3b, 0x9b, 0x00, 0x95, 0xb6,
+ 0x43, 0x1b, 0x00, 0x95, 0xb9, 0x1b, 0xa1, 0x00,
+ 0x95, 0xba, 0x59, 0x26, 0x00, 0x95, 0xbb, 0x1b,
+ 0xa0, 0x00, 0x95, 0xbc, 0x1b, 0x9f, 0x00, 0x95,
+ 0xbd, 0x3b, 0x9c, 0x00, 0x95, 0xbe, 0x1b, 0xa2,
+ 0x00, 0x95, 0xbf, 0x4d, 0xe8, 0x00, 0x95, 0xc3,
+ 0x1b, 0xa5, 0x00, 0x95, 0xc6, 0x4d, 0xe9, 0x00,
+ 0x95, 0xc7, 0x04, 0x8b, 0x00, 0x95, 0xc8, 0x49,
+ 0xc4, 0x00, 0x95, 0xc9, 0x4d, 0xea, 0x00, 0x95,
+ 0xca, 0x1b, 0xa3, 0x00, 0x95, 0xcb, 0x43, 0x1c,
+ 0x00, 0x95, 0xcc, 0x1b, 0xa7, 0x00, 0x95, 0xcd,
+ 0x1b, 0xa6, 0x00, 0x95, 0xd0, 0x43, 0x1d, 0x00,
+ 0x95, 0xd1, 0x4d, 0xeb, 0x00, 0x95, 0xd2, 0x4d,
+ 0xec, 0x00, 0x95, 0xd3, 0x43, 0x1e, 0x00, 0x95,
+ 0xd4, 0x1b, 0xa9, 0x00, 0x95, 0xd5, 0x1b, 0xa8,
+ 0x00, 0x95, 0xd6, 0x1b, 0xaa, 0x00, 0x95, 0xd8,
+ 0x0c, 0x86, 0x00, 0x95, 0xd9, 0x59, 0x27, 0x00,
+ 0x95, 0xda, 0x3b, 0x9d, 0x00, 0x95, 0xdc, 0x1b,
+ 0xab, 0x00, 0x95, 0xdd, 0x59, 0x28, 0x00, 0x95,
+ 0xde, 0x43, 0x20, 0x00, 0x95, 0xdf, 0x59, 0x29,
+ 0x00, 0x95, 0xe0, 0x4d, 0xed, 0x00, 0x95, 0xe1,
+ 0x1b, 0xac, 0x00, 0x95, 0xe2, 0x1b, 0xae, 0x00,
+ 0x95, 0xe4, 0x4d, 0xee, 0x00, 0x95, 0xe5, 0x1b,
+ 0xad, 0x00, 0x95, 0xe6, 0x4d, 0xef, 0x00, 0x95,
+ 0xe8, 0x36, 0xed, 0x00, 0x96, 0x1c, 0x0d, 0xde,
+ 0x00, 0x96, 0x1d, 0x3b, 0x9e, 0x00, 0x96, 0x1e,
+ 0x59, 0x2a, 0x00, 0x96, 0x21, 0x1b, 0xaf, 0x00,
+ 0x96, 0x22, 0x59, 0x2b, 0x00, 0x96, 0x24, 0x4d,
+ 0xf0, 0x00, 0x96, 0x25, 0x59, 0x2c, 0x00, 0x96,
+ 0x26, 0x59, 0x2d, 0x00, 0x96, 0x28, 0x1b, 0xb0,
+ 0x00, 0x96, 0x2a, 0x08, 0x55, 0x00, 0x96, 0x2c,
+ 0x49, 0xc7, 0x00, 0x96, 0x2e, 0x1b, 0xb1, 0x00,
+ 0x96, 0x2f, 0x1b, 0xb2, 0x00, 0x96, 0x31, 0x4d,
+ 0xf1, 0x00, 0x96, 0x32, 0x0e, 0x77, 0x00, 0x96,
+ 0x33, 0x49, 0xc8, 0x00, 0x96, 0x34, 0x49, 0xc9,
+ 0x00, 0x96, 0x37, 0x59, 0x2e, 0x00, 0x96, 0x38,
+ 0x4d, 0xf2, 0x00, 0x96, 0x39, 0x59, 0x2f, 0x00,
+ 0x96, 0x3a, 0x59, 0x30, 0x00, 0x96, 0x3b, 0x0a,
+ 0xcd, 0x00, 0x96, 0x3c, 0x49, 0xcb, 0x00, 0x96,
+ 0x3d, 0x4d, 0xf3, 0x00, 0x96, 0x3f, 0x04, 0x68,
+ 0x00, 0x96, 0x40, 0x0b, 0x2b, 0x00, 0x96, 0x41,
+ 0x3b, 0x9f, 0x00, 0x96, 0x42, 0x1b, 0xb3, 0x00,
+ 0x96, 0x44, 0x0d, 0xdf, 0x00, 0x96, 0x4b, 0x1b,
+ 0xb6, 0x00, 0x96, 0x4c, 0x1b, 0xb4, 0x00, 0x96,
+ 0x4d, 0x07, 0xf1, 0x00, 0x96, 0x4f, 0x1b, 0xb5,
+ 0x00, 0x96, 0x50, 0x07, 0x76, 0x00, 0x96, 0x52,
+ 0x59, 0x31, 0x00, 0x96, 0x54, 0x4d, 0xf4, 0x00,
+ 0x96, 0x56, 0x59, 0x32, 0x00, 0x96, 0x57, 0x59,
+ 0x33, 0x00, 0x96, 0x58, 0x3b, 0xa0, 0x00, 0x96,
+ 0x5b, 0x0e, 0x15, 0x00, 0x96, 0x5c, 0x1b, 0xb8,
+ 0x00, 0x96, 0x5d, 0x1b, 0xba, 0x00, 0x96, 0x5e,
+ 0x1b, 0xb9, 0x00, 0x96, 0x5f, 0x1b, 0xbb, 0x00,
+ 0x96, 0x61, 0x49, 0xcc, 0x00, 0x96, 0x62, 0x04,
+ 0xc3, 0x00, 0x96, 0x63, 0x0a, 0x1e, 0x00, 0x96,
+ 0x64, 0x09, 0x86, 0x00, 0x96, 0x65, 0x06, 0x15,
+ 0x00, 0x96, 0x66, 0x1b, 0xbc, 0x00, 0x96, 0x6a,
+ 0x0d, 0x1c, 0x00, 0x96, 0x6c, 0x1b, 0xbe, 0x00,
+ 0x96, 0x6e, 0x59, 0x34, 0x00, 0x96, 0x70, 0x04,
+ 0xc4, 0x00, 0x96, 0x72, 0x1b, 0xbd, 0x00, 0x96,
+ 0x73, 0x0b, 0xe0, 0x00, 0x96, 0x74, 0x4d, 0xf5,
+ 0x00, 0x96, 0x75, 0x0f, 0x95, 0x00, 0x96, 0x76,
+ 0x0c, 0x83, 0x00, 0x96, 0x77, 0x1b, 0xb7, 0x00,
+ 0x96, 0x78, 0x0f, 0x6e, 0x00, 0x96, 0x7a, 0x07,
+ 0x65, 0x00, 0x96, 0x7b, 0x4d, 0xf6, 0x00, 0x96,
+ 0x7c, 0x59, 0x35, 0x00, 0x96, 0x7d, 0x0f, 0x45,
+ 0x00, 0x96, 0x7e, 0x59, 0x36, 0x00, 0x96, 0x7f,
+ 0x4d, 0xf7, 0x00, 0x96, 0x81, 0x4d, 0xf8, 0x00,
+ 0x96, 0x82, 0x49, 0xce, 0x00, 0x96, 0x83, 0x4d,
+ 0xf9, 0x00, 0x96, 0x84, 0x3b, 0xa1, 0x00, 0x96,
+ 0x85, 0x06, 0xf1, 0x00, 0x96, 0x86, 0x0f, 0x7c,
+ 0x00, 0x96, 0x88, 0x06, 0xfe, 0x00, 0x96, 0x89,
+ 0x4d, 0xfa, 0x00, 0x96, 0x8a, 0x0b, 0x42, 0x00,
+ 0x96, 0x8b, 0x18, 0x6c, 0x00, 0x96, 0x8d, 0x1b,
+ 0xbf, 0x00, 0x96, 0x8e, 0x05, 0x8a, 0x00, 0x96,
+ 0x8f, 0x0a, 0x35, 0x00, 0x96, 0x91, 0x59, 0x37,
+ 0x00, 0x96, 0x94, 0x05, 0xb4, 0x00, 0x96, 0x95,
+ 0x1b, 0xc1, 0x00, 0x96, 0x96, 0x4d, 0xfb, 0x00,
+ 0x96, 0x97, 0x1b, 0xc2, 0x00, 0x96, 0x98, 0x1b,
+ 0xc0, 0x00, 0x96, 0x99, 0x07, 0x3a, 0x00, 0x96,
+ 0x9a, 0x49, 0xd0, 0x00, 0x96, 0x9b, 0x08, 0x4d,
+ 0x00, 0x96, 0x9c, 0x09, 0xcb, 0x00, 0x96, 0x9d,
+ 0x21, 0xf0, 0x00, 0x96, 0x9f, 0x59, 0x38, 0x00,
+ 0x96, 0xa0, 0x04, 0xc5, 0x00, 0x96, 0xa3, 0x0f,
+ 0xa1, 0x00, 0x96, 0xa4, 0x3b, 0xa2, 0x00, 0x96,
+ 0xa5, 0x43, 0x21, 0x00, 0x96, 0xa6, 0x59, 0x39,
+ 0x00, 0x96, 0xa7, 0x1b, 0xc4, 0x00, 0x96, 0xa8,
+ 0x1b, 0x0b, 0x00, 0x96, 0xa9, 0x3b, 0xa3, 0x00,
+ 0x96, 0xaa, 0x1b, 0xc3, 0x00, 0x96, 0xae, 0x4d,
+ 0xfc, 0x00, 0x96, 0xaf, 0x21, 0xf1, 0x00, 0x96,
+ 0xb0, 0x1b, 0xc7, 0x00, 0x96, 0xb1, 0x1b, 0xc5,
+ 0x00, 0x96, 0xb2, 0x1b, 0xc6, 0x00, 0x96, 0xb3,
+ 0x49, 0xd3, 0x00, 0x96, 0xb4, 0x1b, 0xc8, 0x00,
+ 0x96, 0xb6, 0x1b, 0xc9, 0x00, 0x96, 0xb7, 0x0f,
+ 0xb4, 0x00, 0x96, 0xb8, 0x1b, 0xca, 0x00, 0x96,
+ 0xb9, 0x1b, 0xcb, 0x00, 0x96, 0xba, 0x49, 0xd4,
+ 0x00, 0x96, 0xbb, 0x0a, 0x6d, 0x00, 0x96, 0xbc,
+ 0x0d, 0x4f, 0x00, 0x96, 0xbd, 0x49, 0xd5, 0x00,
+ 0x96, 0xc0, 0x0a, 0x43, 0x00, 0x96, 0xc1, 0x06,
+ 0x23, 0x00, 0x96, 0xc4, 0x0f, 0x24, 0x00, 0x96,
+ 0xc5, 0x05, 0x6d, 0x00, 0x96, 0xc6, 0x09, 0x42,
+ 0x00, 0x96, 0xc7, 0x07, 0x8f, 0x00, 0x96, 0xc9,
+ 0x1b, 0xce, 0x00, 0x96, 0xca, 0x59, 0x3a, 0x00,
+ 0x96, 0xcb, 0x1b, 0xcd, 0x00, 0x96, 0xcc, 0x08,
+ 0xc1, 0x00, 0x96, 0xcd, 0x1b, 0xcf, 0x00, 0x96,
+ 0xce, 0x1b, 0xcc, 0x00, 0x96, 0xd1, 0x08, 0x76,
+ 0x00, 0x96, 0xd2, 0x3b, 0xa4, 0x00, 0x96, 0xd5,
+ 0x1b, 0xd3, 0x00, 0x96, 0xd6, 0x19, 0x92, 0x00,
+ 0x96, 0xd8, 0x49, 0xd8, 0x00, 0x96, 0xd9, 0x10,
+ 0xeb, 0x00, 0x96, 0xda, 0x49, 0xd9, 0x00, 0x96,
+ 0xdb, 0x0a, 0x3d, 0x00, 0x96, 0xdc, 0x1b, 0xd1,
+ 0x00, 0x96, 0xdd, 0x49, 0xda, 0x00, 0x96, 0xde,
+ 0x3b, 0xa6, 0x00, 0x96, 0xdf, 0x59, 0x3c, 0x00,
+ 0x96, 0xe2, 0x0f, 0x6d, 0x00, 0x96, 0xe3, 0x34,
+ 0x3e, 0x00, 0x96, 0xe8, 0x04, 0xcd, 0x00, 0x96,
+ 0xe9, 0x3b, 0xa7, 0x00, 0x96, 0xea, 0x0a, 0x87,
+ 0x00, 0x96, 0xeb, 0x08, 0xe2, 0x00, 0x96, 0xef,
+ 0x43, 0x22, 0x00, 0x96, 0xf0, 0x0e, 0x07, 0x00,
+ 0x96, 0xf1, 0x3b, 0xa8, 0x00, 0x96, 0xf2, 0x04,
+ 0xe2, 0x00, 0x96, 0xf6, 0x0f, 0xb5, 0x00, 0x96,
+ 0xf7, 0x0f, 0x55, 0x00, 0x96, 0xf9, 0x1b, 0xd4,
+ 0x00, 0x96, 0xfa, 0x59, 0x3d, 0x00, 0x96, 0xfb,
+ 0x0c, 0x3f, 0x00, 0x97, 0x00, 0x09, 0x27, 0x00,
+ 0x97, 0x02, 0x3b, 0xa9, 0x00, 0x97, 0x03, 0x4d,
+ 0xfd, 0x00, 0x97, 0x04, 0x1b, 0xd5, 0x00, 0x97,
+ 0x05, 0x59, 0x3e, 0x00, 0x97, 0x06, 0x1b, 0xd6,
+ 0x00, 0x97, 0x07, 0x0a, 0x12, 0x00, 0x97, 0x08,
+ 0x1b, 0xd7, 0x00, 0x97, 0x09, 0x3b, 0xaa, 0x00,
+ 0x97, 0x0a, 0x0f, 0xb6, 0x00, 0x97, 0x0d, 0x1b,
+ 0xd2, 0x00, 0x97, 0x0e, 0x1b, 0xd9, 0x00, 0x97,
+ 0x0f, 0x1b, 0xdb, 0x00, 0x97, 0x11, 0x1b, 0xda,
+ 0x00, 0x97, 0x13, 0x1b, 0xd8, 0x00, 0x97, 0x14,
+ 0x49, 0xdc, 0x00, 0x97, 0x16, 0x1b, 0xdc, 0x00,
+ 0x97, 0x19, 0x1b, 0xdd, 0x00, 0x97, 0x1a, 0x59,
+ 0x3f, 0x00, 0x97, 0x1b, 0x4d, 0xfe, 0x00, 0x97,
+ 0x1c, 0x0a, 0xfc, 0x00, 0x97, 0x1d, 0x59, 0x40,
+ 0x00, 0x97, 0x1e, 0x05, 0x62, 0x00, 0x97, 0x21,
+ 0x4d, 0xff, 0x00, 0x97, 0x22, 0x4e, 0x00, 0x00,
+ 0x97, 0x23, 0x49, 0xdd, 0x00, 0x97, 0x24, 0x1b,
+ 0xde, 0x00, 0x97, 0x27, 0x0e, 0xc4, 0x00, 0x97,
+ 0x28, 0x4e, 0x01, 0x00, 0x97, 0x2a, 0x1b, 0xdf,
+ 0x00, 0x97, 0x30, 0x1b, 0xe0, 0x00, 0x97, 0x31,
+ 0x4e, 0x02, 0x00, 0x97, 0x32, 0x0f, 0xd0, 0x00,
+ 0x97, 0x33, 0x21, 0xf2, 0x00, 0x97, 0x36, 0x49,
+ 0xdf, 0x00, 0x97, 0x38, 0x14, 0x14, 0x00, 0x97,
+ 0x39, 0x1b, 0xe1, 0x00, 0x97, 0x3b, 0x21, 0xf3,
+ 0x00, 0x97, 0x3d, 0x1b, 0xe2, 0x00, 0x97, 0x3e,
+ 0x1b, 0xe3, 0x00, 0x97, 0x41, 0x49, 0xe0, 0x00,
+ 0x97, 0x42, 0x1b, 0xe7, 0x00, 0x97, 0x43, 0x21,
+ 0xf4, 0x00, 0x97, 0x44, 0x1b, 0xe4, 0x00, 0x97,
+ 0x46, 0x1b, 0xe5, 0x00, 0x97, 0x47, 0x49, 0xe1,
+ 0x00, 0x97, 0x48, 0x1b, 0xe6, 0x00, 0x97, 0x49,
+ 0x1b, 0xe8, 0x00, 0x97, 0x4a, 0x59, 0x42, 0x00,
+ 0x97, 0x4d, 0x21, 0xf5, 0x00, 0x97, 0x4e, 0x43,
+ 0x23, 0x00, 0x97, 0x4f, 0x21, 0xf6, 0x00, 0x97,
+ 0x51, 0x21, 0xf7, 0x00, 0x97, 0x52, 0x0a, 0x68,
+ 0x00, 0x97, 0x55, 0x4f, 0x5a, 0x00, 0x97, 0x56,
+ 0x0f, 0x03, 0x00, 0x97, 0x57, 0x49, 0xe2, 0x00,
+ 0x97, 0x58, 0x59, 0x43, 0x00, 0x97, 0x59, 0x0a,
+ 0x69, 0x00, 0x97, 0x5a, 0x3b, 0xab, 0x00, 0x97,
+ 0x5b, 0x49, 0xe3, 0x00, 0x97, 0x5c, 0x1b, 0xe9,
+ 0x00, 0x97, 0x5e, 0x0d, 0x87, 0x00, 0x97, 0x60,
+ 0x1b, 0xea, 0x00, 0x97, 0x61, 0x1d, 0x06, 0x00,
+ 0x97, 0x62, 0x0e, 0xd8, 0x00, 0x97, 0x63, 0x3b,
+ 0xac, 0x00, 0x97, 0x64, 0x1b, 0xeb, 0x00, 0x97,
+ 0x66, 0x1b, 0xec, 0x00, 0x97, 0x67, 0x4e, 0x03,
+ 0x00, 0x97, 0x68, 0x1b, 0xed, 0x00, 0x97, 0x69,
+ 0x05, 0xb5, 0x00, 0x97, 0x6a, 0x49, 0xe4, 0x00,
+ 0x97, 0x6b, 0x1b, 0xef, 0x00, 0x97, 0x6d, 0x0a,
+ 0x1f, 0x00, 0x97, 0x6e, 0x3b, 0xad, 0x00, 0x97,
+ 0x71, 0x1b, 0xf0, 0x00, 0x97, 0x73, 0x3b, 0xae,
+ 0x00, 0x97, 0x74, 0x06, 0xfa, 0x00, 0x97, 0x76,
+ 0x4e, 0x04, 0x00, 0x97, 0x77, 0x59, 0x44, 0x00,
+ 0x97, 0x78, 0x59, 0x45, 0x00, 0x97, 0x79, 0x1b,
+ 0xf1, 0x00, 0x97, 0x7a, 0x1b, 0xf5, 0x00, 0x97,
+ 0x7b, 0x59, 0x46, 0x00, 0x97, 0x7c, 0x1b, 0xf3,
+ 0x00, 0x97, 0x7d, 0x4e, 0x05, 0x00, 0x97, 0x7f,
+ 0x4e, 0x06, 0x00, 0x97, 0x80, 0x59, 0x47, 0x00,
+ 0x97, 0x81, 0x1b, 0xf4, 0x00, 0x97, 0x84, 0x05,
+ 0xd1, 0x00, 0x97, 0x85, 0x1b, 0xf2, 0x00, 0x97,
+ 0x86, 0x1b, 0xf6, 0x00, 0x97, 0x89, 0x59, 0x48,
+ 0x00, 0x97, 0x8b, 0x1b, 0xf7, 0x00, 0x97, 0x8d,
+ 0x04, 0x8c, 0x00, 0x97, 0x8f, 0x1b, 0xf8, 0x00,
+ 0x97, 0x90, 0x1b, 0xf9, 0x00, 0x97, 0x95, 0x43,
+ 0x24, 0x00, 0x97, 0x96, 0x49, 0xe7, 0x00, 0x97,
+ 0x97, 0x59, 0x49, 0x00, 0x97, 0x98, 0x09, 0xcc,
+ 0x00, 0x97, 0x99, 0x4e, 0x07, 0x00, 0x97, 0x9a,
+ 0x3b, 0xaf, 0x00, 0x97, 0x9c, 0x1b, 0xfa, 0x00,
+ 0x97, 0x9e, 0x49, 0xe8, 0x00, 0x97, 0x9f, 0x4e,
+ 0x08, 0x00, 0x97, 0xa0, 0x06, 0x61, 0x00, 0x97,
+ 0xa2, 0x3b, 0xb0, 0x00, 0x97, 0xa3, 0x1b, 0xfd,
+ 0x00, 0x97, 0xa6, 0x1b, 0xfc, 0x00, 0x97, 0xa8,
+ 0x1b, 0xfb, 0x00, 0x97, 0xab, 0x1a, 0x34, 0x00,
+ 0x97, 0xac, 0x4e, 0x09, 0x00, 0x97, 0xad, 0x0e,
+ 0x2c, 0x00, 0x97, 0xae, 0x43, 0x25, 0x00, 0x97,
+ 0xb1, 0x49, 0xe9, 0x00, 0x97, 0xb2, 0x49, 0xea,
+ 0x00, 0x97, 0xb3, 0x1b, 0xfe, 0x00, 0x97, 0xb4,
+ 0x1b, 0xff, 0x00, 0x97, 0xb5, 0x3b, 0xb1, 0x00,
+ 0x97, 0xb6, 0x3b, 0xb2, 0x00, 0x97, 0xb8, 0x59,
+ 0x4a, 0x00, 0x97, 0xb9, 0x4e, 0x0a, 0x00, 0x97,
+ 0xba, 0x43, 0x26, 0x00, 0x97, 0xbc, 0x59, 0x4b,
+ 0x00, 0x97, 0xbe, 0x49, 0xeb, 0x00, 0x97, 0xbf,
+ 0x59, 0x4c, 0x00, 0x97, 0xc1, 0x43, 0x27, 0x00,
+ 0x97, 0xc3, 0x1c, 0x00, 0x00, 0x97, 0xc4, 0x59,
+ 0x4d, 0x00, 0x97, 0xc5, 0x59, 0x4e, 0x00, 0x97,
+ 0xc6, 0x1c, 0x01, 0x00, 0x97, 0xc7, 0x59, 0x4f,
+ 0x00, 0x97, 0xc8, 0x1c, 0x02, 0x00, 0x97, 0xc9,
+ 0x43, 0x28, 0x00, 0x97, 0xca, 0x59, 0x50, 0x00,
+ 0x97, 0xcb, 0x1c, 0x03, 0x00, 0x97, 0xcc, 0x49,
+ 0xec, 0x00, 0x97, 0xcd, 0x4e, 0x0b, 0x00, 0x97,
+ 0xce, 0x59, 0x51, 0x00, 0x97, 0xd0, 0x59, 0x52,
+ 0x00, 0x97, 0xd1, 0x49, 0xed, 0x00, 0x97, 0xd3,
+ 0x06, 0x16, 0x00, 0x97, 0xd4, 0x49, 0xee, 0x00,
+ 0x97, 0xd7, 0x59, 0x53, 0x00, 0x97, 0xd8, 0x49,
+ 0xef, 0x00, 0x97, 0xd9, 0x3b, 0xb3, 0x00, 0x97,
+ 0xdb, 0x43, 0x29, 0x00, 0x97, 0xdc, 0x1c, 0x04,
+ 0x00, 0x97, 0xdd, 0x59, 0x54, 0x00, 0x97, 0xde,
+ 0x3b, 0xb4, 0x00, 0x97, 0xe0, 0x4e, 0x0c, 0x00,
+ 0x97, 0xe1, 0x49, 0xf0, 0x00, 0x97, 0xe4, 0x59,
+ 0x55, 0x00, 0x97, 0xed, 0x1c, 0x05, 0x00, 0x97,
+ 0xee, 0x0c, 0xd9, 0x00, 0x97, 0xef, 0x4e, 0x0d,
+ 0x00, 0x97, 0xf1, 0x49, 0xf1, 0x00, 0x97, 0xf2,
+ 0x1c, 0x07, 0x00, 0x97, 0xf3, 0x05, 0x3b, 0x00,
+ 0x97, 0xf4, 0x3b, 0xb5, 0x00, 0x97, 0xf5, 0x1c,
+ 0x0a, 0x00, 0x97, 0xf6, 0x1c, 0x09, 0x00, 0x97,
+ 0xf7, 0x59, 0x56, 0x00, 0x97, 0xf8, 0x59, 0x57,
+ 0x00, 0x97, 0xfa, 0x59, 0x58, 0x00, 0x97, 0xfb,
+ 0x04, 0xc6, 0x00, 0x97, 0xff, 0x06, 0xb9, 0x00,
+ 0x98, 0x01, 0x0e, 0x17, 0x00, 0x98, 0x02, 0x0b,
+ 0xd6, 0x00, 0x98, 0x03, 0x08, 0x12, 0x00, 0x98,
+ 0x04, 0x49, 0xf2, 0x00, 0x98, 0x05, 0x07, 0xf2,
+ 0x00, 0x98, 0x06, 0x09, 0x71, 0x00, 0x98, 0x07,
+ 0x4e, 0x0e, 0x00, 0x98, 0x08, 0x0a, 0x22, 0x00,
+ 0x98, 0x0a, 0x3b, 0xb6, 0x00, 0x98, 0x0c, 0x1c,
+ 0x0c, 0x00, 0x98, 0x0d, 0x49, 0xf3, 0x00, 0x98,
+ 0x0e, 0x3b, 0xb7, 0x00, 0x98, 0x0f, 0x1c, 0x0b,
+ 0x00, 0x98, 0x10, 0x0f, 0x2c, 0x00, 0x98, 0x11,
+ 0x06, 0x24, 0x00, 0x98, 0x12, 0x0d, 0x66, 0x00,
+ 0x98, 0x13, 0x0c, 0xb4, 0x00, 0x98, 0x14, 0x49,
+ 0xf4, 0x00, 0x98, 0x16, 0x49, 0xf5, 0x00, 0x98,
+ 0x17, 0x0a, 0x42, 0x00, 0x98, 0x18, 0x0f, 0x96,
+ 0x00, 0x98, 0x19, 0x59, 0x59, 0x00, 0x98, 0x1a,
+ 0x07, 0x31, 0x00, 0x98, 0x1c, 0x59, 0x5a, 0x00,
+ 0x98, 0x1e, 0x3b, 0xb8, 0x00, 0x98, 0x20, 0x59,
+ 0x5b, 0x00, 0x98, 0x21, 0x1c, 0x0f, 0x00, 0x98,
+ 0x23, 0x3b, 0xb9, 0x00, 0x98, 0x24, 0x1c, 0x0e,
+ 0x00, 0x98, 0x25, 0x49, 0xfa, 0x00, 0x98, 0x26,
+ 0x4e, 0x0f, 0x00, 0x98, 0x2b, 0x3b, 0xba, 0x00,
+ 0x98, 0x2c, 0x0e, 0x79, 0x00, 0x98, 0x2d, 0x0c,
+ 0x84, 0x00, 0x98, 0x2e, 0x4e, 0x10, 0x00, 0x98,
+ 0x2f, 0x59, 0x5c, 0x00, 0x98, 0x30, 0x1e, 0x73,
+ 0x00, 0x98, 0x32, 0x49, 0xf8, 0x00, 0x98, 0x33,
+ 0x49, 0xf9, 0x00, 0x98, 0x34, 0x04, 0xf2, 0x00,
+ 0x98, 0x35, 0x59, 0x5d, 0x00, 0x98, 0x37, 0x1c,
+ 0x10, 0x00, 0x98, 0x38, 0x1c, 0x0d, 0x00, 0x98,
+ 0x39, 0x37, 0xb3, 0x00, 0x98, 0x3b, 0x1e, 0x6c,
+ 0x00, 0x98, 0x3c, 0x0f, 0x54, 0x00, 0x98, 0x3d,
+ 0x1c, 0x11, 0x00, 0x98, 0x3e, 0x3b, 0xbb, 0x00,
+ 0x98, 0x44, 0x59, 0x5e, 0x00, 0x98, 0x46, 0x1c,
+ 0x12, 0x00, 0x98, 0x47, 0x49, 0xfb, 0x00, 0x98,
+ 0x4a, 0x59, 0x5f, 0x00, 0x98, 0x4b, 0x1c, 0x14,
+ 0x00, 0x98, 0x4c, 0x0b, 0x4a, 0x00, 0x98, 0x4d,
+ 0x05, 0xb9, 0x00, 0x98, 0x4e, 0x05, 0xba, 0x00,
+ 0x98, 0x4f, 0x1c, 0x13, 0x00, 0x98, 0x51, 0x59,
+ 0x60, 0x00, 0x98, 0x52, 0x3b, 0xbc, 0x00, 0x98,
+ 0x53, 0x3b, 0xbd, 0x00, 0x98, 0x54, 0x06, 0x25,
+ 0x00, 0x98, 0x55, 0x07, 0x66, 0x00, 0x98, 0x56,
+ 0x43, 0x2a, 0x00, 0x98, 0x57, 0x21, 0xf9, 0x00,
+ 0x98, 0x58, 0x06, 0x26, 0x00, 0x98, 0x59, 0x3b,
+ 0xbe, 0x00, 0x98, 0x5a, 0x1e, 0x48, 0x00, 0x98,
+ 0x5b, 0x0c, 0x39, 0x00, 0x98, 0x5e, 0x34, 0x54,
+ 0x00, 0x98, 0x62, 0x4e, 0x11, 0x00, 0x98, 0x63,
+ 0x4e, 0x12, 0x00, 0x98, 0x65, 0x21, 0xfa, 0x00,
+ 0x98, 0x66, 0x49, 0xfc, 0x00, 0x98, 0x67, 0x07,
+ 0x90, 0x00, 0x98, 0x6a, 0x59, 0x61, 0x00, 0x98,
+ 0x6b, 0x1c, 0x15, 0x00, 0x98, 0x6c, 0x3b, 0xbf,
+ 0x00, 0x98, 0x6f, 0x1c, 0x16, 0x00, 0x98, 0x70,
+ 0x1c, 0x17, 0x00, 0x98, 0x71, 0x1c, 0x18, 0x00,
+ 0x98, 0x73, 0x1c, 0x1a, 0x00, 0x98, 0x74, 0x1c,
+ 0x19, 0x00, 0x98, 0xa8, 0x0d, 0xe9, 0x00, 0x98,
+ 0xaa, 0x1c, 0x1b, 0x00, 0x98, 0xab, 0x49, 0xfd,
+ 0x00, 0x98, 0xad, 0x49, 0xfe, 0x00, 0x98, 0xae,
+ 0x59, 0x62, 0x00, 0x98, 0xaf, 0x1c, 0x1c, 0x00,
+ 0x98, 0xb0, 0x49, 0xff, 0x00, 0x98, 0xb1, 0x1c,
+ 0x1d, 0x00, 0x98, 0xb4, 0x4e, 0x13, 0x00, 0x98,
+ 0xb6, 0x1c, 0x1e, 0x00, 0x98, 0xb7, 0x4a, 0x01,
+ 0x00, 0x98, 0xb8, 0x3b, 0xc0, 0x00, 0x98, 0xba,
+ 0x3b, 0xc1, 0x00, 0x98, 0xbb, 0x4a, 0x02, 0x00,
+ 0x98, 0xbc, 0x4a, 0x03, 0x00, 0x98, 0xbf, 0x3b,
+ 0xc2, 0x00, 0x98, 0xc2, 0x4a, 0x04, 0x00, 0x98,
+ 0xc3, 0x1c, 0x20, 0x00, 0x98, 0xc4, 0x1c, 0x1f,
+ 0x00, 0x98, 0xc5, 0x4e, 0x14, 0x00, 0x98, 0xc6,
+ 0x1c, 0x21, 0x00, 0x98, 0xc7, 0x4a, 0x05, 0x00,
+ 0x98, 0xc8, 0x3b, 0xc3, 0x00, 0x98, 0xcb, 0x4a,
+ 0x06, 0x00, 0x98, 0xcc, 0x59, 0x63, 0x00, 0x98,
+ 0xdb, 0x0d, 0x88, 0x00, 0x98, 0xdc, 0x18, 0x39,
+ 0x00, 0x98, 0xdf, 0x09, 0xef, 0x00, 0x98, 0xe0,
+ 0x36, 0x18, 0x00, 0x98, 0xe1, 0x4a, 0x07, 0x00,
+ 0x98, 0xe2, 0x06, 0x4c, 0x00, 0x98, 0xe3, 0x4a,
+ 0x08, 0x00, 0x98, 0xe5, 0x3b, 0xc4, 0x00, 0x98,
+ 0xe6, 0x59, 0x64, 0x00, 0x98, 0xe7, 0x43, 0x2b,
+ 0x00, 0x98, 0xe9, 0x1c, 0x22, 0x00, 0x98, 0xea,
+ 0x4a, 0x09, 0x00, 0x98, 0xeb, 0x1c, 0x23, 0x00,
+ 0x98, 0xed, 0x10, 0xc1, 0x00, 0x98, 0xee, 0x14,
+ 0xda, 0x00, 0x98, 0xef, 0x21, 0xfb, 0x00, 0x98,
+ 0xf0, 0x4a, 0x0a, 0x00, 0x98, 0xf1, 0x4a, 0x0b,
+ 0x00, 0x98, 0xf2, 0x04, 0xbf, 0x00, 0x98, 0xf3,
+ 0x4a, 0x0c, 0x00, 0x98, 0xf4, 0x04, 0x7f, 0x00,
+ 0x98, 0xf6, 0x59, 0x65, 0x00, 0x98, 0xfc, 0x08,
+ 0xc2, 0x00, 0x98, 0xfd, 0x0e, 0x5e, 0x00, 0x98,
+ 0xfe, 0x09, 0xe6, 0x00, 0x99, 0x02, 0x4e, 0x15,
+ 0x00, 0x99, 0x03, 0x1c, 0x24, 0x00, 0x99, 0x05,
+ 0x0e, 0xeb, 0x00, 0x99, 0x07, 0x59, 0x66, 0x00,
+ 0x99, 0x08, 0x4a, 0x0d, 0x00, 0x99, 0x09, 0x1c,
+ 0x25, 0x00, 0x99, 0x0a, 0x0f, 0x46, 0x00, 0x99,
+ 0x0c, 0x04, 0xe4, 0x00, 0x99, 0x10, 0x08, 0x8f,
+ 0x00, 0x99, 0x11, 0x4e, 0x16, 0x00, 0x99, 0x12,
+ 0x1c, 0x26, 0x00, 0x99, 0x13, 0x05, 0x6e, 0x00,
+ 0x99, 0x14, 0x1c, 0x27, 0x00, 0x99, 0x15, 0x4e,
+ 0x17, 0x00, 0x99, 0x16, 0x4a, 0x10, 0x00, 0x99,
+ 0x17, 0x4a, 0x11, 0x00, 0x99, 0x18, 0x1c, 0x28,
+ 0x00, 0x99, 0x1a, 0x4a, 0x13, 0x00, 0x99, 0x1b,
+ 0x4a, 0x14, 0x00, 0x99, 0x1c, 0x4a, 0x15, 0x00,
+ 0x99, 0x1d, 0x1c, 0x2a, 0x00, 0x99, 0x1e, 0x1c,
+ 0x2b, 0x00, 0x99, 0x1f, 0x59, 0x67, 0x00, 0x99,
+ 0x20, 0x1c, 0x2d, 0x00, 0x99, 0x21, 0x1c, 0x29,
+ 0x00, 0x99, 0x22, 0x59, 0x68, 0x00, 0x99, 0x24,
+ 0x1c, 0x2c, 0x00, 0x99, 0x26, 0x59, 0x69, 0x00,
+ 0x99, 0x27, 0x21, 0xfd, 0x00, 0x99, 0x28, 0x06,
+ 0x17, 0x00, 0x99, 0x2b, 0x59, 0x6a, 0x00, 0x99,
+ 0x2c, 0x1c, 0x2e, 0x00, 0x99, 0x2e, 0x1c, 0x2f,
+ 0x00, 0x99, 0x31, 0x4a, 0x17, 0x00, 0x99, 0x32,
+ 0x3b, 0xc5, 0x00, 0x99, 0x33, 0x3b, 0xc6, 0x00,
+ 0x99, 0x34, 0x59, 0x6b, 0x00, 0x99, 0x35, 0x4e,
+ 0x18, 0x00, 0x99, 0x39, 0x59, 0x6c, 0x00, 0x99,
+ 0x3a, 0x4a, 0x18, 0x00, 0x99, 0x3b, 0x4a, 0x19,
+ 0x00, 0x99, 0x3c, 0x4a, 0x1a, 0x00, 0x99, 0x3d,
+ 0x1c, 0x30, 0x00, 0x99, 0x3e, 0x1c, 0x31, 0x00,
+ 0x99, 0x40, 0x3b, 0xc7, 0x00, 0x99, 0x41, 0x4a,
+ 0x1b, 0x00, 0x99, 0x42, 0x1c, 0x32, 0x00, 0x99,
+ 0x45, 0x1c, 0x34, 0x00, 0x99, 0x46, 0x4a, 0x1c,
+ 0x00, 0x99, 0x47, 0x59, 0x6d, 0x00, 0x99, 0x48,
+ 0x4e, 0x19, 0x00, 0x99, 0x49, 0x1c, 0x33, 0x00,
+ 0x99, 0x4b, 0x1c, 0x36, 0x00, 0x99, 0x4c, 0x1c,
+ 0x39, 0x00, 0x99, 0x4d, 0x3b, 0xc8, 0x00, 0x99,
+ 0x4e, 0x4a, 0x1d, 0x00, 0x99, 0x50, 0x1c, 0x35,
+ 0x00, 0x99, 0x51, 0x1c, 0x37, 0x00, 0x99, 0x52,
+ 0x1c, 0x38, 0x00, 0x99, 0x54, 0x4e, 0x1a, 0x00,
+ 0x99, 0x55, 0x1c, 0x3a, 0x00, 0x99, 0x57, 0x06,
+ 0xba, 0x00, 0x99, 0x58, 0x43, 0x2c, 0x00, 0x99,
+ 0x59, 0x59, 0x6e, 0x00, 0x99, 0x5b, 0x59, 0x6f,
+ 0x00, 0x99, 0x5c, 0x3b, 0xc9, 0x00, 0x99, 0x5e,
+ 0x4e, 0x1b, 0x00, 0x99, 0x5f, 0x3b, 0xca, 0x00,
+ 0x99, 0x60, 0x4a, 0x1e, 0x00, 0x99, 0x96, 0x09,
+ 0x1f, 0x00, 0x99, 0x97, 0x1c, 0x3b, 0x00, 0x99,
+ 0x98, 0x1c, 0x3c, 0x00, 0x99, 0x99, 0x07, 0xf3,
+ 0x00, 0x99, 0x9b, 0x59, 0x70, 0x00, 0x99, 0x9d,
+ 0x59, 0x71, 0x00, 0x99, 0x9e, 0x21, 0xff, 0x00,
+ 0x99, 0x9f, 0x59, 0x72, 0x00, 0x99, 0xa3, 0x4a,
+ 0x1f, 0x00, 0x99, 0xa5, 0x1c, 0x3d, 0x00, 0x99,
+ 0xa6, 0x4a, 0x20, 0x00, 0x99, 0xa8, 0x05, 0x9c,
+ 0x00, 0x99, 0xac, 0x0d, 0x05, 0x00, 0x99, 0xad,
+ 0x1c, 0x3e, 0x00, 0x99, 0xae, 0x1c, 0x3f, 0x00,
+ 0x99, 0xb0, 0x59, 0x73, 0x00, 0x99, 0xb1, 0x3b,
+ 0xcb, 0x00, 0x99, 0xb2, 0x59, 0x74, 0x00, 0x99,
+ 0xb3, 0x0b, 0x98, 0x00, 0x99, 0xb4, 0x0c, 0xc3,
+ 0x00, 0x99, 0xb5, 0x59, 0x75, 0x00, 0x99, 0xb9,
+ 0x3b, 0xcc, 0x00, 0x99, 0xba, 0x3b, 0xcd, 0x00,
+ 0x99, 0xbc, 0x1c, 0x40, 0x00, 0x99, 0xbd, 0x4a,
+ 0x21, 0x00, 0x99, 0xbf, 0x4a, 0x22, 0x00, 0x99,
+ 0xc1, 0x0d, 0x33, 0x00, 0x99, 0xc3, 0x4a, 0x23,
+ 0x00, 0x99, 0xc4, 0x0b, 0x2c, 0x00, 0x99, 0xc5,
+ 0x04, 0xfa, 0x00, 0x99, 0xc6, 0x06, 0xe6, 0x00,
+ 0x99, 0xc8, 0x06, 0xe7, 0x00, 0x99, 0xc9, 0x3b,
+ 0xce, 0x00, 0x99, 0xd0, 0x0b, 0xb1, 0x00, 0x99,
+ 0xd1, 0x1c, 0x45, 0x00, 0x99, 0xd2, 0x06, 0xe8,
+ 0x00, 0x99, 0xd3, 0x59, 0x76, 0x00, 0x99, 0xd4,
+ 0x4a, 0x24, 0x00, 0x99, 0xd5, 0x05, 0x6f, 0x00,
+ 0x99, 0xd8, 0x1c, 0x44, 0x00, 0x99, 0xd9, 0x4a,
+ 0x25, 0x00, 0x99, 0xda, 0x59, 0x77, 0x00, 0x99,
+ 0xdb, 0x1c, 0x42, 0x00, 0x99, 0xdc, 0x59, 0x78,
+ 0x00, 0x99, 0xdd, 0x1c, 0x43, 0x00, 0x99, 0xde,
+ 0x4a, 0x26, 0x00, 0x99, 0xdf, 0x1c, 0x41, 0x00,
+ 0x99, 0xe1, 0x4e, 0x1c, 0x00, 0x99, 0xe2, 0x1c,
+ 0x4f, 0x00, 0x99, 0xe7, 0x59, 0x79, 0x00, 0x99,
+ 0xea, 0x59, 0x7a, 0x00, 0x99, 0xeb, 0x59, 0x7b,
+ 0x00, 0x99, 0xec, 0x59, 0x7c, 0x00, 0x99, 0xed,
+ 0x1c, 0x46, 0x00, 0x99, 0xee, 0x1c, 0x47, 0x00,
+ 0x99, 0xf0, 0x4a, 0x28, 0x00, 0x99, 0xf1, 0x1c,
+ 0x48, 0x00, 0x99, 0xf2, 0x1c, 0x49, 0x00, 0x99,
+ 0xf4, 0x59, 0x7d, 0x00, 0x99, 0xf5, 0x59, 0x7e,
+ 0x00, 0x99, 0xf8, 0x1c, 0x4b, 0x00, 0x99, 0xf9,
+ 0x4a, 0x29, 0x00, 0x99, 0xfb, 0x1c, 0x4a, 0x00,
+ 0x99, 0xfc, 0x4a, 0x2a, 0x00, 0x99, 0xfd, 0x59,
+ 0x7f, 0x00, 0x99, 0xfe, 0x59, 0x80, 0x00, 0x99,
+ 0xff, 0x09, 0x63, 0x00, 0x9a, 0x01, 0x1c, 0x4c,
+ 0x00, 0x9a, 0x02, 0x3b, 0xcf, 0x00, 0x9a, 0x03,
+ 0x43, 0x2d, 0x00, 0x9a, 0x04, 0x59, 0x81, 0x00,
+ 0x9a, 0x05, 0x1c, 0x4e, 0x00, 0x9a, 0x08, 0x37,
+ 0xba, 0x00, 0x9a, 0x0a, 0x4a, 0x2b, 0x00, 0x9a,
+ 0x0b, 0x59, 0x82, 0x00, 0x9a, 0x0c, 0x4e, 0x1d,
+ 0x00, 0x9a, 0x0e, 0x06, 0x4d, 0x00, 0x9a, 0x0f,
+ 0x1c, 0x4d, 0x00, 0x9a, 0x10, 0x4e, 0x1e, 0x00,
+ 0x9a, 0x11, 0x4a, 0x2c, 0x00, 0x9a, 0x12, 0x0a,
+ 0xfd, 0x00, 0x9a, 0x13, 0x07, 0x67, 0x00, 0x9a,
+ 0x16, 0x3b, 0xd0, 0x00, 0x9a, 0x19, 0x1c, 0x50,
+ 0x00, 0x9a, 0x1a, 0x4a, 0x2d, 0x00, 0x9a, 0x1e,
+ 0x59, 0x83, 0x00, 0x9a, 0x20, 0x4a, 0x2e, 0x00,
+ 0x9a, 0x22, 0x59, 0x84, 0x00, 0x9a, 0x23, 0x4e,
+ 0x1f, 0x00, 0x9a, 0x24, 0x3b, 0xd1, 0x00, 0x9a,
+ 0x27, 0x3b, 0xd2, 0x00, 0x9a, 0x28, 0x0b, 0x2d,
+ 0x00, 0x9a, 0x2b, 0x1c, 0x51, 0x00, 0x9a, 0x2d,
+ 0x3b, 0xd3, 0x00, 0x9a, 0x2e, 0x3b, 0xd4, 0x00,
+ 0x9a, 0x30, 0x0c, 0x85, 0x00, 0x9a, 0x31, 0x4a,
+ 0x2f, 0x00, 0x9a, 0x33, 0x59, 0x85, 0x00, 0x9a,
+ 0x35, 0x59, 0x86, 0x00, 0x9a, 0x36, 0x3b, 0xd5,
+ 0x00, 0x9a, 0x37, 0x1c, 0x52, 0x00, 0x9a, 0x38,
+ 0x3b, 0xd6, 0x00, 0x9a, 0x3e, 0x1c, 0x57, 0x00,
+ 0x9a, 0x40, 0x1c, 0x55, 0x00, 0x9a, 0x41, 0x4e,
+ 0x20, 0x00, 0x9a, 0x42, 0x1c, 0x54, 0x00, 0x9a,
+ 0x43, 0x1c, 0x56, 0x00, 0x9a, 0x44, 0x4a, 0x30,
+ 0x00, 0x9a, 0x45, 0x1c, 0x53, 0x00, 0x9a, 0x47,
+ 0x59, 0x87, 0x00, 0x9a, 0x4a, 0x3b, 0xd7, 0x00,
+ 0x9a, 0x4b, 0x59, 0x89, 0x00, 0x9a, 0x4c, 0x4a,
+ 0x31, 0x00, 0x9a, 0x4d, 0x1c, 0x59, 0x00, 0x9a,
+ 0x4e, 0x22, 0x00, 0x00, 0x9a, 0x51, 0x4e, 0x21,
+ 0x00, 0x9a, 0x52, 0x1e, 0x2f, 0x00, 0x9a, 0x54,
+ 0x59, 0x8a, 0x00, 0x9a, 0x55, 0x1c, 0x58, 0x00,
+ 0x9a, 0x56, 0x3b, 0xd8, 0x00, 0x9a, 0x57, 0x1c,
+ 0x5b, 0x00, 0x9a, 0x58, 0x4a, 0x32, 0x00, 0x9a,
+ 0x5a, 0x06, 0xbb, 0x00, 0x9a, 0x5b, 0x1c, 0x5a,
+ 0x00, 0x9a, 0x5d, 0x59, 0x8b, 0x00, 0x9a, 0x5f,
+ 0x1c, 0x5c, 0x00, 0x9a, 0x62, 0x1c, 0x5d, 0x00,
+ 0x9a, 0x64, 0x1c, 0x5f, 0x00, 0x9a, 0x65, 0x1c,
+ 0x5e, 0x00, 0x9a, 0x69, 0x1c, 0x60, 0x00, 0x9a,
+ 0x6a, 0x1c, 0x62, 0x00, 0x9a, 0x6b, 0x1c, 0x61,
+ 0x00, 0x9a, 0xa8, 0x08, 0x0e, 0x00, 0x9a, 0xaa,
+ 0x59, 0x8c, 0x00, 0x9a, 0xac, 0x59, 0x8d, 0x00,
+ 0x9a, 0xad, 0x1c, 0x63, 0x00, 0x9a, 0xae, 0x59,
+ 0x8e, 0x00, 0x9a, 0xaf, 0x4a, 0x34, 0x00, 0x9a,
+ 0xb0, 0x1c, 0x64, 0x00, 0x9a, 0xb2, 0x59, 0x8f,
+ 0x00, 0x9a, 0xb4, 0x59, 0x90, 0x00, 0x9a, 0xb5,
+ 0x3b, 0xd9, 0x00, 0x9a, 0xb6, 0x3b, 0xda, 0x00,
+ 0x9a, 0xb7, 0x4a, 0x36, 0x00, 0x9a, 0xb8, 0x05,
+ 0x9a, 0x00, 0x9a, 0xb9, 0x4a, 0x38, 0x00, 0x9a,
+ 0xbb, 0x59, 0x91, 0x00, 0x9a, 0xbc, 0x1c, 0x65,
+ 0x00, 0x9a, 0xbd, 0x4e, 0x22, 0x00, 0x9a, 0xbe,
+ 0x4e, 0x23, 0x00, 0x9a, 0xbf, 0x59, 0x92, 0x00,
+ 0x9a, 0xc0, 0x1c, 0x66, 0x00, 0x9a, 0xc1, 0x43,
+ 0x2e, 0x00, 0x9a, 0xc3, 0x43, 0x2f, 0x00, 0x9a,
+ 0xc4, 0x0a, 0x37, 0x00, 0x9a, 0xc6, 0x4a, 0x3a,
+ 0x00, 0x9a, 0xc8, 0x59, 0x93, 0x00, 0x9a, 0xce,
+ 0x43, 0x30, 0x00, 0x9a, 0xcf, 0x1c, 0x67, 0x00,
+ 0x9a, 0xd0, 0x4a, 0x3b, 0x00, 0x9a, 0xd1, 0x1c,
+ 0x68, 0x00, 0x9a, 0xd2, 0x4a, 0x3c, 0x00, 0x9a,
+ 0xd3, 0x1c, 0x69, 0x00, 0x9a, 0xd4, 0x1c, 0x6a,
+ 0x00, 0x9a, 0xd5, 0x4a, 0x3d, 0x00, 0x9a, 0xd6,
+ 0x43, 0x31, 0x00, 0x9a, 0xd7, 0x59, 0x94, 0x00,
+ 0x9a, 0xd8, 0x07, 0xf4, 0x00, 0x9a, 0xd9, 0x22,
+ 0x01, 0x00, 0x9a, 0xdb, 0x59, 0x95, 0x00, 0x9a,
+ 0xdc, 0x22, 0x02, 0x00, 0x9a, 0xde, 0x1c, 0x6b,
+ 0x00, 0x9a, 0xdf, 0x1c, 0x6c, 0x00, 0x9a, 0xe0,
+ 0x4a, 0x3e, 0x00, 0x9a, 0xe2, 0x1c, 0x6d, 0x00,
+ 0x9a, 0xe3, 0x1c, 0x6e, 0x00, 0x9a, 0xe4, 0x59,
+ 0x96, 0x00, 0x9a, 0xe5, 0x4a, 0x3f, 0x00, 0x9a,
+ 0xe6, 0x1c, 0x6f, 0x00, 0x9a, 0xe7, 0x59, 0x97,
+ 0x00, 0x9a, 0xe9, 0x4a, 0x40, 0x00, 0x9a, 0xea,
+ 0x0d, 0x45, 0x00, 0x9a, 0xeb, 0x1c, 0x71, 0x00,
+ 0x9a, 0xec, 0x59, 0x98, 0x00, 0x9a, 0xed, 0x0d,
+ 0x98, 0x00, 0x9a, 0xee, 0x1c, 0x72, 0x00, 0x9a,
+ 0xef, 0x1c, 0x70, 0x00, 0x9a, 0xf1, 0x1c, 0x74,
+ 0x00, 0x9a, 0xf2, 0x59, 0x99, 0x00, 0x9a, 0xf3,
+ 0x59, 0x9a, 0x00, 0x9a, 0xf4, 0x1c, 0x73, 0x00,
+ 0x9a, 0xf5, 0x59, 0x9b, 0x00, 0x9a, 0xf7, 0x1c,
+ 0x75, 0x00, 0x9a, 0xf9, 0x3b, 0xdb, 0x00, 0x9a,
+ 0xfa, 0x59, 0x9c, 0x00, 0x9a, 0xfb, 0x1c, 0x76,
+ 0x00, 0x9a, 0xfd, 0x59, 0x9d, 0x00, 0x9a, 0xff,
+ 0x59, 0x9e, 0x00, 0x9b, 0x00, 0x59, 0x9f, 0x00,
+ 0x9b, 0x01, 0x4e, 0x24, 0x00, 0x9b, 0x02, 0x43,
+ 0x32, 0x00, 0x9b, 0x03, 0x3b, 0xdc, 0x00, 0x9b,
+ 0x04, 0x59, 0xa0, 0x00, 0x9b, 0x05, 0x59, 0xa1,
+ 0x00, 0x9b, 0x06, 0x1c, 0x77, 0x00, 0x9b, 0x08,
+ 0x43, 0x33, 0x00, 0x9b, 0x09, 0x4e, 0x25, 0x00,
+ 0x9b, 0x0b, 0x4e, 0x26, 0x00, 0x9b, 0x0c, 0x4a,
+ 0x41, 0x00, 0x9b, 0x0d, 0x4e, 0x27, 0x00, 0x9b,
+ 0x0e, 0x4e, 0x28, 0x00, 0x9b, 0x10, 0x4a, 0x42,
+ 0x00, 0x9b, 0x12, 0x4a, 0x43, 0x00, 0x9b, 0x16,
+ 0x4a, 0x44, 0x00, 0x9b, 0x18, 0x1c, 0x78, 0x00,
+ 0x9b, 0x19, 0x4e, 0x29, 0x00, 0x9b, 0x1a, 0x1c,
+ 0x79, 0x00, 0x9b, 0x1b, 0x59, 0xa2, 0x00, 0x9b,
+ 0x1c, 0x4a, 0x45, 0x00, 0x9b, 0x1d, 0x4f, 0x49,
+ 0x00, 0x9b, 0x1f, 0x1c, 0x7a, 0x00, 0x9b, 0x20,
+ 0x3b, 0xdd, 0x00, 0x9b, 0x22, 0x1c, 0x7b, 0x00,
+ 0x9b, 0x23, 0x1c, 0x7c, 0x00, 0x9b, 0x25, 0x1c,
+ 0x7d, 0x00, 0x9b, 0x26, 0x59, 0xa3, 0x00, 0x9b,
+ 0x27, 0x1c, 0x7e, 0x00, 0x9b, 0x28, 0x1c, 0x7f,
+ 0x00, 0x9b, 0x29, 0x1c, 0x80, 0x00, 0x9b, 0x2a,
+ 0x1c, 0x81, 0x00, 0x9b, 0x2b, 0x4a, 0x46, 0x00,
+ 0x9b, 0x2c, 0x4f, 0x4a, 0x00, 0x9b, 0x2d, 0x43,
+ 0x35, 0x00, 0x9b, 0x2e, 0x1c, 0x82, 0x00, 0x9b,
+ 0x2f, 0x1c, 0x83, 0x00, 0x9b, 0x31, 0x14, 0xd4,
+ 0x00, 0x9b, 0x32, 0x1c, 0x84, 0x00, 0x9b, 0x33,
+ 0x3b, 0xde, 0x00, 0x9b, 0x34, 0x3b, 0xdf, 0x00,
+ 0x9b, 0x35, 0x4e, 0x2a, 0x00, 0x9b, 0x37, 0x59,
+ 0xa5, 0x00, 0x9b, 0x39, 0x59, 0xa6, 0x00, 0x9b,
+ 0x3a, 0x59, 0xa7, 0x00, 0x9b, 0x3b, 0x17, 0xa9,
+ 0x00, 0x9b, 0x3c, 0x06, 0x4e, 0x00, 0x9b, 0x3d,
+ 0x4a, 0x47, 0x00, 0x9b, 0x41, 0x05, 0x7f, 0x00,
+ 0x9b, 0x42, 0x08, 0x22, 0x00, 0x9b, 0x43, 0x1c,
+ 0x86, 0x00, 0x9b, 0x44, 0x1c, 0x85, 0x00, 0x9b,
+ 0x45, 0x0e, 0xb1, 0x00, 0x9b, 0x48, 0x4e, 0x2b,
+ 0x00, 0x9b, 0x4b, 0x4a, 0x49, 0x00, 0x9b, 0x4c,
+ 0x59, 0xa8, 0x00, 0x9b, 0x4d, 0x1c, 0x88, 0x00,
+ 0x9b, 0x4e, 0x1c, 0x89, 0x00, 0x9b, 0x4f, 0x1c,
+ 0x87, 0x00, 0x9b, 0x51, 0x1c, 0x8a, 0x00, 0x9b,
+ 0x54, 0x0e, 0x90, 0x00, 0x9b, 0x55, 0x4e, 0x2c,
+ 0x00, 0x9b, 0x56, 0x59, 0xa9, 0x00, 0x9b, 0x57,
+ 0x59, 0xaa, 0x00, 0x9b, 0x58, 0x1c, 0x8b, 0x00,
+ 0x9b, 0x5a, 0x06, 0x95, 0x00, 0x9b, 0x5b, 0x59,
+ 0xab, 0x00, 0x9b, 0x5e, 0x43, 0x36, 0x00, 0x9b,
+ 0x61, 0x59, 0xac, 0x00, 0x9b, 0x63, 0x4a, 0x4a,
+ 0x00, 0x9b, 0x65, 0x4a, 0x4b, 0x00, 0x9b, 0x66,
+ 0x43, 0x37, 0x00, 0x9b, 0x68, 0x4e, 0x2d, 0x00,
+ 0x9b, 0x6a, 0x59, 0xad, 0x00, 0x9b, 0x6b, 0x4a,
+ 0x4c, 0x00, 0x9b, 0x6c, 0x4a, 0x4d, 0x00, 0x9b,
+ 0x6d, 0x59, 0xae, 0x00, 0x9b, 0x6e, 0x59, 0xaf,
+ 0x00, 0x9b, 0x6f, 0x0f, 0xcb, 0x00, 0x9b, 0x72,
+ 0x22, 0x04, 0x00, 0x9b, 0x73, 0x3b, 0xe0, 0x00,
+ 0x9b, 0x74, 0x1c, 0x8c, 0x00, 0x9b, 0x75, 0x22,
+ 0x03, 0x00, 0x9b, 0x76, 0x4a, 0x4e, 0x00, 0x9b,
+ 0x77, 0x4a, 0x4f, 0x00, 0x9b, 0x78, 0x59, 0xb0,
+ 0x00, 0x9b, 0x79, 0x3b, 0xe1, 0x00, 0x9b, 0x7f,
+ 0x59, 0xb1, 0x00, 0x9b, 0x80, 0x4e, 0x2e, 0x00,
+ 0x9b, 0x83, 0x1c, 0x8e, 0x00, 0x9b, 0x84, 0x43,
+ 0x38, 0x00, 0x9b, 0x85, 0x59, 0xb2, 0x00, 0x9b,
+ 0x86, 0x4e, 0x2f, 0x00, 0x9b, 0x87, 0x59, 0xb3,
+ 0x00, 0x9b, 0x89, 0x59, 0xb4, 0x00, 0x9b, 0x8a,
+ 0x43, 0x39, 0x00, 0x9b, 0x8b, 0x59, 0xb5, 0x00,
+ 0x9b, 0x8d, 0x59, 0xb6, 0x00, 0x9b, 0x8e, 0x04,
+ 0x82, 0x00, 0x9b, 0x8f, 0x22, 0x05, 0x00, 0x9b,
+ 0x90, 0x4e, 0x30, 0x00, 0x9b, 0x91, 0x1c, 0x8f,
+ 0x00, 0x9b, 0x92, 0x0d, 0xfb, 0x00, 0x9b, 0x93,
+ 0x1c, 0x8d, 0x00, 0x9b, 0x94, 0x59, 0xb7, 0x00,
+ 0x9b, 0x96, 0x1c, 0x90, 0x00, 0x9b, 0x97, 0x1c,
+ 0x91, 0x00, 0x9b, 0x9a, 0x59, 0xb8, 0x00, 0x9b,
+ 0x9d, 0x4e, 0x31, 0x00, 0x9b, 0x9e, 0x43, 0x3a,
+ 0x00, 0x9b, 0x9f, 0x1c, 0x92, 0x00, 0x9b, 0xa0,
+ 0x1c, 0x93, 0x00, 0x9b, 0xa6, 0x4a, 0x50, 0x00,
+ 0x9b, 0xa7, 0x3b, 0xe2, 0x00, 0x9b, 0xa8, 0x1c,
+ 0x94, 0x00, 0x9b, 0xa9, 0x59, 0xb9, 0x00, 0x9b,
+ 0xaa, 0x0e, 0x9c, 0x00, 0x9b, 0xab, 0x08, 0x7b,
+ 0x00, 0x9b, 0xac, 0x4a, 0x51, 0x00, 0x9b, 0xad,
+ 0x08, 0x6a, 0x00, 0x9b, 0xae, 0x0a, 0xb1, 0x00,
+ 0x9b, 0xb0, 0x4e, 0x32, 0x00, 0x9b, 0xb1, 0x22,
+ 0x06, 0x00, 0x9b, 0xb2, 0x4a, 0x53, 0x00, 0x9b,
+ 0xb4, 0x1c, 0x95, 0x00, 0x9b, 0xb7, 0x59, 0xba,
+ 0x00, 0x9b, 0xb8, 0x4a, 0x54, 0x00, 0x9b, 0xb9,
+ 0x1c, 0x98, 0x00, 0x9b, 0xbb, 0x22, 0x07, 0x00,
+ 0x9b, 0xbc, 0x59, 0xbb, 0x00, 0x9b, 0xbe, 0x4a,
+ 0x55, 0x00, 0x9b, 0xbf, 0x4e, 0x33, 0x00, 0x9b,
+ 0xc0, 0x1c, 0x96, 0x00, 0x9b, 0xc1, 0x3b, 0xe3,
+ 0x00, 0x9b, 0xc6, 0x1c, 0x99, 0x00, 0x9b, 0xc7,
+ 0x3b, 0xe4, 0x00, 0x9b, 0xc8, 0x4e, 0x34, 0x00,
+ 0x9b, 0xc9, 0x07, 0xa5, 0x00, 0x9b, 0xca, 0x1c,
+ 0x97, 0x00, 0x9b, 0xce, 0x43, 0x3b, 0x00, 0x9b,
+ 0xcf, 0x1c, 0x9a, 0x00, 0x9b, 0xd0, 0x59, 0xbc,
+ 0x00, 0x9b, 0xd1, 0x1c, 0x9b, 0x00, 0x9b, 0xd2,
+ 0x1c, 0x9c, 0x00, 0x9b, 0xd4, 0x1c, 0xa0, 0x00,
+ 0x9b, 0xd6, 0x08, 0x78, 0x00, 0x9b, 0xd7, 0x3b,
+ 0xe5, 0x00, 0x9b, 0xd8, 0x4a, 0x57, 0x00, 0x9b,
+ 0xdb, 0x0b, 0x44, 0x00, 0x9b, 0xdd, 0x4a, 0x58,
+ 0x00, 0x9b, 0xdf, 0x37, 0xbf, 0x00, 0x9b, 0xe1,
+ 0x1c, 0xa1, 0x00, 0x9b, 0xe2, 0x1c, 0x9e, 0x00,
+ 0x9b, 0xe3, 0x1c, 0x9d, 0x00, 0x9b, 0xe4, 0x1c,
+ 0x9f, 0x00, 0x9b, 0xe5, 0x43, 0x3c, 0x00, 0x9b,
+ 0xe7, 0x3b, 0xe6, 0x00, 0x9b, 0xe8, 0x07, 0x35,
+ 0x00, 0x9b, 0xea, 0x4a, 0x59, 0x00, 0x9b, 0xeb,
+ 0x3b, 0xe7, 0x00, 0x9b, 0xee, 0x4a, 0x5b, 0x00,
+ 0x9b, 0xef, 0x4a, 0x5a, 0x00, 0x9b, 0xf0, 0x1c,
+ 0xa5, 0x00, 0x9b, 0xf1, 0x1c, 0xa4, 0x00, 0x9b,
+ 0xf2, 0x1c, 0xa3, 0x00, 0x9b, 0xf3, 0x4a, 0x56,
+ 0x00, 0x9b, 0xf5, 0x04, 0x77, 0x00, 0x9b, 0xf7,
+ 0x3b, 0xe8, 0x00, 0x9b, 0xf8, 0x43, 0x3d, 0x00,
+ 0x9b, 0xf9, 0x59, 0xbd, 0x00, 0x9b, 0xfa, 0x3b,
+ 0xe9, 0x00, 0x9b, 0xfd, 0x3b, 0xea, 0x00, 0x9b,
+ 0xff, 0x4e, 0x35, 0x00, 0x9c, 0x00, 0x22, 0x08,
+ 0x00, 0x9c, 0x02, 0x4e, 0x36, 0x00, 0x9c, 0x04,
+ 0x1c, 0xaf, 0x00, 0x9c, 0x06, 0x1c, 0xab, 0x00,
+ 0x9c, 0x08, 0x1c, 0xac, 0x00, 0x9c, 0x09, 0x1c,
+ 0xa8, 0x00, 0x9c, 0x0a, 0x1c, 0xae, 0x00, 0x9c,
+ 0x0b, 0x3b, 0xeb, 0x00, 0x9c, 0x0c, 0x1c, 0xaa,
+ 0x00, 0x9c, 0x0d, 0x05, 0xc0, 0x00, 0x9c, 0x0f,
+ 0x59, 0xbe, 0x00, 0x9c, 0x10, 0x0f, 0xf2, 0x00,
+ 0x9c, 0x11, 0x59, 0xbf, 0x00, 0x9c, 0x12, 0x1c,
+ 0xad, 0x00, 0x9c, 0x13, 0x1c, 0xa9, 0x00, 0x9c,
+ 0x14, 0x1c, 0xa7, 0x00, 0x9c, 0x15, 0x1c, 0xa6,
+ 0x00, 0x9c, 0x16, 0x4a, 0x5f, 0x00, 0x9c, 0x18,
+ 0x4a, 0x60, 0x00, 0x9c, 0x19, 0x4a, 0x61, 0x00,
+ 0x9c, 0x1a, 0x4a, 0x62, 0x00, 0x9c, 0x1b, 0x1c,
+ 0xb1, 0x00, 0x9c, 0x1c, 0x4e, 0x37, 0x00, 0x9c,
+ 0x1d, 0x4a, 0x63, 0x00, 0x9c, 0x1e, 0x59, 0xc0,
+ 0x00, 0x9c, 0x21, 0x1c, 0xb4, 0x00, 0x9c, 0x22,
+ 0x4a, 0x64, 0x00, 0x9c, 0x23, 0x43, 0x3e, 0x00,
+ 0x9c, 0x24, 0x1c, 0xb3, 0x00, 0x9c, 0x25, 0x1c,
+ 0xb2, 0x00, 0x9c, 0x26, 0x59, 0xc1, 0x00, 0x9c,
+ 0x27, 0x3b, 0xec, 0x00, 0x9c, 0x28, 0x59, 0xc2,
+ 0x00, 0x9c, 0x29, 0x4a, 0x65, 0x00, 0x9c, 0x2a,
+ 0x3b, 0xed, 0x00, 0x9c, 0x2d, 0x0d, 0xbb, 0x00,
+ 0x9c, 0x2e, 0x1c, 0xb0, 0x00, 0x9c, 0x2f, 0x04,
+ 0xb7, 0x00, 0x9c, 0x30, 0x1c, 0xb5, 0x00, 0x9c,
+ 0x31, 0x4a, 0x67, 0x00, 0x9c, 0x32, 0x1c, 0xb7,
+ 0x00, 0x9c, 0x35, 0x4e, 0x38, 0x00, 0x9c, 0x36,
+ 0x3b, 0xee, 0x00, 0x9c, 0x37, 0x4a, 0x68, 0x00,
+ 0x9c, 0x39, 0x05, 0xcd, 0x00, 0x9c, 0x3a, 0x1c,
+ 0xa2, 0x00, 0x9c, 0x3b, 0x04, 0xd9, 0x00, 0x9c,
+ 0x3d, 0x59, 0xc3, 0x00, 0x9c, 0x3e, 0x1c, 0xb9,
+ 0x00, 0x9c, 0x41, 0x3b, 0xef, 0x00, 0x9c, 0x43,
+ 0x59, 0xc4, 0x00, 0x9c, 0x44, 0x4e, 0x39, 0x00,
+ 0x9c, 0x45, 0x4a, 0x69, 0x00, 0x9c, 0x46, 0x1c,
+ 0xb8, 0x00, 0x9c, 0x47, 0x1c, 0xb6, 0x00, 0x9c,
+ 0x48, 0x0b, 0x6b, 0x00, 0x9c, 0x49, 0x4a, 0x6c,
+ 0x00, 0x9c, 0x4a, 0x4a, 0x6d, 0x00, 0x9c, 0x4e,
+ 0x59, 0xc5, 0x00, 0x9c, 0x4f, 0x43, 0x3f, 0x00,
+ 0x9c, 0x50, 0x43, 0x40, 0x00, 0x9c, 0x52, 0x0e,
+ 0x9e, 0x00, 0x9c, 0x53, 0x3b, 0xf0, 0x00, 0x9c,
+ 0x54, 0x4a, 0x6f, 0x00, 0x9c, 0x56, 0x4e, 0x3a,
+ 0x00, 0x9c, 0x57, 0x0f, 0xa2, 0x00, 0x9c, 0x58,
+ 0x4a, 0x70, 0x00, 0x9c, 0x5a, 0x1c, 0xba, 0x00,
+ 0x9c, 0x5b, 0x4a, 0x71, 0x00, 0x9c, 0x5c, 0x4a,
+ 0x6a, 0x00, 0x9c, 0x5d, 0x4a, 0x72, 0x00, 0x9c,
+ 0x5e, 0x59, 0xc6, 0x00, 0x9c, 0x5f, 0x4a, 0x73,
+ 0x00, 0x9c, 0x60, 0x1c, 0xbb, 0x00, 0x9c, 0x61,
+ 0x4e, 0x3b, 0x00, 0x9c, 0x63, 0x3b, 0xf1, 0x00,
+ 0x9c, 0x65, 0x43, 0x41, 0x00, 0x9c, 0x67, 0x1c,
+ 0xbc, 0x00, 0x9c, 0x68, 0x4e, 0x3c, 0x00, 0x9c,
+ 0x69, 0x4a, 0x74, 0x00, 0x9c, 0x6a, 0x4a, 0x75,
+ 0x00, 0x9c, 0x6b, 0x4a, 0x76, 0x00, 0x9c, 0x6d,
+ 0x4a, 0x77, 0x00, 0x9c, 0x6e, 0x4a, 0x78, 0x00,
+ 0x9c, 0x70, 0x3b, 0xf2, 0x00, 0x9c, 0x72, 0x4a,
+ 0x79, 0x00, 0x9c, 0x75, 0x4a, 0x7a, 0x00, 0x9c,
+ 0x76, 0x1c, 0xbd, 0x00, 0x9c, 0x77, 0x3b, 0xf3,
+ 0x00, 0x9c, 0x78, 0x1c, 0xbe, 0x00, 0x9c, 0x7a,
+ 0x4a, 0x7b, 0x00, 0x9c, 0x7b, 0x59, 0xc7, 0x00,
+ 0x9c, 0xe5, 0x0b, 0xd7, 0x00, 0x9c, 0xe6, 0x4a,
+ 0x7c, 0x00, 0x9c, 0xe7, 0x1c, 0xbf, 0x00, 0x9c,
+ 0xe9, 0x0d, 0x4b, 0x00, 0x9c, 0xeb, 0x1c, 0xc4,
+ 0x00, 0x9c, 0xec, 0x1c, 0xc0, 0x00, 0x9c, 0xf0,
+ 0x1c, 0xc1, 0x00, 0x9c, 0xf2, 0x4a, 0x7d, 0x00,
+ 0x9c, 0xf3, 0x0e, 0x5f, 0x00, 0x9c, 0xf4, 0x0e,
+ 0xd0, 0x00, 0x9c, 0xf6, 0x0c, 0xa8, 0x00, 0x9c,
+ 0xf7, 0x59, 0xc8, 0x00, 0x9c, 0xf9, 0x59, 0xc9,
+ 0x00, 0x9d, 0x02, 0x3b, 0xf4, 0x00, 0x9d, 0x03,
+ 0x1c, 0xc5, 0x00, 0x9d, 0x06, 0x1c, 0xc6, 0x00,
+ 0x9d, 0x07, 0x0c, 0x96, 0x00, 0x9d, 0x08, 0x1c,
+ 0xc3, 0x00, 0x9d, 0x09, 0x1c, 0xc2, 0x00, 0x9d,
+ 0x0b, 0x4a, 0x7e, 0x00, 0x9d, 0x0e, 0x05, 0x2a,
+ 0x00, 0x9d, 0x11, 0x4a, 0x80, 0x00, 0x9d, 0x12,
+ 0x1c, 0xce, 0x00, 0x9d, 0x15, 0x1c, 0xcd, 0x00,
+ 0x9d, 0x17, 0x4a, 0x81, 0x00, 0x9d, 0x18, 0x4a,
+ 0x82, 0x00, 0x9d, 0x1b, 0x05, 0x17, 0x00, 0x9d,
+ 0x1c, 0x59, 0xca, 0x00, 0x9d, 0x1d, 0x43, 0x42,
+ 0x00, 0x9d, 0x1e, 0x43, 0x43, 0x00, 0x9d, 0x1f,
+ 0x1c, 0xcb, 0x00, 0x9d, 0x23, 0x1c, 0xca, 0x00,
+ 0x9d, 0x26, 0x1c, 0xc8, 0x00, 0x9d, 0x28, 0x05,
+ 0xd9, 0x00, 0x9d, 0x2a, 0x1c, 0xc7, 0x00, 0x9d,
+ 0x2b, 0x08, 0xde, 0x00, 0x9d, 0x2c, 0x05, 0x29,
+ 0x00, 0x9d, 0x2f, 0x59, 0xcb, 0x00, 0x9d, 0x30,
+ 0x4e, 0x3d, 0x00, 0x9d, 0x32, 0x4a, 0x86, 0x00,
+ 0x9d, 0x33, 0x59, 0xcc, 0x00, 0x9d, 0x34, 0x59,
+ 0xcd, 0x00, 0x9d, 0x3a, 0x59, 0xce, 0x00, 0x9d,
+ 0x3b, 0x07, 0xf5, 0x00, 0x9d, 0x3c, 0x59, 0xcf,
+ 0x00, 0x9d, 0x3d, 0x4e, 0x3e, 0x00, 0x9d, 0x3e,
+ 0x1c, 0xd1, 0x00, 0x9d, 0x3f, 0x1c, 0xd0, 0x00,
+ 0x9d, 0x41, 0x1c, 0xcf, 0x00, 0x9d, 0x42, 0x3b,
+ 0xf5, 0x00, 0x9d, 0x43, 0x43, 0x44, 0x00, 0x9d,
+ 0x44, 0x1c, 0xcc, 0x00, 0x9d, 0x45, 0x59, 0xd0,
+ 0x00, 0x9d, 0x46, 0x1c, 0xd2, 0x00, 0x9d, 0x47,
+ 0x3b, 0xf6, 0x00, 0x9d, 0x48, 0x1c, 0xd3, 0x00,
+ 0x9d, 0x4a, 0x4a, 0x88, 0x00, 0x9d, 0x50, 0x1c,
+ 0xd8, 0x00, 0x9d, 0x51, 0x1c, 0xd7, 0x00, 0x9d,
+ 0x52, 0x43, 0x45, 0x00, 0x9d, 0x53, 0x59, 0xd1,
+ 0x00, 0x9d, 0x54, 0x59, 0xd2, 0x00, 0x9d, 0x59,
+ 0x1c, 0xd9, 0x00, 0x9d, 0x5c, 0x04, 0xcf, 0x00,
+ 0x9d, 0x5d, 0x1c, 0xd4, 0x00, 0x9d, 0x5e, 0x1c,
+ 0xd5, 0x00, 0x9d, 0x5f, 0x4a, 0x89, 0x00, 0x9d,
+ 0x60, 0x08, 0x06, 0x00, 0x9d, 0x61, 0x0e, 0xc5,
+ 0x00, 0x9d, 0x62, 0x4a, 0x8a, 0x00, 0x9d, 0x63,
+ 0x3b, 0xf7, 0x00, 0x9d, 0x64, 0x1c, 0xd6, 0x00,
+ 0x9d, 0x65, 0x59, 0xd3, 0x00, 0x9d, 0x69, 0x3b,
+ 0xf8, 0x00, 0x9d, 0x6a, 0x4e, 0x3f, 0x00, 0x9d,
+ 0x6b, 0x22, 0x0a, 0x00, 0x9d, 0x6c, 0x0e, 0x60,
+ 0x00, 0x9d, 0x6f, 0x1c, 0xde, 0x00, 0x9d, 0x70,
+ 0x22, 0x09, 0x00, 0x9d, 0x72, 0x1c, 0xda, 0x00,
+ 0x9d, 0x73, 0x4a, 0x8d, 0x00, 0x9d, 0x76, 0x4a,
+ 0x8e, 0x00, 0x9d, 0x77, 0x4a, 0x8f, 0x00, 0x9d,
+ 0x7a, 0x1c, 0xdf, 0x00, 0x9d, 0x7b, 0x4e, 0x40,
+ 0x00, 0x9d, 0x7c, 0x3b, 0xf9, 0x00, 0x9d, 0x7e,
+ 0x3b, 0xfa, 0x00, 0x9d, 0x83, 0x59, 0xd4, 0x00,
+ 0x9d, 0x84, 0x4a, 0x90, 0x00, 0x9d, 0x86, 0x59,
+ 0xd5, 0x00, 0x9d, 0x87, 0x1c, 0xdc, 0x00, 0x9d,
+ 0x89, 0x1c, 0xdb, 0x00, 0x9d, 0x8a, 0x43, 0x46,
+ 0x00, 0x9d, 0x8d, 0x3b, 0xfb, 0x00, 0x9d, 0x8e,
+ 0x59, 0xd6, 0x00, 0x9d, 0x8f, 0x07, 0x32, 0x00,
+ 0x9d, 0x92, 0x59, 0xd7, 0x00, 0x9d, 0x93, 0x59,
+ 0xd8, 0x00, 0x9d, 0x95, 0x59, 0xd9, 0x00, 0x9d,
+ 0x96, 0x43, 0x47, 0x00, 0x9d, 0x97, 0x59, 0xda,
+ 0x00, 0x9d, 0x98, 0x59, 0xdb, 0x00, 0x9d, 0x99,
+ 0x4a, 0x91, 0x00, 0x9d, 0x9a, 0x1c, 0xe0, 0x00,
+ 0x9d, 0xa1, 0x4a, 0x92, 0x00, 0x9d, 0xa4, 0x1c,
+ 0xe1, 0x00, 0x9d, 0xa9, 0x1c, 0xe2, 0x00, 0x9d,
+ 0xaa, 0x59, 0xdc, 0x00, 0x9d, 0xab, 0x1c, 0xdd,
+ 0x00, 0x9d, 0xac, 0x43, 0x49, 0x00, 0x9d, 0xae,
+ 0x59, 0xdd, 0x00, 0x9d, 0xaf, 0x1c, 0xc9, 0x00,
+ 0x9d, 0xb1, 0x3b, 0xfc, 0x00, 0x9d, 0xb2, 0x1c,
+ 0xe3, 0x00, 0x9d, 0xb4, 0x22, 0x0b, 0x00, 0x9d,
+ 0xb5, 0x4a, 0x94, 0x00, 0x9d, 0xb8, 0x1c, 0xe7,
+ 0x00, 0x9d, 0xb9, 0x4a, 0x95, 0x00, 0x9d, 0xba,
+ 0x1c, 0xe8, 0x00, 0x9d, 0xbb, 0x1c, 0xe6, 0x00,
+ 0x9d, 0xbc, 0x43, 0x4a, 0x00, 0x9d, 0xbd, 0x4a,
+ 0x96, 0x00, 0x9d, 0xbf, 0x4a, 0x93, 0x00, 0x9d,
+ 0xc0, 0x43, 0x48, 0x00, 0x9d, 0xc1, 0x1c, 0xe5,
+ 0x00, 0x9d, 0xc2, 0x1c, 0xeb, 0x00, 0x9d, 0xc3,
+ 0x3b, 0xfd, 0x00, 0x9d, 0xc4, 0x1c, 0xe4, 0x00,
+ 0x9d, 0xc6, 0x1c, 0xe9, 0x00, 0x9d, 0xc7, 0x3b,
+ 0xfe, 0x00, 0x9d, 0xc9, 0x4a, 0x97, 0x00, 0x9d,
+ 0xca, 0x59, 0xdf, 0x00, 0x9d, 0xcf, 0x1c, 0xea,
+ 0x00, 0x9d, 0xd3, 0x1c, 0xed, 0x00, 0x9d, 0xd4,
+ 0x59, 0xe0, 0x00, 0x9d, 0xd5, 0x59, 0xe1, 0x00,
+ 0x9d, 0xd6, 0x3b, 0xff, 0x00, 0x9d, 0xd7, 0x1d,
+ 0xde, 0x00, 0x9d, 0xd9, 0x1c, 0xec, 0x00, 0x9d,
+ 0xda, 0x4a, 0x98, 0x00, 0x9d, 0xde, 0x59, 0xe2,
+ 0x00, 0x9d, 0xdf, 0x3c, 0x00, 0x00, 0x9d, 0xe0,
+ 0x4a, 0x99, 0x00, 0x9d, 0xe3, 0x4a, 0x9a, 0x00,
+ 0x9d, 0xe5, 0x4e, 0x41, 0x00, 0x9d, 0xe6, 0x1c,
+ 0xef, 0x00, 0x9d, 0xe7, 0x43, 0x4c, 0x00, 0x9d,
+ 0xe9, 0x4e, 0x42, 0x00, 0x9d, 0xeb, 0x3c, 0x01,
+ 0x00, 0x9d, 0xed, 0x1c, 0xf0, 0x00, 0x9d, 0xee,
+ 0x59, 0xe3, 0x00, 0x9d, 0xef, 0x1c, 0xf1, 0x00,
+ 0x9d, 0xf0, 0x59, 0xe4, 0x00, 0x9d, 0xf2, 0x0f,
+ 0xef, 0x00, 0x9d, 0xf3, 0x4e, 0x43, 0x00, 0x9d,
+ 0xf4, 0x3c, 0x02, 0x00, 0x9d, 0xf8, 0x1c, 0xee,
+ 0x00, 0x9d, 0xf9, 0x0b, 0x4b, 0x00, 0x9d, 0xfa,
+ 0x08, 0x5d, 0x00, 0x9d, 0xfd, 0x1c, 0xf2, 0x00,
+ 0x9d, 0xfe, 0x59, 0xe5, 0x00, 0x9e, 0x02, 0x4a,
+ 0x9d, 0x00, 0x9e, 0x07, 0x43, 0x4d, 0x00, 0x9e,
+ 0x0a, 0x4a, 0x9c, 0x00, 0x9e, 0x0d, 0x4a, 0x9e,
+ 0x00, 0x9e, 0x0e, 0x59, 0xe6, 0x00, 0x9e, 0x10,
+ 0x59, 0xe7, 0x00, 0x9e, 0x11, 0x59, 0xe8, 0x00,
+ 0x9e, 0x12, 0x59, 0xe9, 0x00, 0x9e, 0x15, 0x3c,
+ 0x03, 0x00, 0x9e, 0x16, 0x59, 0xea, 0x00, 0x9e,
+ 0x19, 0x22, 0x0c, 0x00, 0x9e, 0x1a, 0x1c, 0xf3,
+ 0x00, 0x9e, 0x1b, 0x1c, 0xf4, 0x00, 0x9e, 0x1c,
+ 0x4a, 0x9f, 0x00, 0x9e, 0x1d, 0x3c, 0x04, 0x00,
+ 0x9e, 0x1e, 0x1c, 0xf5, 0x00, 0x9e, 0x75, 0x1c,
+ 0xf6, 0x00, 0x9e, 0x78, 0x07, 0x68, 0x00, 0x9e,
+ 0x79, 0x1c, 0xf7, 0x00, 0x9e, 0x7a, 0x4e, 0x44,
+ 0x00, 0x9e, 0x7b, 0x4a, 0xa0, 0x00, 0x9e, 0x7c,
+ 0x1d, 0xfd, 0x00, 0x9e, 0x7d, 0x1c, 0xf8, 0x00,
+ 0x9e, 0x7f, 0x08, 0xdb, 0x00, 0x9e, 0x80, 0x4a,
+ 0xa2, 0x00, 0x9e, 0x81, 0x1c, 0xf9, 0x00, 0x9e,
+ 0x82, 0x4e, 0x45, 0x00, 0x9e, 0x83, 0x4e, 0x46,
+ 0x00, 0x9e, 0x84, 0x4e, 0x47, 0x00, 0x9e, 0x85,
+ 0x4a, 0xa3, 0x00, 0x9e, 0x87, 0x59, 0xeb, 0x00,
+ 0x9e, 0x88, 0x1c, 0xfa, 0x00, 0x9e, 0x8b, 0x1c,
+ 0xfb, 0x00, 0x9e, 0x8c, 0x1c, 0xfc, 0x00, 0x9e,
+ 0x8e, 0x59, 0xec, 0x00, 0x9e, 0x8f, 0x59, 0xed,
+ 0x00, 0x9e, 0x91, 0x1c, 0xff, 0x00, 0x9e, 0x92,
+ 0x1c, 0xfd, 0x00, 0x9e, 0x93, 0x0f, 0xe2, 0x00,
+ 0x9e, 0x95, 0x1c, 0xfe, 0x00, 0x9e, 0x96, 0x59,
+ 0xee, 0x00, 0x9e, 0x97, 0x0f, 0xb7, 0x00, 0x9e,
+ 0x98, 0x59, 0xef, 0x00, 0x9e, 0x9b, 0x4a, 0xa4,
+ 0x00, 0x9e, 0x9d, 0x1d, 0x00, 0x00, 0x9e, 0x9e,
+ 0x43, 0x4e, 0x00, 0x9e, 0x9f, 0x0f, 0xa3, 0x00,
+ 0x9e, 0xa4, 0x3c, 0x05, 0x00, 0x9e, 0xa5, 0x1d,
+ 0x01, 0x00, 0x9e, 0xa6, 0x0d, 0x34, 0x00, 0x9e,
+ 0xa8, 0x3c, 0x06, 0x00, 0x9e, 0xa9, 0x1d, 0x02,
+ 0x00, 0x9e, 0xaa, 0x1d, 0x04, 0x00, 0x9e, 0xac,
+ 0x3c, 0x07, 0x00, 0x9e, 0xad, 0x1d, 0x05, 0x00,
+ 0x9e, 0xae, 0x59, 0xf0, 0x00, 0x9e, 0xaf, 0x43,
+ 0x4f, 0x00, 0x9e, 0xb0, 0x4e, 0x48, 0x00, 0x9e,
+ 0xb3, 0x59, 0xf1, 0x00, 0x9e, 0xb4, 0x1e, 0x02,
+ 0x00, 0x9e, 0xb5, 0x1e, 0x75, 0x00, 0x9e, 0xb8,
+ 0x1d, 0x03, 0x00, 0x9e, 0xb9, 0x07, 0xff, 0x00,
+ 0x9e, 0xba, 0x0e, 0xd9, 0x00, 0x9e, 0xbb, 0x0e,
+ 0x91, 0x00, 0x9e, 0xbc, 0x12, 0x84, 0x00, 0x9e,
+ 0xbd, 0x4a, 0xa6, 0x00, 0x9e, 0xbe, 0x14, 0xff,
+ 0x00, 0x9e, 0xbf, 0x0e, 0xa9, 0x00, 0x9e, 0xc3,
+ 0x34, 0x0b, 0x00, 0x9e, 0xc4, 0x05, 0x2b, 0x00,
+ 0x9e, 0xc6, 0x59, 0xf2, 0x00, 0x9e, 0xc8, 0x59,
+ 0xf3, 0x00, 0x9e, 0xcb, 0x59, 0xf4, 0x00, 0x9e,
+ 0xcc, 0x1d, 0x07, 0x00, 0x9e, 0xcd, 0x06, 0x6a,
+ 0x00, 0x9e, 0xce, 0x1d, 0x08, 0x00, 0x9e, 0xcf,
+ 0x1d, 0x09, 0x00, 0x9e, 0xd0, 0x1d, 0x0a, 0x00,
+ 0x9e, 0xd1, 0x22, 0x0d, 0x00, 0x9e, 0xd2, 0x08,
+ 0x07, 0x00, 0x9e, 0xd4, 0x1d, 0x0b, 0x00, 0x9e,
+ 0xd5, 0x59, 0xf5, 0x00, 0x9e, 0xd8, 0x16, 0x0d,
+ 0x00, 0x9e, 0xd9, 0x0e, 0xe7, 0x00, 0x9e, 0xdb,
+ 0x0b, 0x43, 0x00, 0x9e, 0xdc, 0x1d, 0x0c, 0x00,
+ 0x9e, 0xdd, 0x1d, 0x0e, 0x00, 0x9e, 0xde, 0x1d,
+ 0x0d, 0x00, 0x9e, 0xdf, 0x4a, 0xa8, 0x00, 0x9e,
+ 0xe0, 0x1d, 0x0f, 0x00, 0x9e, 0xe4, 0x4e, 0x49,
+ 0x00, 0x9e, 0xe5, 0x1d, 0x10, 0x00, 0x9e, 0xe7,
+ 0x3c, 0x08, 0x00, 0x9e, 0xe8, 0x1d, 0x11, 0x00,
+ 0x9e, 0xec, 0x59, 0xf6, 0x00, 0x9e, 0xed, 0x59,
+ 0xf7, 0x00, 0x9e, 0xee, 0x3c, 0x09, 0x00, 0x9e,
+ 0xef, 0x1d, 0x12, 0x00, 0x9e, 0xf0, 0x4e, 0x4a,
+ 0x00, 0x9e, 0xf1, 0x59, 0xf8, 0x00, 0x9e, 0xf2,
+ 0x4e, 0x4b, 0x00, 0x9e, 0xf4, 0x1d, 0x13, 0x00,
+ 0x9e, 0xf5, 0x59, 0xf9, 0x00, 0x9e, 0xf6, 0x1d,
+ 0x14, 0x00, 0x9e, 0xf7, 0x1d, 0x15, 0x00, 0x9e,
+ 0xf8, 0x59, 0xfa, 0x00, 0x9e, 0xf9, 0x1d, 0x16,
+ 0x00, 0x9e, 0xfb, 0x1d, 0x17, 0x00, 0x9e, 0xfc,
+ 0x1d, 0x18, 0x00, 0x9e, 0xfd, 0x1d, 0x19, 0x00,
+ 0x9e, 0xff, 0x4a, 0xa9, 0x00, 0x9f, 0x02, 0x4a,
+ 0xaa, 0x00, 0x9f, 0x03, 0x4a, 0xac, 0x00, 0x9f,
+ 0x07, 0x1d, 0x1a, 0x00, 0x9f, 0x08, 0x1d, 0x1b,
+ 0x00, 0x9f, 0x09, 0x4e, 0x4c, 0x00, 0x9f, 0x0e,
+ 0x0c, 0x1e, 0x00, 0x9f, 0x0f, 0x4e, 0x4d, 0x00,
+ 0x9f, 0x10, 0x3c, 0x0a, 0x00, 0x9f, 0x11, 0x59,
+ 0xfb, 0x00, 0x9f, 0x12, 0x3c, 0x0b, 0x00, 0x9f,
+ 0x13, 0x07, 0x91, 0x00, 0x9f, 0x14, 0x4e, 0x4e,
+ 0x00, 0x9f, 0x15, 0x1d, 0x1d, 0x00, 0x9f, 0x16,
+ 0x59, 0xfc, 0x00, 0x9f, 0x17, 0x3c, 0x0c, 0x00,
+ 0x9f, 0x19, 0x3c, 0x0d, 0x00, 0x9f, 0x1a, 0x59,
+ 0xfd, 0x00, 0x9f, 0x1b, 0x4e, 0x4f, 0x00, 0x9f,
+ 0x1f, 0x59, 0xfe, 0x00, 0x9f, 0x20, 0x0a, 0xcf,
+ 0x00, 0x9f, 0x21, 0x1d, 0x1e, 0x00, 0x9f, 0x22,
+ 0x4e, 0x50, 0x00, 0x9f, 0x26, 0x4e, 0x51, 0x00,
+ 0x9f, 0x2a, 0x4e, 0x52, 0x00, 0x9f, 0x2b, 0x4e,
+ 0x53, 0x00, 0x9f, 0x2c, 0x1d, 0x1f, 0x00, 0x9f,
+ 0x2f, 0x3c, 0x0e, 0x00, 0x9f, 0x31, 0x59, 0xff,
+ 0x00, 0x9f, 0x32, 0x5a, 0x00, 0x00, 0x9f, 0x34,
+ 0x4e, 0x54, 0x00, 0x9f, 0x37, 0x3c, 0x0f, 0x00,
+ 0x9f, 0x39, 0x3c, 0x10, 0x00, 0x9f, 0x3a, 0x4a,
+ 0xad, 0x00, 0x9f, 0x3b, 0x0d, 0x93, 0x00, 0x9f,
+ 0x3c, 0x5a, 0x01, 0x00, 0x9f, 0x3d, 0x4a, 0xae,
+ 0x00, 0x9f, 0x3e, 0x1d, 0x20, 0x00, 0x9f, 0x3f,
+ 0x5a, 0x02, 0x00, 0x9f, 0x41, 0x3c, 0x11, 0x00,
+ 0x9f, 0x43, 0x5a, 0x03, 0x00, 0x9f, 0x44, 0x5a,
+ 0x04, 0x00, 0x9f, 0x45, 0x3c, 0x12, 0x00, 0x9f,
+ 0x46, 0x4a, 0xaf, 0x00, 0x9f, 0x47, 0x5a, 0x05,
+ 0x00, 0x9f, 0x4a, 0x1d, 0x21, 0x00, 0x9f, 0x4b,
+ 0x17, 0x0a, 0x00, 0x9f, 0x4e, 0x1a, 0x7b, 0x00,
+ 0x9f, 0x4f, 0x1c, 0x06, 0x00, 0x9f, 0x52, 0x1d,
+ 0x22, 0x00, 0x9f, 0x53, 0x4a, 0xb0, 0x00, 0x9f,
+ 0x54, 0x1d, 0x23, 0x00, 0x9f, 0x55, 0x4a, 0xb1,
+ 0x00, 0x9f, 0x56, 0x5a, 0x06, 0x00, 0x9f, 0x57,
+ 0x3c, 0x13, 0x00, 0x9f, 0x58, 0x4a, 0xb2, 0x00,
+ 0x9f, 0x5a, 0x4e, 0x55, 0x00, 0x9f, 0x5d, 0x4a,
+ 0xb4, 0x00, 0x9f, 0x5e, 0x5a, 0x07, 0x00, 0x9f,
+ 0x5f, 0x1d, 0x25, 0x00, 0x9f, 0x60, 0x1d, 0x26,
+ 0x00, 0x9f, 0x61, 0x1d, 0x27, 0x00, 0x9f, 0x62,
+ 0x0f, 0xb8, 0x00, 0x9f, 0x63, 0x1d, 0x24, 0x00,
+ 0x9f, 0x66, 0x1d, 0x28, 0x00, 0x9f, 0x67, 0x1d,
+ 0x29, 0x00, 0x9f, 0x68, 0x3c, 0x14, 0x00, 0x9f,
+ 0x69, 0x4a, 0xb6, 0x00, 0x9f, 0x6a, 0x1d, 0x2b,
+ 0x00, 0x9f, 0x6c, 0x1d, 0x2a, 0x00, 0x9f, 0x6d,
+ 0x4a, 0xb7, 0x00, 0x9f, 0x6e, 0x5a, 0x08, 0x00,
+ 0x9f, 0x6f, 0x4e, 0x56, 0x00, 0x9f, 0x70, 0x4a,
+ 0xb8, 0x00, 0x9f, 0x71, 0x3c, 0x15, 0x00, 0x9f,
+ 0x72, 0x1d, 0x2d, 0x00, 0x9f, 0x73, 0x5a, 0x09,
+ 0x00, 0x9f, 0x75, 0x3c, 0x16, 0x00, 0x9f, 0x76,
+ 0x1d, 0x2e, 0x00, 0x9f, 0x77, 0x1d, 0x2c, 0x00,
+ 0x9f, 0x7a, 0x5a, 0x0a, 0x00, 0x9f, 0x7d, 0x5a,
+ 0x0b, 0x00, 0x9f, 0x8d, 0x0f, 0x7e, 0x00, 0x9f,
+ 0x8f, 0x5a, 0x0c, 0x00, 0x9f, 0x90, 0x3c, 0x17,
+ 0x00, 0x9f, 0x91, 0x5a, 0x0d, 0x00, 0x9f, 0x92,
+ 0x5a, 0x0e, 0x00, 0x9f, 0x94, 0x3c, 0x18, 0x00,
+ 0x9f, 0x95, 0x1d, 0x2f, 0x00, 0x9f, 0x96, 0x5a,
+ 0x0f, 0x00, 0x9f, 0x97, 0x43, 0x50, 0x00, 0x9f,
+ 0x9c, 0x1d, 0x30, 0x00, 0x9f, 0x9d, 0x17, 0x27,
+ 0x00, 0x9f, 0x9e, 0x4e, 0x57, 0x00, 0x9f, 0xa0,
+ 0x1d, 0x31, 0x00, 0x9f, 0xa1, 0x5a, 0x10, 0x00,
+ 0x9f, 0xa2, 0x3c, 0x19, 0x00, 0x9f, 0xa3, 0x5a,
+ 0x11, 0x00, 0x9f, 0xa5, 0x4e, 0x58, 0x00, 0x9f,
+ 0xb4, 0x36, 0xe0, 0x00, 0x9f, 0xbc, 0x3c, 0x47,
+ 0x00, 0x9f, 0xbd, 0x3c, 0x45, 0x00, 0x9f, 0xbe,
+ 0x3c, 0x4a, 0x00, 0x9f, 0xbf, 0x4e, 0x64, 0x00,
+ 0x9f, 0xc0, 0x4e, 0x65, 0x00, 0x9f, 0xc1, 0x4e,
+ 0x66, 0x00, 0x9f, 0xc2, 0x4e, 0x67, 0x00, 0x9f,
+ 0xc4, 0x37, 0x09, 0x00, 0x9f, 0xc6, 0x37, 0x58,
+ 0x00, 0x9f, 0xcc, 0x4e, 0xbc, 0x00, 0xfa, 0x0e,
+ 0x20, 0xda, 0x00, 0xfa, 0x0f, 0x20, 0xe5, 0x00,
+ 0xfa, 0x11, 0x37, 0xd2, 0x00, 0xfa, 0x13, 0x21,
+ 0x31, 0x00, 0xfa, 0x14, 0x21, 0x33, 0x00, 0xfa,
+ 0x1f, 0x21, 0xa2, 0x00, 0xfa, 0x21, 0x21, 0xa5,
+ 0x00, 0xfa, 0x23, 0x21, 0xb6, 0x00, 0xfa, 0x24,
+ 0x49, 0x48, 0x00, 0xfa, 0x27, 0x21, 0xd8, 0x00,
+ 0xfa, 0x28, 0x21, 0xdf, 0x00, 0xfa, 0x29, 0x21,
+ 0xef, 0x02, 0x00, 0x0b, 0x36, 0x0f, 0x02, 0x00,
+ 0x89, 0x43, 0x51, 0x02, 0x00, 0x8a, 0x37, 0x1c,
+ 0x02, 0x00, 0xa2, 0x43, 0x58, 0x02, 0x00, 0xa4,
+ 0x43, 0x5b, 0x02, 0x00, 0xb0, 0x37, 0x81, 0x02,
+ 0x00, 0xf5, 0x4e, 0x59, 0x02, 0x01, 0x58, 0x4e,
+ 0x6b, 0x02, 0x01, 0xa2, 0x36, 0x21, 0x02, 0x02,
+ 0x13, 0x43, 0x6b, 0x02, 0x03, 0x2b, 0x43, 0x82,
+ 0x02, 0x03, 0x71, 0x43, 0x8b, 0x02, 0x03, 0x81,
+ 0x43, 0x89, 0x02, 0x03, 0xf9, 0x43, 0x8f, 0x02,
+ 0x04, 0x4a, 0x43, 0x91, 0x02, 0x05, 0x09, 0x43,
+ 0x93, 0x02, 0x05, 0x3f, 0x37, 0x6c, 0x02, 0x05,
+ 0xb1, 0x4e, 0x70, 0x02, 0x05, 0xd6, 0x43, 0x9c,
+ 0x02, 0x06, 0x11, 0x37, 0xd6, 0x02, 0x06, 0x28,
+ 0x37, 0x19, 0x02, 0x06, 0xec, 0x4e, 0x73, 0x02,
+ 0x07, 0x4f, 0x43, 0xa0, 0x02, 0x07, 0xc8, 0x4e,
+ 0xa0, 0x02, 0x08, 0x07, 0x43, 0xa7, 0x02, 0x08,
+ 0x3a, 0x43, 0xa9, 0x02, 0x08, 0xb9, 0x43, 0xaf,
+ 0x02, 0x09, 0x0e, 0x34, 0xd3, 0x02, 0x09, 0x7c,
+ 0x43, 0xb3, 0x02, 0x09, 0x84, 0x37, 0x1d, 0x02,
+ 0x09, 0x9d, 0x43, 0xb4, 0x02, 0x0a, 0x64, 0x35,
+ 0xbb, 0x02, 0x0a, 0xd3, 0x43, 0xb9, 0x02, 0x0b,
+ 0x1d, 0x43, 0xbc, 0x02, 0x0b, 0x9f, 0x35, 0xeb,
+ 0x02, 0x0b, 0xb7, 0x35, 0x8a, 0x02, 0x0d, 0x45,
+ 0x43, 0xcf, 0x02, 0x0d, 0x58, 0x4e, 0x7a, 0x02,
+ 0x0d, 0xe1, 0x43, 0xdd, 0x02, 0x0e, 0x64, 0x43,
+ 0xec, 0x02, 0x0e, 0x6d, 0x43, 0xe4, 0x02, 0x0e,
+ 0x95, 0x43, 0xe3, 0x02, 0x0f, 0x5f, 0x43, 0xef,
+ 0x02, 0x12, 0x01, 0x44, 0x06, 0x02, 0x12, 0x3d,
+ 0x36, 0x81, 0x02, 0x12, 0x55, 0x44, 0x07, 0x02,
+ 0x12, 0x74, 0x44, 0x0d, 0x02, 0x12, 0x7b, 0x44,
+ 0x09, 0x02, 0x12, 0xd7, 0x44, 0x15, 0x02, 0x12,
+ 0xe4, 0x44, 0x14, 0x02, 0x12, 0xfd, 0x44, 0x1b,
+ 0x02, 0x13, 0x1b, 0x41, 0xb0, 0x02, 0x13, 0x36,
+ 0x44, 0x1d, 0x02, 0x13, 0x44, 0x44, 0x1e, 0x02,
+ 0x13, 0xc4, 0x44, 0x29, 0x02, 0x14, 0x6d, 0x44,
+ 0x36, 0x02, 0x14, 0x6e, 0x41, 0xb5, 0x02, 0x15,
+ 0xd7, 0x44, 0x40, 0x02, 0x16, 0x47, 0x44, 0x48,
+ 0x02, 0x16, 0xb4, 0x41, 0xc6, 0x02, 0x17, 0x06,
+ 0x44, 0x54, 0x02, 0x17, 0x42, 0x44, 0x55, 0x02,
+ 0x18, 0xbd, 0x41, 0xc1, 0x02, 0x19, 0xc3, 0x44,
+ 0x75, 0x02, 0x1a, 0x1a, 0x1e, 0x91, 0x02, 0x1c,
+ 0x56, 0x44, 0x83, 0x02, 0x1d, 0x2d, 0x44, 0x88,
+ 0x02, 0x1d, 0x45, 0x44, 0x89, 0x02, 0x1d, 0x62,
+ 0x44, 0x8b, 0x02, 0x1d, 0x78, 0x44, 0x8a, 0x02,
+ 0x1d, 0x92, 0x44, 0x94, 0x02, 0x1d, 0x9c, 0x44,
+ 0x90, 0x02, 0x1d, 0xa1, 0x44, 0x8f, 0x02, 0x1d,
+ 0xb7, 0x44, 0x97, 0x02, 0x1d, 0xe0, 0x44, 0x99,
+ 0x02, 0x1e, 0x33, 0x44, 0x9a, 0x02, 0x1e, 0x34,
+ 0x41, 0xcd, 0x02, 0x1f, 0x1e, 0x44, 0xa7, 0x02,
+ 0x1f, 0x76, 0x44, 0xae, 0x02, 0x1f, 0xfa, 0x44,
+ 0xb1, 0x02, 0x21, 0x7b, 0x44, 0xbf, 0x02, 0x22,
+ 0x18, 0x4a, 0xa1, 0x02, 0x23, 0x1e, 0x44, 0xc5,
+ 0x02, 0x23, 0xad, 0x44, 0xc8, 0x02, 0x26, 0x09,
+ 0x3c, 0x53, 0x02, 0x26, 0xf3, 0x44, 0xe0, 0x02,
+ 0x28, 0x5b, 0x44, 0xef, 0x02, 0x28, 0xab, 0x44,
+ 0xf5, 0x02, 0x29, 0x8f, 0x44, 0xf9, 0x02, 0x2a,
+ 0xb8, 0x45, 0x03, 0x02, 0x2b, 0x46, 0x45, 0x10,
+ 0x02, 0x2b, 0x4f, 0x45, 0x07, 0x02, 0x2b, 0x50,
+ 0x45, 0x08, 0x02, 0x2b, 0xa6, 0x45, 0x13, 0x02,
+ 0x2c, 0x1d, 0x45, 0x12, 0x02, 0x2c, 0x24, 0x45,
+ 0x16, 0x02, 0x2d, 0xe1, 0x45, 0x2e, 0x02, 0x2e,
+ 0x42, 0x4e, 0x9c, 0x02, 0x2f, 0xeb, 0x4e, 0xa2,
+ 0x02, 0x31, 0xb6, 0x45, 0x50, 0x02, 0x31, 0xc3,
+ 0x45, 0x4e, 0x02, 0x31, 0xc4, 0x41, 0xf8, 0x02,
+ 0x31, 0xf5, 0x45, 0x4f, 0x02, 0x33, 0x72, 0x45,
+ 0x61, 0x02, 0x33, 0xcc, 0x37, 0x3c, 0x02, 0x33,
+ 0xd0, 0x45, 0x68, 0x02, 0x33, 0xd2, 0x45, 0x64,
+ 0x02, 0x33, 0xd3, 0x45, 0x63, 0x02, 0x33, 0xd5,
+ 0x45, 0x6a, 0x02, 0x33, 0xda, 0x45, 0x6c, 0x02,
+ 0x33, 0xdf, 0x45, 0x6e, 0x02, 0x33, 0xe4, 0x45,
+ 0x69, 0x02, 0x33, 0xfe, 0x3c, 0x3e, 0x02, 0x34,
+ 0x4a, 0x45, 0x76, 0x02, 0x34, 0x4b, 0x45, 0x78,
+ 0x02, 0x34, 0x51, 0x45, 0x77, 0x02, 0x34, 0x65,
+ 0x45, 0x7c, 0x02, 0x34, 0xe4, 0x45, 0x96, 0x02,
+ 0x35, 0x5a, 0x45, 0x97, 0x02, 0x35, 0x94, 0x45,
+ 0xa3, 0x02, 0x35, 0xc4, 0x42, 0x09, 0x02, 0x36,
+ 0x38, 0x45, 0xb3, 0x02, 0x36, 0x39, 0x45, 0xb1,
+ 0x02, 0x36, 0x3a, 0x3c, 0x21, 0x02, 0x36, 0x47,
+ 0x45, 0xb2, 0x02, 0x37, 0x0c, 0x45, 0xc7, 0x02,
+ 0x37, 0x1c, 0x45, 0xbe, 0x02, 0x37, 0x3f, 0x42,
+ 0x12, 0x02, 0x37, 0x63, 0x42, 0x14, 0x02, 0x37,
+ 0x64, 0x45, 0xcb, 0x02, 0x37, 0xe7, 0x45, 0xd3,
+ 0x02, 0x37, 0xf1, 0x4e, 0xb8, 0x02, 0x37, 0xff,
+ 0x45, 0xd2, 0x02, 0x38, 0x24, 0x45, 0xd8, 0x02,
+ 0x38, 0x3d, 0x45, 0xdd, 0x02, 0x3a, 0x98, 0x45,
+ 0xe9, 0x02, 0x3c, 0x7f, 0x45, 0xf6, 0x02, 0x3c,
+ 0xbe, 0x37, 0xd5, 0x02, 0x3c, 0xfe, 0x36, 0x50,
+ 0x02, 0x3d, 0x00, 0x46, 0x05, 0x02, 0x3d, 0x0e,
+ 0x47, 0xda, 0x02, 0x3d, 0x40, 0x46, 0x16, 0x02,
+ 0x3d, 0xd3, 0x46, 0x19, 0x02, 0x3d, 0xf9, 0x46,
+ 0x18, 0x02, 0x3d, 0xfa, 0x46, 0x17, 0x02, 0x3f,
+ 0x7e, 0x46, 0x3f, 0x02, 0x40, 0x4b, 0x4e, 0xc8,
+ 0x02, 0x40, 0x96, 0x46, 0x4e, 0x02, 0x41, 0x03,
+ 0x46, 0x53, 0x02, 0x41, 0xc6, 0x46, 0x5f, 0x02,
+ 0x41, 0xfe, 0x46, 0x62, 0x02, 0x42, 0xee, 0x37,
+ 0xca, 0x02, 0x43, 0xbc, 0x46, 0x77, 0x02, 0x43,
+ 0xd0, 0x1e, 0x9e, 0x02, 0x46, 0x29, 0x46, 0x81,
+ 0x02, 0x46, 0xa5, 0x46, 0x87, 0x02, 0x47, 0xf1,
+ 0x42, 0x4a, 0x02, 0x48, 0x96, 0x46, 0x9d, 0x02,
+ 0x4a, 0x4d, 0x46, 0xb8, 0x02, 0x4b, 0x56, 0x46,
+ 0xc5, 0x02, 0x4b, 0x6f, 0x46, 0xc7, 0x02, 0x4c,
+ 0x16, 0x46, 0xcc, 0x02, 0x4d, 0x14, 0x36, 0xab,
+ 0x02, 0x4e, 0x04, 0x4e, 0x5a, 0x02, 0x4e, 0x0e,
+ 0x46, 0xee, 0x02, 0x4e, 0x37, 0x46, 0xf2, 0x02,
+ 0x4e, 0x6a, 0x46, 0xf7, 0x02, 0x4e, 0x8b, 0x46,
+ 0xfa, 0x02, 0x4f, 0xf2, 0x4e, 0x5b, 0x02, 0x50,
+ 0x4a, 0x47, 0x05, 0x02, 0x50, 0x55, 0x47, 0x07,
+ 0x02, 0x51, 0x22, 0x47, 0x09, 0x02, 0x51, 0xa9,
+ 0x47, 0x0e, 0x02, 0x51, 0xcd, 0x47, 0x11, 0x02,
+ 0x51, 0xe5, 0x47, 0x10, 0x02, 0x52, 0x1e, 0x47,
+ 0x13, 0x02, 0x52, 0x4c, 0x47, 0x15, 0x02, 0x54,
+ 0x2e, 0x47, 0x21, 0x02, 0x54, 0x8e, 0x42, 0x6d,
+ 0x02, 0x54, 0xd9, 0x47, 0x29, 0x02, 0x55, 0x0e,
+ 0x42, 0x71, 0x02, 0x55, 0xa7, 0x47, 0x35, 0x02,
+ 0x56, 0x7f, 0x36, 0xfb, 0x02, 0x57, 0x71, 0x42,
+ 0x7a, 0x02, 0x57, 0xa9, 0x47, 0x48, 0x02, 0x57,
+ 0xb4, 0x47, 0x49, 0x02, 0x58, 0x74, 0x1d, 0xf6,
+ 0x02, 0x59, 0xc4, 0x42, 0x80, 0x02, 0x59, 0xcc,
+ 0x4e, 0x90, 0x02, 0x59, 0xd4, 0x47, 0x5c, 0x02,
+ 0x5a, 0xd7, 0x36, 0x62, 0x02, 0x5a, 0xe3, 0x47,
+ 0x65, 0x02, 0x5a, 0xe4, 0x47, 0x64, 0x02, 0x5a,
+ 0xf1, 0x47, 0x66, 0x02, 0x5b, 0xb2, 0x47, 0x75,
+ 0x02, 0x5c, 0x4b, 0x47, 0x7e, 0x02, 0x5c, 0x64,
+ 0x47, 0x7f, 0x02, 0x5d, 0xa1, 0x42, 0x89, 0x02,
+ 0x5e, 0x2e, 0x47, 0x8e, 0x02, 0x5e, 0x56, 0x47,
+ 0x8f, 0x02, 0x5e, 0x62, 0x47, 0x92, 0x02, 0x5e,
+ 0x65, 0x47, 0x90, 0x02, 0x5e, 0xc2, 0x47, 0x97,
+ 0x02, 0x5e, 0xd8, 0x47, 0x95, 0x02, 0x5e, 0xe8,
+ 0x47, 0x99, 0x02, 0x5f, 0x23, 0x47, 0x9a, 0x02,
+ 0x5f, 0x5c, 0x47, 0x9c, 0x02, 0x5f, 0xd4, 0x47,
+ 0xa3, 0x02, 0x5f, 0xe0, 0x47, 0xa2, 0x02, 0x5f,
+ 0xfb, 0x47, 0xa9, 0x02, 0x60, 0x0c, 0x47, 0xa8,
+ 0x02, 0x60, 0x17, 0x47, 0xb0, 0x02, 0x60, 0x60,
+ 0x47, 0xb3, 0x02, 0x60, 0xed, 0x47, 0xbd, 0x02,
+ 0x62, 0x22, 0x35, 0x7b, 0x02, 0x62, 0x6a, 0x37,
+ 0x6d, 0x02, 0x62, 0x70, 0x47, 0xd1, 0x02, 0x62,
+ 0x86, 0x47, 0xd2, 0x02, 0x63, 0x4c, 0x4f, 0x57,
+ 0x02, 0x64, 0x02, 0x47, 0xde, 0x02, 0x66, 0x7e,
+ 0x47, 0xf0, 0x02, 0x66, 0xb0, 0x37, 0x14, 0x02,
+ 0x67, 0x1d, 0x47, 0xfe, 0x02, 0x68, 0xdd, 0x48,
+ 0x0c, 0x02, 0x68, 0xea, 0x48, 0x0e, 0x02, 0x69,
+ 0x51, 0x35, 0x4e, 0x02, 0x69, 0x6f, 0x48, 0x12,
+ 0x02, 0x69, 0x99, 0x37, 0x36, 0x02, 0x69, 0xdd,
+ 0x48, 0x14, 0x02, 0x6a, 0x1e, 0x48, 0x17, 0x02,
+ 0x6a, 0x58, 0x48, 0x1b, 0x02, 0x6a, 0x8c, 0x48,
+ 0x1f, 0x02, 0x6a, 0xb7, 0x48, 0x22, 0x02, 0x6a,
+ 0xff, 0x42, 0xa7, 0x02, 0x6c, 0x29, 0x44, 0x46,
+ 0x02, 0x6c, 0x73, 0x48, 0x4a, 0x02, 0x6c, 0x9e,
+ 0x4e, 0xee, 0x02, 0x6c, 0xdd, 0x48, 0x53, 0x02,
+ 0x6e, 0x40, 0x42, 0xc1, 0x02, 0x6e, 0x65, 0x48,
+ 0x60, 0x02, 0x6f, 0x94, 0x48, 0x70, 0x02, 0x6f,
+ 0xf6, 0x48, 0x7a, 0x02, 0x6f, 0xf7, 0x48, 0x7b,
+ 0x02, 0x6f, 0xf8, 0x48, 0x79, 0x02, 0x70, 0xf4,
+ 0x42, 0xcf, 0x02, 0x71, 0x0d, 0x48, 0x8b, 0x02,
+ 0x71, 0x39, 0x48, 0x8e, 0x02, 0x73, 0xda, 0x48,
+ 0xb3, 0x02, 0x73, 0xdb, 0x48, 0xb2, 0x02, 0x73,
+ 0xfe, 0x48, 0xb9, 0x02, 0x74, 0x10, 0x48, 0xbc,
+ 0x02, 0x74, 0x49, 0x48, 0xc0, 0x02, 0x76, 0x14,
+ 0x48, 0xce, 0x02, 0x76, 0x15, 0x48, 0xcd, 0x02,
+ 0x76, 0x31, 0x48, 0xd0, 0x02, 0x76, 0x84, 0x42,
+ 0xdd, 0x02, 0x76, 0x93, 0x48, 0xd5, 0x02, 0x77,
+ 0x0e, 0x48, 0xda, 0x02, 0x77, 0x23, 0x48, 0xdc,
+ 0x02, 0x77, 0x52, 0x48, 0xe0, 0x02, 0x79, 0x85,
+ 0x48, 0xf0, 0x02, 0x79, 0xb4, 0x4e, 0xa5, 0x02,
+ 0x7a, 0x84, 0x48, 0xfc, 0x02, 0x7b, 0xb3, 0x49,
+ 0x0b, 0x02, 0x7b, 0xbe, 0x49, 0x0d, 0x02, 0x7b,
+ 0xc7, 0x49, 0x0e, 0x02, 0x7c, 0x3c, 0x4e, 0xfc,
+ 0x02, 0x7c, 0xb8, 0x49, 0x14, 0x02, 0x7d, 0x73,
+ 0x4e, 0x5c, 0x02, 0x7d, 0xa0, 0x49, 0x1c, 0x02,
+ 0x7e, 0x10, 0x49, 0x1e, 0x02, 0x7f, 0xb7, 0x36,
+ 0x4a, 0x02, 0x80, 0x8a, 0x49, 0x27, 0x02, 0x80,
+ 0xbb, 0x49, 0x2d, 0x02, 0x82, 0x77, 0x42, 0xf4,
+ 0x02, 0x82, 0x82, 0x49, 0x39, 0x02, 0x82, 0xf3,
+ 0x49, 0x3b, 0x02, 0x83, 0xcd, 0x42, 0xfa, 0x02,
+ 0x84, 0x0c, 0x49, 0x42, 0x02, 0x84, 0x55, 0x49,
+ 0x45, 0x02, 0x85, 0x6b, 0x49, 0x52, 0x02, 0x85,
+ 0xc8, 0x49, 0x55, 0x02, 0x85, 0xc9, 0x49, 0x56,
+ 0x02, 0x86, 0xd7, 0x49, 0x60, 0x02, 0x86, 0xfa,
+ 0x49, 0x63, 0x02, 0x89, 0x46, 0x49, 0x7c, 0x02,
+ 0x89, 0x49, 0x49, 0x7b, 0x02, 0x89, 0x6b, 0x49,
+ 0x81, 0x02, 0x89, 0x87, 0x37, 0xad, 0x02, 0x89,
+ 0x88, 0x49, 0x88, 0x02, 0x89, 0xba, 0x49, 0x92,
+ 0x02, 0x89, 0xbb, 0x49, 0x93, 0x02, 0x8a, 0x1e,
+ 0x49, 0x9b, 0x02, 0x8a, 0x29, 0x49, 0x9c, 0x02,
+ 0x8a, 0x43, 0x49, 0xa0, 0x02, 0x8a, 0x71, 0x49,
+ 0x9f, 0x02, 0x8a, 0x99, 0x49, 0xa7, 0x02, 0x8a,
+ 0xcd, 0x49, 0xa8, 0x02, 0x8a, 0xdd, 0x49, 0xaf,
+ 0x02, 0x8a, 0xe4, 0x49, 0xae, 0x02, 0x8b, 0xc1,
+ 0x49, 0xba, 0x02, 0x8b, 0xef, 0x49, 0xbb, 0x02,
+ 0x8c, 0xdd, 0x1d, 0xd9, 0x02, 0x8d, 0x10, 0x49,
+ 0xc2, 0x02, 0x8d, 0x71, 0x49, 0xc3, 0x02, 0x8d,
+ 0xfb, 0x49, 0xc5, 0x02, 0x8e, 0x17, 0x37, 0xb0,
+ 0x02, 0x8e, 0x1f, 0x49, 0xc6, 0x02, 0x8e, 0x36,
+ 0x49, 0xca, 0x02, 0x8e, 0x89, 0x49, 0xcd, 0x02,
+ 0x8e, 0xeb, 0x49, 0xcf, 0x02, 0x8e, 0xf6, 0x1d,
+ 0xf9, 0x02, 0x8f, 0x32, 0x49, 0xd1, 0x02, 0x8f,
+ 0xf8, 0x49, 0xd7, 0x02, 0x92, 0xa0, 0x49, 0xe5,
+ 0x02, 0x92, 0xb1, 0x49, 0xe6, 0x02, 0x94, 0x90,
+ 0x49, 0xf7, 0x02, 0x95, 0xcf, 0x4a, 0x00, 0x02,
+ 0x96, 0x7f, 0x36, 0x19, 0x02, 0x96, 0xf0, 0x4a,
+ 0x0f, 0x02, 0x97, 0x19, 0x4a, 0x12, 0x02, 0x97,
+ 0x50, 0x4a, 0x16, 0x02, 0x98, 0xc6, 0x4a, 0x27,
+ 0x02, 0x9a, 0x72, 0x4a, 0x39, 0x02, 0x9d, 0x4b,
+ 0x35, 0x95, 0x02, 0x9d, 0xdb, 0x4a, 0x52, 0x02,
+ 0x9e, 0x15, 0x4a, 0x5c, 0x02, 0x9e, 0x3d, 0x4f,
+ 0x5b, 0x02, 0x9e, 0x49, 0x4a, 0x5e, 0x02, 0x9e,
+ 0x8a, 0x4a, 0x5d, 0x02, 0x9e, 0xc4, 0x4a, 0x66,
+ 0x02, 0x9e, 0xdb, 0x4a, 0x6e, 0x02, 0x9e, 0xe9,
+ 0x4a, 0x6b, 0x02, 0x9f, 0xce, 0x4a, 0x7f, 0x02,
+ 0x9f, 0xd7, 0x4a, 0x7f, 0x02, 0xa0, 0x1a, 0x4a,
+ 0x85, 0x02, 0xa0, 0x2f, 0x4a, 0x83, 0x02, 0xa0,
+ 0x82, 0x4a, 0x8c, 0x02, 0xa0, 0xf9, 0x4a, 0x8b,
+ 0x02, 0xa1, 0x90, 0x43, 0x4b, 0x02, 0xa2, 0xb2,
+ 0x4e, 0x68, 0x02, 0xa3, 0x8c, 0x4a, 0xa5, 0x02,
+ 0xa4, 0x37, 0x4a, 0xa7, 0x02, 0xa5, 0xf1, 0x4a,
+ 0xb3, 0x02, 0xa6, 0x02, 0x4a, 0xb5, 0x02, 0xa6,
+ 0x1a, 0x4f, 0x5c, 0x02, 0xa6, 0xb2, 0x4a, 0xb9,
+ 0x02, 0xa9, 0xe6, 0x37, 0x41, 0x02, 0xb7, 0x46,
+ 0x35, 0xd4, 0x02, 0xb7, 0x51, 0x36, 0x2a, 0x02,
+ 0xb7, 0x53, 0x4e, 0x78, 0x02, 0xb7, 0x5a, 0x4e,
+ 0x80, 0x02, 0xb7, 0x5c, 0x4e, 0x81, 0x02, 0xb7,
+ 0x65, 0x4f, 0x17, 0x02, 0xb7, 0x76, 0x4e, 0x92,
+ 0x02, 0xb7, 0x77, 0x35, 0xd6, 0x02, 0xb7, 0x7c,
+ 0x4e, 0x9d, 0x02, 0xb7, 0x82, 0x4e, 0xad, 0x02,
+ 0xb7, 0x89, 0x36, 0xf0, 0x02, 0xb7, 0x8b, 0x4e,
+ 0xb5, 0x02, 0xb7, 0x8e, 0x35, 0x9c, 0x02, 0xb7,
+ 0x94, 0x4e, 0xb9, 0x02, 0xb7, 0xac, 0x4e, 0xd0,
+ 0x02, 0xb7, 0xaf, 0x4e, 0xd4, 0x02, 0xb7, 0xbd,
+ 0x37, 0x5e, 0x02, 0xb7, 0xc9, 0x4e, 0xe2, 0x02,
+ 0xb7, 0xcf, 0x4e, 0xe9, 0x02, 0xb7, 0xd2, 0x4e,
+ 0xec, 0x02, 0xb7, 0xd8, 0x35, 0x53, 0x02, 0xb7,
+ 0xf0, 0x4f, 0x10, 0x02, 0xb8, 0x0d, 0x4f, 0x20,
+ 0x02, 0xb8, 0x17, 0x4f, 0x24, 0x02, 0xb8, 0x1a,
+ 0x37, 0xc6, 0x00, 0x00, 0x04, 0xb7, 0x00, 0x34,
+ 0x02, 0x35, 0x81, 0x00, 0x4e, 0x08, 0x34, 0x97,
+ 0x00, 0x4e, 0x0e, 0x4e, 0x69, 0x00, 0x4e, 0x19,
+ 0x36, 0xb9, 0x00, 0x4e, 0x26, 0x4e, 0x6a, 0x00,
+ 0x4e, 0x30, 0x3c, 0x1a, 0x00, 0x4e, 0x39, 0x36,
+ 0x5a, 0x00, 0x4e, 0x3b, 0x35, 0xf4, 0x00, 0x4e,
+ 0x73, 0x36, 0x90, 0x00, 0x4e, 0xa1, 0x36, 0xcf,
+ 0x00, 0x4e, 0xa4, 0x34, 0x7f, 0x00, 0x4e, 0xca,
+ 0x35, 0xd4, 0x00, 0x4f, 0x34, 0x36, 0xa0, 0x00,
+ 0x4f, 0x4f, 0x35, 0xfc, 0x00, 0x4f, 0x60, 0x3c,
+ 0x1c, 0x00, 0x4f, 0x73, 0x4e, 0x6c, 0x00, 0x4f,
+ 0x75, 0x34, 0x47, 0x00, 0x4f, 0x7f, 0x34, 0x8a,
+ 0x00, 0x4f, 0xae, 0x34, 0x46, 0x00, 0x4f, 0xb5,
+ 0x36, 0x1b, 0x00, 0x4f, 0xbf, 0x34, 0xc2, 0x00,
+ 0x50, 0x24, 0x36, 0x5f, 0x00, 0x50, 0x26, 0x1d,
+ 0xfa, 0x00, 0x50, 0x49, 0x34, 0x61, 0x00, 0x50,
+ 0x4f, 0x36, 0xbe, 0x00, 0x50, 0x56, 0x4e, 0x6d,
+ 0x00, 0x50, 0x65, 0x34, 0x7b, 0x00, 0x50, 0x85,
+ 0x34, 0xd0, 0x00, 0x50, 0x91, 0x34, 0x79, 0x00,
+ 0x50, 0xc5, 0x1d, 0xee, 0x00, 0x50, 0xca, 0x1f,
+ 0x2e, 0x00, 0x50, 0xcf, 0x34, 0xa2, 0x00, 0x50,
+ 0xe7, 0x34, 0x30, 0x00, 0x50, 0xed, 0x4e, 0x6e,
+ 0x00, 0x50, 0xf2, 0x52, 0xac, 0x00, 0x51, 0x1a,
+ 0x37, 0x16, 0x00, 0x51, 0x32, 0x1e, 0x76, 0x00,
+ 0x51, 0x46, 0x34, 0xa5, 0x00, 0x51, 0x4d, 0x34,
+ 0x4d, 0x00, 0x51, 0x4e, 0x36, 0x7d, 0x00, 0x51,
+ 0x54, 0x10, 0x74, 0x00, 0x51, 0x68, 0x36, 0x42,
+ 0x00, 0x51, 0x6b, 0x4e, 0x6f, 0x00, 0x51, 0x6c,
+ 0x34, 0x80, 0x00, 0x51, 0x77, 0x35, 0xa5, 0x00,
+ 0x51, 0x7c, 0x35, 0xb4, 0x00, 0x51, 0x89, 0x1e,
+ 0x87, 0x00, 0x51, 0x8d, 0x08, 0x36, 0x00, 0x51,
+ 0x92, 0x36, 0xd6, 0x00, 0x51, 0x93, 0x34, 0xd1,
+ 0x00, 0x51, 0x95, 0x10, 0x82, 0x00, 0x51, 0xa4,
+ 0x1e, 0x89, 0x00, 0x51, 0xac, 0x0c, 0x59, 0x00,
+ 0x51, 0xb4, 0x34, 0x5c, 0x00, 0x51, 0xcb, 0x1e,
+ 0x3e, 0x00, 0x51, 0xdb, 0x34, 0xd2, 0x00, 0x51,
+ 0xde, 0x4f, 0x53, 0x00, 0x51, 0xe1, 0x36, 0xd9,
+ 0x00, 0x51, 0xfd, 0x4e, 0x72, 0x00, 0x52, 0x03,
+ 0x36, 0x22, 0x00, 0x52, 0x06, 0x34, 0xbb, 0x00,
+ 0x52, 0x24, 0x36, 0xa1, 0x00, 0x52, 0x38, 0x35,
+ 0xb5, 0x00, 0x52, 0x4a, 0x35, 0xdd, 0x00, 0x52,
+ 0x4d, 0x36, 0x41, 0x00, 0x52, 0x64, 0x4e, 0x74,
+ 0x00, 0x52, 0x71, 0x4e, 0x75, 0x00, 0x52, 0x72,
+ 0x05, 0xc2, 0x00, 0x52, 0x75, 0x1e, 0x2b, 0x00,
+ 0x52, 0x8d, 0x37, 0x1a, 0x00, 0x52, 0xc7, 0x36,
+ 0xf6, 0x00, 0x52, 0xc9, 0x0e, 0x29, 0x00, 0x52,
+ 0xd7, 0x37, 0x1b, 0x00, 0x52, 0xdd, 0x36, 0x05,
+ 0x00, 0x52, 0xe2, 0x36, 0x2a, 0x00, 0x52, 0xe4,
+ 0x34, 0x1a, 0x00, 0x52, 0xfa, 0x09, 0x07, 0x00,
+ 0x53, 0x00, 0x37, 0xcf, 0x00, 0x53, 0x05, 0x36,
+ 0xc3, 0x00, 0x53, 0x07, 0x20, 0xd4, 0x00, 0x53,
+ 0x15, 0x1f, 0x2f, 0x00, 0x53, 0x16, 0x35, 0x61,
+ 0x00, 0x53, 0x39, 0x36, 0xaa, 0x00, 0x53, 0x3f,
+ 0x4e, 0x77, 0x00, 0x53, 0x40, 0x34, 0xd4, 0x00,
+ 0x53, 0x4a, 0x36, 0xa2, 0x00, 0x53, 0x51, 0x0d,
+ 0x70, 0x00, 0x53, 0x5a, 0x36, 0x98, 0x00, 0x53,
+ 0x65, 0x52, 0xf3, 0x00, 0x53, 0x71, 0x35, 0x80,
+ 0x00, 0x53, 0x78, 0x35, 0x5f, 0x00, 0x53, 0x7f,
+ 0x06, 0xa2, 0x00, 0x53, 0xa9, 0x1d, 0xd8, 0x00,
+ 0x53, 0xc9, 0x4f, 0x39, 0x00, 0x53, 0xca, 0x35,
+ 0x8e, 0x00, 0x53, 0xce, 0x34, 0x8f, 0x00, 0x53,
+ 0xd7, 0x35, 0xf5, 0x00, 0x53, 0xdb, 0x1f, 0x2a,
+ 0x00, 0x53, 0xdf, 0x37, 0x1f, 0x00, 0x53, 0xe0,
+ 0x53, 0x00, 0x00, 0x53, 0xf1, 0x1e, 0x0c, 0x00,
+ 0x53, 0xf2, 0x34, 0x8b, 0x00, 0x54, 0x0f, 0x34,
+ 0xc9, 0x00, 0x54, 0x38, 0x35, 0x8f, 0x00, 0x54,
+ 0x40, 0x4e, 0x79, 0x00, 0x54, 0x48, 0x36, 0x76,
+ 0x00, 0x54, 0x68, 0x09, 0x2a, 0x00, 0x54, 0xac,
+ 0x4f, 0x35, 0x00, 0x54, 0xb2, 0x35, 0xdc, 0x00,
+ 0x54, 0xe8, 0x1e, 0x17, 0x00, 0x55, 0x10, 0x36,
+ 0x83, 0x00, 0x55, 0x33, 0x1e, 0x8b, 0x00, 0x55,
+ 0x39, 0x1e, 0x8a, 0x00, 0x55, 0x44, 0x1e, 0x32,
+ 0x00, 0x55, 0x46, 0x36, 0x06, 0x00, 0x55, 0x53,
+ 0x35, 0xaa, 0x00, 0x55, 0x61, 0x38, 0x39, 0x00,
+ 0x55, 0x84, 0x4e, 0x5e, 0x00, 0x55, 0x9c, 0x4e,
+ 0x7b, 0x00, 0x55, 0x9d, 0x1d, 0xe3, 0x00, 0x55,
+ 0xa9, 0x1f, 0x30, 0x00, 0x55, 0xab, 0x35, 0x8b,
+ 0x00, 0x55, 0xb0, 0x1d, 0xf0, 0x00, 0x55, 0xe4,
+ 0x1e, 0x8c, 0x00, 0x56, 0x05, 0x53, 0x2d, 0x00,
+ 0x56, 0x06, 0x0b, 0x70, 0x00, 0x56, 0x09, 0x4e,
+ 0x7d, 0x00, 0x56, 0x32, 0x1e, 0x8d, 0x00, 0x56,
+ 0x42, 0x1d, 0xda, 0x00, 0x56, 0x4c, 0x1e, 0x29,
+ 0x00, 0x56, 0x68, 0x34, 0x15, 0x00, 0x56, 0x74,
+ 0x34, 0xbc, 0x00, 0x56, 0x78, 0x1e, 0x52, 0x00,
+ 0x56, 0xa5, 0x1e, 0x8e, 0x00, 0x56, 0xae, 0x1f,
+ 0x31, 0x00, 0x56, 0xc0, 0x37, 0x24, 0x00, 0x56,
+ 0xc1, 0x34, 0xd7, 0x00, 0x56, 0xce, 0x4e, 0x82,
+ 0x00, 0x56, 0xee, 0x4e, 0x83, 0x00, 0x57, 0x0d,
+ 0x34, 0xd8, 0x00, 0x57, 0x47, 0x34, 0x78, 0x00,
+ 0x57, 0x6a, 0x36, 0x74, 0x00, 0x57, 0xce, 0x09,
+ 0xd3, 0x00, 0x57, 0xd6, 0x4e, 0x84, 0x00, 0x57,
+ 0xf4, 0x34, 0x98, 0x00, 0x58, 0x0b, 0x1e, 0x8f,
+ 0x00, 0x58, 0x19, 0x1f, 0x32, 0x00, 0x58, 0x35,
+ 0x1e, 0x49, 0x00, 0x58, 0x3d, 0x4e, 0x85, 0x00,
+ 0x58, 0x40, 0x34, 0x48, 0x00, 0x58, 0x58, 0x1e,
+ 0x4d, 0x00, 0x58, 0x59, 0x4e, 0x86, 0x00, 0x58,
+ 0x5a, 0x1e, 0x42, 0x00, 0x58, 0x9c, 0x36, 0x71,
+ 0x00, 0x58, 0xa8, 0x0e, 0x7d, 0x00, 0x58, 0xab,
+ 0x34, 0xd9, 0x00, 0x59, 0x06, 0x53, 0x7b, 0x00,
+ 0x59, 0x1b, 0x1f, 0x33, 0x00, 0x59, 0x27, 0x36,
+ 0x55, 0x00, 0x59, 0x4f, 0x4e, 0x87, 0x00, 0x59,
+ 0x51, 0x35, 0xab, 0x00, 0x59, 0x53, 0x37, 0xd1,
+ 0x00, 0x59, 0x60, 0x4e, 0x89, 0x00, 0x59, 0x62,
+ 0x4e, 0x8a, 0x00, 0x59, 0x73, 0x36, 0x04, 0x00,
+ 0x59, 0x84, 0x36, 0xe7, 0x00, 0x59, 0xa5, 0x36,
+ 0x4f, 0x00, 0x59, 0xc9, 0x34, 0x8c, 0x00, 0x59,
+ 0xda, 0x34, 0xda, 0x00, 0x59, 0xec, 0x36, 0xae,
+ 0x00, 0x59, 0xff, 0x35, 0xe0, 0x00, 0x5a, 0x1c,
+ 0x37, 0x26, 0x00, 0x5a, 0x29, 0x1e, 0x6f, 0x00,
+ 0x5a, 0x36, 0x34, 0xdb, 0x00, 0x5a, 0x66, 0x36,
+ 0xb2, 0x00, 0x5a, 0x9b, 0x1e, 0x68, 0x00, 0x5a,
+ 0xbe, 0x1e, 0x90, 0x00, 0x5a, 0xc2, 0x37, 0x27,
+ 0x00, 0x5a, 0xcc, 0x1d, 0xfb, 0x00, 0x5a, 0xda,
+ 0x4e, 0x8b, 0x00, 0x5b, 0x5a, 0x4e, 0x8c, 0x00,
+ 0x5b, 0x73, 0x4e, 0x8d, 0x00, 0x5b, 0x7c, 0x4e,
+ 0x8e, 0x00, 0x5b, 0xb3, 0x34, 0x6d, 0x00, 0x5b,
+ 0xb5, 0x36, 0x07, 0x00, 0x5b, 0xc3, 0x37, 0x29,
+ 0x00, 0x5b, 0xd2, 0x35, 0x78, 0x00, 0x5b, 0xdb,
+ 0x20, 0xf4, 0x00, 0x5b, 0xe7, 0x0c, 0xe1, 0x00,
+ 0x5b, 0xe8, 0x37, 0x42, 0x00, 0x5c, 0x06, 0x09,
+ 0x95, 0x00, 0x5c, 0x0a, 0x36, 0x4d, 0x00, 0x5c,
+ 0x0b, 0x36, 0x23, 0x00, 0x5c, 0x0e, 0x36, 0x8a,
+ 0x00, 0x5c, 0x0f, 0x36, 0x09, 0x00, 0x5c, 0x28,
+ 0x1f, 0x34, 0x00, 0x5c, 0x51, 0x1d, 0xf2, 0x00,
+ 0x5c, 0x60, 0x1e, 0x4a, 0x00, 0x5c, 0x64, 0x34,
+ 0x31, 0x00, 0x5c, 0x6e, 0x12, 0x32, 0x00, 0x5d,
+ 0x29, 0x36, 0xc4, 0x00, 0x5d, 0x4e, 0x34, 0xdd,
+ 0x00, 0x5d, 0x87, 0x34, 0xde, 0x00, 0x5d, 0xb2,
+ 0x3c, 0x2d, 0x00, 0x5d, 0xc9, 0x34, 0xdf, 0x00,
+ 0x5d, 0xcc, 0x34, 0x73, 0x00, 0x5d, 0xd3, 0x34,
+ 0xe0, 0x00, 0x5d, 0xe1, 0x35, 0xff, 0x00, 0x5d,
+ 0xe5, 0x35, 0xc3, 0x00, 0x5d, 0xe8, 0x35, 0x92,
+ 0x00, 0x5d, 0xf7, 0x1d, 0xff, 0x00, 0x5d, 0xfd,
+ 0x0b, 0x65, 0x00, 0x5e, 0x06, 0x36, 0xa3, 0x00,
+ 0x5e, 0x1d, 0x36, 0x77, 0x00, 0x5e, 0x30, 0x34,
+ 0x75, 0x00, 0x5e, 0x3d, 0x36, 0xd0, 0x00, 0x5e,
+ 0x43, 0x4e, 0x91, 0x00, 0x5e, 0x54, 0x37, 0x2d,
+ 0x00, 0x5e, 0x63, 0x36, 0xba, 0x00, 0x5e, 0x64,
+ 0x1e, 0x93, 0x00, 0x5e, 0x73, 0x36, 0xbb, 0x00,
+ 0x5e, 0x7e, 0x35, 0x84, 0x00, 0x5e, 0x96, 0x1e,
+ 0x70, 0x00, 0x5e, 0xa7, 0x4e, 0x92, 0x00, 0x5e,
+ 0xad, 0x34, 0xa9, 0x00, 0x5e, 0xc9, 0x0f, 0xbf,
+ 0x00, 0x5e, 0xca, 0x4f, 0x4f, 0x00, 0x5e, 0xcb,
+ 0x38, 0xae, 0x00, 0x5e, 0xcf, 0x1f, 0x36, 0x00,
+ 0x5e, 0xd0, 0x1f, 0x35, 0x00, 0x5e, 0xdf, 0x1e,
+ 0x6a, 0x00, 0x5e, 0xe0, 0x1e, 0x18, 0x00, 0x5e,
+ 0xe3, 0x37, 0x2f, 0x00, 0x5e, 0xf6, 0x34, 0x67,
+ 0x00, 0x5e, 0xf7, 0x34, 0xaa, 0x00, 0x5e, 0xfa,
+ 0x34, 0x7c, 0x00, 0x5e, 0xfb, 0x35, 0x69, 0x00,
+ 0x5f, 0x0a, 0x36, 0xbc, 0x00, 0x5f, 0x2d, 0x34,
+ 0xe1, 0x00, 0x5f, 0x31, 0x35, 0xf3, 0x00, 0x5f,
+ 0x38, 0x4e, 0x94, 0x00, 0x5f, 0x45, 0x37, 0xce,
+ 0x00, 0x5f, 0x50, 0x3c, 0x1f, 0x00, 0x5f, 0x62,
+ 0x4e, 0x5f, 0x00, 0x5f, 0x69, 0x35, 0xd7, 0x00,
+ 0x5f, 0x6b, 0x36, 0x68, 0x00, 0x5f, 0x80, 0x35,
+ 0x5d, 0x00, 0x5f, 0x98, 0x34, 0xe2, 0x00, 0x5f,
+ 0xa1, 0x4e, 0x95, 0x00, 0x5f, 0xae, 0x36, 0xa8,
+ 0x00, 0x5f, 0xb5, 0x36, 0x69, 0x00, 0x5f, 0xbd,
+ 0x1d, 0xea, 0x00, 0x5f, 0xcd, 0x36, 0x91, 0x00,
+ 0x5f, 0xd8, 0x36, 0xd1, 0x00, 0x5f, 0xd9, 0x36,
+ 0xd2, 0x00, 0x5f, 0xdd, 0x4e, 0x96, 0x00, 0x60,
+ 0x25, 0x35, 0x90, 0x00, 0x60, 0x50, 0x35, 0x99,
+ 0x00, 0x60, 0x62, 0x1d, 0xe0, 0x00, 0x60, 0x65,
+ 0x34, 0xa4, 0x00, 0x60, 0x75, 0x35, 0xac, 0x00,
+ 0x60, 0x94, 0x05, 0x79, 0x00, 0x60, 0x97, 0x1e,
+ 0x94, 0x00, 0x60, 0x9e, 0x54, 0x36, 0x00, 0x60,
+ 0xa4, 0x3c, 0x20, 0x00, 0x60, 0xb2, 0x34, 0xb3,
+ 0x00, 0x60, 0xc5, 0x36, 0x12, 0x00, 0x60, 0xd8,
+ 0x34, 0xe3, 0x00, 0x61, 0x08, 0x1e, 0x7a, 0x00,
+ 0x61, 0x09, 0x36, 0xf3, 0x00, 0x61, 0x0f, 0x35,
+ 0x47, 0x00, 0x61, 0x3d, 0x34, 0xe4, 0x00, 0x61,
+ 0x48, 0x4e, 0x60, 0x00, 0x61, 0x4c, 0x35, 0xc4,
+ 0x00, 0x61, 0x4e, 0x34, 0x2c, 0x00, 0x61, 0x62,
+ 0x4e, 0x97, 0x00, 0x61, 0x67, 0x1d, 0xf5, 0x00,
+ 0x61, 0x68, 0x34, 0x10, 0x00, 0x61, 0x8e, 0x0b,
+ 0x00, 0x00, 0x61, 0x90, 0x37, 0x10, 0x00, 0x61,
+ 0xa4, 0x34, 0xbd, 0x00, 0x61, 0xb2, 0x35, 0xb6,
+ 0x00, 0x61, 0xf2, 0x34, 0x39, 0x00, 0x61, 0xf8,
+ 0x4e, 0x99, 0x00, 0x61, 0xfe, 0x34, 0xe5, 0x00,
+ 0x62, 0x10, 0x36, 0x2b, 0x00, 0x62, 0x3b, 0x36,
+ 0xeb, 0x00, 0x62, 0x3f, 0x36, 0xd3, 0x00, 0x62,
+ 0x40, 0x36, 0x02, 0x00, 0x62, 0x41, 0x1f, 0x37,
+ 0x00, 0x62, 0x47, 0x36, 0x3b, 0x00, 0x62, 0x48,
+ 0x1e, 0xc2, 0x00, 0x62, 0x49, 0x1e, 0x63, 0x00,
+ 0x62, 0x68, 0x34, 0xe6, 0x00, 0x62, 0x71, 0x35,
+ 0x45, 0x00, 0x62, 0xb1, 0x36, 0xc5, 0x00, 0x62,
+ 0xcc, 0x37, 0x32, 0x00, 0x62, 0xcf, 0x34, 0xe7,
+ 0x00, 0x62, 0xd0, 0x1d, 0xe1, 0x00, 0x62, 0xd2,
+ 0x35, 0x93, 0x00, 0x62, 0xd4, 0x13, 0x5d, 0x00,
+ 0x62, 0xf3, 0x1f, 0x21, 0x00, 0x62, 0xf7, 0x34,
+ 0x88, 0x00, 0x63, 0x3a, 0x4f, 0x3e, 0x00, 0x63,
+ 0x3d, 0x1e, 0x62, 0x00, 0x63, 0x4c, 0x34, 0x5d,
+ 0x00, 0x63, 0x57, 0x1e, 0x3f, 0x00, 0x63, 0x67,
+ 0x34, 0xc3, 0x00, 0x63, 0x68, 0x35, 0xec, 0x00,
+ 0x63, 0x69, 0x1e, 0x95, 0x00, 0x63, 0x6e, 0x34,
+ 0x9d, 0x00, 0x63, 0x72, 0x1d, 0xfc, 0x00, 0x63,
+ 0x83, 0x36, 0x43, 0x00, 0x63, 0x88, 0x35, 0xf6,
+ 0x00, 0x63, 0x92, 0x34, 0xaf, 0x00, 0x63, 0xa1,
+ 0x35, 0xd8, 0x00, 0x63, 0xa7, 0x35, 0xc6, 0x00,
+ 0x63, 0xc3, 0x1f, 0x27, 0x00, 0x63, 0xc6, 0x37,
+ 0x34, 0x00, 0x63, 0xf4, 0x35, 0x57, 0x00, 0x64,
+ 0x06, 0x1e, 0x96, 0x00, 0x64, 0x0f, 0x34, 0xe9,
+ 0x00, 0x64, 0x1c, 0x37, 0x33, 0x00, 0x64, 0x28,
+ 0x37, 0x35, 0x00, 0x64, 0x42, 0x34, 0x9e, 0x00,
+ 0x64, 0x69, 0x36, 0xd7, 0x00, 0x64, 0x6f, 0x4f,
+ 0x28, 0x00, 0x64, 0x7a, 0x1e, 0x21, 0x00, 0x64,
+ 0xb0, 0x1e, 0x24, 0x00, 0x64, 0xe2, 0x1e, 0x45,
+ 0x00, 0x64, 0xf2, 0x34, 0xea, 0x00, 0x64, 0xf6,
+ 0x4e, 0x9e, 0x00, 0x65, 0x1d, 0x34, 0xe8, 0x00,
+ 0x65, 0x4f, 0x0d, 0xc4, 0x00, 0x65, 0x5d, 0x34,
+ 0xeb, 0x00, 0x65, 0x5e, 0x4e, 0xa1, 0x00, 0x65,
+ 0x62, 0x34, 0x71, 0x00, 0x65, 0x77, 0x36, 0xb3,
+ 0x00, 0x65, 0x83, 0x1e, 0x98, 0x00, 0x65, 0x87,
+ 0x4e, 0xa3, 0x00, 0x65, 0x89, 0x4e, 0xa4, 0x00,
+ 0x65, 0x8e, 0x4e, 0xa6, 0x00, 0x65, 0x90, 0x34,
+ 0xb5, 0x00, 0x65, 0x9c, 0x35, 0xed, 0x00, 0x65,
+ 0xa7, 0x4f, 0x41, 0x00, 0x65, 0xbc, 0x35, 0x5c,
+ 0x00, 0x65, 0xc5, 0x37, 0x08, 0x00, 0x65, 0xdf,
+ 0x54, 0xbe, 0x00, 0x65, 0xe1, 0x4e, 0xa9, 0x00,
+ 0x65, 0xe2, 0x06, 0x37, 0x00, 0x66, 0x0e, 0x36,
+ 0xe4, 0x00, 0x66, 0x1e, 0x21, 0x1c, 0x00, 0x66,
+ 0x5f, 0x34, 0xec, 0x00, 0x66, 0x66, 0x1d, 0xe2,
+ 0x00, 0x66, 0x67, 0x4e, 0xaa, 0x00, 0x66, 0x69,
+ 0x36, 0xa5, 0x00, 0x66, 0x6e, 0x4e, 0xab, 0x00,
+ 0x66, 0x74, 0x0a, 0x56, 0x00, 0x66, 0x77, 0x39,
+ 0x11, 0x00, 0x66, 0x81, 0x35, 0xa0, 0x00, 0x66,
+ 0x91, 0x34, 0x28, 0x00, 0x66, 0x96, 0x36, 0x5e,
+ 0x00, 0x66, 0x97, 0x35, 0x46, 0x00, 0x66, 0xb5,
+ 0x54, 0xda, 0x00, 0x66, 0xc1, 0x1f, 0x38, 0x00,
+ 0x66, 0xd9, 0x1e, 0x13, 0x00, 0x66, 0xdc, 0x36,
+ 0xfd, 0x00, 0x66, 0xf4, 0x34, 0x81, 0x00, 0x66,
+ 0xf5, 0x37, 0x3b, 0x00, 0x66, 0xf8, 0x36, 0x03,
+ 0x00, 0x66, 0xfb, 0x37, 0xcd, 0x00, 0x66, 0xfc,
+ 0x37, 0x20, 0x00, 0x67, 0x00, 0x4e, 0xaf, 0x00,
+ 0x67, 0x08, 0x35, 0xb2, 0x00, 0x67, 0x09, 0x36,
+ 0xf7, 0x00, 0x67, 0x0b, 0x36, 0xc6, 0x00, 0x67,
+ 0x0d, 0x36, 0xb7, 0x00, 0x67, 0x15, 0x36, 0x6f,
+ 0x00, 0x67, 0x17, 0x0f, 0xd5, 0x00, 0x67, 0x1b,
+ 0x36, 0xd4, 0x00, 0x67, 0x1d, 0x36, 0x6b, 0x00,
+ 0x67, 0x1f, 0x35, 0x86, 0x00, 0x67, 0x53, 0x1e,
+ 0x0f, 0x00, 0x67, 0x56, 0x4f, 0x3a, 0x00, 0x67,
+ 0x5e, 0x37, 0x3c, 0x00, 0x67, 0x61, 0x4e, 0xb0,
+ 0x00, 0x67, 0x7e, 0x34, 0x95, 0x00, 0x67, 0xa6,
+ 0x1e, 0x99, 0x00, 0x67, 0xa9, 0x34, 0xed, 0x00,
+ 0x67, 0xc4, 0x4e, 0xb1, 0x00, 0x67, 0xca, 0x1e,
+ 0x65, 0x00, 0x67, 0xd4, 0x34, 0x91, 0x00, 0x67,
+ 0xe7, 0x34, 0xee, 0x00, 0x67, 0xf1, 0x36, 0x65,
+ 0x00, 0x68, 0x01, 0x21, 0x2e, 0x00, 0x68, 0x02,
+ 0x4e, 0xb2, 0x00, 0x68, 0x13, 0x1e, 0x25, 0x00,
+ 0x68, 0x1f, 0x4e, 0x61, 0x00, 0x68, 0x21, 0x34,
+ 0x82, 0x00, 0x68, 0x43, 0x34, 0xac, 0x00, 0x68,
+ 0x52, 0x21, 0x2c, 0x00, 0x68, 0x5d, 0x34, 0xc5,
+ 0x00, 0x68, 0x7a, 0x36, 0xf0, 0x00, 0x68, 0x81,
+ 0x37, 0x09, 0x00, 0x68, 0x85, 0x0d, 0x15, 0x00,
+ 0x68, 0x8d, 0x37, 0x3e, 0x00, 0x68, 0x97, 0x4f,
+ 0x37, 0x00, 0x68, 0x9b, 0x1e, 0x9b, 0x00, 0x68,
+ 0x9d, 0x37, 0x3d, 0x00, 0x68, 0xa2, 0x1e, 0x19,
+ 0x00, 0x68, 0xc8, 0x37, 0xcc, 0x00, 0x68, 0xda,
+ 0x1e, 0x38, 0x00, 0x69, 0x0d, 0x34, 0x99, 0x00,
+ 0x69, 0x30, 0x34, 0xf0, 0x00, 0x69, 0x3d, 0x4e,
+ 0xb3, 0x00, 0x69, 0x5e, 0x4e, 0xb4, 0x00, 0x69,
+ 0x62, 0x1e, 0x58, 0x00, 0x69, 0x6b, 0x34, 0xef,
+ 0x00, 0x69, 0x6f, 0x34, 0x94, 0x00, 0x69, 0x82,
+ 0x34, 0x5b, 0x00, 0x69, 0x8a, 0x1e, 0x06, 0x00,
+ 0x69, 0x94, 0x1e, 0x84, 0x00, 0x69, 0xa7, 0x34,
+ 0xf1, 0x00, 0x69, 0xbb, 0x37, 0x43, 0x00, 0x69,
+ 0xc1, 0x35, 0x9a, 0x00, 0x69, 0xcb, 0x35, 0xc7,
+ 0x00, 0x69, 0xcc, 0x1e, 0x40, 0x00, 0x69, 0xd9,
+ 0x36, 0xdd, 0x00, 0x69, 0xea, 0x35, 0x6f, 0x00,
+ 0x69, 0xfe, 0x55, 0x1f, 0x00, 0x6a, 0x0b, 0x1e,
+ 0x64, 0x00, 0x6a, 0x3d, 0x1e, 0x3a, 0x00, 0x6a,
+ 0x44, 0x34, 0xf2, 0x00, 0x6a, 0x55, 0x55, 0x25,
+ 0x00, 0x6a, 0x5f, 0x35, 0x87, 0x00, 0x6a, 0x73,
+ 0x37, 0xd4, 0x00, 0x6a, 0x8e, 0x34, 0x7e, 0x00,
+ 0x6a, 0x90, 0x34, 0xf3, 0x00, 0x6a, 0x9c, 0x4e,
+ 0xb6, 0x00, 0x6a, 0xdb, 0x06, 0xf3, 0x00, 0x6b,
+ 0x04, 0x0f, 0x5d, 0x00, 0x6b, 0x1d, 0x1d, 0xd7,
+ 0x00, 0x6b, 0x21, 0x35, 0xe7, 0x00, 0x6b, 0x24,
+ 0x3c, 0x22, 0x00, 0x6b, 0x4e, 0x36, 0x5b, 0x00,
+ 0x6b, 0x96, 0x36, 0x16, 0x00, 0x6b, 0xba, 0x08,
+ 0x74, 0x00, 0x6b, 0xbb, 0x34, 0x70, 0x00, 0x6c,
+ 0x08, 0x1f, 0x39, 0x00, 0x6c, 0x13, 0x34, 0xf5,
+ 0x00, 0x6c, 0x38, 0x4e, 0xba, 0x00, 0x6c, 0x3a,
+ 0x39, 0x62, 0x00, 0x6c, 0x72, 0x1f, 0x1e, 0x00,
+ 0x6c, 0xaa, 0x37, 0x48, 0x00, 0x6c, 0xbf, 0x05,
+ 0x0a, 0x00, 0x6c, 0xe1, 0x1e, 0x71, 0x00, 0x6c,
+ 0xe8, 0x36, 0x66, 0x00, 0x6d, 0x3e, 0x34, 0xae,
+ 0x00, 0x6d, 0x69, 0x35, 0xc8, 0x00, 0x6d, 0x6e,
+ 0x36, 0xb4, 0x00, 0x6d, 0x77, 0x05, 0x82, 0x00,
+ 0x6d, 0x78, 0x36, 0x1d, 0x00, 0x6d, 0x88, 0x36,
+ 0x0c, 0x00, 0x6d, 0xe4, 0x4e, 0xbd, 0x00, 0x6d,
+ 0xeb, 0x1d, 0xd5, 0x00, 0x6d, 0xfb, 0x36, 0x7c,
+ 0x00, 0x6e, 0x08, 0x4e, 0xbf, 0x00, 0x6e, 0x1a,
+ 0x09, 0x77, 0x00, 0x6e, 0x23, 0x1f, 0x3a, 0x00,
+ 0x6e, 0x2f, 0x35, 0xc9, 0x00, 0x6e, 0x6e, 0x1e,
+ 0x9d, 0x00, 0x6e, 0x72, 0x4e, 0xc0, 0x00, 0x6e,
+ 0x7e, 0x34, 0xcf, 0x00, 0x6e, 0x9d, 0x1e, 0x01,
+ 0x00, 0x6e, 0xa2, 0x1d, 0xd3, 0x00, 0x6e, 0xba,
+ 0x1e, 0x46, 0x00, 0x6e, 0xcb, 0x35, 0xe9, 0x00,
+ 0x6e, 0xd5, 0x4e, 0xc2, 0x00, 0x6e, 0xdb, 0x4e,
+ 0xc3, 0x00, 0x6e, 0xec, 0x1f, 0x3b, 0x00, 0x6e,
+ 0xfe, 0x34, 0xf8, 0x00, 0x6f, 0x11, 0x34, 0xf7,
+ 0x00, 0x6f, 0x22, 0x34, 0x14, 0x00, 0x6f, 0x23,
+ 0x0f, 0xc2, 0x00, 0x6f, 0x3e, 0x34, 0xf9, 0x00,
+ 0x6f, 0x51, 0x36, 0x9e, 0x00, 0x6f, 0x54, 0x35,
+ 0xb0, 0x00, 0x6f, 0x5b, 0x4e, 0xc4, 0x00, 0x6f,
+ 0x64, 0x4e, 0xc6, 0x00, 0x6f, 0x6e, 0x0b, 0xc8,
+ 0x00, 0x6f, 0x74, 0x4e, 0xc7, 0x00, 0x6f, 0x98,
+ 0x37, 0x47, 0x00, 0x6f, 0xef, 0x1e, 0x33, 0x00,
+ 0x6f, 0xf9, 0x39, 0x95, 0x00, 0x70, 0x15, 0x1e,
+ 0x6b, 0x00, 0x70, 0x1b, 0x37, 0x4a, 0x00, 0x70,
+ 0x1e, 0x1e, 0x51, 0x00, 0x70, 0x26, 0x1e, 0x3d,
+ 0x00, 0x70, 0x27, 0x36, 0x57, 0x00, 0x70, 0x4a,
+ 0x39, 0x98, 0x00, 0x70, 0x58, 0x1e, 0x57, 0x00,
+ 0x70, 0x70, 0x35, 0x6a, 0x00, 0x70, 0x78, 0x4f,
+ 0x2e, 0x00, 0x70, 0x7c, 0x1e, 0x10, 0x00, 0x70,
+ 0xad, 0x36, 0x5c, 0x00, 0x71, 0x49, 0x0f, 0xc3,
+ 0x00, 0x71, 0x4e, 0x1e, 0x26, 0x00, 0x71, 0x52,
+ 0x55, 0xad, 0x00, 0x71, 0x59, 0x35, 0x59, 0x00,
+ 0x71, 0x62, 0x37, 0x4b, 0x00, 0x71, 0x6e, 0x08,
+ 0xfd, 0x00, 0x71, 0x7d, 0x1e, 0x27, 0x00, 0x71,
+ 0x94, 0x1e, 0x7d, 0x00, 0x71, 0xb3, 0x39, 0xae,
+ 0x00, 0x71, 0xd0, 0x37, 0x0a, 0x00, 0x71, 0xff,
+ 0x34, 0xfa, 0x00, 0x72, 0x28, 0x15, 0xdf, 0x00,
+ 0x72, 0x2b, 0x3c, 0x26, 0x00, 0x72, 0x35, 0x09,
+ 0x0b, 0x00, 0x72, 0x36, 0x34, 0xb9, 0x00, 0x72,
+ 0x3a, 0x4f, 0x46, 0x00, 0x72, 0x3b, 0x37, 0x4c,
+ 0x00, 0x72, 0x3e, 0x4e, 0xc9, 0x00, 0x72, 0x4c,
+ 0x1e, 0x5b, 0x00, 0x72, 0x59, 0x1f, 0x1d, 0x00,
+ 0x72, 0xe1, 0x4f, 0x36, 0x00, 0x73, 0x1c, 0x37,
+ 0x4e, 0x00, 0x73, 0x2a, 0x0b, 0xb4, 0x00, 0x73,
+ 0x36, 0x36, 0xf8, 0x00, 0x73, 0x37, 0x1e, 0x7c,
+ 0x00, 0x73, 0x87, 0x37, 0x05, 0x00, 0x73, 0x8b,
+ 0x35, 0xa1, 0x00, 0x73, 0xca, 0x1e, 0x0b, 0x00,
+ 0x73, 0xce, 0x1e, 0xa0, 0x00, 0x73, 0xe5, 0x34,
+ 0xfb, 0x00, 0x73, 0xed, 0x34, 0xb1, 0x00, 0x74,
+ 0x22, 0x0b, 0x56, 0x00, 0x74, 0x32, 0x34, 0xfc,
+ 0x00, 0x74, 0x5f, 0x34, 0xfd, 0x00, 0x74, 0x62,
+ 0x21, 0x71, 0x00, 0x74, 0xb0, 0x35, 0x79, 0x00,
+ 0x74, 0xbd, 0x4e, 0xcd, 0x00, 0x74, 0xca, 0x37,
+ 0x4f, 0x00, 0x74, 0xd8, 0x55, 0xf6, 0x00, 0x74,
+ 0xdc, 0x35, 0x50, 0x00, 0x74, 0xe0, 0x34, 0xfe,
+ 0x00, 0x74, 0xef, 0x55, 0xfa, 0x00, 0x75, 0x04,
+ 0x1e, 0xa1, 0x00, 0x75, 0x0c, 0x34, 0xff, 0x00,
+ 0x75, 0x0d, 0x1e, 0xa2, 0x00, 0x75, 0x11, 0x1e,
+ 0x04, 0x00, 0x75, 0x15, 0x1e, 0xa3, 0x00, 0x75,
+ 0x26, 0x4f, 0x3b, 0x00, 0x75, 0x54, 0x36, 0xa4,
+ 0x00, 0x75, 0x5d, 0x4e, 0xce, 0x00, 0x75, 0xbc,
+ 0x4e, 0xcf, 0x00, 0x75, 0xc5, 0x36, 0xb1, 0x00,
+ 0x76, 0x08, 0x4e, 0xd1, 0x00, 0x76, 0x26, 0x1e,
+ 0x2d, 0x00, 0x76, 0x52, 0x1e, 0x7b, 0x00, 0x76,
+ 0x64, 0x4e, 0xd2, 0x00, 0x76, 0x69, 0x4e, 0xd3,
+ 0x00, 0x76, 0x72, 0x35, 0x00, 0x00, 0x76, 0x84,
+ 0x36, 0x79, 0x00, 0x76, 0x93, 0x1e, 0xa4, 0x00,
+ 0x76, 0xc6, 0x34, 0xc4, 0x00, 0x76, 0xca, 0x21,
+ 0x7b, 0x00, 0x76, 0xd4, 0x56, 0x1d, 0x00, 0x76,
+ 0xdb, 0x36, 0x2c, 0x00, 0x76, 0xdf, 0x36, 0xe5,
+ 0x00, 0x76, 0xf2, 0x36, 0xe9, 0x00, 0x76, 0xf4,
+ 0x36, 0x6e, 0x00, 0x77, 0x1e, 0x16, 0xb8, 0x00,
+ 0x77, 0x1f, 0x36, 0x1e, 0x00, 0x77, 0x37, 0x4e,
+ 0xd5, 0x00, 0x77, 0x3a, 0x34, 0xa6, 0x00, 0x77,
+ 0x7e, 0x4e, 0xd6, 0x00, 0x77, 0x8d, 0x56, 0x2e,
+ 0x00, 0x77, 0xa2, 0x56, 0x2f, 0x00, 0x77, 0xa5,
+ 0x1e, 0x6e, 0x00, 0x77, 0xac, 0x34, 0x92, 0x00,
+ 0x77, 0xe9, 0x35, 0xa4, 0x00, 0x78, 0x32, 0x36,
+ 0xc7, 0x00, 0x78, 0x3a, 0x36, 0x7f, 0x00, 0x78,
+ 0x5d, 0x36, 0x0d, 0x00, 0x78, 0x6c, 0x34, 0x83,
+ 0x00, 0x78, 0x7c, 0x1e, 0xa5, 0x00, 0x78, 0x91,
+ 0x0d, 0x7e, 0x00, 0x78, 0xd4, 0x35, 0x02, 0x00,
+ 0x78, 0xe8, 0x36, 0xda, 0x00, 0x78, 0xef, 0x35,
+ 0x4b, 0x00, 0x79, 0x2a, 0x35, 0x01, 0x00, 0x79,
+ 0x34, 0x3a, 0x38, 0x00, 0x79, 0x3a, 0x08, 0xd4,
+ 0x00, 0x79, 0x3c, 0x21, 0x83, 0x00, 0x79, 0x3e,
+ 0x34, 0x24, 0x00, 0x79, 0x40, 0x37, 0x57, 0x00,
+ 0x79, 0x41, 0x1d, 0xf4, 0x00, 0x79, 0x47, 0x1d,
+ 0xeb, 0x00, 0x79, 0x48, 0x06, 0x41, 0x00, 0x79,
+ 0x49, 0x34, 0x21, 0x00, 0x79, 0x50, 0x0f, 0x1e,
+ 0x00, 0x79, 0x53, 0x37, 0x58, 0x00, 0x79, 0x56,
+ 0x34, 0x2f, 0x00, 0x79, 0x5d, 0x09, 0x55, 0x00,
+ 0x79, 0x5e, 0x0a, 0x06, 0x00, 0x79, 0x62, 0x1f,
+ 0x29, 0x00, 0x79, 0x65, 0x09, 0xb5, 0x00, 0x79,
+ 0x8d, 0x05, 0x52, 0x00, 0x79, 0x8e, 0x34, 0x3b,
+ 0x00, 0x79, 0x8f, 0x21, 0x87, 0x00, 0x79, 0xa7,
+ 0x4e, 0xd7, 0x00, 0x79, 0xae, 0x37, 0x5b, 0x00,
+ 0x79, 0xb0, 0x1e, 0x59, 0x00, 0x79, 0xb1, 0x4e,
+ 0xd8, 0x00, 0x79, 0xba, 0x35, 0x03, 0x00, 0x79,
+ 0xe4, 0x1e, 0x5d, 0x00, 0x7a, 0x0b, 0x36, 0x78,
+ 0x00, 0x7a, 0x17, 0x1e, 0x66, 0x00, 0x7a, 0x19,
+ 0x35, 0x04, 0x00, 0x7a, 0x31, 0x1e, 0xa6, 0x00,
+ 0x7a, 0x40, 0x08, 0x04, 0x00, 0x7a, 0x60, 0x3a,
+ 0x4e, 0x00, 0x7a, 0x74, 0x34, 0x7a, 0x00, 0x7a,
+ 0x7a, 0x35, 0xa7, 0x00, 0x7a, 0x7f, 0x1f, 0x25,
+ 0x00, 0x7a, 0x81, 0x34, 0x3d, 0x00, 0x7a, 0x95,
+ 0x35, 0x05, 0x00, 0x7a, 0x97, 0x1f, 0x3c, 0x00,
+ 0x7a, 0xae, 0x34, 0x77, 0x00, 0x7a, 0xbe, 0x4e,
+ 0xd9, 0x00, 0x7a, 0xc6, 0x3c, 0x27, 0x00, 0x7a,
+ 0xc8, 0x4f, 0x3d, 0x00, 0x7b, 0x08, 0x1f, 0x1f,
+ 0x00, 0x7b, 0x51, 0x36, 0x63, 0x00, 0x7b, 0x75,
+ 0x4f, 0x2a, 0x00, 0x7b, 0x99, 0x1e, 0xa8, 0x00,
+ 0x7b, 0xad, 0x1f, 0x26, 0x00, 0x7b, 0xb8, 0x1e,
+ 0x5f, 0x00, 0x7b, 0xc0, 0x34, 0x2e, 0x00, 0x7b,
+ 0xc7, 0x1f, 0x2b, 0x00, 0x7b, 0xc9, 0x36, 0x61,
+ 0x00, 0x7b, 0xdd, 0x1f, 0x3d, 0x00, 0x7b, 0xe0,
+ 0x4e, 0xda, 0x00, 0x7c, 0x14, 0x37, 0x5f, 0x00,
+ 0x7c, 0x3e, 0x1f, 0x2d, 0x00, 0x7c, 0x3f, 0x36,
+ 0xc2, 0x00, 0x7c, 0x4d, 0x36, 0x36, 0x00, 0x7c,
+ 0x50, 0x37, 0x61, 0x00, 0x7c, 0x58, 0x37, 0x62,
+ 0x00, 0x7c, 0x69, 0x56, 0xaa, 0x00, 0x7c, 0x7e,
+ 0x1e, 0x78, 0x00, 0x7c, 0x82, 0x4f, 0x30, 0x00,
+ 0x7c, 0x89, 0x34, 0xbe, 0x00, 0x7c, 0x90, 0x1e,
+ 0xa9, 0x00, 0x7c, 0xae, 0x1e, 0xaa, 0x00, 0x7c,
+ 0xbe, 0x0a, 0x5e, 0x00, 0x7c, 0xd6, 0x0c, 0x76,
+ 0x00, 0x7c, 0xf2, 0x35, 0x06, 0x00, 0x7d, 0x04,
+ 0x36, 0xee, 0x00, 0x7d, 0x09, 0x4e, 0xdc, 0x00,
+ 0x7d, 0x0b, 0x36, 0xec, 0x00, 0x7d, 0x0d, 0x36,
+ 0x94, 0x00, 0x7d, 0x1a, 0x35, 0x91, 0x00, 0x7d,
+ 0x1b, 0x34, 0xbf, 0x00, 0x7d, 0x42, 0x35, 0xf8,
+ 0x00, 0x7d, 0x46, 0x37, 0x63, 0x00, 0x7d, 0x5c,
+ 0x21, 0x90, 0x00, 0x7d, 0x5e, 0x34, 0x84, 0x00,
+ 0x7d, 0x63, 0x37, 0x64, 0x00, 0x7d, 0x73, 0x35,
+ 0x07, 0x00, 0x7d, 0x9b, 0x1e, 0xab, 0x00, 0x7d,
+ 0x9f, 0x1e, 0xad, 0x00, 0x7d, 0xae, 0x1e, 0xac,
+ 0x00, 0x7d, 0xb2, 0x4e, 0xdd, 0x00, 0x7d, 0xcb,
+ 0x34, 0xb6, 0x00, 0x7d, 0xcf, 0x34, 0xa0, 0x00,
+ 0x7d, 0xdd, 0x35, 0x08, 0x00, 0x7d, 0xe8, 0x36,
+ 0xbf, 0x00, 0x7d, 0xe9, 0x35, 0x7a, 0x00, 0x7d,
+ 0xef, 0x34, 0x62, 0x00, 0x7d, 0xf4, 0x0f, 0xc5,
+ 0x00, 0x7e, 0x09, 0x47, 0xbe, 0x00, 0x7e, 0x1b,
+ 0x36, 0x9b, 0x00, 0x7e, 0x22, 0x37, 0x65, 0x00,
+ 0x7e, 0x2b, 0x36, 0xc8, 0x00, 0x7e, 0x35, 0x35,
+ 0x09, 0x00, 0x7e, 0x41, 0x34, 0x40, 0x00, 0x7e,
+ 0x43, 0x37, 0x69, 0x00, 0x7e, 0x6d, 0x36, 0xe1,
+ 0x00, 0x7e, 0x8c, 0x37, 0x6a, 0x00, 0x7f, 0x3e,
+ 0x4e, 0xdf, 0x00, 0x7f, 0x50, 0x37, 0x6b, 0x00,
+ 0x7f, 0x61, 0x3c, 0x28, 0x00, 0x7f, 0x6a, 0x34,
+ 0x89, 0x00, 0x7f, 0x6e, 0x36, 0x60, 0x00, 0x7f,
+ 0x72, 0x09, 0x7a, 0x00, 0x7f, 0x80, 0x56, 0xda,
+ 0x00, 0x7f, 0x8a, 0x0f, 0x3d, 0x00, 0x7f, 0xa1,
+ 0x36, 0x3d, 0x00, 0x7f, 0xae, 0x35, 0x0a, 0x00,
+ 0x7f, 0xbd, 0x04, 0xcb, 0x00, 0x7f, 0xc1, 0x34,
+ 0x6a, 0x00, 0x7f, 0xc5, 0x37, 0x6f, 0x00, 0x7f,
+ 0xc6, 0x37, 0x70, 0x00, 0x7f, 0xcc, 0x37, 0x01,
+ 0x00, 0x7f, 0xd2, 0x35, 0xf9, 0x00, 0x7f, 0xd4,
+ 0x1e, 0xae, 0x00, 0x7f, 0xe0, 0x1e, 0x20, 0x00,
+ 0x7f, 0xe1, 0x35, 0x0b, 0x00, 0x7f, 0xe9, 0x1f,
+ 0x3e, 0x00, 0x7f, 0xeb, 0x1d, 0xe9, 0x00, 0x7f,
+ 0xf0, 0x1d, 0xe8, 0x00, 0x7f, 0xfb, 0x36, 0xd8,
+ 0x00, 0x7f, 0xfc, 0x34, 0xc8, 0x00, 0x80, 0x00,
+ 0x1e, 0x7e, 0x00, 0x80, 0x03, 0x34, 0x85, 0x00,
+ 0x80, 0x05, 0x34, 0x25, 0x00, 0x80, 0x12, 0x4e,
+ 0xe1, 0x00, 0x80, 0x15, 0x35, 0xca, 0x00, 0x80,
+ 0x17, 0x36, 0xea, 0x00, 0x80, 0x36, 0x34, 0xc7,
+ 0x00, 0x80, 0x56, 0x36, 0x2d, 0x00, 0x80, 0x5a,
+ 0x35, 0x0c, 0x00, 0x80, 0x5f, 0x35, 0x0d, 0x00,
+ 0x80, 0x61, 0x34, 0xa1, 0x00, 0x80, 0x6f, 0x34,
+ 0xcd, 0x00, 0x80, 0x70, 0x35, 0x0f, 0x00, 0x80,
+ 0x71, 0x3c, 0x29, 0x00, 0x80, 0x73, 0x35, 0x0e,
+ 0x00, 0x80, 0x74, 0x34, 0xa7, 0x00, 0x80, 0x76,
+ 0x35, 0x10, 0x00, 0x80, 0x77, 0x34, 0x9a, 0x00,
+ 0x80, 0x7e, 0x34, 0xce, 0x00, 0x80, 0x87, 0x36,
+ 0x9c, 0x00, 0x80, 0x89, 0x36, 0x8f, 0x00, 0x80,
+ 0x96, 0x36, 0x0e, 0x00, 0x80, 0x9e, 0x3c, 0x2a,
+ 0x00, 0x80, 0xa9, 0x35, 0xb8, 0x00, 0x80, 0xba,
+ 0x36, 0x97, 0x00, 0x80, 0xd6, 0x4e, 0xe3, 0x00,
+ 0x80, 0xde, 0x36, 0xc9, 0x00, 0x81, 0x06, 0x36,
+ 0x34, 0x00, 0x81, 0x08, 0x34, 0xc6, 0x00, 0x81,
+ 0x09, 0x4e, 0xe4, 0x00, 0x81, 0x29, 0x4e, 0xe5,
+ 0x00, 0x81, 0x53, 0x35, 0x11, 0x00, 0x81, 0x54,
+ 0x35, 0xcb, 0x00, 0x81, 0x70, 0x35, 0xd1, 0x00,
+ 0x81, 0x71, 0x4f, 0x33, 0x00, 0x81, 0x7f, 0x1e,
+ 0x30, 0x00, 0x81, 0x8a, 0x35, 0x12, 0x00, 0x81,
+ 0xb5, 0x35, 0x13, 0x00, 0x81, 0xcd, 0x35, 0x14,
+ 0x00, 0x81, 0xed, 0x34, 0x26, 0x00, 0x82, 0x00,
+ 0x57, 0x0f, 0x00, 0x82, 0x0c, 0x4e, 0xe6, 0x00,
+ 0x82, 0x18, 0x35, 0x7f, 0x00, 0x82, 0x1b, 0x4e,
+ 0xe7, 0x00, 0x82, 0x1c, 0x34, 0x93, 0x00, 0x82,
+ 0x1f, 0x35, 0xb3, 0x00, 0x82, 0x2e, 0x1e, 0xaf,
+ 0x00, 0x82, 0x39, 0x34, 0x9f, 0x00, 0x82, 0x40,
+ 0x4e, 0xe8, 0x00, 0x82, 0x47, 0x34, 0xab, 0x00,
+ 0x82, 0x58, 0x37, 0x74, 0x00, 0x82, 0x79, 0x37,
+ 0x77, 0x00, 0x82, 0x8d, 0x1e, 0xb0, 0x00, 0x82,
+ 0x92, 0x4f, 0x44, 0x00, 0x82, 0xa6, 0x1f, 0x19,
+ 0x00, 0x82, 0xb1, 0x35, 0x62, 0x00, 0x82, 0xbd,
+ 0x05, 0x6a, 0x00, 0x82, 0xc5, 0x35, 0x77, 0x00,
+ 0x82, 0xd2, 0x1e, 0xb1, 0x00, 0x82, 0xe3, 0x37,
+ 0x78, 0x00, 0x83, 0x23, 0x1e, 0xb2, 0x00, 0x83,
+ 0x28, 0x1f, 0x1a, 0x00, 0x83, 0x52, 0x35, 0xcc,
+ 0x00, 0x83, 0x75, 0x1e, 0xb3, 0x00, 0x83, 0xbd,
+ 0x37, 0x7c, 0x00, 0x83, 0xd3, 0x35, 0x63, 0x00,
+ 0x83, 0xd4, 0x4e, 0xea, 0x00, 0x83, 0xdc, 0x35,
+ 0xda, 0x00, 0x83, 0xdf, 0x1e, 0x4b, 0x00, 0x83,
+ 0xf2, 0x35, 0x15, 0x00, 0x84, 0x0c, 0x36, 0xca,
+ 0x00, 0x84, 0x0f, 0x4e, 0xeb, 0x00, 0x84, 0x20,
+ 0x37, 0x7b, 0x00, 0x84, 0x22, 0x1f, 0x3f, 0x00,
+ 0x84, 0x57, 0x34, 0x37, 0x00, 0x84, 0x5b, 0x1d,
+ 0xe4, 0x00, 0x84, 0x5c, 0x57, 0x45, 0x00, 0x84,
+ 0x7a, 0x34, 0xba, 0x00, 0x84, 0xea, 0x4e, 0xed,
+ 0x00, 0x84, 0xec, 0x1e, 0x72, 0x00, 0x84, 0xee,
+ 0x0f, 0xc7, 0x00, 0x84, 0xf4, 0x37, 0x7d, 0x00,
+ 0x85, 0x11, 0x36, 0xbd, 0x00, 0x85, 0x17, 0x1e,
+ 0xb4, 0x00, 0x85, 0x3d, 0x1e, 0x6d, 0x00, 0x85,
+ 0x43, 0x36, 0xa6, 0x00, 0x85, 0x51, 0x4e, 0xef,
+ 0x00, 0x85, 0x55, 0x35, 0x16, 0x00, 0x85, 0x5d,
+ 0x57, 0x64, 0x00, 0x85, 0x63, 0x4e, 0xf0, 0x00,
+ 0x85, 0x84, 0x36, 0x99, 0x00, 0x85, 0x87, 0x37,
+ 0x7f, 0x00, 0x85, 0xa9, 0x1e, 0x08, 0x00, 0x85,
+ 0xaf, 0x1e, 0x15, 0x00, 0x85, 0xcf, 0x4e, 0xf1,
+ 0x00, 0x85, 0xd5, 0x35, 0x17, 0x00, 0x85, 0xe4,
+ 0x36, 0x85, 0x00, 0x85, 0xf7, 0x1e, 0x16, 0x00,
+ 0x86, 0x12, 0x21, 0xa4, 0x00, 0x86, 0x2d, 0x37,
+ 0x04, 0x00, 0x86, 0x4e, 0x4e, 0xf2, 0x00, 0x86,
+ 0x50, 0x35, 0x8c, 0x00, 0x86, 0x54, 0x4f, 0x32,
+ 0x00, 0x86, 0x5c, 0x0f, 0x82, 0x00, 0x86, 0x5e,
+ 0x35, 0xa6, 0x00, 0x86, 0x62, 0x4e, 0xf3, 0x00,
+ 0x86, 0x8a, 0x4e, 0xf4, 0x00, 0x86, 0xdb, 0x34,
+ 0x5e, 0x00, 0x86, 0xf8, 0x1e, 0x35, 0x00, 0x87,
+ 0x03, 0x4f, 0x48, 0x00, 0x87, 0x1a, 0x35, 0x18,
+ 0x00, 0x87, 0x37, 0x37, 0x82, 0x00, 0x87, 0x3b,
+ 0x37, 0x83, 0x00, 0x87, 0x55, 0x1e, 0x1d, 0x00,
+ 0x87, 0x59, 0x1f, 0x40, 0x00, 0x87, 0x82, 0x1e,
+ 0xb6, 0x00, 0x87, 0xa3, 0x57, 0xaa, 0x00, 0x87,
+ 0xbd, 0x37, 0x85, 0x00, 0x87, 0xd2, 0x1e, 0xb7,
+ 0x00, 0x88, 0x03, 0x3b, 0x03, 0x00, 0x88, 0x05,
+ 0x37, 0x84, 0x00, 0x88, 0x0e, 0x1f, 0x41, 0x00,
+ 0x88, 0x36, 0x35, 0x19, 0x00, 0x88, 0x42, 0x4e,
+ 0xf5, 0x00, 0x88, 0x46, 0x35, 0xfa, 0x00, 0x88,
+ 0x4b, 0x57, 0xc3, 0x00, 0x88, 0x53, 0x35, 0xfd,
+ 0x00, 0x88, 0x5b, 0x34, 0x66, 0x00, 0x88, 0x5e,
+ 0x35, 0x53, 0x00, 0x88, 0x63, 0x35, 0x48, 0x00,
+ 0x88, 0x70, 0x36, 0x27, 0x00, 0x88, 0x77, 0x4e,
+ 0xf6, 0x00, 0x88, 0x9e, 0x35, 0x1a, 0x00, 0x88,
+ 0xd8, 0x35, 0x1b, 0x00, 0x88, 0xf4, 0x35, 0x1c,
+ 0x00, 0x89, 0x0a, 0x1e, 0xb8, 0x00, 0x89, 0x10,
+ 0x34, 0x13, 0x00, 0x89, 0x1c, 0x37, 0xcb, 0x00,
+ 0x89, 0x2b, 0x35, 0x1d, 0x00, 0x89, 0x3b, 0x35,
+ 0x1e, 0x00, 0x89, 0x41, 0x4e, 0xf7, 0x00, 0x89,
+ 0x56, 0x1d, 0xdd, 0x00, 0x89, 0x6a, 0x35, 0x1f,
+ 0x00, 0x89, 0x6f, 0x35, 0x20, 0x00, 0x89, 0x81,
+ 0x36, 0xff, 0x00, 0x89, 0x86, 0x36, 0xb8, 0x00,
+ 0x89, 0x87, 0x36, 0x95, 0x00, 0x89, 0x96, 0x34,
+ 0x22, 0x00, 0x89, 0xaa, 0x34, 0x9b, 0x00, 0x89,
+ 0xaf, 0x1e, 0xb9, 0x00, 0x89, 0xbd, 0x37, 0x8a,
+ 0x00, 0x89, 0xd2, 0x05, 0xaf, 0x00, 0x8a, 0x0a,
+ 0x36, 0x24, 0x00, 0x8a, 0x12, 0x37, 0xd7, 0x00,
+ 0x8a, 0x1d, 0x35, 0x21, 0x00, 0x8a, 0x1f, 0x34,
+ 0x96, 0x00, 0x8a, 0x3b, 0x1e, 0x3c, 0x00, 0x8a,
+ 0x55, 0x36, 0xaf, 0x00, 0x8a, 0x6e, 0x1e, 0x28,
+ 0x00, 0x8a, 0x8d, 0x36, 0x92, 0x00, 0x8a, 0x95,
+ 0x34, 0xa3, 0x00, 0x8a, 0xa0, 0x36, 0x2f, 0x00,
+ 0x8a, 0xa4, 0x35, 0xc2, 0x00, 0x8a, 0xb9, 0x34,
+ 0xb7, 0x00, 0x8a, 0xbf, 0x36, 0x6d, 0x00, 0x8a,
+ 0xcb, 0x36, 0x30, 0x00, 0x8a, 0xdb, 0x37, 0x8b,
+ 0x00, 0x8a, 0xde, 0x1e, 0xba, 0x00, 0x8a, 0xed,
+ 0x0f, 0x0b, 0x00, 0x8a, 0xee, 0x35, 0xe3, 0x00,
+ 0x8a, 0xf8, 0x09, 0x7e, 0x00, 0x8a, 0xfa, 0x1d,
+ 0xfe, 0x00, 0x8b, 0x01, 0x04, 0xfc, 0x00, 0x8b,
+ 0x04, 0x36, 0x86, 0x00, 0x8b, 0x0e, 0x1e, 0x56,
+ 0x00, 0x8b, 0x19, 0x35, 0xb9, 0x00, 0x8b, 0x1b,
+ 0x35, 0xcd, 0x00, 0x8b, 0x1d, 0x34, 0x8d, 0x00,
+ 0x8b, 0x2c, 0x1e, 0x69, 0x00, 0x8b, 0x39, 0x06,
+ 0xd8, 0x00, 0x8b, 0x3e, 0x37, 0x8c, 0x00, 0x8b,
+ 0x41, 0x1e, 0xbb, 0x00, 0x8b, 0x56, 0x4e, 0xf8,
+ 0x00, 0x8b, 0x5a, 0x37, 0x8d, 0x00, 0x8b, 0x5c,
+ 0x4e, 0xfa, 0x00, 0x8b, 0x7f, 0x52, 0x52, 0x00,
+ 0x8c, 0x6a, 0x4e, 0xfd, 0x00, 0x8c, 0x79, 0x4e,
+ 0xfe, 0x00, 0x8c, 0x9b, 0x58, 0x37, 0x00, 0x8c,
+ 0xa0, 0x36, 0xb5, 0x00, 0x8c, 0xa7, 0x34, 0xb8,
+ 0x00, 0x8c, 0xa8, 0x35, 0x64, 0x00, 0x8c, 0xab,
+ 0x34, 0x72, 0x00, 0x8c, 0xc7, 0x35, 0xe5, 0x00,
+ 0x8c, 0xca, 0x36, 0x4c, 0x00, 0x8c, 0xd3, 0x0d,
+ 0xc2, 0x00, 0x8c, 0xed, 0x1e, 0x4c, 0x00, 0x8c,
+ 0xfc, 0x34, 0x86, 0x00, 0x8d, 0x05, 0x35, 0x22,
+ 0x00, 0x8d, 0x08, 0x34, 0x34, 0x00, 0x8d, 0x0f,
+ 0x35, 0x23, 0x00, 0x8d, 0x67, 0x4f, 0x00, 0x00,
+ 0x8d, 0x70, 0x36, 0x46, 0x00, 0x8d, 0x73, 0x37,
+ 0x8e, 0x00, 0x8d, 0x77, 0x35, 0x88, 0x00, 0x8d,
+ 0x99, 0x37, 0x8f, 0x00, 0x8d, 0xda, 0x1e, 0xbc,
+ 0x00, 0x8d, 0xdd, 0x35, 0x94, 0x00, 0x8d, 0xf3,
+ 0x34, 0xa8, 0x00, 0x8e, 0x09, 0x1e, 0xbd, 0x00,
+ 0x8e, 0x34, 0x37, 0x91, 0x00, 0x8e, 0x4a, 0x37,
+ 0x92, 0x00, 0x8e, 0x8d, 0x36, 0xef, 0x00, 0x8e,
+ 0x91, 0x35, 0x25, 0x00, 0x8e, 0xa1, 0x35, 0x26,
+ 0x00, 0x8e, 0xcc, 0x34, 0x76, 0x00, 0x8e, 0xd4,
+ 0x3b, 0x4a, 0x00, 0x8f, 0x03, 0x4f, 0x02, 0x00,
+ 0x8f, 0x13, 0x1e, 0xbe, 0x00, 0x8f, 0x29, 0x34,
+ 0xb0, 0x00, 0x8f, 0x2f, 0x34, 0x90, 0x00, 0x8f,
+ 0x38, 0x36, 0xf5, 0x00, 0x8f, 0x44, 0x35, 0x75,
+ 0x00, 0x8f, 0xb6, 0x3c, 0x2b, 0x00, 0x8f, 0xbb,
+ 0x20, 0x4b, 0x00, 0x8f, 0xbc, 0x35, 0xd3, 0x00,
+ 0x8f, 0xbf, 0x1e, 0x37, 0x00, 0x8f, 0xc2, 0x1d,
+ 0xd6, 0x00, 0x8f, 0xc4, 0x1f, 0x2c, 0x00, 0x8f,
+ 0xc5, 0x36, 0x26, 0x00, 0x8f, 0xc6, 0x3b, 0x51,
+ 0x00, 0x8f, 0xce, 0x35, 0xae, 0x00, 0x8f, 0xd1,
+ 0x35, 0xa2, 0x00, 0x8f, 0xd4, 0x36, 0xc0, 0x00,
+ 0x8f, 0xe6, 0x1d, 0xdf, 0x00, 0x8f, 0xe9, 0x1e,
+ 0xc0, 0x00, 0x8f, 0xea, 0x1e, 0xbf, 0x00, 0x8f,
+ 0xeb, 0x36, 0x9a, 0x00, 0x8f, 0xed, 0x36, 0x7b,
+ 0x00, 0x8f, 0xef, 0x37, 0x93, 0x00, 0x8f, 0xf0,
+ 0x35, 0xfe, 0x00, 0x8f, 0xf6, 0x4f, 0x06, 0x00,
+ 0x8f, 0xf7, 0x36, 0xe6, 0x00, 0x8f, 0xfa, 0x37,
+ 0x95, 0x00, 0x8f, 0xfd, 0x36, 0x72, 0x00, 0x90,
+ 0x00, 0x36, 0x51, 0x00, 0x90, 0x01, 0x36, 0x47,
+ 0x00, 0x90, 0x03, 0x34, 0xad, 0x00, 0x90, 0x06,
+ 0x35, 0x8d, 0x00, 0x90, 0x0e, 0x35, 0x28, 0x00,
+ 0x90, 0x0f, 0x36, 0x88, 0x00, 0x90, 0x10, 0x36,
+ 0x64, 0x00, 0x90, 0x14, 0x36, 0x7e, 0x00, 0x90,
+ 0x17, 0x1e, 0x1f, 0x00, 0x90, 0x19, 0x1e, 0x5c,
+ 0x00, 0x90, 0x1a, 0x36, 0x73, 0x00, 0x90, 0x1d,
+ 0x1e, 0x22, 0x00, 0x90, 0x1e, 0x37, 0x96, 0x00,
+ 0x90, 0x1f, 0x36, 0x4b, 0x00, 0x90, 0x20, 0x36,
+ 0x49, 0x00, 0x90, 0x22, 0x20, 0x4a, 0x00, 0x90,
+ 0x23, 0x0f, 0xc8, 0x00, 0x90, 0x2e, 0x36, 0x52,
+ 0x00, 0x90, 0x31, 0x35, 0xfb, 0x00, 0x90, 0x32,
+ 0x36, 0x1f, 0x00, 0x90, 0x35, 0x37, 0x97, 0x00,
+ 0x90, 0x38, 0x34, 0x08, 0x00, 0x90, 0x39, 0x36,
+ 0x58, 0x00, 0x90, 0x3c, 0x1e, 0x67, 0x00, 0x90,
+ 0x41, 0x1e, 0x53, 0x00, 0x90, 0x42, 0x34, 0x9c,
+ 0x00, 0x90, 0x47, 0x35, 0xa8, 0x00, 0x90, 0x4a,
+ 0x36, 0xfc, 0x00, 0x90, 0x4b, 0x35, 0x51, 0x00,
+ 0x90, 0x4d, 0x36, 0xc1, 0x00, 0x90, 0x4e, 0x35,
+ 0x65, 0x00, 0x90, 0x50, 0x37, 0x98, 0x00, 0x90,
+ 0x52, 0x35, 0x27, 0x00, 0x90, 0x53, 0x36, 0x8b,
+ 0x00, 0x90, 0x54, 0x36, 0x58, 0x00, 0x90, 0x55,
+ 0x34, 0x63, 0x00, 0x90, 0x58, 0x1e, 0xc1, 0x00,
+ 0x90, 0x5c, 0x1e, 0x2e, 0x00, 0x90, 0x60, 0x35,
+ 0x5a, 0x00, 0x90, 0x61, 0x1e, 0x2a, 0x00, 0x90,
+ 0x63, 0x35, 0xba, 0x00, 0x90, 0x69, 0x36, 0x7a,
+ 0x00, 0x90, 0x6d, 0x36, 0x48, 0x00, 0x90, 0x6e,
+ 0x1e, 0x0e, 0x00, 0x90, 0x75, 0x36, 0x00, 0x00,
+ 0x90, 0x77, 0x36, 0x40, 0x00, 0x90, 0x78, 0x36,
+ 0x3f, 0x00, 0x90, 0x7a, 0x35, 0x4a, 0x00, 0x90,
+ 0x7c, 0x1e, 0x80, 0x00, 0x90, 0x7f, 0x36, 0xa7,
+ 0x00, 0x90, 0x81, 0x37, 0x9a, 0x00, 0x90, 0x83,
+ 0x37, 0x5c, 0x00, 0x90, 0x84, 0x35, 0x7c, 0x00,
+ 0x90, 0x87, 0x37, 0x94, 0x00, 0x90, 0x89, 0x34,
+ 0x5f, 0x00, 0x90, 0x8a, 0x37, 0x9b, 0x00, 0x90,
+ 0xa3, 0x1e, 0x55, 0x00, 0x90, 0xa6, 0x36, 0xcb,
+ 0x00, 0x90, 0xa8, 0x4f, 0x0b, 0x00, 0x90, 0xaa,
+ 0x34, 0x8e, 0x00, 0x90, 0xf7, 0x35, 0x9d, 0x00,
+ 0x90, 0xfd, 0x0c, 0x4e, 0x00, 0x91, 0x2d, 0x1e,
+ 0x44, 0x00, 0x91, 0x30, 0x35, 0x29, 0x00, 0x91,
+ 0x4b, 0x1e, 0x12, 0x00, 0x91, 0x4c, 0x35, 0xf2,
+ 0x00, 0x91, 0x4d, 0x4f, 0x0c, 0x00, 0x91, 0x56,
+ 0x35, 0x2a, 0x00, 0x91, 0x58, 0x35, 0x2b, 0x00,
+ 0x91, 0x65, 0x35, 0x2c, 0x00, 0x91, 0x72, 0x35,
+ 0x2e, 0x00, 0x91, 0x73, 0x35, 0x2d, 0x00, 0x91,
+ 0x77, 0x35, 0xd0, 0x00, 0x91, 0xa2, 0x35, 0x2f,
+ 0x00, 0x91, 0xaa, 0x35, 0x31, 0x00, 0x91, 0xaf,
+ 0x35, 0x30, 0x00, 0x91, 0xb1, 0x36, 0x9f, 0x00,
+ 0x91, 0xb4, 0x35, 0x32, 0x00, 0x91, 0xba, 0x35,
+ 0x33, 0x00, 0x91, 0xc1, 0x1e, 0xc3, 0x00, 0x91,
+ 0xc7, 0x1e, 0x05, 0x00, 0x91, 0xdc, 0x4f, 0x42,
+ 0x00, 0x91, 0xe3, 0x36, 0x75, 0x00, 0x91, 0xfc,
+ 0x3c, 0x2c, 0x00, 0x92, 0x37, 0x34, 0x7d, 0x00,
+ 0x92, 0x5b, 0x34, 0x69, 0x00, 0x92, 0xe9, 0x4f,
+ 0x0d, 0x00, 0x93, 0x06, 0x1e, 0x0a, 0x00, 0x93,
+ 0x35, 0x4f, 0x0e, 0x00, 0x93, 0x65, 0x3b, 0x86,
+ 0x00, 0x93, 0x75, 0x4f, 0x34, 0x00, 0x93, 0x8b,
+ 0x4f, 0x0f, 0x00, 0x93, 0x8c, 0x35, 0x76, 0x00,
+ 0x93, 0x96, 0x35, 0xd5, 0x00, 0x93, 0x9a, 0x1e,
+ 0x41, 0x00, 0x93, 0xa1, 0x59, 0x04, 0x00, 0x93,
+ 0xae, 0x34, 0x3a, 0x00, 0x93, 0xdd, 0x37, 0xae,
+ 0x00, 0x94, 0x3a, 0x4f, 0x10, 0x00, 0x94, 0x53,
+ 0x1e, 0x79, 0x00, 0x94, 0x77, 0x35, 0x34, 0x00,
+ 0x95, 0x92, 0x35, 0x7d, 0x00, 0x95, 0xab, 0x3b,
+ 0x9a, 0x00, 0x95, 0xbb, 0x1e, 0xc4, 0x00, 0x95,
+ 0xbc, 0x37, 0xaf, 0x00, 0x95, 0xcd, 0x4f, 0x11,
+ 0x00, 0x96, 0x2a, 0x4f, 0x12, 0x00, 0x96, 0x4d,
+ 0x34, 0x87, 0x00, 0x96, 0x86, 0x34, 0x51, 0x00,
+ 0x96, 0x8a, 0x36, 0x53, 0x00, 0x96, 0x94, 0x35,
+ 0x73, 0x00, 0x96, 0x98, 0x35, 0x35, 0x00, 0x96,
+ 0x99, 0x4f, 0x31, 0x00, 0x96, 0xa3, 0x34, 0xca,
+ 0x00, 0x96, 0xa7, 0x4f, 0x14, 0x00, 0x96, 0xb2,
+ 0x37, 0xb1, 0x00, 0x96, 0xbb, 0x36, 0x35, 0x00,
+ 0x96, 0xc5, 0x34, 0x6c, 0x00, 0x96, 0xc7, 0x35,
+ 0xbe, 0x00, 0x96, 0xd9, 0x34, 0xd5, 0x00, 0x96,
+ 0xda, 0x59, 0x3b, 0x00, 0x96, 0xe3, 0x0c, 0xc9,
+ 0x00, 0x96, 0xe8, 0x35, 0x4d, 0x00, 0x96, 0xea,
+ 0x36, 0x39, 0x00, 0x96, 0xf0, 0x34, 0xc0, 0x00,
+ 0x97, 0x21, 0x59, 0x41, 0x00, 0x97, 0x24, 0x1e,
+ 0xc6, 0x00, 0x97, 0x3d, 0x35, 0x36, 0x00, 0x97,
+ 0x55, 0x21, 0xf8, 0x00, 0x97, 0x56, 0x21, 0x8b,
+ 0x00, 0x97, 0x59, 0x37, 0xb2, 0x00, 0x97, 0x5c,
+ 0x36, 0x31, 0x00, 0x97, 0x60, 0x1e, 0xc7, 0x00,
+ 0x97, 0x6d, 0x1e, 0xc8, 0x00, 0x97, 0x71, 0x1e,
+ 0x1e, 0x00, 0x97, 0x74, 0x1d, 0xf3, 0x00, 0x97,
+ 0x84, 0x1d, 0xe5, 0x00, 0x97, 0x98, 0x1e, 0x1c,
+ 0x00, 0x97, 0xad, 0x4f, 0x43, 0x00, 0x97, 0xd3,
+ 0x35, 0x7e, 0x00, 0x97, 0xde, 0x3c, 0x2e, 0x00,
+ 0x97, 0xf3, 0x35, 0x60, 0x00, 0x97, 0xff, 0x34,
+ 0x19, 0x00, 0x98, 0x0c, 0x35, 0x39, 0x00, 0x98,
+ 0x11, 0x34, 0x74, 0x00, 0x98, 0x12, 0x34, 0xb2,
+ 0x00, 0x98, 0x13, 0x1e, 0x54, 0x00, 0x98, 0x24,
+ 0x1e, 0xc9, 0x00, 0x98, 0x3b, 0x0d, 0xc3, 0x00,
+ 0x98, 0x5e, 0x0f, 0xa8, 0x00, 0x98, 0x67, 0x35,
+ 0xbf, 0x00, 0x98, 0x73, 0x35, 0x3a, 0x00, 0x98,
+ 0xc3, 0x35, 0x3b, 0x00, 0x98, 0xdf, 0x36, 0x17,
+ 0x00, 0x98, 0xe2, 0x35, 0x89, 0x00, 0x98, 0xeb,
+ 0x37, 0xb4, 0x00, 0x98, 0xef, 0x0d, 0x67, 0x00,
+ 0x98, 0xf4, 0x1d, 0xd2, 0x00, 0x98, 0xfc, 0x21,
+ 0xfc, 0x00, 0x98, 0xfd, 0x36, 0xcd, 0x00, 0x98,
+ 0xfe, 0x36, 0x14, 0x00, 0x99, 0x03, 0x37, 0xb5,
+ 0x00, 0x99, 0x05, 0x1e, 0x77, 0x00, 0x99, 0x09,
+ 0x37, 0xb6, 0x00, 0x99, 0x0a, 0x37, 0x00, 0x00,
+ 0x99, 0x0c, 0x1d, 0xdb, 0x00, 0x99, 0x10, 0x1f,
+ 0x22, 0x00, 0x99, 0x13, 0x35, 0x68, 0x00, 0x99,
+ 0x21, 0x4f, 0x18, 0x00, 0x99, 0x28, 0x21, 0xfe,
+ 0x00, 0x99, 0x45, 0x37, 0xb7, 0x00, 0x99, 0x4b,
+ 0x37, 0xb9, 0x00, 0x99, 0x57, 0x1f, 0x20, 0x00,
+ 0x99, 0xc1, 0x4f, 0x40, 0x00, 0x99, 0xd0, 0x36,
+ 0x67, 0x00, 0x9a, 0x19, 0x1f, 0x43, 0x00, 0x9a,
+ 0x30, 0x36, 0x89, 0x00, 0x9a, 0x45, 0x35, 0x3c,
+ 0x00, 0x9a, 0x4a, 0x59, 0x88, 0x00, 0x9a, 0x5f,
+ 0x37, 0xbb, 0x00, 0x9a, 0x65, 0x37, 0xbc, 0x00,
+ 0x9a, 0xef, 0x37, 0xbd, 0x00, 0x9b, 0x18, 0x37,
+ 0xbe, 0x00, 0x9b, 0x2d, 0x34, 0x3c, 0x00, 0x9b,
+ 0x2e, 0x1e, 0xca, 0x00, 0x9b, 0x35, 0x59, 0xa4,
+ 0x00, 0x9b, 0x4d, 0x35, 0x3d, 0x00, 0x9b, 0x54,
+ 0x36, 0xdb, 0x00, 0x9b, 0x58, 0x35, 0x3e, 0x00,
+ 0x9b, 0x97, 0x1e, 0xcb, 0x00, 0x9b, 0xa8, 0x4f,
+ 0x1a, 0x00, 0x9b, 0xab, 0x4f, 0x38, 0x00, 0x9b,
+ 0xae, 0x4f, 0x1b, 0x00, 0x9b, 0xb9, 0x4f, 0x1c,
+ 0x00, 0x9b, 0xc6, 0x35, 0x3f, 0x00, 0x9b, 0xd6,
+ 0x1e, 0x09, 0x00, 0x9b, 0xdb, 0x36, 0x54, 0x00,
+ 0x9b, 0xe1, 0x35, 0x40, 0x00, 0x9b, 0xf1, 0x35,
+ 0x41, 0x00, 0x9b, 0xf2, 0x1e, 0xcc, 0x00, 0x9c,
+ 0x08, 0x4f, 0x1d, 0x00, 0x9c, 0x24, 0x4f, 0x1e,
+ 0x00, 0x9c, 0x2f, 0x1d, 0xd4, 0x00, 0x9c, 0x3b,
+ 0x4f, 0x1f, 0x00, 0x9c, 0x48, 0x1e, 0x39, 0x00,
+ 0x9c, 0x52, 0x1e, 0x74, 0x00, 0x9c, 0x57, 0x37,
+ 0x0c, 0x00, 0x9c, 0xe6, 0x4f, 0x21, 0x00, 0x9d,
+ 0x07, 0x1e, 0x4f, 0x00, 0x9d, 0x08, 0x37, 0xc1,
+ 0x00, 0x9d, 0x09, 0x37, 0xc0, 0x00, 0x9d, 0x48,
+ 0x35, 0x42, 0x00, 0x9d, 0x60, 0x1e, 0x03, 0x00,
+ 0x9d, 0x6c, 0x36, 0xce, 0x00, 0x9d, 0xb4, 0x0b,
+ 0xfd, 0x00, 0x9d, 0xbf, 0x59, 0xde, 0x00, 0x9d,
+ 0xc0, 0x4f, 0x22, 0x00, 0x9d, 0xc2, 0x4f, 0x23,
+ 0x00, 0x9d, 0xcf, 0x35, 0x43, 0x00, 0x9e, 0x97,
+ 0x34, 0xcc, 0x00, 0x9e, 0x9f, 0x34, 0xcb, 0x00,
+ 0x9e, 0xa5, 0x37, 0xc2, 0x00, 0x9e, 0xaa, 0x1e,
+ 0xcd, 0x00, 0x9e, 0xad, 0x1f, 0x44, 0x00, 0x9e,
+ 0xbb, 0x36, 0xdc, 0x00, 0x9e, 0xbf, 0x36, 0xe2,
+ 0x00, 0x9e, 0xcc, 0x37, 0xc3, 0x00, 0x9e, 0xdb,
+ 0x1e, 0x31, 0x00, 0x9f, 0x08, 0x35, 0x44, 0x00,
+ 0x9f, 0x3b, 0x36, 0xa9, 0x00, 0x9f, 0x4a, 0x37,
+ 0xc5, 0x00, 0x9f, 0x4b, 0x37, 0x5a, 0x00, 0x9f,
+ 0x4e, 0x35, 0x24, 0x00, 0x9f, 0x67, 0x37, 0xc7,
+ 0x00, 0x9f, 0x8d, 0x37, 0x06, 0x00, 0x9f, 0x9c,
+ 0x1e, 0xce, 0x00, 0x9f, 0x9d, 0x1e, 0xa7, 0x00,
+ 0xfa, 0x11, 0x20, 0xfb, 0x00, 0xfa, 0x24, 0x21,
+ 0xb8, 0x02, 0x35, 0xc4, 0x3c, 0x44, 0x02, 0x36,
+ 0x3a, 0x35, 0x9b, 0x02, 0x38, 0x3d, 0x4f, 0x26,
+ 0x02, 0x42, 0xee, 0x37, 0xc9, 0x02, 0x62, 0x70,
+ 0x37, 0x6e, 0x02, 0x9d, 0x4b, 0x35, 0x96, 0x02,
+ 0x9e, 0x3d, 0x3c, 0x4d, 0x02, 0xa6, 0x1a, 0x37,
+ 0xc8, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x34, 0x02,
+ 0x35, 0x83, 0x00, 0x50, 0x91, 0x35, 0xaf, 0x00,
+ 0x50, 0xca, 0x37, 0x15, 0x00, 0x51, 0x54, 0x37,
+ 0x17, 0x00, 0x51, 0x95, 0x37, 0x18, 0x00, 0x51,
+ 0xb4, 0x35, 0xdb, 0x00, 0x51, 0xde, 0x38, 0x10,
+ 0x00, 0x52, 0x72, 0x4e, 0x76, 0x00, 0x53, 0x7f,
+ 0x1d, 0xed, 0x00, 0x53, 0xa9, 0x1f, 0x1c, 0x00,
+ 0x55, 0x33, 0x37, 0x21, 0x00, 0x55, 0xa9, 0x34,
+ 0xd6, 0x00, 0x55, 0xab, 0x4e, 0x7c, 0x00, 0x55,
+ 0xe4, 0x37, 0x22, 0x00, 0x56, 0xae, 0x4e, 0x7e,
+ 0x00, 0x57, 0xf4, 0x36, 0x13, 0x00, 0x58, 0x5a,
+ 0x20, 0xe6, 0x00, 0x59, 0x51, 0x4e, 0x88, 0x00,
+ 0x59, 0xff, 0x35, 0xe1, 0x00, 0x5a, 0xbe, 0x34,
+ 0xdc, 0x00, 0x5b, 0xb3, 0x35, 0x6b, 0x00, 0x5c,
+ 0x0a, 0x36, 0x4e, 0x00, 0x5c, 0x0f, 0x36, 0x0a,
+ 0x00, 0x5e, 0xca, 0x34, 0x59, 0x00, 0x5e, 0xe3,
+ 0x4e, 0x93, 0x00, 0x5e, 0xf6, 0x35, 0x56, 0x00,
+ 0x60, 0x62, 0x4f, 0x2d, 0x00, 0x60, 0x97, 0x37,
+ 0x30, 0x00, 0x61, 0x67, 0x35, 0xad, 0x00, 0x61,
+ 0x68, 0x34, 0x6e, 0x00, 0x61, 0xb2, 0x4e, 0x98,
+ 0x00, 0x61, 0xf2, 0x36, 0x6a, 0x00, 0x62, 0x49,
+ 0x34, 0xb4, 0x00, 0x66, 0x5f, 0x37, 0x38, 0x00,
+ 0x66, 0xc1, 0x4e, 0xac, 0x00, 0x67, 0x15, 0x36,
+ 0x70, 0x00, 0x67, 0x17, 0x21, 0x29, 0x00, 0x67,
+ 0x1b, 0x36, 0xd5, 0x00, 0x68, 0x5d, 0x36, 0xde,
+ 0x00, 0x68, 0x7a, 0x36, 0xf1, 0x00, 0x69, 0x0d,
+ 0x36, 0x15, 0x00, 0x69, 0x82, 0x34, 0x6f, 0x00,
+ 0x6a, 0xdb, 0x35, 0xa9, 0x00, 0x6b, 0x21, 0x35,
+ 0xe8, 0x00, 0x6c, 0x08, 0x34, 0xf4, 0x00, 0x6c,
+ 0xaa, 0x4e, 0xbb, 0x00, 0x6c, 0xbf, 0x34, 0x68,
+ 0x00, 0x6c, 0xe8, 0x32, 0x45, 0x00, 0x6d, 0x3e,
+ 0x36, 0x96, 0x00, 0x6e, 0x23, 0x34, 0xf6, 0x00,
+ 0x6e, 0xa2, 0x52, 0x4f, 0x00, 0x6e, 0xcb, 0x4e,
+ 0xc1, 0x00, 0x6f, 0x11, 0x37, 0x45, 0x00, 0x6f,
+ 0x5b, 0x4e, 0xc5, 0x00, 0x71, 0x7d, 0x1f, 0x24,
+ 0x00, 0x72, 0x35, 0x35, 0xf0, 0x00, 0x73, 0x36,
+ 0x36, 0xf9, 0x00, 0x73, 0x37, 0x36, 0xfa, 0x00,
+ 0x73, 0xca, 0x4e, 0xcc, 0x00, 0x75, 0x11, 0x35,
+ 0xd2, 0x00, 0x75, 0x15, 0x4f, 0x2b, 0x00, 0x79,
+ 0x53, 0x37, 0x59, 0x00, 0x7a, 0x74, 0x35, 0xb1,
+ 0x00, 0x7b, 0x08, 0x4f, 0x27, 0x00, 0x7b, 0xc0,
+ 0x36, 0x37, 0x00, 0x7c, 0x3e, 0x4f, 0x29, 0x00,
+ 0x7c, 0x50, 0x4e, 0xdb, 0x00, 0x7c, 0x7e, 0x4f,
+ 0x45, 0x00, 0x7d, 0xb2, 0x4e, 0xde, 0x00, 0x7e,
+ 0x22, 0x37, 0x66, 0x00, 0x7e, 0x35, 0x37, 0x68,
+ 0x00, 0x7f, 0xc1, 0x35, 0x5e, 0x00, 0x7f, 0xe1,
+ 0x4e, 0xe0, 0x00, 0x7f, 0xe9, 0x37, 0x71, 0x00,
+ 0x7f, 0xfc, 0x37, 0x02, 0x00, 0x81, 0x08, 0x36,
+ 0xe3, 0x00, 0x82, 0x39, 0x36, 0x3e, 0x00, 0x82,
+ 0x79, 0x37, 0x76, 0x00, 0x82, 0xbd, 0x34, 0x6b,
+ 0x00, 0x83, 0xdf, 0x1f, 0x28, 0x00, 0x85, 0x3d,
+ 0x34, 0xc1, 0x00, 0x86, 0x12, 0x52, 0x51, 0x00,
+ 0x87, 0xd2, 0x1f, 0x42, 0x00, 0x88, 0x05, 0x4f,
+ 0x47, 0x00, 0x88, 0x36, 0x37, 0x87, 0x00, 0x8a,
+ 0x0a, 0x36, 0x25, 0x00, 0x8a, 0x1d, 0x4f, 0x2c,
+ 0x00, 0x8a, 0x95, 0x36, 0x5d, 0x00, 0x8a, 0xee,
+ 0x35, 0xe4, 0x00, 0x8b, 0x56, 0x4e, 0xf9, 0x00,
+ 0x8c, 0xa0, 0x36, 0xb6, 0x00, 0x8c, 0xc7, 0x35,
+ 0xe6, 0x00, 0x8c, 0xca, 0x4e, 0xff, 0x00, 0x8c,
+ 0xfc, 0x35, 0xce, 0x00, 0x8f, 0x44, 0x4f, 0x03,
+ 0x00, 0x8f, 0xc5, 0x4f, 0x04, 0x00, 0x8f, 0xd4,
+ 0x4f, 0x05, 0x00, 0x90, 0x03, 0x36, 0x87, 0x00,
+ 0x90, 0x22, 0x34, 0x60, 0x00, 0x90, 0x38, 0x21,
+ 0xb9, 0x00, 0x90, 0x41, 0x4f, 0x3f, 0x00, 0x90,
+ 0x42, 0x36, 0x28, 0x00, 0x90, 0x55, 0x35, 0x49,
+ 0x00, 0x90, 0x75, 0x36, 0x01, 0x00, 0x90, 0x77,
+ 0x4f, 0x07, 0x00, 0x90, 0x89, 0x37, 0xa1, 0x00,
+ 0x90, 0x8a, 0x37, 0x9c, 0x00, 0x90, 0xa6, 0x36,
+ 0xcc, 0x00, 0x90, 0xaa, 0x35, 0xee, 0x00, 0x92,
+ 0x5b, 0x35, 0x5b, 0x00, 0x96, 0x86, 0x21, 0xee,
+ 0x00, 0x96, 0x98, 0x4f, 0x13, 0x00, 0x96, 0xa3,
+ 0x37, 0x0b, 0x00, 0x96, 0xc5, 0x35, 0x67, 0x00,
+ 0x97, 0x5c, 0x36, 0x32, 0x00, 0x97, 0x60, 0x35,
+ 0x37, 0x00, 0x97, 0x6d, 0x1f, 0x23, 0x00, 0x97,
+ 0x71, 0x35, 0x38, 0x00, 0x97, 0xff, 0x35, 0x9e,
+ 0x00, 0x98, 0xef, 0x4f, 0x25, 0x00, 0x99, 0x0c,
+ 0x34, 0x65, 0x00, 0x99, 0x45, 0x37, 0xb8, 0x00,
+ 0x99, 0x57, 0x35, 0x9f, 0x00, 0x9e, 0x9f, 0x37,
+ 0x0d, 0x00, 0x9f, 0x08, 0x37, 0xc4, 0x00, 0x9f,
+ 0x8d, 0x37, 0x07, 0x02, 0x36, 0x3a, 0x35, 0x9c,
+ 0x00, 0x00, 0x00, 0x11, 0x00, 0x51, 0xde, 0x4e,
+ 0x71, 0x00, 0x53, 0xa9, 0x34, 0x64, 0x00, 0x56,
+ 0xae, 0x4e, 0x7f, 0x00, 0x5b, 0xb3, 0x4e, 0x8f,
+ 0x00, 0x61, 0x68, 0x35, 0x6c, 0x00, 0x61, 0xf2,
+ 0x52, 0x50, 0x00, 0x66, 0x5f, 0x37, 0x39, 0x00,
+ 0x67, 0x17, 0x37, 0x12, 0x00, 0x69, 0x82, 0x35,
+ 0x70, 0x00, 0x75, 0x11, 0x4f, 0x3c, 0x00, 0x83,
+ 0xdf, 0x4e, 0xe9, 0x00, 0x90, 0x77, 0x4f, 0x08,
+ 0x00, 0x90, 0x89, 0x37, 0xa2, 0x00, 0x90, 0x8a,
+ 0x37, 0x9d, 0x00, 0x97, 0xff, 0x4f, 0x15, 0x00,
+ 0x99, 0x0c, 0x35, 0x52, 0x00, 0x99, 0x57, 0x4f,
+ 0x19, 0x00, 0x00, 0x00, 0x06, 0x00, 0x51, 0xde,
+ 0x21, 0x5e, 0x00, 0x53, 0xa9, 0x35, 0x4f, 0x00,
+ 0x61, 0x68, 0x35, 0x6d, 0x00, 0x90, 0x89, 0x37,
+ 0xa3, 0x00, 0x90, 0x8a, 0x37, 0x9e, 0x00, 0x97,
+ 0xff, 0x4f, 0x16, 0x00, 0x00, 0x00, 0x04, 0x00,
+ 0x53, 0xa9, 0x4f, 0x2f, 0x00, 0x61, 0x68, 0x35,
+ 0x6e, 0x00, 0x90, 0x89, 0x37, 0xa4, 0x00, 0x90,
+ 0x8a, 0x37, 0x9f, 0x00, 0x00, 0x00, 0x02, 0x00,
+ 0x90, 0x89, 0x37, 0xa5, 0x00, 0x90, 0x8a, 0x37,
+ 0xa0, 0x00, 0x00, 0x00, 0x02, 0x00, 0x90, 0x89,
+ 0x37, 0xa6, 0x00, 0x90, 0x8a, 0x4f, 0x0a, 0x00,
+ 0x00, 0x00, 0x01, 0x00, 0x90, 0x89, 0x37, 0xa7,
+ 0x00, 0x00, 0x00, 0x01, 0x00, 0x90, 0x89, 0x37,
+ 0xa8, 0x00, 0x00, 0x00, 0x01, 0x00, 0x90, 0x89,
+ 0x37, 0xa9, 0x00, 0x00, 0x00, 0x01, 0x00, 0x90,
+ 0x89, 0x37, 0xaa, 0x00, 0x00, 0x00, 0x01, 0x00,
+ 0x90, 0x89, 0x37, 0xab, 0x00, 0x00, 0x00, 0x01,
+ 0x00, 0x90, 0x89, 0x37, 0xac, 0x00, 0x00, 0x00,
+ 0x01, 0x00, 0x90, 0x89, 0x4f, 0x09
+ };
diff --git a/src/menu.c b/src/menu.c
index bbd0e70fe04..5ca687f3d8a 100644
--- a/src/menu.c
+++ b/src/menu.c
@@ -1317,7 +1317,7 @@ no quit occurs and `x-popup-menu' returns nil. */)
if (current_popup_menu && FRAME_W32_P (f))
{
discard_menu_items ();
- FRAME_X_DISPLAY_INFO (f)->grabbed = 0;
+ FRAME_DISPLAY_INFO (f)->grabbed = 0;
UNGCPRO;
return Qnil;
}
@@ -1365,7 +1365,7 @@ no quit occurs and `x-popup-menu' returns nil. */)
#ifdef HAVE_NTGUI /* FIXME: Is it really w32-specific? --Stef */
if (FRAME_W32_P (f))
- FRAME_X_DISPLAY_INFO (f)->grabbed = 0;
+ FRAME_DISPLAY_INFO (f)->grabbed = 0;
#endif
#endif /* HAVE_MENUS */
diff --git a/src/minibuf.c b/src/minibuf.c
index 7403fc6c32d..cc6f234f7da 100644
--- a/src/minibuf.c
+++ b/src/minibuf.c
@@ -672,12 +672,7 @@ read_minibuf (Lisp_Object map, Lisp_Object initial, Lisp_Object prompt,
XWINDOW (minibuf_window)->cursor.x = 0;
XWINDOW (minibuf_window)->must_be_updated_p = 1;
update_frame (XFRAME (selected_frame), 1, 1);
- {
- struct frame *f = XFRAME (XWINDOW (minibuf_window)->frame);
- struct redisplay_interface *rif = FRAME_RIF (f);
- if (rif && rif->flush_display)
- rif->flush_display (f);
- }
+ flush_frame (XFRAME (XWINDOW (minibuf_window)->frame));
}
/* Make minibuffer contents into a string. */
diff --git a/src/msdos.c b/src/msdos.c
index 5ad227bd67c..2ba7a16a443 100644
--- a/src/msdos.c
+++ b/src/msdos.c
@@ -408,7 +408,7 @@ static int term_setup_done;
static unsigned short outside_cursor;
-/* Similar to the_only_frame. */
+/* The only display since MS-DOS does not support multiple ones. */
struct tty_display_info the_only_display_info;
/* Support for DOS/V (allows Japanese characters to be displayed on
@@ -1222,7 +1222,7 @@ IT_cmgoto (struct frame *f)
static void
IT_update_begin (struct frame *f)
{
- struct tty_display_info *display_info = FRAME_X_DISPLAY_INFO (f);
+ struct tty_display_info *display_info = FRAME_DISPLAY_INFO (f);
Mouse_HLInfo *hlinfo = &display_info->mouse_highlight;
struct frame *mouse_face_frame = hlinfo->mouse_face_mouse_frame;
@@ -1279,7 +1279,7 @@ IT_update_begin (struct frame *f)
static void
IT_update_end (struct frame *f)
{
- struct tty_display_info *dpyinfo = FRAME_X_DISPLAY_INFO (f);
+ struct tty_display_info *dpyinfo = FRAME_DISPLAY_INFO (f);
if (dpyinfo->termscript)
fprintf (dpyinfo->termscript, "\n<UPDATE_END\n");
@@ -2387,7 +2387,7 @@ Each input key receives two values in this vector: first the ASCII code,
and then the scan code. */)
(void)
{
- Lisp_Object val, *keys = XVECTOR (recent_doskeys)->contents;
+ Lisp_Object val, *keys = XVECTOR (recent_doskeys)->u.contents;
if (total_doskeys < NUM_RECENT_DOSKEYS)
return Fvector (total_doskeys, keys);
diff --git a/src/msdos.h b/src/msdos.h
index 6a6fe349131..27090324b44 100644
--- a/src/msdos.h
+++ b/src/msdos.h
@@ -63,7 +63,7 @@ extern struct tty_display_info the_only_display_info;
#define FRAME_X_DISPLAY(f) ((Display *) 0)
#define FRAME_FONT(f) ((f)->output_data.tty->font)
-#define FRAME_X_DISPLAY_INFO(f) (&the_only_display_info)
+#define FRAME_DISPLAY_INFO(f) (&the_only_display_info)
/* Prototypes. */
diff --git a/src/nsfns.m b/src/nsfns.m
index fc276c2b12d..93b7d12becb 100644
--- a/src/nsfns.m
+++ b/src/nsfns.m
@@ -46,6 +46,9 @@ GNUstep port and post-20 update by Adrian Robert (arobert@cogsci.ucsd.edu)
#ifdef NS_IMPL_COCOA
#include <IOKit/graphics/IOGraphicsLib.h>
+#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5
+#include "macfont.h"
+#endif
#endif
#if 0
@@ -124,7 +127,7 @@ check_ns_display_info (Lisp_Object object)
struct frame *sf = XFRAME (selected_frame);
if (FRAME_NS_P (sf) && FRAME_LIVE_P (sf))
- dpyinfo = FRAME_NS_DISPLAY_INFO (sf);
+ dpyinfo = FRAME_DISPLAY_INFO (sf);
else if (x_display_list != 0)
dpyinfo = x_display_list;
else
@@ -144,7 +147,7 @@ check_ns_display_info (Lisp_Object object)
else
{
struct frame *f = decode_window_system_frame (object);
- dpyinfo = FRAME_NS_DISPLAY_INFO (f);
+ dpyinfo = FRAME_DISPLAY_INFO (f);
}
return dpyinfo;
@@ -992,7 +995,7 @@ unwind_create_frame (Lisp_Object frame)
if (NILP (Fmemq (frame, Vframe_list)))
{
#if defined GLYPH_DEBUG && defined ENABLE_CHECKING
- struct ns_display_info *dpyinfo = FRAME_X_DISPLAY_INFO (f);
+ struct ns_display_info *dpyinfo = FRAME_DISPLAY_INFO (f);
#endif
x_free_frame_resources (f);
@@ -1139,9 +1142,9 @@ This function is an internal primitive--use `make-frame' instead. */)
if (! STRINGP (f->icon_name))
fset_icon_name (f, Qnil);
- FRAME_NS_DISPLAY_INFO (f) = dpyinfo;
+ FRAME_DISPLAY_INFO (f) = dpyinfo;
- /* With FRAME_NS_DISPLAY_INFO set up, this unwind-protect is safe. */
+ /* With FRAME_DISPLAY_INFO set up, this unwind-protect is safe. */
record_unwind_protect (unwind_create_frame, frame);
f->output_data.ns->window_desc = desc_ctr++;
@@ -1152,7 +1155,7 @@ This function is an internal primitive--use `make-frame' instead. */)
}
else
{
- f->output_data.ns->parent_desc = FRAME_NS_DISPLAY_INFO (f)->root_window;
+ f->output_data.ns->parent_desc = FRAME_DISPLAY_INFO (f)->root_window;
f->output_data.ns->explicit_parent = 0;
}
@@ -1171,7 +1174,16 @@ This function is an internal primitive--use `make-frame' instead. */)
}
block_input ();
+
+#ifdef NS_IMPL_COCOA
+#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5
+ if (CTGetCoreTextVersion != NULL
+ && CTGetCoreTextVersion () >= kCTVersionNumber10_5)
+ mac_register_font_driver (f);
+#endif
+#endif
register_font_driver (&nsfont_driver, f);
+
x_default_parameter (f, parms, Qfont_backend, Qnil,
"fontBackend", "FontBackend", RES_TYPE_STRING);
@@ -1181,8 +1193,13 @@ This function is an internal primitive--use `make-frame' instead. */)
x_default_parameter (f, parms, Qfontsize,
make_number (0 /*(int)[font pointSize]*/),
"fontSize", "FontSize", RES_TYPE_NUMBER);
+ // Remove ' Regular', not handled by backends.
+ char *fontname = xstrdup ([[font displayName] UTF8String]);
+ int len = strlen (fontname);
+ if (len > 8 && strcmp (fontname + len - 8, " Regular") == 0)
+ fontname[len-8] = '\0';
x_default_parameter (f, parms, Qfont,
- build_string ([[font fontName] UTF8String]),
+ build_string (fontname),
"font", "Font", RES_TYPE_STRING);
}
unblock_input ();
@@ -1255,7 +1272,7 @@ This function is an internal primitive--use `make-frame' instead. */)
f->output_data.ns->hand_cursor = [NSCursor pointingHandCursor];
f->output_data.ns->hourglass_cursor = [NSCursor disappearingItemCursor];
f->output_data.ns->horizontal_drag_cursor = [NSCursor resizeLeftRightCursor];
- FRAME_NS_DISPLAY_INFO (f)->vertical_scroll_bar_cursor
+ FRAME_DISPLAY_INFO (f)->vertical_scroll_bar_cursor
= [NSCursor arrowCursor];
f->output_data.ns->current_pointer = f->output_data.ns->text_cursor;
@@ -1339,14 +1356,10 @@ This function is an internal primitive--use `make-frame' instead. */)
return unbind_to (count, frame);
}
-
-DEFUN ("x-focus-frame", Fx_focus_frame, Sx_focus_frame, 1, 1, 0,
- doc: /* Set the input focus to FRAME.
-FRAME nil means use the selected frame. */)
- (Lisp_Object frame)
+void
+x_focus_frame (struct frame *f)
{
- struct frame *f = decode_window_system_frame (frame);
- struct ns_display_info *dpyinfo = FRAME_NS_DISPLAY_INFO (f);
+ struct ns_display_info *dpyinfo = FRAME_DISPLAY_INFO (f);
if (dpyinfo->x_focus_frame != f)
{
@@ -1356,8 +1369,6 @@ FRAME nil means use the selected frame. */)
[[view window] makeKeyAndOrderFront: view];
unblock_input ();
}
-
- return Qnil;
}
@@ -1368,9 +1379,15 @@ DEFUN ("ns-popup-font-panel", Fns_popup_font_panel, Sns_popup_font_panel,
{
struct frame *f = decode_window_system_frame (frame);
id fm = [NSFontManager sharedFontManager];
-
- [fm setSelectedFont: ((struct nsfont_info *)f->output_data.ns->font)->nsfont
- isMultiple: NO];
+ struct font *font = f->output_data.ns->font;
+ NSFont *nsfont;
+ if (EQ (font->driver->type, Qns))
+ nsfont = ((struct nsfont_info *)font)->nsfont;
+#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5
+ else
+ nsfont = (NSFont *) macfont_get_nsctfont (font);
+#endif
+ [fm setSelectedFont: nsfont isMultiple: NO];
[fm orderFrontFontPanel: NSApp];
return Qnil;
}
@@ -2194,17 +2211,13 @@ x_set_scroll_bar_default_width (struct frame *f)
wid - 1) / wid;
}
-
-extern const char *x_get_string_resource (XrmDatabase, char *, char *);
-
-
/* terms impl this instead of x-get-resource directly */
-const char *
-x_get_string_resource (XrmDatabase rdb, char *name, char *class)
+char *
+x_get_string_resource (XrmDatabase rdb, const char *name, const char *class)
{
/* remove appname prefix; TODO: allow for !="Emacs" */
- char *toCheck = class + (!strncmp (class, "Emacs.", 6) ? 6 : 0);
- const char *res;
+ const char *res, *toCheck = class + (!strncmp (class, "Emacs.", 6) ? 6 : 0);
+
check_window_system (NULL);
if (inhibit_x_resources)
@@ -2212,16 +2225,16 @@ x_get_string_resource (XrmDatabase rdb, char *name, char *class)
return NULL;
res = ns_get_defaults_value (toCheck);
- return !res ? NULL :
- (!c_strncasecmp (res, "YES", 3) ? "true" :
- (!c_strncasecmp (res, "NO", 2) ? "false" : res));
+ return (!res ? NULL :
+ (!c_strncasecmp (res, "YES", 3) ? "true" :
+ (!c_strncasecmp (res, "NO", 2) ? "false" : (char *) res)));
}
Lisp_Object
x_get_focus_frame (struct frame *frame)
{
- struct ns_display_info *dpyinfo = FRAME_NS_DISPLAY_INFO (frame);
+ struct ns_display_info *dpyinfo = FRAME_DISPLAY_INFO (frame);
Lisp_Object nsfocus;
if (!dpyinfo->x_focus_frame)
@@ -2231,15 +2244,6 @@ x_get_focus_frame (struct frame *frame)
return nsfocus;
}
-void
-x_sync (struct frame *f)
-{
- /* XXX Not implemented XXX */
- return;
-}
-
-
-
/* ==========================================================================
Lisp definitions that, for whatever reason, we can't alias as 'ns-XXX'.
@@ -2560,6 +2564,7 @@ compute_tip_xy (struct frame *f,
{
Lisp_Object left, top;
EmacsView *view = FRAME_NS_VIEW (f);
+ struct ns_display_info *dpyinfo = FRAME_DISPLAY_INFO (f);
NSPoint pt;
/* Start with user-specified or mouse position. */
@@ -2568,7 +2573,8 @@ compute_tip_xy (struct frame *f,
if (!INTEGERP (left) || !INTEGERP (top))
{
- pt = last_mouse_motion_position;
+ pt.x = dpyinfo->last_mouse_motion_x;
+ pt.y = dpyinfo->last_mouse_motion_y;
/* Convert to screen coordinates */
pt = [view convertPoint: pt toView: nil];
pt = [[view window] convertBaseToScreen: pt];
@@ -2577,7 +2583,7 @@ compute_tip_xy (struct frame *f,
{
/* Absolute coordinates. */
pt.x = XINT (left);
- pt.y = x_display_pixel_height (FRAME_NS_DISPLAY_INFO (f)) - XINT (top)
+ pt.y = x_display_pixel_height (FRAME_DISPLAY_INFO (f)) - XINT (top)
- height;
}
@@ -2587,7 +2593,7 @@ compute_tip_xy (struct frame *f,
else if (pt.x + XINT (dx) <= 0)
*root_x = 0; /* Can happen for negative dx */
else if (pt.x + XINT (dx) + width
- <= x_display_pixel_width (FRAME_NS_DISPLAY_INFO (f)))
+ <= x_display_pixel_width (FRAME_DISPLAY_INFO (f)))
/* It fits to the right of the pointer. */
*root_x = pt.x + XINT (dx);
else if (width + XINT (dx) <= pt.x)
@@ -2603,12 +2609,12 @@ compute_tip_xy (struct frame *f,
/* It fits below the pointer. */
*root_y = pt.y - height - XINT (dy);
else if (pt.y + XINT (dy) + height
- <= x_display_pixel_height (FRAME_NS_DISPLAY_INFO (f)))
+ <= x_display_pixel_height (FRAME_DISPLAY_INFO (f)))
/* It fits above the pointer */
*root_y = pt.y + XINT (dy);
else
/* Put it on the top. */
- *root_y = x_display_pixel_height (FRAME_NS_DISPLAY_INFO (f)) - height;
+ *root_y = x_display_pixel_height (FRAME_DISPLAY_INFO (f)) - height;
}
@@ -2903,7 +2909,6 @@ be used as the image of the icon representing the frame. */);
defsubr (&Sns_list_services);
defsubr (&Sns_perform_service);
defsubr (&Sns_convert_utf8_nfd_to_nfc);
- defsubr (&Sx_focus_frame);
defsubr (&Sns_popup_font_panel);
defsubr (&Sns_popup_color_panel);
diff --git a/src/nsfont.m b/src/nsfont.m
index e1c7d32dde0..bd9a2acc983 100644
--- a/src/nsfont.m
+++ b/src/nsfont.m
@@ -51,8 +51,6 @@ static Lisp_Object Qapple, Qroman, Qmedium;
static Lisp_Object Qcondensed, Qexpanded;
extern Lisp_Object Qappend;
extern float ns_antialias_threshold;
-extern int ns_tmp_flags;
-extern struct nsfont_info *ns_tmp_font;
/* font glyph and metrics caching functions, implemented at end */
@@ -528,7 +526,7 @@ static NSSet
}
if (NSFONT_TRACE)
- NSLog(@" returning %d families", [families count]);
+ NSLog(@" returning %lu families", (unsigned long)[families count]);
return families;
}
@@ -566,8 +564,8 @@ ns_findfonts (Lisp_Object font_spec, BOOL isMatch)
matchingDescs = [fdesc matchingFontDescriptorsWithMandatoryKeys: fkeys];
if (NSFONT_TRACE)
- NSLog(@"Got desc %@ and found %d matching fonts from it: ", fdesc,
- [matchingDescs count]);
+ NSLog(@"Got desc %@ and found %lu matching fonts from it: ", fdesc,
+ (unsigned long)[matchingDescs count]);
for (dEnum = [matchingDescs objectEnumerator]; (desc = [dEnum nextObject]);)
{
@@ -662,7 +660,7 @@ struct font_driver nsfont_driver =
static Lisp_Object
nsfont_get_cache (struct frame *frame)
{
- Display_Info *dpyinfo = FRAME_NS_DISPLAY_INFO (frame);
+ Display_Info *dpyinfo = FRAME_DISPLAY_INFO (frame);
return (dpyinfo->name_list_element);
}
@@ -798,6 +796,7 @@ nsfont_open (struct frame *f, Lisp_Object font_entity, int pixel_size)
font_object = font_make_object (VECSIZE (struct nsfont_info),
font_entity, pixel_size);
+ ASET (font_object, FONT_TYPE_INDEX, nsfont_driver.type);
font_info = (struct nsfont_info *) XFONT_OBJECT (font_object);
font = (struct font *) font_info;
if (!font)
@@ -871,10 +870,11 @@ nsfont_open (struct frame *f, Lisp_Object font_entity, int pixel_size)
font_info->size = font->pixel_size;
/* max bounds */
- font_info->max_bounds.ascent = lrint ([sfont ascender]);
+ font->ascent = font_info->max_bounds.ascent = lrint ([sfont ascender]);
/* Descender is usually negative. Use floor to avoid
clipping descenders. */
- font_info->max_bounds.descent = -lrint (floor(adjusted_descender));
+ font->descent =
+ font_info->max_bounds.descent = -lrint (floor(adjusted_descender));
font_info->height =
font_info->max_bounds.ascent + font_info->max_bounds.descent;
font_info->max_bounds.width = lrint (font_info->width);
@@ -1051,16 +1051,26 @@ nsfont_draw (struct glyph_string *s, int from, int to, int x, int y,
#endif
struct face *face;
NSRect r;
- struct nsfont_info *font = ns_tmp_font;
+ struct nsfont_info *font;
NSColor *col, *bgCol;
unsigned short *t = s->char2b;
- int i, len;
+ int i, len, flags;
char isComposite = s->first_glyph->type == COMPOSITE_GLYPH;
int end = isComposite ? s->cmp_to : s->nchars;
block_input ();
+
+ font = (struct nsfont_info *)s->face->font;
+ if (font == NULL)
+ font = (struct nsfont_info *)FRAME_FONT (s->f);
+
/* Select face based on input flags */
- switch (ns_tmp_flags)
+ flags = s->hl == DRAW_CURSOR ? NS_DUMPGLYPH_CURSOR :
+ (s->hl == DRAW_MOUSE_FACE ? NS_DUMPGLYPH_MOUSEFACE :
+ (s->for_overlaps ? NS_DUMPGLYPH_FOREGROUND :
+ NS_DUMPGLYPH_NORMAL));
+
+ switch (flags)
{
case NS_DUMPGLYPH_CURSOR:
face = s->face;
@@ -1175,7 +1185,7 @@ nsfont_draw (struct glyph_string *s, int from, int to, int x, int y,
: FRAME_BACKGROUND_COLOR (s->f)) set];
else
{
- struct ns_display_info *dpyinfo = FRAME_NS_DISPLAY_INFO (s->f);
+ struct ns_display_info *dpyinfo = FRAME_DISPLAY_INFO (s->f);
[[dpyinfo->bitmaps[face->stipple-1].img stippleMask] set];
}
NSRectFill (br);
@@ -1188,8 +1198,8 @@ nsfont_draw (struct glyph_string *s, int from, int to, int x, int y,
col = (NS_FACE_FOREGROUND (face) != 0
? ns_lookup_indexed_color (NS_FACE_FOREGROUND (face), s->f)
: FRAME_FOREGROUND_COLOR (s->f));
- /* FIXME: find another way to pass this */
- bgCol = (ns_tmp_flags != NS_DUMPGLYPH_FOREGROUND ? nil
+
+ bgCol = (flags != NS_DUMPGLYPH_FOREGROUND ? nil
: (NS_FACE_BACKGROUND (face) != 0
? ns_lookup_indexed_color (NS_FACE_BACKGROUND (face), s->f)
: FRAME_BACKGROUND_COLOR (s->f)));
@@ -1239,7 +1249,9 @@ nsfont_draw (struct glyph_string *s, int from, int to, int x, int y,
CGContextSaveGState (gcontext);
- fliptf.c = font->synthItal ? Fix2X (kATSItalicQDSkew) : 0.0;
+ // Used to be Fix2X (kATSItalicQDSkew), but Fix2X is deprecated
+ // and kATSItalicQDSkew is 0.25.
+ fliptf.c = font->synthItal ? 0.25 : 0.0;
CGContextSetFont (gcontext, font->cgfont);
CGContextSetFontSize (gcontext, font->size);
@@ -1264,22 +1276,19 @@ nsfont_draw (struct glyph_string *s, int from, int to, int x, int y,
CGContextSetTextPosition (gcontext, r.origin.x, r.origin.y);
CGContextShowGlyphsWithAdvances (gcontext, s->char2b + s->cmp_from,
- advances, len);
+ advances, len);
if (face->overstrike)
{
CGContextSetTextPosition (gcontext, r.origin.x+0.5, r.origin.y);
CGContextShowGlyphsWithAdvances (gcontext, s->char2b + s->cmp_from,
- advances, len);
+ advances, len);
}
CGContextRestoreGState (gcontext);
}
#endif /* NS_IMPL_COCOA */
- /* Draw underline, overline, strike-through. */
- ns_draw_text_decoration (s, face, col, r.size.width, r.origin.x);
-
unblock_input ();
return to-from;
}
diff --git a/src/nsmenu.m b/src/nsmenu.m
index 697329df675..3ed1734d222 100644
--- a/src/nsmenu.m
+++ b/src/nsmenu.m
@@ -1242,7 +1242,7 @@ update_frame_tool_bar (struct frame *f)
{
/* 1) come up w/identifier */
NSString *identifier
- = [NSString stringWithFormat: @"%u", [img hash]];
+ = [NSString stringWithFormat: @"%lu", (unsigned long)[img hash]];
[activeIdentifiers addObject: identifier];
/* 2) create / reuse item */
diff --git a/src/nsterm.h b/src/nsterm.h
index 4e07d796250..9f7767b312e 100644
--- a/src/nsterm.h
+++ b/src/nsterm.h
@@ -597,6 +597,30 @@ struct ns_display_info
struct frame *x_highlight_frame;
struct frame *x_focus_frame;
+
+ /* The frame where the mouse was last time we reported a mouse event. */
+ struct frame *last_mouse_frame;
+
+ /* The frame where the mouse was last time we reported a mouse motion. */
+ struct frame *last_mouse_motion_frame;
+
+ /* Position where the mouse was last time we reported a motion.
+ This is a position on last_mouse_motion_frame. */
+ int last_mouse_motion_x;
+ int last_mouse_motion_y;
+
+ /* Where the mouse was last time we reported a mouse position. */
+ NSRect last_mouse_glyph;
+
+ /* Time of last mouse movement. */
+ Time last_mouse_movement_time;
+
+ /* The scroll bar in which the last motion event occurred. */
+#ifdef __OBJC__
+ EmacsScroller *last_mouse_scroll_bar;
+#else
+ void *last_mouse_scroll_bar;
+#endif
};
/* This is a chain of structures for all the NS displays currently in use. */
@@ -605,8 +629,6 @@ extern struct ns_display_info *x_display_list;
extern Lisp_Object ns_display_name_list;
extern struct ns_display_info *ns_display_info_for_name (Lisp_Object name);
-struct ns_display_info *check_x_display_info (Lisp_Object frame);
-
struct ns_output
{
#ifdef __OBJC__
@@ -678,9 +700,7 @@ struct x_output
/* This gives the ns_display_info structure for the display F is on. */
-#define FRAME_NS_DISPLAY_INFO(f) ((f)->output_data.ns->display_info)
-/* the primacy of X must be constantly worked with... */
-#define FRAME_X_DISPLAY_INFO(f) ((f)->output_data.ns->display_info)
+#define FRAME_DISPLAY_INFO(f) ((f)->output_data.ns->display_info)
#define FRAME_X_OUTPUT(f) ((f)->output_data.ns)
#define FRAME_NS_WINDOW(f) ((f)->output_data.ns->window_desc)
#define FRAME_X_WINDOW(f) ((f)->output_data.ns->window_desc)
@@ -689,12 +709,12 @@ struct x_output
#define FRAME_NS_DISPLAY(f) (0)
#define FRAME_X_DISPLAY(f) (0)
#define FRAME_X_SCREEN(f) (0)
-#define FRAME_X_VISUAL(f) FRAME_NS_DISPLAY_INFO(f)->visual
+#define FRAME_X_VISUAL(f) FRAME_DISPLAY_INFO(f)->visual
#define FRAME_FOREGROUND_COLOR(f) ((f)->output_data.ns->foreground_color)
#define FRAME_BACKGROUND_COLOR(f) ((f)->output_data.ns->background_color)
-#define FRAME_X_IMAGE_CACHE(F) FRAME_NS_DISPLAY_INFO ((F))->image_cache
+#define FRAME_X_IMAGE_CACHE(F) FRAME_DISPLAY_INFO ((F))->image_cache
#define NS_FACE_FOREGROUND(f) ((f)->foreground)
#define NS_FACE_BACKGROUND(f) ((f)->background)
@@ -703,10 +723,8 @@ struct x_output
#define FONT_WIDTH(f) ((f)->max_width)
#define FONT_HEIGHT(f) ((f)->height)
-/*#define FONT_BASE(f) ((f)->ascent) */
-#define FONT_BASE(f) (((struct nsfont_info *)f)->max_bounds.ascent)
-/*#define FONT_DESCENT(f) ((f)->descent) */
-#define FONT_DESCENT(f) (((struct nsfont_info *)f)->max_bounds.descent)
+#define FONT_BASE(f) ((f)->ascent)
+#define FONT_DESCENT(f) ((f)->descent)
#define FRAME_DEFAULT_FACE(f) FACE_FROM_ID (f, DEFAULT_FACE_ID)
@@ -744,14 +762,10 @@ struct x_output
#define NS_TOP_POS(f) ((f)->top_pos)
#endif
-#define FRAME_NS_FONT_TABLE(f) (FRAME_NS_DISPLAY_INFO (f)->font_table)
+#define FRAME_NS_FONT_TABLE(f) (FRAME_DISPLAY_INFO (f)->font_table)
#define FRAME_FONTSET(f) ((f)->output_data.ns->fontset)
-#define FRAME_SMALLEST_CHAR_WIDTH(f) \
- (FRAME_NS_DISPLAY_INFO (f)->smallest_char_width)
-#define FRAME_SMALLEST_FONT_HEIGHT(f) \
- (FRAME_NS_DISPLAY_INFO (f)->smallest_font_height)
#define FRAME_BASELINE_OFFSET(f) ((f)->output_data.ns->baseline_offset)
#define BLACK_PIX_DEFAULT(f) 0x000000
#define WHITE_PIX_DEFAULT(f) 0xFFFFFF
@@ -876,7 +890,6 @@ extern int ns_select (int nfds, fd_set *readfds, fd_set *writefds,
sigset_t const *sigmask);
extern unsigned long ns_get_rgb_color (struct frame *f,
float r, float g, float b, float a);
-extern NSPoint last_mouse_motion_position;
/* From nsterm.m, needed in nsfont.m. */
#ifdef __OBJC__
@@ -906,8 +919,4 @@ extern char gnustep_base_version[]; /* version tracking */
? (min) : (((x)>(max)) ? (max) : (x)))
#define SCREENMAXBOUND(x) (IN_BOUND (-SCREENMAX, x, SCREENMAX))
-/* needed somewhere... */
-#define VERTICAL_SCROLL_BAR_WIDTH_TRIM (0)
-
-
#endif /* HAVE_NS */
diff --git a/src/nsterm.m b/src/nsterm.m
index 31053ca7a0d..65c67eb9b56 100644
--- a/src/nsterm.m
+++ b/src/nsterm.m
@@ -64,6 +64,12 @@ GNUstep port and post-20 update by Adrian Robert (arobert@cogsci.ucsd.edu)
#include "process.h"
#endif
+#ifdef NS_IMPL_COCOA
+#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5
+#include "macfont.h"
+#endif
+#endif
+
/* call tracing */
#if 0
int term_trace_num = 0;
@@ -185,11 +191,6 @@ Lisp_Object ns_display_name_list;
long context_menu_value = 0;
/* display update */
-NSPoint last_mouse_motion_position;
-static NSRect last_mouse_glyph;
-static Time last_mouse_movement_time = 0;
-static Lisp_Object last_mouse_motion_frame;
-static EmacsScroller *last_mouse_scroll_bar = nil;
static struct frame *ns_updating_frame;
static NSView *focus_view = NULL;
static int ns_window_num = 0;
@@ -198,8 +199,6 @@ static NSRect uRect;
#endif
static BOOL gsaved = NO;
static BOOL ns_fake_keydown = NO;
-int ns_tmp_flags; /* FIXME */
-struct nsfont_info *ns_tmp_font; /* FIXME */
#ifdef NS_IMPL_COCOA
static BOOL ns_menu_bar_is_hidden = NO;
#endif
@@ -801,18 +800,6 @@ ns_update_end (struct frame *f)
NSTRACE (ns_update_end);
}
-
-static void
-ns_flush (struct frame *f)
-/* --------------------------------------------------------------------------
- external (RIF) call
- NS impl is no-op since currently we flush in ns_update_end and elsewhere
- -------------------------------------------------------------------------- */
-{
- NSTRACE (ns_flush);
-}
-
-
static void
ns_focus (struct frame *f, NSRect *r, int n)
/* --------------------------------------------------------------------------
@@ -1019,7 +1006,7 @@ ns_frame_rehighlight (struct frame *frame)
External (hook): called on things like window switching within frame
-------------------------------------------------------------------------- */
{
- struct ns_display_info *dpyinfo = FRAME_NS_DISPLAY_INFO (frame);
+ struct ns_display_info *dpyinfo = FRAME_DISPLAY_INFO (frame);
struct frame *old_highlight = dpyinfo->x_highlight_frame;
NSTRACE (ns_frame_rehighlight);
@@ -1116,7 +1103,7 @@ x_iconify_frame (struct frame *f)
NSTRACE (x_iconify_frame);
check_window_system (f);
view = FRAME_NS_VIEW (f);
- dpyinfo = FRAME_NS_DISPLAY_INFO (f);
+ dpyinfo = FRAME_DISPLAY_INFO (f);
if (dpyinfo->x_highlight_frame == f)
dpyinfo->x_highlight_frame = 0;
@@ -1148,7 +1135,7 @@ x_free_frame_resources (struct frame *f)
NSTRACE (x_free_frame_resources);
check_window_system (f);
view = FRAME_NS_VIEW (f);
- dpyinfo = FRAME_NS_DISPLAY_INFO (f);
+ dpyinfo = FRAME_DISPLAY_INFO (f);
hlinfo = MOUSE_HL_INFO (f);
[(EmacsView *)view setWindowClosing: YES]; /* may not have been informed */
@@ -1368,7 +1355,7 @@ ns_fullscreen_hook (struct frame *f)
NSColor *
ns_lookup_indexed_color (unsigned long idx, struct frame *f)
{
- struct ns_color_table *color_table = FRAME_NS_DISPLAY_INFO (f)->color_table;
+ struct ns_color_table *color_table = FRAME_DISPLAY_INFO (f)->color_table;
if (idx < 1 || idx >= color_table->avail)
return nil;
return color_table->colors[idx];
@@ -1378,7 +1365,7 @@ ns_lookup_indexed_color (unsigned long idx, struct frame *f)
unsigned long
ns_index_color (NSColor *color, struct frame *f)
{
- struct ns_color_table *color_table = FRAME_NS_DISPLAY_INFO (f)->color_table;
+ struct ns_color_table *color_table = FRAME_DISPLAY_INFO (f)->color_table;
ptrdiff_t idx;
ptrdiff_t i;
@@ -1428,7 +1415,7 @@ ns_free_indexed_color (unsigned long idx, struct frame *f)
if (!f)
return;
- color_table = FRAME_NS_DISPLAY_INFO (f)->color_table;
+ color_table = FRAME_DISPLAY_INFO (f)->color_table;
if (idx <= 0 || idx >= color_table->size) {
message1 ("ns_free_indexed_color: Color index out of range.\n");
@@ -1663,7 +1650,7 @@ x_set_frame_alpha (struct frame *f)
change the entire-frame transparency
-------------------------------------------------------------------------- */
{
- struct ns_display_info *dpyinfo = FRAME_NS_DISPLAY_INFO (f);
+ struct ns_display_info *dpyinfo = FRAME_DISPLAY_INFO (f);
double alpha = 1.0;
double alpha_min = 1.0;
@@ -1748,24 +1735,26 @@ note_mouse_movement (struct frame *frame, CGFloat x, CGFloat y)
known as last_mouse_glyph.
------------------------------------------------------------------------ */
{
+ struct ns_display_info *dpyinfo = FRAME_DISPLAY_INFO (frame);
+ NSRect *r;
+
// NSTRACE (note_mouse_movement);
- XSETFRAME (last_mouse_motion_frame, frame);
+ dpyinfo->last_mouse_motion_frame = frame;
+ r = &dpyinfo->last_mouse_glyph;
/* Note, this doesn't get called for enter/leave, since we don't have a
position. Those are taken care of in the corresponding NSView methods. */
/* has movement gone beyond last rect we were tracking? */
- if (x < last_mouse_glyph.origin.x ||
- x >= (last_mouse_glyph.origin.x + last_mouse_glyph.size.width) ||
- y < last_mouse_glyph.origin.y ||
- y >= (last_mouse_glyph.origin.y + last_mouse_glyph.size.height))
+ if (x < r->origin.x || x >= r->origin.x + r->size.width
+ || y < r->origin.y || y >= r->origin.y + r->size.height)
{
- ns_update_begin(frame);
+ ns_update_begin (frame);
frame->mouse_moved = 1;
note_mouse_highlight (frame, x, y);
- remember_mouse_glyph (frame, x, y, &last_mouse_glyph);
- ns_update_end(frame);
+ remember_mouse_glyph (frame, x, y, r);
+ ns_update_end (frame);
return 1;
}
@@ -1798,18 +1787,19 @@ ns_mouse_position (struct frame **fp, int insist, Lisp_Object *bar_window,
return;
}
- dpyinfo = FRAME_NS_DISPLAY_INFO (*fp);
+ dpyinfo = FRAME_DISPLAY_INFO (*fp);
block_input ();
- if (last_mouse_scroll_bar != nil && insist == 0)
+ if (dpyinfo->last_mouse_scroll_bar != nil && insist == 0)
{
/* TODO: we do not use this path at the moment because drag events will
go directly to the EmacsScroller. Leaving code in for now. */
- [last_mouse_scroll_bar getMouseMotionPart: (int *)part window: bar_window
- x: x y: y];
- if (time) *time = last_mouse_movement_time;
- last_mouse_scroll_bar = nil;
+ [dpyinfo->last_mouse_scroll_bar
+ getMouseMotionPart: (int *)part window: bar_window x: x y: y];
+ if (time)
+ *time = dpyinfo->last_mouse_movement_time;
+ dpyinfo->last_mouse_scroll_bar = nil;
}
else
{
@@ -1819,9 +1809,10 @@ ns_mouse_position (struct frame **fp, int insist, Lisp_Object *bar_window,
&& FRAME_NS_DISPLAY (XFRAME (frame)) == FRAME_NS_DISPLAY (*fp))
XFRAME (frame)->mouse_moved = 0;
- last_mouse_scroll_bar = nil;
- if (last_mouse_frame && FRAME_LIVE_P (last_mouse_frame))
- f = last_mouse_frame;
+ dpyinfo->last_mouse_scroll_bar = nil;
+ if (dpyinfo->last_mouse_frame
+ && FRAME_LIVE_P (dpyinfo->last_mouse_frame))
+ f = dpyinfo->last_mouse_frame;
else
f = dpyinfo->x_focus_frame ? dpyinfo->x_focus_frame
: SELECTED_FRAME ();
@@ -1832,7 +1823,8 @@ ns_mouse_position (struct frame **fp, int insist, Lisp_Object *bar_window,
position = [[view window] mouseLocationOutsideOfEventStream];
position = [view convertPoint: position fromView: nil];
- remember_mouse_glyph (f, position.x, position.y, &last_mouse_glyph);
+ remember_mouse_glyph (f, position.x, position.y,
+ &dpyinfo->last_mouse_glyph);
/*fprintf (stderr, "ns_mouse_position: %.0f, %.0f\n", position.x, position.y); */
if (bar_window) *bar_window = Qnil;
@@ -1840,7 +1832,8 @@ ns_mouse_position (struct frame **fp, int insist, Lisp_Object *bar_window,
if (x) XSETINT (*x, lrint (position.x));
if (y) XSETINT (*y, lrint (position.y));
- if (time) *time = last_mouse_movement_time;
+ if (time)
+ *time = dpyinfo->last_mouse_movement_time;
*fp = f;
}
}
@@ -2170,8 +2163,11 @@ ns_compute_glyph_string_overhangs (struct glyph_string *s)
else
{
s->left_overhang = 0;
- s->right_overhang = ((struct nsfont_info *)font)->ital ?
- FONT_HEIGHT (font) * 0.2 : 0;
+ if (EQ (font->driver->type, Qns))
+ s->right_overhang = ((struct nsfont_info *)font)->ital ?
+ FONT_HEIGHT (font) * 0.2 : 0;
+ else
+ s->right_overhang = 0;
}
}
@@ -2889,7 +2885,7 @@ ns_maybe_dumpglyphs_background (struct glyph_string *s, char force_p)
: FRAME_BACKGROUND_COLOR (s->f)) set];
else
{
- struct ns_display_info *dpyinfo = FRAME_NS_DISPLAY_INFO (s->f);
+ struct ns_display_info *dpyinfo = FRAME_DISPLAY_INFO (s->f);
[[dpyinfo->bitmaps[face->stipple-1].img stippleMask] set];
}
@@ -3145,8 +3141,10 @@ ns_draw_glyph_string (struct glyph_string *s)
{
/* TODO (optimize): focus for box and contents draw */
NSRect r[2];
- int n;
+ int n, flags;
char box_drawn_p = 0;
+ struct font *font = s->face->font;
+ if (! font) font = FRAME_FONT (s->f);
NSTRACE (ns_draw_glyph_string);
@@ -3213,13 +3211,10 @@ ns_draw_glyph_string (struct glyph_string *s)
ns_maybe_dumpglyphs_background
(s, s->first_glyph->type == COMPOSITE_GLYPH);
- ns_tmp_flags = s->hl == DRAW_CURSOR ? NS_DUMPGLYPH_CURSOR :
- (s->hl == DRAW_MOUSE_FACE ? NS_DUMPGLYPH_MOUSEFACE :
- (s->for_overlaps ? NS_DUMPGLYPH_FOREGROUND :
- NS_DUMPGLYPH_NORMAL));
- ns_tmp_font = (struct nsfont_info *)s->face->font;
- if (ns_tmp_font == NULL)
- ns_tmp_font = (struct nsfont_info *)FRAME_FONT (s->f);
+ flags = s->hl == DRAW_CURSOR ? NS_DUMPGLYPH_CURSOR :
+ (s->hl == DRAW_MOUSE_FACE ? NS_DUMPGLYPH_MOUSEFACE :
+ (s->for_overlaps ? NS_DUMPGLYPH_FOREGROUND :
+ NS_DUMPGLYPH_NORMAL));
if (s->hl == DRAW_CURSOR && s->w->phys_cursor_type == FILLED_BOX_CURSOR)
{
@@ -3228,10 +3223,21 @@ ns_draw_glyph_string (struct glyph_string *s)
NS_FACE_FOREGROUND (s->face) = tmp;
}
- ns_tmp_font->font.driver->draw
+ font->driver->draw
(s, 0, s->nchars, s->x, s->y,
- (ns_tmp_flags == NS_DUMPGLYPH_NORMAL && !s->background_filled_p)
- || ns_tmp_flags == NS_DUMPGLYPH_MOUSEFACE);
+ (flags == NS_DUMPGLYPH_NORMAL && !s->background_filled_p)
+ || flags == NS_DUMPGLYPH_MOUSEFACE);
+
+ {
+ NSColor *col = (NS_FACE_FOREGROUND (s->face) != 0
+ ? ns_lookup_indexed_color (NS_FACE_FOREGROUND (s->face),
+ s->f)
+ : FRAME_FOREGROUND_COLOR (s->f));
+ [col set];
+
+ /* Draw underline, overline, strike-through. */
+ ns_draw_text_decoration (s, s->face, col, s->width, s->x);
+ }
if (s->hl == DRAW_CURSOR && s->w->phys_cursor_type == FILLED_BOX_CURSOR)
{
@@ -3963,8 +3969,7 @@ static struct redisplay_interface ns_redisplay_interface =
ns_after_update_window_line,
ns_update_window_begin,
ns_update_window_end,
- ns_flush,
- 0, /* flush_display_optional */
+ 0, /* flush_display */
x_clear_window_mouse_face,
x_get_glyph_overhangs,
x_fix_overlapping_area,
@@ -3972,7 +3977,7 @@ static struct redisplay_interface ns_redisplay_interface =
0, /* define_fringe_bitmap */ /* FIXME: simplify ns_draw_fringe_bitmap */
0, /* destroy_fringe_bitmap */
ns_compute_glyph_string_overhangs,
- ns_draw_glyph_string, /* interface to nsfont.m */
+ ns_draw_glyph_string,
ns_define_frame_cursor,
ns_clear_frame_area,
ns_draw_window_cursor,
@@ -4822,17 +4827,26 @@ not_in_argv (NSString *arg)
/* called on font panel selection */
- (void)changeFont: (id)sender
{
- NSEvent *e =[[self window] currentEvent];
- struct face *face =FRAME_DEFAULT_FACE (emacsframe);
+ NSEvent *e = [[self window] currentEvent];
+ struct face *face = FRAME_DEFAULT_FACE (emacsframe);
+ struct font *font = face->font;
id newFont;
CGFloat size;
+ NSFont *nsfont;
NSTRACE (changeFont);
+
if (!emacs_event)
return;
- if ((newFont = [sender convertFont:
- ((struct nsfont_info *)face->font)->nsfont]))
+ if (EQ (font->driver->type, Qns))
+ nsfont = ((struct nsfont_info *)font)->nsfont;
+#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5
+ else
+ nsfont = (NSFont *) macfont_get_nsctfont (font);
+#endif
+
+ if ((newFont = [sender convertFont: nsfont]))
{
SET_FRAME_GARBAGED (emacsframe); /* now needed as of 2008/10 */
@@ -5194,8 +5208,10 @@ not_in_argv (NSString *arg)
NSString *str = [aString respondsToSelector: @selector (string)] ?
[aString string] : aString;
if (NS_KEYLOG)
- NSLog (@"setMarkedText '%@' len =%d range %d from %d", str, [str length],
- selRange.length, selRange.location);
+ NSLog (@"setMarkedText '%@' len =%lu range %lu from %lu",
+ str, (unsigned long)[str length],
+ (unsigned long)selRange.length,
+ (unsigned long)selRange.location);
if (workingText != nil)
[self deleteWorkingText];
@@ -5221,7 +5237,7 @@ not_in_argv (NSString *arg)
if (workingText == nil)
return;
if (NS_KEYLOG)
- NSLog(@"deleteWorkingText len =%d\n", [workingText length]);
+ NSLog(@"deleteWorkingText len =%lu\n", (unsigned long)[workingText length]);
[workingText release];
workingText = nil;
processingCompose = NO;
@@ -5349,6 +5365,7 @@ not_in_argv (NSString *arg)
/* This is what happens when the user presses a mouse button. */
- (void)mouseDown: (NSEvent *)theEvent
{
+ struct ns_display_info *dpyinfo = FRAME_DISPLAY_INFO (emacsframe);
NSPoint p = [self convertPoint: [theEvent locationInWindow] fromView: nil];
NSTRACE (mouseDown);
@@ -5358,10 +5375,10 @@ not_in_argv (NSString *arg)
if (!emacs_event)
return;
- last_mouse_frame = emacsframe;
+ dpyinfo->last_mouse_frame = emacsframe;
/* appears to be needed to prevent spurious movement events generated on
button clicks */
- last_mouse_frame->mouse_moved = 0;
+ emacsframe->mouse_moved = 0;
if ([theEvent type] == NSScrollWheel)
{
@@ -5433,13 +5450,16 @@ not_in_argv (NSString *arg)
- (void)mouseMoved: (NSEvent *)e
{
Mouse_HLInfo *hlinfo = MOUSE_HL_INFO (emacsframe);
+ struct ns_display_info *dpyinfo = FRAME_DISPLAY_INFO (emacsframe);
Lisp_Object frame;
+ NSPoint pt;
// NSTRACE (mouseMoved);
- last_mouse_movement_time = EV_TIMESTAMP (e);
- last_mouse_motion_position
- = [self convertPoint: [e locationInWindow] fromView: nil];
+ dpyinfo->last_mouse_movement_time = EV_TIMESTAMP (e);
+ pt = [self convertPoint: [e locationInWindow] fromView: nil];
+ dpyinfo->last_mouse_motion_x = pt.x;
+ dpyinfo->last_mouse_motion_y = pt.y;
/* update any mouse face */
if (hlinfo->mouse_face_hidden)
@@ -5456,9 +5476,8 @@ not_in_argv (NSString *arg)
{
NSTRACE (mouse_autoselect_window);
static Lisp_Object last_mouse_window;
- Lisp_Object window = window_from_coordinates
- (emacsframe, last_mouse_motion_position.x,
- last_mouse_motion_position.y, 0, 0);
+ Lisp_Object window
+ = window_from_coordinates (emacsframe, pt.x, pt.y, 0, 0);
if (WINDOWP (window)
&& !EQ (window, last_mouse_window)
@@ -5476,8 +5495,7 @@ not_in_argv (NSString *arg)
last_mouse_window = window;
}
- if (!note_mouse_movement (emacsframe, last_mouse_motion_position.x,
- last_mouse_motion_position.y))
+ if (!note_mouse_movement (emacsframe, pt.x, pt.y))
help_echo_string = previous_help_echo_string;
XSETFRAME (frame, emacsframe);
@@ -5718,7 +5736,7 @@ if (cols > 0 && rows > 0)
- (void)windowDidBecomeKey: (NSNotification *)notification
/* cf. x_detect_focus_change(), x_focus_changed(), x_new_focus_frame() */
{
- struct ns_display_info *dpyinfo = FRAME_NS_DISPLAY_INFO (emacsframe);
+ struct ns_display_info *dpyinfo = FRAME_DISPLAY_INFO (emacsframe);
struct frame *old_focus = dpyinfo->x_focus_frame;
NSTRACE (windowDidBecomeKey);
@@ -5739,7 +5757,7 @@ if (cols > 0 && rows > 0)
- (void)windowDidResignKey: (NSNotification *)notification
/* cf. x_detect_focus_change(), x_focus_changed(), x_new_focus_frame() */
{
- struct ns_display_info *dpyinfo = FRAME_NS_DISPLAY_INFO (emacsframe);
+ struct ns_display_info *dpyinfo = FRAME_DISPLAY_INFO (emacsframe);
BOOL is_focus_frame = dpyinfo->x_focus_frame == emacsframe;
NSTRACE (windowDidResignKey);
@@ -6322,7 +6340,9 @@ if (cols > 0 && rows > 0)
- (void)mouseEntered: (NSEvent *)theEvent
{
NSTRACE (mouseEntered);
- last_mouse_movement_time = EV_TIMESTAMP (theEvent);
+ if (emacsframe)
+ FRAME_DISPLAY_INFO (emacsframe)->last_mouse_movement_time
+ = EV_TIMESTAMP (theEvent);
}
@@ -6335,7 +6355,8 @@ if (cols > 0 && rows > 0)
if (!hlinfo)
return;
- last_mouse_movement_time = EV_TIMESTAMP (theEvent);
+ FRAME_DISPLAY_INFO (emacsframe)->last_mouse_movement_time
+ = EV_TIMESTAMP (theEvent);
if (emacsframe == hlinfo->mouse_face_mouse_frame)
{
@@ -7401,9 +7422,6 @@ allowing it to be used at a lower level for accented character entry.");
staticpro (&ns_display_name_list);
ns_display_name_list = Qnil;
- staticpro (&last_mouse_motion_frame);
- last_mouse_motion_frame = Qnil;
-
DEFVAR_LISP ("ns-auto-hide-menu-bar", ns_auto_hide_menu_bar,
doc: /* Non-nil means that the menu bar is hidden, but appears when the mouse is near.
Only works on OSX 10.6 or later. */);
@@ -7446,6 +7464,14 @@ variable `x-use-underline-position-properties', which is usually at the
baseline level. The default value is nil. */);
x_underline_at_descent_line = 0;
- /* Tell emacs about this window system. */
- Fprovide (intern ("ns"), Qnil);
+ /* Tell Emacs about this window system. */
+ Fprovide (Qns, Qnil);
+
+ syms_of_nsfont ();
+#ifdef NS_IMPL_COCOA
+#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1050
+ syms_of_macfont ();
+#endif
+#endif
+
}
diff --git a/src/process.c b/src/process.c
index 20f84990d6f..2ed8a690193 100644
--- a/src/process.c
+++ b/src/process.c
@@ -21,8 +21,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include <config.h>
-#define PROCESS_INLINE EXTERN_INLINE
-
#include <stdio.h>
#include <errno.h>
#include <sys/types.h> /* Some typedefs are used in sys/file.h. */
@@ -1335,15 +1333,15 @@ Returns nil if format of ADDRESS is invalid. */)
for (i = 0; i < nargs; i++)
{
- if (! RANGED_INTEGERP (0, p->contents[i], 65535))
+ if (! RANGED_INTEGERP (0, p->u.contents[i], 65535))
return Qnil;
if (nargs <= 5 /* IPv4 */
&& i < 4 /* host, not port */
- && XINT (p->contents[i]) > 255)
+ && XINT (p->u.contents[i]) > 255)
return Qnil;
- args[i+1] = p->contents[i];
+ args[i+1] = p->u.contents[i];
}
return Fformat (nargs+1, args);
@@ -1982,7 +1980,7 @@ conv_sockaddr_to_lisp (struct sockaddr *sa, int len)
len = sizeof (sin->sin_addr) + 1;
address = Fmake_vector (make_number (len), Qnil);
p = XVECTOR (address);
- p->contents[--len] = make_number (ntohs (sin->sin_port));
+ p->u.contents[--len] = make_number (ntohs (sin->sin_port));
cp = (unsigned char *) &sin->sin_addr;
break;
}
@@ -1994,9 +1992,9 @@ conv_sockaddr_to_lisp (struct sockaddr *sa, int len)
len = sizeof (sin6->sin6_addr)/2 + 1;
address = Fmake_vector (make_number (len), Qnil);
p = XVECTOR (address);
- p->contents[--len] = make_number (ntohs (sin6->sin6_port));
+ p->u.contents[--len] = make_number (ntohs (sin6->sin6_port));
for (i = 0; i < len; i++)
- p->contents[i] = make_number (ntohs (ip6[i]));
+ p->u.contents[i] = make_number (ntohs (ip6[i]));
return address;
}
#endif
@@ -2021,7 +2019,7 @@ conv_sockaddr_to_lisp (struct sockaddr *sa, int len)
i = 0;
while (i < len)
- p->contents[i++] = make_number (*cp++);
+ p->u.contents[i++] = make_number (*cp++);
return address;
}
@@ -2092,7 +2090,7 @@ conv_lisp_to_sockaddr (int family, Lisp_Object address, struct sockaddr *sa, int
{
struct sockaddr_in *sin = (struct sockaddr_in *) sa;
len = sizeof (sin->sin_addr) + 1;
- hostport = XINT (p->contents[--len]);
+ hostport = XINT (p->u.contents[--len]);
sin->sin_port = htons (hostport);
cp = (unsigned char *)&sin->sin_addr;
sa->sa_family = family;
@@ -2103,12 +2101,12 @@ conv_lisp_to_sockaddr (int family, Lisp_Object address, struct sockaddr *sa, int
struct sockaddr_in6 *sin6 = (struct sockaddr_in6 *) sa;
uint16_t *ip6 = (uint16_t *)&sin6->sin6_addr;
len = sizeof (sin6->sin6_addr) + 1;
- hostport = XINT (p->contents[--len]);
+ hostport = XINT (p->u.contents[--len]);
sin6->sin6_port = htons (hostport);
for (i = 0; i < len; i++)
- if (INTEGERP (p->contents[i]))
+ if (INTEGERP (p->u.contents[i]))
{
- int j = XFASTINT (p->contents[i]) & 0xffff;
+ int j = XFASTINT (p->u.contents[i]) & 0xffff;
ip6[i] = ntohs (j);
}
sa->sa_family = family;
@@ -2139,8 +2137,8 @@ conv_lisp_to_sockaddr (int family, Lisp_Object address, struct sockaddr *sa, int
}
for (i = 0; i < len; i++)
- if (INTEGERP (p->contents[i]))
- *cp++ = XFASTINT (p->contents[i]) & 0xff;
+ if (INTEGERP (p->u.contents[i]))
+ *cp++ = XFASTINT (p->u.contents[i]) & 0xff;
}
#ifdef DATAGRAM_SOCKETS
@@ -3731,7 +3729,7 @@ FLAGS is the current flags of the interface. */)
any = 1;
for (n = 0; n < 6; n++)
- p->contents[n] = make_number (((unsigned char *)&rq.ifr_hwaddr.sa_data[0])[n]);
+ p->u.contents[n] = make_number (((unsigned char *)&rq.ifr_hwaddr.sa_data[0])[n]);
elt = Fcons (make_number (rq.ifr_hwaddr.sa_family), hwaddr);
}
#elif defined (HAVE_GETIFADDRS) && defined (LLADDR)
@@ -3754,7 +3752,7 @@ FLAGS is the current flags of the interface. */)
memcpy (linkaddr, LLADDR (sdl), sdl->sdl_alen);
for (n = 0; n < 6; n++)
- p->contents[n] = make_number (linkaddr[n]);
+ p->u.contents[n] = make_number (linkaddr[n]);
elt = Fcons (make_number (it->ifa_addr->sa_family), hwaddr);
break;
@@ -4849,7 +4847,7 @@ wait_reading_process_output (intmax_t time_limit, int nsecs, int read_kbd,
#else
{
struct sockaddr pname;
- int pnamelen = sizeof (pname);
+ socklen_t pnamelen = sizeof (pname);
/* If connection failed, getpeername will fail. */
xerrno = 0;
diff --git a/src/process.h b/src/process.h
index 6aff95686a2..a9b15f03da4 100644
--- a/src/process.h
+++ b/src/process.h
@@ -27,9 +27,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#endif
INLINE_HEADER_BEGIN
-#ifndef PROCESS_INLINE
-# define PROCESS_INLINE INLINE
-#endif
/* Bound on number of file descriptors opened on behalf of a process,
that need to be closed. */
@@ -179,14 +176,14 @@ struct Lisp_Process
/* Most code should use these functions to set Lisp fields in struct
process. */
-PROCESS_INLINE void
+INLINE void
pset_childp (struct Lisp_Process *p, Lisp_Object val)
{
p->childp = val;
}
#ifdef HAVE_GNUTLS
-PROCESS_INLINE void
+INLINE void
pset_gnutls_cred_type (struct Lisp_Process *p, Lisp_Object val)
{
p->gnutls_cred_type = val;
diff --git a/src/ralloc.c b/src/ralloc.c
index 5f25ef2c320..5b7d6a512d7 100644
--- a/src/ralloc.c
+++ b/src/ralloc.c
@@ -85,7 +85,7 @@ static int extra_bytes;
/* Macros for rounding. Note that rounding to any value is possible
by changing the definition of PAGE. */
#define PAGE (getpagesize ())
-#define ROUNDUP(size) (((size_t) (size) + page_size - 1) \
+#define PAGE_ROUNDUP(size) (((size_t) (size) + page_size - 1) \
& ~((size_t) (page_size - 1)))
#define MEM_ALIGN sizeof (double)
@@ -281,7 +281,7 @@ obtain (void *address, size_t size)
Get some extra, so we can come here less often. */
get = size + extra_bytes - already_available;
- get = (char *) ROUNDUP ((char *) last_heap->end + get)
+ get = (char *) PAGE_ROUNDUP ((char *) last_heap->end + get)
- (char *) last_heap->end;
if (real_morecore (get) != last_heap->end)
@@ -344,7 +344,7 @@ relinquish (void)
else
{
excess = ((char *) last_heap->end
- - (char *) ROUNDUP ((char *) last_heap->end - excess));
+ - (char *) PAGE_ROUNDUP ((char *) last_heap->end - excess));
/* If the system doesn't want that much memory back, leave
the end of the last heap unchanged to reflect that. This
can occur if break_value is still within the original
@@ -768,9 +768,9 @@ r_alloc_sbrk (ptrdiff_t size)
not always find a space which is contiguous to the previous. */
void *new_bloc_start;
heap_ptr h = first_heap;
- size_t get = ROUNDUP (size);
+ size_t get = PAGE_ROUNDUP (size);
- address = (void *) ROUNDUP (virtual_break_value);
+ address = (void *) PAGE_ROUNDUP (virtual_break_value);
/* Search the list upward for a heap which is large enough. */
while ((char *) h->end < (char *) MEM_ROUNDUP ((char *) address + get))
@@ -778,7 +778,7 @@ r_alloc_sbrk (ptrdiff_t size)
h = h->next;
if (h == NIL_HEAP)
break;
- address = (void *) ROUNDUP (h->start);
+ address = (void *) PAGE_ROUNDUP (h->start);
}
/* If not found, obtain more space. */
@@ -790,9 +790,9 @@ r_alloc_sbrk (ptrdiff_t size)
return 0;
if (first_heap == last_heap)
- address = (void *) ROUNDUP (virtual_break_value);
+ address = (void *) PAGE_ROUNDUP (virtual_break_value);
else
- address = (void *) ROUNDUP (last_heap->start);
+ address = (void *) PAGE_ROUNDUP (last_heap->start);
h = last_heap;
}
@@ -1054,7 +1054,7 @@ r_alloc_check (void)
for (h = first_heap; h; h = h->next)
{
assert (h->prev == ph);
- assert ((void *) ROUNDUP (h->end) == h->end);
+ assert ((void *) PAGE_ROUNDUP (h->end) == h->end);
#if 0 /* ??? The code in ralloc.c does not really try to ensure
the heap start has any sort of alignment.
Perhaps it should. */
@@ -1190,7 +1190,7 @@ r_alloc_init (void)
if (break_value == NULL)
emacs_abort ();
- extra_bytes = ROUNDUP (50000);
+ extra_bytes = PAGE_ROUNDUP (50000);
#endif
#ifdef DOUG_LEA_MALLOC
@@ -1212,7 +1212,7 @@ r_alloc_init (void)
#endif
#ifndef SYSTEM_MALLOC
- first_heap->end = (void *) ROUNDUP (first_heap->start);
+ first_heap->end = (void *) PAGE_ROUNDUP (first_heap->start);
/* The extra call to real_morecore guarantees that the end of the
address space is a multiple of page_size, even if page_size is
diff --git a/src/regex.c b/src/regex.c
index 1befececd22..4ab98bbf098 100644
--- a/src/regex.c
+++ b/src/regex.c
@@ -131,12 +131,12 @@
# include "character.h"
# include "buffer.h"
-/* Make syntax table lookup grant data in gl_state. */
-# define SYNTAX_ENTRY_VIA_PROPERTY
-
# include "syntax.h"
# include "category.h"
+/* Make syntax table lookup grant data in gl_state. */
+# define SYNTAX(c) syntax_property (c, 1)
+
# ifdef malloc
# undef malloc
# endif
diff --git a/src/syntax.c b/src/syntax.c
index 31eb86faed8..e18db029309 100644
--- a/src/syntax.c
+++ b/src/syntax.c
@@ -20,8 +20,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include <config.h>
-#define SYNTAX_INLINE EXTERN_INLINE
-
#include <sys/types.h>
#include "lisp.h"
@@ -31,13 +29,15 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include "keymap.h"
#include "regex.h"
-/* Make syntax table lookup grant data in gl_state. */
-#define SYNTAX_ENTRY_VIA_PROPERTY
-
#include "syntax.h"
#include "intervals.h"
#include "category.h"
+/* Make syntax table lookup grant data in gl_state. */
+#define SYNTAX(c) syntax_property (c, 1)
+#define SYNTAX_ENTRY(c) syntax_property_entry (c, 1)
+#define SYNTAX_WITH_FLAGS(c) syntax_property_with_flags (c, 1)
+
/* Eight single-bit flags have the following meanings:
1. This character is the first of a two-character comment-start sequence.
2. This character is the second of a two-character comment-start sequence.
diff --git a/src/syntax.h b/src/syntax.h
index 1b96284af42..73fbb153338 100644
--- a/src/syntax.h
+++ b/src/syntax.h
@@ -19,9 +19,6 @@ You should have received a copy of the GNU General Public License
along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
INLINE_HEADER_BEGIN
-#ifndef SYNTAX_INLINE
-# define SYNTAX_INLINE INLINE
-#endif
extern void update_syntax_table (ptrdiff_t, EMACS_INT, bool, Lisp_Object);
@@ -86,35 +83,49 @@ struct gl_state_s
extern struct gl_state_s gl_state;
/* Fetch the information from the entry for character C
- in syntax table TABLE, or from globally kept data (gl_state).
+ in the current buffer's syntax table,
+ or (if VIA_PROPERTY) from globally kept data (gl_state).
Does inheritance. */
-SYNTAX_INLINE Lisp_Object
-SYNTAX_ENTRY (int c)
+INLINE Lisp_Object
+syntax_property_entry (int c, bool via_property)
{
-#ifdef SYNTAX_ENTRY_VIA_PROPERTY
- return (gl_state.use_global
- ? gl_state.global_code
- : CHAR_TABLE_REF (gl_state.current_syntax_table, c));
-#else
+ if (via_property)
+ return (gl_state.use_global
+ ? gl_state.global_code
+ : CHAR_TABLE_REF (gl_state.current_syntax_table, c));
return CHAR_TABLE_REF (BVAR (current_buffer, syntax_table), c);
-#endif
+}
+INLINE Lisp_Object
+SYNTAX_ENTRY (int c)
+{
+ return syntax_property_entry (c, 0);
}
/* Extract the information from the entry for character C
in the current syntax table. */
-SYNTAX_INLINE int
-SYNTAX_WITH_FLAGS (int c)
+INLINE int
+syntax_property_with_flags (int c, bool via_property)
{
- Lisp_Object ent = SYNTAX_ENTRY (c);
+ Lisp_Object ent = syntax_property_entry (c, via_property);
return CONSP (ent) ? XINT (XCAR (ent)) : Swhitespace;
}
+INLINE int
+SYNTAX_WITH_FLAGS (int c)
+{
+ return syntax_property_with_flags (c, 0);
+}
-SYNTAX_INLINE enum syntaxcode
+INLINE enum syntaxcode
+syntax_property (int c, bool via_property)
+{
+ return syntax_property_with_flags (c, via_property) & 0xff;
+}
+INLINE enum syntaxcode
SYNTAX (int c)
{
- return SYNTAX_WITH_FLAGS (c) & 0xff;
+ return syntax_property (c, 0);
}
@@ -137,7 +148,7 @@ extern char const syntax_code_spec[16];
The value is meant for use in code that does nothing when
parse_sexp_lookup_properties is 0, so return 0 in that case, for speed. */
-SYNTAX_INLINE ptrdiff_t
+INLINE ptrdiff_t
SYNTAX_TABLE_BYTE_TO_CHAR (ptrdiff_t bytepos)
{
return (! parse_sexp_lookup_properties
@@ -157,7 +168,7 @@ SYNTAX_TABLE_BYTE_TO_CHAR (ptrdiff_t bytepos)
/* Make syntax table state (gl_state) good for CHARPOS, assuming it is
currently good for a position before CHARPOS. */
-SYNTAX_INLINE void
+INLINE void
UPDATE_SYNTAX_TABLE_FORWARD (ptrdiff_t charpos)
{
if (parse_sexp_lookup_properties && charpos >= gl_state.e_property)
@@ -167,7 +178,7 @@ UPDATE_SYNTAX_TABLE_FORWARD (ptrdiff_t charpos)
/* Make syntax table state (gl_state) good for CHARPOS, assuming it is
currently good for a position after CHARPOS. */
-SYNTAX_INLINE void
+INLINE void
UPDATE_SYNTAX_TABLE_BACKWARD (ptrdiff_t charpos)
{
if (parse_sexp_lookup_properties && charpos < gl_state.b_property)
@@ -176,7 +187,7 @@ UPDATE_SYNTAX_TABLE_BACKWARD (ptrdiff_t charpos)
/* Make syntax table good for CHARPOS. */
-SYNTAX_INLINE void
+INLINE void
UPDATE_SYNTAX_TABLE (ptrdiff_t charpos)
{
UPDATE_SYNTAX_TABLE_BACKWARD (charpos);
@@ -185,7 +196,7 @@ UPDATE_SYNTAX_TABLE (ptrdiff_t charpos)
/* Set up the buffer-global syntax table. */
-SYNTAX_INLINE void
+INLINE void
SETUP_BUFFER_SYNTAX_TABLE (void)
{
gl_state.use_global = 0;
diff --git a/src/sysdep.c b/src/sysdep.c
index 6439697501e..84859813249 100644
--- a/src/sysdep.c
+++ b/src/sysdep.c
@@ -19,8 +19,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include <config.h>
-#define SYSTIME_INLINE EXTERN_INLINE
-
#include <execinfo.h>
#include "sysstdio.h"
#ifdef HAVE_PWD_H
diff --git a/src/systime.h b/src/systime.h
index b1c3d940b0e..a9bdf53b09f 100644
--- a/src/systime.h
+++ b/src/systime.h
@@ -22,9 +22,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include <timespec.h>
INLINE_HEADER_BEGIN
-#ifndef SYSTIME_INLINE
-# define SYSTIME_INLINE INLINE
-#endif
#ifdef emacs
# ifdef HAVE_X_WINDOWS
@@ -54,7 +51,7 @@ typedef unsigned long Time;
should be an absolute time since the epoch and B a nonnegative offset. */
/* Return an invalid timespec. */
-SYSTIME_INLINE struct timespec
+INLINE struct timespec
invalid_timespec (void)
{
return make_timespec (0, -1);
@@ -63,14 +60,14 @@ invalid_timespec (void)
/* Return 1 if TIME is a valid timespec. This currently doesn't worry
about whether tv_nsec is less than TIMESPEC_RESOLUTION; leap seconds
might cause a problem if it did. */
-SYSTIME_INLINE int
+INLINE int
timespec_valid_p (struct timespec t)
{
return t.tv_nsec >= 0;
}
/* Return current system time. */
-SYSTIME_INLINE struct timespec
+INLINE struct timespec
current_timespec (void)
{
struct timespec r;
diff --git a/src/term.c b/src/term.c
index 830ecf10dcb..116a2e6bba1 100644
--- a/src/term.c
+++ b/src/term.c
@@ -1810,27 +1810,10 @@ append_glyphless_glyph (struct it *it, int face_id, const char *str)
static void
produce_glyphless_glyph (struct it *it, Lisp_Object acronym)
{
- int face_id;
- int len;
+ int len, face_id = merge_glyphless_glyph_face (it);
char buf[sizeof "\\x" + max (6, (sizeof it->c * CHAR_BIT + 3) / 4)];
char const *str = " ";
- /* Get a face ID for the glyph by utilizing a cache (the same way as
- done for `escape-glyph' in get_next_display_element). */
- if (it->f == last_glyphless_glyph_frame
- && it->face_id == last_glyphless_glyph_face_id)
- {
- face_id = last_glyphless_glyph_merged_face_id;
- }
- else
- {
- /* Merge the `glyphless-char' face into the current face. */
- face_id = merge_faces (it->f, Qglyphless_char, 0, it->face_id);
- last_glyphless_glyph_frame = it->f;
- last_glyphless_glyph_face_id = it->face_id;
- last_glyphless_glyph_merged_face_id = face_id;
- }
-
if (it->glyphless_method == GLYPHLESS_DISPLAY_THIN_SPACE)
{
/* As there's no way to produce a thin space, we produce a space
@@ -4061,12 +4044,8 @@ dissociate_if_controlling_tty (int fd)
struct terminal *
init_tty (const char *name, const char *terminal_type, bool must_succeed)
{
-#ifdef TERMINFO
- char **address = 0;
-#else
char *area;
char **address = &area;
-#endif
int status;
struct tty_display_info *tty = NULL;
struct terminal *terminal = NULL;
@@ -4157,13 +4136,9 @@ init_tty (const char *name, const char *terminal_type, bool must_succeed)
/* On some systems, tgetent tries to access the controlling
terminal. */
block_tty_out_signal ();
-#ifdef TERMINFO
- status = tgetent (0, terminal_type);
-#else
status = tgetent (tty->termcap_term_buffer, terminal_type);
if (tty->termcap_term_buffer[TERMCAP_BUFFER_SIZE - 1])
emacs_abort ();
-#endif
unblock_tty_out_signal ();
if (status < 0)
@@ -4194,9 +4169,7 @@ use the Bourne shell command `TERM=... export TERM' (C-shell:\n\
terminal_type);
}
-#ifndef TERMINFO
area = tty->termcap_strings_buffer;
-#endif
tty->TS_ins_line = tgetstr ("al", address);
tty->TS_ins_multi_lines = tgetstr ("AL", address);
tty->TS_bell = tgetstr ("bl", address);
diff --git a/src/termchar.h b/src/termchar.h
index 9dea46f0b76..031f4e4034b 100644
--- a/src/termchar.h
+++ b/src/termchar.h
@@ -30,9 +30,7 @@ struct tty_output
/* There is nothing else here at the moment... */
};
-#ifndef TERMINFO
enum { TERMCAP_BUFFER_SIZE = 4096 };
-#endif
/* Parameters that are shared between frames on the same tty device. */
@@ -78,7 +76,6 @@ struct tty_display_info
mouse-face. */
Mouse_HLInfo mouse_highlight;
-#ifndef TERMINFO
/* Buffer used internally by termcap (see tgetent in the Termcap
manual). Only init_tty should use this. */
char termcap_term_buffer[TERMCAP_BUFFER_SIZE];
@@ -86,7 +83,6 @@ struct tty_display_info
/* Buffer storing terminal description strings (see tgetstr in the
Termcap manual). Only init_tty should use this. */
char termcap_strings_buffer[TERMCAP_BUFFER_SIZE];
-#endif
/* Strings, numbers and flags taken from the termcap entry. */
diff --git a/src/termhooks.h b/src/termhooks.h
index 3e4ec1d7e6d..9cea0c188ec 100644
--- a/src/termhooks.h
+++ b/src/termhooks.h
@@ -26,11 +26,9 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include "systime.h" /* for Time */
INLINE_HEADER_BEGIN
-#ifndef TERMHOOKS_INLINE
-# define TERMHOOKS_INLINE INLINE
-#endif
enum scroll_bar_part {
+ scroll_bar_nowhere = -1,
scroll_bar_above_handle,
scroll_bar_handle,
scroll_bar_below_handle,
@@ -42,11 +40,6 @@ enum scroll_bar_part {
scroll_bar_move_ratio
};
-/* If the value of the frame parameter changed, whis hook is called.
- For example, if going from fullscreen to not fullscreen this hook
- may do something OS dependent, like extended window manager hints on X11. */
-extern void (*fullscreen_hook) (struct frame *f);
-
/* Output method of a terminal (and frames on this terminal, respectively). */
enum output_method
@@ -498,7 +491,7 @@ struct terminal
windows. */
void (*frame_raise_lower_hook) (struct frame *f, int raise_flag);
- /* If the value of the frame parameter changed, whis hook is called.
+ /* If the value of the frame parameter changed, this hook is called.
For example, if going from fullscreen to not fullscreen this hook
may do something OS dependent, like extended window manager hints on X11. */
void (*fullscreen_hook) (struct frame *f);
@@ -612,12 +605,12 @@ struct terminal
/* Most code should use these functions to set Lisp fields in struct
terminal. */
-TERMHOOKS_INLINE void
+INLINE void
tset_charset_list (struct terminal *t, Lisp_Object val)
{
t->charset_list = val;
}
-TERMHOOKS_INLINE void
+INLINE void
tset_selection_alist (struct terminal *t, Lisp_Object val)
{
t->Vselection_alist = val;
diff --git a/src/terminal.c b/src/terminal.c
index 4b5532e3a44..61c5d050945 100644
--- a/src/terminal.c
+++ b/src/terminal.c
@@ -18,8 +18,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include <config.h>
-#define TERMHOOKS_INLINE EXTERN_INLINE
-
#include <stdio.h>
#include "lisp.h"
diff --git a/src/w32console.c b/src/w32console.c
index 94bb5df07a4..285abb310fe 100644
--- a/src/w32console.c
+++ b/src/w32console.c
@@ -630,7 +630,6 @@ void
initialize_w32_display (struct terminal *term, int *width, int *height)
{
CONSOLE_SCREEN_BUFFER_INFO info;
- Mouse_HLInfo *hlinfo;
term->rif = 0; /* No window based redisplay on the console. */
term->cursor_to_hook = w32con_move_cursor;
diff --git a/src/w32fns.c b/src/w32fns.c
index 8ec911280a0..6e52453caea 100644
--- a/src/w32fns.c
+++ b/src/w32fns.c
@@ -277,7 +277,7 @@ check_x_display_info (Lisp_Object frame)
struct frame *sf = XFRAME (selected_frame);
if (FRAME_W32_P (sf) && FRAME_LIVE_P (sf))
- return FRAME_W32_DISPLAY_INFO (sf);
+ return FRAME_DISPLAY_INFO (sf);
else
return &one_w32_display_info;
}
@@ -291,7 +291,7 @@ check_x_display_info (Lisp_Object frame)
f = XFRAME (frame);
if (! FRAME_W32_P (f))
error ("Non-W32 frame used");
- return FRAME_W32_DISPLAY_INFO (f);
+ return FRAME_DISPLAY_INFO (f);
}
}
@@ -307,7 +307,7 @@ x_window_to_frame (struct w32_display_info *dpyinfo, HWND wdesc)
FOR_EACH_FRAME (tail, frame)
{
f = XFRAME (frame);
- if (!FRAME_W32_P (f) || FRAME_W32_DISPLAY_INFO (f) != dpyinfo)
+ if (!FRAME_W32_P (f) || FRAME_DISPLAY_INFO (f) != dpyinfo)
continue;
if (FRAME_W32_WINDOW (f) == wdesc)
@@ -1027,18 +1027,18 @@ w32_regenerate_palette (struct frame *f)
int i;
/* don't bother trying to create palette if not supported */
- if (! FRAME_W32_DISPLAY_INFO (f)->has_palette)
+ if (! FRAME_DISPLAY_INFO (f)->has_palette)
return;
log_palette = (LOGPALETTE *)
alloca (sizeof (LOGPALETTE) +
- FRAME_W32_DISPLAY_INFO (f)->num_colors * sizeof (PALETTEENTRY));
+ FRAME_DISPLAY_INFO (f)->num_colors * sizeof (PALETTEENTRY));
log_palette->palVersion = 0x300;
- log_palette->palNumEntries = FRAME_W32_DISPLAY_INFO (f)->num_colors;
+ log_palette->palNumEntries = FRAME_DISPLAY_INFO (f)->num_colors;
- list = FRAME_W32_DISPLAY_INFO (f)->color_list;
+ list = FRAME_DISPLAY_INFO (f)->color_list;
for (i = 0;
- i < FRAME_W32_DISPLAY_INFO (f)->num_colors;
+ i < FRAME_DISPLAY_INFO (f)->num_colors;
i++, list = list->next)
log_palette->palPalEntry[i] = list->entry;
@@ -1046,9 +1046,9 @@ w32_regenerate_palette (struct frame *f)
enter_crit ();
- if (FRAME_W32_DISPLAY_INFO (f)->palette)
- DeleteObject (FRAME_W32_DISPLAY_INFO (f)->palette);
- FRAME_W32_DISPLAY_INFO (f)->palette = new_palette;
+ if (FRAME_DISPLAY_INFO (f)->palette)
+ DeleteObject (FRAME_DISPLAY_INFO (f)->palette);
+ FRAME_DISPLAY_INFO (f)->palette = new_palette;
/* Realize display palette and garbage all frames. */
release_frame_dc (f, get_frame_dc (f));
@@ -1071,7 +1071,7 @@ w32_regenerate_palette (struct frame *f)
void
w32_map_color (struct frame *f, COLORREF color)
{
- struct w32_palette_entry * list = FRAME_W32_DISPLAY_INFO (f)->color_list;
+ struct w32_palette_entry * list = FRAME_DISPLAY_INFO (f)->color_list;
if (NILP (Vw32_enable_palette))
return;
@@ -1091,19 +1091,19 @@ w32_map_color (struct frame *f, COLORREF color)
list = xmalloc (sizeof (struct w32_palette_entry));
SET_W32_COLOR (list->entry, color);
list->refcount = 1;
- list->next = FRAME_W32_DISPLAY_INFO (f)->color_list;
- FRAME_W32_DISPLAY_INFO (f)->color_list = list;
- FRAME_W32_DISPLAY_INFO (f)->num_colors++;
+ list->next = FRAME_DISPLAY_INFO (f)->color_list;
+ FRAME_DISPLAY_INFO (f)->color_list = list;
+ FRAME_DISPLAY_INFO (f)->num_colors++;
/* set flag that palette must be regenerated */
- FRAME_W32_DISPLAY_INFO (f)->regen_palette = TRUE;
+ FRAME_DISPLAY_INFO (f)->regen_palette = TRUE;
}
void
w32_unmap_color (struct frame *f, COLORREF color)
{
- struct w32_palette_entry * list = FRAME_W32_DISPLAY_INFO (f)->color_list;
- struct w32_palette_entry **prev = &FRAME_W32_DISPLAY_INFO (f)->color_list;
+ struct w32_palette_entry * list = FRAME_DISPLAY_INFO (f)->color_list;
+ struct w32_palette_entry **prev = &FRAME_DISPLAY_INFO (f)->color_list;
if (NILP (Vw32_enable_palette))
return;
@@ -1117,7 +1117,7 @@ w32_unmap_color (struct frame *f, COLORREF color)
{
*prev = list->next;
xfree (list);
- FRAME_W32_DISPLAY_INFO (f)->num_colors--;
+ FRAME_DISPLAY_INFO (f)->num_colors--;
break;
}
else
@@ -1128,7 +1128,7 @@ w32_unmap_color (struct frame *f, COLORREF color)
}
/* set flag that palette must be regenerated */
- FRAME_W32_DISPLAY_INFO (f)->regen_palette = TRUE;
+ FRAME_DISPLAY_INFO (f)->regen_palette = TRUE;
}
#endif
@@ -1235,7 +1235,7 @@ x_decode_color (struct frame *f, Lisp_Object arg, int def)
else if (strcmp (SDATA (arg), "white") == 0)
return WHITE_PIX_DEFAULT (f);
- if ((FRAME_W32_DISPLAY_INFO (f)->n_planes * FRAME_W32_DISPLAY_INFO (f)->n_cbits) == 1)
+ if ((FRAME_DISPLAY_INFO (f)->n_planes * FRAME_DISPLAY_INFO (f)->n_cbits) == 1)
return def;
/* w32_defined_color is responsible for coping with failures
@@ -1637,7 +1637,7 @@ x_set_menu_bar_lines (struct frame *f, Lisp_Object value, Lisp_Object oldval)
x_set_window_size (f, 0, FRAME_COLS (f), FRAME_LINES (f));
do_pending_window_change (0);
}
- adjust_glyphs (f);
+ adjust_frame_glyphs (f);
}
@@ -1679,7 +1679,7 @@ x_set_tool_bar_lines (struct frame *f, Lisp_Object value, Lisp_Object oldval)
FRAME_TOOL_BAR_LINES (f) = nlines;
resize_frame_windows (f, FRAME_LINES (f), 0);
- adjust_glyphs (f);
+ adjust_frame_glyphs (f);
/* We also have to make sure that the internal border at the top of
the frame, below the menu bar or tool bar, is redrawn when the
@@ -1752,10 +1752,10 @@ x_set_name (struct frame *f, Lisp_Object name, int explicit)
{
/* Check for no change needed in this very common case
before we do any consing. */
- if (!strcmp (FRAME_W32_DISPLAY_INFO (f)->w32_id_name,
+ if (!strcmp (FRAME_DISPLAY_INFO (f)->w32_id_name,
SDATA (f->name)))
return;
- name = build_string (FRAME_W32_DISPLAY_INFO (f)->w32_id_name);
+ name = build_string (FRAME_DISPLAY_INFO (f)->w32_id_name);
}
else
CHECK_STRING (name);
@@ -1890,16 +1890,11 @@ w32_init_class (HINSTANCE hinst)
static HWND
w32_createscrollbar (struct frame *f, struct scroll_bar * bar)
{
- return (CreateWindow ("SCROLLBAR", "", SBS_VERT | WS_CHILD | WS_VISIBLE,
- /* Position and size of scroll bar. */
- XINT (bar->left) + VERTICAL_SCROLL_BAR_WIDTH_TRIM,
- XINT (bar->top),
- XINT (bar->width) - VERTICAL_SCROLL_BAR_WIDTH_TRIM * 2,
- XINT (bar->height),
- FRAME_W32_WINDOW (f),
- NULL,
- hinst,
- NULL));
+ return CreateWindow ("SCROLLBAR", "", SBS_VERT | WS_CHILD | WS_VISIBLE,
+ /* Position and size of scroll bar. */
+ XINT (bar->left), XINT (bar->top),
+ XINT (bar->width), XINT (bar->height),
+ FRAME_W32_WINDOW (f), NULL, hinst, NULL);
}
static void
@@ -4232,7 +4227,7 @@ unwind_create_frame (Lisp_Object frame)
if (NILP (Fmemq (frame, Vframe_list)))
{
#ifdef GLYPH_DEBUG
- struct w32_display_info *dpyinfo = FRAME_W32_DISPLAY_INFO (f);
+ struct w32_display_info *dpyinfo = FRAME_DISPLAY_INFO (f);
#endif
x_free_frame_resources (f);
@@ -4258,7 +4253,7 @@ do_unwind_create_frame (Lisp_Object frame)
static void
x_default_font_parameter (struct frame *f, Lisp_Object parms)
{
- struct w32_display_info *dpyinfo = FRAME_W32_DISPLAY_INFO (f);
+ struct w32_display_info *dpyinfo = FRAME_DISPLAY_INFO (f);
Lisp_Object font_param = x_get_arg (dpyinfo, parms, Qfont, NULL, NULL,
RES_TYPE_STRING);
Lisp_Object font;
@@ -4392,9 +4387,9 @@ This function is an internal primitive--use `make-frame' instead. */)
if (! STRINGP (f->icon_name))
fset_icon_name (f, Qnil);
-/* FRAME_W32_DISPLAY_INFO (f) = dpyinfo; */
+/* FRAME_DISPLAY_INFO (f) = dpyinfo; */
- /* With FRAME_X_DISPLAY_INFO set up, this unwind-protect is safe. */
+ /* With FRAME_DISPLAY_INFO set up, this unwind-protect is safe. */
record_unwind_protect (do_unwind_create_frame, frame);
#ifdef GLYPH_DEBUG
image_cache_refcount =
@@ -4411,7 +4406,7 @@ This function is an internal primitive--use `make-frame' instead. */)
}
else
{
- f->output_data.w32->parent_desc = FRAME_W32_DISPLAY_INFO (f)->root_window;
+ f->output_data.w32->parent_desc = FRAME_DISPLAY_INFO (f)->root_window;
f->output_data.w32->explicit_parent = 0;
}
@@ -4506,7 +4501,7 @@ This function is an internal primitive--use `make-frame' instead. */)
"fullscreen", "Fullscreen", RES_TYPE_SYMBOL);
f->output_data.w32->dwStyle = WS_OVERLAPPEDWINDOW;
- f->output_data.w32->parent_desc = FRAME_W32_DISPLAY_INFO (f)->root_window;
+ f->output_data.w32->parent_desc = FRAME_DISPLAY_INFO (f)->root_window;
f->output_data.w32->text_cursor = w32_load_cursor (IDC_IBEAM);
f->output_data.w32->nontext_cursor = w32_load_cursor (IDC_ARROW);
@@ -4529,7 +4524,7 @@ This function is an internal primitive--use `make-frame' instead. */)
/* Now consider the frame official. */
f->terminal->reference_count++;
- FRAME_W32_DISPLAY_INFO (f)->reference_count++;
+ FRAME_DISPLAY_INFO (f)->reference_count++;
Vframe_list = Fcons (frame, Vframe_list);
/* We need to do this after creating the window, so that the
@@ -4613,7 +4608,7 @@ This function is an internal primitive--use `make-frame' instead. */)
Lisp_Object
x_get_focus_frame (struct frame *frame)
{
- struct w32_display_info *dpyinfo = FRAME_W32_DISPLAY_INFO (frame);
+ struct w32_display_info *dpyinfo = FRAME_DISPLAY_INFO (frame);
Lisp_Object xfocus;
if (! dpyinfo->w32_focus_frame)
return Qnil;
@@ -4622,15 +4617,6 @@ x_get_focus_frame (struct frame *frame)
return xfocus;
}
-DEFUN ("x-focus-frame", Fx_focus_frame, Sx_focus_frame, 1, 1, 0,
- doc: /* Give FRAME input focus, raising to foreground if necessary. */)
- (Lisp_Object frame)
-{
- x_focus_on_frame (decode_window_system_frame (frame));
- return Qnil;
-}
-
-
DEFUN ("xw-color-defined-p", Fxw_color_defined_p, Sxw_color_defined_p, 1, 2, 0,
doc: /* Internal function called by `color-defined-p', which see.
\(Note that the Nextstep version of this function ignores FRAME.) */)
@@ -5131,7 +5117,7 @@ SOUND is nil to use the normal beep. */)
int
x_screen_planes (register struct frame *f)
{
- return FRAME_W32_DISPLAY_INFO (f)->n_planes;
+ return FRAME_DISPLAY_INFO (f)->n_planes;
}
/* Return the display structure for the display named NAME.
@@ -5201,11 +5187,6 @@ terminate Emacs if we can't open the connection.
if (! NILP (xrm_string))
CHECK_STRING (xrm_string);
-#if 0
- if (! EQ (Vwindow_system, intern ("w32")))
- error ("Not using Microsoft Windows");
-#endif
-
/* Allow color mapping to be defined externally; first look in user's
HOME directory, then in Emacs etc dir for a file called rgb.txt. */
{
@@ -5668,7 +5649,7 @@ x_create_tip_frame (struct w32_display_info *dpyinfo,
dpyinfo_refcount = dpyinfo->reference_count;
#endif /* GLYPH_DEBUG */
FRAME_KBOARD (f) = kb;
- f->output_data.w32->parent_desc = FRAME_W32_DISPLAY_INFO (f)->root_window;
+ f->output_data.w32->parent_desc = FRAME_DISPLAY_INFO (f)->root_window;
f->output_data.w32->explicit_parent = 0;
/* Set the name; the functions to which we pass f expect the name to
@@ -5737,7 +5718,7 @@ x_create_tip_frame (struct w32_display_info *dpyinfo,
init_frame_faces (f);
f->output_data.w32->dwStyle = WS_BORDER | WS_POPUP | WS_DISABLED;
- f->output_data.w32->parent_desc = FRAME_W32_DISPLAY_INFO (f)->root_window;
+ f->output_data.w32->parent_desc = FRAME_DISPLAY_INFO (f)->root_window;
window_prompting = x_figure_window_size (f, parms, 0);
@@ -5804,7 +5785,7 @@ x_create_tip_frame (struct w32_display_info *dpyinfo,
/* Now that the frame is official, it counts as a reference to
its display. */
- FRAME_W32_DISPLAY_INFO (f)->reference_count++;
+ FRAME_DISPLAY_INFO (f)->reference_count++;
f->terminal->reference_count++;
/* It is now ok to make the frame official even if we get an error
@@ -5851,8 +5832,8 @@ compute_tip_xy (struct frame *f,
/* Default min and max values. */
min_x = 0;
min_y = 0;
- max_x = x_display_pixel_width (FRAME_W32_DISPLAY_INFO (f));
- max_y = x_display_pixel_height (FRAME_W32_DISPLAY_INFO (f));
+ max_x = x_display_pixel_width (FRAME_DISPLAY_INFO (f));
+ max_y = x_display_pixel_height (FRAME_DISPLAY_INFO (f));
block_input ();
GetCursorPos (&pt);
@@ -6038,7 +6019,7 @@ Text larger than the specified size is clipped. */)
/* Create a frame for the tooltip, and record it in the global
variable tip_frame. */
- frame = x_create_tip_frame (FRAME_W32_DISPLAY_INFO (f), parms, string);
+ frame = x_create_tip_frame (FRAME_DISPLAY_INFO (f), parms, string);
f = XFRAME (frame);
/* Set up the frame's root window. */
@@ -6062,7 +6043,7 @@ Text larger than the specified size is clipped. */)
}
FRAME_TOTAL_COLS (f) = WINDOW_TOTAL_COLS (w);
- adjust_glyphs (f);
+ adjust_frame_glyphs (f);
w->pseudo_window_p = 1;
/* Display the tooltip text in a temporary buffer. */
@@ -6131,7 +6112,7 @@ Text larger than the specified size is clipped. */)
width /= WINDOW_FRAME_COLUMN_WIDTH (w);
w->total_cols = width;
FRAME_TOTAL_COLS (f) = width;
- adjust_glyphs (f);
+ adjust_frame_glyphs (f);
w->pseudo_window_p = 1;
clear_glyph_matrix (w->desired_matrix);
clear_glyph_matrix (w->current_matrix);
@@ -7865,7 +7846,6 @@ only be necessary if the default setting causes problems. */);
defsubr (&Sx_close_connection);
defsubr (&Sx_display_list);
defsubr (&Sx_synchronize);
- defsubr (&Sx_focus_frame);
/* W32 specific functions */
diff --git a/src/w32font.c b/src/w32font.c
index 4a97fd90a4e..845df68f09d 100644
--- a/src/w32font.c
+++ b/src/w32font.c
@@ -299,7 +299,7 @@ intern_font_name (char * string)
Lisp_Object
w32font_get_cache (struct frame *f)
{
- struct w32_display_info *dpyinfo = FRAME_X_DISPLAY_INFO (f);
+ struct w32_display_info *dpyinfo = FRAME_DISPLAY_INFO (f);
return (dpyinfo->name_list_element);
}
diff --git a/src/w32menu.c b/src/w32menu.c
index f804e830ac0..ad2eb96495a 100644
--- a/src/w32menu.c
+++ b/src/w32menu.c
@@ -231,7 +231,7 @@ otherwise it is "Question". */)
unblock_input ();
discard_menu_items ();
- FRAME_X_DISPLAY_INFO (f)->grabbed = 0;
+ FRAME_DISPLAY_INFO (f)->grabbed = 0;
if (error_name) error (error_name);
return selection;
@@ -421,7 +421,7 @@ set_frame_menubar (struct frame *f, bool first_time, bool deep_p)
/* Save the frame's previous menu bar contents data. */
if (previous_menu_items_used)
- memcpy (previous_items, XVECTOR (f->menu_bar_vector)->contents,
+ memcpy (previous_items, XVECTOR (f->menu_bar_vector)->u.contents,
previous_menu_items_used * word_size);
/* Fill in menu_items with the current menu bar contents.
@@ -885,7 +885,7 @@ w32_menu_show (struct frame *f, int x, int y, int for_click, int keymaps,
/* Clean up extraneous mouse events which might have been generated
during the call. */
discard_mouse_events ();
- FRAME_X_DISPLAY_INFO (f)->grabbed = 0;
+ FRAME_DISPLAY_INFO (f)->grabbed = 0;
/* Free the widget_value objects we used to specify the contents. */
free_menubar_widget_value_tree (first_wv);
@@ -1130,7 +1130,7 @@ w32_dialog_show (struct frame *f, int keymaps,
lw_pop_up_all_widgets (dialog_id);
/* Process events that apply to the menu. */
- popup_get_selection ((XEvent *) 0, FRAME_X_DISPLAY_INFO (f), dialog_id);
+ popup_get_selection ((XEvent *) 0, FRAME_DISPLAY_INFO (f), dialog_id);
lw_destroy_all_widgets (dialog_id);
diff --git a/src/w32proc.c b/src/w32proc.c
index dabaa62f71c..221b42fb7b2 100644
--- a/src/w32proc.c
+++ b/src/w32proc.c
@@ -1144,7 +1144,7 @@ create_child (char *exe, char *cmdline, char *env, int is_gui_app,
return FALSE;
}
-/* create_child doesn't know what emacs' file handle will be for waiting
+/* create_child doesn't know what emacs's file handle will be for waiting
on output from the child, so we need to make this additional call
to register the handle with the process
This way the select emulator knows how to match file handles with
diff --git a/src/w32reg.c b/src/w32reg.c
index e7c4e9ea351..c41675019dd 100644
--- a/src/w32reg.c
+++ b/src/w32reg.c
@@ -56,7 +56,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
*/
static char *
-w32_get_rdb_resource (char *rdb, char *resource)
+w32_get_rdb_resource (char *rdb, const char *resource)
{
char *value = rdb;
int len = strlen (resource);
@@ -74,7 +74,7 @@ w32_get_rdb_resource (char *rdb, char *resource)
}
static LPBYTE
-w32_get_string_resource (char *name, char *class, DWORD dwexptype)
+w32_get_string_resource (const char *name, const char *class, DWORD dwexptype)
{
LPBYTE lpvalue = NULL;
HKEY hrootkey = NULL;
@@ -92,7 +92,7 @@ w32_get_string_resource (char *name, char *class, DWORD dwexptype)
if (RegOpenKeyEx (hive, REG_ROOT, 0, KEY_READ, &hrootkey) == ERROR_SUCCESS)
{
- char *keyname;
+ const char *keyname;
if (RegQueryValueEx (hrootkey, name, NULL, &dwType, NULL, &cbData) == ERROR_SUCCESS
&& dwType == dwexptype)
@@ -141,7 +141,7 @@ w32_get_string_resource (char *name, char *class, DWORD dwexptype)
database RDB. */
char *
-x_get_string_resource (XrmDatabase rdb, char *name, char *class)
+x_get_string_resource (XrmDatabase rdb, const char *name, const char *class)
{
if (rdb)
{
diff --git a/src/w32term.c b/src/w32term.c
index 532ded7cdad..be8ebfe6ab6 100644
--- a/src/w32term.c
+++ b/src/w32term.c
@@ -149,9 +149,6 @@ BOOL (WINAPI *pfnSetLayeredWindowAttributes) (HWND, COLORREF, BYTE, DWORD);
#define SM_CYVIRTUALSCREEN 79
#endif
-/* This is a frame waiting to be autoraised, within w32_read_socket. */
-struct frame *pending_autoraise_frame;
-
/* The handle of the frame that currently owns the system caret. */
HWND w32_system_caret_hwnd;
int w32_system_caret_height;
@@ -174,31 +171,6 @@ int last_scroll_bar_drag_pos;
/* Keyboard code page - may be changed by language-change events. */
int w32_keyboard_codepage;
-/* Mouse movement. */
-
-/* Where the mouse was last time we reported a mouse event. */
-static RECT last_mouse_glyph;
-static struct frame *last_mouse_glyph_frame;
-
-/* The scroll bar in which the last motion event occurred.
-
- If the last motion event occurred in a scroll bar, we set this
- so w32_mouse_position can know whether to report a scroll bar motion or
- an ordinary motion.
-
- If the last motion event didn't occur in a scroll bar, we set this
- to Qnil, to tell w32_mouse_position to return an ordinary motion event. */
-static Lisp_Object last_mouse_scroll_bar;
-static int last_mouse_scroll_bar_pos;
-
-/* This is a hack. We would really prefer that w32_mouse_position would
- return the time associated with the position it returns, but there
- doesn't seem to be any way to wrest the time-stamp from the server
- along with the position query. So, we just keep track of the time
- of the last movement we received, and return that in hopes that
- it's somewhat accurate. */
-static Time last_mouse_movement_time;
-
/* Incremented by w32_read_socket whenever it really tries to read
events. */
static int volatile input_signal_count;
@@ -477,7 +449,7 @@ w32_clear_window (struct frame *f)
void
x_set_frame_alpha (struct frame *f)
{
- struct w32_display_info *dpyinfo = FRAME_W32_DISPLAY_INFO (f);
+ struct w32_display_info *dpyinfo = FRAME_DISPLAY_INFO (f);
double alpha = 1.0;
double alpha_min = 1.0;
BYTE opac;
@@ -557,7 +529,7 @@ x_display_pixel_width (struct w32_display_info *dpyinfo)
static void
x_update_begin (struct frame *f)
{
- struct w32_display_info *display_info = FRAME_W32_DISPLAY_INFO (f);
+ struct w32_display_info *display_info = FRAME_DISPLAY_INFO (f);
if (! FRAME_W32_P (f))
return;
@@ -1003,14 +975,14 @@ x_set_cursor_gc (struct glyph_string *s)
xgcv.font = s->font;
mask = GCForeground | GCBackground | GCFont;
- if (FRAME_W32_DISPLAY_INFO (s->f)->scratch_cursor_gc)
- XChangeGC (NULL, FRAME_W32_DISPLAY_INFO (s->f)->scratch_cursor_gc,
+ if (FRAME_DISPLAY_INFO (s->f)->scratch_cursor_gc)
+ XChangeGC (NULL, FRAME_DISPLAY_INFO (s->f)->scratch_cursor_gc,
mask, &xgcv);
else
- FRAME_W32_DISPLAY_INFO (s->f)->scratch_cursor_gc
+ FRAME_DISPLAY_INFO (s->f)->scratch_cursor_gc
= XCreateGC (NULL, s->window, mask, &xgcv);
- s->gc = FRAME_W32_DISPLAY_INFO (s->f)->scratch_cursor_gc;
+ s->gc = FRAME_DISPLAY_INFO (s->f)->scratch_cursor_gc;
}
}
@@ -1052,14 +1024,14 @@ x_set_mouse_face_gc (struct glyph_string *s)
xgcv.font = s->font;
mask = GCForeground | GCBackground | GCFont;
- if (FRAME_W32_DISPLAY_INFO (s->f)->scratch_cursor_gc)
- XChangeGC (NULL, FRAME_W32_DISPLAY_INFO (s->f)->scratch_cursor_gc,
+ if (FRAME_DISPLAY_INFO (s->f)->scratch_cursor_gc)
+ XChangeGC (NULL, FRAME_DISPLAY_INFO (s->f)->scratch_cursor_gc,
mask, &xgcv);
else
- FRAME_W32_DISPLAY_INFO (s->f)->scratch_cursor_gc
+ FRAME_DISPLAY_INFO (s->f)->scratch_cursor_gc
= XCreateGC (NULL, s->window, mask, &xgcv);
- s->gc = FRAME_W32_DISPLAY_INFO (s->f)->scratch_cursor_gc;
+ s->gc = FRAME_DISPLAY_INFO (s->f)->scratch_cursor_gc;
}
eassert (s->gc != 0);
@@ -1623,7 +1595,7 @@ w32_setup_relief_color (struct frame *f, struct relief *relief, double factor,
unsigned long mask = GCForeground;
COLORREF pixel;
COLORREF background = di->relief_background;
- struct w32_display_info *dpyinfo = FRAME_W32_DISPLAY_INFO (f);
+ struct w32_display_info *dpyinfo = FRAME_DISPLAY_INFO (f);
/* TODO: Free colors (if using palette)? */
@@ -2823,9 +2795,9 @@ x_new_focus_frame (struct w32_display_info *dpyinfo, struct frame *frame)
x_lower_frame (old_focus);
if (dpyinfo->w32_focus_frame && dpyinfo->w32_focus_frame->auto_raise)
- pending_autoraise_frame = dpyinfo->w32_focus_frame;
+ dpyinfo->w32_pending_autoraise_frame = dpyinfo->w32_focus_frame;
else
- pending_autoraise_frame = 0;
+ dpyinfo->w32_pending_autoraise_frame = NULL;
}
x_frame_rehighlight (dpyinfo);
@@ -2930,7 +2902,7 @@ w32_frame_rehighlight (struct frame *frame)
{
if (! FRAME_W32_P (frame))
return;
- x_frame_rehighlight (FRAME_W32_DISPLAY_INFO (frame));
+ x_frame_rehighlight (FRAME_DISPLAY_INFO (frame));
}
static void
@@ -3307,47 +3279,47 @@ queue_notifications (struct input_event *event, W32Msg *msg, struct frame *f,
the mainstream emacs code by setting mouse_moved. If not, ask for
another motion event, so we can check again the next time it moves. */
-static MSG last_mouse_motion_event;
-static Lisp_Object last_mouse_motion_frame;
-
static int
note_mouse_movement (struct frame *frame, MSG *msg)
{
+ struct w32_display_info *dpyinfo;
int mouse_x = LOWORD (msg->lParam);
int mouse_y = HIWORD (msg->lParam);
-
- last_mouse_movement_time = msg->time;
- memcpy (&last_mouse_motion_event, msg, sizeof (last_mouse_motion_event));
- XSETFRAME (last_mouse_motion_frame, frame);
+ RECT *r;
if (!FRAME_X_OUTPUT (frame))
return 0;
+ dpyinfo = FRAME_DISPLAY_INFO (frame);
+ dpyinfo->last_mouse_movement_time = msg->time;
+ dpyinfo->last_mouse_motion_frame = frame;
+ dpyinfo->last_mouse_motion_x = mouse_x;
+ dpyinfo->last_mouse_motion_y = mouse_y;
+
if (msg->hwnd != FRAME_W32_WINDOW (frame))
{
frame->mouse_moved = 1;
- last_mouse_scroll_bar = Qnil;
+ dpyinfo->last_mouse_scroll_bar = NULL;
note_mouse_highlight (frame, -1, -1);
- last_mouse_glyph_frame = 0;
+ dpyinfo->last_mouse_glyph_frame = NULL;
return 1;
}
/* Has the mouse moved off the glyph it was on at the last sighting? */
- if (frame != last_mouse_glyph_frame
- || mouse_x < last_mouse_glyph.left
- || mouse_x >= last_mouse_glyph.right
- || mouse_y < last_mouse_glyph.top
- || mouse_y >= last_mouse_glyph.bottom)
+ r = &dpyinfo->last_mouse_glyph;
+ if (frame != dpyinfo->last_mouse_glyph_frame
+ || mouse_x < r->left || mouse_x >= r->right
+ || mouse_y < r->top || mouse_y >= r->bottom)
{
frame->mouse_moved = 1;
- last_mouse_scroll_bar = Qnil;
+ dpyinfo->last_mouse_scroll_bar = NULL;
note_mouse_highlight (frame, mouse_x, mouse_y);
/* Remember the mouse position here, as w32_mouse_position only
gets called when mouse tracking is enabled but we also need
to keep track of the mouse for help_echo and highlighting at
other times. */
- remember_mouse_glyph (frame, mouse_x, mouse_y, &last_mouse_glyph);
- last_mouse_glyph_frame = frame;
+ remember_mouse_glyph (frame, mouse_x, mouse_y, r);
+ dpyinfo->last_mouse_glyph_frame = frame;
return 1;
}
@@ -3367,16 +3339,6 @@ static void x_scroll_bar_report_motion (struct frame **, Lisp_Object *,
static void x_check_fullscreen (struct frame *);
static void
-redo_mouse_highlight (void)
-{
- if (!NILP (last_mouse_motion_frame)
- && FRAME_LIVE_P (XFRAME (last_mouse_motion_frame)))
- note_mouse_highlight (XFRAME (last_mouse_motion_frame),
- LOWORD (last_mouse_motion_event.lParam),
- HIWORD (last_mouse_motion_event.lParam));
-}
-
-static void
w32_define_cursor (Window window, Cursor cursor)
{
PostMessage (window, WM_EMACS_SETCURSOR, (WPARAM) cursor, 0);
@@ -3407,10 +3369,11 @@ w32_mouse_position (struct frame **fp, int insist, Lisp_Object *bar_window,
unsigned long *time)
{
struct frame *f1;
+ struct w32_display_info *dpyinfo = FRAME_DISPLAY_INFO (*fp);
block_input ();
- if (! NILP (last_mouse_scroll_bar) && insist == 0)
+ if (dpyinfo->last_mouse_scroll_bar && insist == 0)
x_scroll_bar_report_motion (fp, bar_window, part, x, y, time);
else
{
@@ -3422,26 +3385,18 @@ w32_mouse_position (struct frame **fp, int insist, Lisp_Object *bar_window,
FOR_EACH_FRAME (tail, frame)
XFRAME (frame)->mouse_moved = 0;
- last_mouse_scroll_bar = Qnil;
+ dpyinfo->last_mouse_scroll_bar = NULL;
GetCursorPos (&pt);
/* Now we have a position on the root; find the innermost window
containing the pointer. */
{
- if (FRAME_W32_DISPLAY_INFO (*fp)->grabbed && last_mouse_frame
- && FRAME_LIVE_P (last_mouse_frame))
- {
- /* If mouse was grabbed on a frame, give coords for that frame
- even if the mouse is now outside it. */
- f1 = last_mouse_frame;
- }
- else
- {
- /* Is window under mouse one of our frames? */
- f1 = x_any_window_to_frame (FRAME_W32_DISPLAY_INFO (*fp),
- WindowFromPoint (pt));
- }
+ /* If mouse was grabbed on a frame, give coords for that
+ frame even if the mouse is now outside it. Otherwise
+ check for window under mouse on one of our frames. */
+ f1 = (x_mouse_grabbed (dpyinfo) ? dpyinfo->last_mouse_frame
+ : x_any_window_to_frame (dpyinfo, WindowFromPoint (pt)));
/* If not, is it one of our scroll bars? */
if (! f1)
@@ -3468,16 +3423,17 @@ w32_mouse_position (struct frame **fp, int insist, Lisp_Object *bar_window,
on it, i.e. into the same rectangles that matrices on
the frame are divided into. */
+ dpyinfo = FRAME_DISPLAY_INFO (f1);
ScreenToClient (FRAME_W32_WINDOW (f1), &pt);
- remember_mouse_glyph (f1, pt.x, pt.y, &last_mouse_glyph);
- last_mouse_glyph_frame = f1;
+ remember_mouse_glyph (f1, pt.x, pt.y, &dpyinfo->last_mouse_glyph);
+ dpyinfo->last_mouse_glyph_frame = f1;
*bar_window = Qnil;
*part = 0;
*fp = f1;
XSETINT (*x, pt.x);
XSETINT (*y, pt.y);
- *time = last_mouse_movement_time;
+ *time = dpyinfo->last_mouse_movement_time;
}
}
}
@@ -3866,8 +3822,7 @@ w32_set_vertical_scroll_bar (struct window *w,
/* Make sure scroll bar is "visible" before moving, to ensure the
area of the parent window now exposed will be refreshed. */
my_show_window (f, hwnd, SW_HIDE);
- MoveWindow (hwnd, sb_left + VERTICAL_SCROLL_BAR_WIDTH_TRIM,
- top, sb_width - VERTICAL_SCROLL_BAR_WIDTH_TRIM * 2,
+ MoveWindow (hwnd, sb_left, top, sb_width,
max (height, 1), TRUE);
si.cbSize = sizeof (si);
@@ -4037,9 +3992,7 @@ w32_scroll_bar_handle_click (struct scroll_bar *bar, W32Msg *msg,
y = si.nPos;
bar->dragging = Qnil;
-
-
- last_mouse_scroll_bar_pos = msg->msg.wParam;
+ FRAME_DISPLAY_INFO (f)->last_mouse_scroll_bar_pos = msg->msg.wParam;
switch (LOWORD (msg->msg.wParam))
{
@@ -4122,7 +4075,8 @@ x_scroll_bar_report_motion (struct frame **fp, Lisp_Object *bar_window,
Lisp_Object *x, Lisp_Object *y,
unsigned long *time)
{
- struct scroll_bar *bar = XSCROLL_BAR (last_mouse_scroll_bar);
+ struct w32_display_info *dpyinfo = FRAME_DISPLAY_INFO (*fp);
+ struct scroll_bar *bar = dpyinfo->last_mouse_scroll_bar;
Window w = SCROLL_BAR_W32_WINDOW (bar);
struct frame *f = XFRAME (WINDOW_FRAME (XWINDOW (bar->window)));
int pos;
@@ -4141,13 +4095,13 @@ x_scroll_bar_report_motion (struct frame **fp, Lisp_Object *bar_window,
pos = si.nPos;
top_range = si.nMax - si.nPage + 1;
- switch (LOWORD (last_mouse_scroll_bar_pos))
+ switch (LOWORD (dpyinfo->last_mouse_scroll_bar_pos))
{
case SB_THUMBPOSITION:
case SB_THUMBTRACK:
*part = scroll_bar_handle;
if (VERTICAL_SCROLL_BAR_TOP_RANGE (f, XINT (bar->height)) <= 0xffff)
- pos = HIWORD (last_mouse_scroll_bar_pos);
+ pos = HIWORD (dpyinfo->last_mouse_scroll_bar_pos);
break;
case SB_LINEDOWN:
*part = scroll_bar_handle;
@@ -4162,9 +4116,9 @@ x_scroll_bar_report_motion (struct frame **fp, Lisp_Object *bar_window,
XSETINT (*y, top_range);
f->mouse_moved = 0;
- last_mouse_scroll_bar = Qnil;
+ dpyinfo->last_mouse_scroll_bar = NULL;
- *time = last_mouse_movement_time;
+ *time = dpyinfo->last_mouse_movement_time;
unblock_input ();
}
@@ -4483,11 +4437,8 @@ w32_read_socket (struct terminal *terminal,
previous_help_echo_string = help_echo_string;
help_echo_string = Qnil;
- if (dpyinfo->grabbed && last_mouse_frame
- && FRAME_LIVE_P (last_mouse_frame))
- f = last_mouse_frame;
- else
- f = x_window_to_frame (dpyinfo, msg.msg.hwnd);
+ f = (x_mouse_grabbed (dpyinfo) ? dpyinfo->last_mouse_frame
+ : x_window_to_frame (dpyinfo, msg.msg.hwnd));
if (hlinfo->mouse_face_hidden)
{
@@ -4563,11 +4514,8 @@ w32_read_socket (struct terminal *terminal,
int button;
int up;
- if (dpyinfo->grabbed && last_mouse_frame
- && FRAME_LIVE_P (last_mouse_frame))
- f = last_mouse_frame;
- else
- f = x_window_to_frame (dpyinfo, msg.msg.hwnd);
+ f = (x_mouse_grabbed (dpyinfo) ? dpyinfo->last_mouse_frame
+ : x_window_to_frame (dpyinfo, msg.msg.hwnd));
if (f)
{
@@ -4606,7 +4554,7 @@ w32_read_socket (struct terminal *terminal,
else
{
dpyinfo->grabbed |= (1 << button);
- last_mouse_frame = f;
+ dpyinfo->last_mouse_frame = f;
/* Ignore any mouse motion that happened
before this event; any subsequent mouse-movement
Emacs events should reflect only motion after
@@ -4623,11 +4571,8 @@ w32_read_socket (struct terminal *terminal,
case WM_MOUSEWHEEL:
case WM_MOUSEHWHEEL:
{
- if (dpyinfo->grabbed && last_mouse_frame
- && FRAME_LIVE_P (last_mouse_frame))
- f = last_mouse_frame;
- else
- f = x_window_to_frame (dpyinfo, msg.msg.hwnd);
+ f = (x_mouse_grabbed (dpyinfo) ? dpyinfo->last_mouse_frame
+ : x_window_to_frame (dpyinfo, msg.msg.hwnd));
if (f)
{
@@ -4644,7 +4589,7 @@ w32_read_socket (struct terminal *terminal,
ButtonPress. */
f->mouse_moved = 0;
}
- last_mouse_frame = f;
+ dpyinfo->last_mouse_frame = f;
last_tool_bar_item = -1;
}
break;
@@ -4691,13 +4636,7 @@ w32_read_socket (struct terminal *terminal,
f = x_window_to_frame (dpyinfo, msg.msg.hwnd);
if (f && !FRAME_ICONIFIED_P (f))
- {
- int x, y;
-
- x_real_positions (f, &x, &y);
- f->left_pos = x;
- f->top_pos = y;
- }
+ x_real_positions (f, &f->left_pos, &f->top_pos);
check_visibility = 1;
break;
@@ -4709,7 +4648,7 @@ w32_read_socket (struct terminal *terminal,
if (!msg.msg.wParam && msg.msg.hwnd == tip_window)
{
tip_window = NULL;
- redo_mouse_highlight ();
+ x_redo_mouse_highlight (dpyinfo);
}
/* If window has been obscured or exposed by another window
@@ -4760,16 +4699,12 @@ w32_read_socket (struct terminal *terminal,
if (iconified)
{
- int x, y;
-
/* Reset top and left positions of the Window
here since Windows sends a WM_MOVE message
BEFORE telling us the Window is minimized
when the Window is iconified, with 3000,3000
as the co-ords. */
- x_real_positions (f, &x, &y);
- f->left_pos = x;
- f->top_pos = y;
+ x_real_positions (f, &f->left_pos, &f->top_pos);
inev.kind = DEICONIFY_EVENT;
XSETFRAME (inev.frame_or_window, f);
@@ -4982,12 +4917,11 @@ w32_read_socket (struct terminal *terminal,
}
/* If the focus was just given to an autoraising frame,
- raise it now. */
- /* ??? This ought to be able to handle more than one such frame. */
- if (pending_autoraise_frame)
+ raise it now. FIXME: handle more than one such frame. */
+ if (dpyinfo->w32_pending_autoraise_frame)
{
- x_raise_frame (pending_autoraise_frame);
- pending_autoraise_frame = 0;
+ x_raise_frame (dpyinfo->w32_pending_autoraise_frame);
+ dpyinfo->w32_pending_autoraise_frame = NULL;
}
/* Check which frames are still visible, if we have enqueued any user
@@ -5539,13 +5473,13 @@ x_calc_absolute_position (struct frame *f)
/* Treat negative positions as relative to the rightmost bottommost
position that fits on the screen. */
if (flags & XNegative)
- f->left_pos = (x_display_pixel_width (FRAME_W32_DISPLAY_INFO (f))
+ f->left_pos = (x_display_pixel_width (FRAME_DISPLAY_INFO (f))
- FRAME_PIXEL_WIDTH (f)
+ f->left_pos
- (left_right_borders_width - 1));
if (flags & YNegative)
- f->top_pos = (x_display_pixel_height (FRAME_W32_DISPLAY_INFO (f))
+ f->top_pos = (x_display_pixel_height (FRAME_DISPLAY_INFO (f))
- FRAME_PIXEL_HEIGHT (f)
+ f->top_pos
- (top_bottom_borders_height - 1));
@@ -5806,7 +5740,7 @@ x_set_mouse_pixel_position (struct frame *f, int pix_x, int pix_y)
/* focus shifting, raising and lowering. */
void
-x_focus_on_frame (struct frame *f)
+x_focus_frame (struct frame *f)
{
struct w32_display_info *dpyinfo = &one_w32_display_info;
@@ -5920,13 +5854,9 @@ w32_frame_raise_lower (struct frame *f, int raise_flag)
void
x_make_frame_visible (struct frame *f)
{
- Lisp_Object type;
-
block_input ();
- type = x_icon_type (f);
- if (!NILP (type))
- x_bitmap_icon (f, type);
+ x_set_bitmap_icon (f);
if (! FRAME_VISIBLE_P (f))
{
@@ -6013,8 +5943,8 @@ void
x_make_frame_invisible (struct frame *f)
{
/* Don't keep the highlight on an invisible frame. */
- if (FRAME_W32_DISPLAY_INFO (f)->x_highlight_frame == f)
- FRAME_W32_DISPLAY_INFO (f)->x_highlight_frame = 0;
+ if (FRAME_DISPLAY_INFO (f)->x_highlight_frame == f)
+ FRAME_DISPLAY_INFO (f)->x_highlight_frame = 0;
block_input ();
@@ -6036,20 +5966,16 @@ x_make_frame_invisible (struct frame *f)
void
x_iconify_frame (struct frame *f)
{
- Lisp_Object type;
-
/* Don't keep the highlight on an invisible frame. */
- if (FRAME_W32_DISPLAY_INFO (f)->x_highlight_frame == f)
- FRAME_W32_DISPLAY_INFO (f)->x_highlight_frame = 0;
+ if (FRAME_DISPLAY_INFO (f)->x_highlight_frame == f)
+ FRAME_DISPLAY_INFO (f)->x_highlight_frame = 0;
if (FRAME_ICONIFIED_P (f))
return;
block_input ();
- type = x_icon_type (f);
- if (!NILP (type))
- x_bitmap_icon (f, type);
+ x_set_bitmap_icon (f);
/* Simulate the user minimizing the frame. */
SendMessage (FRAME_W32_WINDOW (f), WM_SYSCOMMAND, SC_MINIMIZE, 0);
@@ -6066,7 +5992,7 @@ x_iconify_frame (struct frame *f)
void
x_free_frame_resources (struct frame *f)
{
- struct w32_display_info *dpyinfo = FRAME_W32_DISPLAY_INFO (f);
+ struct w32_display_info *dpyinfo = FRAME_DISPLAY_INFO (f);
Mouse_HLInfo *hlinfo = MOUSE_HL_INFO (f);
block_input ();
@@ -6116,7 +6042,7 @@ x_free_frame_resources (struct frame *f)
void
x_destroy_window (struct frame *f)
{
- struct w32_display_info *dpyinfo = FRAME_W32_DISPLAY_INFO (f);
+ struct w32_display_info *dpyinfo = FRAME_DISPLAY_INFO (f);
x_free_frame_resources (f);
dpyinfo->reference_count--;
@@ -6258,11 +6184,6 @@ w32_make_rdb (char *xrm_option)
return buffer;
}
-void
-x_flush (struct frame * f)
-{ /* Nothing to do */ }
-
-
extern frame_parm_handler w32_frame_parm_handlers[];
static struct redisplay_interface w32_redisplay_interface =
@@ -6276,8 +6197,7 @@ static struct redisplay_interface w32_redisplay_interface =
x_after_update_window_line,
x_update_window_begin,
x_update_window_end,
- x_flush,
- 0, /* flush_display_optional */
+ 0, /* flush_display */
x_clear_window_mouse_face,
x_get_glyph_overhangs,
x_fix_overlapping_area,
@@ -6344,7 +6264,7 @@ w32_create_terminal (struct w32_display_info *dpyinfo)
terminal like X does. */
terminal->kboard = xmalloc (sizeof (KBOARD));
init_kboard (terminal->kboard);
- kset_window_system (terminal->kboard, intern ("w32"));
+ kset_window_system (terminal->kboard, Qw32);
terminal->kboard->next_kboard = all_kboards;
all_kboards = terminal->kboard;
/* Don't let the initial kboard remain current longer than necessary.
@@ -6608,9 +6528,6 @@ syms_of_w32term (void)
staticpro (&w32_display_name_list);
w32_display_name_list = Qnil;
- staticpro (&last_mouse_scroll_bar);
- last_mouse_scroll_bar = Qnil;
-
DEFSYM (Qvendor_specific_keysyms, "vendor-specific-keysyms");
DEFSYM (Qadded, "added");
@@ -6694,8 +6611,6 @@ X toolkit. Possible values are: gtk, motif, xaw, or xaw3d.
With MS Windows or Nextstep, the value is t. */);
Vx_toolkit_scroll_bars = Qt;
- staticpro (&last_mouse_motion_frame);
- last_mouse_motion_frame = Qnil;
-
- Fprovide (intern_c_string ("w32"), Qnil);
+ /* Tell Emacs about this window system. */
+ Fprovide (Qw32, Qnil);
}
diff --git a/src/w32term.h b/src/w32term.h
index e65c1146294..095ca54e3e8 100644
--- a/src/w32term.h
+++ b/src/w32term.h
@@ -179,6 +179,37 @@ struct w32_display_info
frame. It differs from w32_focus_frame when we're using a global
minibuffer. */
struct frame *x_highlight_frame;
+
+ /* The frame waiting to be auto-raised in w32_read_socket. */
+ struct frame *w32_pending_autoraise_frame;
+
+ /* The frame where the mouse was last time we reported a mouse event. */
+ struct frame *last_mouse_frame;
+
+ /* The frame where the mouse was last time we reported a mouse motion. */
+ struct frame *last_mouse_motion_frame;
+
+ /* The frame where the mouse was last time we reported a mouse position. */
+ struct frame *last_mouse_glyph_frame;
+
+ /* Position where the mouse was last time we reported a motion.
+ This is a position on last_mouse_motion_frame. */
+ int last_mouse_motion_x;
+ int last_mouse_motion_y;
+
+ /* Where the mouse was last time we reported a mouse position.
+ This is a rectangle on last_mouse_glyph_frame. */
+ RECT last_mouse_glyph;
+
+ /* The scroll bar in which the last motion event occurred. */
+ struct scroll_bar *last_mouse_scroll_bar;
+
+ /* Mouse position on the scroll bar above.
+ FIXME: shouldn't it be a member of struct scroll_bar? */
+ int last_mouse_scroll_bar_pos;
+
+ /* Time of last mouse movement. */
+ Time last_mouse_movement_time;
};
/* This is a chain of structures for all the displays currently in use. */
@@ -199,8 +230,6 @@ Lisp_Object display_x_get_resource (struct w32_display_info *,
Lisp_Object, Lisp_Object,
Lisp_Object, Lisp_Object);
-extern void x_focus_on_frame (struct frame *f);
-
/* also defined in xterm.h XXX: factor out to common header */
extern struct w32_display_info *w32_term_init (Lisp_Object,
@@ -211,7 +240,6 @@ extern void x_set_window_size (struct frame *f, int change_grav,
int cols, int rows);
extern int x_display_pixel_height (struct w32_display_info *);
extern int x_display_pixel_width (struct w32_display_info *);
-extern void x_sync (struct frame *);
extern Lisp_Object x_get_focus_frame (struct frame *);
extern void x_set_mouse_position (struct frame *f, int h, int v);
extern void x_set_mouse_pixel_position (struct frame *f, int pix_x, int pix_y);
@@ -384,22 +412,11 @@ extern struct w32_output w32term_display;
#define FRAME_BASELINE_OFFSET(f) ((f)->output_data.w32->baseline_offset)
/* This gives the w32_display_info structure for the display F is on. */
-#define FRAME_W32_DISPLAY_INFO(f) (&one_w32_display_info)
-#define FRAME_X_DISPLAY_INFO(f) (&one_w32_display_info)
+#define FRAME_DISPLAY_INFO(f) (&one_w32_display_info)
/* This is the `Display *' which frame F is on. */
#define FRAME_X_DISPLAY(f) (0)
-/* Value is the smallest width of any character in any font on frame F. */
-
-#define FRAME_SMALLEST_CHAR_WIDTH(F) \
- FRAME_W32_DISPLAY_INFO(F)->smallest_char_width
-
-/* Value is the smallest height of any font on frame F. */
-
-#define FRAME_SMALLEST_FONT_HEIGHT(F) \
- FRAME_W32_DISPLAY_INFO(F)->smallest_font_height
-
#define FRAME_NORMAL_PLACEMENT(F) ((F)->output_data.w32->normal_placement)
#define FRAME_PREV_FSMODE(F) ((F)->output_data.w32->prev_fsmode)
@@ -491,21 +508,12 @@ struct scroll_bar {
#define SET_SCROLL_BAR_W32_WINDOW(ptr, id) \
(SCROLL_BAR_UNPACK ((ptr)->w32_window_low, (ptr)->w32_window_high, (intptr_t) id))
-/* Extract the X widget of the scroll bar from a struct scroll_bar. */
-#define SCROLL_BAR_X_WIDGET(ptr) \
- ((Widget) SCROLL_BAR_PACK ((ptr)->x_widget_low, (ptr)->x_widget_high))
-
-/* Store a widget id in a struct scroll_bar. */
-#define SET_SCROLL_BAR_X_WIDGET(ptr, w) \
- (SCROLL_BAR_UNPACK ((ptr)->x_widget_low, (ptr)->x_widget_high, (int) w))
-
/* Return the inside width of a vertical scroll bar, given the outside
width. */
#define VERTICAL_SCROLL_BAR_INSIDE_WIDTH(f,width) \
((width) \
- VERTICAL_SCROLL_BAR_LEFT_BORDER \
- - VERTICAL_SCROLL_BAR_RIGHT_BORDER \
- - VERTICAL_SCROLL_BAR_WIDTH_TRIM * 2)
+ - VERTICAL_SCROLL_BAR_RIGHT_BORDER)
/* Return the length of the rectangle within which the top of the
handle must stay. This isn't equivalent to the inside height,
@@ -542,11 +550,6 @@ struct scroll_bar {
/* Minimum lengths for scroll bar handles, in pixels. */
#define VERTICAL_SCROLL_BAR_MIN_HANDLE (vertical_scroll_bar_min_handle)
-/* Trimming off a few pixels from each side prevents
- text from glomming up against the scroll bar */
-#define VERTICAL_SCROLL_BAR_WIDTH_TRIM (0)
-
-
struct frame; /* from frame.h */
extern void w32_fill_rect (struct frame *, HDC, COLORREF, RECT *);
diff --git a/src/w32xfns.c b/src/w32xfns.c
index 19c6b72bf89..07f75477863 100644
--- a/src/w32xfns.c
+++ b/src/w32xfns.c
@@ -92,7 +92,7 @@ signal_quit (void)
void
select_palette (struct frame *f, HDC hdc)
{
- struct w32_display_info *display_info = FRAME_W32_DISPLAY_INFO (f);
+ struct w32_display_info *display_info = FRAME_DISPLAY_INFO (f);
if (!display_info->has_palette)
return;
@@ -333,9 +333,3 @@ drain_message_queue (void)
}
return retval;
}
-
-/* x_sync is a no-op on W32. */
-void
-x_sync (struct frame *f)
-{
-}
diff --git a/src/widget.c b/src/widget.c
index ec0b506046b..d6469d7eec5 100644
--- a/src/widget.c
+++ b/src/widget.c
@@ -525,7 +525,7 @@ setup_frame_gcs (EmacsFrame ew)
font = Ffont_xlfd_name (font, Qnil);
if (STRINGP (font))
{
- XFontStruct *xfont = XLoadQueryFont (FRAME_X_DISPLAY_INFO (s)->display,
+ XFontStruct *xfont = XLoadQueryFont (FRAME_DISPLAY_INFO (s)->display,
SSDATA (font));
if (xfont)
{
diff --git a/src/window.c b/src/window.c
index 6828f5d0792..670369cd322 100644
--- a/src/window.c
+++ b/src/window.c
@@ -20,8 +20,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include <config.h>
-#define WINDOW_INLINE EXTERN_INLINE
-
#include <stdio.h>
#include "lisp.h"
@@ -39,19 +37,12 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include "blockinput.h"
#include "intervals.h"
#include "termhooks.h" /* For FRAME_TERMINAL. */
-
-#ifdef HAVE_X_WINDOWS
-#include "xterm.h"
-#endif /* HAVE_X_WINDOWS */
-#ifdef HAVE_NTGUI
-#include "w32term.h"
-#endif
+#ifdef HAVE_WINDOW_SYSTEM
+#include TERM_HEADER
+#endif /* HAVE_WINDOW_SYSTEM */
#ifdef MSDOS
#include "msdos.h"
#endif
-#ifdef HAVE_NS
-#include "nsterm.h"
-#endif
Lisp_Object Qwindowp, Qwindow_live_p;
static Lisp_Object Qwindow_valid_p;
@@ -1386,6 +1377,7 @@ window_from_coordinates (struct frame *f, int x, int y,
cw.window = &window, cw.x = x, cw.y = y; cw.part = part;
foreach_window (f, check_window_containing, &cw);
+#if defined (HAVE_WINDOW_SYSTEM) && ! defined (USE_GTK) && ! defined (HAVE_NS)
/* If not found above, see if it's in the tool bar window, if a tool
bar exists. */
if (NILP (window)
@@ -1398,6 +1390,7 @@ window_from_coordinates (struct frame *f, int x, int y,
*part = ON_TEXT;
window = f->tool_bar_window;
}
+#endif
return window;
}
@@ -2952,7 +2945,7 @@ window-start value is reasonable when this function is called. */)
}
}
- adjust_glyphs (f);
+ adjust_frame_glyphs (f);
unblock_input ();
run_window_configuration_change_hook (f);
@@ -3426,6 +3419,7 @@ make_window (void)
non-Lisp data, so do it only for slots which should not be zero. */
w->nrows_scale_factor = w->ncols_scale_factor = 1;
w->left_fringe_width = w->right_fringe_width = -1;
+ w->mode_line_height = w->header_line_height = -1;
w->phys_cursor_type = -1;
w->phys_cursor_width = -1;
w->scroll_bar_width = -1;
@@ -3651,7 +3645,7 @@ be applied on the Elisp level. */)
windows_or_buffers_changed++;
FRAME_WINDOW_SIZES_CHANGED (f) = 1;
- adjust_glyphs (f);
+ adjust_frame_glyphs (f);
unblock_input ();
run_window_configuration_change_hook (f);
@@ -3921,7 +3915,7 @@ set correctly. See the code of `split-window' for how this is done. */)
block_input ();
window_resize_apply (p, horflag);
- adjust_glyphs (f);
+ adjust_frame_glyphs (f);
/* Set buffer of NEW to buffer of reference window. Don't run
any hooks. */
set_window_buffer (new, r->contents, 0, 1);
@@ -4050,7 +4044,7 @@ Signal an error when WINDOW is the only window on its frame. */)
recombine_windows (sibling);
}
- adjust_glyphs (f);
+ adjust_frame_glyphs (f);
if (!WINDOW_LIVE_P (FRAME_SELECTED_WINDOW (f)))
/* We deleted the frame's selected window. */
@@ -4137,7 +4131,7 @@ grow_mini_window (struct window *w, int delta)
w->total_lines -= XINT (value);
/* Enforce full redisplay. FIXME: make it more selective. */
windows_or_buffers_changed++;
- adjust_glyphs (f);
+ adjust_frame_glyphs (f);
unblock_input ();
}
}
@@ -4171,7 +4165,7 @@ shrink_mini_window (struct window *w)
w->total_lines = 1;
/* Enforce full redisplay. FIXME: make it more selective. */
windows_or_buffers_changed++;
- adjust_glyphs (f);
+ adjust_frame_glyphs (f);
unblock_input ();
}
/* If the above failed for whatever strange reason we must make a
@@ -4212,7 +4206,7 @@ DEFUN ("resize-mini-window-internal", Fresize_mini_window_internal, Sresize_mini
windows_or_buffers_changed++;
FRAME_WINDOW_SIZES_CHANGED (f) = 1;
- adjust_glyphs (f);
+ adjust_frame_glyphs (f);
unblock_input ();
run_window_configuration_change_hook (f);
@@ -4483,7 +4477,7 @@ window_scroll_pixel_based (Lisp_Object window, int n, bool whole, int noerror)
visible. */
w->vscroll = (it.last_visible_y
- it.current_y + it.max_ascent + it.max_descent);
- adjust_glyphs (it.f);
+ adjust_frame_glyphs (it.f);
}
else
{
@@ -5118,9 +5112,9 @@ and redisplay normally--don't erase and redraw the frame. */)
/* Invalidate pixel data calculated for all compositions. */
for (i = 0; i < n_compositions; i++)
composition_table[i]->font = NULL;
-
+#if defined (HAVE_WINDOW_SYSTEM) && ! defined (USE_GTK) && ! defined (HAVE_NS)
WINDOW_XFRAME (w)->minimize_tool_bar_window_p = 1;
-
+#endif
Fredraw_frame (WINDOW_FRAME (w));
SET_FRAME_GARBAGED (WINDOW_XFRAME (w));
}
@@ -5407,7 +5401,7 @@ struct saved_window
};
#define SAVED_WINDOW_N(swv,n) \
- ((struct saved_window *) (XVECTOR ((swv)->contents[(n)])))
+ ((struct saved_window *) (XVECTOR ((swv)->u.contents[(n)])))
DEFUN ("window-configuration-p", Fwindow_configuration_p, Swindow_configuration_p, 1, 1, 0,
doc: /* Return t if OBJECT is a window-configuration object. */)
@@ -5773,7 +5767,7 @@ the return value is nil. Otherwise the value is t. */)
++n;
}
- adjust_glyphs (f);
+ adjust_frame_glyphs (f);
unblock_input ();
/* Scan dead buffer windows. */
@@ -6102,7 +6096,7 @@ apply_window_adjustment (struct window *w)
clear_glyph_matrix (w->current_matrix);
w->window_end_valid = 0;
windows_or_buffers_changed++;
- adjust_glyphs (XFRAME (WINDOW_FRAME (w)));
+ adjust_frame_glyphs (XFRAME (WINDOW_FRAME (w)));
}
@@ -6368,7 +6362,7 @@ If PIXELS-P is non-nil, the return value is VSCROLL. */)
/* Adjust glyph matrix of the frame if the virtual display
area becomes larger than before. */
if (w->vscroll < 0 && w->vscroll < old_dy)
- adjust_glyphs (f);
+ adjust_frame_glyphs (f);
/* Prevent redisplay shortcuts. */
XBUFFER (w->contents)->prevent_redisplay_optimizations_p = 1;
@@ -6524,7 +6518,6 @@ init_window_once (void)
Vterminal_frame = selected_frame;
minibuf_window = f->minibuffer_window;
selected_window = f->selected_window;
- last_nonminibuf_frame = f;
window_initialized = 1;
}
diff --git a/src/window.h b/src/window.h
index efe03737052..6d2478ecaf9 100644
--- a/src/window.h
+++ b/src/window.h
@@ -23,9 +23,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include "dispextern.h"
INLINE_HEADER_BEGIN
-#ifndef WINDOW_INLINE
-# define WINDOW_INLINE INLINE
-#endif
/* Windows are allocated as if they were vectors, but then the
Lisp data type is changed to Lisp_Window. They are garbage
@@ -264,6 +261,12 @@ struct window
A value of -1 means use frame values. */
int scroll_bar_width;
+ /* Effective height of the mode line, or -1 if not known. */
+ int mode_line_height;
+
+ /* Effective height of the header line, or -1 if not known. */
+ int header_line_height;
+
/* Z - the buffer position of the last glyph in the current
matrix of W. Only valid if window_end_valid is nonzero. */
ptrdiff_t window_end_pos;
@@ -343,37 +346,37 @@ struct window
/* Most code should use these functions to set Lisp fields in struct
window. */
-WINDOW_INLINE void
+INLINE void
wset_frame (struct window *w, Lisp_Object val)
{
w->frame = val;
}
-WINDOW_INLINE void
+INLINE void
wset_next (struct window *w, Lisp_Object val)
{
w->next = val;
}
-WINDOW_INLINE void
+INLINE void
wset_prev (struct window *w, Lisp_Object val)
{
w->prev = val;
}
-WINDOW_INLINE void
+INLINE void
wset_redisplay_end_trigger (struct window *w, Lisp_Object val)
{
w->redisplay_end_trigger = val;
}
-WINDOW_INLINE void
+INLINE void
wset_vertical_scroll_bar (struct window *w, Lisp_Object val)
{
w->vertical_scroll_bar = val;
}
-WINDOW_INLINE void
+INLINE void
wset_prev_buffers (struct window *w, Lisp_Object val)
{
w->prev_buffers = val;
}
-WINDOW_INLINE void
+INLINE void
wset_next_buffers (struct window *w, Lisp_Object val)
{
w->next_buffers = val;
@@ -519,10 +522,13 @@ wset_next_buffers (struct window *w, Lisp_Object val)
#endif
/* 1 if W is a tool bar window. */
-
+#if defined (HAVE_WINDOW_SYSTEM) && ! defined (USE_GTK) && ! defined (HAVE_NS)
#define WINDOW_TOOL_BAR_P(W) \
(WINDOWP (WINDOW_XFRAME (W)->tool_bar_window) \
&& (W) == XWINDOW (WINDOW_XFRAME (W)->tool_bar_window))
+#else
+#define WINDOW_TOOL_BAR_P(W) (0)
+#endif
/* Return the frame y-position at which window W starts.
This includes a header line, if any. */
@@ -957,7 +963,7 @@ extern void keys_of_window (void);
window update, so the position is the future output cursor position
for currently updated window W. */
-WINDOW_INLINE void
+INLINE void
output_cursor_to (struct window *w, int vpos, int hpos, int y, int x)
{
eassert (w);
diff --git a/src/xdisp.c b/src/xdisp.c
index 139218ae1dd..ce6cd8f080e 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -1,7 +1,6 @@
/* Display generation from window structure and buffer text.
-Copyright (C) 1985-1988, 1993-1995, 1997-2013 Free Software Foundation,
-Inc.
+Copyright (C) 1985-1988, 1993-1995, 1997-2013 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -299,19 +298,9 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include "font.h"
#include "fontset.h"
#include "blockinput.h"
-
-#ifdef HAVE_X_WINDOWS
-#include "xterm.h"
-#endif
-#ifdef HAVE_NTGUI
-#include "w32term.h"
-#endif
-#ifdef HAVE_NS
-#include "nsterm.h"
-#endif
-#ifdef USE_GTK
-#include "gtkutil.h"
-#endif
+#ifdef HAVE_WINDOW_SYSTEM
+#include TERM_HEADER
+#endif /* HAVE_WINDOW_SYSTEM */
#ifndef FRAME_X_OUTPUT
#define FRAME_X_OUTPUT(f) ((f)->output_data.x)
@@ -426,11 +415,11 @@ Lisp_Object Qboth, Qboth_horiz, Qtext_image_horiz;
/* Non-zero means print newline to stdout before next mini-buffer
message. */
-int noninteractive_need_newline;
+bool noninteractive_need_newline;
/* Non-zero means print newline to message log before next message. */
-static int message_log_need_newline;
+static bool message_log_need_newline;
/* Three markers that message_dolog uses.
It could allocate them itself, but that causes trouble
@@ -489,7 +478,7 @@ Lisp_Object Qmenu_bar_update_hook;
/* Nonzero if an overlay arrow has been displayed in this window. */
-static int overlay_arrow_seen;
+static bool overlay_arrow_seen;
/* Vector containing glyphs for an ellipsis `...'. */
@@ -511,7 +500,7 @@ static Lisp_Object Vmessage_stack;
/* Nonzero means multibyte characters were enabled when the echo area
message was specified. */
-static int message_enable_multibyte;
+static bool message_enable_multibyte;
/* Nonzero if we should redraw the mode lines on the next redisplay. */
@@ -522,14 +511,10 @@ int update_mode_lines;
int windows_or_buffers_changed;
-/* Nonzero means a frame's cursor type has been changed. */
-
-static int cursor_type_changed;
-
/* Nonzero after display_mode_line if %l was used and it displayed a
line number. */
-static int line_number_displayed;
+static bool line_number_displayed;
/* The name of the *Messages* buffer, a string. */
@@ -551,12 +536,12 @@ static Lisp_Object Vwith_echo_area_save_vector;
/* Non-zero means display_echo_area should display the last echo area
message again. Set by redisplay_preserve_echo_area. */
-static int display_last_displayed_message_p;
+static bool display_last_displayed_message_p;
/* Nonzero if echo area is being used by print; zero if being used by
message. */
-static int message_buf_print;
+static bool message_buf_print;
/* The symbol `inhibit-menubar-update' and its DEFVAR_BOOL variable. */
@@ -566,7 +551,7 @@ static Lisp_Object Qmessage_truncate_lines;
/* Set to 1 in clear_message to make redisplay_internal aware
of an emptied echo area. */
-static int message_cleared_p;
+static bool message_cleared_p;
/* A scratch glyph row with contents used for generating truncation
glyphs. Also used in direct_output_for_insert. */
@@ -581,13 +566,7 @@ static int last_height;
/* Non-zero if there's a help-echo in the echo area. */
-int help_echo_showing_p;
-
-/* If >= 0, computed, exact values of mode-line and header-line height
- to use in the macros CURRENT_MODE_LINE_HEIGHT and
- CURRENT_HEADER_LINE_HEIGHT. */
-
-int current_mode_line_height, current_header_line_height;
+bool help_echo_showing_p;
/* The maximum distance to look ahead for text properties. Values
that are too small let us call compute_char_face and similar
@@ -763,7 +742,7 @@ Lisp_Object previous_help_echo_string;
#ifdef HAVE_WINDOW_SYSTEM
/* Non-zero means an hourglass cursor is currently shown. */
-int hourglass_shown_p;
+bool hourglass_shown_p;
/* If non-null, an asynchronous timer that, when it expires, displays
an hourglass cursor on all frames. */
@@ -933,11 +912,8 @@ static int in_ellipses_for_invisible_text_p (struct display_pos *,
#ifdef HAVE_WINDOW_SYSTEM
static void x_consider_frame_title (Lisp_Object);
-static int tool_bar_lines_needed (struct frame *, int *);
static void update_tool_bar (struct frame *, int);
-static void build_desired_tool_bar_string (struct frame *f);
static int redisplay_tool_bar (struct frame *);
-static void display_tool_bar_line (struct it *, int);
static void notice_overwritten_cursor (struct window *,
enum glyph_row_area,
int, int, int, int);
@@ -1359,12 +1335,12 @@ pos_visible_p (struct window *w, ptrdiff_t charpos, int *x, int *y,
/* Compute exact mode line heights. */
if (WINDOW_WANTS_MODELINE_P (w))
- current_mode_line_height
+ w->mode_line_height
= display_mode_line (w, CURRENT_MODE_LINE_FACE_ID (w),
BVAR (current_buffer, mode_line_format));
if (WINDOW_WANTS_HEADER_LINE_P (w))
- current_header_line_height
+ w->header_line_height
= display_mode_line (w, HEADER_LINE_FACE_ID,
BVAR (current_buffer, header_line_format));
@@ -1657,8 +1633,6 @@ pos_visible_p (struct window *w, ptrdiff_t charpos, int *x, int *y,
if (old_buffer)
set_buffer_internal_1 (old_buffer);
- current_header_line_height = current_mode_line_height = -1;
-
if (visible_p && w->hscroll > 0)
*x -=
window_hscroll_limited (w, WINDOW_XFRAME (w))
@@ -1908,8 +1882,7 @@ pixel_to_glyph_coords (struct frame *f, register int pix_x, register int pix_y,
text, or we can't tell because W's current matrix is not up to
date. */
-static
-struct glyph *
+static struct glyph *
x_y_to_hpos_vpos (struct window *w, int x, int y, int *hpos, int *vpos,
int *dx, int *dy, int *area)
{
@@ -4500,8 +4473,8 @@ setup_for_ellipsis (struct it *it, int len)
if (it->dp && VECTORP (DISP_INVIS_VECTOR (it->dp)))
{
struct Lisp_Vector *v = XVECTOR (DISP_INVIS_VECTOR (it->dp));
- it->dpvec = v->contents;
- it->dpend = v->contents + v->header.size;
+ it->dpvec = v->u.contents;
+ it->dpend = v->u.contents + v->header.size;
}
else
{
@@ -6688,17 +6661,59 @@ lookup_glyphless_char_display (int c, struct it *it)
return glyphless_method;
}
-/* Load IT's display element fields with information about the next
- display element from the current position of IT. Value is zero if
- end of buffer (or C string) is reached. */
+/* Merge escape glyph face and cache the result. */
static struct frame *last_escape_glyph_frame = NULL;
static int last_escape_glyph_face_id = (1 << FACE_ID_BITS);
static int last_escape_glyph_merged_face_id = 0;
-struct frame *last_glyphless_glyph_frame = NULL;
-int last_glyphless_glyph_face_id = (1 << FACE_ID_BITS);
-int last_glyphless_glyph_merged_face_id = 0;
+static int
+merge_escape_glyph_face (struct it *it)
+{
+ int face_id;
+
+ if (it->f == last_escape_glyph_frame
+ && it->face_id == last_escape_glyph_face_id)
+ face_id = last_escape_glyph_merged_face_id;
+ else
+ {
+ /* Merge the `escape-glyph' face into the current face. */
+ face_id = merge_faces (it->f, Qescape_glyph, 0, it->face_id);
+ last_escape_glyph_frame = it->f;
+ last_escape_glyph_face_id = it->face_id;
+ last_escape_glyph_merged_face_id = face_id;
+ }
+ return face_id;
+}
+
+/* Likewise for glyphless glyph face. */
+
+static struct frame *last_glyphless_glyph_frame = NULL;
+static int last_glyphless_glyph_face_id = (1 << FACE_ID_BITS);
+static int last_glyphless_glyph_merged_face_id = 0;
+
+int
+merge_glyphless_glyph_face (struct it *it)
+{
+ int face_id;
+
+ if (it->f == last_glyphless_glyph_frame
+ && it->face_id == last_glyphless_glyph_face_id)
+ face_id = last_glyphless_glyph_merged_face_id;
+ else
+ {
+ /* Merge the `glyphless-char' face into the current face. */
+ face_id = merge_faces (it->f, Qglyphless_char, 0, it->face_id);
+ last_glyphless_glyph_frame = it->f;
+ last_glyphless_glyph_face_id = it->face_id;
+ last_glyphless_glyph_merged_face_id = face_id;
+ }
+ return face_id;
+}
+
+/* Load IT's display element fields with information about the next
+ display element from the current position of IT. Value is zero if
+ end of buffer (or C string) is reached. */
static int
get_next_display_element (struct it *it)
@@ -6763,8 +6778,8 @@ get_next_display_element (struct it *it)
if (v->header.size)
{
it->dpvec_char_len = it->len;
- it->dpvec = v->contents;
- it->dpend = v->contents + v->header.size;
+ it->dpvec = v->u.contents;
+ it->dpend = v->u.contents + v->header.size;
it->current.dpvec_index = 0;
it->dpvec_face_id = -1;
it->saved_face_id = it->face_id;
@@ -6846,24 +6861,10 @@ get_next_display_element (struct it *it)
g = GLYPH_CODE_CHAR (gc);
lface_id = GLYPH_CODE_FACE (gc);
}
- if (lface_id)
- {
- face_id = merge_faces (it->f, Qt, lface_id, it->face_id);
- }
- else if (it->f == last_escape_glyph_frame
- && it->face_id == last_escape_glyph_face_id)
- {
- face_id = last_escape_glyph_merged_face_id;
- }
- else
- {
- /* Merge the escape-glyph face into the current face. */
- face_id = merge_faces (it->f, Qescape_glyph, 0,
- it->face_id);
- last_escape_glyph_frame = it->f;
- last_escape_glyph_face_id = it->face_id;
- last_escape_glyph_merged_face_id = face_id;
- }
+
+ face_id = (lface_id
+ ? merge_faces (it->f, Qt, lface_id, it->face_id)
+ : merge_escape_glyph_face (it));
XSETINT (it->ctl_chars[0], g);
XSETINT (it->ctl_chars[1], c ^ 0100);
@@ -6895,27 +6896,10 @@ get_next_display_element (struct it *it)
escape_glyph = GLYPH_CODE_CHAR (gc);
lface_id = GLYPH_CODE_FACE (gc);
}
- if (lface_id)
- {
- /* The display table specified a face.
- Merge it into face_id and also into escape_glyph. */
- face_id = merge_faces (it->f, Qt, lface_id,
- it->face_id);
- }
- else if (it->f == last_escape_glyph_frame
- && it->face_id == last_escape_glyph_face_id)
- {
- face_id = last_escape_glyph_merged_face_id;
- }
- else
- {
- /* Merge the escape-glyph face into the current face. */
- face_id = merge_faces (it->f, Qescape_glyph, 0,
- it->face_id);
- last_escape_glyph_frame = it->f;
- last_escape_glyph_face_id = it->face_id;
- last_escape_glyph_merged_face_id = face_id;
- }
+
+ face_id = (lface_id
+ ? merge_faces (it->f, Qt, lface_id, it->face_id)
+ : merge_escape_glyph_face (it));
/* Draw non-ASCII hyphen with just highlighting: */
@@ -9552,7 +9536,20 @@ message_dolog (const char *m, ptrdiff_t nbytes, bool nlflag, bool multibyte)
old_deactivate_mark = Vdeactivate_mark;
oldbuf = current_buffer;
- Fset_buffer (Fget_buffer_create (Vmessages_buffer_name));
+
+ /* Ensure the Messages buffer exists, and switch to it.
+ If we created it, set the major-mode. */
+ {
+ int newbuffer = 0;
+ if (NILP (Fget_buffer (Vmessages_buffer_name))) newbuffer = 1;
+
+ Fset_buffer (Fget_buffer_create (Vmessages_buffer_name));
+
+ if (newbuffer &&
+ !NILP (Ffboundp (intern ("messages-buffer-mode"))))
+ call0 (intern ("messages-buffer-mode"));
+ }
+
bset_undo_list (current_buffer, Qt);
oldpoint = message_dolog_marker1;
@@ -10778,11 +10775,9 @@ clear_garbaged_frames (void)
if (FRAME_VISIBLE_P (f) && FRAME_GARBAGED_P (f))
{
if (f->resized_p)
- {
- redraw_frame (f);
- f->force_flush_display_p = 1;
- }
- clear_current_matrices (f);
+ redraw_frame (f);
+ else
+ clear_current_matrices (f);
changed_count++;
f->garbaged = 0;
f->resized_p = 0;
@@ -10870,7 +10865,7 @@ echo_area_display (int update_frame_p)
Can do with a display update of the echo area,
unless we displayed some mode lines. */
update_single_window (w, 1);
- FRAME_RIF (f)->flush_display (f);
+ flush_frame (f);
}
else
update_frame (f, 1, 1);
@@ -11458,10 +11453,6 @@ update_menu_bar (struct frame *f, int save_match_data, int hooks_run)
#ifdef HAVE_WINDOW_SYSTEM
-/* Where the mouse was last time we reported a mouse event. */
-
-struct frame *last_mouse_frame;
-
/* Tool-bar item index of the item on which a mouse button was pressed
or -1. */
@@ -11579,6 +11570,7 @@ update_tool_bar (struct frame *f, int save_match_data)
}
}
+#if ! defined (USE_GTK) && ! defined (HAVE_NS)
/* Set F->desired_tool_bar_string to a Lisp string representing frame
F's desired tool-bar contents. F->tool_bar_items must have
@@ -11916,6 +11908,11 @@ tool_bar_lines_needed (struct frame *f, int *n_rows)
return (it.current_y + FRAME_LINE_HEIGHT (f) - 1) / FRAME_LINE_HEIGHT (f);
}
+#endif /* !USE_GTK && !HAVE_NS */
+
+#if defined USE_GTK || defined HAVE_NS
+EXFUN (Ftool_bar_lines_needed, 1) ATTRIBUTE_CONST;
+#endif
DEFUN ("tool-bar-lines-needed", Ftool_bar_lines_needed, Stool_bar_lines_needed,
0, 1, 0,
@@ -11923,9 +11920,10 @@ DEFUN ("tool-bar-lines-needed", Ftool_bar_lines_needed, Stool_bar_lines_needed,
If FRAME is nil or omitted, use the selected frame. */)
(Lisp_Object frame)
{
+ int nlines = 0;
+#if ! defined (USE_GTK) && ! defined (HAVE_NS)
struct frame *f = decode_any_frame (frame);
struct window *w;
- int nlines = 0;
if (WINDOWP (f->tool_bar_window)
&& (w = XWINDOW (f->tool_bar_window),
@@ -11938,7 +11936,7 @@ If FRAME is nil or omitted, use the selected frame. */)
nlines = tool_bar_lines_needed (f, NULL);
}
}
-
+#endif
return make_number (nlines);
}
@@ -11949,15 +11947,17 @@ If FRAME is nil or omitted, use the selected frame. */)
static int
redisplay_tool_bar (struct frame *f)
{
- struct window *w;
- struct it it;
- struct glyph_row *row;
-
#if defined (USE_GTK) || defined (HAVE_NS)
+
if (FRAME_EXTERNAL_TOOL_BAR (f))
update_frame_tool_bar (f);
return 0;
-#endif
+
+#else /* !USE_GTK && !HAVE_NS */
+
+ struct window *w;
+ struct it it;
+ struct glyph_row *row;
/* If frame hasn't a tool-bar window or if it is zero-height, don't
do anything. This means you must start with tool-bar-lines
@@ -12003,7 +12003,7 @@ redisplay_tool_bar (struct frame *f)
if (WINDOW_TOTAL_LINES (w) != old_height)
{
clear_glyph_matrix (w->desired_matrix);
- fonts_changed_p = 1;
+ f->fonts_changed = 1;
return 1;
}
}
@@ -12104,7 +12104,7 @@ redisplay_tool_bar (struct frame *f)
{
clear_glyph_matrix (w->desired_matrix);
f->n_tool_bar_rows = nrows;
- fonts_changed_p = 1;
+ f->fonts_changed = 1;
return 1;
}
}
@@ -12113,8 +12113,11 @@ redisplay_tool_bar (struct frame *f)
f->minimize_tool_bar_window_p = 0;
return 0;
+
+#endif /* USE_GTK || HAVE_NS */
}
+#if ! defined (USE_GTK) && ! defined (HAVE_NS)
/* Get information about the tool-bar item which is displayed in GLYPH
on frame F. Return in *PROP_IDX the index where tool-bar item
@@ -12279,7 +12282,7 @@ note_tool_bar_highlight (struct frame *f, int x, int y)
{
Lisp_Object window = f->tool_bar_window;
struct window *w = XWINDOW (window);
- Display_Info *dpyinfo = FRAME_X_DISPLAY_INFO (f);
+ Display_Info *dpyinfo = FRAME_DISPLAY_INFO (f);
Mouse_HLInfo *hlinfo = MOUSE_HL_INFO (f);
int hpos, vpos;
struct glyph *glyph;
@@ -12312,9 +12315,9 @@ note_tool_bar_highlight (struct frame *f, int x, int y)
clear_mouse_face (hlinfo);
/* Mouse is down, but on different tool-bar item? */
- mouse_down_p = (dpyinfo->grabbed
- && f == last_mouse_frame
- && FRAME_LIVE_P (f));
+ mouse_down_p = (x_mouse_grabbed (dpyinfo)
+ && f == dpyinfo->last_mouse_frame);
+
if (mouse_down_p
&& last_tool_bar_item != prop_idx)
return;
@@ -12358,6 +12361,8 @@ note_tool_bar_highlight (struct frame *f, int x, int y)
help_echo_string = AREF (f->tool_bar_items, prop_idx + TOOL_BAR_ITEM_CAPTION);
}
+#endif /* !USE_GTK && !HAVE_NS */
+
#endif /* HAVE_WINDOW_SYSTEM */
@@ -12990,15 +12995,6 @@ redisplay_internal (void)
last_glyphless_glyph_frame = NULL;
last_glyphless_glyph_face_id = (1 << FACE_ID_BITS);
- /* If new fonts have been loaded that make a glyph matrix adjustment
- necessary, do it. */
- if (fonts_changed_p)
- {
- adjust_glyphs (NULL);
- ++windows_or_buffers_changed;
- fonts_changed_p = 0;
- }
-
/* If face_change_count is non-zero, init_iterator will free all
realized faces, which includes the faces referenced from current
matrices. So, we can't reuse current matrices in this case. */
@@ -13029,7 +13025,19 @@ redisplay_internal (void)
struct frame *f = XFRAME (frame);
if (FRAME_VISIBLE_P (f))
- ++number_of_visible_frames;
+ {
+ ++number_of_visible_frames;
+ /* Adjust matrices for visible frames only. */
+ if (f->fonts_changed)
+ {
+ adjust_frame_glyphs (f);
+ f->fonts_changed = 0;
+ }
+ /* If cursor type has been changed on the frame
+ other than selected, consider all frames. */
+ if (f != sf && f->cursor_type_changed)
+ update_mode_lines++;
+ }
clear_desired_matrices (f);
}
@@ -13078,8 +13086,7 @@ redisplay_internal (void)
}
consider_all_windows_p = (update_mode_lines
- || buffer_shared_and_changed ()
- || cursor_type_changed);
+ || buffer_shared_and_changed ());
/* If specs for an arrow have changed, do thorough redisplay
to ensure we remove any arrow that should no longer exist. */
@@ -13113,9 +13120,7 @@ redisplay_internal (void)
if (!display_last_displayed_message_p)
message_cleared_p = 0;
- if (fonts_changed_p)
- goto retry;
- else if (window_height_changed_p)
+ if (window_height_changed_p)
{
consider_all_windows_p = 1;
++update_mode_lines;
@@ -13172,6 +13177,7 @@ redisplay_internal (void)
&& !current_buffer->prevent_redisplay_optimizations_p
&& FRAME_VISIBLE_P (XFRAME (w->frame))
&& !FRAME_OBSCURED_P (XFRAME (w->frame))
+ && !XFRAME (w->frame)->cursor_type_changed
/* Make sure recorded data applies to current buffer, etc. */
&& this_line_buffer == current_buffer
&& match_p
@@ -13390,6 +13396,8 @@ redisplay_internal (void)
&& !EQ (FRAME_TTY (f)->top_frame, frame))
continue;
+ retry_frame:
+
if (FRAME_WINDOW_P (f) || FRAME_TERMCAP_P (f) || f == sf)
{
/* Mark all the scroll bars to be removed; we'll redeem
@@ -13409,20 +13417,22 @@ redisplay_internal (void)
if (FRAME_TERMINAL (f)->judge_scroll_bars_hook)
FRAME_TERMINAL (f)->judge_scroll_bars_hook (f);
- /* If fonts changed, display again. */
- /* ??? rms: I suspect it is a mistake to jump all the way
- back to retry here. It should just retry this frame. */
- if (fonts_changed_p)
- goto retry;
-
if (FRAME_VISIBLE_P (f) && !FRAME_OBSCURED_P (f))
{
+ /* If fonts changed on visible frame, display again. */
+ if (f->fonts_changed)
+ {
+ adjust_frame_glyphs (f);
+ f->fonts_changed = 0;
+ goto retry_frame;
+ }
+
/* See if we have to hscroll. */
if (!f->already_hscrolled_p)
{
f->already_hscrolled_p = 1;
if (hscroll_windows (f->root_window))
- goto retry;
+ goto retry_frame;
}
/* Prevent various kinds of signals during display
@@ -13436,6 +13446,7 @@ redisplay_internal (void)
/* Update the display. */
set_window_update_flags (XWINDOW (f->root_window), 1);
pending |= update_frame (f, 0, 0);
+ f->cursor_type_changed = 0;
f->updated_p = 1;
}
}
@@ -13480,7 +13491,7 @@ redisplay_internal (void)
update:
/* If fonts changed, display again. */
- if (fonts_changed_p)
+ if (sf->fonts_changed)
goto retry;
/* Prevent various kinds of signals during display update.
@@ -13497,6 +13508,7 @@ redisplay_internal (void)
XWINDOW (selected_window)->must_be_updated_p = 1;
pending = update_frame (sf, 0, 0);
+ sf->cursor_type_changed = 0;
}
/* We may have called echo_area_display at the top of this
@@ -13511,6 +13523,7 @@ redisplay_internal (void)
{
XWINDOW (mini_window)->must_be_updated_p = 1;
pending |= update_frame (mini_frame, 0, 0);
+ mini_frame->cursor_type_changed = 0;
if (!pending && hscroll_windows (mini_window))
goto retry;
}
@@ -13551,7 +13564,6 @@ redisplay_internal (void)
update_mode_lines = 0;
windows_or_buffers_changed = 0;
- cursor_type_changed = 0;
}
/* Start SIGIO interrupts coming again. Having them off during the
@@ -13649,9 +13661,7 @@ redisplay_preserve_echo_area (int from_where)
else
redisplay_internal ();
- if (FRAME_RIF (SELECTED_FRAME ()) != NULL
- && FRAME_RIF (SELECTED_FRAME ())->flush_display_optional)
- FRAME_RIF (SELECTED_FRAME ())->flush_display_optional (NULL);
+ flush_frame (SELECTED_FRAME ());
}
@@ -14993,7 +15003,7 @@ try_cursor_movement (Lisp_Object window, struct text_pos startp, int *scroll_ste
cases. */
&& !update_mode_lines
&& !windows_or_buffers_changed
- && !cursor_type_changed
+ && !f->cursor_type_changed
/* Can't use this case if highlighting a region. When a
region exists, cursor movement has to do more than just
set the cursor. */
@@ -15340,9 +15350,8 @@ set_vertical_scroll_bar (struct window *w)
/* Redisplay leaf window WINDOW. JUST_THIS_ONE_P non-zero means only
selected_window is redisplayed.
- We can return without actually redisplaying the window if
- fonts_changed_p. In that case, redisplay_internal will
- retry. */
+ We can return without actually redisplaying the window if fonts has been
+ changed on window's frame. In that case, redisplay_internal will retry. */
static void
redisplay_window (Lisp_Object window, int just_this_one_p)
@@ -15727,7 +15736,7 @@ redisplay_window (Lisp_Object window, int just_this_one_p)
debug_method_add (w, "try_window_id %d", tem);
#endif
- if (fonts_changed_p)
+ if (f->fonts_changed)
goto need_larger_matrices;
if (tem > 0)
goto done;
@@ -15797,12 +15806,12 @@ redisplay_window (Lisp_Object window, int just_this_one_p)
IF_DEBUG (debug_method_add (w, "1"));
if (try_window (window, startp, TRY_WINDOW_CHECK_MARGINS) < 0)
/* -1 means we need to scroll.
- 0 means we need new matrices, but fonts_changed_p
+ 0 means we need new matrices, but fonts_changed
is set in that case, so we will detect it below. */
goto try_to_scroll;
}
- if (fonts_changed_p)
+ if (f->fonts_changed)
goto need_larger_matrices;
if (w->cursor.vpos >= 0)
@@ -15990,7 +15999,7 @@ redisplay_window (Lisp_Object window, int just_this_one_p)
/* Redisplay the window. */
if (!current_matrix_up_to_date_p
|| windows_or_buffers_changed
- || cursor_type_changed
+ || f->cursor_type_changed
/* Don't use try_window_reusing_current_matrix in this case
because it can have changed the buffer. */
|| !NILP (Vwindow_scroll_functions)
@@ -16003,7 +16012,7 @@ redisplay_window (Lisp_Object window, int just_this_one_p)
/* If new fonts have been loaded (due to fontsets), give up. We
have to start a new redisplay since we need to re-adjust glyph
matrices. */
- if (fonts_changed_p)
+ if (f->fonts_changed)
goto need_larger_matrices;
/* If cursor did not appear assume that the middle of the window is
@@ -16116,7 +16125,8 @@ redisplay_window (Lisp_Object window, int just_this_one_p)
if (WINDOW_WANTS_MODELINE_P (w)
&& CURRENT_MODE_LINE_HEIGHT (w) != DESIRED_MODE_LINE_HEIGHT (w))
{
- fonts_changed_p = 1;
+ f->fonts_changed = 1;
+ w->mode_line_height = -1;
MATRIX_MODE_LINE_ROW (w->current_matrix)->height
= DESIRED_MODE_LINE_HEIGHT (w);
}
@@ -16126,12 +16136,13 @@ redisplay_window (Lisp_Object window, int just_this_one_p)
if (WINDOW_WANTS_HEADER_LINE_P (w)
&& CURRENT_HEADER_LINE_HEIGHT (w) != DESIRED_HEADER_LINE_HEIGHT (w))
{
- fonts_changed_p = 1;
+ f->fonts_changed = 1;
+ w->header_line_height = -1;
MATRIX_HEADER_LINE_ROW (w->current_matrix)->height
= DESIRED_HEADER_LINE_HEIGHT (w);
}
- if (fonts_changed_p)
+ if (f->fonts_changed)
goto need_larger_matrices;
}
@@ -16196,8 +16207,8 @@ redisplay_window (Lisp_Object window, int just_this_one_p)
}
#endif /* HAVE_WINDOW_SYSTEM */
- /* We go to this label, with fonts_changed_p set,
- if it is necessary to try again using larger glyph matrices.
+ /* We go to this label, with fonts_changed set, if it is
+ necessary to try again using larger glyph matrices.
We have to redeem the scroll bar even in this case,
because the loop in redisplay_internal expects that. */
need_larger_matrices:
@@ -16269,7 +16280,7 @@ try_window (Lisp_Object window, struct text_pos pos, int flags)
{
if (display_line (&it))
last_text_row = it.glyph_row - 1;
- if (fonts_changed_p && !(flags & TRY_WINDOW_IGNORE_FONTS_CHANGE))
+ if (f->fonts_changed && !(flags & TRY_WINDOW_IGNORE_FONTS_CHANGE))
return 0;
}
@@ -16367,7 +16378,7 @@ try_window_reusing_current_matrix (struct window *w)
/* Don't try to reuse the display if windows have been split
or such. */
|| windows_or_buffers_changed
- || cursor_type_changed)
+ || f->cursor_type_changed)
return 0;
/* Can't do this if region may have changed. */
@@ -16415,8 +16426,7 @@ try_window_reusing_current_matrix (struct window *w)
w->cursor.vpos = -1;
last_text_row = last_reused_text_row = NULL;
- while (it.current_y < it.last_visible_y
- && !fonts_changed_p)
+ while (it.current_y < it.last_visible_y && !f->fonts_changed)
{
/* If we have reached into the characters in the START row,
that means the line boundaries have changed. So we
@@ -16627,7 +16637,7 @@ try_window_reusing_current_matrix (struct window *w)
if (pt_row == NULL)
w->cursor.vpos = -1;
last_text_row = NULL;
- while (it.current_y < it.last_visible_y && !fonts_changed_p)
+ while (it.current_y < it.last_visible_y && !f->fonts_changed)
if (display_line (&it))
last_text_row = it.glyph_row - 1;
@@ -17139,7 +17149,7 @@ try_window_id (struct window *w)
GIVE_UP (1);
/* This flag is used to prevent redisplay optimizations. */
- if (windows_or_buffers_changed || cursor_type_changed)
+ if (windows_or_buffers_changed || f->cursor_type_changed)
GIVE_UP (2);
/* Verify that narrowing has not changed.
@@ -17280,8 +17290,6 @@ try_window_id (struct window *w)
row = row_containing_pos (w, PT, r0, NULL, 0);
if (row)
set_cursor_from_row (w, row, current_matrix, 0, 0, 0, 0);
- else
- emacs_abort ();
return 1;
}
}
@@ -17322,8 +17330,6 @@ try_window_id (struct window *w)
row = row_containing_pos (w, PT, r0, NULL, 0);
if (row)
set_cursor_from_row (w, row, current_matrix, 0, 0, 0, 0);
- else
- emacs_abort ();
return 2;
}
}
@@ -17470,7 +17476,7 @@ try_window_id (struct window *w)
last_text_row = NULL;
overlay_arrow_seen = 0;
while (it.current_y < it.last_visible_y
- && !fonts_changed_p
+ && !f->fonts_changed
&& (first_unchanged_at_end_row == NULL
|| IT_CHARPOS (it) < stop_pos))
{
@@ -17478,7 +17484,7 @@ try_window_id (struct window *w)
last_text_row = it.glyph_row - 1;
}
- if (fonts_changed_p)
+ if (f->fonts_changed)
return -1;
@@ -17725,8 +17731,7 @@ try_window_id (struct window *w)
/* Display the rest of the lines at the window end. */
it.glyph_row = MATRIX_ROW (desired_matrix, it.vpos);
- while (it.current_y < it.last_visible_y
- && !fonts_changed_p)
+ while (it.current_y < it.last_visible_y && !f->fonts_changed)
{
/* Is it always sure that the display agrees with lines in
the current matrix? I don't think so, so we mark rows
@@ -19262,7 +19267,7 @@ display_line (struct it *it)
>= it->w->desired_matrix->nrows)
{
it->w->nrows_scale_factor++;
- fonts_changed_p = 1;
+ it->f->fonts_changed = 1;
return 0;
}
@@ -24111,12 +24116,12 @@ draw_glyphs (struct window *w, int x, struct glyph_row *row,
#define IT_EXPAND_MATRIX_WIDTH(it, area) \
{ \
- if (!fonts_changed_p \
+ if (!it->f->fonts_changed \
&& (it->glyph_row->glyphs[area] \
< it->glyph_row->glyphs[area + 1])) \
{ \
it->w->ncols_scale_factor++; \
- fonts_changed_p = 1; \
+ it->f->fonts_changed = 1; \
} \
}
@@ -25032,21 +25037,7 @@ produce_glyphless_glyph (struct it *it, int for_no_font, Lisp_Object acronym)
base_height = it->ascent + it->descent;
base_width = font->average_width;
- /* Get a face ID for the glyph by utilizing a cache (the same way as
- done for `escape-glyph' in get_next_display_element). */
- if (it->f == last_glyphless_glyph_frame
- && it->face_id == last_glyphless_glyph_face_id)
- {
- face_id = last_glyphless_glyph_merged_face_id;
- }
- else
- {
- /* Merge the `glyphless-char' face into the current face. */
- face_id = merge_faces (it->f, Qglyphless_char, 0, it->face_id);
- last_glyphless_glyph_frame = it->f;
- last_glyphless_glyph_face_id = it->face_id;
- last_glyphless_glyph_merged_face_id = face_id;
- }
+ face_id = merge_glyphless_glyph_face (it);
if (it->glyphless_method == GLYPHLESS_DISPLAY_THIN_SPACE)
{
@@ -26087,7 +26078,7 @@ set_frame_cursor_types (struct frame *f, Lisp_Object arg)
FRAME_BLINK_OFF_CURSOR (f) = DEFAULT_CURSOR;
/* Make sure the cursor gets redrawn. */
- cursor_type_changed = 1;
+ f->cursor_type_changed = 1;
}
@@ -26138,7 +26129,7 @@ get_window_cursor_type (struct window *w, struct glyph *glyph, int *width,
/* Detect a nonselected window or nonselected frame. */
else if (w != XWINDOW (f->selected_window)
- || f != FRAME_X_DISPLAY_INFO (f)->x_highlight_frame)
+ || f != FRAME_DISPLAY_INFO (f)->x_highlight_frame)
{
*active_cursor = 0;
@@ -26835,10 +26826,13 @@ show_mouse_face (Mouse_HLInfo *hlinfo, enum draw_glyphs_face draw)
/* Change the mouse cursor. */
if (FRAME_WINDOW_P (f))
{
+#if ! defined (USE_GTK) && ! defined (HAVE_NS)
if (draw == DRAW_NORMAL_TEXT
&& !EQ (hlinfo->mouse_face_window, f->tool_bar_window))
FRAME_RIF (f)->define_frame_cursor (f, FRAME_X_OUTPUT (f)->text_cursor);
- else if (draw == DRAW_MOUSE_FACE)
+ else
+#endif
+ if (draw == DRAW_MOUSE_FACE)
FRAME_RIF (f)->define_frame_cursor (f, FRAME_X_OUTPUT (f)->hand_cursor);
else
FRAME_RIF (f)->define_frame_cursor (f, FRAME_X_OUTPUT (f)->nontext_cursor);
@@ -27507,7 +27501,7 @@ fast_find_string_pos (struct window *w, ptrdiff_t pos, Lisp_Object object,
#endif /* not used */
/* Find the positions of the first and the last glyphs in window W's
- current matrix that occlude positions [STARTPOS..ENDPOS] in OBJECT
+ current matrix that occlude positions [STARTPOS..ENDPOS) in OBJECT
(assumed to be a string), and return in HLINFO's mouse_face_*
members the pixel and column/row coordinates of those glyphs. */
@@ -27523,7 +27517,7 @@ mouse_face_from_string_pos (struct window *w, Mouse_HLInfo *hlinfo,
int found = 0;
/* Find the glyph row with at least one position in the range
- [STARTPOS..ENDPOS], and the first glyph in that row whose
+ [STARTPOS..ENDPOS), and the first glyph in that row whose
position belongs to that range. */
for (r = MATRIX_FIRST_TEXT_ROW (w->current_matrix);
r->enabled_p && r->y < yb;
@@ -27535,7 +27529,7 @@ mouse_face_from_string_pos (struct window *w, Mouse_HLInfo *hlinfo,
e = g + r->used[TEXT_AREA];
for (gx = r->x; g < e; gx += g->pixel_width, ++g)
if (EQ (g->object, object)
- && startpos <= g->charpos && g->charpos <= endpos)
+ && startpos <= g->charpos && g->charpos < endpos)
{
hlinfo->mouse_face_beg_row
= MATRIX_ROW_VPOS (r, w->current_matrix);
@@ -27553,7 +27547,7 @@ mouse_face_from_string_pos (struct window *w, Mouse_HLInfo *hlinfo,
g = e + r->used[TEXT_AREA];
for ( ; g > e; --g)
if (EQ ((g-1)->object, object)
- && startpos <= (g-1)->charpos && (g-1)->charpos <= endpos)
+ && startpos <= (g-1)->charpos && (g-1)->charpos < endpos)
{
hlinfo->mouse_face_beg_row
= MATRIX_ROW_VPOS (r, w->current_matrix);
@@ -27581,7 +27575,7 @@ mouse_face_from_string_pos (struct window *w, Mouse_HLInfo *hlinfo,
found = 0;
for ( ; g < e; ++g)
if (EQ (g->object, object)
- && startpos <= g->charpos && g->charpos <= endpos)
+ && startpos <= g->charpos && g->charpos < endpos)
{
found = 1;
break;
@@ -27604,7 +27598,7 @@ mouse_face_from_string_pos (struct window *w, Mouse_HLInfo *hlinfo,
e = g + r->used[TEXT_AREA];
for ( ; e > g; --e)
if (EQ ((e-1)->object, object)
- && startpos <= (e-1)->charpos && (e-1)->charpos <= endpos)
+ && startpos <= (e-1)->charpos && (e-1)->charpos < endpos)
break;
hlinfo->mouse_face_end_col = e - g;
@@ -27619,7 +27613,7 @@ mouse_face_from_string_pos (struct window *w, Mouse_HLInfo *hlinfo,
for (gx = r->x ; e < g; ++e)
{
if (EQ (e->object, object)
- && startpos <= e->charpos && e->charpos <= endpos)
+ && startpos <= e->charpos && e->charpos < endpos)
break;
gx += e->pixel_width;
}
@@ -27682,7 +27676,7 @@ on_hot_spot_p (Lisp_Object hot_spot, int x, int y)
if (VECTORP (XCDR (hot_spot)))
{
struct Lisp_Vector *v = XVECTOR (XCDR (hot_spot));
- Lisp_Object *poly = v->contents;
+ Lisp_Object *poly = v->u.contents;
ptrdiff_t n = v->header.size;
ptrdiff_t i;
int inside = 0;
@@ -27788,7 +27782,7 @@ define_frame_cursor1 (struct frame *f, Cursor cursor, Lisp_Object pointer)
cursor = FRAME_X_OUTPUT (f)->horizontal_drag_cursor;
#ifdef HAVE_X_WINDOWS
else if (EQ (pointer, intern ("vdrag")))
- cursor = FRAME_X_DISPLAY_INFO (f)->vertical_scroll_bar_cursor;
+ cursor = FRAME_DISPLAY_INFO (f)->vertical_scroll_bar_cursor;
#endif
else if (EQ (pointer, intern ("hourglass")))
cursor = FRAME_X_OUTPUT (f)->hourglass_cursor;
@@ -27951,7 +27945,7 @@ note_mode_line_or_margin_highlight (Lisp_Object window, int x, int y,
/* Change the mouse pointer according to what is under it. */
if (FRAME_WINDOW_P (f))
{
- dpyinfo = FRAME_X_DISPLAY_INFO (f);
+ dpyinfo = FRAME_DISPLAY_INFO (f);
if (STRINGP (string))
{
cursor = FRAME_X_OUTPUT (f)->nontext_cursor;
@@ -27973,7 +27967,7 @@ note_mode_line_or_margin_highlight (Lisp_Object window, int x, int y,
}
else
/* Default mode-line pointer. */
- cursor = FRAME_X_DISPLAY_INFO (f)->vertical_scroll_bar_cursor;
+ cursor = FRAME_DISPLAY_INFO (f)->vertical_scroll_bar_cursor;
}
#endif
}
@@ -28176,7 +28170,7 @@ note_mouse_highlight (struct frame *f, int x, int y)
w = XWINDOW (window);
frame_to_window_pixel_xy (w, &x, &y);
-#ifdef HAVE_WINDOW_SYSTEM
+#if defined (HAVE_WINDOW_SYSTEM) && ! defined (USE_GTK) && ! defined (HAVE_NS)
/* Handle tool-bar window differently since it doesn't display a
buffer. */
if (EQ (window, f->tool_bar_window))
@@ -28393,7 +28387,7 @@ note_mouse_highlight (struct frame *f, int x, int y)
if (NILP (s))
s = make_number (0);
if (NILP (e))
- e = make_number (SCHARS (object) - 1);
+ e = make_number (SCHARS (object));
mouse_face_from_string_pos (w, hlinfo, object,
XINT (s), XINT (e));
hlinfo->mouse_face_past_end = 0;
@@ -29089,9 +29083,11 @@ expose_frame (struct frame *f, int x, int y, int w, int h)
TRACE ((stderr, "(%d, %d, %d, %d)\n", r.x, r.y, r.width, r.height));
mouse_face_overwritten_p = expose_window_tree (XWINDOW (f->root_window), &r);
+#if ! defined (USE_GTK) && ! defined (HAVE_NS)
if (WINDOWP (f->tool_bar_window))
mouse_face_overwritten_p
|= expose_window (XWINDOW (f->tool_bar_window), &r);
+#endif
#ifdef HAVE_X_WINDOWS
#ifndef MSDOS
@@ -29817,8 +29813,6 @@ Its value should be an ASCII acronym string, `hex-code', `empty-box', or
void
init_xdisp (void)
{
- current_header_line_height = current_mode_line_height = -1;
-
CHARPOS (this_line_start_pos) = 0;
if (!noninteractive)
diff --git a/src/xfaces.c b/src/xfaces.c
index 0a117b83c15..8d78a28eab1 100644
--- a/src/xfaces.c
+++ b/src/xfaces.c
@@ -211,13 +211,10 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include "frame.h"
#include "termhooks.h"
-#ifdef HAVE_X_WINDOWS
-#include "xterm.h"
#ifdef USE_MOTIF
#include <Xm/Xm.h>
#include <Xm/XmStrDefs.h>
#endif /* USE_MOTIF */
-#endif /* HAVE_X_WINDOWS */
#ifdef MSDOS
#include "dosfns.h"
@@ -227,15 +224,11 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include TERM_HEADER
#include "fontset.h"
#ifdef HAVE_NTGUI
-#undef FRAME_X_DISPLAY_INFO
-#define FRAME_X_DISPLAY_INFO FRAME_W32_DISPLAY_INFO
#define x_display_info w32_display_info
#define GCGraphicsExposures 0
#endif /* HAVE_NTGUI */
#ifdef HAVE_NS
-#undef FRAME_X_DISPLAY_INFO
-#define FRAME_X_DISPLAY_INFO FRAME_NS_DISPLAY_INFO
#define GCGraphicsExposures 0
#endif /* HAVE_NS */
@@ -549,7 +542,7 @@ DEFUN ("dump-colors", Fdump_colors, Sdump_colors, 0, 0, 0,
void
x_free_colors (struct frame *f, long unsigned int *pixels, int npixels)
{
- int class = FRAME_X_DISPLAY_INFO (f)->visual->class;
+ int class = FRAME_DISPLAY_INFO (f)->visual->class;
/* If display has an immutable color map, freeing colors is not
necessary and some servers don't allow it. So don't do it. */
@@ -770,7 +763,7 @@ clear_face_cache (int clear_fonts_p)
{
struct frame *f = XFRAME (frame);
if (FRAME_WINDOW_P (f)
- && FRAME_X_DISPLAY_INFO (f)->n_fonts > CLEAR_FONT_TABLE_NFONTS)
+ && FRAME_DISPLAY_INFO (f)->n_fonts > CLEAR_FONT_TABLE_NFONTS)
{
clear_font_cache (f);
free_all_realized_faces (frame);
@@ -1572,7 +1565,7 @@ the face font sort order. */)
vec = Fvconcat (ndrivers, drivers);
nfonts = ASIZE (vec);
- qsort (XVECTOR (vec)->contents, nfonts, word_size,
+ qsort (XVECTOR (vec)->u.contents, nfonts, word_size,
compare_fonts_by_sort_order);
result = Qnil;
@@ -1837,7 +1830,7 @@ check_lface (Lisp_Object lface)
if (!NILP (lface))
{
eassert (LFACEP (lface));
- check_lface_attrs (XVECTOR (lface)->contents);
+ check_lface_attrs (XVECTOR (lface)->u.contents);
}
}
@@ -2014,7 +2007,7 @@ get_lface_attributes_no_remap (struct frame *f, Lisp_Object face_name,
lface = lface_from_face_name_no_resolve (f, face_name, signal_p);
if (! NILP (lface))
- memcpy (attrs, XVECTOR (lface)->contents,
+ memcpy (attrs, XVECTOR (lface)->u.contents,
LFACE_VECTOR_SIZE * sizeof *attrs);
return !NILP (lface);
@@ -2697,7 +2690,7 @@ The value is TO. */)
copy = Finternal_make_lisp_face (to, new_frame);
}
- vcopy (copy, 0, XVECTOR (lface)->contents, LFACE_VECTOR_SIZE);
+ vcopy (copy, 0, XVECTOR (lface)->u.contents, LFACE_VECTOR_SIZE);
/* Changing a named face means that all realized faces depending on
that face are invalid. Since we cannot tell which realized faces
@@ -3100,7 +3093,7 @@ FRAME 0 means change the face on all frames, and change the default
f = XFRAME (frame);
if (! FONT_OBJECT_P (value))
{
- Lisp_Object *attrs = XVECTOR (lface)->contents;
+ Lisp_Object *attrs = XVECTOR (lface)->u.contents;
Lisp_Object font_object;
font_object = font_load_for_lface (f, attrs, value);
@@ -3168,7 +3161,7 @@ FRAME 0 means change the face on all frames, and change the default
the font to nil so that the font selector doesn't think that
the attribute is mandatory. Also, clear the average
width. */
- font_clear_prop (XVECTOR (lface)->contents, prop_index);
+ font_clear_prop (XVECTOR (lface)->u.contents, prop_index);
}
/* Changing a named face means that all realized faces depending on
@@ -3198,7 +3191,7 @@ FRAME 0 means change the face on all frames, and change the default
reflected in changed `font' frame parameters. */
if (FRAMEP (frame)
&& (prop_index || EQ (attr, QCfont))
- && lface_fully_specified_p (XVECTOR (lface)->contents))
+ && lface_fully_specified_p (XVECTOR (lface)->u.contents))
set_font_frame_param (frame, lface);
else
#endif /* HAVE_WINDOW_SYSTEM */
@@ -3378,7 +3371,7 @@ set_font_frame_param (Lisp_Object frame, Lisp_Object lface)
{
if (FONT_SPEC_P (font))
{
- font = font_load_for_lface (f, XVECTOR (lface)->contents, font);
+ font = font_load_for_lface (f, XVECTOR (lface)->u.contents, font);
if (NILP (font))
return;
ASET (lface, LFACE_FONT_INDEX, font);
@@ -3403,7 +3396,7 @@ ordinary `x-get-resource' doesn't take a frame argument. */)
CHECK_STRING (class);
f = decode_live_frame (frame);
block_input ();
- value = display_x_get_resource (FRAME_X_DISPLAY_INFO (f),
+ value = display_x_get_resource (FRAME_DISPLAY_INFO (f),
resource, class, Qnil, Qnil);
unblock_input ();
return value;
@@ -3493,7 +3486,7 @@ DEFUN ("internal-set-lisp-face-attribute-from-resource",
static void
x_update_menu_appearance (struct frame *f)
{
- struct x_display_info *dpyinfo = FRAME_X_DISPLAY_INFO (f);
+ struct x_display_info *dpyinfo = FRAME_DISPLAY_INFO (f);
XrmDatabase rdb;
if (dpyinfo
@@ -3735,8 +3728,8 @@ Default face attributes override any local face attributes. */)
the local frame is defined from default specs in `face-defface-spec'
and those should be overridden by global settings. Hence the strange
"global before local" priority. */
- lvec = XVECTOR (local_lface)->contents;
- gvec = XVECTOR (global_lface)->contents;
+ lvec = XVECTOR (local_lface)->u.contents;
+ gvec = XVECTOR (global_lface)->u.contents;
for (i = 1; i < LFACE_VECTOR_SIZE; ++i)
if (IGNORE_DEFFACE_P (gvec[i]))
ASET (local_lface, i, Qunspecified);
@@ -3920,8 +3913,8 @@ If FRAME is omitted or nil, use the selected frame. */)
lface1 = lface_from_face_name (f, face1, 1);
lface2 = lface_from_face_name (f, face2, 1);
- equal_p = lface_equal_p (XVECTOR (lface1)->contents,
- XVECTOR (lface2)->contents);
+ equal_p = lface_equal_p (XVECTOR (lface1)->u.contents,
+ XVECTOR (lface2)->u.contents);
return equal_p ? Qt : Qnil;
}
@@ -4658,7 +4651,7 @@ DEFUN ("face-attributes-as-vector", Fface_attributes_as_vector,
Lisp_Object lface;
lface = Fmake_vector (make_number (LFACE_VECTOR_SIZE),
Qunspecified);
- merge_face_ref (XFRAME (selected_frame), plist, XVECTOR (lface)->contents,
+ merge_face_ref (XFRAME (selected_frame), plist, XVECTOR (lface)->u.contents,
1, 0);
return lface;
}
@@ -5338,9 +5331,9 @@ realize_default_face (struct frame *f)
ASET (lface, LFACE_STIPPLE_INDEX, Qnil);
/* Realize the face; it must be fully-specified now. */
- eassert (lface_fully_specified_p (XVECTOR (lface)->contents));
+ eassert (lface_fully_specified_p (XVECTOR (lface)->u.contents));
check_lface (lface);
- memcpy (attrs, XVECTOR (lface)->contents, sizeof attrs);
+ memcpy (attrs, XVECTOR (lface)->u.contents, sizeof attrs);
face = realize_face (c, attrs, DEFAULT_FACE_ID);
#ifdef HAVE_WINDOW_SYSTEM
diff --git a/src/xfns.c b/src/xfns.c
index b08fc76524c..2b895642942 100644
--- a/src/xfns.c
+++ b/src/xfns.c
@@ -42,8 +42,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include "termchar.h"
#include "font.h"
-#ifdef HAVE_X_WINDOWS
-
#include <sys/types.h>
#include <sys/stat.h>
@@ -153,7 +151,7 @@ check_x_display_info (Lisp_Object object)
struct frame *sf = XFRAME (selected_frame);
if (FRAME_X_P (sf) && FRAME_LIVE_P (sf))
- dpyinfo = FRAME_X_DISPLAY_INFO (sf);
+ dpyinfo = FRAME_DISPLAY_INFO (sf);
else if (x_display_list != 0)
dpyinfo = x_display_list;
else
@@ -173,193 +171,12 @@ check_x_display_info (Lisp_Object object)
else
{
struct frame *f = decode_window_system_frame (object);
- dpyinfo = FRAME_X_DISPLAY_INFO (f);
+ dpyinfo = FRAME_DISPLAY_INFO (f);
}
return dpyinfo;
}
-
-/* Return the Emacs frame-object corresponding to an X window.
- It could be the frame's main window or an icon window. */
-
-/* This function can be called during GC, so use GC_xxx type test macros. */
-
-struct frame *
-x_window_to_frame (struct x_display_info *dpyinfo, int wdesc)
-{
- Lisp_Object tail, frame;
- struct frame *f;
-
- if (wdesc == None)
- return NULL;
-
- FOR_EACH_FRAME (tail, frame)
- {
- f = XFRAME (frame);
- if (!FRAME_X_P (f) || FRAME_X_DISPLAY_INFO (f) != dpyinfo)
- continue;
- if (f->output_data.x->hourglass_window == wdesc)
- return f;
-#ifdef USE_X_TOOLKIT
- if ((f->output_data.x->edit_widget
- && XtWindow (f->output_data.x->edit_widget) == wdesc)
- /* A tooltip frame? */
- || (!f->output_data.x->edit_widget
- && FRAME_X_WINDOW (f) == wdesc)
- || f->output_data.x->icon_desc == wdesc)
- return f;
-#else /* not USE_X_TOOLKIT */
-#ifdef USE_GTK
- if (f->output_data.x->edit_widget)
- {
- GtkWidget *gwdesc = xg_win_to_widget (dpyinfo->display, wdesc);
- struct x_output *x = f->output_data.x;
- if (gwdesc != 0 && gwdesc == x->edit_widget)
- return f;
- }
-#endif /* USE_GTK */
- if (FRAME_X_WINDOW (f) == wdesc
- || f->output_data.x->icon_desc == wdesc)
- return f;
-#endif /* not USE_X_TOOLKIT */
- }
- return 0;
-}
-
-#if defined (USE_X_TOOLKIT) || defined (USE_GTK)
-/* Like x_window_to_frame but also compares the window with the widget's
- windows. */
-
-struct frame *
-x_any_window_to_frame (struct x_display_info *dpyinfo, int wdesc)
-{
- Lisp_Object tail, frame;
- struct frame *f, *found = NULL;
- struct x_output *x;
-
- if (wdesc == None)
- return NULL;
-
- FOR_EACH_FRAME (tail, frame)
- {
- if (found)
- break;
- f = XFRAME (frame);
- if (FRAME_X_P (f) && FRAME_X_DISPLAY_INFO (f) == dpyinfo)
- {
- /* This frame matches if the window is any of its widgets. */
- x = f->output_data.x;
- if (x->hourglass_window == wdesc)
- found = f;
- else if (x->widget)
- {
-#ifdef USE_GTK
- GtkWidget *gwdesc = xg_win_to_widget (dpyinfo->display, wdesc);
- if (gwdesc != 0
- && gtk_widget_get_toplevel (gwdesc) == x->widget)
- found = f;
-#else
- if (wdesc == XtWindow (x->widget)
- || wdesc == XtWindow (x->column_widget)
- || wdesc == XtWindow (x->edit_widget))
- found = f;
- /* Match if the window is this frame's menubar. */
- else if (lw_window_is_in_menubar (wdesc, x->menubar_widget))
- found = f;
-#endif
- }
- else if (FRAME_X_WINDOW (f) == wdesc)
- /* A tooltip frame. */
- found = f;
- }
- }
-
- return found;
-}
-
-/* Likewise, but consider only the menu bar widget. */
-
-struct frame *
-x_menubar_window_to_frame (struct x_display_info *dpyinfo, XEvent *event)
-{
- Window wdesc = event->xany.window;
- Lisp_Object tail, frame;
- struct frame *f;
- struct x_output *x;
-
- if (wdesc == None)
- return NULL;
-
- FOR_EACH_FRAME (tail, frame)
- {
- f = XFRAME (frame);
- if (!FRAME_X_P (f) || FRAME_X_DISPLAY_INFO (f) != dpyinfo)
- continue;
- x = f->output_data.x;
-#ifdef USE_GTK
- if (x->menubar_widget && xg_event_is_for_menubar (f, event))
- return f;
-#else
- /* Match if the window is this frame's menubar. */
- if (x->menubar_widget
- && lw_window_is_in_menubar (wdesc, x->menubar_widget))
- return f;
-#endif
- }
- return 0;
-}
-
-/* Return the frame whose principal (outermost) window is WDESC.
- If WDESC is some other (smaller) window, we return 0. */
-
-struct frame *
-x_top_window_to_frame (struct x_display_info *dpyinfo, int wdesc)
-{
- Lisp_Object tail, frame;
- struct frame *f;
- struct x_output *x;
-
- if (wdesc == None)
- return NULL;
-
- FOR_EACH_FRAME (tail, frame)
- {
- f = XFRAME (frame);
- if (!FRAME_X_P (f) || FRAME_X_DISPLAY_INFO (f) != dpyinfo)
- continue;
- x = f->output_data.x;
-
- if (x->widget)
- {
- /* This frame matches if the window is its topmost widget. */
-#ifdef USE_GTK
- GtkWidget *gwdesc = xg_win_to_widget (dpyinfo->display, wdesc);
- if (gwdesc == x->widget)
- return f;
-#else
- if (wdesc == XtWindow (x->widget))
- return f;
-#if 0 /* I don't know why it did this,
- but it seems logically wrong,
- and it causes trouble for MapNotify events. */
- /* Match if the window is this frame's menubar. */
- if (x->menubar_widget
- && wdesc == XtWindow (x->menubar_widget))
- return f;
-#endif
-#endif
- }
- else if (FRAME_X_WINDOW (f) == wdesc)
- /* Tooltip frame. */
- return f;
- }
- return 0;
-}
-#endif /* USE_X_TOOLKIT || USE_GTK */
-
-
-
/* Store the screen positions of frame F into XPTR and YPTR.
These are the positions of the containing window manager window,
not Emacs's own window. */
@@ -374,7 +191,7 @@ x_real_positions (struct frame *f, int *xptr, int *yptr)
Atom actual_type;
unsigned long actual_size, bytes_remaining;
int rc, actual_format;
- struct x_display_info *dpyinfo = FRAME_X_DISPLAY_INFO (f);
+ struct x_display_info *dpyinfo = FRAME_DISPLAY_INFO (f);
long max_len = 400;
Display *dpy = FRAME_X_DISPLAY (f);
unsigned char *tmp_data = NULL;
@@ -437,7 +254,7 @@ x_real_positions (struct frame *f, int *xptr, int *yptr)
XTranslateCoordinates (FRAME_X_DISPLAY (f),
/* From-window, to-window. */
- FRAME_X_DISPLAY_INFO (f)->root_window,
+ FRAME_DISPLAY_INFO (f)->root_window,
FRAME_X_WINDOW (f),
/* From-position, to-position. */
@@ -456,7 +273,7 @@ x_real_positions (struct frame *f, int *xptr, int *yptr)
XTranslateCoordinates (FRAME_X_DISPLAY (f),
/* From-window, to-window. */
- FRAME_X_DISPLAY_INFO (f)->root_window,
+ FRAME_DISPLAY_INFO (f)->root_window,
FRAME_OUTER_WINDOW (f),
/* From-position, to-position. */
@@ -577,7 +394,7 @@ x_decode_color (struct frame *f, Lisp_Object color_name, int mono_color)
#endif
/* Return MONO_COLOR for monochrome frames. */
- if (FRAME_X_DISPLAY_INFO (f)->n_planes == 1)
+ if (FRAME_DISPLAY_INFO (f)->n_planes == 1)
return mono_color;
/* x_defined_color is responsible for coping with failures
@@ -770,7 +587,7 @@ make_invisible_cursor (struct frame *f)
Cursor c = 0;
x_catch_errors (dpy);
- pix = XCreateBitmapFromData (dpy, FRAME_X_DISPLAY_INFO (f)->root_window,
+ pix = XCreateBitmapFromData (dpy, FRAME_DISPLAY_INFO (f)->root_window,
no_data, 1, 1);
if (! x_had_errors_p (dpy) && pix != None)
{
@@ -895,8 +712,8 @@ x_set_mouse_color (struct frame *f, Lisp_Object arg, Lisp_Object oldval)
XDefineCursor (dpy, FRAME_X_WINDOW (f),
f->output_data.x->current_cursor = cursor);
- if (FRAME_X_DISPLAY_INFO (f)->invisible_cursor == 0)
- FRAME_X_DISPLAY_INFO (f)->invisible_cursor = make_invisible_cursor (f);
+ if (FRAME_DISPLAY_INFO (f)->invisible_cursor == 0)
+ FRAME_DISPLAY_INFO (f)->invisible_cursor = make_invisible_cursor (f);
if (cursor != x->text_cursor
&& x->text_cursor != 0)
@@ -1031,7 +848,7 @@ x_set_border_pixel (struct frame *f, int pix)
Note: this is done in two routines because of the way X10 works.
Note: under X11, this is normally the province of the window manager,
- and so emacs' border colors may be overridden. */
+ and so emacs's border colors may be overridden. */
static void
x_set_border_color (struct frame *f, Lisp_Object arg, Lisp_Object oldval)
@@ -1201,7 +1018,7 @@ x_set_menu_bar_lines (struct frame *f, Lisp_Object value, Lisp_Object oldval)
clear_glyph_matrix (XWINDOW (f->menu_bar_window)->current_matrix);
}
#endif /* not USE_X_TOOLKIT && not USE_GTK */
- adjust_glyphs (f);
+ adjust_frame_glyphs (f);
run_window_configuration_change_hook (f);
}
@@ -1215,8 +1032,11 @@ x_set_menu_bar_lines (struct frame *f, Lisp_Object value, Lisp_Object oldval)
void
x_set_tool_bar_lines (struct frame *f, Lisp_Object value, Lisp_Object oldval)
{
- int delta, nlines, root_height;
+ int nlines;
+#if ! defined (USE_GTK)
+ int delta, root_height;
Lisp_Object root_window;
+#endif
/* Treat tool bars like menu bars. */
if (FRAME_MINIBUF_ONLY_P (f))
@@ -1229,6 +1049,7 @@ x_set_tool_bar_lines (struct frame *f, Lisp_Object value, Lisp_Object oldval)
nlines = 0;
#ifdef USE_GTK
+
FRAME_TOOL_BAR_LINES (f) = 0;
if (nlines)
{
@@ -1245,8 +1066,7 @@ x_set_tool_bar_lines (struct frame *f, Lisp_Object value, Lisp_Object oldval)
FRAME_EXTERNAL_TOOL_BAR (f) = 0;
}
- return;
-#endif
+#else /* !USE_GTK */
/* Make sure we redisplay all windows in this frame. */
++windows_or_buffers_changed;
@@ -1264,7 +1084,7 @@ x_set_tool_bar_lines (struct frame *f, Lisp_Object value, Lisp_Object oldval)
FRAME_TOOL_BAR_LINES (f) = nlines;
resize_frame_windows (f, FRAME_LINES (f), 0);
- adjust_glyphs (f);
+ adjust_frame_glyphs (f);
/* We also have to make sure that the internal border at the top of
the frame, below the menu bar or tool bar, is redrawn when the
@@ -1301,7 +1121,7 @@ x_set_tool_bar_lines (struct frame *f, Lisp_Object value, Lisp_Object oldval)
}
run_window_configuration_change_hook (f);
-
+#endif /* USE_GTK */
}
@@ -1486,7 +1306,7 @@ x_set_name_internal (struct frame *f, Lisp_Object name)
text.value = x_encode_text (name, coding_system, 0, &bytes, &stringp,
&do_free_text_value);
text.encoding = (stringp ? XA_STRING
- : FRAME_X_DISPLAY_INFO (f)->Xatom_COMPOUND_TEXT);
+ : FRAME_DISPLAY_INFO (f)->Xatom_COMPOUND_TEXT);
text.format = 8;
text.nitems = bytes;
if (text.nitems != bytes)
@@ -1503,7 +1323,7 @@ x_set_name_internal (struct frame *f, Lisp_Object name)
icon.value = x_encode_text (f->icon_name, coding_system, 0,
&bytes, &stringp, &do_free_icon_value);
icon.encoding = (stringp ? XA_STRING
- : FRAME_X_DISPLAY_INFO (f)->Xatom_COMPOUND_TEXT);
+ : FRAME_DISPLAY_INFO (f)->Xatom_COMPOUND_TEXT);
icon.format = 8;
icon.nitems = bytes;
if (icon.nitems != bytes)
@@ -1518,8 +1338,8 @@ x_set_name_internal (struct frame *f, Lisp_Object name)
#else /* not USE_GTK */
XSetWMName (FRAME_X_DISPLAY (f), FRAME_OUTER_WINDOW (f), &text);
XChangeProperty (FRAME_X_DISPLAY (f), FRAME_OUTER_WINDOW (f),
- FRAME_X_DISPLAY_INFO (f)->Xatom_net_wm_name,
- FRAME_X_DISPLAY_INFO (f)->Xatom_UTF8_STRING,
+ FRAME_DISPLAY_INFO (f)->Xatom_net_wm_name,
+ FRAME_DISPLAY_INFO (f)->Xatom_UTF8_STRING,
8, PropModeReplace,
SDATA (encoded_name),
SBYTES (encoded_name));
@@ -1527,8 +1347,8 @@ x_set_name_internal (struct frame *f, Lisp_Object name)
XSetWMIconName (FRAME_X_DISPLAY (f), FRAME_OUTER_WINDOW (f), &icon);
XChangeProperty (FRAME_X_DISPLAY (f), FRAME_OUTER_WINDOW (f),
- FRAME_X_DISPLAY_INFO (f)->Xatom_net_wm_icon_name,
- FRAME_X_DISPLAY_INFO (f)->Xatom_UTF8_STRING,
+ FRAME_DISPLAY_INFO (f)->Xatom_net_wm_icon_name,
+ FRAME_DISPLAY_INFO (f)->Xatom_UTF8_STRING,
8, PropModeReplace,
SDATA (encoded_icon_name),
SBYTES (encoded_icon_name));
@@ -1575,10 +1395,10 @@ x_set_name (struct frame *f, Lisp_Object name, int explicit)
{
/* Check for no change needed in this very common case
before we do any consing. */
- if (!strcmp (FRAME_X_DISPLAY_INFO (f)->x_id_name,
+ if (!strcmp (FRAME_DISPLAY_INFO (f)->x_id_name,
SSDATA (f->name)))
return;
- name = build_string (FRAME_X_DISPLAY_INFO (f)->x_id_name);
+ name = build_string (FRAME_DISPLAY_INFO (f)->x_id_name);
}
else
CHECK_STRING (name);
@@ -1648,9 +1468,8 @@ x_set_scroll_bar_default_width (struct frame *f)
int minw = 16;
#endif
/* A minimum width of 14 doesn't look good for toolkit scroll bars. */
- int width = minw + 2 * VERTICAL_SCROLL_BAR_WIDTH_TRIM;
- FRAME_CONFIG_SCROLL_BAR_COLS (f) = (width + wid - 1) / wid;
- FRAME_CONFIG_SCROLL_BAR_WIDTH (f) = width;
+ FRAME_CONFIG_SCROLL_BAR_COLS (f) = (minw + wid - 1) / wid;
+ FRAME_CONFIG_SCROLL_BAR_WIDTH (f) = minw;
#else
/* Make the actual width at least 14 pixels and a multiple of a
character width. */
@@ -1674,7 +1493,7 @@ x_default_scroll_bar_color_parameter (struct frame *f,
const char *xprop, const char *xclass,
int foreground_p)
{
- struct x_display_info *dpyinfo = FRAME_X_DISPLAY_INFO (f);
+ struct x_display_info *dpyinfo = FRAME_DISPLAY_INFO (f);
Lisp_Object tem;
tem = x_get_arg (dpyinfo, alist, prop, xprop, xclass, RES_TYPE_STRING);
@@ -1740,7 +1559,7 @@ hack_wm_protocols (struct frame *f, Widget widget)
unsigned long bytes_after;
if ((XGetWindowProperty (dpy, w,
- FRAME_X_DISPLAY_INFO (f)->Xatom_wm_protocols,
+ FRAME_DISPLAY_INFO (f)->Xatom_wm_protocols,
(long)0, (long)100, False, XA_ATOM,
&type, &format, &nitems, &bytes_after,
&catoms)
@@ -1752,13 +1571,13 @@ hack_wm_protocols (struct frame *f, Widget widget)
{
nitems--;
if (atoms[nitems]
- == FRAME_X_DISPLAY_INFO (f)->Xatom_wm_delete_window)
+ == FRAME_DISPLAY_INFO (f)->Xatom_wm_delete_window)
need_delete = 0;
else if (atoms[nitems]
- == FRAME_X_DISPLAY_INFO (f)->Xatom_wm_take_focus)
+ == FRAME_DISPLAY_INFO (f)->Xatom_wm_take_focus)
need_focus = 0;
else if (atoms[nitems]
- == FRAME_X_DISPLAY_INFO (f)->Xatom_wm_save_yourself)
+ == FRAME_DISPLAY_INFO (f)->Xatom_wm_save_yourself)
need_save = 0;
}
}
@@ -1769,13 +1588,13 @@ hack_wm_protocols (struct frame *f, Widget widget)
Atom props [10];
int count = 0;
if (need_delete)
- props[count++] = FRAME_X_DISPLAY_INFO (f)->Xatom_wm_delete_window;
+ props[count++] = FRAME_DISPLAY_INFO (f)->Xatom_wm_delete_window;
if (need_focus)
- props[count++] = FRAME_X_DISPLAY_INFO (f)->Xatom_wm_take_focus;
+ props[count++] = FRAME_DISPLAY_INFO (f)->Xatom_wm_take_focus;
if (need_save)
- props[count++] = FRAME_X_DISPLAY_INFO (f)->Xatom_wm_save_yourself;
+ props[count++] = FRAME_DISPLAY_INFO (f)->Xatom_wm_save_yourself;
if (count)
- XChangeProperty (dpy, w, FRAME_X_DISPLAY_INFO (f)->Xatom_wm_protocols,
+ XChangeProperty (dpy, w, FRAME_DISPLAY_INFO (f)->Xatom_wm_protocols,
XA_ATOM, 32, PropModeAppend,
(unsigned char *) props, count);
}
@@ -1970,7 +1789,7 @@ xic_create_xfontset (struct frame *f)
struct frame *cf = XFRAME (frame);
if (cf != f && FRAME_LIVE_P (f) && FRAME_X_P (cf)
- && FRAME_X_DISPLAY_INFO (cf) == FRAME_X_DISPLAY_INFO (f)
+ && FRAME_DISPLAY_INFO (cf) == FRAME_DISPLAY_INFO (f)
&& FRAME_FONT (f)
&& FRAME_FONT (f)->pixel_size == pixel_size)
{
@@ -2069,7 +1888,7 @@ xic_free_xfontset (struct frame *f)
{
struct frame *cf = XFRAME (frame);
if (cf != f && FRAME_LIVE_P (f) && FRAME_X_P (cf)
- && FRAME_X_DISPLAY_INFO (cf) == FRAME_X_DISPLAY_INFO (f)
+ && FRAME_DISPLAY_INFO (cf) == FRAME_DISPLAY_INFO (f)
&& FRAME_XIC_FONTSET (cf) == FRAME_XIC_FONTSET (f))
{
shared_p = 1;
@@ -2314,7 +2133,7 @@ x_window (struct frame *f, long window_prompting, int minibuffer_only)
XtSetArg (al[ac], XtNmappedWhenManaged, 0); ac++;
XtSetArg (al[ac], XtNborderWidth, f->border_width); ac++;
XtSetArg (al[ac], XtNvisual, FRAME_X_VISUAL (f)); ac++;
- XtSetArg (al[ac], XtNdepth, FRAME_X_DISPLAY_INFO (f)->n_planes); ac++;
+ XtSetArg (al[ac], XtNdepth, FRAME_DISPLAY_INFO (f)->n_planes); ac++;
XtSetArg (al[ac], XtNcolormap, FRAME_X_COLORMAP (f)); ac++;
shell_widget = XtAppCreateShell (f->namebuf, EMACS_CLASS,
applicationShellWidgetClass,
@@ -2329,7 +2148,7 @@ x_window (struct frame *f, long window_prompting, int minibuffer_only)
ac = 0;
XtSetArg (al[ac], XtNvisual, FRAME_X_VISUAL (f)); ac++;
- XtSetArg (al[ac], XtNdepth, FRAME_X_DISPLAY_INFO (f)->n_planes); ac++;
+ XtSetArg (al[ac], XtNdepth, FRAME_DISPLAY_INFO (f)->n_planes); ac++;
XtSetArg (al[ac], XtNcolormap, FRAME_X_COLORMAP (f)); ac++;
XtSetArg (al[ac], XtNborderWidth, 0); ac++;
XtSetValues (pane_widget, al, ac);
@@ -2345,7 +2164,7 @@ x_window (struct frame *f, long window_prompting, int minibuffer_only)
XtSetArg (al[ac], XtNresizeToPreferred, 1); ac++;
XtSetArg (al[ac], XtNemacsFrame, f); ac++;
XtSetArg (al[ac], XtNvisual, FRAME_X_VISUAL (f)); ac++;
- XtSetArg (al[ac], XtNdepth, FRAME_X_DISPLAY_INFO (f)->n_planes); ac++;
+ XtSetArg (al[ac], XtNdepth, FRAME_DISPLAY_INFO (f)->n_planes); ac++;
XtSetArg (al[ac], XtNcolormap, FRAME_X_COLORMAP (f)); ac++;
XtSetArg (al[ac], XtNborderWidth, 0); ac++;
frame_widget = XtCreateWidget (f->namebuf, emacsFrameClass, pane_widget,
@@ -2471,7 +2290,7 @@ x_window (struct frame *f, long window_prompting, int minibuffer_only)
be initialized to something relevant to the time we created the window.
*/
XChangeProperty (XtDisplay (frame_widget), XtWindow (frame_widget),
- FRAME_X_DISPLAY_INFO (f)->Xatom_wm_protocols,
+ FRAME_DISPLAY_INFO (f)->Xatom_wm_protocols,
XA_ATOM, 32, PropModeAppend, NULL, 0);
/* Make all the standard events reach the Emacs frame. */
@@ -2631,8 +2450,8 @@ x_window (struct frame *f)
/* Request "save yourself" and "delete window" commands from wm. */
{
Atom protocols[2];
- protocols[0] = FRAME_X_DISPLAY_INFO (f)->Xatom_wm_delete_window;
- protocols[1] = FRAME_X_DISPLAY_INFO (f)->Xatom_wm_save_yourself;
+ protocols[0] = FRAME_DISPLAY_INFO (f)->Xatom_wm_delete_window;
+ protocols[1] = FRAME_DISPLAY_INFO (f)->Xatom_wm_save_yourself;
XSetWMProtocols (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), protocols, 2);
}
@@ -2692,7 +2511,7 @@ x_icon (struct frame *f, Lisp_Object parms)
{
Lisp_Object icon_x, icon_y;
#if 0
- struct x_display_info *dpyinfo = FRAME_X_DISPLAY_INFO (f);
+ struct x_display_info *dpyinfo = FRAME_DISPLAY_INFO (f);
#endif
/* Set the position of the icon. Note that twm groups all
@@ -2776,7 +2595,7 @@ x_make_gc (struct frame *f)
this must be done on a per-frame basis. */
f->output_data.x->border_tile
= (XCreatePixmapFromBitmapData
- (FRAME_X_DISPLAY (f), FRAME_X_DISPLAY_INFO (f)->root_window,
+ (FRAME_X_DISPLAY (f), FRAME_DISPLAY_INFO (f)->root_window,
gray_bits, gray_width, gray_height,
FRAME_FOREGROUND_PIXEL (f),
FRAME_BACKGROUND_PIXEL (f),
@@ -2842,7 +2661,7 @@ unwind_create_frame (Lisp_Object frame)
if (NILP (Fmemq (frame, Vframe_list)))
{
#if defined GLYPH_DEBUG && defined ENABLE_CHECKING
- struct x_display_info *dpyinfo = FRAME_X_DISPLAY_INFO (f);
+ struct x_display_info *dpyinfo = FRAME_DISPLAY_INFO (f);
#endif
x_free_frame_resources (f);
@@ -2874,7 +2693,7 @@ unwind_create_frame_1 (Lisp_Object val)
static void
x_default_font_parameter (struct frame *f, Lisp_Object parms)
{
- struct x_display_info *dpyinfo = FRAME_X_DISPLAY_INFO (f);
+ struct x_display_info *dpyinfo = FRAME_DISPLAY_INFO (f);
Lisp_Object font_param = x_get_arg (dpyinfo, parms, Qfont, NULL, NULL,
RES_TYPE_STRING);
Lisp_Object font = Qnil;
@@ -3068,9 +2887,9 @@ This function is an internal primitive--use `make-frame' instead. */)
if (! STRINGP (f->icon_name))
fset_icon_name (f, Qnil);
- FRAME_X_DISPLAY_INFO (f) = dpyinfo;
+ FRAME_DISPLAY_INFO (f) = dpyinfo;
- /* With FRAME_X_DISPLAY_INFO set up, this unwind-protect is safe. */
+ /* With FRAME_DISPLAY_INFO set up, this unwind-protect is safe. */
record_unwind_protect (do_unwind_create_frame, frame);
/* These colors will be set anyway later, but it's important
@@ -3115,7 +2934,7 @@ This function is an internal primitive--use `make-frame' instead. */)
}
else
{
- f->output_data.x->parent_desc = FRAME_X_DISPLAY_INFO (f)->root_window;
+ f->output_data.x->parent_desc = FRAME_DISPLAY_INFO (f)->root_window;
f->output_data.x->explicit_parent = 0;
}
@@ -3286,7 +3105,7 @@ This function is an internal primitive--use `make-frame' instead. */)
/* Now consider the frame official. */
f->terminal->reference_count++;
- FRAME_X_DISPLAY_INFO (f)->reference_count++;
+ FRAME_DISPLAY_INFO (f)->reference_count++;
Vframe_list = Fcons (frame, Vframe_list);
/* We need to do this after creating the X window, so that the
@@ -3411,7 +3230,7 @@ This function is an internal primitive--use `make-frame' instead. */)
Lisp_Object
x_get_focus_frame (struct frame *frame)
{
- struct x_display_info *dpyinfo = FRAME_X_DISPLAY_INFO (frame);
+ struct x_display_info *dpyinfo = FRAME_DISPLAY_INFO (frame);
Lisp_Object xfocus;
if (! dpyinfo->x_focus_frame)
return Qnil;
@@ -3430,12 +3249,9 @@ x_get_focus_frame (struct frame *frame)
policy. But I think it's okay to use when it's clearly done
following a user-command. */
-DEFUN ("x-focus-frame", Fx_focus_frame, Sx_focus_frame, 1, 1, 0,
- doc: /* Set the input focus to FRAME.
-FRAME nil means use the selected frame. */)
- (Lisp_Object frame)
+void
+x_focus_frame (struct frame *f)
{
- struct frame *f = decode_window_system_frame (frame);
Display *dpy = FRAME_X_DISPLAY (f);
block_input ();
@@ -3457,8 +3273,6 @@ FRAME nil means use the selected frame. */)
x_uncatch_errors ();
unblock_input ();
-
- return Qnil;
}
@@ -3939,7 +3753,7 @@ x_make_monitor_attribute_list (struct MonitorInfo *monitors,
{
struct frame *f = XFRAME (frame);
- if (FRAME_X_P (f) && FRAME_X_DISPLAY_INFO (f) == dpyinfo
+ if (FRAME_X_P (f) && FRAME_DISPLAY_INFO (f) == dpyinfo
&& !EQ (frame, tip_frame))
{
int i = x_get_monitor_for_frame (f, monitors, n_monitors);
@@ -4135,6 +3949,8 @@ x_get_monitor_attributes (struct x_display_info *dpyinfo)
Lisp_Object attributes_list = Qnil;
Display *dpy = dpyinfo->display;
+ (void) dpy; /* Suppress unused variable warning. */
+
#ifdef HAVE_XRANDR
int xrr_event_base, xrr_error_base;
bool xrr_ok = false;
@@ -4219,7 +4035,7 @@ Internal use only, use `display-monitor-attributes-list' instead. */)
{
struct frame *f = XFRAME (frame);
- if (FRAME_X_P (f) && FRAME_X_DISPLAY_INFO (f) == dpyinfo
+ if (FRAME_X_P (f) && FRAME_DISPLAY_INFO (f) == dpyinfo
&& !EQ (frame, tip_frame))
{
GdkWindow *gwin = gtk_widget_get_window (FRAME_GTK_WIDGET (f));
@@ -4431,11 +4247,6 @@ x_display_info_for_name (Lisp_Object name)
CHECK_STRING (name);
-#if 0
- if (! EQ (Vinitial_window_system, intern ("x")))
- error ("Not using X Windows"); /* That doesn't stop us anymore. */
-#endif
-
for (dpyinfo = x_display_list, names = x_display_name_list;
dpyinfo;
dpyinfo = dpyinfo->next, names = XCDR (names))
@@ -4479,11 +4290,6 @@ terminate Emacs if we can't open the connection.
if (! NILP (xrm_string))
CHECK_STRING (xrm_string);
-#if 0
- if (! EQ (Vinitial_window_system, intern ("x")))
- error ("Not using X Windows"); /* That doesn't stop us anymore. */
-#endif
-
xrm_option = NILP (xrm_string) ? 0 : SSDATA (xrm_string);
validate_x_resource_name ();
@@ -4730,7 +4536,7 @@ no value of TYPE (always string in the MS Windows case). */)
{
CONS_TO_INTEGER (source, Window, target_window);
if (! target_window)
- target_window = FRAME_X_DISPLAY_INFO (f)->root_window;
+ target_window = FRAME_DISPLAY_INFO (f)->root_window;
}
block_input ();
@@ -5026,8 +4832,8 @@ x_create_tip_frame (struct x_display_info *dpyinfo,
f->output_data.x->scroll_bar_bottom_shadow_pixel = -1;
#endif /* USE_TOOLKIT_SCROLL_BARS */
fset_icon_name (f, Qnil);
- FRAME_X_DISPLAY_INFO (f) = dpyinfo;
- f->output_data.x->parent_desc = FRAME_X_DISPLAY_INFO (f)->root_window;
+ FRAME_DISPLAY_INFO (f) = dpyinfo;
+ f->output_data.x->parent_desc = FRAME_DISPLAY_INFO (f)->root_window;
f->output_data.x->explicit_parent = 0;
/* These colors will be set anyway later, but it's important
@@ -5141,14 +4947,14 @@ x_create_tip_frame (struct x_display_info *dpyinfo,
happen. */
init_frame_faces (f);
- f->output_data.x->parent_desc = FRAME_X_DISPLAY_INFO (f)->root_window;
+ f->output_data.x->parent_desc = FRAME_DISPLAY_INFO (f)->root_window;
x_figure_window_size (f, parms, 0);
{
XSetWindowAttributes attrs;
unsigned long mask;
- Atom type = FRAME_X_DISPLAY_INFO (f)->Xatom_net_window_type_tooltip;
+ Atom type = FRAME_DISPLAY_INFO (f)->Xatom_net_window_type_tooltip;
block_input ();
mask = CWBackPixel | CWOverrideRedirect | CWEventMask;
@@ -5166,7 +4972,7 @@ x_create_tip_frame (struct x_display_info *dpyinfo,
tip_window
= FRAME_X_WINDOW (f)
= XCreateWindow (FRAME_X_DISPLAY (f),
- FRAME_X_DISPLAY_INFO (f)->root_window,
+ FRAME_DISPLAY_INFO (f)->root_window,
/* x, y, width, height */
0, 0, 1, 1,
/* Border. */
@@ -5174,7 +4980,7 @@ x_create_tip_frame (struct x_display_info *dpyinfo,
CopyFromParent, InputOutput, CopyFromParent,
mask, &attrs);
XChangeProperty (FRAME_X_DISPLAY (f), tip_window,
- FRAME_X_DISPLAY_INFO (f)->Xatom_net_window_type,
+ FRAME_DISPLAY_INFO (f)->Xatom_net_window_type,
XA_ATOM, 32, PropModeReplace,
(unsigned char *)&type, 1);
unblock_input ();
@@ -5209,10 +5015,10 @@ x_create_tip_frame (struct x_display_info *dpyinfo,
{
Lisp_Object disptype;
- if (FRAME_X_DISPLAY_INFO (f)->n_planes == 1)
+ if (FRAME_DISPLAY_INFO (f)->n_planes == 1)
disptype = intern ("mono");
- else if (FRAME_X_DISPLAY_INFO (f)->visual->class == GrayScale
- || FRAME_X_DISPLAY_INFO (f)->visual->class == StaticGray)
+ else if (FRAME_DISPLAY_INFO (f)->visual->class == GrayScale
+ || FRAME_DISPLAY_INFO (f)->visual->class == StaticGray)
disptype = intern ("grayscale");
else
disptype = intern ("color");
@@ -5246,7 +5052,7 @@ x_create_tip_frame (struct x_display_info *dpyinfo,
/* Now that the frame will be official, it counts as a reference to
its display and terminal. */
- FRAME_X_DISPLAY_INFO (f)->reference_count++;
+ FRAME_DISPLAY_INFO (f)->reference_count++;
f->terminal->reference_count++;
/* It is now ok to make the frame official even if we get an error
@@ -5290,7 +5096,7 @@ compute_tip_xy (struct frame *f, Lisp_Object parms, Lisp_Object dx, Lisp_Object
if (!INTEGERP (left) || !INTEGERP (top))
{
block_input ();
- XQueryPointer (FRAME_X_DISPLAY (f), FRAME_X_DISPLAY_INFO (f)->root_window,
+ XQueryPointer (FRAME_X_DISPLAY (f), FRAME_DISPLAY_INFO (f)->root_window,
&root, &child, root_x, root_y, &win_x, &win_y, &pmask);
unblock_input ();
}
@@ -5300,7 +5106,7 @@ compute_tip_xy (struct frame *f, Lisp_Object parms, Lisp_Object dx, Lisp_Object
else if (*root_y + XINT (dy) <= 0)
*root_y = 0; /* Can happen for negative dy */
else if (*root_y + XINT (dy) + height
- <= x_display_pixel_height (FRAME_X_DISPLAY_INFO (f)))
+ <= x_display_pixel_height (FRAME_DISPLAY_INFO (f)))
/* It fits below the pointer */
*root_y += XINT (dy);
else if (height + XINT (dy) <= *root_y)
@@ -5315,7 +5121,7 @@ compute_tip_xy (struct frame *f, Lisp_Object parms, Lisp_Object dx, Lisp_Object
else if (*root_x + XINT (dx) <= 0)
*root_x = 0; /* Can happen for negative dx */
else if (*root_x + XINT (dx) + width
- <= x_display_pixel_width (FRAME_X_DISPLAY_INFO (f)))
+ <= x_display_pixel_width (FRAME_DISPLAY_INFO (f)))
/* It fits to the right of the pointer. */
*root_x += XINT (dx);
else if (width + XINT (dx) <= *root_x)
@@ -5464,7 +5270,7 @@ Text larger than the specified size is clipped. */)
/* Create a frame for the tooltip, and record it in the global
variable tip_frame. */
- frame = x_create_tip_frame (FRAME_X_DISPLAY_INFO (f), parms, string);
+ frame = x_create_tip_frame (FRAME_DISPLAY_INFO (f), parms, string);
f = XFRAME (frame);
/* Set up the frame's root window. */
@@ -5486,7 +5292,7 @@ Text larger than the specified size is clipped. */)
}
FRAME_TOTAL_COLS (f) = w->total_cols;
- adjust_glyphs (f);
+ adjust_frame_glyphs (f);
w->pseudo_window_p = 1;
/* Display the tooltip text in a temporary buffer. */
@@ -5554,7 +5360,7 @@ Text larger than the specified size is clipped. */)
width /= WINDOW_FRAME_COLUMN_WIDTH (w);
w->total_cols = width;
FRAME_TOTAL_COLS (f) = width;
- adjust_glyphs (f);
+ adjust_frame_glyphs (f);
clear_glyph_matrix (w->desired_matrix);
clear_glyph_matrix (w->current_matrix);
try_window (FRAME_ROOT_WINDOW (f), pos, 0);
@@ -5664,7 +5470,7 @@ Value is t if tooltip was open, nil otherwise. */)
struct frame *f = SELECTED_FRAME ();
w = f->output_data.x->menubar_widget;
- if (!DoesSaveUnders (FRAME_X_DISPLAY_INFO (f)->screen)
+ if (!DoesSaveUnders (FRAME_DISPLAY_INFO (f)->screen)
&& w != NULL)
{
block_input ();
@@ -6296,7 +6102,8 @@ Otherwise use Emacs own tooltip implementation.
When using Gtk+ tooltips, the tooltip face is not used. */);
x_gtk_use_system_tooltips = 1;
- Fprovide (intern_c_string ("x"), Qnil);
+ /* Tell Emacs about this window system. */
+ Fprovide (Qx, Qnil);
#ifdef USE_X_TOOLKIT
Fprovide (intern_c_string ("x-toolkit"), Qnil);
@@ -6357,7 +6164,6 @@ When using Gtk+ tooltips, the tooltip face is not used. */);
defsubr (&Sx_close_connection);
defsubr (&Sx_display_list);
defsubr (&Sx_synchronize);
- defsubr (&Sx_focus_frame);
defsubr (&Sx_backspace_delete_keys_p);
defsubr (&Sx_show_tip);
@@ -6379,5 +6185,3 @@ When using Gtk+ tooltips, the tooltip face is not used. */);
defsubr (&Sx_select_font);
#endif
}
-
-#endif /* HAVE_X_WINDOWS */
diff --git a/src/xfont.c b/src/xfont.c
index 1aface6f972..c5b8db3830c 100644
--- a/src/xfont.c
+++ b/src/xfont.c
@@ -154,7 +154,7 @@ struct font_driver xfont_driver =
static Lisp_Object
xfont_get_cache (struct frame *f)
{
- Display_Info *dpyinfo = FRAME_X_DISPLAY_INFO (f);
+ Display_Info *dpyinfo = FRAME_DISPLAY_INFO (f);
return (dpyinfo->name_list_element);
}
@@ -384,7 +384,7 @@ xfont_list_pattern (Display *display, const char *pattern,
if (num_fonts > 0)
{
char **indices = alloca (sizeof (char *) * num_fonts);
- Lisp_Object *props = XVECTOR (xfont_scratch_props)->contents;
+ Lisp_Object *props = XVECTOR (xfont_scratch_props)->u.contents;
Lisp_Object scripts = Qnil;
for (i = 0; i < ASIZE (xfont_scratch_props); i++)
@@ -488,7 +488,7 @@ xfont_list_pattern (Display *display, const char *pattern,
static Lisp_Object
xfont_list (struct frame *f, Lisp_Object spec)
{
- Display *display = FRAME_X_DISPLAY_INFO (f)->display;
+ Display *display = FRAME_DISPLAY_INFO (f)->display;
Lisp_Object registry, list, val, extra, script;
int len;
/* Large enough to contain the longest XLFD (255 bytes) in UTF-8. */
@@ -566,7 +566,7 @@ xfont_list (struct frame *f, Lisp_Object spec)
static Lisp_Object
xfont_match (struct frame *f, Lisp_Object spec)
{
- Display *display = FRAME_X_DISPLAY_INFO (f)->display;
+ Display *display = FRAME_DISPLAY_INFO (f)->display;
Lisp_Object extra, val, entity;
char name[512];
XFontStruct *xfont;
@@ -620,7 +620,7 @@ xfont_match (struct frame *f, Lisp_Object spec)
static Lisp_Object
xfont_list_family (struct frame *f)
{
- Display_Info *dpyinfo = FRAME_X_DISPLAY_INFO (f);
+ Display_Info *dpyinfo = FRAME_DISPLAY_INFO (f);
char **names;
int num_fonts, i;
Lisp_Object list;
@@ -676,7 +676,7 @@ xfont_list_family (struct frame *f)
static Lisp_Object
xfont_open (struct frame *f, Lisp_Object entity, int pixel_size)
{
- Display_Info *dpyinfo = FRAME_X_DISPLAY_INFO (f);
+ Display_Info *dpyinfo = FRAME_DISPLAY_INFO (f);
Display *display = dpyinfo->display;
char name[512];
int len;
diff --git a/src/xmenu.c b/src/xmenu.c
index 5d1f44e0f5a..054a52e7760 100644
--- a/src/xmenu.c
+++ b/src/xmenu.c
@@ -498,7 +498,7 @@ If FRAME is nil or not given, use the selected frame. */)
memset (&ev, 0, sizeof ev);
ev.xbutton.display = FRAME_X_DISPLAY (f);
ev.xbutton.window = XtWindow (menubar);
- ev.xbutton.root = FRAME_X_DISPLAY_INFO (f)->root_window;
+ ev.xbutton.root = FRAME_DISPLAY_INFO (f)->root_window;
ev.xbutton.time = XtLastTimestampProcessed (FRAME_X_DISPLAY (f));
ev.xbutton.button = Button1;
ev.xbutton.x = ev.xbutton.y = FRAME_MENUBAR_HEIGHT (f) / 2;
@@ -990,7 +990,7 @@ set_frame_menubar (struct frame *f, bool first_time, bool deep_p)
/* Save the frame's previous menu bar contents data. */
if (previous_menu_items_used)
- memcpy (previous_items, XVECTOR (f->menu_bar_vector)->contents,
+ memcpy (previous_items, XVECTOR (f->menu_bar_vector)->u.contents,
previous_menu_items_used * word_size);
/* Fill in menu_items with the current menu bar contents.
@@ -1367,7 +1367,7 @@ menu_position_func (GtkMenu *menu, gint *x, gint *y, gboolean *push_in, gpointer
{
struct next_popup_x_y *data = user_data;
GtkRequisition req;
- struct x_display_info *dpyinfo = FRAME_X_DISPLAY_INFO (data->f);
+ struct x_display_info *dpyinfo = FRAME_DISPLAY_INFO (data->f);
int disp_width = x_display_pixel_width (dpyinfo);
int disp_height = x_display_pixel_height (dpyinfo);
@@ -1449,7 +1449,7 @@ create_and_show_popup_menu (struct frame *f, widget_value *first_wv, int x, int
if (for_click)
{
for (i = 0; i < 5; i++)
- if (FRAME_X_DISPLAY_INFO (f)->grabbed & (1 << i))
+ if (FRAME_DISPLAY_INFO (f)->grabbed & (1 << i))
break;
}
@@ -1474,7 +1474,7 @@ create_and_show_popup_menu (struct frame *f, widget_value *first_wv, int x, int
/* Must reset this manually because the button release event is not passed
to Emacs event loop. */
- FRAME_X_DISPLAY_INFO (f)->grabbed = 0;
+ FRAME_DISPLAY_INFO (f)->grabbed = 0;
}
#else /* not USE_GTK */
@@ -1543,7 +1543,7 @@ create_and_show_popup_menu (struct frame *f, widget_value *first_wv,
event->send_event = 0;
event->display = FRAME_X_DISPLAY (f);
event->time = CurrentTime;
- event->root = FRAME_X_DISPLAY_INFO (f)->root_window;
+ event->root = FRAME_DISPLAY_INFO (f)->root_window;
event->window = event->subwindow = event->root;
event->x = x;
event->y = y;
@@ -1558,7 +1558,7 @@ create_and_show_popup_menu (struct frame *f, widget_value *first_wv,
event->state = 0;
event->button = 0;
for (i = 0; i < 5; i++)
- if (FRAME_X_DISPLAY_INFO (f)->grabbed & (1 << i))
+ if (FRAME_DISPLAY_INFO (f)->grabbed & (1 << i))
event->button = i;
/* Don't allow any geometry request from the user. */
@@ -1578,7 +1578,7 @@ create_and_show_popup_menu (struct frame *f, widget_value *first_wv,
make_number (menu_id & ~(-1 << (fact)))));
/* Process events that apply to the menu. */
- popup_get_selection (0, FRAME_X_DISPLAY_INFO (f), menu_id, 1);
+ popup_get_selection (0, FRAME_DISPLAY_INFO (f), menu_id, 1);
unbind_to (specpdl_count, Qnil);
}
@@ -1969,7 +1969,7 @@ create_and_show_dialog (struct frame *f, widget_value *first_wv)
Fcons (make_number (dialog_id >> (fact)),
make_number (dialog_id & ~(-1 << (fact)))));
- popup_get_selection (0, FRAME_X_DISPLAY_INFO (f), dialog_id, 1);
+ popup_get_selection (0, FRAME_DISPLAY_INFO (f), dialog_id, 1);
unbind_to (count, Qnil);
}
@@ -2194,7 +2194,7 @@ menu_help_callback (char const *help_string, int pane, int item)
Lisp_Object pane_name;
Lisp_Object menu_object;
- first_item = XVECTOR (menu_items)->contents;
+ first_item = XVECTOR (menu_items)->u.contents;
if (EQ (first_item[0], Qt))
pane_name = first_item[MENU_ITEMS_PANE_NAME];
else if (EQ (first_item[0], Qquote))
@@ -2225,13 +2225,13 @@ pop_down_menu (Lisp_Object arg)
#ifdef HAVE_X_WINDOWS
/* Assume the mouse has moved out of the X window.
If it has actually moved in, we will get an EnterNotify. */
- x_mouse_leave (FRAME_X_DISPLAY_INFO (f));
+ x_mouse_leave (FRAME_DISPLAY_INFO (f));
/* State that no mouse buttons are now held.
(The oldXMenu code doesn't track this info for us.)
That is not necessarily true, but the fiction leads to reasonable
results, and it is a pain to ask which are actually held now. */
- FRAME_X_DISPLAY_INFO (f)->grabbed = 0;
+ FRAME_DISPLAY_INFO (f)->grabbed = 0;
#endif /* HAVE_X_WINDOWS */
diff --git a/src/xrdb.c b/src/xrdb.c
index 60dcdae080d..52988f0818a 100644
--- a/src/xrdb.c
+++ b/src/xrdb.c
@@ -48,10 +48,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include "keyboard.h"
#endif
-char *x_get_string_resource (XrmDatabase rdb, const char *name,
- const char *class);
-
-
/* X file search path processing. */
diff --git a/src/xselect.c b/src/xselect.c
index e5f2e214fba..5eb263d8d0c 100644
--- a/src/xselect.c
+++ b/src/xselect.c
@@ -318,7 +318,7 @@ x_own_selection (Lisp_Object selection_name, Lisp_Object selection_value,
{
struct frame *f = XFRAME (frame);
Window selecting_window = FRAME_X_WINDOW (f);
- struct x_display_info *dpyinfo = FRAME_X_DISPLAY_INFO (f);
+ struct x_display_info *dpyinfo = FRAME_DISPLAY_INFO (f);
Display *display = dpyinfo->display;
Time timestamp = last_event_timestamp;
Atom selection_atom = symbol_to_x_atom (dpyinfo, selection_name);
@@ -997,7 +997,7 @@ x_clear_frame_selections (struct frame *f)
{
Lisp_Object frame;
Lisp_Object rest;
- struct x_display_info *dpyinfo = FRAME_X_DISPLAY_INFO (f);
+ struct x_display_info *dpyinfo = FRAME_DISPLAY_INFO (f);
struct terminal *t = dpyinfo->terminal;
XSETFRAME (frame, f);
@@ -1141,7 +1141,7 @@ wait_for_property_change (struct prop_location *location)
/* Called from XTread_socket in response to a PropertyNotify event. */
void
-x_handle_property_notify (XPropertyEvent *event)
+x_handle_property_notify (const XPropertyEvent *event)
{
struct prop_location *rest;
@@ -1185,7 +1185,7 @@ x_get_foreign_selection (Lisp_Object selection_symbol, Lisp_Object target_type,
Lisp_Object time_stamp, Lisp_Object frame)
{
struct frame *f = XFRAME (frame);
- struct x_display_info *dpyinfo = FRAME_X_DISPLAY_INFO (f);
+ struct x_display_info *dpyinfo = FRAME_DISPLAY_INFO (f);
Display *display = dpyinfo->display;
Window requestor_window = FRAME_X_WINDOW (f);
Time requestor_time = last_event_timestamp;
@@ -1888,7 +1888,7 @@ clean_local_selection_data (Lisp_Object obj)
We store t there if the reply is successful, lambda if not. */
void
-x_handle_selection_notify (XSelectionEvent *event)
+x_handle_selection_notify (const XSelectionEvent *event)
{
if (event->requestor != reading_selection_window)
return;
@@ -2009,7 +2009,7 @@ On Nextstep, TIME-STAMP and TERMINAL are unused. */)
error ("X selection unavailable for this frame");
val = x_get_local_selection (selection_symbol, target_type, 1,
- FRAME_X_DISPLAY_INFO (f));
+ FRAME_DISPLAY_INFO (f));
if (NILP (val) && FRAME_LIVE_P (f))
{
@@ -2056,7 +2056,7 @@ On MS-DOS, all this does is return non-nil if we own the selection. */)
if (!f)
return Qnil;
- dpyinfo = FRAME_X_DISPLAY_INFO (f);
+ dpyinfo = FRAME_DISPLAY_INFO (f);
CHECK_SYMBOL (selection);
/* Don't disown the selection when we're not the owner. */
@@ -2108,7 +2108,7 @@ On Nextstep, TERMINAL is unused. */)
if (EQ (selection, Qnil)) selection = QPRIMARY;
if (EQ (selection, Qt)) selection = QSECONDARY;
- if (f && !NILP (LOCAL_SELECTION (selection, FRAME_X_DISPLAY_INFO (f))))
+ if (f && !NILP (LOCAL_SELECTION (selection, FRAME_DISPLAY_INFO (f))))
return Qt;
else
return Qnil;
@@ -2141,7 +2141,7 @@ On Nextstep, TERMINAL is unused. */)
if (!f)
return Qnil;
- dpyinfo = FRAME_X_DISPLAY_INFO (f);
+ dpyinfo = FRAME_DISPLAY_INFO (f);
if (!NILP (LOCAL_SELECTION (selection, dpyinfo)))
return Qt;
@@ -2162,7 +2162,7 @@ static Lisp_Object
x_clipboard_manager_save (Lisp_Object frame)
{
struct frame *f = XFRAME (frame);
- struct x_display_info *dpyinfo = FRAME_X_DISPLAY_INFO (f);
+ struct x_display_info *dpyinfo = FRAME_DISPLAY_INFO (f);
Atom data = dpyinfo->Xatom_UTF8_STRING;
XChangeProperty (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f),
@@ -2212,7 +2212,7 @@ x_clipboard_manager_save_frame (Lisp_Object frame)
&& (f = XFRAME (frame), FRAME_X_P (f))
&& FRAME_LIVE_P (f))
{
- struct x_display_info *dpyinfo = FRAME_X_DISPLAY_INFO (f);
+ struct x_display_info *dpyinfo = FRAME_DISPLAY_INFO (f);
Lisp_Object local_selection
= LOCAL_SELECTION (QCLIPBOARD, dpyinfo);
@@ -2458,7 +2458,7 @@ FRAME is on. If FRAME is nil, the selected frame is used. */)
Atom x_atom;
struct frame *f = decode_window_system_frame (frame);
ptrdiff_t i;
- struct x_display_info *dpyinfo = FRAME_X_DISPLAY_INFO (f);
+ struct x_display_info *dpyinfo = FRAME_DISPLAY_INFO (f);
if (SYMBOLP (atom))
@@ -2488,7 +2488,7 @@ FRAME is on. If FRAME is nil, the selected frame is used. */)
/* Convert an XClientMessageEvent to a Lisp event of type DRAG_N_DROP_EVENT. */
int
-x_handle_dnd_message (struct frame *f, XClientMessageEvent *event,
+x_handle_dnd_message (struct frame *f, const XClientMessageEvent *event,
struct x_display_info *dpyinfo, struct input_event *bufp)
{
Lisp_Object vec;
diff --git a/src/xsettings.c b/src/xsettings.c
index b5d5f4db59b..8fe82fec74b 100644
--- a/src/xsettings.c
+++ b/src/xsettings.c
@@ -336,9 +336,6 @@ get_prop_window (struct x_display_info *dpyinfo)
XUngrabServer (dpy);
}
-#define SWAP32(nr) (((nr) << 24) | (((nr) << 8) & 0xff0000) \
- | (((nr) >> 8) & 0xff00) | ((nr) >> 24))
-#define SWAP16(nr) (((nr) << 8) | ((nr) >> 8))
#define PAD(nr) (((nr) + 3) & ~3)
/* Parse xsettings and extract those that deal with Xft.
@@ -408,7 +405,7 @@ parse_settings (unsigned char *prop,
if (bytes < 12) return BadLength;
memcpy (&n_settings, prop+8, 4);
- if (my_bo != that_bo) n_settings = SWAP32 (n_settings);
+ if (my_bo != that_bo) n_settings = swap32 (n_settings);
bytes_parsed = 12;
memset (settings, 0, sizeof (*settings));
@@ -430,7 +427,7 @@ parse_settings (unsigned char *prop,
memcpy (&nlen, prop+bytes_parsed, 2);
bytes_parsed += 2;
- if (my_bo != that_bo) nlen = SWAP16 (nlen);
+ if (my_bo != that_bo) nlen = swap16 (nlen);
if (bytes_parsed+nlen > bytes) return BadLength;
to_cpy = nlen > 127 ? 127 : nlen;
memcpy (name, prop+bytes_parsed, to_cpy);
@@ -457,7 +454,7 @@ parse_settings (unsigned char *prop,
if (want_this)
{
memcpy (&ival, prop+bytes_parsed, 4);
- if (my_bo != that_bo) ival = SWAP32 (ival);
+ if (my_bo != that_bo) ival = swap32 (ival);
}
bytes_parsed += 4;
break;
@@ -466,7 +463,7 @@ parse_settings (unsigned char *prop,
if (bytes_parsed+4 > bytes) return BadLength;
memcpy (&vlen, prop+bytes_parsed, 4);
bytes_parsed += 4;
- if (my_bo != that_bo) vlen = SWAP32 (vlen);
+ if (my_bo != that_bo) vlen = swap32 (vlen);
if (want_this)
{
to_cpy = vlen > 127 ? 127 : vlen;
@@ -754,7 +751,7 @@ read_and_apply_settings (struct x_display_info *dpyinfo, int send_event_p)
/* Check if EVENT for the display in DPYINFO is XSettings related. */
void
-xft_settings_event (struct x_display_info *dpyinfo, XEvent *event)
+xft_settings_event (struct x_display_info *dpyinfo, const XEvent *event)
{
bool check_window_p = 0, apply_settings_p = 0;
@@ -803,7 +800,7 @@ init_gsettings (void)
const gchar *const *schemas;
int schema_found = 0;
-#ifdef HAVE_G_TYPE_INIT
+#if ! GLIB_CHECK_VERSION (2, 36, 0)
g_type_init ();
#endif
@@ -860,7 +857,7 @@ init_gconf (void)
#if defined (HAVE_GCONF)
char *s;
-#ifdef HAVE_G_TYPE_INIT
+#if ! GLIB_CHECK_VERSION (2, 36, 0)
g_type_init ();
#endif
diff --git a/src/xsettings.h b/src/xsettings.h
index e3738c593bd..a017c5d92d8 100644
--- a/src/xsettings.h
+++ b/src/xsettings.h
@@ -20,9 +20,8 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#ifndef XSETTINGS_H
#define XSETTINGS_H
-extern void xsettings_initialize (struct x_display_info *dpyinfo);
-extern void xft_settings_event (struct x_display_info *dpyinfo,
- XEvent *);
+extern void xsettings_initialize (struct x_display_info *);
+extern void xft_settings_event (struct x_display_info *, const XEvent *);
extern const char *xsettings_get_system_font (void);
#ifdef USE_LUCID
extern const char *xsettings_get_system_normal_font (void);
diff --git a/src/xterm.c b/src/xterm.c
index 2f3d5ca7a01..1ccc1ae649b 100644
--- a/src/xterm.c
+++ b/src/xterm.c
@@ -23,8 +23,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include <config.h>
#include <stdio.h>
-#ifdef HAVE_X_WINDOWS
-
#include "lisp.h"
#include "blockinput.h"
#include "syssignal.h"
@@ -86,7 +84,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#endif
#endif
-#ifdef USE_LUCID
+#if defined (USE_LUCID) || defined (USE_MOTIF)
#include "../lwlib/xlwmenu.h"
#endif
@@ -157,82 +155,22 @@ struct x_display_info *x_display_list;
Lisp_Object x_display_name_list;
-/* This is a frame waiting to be auto-raised, within XTread_socket. */
-
-static struct frame *pending_autoraise_frame;
-
-/* This is a frame waiting for an event matching mask, within XTread_socket. */
-
-static struct {
- struct frame *f;
- int eventtype;
-} pending_event_wait;
-
#ifdef USE_X_TOOLKIT
+
/* The application context for Xt use. */
XtAppContext Xt_app_con;
static String Xt_default_resources[] = {0};
/* Non-zero means user is interacting with a toolkit scroll bar. */
+static bool toolkit_scroll_bar_interaction;
-static int toolkit_scroll_bar_interaction;
#endif /* USE_X_TOOLKIT */
/* Non-zero timeout value means ignore next mouse click if it arrives
before that timeout elapses (i.e. as part of the same sequence of
events resulting from clicking on a frame to select it). */
-static unsigned long ignore_next_mouse_click_timeout;
-
-/* Mouse movement.
-
- Formerly, we used PointerMotionHintMask (in standard_event_mask)
- so that we would have to call XQueryPointer after each MotionNotify
- event to ask for another such event. However, this made mouse tracking
- slow, and there was a bug that made it eventually stop.
-
- Simply asking for MotionNotify all the time seems to work better.
-
- In order to avoid asking for motion events and then throwing most
- of them away or busy-polling the server for mouse positions, we ask
- the server for pointer motion hints. This means that we get only
- one event per group of mouse movements. "Groups" are delimited by
- other kinds of events (focus changes and button clicks, for
- example), or by XQueryPointer calls; when one of these happens, we
- get another MotionNotify event the next time the mouse moves. This
- is at least as efficient as getting motion events when mouse
- tracking is on, and I suspect only negligibly worse when tracking
- is off. */
-
-/* Where the mouse was last time we reported a mouse event. */
-
-static XRectangle last_mouse_glyph;
-static struct frame *last_mouse_glyph_frame;
-
-/* The scroll bar in which the last X motion event occurred.
-
- If the last X motion event occurred in a scroll bar, we set this so
- XTmouse_position can know whether to report a scroll bar motion or
- an ordinary motion.
-
- If the last X motion event didn't occur in a scroll bar, we set
- this to Qnil, to tell XTmouse_position to return an ordinary motion
- event. */
-
-static Lisp_Object last_mouse_scroll_bar;
-
-/* This is a hack. We would really prefer that XTmouse_position would
- return the time associated with the position it returns, but there
- doesn't seem to be any way to wrest the time-stamp from the server
- along with the position query. So, we just keep track of the time
- of the last movement we received, and return that in hopes that
- it's somewhat accurate. */
-
-static Time last_mouse_movement_time;
-
-/* Time for last user interaction as returned in X events. */
-
-static Time last_user_time;
+static Time ignore_next_mouse_click_timeout;
/* Incremented by XTread_socket whenever it really tries to read
events. */
@@ -299,8 +237,6 @@ static void frame_unhighlight (struct frame *);
static void x_new_focus_frame (struct x_display_info *, struct frame *);
static void x_focus_changed (int, int, struct x_display_info *,
struct frame *, struct input_event *);
-static void x_detect_focus_change (struct x_display_info *,
- XEvent *, struct input_event *);
static void XTframe_rehighlight (struct frame *);
static void x_frame_rehighlight (struct x_display_info *);
static void x_draw_hollow_cursor (struct window *, struct glyph_row *);
@@ -317,12 +253,13 @@ static void x_scroll_bar_report_motion (struct frame **, Lisp_Object *,
enum scroll_bar_part *,
Lisp_Object *, Lisp_Object *,
Time *);
-static int x_handle_net_wm_state (struct frame *, XPropertyEvent *);
+static int x_handle_net_wm_state (struct frame *, const XPropertyEvent *);
static void x_check_fullscreen (struct frame *);
static void x_check_expected_move (struct frame *, int, int);
static void x_sync_with_move (struct frame *, int, int, int);
-static int handle_one_xevent (struct x_display_info *, XEvent *,
- int *, struct input_event *);
+static int handle_one_xevent (struct x_display_info *,
+ const XEvent *, int *,
+ struct input_event *);
#ifdef USE_GTK
static int x_dispatch_event (XEvent *, Display *);
#endif
@@ -334,29 +271,19 @@ static void x_wm_set_icon_pixmap (struct frame *, ptrdiff_t);
static void x_initialize (void);
-/* Flush display of frame F, or of all frames if F is null. */
+/* Flush display of frame F. */
static void
x_flush (struct frame *f)
{
+ eassert (f && FRAME_X_P (f));
/* Don't call XFlush when it is not safe to redisplay; the X
connection may be broken. */
if (!NILP (Vinhibit_redisplay))
return;
block_input ();
- if (f)
- {
- eassert (FRAME_X_P (f));
- XFlush (FRAME_X_DISPLAY (f));
- }
- else
- {
- /* Flush all displays and so all frames on them. */
- struct x_display_info *xdi;
- for (xdi = x_display_list; xdi; xdi = xdi->next)
- XFlush (xdi->display);
- }
+ XFlush (FRAME_X_DISPLAY (f));
unblock_input ();
}
@@ -426,7 +353,7 @@ x_find_topmost_parent (struct frame *f)
Window win = None, wi = x->parent_desc;
Display *dpy = FRAME_X_DISPLAY (f);
- while (wi != FRAME_X_DISPLAY_INFO (f)->root_window)
+ while (wi != FRAME_DISPLAY_INFO (f)->root_window)
{
Window root;
Window *children;
@@ -445,7 +372,7 @@ x_find_topmost_parent (struct frame *f)
void
x_set_frame_alpha (struct frame *f)
{
- struct x_display_info *dpyinfo = FRAME_X_DISPLAY_INFO (f);
+ struct x_display_info *dpyinfo = FRAME_DISPLAY_INFO (f);
Display *dpy = FRAME_X_DISPLAY (f);
Window win = FRAME_OUTER_WINDOW (f);
double alpha = 1.0;
@@ -802,7 +729,7 @@ x_draw_fringe_bitmap (struct window *w, struct glyph_row *row, struct draw_fring
if (p->overlay_p)
{
clipmask = XCreatePixmapFromBitmapData (display,
- FRAME_X_DISPLAY_INFO (f)->root_window,
+ FRAME_DISPLAY_INFO (f)->root_window,
bits, p->wd, p->h,
1, 0, 1);
gcv.clip_mask = clipmask;
@@ -906,14 +833,14 @@ x_set_cursor_gc (struct glyph_string *s)
xgcv.graphics_exposures = False;
mask = GCForeground | GCBackground | GCGraphicsExposures;
- if (FRAME_X_DISPLAY_INFO (s->f)->scratch_cursor_gc)
- XChangeGC (s->display, FRAME_X_DISPLAY_INFO (s->f)->scratch_cursor_gc,
+ if (FRAME_DISPLAY_INFO (s->f)->scratch_cursor_gc)
+ XChangeGC (s->display, FRAME_DISPLAY_INFO (s->f)->scratch_cursor_gc,
mask, &xgcv);
else
- FRAME_X_DISPLAY_INFO (s->f)->scratch_cursor_gc
+ FRAME_DISPLAY_INFO (s->f)->scratch_cursor_gc
= XCreateGC (s->display, s->window, mask, &xgcv);
- s->gc = FRAME_X_DISPLAY_INFO (s->f)->scratch_cursor_gc;
+ s->gc = FRAME_DISPLAY_INFO (s->f)->scratch_cursor_gc;
}
}
@@ -953,14 +880,14 @@ x_set_mouse_face_gc (struct glyph_string *s)
xgcv.graphics_exposures = False;
mask = GCForeground | GCBackground | GCGraphicsExposures;
- if (FRAME_X_DISPLAY_INFO (s->f)->scratch_cursor_gc)
- XChangeGC (s->display, FRAME_X_DISPLAY_INFO (s->f)->scratch_cursor_gc,
+ if (FRAME_DISPLAY_INFO (s->f)->scratch_cursor_gc)
+ XChangeGC (s->display, FRAME_DISPLAY_INFO (s->f)->scratch_cursor_gc,
mask, &xgcv);
else
- FRAME_X_DISPLAY_INFO (s->f)->scratch_cursor_gc
+ FRAME_DISPLAY_INFO (s->f)->scratch_cursor_gc
= XCreateGC (s->display, s->window, mask, &xgcv);
- s->gc = FRAME_X_DISPLAY_INFO (s->f)->scratch_cursor_gc;
+ s->gc = FRAME_DISPLAY_INFO (s->f)->scratch_cursor_gc;
}
eassert (s->gc != 0);
@@ -1396,7 +1323,7 @@ x_frame_of_widget (Widget widget)
f = XFRAME (frame);
if (FRAME_X_P (f)
&& f->output_data.nothing != 1
- && FRAME_X_DISPLAY_INFO (f) == dpyinfo
+ && FRAME_DISPLAY_INFO (f) == dpyinfo
&& f->output_data.x->widget == widget)
return f;
}
@@ -1605,7 +1532,7 @@ x_color_cells (Display *dpy, int *ncells)
void
x_query_colors (struct frame *f, XColor *colors, int ncolors)
{
- struct x_display_info *dpyinfo = FRAME_X_DISPLAY_INFO (f);
+ struct x_display_info *dpyinfo = FRAME_DISPLAY_INFO (f);
if (dpyinfo->color_cells)
{
@@ -1845,7 +1772,7 @@ x_setup_relief_color (struct frame *f, struct relief *relief, double factor, int
unsigned long pixel;
unsigned long background = di->relief_background;
Colormap cmap = FRAME_X_COLORMAP (f);
- struct x_display_info *dpyinfo = FRAME_X_DISPLAY_INFO (f);
+ struct x_display_info *dpyinfo = FRAME_DISPLAY_INFO (f);
Display *dpy = FRAME_X_DISPLAY (f);
xgcv.graphics_exposures = False;
@@ -3035,26 +2962,7 @@ XTflash (struct frame *f)
/* These will be the left and right margins of the rectangles. */
int flash_left = FRAME_INTERNAL_BORDER_WIDTH (f);
int flash_right = FRAME_PIXEL_WIDTH (f) - FRAME_INTERNAL_BORDER_WIDTH (f);
-
- int width;
-
- /* Don't flash the area between a scroll bar and the frame
- edge it is next to. */
- switch (FRAME_VERTICAL_SCROLL_BAR_TYPE (f))
- {
- case vertical_scroll_bar_left:
- flash_left += VERTICAL_SCROLL_BAR_WIDTH_TRIM;
- break;
-
- case vertical_scroll_bar_right:
- flash_right -= VERTICAL_SCROLL_BAR_WIDTH_TRIM;
- break;
-
- default:
- break;
- }
-
- width = flash_right - flash_left;
+ int width = flash_right - flash_left;
/* If window is tall, flash top and bottom line. */
if (height > 3 * FRAME_LINE_HEIGHT (f))
@@ -3146,9 +3054,9 @@ XTtoggle_invisible_pointer (struct frame *f, int invisible)
block_input ();
if (invisible)
{
- if (FRAME_X_DISPLAY_INFO (f)->invisible_cursor != 0)
+ if (FRAME_DISPLAY_INFO (f)->invisible_cursor != 0)
XDefineCursor (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f),
- FRAME_X_DISPLAY_INFO (f)->invisible_cursor);
+ FRAME_DISPLAY_INFO (f)->invisible_cursor);
}
else
XDefineCursor (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f),
@@ -3341,9 +3249,9 @@ x_new_focus_frame (struct x_display_info *dpyinfo, struct frame *frame)
x_lower_frame (old_focus);
if (dpyinfo->x_focus_frame && dpyinfo->x_focus_frame->auto_raise)
- pending_autoraise_frame = dpyinfo->x_focus_frame;
+ dpyinfo->x_pending_autoraise_frame = dpyinfo->x_focus_frame;
else
- pending_autoraise_frame = 0;
+ dpyinfo->x_pending_autoraise_frame = NULL;
}
x_frame_rehighlight (dpyinfo);
@@ -3403,18 +3311,192 @@ x_focus_changed (int type, int state, struct x_display_info *dpyinfo, struct fra
}
}
+/* Return the Emacs frame-object corresponding to an X window.
+ It could be the frame's main window or an icon window. */
+
+static struct frame *
+x_window_to_frame (struct x_display_info *dpyinfo, int wdesc)
+{
+ Lisp_Object tail, frame;
+ struct frame *f;
+
+ if (wdesc == None)
+ return NULL;
+
+ FOR_EACH_FRAME (tail, frame)
+ {
+ f = XFRAME (frame);
+ if (!FRAME_X_P (f) || FRAME_DISPLAY_INFO (f) != dpyinfo)
+ continue;
+ if (f->output_data.x->hourglass_window == wdesc)
+ return f;
+#ifdef USE_X_TOOLKIT
+ if ((f->output_data.x->edit_widget
+ && XtWindow (f->output_data.x->edit_widget) == wdesc)
+ /* A tooltip frame? */
+ || (!f->output_data.x->edit_widget
+ && FRAME_X_WINDOW (f) == wdesc)
+ || f->output_data.x->icon_desc == wdesc)
+ return f;
+#else /* not USE_X_TOOLKIT */
+#ifdef USE_GTK
+ if (f->output_data.x->edit_widget)
+ {
+ GtkWidget *gwdesc = xg_win_to_widget (dpyinfo->display, wdesc);
+ struct x_output *x = f->output_data.x;
+ if (gwdesc != 0 && gwdesc == x->edit_widget)
+ return f;
+ }
+#endif /* USE_GTK */
+ if (FRAME_X_WINDOW (f) == wdesc
+ || f->output_data.x->icon_desc == wdesc)
+ return f;
+#endif /* not USE_X_TOOLKIT */
+ }
+ return 0;
+}
+
+#if defined (USE_X_TOOLKIT) || defined (USE_GTK)
+
+/* Like x_window_to_frame but also compares the window with the widget's
+ windows. */
+
+static struct frame *
+x_any_window_to_frame (struct x_display_info *dpyinfo, int wdesc)
+{
+ Lisp_Object tail, frame;
+ struct frame *f, *found = NULL;
+ struct x_output *x;
+
+ if (wdesc == None)
+ return NULL;
+
+ FOR_EACH_FRAME (tail, frame)
+ {
+ if (found)
+ break;
+ f = XFRAME (frame);
+ if (FRAME_X_P (f) && FRAME_DISPLAY_INFO (f) == dpyinfo)
+ {
+ /* This frame matches if the window is any of its widgets. */
+ x = f->output_data.x;
+ if (x->hourglass_window == wdesc)
+ found = f;
+ else if (x->widget)
+ {
+#ifdef USE_GTK
+ GtkWidget *gwdesc = xg_win_to_widget (dpyinfo->display, wdesc);
+ if (gwdesc != 0
+ && gtk_widget_get_toplevel (gwdesc) == x->widget)
+ found = f;
+#else
+ if (wdesc == XtWindow (x->widget)
+ || wdesc == XtWindow (x->column_widget)
+ || wdesc == XtWindow (x->edit_widget))
+ found = f;
+ /* Match if the window is this frame's menubar. */
+ else if (lw_window_is_in_menubar (wdesc, x->menubar_widget))
+ found = f;
+#endif
+ }
+ else if (FRAME_X_WINDOW (f) == wdesc)
+ /* A tooltip frame. */
+ found = f;
+ }
+ }
+
+ return found;
+}
+
+/* Likewise, but consider only the menu bar widget. */
+
+static struct frame *
+x_menubar_window_to_frame (struct x_display_info *dpyinfo,
+ const XEvent *event)
+{
+ Window wdesc = event->xany.window;
+ Lisp_Object tail, frame;
+ struct frame *f;
+ struct x_output *x;
+
+ if (wdesc == None)
+ return NULL;
+
+ FOR_EACH_FRAME (tail, frame)
+ {
+ f = XFRAME (frame);
+ if (!FRAME_X_P (f) || FRAME_DISPLAY_INFO (f) != dpyinfo)
+ continue;
+ x = f->output_data.x;
+#ifdef USE_GTK
+ if (x->menubar_widget && xg_event_is_for_menubar (f, event))
+ return f;
+#else
+ /* Match if the window is this frame's menubar. */
+ if (x->menubar_widget
+ && lw_window_is_in_menubar (wdesc, x->menubar_widget))
+ return f;
+#endif
+ }
+ return 0;
+}
+
+/* Return the frame whose principal (outermost) window is WDESC.
+ If WDESC is some other (smaller) window, we return 0. */
+
+struct frame *
+x_top_window_to_frame (struct x_display_info *dpyinfo, int wdesc)
+{
+ Lisp_Object tail, frame;
+ struct frame *f;
+ struct x_output *x;
+
+ if (wdesc == None)
+ return NULL;
+
+ FOR_EACH_FRAME (tail, frame)
+ {
+ f = XFRAME (frame);
+ if (!FRAME_X_P (f) || FRAME_DISPLAY_INFO (f) != dpyinfo)
+ continue;
+ x = f->output_data.x;
+
+ if (x->widget)
+ {
+ /* This frame matches if the window is its topmost widget. */
+#ifdef USE_GTK
+ GtkWidget *gwdesc = xg_win_to_widget (dpyinfo->display, wdesc);
+ if (gwdesc == x->widget)
+ return f;
+#else
+ if (wdesc == XtWindow (x->widget))
+ return f;
+#endif
+ }
+ else if (FRAME_X_WINDOW (f) == wdesc)
+ /* Tooltip frame. */
+ return f;
+ }
+ return 0;
+}
+
+#else /* !USE_X_TOOLKIT && !USE_GTK */
+
+#define x_any_window_to_frame(d, i) x_window_to_frame (d, i)
+#define x_top_window_to_frame(d, i) x_window_to_frame (d, i)
+
+#endif /* USE_X_TOOLKIT || USE_GTK */
+
/* The focus may have changed. Figure out if it is a real focus change,
by checking both FocusIn/Out and Enter/LeaveNotify events.
Returns FOCUS_IN_EVENT event in *BUFP. */
static void
-x_detect_focus_change (struct x_display_info *dpyinfo, XEvent *event, struct input_event *bufp)
+x_detect_focus_change (struct x_display_info *dpyinfo, struct frame *frame,
+ const XEvent *event, struct input_event *bufp)
{
- struct frame *frame;
-
- frame = x_any_window_to_frame (dpyinfo, event->xany.window);
- if (! frame)
+ if (!frame)
return;
switch (event->type)
@@ -3476,7 +3558,7 @@ x_mouse_leave (struct x_display_info *dpyinfo)
static void
XTframe_rehighlight (struct frame *frame)
{
- x_frame_rehighlight (FRAME_X_DISPLAY_INFO (frame));
+ x_frame_rehighlight (FRAME_DISPLAY_INFO (frame));
}
static void
@@ -3692,9 +3774,25 @@ x_get_keysym_name (int keysym)
return value;
}
+/* Mouse clicks and mouse movement. Rah.
-
-/* Mouse clicks and mouse movement. Rah. */
+ Formerly, we used PointerMotionHintMask (in standard_event_mask)
+ so that we would have to call XQueryPointer after each MotionNotify
+ event to ask for another such event. However, this made mouse tracking
+ slow, and there was a bug that made it eventually stop.
+
+ Simply asking for MotionNotify all the time seems to work better.
+
+ In order to avoid asking for motion events and then throwing most
+ of them away or busy-polling the server for mouse positions, we ask
+ the server for pointer motion hints. This means that we get only
+ one event per group of mouse movements. "Groups" are delimited by
+ other kinds of events (focus changes and button clicks, for
+ example), or by XQueryPointer calls; when one of these happens, we
+ get another MotionNotify event the next time the mouse moves. This
+ is at least as efficient as getting motion events when mouse
+ tracking is on, and I suspect only negligibly worse when tracking
+ is off. */
/* Prepare a mouse-event in *RESULT for placement in the input queue.
@@ -3702,14 +3800,16 @@ x_get_keysym_name (int keysym)
the mouse. */
static Lisp_Object
-construct_mouse_click (struct input_event *result, XButtonEvent *event, struct frame *f)
+construct_mouse_click (struct input_event *result,
+ const XButtonEvent *event,
+ struct frame *f)
{
/* Make the event type NO_EVENT; we'll change that when we decide
otherwise. */
result->kind = MOUSE_CLICK_EVENT;
result->code = event->button - Button1;
result->timestamp = event->time;
- result->modifiers = (x_x_to_emacs_modifiers (FRAME_X_DISPLAY_INFO (f),
+ result->modifiers = (x_x_to_emacs_modifiers (FRAME_DISPLAY_INFO (f),
event->state)
| (event->type == ButtonRelease
? up_modifier
@@ -3730,65 +3830,49 @@ construct_mouse_click (struct input_event *result, XButtonEvent *event, struct f
the mainstream emacs code by setting mouse_moved. If not, ask for
another motion event, so we can check again the next time it moves. */
-static XMotionEvent last_mouse_motion_event;
-static Lisp_Object last_mouse_motion_frame;
-
static int
-note_mouse_movement (struct frame *frame, XMotionEvent *event)
+note_mouse_movement (struct frame *frame, const XMotionEvent *event)
{
- last_mouse_movement_time = event->time;
- last_mouse_motion_event = *event;
- XSETFRAME (last_mouse_motion_frame, frame);
+ XRectangle *r;
+ struct x_display_info *dpyinfo;
if (!FRAME_X_OUTPUT (frame))
return 0;
+ dpyinfo = FRAME_DISPLAY_INFO (frame);
+ dpyinfo->last_mouse_movement_time = event->time;
+ dpyinfo->last_mouse_motion_frame = frame;
+ dpyinfo->last_mouse_motion_x = event->x;
+ dpyinfo->last_mouse_motion_y = event->y;
+
if (event->window != FRAME_X_WINDOW (frame))
{
frame->mouse_moved = 1;
- last_mouse_scroll_bar = Qnil;
+ dpyinfo->last_mouse_scroll_bar = NULL;
note_mouse_highlight (frame, -1, -1);
- last_mouse_glyph_frame = 0;
+ dpyinfo->last_mouse_glyph_frame = NULL;
return 1;
}
/* Has the mouse moved off the glyph it was on at the last sighting? */
- if (frame != last_mouse_glyph_frame
- || event->x < last_mouse_glyph.x
- || event->x >= last_mouse_glyph.x + last_mouse_glyph.width
- || event->y < last_mouse_glyph.y
- || event->y >= last_mouse_glyph.y + last_mouse_glyph.height)
+ r = &dpyinfo->last_mouse_glyph;
+ if (frame != dpyinfo->last_mouse_glyph_frame
+ || event->x < r->x || event->x >= r->x + r->width
+ || event->y < r->y || event->y >= r->y + r->height)
{
frame->mouse_moved = 1;
- last_mouse_scroll_bar = Qnil;
+ dpyinfo->last_mouse_scroll_bar = NULL;
note_mouse_highlight (frame, event->x, event->y);
/* Remember which glyph we're now on. */
- remember_mouse_glyph (frame, event->x, event->y, &last_mouse_glyph);
- last_mouse_glyph_frame = frame;
+ remember_mouse_glyph (frame, event->x, event->y, r);
+ dpyinfo->last_mouse_glyph_frame = frame;
return 1;
}
return 0;
}
-
-/************************************************************************
- Mouse Face
- ************************************************************************/
-
-static void
-redo_mouse_highlight (void)
-{
- if (!NILP (last_mouse_motion_frame)
- && FRAME_LIVE_P (XFRAME (last_mouse_motion_frame)))
- note_mouse_highlight (XFRAME (last_mouse_motion_frame),
- last_mouse_motion_event.x,
- last_mouse_motion_event.y);
-}
-
-
-
/* Return the current position of the mouse.
*FP should be a frame which indicates which display to ask about.
@@ -3815,10 +3899,11 @@ XTmouse_position (struct frame **fp, int insist, Lisp_Object *bar_window,
Time *timestamp)
{
struct frame *f1;
+ struct x_display_info *dpyinfo = FRAME_DISPLAY_INFO (*fp);
block_input ();
- if (! NILP (last_mouse_scroll_bar) && insist == 0)
+ if (dpyinfo->last_mouse_scroll_bar && insist == 0)
x_scroll_bar_report_motion (fp, bar_window, part, x, y, timestamp);
else
{
@@ -3836,7 +3921,7 @@ XTmouse_position (struct frame **fp, int insist, Lisp_Object *bar_window,
&& FRAME_X_DISPLAY (XFRAME (frame)) == FRAME_X_DISPLAY (*fp))
XFRAME (frame)->mouse_moved = 0;
- last_mouse_scroll_bar = Qnil;
+ dpyinfo->last_mouse_scroll_bar = NULL;
/* Figure out which root window we're on. */
XQueryPointer (FRAME_X_DISPLAY (*fp),
@@ -3874,22 +3959,24 @@ XTmouse_position (struct frame **fp, int insist, Lisp_Object *bar_window,
x_catch_errors (FRAME_X_DISPLAY (*fp));
- if (FRAME_X_DISPLAY_INFO (*fp)->grabbed && last_mouse_frame
- && FRAME_LIVE_P (last_mouse_frame))
+ if (x_mouse_grabbed (dpyinfo))
{
/* If mouse was grabbed on a frame, give coords for that frame
even if the mouse is now outside it. */
XTranslateCoordinates (FRAME_X_DISPLAY (*fp),
- /* From-window, to-window. */
- root, FRAME_X_WINDOW (last_mouse_frame),
+ /* From-window. */
+ root,
+
+ /* To-window. */
+ FRAME_X_WINDOW (dpyinfo->last_mouse_frame),
/* From-position, to-position. */
root_x, root_y, &win_x, &win_y,
/* Child of win. */
&child);
- f1 = last_mouse_frame;
+ f1 = dpyinfo->last_mouse_frame;
}
else
{
@@ -3913,7 +4000,7 @@ XTmouse_position (struct frame **fp, int insist, Lisp_Object *bar_window,
want the edit window. For non-Gtk+ the innermost
window is the edit window. For Gtk+ it might not
be. It might be the tool bar for example. */
- if (x_window_to_frame (FRAME_X_DISPLAY_INFO (*fp), win))
+ if (x_window_to_frame (dpyinfo, win))
break;
#endif
win = child;
@@ -3935,10 +4022,10 @@ XTmouse_position (struct frame **fp, int insist, Lisp_Object *bar_window,
#ifdef USE_GTK
/* We don't wan't to know the innermost window. We
want the edit window. */
- f1 = x_window_to_frame (FRAME_X_DISPLAY_INFO (*fp), win);
+ f1 = x_window_to_frame (dpyinfo, win);
#else
/* Is win one of our frames? */
- f1 = x_any_window_to_frame (FRAME_X_DISPLAY_INFO (*fp), win);
+ f1 = x_any_window_to_frame (dpyinfo, win);
#endif
#ifdef USE_X_TOOLKIT
@@ -3984,15 +4071,17 @@ XTmouse_position (struct frame **fp, int insist, Lisp_Object *bar_window,
on it, i.e. into the same rectangles that matrices on
the frame are divided into. */
- remember_mouse_glyph (f1, win_x, win_y, &last_mouse_glyph);
- last_mouse_glyph_frame = f1;
+ /* FIXME: what if F1 is not an X frame? */
+ dpyinfo = FRAME_DISPLAY_INFO (f1);
+ remember_mouse_glyph (f1, win_x, win_y, &dpyinfo->last_mouse_glyph);
+ dpyinfo->last_mouse_glyph_frame = f1;
*bar_window = Qnil;
*part = 0;
*fp = f1;
XSETINT (*x, win_x);
XSETINT (*y, win_y);
- *timestamp = last_mouse_movement_time;
+ *timestamp = dpyinfo->last_mouse_movement_time;
}
}
}
@@ -4078,23 +4167,13 @@ x_window_to_menu_bar (Window window)
#ifdef USE_TOOLKIT_SCROLL_BARS
-static void x_scroll_bar_to_input_event (XEvent *, struct input_event *);
static void x_send_scroll_bar_event (Lisp_Object, int, int, int);
-static void x_create_toolkit_scroll_bar (struct frame *,
- struct scroll_bar *);
-static void x_set_toolkit_scroll_bar_thumb (struct scroll_bar *,
- int, int, int);
-
/* Lisp window being scrolled. Set when starting to interact with
a toolkit scroll bar, reset to nil when ending the interaction. */
static Lisp_Object window_being_scrolled;
-/* Last scroll bar part sent in xm_scroll_callback. */
-
-static int last_scroll_bar_part;
-
/* Whether this is an Xaw with arrow-scrollbars. This should imply
that movements of 1/20 of the screen size are mapped to up/down. */
@@ -4136,33 +4215,29 @@ xt_action_hook (Widget widget, XtPointer client_data, String action_name,
&& WINDOWP (window_being_scrolled))
{
struct window *w;
+ struct scroll_bar *bar;
x_send_scroll_bar_event (window_being_scrolled,
scroll_bar_end_scroll, 0, 0);
w = XWINDOW (window_being_scrolled);
+ bar = XSCROLL_BAR (w->vertical_scroll_bar);
- if (XSCROLL_BAR (w->vertical_scroll_bar)->dragging != -1)
+ if (bar->dragging != -1)
{
- XSCROLL_BAR (w->vertical_scroll_bar)->dragging = -1;
+ bar->dragging = -1;
/* The thumb size is incorrect while dragging: fix it. */
set_vertical_scroll_bar (w);
}
window_being_scrolled = Qnil;
- last_scroll_bar_part = -1;
-
+#if defined (USE_LUCID)
+ bar->last_seen_part = scroll_bar_nowhere;
+#endif
/* Xt timeouts no longer needed. */
toolkit_scroll_bar_interaction = 0;
}
}
#endif /* not USE_GTK */
-/* A vector of windows used for communication between
- x_send_scroll_bar_event and x_scroll_bar_to_input_event. */
-
-static struct window **scroll_bar_windows;
-static ptrdiff_t scroll_bar_windows_size;
-
-
/* Send a client message with message type Xatom_Scrollbar for a
scroll action to the frame of WINDOW. PART is a value identifying
the part of the scroll bar that was clicked on. PORTION is the
@@ -4172,47 +4247,33 @@ static void
x_send_scroll_bar_event (Lisp_Object window, int part, int portion, int whole)
{
XEvent event;
- XClientMessageEvent *ev = (XClientMessageEvent *) &event;
+ XClientMessageEvent *ev = &event.xclient;
struct window *w = XWINDOW (window);
struct frame *f = XFRAME (w->frame);
- ptrdiff_t i;
+ intptr_t iw = (intptr_t) w;
+ enum { BITS_PER_INTPTR = CHAR_BIT * sizeof iw };
+ verify (BITS_PER_INTPTR <= 64);
+ int sign_shift = BITS_PER_INTPTR - 32;
block_input ();
/* Construct a ClientMessage event to send to the frame. */
ev->type = ClientMessage;
- ev->message_type = FRAME_X_DISPLAY_INFO (f)->Xatom_Scrollbar;
+ ev->message_type = FRAME_DISPLAY_INFO (f)->Xatom_Scrollbar;
ev->display = FRAME_X_DISPLAY (f);
ev->window = FRAME_X_WINDOW (f);
ev->format = 32;
- /* We can only transfer 32 bits in the XClientMessageEvent, which is
- not enough to store a pointer or Lisp_Object on a 64 bit system.
- So, store the window in scroll_bar_windows and pass the index
- into that array in the event. */
- for (i = 0; i < scroll_bar_windows_size; ++i)
- if (scroll_bar_windows[i] == NULL)
- break;
-
- if (i == scroll_bar_windows_size)
- {
- ptrdiff_t old_nbytes =
- scroll_bar_windows_size * sizeof *scroll_bar_windows;
- ptrdiff_t nbytes;
- enum { XClientMessageEvent_MAX = 0x7fffffff };
- scroll_bar_windows =
- xpalloc (scroll_bar_windows, &scroll_bar_windows_size, 1,
- XClientMessageEvent_MAX, sizeof *scroll_bar_windows);
- nbytes = scroll_bar_windows_size * sizeof *scroll_bar_windows;
- memset (&scroll_bar_windows[i], 0, nbytes - old_nbytes);
- }
-
- scroll_bar_windows[i] = w;
- ev->data.l[0] = (long) i;
- ev->data.l[1] = (long) part;
- ev->data.l[2] = (long) 0;
- ev->data.l[3] = (long) portion;
- ev->data.l[4] = (long) whole;
+ /* A 32-bit X client on a 64-bit X server can pass a window pointer
+ as-is. A 64-bit client on a 32-bit X server is in trouble
+ because a pointer does not fit and would be truncated while
+ passing through the server. So use two slots and hope that X12
+ will resolve such issues someday. */
+ ev->data.l[0] = iw >> 31 >> 1;
+ ev->data.l[1] = sign_shift <= 0 ? iw : iw << sign_shift >> sign_shift;
+ ev->data.l[2] = part;
+ ev->data.l[3] = portion;
+ ev->data.l[4] = whole;
/* Make Xt timeouts work while the scroll bar is active. */
#ifdef USE_X_TOOLKIT
@@ -4232,14 +4293,18 @@ x_send_scroll_bar_event (Lisp_Object window, int part, int portion, int whole)
in *IEVENT. */
static void
-x_scroll_bar_to_input_event (XEvent *event, struct input_event *ievent)
+x_scroll_bar_to_input_event (const XEvent *event,
+ struct input_event *ievent)
{
- XClientMessageEvent *ev = (XClientMessageEvent *) event;
+ const XClientMessageEvent *ev = &event->xclient;
Lisp_Object window;
struct window *w;
- w = scroll_bar_windows[ev->data.l[0]];
- scroll_bar_windows[ev->data.l[0]] = NULL;
+ /* See the comment in the function above. */
+ intptr_t iw0 = ev->data.l[0];
+ intptr_t iw1 = ev->data.l[1];
+ intptr_t iw = (iw0 << 31 << 1) + (iw1 & 0xffffffffu);
+ w = (struct window *) iw;
XSETWINDOW (window, w);
@@ -4252,10 +4317,10 @@ x_scroll_bar_to_input_event (XEvent *event, struct input_event *ievent)
ievent->timestamp =
XtLastTimestampProcessed (FRAME_X_DISPLAY (XFRAME (w->frame)));
#endif
- ievent->part = ev->data.l[1];
- ievent->code = ev->data.l[2];
- ievent->x = make_number ((int) ev->data.l[3]);
- ievent->y = make_number ((int) ev->data.l[4]);
+ ievent->code = 0;
+ ievent->part = ev->data.l[2];
+ ievent->x = make_number (ev->data.l[3]);
+ ievent->y = make_number (ev->data.l[4]);
ievent->modifiers = 0;
}
@@ -4333,7 +4398,6 @@ xm_scroll_callback (Widget widget, XtPointer client_data, XtPointer call_data)
if (part >= 0)
{
window_being_scrolled = bar->window;
- last_scroll_bar_part = part;
x_send_scroll_bar_event (bar->window, part, portion, whole);
}
}
@@ -4363,8 +4427,8 @@ xg_scroll_callback (GtkRange *range,
{
case GTK_SCROLL_JUMP:
/* Buttons 1 2 or 3 must be grabbed. */
- if (FRAME_X_DISPLAY_INFO (f)->grabbed != 0
- && FRAME_X_DISPLAY_INFO (f)->grabbed < (1 << 4))
+ if (FRAME_DISPLAY_INFO (f)->grabbed != 0
+ && FRAME_DISPLAY_INFO (f)->grabbed < (1 << 4))
{
part = scroll_bar_handle;
whole = gtk_adjustment_get_upper (adj) -
@@ -4394,7 +4458,6 @@ xg_scroll_callback (GtkRange *range,
if (part >= 0)
{
window_being_scrolled = bar->window;
- last_scroll_bar_part = part;
x_send_scroll_bar_event (bar->window, part, portion, whole);
}
@@ -4436,7 +4499,7 @@ xaw_jump_callback (Widget widget, XtPointer client_data, XtPointer call_data)
float top = *top_addr;
float shown;
int whole, portion, height;
- int part;
+ enum scroll_bar_part part;
/* Get the size of the thumb, a value between 0 and 1. */
block_input ();
@@ -4458,7 +4521,7 @@ xaw_jump_callback (Widget widget, XtPointer client_data, XtPointer call_data)
window_being_scrolled = bar->window;
bar->dragging = portion;
- last_scroll_bar_part = part;
+ bar->last_seen_part = part;
x_send_scroll_bar_event (bar->window, part, portion, whole);
}
@@ -4478,7 +4541,7 @@ xaw_scroll_callback (Widget widget, XtPointer client_data, XtPointer call_data)
/* The position really is stored cast to a pointer. */
int position = (intptr_t) call_data;
Dimension height;
- int part;
+ enum scroll_bar_part part;
/* Get the height of the scroll bar. */
block_input ();
@@ -4497,7 +4560,7 @@ xaw_scroll_callback (Widget widget, XtPointer client_data, XtPointer call_data)
window_being_scrolled = bar->window;
bar->dragging = -1;
- last_scroll_bar_part = part;
+ bar->last_seen_part = part;
x_send_scroll_bar_event (bar->window, part, position, height);
}
@@ -4807,16 +4870,25 @@ x_set_toolkit_scroll_bar_thumb (struct scroll_bar *bar, int portion, int positio
NULL);
/* Massage the top+shown values. */
- if (bar->dragging == -1 || last_scroll_bar_part == scroll_bar_down_arrow)
+ if (bar->dragging == -1 || bar->last_seen_part == scroll_bar_down_arrow)
top = max (0, min (1, top));
else
top = old_top;
+#if ! defined (HAVE_XAW3D)
+ /* With Xaw, 'top' values too closer to 1.0 may
+ cause the thumb to disappear. Fix that. */
+ top = min (top, 0.99f);
+#endif
/* Keep two pixels available for moving the thumb down. */
shown = max (0, min (1 - top - (2.0f / height), shown));
+#if ! defined (HAVE_XAW3D)
+ /* Likewise with too small 'shown'. */
+ shown = max (shown, 0.01f);
+#endif
- /* If the call to XawScrollbarSetThumb below doesn't seem to work,
- check that your system's configuration file contains a define
- for `NARROWPROTO'. See s/freebsd.h for an example. */
+ /* If the call to XawScrollbarSetThumb below doesn't seem to
+ work, check that 'NARROWPROTO' is defined in src/config.h.
+ If this is not so, most likely you need to fix configure. */
if (top != old_top || shown != old_shown)
{
if (bar->dragging == -1)
@@ -4875,7 +4947,7 @@ x_scroll_bar_create (struct window *w, int top, int left, int width, int height)
a.event_mask = (ButtonPressMask | ButtonReleaseMask
| ButtonMotionMask | PointerMotionHintMask
| ExposureMask);
- a.cursor = FRAME_X_DISPLAY_INFO (f)->vertical_scroll_bar_cursor;
+ a.cursor = FRAME_DISPLAY_INFO (f)->vertical_scroll_bar_cursor;
mask = (CWBackPixel | CWEventMask | CWCursor);
@@ -4888,12 +4960,9 @@ x_scroll_bar_create (struct window *w, int top, int left, int width, int height)
window = XCreateWindow (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f),
/* Position and size of scroll bar. */
- left + VERTICAL_SCROLL_BAR_WIDTH_TRIM,
- top,
- width - VERTICAL_SCROLL_BAR_WIDTH_TRIM * 2,
- height,
+ left, top, width, height,
/* Border width, depth, class, and visual. */
- 0,
+ 0,
CopyFromParent,
CopyFromParent,
CopyFromParent,
@@ -4912,6 +4981,9 @@ x_scroll_bar_create (struct window *w, int top, int left, int width, int height)
bar->end = 0;
bar->dragging = -1;
bar->fringe_extended_p = 0;
+#if defined (USE_TOOLKIT_SCROLL_BARS) && defined (USE_LUCID)
+ bar->last_seen_part = scroll_bar_nowhere;
+#endif
/* Add bar to its frame's list of scroll bars. */
bar->next = FRAME_SCROLL_BARS (f);
@@ -4925,19 +4997,11 @@ x_scroll_bar_create (struct window *w, int top, int left, int width, int height)
#ifdef USE_TOOLKIT_SCROLL_BARS
{
#ifdef USE_GTK
- xg_update_scrollbar_pos (f,
- bar->x_window,
- top,
- left + VERTICAL_SCROLL_BAR_WIDTH_TRIM,
- width - VERTICAL_SCROLL_BAR_WIDTH_TRIM * 2,
- max (height, 1));
+ xg_update_scrollbar_pos (f, bar->x_window, top,
+ left,width, max (height, 1));
#else /* not USE_GTK */
Widget scroll_bar = SCROLL_BAR_X_WIDGET (FRAME_X_DISPLAY (f), bar);
- XtConfigureWidget (scroll_bar,
- left + VERTICAL_SCROLL_BAR_WIDTH_TRIM,
- top,
- width - VERTICAL_SCROLL_BAR_WIDTH_TRIM * 2,
- max (height, 1), 0);
+ XtConfigureWidget (scroll_bar, left, top, width, max (height, 1), 0);
XtMapWidget (scroll_bar);
#endif /* not USE_GTK */
}
@@ -5185,33 +5249,15 @@ XTset_vertical_scroll_bar (struct window *w, int portion, int whole, int positio
left, top, width, height);
}
#ifdef USE_GTK
- xg_update_scrollbar_pos (f,
- bar->x_window,
- top,
- sb_left + VERTICAL_SCROLL_BAR_WIDTH_TRIM,
- sb_width - VERTICAL_SCROLL_BAR_WIDTH_TRIM *2,
- max (height, 1));
+ xg_update_scrollbar_pos (f, bar->x_window, top,
+ sb_left, sb_width, max (height, 1));
#else /* not USE_GTK */
XtConfigureWidget (SCROLL_BAR_X_WIDGET (FRAME_X_DISPLAY (f), bar),
- sb_left + VERTICAL_SCROLL_BAR_WIDTH_TRIM,
- top,
- sb_width - VERTICAL_SCROLL_BAR_WIDTH_TRIM * 2,
- max (height, 1), 0);
+ sb_left, top, sb_width, max (height, 1), 0);
#endif /* not USE_GTK */
}
#else /* not USE_TOOLKIT_SCROLL_BARS */
- /* Clear areas not covered by the scroll bar because of
- VERTICAL_SCROLL_BAR_WIDTH_TRIM. */
- if (VERTICAL_SCROLL_BAR_WIDTH_TRIM)
- {
- x_clear_area (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f),
- left, top, VERTICAL_SCROLL_BAR_WIDTH_TRIM, height);
- x_clear_area (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f),
- left + width - VERTICAL_SCROLL_BAR_WIDTH_TRIM,
- top, VERTICAL_SCROLL_BAR_WIDTH_TRIM, height);
- }
-
/* Clear areas not covered by the scroll bar because it's not as
wide as the area reserved for it. This makes sure a
previous mode line display is cleared after C-x 2 C-x 1, for
@@ -5235,9 +5281,9 @@ XTset_vertical_scroll_bar (struct window *w, int portion, int whole, int positio
{
XWindowChanges wc;
- wc.x = sb_left + VERTICAL_SCROLL_BAR_WIDTH_TRIM;
+ wc.x = sb_left;
wc.y = top;
- wc.width = sb_width - VERTICAL_SCROLL_BAR_WIDTH_TRIM * 2;
+ wc.width = sb_width;
wc.height = height;
XConfigureWindow (FRAME_X_DISPLAY (f), bar->x_window,
mask, &wc);
@@ -5395,12 +5441,11 @@ XTjudge_scroll_bars (struct frame *f)
mark bits. */
static void
-x_scroll_bar_expose (struct scroll_bar *bar, XEvent *event)
+x_scroll_bar_expose (struct scroll_bar *bar, const XEvent *event)
{
Window w = bar->x_window;
struct frame *f = XFRAME (WINDOW_FRAME (XWINDOW (bar->window)));
GC gc = f->output_data.x->normal_gc;
- int width_trim = VERTICAL_SCROLL_BAR_WIDTH_TRIM;
block_input ();
@@ -5413,11 +5458,8 @@ x_scroll_bar_expose (struct scroll_bar *bar, XEvent *event)
/* Draw a one-pixel border just inside the edges of the scroll bar. */
XDrawRectangle (FRAME_X_DISPLAY (f), w, gc,
-
/* x, y, width, height */
- 0, 0,
- bar->width - 1 - width_trim - width_trim,
- bar->height - 1);
+ 0, 0, bar->width - 1, bar->height - 1);
/* Restore the foreground color of the GC if we changed it above. */
if (f->output_data.x->scroll_bar_foreground_pixel != -1)
@@ -5437,7 +5479,9 @@ x_scroll_bar_expose (struct scroll_bar *bar, XEvent *event)
static void
-x_scroll_bar_handle_click (struct scroll_bar *bar, XEvent *event, struct input_event *emacs_event)
+x_scroll_bar_handle_click (struct scroll_bar *bar,
+ const XEvent *event,
+ struct input_event *emacs_event)
{
if (! WINDOWP (bar->window))
emacs_abort ();
@@ -5445,7 +5489,7 @@ x_scroll_bar_handle_click (struct scroll_bar *bar, XEvent *event, struct input_e
emacs_event->kind = SCROLL_BAR_CLICK_EVENT;
emacs_event->code = event->xbutton.button - Button1;
emacs_event->modifiers
- = (x_x_to_emacs_modifiers (FRAME_X_DISPLAY_INFO
+ = (x_x_to_emacs_modifiers (FRAME_DISPLAY_INFO
(XFRAME (WINDOW_FRAME (XWINDOW (bar->window)))),
event->xbutton.state)
| (event->type == ButtonRelease
@@ -5494,14 +5538,15 @@ x_scroll_bar_handle_click (struct scroll_bar *bar, XEvent *event, struct input_e
mark bits. */
static void
-x_scroll_bar_note_movement (struct scroll_bar *bar, XMotionEvent *event)
+x_scroll_bar_note_movement (struct scroll_bar *bar,
+ const XMotionEvent *event)
{
struct frame *f = XFRAME (XWINDOW (bar->window)->frame);
+ struct x_display_info *dpyinfo = FRAME_DISPLAY_INFO (f);
- last_mouse_movement_time = event->time;
-
+ dpyinfo->last_mouse_movement_time = event->time;
+ dpyinfo->last_mouse_scroll_bar = bar;
f->mouse_moved = 1;
- XSETVECTOR (last_mouse_scroll_bar, bar);
/* If we're dragging the bar, display it. */
if (bar->dragging != -1)
@@ -5528,7 +5573,8 @@ x_scroll_bar_report_motion (struct frame **fp, Lisp_Object *bar_window,
enum scroll_bar_part *part, Lisp_Object *x,
Lisp_Object *y, Time *timestamp)
{
- struct scroll_bar *bar = XSCROLL_BAR (last_mouse_scroll_bar);
+ struct x_display_info *dpyinfo = FRAME_DISPLAY_INFO (*fp);
+ struct scroll_bar *bar = dpyinfo->last_mouse_scroll_bar;
Window w = bar->x_window;
struct frame *f = XFRAME (WINDOW_FRAME (XWINDOW (bar->window)));
int win_x, win_y;
@@ -5540,22 +5586,19 @@ x_scroll_bar_report_motion (struct frame **fp, Lisp_Object *bar_window,
/* Get the mouse's position relative to the scroll bar window, and
report that. */
- if (! XQueryPointer (FRAME_X_DISPLAY (f), w,
+ if (XQueryPointer (FRAME_X_DISPLAY (f), w,
- /* Root, child, root x and root y. */
- &dummy_window, &dummy_window,
- &dummy_coord, &dummy_coord,
+ /* Root, child, root x and root y. */
+ &dummy_window, &dummy_window,
+ &dummy_coord, &dummy_coord,
- /* Position relative to scroll bar. */
- &win_x, &win_y,
+ /* Position relative to scroll bar. */
+ &win_x, &win_y,
- /* Mouse buttons and modifier keys. */
- &dummy_mask))
- ;
- else
+ /* Mouse buttons and modifier keys. */
+ &dummy_mask))
{
- int top_range
- = VERTICAL_SCROLL_BAR_TOP_RANGE (f, bar->height);
+ int top_range = VERTICAL_SCROLL_BAR_TOP_RANGE (f, bar->height);
win_y -= VERTICAL_SCROLL_BAR_TOP_BORDER;
@@ -5583,11 +5626,10 @@ x_scroll_bar_report_motion (struct frame **fp, Lisp_Object *bar_window,
XSETINT (*y, top_range);
f->mouse_moved = 0;
- last_mouse_scroll_bar = Qnil;
+ dpyinfo->last_mouse_scroll_bar = NULL;
+ *timestamp = dpyinfo->last_mouse_movement_time;
}
- *timestamp = last_mouse_movement_time;
-
unblock_input ();
}
@@ -5646,20 +5688,6 @@ static struct x_display_info *XTread_socket_fake_io_error;
static struct x_display_info *next_noop_dpyinfo;
-#if defined USE_X_TOOLKIT || defined USE_GTK
-#define SET_SAVED_BUTTON_EVENT \
- do \
- { \
- if (f->output_data.x->saved_menu_event == 0) \
- f->output_data.x->saved_menu_event = \
- xmalloc (sizeof (XEvent)); \
- *f->output_data.x->saved_menu_event = event; \
- inev.ie.kind = MENU_BAR_ACTIVATE_EVENT; \
- XSETFRAME (inev.ie.frame_or_window, f); \
- } \
- while (0)
-#endif
-
enum
{
X_EVENT_NORMAL,
@@ -5753,11 +5781,13 @@ static void xembed_send_message (struct frame *f, Time,
*FINISH is X_EVENT_GOTO_OUT if caller should stop reading events.
*FINISH is zero if caller should continue reading events.
*FINISH is X_EVENT_DROP if event should not be passed to the toolkit.
+ *EVENT is unchanged unless we're processing KeyPress event.
We return the number of characters stored into the buffer. */
static int
-handle_one_xevent (struct x_display_info *dpyinfo, XEvent *eventptr,
+handle_one_xevent (struct x_display_info *dpyinfo,
+ const XEvent *event,
int *finish, struct input_event *hold_quit)
{
union {
@@ -5767,9 +5797,8 @@ handle_one_xevent (struct x_display_info *dpyinfo, XEvent *eventptr,
int count = 0;
int do_help = 0;
ptrdiff_t nbytes = 0;
- struct frame *f = NULL;
+ struct frame *any, *f = NULL;
struct coding_system coding;
- XEvent event = *eventptr;
Mouse_HLInfo *hlinfo = &dpyinfo->mouse_highlight;
/* This holds the state XLookupString needs to implement dead keys
and other tricks known as "compose processing". _X Window System_
@@ -5785,24 +5814,24 @@ handle_one_xevent (struct x_display_info *dpyinfo, XEvent *eventptr,
inev.ie.kind = NO_EVENT;
inev.ie.arg = Qnil;
- if (pending_event_wait.eventtype == event.type)
- pending_event_wait.eventtype = 0; /* Indicates we got it. */
+ any = x_any_window_to_frame (dpyinfo, event->xany.window);
+
+ if (any && any->wait_event_type == event->type)
+ any->wait_event_type = 0; /* Indicates we got it. */
- switch (event.type)
+ switch (event->type)
{
case ClientMessage:
{
- if (event.xclient.message_type
- == dpyinfo->Xatom_wm_protocols
- && event.xclient.format == 32)
+ if (event->xclient.message_type == dpyinfo->Xatom_wm_protocols
+ && event->xclient.format == 32)
{
- if (event.xclient.data.l[0]
- == dpyinfo->Xatom_wm_take_focus)
+ if (event->xclient.data.l[0] == dpyinfo->Xatom_wm_take_focus)
{
- /* Use x_any_window_to_frame because this
- could be the shell widget window
- if the frame has no title bar. */
- f = x_any_window_to_frame (dpyinfo, event.xclient.window);
+ /* Use the value returned by x_any_window_to_frame
+ because this could be the shell widget window
+ if the frame has no title bar. */
+ f = any;
#ifdef HAVE_X_I18N
/* Not quite sure this is needed -pd */
if (f && FRAME_XIC (f))
@@ -5826,15 +5855,15 @@ handle_one_xevent (struct x_display_info *dpyinfo, XEvent *eventptr,
since that might be an event for a deleted frame. */
if (f)
{
- Display *d = event.xclient.display;
+ Display *d = event->xclient.display;
/* Catch and ignore errors, in case window has been
iconified by a window manager such as GWM. */
x_catch_errors (d);
- XSetInputFocus (d, event.xclient.window,
+ XSetInputFocus (d, event->xclient.window,
/* The ICCCM says this is
the only valid choice. */
RevertToParent,
- event.xclient.data.l[1]);
+ event->xclient.data.l[1]);
/* This is needed to detect the error
if there is an error. */
XSync (d, False);
@@ -5845,8 +5874,7 @@ handle_one_xevent (struct x_display_info *dpyinfo, XEvent *eventptr,
goto done;
}
- if (event.xclient.data.l[0]
- == dpyinfo->Xatom_wm_save_yourself)
+ if (event->xclient.data.l[0] == dpyinfo->Xatom_wm_save_yourself)
{
/* Save state modify the WM_COMMAND property to
something which can reinstate us. This notifies
@@ -5861,26 +5889,24 @@ handle_one_xevent (struct x_display_info *dpyinfo, XEvent *eventptr,
#endif
{
f = x_top_window_to_frame (dpyinfo,
- event.xclient.window);
+ event->xclient.window);
/* This is just so we only give real data once
for a single Emacs process. */
if (f == SELECTED_FRAME ())
XSetCommand (FRAME_X_DISPLAY (f),
- event.xclient.window,
+ event->xclient.window,
initial_argv, initial_argc);
else if (f)
XSetCommand (FRAME_X_DISPLAY (f),
- event.xclient.window,
+ event->xclient.window,
0, 0);
}
goto done;
}
- if (event.xclient.data.l[0]
- == dpyinfo->Xatom_wm_delete_window)
+ if (event->xclient.data.l[0] == dpyinfo->Xatom_wm_delete_window)
{
- f = x_any_window_to_frame (dpyinfo,
- event.xclient.window);
+ f = any;
if (!f)
goto OTHER; /* May be a dialog that is to be removed */
@@ -5892,20 +5918,16 @@ handle_one_xevent (struct x_display_info *dpyinfo, XEvent *eventptr,
goto done;
}
- if (event.xclient.message_type
- == dpyinfo->Xatom_wm_configure_denied)
- {
- goto done;
- }
+ if (event->xclient.message_type == dpyinfo->Xatom_wm_configure_denied)
+ goto done;
- if (event.xclient.message_type
- == dpyinfo->Xatom_wm_window_moved)
+ if (event->xclient.message_type == dpyinfo->Xatom_wm_window_moved)
{
int new_x, new_y;
- f = x_window_to_frame (dpyinfo, event.xclient.window);
+ f = x_window_to_frame (dpyinfo, event->xclient.window);
- new_x = event.xclient.data.s[0];
- new_y = event.xclient.data.s[1];
+ new_x = event->xclient.data.s[0];
+ new_y = event->xclient.data.s[1];
if (f)
{
@@ -5916,28 +5938,25 @@ handle_one_xevent (struct x_display_info *dpyinfo, XEvent *eventptr,
}
#ifdef HACK_EDITRES
- if (event.xclient.message_type
- == dpyinfo->Xatom_editres)
+ if (event->xclient.message_type == dpyinfo->Xatom_editres)
{
- f = x_any_window_to_frame (dpyinfo, event.xclient.window);
+ f = any;
if (f)
- _XEditResCheckMessages (f->output_data.x->widget, NULL,
- &event, NULL);
+ _XEditResCheckMessages (f->output_data.x->widget,
+ NULL, (XEvent *) event, NULL);
goto done;
}
#endif /* HACK_EDITRES */
- if ((event.xclient.message_type
- == dpyinfo->Xatom_DONE)
- || (event.xclient.message_type
- == dpyinfo->Xatom_PAGE))
+ if (event->xclient.message_type == dpyinfo->Xatom_DONE
+ || event->xclient.message_type == dpyinfo->Xatom_PAGE)
{
/* Ghostview job completed. Kill it. We could
reply with "Next" if we received "Page", but we
currently never do because we are interested in
images, only, which should have 1 page. */
- Pixmap pixmap = (Pixmap) event.xclient.data.l[1];
- f = x_window_to_frame (dpyinfo, event.xclient.window);
+ Pixmap pixmap = (Pixmap) event->xclient.data.l[1];
+ f = x_window_to_frame (dpyinfo, event->xclient.window);
if (!f)
goto OTHER;
x_kill_gs_process (pixmap, f);
@@ -5948,54 +5967,52 @@ handle_one_xevent (struct x_display_info *dpyinfo, XEvent *eventptr,
#ifdef USE_TOOLKIT_SCROLL_BARS
/* Scroll bar callbacks send a ClientMessage from which
we construct an input_event. */
- if (event.xclient.message_type
- == dpyinfo->Xatom_Scrollbar)
+ if (event->xclient.message_type == dpyinfo->Xatom_Scrollbar)
{
- x_scroll_bar_to_input_event (&event, &inev.ie);
+ x_scroll_bar_to_input_event (event, &inev.ie);
*finish = X_EVENT_GOTO_OUT;
goto done;
}
#endif /* USE_TOOLKIT_SCROLL_BARS */
/* XEmbed messages from the embedder (if any). */
- if (event.xclient.message_type
- == dpyinfo->Xatom_XEMBED)
+ if (event->xclient.message_type == dpyinfo->Xatom_XEMBED)
{
- enum xembed_message msg = event.xclient.data.l[1];
+ enum xembed_message msg = event->xclient.data.l[1];
if (msg == XEMBED_FOCUS_IN || msg == XEMBED_FOCUS_OUT)
- x_detect_focus_change (dpyinfo, &event, &inev.ie);
+ x_detect_focus_change (dpyinfo, any, event, &inev.ie);
*finish = X_EVENT_GOTO_OUT;
goto done;
}
- xft_settings_event (dpyinfo, &event);
+ xft_settings_event (dpyinfo, event);
- f = x_any_window_to_frame (dpyinfo, event.xclient.window);
+ f = any;
if (!f)
goto OTHER;
- if (x_handle_dnd_message (f, &event.xclient, dpyinfo, &inev.ie))
+ if (x_handle_dnd_message (f, &event->xclient, dpyinfo, &inev.ie))
*finish = X_EVENT_DROP;
}
break;
case SelectionNotify:
- last_user_time = event.xselection.time;
+ dpyinfo->last_user_time = event->xselection.time;
#ifdef USE_X_TOOLKIT
- if (! x_window_to_frame (dpyinfo, event.xselection.requestor))
+ if (! x_window_to_frame (dpyinfo, event->xselection.requestor))
goto OTHER;
#endif /* not USE_X_TOOLKIT */
- x_handle_selection_notify (&event.xselection);
+ x_handle_selection_notify (&event->xselection);
break;
case SelectionClear: /* Someone has grabbed ownership. */
- last_user_time = event.xselectionclear.time;
+ dpyinfo->last_user_time = event->xselectionclear.time;
#ifdef USE_X_TOOLKIT
- if (! x_window_to_frame (dpyinfo, event.xselectionclear.window))
+ if (! x_window_to_frame (dpyinfo, event->xselectionclear.window))
goto OTHER;
#endif /* USE_X_TOOLKIT */
{
- XSelectionClearEvent *eventp = &(event.xselectionclear);
+ const XSelectionClearEvent *eventp = &event->xselectionclear;
inev.ie.kind = SELECTION_CLEAR_EVENT;
SELECTION_EVENT_DISPLAY (&inev.sie) = eventp->display;
@@ -6005,29 +6022,29 @@ handle_one_xevent (struct x_display_info *dpyinfo, XEvent *eventptr,
break;
case SelectionRequest: /* Someone wants our selection. */
- last_user_time = event.xselectionrequest.time;
+ dpyinfo->last_user_time = event->xselectionrequest.time;
#ifdef USE_X_TOOLKIT
- if (!x_window_to_frame (dpyinfo, event.xselectionrequest.owner))
+ if (!x_window_to_frame (dpyinfo, event->xselectionrequest.owner))
goto OTHER;
#endif /* USE_X_TOOLKIT */
{
- XSelectionRequestEvent *eventp = &(event.xselectionrequest);
-
- inev.ie.kind = SELECTION_REQUEST_EVENT;
- SELECTION_EVENT_DISPLAY (&inev.sie) = eventp->display;
- SELECTION_EVENT_REQUESTOR (&inev.sie) = eventp->requestor;
- SELECTION_EVENT_SELECTION (&inev.sie) = eventp->selection;
- SELECTION_EVENT_TARGET (&inev.sie) = eventp->target;
- SELECTION_EVENT_PROPERTY (&inev.sie) = eventp->property;
- SELECTION_EVENT_TIME (&inev.sie) = eventp->time;
+ const XSelectionRequestEvent *eventp = &event->xselectionrequest;
+
+ inev.ie.kind = SELECTION_REQUEST_EVENT;
+ SELECTION_EVENT_DISPLAY (&inev.sie) = eventp->display;
+ SELECTION_EVENT_REQUESTOR (&inev.sie) = eventp->requestor;
+ SELECTION_EVENT_SELECTION (&inev.sie) = eventp->selection;
+ SELECTION_EVENT_TARGET (&inev.sie) = eventp->target;
+ SELECTION_EVENT_PROPERTY (&inev.sie) = eventp->property;
+ SELECTION_EVENT_TIME (&inev.sie) = eventp->time;
}
break;
case PropertyNotify:
- last_user_time = event.xproperty.time;
- f = x_top_window_to_frame (dpyinfo, event.xproperty.window);
- if (f && event.xproperty.atom == dpyinfo->Xatom_net_wm_state)
- if (x_handle_net_wm_state (f, &event.xproperty)
+ dpyinfo->last_user_time = event->xproperty.time;
+ f = x_top_window_to_frame (dpyinfo, event->xproperty.window);
+ if (f && event->xproperty.atom == dpyinfo->Xatom_net_wm_state)
+ if (x_handle_net_wm_state (f, &event->xproperty)
&& FRAME_ICONIFIED_P (f)
&& f->output_data.x->net_wm_state_hidden_seen)
{
@@ -6042,39 +6059,29 @@ handle_one_xevent (struct x_display_info *dpyinfo, XEvent *eventptr,
XSETFRAME (inev.ie.frame_or_window, f);
}
- x_handle_property_notify (&event.xproperty);
- xft_settings_event (dpyinfo, &event);
+ x_handle_property_notify (&event->xproperty);
+ xft_settings_event (dpyinfo, event);
goto OTHER;
case ReparentNotify:
- f = x_top_window_to_frame (dpyinfo, event.xreparent.window);
+ f = x_top_window_to_frame (dpyinfo, event->xreparent.window);
if (f)
{
- int x, y;
- f->output_data.x->parent_desc = event.xreparent.parent;
- x_real_positions (f, &x, &y);
- f->left_pos = x;
- f->top_pos = y;
+ f->output_data.x->parent_desc = event->xreparent.parent;
+ x_real_positions (f, &f->left_pos, &f->top_pos);
/* Perhaps reparented due to a WM restart. Reset this. */
- FRAME_X_DISPLAY_INFO (f)->wm_type = X_WMTYPE_UNKNOWN;
- FRAME_X_DISPLAY_INFO (f)->net_supported_window = 0;
+ FRAME_DISPLAY_INFO (f)->wm_type = X_WMTYPE_UNKNOWN;
+ FRAME_DISPLAY_INFO (f)->net_supported_window = 0;
x_set_frame_alpha (f);
}
goto OTHER;
case Expose:
- f = x_window_to_frame (dpyinfo, event.xexpose.window);
+ f = x_window_to_frame (dpyinfo, event->xexpose.window);
if (f)
{
-#ifdef USE_GTK
- /* This seems to be needed for GTK 2.6. */
- x_clear_area (event.xexpose.display,
- event.xexpose.window,
- event.xexpose.x, event.xexpose.y,
- event.xexpose.width, event.xexpose.height);
-#endif
if (!FRAME_VISIBLE_P (f))
{
SET_FRAME_VISIBLE (f, 1);
@@ -6083,9 +6090,18 @@ handle_one_xevent (struct x_display_info *dpyinfo, XEvent *eventptr,
SET_FRAME_GARBAGED (f);
}
else
- expose_frame (f,
- event.xexpose.x, event.xexpose.y,
- event.xexpose.width, event.xexpose.height);
+ {
+#ifdef USE_GTK
+ /* This seems to be needed for GTK 2.6 and later, see
+ http://debbugs.gnu.org/cgi/bugreport.cgi?bug=15398. */
+ x_clear_area (event->xexpose.display,
+ event->xexpose.window,
+ event->xexpose.x, event->xexpose.y,
+ event->xexpose.width, event->xexpose.height);
+#endif
+ expose_frame (f, event->xexpose.x, event->xexpose.y,
+ event->xexpose.width, event->xexpose.height);
+ }
}
else
{
@@ -6097,8 +6113,7 @@ handle_one_xevent (struct x_display_info *dpyinfo, XEvent *eventptr,
themselves, so there's no way to dispatch events
to them. Recognize this case separately. */
{
- Widget widget
- = x_window_to_menu_bar (event.xexpose.window);
+ Widget widget = x_window_to_menu_bar (event->xexpose.window);
if (widget)
xlwmenu_redisplay (widget);
}
@@ -6108,11 +6123,11 @@ handle_one_xevent (struct x_display_info *dpyinfo, XEvent *eventptr,
/* Dispatch event to the widget. */
goto OTHER;
#else /* not USE_TOOLKIT_SCROLL_BARS */
- bar = x_window_to_scroll_bar (event.xexpose.display,
- event.xexpose.window);
+ bar = x_window_to_scroll_bar (event->xexpose.display,
+ event->xexpose.window);
if (bar)
- x_scroll_bar_expose (bar, &event);
+ x_scroll_bar_expose (bar, event);
#ifdef USE_X_TOOLKIT
else
goto OTHER;
@@ -6124,14 +6139,12 @@ handle_one_xevent (struct x_display_info *dpyinfo, XEvent *eventptr,
case GraphicsExpose: /* This occurs when an XCopyArea's
source area was obscured or not
available. */
- f = x_window_to_frame (dpyinfo, event.xgraphicsexpose.drawable);
+ f = x_window_to_frame (dpyinfo, event->xgraphicsexpose.drawable);
if (f)
- {
- expose_frame (f,
- event.xgraphicsexpose.x, event.xgraphicsexpose.y,
- event.xgraphicsexpose.width,
- event.xgraphicsexpose.height);
- }
+ expose_frame (f, event->xgraphicsexpose.x,
+ event->xgraphicsexpose.y,
+ event->xgraphicsexpose.width,
+ event->xgraphicsexpose.height);
#ifdef USE_X_TOOLKIT
else
goto OTHER;
@@ -6145,13 +6158,13 @@ handle_one_xevent (struct x_display_info *dpyinfo, XEvent *eventptr,
case UnmapNotify:
/* Redo the mouse-highlight after the tooltip has gone. */
- if (event.xunmap.window == tip_window)
+ if (event->xunmap.window == tip_window)
{
tip_window = 0;
- redo_mouse_highlight ();
+ x_redo_mouse_highlight (dpyinfo);
}
- f = x_top_window_to_frame (dpyinfo, event.xunmap.window);
+ f = x_top_window_to_frame (dpyinfo, event->xunmap.window);
if (f) /* F may no longer exist if
the frame was deleted. */
{
@@ -6176,7 +6189,7 @@ handle_one_xevent (struct x_display_info *dpyinfo, XEvent *eventptr,
goto OTHER;
case MapNotify:
- if (event.xmap.window == tip_window)
+ if (event->xmap.window == tip_window)
/* The tooltip has been drawn already. Avoid
the SET_FRAME_GARBAGED below. */
goto OTHER;
@@ -6184,7 +6197,7 @@ handle_one_xevent (struct x_display_info *dpyinfo, XEvent *eventptr,
/* We use x_top_window_to_frame because map events can
come for sub-windows and they don't mean that the
frame is visible. */
- f = x_top_window_to_frame (dpyinfo, event.xmap.window);
+ f = x_top_window_to_frame (dpyinfo, event->xmap.window);
if (f)
{
bool iconified = FRAME_ICONIFIED_P (f);
@@ -6224,7 +6237,7 @@ handle_one_xevent (struct x_display_info *dpyinfo, XEvent *eventptr,
case KeyPress:
- last_user_time = event.xkey.time;
+ dpyinfo->last_user_time = event->xkey.time;
ignore_next_mouse_click_timeout = 0;
#if defined (USE_X_TOOLKIT) || defined (USE_GTK)
@@ -6233,8 +6246,9 @@ handle_one_xevent (struct x_display_info *dpyinfo, XEvent *eventptr,
goto OTHER;
#endif
- f = x_any_window_to_frame (dpyinfo, event.xkey.window);
+ f = any;
+#if ! defined (USE_GTK)
/* If mouse-highlight is an integer, input clears out
mouse highlighting. */
if (!hlinfo->mouse_face_hidden && INTEGERP (Vmouse_highlight)
@@ -6244,6 +6258,7 @@ handle_one_xevent (struct x_display_info *dpyinfo, XEvent *eventptr,
clear_mouse_face (hlinfo);
hlinfo->mouse_face_hidden = 1;
}
+#endif
#if defined USE_MOTIF && defined USE_TOOLKIT_SCROLL_BARS
if (f == 0)
@@ -6251,7 +6266,7 @@ handle_one_xevent (struct x_display_info *dpyinfo, XEvent *eventptr,
/* Scroll bars consume key events, but we want
the keys to go to the scroll bar's frame. */
Widget widget = XtWindowToWidget (dpyinfo->display,
- event.xkey.window);
+ event->xkey.window);
if (widget && XmIsScrollBar (widget))
{
widget = XtParent (widget);
@@ -6280,6 +6295,8 @@ handle_one_xevent (struct x_display_info *dpyinfo, XEvent *eventptr,
int modifiers;
Lisp_Object coding_system = Qlatin_1;
Lisp_Object c;
+ /* Event will be modified. */
+ XKeyEvent xkey = event->xkey;
#ifdef USE_GTK
/* Don't pass keys to GTK. A Tab will shift focus to the
@@ -6289,20 +6306,19 @@ handle_one_xevent (struct x_display_info *dpyinfo, XEvent *eventptr,
*finish = X_EVENT_DROP;
#endif
- event.xkey.state
- |= x_emacs_to_x_modifiers (FRAME_X_DISPLAY_INFO (f),
- extra_keyboard_modifiers);
- modifiers = event.xkey.state;
+ xkey.state |= x_emacs_to_x_modifiers (FRAME_DISPLAY_INFO (f),
+ extra_keyboard_modifiers);
+ modifiers = xkey.state;
/* This will have to go some day... */
/* make_lispy_event turns chars into control chars.
Don't do it here because XLookupString is too eager. */
- event.xkey.state &= ~ControlMask;
- event.xkey.state &= ~(dpyinfo->meta_mod_mask
- | dpyinfo->super_mod_mask
- | dpyinfo->hyper_mod_mask
- | dpyinfo->alt_mod_mask);
+ xkey.state &= ~ControlMask;
+ xkey.state &= ~(dpyinfo->meta_mod_mask
+ | dpyinfo->super_mod_mask
+ | dpyinfo->hyper_mod_mask
+ | dpyinfo->alt_mod_mask);
/* In case Meta is ComposeCharacter,
clear its status. According to Markus Ehrnsperger
@@ -6319,7 +6335,7 @@ handle_one_xevent (struct x_display_info *dpyinfo, XEvent *eventptr,
coding_system = Vlocale_coding_system;
nbytes = XmbLookupString (FRAME_XIC (f),
- &event.xkey, (char *) copy_bufptr,
+ &xkey, (char *) copy_bufptr,
copy_bufsiz, &keysym,
&status_return);
if (status_return == XBufferOverflow)
@@ -6327,7 +6343,7 @@ handle_one_xevent (struct x_display_info *dpyinfo, XEvent *eventptr,
copy_bufsiz = nbytes + 1;
copy_bufptr = alloca (copy_bufsiz);
nbytes = XmbLookupString (FRAME_XIC (f),
- &event.xkey, (char *) copy_bufptr,
+ &xkey, (char *) copy_bufptr,
copy_bufsiz, &keysym,
&status_return);
}
@@ -6344,11 +6360,11 @@ handle_one_xevent (struct x_display_info *dpyinfo, XEvent *eventptr,
emacs_abort ();
}
else
- nbytes = XLookupString (&event.xkey, (char *) copy_bufptr,
+ nbytes = XLookupString (&xkey, (char *) copy_bufptr,
copy_bufsiz, &keysym,
&compose_status);
#else
- nbytes = XLookupString (&event.xkey, (char *) copy_bufptr,
+ nbytes = XLookupString (&xkey, (char *) copy_bufptr,
copy_bufsiz, &keysym,
&compose_status);
#endif
@@ -6364,8 +6380,8 @@ handle_one_xevent (struct x_display_info *dpyinfo, XEvent *eventptr,
/* Common for all keysym input events. */
XSETFRAME (inev.ie.frame_or_window, f);
inev.ie.modifiers
- = x_x_to_emacs_modifiers (FRAME_X_DISPLAY_INFO (f), modifiers);
- inev.ie.timestamp = event.xkey.time;
+ = x_x_to_emacs_modifiers (FRAME_DISPLAY_INFO (f), modifiers);
+ inev.ie.timestamp = xkey.time;
/* First deal with keysyms which have defined
translations to characters. */
@@ -6541,6 +6557,8 @@ handle_one_xevent (struct x_display_info *dpyinfo, XEvent *eventptr,
if (keysym == NoSymbol)
break;
}
+ /* FIXME: check side effects and remove this. */
+ ((XEvent *) event)->xkey = xkey;
}
done_keysym:
#ifdef HAVE_X_I18N
@@ -6553,7 +6571,7 @@ handle_one_xevent (struct x_display_info *dpyinfo, XEvent *eventptr,
#endif
case KeyRelease:
- last_user_time = event.xkey.time;
+ dpyinfo->last_user_time = event->xkey.time;
#ifdef HAVE_X_I18N
/* Don't dispatch this event since XtDispatchEvent calls
XFilterEvent, and two calls in a row may freeze the
@@ -6564,35 +6582,35 @@ handle_one_xevent (struct x_display_info *dpyinfo, XEvent *eventptr,
#endif
case EnterNotify:
- last_user_time = event.xcrossing.time;
- x_detect_focus_change (dpyinfo, &event, &inev.ie);
+ dpyinfo->last_user_time = event->xcrossing.time;
+ x_detect_focus_change (dpyinfo, any, event, &inev.ie);
- f = x_any_window_to_frame (dpyinfo, event.xcrossing.window);
+ f = any;
if (f && x_mouse_click_focus_ignore_position)
- ignore_next_mouse_click_timeout = event.xmotion.time + 200;
+ ignore_next_mouse_click_timeout = event->xmotion.time + 200;
/* EnterNotify counts as mouse movement,
so update things that depend on mouse position. */
if (f && !f->output_data.x->hourglass_p)
- note_mouse_movement (f, &event.xmotion);
+ note_mouse_movement (f, &event->xmotion);
#ifdef USE_GTK
/* We may get an EnterNotify on the buttons in the toolbar. In that
case we moved out of any highlighted area and need to note this. */
- if (!f && last_mouse_glyph_frame)
- note_mouse_movement (last_mouse_glyph_frame, &event.xmotion);
+ if (!f && dpyinfo->last_mouse_glyph_frame)
+ note_mouse_movement (dpyinfo->last_mouse_glyph_frame, &event->xmotion);
#endif
goto OTHER;
case FocusIn:
- x_detect_focus_change (dpyinfo, &event, &inev.ie);
+ x_detect_focus_change (dpyinfo, any, event, &inev.ie);
goto OTHER;
case LeaveNotify:
- last_user_time = event.xcrossing.time;
- x_detect_focus_change (dpyinfo, &event, &inev.ie);
+ dpyinfo->last_user_time = event->xcrossing.time;
+ x_detect_focus_change (dpyinfo, any, event, &inev.ie);
- f = x_top_window_to_frame (dpyinfo, event.xcrossing.window);
+ f = x_top_window_to_frame (dpyinfo, event->xcrossing.window);
if (f)
{
if (f == hlinfo->mouse_face_mouse_frame)
@@ -6612,26 +6630,23 @@ handle_one_xevent (struct x_display_info *dpyinfo, XEvent *eventptr,
}
#ifdef USE_GTK
/* See comment in EnterNotify above */
- else if (last_mouse_glyph_frame)
- note_mouse_movement (last_mouse_glyph_frame, &event.xmotion);
+ else if (dpyinfo->last_mouse_glyph_frame)
+ note_mouse_movement (dpyinfo->last_mouse_glyph_frame, &event->xmotion);
#endif
goto OTHER;
case FocusOut:
- x_detect_focus_change (dpyinfo, &event, &inev.ie);
+ x_detect_focus_change (dpyinfo, any, event, &inev.ie);
goto OTHER;
case MotionNotify:
{
- last_user_time = event.xmotion.time;
+ dpyinfo->last_user_time = event->xmotion.time;
previous_help_echo_string = help_echo_string;
help_echo_string = Qnil;
- if (dpyinfo->grabbed && last_mouse_frame
- && FRAME_LIVE_P (last_mouse_frame))
- f = last_mouse_frame;
- else
- f = x_window_to_frame (dpyinfo, event.xmotion.window);
+ f = (x_mouse_grabbed (dpyinfo) ? dpyinfo->last_mouse_frame
+ : x_window_to_frame (dpyinfo, event->xmotion.window));
if (hlinfo->mouse_face_hidden)
{
@@ -6640,7 +6655,7 @@ handle_one_xevent (struct x_display_info *dpyinfo, XEvent *eventptr,
}
#ifdef USE_GTK
- if (f && xg_event_is_for_scrollbar (f, &event))
+ if (f && xg_event_is_for_scrollbar (f, event))
f = 0;
#endif
if (f)
@@ -6652,7 +6667,7 @@ handle_one_xevent (struct x_display_info *dpyinfo, XEvent *eventptr,
{
static Lisp_Object last_mouse_window;
Lisp_Object window = window_from_coordinates
- (f, event.xmotion.x, event.xmotion.y, 0, 0);
+ (f, event->xmotion.x, event->xmotion.y, 0, 0);
/* Window will be selected only when it is not selected now and
last mouse movement event was not in it. Minibuffer window
@@ -6673,18 +6688,18 @@ handle_one_xevent (struct x_display_info *dpyinfo, XEvent *eventptr,
/* Remember the last window where we saw the mouse. */
last_mouse_window = window;
}
- if (!note_mouse_movement (f, &event.xmotion))
+ if (!note_mouse_movement (f, &event->xmotion))
help_echo_string = previous_help_echo_string;
}
else
{
#ifndef USE_TOOLKIT_SCROLL_BARS
struct scroll_bar *bar
- = x_window_to_scroll_bar (event.xmotion.display,
- event.xmotion.window);
+ = x_window_to_scroll_bar (event->xmotion.display,
+ event->xmotion.window);
if (bar)
- x_scroll_bar_note_movement (bar, &event.xmotion);
+ x_scroll_bar_note_movement (bar, &event->xmotion);
#endif /* USE_TOOLKIT_SCROLL_BARS */
/* If we move outside the frame, then we're
@@ -6701,14 +6716,14 @@ handle_one_xevent (struct x_display_info *dpyinfo, XEvent *eventptr,
}
case ConfigureNotify:
- f = x_top_window_to_frame (dpyinfo, event.xconfigure.window);
+ f = x_top_window_to_frame (dpyinfo, event->xconfigure.window);
#ifdef USE_GTK
if (!f
- && (f = x_any_window_to_frame (dpyinfo, event.xconfigure.window))
- && event.xconfigure.window == FRAME_X_WINDOW (f))
+ && (f = any)
+ && event->xconfigure.window == FRAME_X_WINDOW (f))
{
- xg_frame_resized (f, event.xconfigure.width,
- event.xconfigure.height);
+ xg_frame_resized (f, event->xconfigure.width,
+ event->xconfigure.height);
f = 0;
}
#endif
@@ -6716,8 +6731,8 @@ handle_one_xevent (struct x_display_info *dpyinfo, XEvent *eventptr,
{
#ifndef USE_X_TOOLKIT
#ifndef USE_GTK
- int rows = FRAME_PIXEL_HEIGHT_TO_TEXT_LINES (f, event.xconfigure.height);
- int columns = FRAME_PIXEL_WIDTH_TO_TEXT_COLS (f, event.xconfigure.width);
+ int rows = FRAME_PIXEL_HEIGHT_TO_TEXT_LINES (f, event->xconfigure.height);
+ int columns = FRAME_PIXEL_WIDTH_TO_TEXT_COLS (f, event->xconfigure.width);
/* In the toolkit version, change_frame_size
is called by the code that handles resizing
@@ -6728,16 +6743,16 @@ handle_one_xevent (struct x_display_info *dpyinfo, XEvent *eventptr,
to check the pixel dimensions as well. */
if (columns != FRAME_COLS (f)
|| rows != FRAME_LINES (f)
- || event.xconfigure.width != FRAME_PIXEL_WIDTH (f)
- || event.xconfigure.height != FRAME_PIXEL_HEIGHT (f))
+ || event->xconfigure.width != FRAME_PIXEL_WIDTH (f)
+ || event->xconfigure.height != FRAME_PIXEL_HEIGHT (f))
{
change_frame_size (f, rows, columns, 0, 1, 0);
SET_FRAME_GARBAGED (f);
cancel_mouse_face (f);
}
- FRAME_PIXEL_WIDTH (f) = event.xconfigure.width;
- FRAME_PIXEL_HEIGHT (f) = event.xconfigure.height;
+ FRAME_PIXEL_WIDTH (f) = event->xconfigure.width;
+ FRAME_PIXEL_HEIGHT (f) = event->xconfigure.height;
#endif /* not USE_GTK */
#endif
@@ -6747,9 +6762,7 @@ handle_one_xevent (struct x_display_info *dpyinfo, XEvent *eventptr,
if (FRAME_GTK_OUTER_WIDGET (f)
&& gtk_widget_get_mapped (FRAME_GTK_OUTER_WIDGET (f)))
#endif
- {
- x_real_positions (f, &f->left_pos, &f->top_pos);
- }
+ x_real_positions (f, &f->left_pos, &f->top_pos);
#ifdef HAVE_X_I18N
if (FRAME_XIC (f) && (FRAME_XIC_STYLE (f) & XIMStatusArea))
@@ -6766,42 +6779,37 @@ handle_one_xevent (struct x_display_info *dpyinfo, XEvent *eventptr,
by the rest of Emacs, we put it here. */
bool tool_bar_p = 0;
- memset (&compose_status, 0, sizeof (compose_status));
- last_mouse_glyph_frame = 0;
- last_user_time = event.xbutton.time;
+ memset (&compose_status, 0, sizeof (compose_status));
+ dpyinfo->last_mouse_glyph_frame = NULL;
+ dpyinfo->last_user_time = event->xbutton.time;
- if (dpyinfo->grabbed
- && last_mouse_frame
- && FRAME_LIVE_P (last_mouse_frame))
- f = last_mouse_frame;
- else
- f = x_window_to_frame (dpyinfo, event.xbutton.window);
+ f = (x_mouse_grabbed (dpyinfo) ? dpyinfo->last_mouse_frame
+ : x_window_to_frame (dpyinfo, event->xbutton.window));
#ifdef USE_GTK
- if (f && xg_event_is_for_scrollbar (f, &event))
+ if (f && xg_event_is_for_scrollbar (f, event))
f = 0;
#endif
if (f)
{
+#if ! defined (USE_GTK)
/* Is this in the tool-bar? */
if (WINDOWP (f->tool_bar_window)
&& WINDOW_TOTAL_LINES (XWINDOW (f->tool_bar_window)))
{
Lisp_Object window;
- int x = event.xbutton.x;
- int y = event.xbutton.y;
+ int x = event->xbutton.x;
+ int y = event->xbutton.y;
window = window_from_coordinates (f, x, y, 0, 1);
tool_bar_p = EQ (window, f->tool_bar_window);
- if (tool_bar_p && event.xbutton.button < 4)
- {
- handle_tool_bar_click (f, x, y,
- event.xbutton.type == ButtonPress,
- x_x_to_emacs_modifiers (dpyinfo,
- event.xbutton.state));
- }
+ if (tool_bar_p && event->xbutton.button < 4)
+ handle_tool_bar_click
+ (f, x, y, event->xbutton.type == ButtonPress,
+ x_x_to_emacs_modifiers (dpyinfo, event->xbutton.state));
}
+#endif /* !USE_GTK */
if (!tool_bar_p)
#if defined (USE_X_TOOLKIT) || defined (USE_GTK)
@@ -6810,52 +6818,52 @@ handle_one_xevent (struct x_display_info *dpyinfo, XEvent *eventptr,
{
if (ignore_next_mouse_click_timeout)
{
- if (event.type == ButtonPress
- && (int)(event.xbutton.time - ignore_next_mouse_click_timeout) > 0)
+ if (event->type == ButtonPress
+ && event->xbutton.time > ignore_next_mouse_click_timeout)
{
ignore_next_mouse_click_timeout = 0;
- construct_mouse_click (&inev.ie, &event.xbutton, f);
+ construct_mouse_click (&inev.ie, &event->xbutton, f);
}
- if (event.type == ButtonRelease)
+ if (event->type == ButtonRelease)
ignore_next_mouse_click_timeout = 0;
}
else
- construct_mouse_click (&inev.ie, &event.xbutton, f);
+ construct_mouse_click (&inev.ie, &event->xbutton, f);
}
if (FRAME_X_EMBEDDED_P (f))
- xembed_send_message (f, event.xbutton.time,
+ xembed_send_message (f, event->xbutton.time,
XEMBED_REQUEST_FOCUS, 0, 0, 0);
}
else
{
struct scroll_bar *bar
- = x_window_to_scroll_bar (event.xbutton.display,
- event.xbutton.window);
+ = x_window_to_scroll_bar (event->xbutton.display,
+ event->xbutton.window);
#ifdef USE_TOOLKIT_SCROLL_BARS
/* Make the "Ctrl-Mouse-2 splits window" work for toolkit
scroll bars. */
- if (bar && event.xbutton.state & ControlMask)
+ if (bar && event->xbutton.state & ControlMask)
{
- x_scroll_bar_handle_click (bar, &event, &inev.ie);
+ x_scroll_bar_handle_click (bar, event, &inev.ie);
*finish = X_EVENT_DROP;
}
#else /* not USE_TOOLKIT_SCROLL_BARS */
if (bar)
- x_scroll_bar_handle_click (bar, &event, &inev.ie);
+ x_scroll_bar_handle_click (bar, event, &inev.ie);
#endif /* not USE_TOOLKIT_SCROLL_BARS */
}
- if (event.type == ButtonPress)
+ if (event->type == ButtonPress)
{
- dpyinfo->grabbed |= (1 << event.xbutton.button);
- last_mouse_frame = f;
+ dpyinfo->grabbed |= (1 << event->xbutton.button);
+ dpyinfo->last_mouse_frame = f;
if (!tool_bar_p)
last_tool_bar_item = -1;
}
else
- dpyinfo->grabbed &= ~(1 << event.xbutton.button);
+ dpyinfo->grabbed &= ~(1 << event->xbutton.button);
/* Ignore any mouse motion that happened before this event;
any subsequent mouse-movement Emacs events should reflect
@@ -6864,7 +6872,7 @@ handle_one_xevent (struct x_display_info *dpyinfo, XEvent *eventptr,
f->mouse_moved = 0;
#if defined (USE_X_TOOLKIT) || defined (USE_GTK)
- f = x_menubar_window_to_frame (dpyinfo, &event);
+ f = x_menubar_window_to_frame (dpyinfo, event);
/* For a down-event in the menu bar,
don't pass it to Xt right now.
Instead, save it away
@@ -6873,19 +6881,23 @@ handle_one_xevent (struct x_display_info *dpyinfo, XEvent *eventptr,
if (! popup_activated ()
#ifdef USE_GTK
/* Gtk+ menus only react to the first three buttons. */
- && event.xbutton.button < 3
+ && event->xbutton.button < 3
#endif
- && f && event.type == ButtonPress
+ && f && event->type == ButtonPress
/* Verify the event is really within the menu bar
and not just sent to it due to grabbing. */
- && event.xbutton.x >= 0
- && event.xbutton.x < FRAME_PIXEL_WIDTH (f)
- && event.xbutton.y >= 0
- && event.xbutton.y < f->output_data.x->menubar_height
- && event.xbutton.same_screen)
+ && event->xbutton.x >= 0
+ && event->xbutton.x < FRAME_PIXEL_WIDTH (f)
+ && event->xbutton.y >= 0
+ && event->xbutton.y < f->output_data.x->menubar_height
+ && event->xbutton.same_screen)
{
- SET_SAVED_BUTTON_EVENT;
- *finish = X_EVENT_DROP;
+ if (!f->output_data.x->saved_menu_event)
+ f->output_data.x->saved_menu_event = xmalloc (sizeof *event);
+ *f->output_data.x->saved_menu_event = *event;
+ inev.ie.kind = MENU_BAR_ACTIVATE_EVENT;
+ XSETFRAME (inev.ie.frame_or_window, f);
+ *finish = X_EVENT_DROP;
}
else
goto OTHER;
@@ -6905,18 +6917,18 @@ handle_one_xevent (struct x_display_info *dpyinfo, XEvent *eventptr,
case MappingNotify:
/* Someone has changed the keyboard mapping - update the
local cache. */
- switch (event.xmapping.request)
+ switch (event->xmapping.request)
{
case MappingModifier:
x_find_modifier_meanings (dpyinfo);
/* This is meant to fall through. */
case MappingKeyboard:
- XRefreshKeyboardMapping (&event.xmapping);
+ XRefreshKeyboardMapping ((XMappingEvent *) &event->xmapping);
}
goto OTHER;
case DestroyNotify:
- xft_settings_event (dpyinfo, &event);
+ xft_settings_event (dpyinfo, event);
break;
default:
@@ -6924,7 +6936,7 @@ handle_one_xevent (struct x_display_info *dpyinfo, XEvent *eventptr,
#ifdef USE_X_TOOLKIT
block_input ();
if (*finish != X_EVENT_DROP)
- XtDispatchEvent (&event);
+ XtDispatchEvent ((XEvent *) event);
unblock_input ();
#endif /* USE_X_TOOLKIT */
break;
@@ -6962,7 +6974,6 @@ handle_one_xevent (struct x_display_info *dpyinfo, XEvent *eventptr,
}
SAFE_FREE ();
- *eventptr = event;
return count;
}
@@ -7002,6 +7013,7 @@ XTread_socket (struct terminal *terminal, struct input_event *hold_quit)
{
int count = 0;
int event_found = 0;
+ struct x_display_info *dpyinfo = terminal->display_info.x;
block_input ();
@@ -7009,36 +7021,33 @@ XTread_socket (struct terminal *terminal, struct input_event *hold_quit)
input_signal_count++;
/* For debugging, this gives a way to fake an I/O error. */
- if (terminal->display_info.x == XTread_socket_fake_io_error)
+ if (dpyinfo == XTread_socket_fake_io_error)
{
XTread_socket_fake_io_error = 0;
- x_io_error_quitter (terminal->display_info.x->display);
+ x_io_error_quitter (dpyinfo->display);
}
#ifndef USE_GTK
- while (XPending (terminal->display_info.x->display))
+ while (XPending (dpyinfo->display))
{
int finish;
XEvent event;
- XNextEvent (terminal->display_info.x->display, &event);
+ XNextEvent (dpyinfo->display, &event);
#ifdef HAVE_X_I18N
/* Filter events for the current X input method. */
- if (x_filter_event (terminal->display_info.x, &event))
+ if (x_filter_event (dpyinfo, &event))
continue;
#endif
event_found = 1;
- count += handle_one_xevent (terminal->display_info.x,
- &event, &finish, hold_quit);
+ count += handle_one_xevent (dpyinfo, &event, &finish, hold_quit);
if (finish == X_EVENT_GOTO_OUT)
- goto out;
+ break;
}
- out:;
-
#else /* USE_GTK */
/* For GTK we must use the GTK event loop. But XEvents gets passed
@@ -7088,12 +7097,11 @@ XTread_socket (struct terminal *terminal, struct input_event *hold_quit)
}
/* If the focus was just given to an auto-raising frame,
- raise it now. */
- /* ??? This ought to be able to handle more than one such frame. */
- if (pending_autoraise_frame)
+ raise it now. FIXME: handle more than one such frame. */
+ if (dpyinfo->x_pending_autoraise_frame)
{
- x_raise_frame (pending_autoraise_frame);
- pending_autoraise_frame = 0;
+ x_raise_frame (dpyinfo->x_pending_autoraise_frame);
+ dpyinfo->x_pending_autoraise_frame = NULL;
}
unblock_input ();
@@ -7141,7 +7149,7 @@ static void
x_draw_hollow_cursor (struct window *w, struct glyph_row *row)
{
struct frame *f = XFRAME (WINDOW_FRAME (w));
- struct x_display_info *dpyinfo = FRAME_X_DISPLAY_INFO (f);
+ struct x_display_info *dpyinfo = FRAME_DISPLAY_INFO (f);
Display *dpy = FRAME_X_DISPLAY (f);
int x, y, wd, h;
XGCValues xgcv;
@@ -7208,7 +7216,7 @@ x_draw_bar_cursor (struct window *w, struct glyph_row *row, int width, enum text
{
Display *dpy = FRAME_X_DISPLAY (f);
Window window = FRAME_X_WINDOW (f);
- GC gc = FRAME_X_DISPLAY_INFO (f)->scratch_cursor_gc;
+ GC gc = FRAME_DISPLAY_INFO (f)->scratch_cursor_gc;
unsigned long mask = GCForeground | GCBackground | GCGraphicsExposures;
struct face *face = FACE_FROM_ID (f, cursor_glyph->face_id);
XGCValues xgcv;
@@ -7229,7 +7237,7 @@ x_draw_bar_cursor (struct window *w, struct glyph_row *row, int width, enum text
else
{
gc = XCreateGC (dpy, window, mask, &xgcv);
- FRAME_X_DISPLAY_INFO (f)->scratch_cursor_gc = gc;
+ FRAME_DISPLAY_INFO (f)->scratch_cursor_gc = gc;
}
x_clip_to_row (w, row, TEXT_AREA, gc);
@@ -7361,9 +7369,7 @@ x_draw_window_cursor (struct window *w, struct glyph_row *glyph_row, int x,
#endif
}
-#ifndef XFlush
XFlush (FRAME_X_DISPLAY (f));
-#endif
}
@@ -7398,7 +7404,7 @@ x_bitmap_icon (struct frame *f, Lisp_Object file)
else
{
/* Create the GNU bitmap and mask if necessary. */
- if (FRAME_X_DISPLAY_INFO (f)->icon_bitmap_id < 0)
+ if (FRAME_DISPLAY_INFO (f)->icon_bitmap_id < 0)
{
ptrdiff_t rc = -1;
@@ -7412,7 +7418,7 @@ x_bitmap_icon (struct frame *f, Lisp_Object file)
rc = x_create_bitmap_from_xpm_data (f, gnu_xpm_bits);
if (rc != -1)
- FRAME_X_DISPLAY_INFO (f)->icon_bitmap_id = rc;
+ FRAME_DISPLAY_INFO (f)->icon_bitmap_id = rc;
#endif
@@ -7424,8 +7430,8 @@ x_bitmap_icon (struct frame *f, Lisp_Object file)
if (rc == -1)
return 1;
- FRAME_X_DISPLAY_INFO (f)->icon_bitmap_id = rc;
- x_create_bitmap_mask (f, FRAME_X_DISPLAY_INFO (f)->icon_bitmap_id);
+ FRAME_DISPLAY_INFO (f)->icon_bitmap_id = rc;
+ x_create_bitmap_mask (f, FRAME_DISPLAY_INFO (f)->icon_bitmap_id);
}
}
@@ -7433,9 +7439,9 @@ x_bitmap_icon (struct frame *f, Lisp_Object file)
this increments the ref-count one extra time.
As a result, the GNU bitmap and mask are never freed.
That way, we don't have to worry about allocating it again. */
- x_reference_bitmap (f, FRAME_X_DISPLAY_INFO (f)->icon_bitmap_id);
+ x_reference_bitmap (f, FRAME_DISPLAY_INFO (f)->icon_bitmap_id);
- bitmap_id = FRAME_X_DISPLAY_INFO (f)->icon_bitmap_id;
+ bitmap_id = FRAME_DISPLAY_INFO (f)->icon_bitmap_id;
}
x_wm_set_icon_pixmap (f, bitmap_id);
@@ -7649,7 +7655,7 @@ x_connection_closed (Display *dpy, const char *error_message)
if (FRAME_X_P (XFRAME (frame))
&& FRAME_X_P (XFRAME (minibuf_frame))
&& ! EQ (frame, minibuf_frame)
- && FRAME_X_DISPLAY_INFO (XFRAME (minibuf_frame)) == dpyinfo)
+ && FRAME_DISPLAY_INFO (XFRAME (minibuf_frame)) == dpyinfo)
delete_frame (frame, Qnoelisp);
}
@@ -7658,7 +7664,7 @@ x_connection_closed (Display *dpy, const char *error_message)
for another frame that we need to delete. */
FOR_EACH_FRAME (tail, frame)
if (FRAME_X_P (XFRAME (frame))
- && FRAME_X_DISPLAY_INFO (XFRAME (frame)) == dpyinfo)
+ && FRAME_DISPLAY_INFO (XFRAME (frame)) == dpyinfo)
{
/* Set this to t so that delete_frame won't get confused
trying to find a replacement. */
@@ -7881,7 +7887,7 @@ xim_destroy_callback (XIM xim, XPointer client_data, XPointer call_data)
FOR_EACH_FRAME (tail, frame)
{
struct frame *f = XFRAME (frame);
- if (FRAME_X_P (f) && FRAME_X_DISPLAY_INFO (f) == dpyinfo)
+ if (FRAME_X_P (f) && FRAME_DISPLAY_INFO (f) == dpyinfo)
{
FRAME_XIC (f) = NULL;
xic_free_xfontset (f);
@@ -7972,7 +7978,7 @@ xim_instantiate_callback (Display *display, XPointer client_data, XPointer call_
struct frame *f = XFRAME (frame);
if (FRAME_X_P (f)
- && FRAME_X_DISPLAY_INFO (f) == xim_inst->dpyinfo)
+ && FRAME_DISPLAY_INFO (f) == xim_inst->dpyinfo)
if (FRAME_XIC (f) == NULL)
{
create_frame_xic (f);
@@ -8070,7 +8076,7 @@ x_calc_absolute_position (struct frame *f)
/* Treat negative positions as relative to the leftmost bottommost
position that fits on the screen. */
if (flags & XNegative)
- f->left_pos = x_display_pixel_width (FRAME_X_DISPLAY_INFO (f))
+ f->left_pos = x_display_pixel_width (FRAME_DISPLAY_INFO (f))
- FRAME_PIXEL_WIDTH (f) + f->left_pos;
{
@@ -8093,7 +8099,7 @@ x_calc_absolute_position (struct frame *f)
#endif
if (flags & YNegative)
- f->top_pos = x_display_pixel_height (FRAME_X_DISPLAY_INFO (f))
+ f->top_pos = x_display_pixel_height (FRAME_DISPLAY_INFO (f))
- height + f->top_pos;
}
@@ -8133,7 +8139,7 @@ x_set_offset (struct frame *f, register int xoff, register int yoff, int change_
modified_left = f->left_pos;
modified_top = f->top_pos;
- if (change_gravity != 0 && FRAME_X_DISPLAY_INFO (f)->wm_type == X_WMTYPE_A)
+ if (change_gravity != 0 && FRAME_DISPLAY_INFO (f)->wm_type == X_WMTYPE_A)
{
/* Some WMs (twm, wmaker at least) has an offset that is smaller
than the WM decorations. So we use the calculated offset instead
@@ -8146,7 +8152,7 @@ x_set_offset (struct frame *f, register int xoff, register int yoff, int change_
modified_left, modified_top);
x_sync_with_move (f, f->left_pos, f->top_pos,
- FRAME_X_DISPLAY_INFO (f)->wm_type == X_WMTYPE_UNKNOWN
+ FRAME_DISPLAY_INFO (f)->wm_type == X_WMTYPE_UNKNOWN
? 1 : 0);
/* change_gravity is non-zero when this function is called from Lisp to
@@ -8160,8 +8166,8 @@ x_set_offset (struct frame *f, register int xoff, register int yoff, int change_
need to compute the top/left offset adjustment for this frame. */
if (change_gravity != 0 &&
- (FRAME_X_DISPLAY_INFO (f)->wm_type == X_WMTYPE_UNKNOWN
- || (FRAME_X_DISPLAY_INFO (f)->wm_type == X_WMTYPE_A
+ (FRAME_DISPLAY_INFO (f)->wm_type == X_WMTYPE_UNKNOWN
+ || (FRAME_DISPLAY_INFO (f)->wm_type == X_WMTYPE_A
&& (FRAME_X_OUTPUT (f)->move_offset_left == 0
&& FRAME_X_OUTPUT (f)->move_offset_top == 0))))
x_check_expected_move (f, modified_left, modified_top);
@@ -8182,7 +8188,7 @@ wm_supports (struct frame *f, Atom want_atom)
unsigned long actual_size, bytes_remaining;
int i, rc, actual_format;
Window wmcheck_window;
- struct x_display_info *dpyinfo = FRAME_X_DISPLAY_INFO (f);
+ struct x_display_info *dpyinfo = FRAME_DISPLAY_INFO (f);
Window target_window = dpyinfo->root_window;
long max_len = 65536;
Display *dpy = FRAME_X_DISPLAY (f);
@@ -8263,7 +8269,7 @@ wm_supports (struct frame *f, Atom want_atom)
static void
set_wm_state (Lisp_Object frame, int add, Atom atom, Atom value)
{
- struct x_display_info *dpyinfo = FRAME_X_DISPLAY_INFO (XFRAME (frame));
+ struct x_display_info *dpyinfo = FRAME_DISPLAY_INFO (XFRAME (frame));
x_send_client_event (frame, make_number (0), frame,
dpyinfo->Xatom_net_wm_state,
@@ -8282,7 +8288,7 @@ void
x_set_sticky (struct frame *f, Lisp_Object new_value, Lisp_Object old_value)
{
Lisp_Object frame;
- struct x_display_info *dpyinfo = FRAME_X_DISPLAY_INFO (f);
+ struct x_display_info *dpyinfo = FRAME_DISPLAY_INFO (f);
XSETFRAME (frame, f);
@@ -8305,7 +8311,7 @@ get_current_wm_state (struct frame *f,
Atom actual_type;
unsigned long actual_size, bytes_remaining;
int i, rc, actual_format, is_hidden = 0;
- struct x_display_info *dpyinfo = FRAME_X_DISPLAY_INFO (f);
+ struct x_display_info *dpyinfo = FRAME_DISPLAY_INFO (f);
long max_len = 65536;
Display *dpy = FRAME_X_DISPLAY (f);
unsigned char *tmp_data = NULL;
@@ -8369,7 +8375,7 @@ get_current_wm_state (struct frame *f,
static int
do_ewmh_fullscreen (struct frame *f)
{
- struct x_display_info *dpyinfo = FRAME_X_DISPLAY_INFO (f);
+ struct x_display_info *dpyinfo = FRAME_DISPLAY_INFO (f);
int have_net_atom = wm_supports (f, dpyinfo->Xatom_net_wm_state);
int cur, dummy;
@@ -8449,7 +8455,7 @@ XTfullscreen_hook (struct frame *f)
static int
-x_handle_net_wm_state (struct frame *f, XPropertyEvent *event)
+x_handle_net_wm_state (struct frame *f, const XPropertyEvent *event)
{
int value = FULLSCREEN_NONE;
Lisp_Object lval;
@@ -8487,7 +8493,7 @@ x_check_fullscreen (struct frame *f)
if (do_ewmh_fullscreen (f))
return;
- if (f->output_data.x->parent_desc != FRAME_X_DISPLAY_INFO (f)->root_window)
+ if (f->output_data.x->parent_desc != FRAME_DISPLAY_INFO (f)->root_window)
return; /* Only fullscreen without WM or with EWM hints (above). */
/* Setting fullscreen to nil doesn't do anything. We could save the
@@ -8497,7 +8503,7 @@ x_check_fullscreen (struct frame *f)
if (f->want_fullscreen != FULLSCREEN_NONE)
{
int width = FRAME_PIXEL_WIDTH (f), height = FRAME_PIXEL_HEIGHT (f);
- struct x_display_info *dpyinfo = FRAME_X_DISPLAY_INFO (f);
+ struct x_display_info *dpyinfo = FRAME_DISPLAY_INFO (f);
switch (f->want_fullscreen)
{
@@ -8544,7 +8550,7 @@ x_check_expected_move (struct frame *f, int expected_left, int expected_top)
int adjusted_left;
int adjusted_top;
- FRAME_X_DISPLAY_INFO (f)->wm_type = X_WMTYPE_A;
+ FRAME_DISPLAY_INFO (f)->wm_type = X_WMTYPE_A;
FRAME_X_OUTPUT (f)->move_offset_left = expected_left - current_left;
FRAME_X_OUTPUT (f)->move_offset_top = expected_top - current_top;
@@ -8562,7 +8568,7 @@ x_check_expected_move (struct frame *f, int expected_left, int expected_top)
/* It's a "Type B" window manager. We don't have to adjust the
frame's position. */
- FRAME_X_DISPLAY_INFO (f)->wm_type = X_WMTYPE_B;
+ FRAME_DISPLAY_INFO (f)->wm_type = X_WMTYPE_B;
}
@@ -8618,15 +8624,14 @@ x_wait_for_event (struct frame *f, int eventtype)
struct timespec tmo, tmo_at, time_now;
int fd = ConnectionNumber (FRAME_X_DISPLAY (f));
- pending_event_wait.f = f;
- pending_event_wait.eventtype = eventtype;
+ f->wait_event_type = eventtype;
/* Set timeout to 0.1 second. Hopefully not noticeable.
Maybe it should be configurable. */
tmo = make_timespec (0, 100 * 1000 * 1000);
tmo_at = timespec_add (current_timespec (), tmo);
- while (pending_event_wait.eventtype)
+ while (f->wait_event_type)
{
pending_signals = 1;
totally_unblock_input ();
@@ -8645,8 +8650,8 @@ x_wait_for_event (struct frame *f, int eventtype)
if (pselect (fd + 1, &fds, NULL, NULL, &tmo, NULL) == 0)
break; /* Timeout */
}
- pending_event_wait.f = 0;
- pending_event_wait.eventtype = 0;
+
+ f->wait_event_type = 0;
}
@@ -8854,15 +8859,16 @@ x_ewmh_activate_frame (struct frame *f)
/* See Window Manager Specification/Extended Window Manager Hints at
http://freedesktop.org/wiki/Specifications/wm-spec */
- struct x_display_info *dpyinfo = FRAME_X_DISPLAY_INFO (f);
+ struct x_display_info *dpyinfo = FRAME_DISPLAY_INFO (f);
if (FRAME_VISIBLE_P (f) && wm_supports (f, dpyinfo->Xatom_net_active_window))
{
Lisp_Object frame;
XSETFRAME (frame, f);
x_send_client_event (frame, make_number (0), frame,
- dpyinfo->Xatom_net_active_window,
- make_number (32), list2i (1, last_user_time));
+ dpyinfo->Xatom_net_active_window,
+ make_number (32),
+ list2i (1, dpyinfo->last_user_time));
}
}
@@ -8887,7 +8893,7 @@ static void
xembed_set_info (struct frame *f, enum xembed_info flags)
{
unsigned long data[2];
- struct x_display_info *dpyinfo = FRAME_X_DISPLAY_INFO (f);
+ struct x_display_info *dpyinfo = FRAME_DISPLAY_INFO (f);
data[0] = XEMBED_VERSION;
data[1] = flags;
@@ -8906,7 +8912,7 @@ xembed_send_message (struct frame *f, Time t, enum xembed_message msg,
event.xclient.type = ClientMessage;
event.xclient.window = FRAME_X_OUTPUT (f)->parent_desc;
- event.xclient.message_type = FRAME_X_DISPLAY_INFO (f)->Xatom_XEMBED;
+ event.xclient.message_type = FRAME_DISPLAY_INFO (f)->Xatom_XEMBED;
event.xclient.format = 32;
event.xclient.data.l[0] = t;
event.xclient.data.l[1] = msg;
@@ -8931,7 +8937,6 @@ xembed_send_message (struct frame *f, Time t, enum xembed_message msg,
void
x_make_frame_visible (struct frame *f)
{
- Lisp_Object type;
int original_top, original_left;
int retry_count = 2;
@@ -8939,9 +8944,7 @@ x_make_frame_visible (struct frame *f)
block_input ();
- type = x_icon_type (f);
- if (!NILP (type))
- x_bitmap_icon (f, type);
+ x_set_bitmap_icon (f);
if (! FRAME_VISIBLE_P (f))
{
@@ -9096,8 +9099,8 @@ x_make_frame_invisible (struct frame *f)
window = FRAME_OUTER_WINDOW (f);
/* Don't keep the highlight on an invisible frame. */
- if (FRAME_X_DISPLAY_INFO (f)->x_highlight_frame == f)
- FRAME_X_DISPLAY_INFO (f)->x_highlight_frame = 0;
+ if (FRAME_DISPLAY_INFO (f)->x_highlight_frame == f)
+ FRAME_DISPLAY_INFO (f)->x_highlight_frame = 0;
block_input ();
@@ -9148,20 +9151,17 @@ x_iconify_frame (struct frame *f)
#ifdef USE_X_TOOLKIT
int result;
#endif
- Lisp_Object type;
/* Don't keep the highlight on an invisible frame. */
- if (FRAME_X_DISPLAY_INFO (f)->x_highlight_frame == f)
- FRAME_X_DISPLAY_INFO (f)->x_highlight_frame = 0;
+ if (FRAME_DISPLAY_INFO (f)->x_highlight_frame == f)
+ FRAME_DISPLAY_INFO (f)->x_highlight_frame = 0;
if (FRAME_ICONIFIED_P (f))
return;
block_input ();
- type = x_icon_type (f);
- if (!NILP (type))
- x_bitmap_icon (f, type);
+ x_set_bitmap_icon (f);
#if defined (USE_GTK)
if (FRAME_GTK_OUTER_WIDGET (f))
@@ -9227,7 +9227,7 @@ x_iconify_frame (struct frame *f)
msg.xclient.window = FRAME_X_WINDOW (f);
msg.xclient.type = ClientMessage;
- msg.xclient.message_type = FRAME_X_DISPLAY_INFO (f)->Xatom_wm_change_state;
+ msg.xclient.message_type = FRAME_DISPLAY_INFO (f)->Xatom_wm_change_state;
msg.xclient.format = 32;
msg.xclient.data.l[0] = IconicState;
@@ -9266,7 +9266,7 @@ x_iconify_frame (struct frame *f)
void
x_free_frame_resources (struct frame *f)
{
- struct x_display_info *dpyinfo = FRAME_X_DISPLAY_INFO (f);
+ struct x_display_info *dpyinfo = FRAME_DISPLAY_INFO (f);
Mouse_HLInfo *hlinfo = &dpyinfo->mouse_highlight;
#ifdef USE_X_TOOLKIT
Lisp_Object bar;
@@ -9389,7 +9389,7 @@ x_free_frame_resources (struct frame *f)
static void
x_destroy_window (struct frame *f)
{
- struct x_display_info *dpyinfo = FRAME_X_DISPLAY_INFO (f);
+ struct x_display_info *dpyinfo = FRAME_DISPLAY_INFO (f);
/* If a display connection is dead, don't try sending more
commands to the X server. */
@@ -9435,9 +9435,9 @@ x_wm_set_size_hint (struct frame *f, long flags, bool user_position)
size_hints.width_inc = FRAME_COLUMN_WIDTH (f);
size_hints.height_inc = FRAME_LINE_HEIGHT (f);
- size_hints.max_width = x_display_pixel_width (FRAME_X_DISPLAY_INFO (f))
+ size_hints.max_width = x_display_pixel_width (FRAME_DISPLAY_INFO (f))
- FRAME_TEXT_COLS_TO_PIXEL_WIDTH (f, 0);
- size_hints.max_height = x_display_pixel_height (FRAME_X_DISPLAY_INFO (f))
+ size_hints.max_height = x_display_pixel_height (FRAME_DISPLAY_INFO (f))
- FRAME_TEXT_LINES_TO_PIXEL_HEIGHT (f, 0);
/* Calculate the base and minimum sizes. */
@@ -10384,11 +10384,6 @@ static struct redisplay_interface x_redisplay_interface =
x_update_window_begin,
x_update_window_end,
x_flush,
-#ifdef XFlush
- x_flush,
-#else
- 0, /* flush_display_optional */
-#endif
x_clear_window_mouse_face,
x_get_glyph_overhangs,
x_fix_overlapping_area,
@@ -10572,10 +10567,6 @@ x_initialize (void)
#endif
#endif
- pending_autoraise_frame = 0;
- pending_event_wait.f = 0;
- pending_event_wait.eventtype = 0;
-
/* Note that there is no real way portable across R3/R4 to get the
original error handler. */
XSetErrorHandler (x_error_handler);
@@ -10591,9 +10582,6 @@ syms_of_xterm (void)
staticpro (&x_display_name_list);
x_display_name_list = Qnil;
- staticpro (&last_mouse_scroll_bar);
- last_mouse_scroll_bar = Qnil;
-
DEFSYM (Qvendor_specific_keysyms, "vendor-specific-keysyms");
DEFSYM (Qlatin_1, "latin-1");
@@ -10652,9 +10640,6 @@ With MS Windows or Nextstep, the value is t. */);
Vx_toolkit_scroll_bars = Qnil;
#endif
- staticpro (&last_mouse_motion_frame);
- last_mouse_motion_frame = Qnil;
-
Qmodifier_value = intern_c_string ("modifier-value");
Qalt = intern_c_string ("alt");
Fput (Qalt, Qmodifier_value, make_number (alt_modifier));
@@ -10700,5 +10685,3 @@ default is nil, which is the same as `super'. */);
make_float (DEFAULT_REHASH_THRESHOLD),
Qnil);
}
-
-#endif /* HAVE_X_WINDOWS */
diff --git a/src/xterm.h b/src/xterm.h
index 883a249629d..36aa8e52b1c 100644
--- a/src/xterm.h
+++ b/src/xterm.h
@@ -78,10 +78,11 @@ typedef GtkWidget *xt_or_gtk_widget;
#include "dispextern.h"
#include "termhooks.h"
-#define BLACK_PIX_DEFAULT(f) BlackPixel (FRAME_X_DISPLAY (f), \
- XScreenNumberOfScreen (FRAME_X_SCREEN (f)))
-#define WHITE_PIX_DEFAULT(f) WhitePixel (FRAME_X_DISPLAY (f), \
- XScreenNumberOfScreen (FRAME_X_SCREEN (f)))
+/* Black and white pixel values for the screen which frame F is on. */
+#define BLACK_PIX_DEFAULT(f) \
+ BlackPixel (FRAME_X_DISPLAY (f), FRAME_X_SCREEN_NUMBER (f))
+#define WHITE_PIX_DEFAULT(f) \
+ WhitePixel (FRAME_X_DISPLAY (f), FRAME_X_SCREEN_NUMBER (f))
#define FONT_WIDTH(f) ((f)->max_width)
#define FONT_HEIGHT(f) ((f)->ascent + (f)->descent)
@@ -301,6 +302,41 @@ struct x_display_info
minibuffer. */
struct frame *x_highlight_frame;
+ /* The frame waiting to be auto-raised in XTread_socket. */
+ struct frame *x_pending_autoraise_frame;
+
+ /* The frame where the mouse was last time we reported a ButtonPress event. */
+ struct frame *last_mouse_frame;
+
+ /* The frame where the mouse was last time we reported a mouse position. */
+ struct frame *last_mouse_glyph_frame;
+
+ /* The frame where the mouse was last time we reported a mouse motion. */
+ struct frame *last_mouse_motion_frame;
+
+ /* The scroll bar in which the last X motion event occurred. */
+ struct scroll_bar *last_mouse_scroll_bar;
+
+ /* Time of last user interaction as returned in X events on this display. */
+ Time last_user_time;
+
+ /* Position where the mouse was last time we reported a motion.
+ This is a position on last_mouse_motion_frame. */
+ int last_mouse_motion_x;
+ int last_mouse_motion_y;
+
+ /* Where the mouse was last time we reported a mouse position.
+ This is a rectangle on last_mouse_glyph_frame. */
+ XRectangle last_mouse_glyph;
+
+ /* Time of last mouse movement on this display. This is a hack because
+ we would really prefer that XTmouse_position would return the time
+ associated with the position it returns, but there doesn't seem to be
+ any way to wrest the time-stamp from the server along with the position
+ query. So, we just keep track of the time of the last movement we
+ received, and return that in hopes that it's somewhat accurate. */
+ Time last_mouse_movement_time;
+
/* The gray pixmap. */
Pixmap gray;
@@ -373,20 +409,6 @@ struct x_display_info
extern int use_xim;
#endif
-extern struct frame *x_window_to_frame (struct x_display_info *, int);
-extern struct frame *x_any_window_to_frame (struct x_display_info *, int);
-extern struct frame *x_menubar_window_to_frame (struct x_display_info *,
- XEvent *);
-extern struct frame *x_top_window_to_frame (struct x_display_info *, int);
-
-extern struct frame *x_menubar_window_to_frame (struct x_display_info *,
- XEvent *);
-
-#if ! defined (USE_X_TOOLKIT) && ! defined (USE_GTK)
-#define x_any_window_to_frame x_window_to_frame
-#define x_top_window_to_frame x_window_to_frame
-#endif
-
/* This is a chain of structures for all the X displays currently in use. */
extern struct x_display_info *x_display_list;
@@ -397,7 +419,7 @@ extern struct x_display_info *x_display_list;
extern Lisp_Object x_display_name_list;
extern struct x_display_info *x_display_info_for_display (Display *);
-
+extern struct frame *x_top_window_to_frame (struct x_display_info *, int);
extern struct x_display_info *x_term_init (Lisp_Object, char *, char *);
extern bool x_display_ok (const char *);
@@ -711,20 +733,22 @@ enum
#define FRAME_BASELINE_OFFSET(f) ((f)->output_data.x->baseline_offset)
/* This gives the x_display_info structure for the display F is on. */
-#define FRAME_X_DISPLAY_INFO(f) ((f)->output_data.x->display_info)
+#define FRAME_DISPLAY_INFO(f) ((f)->output_data.x->display_info)
/* This is the `Display *' which frame F is on. */
-#define FRAME_X_DISPLAY(f) (FRAME_X_DISPLAY_INFO (f)->display)
+#define FRAME_X_DISPLAY(f) (FRAME_DISPLAY_INFO (f)->display)
/* This is the `Screen *' which frame F is on. */
-#define FRAME_X_SCREEN(f) (FRAME_X_DISPLAY_INFO (f)->screen)
+#define FRAME_X_SCREEN(f) (FRAME_DISPLAY_INFO (f)->screen)
+
+/* This is the screen index number of screen which frame F is on. */
#define FRAME_X_SCREEN_NUMBER(f) XScreenNumberOfScreen (FRAME_X_SCREEN (f))
/* This is the Visual which frame F is on. */
-#define FRAME_X_VISUAL(f) FRAME_X_DISPLAY_INFO (f)->visual
+#define FRAME_X_VISUAL(f) FRAME_DISPLAY_INFO (f)->visual
/* This is the Colormap which frame F uses. */
-#define FRAME_X_COLORMAP(f) FRAME_X_DISPLAY_INFO (f)->cmap
+#define FRAME_X_COLORMAP(f) FRAME_DISPLAY_INFO (f)->cmap
/* The difference in pixels between the top left corner of the
Emacs window (including possible window manager decorations)
@@ -737,21 +761,11 @@ enum
#define FRAME_XIC(f) ((f)->output_data.x->xic)
-#define FRAME_X_XIM(f) (FRAME_X_DISPLAY_INFO (f)->xim)
-#define FRAME_X_XIM_STYLES(f) (FRAME_X_DISPLAY_INFO (f)->xim_styles)
+#define FRAME_X_XIM(f) (FRAME_DISPLAY_INFO (f)->xim)
+#define FRAME_X_XIM_STYLES(f) (FRAME_DISPLAY_INFO (f)->xim_styles)
#define FRAME_XIC_STYLE(f) ((f)->output_data.x->xic_style)
#define FRAME_XIC_FONTSET(f) ((f)->output_data.x->xic_xfs)
-/* Value is the smallest width of any character in any font on frame F. */
-
-#define FRAME_SMALLEST_CHAR_WIDTH(F) \
- FRAME_X_DISPLAY_INFO(F)->smallest_char_width
-
-/* Value is the smallest height of any font on frame F. */
-
-#define FRAME_SMALLEST_FONT_HEIGHT(F) \
- FRAME_X_DISPLAY_INFO(F)->smallest_font_height
-
/* X-specific scroll bar stuff. */
/* We represent scroll bars as lisp vectors. This allows us to place
@@ -801,6 +815,11 @@ struct scroll_bar
being dragged, this is -1. */
int dragging;
+#if defined (USE_TOOLKIT_SCROLL_BARS) && defined (USE_LUCID)
+ /* Last scroll bar part seen in xaw_jump_callback and xaw_scroll_callback. */
+ enum scroll_bar_part last_seen_part;
+#endif
+
/* 1 if the background of the fringe that is adjacent to a scroll
bar is extended to the gap between the fringe and the bar. */
unsigned fringe_extended_p : 1;
@@ -809,6 +828,7 @@ struct scroll_bar
/* Turning a lisp vector value into a pointer to a struct scroll_bar. */
#define XSCROLL_BAR(vec) ((struct scroll_bar *) XVECTOR (vec))
+#ifdef USE_X_TOOLKIT
/* Extract the X widget of the scroll bar from a struct scroll_bar.
XtWindowToWidget should be fast enough since Xt uses a hash table
@@ -825,14 +845,14 @@ struct scroll_bar
ptr->x_window = window; \
} while (0)
+#endif /* USE_X_TOOLKIT */
/* Return the inside width of a vertical scroll bar, given the outside
width. */
#define VERTICAL_SCROLL_BAR_INSIDE_WIDTH(f, width) \
((width) \
- VERTICAL_SCROLL_BAR_LEFT_BORDER \
- - VERTICAL_SCROLL_BAR_RIGHT_BORDER \
- - VERTICAL_SCROLL_BAR_WIDTH_TRIM * 2)
+ - VERTICAL_SCROLL_BAR_RIGHT_BORDER)
/* Return the length of the rectangle within which the top of the
handle must stay. This isn't equivalent to the inside height,
@@ -869,11 +889,6 @@ struct scroll_bar
/* Minimum lengths for scroll bar handles, in pixels. */
#define VERTICAL_SCROLL_BAR_MIN_HANDLE (5)
-/* Trimming off a few pixels from each side prevents
- text from glomming up against the scroll bar */
-#define VERTICAL_SCROLL_BAR_WIDTH_TRIM (0)
-
-
/* If a struct input_event has a kind which is SELECTION_REQUEST_EVENT
or SELECTION_CLEAR_EVENT, then its contents are really described
by this structure. */
@@ -905,11 +920,6 @@ struct selection_input_event
#define SELECTION_EVENT_TIME(eventp) \
(((struct selection_input_event *) (eventp))->time)
-/* From xselect.c. */
-
-void x_handle_selection_notify (XSelectionEvent *);
-void x_handle_property_notify (XPropertyEvent *);
-
/* From xfns.c. */
extern void x_free_gcs (struct frame *);
@@ -963,8 +973,8 @@ extern void x_wait_for_event (struct frame *, int);
/* Defined in xselect.c */
-extern void x_handle_property_notify (XPropertyEvent *);
-extern void x_handle_selection_notify (XSelectionEvent *);
+extern void x_handle_property_notify (const XPropertyEvent *);
+extern void x_handle_selection_notify (const XSelectionEvent *);
extern void x_handle_selection_event (struct input_event *);
extern void x_clear_frame_selections (struct frame *);
@@ -976,9 +986,9 @@ extern void x_send_client_event (Lisp_Object display,
Lisp_Object values);
extern int x_handle_dnd_message (struct frame *,
- XClientMessageEvent *,
+ const XClientMessageEvent *,
struct x_display_info *,
- struct input_event *bufp);
+ struct input_event *);
extern int x_check_property_data (Lisp_Object);
extern void x_fill_property_data (Display *,
Lisp_Object,
@@ -994,7 +1004,6 @@ extern void x_clipboard_manager_save_all (void);
/* Defined in xfns.c */
-extern struct x_display_info * check_x_display_info (Lisp_Object);
extern Lisp_Object x_get_focus_frame (struct frame *);
#ifdef USE_GTK