m17n/m17n-lib.git
18 years ago(get_database_filename): Return a filename instead of
handa [Tue, 13 Dec 2005 05:31:04 +0000 (05:31 +0000)]
(get_database_filename): Return a filename instead of
file pointer.
(load_database): Adjusted for the above change.
(mdatabase__load_for_keys): Likewise.
(mdatabase__find_file): New function.

18 years ago(mdatabase__find_file): Extern it.
handa [Tue, 13 Dec 2005 05:29:26 +0000 (05:29 +0000)]
(mdatabase__find_file): Extern it.

18 years ago*** empty log message ***
handa [Tue, 13 Dec 2005 00:51:37 +0000 (00:51 +0000)]
*** empty log message ***

18 years ago(xfont_open): Check resize ratio.
handa [Tue, 13 Dec 2005 00:51:31 +0000 (00:51 +0000)]
(xfont_open): Check resize ratio.
(xft_open): Likewise.

18 years ago(ft_open): Check resize ratio.
handa [Tue, 13 Dec 2005 00:51:18 +0000 (00:51 +0000)]
(ft_open): Check resize ratio.

18 years ago(mfont__list): Check resize ratio.
handa [Tue, 13 Dec 2005 00:51:05 +0000 (00:51 +0000)]
(mfont__list): Check resize ratio.
(mfont__resize): Delete it.
(mfont_resize_ratio): Include the code of mfont__resize.

18 years ago(mfont__resize): Delete extern.
handa [Tue, 13 Dec 2005 00:51:00 +0000 (00:51 +0000)]
(mfont__resize): Delete extern.

18 years ago*** empty log message ***
handa [Wed, 7 Dec 2005 02:37:11 +0000 (02:37 +0000)]
*** empty log message ***

18 years ago(take_action_list): If take_action_list return -1,
handa [Wed, 7 Dec 2005 02:36:58 +0000 (02:36 +0000)]
(take_action_list): If take_action_list return -1,
return -1.
(handle_key): Likewise.

18 years ago*** empty log message ***
handa [Wed, 7 Dec 2005 00:38:10 +0000 (00:38 +0000)]
*** empty log message ***

18 years ago(mfont__lookup_fontset): If only a fallback font is
handa [Tue, 6 Dec 2005 05:59:34 +0000 (05:59 +0000)]
(mfont__lookup_fontset): If only a fallback font is
found, don't use it for more than one character.

18 years ago*** empty log message ***
handa [Tue, 6 Dec 2005 05:59:28 +0000 (05:59 +0000)]
*** empty log message ***

18 years ago(mt_modified): New variable.
handa [Tue, 6 Dec 2005 05:58:43 +0000 (05:58 +0000)]
(mt_modified): New variable.
(KeyProc): Update screen if input method modified a text.
(surrounding_text_handler): Set mt_modified to 1 if a text is
deleted.
(main): Fix handling of --font arg.

18 years ago*** empty log message ***
handa [Mon, 5 Dec 2005 07:52:00 +0000 (07:52 +0000)]
*** empty log message ***

18 years ago(Description): Fix typo.
handa [Mon, 5 Dec 2005 07:51:50 +0000 (07:51 +0000)]
(Description): Fix typo.

18 years ago*** empty log message ***
handa [Mon, 5 Dec 2005 07:06:18 +0000 (07:06 +0000)]
*** empty log message ***

18 years ago(mface__realize): Set rfont->layouter to Mnil.
handa [Mon, 5 Dec 2005 07:06:05 +0000 (07:06 +0000)]
(mface__realize): Set rfont->layouter to Mnil.
(mface__for_chars): Fix handling of layouter.

18 years ago(mchar__define_prop): Extern it.
handa [Mon, 5 Dec 2005 07:04:57 +0000 (07:04 +0000)]
(mchar__define_prop): Extern it.

18 years ago(update_database_list): Call mchar__define_prop if
handa [Mon, 5 Dec 2005 07:04:35 +0000 (07:04 +0000)]
(update_database_list): Call mchar__define_prop if
necessary.

18 years ago(mchar__init): Don't call mchar_define_property.
handa [Mon, 5 Dec 2005 07:04:03 +0000 (07:04 +0000)]
(mchar__init): Don't call mchar_define_property.
Instead just initialize property keys.
(mchar__fini): Free char_prop_list only if it's not NULL.
(mchar__define_prop): New function.
(mchar_define_property): Call mchar__define_prop.

18 years ago(m17n_fini_core): Call mtext__prop_fini at after
handa [Mon, 5 Dec 2005 07:02:08 +0000 (07:02 +0000)]
(m17n_fini_core): Call mtext__prop_fini at after
mplist__fini.

18 years ago*** empty log message ***
handa [Fri, 2 Dec 2005 04:44:53 +0000 (04:44 +0000)]
*** empty log message ***

18 years ago(main): Handle --font arg.
handa [Fri, 2 Dec 2005 04:44:47 +0000 (04:44 +0000)]
(main): Handle --font arg.

18 years ago(mlang__init): Handle extra chars.
handa [Fri, 2 Dec 2005 04:43:40 +0000 (04:43 +0000)]
(mlang__init): Handle extra chars.

18 years ago(mfont_check): Adjust prototype.
handa [Fri, 2 Dec 2005 04:43:13 +0000 (04:43 +0000)]
(mfont_check): Adjust prototype.

18 years ago(xfont_driver): Specify xfont_check_capability.
handa [Fri, 2 Dec 2005 04:42:12 +0000 (04:42 +0000)]
(xfont_driver): Specify xfont_check_capability.
(xfont_check_capability): New function.
(xft_driver): Specify xft_check_capability.
(xft_check_capability): New function.

18 years ago(M0_3): Delete it.
handa [Fri, 2 Dec 2005 04:41:19 +0000 (04:41 +0000)]
(M0_3): Delete it.
(M0): New variable.
(ft_get_charmaps): Refer to M0.
(fc_parse_pattern): Fix previous change.
(ft_list_language): Check also extra chars.
(ft_check_otf): Define it even if HAVE_OTF is undef.
(ft_check_lang): Check the result of FcLangSetHasLang against
FcLangDifferentLang.  Check also extra chars.
(ft_list_capability): Delete ifdef HAVE_OTF.
(ft_select): Likewise.
(ft_open): Improve debug information.
(ft_check_capability): New function.
(mfont__ft_driver): Specify ft_check_capability.
(mfont__ft_init): Initialize M0.

18 years ago(get_font_from_group): New function.
handa [Fri, 2 Dec 2005 04:36:49 +0000 (04:36 +0000)]
(get_font_from_group): New function.
(mfontset__get_font): New function.

18 years ago(mfontset__get_font): Extern it.
handa [Fri, 2 Dec 2005 04:36:29 +0000 (04:36 +0000)]
(mfontset__get_font): Extern it.

18 years ago(OTF_tag): Define it if HAVE_OTF is undef.
handa [Fri, 2 Dec 2005 04:36:10 +0000 (04:36 +0000)]
(OTF_tag): Define it if HAVE_OTF is undef.
(mfont__fini): Delete ifdef HAVE_OTF.
(free_font_capability): Likewise.
(mfont__get_capability): Likewise.
(mfont__check_capability): New function.
(mfont_check): use mfontset__get_font.

18 years ago(struct MFontDriver): New member check_capability.
handa [Fri, 2 Dec 2005 04:34:14 +0000 (04:34 +0000)]
(struct MFontDriver): New member check_capability.
(MFontCapability): Delete ifdef HAVE_OTF.
(mfont__check_capability): Extern it.

18 years ago(mface__realize): Fix handling of FONT arg.
handa [Fri, 2 Dec 2005 04:33:19 +0000 (04:33 +0000)]
(mface__realize): Fix handling of FONT arg.
(mface__for_chars): Fix handling of explicitly specified font.

18 years ago*** empty log message ***
handa [Fri, 25 Nov 2005 06:45:08 +0000 (06:45 +0000)]
*** empty log message ***

18 years ago(run_command): Print debug info for
handa [Fri, 25 Nov 2005 06:45:03 +0000 (06:45 +0000)]
(run_command): Print debug info for
left/rigth_padding

18 years ago(layout_glyphs): Fix handling of left/righ_padding.
handa [Fri, 25 Nov 2005 06:44:08 +0000 (06:44 +0000)]
(layout_glyphs): Fix handling of left/righ_padding.

18 years ago*** empty log message ***
handa [Fri, 25 Nov 2005 02:40:50 +0000 (02:40 +0000)]
*** empty log message ***

18 years ago(mface__for_chars): Check rfont before accessing the
handa [Fri, 25 Nov 2005 02:40:46 +0000 (02:40 +0000)]
(mface__for_chars): Check rfont before accessing the
members.

18 years ago*** empty log message ***
handa [Mon, 21 Nov 2005 10:32:16 +0000 (10:32 +0000)]
*** empty log message ***

18 years ago(bin_PROGRAMS, lib_LTLIBRARIES): Define them
handa [Mon, 21 Nov 2005 10:32:02 +0000 (10:32 +0000)]
(bin_PROGRAMS, lib_LTLIBRARIES): Define them
conditionally on WITH_GUI.

18 years ago(lib_LTLIBRARIES): Define it conditionaly on
handa [Mon, 21 Nov 2005 10:31:34 +0000 (10:31 +0000)]
(lib_LTLIBRARIES): Define it conditionaly on
WITH_GUI.

18 years ago(pkgconfig_DATA): Define it conditionally on
handa [Mon, 21 Nov 2005 10:31:11 +0000 (10:31 +0000)]
(pkgconfig_DATA): Define it conditionally on
WITH_GUI.

18 years agoHandle --with-gui/--without-gui arg.
handa [Mon, 21 Nov 2005 10:30:45 +0000 (10:30 +0000)]
Handle --with-gui/--without-gui arg.

18 years ago(parse_nested_list_value): Fix previous change.
handa [Mon, 21 Nov 2005 10:29:38 +0000 (10:29 +0000)]
(parse_nested_list_value): Fix previous change.
(resolve_command): Fix handling of the return value of
get_nested_list.

18 years ago*** empty log message ***
handa [Mon, 21 Nov 2005 01:09:06 +0000 (01:09 +0000)]
*** empty log message ***

18 years ago(handle_key): For debugging, print information about
handa [Mon, 21 Nov 2005 01:09:01 +0000 (01:09 +0000)]
(handle_key): For debugging, print information about
alias key.
(filter): Add an alias for Meta and Alt modifiers.
(Mcond, Mplus, Mminus, Mstar, Mslush, Mand, Mor, Mnot): New
variables.
(minput__init): Initialize them.
(parse_expression): New function.
(resolve_expression): New function.
(parse_action_list): Handle expressions by parse_expression.
(take_action_list): Handle expressions by resolve_expression.

18 years ago(fontset_table): New variable.
handa [Mon, 21 Nov 2005 01:06:37 +0000 (01:06 +0000)]
(fontset_table): New variable.
(free_fontset): Call M17N_OBJECT_UNREGISTER.
(mfont__fontset_init): Add fontset_table as an object array.
(mfont__realize_fontset): Ref FONTSET.
(mfont__free_realized_fontset): Unref REALIZED->fontset.
(mfontset): Call M17N_OBJECT_REGISTER.
(mfontset_copy): Likewise.

18 years ago*** empty log message ***
handa [Fri, 18 Nov 2005 11:00:19 +0000 (11:00 +0000)]
*** empty log message ***

18 years ago(OTF_tag): Delete it.
handa [Fri, 18 Nov 2005 11:00:13 +0000 (11:00 +0000)]
(OTF_tag): Delete it.
(load_otf_script_list): Define only when HAVE_OTF is defined.
(mfont__fini): Unref otf_script_list only when HAVE_OTF is
defined.

18 years ago(ft_check_otf): Define only when HAVE_OTF is defined.
handa [Fri, 18 Nov 2005 10:58:02 +0000 (10:58 +0000)]
(ft_check_otf): Define only when HAVE_OTF is defined.
(ft_list_capability): Call ft_check_otf only when HAVE_OTF is
defined.
(ft_select): Likewise.

18 years agoAdd --with-libotf option. Use AC_HELP_STRING.
handa [Fri, 18 Nov 2005 10:56:32 +0000 (10:56 +0000)]
Add --with-libotf option.  Use AC_HELP_STRING.

18 years ago*** empty log message ***
handa [Fri, 18 Nov 2005 10:47:32 +0000 (10:47 +0000)]
*** empty log message ***

18 years ago(mfont_list): Fix for the case that FONT is NULL.
handa [Fri, 18 Nov 2005 10:47:16 +0000 (10:47 +0000)]
(mfont_list): Fix for the case that FONT is NULL.

18 years ago(truncate_gstring): Be sure to truncate at
handa [Fri, 18 Nov 2005 10:46:43 +0000 (10:46 +0000)]
(truncate_gstring): Be sure to truncate at
glapheme-cluster boundary.

18 years ago*** empty log message ***
handa [Fri, 11 Nov 2005 11:54:29 +0000 (11:54 +0000)]
*** empty log message ***

18 years agoCancel previous change.
handa [Fri, 11 Nov 2005 11:54:25 +0000 (11:54 +0000)]
Cancel previous change.

18 years agoFix previous change.
handa [Fri, 11 Nov 2005 11:53:52 +0000 (11:53 +0000)]
Fix previous change.

18 years ago(surrounding_text_handler): Directly delete characters
handa [Fri, 11 Nov 2005 11:52:57 +0000 (11:52 +0000)]
(surrounding_text_handler): Directly delete characters
instead of calling delete_char.

18 years ago*** empty log message ***
handa [Fri, 11 Nov 2005 11:25:43 +0000 (11:25 +0000)]
*** empty log message ***

18 years ago(compose_glyph_string): Check cursor_pos to decide on
handa [Fri, 11 Nov 2005 11:25:16 +0000 (11:25 +0000)]
(compose_glyph_string): Check cursor_pos to decide on
which region to run FLT.

18 years ago(update_cursor): Update control.cursor_pos.
handa [Fri, 11 Nov 2005 11:24:14 +0000 (11:24 +0000)]
(update_cursor): Update control.cursor_pos.

18 years ago*** empty log message ***
handa [Fri, 11 Nov 2005 01:36:57 +0000 (01:36 +0000)]
*** empty log message ***

18 years ago(delete_surrounding_text): Clear cache if necessary.
handa [Fri, 11 Nov 2005 01:36:46 +0000 (01:36 +0000)]
(delete_surrounding_text): Clear cache if necessary.

18 years ago*** empty log message ***
handa [Wed, 9 Nov 2005 12:37:43 +0000 (12:37 +0000)]
*** empty log message ***

18 years ago(compose_glyph_string): Update prev->rface->rfont if the
handa [Wed, 9 Nov 2005 12:37:39 +0000 (12:37 +0000)]
(compose_glyph_string): Update prev->rface->rfont if the
glyph prev is also supported by the current flt.

18 years ago(surrounding_text_handler): Fix previous change.
handa [Tue, 8 Nov 2005 12:50:11 +0000 (12:50 +0000)]
(surrounding_text_handler): Fix previous change.

18 years ago*** empty log message ***
handa [Tue, 8 Nov 2005 12:48:37 +0000 (12:48 +0000)]
*** empty log message ***

18 years ago(delete_char): Fix the case of deleting the previous
handa [Tue, 8 Nov 2005 12:48:32 +0000 (12:48 +0000)]
(delete_char): Fix the case of deleting the previous
multiple characters.
(surrounding_text_handler): Check number characters to delete.

18 years ago*** empty log message ***
handa [Tue, 8 Nov 2005 08:01:18 +0000 (08:01 +0000)]
*** empty log message ***

18 years ago(xft_render): Cancel previous change.
handa [Tue, 8 Nov 2005 08:01:14 +0000 (08:01 +0000)]
(xft_render): Cancel previous change.

18 years ago(filter): Unref ic_info->preceding_text and
handa [Mon, 7 Nov 2005 13:04:54 +0000 (13:04 +0000)]
(filter): Unref ic_info->preceding_text and
ic_info->following_text.

18 years ago*** empty log message ***
handa [Mon, 7 Nov 2005 13:04:48 +0000 (13:04 +0000)]
*** empty log message ***

18 years ago*** empty log message ***
handa [Mon, 7 Nov 2005 12:59:09 +0000 (12:59 +0000)]
*** empty log message ***

18 years ago(surrounding_text_handler): New function.
handa [Mon, 7 Nov 2005 12:58:56 +0000 (12:58 +0000)]
(surrounding_text_handler): New function.
(setup_input_methods): Add callback functions for surrounding text
handling.

18 years agoInclude <stdlib.h>.
handa [Mon, 7 Nov 2005 12:58:07 +0000 (12:58 +0000)]
Include <stdlib.h>.
(get_surrounding_text, delete_surrounding_text)
(get_preceding_char, get_following_char): New functions.
(integer_value): New arg surrounding.  If it is nonzero, try to
get a surrounding character.  Callers changed.
(take_action_list): Check `value' before setting an element.
(destroy_ic): Unref ic_info->preceding_text and
ic_info->following_text.
(minput__init): Initialize Minput_get_surrounding_text and
Minput_delete_surrounding_text.
(Minput_get_surrounding_text, Minput_delete_surrounding_text): New
variables.

18 years ago(Minput_get_surrounding_text, Minput_delete_surrounding_text):
handa [Mon, 7 Nov 2005 12:55:18 +0000 (12:55 +0000)]
(Minput_get_surrounding_text, Minput_delete_surrounding_text):
Extern them.

18 years ago(MInputContextInfo): New members preceding_text and
handa [Mon, 7 Nov 2005 12:54:39 +0000 (12:54 +0000)]
(MInputContextInfo): New members preceding_text and
following_text.

18 years agoAdd extren int mtext_lowercase (), mtext_titlecase (), mtext_uppercase ().
ntakahas [Fri, 4 Nov 2005 08:38:29 +0000 (08:38 +0000)]
Add extren int mtext_lowercase (), mtext_titlecase (), mtext_uppercase ().

18 years ago*** empty log message ***
handa [Fri, 4 Nov 2005 07:25:21 +0000 (07:25 +0000)]
*** empty log message ***

18 years ago(parse_nested_list_value): Fix handling of the global
handa [Fri, 4 Nov 2005 07:25:15 +0000 (07:25 +0000)]
(parse_nested_list_value): Fix handling of the global
definition.
(get_nested_list): Get global definitions by load_partial_im_info.
(preedit_commit): Set ic->candidates_changed to bitwise or of enum
MInputCandidatesChanged.
(take_action_list): Likewise.
(reset_ic): Likewise.
(create_ic): Don't pay special attention to
Mcandidates_group_size.
(load_partial_im_info): Call mdatabase_find with correct 4th arg.
(minput_set_variable): Get a definition of varible by
mplist_find_by_value, not mplist_get.

18 years ago(enum MInputCandidatesChanged): New enum.
handa [Fri, 4 Nov 2005 07:19:44 +0000 (07:19 +0000)]
(enum MInputCandidatesChanged): New enum.

18 years ago(xft_render): Check xft_draw's drawable before changing
handa [Tue, 1 Nov 2005 12:16:49 +0000 (12:16 +0000)]
(xft_render): Check xft_draw's drawable before changing
it.
(mwin__destroy_window): If xft_draw's drawable is win, change it
to device->drawable before destroying win.

18 years ago*** empty log message ***
handa [Mon, 31 Oct 2005 06:34:13 +0000 (06:34 +0000)]
*** empty log message ***

18 years ago(load_im_info): Fix adding of state.
handa [Mon, 31 Oct 2005 06:34:08 +0000 (06:34 +0000)]
(load_im_info): Fix adding of state.

18 years ago(m17n_init_win): Fix reporting of module
handa [Mon, 31 Oct 2005 06:33:37 +0000 (06:33 +0000)]
(m17n_init_win): Fix reporting of module
finalization.

18 years ago(m17n_fini): Fix reporting of module finalization.
handa [Mon, 31 Oct 2005 06:33:31 +0000 (06:33 +0000)]
(m17n_fini): Fix reporting of module finalization.

18 years ago(m17n_fini_core): Fix reporting of module
handa [Mon, 31 Oct 2005 06:33:27 +0000 (06:33 +0000)]
(m17n_fini_core): Fix reporting of module
finalization.

18 years ago*** empty log message ***
handa [Sat, 29 Oct 2005 03:16:52 +0000 (03:16 +0000)]
*** empty log message ***

18 years ago*** empty log message ***
handa [Sat, 29 Oct 2005 03:16:40 +0000 (03:16 +0000)]
*** empty log message ***

18 years ago(get_candidate_list): Fix the timing of refering plist.
handa [Sat, 29 Oct 2005 03:16:34 +0000 (03:16 +0000)]
(get_candidate_list): Fix the timing of refering plist.

18 years ago*** empty log message ***
handa [Fri, 28 Oct 2005 12:06:31 +0000 (12:06 +0000)]
*** empty log message ***

18 years ago(load_branch): Ignore an undefined map name.
handa [Fri, 28 Oct 2005 11:48:40 +0000 (11:48 +0000)]
(load_branch): Ignore an undefined map name.
(load_im_info): Set im_info->title from `name' only if it's not
Mnil.
(shift_state): Always update ic->status.
(adjust_candidates): Renamed from adjust_candidate_command.
Argument changed.  Caller changed.
(get_candidate_list, regularize_action): New functions.
(take_action_list): Use them.  On handling Munhandle, don't set
ic_info->used to 0.
(handle_key): If KEY is not handled by MAP, and MAP has
branch_actions, perform them.

18 years ago(mdatabase__fini): Free dir_info->filename;
handa [Fri, 28 Oct 2005 11:36:53 +0000 (11:36 +0000)]
(mdatabase__fini): Free dir_info->filename;

18 years ago*** empty log message ***
handa [Tue, 25 Oct 2005 02:36:26 +0000 (02:36 +0000)]
*** empty log message ***

18 years ago*** empty log message ***
handa [Thu, 20 Oct 2005 12:13:23 +0000 (12:13 +0000)]
*** empty log message ***

18 years ago(take_action_list): Fix previous change.
handa [Thu, 20 Oct 2005 12:12:52 +0000 (12:12 +0000)]
(take_action_list): Fix previous change.

18 years ago(marker_code): Accept '@@'.
handa [Thu, 20 Oct 2005 12:03:08 +0000 (12:03 +0000)]
(marker_code): Accept '@@'.
(integer_value): Handle '@@'.
(parse_action_list): Accept a symbol argument.
(take_action_list): Resolve the symbol argument.  Treat the
integer argument as the number keys to redo.

18 years ago(setup_input_methods): Ignore an input method of name
handa [Thu, 20 Oct 2005 03:57:56 +0000 (03:57 +0000)]
(setup_input_methods): Ignore an input method of name
nil.

18 years ago*** empty log message ***
handa [Tue, 18 Oct 2005 02:32:01 +0000 (02:32 +0000)]
*** empty log message ***

18 years ago*** empty log message ***
handa [Tue, 18 Oct 2005 02:02:04 +0000 (02:02 +0000)]
*** empty log message ***

18 years agoInclude "charset.h".
handa [Tue, 18 Oct 2005 02:01:57 +0000 (02:01 +0000)]
Include "charset.h".
(M_candidates, Mcandidates_group_size, Mcandidates_charset): New
variables.
(MIMState): New member (M17NObject control).
(lookup_nested_list, set_nested_list, parse_nested_list_value)
(get_nested_list, resolve_variable): New functions.
(integer_value): New arg (MPlist **value).  Set it to the plist
element containing the value.
(resolve_command): New function.
(load_translation): New arg (MPlist *map_actions).
(load_branch): New args language and name.  If `keylist' is a
symbol, resolved that as a command name.
(free_map): New arg top.  Free map->map_actions only if top is
nonzero.
(free_state): New function.
(load_state): New arg name.
(im_info_list): New variable.
(free_im_info, get_im_info_by_tags): New functions.
(load_im_info): Arg key changed to plist.  Handle `include'.
Return (MInputMethodInfo *).
(preedit_commit): Ref ic->candidate_list.
(get_select_charset, adjust_candidate_command): New functions.
(take_action_list): Handle `include'.  Adjust candidate action
properly.  Handle control variables `candidates-charset' and
`candidates-group-size'.
(open_im): Use get_im_info.
(create_ic): Get global variables.
(load_partial_im_info): New function.
(get_im_info): New function.
(check_command_keyseq, check_command_list, check_variable_list):
New functions.
(minput__init): Don't handle M_database_hook and Mdetail_text.
Initialize M_candidates, Mcandidates_group_size,
Mcandidates_charset.
(parse_variable_list, get_variable_list, parse_command_list)
(get_command_list): Delete them.
(MDatabaseStatList, imdir_stat_list, input_method_hook): Delete them.
(minput__fini): Simply unref command_list and variable_list.
(minput_get_description): Adjusted for the new form of description.
(minput_get_commands): Use get_nested_list.
(minput_assign_command_keys): Likewise.
(minput_get_variables, minput_set_variable): Likewise.