diff options
Diffstat (limited to 'src/version.c')
-rw-r--r-- | src/version.c | 6311 |
1 files changed, 6311 insertions, 0 deletions
diff --git a/src/version.c b/src/version.c new file mode 100644 index 0000000..8159289 --- /dev/null +++ b/src/version.c @@ -0,0 +1,6311 @@ +/* vi:set ts=8 sts=4 sw=4 noet: + * + * VIM - Vi IMproved by Bram Moolenaar + * + * Do ":help uganda" in Vim to read copying and usage conditions. + * Do ":help credits" in Vim to see a list of people who contributed. + * See README.txt for an overview of the Vim source code. + */ + +#include "vim.h" + +/* + * Vim originated from Stevie version 3.6 (Fish disk 217) by GRWalter (Fred) + * It has been changed beyond recognition since then. + * + * Differences between version 7.4 and 8.x can be found with ":help version8". + * Differences between version 6.4 and 7.x can be found with ":help version7". + * Differences between version 5.8 and 6.x can be found with ":help version6". + * Differences between version 4.x and 5.x can be found with ":help version5". + * Differences between version 3.0 and 4.x can be found with ":help version4". + * All the remarks about older versions have been removed, they are not very + * interesting. + */ + +#include "version.h" + +char *Version = VIM_VERSION_SHORT; +static char *mediumVersion = VIM_VERSION_MEDIUM; + +#if defined(HAVE_DATE_TIME) || defined(PROTO) +# if (defined(VMS) && defined(VAXC)) || defined(PROTO) +char longVersion[sizeof(VIM_VERSION_LONG_DATE) + sizeof(__DATE__) + + sizeof(__TIME__) + 3]; + + void +init_longVersion(void) +{ + /* + * Construct the long version string. Necessary because + * VAX C can't concatenate strings in the preprocessor. + */ + strcpy(longVersion, VIM_VERSION_LONG_DATE); +#ifdef BUILD_DATE + strcat(longVersion, BUILD_DATE); +#else + strcat(longVersion, __DATE__); + strcat(longVersion, " "); + strcat(longVersion, __TIME__); +#endif + strcat(longVersion, ")"); +} + +# else + void +init_longVersion(void) +{ + if (longVersion == NULL) + { +#ifdef BUILD_DATE + char *date_time = BUILD_DATE; +#else + char *date_time = __DATE__ " " __TIME__; +#endif + char *msg = _("%s (%s, compiled %s)"); + size_t len = strlen(msg) + + strlen(VIM_VERSION_LONG_ONLY) + + strlen(VIM_VERSION_DATE_ONLY) + + strlen(date_time); + + longVersion = alloc(len); + if (longVersion == NULL) + longVersion = VIM_VERSION_LONG; + else + vim_snprintf(longVersion, len, msg, + VIM_VERSION_LONG_ONLY, VIM_VERSION_DATE_ONLY, date_time); + } +} +# endif +#else +char *longVersion = VIM_VERSION_LONG; + + void +init_longVersion(void) +{ + // nothing to do +} +#endif + +static char *(features[]) = +{ +#ifdef HAVE_ACL + "+acl", +#else + "-acl", +#endif +#ifdef AMIGA // only for Amiga systems +# ifdef FEAT_ARP + "+ARP", +# else + "-ARP", +# endif +#endif +#ifdef FEAT_ARABIC + "+arabic", +#else + "-arabic", +#endif + "+autocmd", +#ifdef FEAT_AUTOCHDIR + "+autochdir", +#else + "-autochdir", +#endif +#ifdef FEAT_AUTOSERVERNAME + "+autoservername", +#else + "-autoservername", +#endif +#ifdef FEAT_BEVAL_GUI + "+balloon_eval", +#else + "-balloon_eval", +#endif +#ifdef FEAT_BEVAL_TERM + "+balloon_eval_term", +#else + "-balloon_eval_term", +#endif +#ifdef FEAT_BROWSE + "+browse", +#else + "-browse", +#endif +#ifdef NO_BUILTIN_TCAPS + "-builtin_terms", +#endif +#ifdef SOME_BUILTIN_TCAPS + "+builtin_terms", +#endif +#ifdef ALL_BUILTIN_TCAPS + "++builtin_terms", +#endif +#ifdef FEAT_BYTEOFF + "+byte_offset", +#else + "-byte_offset", +#endif +#ifdef FEAT_JOB_CHANNEL + "+channel", +#else + "-channel", +#endif +#ifdef FEAT_CINDENT + "+cindent", +#else + "-cindent", +#endif +#ifdef FEAT_CLIENTSERVER + "+clientserver", +#else + "-clientserver", +#endif +#ifdef FEAT_CLIPBOARD + "+clipboard", +#else + "-clipboard", +#endif + "+cmdline_compl", + "+cmdline_hist", +#ifdef FEAT_CMDL_INFO + "+cmdline_info", +#else + "-cmdline_info", +#endif + "+comments", +#ifdef FEAT_CONCEAL + "+conceal", +#else + "-conceal", +#endif +#ifdef FEAT_CRYPT + "+cryptv", +#else + "-cryptv", +#endif +#ifdef FEAT_CSCOPE + "+cscope", +#else + "-cscope", +#endif + "+cursorbind", +#ifdef CURSOR_SHAPE + "+cursorshape", +#else + "-cursorshape", +#endif +#if defined(FEAT_CON_DIALOG) && defined(FEAT_GUI_DIALOG) + "+dialog_con_gui", +#else +# if defined(FEAT_CON_DIALOG) + "+dialog_con", +# else +# if defined(FEAT_GUI_DIALOG) + "+dialog_gui", +# else + "-dialog", +# endif +# endif +#endif +#ifdef FEAT_DIFF + "+diff", +#else + "-diff", +#endif +#ifdef FEAT_DIGRAPHS + "+digraphs", +#else + "-digraphs", +#endif +#ifdef FEAT_GUI_MSWIN +# ifdef FEAT_DIRECTX + "+directx", +# else + "-directx", +# endif +#endif +#ifdef FEAT_DND + "+dnd", +#else + "-dnd", +#endif +#ifdef EBCDIC + "+ebcdic", +#else + "-ebcdic", +#endif +#ifdef FEAT_EMACS_TAGS + "+emacs_tags", +#else + "-emacs_tags", +#endif +#ifdef FEAT_EVAL + "+eval", +#else + "-eval", +#endif + "+ex_extra", +#ifdef FEAT_SEARCH_EXTRA + "+extra_search", +#else + "-extra_search", +#endif + "-farsi", +#ifdef FEAT_SEARCHPATH + "+file_in_path", +#else + "-file_in_path", +#endif +#ifdef FEAT_FIND_ID + "+find_in_path", +#else + "-find_in_path", +#endif +#ifdef FEAT_FLOAT + "+float", +#else + "-float", +#endif +#ifdef FEAT_FOLDING + "+folding", +#else + "-folding", +#endif +#ifdef FEAT_FOOTER + "+footer", +#else + "-footer", +#endif + // only interesting on Unix systems +#if !defined(USE_SYSTEM) && defined(UNIX) + "+fork()", +#endif +#ifdef FEAT_GETTEXT +# ifdef DYNAMIC_GETTEXT + "+gettext/dyn", +# else + "+gettext", +# endif +#else + "-gettext", +#endif + "-hangul_input", +#if (defined(HAVE_ICONV_H) && defined(USE_ICONV)) || defined(DYNAMIC_ICONV) +# ifdef DYNAMIC_ICONV + "+iconv/dyn", +# else + "+iconv", +# endif +#else + "-iconv", +#endif + "+insert_expand", +#ifdef FEAT_IPV6 + "+ipv6", +#else + "-ipv6", +#endif +#ifdef FEAT_JOB_CHANNEL + "+job", +#else + "-job", +#endif +#ifdef FEAT_JUMPLIST + "+jumplist", +#else + "-jumplist", +#endif +#ifdef FEAT_KEYMAP + "+keymap", +#else + "-keymap", +#endif +#ifdef FEAT_EVAL + "+lambda", +#else + "-lambda", +#endif +#ifdef FEAT_LANGMAP + "+langmap", +#else + "-langmap", +#endif +#ifdef FEAT_LIBCALL + "+libcall", +#else + "-libcall", +#endif +#ifdef FEAT_LINEBREAK + "+linebreak", +#else + "-linebreak", +#endif +#ifdef FEAT_LISP + "+lispindent", +#else + "-lispindent", +#endif + "+listcmds", + "+localmap", +#ifdef FEAT_LUA +# ifdef DYNAMIC_LUA + "+lua/dyn", +# else + "+lua", +# endif +#else + "-lua", +#endif +#ifdef FEAT_MENU + "+menu", +#else + "-menu", +#endif +#ifdef FEAT_SESSION + "+mksession", +#else + "-mksession", +#endif + "+modify_fname", + "+mouse", +#ifdef FEAT_MOUSESHAPE + "+mouseshape", +#else + "-mouseshape", +#endif + +#if defined(UNIX) || defined(VMS) +# ifdef FEAT_MOUSE_DEC + "+mouse_dec", +# else + "-mouse_dec", +# endif +# ifdef FEAT_MOUSE_GPM + "+mouse_gpm", +# else + "-mouse_gpm", +# endif +# ifdef FEAT_MOUSE_JSB + "+mouse_jsbterm", +# else + "-mouse_jsbterm", +# endif +# ifdef FEAT_MOUSE_NET + "+mouse_netterm", +# else + "-mouse_netterm", +# endif +#endif + +#ifdef __QNX__ +# ifdef FEAT_MOUSE_PTERM + "+mouse_pterm", +# else + "-mouse_pterm", +# endif +#endif + +#if defined(UNIX) || defined(VMS) + "+mouse_sgr", +# ifdef FEAT_SYSMOUSE + "+mouse_sysmouse", +# else + "-mouse_sysmouse", +# endif +# ifdef FEAT_MOUSE_URXVT + "+mouse_urxvt", +# else + "-mouse_urxvt", +# endif + "+mouse_xterm", +#endif + +#ifdef FEAT_MBYTE_IME +# ifdef DYNAMIC_IME + "+multi_byte_ime/dyn", +# else + "+multi_byte_ime", +# endif +#else + "+multi_byte", +#endif +#ifdef FEAT_MULTI_LANG + "+multi_lang", +#else + "-multi_lang", +#endif +#ifdef FEAT_MZSCHEME +# ifdef DYNAMIC_MZSCHEME + "+mzscheme/dyn", +# else + "+mzscheme", +# endif +#else + "-mzscheme", +#endif +#ifdef FEAT_NETBEANS_INTG + "+netbeans_intg", +#else + "-netbeans_intg", +#endif + "+num64", +#ifdef FEAT_GUI_MSWIN +# ifdef FEAT_OLE + "+ole", +# else + "-ole", +# endif +#endif +#ifdef FEAT_EVAL + "+packages", +#else + "-packages", +#endif +#ifdef FEAT_PATH_EXTRA + "+path_extra", +#else + "-path_extra", +#endif +#ifdef FEAT_PERL +# ifdef DYNAMIC_PERL + "+perl/dyn", +# else + "+perl", +# endif +#else + "-perl", +#endif +#ifdef FEAT_PERSISTENT_UNDO + "+persistent_undo", +#else + "-persistent_undo", +#endif +#ifdef FEAT_PROP_POPUP + "+popupwin", +#else + "-popupwin", +#endif +#ifdef FEAT_PRINTER +# ifdef FEAT_POSTSCRIPT + "+postscript", +# else + "-postscript", +# endif + "+printer", +#else + "-printer", +#endif +#ifdef FEAT_PROFILE + "+profile", +#else + "-profile", +#endif +#ifdef FEAT_PYTHON +# ifdef DYNAMIC_PYTHON + "+python/dyn", +# else + "+python", +# endif +#else + "-python", +#endif +#ifdef FEAT_PYTHON3 +# ifdef DYNAMIC_PYTHON3 + "+python3/dyn", +# else + "+python3", +# endif +#else + "-python3", +#endif +#ifdef FEAT_QUICKFIX + "+quickfix", +#else + "-quickfix", +#endif +#ifdef FEAT_RELTIME + "+reltime", +#else + "-reltime", +#endif +#ifdef FEAT_RIGHTLEFT + "+rightleft", +#else + "-rightleft", +#endif +#ifdef FEAT_RUBY +# ifdef DYNAMIC_RUBY + "+ruby/dyn", +# else + "+ruby", +# endif +#else + "-ruby", +#endif + "+scrollbind", +#ifdef FEAT_SIGNS + "+signs", +#else + "-signs", +#endif +#ifdef FEAT_SMARTINDENT + "+smartindent", +#else + "-smartindent", +#endif +#ifdef FEAT_SOUND + "+sound", +#else + "-sound", +#endif +#ifdef FEAT_SPELL + "+spell", +#else + "-spell", +#endif +#ifdef STARTUPTIME + "+startuptime", +#else + "-startuptime", +#endif +#ifdef FEAT_STL_OPT + "+statusline", +#else + "-statusline", +#endif + "-sun_workshop", +#ifdef FEAT_SYN_HL + "+syntax", +#else + "-syntax", +#endif + // only interesting on Unix systems +#if defined(USE_SYSTEM) && defined(UNIX) + "+system()", +#endif +#ifdef FEAT_TAG_BINS + "+tag_binary", +#else + "-tag_binary", +#endif + "-tag_old_static", + "-tag_any_white", +#ifdef FEAT_TCL +# ifdef DYNAMIC_TCL + "+tcl/dyn", +# else + "+tcl", +# endif +#else + "-tcl", +#endif +#ifdef FEAT_TERMGUICOLORS + "+termguicolors", +#else + "-termguicolors", +#endif +#ifdef FEAT_TERMINAL + "+terminal", +#else + "-terminal", +#endif +#if defined(UNIX) +// only Unix can have terminfo instead of termcap +# ifdef TERMINFO + "+terminfo", +# else + "-terminfo", +# endif +#endif +#ifdef FEAT_TERMRESPONSE + "+termresponse", +#else + "-termresponse", +#endif +#ifdef FEAT_TEXTOBJ + "+textobjects", +#else + "-textobjects", +#endif +#ifdef FEAT_PROP_POPUP + "+textprop", +#else + "-textprop", +#endif +#if !defined(UNIX) +// unix always includes termcap support +# ifdef HAVE_TGETENT + "+tgetent", +# else + "-tgetent", +# endif +#endif +#ifdef FEAT_TIMERS + "+timers", +#else + "-timers", +#endif +#ifdef FEAT_TITLE + "+title", +#else + "-title", +#endif +#ifdef FEAT_TOOLBAR + "+toolbar", +#else + "-toolbar", +#endif + "+user_commands", +#ifdef FEAT_VARTABS + "+vartabs", +#else + "-vartabs", +#endif + "+vertsplit", + "+virtualedit", + "+visual", + "+visualextra", +#ifdef FEAT_VIMINFO + "+viminfo", +#else + "-viminfo", +#endif + "+vreplace", +#ifdef MSWIN +# ifdef FEAT_VTP + "+vtp", +# else + "-vtp", +# endif +#endif +#ifdef FEAT_WILDIGN + "+wildignore", +#else + "-wildignore", +#endif +#ifdef FEAT_WILDMENU + "+wildmenu", +#else + "-wildmenu", +#endif + "+windows", +#ifdef FEAT_WRITEBACKUP + "+writebackup", +#else + "-writebackup", +#endif +#if defined(UNIX) || defined(VMS) +# ifdef FEAT_X11 + "+X11", +# else + "-X11", +# endif +#endif +#ifdef FEAT_XFONTSET + "+xfontset", +#else + "-xfontset", +#endif +#ifdef FEAT_XIM + "+xim", +#else + "-xim", +#endif +#ifdef MSWIN +# ifdef FEAT_XPM_W32 + "+xpm_w32", +# else + "-xpm_w32", +# endif +#else +# ifdef HAVE_XPM + "+xpm", +# else + "-xpm", +# endif +#endif +#if defined(UNIX) || defined(VMS) +# ifdef USE_XSMP_INTERACT + "+xsmp_interact", +# else +# ifdef USE_XSMP + "+xsmp", +# else + "-xsmp", +# endif +# endif +# ifdef FEAT_XCLIPBOARD + "+xterm_clipboard", +# else + "-xterm_clipboard", +# endif +#endif +#ifdef FEAT_XTERM_SAVE + "+xterm_save", +#else + "-xterm_save", +#endif + NULL +}; + +static int included_patches[] = +{ /* Add new patch number below this line */ +/**/ + 2434, +/**/ + 2433, +/**/ + 2432, +/**/ + 2431, +/**/ + 2430, +/**/ + 2429, +/**/ + 2428, +/**/ + 2427, +/**/ + 2426, +/**/ + 2425, +/**/ + 2424, +/**/ + 2423, +/**/ + 2422, +/**/ + 2421, +/**/ + 2420, +/**/ + 2419, +/**/ + 2418, +/**/ + 2417, +/**/ + 2416, +/**/ + 2415, +/**/ + 2414, +/**/ + 2413, +/**/ + 2412, +/**/ + 2411, +/**/ + 2410, +/**/ + 2409, +/**/ + 2408, +/**/ + 2407, +/**/ + 2406, +/**/ + 2405, +/**/ + 2404, +/**/ + 2403, +/**/ + 2402, +/**/ + 2401, +/**/ + 2400, +/**/ + 2399, +/**/ + 2398, +/**/ + 2397, +/**/ + 2396, +/**/ + 2395, +/**/ + 2394, +/**/ + 2393, +/**/ + 2392, +/**/ + 2391, +/**/ + 2390, +/**/ + 2389, +/**/ + 2388, +/**/ + 2387, +/**/ + 2386, +/**/ + 2385, +/**/ + 2384, +/**/ + 2383, +/**/ + 2382, +/**/ + 2381, +/**/ + 2380, +/**/ + 2379, +/**/ + 2378, +/**/ + 2377, +/**/ + 2376, +/**/ + 2375, +/**/ + 2374, +/**/ + 2373, +/**/ + 2372, +/**/ + 2371, +/**/ + 2370, +/**/ + 2369, +/**/ + 2368, +/**/ + 2367, +/**/ + 2366, +/**/ + 2365, +/**/ + 2364, +/**/ + 2363, +/**/ + 2362, +/**/ + 2361, +/**/ + 2360, +/**/ + 2359, +/**/ + 2358, +/**/ + 2357, +/**/ + 2356, +/**/ + 2355, +/**/ + 2354, +/**/ + 2353, +/**/ + 2352, +/**/ + 2351, +/**/ + 2350, +/**/ + 2349, +/**/ + 2348, +/**/ + 2347, +/**/ + 2346, +/**/ + 2345, +/**/ + 2344, +/**/ + 2343, +/**/ + 2342, +/**/ + 2341, +/**/ + 2340, +/**/ + 2339, +/**/ + 2338, +/**/ + 2337, +/**/ + 2336, +/**/ + 2335, +/**/ + 2334, +/**/ + 2333, +/**/ + 2332, +/**/ + 2331, +/**/ + 2330, +/**/ + 2329, +/**/ + 2328, +/**/ + 2327, +/**/ + 2326, +/**/ + 2325, +/**/ + 2324, +/**/ + 2323, +/**/ + 2322, +/**/ + 2321, +/**/ + 2320, +/**/ + 2319, +/**/ + 2318, +/**/ + 2317, +/**/ + 2316, +/**/ + 2315, +/**/ + 2314, +/**/ + 2313, +/**/ + 2312, +/**/ + 2311, +/**/ + 2310, +/**/ + 2309, +/**/ + 2308, +/**/ + 2307, +/**/ + 2306, +/**/ + 2305, +/**/ + 2304, +/**/ + 2303, +/**/ + 2302, +/**/ + 2301, +/**/ + 2300, +/**/ + 2299, +/**/ + 2298, +/**/ + 2297, +/**/ + 2296, +/**/ + 2295, +/**/ + 2294, +/**/ + 2293, +/**/ + 2292, +/**/ + 2291, +/**/ + 2290, +/**/ + 2289, +/**/ + 2288, +/**/ + 2287, +/**/ + 2286, +/**/ + 2285, +/**/ + 2284, +/**/ + 2283, +/**/ + 2282, +/**/ + 2281, +/**/ + 2280, +/**/ + 2279, +/**/ + 2278, +/**/ + 2277, +/**/ + 2276, +/**/ + 2275, +/**/ + 2274, +/**/ + 2273, +/**/ + 2272, +/**/ + 2271, +/**/ + 2270, +/**/ + 2269, +/**/ + 2268, +/**/ + 2267, +/**/ + 2266, +/**/ + 2265, +/**/ + 2264, +/**/ + 2263, +/**/ + 2262, +/**/ + 2261, +/**/ + 2260, +/**/ + 2259, +/**/ + 2258, +/**/ + 2257, +/**/ + 2256, +/**/ + 2255, +/**/ + 2254, +/**/ + 2253, +/**/ + 2252, +/**/ + 2251, +/**/ + 2250, +/**/ + 2249, +/**/ + 2248, +/**/ + 2247, +/**/ + 2246, +/**/ + 2245, +/**/ + 2244, +/**/ + 2243, +/**/ + 2242, +/**/ + 2241, +/**/ + 2240, +/**/ + 2239, +/**/ + 2238, +/**/ + 2237, +/**/ + 2236, +/**/ + 2235, +/**/ + 2234, +/**/ + 2233, +/**/ + 2232, +/**/ + 2231, +/**/ + 2230, +/**/ + 2229, +/**/ + 2228, +/**/ + 2227, +/**/ + 2226, +/**/ + 2225, +/**/ + 2224, +/**/ + 2223, +/**/ + 2222, +/**/ + 2221, +/**/ + 2220, +/**/ + 2219, +/**/ + 2218, +/**/ + 2217, +/**/ + 2216, +/**/ + 2215, +/**/ + 2214, +/**/ + 2213, +/**/ + 2212, +/**/ + 2211, +/**/ + 2210, +/**/ + 2209, +/**/ + 2208, +/**/ + 2207, +/**/ + 2206, +/**/ + 2205, +/**/ + 2204, +/**/ + 2203, +/**/ + 2202, +/**/ + 2201, +/**/ + 2200, +/**/ + 2199, +/**/ + 2198, +/**/ + 2197, +/**/ + 2196, +/**/ + 2195, +/**/ + 2194, +/**/ + 2193, +/**/ + 2192, +/**/ + 2191, +/**/ + 2190, +/**/ + 2189, +/**/ + 2188, +/**/ + 2187, +/**/ + 2186, +/**/ + 2185, +/**/ + 2184, +/**/ + 2183, +/**/ + 2182, +/**/ + 2181, +/**/ + 2180, +/**/ + 2179, +/**/ + 2178, +/**/ + 2177, +/**/ + 2176, +/**/ + 2175, +/**/ + 2174, +/**/ + 2173, +/**/ + 2172, +/**/ + 2171, +/**/ + 2170, +/**/ + 2169, +/**/ + 2168, +/**/ + 2167, +/**/ + 2166, +/**/ + 2165, +/**/ + 2164, +/**/ + 2163, +/**/ + 2162, +/**/ + 2161, +/**/ + 2160, +/**/ + 2159, +/**/ + 2158, +/**/ + 2157, +/**/ + 2156, +/**/ + 2155, +/**/ + 2154, +/**/ + 2153, +/**/ + 2152, +/**/ + 2151, +/**/ + 2150, +/**/ + 2149, +/**/ + 2148, +/**/ + 2147, +/**/ + 2146, +/**/ + 2145, +/**/ + 2144, +/**/ + 2143, +/**/ + 2142, +/**/ + 2141, +/**/ + 2140, +/**/ + 2139, +/**/ + 2138, +/**/ + 2137, +/**/ + 2136, +/**/ + 2135, +/**/ + 2134, +/**/ + 2133, +/**/ + 2132, +/**/ + 2131, +/**/ + 2130, +/**/ + 2129, +/**/ + 2128, +/**/ + 2127, +/**/ + 2126, +/**/ + 2125, +/**/ + 2124, +/**/ + 2123, +/**/ + 2122, +/**/ + 2121, +/**/ + 2120, +/**/ + 2119, +/**/ + 2118, +/**/ + 2117, +/**/ + 2116, +/**/ + 2115, +/**/ + 2114, +/**/ + 2113, +/**/ + 2112, +/**/ + 2111, +/**/ + 2110, +/**/ + 2109, +/**/ + 2108, +/**/ + 2107, +/**/ + 2106, +/**/ + 2105, +/**/ + 2104, +/**/ + 2103, +/**/ + 2102, +/**/ + 2101, +/**/ + 2100, +/**/ + 2099, +/**/ + 2098, +/**/ + 2097, +/**/ + 2096, +/**/ + 2095, +/**/ + 2094, +/**/ + 2093, +/**/ + 2092, +/**/ + 2091, +/**/ + 2090, +/**/ + 2089, +/**/ + 2088, +/**/ + 2087, +/**/ + 2086, +/**/ + 2085, +/**/ + 2084, +/**/ + 2083, +/**/ + 2082, +/**/ + 2081, +/**/ + 2080, +/**/ + 2079, +/**/ + 2078, +/**/ + 2077, +/**/ + 2076, +/**/ + 2075, +/**/ + 2074, +/**/ + 2073, +/**/ + 2072, +/**/ + 2071, +/**/ + 2070, +/**/ + 2069, +/**/ + 2068, +/**/ + 2067, +/**/ + 2066, +/**/ + 2065, +/**/ + 2064, +/**/ + 2063, +/**/ + 2062, +/**/ + 2061, +/**/ + 2060, +/**/ + 2059, +/**/ + 2058, +/**/ + 2057, +/**/ + 2056, +/**/ + 2055, +/**/ + 2054, +/**/ + 2053, +/**/ + 2052, +/**/ + 2051, +/**/ + 2050, +/**/ + 2049, +/**/ + 2048, +/**/ + 2047, +/**/ + 2046, +/**/ + 2045, +/**/ + 2044, +/**/ + 2043, +/**/ + 2042, +/**/ + 2041, +/**/ + 2040, +/**/ + 2039, +/**/ + 2038, +/**/ + 2037, +/**/ + 2036, +/**/ + 2035, +/**/ + 2034, +/**/ + 2033, +/**/ + 2032, +/**/ + 2031, +/**/ + 2030, +/**/ + 2029, +/**/ + 2028, +/**/ + 2027, +/**/ + 2026, +/**/ + 2025, +/**/ + 2024, +/**/ + 2023, +/**/ + 2022, +/**/ + 2021, +/**/ + 2020, +/**/ + 2019, +/**/ + 2018, +/**/ + 2017, +/**/ + 2016, +/**/ + 2015, +/**/ + 2014, +/**/ + 2013, +/**/ + 2012, +/**/ + 2011, +/**/ + 2010, +/**/ + 2009, +/**/ + 2008, +/**/ + 2007, +/**/ + 2006, +/**/ + 2005, +/**/ + 2004, +/**/ + 2003, +/**/ + 2002, +/**/ + 2001, +/**/ + 2000, +/**/ + 1999, +/**/ + 1998, +/**/ + 1997, +/**/ + 1996, +/**/ + 1995, +/**/ + 1994, +/**/ + 1993, +/**/ + 1992, +/**/ + 1991, +/**/ + 1990, +/**/ + 1989, +/**/ + 1988, +/**/ + 1987, +/**/ + 1986, +/**/ + 1985, +/**/ + 1984, +/**/ + 1983, +/**/ + 1982, +/**/ + 1981, +/**/ + 1980, +/**/ + 1979, +/**/ + 1978, +/**/ + 1977, +/**/ + 1976, +/**/ + 1975, +/**/ + 1974, +/**/ + 1973, +/**/ + 1972, +/**/ + 1971, +/**/ + 1970, +/**/ + 1969, +/**/ + 1968, +/**/ + 1967, +/**/ + 1966, +/**/ + 1965, +/**/ + 1964, +/**/ + 1963, +/**/ + 1962, +/**/ + 1961, +/**/ + 1960, +/**/ + 1959, +/**/ + 1958, +/**/ + 1957, +/**/ + 1956, +/**/ + 1955, +/**/ + 1954, +/**/ + 1953, +/**/ + 1952, +/**/ + 1951, +/**/ + 1950, +/**/ + 1949, +/**/ + 1948, +/**/ + 1947, +/**/ + 1946, +/**/ + 1945, +/**/ + 1944, +/**/ + 1943, +/**/ + 1942, +/**/ + 1941, +/**/ + 1940, +/**/ + 1939, +/**/ + 1938, +/**/ + 1937, +/**/ + 1936, +/**/ + 1935, +/**/ + 1934, +/**/ + 1933, +/**/ + 1932, +/**/ + 1931, +/**/ + 1930, +/**/ + 1929, +/**/ + 1928, +/**/ + 1927, +/**/ + 1926, +/**/ + 1925, +/**/ + 1924, +/**/ + 1923, +/**/ + 1922, +/**/ + 1921, +/**/ + 1920, +/**/ + 1919, +/**/ + 1918, +/**/ + 1917, +/**/ + 1916, +/**/ + 1915, +/**/ + 1914, +/**/ + 1913, +/**/ + 1912, +/**/ + 1911, +/**/ + 1910, +/**/ + 1909, +/**/ + 1908, +/**/ + 1907, +/**/ + 1906, +/**/ + 1905, +/**/ + 1904, +/**/ + 1903, +/**/ + 1902, +/**/ + 1901, +/**/ + 1900, +/**/ + 1899, +/**/ + 1898, +/**/ + 1897, +/**/ + 1896, +/**/ + 1895, +/**/ + 1894, +/**/ + 1893, +/**/ + 1892, +/**/ + 1891, +/**/ + 1890, +/**/ + 1889, +/**/ + 1888, +/**/ + 1887, +/**/ + 1886, +/**/ + 1885, +/**/ + 1884, +/**/ + 1883, +/**/ + 1882, +/**/ + 1881, +/**/ + 1880, +/**/ + 1879, +/**/ + 1878, +/**/ + 1877, +/**/ + 1876, +/**/ + 1875, +/**/ + 1874, +/**/ + 1873, +/**/ + 1872, +/**/ + 1871, +/**/ + 1870, +/**/ + 1869, +/**/ + 1868, +/**/ + 1867, +/**/ + 1866, +/**/ + 1865, +/**/ + 1864, +/**/ + 1863, +/**/ + 1862, +/**/ + 1861, +/**/ + 1860, +/**/ + 1859, +/**/ + 1858, +/**/ + 1857, +/**/ + 1856, +/**/ + 1855, +/**/ + 1854, +/**/ + 1853, +/**/ + 1852, +/**/ + 1851, +/**/ + 1850, +/**/ + 1849, +/**/ + 1848, +/**/ + 1847, +/**/ + 1846, +/**/ + 1845, +/**/ + 1844, +/**/ + 1843, +/**/ + 1842, +/**/ + 1841, +/**/ + 1840, +/**/ + 1839, +/**/ + 1838, +/**/ + 1837, +/**/ + 1836, +/**/ + 1835, +/**/ + 1834, +/**/ + 1833, +/**/ + 1832, +/**/ + 1831, +/**/ + 1830, +/**/ + 1829, +/**/ + 1828, +/**/ + 1827, +/**/ + 1826, +/**/ + 1825, +/**/ + 1824, +/**/ + 1823, +/**/ + 1822, +/**/ + 1821, +/**/ + 1820, +/**/ + 1819, +/**/ + 1818, +/**/ + 1817, +/**/ + 1816, +/**/ + 1815, +/**/ + 1814, +/**/ + 1813, +/**/ + 1812, +/**/ + 1811, +/**/ + 1810, +/**/ + 1809, +/**/ + 1808, +/**/ + 1807, +/**/ + 1806, +/**/ + 1805, +/**/ + 1804, +/**/ + 1803, +/**/ + 1802, +/**/ + 1801, +/**/ + 1800, +/**/ + 1799, +/**/ + 1798, +/**/ + 1797, +/**/ + 1796, +/**/ + 1795, +/**/ + 1794, +/**/ + 1793, +/**/ + 1792, +/**/ + 1791, +/**/ + 1790, +/**/ + 1789, +/**/ + 1788, +/**/ + 1787, +/**/ + 1786, +/**/ + 1785, +/**/ + 1784, +/**/ + 1783, +/**/ + 1782, +/**/ + 1781, +/**/ + 1780, +/**/ + 1779, +/**/ + 1778, +/**/ + 1777, +/**/ + 1776, +/**/ + 1775, +/**/ + 1774, +/**/ + 1773, +/**/ + 1772, +/**/ + 1771, +/**/ + 1770, +/**/ + 1769, +/**/ + 1768, +/**/ + 1767, +/**/ + 1766, +/**/ + 1765, +/**/ + 1764, +/**/ + 1763, +/**/ + 1762, +/**/ + 1761, +/**/ + 1760, +/**/ + 1759, +/**/ + 1758, +/**/ + 1757, +/**/ + 1756, +/**/ + 1755, +/**/ + 1754, +/**/ + 1753, +/**/ + 1752, +/**/ + 1751, +/**/ + 1750, +/**/ + 1749, +/**/ + 1748, +/**/ + 1747, +/**/ + 1746, +/**/ + 1745, +/**/ + 1744, +/**/ + 1743, +/**/ + 1742, +/**/ + 1741, +/**/ + 1740, +/**/ + 1739, +/**/ + 1738, +/**/ + 1737, +/**/ + 1736, +/**/ + 1735, +/**/ + 1734, +/**/ + 1733, +/**/ + 1732, +/**/ + 1731, +/**/ + 1730, +/**/ + 1729, +/**/ + 1728, +/**/ + 1727, +/**/ + 1726, +/**/ + 1725, +/**/ + 1724, +/**/ + 1723, +/**/ + 1722, +/**/ + 1721, +/**/ + 1720, +/**/ + 1719, +/**/ + 1718, +/**/ + 1717, +/**/ + 1716, +/**/ + 1715, +/**/ + 1714, +/**/ + 1713, +/**/ + 1712, +/**/ + 1711, +/**/ + 1710, +/**/ + 1709, +/**/ + 1708, +/**/ + 1707, +/**/ + 1706, +/**/ + 1705, +/**/ + 1704, +/**/ + 1703, +/**/ + 1702, +/**/ + 1701, +/**/ + 1700, +/**/ + 1699, +/**/ + 1698, +/**/ + 1697, +/**/ + 1696, +/**/ + 1695, +/**/ + 1694, +/**/ + 1693, +/**/ + 1692, +/**/ + 1691, +/**/ + 1690, +/**/ + 1689, +/**/ + 1688, +/**/ + 1687, +/**/ + 1686, +/**/ + 1685, +/**/ + 1684, +/**/ + 1683, +/**/ + 1682, +/**/ + 1681, +/**/ + 1680, +/**/ + 1679, +/**/ + 1678, +/**/ + 1677, +/**/ + 1676, +/**/ + 1675, +/**/ + 1674, +/**/ + 1673, +/**/ + 1672, +/**/ + 1671, +/**/ + 1670, +/**/ + 1669, +/**/ + 1668, +/**/ + 1667, +/**/ + 1666, +/**/ + 1665, +/**/ + 1664, +/**/ + 1663, +/**/ + 1662, +/**/ + 1661, +/**/ + 1660, +/**/ + 1659, +/**/ + 1658, +/**/ + 1657, +/**/ + 1656, +/**/ + 1655, +/**/ + 1654, +/**/ + 1653, +/**/ + 1652, +/**/ + 1651, +/**/ + 1650, +/**/ + 1649, +/**/ + 1648, +/**/ + 1647, +/**/ + 1646, +/**/ + 1645, +/**/ + 1644, +/**/ + 1643, +/**/ + 1642, +/**/ + 1641, +/**/ + 1640, +/**/ + 1639, +/**/ + 1638, +/**/ + 1637, +/**/ + 1636, +/**/ + 1635, +/**/ + 1634, +/**/ + 1633, +/**/ + 1632, +/**/ + 1631, +/**/ + 1630, +/**/ + 1629, +/**/ + 1628, +/**/ + 1627, +/**/ + 1626, +/**/ + 1625, +/**/ + 1624, +/**/ + 1623, +/**/ + 1622, +/**/ + 1621, +/**/ + 1620, +/**/ + 1619, +/**/ + 1618, +/**/ + 1617, +/**/ + 1616, +/**/ + 1615, +/**/ + 1614, +/**/ + 1613, +/**/ + 1612, +/**/ + 1611, +/**/ + 1610, +/**/ + 1609, +/**/ + 1608, +/**/ + 1607, +/**/ + 1606, +/**/ + 1605, +/**/ + 1604, +/**/ + 1603, +/**/ + 1602, +/**/ + 1601, +/**/ + 1600, +/**/ + 1599, +/**/ + 1598, +/**/ + 1597, +/**/ + 1596, +/**/ + 1595, +/**/ + 1594, +/**/ + 1593, +/**/ + 1592, +/**/ + 1591, +/**/ + 1590, +/**/ + 1589, +/**/ + 1588, +/**/ + 1587, +/**/ + 1586, +/**/ + 1585, +/**/ + 1584, +/**/ + 1583, +/**/ + 1582, +/**/ + 1581, +/**/ + 1580, +/**/ + 1579, +/**/ + 1578, +/**/ + 1577, +/**/ + 1576, +/**/ + 1575, +/**/ + 1574, +/**/ + 1573, +/**/ + 1572, +/**/ + 1571, +/**/ + 1570, +/**/ + 1569, +/**/ + 1568, +/**/ + 1567, +/**/ + 1566, +/**/ + 1565, +/**/ + 1564, +/**/ + 1563, +/**/ + 1562, +/**/ + 1561, +/**/ + 1560, +/**/ + 1559, +/**/ + 1558, +/**/ + 1557, +/**/ + 1556, +/**/ + 1555, +/**/ + 1554, +/**/ + 1553, +/**/ + 1552, +/**/ + 1551, +/**/ + 1550, +/**/ + 1549, +/**/ + 1548, +/**/ + 1547, +/**/ + 1546, +/**/ + 1545, +/**/ + 1544, +/**/ + 1543, +/**/ + 1542, +/**/ + 1541, +/**/ + 1540, +/**/ + 1539, +/**/ + 1538, +/**/ + 1537, +/**/ + 1536, +/**/ + 1535, +/**/ + 1534, +/**/ + 1533, +/**/ + 1532, +/**/ + 1531, +/**/ + 1530, +/**/ + 1529, +/**/ + 1528, +/**/ + 1527, +/**/ + 1526, +/**/ + 1525, +/**/ + 1524, +/**/ + 1523, +/**/ + 1522, +/**/ + 1521, +/**/ + 1520, +/**/ + 1519, +/**/ + 1518, +/**/ + 1517, +/**/ + 1516, +/**/ + 1515, +/**/ + 1514, +/**/ + 1513, +/**/ + 1512, +/**/ + 1511, +/**/ + 1510, +/**/ + 1509, +/**/ + 1508, +/**/ + 1507, +/**/ + 1506, +/**/ + 1505, +/**/ + 1504, +/**/ + 1503, +/**/ + 1502, +/**/ + 1501, +/**/ + 1500, +/**/ + 1499, +/**/ + 1498, +/**/ + 1497, +/**/ + 1496, +/**/ + 1495, +/**/ + 1494, +/**/ + 1493, +/**/ + 1492, +/**/ + 1491, +/**/ + 1490, +/**/ + 1489, +/**/ + 1488, +/**/ + 1487, +/**/ + 1486, +/**/ + 1485, +/**/ + 1484, +/**/ + 1483, +/**/ + 1482, +/**/ + 1481, +/**/ + 1480, +/**/ + 1479, +/**/ + 1478, +/**/ + 1477, +/**/ + 1476, +/**/ + 1475, +/**/ + 1474, +/**/ + 1473, +/**/ + 1472, +/**/ + 1471, +/**/ + 1470, +/**/ + 1469, +/**/ + 1468, +/**/ + 1467, +/**/ + 1466, +/**/ + 1465, +/**/ + 1464, +/**/ + 1463, +/**/ + 1462, +/**/ + 1461, +/**/ + 1460, +/**/ + 1459, +/**/ + 1458, +/**/ + 1457, +/**/ + 1456, +/**/ + 1455, +/**/ + 1454, +/**/ + 1453, +/**/ + 1452, +/**/ + 1451, +/**/ + 1450, +/**/ + 1449, +/**/ + 1448, +/**/ + 1447, +/**/ + 1446, +/**/ + 1445, +/**/ + 1444, +/**/ + 1443, +/**/ + 1442, +/**/ + 1441, +/**/ + 1440, +/**/ + 1439, +/**/ + 1438, +/**/ + 1437, +/**/ + 1436, +/**/ + 1435, +/**/ + 1434, +/**/ + 1433, +/**/ + 1432, +/**/ + 1431, +/**/ + 1430, +/**/ + 1429, +/**/ + 1428, +/**/ + 1427, +/**/ + 1426, +/**/ + 1425, +/**/ + 1424, +/**/ + 1423, +/**/ + 1422, +/**/ + 1421, +/**/ + 1420, +/**/ + 1419, +/**/ + 1418, +/**/ + 1417, +/**/ + 1416, +/**/ + 1415, +/**/ + 1414, +/**/ + 1413, +/**/ + 1412, +/**/ + 1411, +/**/ + 1410, +/**/ + 1409, +/**/ + 1408, +/**/ + 1407, +/**/ + 1406, +/**/ + 1405, +/**/ + 1404, +/**/ + 1403, +/**/ + 1402, +/**/ + 1401, +/**/ + 1400, +/**/ + 1399, +/**/ + 1398, +/**/ + 1397, +/**/ + 1396, +/**/ + 1395, +/**/ + 1394, +/**/ + 1393, +/**/ + 1392, +/**/ + 1391, +/**/ + 1390, +/**/ + 1389, +/**/ + 1388, +/**/ + 1387, +/**/ + 1386, +/**/ + 1385, +/**/ + 1384, +/**/ + 1383, +/**/ + 1382, +/**/ + 1381, +/**/ + 1380, +/**/ + 1379, +/**/ + 1378, +/**/ + 1377, +/**/ + 1376, +/**/ + 1375, +/**/ + 1374, +/**/ + 1373, +/**/ + 1372, +/**/ + 1371, +/**/ + 1370, +/**/ + 1369, +/**/ + 1368, +/**/ + 1367, +/**/ + 1366, +/**/ + 1365, +/**/ + 1364, +/**/ + 1363, +/**/ + 1362, +/**/ + 1361, +/**/ + 1360, +/**/ + 1359, +/**/ + 1358, +/**/ + 1357, +/**/ + 1356, +/**/ + 1355, +/**/ + 1354, +/**/ + 1353, +/**/ + 1352, +/**/ + 1351, +/**/ + 1350, +/**/ + 1349, +/**/ + 1348, +/**/ + 1347, +/**/ + 1346, +/**/ + 1345, +/**/ + 1344, +/**/ + 1343, +/**/ + 1342, +/**/ + 1341, +/**/ + 1340, +/**/ + 1339, +/**/ + 1338, +/**/ + 1337, +/**/ + 1336, +/**/ + 1335, +/**/ + 1334, +/**/ + 1333, +/**/ + 1332, +/**/ + 1331, +/**/ + 1330, +/**/ + 1329, +/**/ + 1328, +/**/ + 1327, +/**/ + 1326, +/**/ + 1325, +/**/ + 1324, +/**/ + 1323, +/**/ + 1322, +/**/ + 1321, +/**/ + 1320, +/**/ + 1319, +/**/ + 1318, +/**/ + 1317, +/**/ + 1316, +/**/ + 1315, +/**/ + 1314, +/**/ + 1313, +/**/ + 1312, +/**/ + 1311, +/**/ + 1310, +/**/ + 1309, +/**/ + 1308, +/**/ + 1307, +/**/ + 1306, +/**/ + 1305, +/**/ + 1304, +/**/ + 1303, +/**/ + 1302, +/**/ + 1301, +/**/ + 1300, +/**/ + 1299, +/**/ + 1298, +/**/ + 1297, +/**/ + 1296, +/**/ + 1295, +/**/ + 1294, +/**/ + 1293, +/**/ + 1292, +/**/ + 1291, +/**/ + 1290, +/**/ + 1289, +/**/ + 1288, +/**/ + 1287, +/**/ + 1286, +/**/ + 1285, +/**/ + 1284, +/**/ + 1283, +/**/ + 1282, +/**/ + 1281, +/**/ + 1280, +/**/ + 1279, +/**/ + 1278, +/**/ + 1277, +/**/ + 1276, +/**/ + 1275, +/**/ + 1274, +/**/ + 1273, +/**/ + 1272, +/**/ + 1271, +/**/ + 1270, +/**/ + 1269, +/**/ + 1268, +/**/ + 1267, +/**/ + 1266, +/**/ + 1265, +/**/ + 1264, +/**/ + 1263, +/**/ + 1262, +/**/ + 1261, +/**/ + 1260, +/**/ + 1259, +/**/ + 1258, +/**/ + 1257, +/**/ + 1256, +/**/ + 1255, +/**/ + 1254, +/**/ + 1253, +/**/ + 1252, +/**/ + 1251, +/**/ + 1250, +/**/ + 1249, +/**/ + 1248, +/**/ + 1247, +/**/ + 1246, +/**/ + 1245, +/**/ + 1244, +/**/ + 1243, +/**/ + 1242, +/**/ + 1241, +/**/ + 1240, +/**/ + 1239, +/**/ + 1238, +/**/ + 1237, +/**/ + 1236, +/**/ + 1235, +/**/ + 1234, +/**/ + 1233, +/**/ + 1232, +/**/ + 1231, +/**/ + 1230, +/**/ + 1229, +/**/ + 1228, +/**/ + 1227, +/**/ + 1226, +/**/ + 1225, +/**/ + 1224, +/**/ + 1223, +/**/ + 1222, +/**/ + 1221, +/**/ + 1220, +/**/ + 1219, +/**/ + 1218, +/**/ + 1217, +/**/ + 1216, +/**/ + 1215, +/**/ + 1214, +/**/ + 1213, +/**/ + 1212, +/**/ + 1211, +/**/ + 1210, +/**/ + 1209, +/**/ + 1208, +/**/ + 1207, +/**/ + 1206, +/**/ + 1205, +/**/ + 1204, +/**/ + 1203, +/**/ + 1202, +/**/ + 1201, +/**/ + 1200, +/**/ + 1199, +/**/ + 1198, +/**/ + 1197, +/**/ + 1196, +/**/ + 1195, +/**/ + 1194, +/**/ + 1193, +/**/ + 1192, +/**/ + 1191, +/**/ + 1190, +/**/ + 1189, +/**/ + 1188, +/**/ + 1187, +/**/ + 1186, +/**/ + 1185, +/**/ + 1184, +/**/ + 1183, +/**/ + 1182, +/**/ + 1181, +/**/ + 1180, +/**/ + 1179, +/**/ + 1178, +/**/ + 1177, +/**/ + 1176, +/**/ + 1175, +/**/ + 1174, +/**/ + 1173, +/**/ + 1172, +/**/ + 1171, +/**/ + 1170, +/**/ + 1169, +/**/ + 1168, +/**/ + 1167, +/**/ + 1166, +/**/ + 1165, +/**/ + 1164, +/**/ + 1163, +/**/ + 1162, +/**/ + 1161, +/**/ + 1160, +/**/ + 1159, +/**/ + 1158, +/**/ + 1157, +/**/ + 1156, +/**/ + 1155, +/**/ + 1154, +/**/ + 1153, +/**/ + 1152, +/**/ + 1151, +/**/ + 1150, +/**/ + 1149, +/**/ + 1148, +/**/ + 1147, +/**/ + 1146, +/**/ + 1145, +/**/ + 1144, +/**/ + 1143, +/**/ + 1142, +/**/ + 1141, +/**/ + 1140, +/**/ + 1139, +/**/ + 1138, +/**/ + 1137, +/**/ + 1136, +/**/ + 1135, +/**/ + 1134, +/**/ + 1133, +/**/ + 1132, +/**/ + 1131, +/**/ + 1130, +/**/ + 1129, +/**/ + 1128, +/**/ + 1127, +/**/ + 1126, +/**/ + 1125, +/**/ + 1124, +/**/ + 1123, +/**/ + 1122, +/**/ + 1121, +/**/ + 1120, +/**/ + 1119, +/**/ + 1118, +/**/ + 1117, +/**/ + 1116, +/**/ + 1115, +/**/ + 1114, +/**/ + 1113, +/**/ + 1112, +/**/ + 1111, +/**/ + 1110, +/**/ + 1109, +/**/ + 1108, +/**/ + 1107, +/**/ + 1106, +/**/ + 1105, +/**/ + 1104, +/**/ + 1103, +/**/ + 1102, +/**/ + 1101, +/**/ + 1100, +/**/ + 1099, +/**/ + 1098, +/**/ + 1097, +/**/ + 1096, +/**/ + 1095, +/**/ + 1094, +/**/ + 1093, +/**/ + 1092, +/**/ + 1091, +/**/ + 1090, +/**/ + 1089, +/**/ + 1088, +/**/ + 1087, +/**/ + 1086, +/**/ + 1085, +/**/ + 1084, +/**/ + 1083, +/**/ + 1082, +/**/ + 1081, +/**/ + 1080, +/**/ + 1079, +/**/ + 1078, +/**/ + 1077, +/**/ + 1076, +/**/ + 1075, +/**/ + 1074, +/**/ + 1073, +/**/ + 1072, +/**/ + 1071, +/**/ + 1070, +/**/ + 1069, +/**/ + 1068, +/**/ + 1067, +/**/ + 1066, +/**/ + 1065, +/**/ + 1064, +/**/ + 1063, +/**/ + 1062, +/**/ + 1061, +/**/ + 1060, +/**/ + 1059, +/**/ + 1058, +/**/ + 1057, +/**/ + 1056, +/**/ + 1055, +/**/ + 1054, +/**/ + 1053, +/**/ + 1052, +/**/ + 1051, +/**/ + 1050, +/**/ + 1049, +/**/ + 1048, +/**/ + 1047, +/**/ + 1046, +/**/ + 1045, +/**/ + 1044, +/**/ + 1043, +/**/ + 1042, +/**/ + 1041, +/**/ + 1040, +/**/ + 1039, +/**/ + 1038, +/**/ + 1037, +/**/ + 1036, +/**/ + 1035, +/**/ + 1034, +/**/ + 1033, +/**/ + 1032, +/**/ + 1031, +/**/ + 1030, +/**/ + 1029, +/**/ + 1028, +/**/ + 1027, +/**/ + 1026, +/**/ + 1025, +/**/ + 1024, +/**/ + 1023, +/**/ + 1022, +/**/ + 1021, +/**/ + 1020, +/**/ + 1019, +/**/ + 1018, +/**/ + 1017, +/**/ + 1016, +/**/ + 1015, +/**/ + 1014, +/**/ + 1013, +/**/ + 1012, +/**/ + 1011, +/**/ + 1010, +/**/ + 1009, +/**/ + 1008, +/**/ + 1007, +/**/ + 1006, +/**/ + 1005, +/**/ + 1004, +/**/ + 1003, +/**/ + 1002, +/**/ + 1001, +/**/ + 1000, +/**/ + 999, +/**/ + 998, +/**/ + 997, +/**/ + 996, +/**/ + 995, +/**/ + 994, +/**/ + 993, +/**/ + 992, +/**/ + 991, +/**/ + 990, +/**/ + 989, +/**/ + 988, +/**/ + 987, +/**/ + 986, +/**/ + 985, +/**/ + 984, +/**/ + 983, +/**/ + 982, +/**/ + 981, +/**/ + 980, +/**/ + 979, +/**/ + 978, +/**/ + 977, +/**/ + 976, +/**/ + 975, +/**/ + 974, +/**/ + 973, +/**/ + 972, +/**/ + 971, +/**/ + 970, +/**/ + 969, +/**/ + 968, +/**/ + 967, +/**/ + 966, +/**/ + 965, +/**/ + 964, +/**/ + 963, +/**/ + 962, +/**/ + 961, +/**/ + 960, +/**/ + 959, +/**/ + 958, +/**/ + 957, +/**/ + 956, +/**/ + 955, +/**/ + 954, +/**/ + 953, +/**/ + 952, +/**/ + 951, +/**/ + 950, +/**/ + 949, +/**/ + 948, +/**/ + 947, +/**/ + 946, +/**/ + 945, +/**/ + 944, +/**/ + 943, +/**/ + 942, +/**/ + 941, +/**/ + 940, +/**/ + 939, +/**/ + 938, +/**/ + 937, +/**/ + 936, +/**/ + 935, +/**/ + 934, +/**/ + 933, +/**/ + 932, +/**/ + 931, +/**/ + 930, +/**/ + 929, +/**/ + 928, +/**/ + 927, +/**/ + 926, +/**/ + 925, +/**/ + 924, +/**/ + 923, +/**/ + 922, +/**/ + 921, +/**/ + 920, +/**/ + 919, +/**/ + 918, +/**/ + 917, +/**/ + 916, +/**/ + 915, +/**/ + 914, +/**/ + 913, +/**/ + 912, +/**/ + 911, +/**/ + 910, +/**/ + 909, +/**/ + 908, +/**/ + 907, +/**/ + 906, +/**/ + 905, +/**/ + 904, +/**/ + 903, +/**/ + 902, +/**/ + 901, +/**/ + 900, +/**/ + 899, +/**/ + 898, +/**/ + 897, +/**/ + 896, +/**/ + 895, +/**/ + 894, +/**/ + 893, +/**/ + 892, +/**/ + 891, +/**/ + 890, +/**/ + 889, +/**/ + 888, +/**/ + 887, +/**/ + 886, +/**/ + 885, +/**/ + 884, +/**/ + 883, +/**/ + 882, +/**/ + 881, +/**/ + 880, +/**/ + 879, +/**/ + 878, +/**/ + 877, +/**/ + 876, +/**/ + 875, +/**/ + 874, +/**/ + 873, +/**/ + 872, +/**/ + 871, +/**/ + 870, +/**/ + 869, +/**/ + 868, +/**/ + 867, +/**/ + 866, +/**/ + 865, +/**/ + 864, +/**/ + 863, +/**/ + 862, +/**/ + 861, +/**/ + 860, +/**/ + 859, +/**/ + 858, +/**/ + 857, +/**/ + 856, +/**/ + 855, +/**/ + 854, +/**/ + 853, +/**/ + 852, +/**/ + 851, +/**/ + 850, +/**/ + 849, +/**/ + 848, +/**/ + 847, +/**/ + 846, +/**/ + 845, +/**/ + 844, +/**/ + 843, +/**/ + 842, +/**/ + 841, +/**/ + 840, +/**/ + 839, +/**/ + 838, +/**/ + 837, +/**/ + 836, +/**/ + 835, +/**/ + 834, +/**/ + 833, +/**/ + 832, +/**/ + 831, +/**/ + 830, +/**/ + 829, +/**/ + 828, +/**/ + 827, +/**/ + 826, +/**/ + 825, +/**/ + 824, +/**/ + 823, +/**/ + 822, +/**/ + 821, +/**/ + 820, +/**/ + 819, +/**/ + 818, +/**/ + 817, +/**/ + 816, +/**/ + 815, +/**/ + 814, +/**/ + 813, +/**/ + 812, +/**/ + 811, +/**/ + 810, +/**/ + 809, +/**/ + 808, +/**/ + 807, +/**/ + 806, +/**/ + 805, +/**/ + 804, +/**/ + 803, +/**/ + 802, +/**/ + 801, +/**/ + 800, +/**/ + 799, +/**/ + 798, +/**/ + 797, +/**/ + 796, +/**/ + 795, +/**/ + 794, +/**/ + 793, +/**/ + 792, +/**/ + 791, +/**/ + 790, +/**/ + 789, +/**/ + 788, +/**/ + 787, +/**/ + 786, +/**/ + 785, +/**/ + 784, +/**/ + 783, +/**/ + 782, +/**/ + 781, +/**/ + 780, +/**/ + 779, +/**/ + 778, +/**/ + 777, +/**/ + 776, +/**/ + 775, +/**/ + 774, +/**/ + 773, +/**/ + 772, +/**/ + 771, +/**/ + 770, +/**/ + 769, +/**/ + 768, +/**/ + 767, +/**/ + 766, +/**/ + 765, +/**/ + 764, +/**/ + 763, +/**/ + 762, +/**/ + 761, +/**/ + 760, +/**/ + 759, +/**/ + 758, +/**/ + 757, +/**/ + 756, +/**/ + 755, +/**/ + 754, +/**/ + 753, +/**/ + 752, +/**/ + 751, +/**/ + 750, +/**/ + 749, +/**/ + 748, +/**/ + 747, +/**/ + 746, +/**/ + 745, +/**/ + 744, +/**/ + 743, +/**/ + 742, +/**/ + 741, +/**/ + 740, +/**/ + 739, +/**/ + 738, +/**/ + 737, +/**/ + 736, +/**/ + 735, +/**/ + 734, +/**/ + 733, +/**/ + 732, +/**/ + 731, +/**/ + 730, +/**/ + 729, +/**/ + 728, +/**/ + 727, +/**/ + 726, +/**/ + 725, +/**/ + 724, +/**/ + 723, +/**/ + 722, +/**/ + 721, +/**/ + 720, +/**/ + 719, +/**/ + 718, +/**/ + 717, +/**/ + 716, +/**/ + 715, +/**/ + 714, +/**/ + 713, +/**/ + 712, +/**/ + 711, +/**/ + 710, +/**/ + 709, +/**/ + 708, +/**/ + 707, +/**/ + 706, +/**/ + 705, +/**/ + 704, +/**/ + 703, +/**/ + 702, +/**/ + 701, +/**/ + 700, +/**/ + 699, +/**/ + 698, +/**/ + 697, +/**/ + 696, +/**/ + 695, +/**/ + 694, +/**/ + 693, +/**/ + 692, +/**/ + 691, +/**/ + 690, +/**/ + 689, +/**/ + 688, +/**/ + 687, +/**/ + 686, +/**/ + 685, +/**/ + 684, +/**/ + 683, +/**/ + 682, +/**/ + 681, +/**/ + 680, +/**/ + 679, +/**/ + 678, +/**/ + 677, +/**/ + 676, +/**/ + 675, +/**/ + 674, +/**/ + 673, +/**/ + 672, +/**/ + 671, +/**/ + 670, +/**/ + 669, +/**/ + 668, +/**/ + 667, +/**/ + 666, +/**/ + 665, +/**/ + 664, +/**/ + 663, +/**/ + 662, +/**/ + 661, +/**/ + 660, +/**/ + 659, +/**/ + 658, +/**/ + 657, +/**/ + 656, +/**/ + 655, +/**/ + 654, +/**/ + 653, +/**/ + 652, +/**/ + 651, +/**/ + 650, +/**/ + 649, +/**/ + 648, +/**/ + 647, +/**/ + 646, +/**/ + 645, +/**/ + 644, +/**/ + 643, +/**/ + 642, +/**/ + 641, +/**/ + 640, +/**/ + 639, +/**/ + 638, +/**/ + 637, +/**/ + 636, +/**/ + 635, +/**/ + 634, +/**/ + 633, +/**/ + 632, +/**/ + 631, +/**/ + 630, +/**/ + 629, +/**/ + 628, +/**/ + 627, +/**/ + 626, +/**/ + 625, +/**/ + 624, +/**/ + 623, +/**/ + 622, +/**/ + 621, +/**/ + 620, +/**/ + 619, +/**/ + 618, +/**/ + 617, +/**/ + 616, +/**/ + 615, +/**/ + 614, +/**/ + 613, +/**/ + 612, +/**/ + 611, +/**/ + 610, +/**/ + 609, +/**/ + 608, +/**/ + 607, +/**/ + 606, +/**/ + 605, +/**/ + 604, +/**/ + 603, +/**/ + 602, +/**/ + 601, +/**/ + 600, +/**/ + 599, +/**/ + 598, +/**/ + 597, +/**/ + 596, +/**/ + 595, +/**/ + 594, +/**/ + 593, +/**/ + 592, +/**/ + 591, +/**/ + 590, +/**/ + 589, +/**/ + 588, +/**/ + 587, +/**/ + 586, +/**/ + 585, +/**/ + 584, +/**/ + 583, +/**/ + 582, +/**/ + 581, +/**/ + 580, +/**/ + 579, +/**/ + 578, +/**/ + 577, +/**/ + 576, +/**/ + 575, +/**/ + 574, +/**/ + 573, +/**/ + 572, +/**/ + 571, +/**/ + 570, +/**/ + 569, +/**/ + 568, +/**/ + 567, +/**/ + 566, +/**/ + 565, +/**/ + 564, +/**/ + 563, +/**/ + 562, +/**/ + 561, +/**/ + 560, +/**/ + 559, +/**/ + 558, +/**/ + 557, +/**/ + 556, +/**/ + 555, +/**/ + 554, +/**/ + 553, +/**/ + 552, +/**/ + 551, +/**/ + 550, +/**/ + 549, +/**/ + 548, +/**/ + 547, +/**/ + 546, +/**/ + 545, +/**/ + 544, +/**/ + 543, +/**/ + 542, +/**/ + 541, +/**/ + 540, +/**/ + 539, +/**/ + 538, +/**/ + 537, +/**/ + 536, +/**/ + 535, +/**/ + 534, +/**/ + 533, +/**/ + 532, +/**/ + 531, +/**/ + 530, +/**/ + 529, +/**/ + 528, +/**/ + 527, +/**/ + 526, +/**/ + 525, +/**/ + 524, +/**/ + 523, +/**/ + 522, +/**/ + 521, +/**/ + 520, +/**/ + 519, +/**/ + 518, +/**/ + 517, +/**/ + 516, +/**/ + 515, +/**/ + 514, +/**/ + 513, +/**/ + 512, +/**/ + 511, +/**/ + 510, +/**/ + 509, +/**/ + 508, +/**/ + 507, +/**/ + 506, +/**/ + 505, +/**/ + 504, +/**/ + 503, +/**/ + 502, +/**/ + 501, +/**/ + 500, +/**/ + 499, +/**/ + 498, +/**/ + 497, +/**/ + 496, +/**/ + 495, +/**/ + 494, +/**/ + 493, +/**/ + 492, +/**/ + 491, +/**/ + 490, +/**/ + 489, +/**/ + 488, +/**/ + 487, +/**/ + 486, +/**/ + 485, +/**/ + 484, +/**/ + 483, +/**/ + 482, +/**/ + 481, +/**/ + 480, +/**/ + 479, +/**/ + 478, +/**/ + 477, +/**/ + 476, +/**/ + 475, +/**/ + 474, +/**/ + 473, +/**/ + 472, +/**/ + 471, +/**/ + 470, +/**/ + 469, +/**/ + 468, +/**/ + 467, +/**/ + 466, +/**/ + 465, +/**/ + 464, +/**/ + 463, +/**/ + 462, +/**/ + 461, +/**/ + 460, +/**/ + 459, +/**/ + 458, +/**/ + 457, +/**/ + 456, +/**/ + 455, +/**/ + 454, +/**/ + 453, +/**/ + 452, +/**/ + 451, +/**/ + 450, +/**/ + 449, +/**/ + 448, +/**/ + 447, +/**/ + 446, +/**/ + 445, +/**/ + 444, +/**/ + 443, +/**/ + 442, +/**/ + 441, +/**/ + 440, +/**/ + 439, +/**/ + 438, +/**/ + 437, +/**/ + 436, +/**/ + 435, +/**/ + 434, +/**/ + 433, +/**/ + 432, +/**/ + 431, +/**/ + 430, +/**/ + 429, +/**/ + 428, +/**/ + 427, +/**/ + 426, +/**/ + 425, +/**/ + 424, +/**/ + 423, +/**/ + 422, +/**/ + 421, +/**/ + 420, +/**/ + 419, +/**/ + 418, +/**/ + 417, +/**/ + 416, +/**/ + 415, +/**/ + 414, +/**/ + 413, +/**/ + 412, +/**/ + 411, +/**/ + 410, +/**/ + 409, +/**/ + 408, +/**/ + 407, +/**/ + 406, +/**/ + 405, +/**/ + 404, +/**/ + 403, +/**/ + 402, +/**/ + 401, +/**/ + 400, +/**/ + 399, +/**/ + 398, +/**/ + 397, +/**/ + 396, +/**/ + 395, +/**/ + 394, +/**/ + 393, +/**/ + 392, +/**/ + 391, +/**/ + 390, +/**/ + 389, +/**/ + 388, +/**/ + 387, +/**/ + 386, +/**/ + 385, +/**/ + 384, +/**/ + 383, +/**/ + 382, +/**/ + 381, +/**/ + 380, +/**/ + 379, +/**/ + 378, +/**/ + 377, +/**/ + 376, +/**/ + 375, +/**/ + 374, +/**/ + 373, +/**/ + 372, +/**/ + 371, +/**/ + 370, +/**/ + 369, +/**/ + 368, +/**/ + 367, +/**/ + 366, +/**/ + 365, +/**/ + 364, +/**/ + 363, +/**/ + 362, +/**/ + 361, +/**/ + 360, +/**/ + 359, +/**/ + 358, +/**/ + 357, +/**/ + 356, +/**/ + 355, +/**/ + 354, +/**/ + 353, +/**/ + 352, +/**/ + 351, +/**/ + 350, +/**/ + 349, +/**/ + 348, +/**/ + 347, +/**/ + 346, +/**/ + 345, +/**/ + 344, +/**/ + 343, +/**/ + 342, +/**/ + 341, +/**/ + 340, +/**/ + 339, +/**/ + 338, +/**/ + 337, +/**/ + 336, +/**/ + 335, +/**/ + 334, +/**/ + 333, +/**/ + 332, +/**/ + 331, +/**/ + 330, +/**/ + 329, +/**/ + 328, +/**/ + 327, +/**/ + 326, +/**/ + 325, +/**/ + 324, +/**/ + 323, +/**/ + 322, +/**/ + 321, +/**/ + 320, +/**/ + 319, +/**/ + 318, +/**/ + 317, +/**/ + 316, +/**/ + 315, +/**/ + 314, +/**/ + 313, +/**/ + 312, +/**/ + 311, +/**/ + 310, +/**/ + 309, +/**/ + 308, +/**/ + 307, +/**/ + 306, +/**/ + 305, +/**/ + 304, +/**/ + 303, +/**/ + 302, +/**/ + 301, +/**/ + 300, +/**/ + 299, +/**/ + 298, +/**/ + 297, +/**/ + 296, +/**/ + 295, +/**/ + 294, +/**/ + 293, +/**/ + 292, +/**/ + 291, +/**/ + 290, +/**/ + 289, +/**/ + 288, +/**/ + 287, +/**/ + 286, +/**/ + 285, +/**/ + 284, +/**/ + 283, +/**/ + 282, +/**/ + 281, +/**/ + 280, +/**/ + 279, +/**/ + 278, +/**/ + 277, +/**/ + 276, +/**/ + 275, +/**/ + 274, +/**/ + 273, +/**/ + 272, +/**/ + 271, +/**/ + 270, +/**/ + 269, +/**/ + 268, +/**/ + 267, +/**/ + 266, +/**/ + 265, +/**/ + 264, +/**/ + 263, +/**/ + 262, +/**/ + 261, +/**/ + 260, +/**/ + 259, +/**/ + 258, +/**/ + 257, +/**/ + 256, +/**/ + 255, +/**/ + 254, +/**/ + 253, +/**/ + 252, +/**/ + 251, +/**/ + 250, +/**/ + 249, +/**/ + 248, +/**/ + 247, +/**/ + 246, +/**/ + 245, +/**/ + 244, +/**/ + 243, +/**/ + 242, +/**/ + 241, +/**/ + 240, +/**/ + 239, +/**/ + 238, +/**/ + 237, +/**/ + 236, +/**/ + 235, +/**/ + 234, +/**/ + 233, +/**/ + 232, +/**/ + 231, +/**/ + 230, +/**/ + 229, +/**/ + 228, +/**/ + 227, +/**/ + 226, +/**/ + 225, +/**/ + 224, +/**/ + 223, +/**/ + 222, +/**/ + 221, +/**/ + 220, +/**/ + 219, +/**/ + 218, +/**/ + 217, +/**/ + 216, +/**/ + 215, +/**/ + 214, +/**/ + 213, +/**/ + 212, +/**/ + 211, +/**/ + 210, +/**/ + 209, +/**/ + 208, +/**/ + 207, +/**/ + 206, +/**/ + 205, +/**/ + 204, +/**/ + 203, +/**/ + 202, +/**/ + 201, +/**/ + 200, +/**/ + 199, +/**/ + 198, +/**/ + 197, +/**/ + 196, +/**/ + 195, +/**/ + 194, +/**/ + 193, +/**/ + 192, +/**/ + 191, +/**/ + 190, +/**/ + 189, +/**/ + 188, +/**/ + 187, +/**/ + 186, +/**/ + 185, +/**/ + 184, +/**/ + 183, +/**/ + 182, +/**/ + 181, +/**/ + 180, +/**/ + 179, +/**/ + 178, +/**/ + 177, +/**/ + 176, +/**/ + 175, +/**/ + 174, +/**/ + 173, +/**/ + 172, +/**/ + 171, +/**/ + 170, +/**/ + 169, +/**/ + 168, +/**/ + 167, +/**/ + 166, +/**/ + 165, +/**/ + 164, +/**/ + 163, +/**/ + 162, +/**/ + 161, +/**/ + 160, +/**/ + 159, +/**/ + 158, +/**/ + 157, +/**/ + 156, +/**/ + 155, +/**/ + 154, +/**/ + 153, +/**/ + 152, +/**/ + 151, +/**/ + 150, +/**/ + 149, +/**/ + 148, +/**/ + 147, +/**/ + 146, +/**/ + 145, +/**/ + 144, +/**/ + 143, +/**/ + 142, +/**/ + 141, +/**/ + 140, +/**/ + 139, +/**/ + 138, +/**/ + 137, +/**/ + 136, +/**/ + 135, +/**/ + 134, +/**/ + 133, +/**/ + 132, +/**/ + 131, +/**/ + 130, +/**/ + 129, +/**/ + 128, +/**/ + 127, +/**/ + 126, +/**/ + 125, +/**/ + 124, +/**/ + 123, +/**/ + 122, +/**/ + 121, +/**/ + 120, +/**/ + 119, +/**/ + 118, +/**/ + 117, +/**/ + 116, +/**/ + 115, +/**/ + 114, +/**/ + 113, +/**/ + 112, +/**/ + 111, +/**/ + 110, +/**/ + 109, +/**/ + 108, +/**/ + 107, +/**/ + 106, +/**/ + 105, +/**/ + 104, +/**/ + 103, +/**/ + 102, +/**/ + 101, +/**/ + 100, +/**/ + 99, +/**/ + 98, +/**/ + 97, +/**/ + 96, +/**/ + 95, +/**/ + 94, +/**/ + 93, +/**/ + 92, +/**/ + 91, +/**/ + 90, +/**/ + 89, +/**/ + 88, +/**/ + 87, +/**/ + 86, +/**/ + 85, +/**/ + 84, +/**/ + 83, +/**/ + 82, +/**/ + 81, +/**/ + 80, +/**/ + 79, +/**/ + 78, +/**/ + 77, +/**/ + 76, +/**/ + 75, +/**/ + 74, +/**/ + 73, +/**/ + 72, +/**/ + 71, +/**/ + 70, +/**/ + 69, +/**/ + 68, +/**/ + 67, +/**/ + 66, +/**/ + 65, +/**/ + 64, +/**/ + 63, +/**/ + 62, +/**/ + 61, +/**/ + 60, +/**/ + 59, +/**/ + 58, +/**/ + 57, +/**/ + 56, +/**/ + 55, +/**/ + 54, +/**/ + 53, +/**/ + 52, +/**/ + 51, +/**/ + 50, +/**/ + 49, +/**/ + 48, +/**/ + 47, +/**/ + 46, +/**/ + 45, +/**/ + 44, +/**/ + 43, +/**/ + 42, +/**/ + 41, +/**/ + 40, +/**/ + 39, +/**/ + 38, +/**/ + 37, +/**/ + 36, +/**/ + 35, +/**/ + 34, +/**/ + 33, +/**/ + 32, +/**/ + 31, +/**/ + 30, +/**/ + 29, +/**/ + 28, +/**/ + 27, +/**/ + 26, +/**/ + 25, +/**/ + 24, +/**/ + 23, +/**/ + 22, +/**/ + 21, +/**/ + 20, +/**/ + 19, +/**/ + 18, +/**/ + 17, +/**/ + 16, +/**/ + 15, +/**/ + 14, +/**/ + 13, +/**/ + 12, +/**/ + 11, +/**/ + 10, +/**/ + 9, +/**/ + 8, +/**/ + 7, +/**/ + 6, +/**/ + 5, +/**/ + 4, +/**/ + 3, +/**/ + 2, +/**/ + 1, +/**/ + 0 +}; + +/* + * Place to put a short description when adding a feature with a patch. + * Keep it short, e.g.,: "relative numbers", "persistent undo". + * Also add a comment marker to separate the lines. + * See the official Vim patches for the diff format: It must use a context of + * one line only. Create it by hand or use "diff -C2" and edit the patch. + */ +static char *(extra_patches[]) = +{ /* Add your patch description below this line */ +/**/ + NULL +}; + + int +highest_patch(void) +{ + // this relies on the highest patch number to be the first entry + return included_patches[0]; +} + +#if defined(FEAT_EVAL) || defined(PROTO) +/* + * Return TRUE if patch "n" has been included. + */ + int +has_patch(int n) +{ + int h, m, l; + + // Perform a binary search. + l = 0; + h = (int)(sizeof(included_patches) / sizeof(included_patches[0])) - 1; + while (l < h) + { + m = (l + h) / 2; + if (included_patches[m] == n) + return TRUE; + if (included_patches[m] < n) + h = m; + else + l = m + 1; + } + return FALSE; +} +#endif + + void +ex_version(exarg_T *eap) +{ + /* + * Ignore a ":version 9.99" command. + */ + if (*eap->arg == NUL) + { + msg_putchar('\n'); + list_version(); + } +} + +/* + * Output a string for the version message. If it's going to wrap, output a + * newline, unless the message is too long to fit on the screen anyway. + * When "wrap" is TRUE wrap the string in []. + */ + static void +version_msg_wrap(char_u *s, int wrap) +{ + int len = (int)vim_strsize(s) + (wrap ? 2 : 0); + + if (!got_int && len < (int)Columns && msg_col + len >= (int)Columns + && *s != '\n') + msg_putchar('\n'); + if (!got_int) + { + if (wrap) + msg_puts("["); + msg_puts((char *)s); + if (wrap) + msg_puts("]"); + } +} + + static void +version_msg(char *s) +{ + version_msg_wrap((char_u *)s, FALSE); +} + +/* + * List all features aligned in columns, dictionary style. + */ + static void +list_features(void) +{ + list_in_columns((char_u **)features, -1, -1); +} + +/* + * List string items nicely aligned in columns. + * When "size" is < 0 then the last entry is marked with NULL. + * The entry with index "current" is inclosed in []. + */ + void +list_in_columns(char_u **items, int size, int current) +{ + int i; + int ncol; + int nrow; + int cur_row = 1; + int item_count = 0; + int width = 0; +#ifdef FEAT_SYN_HL + int use_highlight = (items == (char_u **)features); +#endif + + // Find the length of the longest item, use that + 1 as the column + // width. + for (i = 0; size < 0 ? items[i] != NULL : i < size; ++i) + { + int l = (int)vim_strsize(items[i]) + (i == current ? 2 : 0); + + if (l > width) + width = l; + ++item_count; + } + width += 1; + + if (Columns < width) + { + // Not enough screen columns - show one per line + for (i = 0; i < item_count; ++i) + { + version_msg_wrap(items[i], i == current); + if (msg_col > 0 && i < item_count - 1) + msg_putchar('\n'); + } + return; + } + + // The rightmost column doesn't need a separator. + // Sacrifice it to fit in one more column if possible. + ncol = (int) (Columns + 1) / width; + nrow = item_count / ncol + (item_count % ncol ? 1 : 0); + + // "i" counts columns then rows. "idx" counts rows then columns. + for (i = 0; !got_int && i < nrow * ncol; ++i) + { + int idx = (i / ncol) + (i % ncol) * nrow; + + if (idx < item_count) + { + int last_col = (i + 1) % ncol == 0; + + if (idx == current) + msg_putchar('['); +#ifdef FEAT_SYN_HL + if (use_highlight && items[idx][0] == '-') + msg_puts_attr((char *)items[idx], HL_ATTR(HLF_W)); + else +#endif + msg_puts((char *)items[idx]); + if (idx == current) + msg_putchar(']'); + if (last_col) + { + if (msg_col > 0 && cur_row < nrow) + msg_putchar('\n'); + ++cur_row; + } + else + { + while (msg_col % width) + msg_putchar(' '); + } + } + else + { + // this row is out of items, thus at the end of the row + if (msg_col > 0) + { + if (cur_row < nrow) + msg_putchar('\n'); + ++cur_row; + } + } + } +} + + void +list_version(void) +{ + int i; + int first; + char *s = ""; + + /* + * When adding features here, don't forget to update the list of + * internal variables in eval.c! + */ + init_longVersion(); + msg(longVersion); +#ifdef MSWIN +# ifdef FEAT_GUI_MSWIN +# ifdef VIMDLL +# ifdef _WIN64 + msg_puts(_("\nMS-Windows 64-bit GUI/console version")); +# else + msg_puts(_("\nMS-Windows 32-bit GUI/console version")); +# endif +# else +# ifdef _WIN64 + msg_puts(_("\nMS-Windows 64-bit GUI version")); +# else + msg_puts(_("\nMS-Windows 32-bit GUI version")); +# endif +# endif +# ifdef FEAT_OLE + msg_puts(_(" with OLE support")); +# endif +# else +# ifdef _WIN64 + msg_puts(_("\nMS-Windows 64-bit console version")); +# else + msg_puts(_("\nMS-Windows 32-bit console version")); +# endif +# endif +#endif +#if defined(MACOS_X) +# if defined(MACOS_X_DARWIN) + msg_puts(_("\nmacOS version")); +# else + msg_puts(_("\nmacOS version w/o darwin feat.")); +# endif +# if defined(__arm64__) + msg_puts(" - arm64"); +# elif defined(__x86_64__) + msg_puts(" - x86_64"); +# endif +#endif + +#ifdef VMS + msg_puts(_("\nOpenVMS version")); +# ifdef HAVE_PATHDEF + if (*compiled_arch != NUL) + { + msg_puts(" - "); + msg_puts((char *)compiled_arch); + } +# endif + +#endif + + // Print the list of patch numbers if there is at least one. + // Print a range when patches are consecutive: "1-10, 12, 15-40, 42-45" + if (included_patches[0] != 0) + { + msg_puts(_("\nIncluded patches: ")); + first = -1; + i = (int)(sizeof(included_patches) / sizeof(included_patches[0])) - 1; + while (--i >= 0) + { + if (first < 0) + first = included_patches[i]; + if (i == 0 || included_patches[i - 1] != included_patches[i] + 1) + { + msg_puts(s); + s = ", "; + msg_outnum((long)first); + if (first != included_patches[i]) + { + msg_puts("-"); + msg_outnum((long)included_patches[i]); + } + first = -1; + } + } + } + + // Print the list of extra patch descriptions if there is at least one. + if (extra_patches[0] != NULL) + { + msg_puts(_("\nExtra patches: ")); + s = ""; + for (i = 0; extra_patches[i] != NULL; ++i) + { + msg_puts(s); + s = ", "; + msg_puts(extra_patches[i]); + } + } + +#ifdef MODIFIED_BY + msg_puts("\n"); + msg_puts(_("Modified by ")); + msg_puts(MODIFIED_BY); +#endif + +#ifdef HAVE_PATHDEF + if (*compiled_user != NUL || *compiled_sys != NUL) + { + msg_puts(_("\nCompiled ")); + if (*compiled_user != NUL) + { + msg_puts(_("by ")); + msg_puts((char *)compiled_user); + } + if (*compiled_sys != NUL) + { + msg_puts("@"); + msg_puts((char *)compiled_sys); + } + } +#endif + +#ifdef FEAT_HUGE + msg_puts(_("\nHuge version ")); +#else +# ifdef FEAT_BIG + msg_puts(_("\nBig version ")); +# else +# ifdef FEAT_NORMAL + msg_puts(_("\nNormal version ")); +# else +# ifdef FEAT_SMALL + msg_puts(_("\nSmall version ")); +# else + msg_puts(_("\nTiny version ")); +# endif +# endif +# endif +#endif +#ifndef FEAT_GUI + msg_puts(_("without GUI.")); +#else +# ifdef FEAT_GUI_GTK +# ifdef USE_GTK3 + msg_puts(_("with GTK3 GUI.")); +# else +# ifdef FEAT_GUI_GNOME + msg_puts(_("with GTK2-GNOME GUI.")); +# else + msg_puts(_("with GTK2 GUI.")); +# endif +# endif +# else +# ifdef FEAT_GUI_MOTIF + msg_puts(_("with X11-Motif GUI.")); +# else +# ifdef FEAT_GUI_ATHENA +# ifdef FEAT_GUI_NEXTAW + msg_puts(_("with X11-neXtaw GUI.")); +# else + msg_puts(_("with X11-Athena GUI.")); +# endif +# else +# ifdef FEAT_GUI_HAIKU + msg_puts(_("with Haiku GUI.")); +# else +# ifdef FEAT_GUI_PHOTON + msg_puts(_("with Photon GUI.")); +# else +# if defined(MSWIN) + msg_puts(_("with GUI.")); +# endif +# endif +# endif +# endif +# endif +# endif +#endif + version_msg(_(" Features included (+) or not (-):\n")); + + list_features(); + if (msg_col > 0) + msg_putchar('\n'); + +#ifdef SYS_VIMRC_FILE + version_msg(_(" system vimrc file: \"")); + version_msg(SYS_VIMRC_FILE); + version_msg("\"\n"); +#endif +#ifdef USR_VIMRC_FILE + version_msg(_(" user vimrc file: \"")); + version_msg(USR_VIMRC_FILE); + version_msg("\"\n"); +#endif +#ifdef USR_VIMRC_FILE2 + version_msg(_(" 2nd user vimrc file: \"")); + version_msg(USR_VIMRC_FILE2); + version_msg("\"\n"); +#endif +#ifdef USR_VIMRC_FILE3 + version_msg(_(" 3rd user vimrc file: \"")); + version_msg(USR_VIMRC_FILE3); + version_msg("\"\n"); +#endif +#ifdef USR_EXRC_FILE + version_msg(_(" user exrc file: \"")); + version_msg(USR_EXRC_FILE); + version_msg("\"\n"); +#endif +#ifdef USR_EXRC_FILE2 + version_msg(_(" 2nd user exrc file: \"")); + version_msg(USR_EXRC_FILE2); + version_msg("\"\n"); +#endif +#ifdef FEAT_GUI +# ifdef SYS_GVIMRC_FILE + version_msg(_(" system gvimrc file: \"")); + version_msg(SYS_GVIMRC_FILE); + version_msg("\"\n"); +# endif + version_msg(_(" user gvimrc file: \"")); + version_msg(USR_GVIMRC_FILE); + version_msg("\"\n"); +# ifdef USR_GVIMRC_FILE2 + version_msg(_("2nd user gvimrc file: \"")); + version_msg(USR_GVIMRC_FILE2); + version_msg("\"\n"); +# endif +# ifdef USR_GVIMRC_FILE3 + version_msg(_("3rd user gvimrc file: \"")); + version_msg(USR_GVIMRC_FILE3); + version_msg("\"\n"); +# endif +#endif + version_msg(_(" defaults file: \"")); + version_msg(VIM_DEFAULTS_FILE); + version_msg("\"\n"); +#ifdef FEAT_GUI +# ifdef SYS_MENU_FILE + version_msg(_(" system menu file: \"")); + version_msg(SYS_MENU_FILE); + version_msg("\"\n"); +# endif +#endif +#ifdef HAVE_PATHDEF + if (*default_vim_dir != NUL) + { + version_msg(_(" fall-back for $VIM: \"")); + version_msg((char *)default_vim_dir); + version_msg("\"\n"); + } + if (*default_vimruntime_dir != NUL) + { + version_msg(_(" f-b for $VIMRUNTIME: \"")); + version_msg((char *)default_vimruntime_dir); + version_msg("\"\n"); + } + version_msg(_("Compilation: ")); + version_msg((char *)all_cflags); + version_msg("\n"); +#ifdef VMS + if (*compiler_version != NUL) + { + version_msg(_("Compiler: ")); + version_msg((char *)compiler_version); + version_msg("\n"); + } +#endif + version_msg(_("Linking: ")); + version_msg((char *)all_lflags); +#endif +#ifdef DEBUG + version_msg("\n"); + version_msg(_(" DEBUG BUILD")); +#endif +} + +static void do_intro_line(int row, char_u *mesg, int add_version, int attr); +static void intro_message(int colon); + +/* + * Show the intro message when not editing a file. + */ + void +maybe_intro_message(void) +{ + if (BUFEMPTY() + && curbuf->b_fname == NULL + && firstwin->w_next == NULL + && vim_strchr(p_shm, SHM_INTRO) == NULL) + intro_message(FALSE); +} + +/* + * Give an introductory message about Vim. + * Only used when starting Vim on an empty file, without a file name. + * Or with the ":intro" command (for Sven :-). + */ + static void +intro_message( + int colon) // TRUE for ":intro" +{ + int i; + int row; + int blanklines; + int sponsor; + char *p; + static char *(lines[]) = + { + N_("VIM - Vi IMproved"), + "", + N_("version "), + N_("by Bram Moolenaar et al."), +#ifdef MODIFIED_BY + " ", +#endif + N_("Vim is open source and freely distributable"), + "", + N_("Help poor children in Uganda!"), + N_("type :help iccf<Enter> for information "), + "", + N_("type :q<Enter> to exit "), + N_("type :help<Enter> or <F1> for on-line help"), + N_("type :help version8<Enter> for version info"), + NULL, + "", + N_("Running in Vi compatible mode"), + N_("type :set nocp<Enter> for Vim defaults"), + N_("type :help cp-default<Enter> for info on this"), + }; +#ifdef FEAT_GUI + static char *(gui_lines[]) = + { + NULL, + NULL, + NULL, + NULL, +#ifdef MODIFIED_BY + NULL, +#endif + NULL, + NULL, + NULL, + N_("menu Help->Orphans for information "), + NULL, + N_("Running modeless, typed text is inserted"), + N_("menu Edit->Global Settings->Toggle Insert Mode "), + N_(" for two modes "), + NULL, + NULL, + NULL, + N_("menu Edit->Global Settings->Toggle Vi Compatible"), + N_(" for Vim defaults "), + }; +#endif + + // blanklines = screen height - # message lines + blanklines = (int)Rows - ((sizeof(lines) / sizeof(char *)) - 1); + if (!p_cp) + blanklines += 4; // add 4 for not showing "Vi compatible" message + + // Don't overwrite a statusline. Depends on 'cmdheight'. + if (p_ls > 1) + blanklines -= Rows - topframe->fr_height; + if (blanklines < 0) + blanklines = 0; + + // Show the sponsor and register message one out of four times, the Uganda + // message two out of four times. + sponsor = (int)time(NULL); + sponsor = ((sponsor & 2) == 0) - ((sponsor & 4) == 0); + + // start displaying the message lines after half of the blank lines + row = blanklines / 2; + if ((row >= 2 && Columns >= 50) || colon) + { + for (i = 0; i < (int)(sizeof(lines) / sizeof(char *)); ++i) + { + p = lines[i]; +#ifdef FEAT_GUI + if (p_im && gui.in_use && gui_lines[i] != NULL) + p = gui_lines[i]; +#endif + if (p == NULL) + { + if (!p_cp) + break; + continue; + } + if (sponsor != 0) + { + if (strstr(p, "children") != NULL) + p = sponsor < 0 + ? N_("Sponsor Vim development!") + : N_("Become a registered Vim user!"); + else if (strstr(p, "iccf") != NULL) + p = sponsor < 0 + ? N_("type :help sponsor<Enter> for information ") + : N_("type :help register<Enter> for information "); + else if (strstr(p, "Orphans") != NULL) + p = N_("menu Help->Sponsor/Register for information "); + } + if (*p != NUL) + do_intro_line(row, (char_u *)_(p), i == 2, 0); + ++row; + } + } + + // Make the wait-return message appear just below the text. + if (colon) + msg_row = row; +} + + static void +do_intro_line( + int row, + char_u *mesg, + int add_version, + int attr) +{ + char_u vers[20]; + int col; + char_u *p; + int l; + int clen; +#ifdef MODIFIED_BY +# define MODBY_LEN 150 + char_u modby[MODBY_LEN]; + + if (*mesg == ' ') + { + vim_strncpy(modby, (char_u *)_("Modified by "), MODBY_LEN - 1); + l = (int)STRLEN(modby); + vim_strncpy(modby + l, (char_u *)MODIFIED_BY, MODBY_LEN - l - 1); + mesg = modby; + } +#endif + + // Center the message horizontally. + col = vim_strsize(mesg); + if (add_version) + { + STRCPY(vers, mediumVersion); + if (highest_patch()) + { + // Check for 9.9x or 9.9xx, alpha/beta version + if (isalpha((int)vers[3])) + { + int len = (isalpha((int)vers[4])) ? 5 : 4; + sprintf((char *)vers + len, ".%d%s", highest_patch(), + mediumVersion + len); + } + else + sprintf((char *)vers + 3, ".%d", highest_patch()); + } + col += (int)STRLEN(vers); + } + col = (Columns - col) / 2; + if (col < 0) + col = 0; + + // Split up in parts to highlight <> items differently. + for (p = mesg; *p != NUL; p += l) + { + clen = 0; + for (l = 0; p[l] != NUL + && (l == 0 || (p[l] != '<' && p[l - 1] != '>')); ++l) + { + if (has_mbyte) + { + clen += ptr2cells(p + l); + l += (*mb_ptr2len)(p + l) - 1; + } + else + clen += byte2cells(p[l]); + } + screen_puts_len(p, l, row, col, *p == '<' ? HL_ATTR(HLF_8) : attr); + col += clen; + } + + // Add the version number to the version line. + if (add_version) + screen_puts(vers, row, col, 0); +} + +/* + * ":intro": clear screen, display intro screen and wait for return. + */ + void +ex_intro(exarg_T *eap UNUSED) +{ + screenclear(); + intro_message(TRUE); + wait_return(TRUE); +} |