changeset 19195:2ef19eed524a v8.2.0156

patch 8.2.0156: various typos in source files and tests Commit: https://github.com/vim/vim/commit/4b96df5a017a04141c4e901b1fc5704a3ca48099 Author: Bram Moolenaar <Bram@vim.org> Date: Sun Jan 26 22:00:26 2020 +0100 patch 8.2.0156: various typos in source files and tests Problem: Various typos in source files and tests. Solution: Fix the typos. (Emir Sari, closes https://github.com/vim/vim/issues/5532)
author Bram Moolenaar <Bram@vim.org>
date Sun, 26 Jan 2020 22:15:05 +0100
parents 9986e645676b
children e6c38c62e4ea
files Makefile src/INSTALLvms.txt src/Make_vms.mms src/beval.h src/buffer.c src/charset.c src/evalvars.c src/ex_cmds.c src/ex_docmd.c src/getchar.c src/gui.c src/gui_mac.c src/gui_photon.c src/if_perl.xs src/libvterm/t/11state_movecursor.test src/libvterm/t/41screen_unicode.test src/mbyte.c src/memline.c src/normal.c src/ops.c src/option.c src/option.h src/os_unix.c src/os_win32.c src/quickfix.c src/register.c src/spell.c src/tag.c src/term.c src/testdir/test_breakindent.vim src/testdir/test_channel.vim src/testdir/test_cindent.vim src/testdir/test_digraph.vim src/testdir/test_edit.vim src/testdir/test_netbeans.vim src/testdir/test_quickfix.vim src/testdir/test_registers.vim src/testdir/test_stat.vim src/ui.c src/version.c src/xxd/xxd.c
diffstat 41 files changed, 56 insertions(+), 50 deletions(-) [+]
line wrap: on
line diff
--- a/Makefile
+++ b/Makefile
@@ -153,7 +153,7 @@ MINOR = 2
 #   > msvc2015.bat
 # - Build the console binary:
 #   > nmake -f Make_mvc.mak
-# - Run the tests and check the ouput:
+# - Run the tests and check the output:
 #   > nmake -f Make_mvc.mak testclean
 #   > nmake -f Make_mvc.mak test
 # - Rename (using ../tools/rename.bat):
--- a/src/INSTALLvms.txt
+++ b/src/INSTALLvms.txt
@@ -198,7 +198,7 @@ 4.1. VAXC compiler is not fully ANSI C c
      more information can be found in os_vms_fix.com file itself.
 
      NOTE: even if os_vms_fix.com will fix all pre-processor directives it will
-     leave singe (long) line directives. You have to fix them manually.
+     leave single (long) line directives. You have to fix them manually.
      Known problematic files are option.h and option.c
 
 4.2. After the conversion you can continue building as it has been described
@@ -319,7 +319,7 @@ 7.2  GTK
 
      Build it as normally.
 
-     Used sharable images are:
+     Used shareable images are:
 	gtk_root:[glib]libglib.exe /share,-
 	gtk_root:[glib.gmodule]libgmodule.exe /share,-
 	gtk_root:[gtk.gdk]libgdk.exe /share,-
--- a/src/Make_vms.mms
+++ b/src/Make_vms.mms
@@ -281,7 +281,7 @@ ALL_CFLAGS = /def=($(MODEL_DEF)$(DEFS)$(
  $(TCL_INC)$(XDIFF_INC)$(XPM_INC))
 
 # CFLAGS displayed in :ver information
-# It is specially formated for correct display of unix like includes
+# It is specially formatted for correct display of unix like includes
 # as $(GUI_INC) - replaced with $(GUI_INC_VER)
 # Otherwise should not be any other difference.
 ALL_CFLAGS_VER = /def=($(MODEL_DEF)$(DEFS)$(DEBUG_DEF)$(PERL_DEF)$(PYTHON_DEF) -
--- a/src/beval.h
+++ b/src/beval.h
@@ -38,7 +38,7 @@ typedef struct BalloonEvalStruct
     GtkWidget		*balloonShell;
     GtkWidget		*balloonLabel;
     unsigned int	timerID;	// timer for run
-    BeState		showState;	// tells us whats currently going on
+    BeState		showState;	// tells us what's currently going on
     int			x;
     int			y;
     unsigned int	state;		// Button/Modifier key state
@@ -48,7 +48,7 @@ typedef struct BalloonEvalStruct
     Widget		balloonShell;
     Widget		balloonLabel;
     XtIntervalId	timerID;	// timer for run
-    BeState		showState;	// tells us whats currently going on
+    BeState		showState;	// tells us what's currently going on
     XtAppContext	appContext;	// used in event handler
     Position		x;
     Position		y;
@@ -60,7 +60,7 @@ typedef struct BalloonEvalStruct
     HWND		balloon;
     int			x;
     int			y;
-    BeState		showState;	// tells us whats currently going on
+    BeState		showState;	// tells us what's currently going on
 #  endif
 # endif
 # if !defined(FEAT_GUI_GTK) && !defined(FEAT_GUI_MSWIN)
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -1690,7 +1690,7 @@ set_curbuf(buf_T *buf, int action)
     set_bufref(&prevbufref, prevbuf);
     set_bufref(&newbufref, buf);
 
-    // Autocommands may delete the curren buffer and/or the buffer we wan to go
+    // Autocommands may delete the current buffer and/or the buffer we want to go
     // to.  In those cases don't close the buffer.
     if (!apply_autocmds(EVENT_BUFLEAVE, NULL, NULL, FALSE, curbuf)
 	    || (bufref_valid(&prevbufref)
@@ -1713,6 +1713,7 @@ set_curbuf(buf_T *buf, int action)
 #endif
 	{
 	    win_T  *previouswin = curwin;
+
 	    if (prevbuf == curbuf)
 		u_sync(FALSE);
 	    close_buffer(prevbuf == curwin->w_buffer ? curwin : NULL, prevbuf,
--- a/src/charset.c
+++ b/src/charset.c
@@ -1939,7 +1939,7 @@ vim_str2nr(
 	}
     }
 
-    // Check for an alpha-numeric character immediately following, that is
+    // Check for an alphanumeric character immediately following, that is
     // most likely a typo.
     if (strict && n - 1 != maxlen && ASCII_ISALNUM(*ptr))
 	return;
--- a/src/evalvars.c
+++ b/src/evalvars.c
@@ -2813,7 +2813,7 @@ set_var_const(
 		    char_u *val = tv_get_string(tv);
 
 		    // Careful: when assigning to v:errmsg and tv_get_string()
-		    // causes an error message the variable will alrady be set.
+		    // causes an error message the variable will already be set.
 		    if (di->di_tv.vval.v_string == NULL)
 			di->di_tv.vval.v_string = vim_strsave(val);
 		}
--- a/src/ex_cmds.c
+++ b/src/ex_cmds.c
@@ -5288,7 +5288,7 @@ check_help_lang(char_u *arg)
  * Return a heuristic indicating how well the given string matches.  The
  * smaller the number, the better the match.  This is the order of priorities,
  * from best match to worst match:
- *	- Match with least alpha-numeric characters is better.
+ *	- Match with least alphanumeric characters is better.
  *	- Match with least total characters is better.
  *	- Match towards the start is better.
  *	- Match starting with "+" is worse (feature instead of command)
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -6134,7 +6134,7 @@ ex_edit(exarg_T *eap)
 }
 
 /*
- * ":edit <file>" command and alikes.
+ * ":edit <file>" command and alike.
  */
     void
 do_exedit(
--- a/src/getchar.c
+++ b/src/getchar.c
@@ -3237,7 +3237,7 @@ vgetorpeek(int advance)
  *	1. a scriptfile
  *	2. the keyboard
  *
- *  As much characters as we can get (upto 'maxlen') are put in "buf" and
+ *  As many characters as we can get (up to 'maxlen') are put in "buf" and
  *  NUL terminated (buffer length must be 'maxlen' + 1).
  *  Minimum for "maxlen" is 3!!!!
  *
--- a/src/gui.c
+++ b/src/gui.c
@@ -3420,7 +3420,7 @@ gui_init_which_components(char_u *oldval
     if (oldval != NULL && gui.in_use)
     {
 	/*
-	 * Check if the menu's go from grey to non-grey or vise versa.
+	 * Check if the menus go from grey to non-grey or vice versa.
 	 */
 	grey_old = (vim_strchr(oldval, GO_GREY) != NULL);
 	grey_new = (vim_strchr(p_go, GO_GREY) != NULL);
--- a/src/gui_mac.c
+++ b/src/gui_mac.c
@@ -2919,7 +2919,7 @@ gui_mch_prepare(int *argc, char **argv)
 
     (void)FSGetCatalogInfo(&applFSRef, kFSCatInfoNone, NULL, NULL, &applDir, NULL);
 
-    // This technic return NIL when we disallow_gui
+    // This technique returns NIL when we disallow_gui
 # endif
     exe_name = FullPathFromFSSpec_save(applDir);
 #endif
--- a/src/gui_photon.c
+++ b/src/gui_photon.c
@@ -1206,7 +1206,7 @@ gui_mch_init(void)
 
     /*
      * Now that the text area widget has been created, set up the colours,
-     * which wil call PtSetResource from gui_mch_new_colors
+     * which will call PtSetResource from gui_mch_new_colors
      */
 
     /*
--- a/src/if_perl.xs
+++ b/src/if_perl.xs
@@ -930,7 +930,7 @@ I32 cur_val(IV iv, SV *sv)
 
     if (SvRV(sv) != SvRV(rv))
 	// XXX: This magic variable is a bit confusing...
-	// Is curently refcounted ?
+	// Is currently refcounted ?
 	sv_setsv(sv, rv);
 
     SvREFCNT_dec(rv);
--- a/src/libvterm/t/11state_movecursor.test
+++ b/src/libvterm/t/11state_movecursor.test
@@ -112,7 +112,7 @@ PUSH "\e[2F"
 PUSH "\e[0F"
   ?cursor = 0,0
 
-!Cursor Horizonal Absolute
+!Cursor Horizontal Absolute
 PUSH "\n"
   ?cursor = 1,0
 PUSH "\e[20G"
--- a/src/libvterm/t/41screen_unicode.test
+++ b/src/libvterm/t/41screen_unicode.test
@@ -40,7 +40,7 @@ PUSH "e\xCC\x81\xCC\x81\xCC\x81\xCC\x81\
 PUSH  "\xCC\x81\xCC\x81\xCC\x81\xCC\x81\xCC\x81\xCC\x81\xCC\x81\xCC\x81\xCC\x81\xCC\x81\xCC\x81\xCC\x81\xCC\x81\xCC\x81\xCC\x81\xCC\x81\xCC\x81\xCC\x81\xCC\x81\xCC\x81"
   ?screen_cell 0,0 = {0x65,0x301,0x301,0x301,0x301,0x301} width=1 attrs={} fg=rgb(240,240,240) bg=rgb(0,0,0)
 
-!Outputing CJK doublewidth in 80th column should wraparound to next line and not crash"
+!Outputting CJK doublewidth in 80th column should wraparound to next line and not crash"
 RESET
 PUSH "\e[80G\xEF\xBC\x90"
   ?screen_cell 0,79 = {} width=1 attrs={} fg=rgb(240,240,240) bg=rgb(0,0,0)
--- a/src/mbyte.c
+++ b/src/mbyte.c
@@ -960,7 +960,7 @@ dbcs_class(unsigned lead, unsigned trail
 			// special symbols
 			return 10;
 		    case 0x23:
-			// alpha-numeric
+			// alphanumeric
 			return 11;
 		    case 0x24:
 			// hiragana
@@ -994,7 +994,7 @@ dbcs_class(unsigned lead, unsigned trail
 		 * 20 : Hangul
 		 * 21 : Hanja
 		 * 22 : Symbols
-		 * 23 : Alpha-numeric/Roman Letter (Full width)
+		 * 23 : Alphanumeric/Roman Letter (Full width)
 		 * 24 : Hangul Letter(Alphabet)
 		 * 25 : Roman Numeral/Greek Letter
 		 * 26 : Box Drawings
@@ -1025,7 +1025,7 @@ dbcs_class(unsigned lead, unsigned trail
 			// Symbols
 			return 22;
 		    case 0xA3:
-			// Alpha-numeric
+			// Alphanumeric
 			return 23;
 		    case 0xA4:
 			// Hangul Letter(Alphabet)
--- a/src/memline.c
+++ b/src/memline.c
@@ -111,7 +111,7 @@ struct data_block
     unsigned	db_txt_end;	// byte just after data block
     linenr_T	db_line_count;	// number of lines in this block
     unsigned	db_index[1];	// index for start of line (actually bigger)
-				// followed by empty space upto db_txt_start
+				// followed by empty space up to db_txt_start
 				// followed by the text in the lines until
 				// end of page
 };
--- a/src/normal.c
+++ b/src/normal.c
@@ -5659,7 +5659,7 @@ n_start_visual_mode(int c)
     VIsual_reselect = TRUE;
 
     // Corner case: the 0 position in a tab may change when going into
-    // virtualedit.  Recalculate curwin->w_cursor to avoid bad hilighting.
+    // virtualedit.  Recalculate curwin->w_cursor to avoid bad highlighting.
     if (c == Ctrl_V && (ve_flags & VE_BLOCK) && gchar_cursor() == TAB)
     {
 	validate_virtcol();
--- a/src/ops.c
+++ b/src/ops.c
@@ -314,7 +314,7 @@ shift_block(oparg_T *oap, int amount)
 	 *  3. Divvy into TABs & spp
 	 *  4. Construct new string
 	 */
-	total += bd.pre_whitesp; // all virtual WS upto & incl a split TAB
+	total += bd.pre_whitesp; // all virtual WS up to & incl a split TAB
 	ws_vcol = bd.start_vcol - bd.pre_whitesp;
 	if (bd.startspaces)
 	{
--- a/src/option.c
+++ b/src/option.c
@@ -3155,7 +3155,7 @@ set_num_option(
 
 #if defined(FEAT_EVAL)
     // Save the global value before changing anything. This is needed as for
-    // a global-only option setting the "local value" infact sets the global
+    // a global-only option setting the "local value" in fact sets the global
     // value (since there is only one value).
     if ((opt_flags & (OPT_LOCAL | OPT_GLOBAL)) == 0)
 	old_global_value = *(long *)get_varp_scope(&(options[opt_idx]),
--- a/src/option.h
+++ b/src/option.h
@@ -1066,7 +1066,7 @@ EXTERN int	p_wb;		// 'writebackup'
 EXTERN long	p_wd;		// 'writedelay'
 
 /*
- * "indir" values for buffer-local opions.
+ * "indir" values for buffer-local options.
  * These need to be defined globally, so that the BV_COUNT can be used with
  * b_p_scriptID[].
  */
--- a/src/os_unix.c
+++ b/src/os_unix.c
@@ -1931,7 +1931,7 @@ get_x11_thing(
 	 * keep traversing up the tree until a window with a title/icon is
 	 * found.
 	 */
-	// Previously this was only done for xterm and alikes.  I don't see a
+	// Previously this was only done for xterm and alike.  I don't see a
 	// reason why it would fail for other terminal emulators.
 	// if (term_is_xterm)
 	{
--- a/src/os_win32.c
+++ b/src/os_win32.c
@@ -6927,7 +6927,7 @@ myresetstkoflw(void)
 	return 0;
     pStackBase = (BYTE*)mbi.AllocationBase;
 
-    // ...and the page thats min_stack_req pages away from stack base; this is
+    // ...and the page that's min_stack_req pages away from stack base; this is
     // the lowest page we could use.
     pLowestPossiblePage = pStackBase + MIN_STACK_WINNT * nPageSize;
 
--- a/src/quickfix.c
+++ b/src/quickfix.c
@@ -2771,7 +2771,7 @@ get_nth_entry(qf_list_T *qfl, int errorn
 }
 
 /*
- * Get a entry specied by 'errornr' and 'dir' from the current
+ * Get a entry specified by 'errornr' and 'dir' from the current
  * quickfix/location list. 'errornr' specifies the index of the entry and 'dir'
  * specifies the direction (FORWARD/BACKWARD/FORWARD_FILE/BACKWARD_FILE).
  * Returns a pointer to the entry and the index of the new entry is stored in
@@ -6320,7 +6320,7 @@ unload_dummy_buffer(buf_T *buf, char_u *
 
 #if defined(FEAT_EVAL) || defined(PROTO)
 /*
- * Copy the specified quickfix entry items into a new dict and appened the dict
+ * Copy the specified quickfix entry items into a new dict and append the dict
  * to 'list'.  Returns OK on success.
  */
     static int
--- a/src/register.c
+++ b/src/register.c
@@ -590,7 +590,7 @@ do_execreg(
 	if (y_current->y_array == NULL)
 	    return FAIL;
 
-	// Disallow remaping for ":@r".
+	// Disallow remapping for ":@r".
 	remap = colon ? REMAP_NONE : REMAP_YES;
 
 	// Insert lines into typeahead buffer, from last one to first one.
--- a/src/spell.c
+++ b/src/spell.c
@@ -1786,7 +1786,7 @@ spell_load_cb(char_u *fname, void *cooki
 count_common_word(
     slang_T	*lp,
     char_u	*word,
-    int		len,	    // word length, -1 for upto NUL
+    int		len,	    // word length, -1 for up to NUL
     int		count)	    // 1 to count once, 10 to init
 {
     hash_T	hash;
--- a/src/tag.c
+++ b/src/tag.c
@@ -4123,7 +4123,7 @@ tagstack_clear(win_T *wp)
 
 /*
  * Remove the oldest entry from the tag stack and shift the rest of
- * the entires to free up the top of the stack.
+ * the entries to free up the top of the stack.
  */
     static void
 tagstack_shift(win_T *wp)
--- a/src/term.c
+++ b/src/term.c
@@ -146,7 +146,7 @@ static termrequest_T rbm_status = TERMRE
 // Request cursor style report:
 static termrequest_T rcs_status = TERMREQUEST_INIT;
 
-// Request windos position report:
+// Request window's position report:
 static termrequest_T winpos_status = TERMREQUEST_INIT;
 
 static termrequest_T *all_termrequests[] = {
--- a/src/testdir/test_breakindent.vim
+++ b/src/testdir/test_breakindent.vim
@@ -1,7 +1,7 @@
 " Test for breakindent
 "
 " Note: if you get strange failures when adding new tests, it might be that
-" while the test is run, the breakindent cacheing gets in its way.
+" while the test is run, the breakindent caching gets in its way.
 " It helps to change the tabstop setting and force a redraw (e.g. see
 " Test_breakindent08())
 source check.vim
--- a/src/testdir/test_channel.vim
+++ b/src/testdir/test_channel.vim
@@ -20,7 +20,7 @@ endif
 
 let s:chopt = {}
 
-" Run "testfunc" after sarting the server and stop the server afterwards.
+" Run "testfunc" after starting the server and stop the server afterwards.
 func s:run_server(testfunc, ...)
   call RunServer('test_channel.py', a:testfunc, a:000)
 endfunc
@@ -425,7 +425,7 @@ func Test_connect_waittime()
 
   " We intend to use a socket that doesn't exist and wait for half a second
   " before giving up.  If the socket does exist it can fail in various ways.
-  " Check for "Connection reset by peer" to avoid flakyness.
+  " Check for "Connection reset by peer" to avoid flakiness.
   let start = reltime()
   try
     let handle = ch_open('localhost:9867', {'waittime': 500})
--- a/src/testdir/test_cindent.vim
+++ b/src/testdir/test_cindent.vim
@@ -815,7 +815,7 @@ func Test_cindent_1()
         }
      }
 
-  public: // <-- this was incorectly indented before!!
+  public: // <-- this was incorrectly indented before!!
      void testfall();
   protected:
      void testfall();
@@ -1780,7 +1780,7 @@ func Test_cindent_1()
   		}
   	}
 
-  	public: // <-- this was incorectly indented before!!
+  	public: // <-- this was incorrectly indented before!!
   	void testfall();
   	protected:
   	void testfall();
@@ -5254,9 +5254,12 @@ endfunc
 " this was going beyond the end of the line.
 func Test_cindent_case()
   new
-  call setline(1, "case x: // x")
+  call setline(1, 'case x: // x')
   set cindent
   norm! f:a:
+  call assert_equal('case x:: // x', getline(1))
+
+  set cindent&
   bwipe!
 endfunc
 
--- a/src/testdir/test_digraph.vim
+++ b/src/testdir/test_digraph.vim
@@ -80,7 +80,7 @@ func Test_digraphs()
   call Put_Dig(".e")
   call Put_Dig("a.") " not defined
   call assert_equal(['ḃ', 'ė', '.'], getline(line('.')-2,line('.')))
-  " Diaresis
+  " Diaeresis
   call Put_Dig("a:")
   call Put_Dig(":u")
   call Put_Dig("b:") " not defined
@@ -285,7 +285,7 @@ func Test_digraphs_option()
   call Put_Dig_BS(".","e")
   call Put_Dig_BS("a",".") " not defined
   call assert_equal(['ḃ', 'ė', '.'], getline(line('.')-2,line('.')))
-  " Diaresis
+  " Diaeresis
   call Put_Dig_BS("a",":")
   call Put_Dig_BS(":","u")
   call Put_Dig_BS("b",":") " not defined
--- a/src/testdir/test_edit.vim
+++ b/src/testdir/test_edit.vim
@@ -589,7 +589,7 @@ func Test_edit_CTRL_K()
   call feedkeys("A\<c-x>\<c-k>\<down>\<down>\<down>\<down>\<cr>\<esc>", 'tnix')
   call assert_equal(['AA'], getline(1, '$'))
 
-  " press an unexecpted key after dictionary completion
+  " press an unexpected key after dictionary completion
   %d
   call setline(1, 'A')
   call cursor(1, 1)
--- a/src/testdir/test_netbeans.vim
+++ b/src/testdir/test_netbeans.vim
@@ -10,7 +10,7 @@ if s:python == ''
   throw 'Skipped: python program missing'
 endif
 
-" Run "testfunc" after sarting the server and stop the server afterwards.
+" Run "testfunc" after starting the server and stop the server afterwards.
 func s:run_server(testfunc, ...)
   call RunServer('test_netbeans.py', a:testfunc, a:000)
 endfunc
--- a/src/testdir/test_quickfix.vim
+++ b/src/testdir/test_quickfix.vim
@@ -2629,7 +2629,7 @@ func Test_cwindow_jump()
   call assert_equal('quickfix', getwinvar(1, '&buftype'))
   call assert_equal('quickfix', getwinvar(3, '&buftype'))
 
-  " Jumping to a file from the location list window should find a usuable
+  " Jumping to a file from the location list window should find a usable
   " window by wrapping around the window list.
   enew | only
   call setloclist(0, [], 'f')
--- a/src/testdir/test_registers.vim
+++ b/src/testdir/test_registers.vim
@@ -274,7 +274,7 @@ func Test_set_register()
   call setreg('=', 'b', 'a')
   call assert_equal('regwrite', getreg('='))
 
-  " Test for settting a list of lines to special registers
+  " Test for setting a list of lines to special registers
   call setreg('/', [])
   call assert_equal('', @/)
   call setreg('=', [])
--- a/src/testdir/test_stat.vim
+++ b/src/testdir/test_stat.vim
@@ -5,7 +5,7 @@ func CheckFileTime(doSleep)
   let times = []
   let result = 0
 
-  " Use three files istead of localtim(), with a network filesystem the file
+  " Use three files instead of localtim(), with a network filesystem the file
   " times may differ at bit
   let fl = ['Hello World!']
   for fname in fnames
--- a/src/ui.c
+++ b/src/ui.c
@@ -1500,7 +1500,7 @@ clip_invert_area(
 	    row2--;
 	}
 
-	// Handle the rectangle thats left
+	// Handle the rectangle that's left
 	if (row2 >= row1)
 	    clip_invert_rectangle(cbd, row1, 0, row2 - row1 + 1,
 							 (int)Columns, invert);
--- a/src/version.c
+++ b/src/version.c
@@ -743,6 +743,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    156,
+/**/
     155,
 /**/
     154,
--- a/src/xxd/xxd.c
+++ b/src/xxd/xxd.c
@@ -35,7 +35,7 @@
  *	    xxdline().
  *  7.06.96 -i printed 'int' instead of 'char'. *blush*
  *	    added Bram's OS2 ifdefs...
- * 18.07.96 gcc -Wall @ SunOS4 is now slient.
+ * 18.07.96 gcc -Wall @ SunOS4 is now silent.
  *	    Added osver for MSDOS/DJGPP/WIN32.
  * 29.08.96 Added size_t to strncmp() for Amiga.
  * 24.03.97 Windows NT support (Phil Hanna). Clean exit for Amiga WB (Bram)