xref: /vim-8.2.3635/src/version.c (revision 12ee7ff0)
1 /* vi:set ts=8 sts=4 sw=4 noet:
2  *
3  * VIM - Vi IMproved		by Bram Moolenaar
4  *
5  * Do ":help uganda"  in Vim to read copying and usage conditions.
6  * Do ":help credits" in Vim to see a list of people who contributed.
7  * See README.txt for an overview of the Vim source code.
8  */
9 
10 #include "vim.h"
11 
12 #ifdef AMIGA
13 # include <time.h>	/* for time() */
14 #endif
15 
16 /*
17  * Vim originated from Stevie version 3.6 (Fish disk 217) by GRWalter (Fred)
18  * It has been changed beyond recognition since then.
19  *
20  * Differences between version 7.4 and 8.x can be found with ":help version8".
21  * Differences between version 6.4 and 7.x can be found with ":help version7".
22  * Differences between version 5.8 and 6.x can be found with ":help version6".
23  * Differences between version 4.x and 5.x can be found with ":help version5".
24  * Differences between version 3.0 and 4.x can be found with ":help version4".
25  * All the remarks about older versions have been removed, they are not very
26  * interesting.
27  */
28 
29 #include "version.h"
30 
31 char		*Version = VIM_VERSION_SHORT;
32 static char	*mediumVersion = VIM_VERSION_MEDIUM;
33 
34 #if defined(HAVE_DATE_TIME) || defined(PROTO)
35 # if (defined(VMS) && defined(VAXC)) || defined(PROTO)
36 char	longVersion[sizeof(VIM_VERSION_LONG_DATE) + sizeof(__DATE__)
37 						      + sizeof(__TIME__) + 3];
38 
39     void
40 init_longVersion(void)
41 {
42     /*
43      * Construct the long version string.  Necessary because
44      * VAX C can't concatenate strings in the preprocessor.
45      */
46     strcpy(longVersion, VIM_VERSION_LONG_DATE);
47     strcat(longVersion, __DATE__);
48     strcat(longVersion, " ");
49     strcat(longVersion, __TIME__);
50     strcat(longVersion, ")");
51 }
52 
53 # else
54     void
55 init_longVersion(void)
56 {
57     char *date_time = __DATE__ " " __TIME__;
58     char *msg = _("%s (%s, compiled %s)");
59     size_t len = strlen(msg)
60 		+ strlen(VIM_VERSION_LONG_ONLY)
61 		+ strlen(VIM_VERSION_DATE_ONLY)
62 		+ strlen(date_time);
63 
64     longVersion = alloc(len);
65     if (longVersion == NULL)
66 	longVersion = VIM_VERSION_LONG;
67     else
68 	vim_snprintf(longVersion, len, msg,
69 		      VIM_VERSION_LONG_ONLY, VIM_VERSION_DATE_ONLY, date_time);
70 }
71 # endif
72 #else
73 char	*longVersion = VIM_VERSION_LONG;
74 
75     void
76 init_longVersion(void)
77 {
78     // nothing to do
79 }
80 #endif
81 
82 static char *(features[]) =
83 {
84 #ifdef HAVE_ACL
85 	"+acl",
86 #else
87 	"-acl",
88 #endif
89 #ifdef AMIGA		/* only for Amiga systems */
90 # ifdef FEAT_ARP
91 	"+ARP",
92 # else
93 	"-ARP",
94 # endif
95 #endif
96 #ifdef FEAT_ARABIC
97 	"+arabic",
98 #else
99 	"-arabic",
100 #endif
101 	"+autocmd",
102 #ifdef FEAT_AUTOCHDIR
103        "+autochdir",
104 #else
105        "-autochdir",
106 #endif
107 #ifdef FEAT_AUTOSERVERNAME
108 	"+autoservername",
109 #else
110 	"-autoservername",
111 #endif
112 #ifdef FEAT_BEVAL_GUI
113 	"+balloon_eval",
114 #else
115 	"-balloon_eval",
116 #endif
117 #ifdef FEAT_BEVAL_TERM
118 	"+balloon_eval_term",
119 #else
120 	"-balloon_eval_term",
121 #endif
122 #ifdef FEAT_BROWSE
123 	"+browse",
124 #else
125 	"-browse",
126 #endif
127 #ifdef NO_BUILTIN_TCAPS
128 	"-builtin_terms",
129 #endif
130 #ifdef SOME_BUILTIN_TCAPS
131 	"+builtin_terms",
132 #endif
133 #ifdef ALL_BUILTIN_TCAPS
134 	"++builtin_terms",
135 #endif
136 #ifdef FEAT_BYTEOFF
137 	"+byte_offset",
138 #else
139 	"-byte_offset",
140 #endif
141 #ifdef FEAT_JOB_CHANNEL
142 	"+channel",
143 #else
144 	"-channel",
145 #endif
146 #ifdef FEAT_CINDENT
147 	"+cindent",
148 #else
149 	"-cindent",
150 #endif
151 #ifdef FEAT_CLIENTSERVER
152 	"+clientserver",
153 #else
154 	"-clientserver",
155 #endif
156 #ifdef FEAT_CLIPBOARD
157 	"+clipboard",
158 #else
159 	"-clipboard",
160 #endif
161 #ifdef FEAT_CMDL_COMPL
162 	"+cmdline_compl",
163 #else
164 	"-cmdline_compl",
165 #endif
166 #ifdef FEAT_CMDHIST
167 	"+cmdline_hist",
168 #else
169 	"-cmdline_hist",
170 #endif
171 #ifdef FEAT_CMDL_INFO
172 	"+cmdline_info",
173 #else
174 	"-cmdline_info",
175 #endif
176 #ifdef FEAT_COMMENTS
177 	"+comments",
178 #else
179 	"-comments",
180 #endif
181 #ifdef FEAT_CONCEAL
182 	"+conceal",
183 #else
184 	"-conceal",
185 #endif
186 #ifdef FEAT_CRYPT
187 	"+cryptv",
188 #else
189 	"-cryptv",
190 #endif
191 #ifdef FEAT_CSCOPE
192 	"+cscope",
193 #else
194 	"-cscope",
195 #endif
196 	"+cursorbind",
197 #ifdef CURSOR_SHAPE
198 	"+cursorshape",
199 #else
200 	"-cursorshape",
201 #endif
202 #if defined(FEAT_CON_DIALOG) && defined(FEAT_GUI_DIALOG)
203 	"+dialog_con_gui",
204 #else
205 # if defined(FEAT_CON_DIALOG)
206 	"+dialog_con",
207 # else
208 #  if defined(FEAT_GUI_DIALOG)
209 	"+dialog_gui",
210 #  else
211 	"-dialog",
212 #  endif
213 # endif
214 #endif
215 #ifdef FEAT_DIFF
216 	"+diff",
217 #else
218 	"-diff",
219 #endif
220 #ifdef FEAT_DIGRAPHS
221 	"+digraphs",
222 #else
223 	"-digraphs",
224 #endif
225 #ifdef FEAT_GUI_MSWIN
226 # ifdef FEAT_DIRECTX
227 	"+directx",
228 # else
229 	"-directx",
230 # endif
231 #endif
232 #ifdef FEAT_DND
233 	"+dnd",
234 #else
235 	"-dnd",
236 #endif
237 #ifdef EBCDIC
238 	"+ebcdic",
239 #else
240 	"-ebcdic",
241 #endif
242 #ifdef FEAT_EMACS_TAGS
243 	"+emacs_tags",
244 #else
245 	"-emacs_tags",
246 #endif
247 #ifdef FEAT_EVAL
248 	"+eval",
249 #else
250 	"-eval",
251 #endif
252 	"+ex_extra",
253 #ifdef FEAT_SEARCH_EXTRA
254 	"+extra_search",
255 #else
256 	"-extra_search",
257 #endif
258 	"-farsi",
259 #ifdef FEAT_SEARCHPATH
260 	"+file_in_path",
261 #else
262 	"-file_in_path",
263 #endif
264 #ifdef FEAT_FIND_ID
265 	"+find_in_path",
266 #else
267 	"-find_in_path",
268 #endif
269 #ifdef FEAT_FLOAT
270 	"+float",
271 #else
272 	"-float",
273 #endif
274 #ifdef FEAT_FOLDING
275 	"+folding",
276 #else
277 	"-folding",
278 #endif
279 #ifdef FEAT_FOOTER
280 	"+footer",
281 #else
282 	"-footer",
283 #endif
284 	    /* only interesting on Unix systems */
285 #if !defined(USE_SYSTEM) && defined(UNIX)
286 	"+fork()",
287 #endif
288 #ifdef FEAT_GETTEXT
289 # ifdef DYNAMIC_GETTEXT
290 	"+gettext/dyn",
291 # else
292 	"+gettext",
293 # endif
294 #else
295 	"-gettext",
296 #endif
297 #ifdef FEAT_HANGULIN
298 	"+hangul_input",
299 #else
300 	"-hangul_input",
301 #endif
302 #if (defined(HAVE_ICONV_H) && defined(USE_ICONV)) || defined(DYNAMIC_ICONV)
303 # ifdef DYNAMIC_ICONV
304 	"+iconv/dyn",
305 # else
306 	"+iconv",
307 # endif
308 #else
309 	"-iconv",
310 #endif
311 #ifdef FEAT_INS_EXPAND
312 	"+insert_expand",
313 #else
314 	"-insert_expand",
315 #endif
316 #ifdef FEAT_JOB_CHANNEL
317 	"+job",
318 #else
319 	"-job",
320 #endif
321 #ifdef FEAT_JUMPLIST
322 	"+jumplist",
323 #else
324 	"-jumplist",
325 #endif
326 #ifdef FEAT_KEYMAP
327 	"+keymap",
328 #else
329 	"-keymap",
330 #endif
331 #ifdef FEAT_EVAL
332 	"+lambda",
333 #else
334 	"-lambda",
335 #endif
336 #ifdef FEAT_LANGMAP
337 	"+langmap",
338 #else
339 	"-langmap",
340 #endif
341 #ifdef FEAT_LIBCALL
342 	"+libcall",
343 #else
344 	"-libcall",
345 #endif
346 #ifdef FEAT_LINEBREAK
347 	"+linebreak",
348 #else
349 	"-linebreak",
350 #endif
351 #ifdef FEAT_LISP
352 	"+lispindent",
353 #else
354 	"-lispindent",
355 #endif
356 	"+listcmds",
357 #ifdef FEAT_LOCALMAP
358 	"+localmap",
359 #else
360 	"-localmap",
361 #endif
362 #ifdef FEAT_LUA
363 # ifdef DYNAMIC_LUA
364 	"+lua/dyn",
365 # else
366 	"+lua",
367 # endif
368 #else
369 	"-lua",
370 #endif
371 #ifdef FEAT_MENU
372 	"+menu",
373 #else
374 	"-menu",
375 #endif
376 #ifdef FEAT_SESSION
377 	"+mksession",
378 #else
379 	"-mksession",
380 #endif
381 #ifdef FEAT_MODIFY_FNAME
382 	"+modify_fname",
383 #else
384 	"-modify_fname",
385 #endif
386 #ifdef FEAT_MOUSE
387 	"+mouse",
388 #  ifdef FEAT_MOUSESHAPE
389 	"+mouseshape",
390 #  else
391 	"-mouseshape",
392 #  endif
393 # else
394 	"-mouse",
395 #endif
396 
397 #if defined(UNIX) || defined(VMS)
398 # ifdef FEAT_MOUSE_DEC
399 	"+mouse_dec",
400 # else
401 	"-mouse_dec",
402 # endif
403 # ifdef FEAT_MOUSE_GPM
404 	"+mouse_gpm",
405 # else
406 	"-mouse_gpm",
407 # endif
408 # ifdef FEAT_MOUSE_JSB
409 	"+mouse_jsbterm",
410 # else
411 	"-mouse_jsbterm",
412 # endif
413 # ifdef FEAT_MOUSE_NET
414 	"+mouse_netterm",
415 # else
416 	"-mouse_netterm",
417 # endif
418 #endif
419 
420 #ifdef __QNX__
421 # ifdef FEAT_MOUSE_PTERM
422 	"+mouse_pterm",
423 # else
424 	"-mouse_pterm",
425 # endif
426 #endif
427 
428 #if defined(UNIX) || defined(VMS)
429 # ifdef FEAT_MOUSE_XTERM
430 	"+mouse_sgr",
431 # else
432 	"-mouse_sgr",
433 # endif
434 # ifdef FEAT_SYSMOUSE
435 	"+mouse_sysmouse",
436 # else
437 	"-mouse_sysmouse",
438 # endif
439 # ifdef FEAT_MOUSE_URXVT
440 	"+mouse_urxvt",
441 # else
442 	"-mouse_urxvt",
443 # endif
444 # ifdef FEAT_MOUSE_XTERM
445 	"+mouse_xterm",
446 # else
447 	"-mouse_xterm",
448 # endif
449 #endif
450 
451 #ifdef FEAT_MBYTE_IME
452 # ifdef DYNAMIC_IME
453 	"+multi_byte_ime/dyn",
454 # else
455 	"+multi_byte_ime",
456 # endif
457 #else
458 	"+multi_byte",
459 #endif
460 #ifdef FEAT_MULTI_LANG
461 	"+multi_lang",
462 #else
463 	"-multi_lang",
464 #endif
465 #ifdef FEAT_MZSCHEME
466 # ifdef DYNAMIC_MZSCHEME
467 	"+mzscheme/dyn",
468 # else
469 	"+mzscheme",
470 # endif
471 #else
472 	"-mzscheme",
473 #endif
474 #ifdef FEAT_NETBEANS_INTG
475 	"+netbeans_intg",
476 #else
477 	"-netbeans_intg",
478 #endif
479 #ifdef FEAT_NUM64
480 	"+num64",
481 #else
482 	"-num64",
483 #endif
484 #ifdef FEAT_GUI_MSWIN
485 # ifdef FEAT_OLE
486 	"+ole",
487 # else
488 	"-ole",
489 # endif
490 #endif
491 #ifdef FEAT_EVAL
492 	"+packages",
493 #else
494 	"-packages",
495 #endif
496 #ifdef FEAT_PATH_EXTRA
497 	"+path_extra",
498 #else
499 	"-path_extra",
500 #endif
501 #ifdef FEAT_PERL
502 # ifdef DYNAMIC_PERL
503 	"+perl/dyn",
504 # else
505 	"+perl",
506 # endif
507 #else
508 	"-perl",
509 #endif
510 #ifdef FEAT_PERSISTENT_UNDO
511 	"+persistent_undo",
512 #else
513 	"-persistent_undo",
514 #endif
515 #ifdef FEAT_PRINTER
516 # ifdef FEAT_POSTSCRIPT
517 	"+postscript",
518 # else
519 	"-postscript",
520 # endif
521 	"+printer",
522 #else
523 	"-printer",
524 #endif
525 #ifdef FEAT_PROFILE
526 	"+profile",
527 #else
528 	"-profile",
529 #endif
530 #ifdef FEAT_PYTHON
531 # ifdef DYNAMIC_PYTHON
532 	"+python/dyn",
533 # else
534 	"+python",
535 # endif
536 #else
537 	"-python",
538 #endif
539 #ifdef FEAT_PYTHON3
540 # ifdef DYNAMIC_PYTHON3
541 	"+python3/dyn",
542 # else
543 	"+python3",
544 # endif
545 #else
546 	"-python3",
547 #endif
548 #ifdef FEAT_QUICKFIX
549 	"+quickfix",
550 #else
551 	"-quickfix",
552 #endif
553 #ifdef FEAT_RELTIME
554 	"+reltime",
555 #else
556 	"-reltime",
557 #endif
558 #ifdef FEAT_RIGHTLEFT
559 	"+rightleft",
560 #else
561 	"-rightleft",
562 #endif
563 #ifdef FEAT_RUBY
564 # ifdef DYNAMIC_RUBY
565 	"+ruby/dyn",
566 # else
567 	"+ruby",
568 # endif
569 #else
570 	"-ruby",
571 #endif
572 	"+scrollbind",
573 #ifdef FEAT_SIGNS
574 	"+signs",
575 #else
576 	"-signs",
577 #endif
578 #ifdef FEAT_SMARTINDENT
579 	"+smartindent",
580 #else
581 	"-smartindent",
582 #endif
583 #ifdef FEAT_SOUND
584 	"+sound",
585 #else
586 	"-sound",
587 #endif
588 #ifdef FEAT_SPELL
589 	"+spell",
590 #else
591 	"-spell",
592 #endif
593 #ifdef STARTUPTIME
594 	"+startuptime",
595 #else
596 	"-startuptime",
597 #endif
598 #ifdef FEAT_STL_OPT
599 	"+statusline",
600 #else
601 	"-statusline",
602 #endif
603 	"-sun_workshop",
604 #ifdef FEAT_SYN_HL
605 	"+syntax",
606 #else
607 	"-syntax",
608 #endif
609 	    /* only interesting on Unix systems */
610 #if defined(USE_SYSTEM) && defined(UNIX)
611 	"+system()",
612 #endif
613 #ifdef FEAT_TAG_BINS
614 	"+tag_binary",
615 #else
616 	"-tag_binary",
617 #endif
618 	"-tag_old_static",
619 	"-tag_any_white",
620 #ifdef FEAT_TCL
621 # ifdef DYNAMIC_TCL
622 	"+tcl/dyn",
623 # else
624 	"+tcl",
625 # endif
626 #else
627 	"-tcl",
628 #endif
629 #ifdef FEAT_TERMGUICOLORS
630 	"+termguicolors",
631 #else
632 	"-termguicolors",
633 #endif
634 #ifdef FEAT_TERMINAL
635 	"+terminal",
636 #else
637 	"-terminal",
638 #endif
639 #if defined(UNIX)
640 /* only Unix can have terminfo instead of termcap */
641 # ifdef TERMINFO
642 	"+terminfo",
643 # else
644 	"-terminfo",
645 # endif
646 #endif
647 #ifdef FEAT_TERMRESPONSE
648 	"+termresponse",
649 #else
650 	"-termresponse",
651 #endif
652 #ifdef FEAT_TEXTOBJ
653 	"+textobjects",
654 #else
655 	"-textobjects",
656 #endif
657 #ifdef FEAT_TEXT_PROP
658 	"+textprop",
659 #else
660 	"-textprop",
661 #endif
662 #if !defined(UNIX)
663 /* unix always includes termcap support */
664 # ifdef HAVE_TGETENT
665 	"+tgetent",
666 # else
667 	"-tgetent",
668 # endif
669 #endif
670 #ifdef FEAT_TIMERS
671 	"+timers",
672 #else
673 	"-timers",
674 #endif
675 #ifdef FEAT_TITLE
676 	"+title",
677 #else
678 	"-title",
679 #endif
680 #ifdef FEAT_TOOLBAR
681 	"+toolbar",
682 #else
683 	"-toolbar",
684 #endif
685 	"+user_commands",
686 #ifdef FEAT_VARTABS
687 	"+vartabs",
688 #else
689 	"-vartabs",
690 #endif
691 	"+vertsplit",
692 	"+virtualedit",
693 	"+visual",
694 	"+visualextra",
695 #ifdef FEAT_VIMINFO
696 	"+viminfo",
697 #else
698 	"-viminfo",
699 #endif
700 	"+vreplace",
701 #ifdef MSWIN
702 # ifdef FEAT_VTP
703 	"+vtp",
704 # else
705 	"-vtp",
706 # endif
707 #endif
708 #ifdef FEAT_WILDIGN
709 	"+wildignore",
710 #else
711 	"-wildignore",
712 #endif
713 #ifdef FEAT_WILDMENU
714 	"+wildmenu",
715 #else
716 	"-wildmenu",
717 #endif
718 	"+windows",
719 #ifdef FEAT_WRITEBACKUP
720 	"+writebackup",
721 #else
722 	"-writebackup",
723 #endif
724 #if defined(UNIX) || defined(VMS)
725 # ifdef FEAT_X11
726 	"+X11",
727 # else
728 	"-X11",
729 # endif
730 #endif
731 #ifdef FEAT_XFONTSET
732 	"+xfontset",
733 #else
734 	"-xfontset",
735 #endif
736 #ifdef FEAT_XIM
737 	"+xim",
738 #else
739 	"-xim",
740 #endif
741 #ifdef MSWIN
742 # ifdef FEAT_XPM_W32
743 	"+xpm_w32",
744 # else
745 	"-xpm_w32",
746 # endif
747 #else
748 # ifdef HAVE_XPM
749 	"+xpm",
750 # else
751 	"-xpm",
752 # endif
753 #endif
754 #if defined(UNIX) || defined(VMS)
755 # ifdef USE_XSMP_INTERACT
756 	"+xsmp_interact",
757 # else
758 #  ifdef USE_XSMP
759 	"+xsmp",
760 #  else
761 	"-xsmp",
762 #  endif
763 # endif
764 # ifdef FEAT_XCLIPBOARD
765 	"+xterm_clipboard",
766 # else
767 	"-xterm_clipboard",
768 # endif
769 #endif
770 #ifdef FEAT_XTERM_SAVE
771 	"+xterm_save",
772 #else
773 	"-xterm_save",
774 #endif
775 	NULL
776 };
777 
778 static int included_patches[] =
779 {   /* Add new patch number below this line */
780 /**/
781     1517,
782 /**/
783     1516,
784 /**/
785     1515,
786 /**/
787     1514,
788 /**/
789     1513,
790 /**/
791     1512,
792 /**/
793     1511,
794 /**/
795     1510,
796 /**/
797     1509,
798 /**/
799     1508,
800 /**/
801     1507,
802 /**/
803     1506,
804 /**/
805     1505,
806 /**/
807     1504,
808 /**/
809     1503,
810 /**/
811     1502,
812 /**/
813     1501,
814 /**/
815     1500,
816 /**/
817     1499,
818 /**/
819     1498,
820 /**/
821     1497,
822 /**/
823     1496,
824 /**/
825     1495,
826 /**/
827     1494,
828 /**/
829     1493,
830 /**/
831     1492,
832 /**/
833     1491,
834 /**/
835     1490,
836 /**/
837     1489,
838 /**/
839     1488,
840 /**/
841     1487,
842 /**/
843     1486,
844 /**/
845     1485,
846 /**/
847     1484,
848 /**/
849     1483,
850 /**/
851     1482,
852 /**/
853     1481,
854 /**/
855     1480,
856 /**/
857     1479,
858 /**/
859     1478,
860 /**/
861     1477,
862 /**/
863     1476,
864 /**/
865     1475,
866 /**/
867     1474,
868 /**/
869     1473,
870 /**/
871     1472,
872 /**/
873     1471,
874 /**/
875     1470,
876 /**/
877     1469,
878 /**/
879     1468,
880 /**/
881     1467,
882 /**/
883     1466,
884 /**/
885     1465,
886 /**/
887     1464,
888 /**/
889     1463,
890 /**/
891     1462,
892 /**/
893     1461,
894 /**/
895     1460,
896 /**/
897     1459,
898 /**/
899     1458,
900 /**/
901     1457,
902 /**/
903     1456,
904 /**/
905     1455,
906 /**/
907     1454,
908 /**/
909     1453,
910 /**/
911     1452,
912 /**/
913     1451,
914 /**/
915     1450,
916 /**/
917     1449,
918 /**/
919     1448,
920 /**/
921     1447,
922 /**/
923     1446,
924 /**/
925     1445,
926 /**/
927     1444,
928 /**/
929     1443,
930 /**/
931     1442,
932 /**/
933     1441,
934 /**/
935     1440,
936 /**/
937     1439,
938 /**/
939     1438,
940 /**/
941     1437,
942 /**/
943     1436,
944 /**/
945     1435,
946 /**/
947     1434,
948 /**/
949     1433,
950 /**/
951     1432,
952 /**/
953     1431,
954 /**/
955     1430,
956 /**/
957     1429,
958 /**/
959     1428,
960 /**/
961     1427,
962 /**/
963     1426,
964 /**/
965     1425,
966 /**/
967     1424,
968 /**/
969     1423,
970 /**/
971     1422,
972 /**/
973     1421,
974 /**/
975     1420,
976 /**/
977     1419,
978 /**/
979     1418,
980 /**/
981     1417,
982 /**/
983     1416,
984 /**/
985     1415,
986 /**/
987     1414,
988 /**/
989     1413,
990 /**/
991     1412,
992 /**/
993     1411,
994 /**/
995     1410,
996 /**/
997     1409,
998 /**/
999     1408,
1000 /**/
1001     1407,
1002 /**/
1003     1406,
1004 /**/
1005     1405,
1006 /**/
1007     1404,
1008 /**/
1009     1403,
1010 /**/
1011     1402,
1012 /**/
1013     1401,
1014 /**/
1015     1400,
1016 /**/
1017     1399,
1018 /**/
1019     1398,
1020 /**/
1021     1397,
1022 /**/
1023     1396,
1024 /**/
1025     1395,
1026 /**/
1027     1394,
1028 /**/
1029     1393,
1030 /**/
1031     1392,
1032 /**/
1033     1391,
1034 /**/
1035     1390,
1036 /**/
1037     1389,
1038 /**/
1039     1388,
1040 /**/
1041     1387,
1042 /**/
1043     1386,
1044 /**/
1045     1385,
1046 /**/
1047     1384,
1048 /**/
1049     1383,
1050 /**/
1051     1382,
1052 /**/
1053     1381,
1054 /**/
1055     1380,
1056 /**/
1057     1379,
1058 /**/
1059     1378,
1060 /**/
1061     1377,
1062 /**/
1063     1376,
1064 /**/
1065     1375,
1066 /**/
1067     1374,
1068 /**/
1069     1373,
1070 /**/
1071     1372,
1072 /**/
1073     1371,
1074 /**/
1075     1370,
1076 /**/
1077     1369,
1078 /**/
1079     1368,
1080 /**/
1081     1367,
1082 /**/
1083     1366,
1084 /**/
1085     1365,
1086 /**/
1087     1364,
1088 /**/
1089     1363,
1090 /**/
1091     1362,
1092 /**/
1093     1361,
1094 /**/
1095     1360,
1096 /**/
1097     1359,
1098 /**/
1099     1358,
1100 /**/
1101     1357,
1102 /**/
1103     1356,
1104 /**/
1105     1355,
1106 /**/
1107     1354,
1108 /**/
1109     1353,
1110 /**/
1111     1352,
1112 /**/
1113     1351,
1114 /**/
1115     1350,
1116 /**/
1117     1349,
1118 /**/
1119     1348,
1120 /**/
1121     1347,
1122 /**/
1123     1346,
1124 /**/
1125     1345,
1126 /**/
1127     1344,
1128 /**/
1129     1343,
1130 /**/
1131     1342,
1132 /**/
1133     1341,
1134 /**/
1135     1340,
1136 /**/
1137     1339,
1138 /**/
1139     1338,
1140 /**/
1141     1337,
1142 /**/
1143     1336,
1144 /**/
1145     1335,
1146 /**/
1147     1334,
1148 /**/
1149     1333,
1150 /**/
1151     1332,
1152 /**/
1153     1331,
1154 /**/
1155     1330,
1156 /**/
1157     1329,
1158 /**/
1159     1328,
1160 /**/
1161     1327,
1162 /**/
1163     1326,
1164 /**/
1165     1325,
1166 /**/
1167     1324,
1168 /**/
1169     1323,
1170 /**/
1171     1322,
1172 /**/
1173     1321,
1174 /**/
1175     1320,
1176 /**/
1177     1319,
1178 /**/
1179     1318,
1180 /**/
1181     1317,
1182 /**/
1183     1316,
1184 /**/
1185     1315,
1186 /**/
1187     1314,
1188 /**/
1189     1313,
1190 /**/
1191     1312,
1192 /**/
1193     1311,
1194 /**/
1195     1310,
1196 /**/
1197     1309,
1198 /**/
1199     1308,
1200 /**/
1201     1307,
1202 /**/
1203     1306,
1204 /**/
1205     1305,
1206 /**/
1207     1304,
1208 /**/
1209     1303,
1210 /**/
1211     1302,
1212 /**/
1213     1301,
1214 /**/
1215     1300,
1216 /**/
1217     1299,
1218 /**/
1219     1298,
1220 /**/
1221     1297,
1222 /**/
1223     1296,
1224 /**/
1225     1295,
1226 /**/
1227     1294,
1228 /**/
1229     1293,
1230 /**/
1231     1292,
1232 /**/
1233     1291,
1234 /**/
1235     1290,
1236 /**/
1237     1289,
1238 /**/
1239     1288,
1240 /**/
1241     1287,
1242 /**/
1243     1286,
1244 /**/
1245     1285,
1246 /**/
1247     1284,
1248 /**/
1249     1283,
1250 /**/
1251     1282,
1252 /**/
1253     1281,
1254 /**/
1255     1280,
1256 /**/
1257     1279,
1258 /**/
1259     1278,
1260 /**/
1261     1277,
1262 /**/
1263     1276,
1264 /**/
1265     1275,
1266 /**/
1267     1274,
1268 /**/
1269     1273,
1270 /**/
1271     1272,
1272 /**/
1273     1271,
1274 /**/
1275     1270,
1276 /**/
1277     1269,
1278 /**/
1279     1268,
1280 /**/
1281     1267,
1282 /**/
1283     1266,
1284 /**/
1285     1265,
1286 /**/
1287     1264,
1288 /**/
1289     1263,
1290 /**/
1291     1262,
1292 /**/
1293     1261,
1294 /**/
1295     1260,
1296 /**/
1297     1259,
1298 /**/
1299     1258,
1300 /**/
1301     1257,
1302 /**/
1303     1256,
1304 /**/
1305     1255,
1306 /**/
1307     1254,
1308 /**/
1309     1253,
1310 /**/
1311     1252,
1312 /**/
1313     1251,
1314 /**/
1315     1250,
1316 /**/
1317     1249,
1318 /**/
1319     1248,
1320 /**/
1321     1247,
1322 /**/
1323     1246,
1324 /**/
1325     1245,
1326 /**/
1327     1244,
1328 /**/
1329     1243,
1330 /**/
1331     1242,
1332 /**/
1333     1241,
1334 /**/
1335     1240,
1336 /**/
1337     1239,
1338 /**/
1339     1238,
1340 /**/
1341     1237,
1342 /**/
1343     1236,
1344 /**/
1345     1235,
1346 /**/
1347     1234,
1348 /**/
1349     1233,
1350 /**/
1351     1232,
1352 /**/
1353     1231,
1354 /**/
1355     1230,
1356 /**/
1357     1229,
1358 /**/
1359     1228,
1360 /**/
1361     1227,
1362 /**/
1363     1226,
1364 /**/
1365     1225,
1366 /**/
1367     1224,
1368 /**/
1369     1223,
1370 /**/
1371     1222,
1372 /**/
1373     1221,
1374 /**/
1375     1220,
1376 /**/
1377     1219,
1378 /**/
1379     1218,
1380 /**/
1381     1217,
1382 /**/
1383     1216,
1384 /**/
1385     1215,
1386 /**/
1387     1214,
1388 /**/
1389     1213,
1390 /**/
1391     1212,
1392 /**/
1393     1211,
1394 /**/
1395     1210,
1396 /**/
1397     1209,
1398 /**/
1399     1208,
1400 /**/
1401     1207,
1402 /**/
1403     1206,
1404 /**/
1405     1205,
1406 /**/
1407     1204,
1408 /**/
1409     1203,
1410 /**/
1411     1202,
1412 /**/
1413     1201,
1414 /**/
1415     1200,
1416 /**/
1417     1199,
1418 /**/
1419     1198,
1420 /**/
1421     1197,
1422 /**/
1423     1196,
1424 /**/
1425     1195,
1426 /**/
1427     1194,
1428 /**/
1429     1193,
1430 /**/
1431     1192,
1432 /**/
1433     1191,
1434 /**/
1435     1190,
1436 /**/
1437     1189,
1438 /**/
1439     1188,
1440 /**/
1441     1187,
1442 /**/
1443     1186,
1444 /**/
1445     1185,
1446 /**/
1447     1184,
1448 /**/
1449     1183,
1450 /**/
1451     1182,
1452 /**/
1453     1181,
1454 /**/
1455     1180,
1456 /**/
1457     1179,
1458 /**/
1459     1178,
1460 /**/
1461     1177,
1462 /**/
1463     1176,
1464 /**/
1465     1175,
1466 /**/
1467     1174,
1468 /**/
1469     1173,
1470 /**/
1471     1172,
1472 /**/
1473     1171,
1474 /**/
1475     1170,
1476 /**/
1477     1169,
1478 /**/
1479     1168,
1480 /**/
1481     1167,
1482 /**/
1483     1166,
1484 /**/
1485     1165,
1486 /**/
1487     1164,
1488 /**/
1489     1163,
1490 /**/
1491     1162,
1492 /**/
1493     1161,
1494 /**/
1495     1160,
1496 /**/
1497     1159,
1498 /**/
1499     1158,
1500 /**/
1501     1157,
1502 /**/
1503     1156,
1504 /**/
1505     1155,
1506 /**/
1507     1154,
1508 /**/
1509     1153,
1510 /**/
1511     1152,
1512 /**/
1513     1151,
1514 /**/
1515     1150,
1516 /**/
1517     1149,
1518 /**/
1519     1148,
1520 /**/
1521     1147,
1522 /**/
1523     1146,
1524 /**/
1525     1145,
1526 /**/
1527     1144,
1528 /**/
1529     1143,
1530 /**/
1531     1142,
1532 /**/
1533     1141,
1534 /**/
1535     1140,
1536 /**/
1537     1139,
1538 /**/
1539     1138,
1540 /**/
1541     1137,
1542 /**/
1543     1136,
1544 /**/
1545     1135,
1546 /**/
1547     1134,
1548 /**/
1549     1133,
1550 /**/
1551     1132,
1552 /**/
1553     1131,
1554 /**/
1555     1130,
1556 /**/
1557     1129,
1558 /**/
1559     1128,
1560 /**/
1561     1127,
1562 /**/
1563     1126,
1564 /**/
1565     1125,
1566 /**/
1567     1124,
1568 /**/
1569     1123,
1570 /**/
1571     1122,
1572 /**/
1573     1121,
1574 /**/
1575     1120,
1576 /**/
1577     1119,
1578 /**/
1579     1118,
1580 /**/
1581     1117,
1582 /**/
1583     1116,
1584 /**/
1585     1115,
1586 /**/
1587     1114,
1588 /**/
1589     1113,
1590 /**/
1591     1112,
1592 /**/
1593     1111,
1594 /**/
1595     1110,
1596 /**/
1597     1109,
1598 /**/
1599     1108,
1600 /**/
1601     1107,
1602 /**/
1603     1106,
1604 /**/
1605     1105,
1606 /**/
1607     1104,
1608 /**/
1609     1103,
1610 /**/
1611     1102,
1612 /**/
1613     1101,
1614 /**/
1615     1100,
1616 /**/
1617     1099,
1618 /**/
1619     1098,
1620 /**/
1621     1097,
1622 /**/
1623     1096,
1624 /**/
1625     1095,
1626 /**/
1627     1094,
1628 /**/
1629     1093,
1630 /**/
1631     1092,
1632 /**/
1633     1091,
1634 /**/
1635     1090,
1636 /**/
1637     1089,
1638 /**/
1639     1088,
1640 /**/
1641     1087,
1642 /**/
1643     1086,
1644 /**/
1645     1085,
1646 /**/
1647     1084,
1648 /**/
1649     1083,
1650 /**/
1651     1082,
1652 /**/
1653     1081,
1654 /**/
1655     1080,
1656 /**/
1657     1079,
1658 /**/
1659     1078,
1660 /**/
1661     1077,
1662 /**/
1663     1076,
1664 /**/
1665     1075,
1666 /**/
1667     1074,
1668 /**/
1669     1073,
1670 /**/
1671     1072,
1672 /**/
1673     1071,
1674 /**/
1675     1070,
1676 /**/
1677     1069,
1678 /**/
1679     1068,
1680 /**/
1681     1067,
1682 /**/
1683     1066,
1684 /**/
1685     1065,
1686 /**/
1687     1064,
1688 /**/
1689     1063,
1690 /**/
1691     1062,
1692 /**/
1693     1061,
1694 /**/
1695     1060,
1696 /**/
1697     1059,
1698 /**/
1699     1058,
1700 /**/
1701     1057,
1702 /**/
1703     1056,
1704 /**/
1705     1055,
1706 /**/
1707     1054,
1708 /**/
1709     1053,
1710 /**/
1711     1052,
1712 /**/
1713     1051,
1714 /**/
1715     1050,
1716 /**/
1717     1049,
1718 /**/
1719     1048,
1720 /**/
1721     1047,
1722 /**/
1723     1046,
1724 /**/
1725     1045,
1726 /**/
1727     1044,
1728 /**/
1729     1043,
1730 /**/
1731     1042,
1732 /**/
1733     1041,
1734 /**/
1735     1040,
1736 /**/
1737     1039,
1738 /**/
1739     1038,
1740 /**/
1741     1037,
1742 /**/
1743     1036,
1744 /**/
1745     1035,
1746 /**/
1747     1034,
1748 /**/
1749     1033,
1750 /**/
1751     1032,
1752 /**/
1753     1031,
1754 /**/
1755     1030,
1756 /**/
1757     1029,
1758 /**/
1759     1028,
1760 /**/
1761     1027,
1762 /**/
1763     1026,
1764 /**/
1765     1025,
1766 /**/
1767     1024,
1768 /**/
1769     1023,
1770 /**/
1771     1022,
1772 /**/
1773     1021,
1774 /**/
1775     1020,
1776 /**/
1777     1019,
1778 /**/
1779     1018,
1780 /**/
1781     1017,
1782 /**/
1783     1016,
1784 /**/
1785     1015,
1786 /**/
1787     1014,
1788 /**/
1789     1013,
1790 /**/
1791     1012,
1792 /**/
1793     1011,
1794 /**/
1795     1010,
1796 /**/
1797     1009,
1798 /**/
1799     1008,
1800 /**/
1801     1007,
1802 /**/
1803     1006,
1804 /**/
1805     1005,
1806 /**/
1807     1004,
1808 /**/
1809     1003,
1810 /**/
1811     1002,
1812 /**/
1813     1001,
1814 /**/
1815     1000,
1816 /**/
1817     999,
1818 /**/
1819     998,
1820 /**/
1821     997,
1822 /**/
1823     996,
1824 /**/
1825     995,
1826 /**/
1827     994,
1828 /**/
1829     993,
1830 /**/
1831     992,
1832 /**/
1833     991,
1834 /**/
1835     990,
1836 /**/
1837     989,
1838 /**/
1839     988,
1840 /**/
1841     987,
1842 /**/
1843     986,
1844 /**/
1845     985,
1846 /**/
1847     984,
1848 /**/
1849     983,
1850 /**/
1851     982,
1852 /**/
1853     981,
1854 /**/
1855     980,
1856 /**/
1857     979,
1858 /**/
1859     978,
1860 /**/
1861     977,
1862 /**/
1863     976,
1864 /**/
1865     975,
1866 /**/
1867     974,
1868 /**/
1869     973,
1870 /**/
1871     972,
1872 /**/
1873     971,
1874 /**/
1875     970,
1876 /**/
1877     969,
1878 /**/
1879     968,
1880 /**/
1881     967,
1882 /**/
1883     966,
1884 /**/
1885     965,
1886 /**/
1887     964,
1888 /**/
1889     963,
1890 /**/
1891     962,
1892 /**/
1893     961,
1894 /**/
1895     960,
1896 /**/
1897     959,
1898 /**/
1899     958,
1900 /**/
1901     957,
1902 /**/
1903     956,
1904 /**/
1905     955,
1906 /**/
1907     954,
1908 /**/
1909     953,
1910 /**/
1911     952,
1912 /**/
1913     951,
1914 /**/
1915     950,
1916 /**/
1917     949,
1918 /**/
1919     948,
1920 /**/
1921     947,
1922 /**/
1923     946,
1924 /**/
1925     945,
1926 /**/
1927     944,
1928 /**/
1929     943,
1930 /**/
1931     942,
1932 /**/
1933     941,
1934 /**/
1935     940,
1936 /**/
1937     939,
1938 /**/
1939     938,
1940 /**/
1941     937,
1942 /**/
1943     936,
1944 /**/
1945     935,
1946 /**/
1947     934,
1948 /**/
1949     933,
1950 /**/
1951     932,
1952 /**/
1953     931,
1954 /**/
1955     930,
1956 /**/
1957     929,
1958 /**/
1959     928,
1960 /**/
1961     927,
1962 /**/
1963     926,
1964 /**/
1965     925,
1966 /**/
1967     924,
1968 /**/
1969     923,
1970 /**/
1971     922,
1972 /**/
1973     921,
1974 /**/
1975     920,
1976 /**/
1977     919,
1978 /**/
1979     918,
1980 /**/
1981     917,
1982 /**/
1983     916,
1984 /**/
1985     915,
1986 /**/
1987     914,
1988 /**/
1989     913,
1990 /**/
1991     912,
1992 /**/
1993     911,
1994 /**/
1995     910,
1996 /**/
1997     909,
1998 /**/
1999     908,
2000 /**/
2001     907,
2002 /**/
2003     906,
2004 /**/
2005     905,
2006 /**/
2007     904,
2008 /**/
2009     903,
2010 /**/
2011     902,
2012 /**/
2013     901,
2014 /**/
2015     900,
2016 /**/
2017     899,
2018 /**/
2019     898,
2020 /**/
2021     897,
2022 /**/
2023     896,
2024 /**/
2025     895,
2026 /**/
2027     894,
2028 /**/
2029     893,
2030 /**/
2031     892,
2032 /**/
2033     891,
2034 /**/
2035     890,
2036 /**/
2037     889,
2038 /**/
2039     888,
2040 /**/
2041     887,
2042 /**/
2043     886,
2044 /**/
2045     885,
2046 /**/
2047     884,
2048 /**/
2049     883,
2050 /**/
2051     882,
2052 /**/
2053     881,
2054 /**/
2055     880,
2056 /**/
2057     879,
2058 /**/
2059     878,
2060 /**/
2061     877,
2062 /**/
2063     876,
2064 /**/
2065     875,
2066 /**/
2067     874,
2068 /**/
2069     873,
2070 /**/
2071     872,
2072 /**/
2073     871,
2074 /**/
2075     870,
2076 /**/
2077     869,
2078 /**/
2079     868,
2080 /**/
2081     867,
2082 /**/
2083     866,
2084 /**/
2085     865,
2086 /**/
2087     864,
2088 /**/
2089     863,
2090 /**/
2091     862,
2092 /**/
2093     861,
2094 /**/
2095     860,
2096 /**/
2097     859,
2098 /**/
2099     858,
2100 /**/
2101     857,
2102 /**/
2103     856,
2104 /**/
2105     855,
2106 /**/
2107     854,
2108 /**/
2109     853,
2110 /**/
2111     852,
2112 /**/
2113     851,
2114 /**/
2115     850,
2116 /**/
2117     849,
2118 /**/
2119     848,
2120 /**/
2121     847,
2122 /**/
2123     846,
2124 /**/
2125     845,
2126 /**/
2127     844,
2128 /**/
2129     843,
2130 /**/
2131     842,
2132 /**/
2133     841,
2134 /**/
2135     840,
2136 /**/
2137     839,
2138 /**/
2139     838,
2140 /**/
2141     837,
2142 /**/
2143     836,
2144 /**/
2145     835,
2146 /**/
2147     834,
2148 /**/
2149     833,
2150 /**/
2151     832,
2152 /**/
2153     831,
2154 /**/
2155     830,
2156 /**/
2157     829,
2158 /**/
2159     828,
2160 /**/
2161     827,
2162 /**/
2163     826,
2164 /**/
2165     825,
2166 /**/
2167     824,
2168 /**/
2169     823,
2170 /**/
2171     822,
2172 /**/
2173     821,
2174 /**/
2175     820,
2176 /**/
2177     819,
2178 /**/
2179     818,
2180 /**/
2181     817,
2182 /**/
2183     816,
2184 /**/
2185     815,
2186 /**/
2187     814,
2188 /**/
2189     813,
2190 /**/
2191     812,
2192 /**/
2193     811,
2194 /**/
2195     810,
2196 /**/
2197     809,
2198 /**/
2199     808,
2200 /**/
2201     807,
2202 /**/
2203     806,
2204 /**/
2205     805,
2206 /**/
2207     804,
2208 /**/
2209     803,
2210 /**/
2211     802,
2212 /**/
2213     801,
2214 /**/
2215     800,
2216 /**/
2217     799,
2218 /**/
2219     798,
2220 /**/
2221     797,
2222 /**/
2223     796,
2224 /**/
2225     795,
2226 /**/
2227     794,
2228 /**/
2229     793,
2230 /**/
2231     792,
2232 /**/
2233     791,
2234 /**/
2235     790,
2236 /**/
2237     789,
2238 /**/
2239     788,
2240 /**/
2241     787,
2242 /**/
2243     786,
2244 /**/
2245     785,
2246 /**/
2247     784,
2248 /**/
2249     783,
2250 /**/
2251     782,
2252 /**/
2253     781,
2254 /**/
2255     780,
2256 /**/
2257     779,
2258 /**/
2259     778,
2260 /**/
2261     777,
2262 /**/
2263     776,
2264 /**/
2265     775,
2266 /**/
2267     774,
2268 /**/
2269     773,
2270 /**/
2271     772,
2272 /**/
2273     771,
2274 /**/
2275     770,
2276 /**/
2277     769,
2278 /**/
2279     768,
2280 /**/
2281     767,
2282 /**/
2283     766,
2284 /**/
2285     765,
2286 /**/
2287     764,
2288 /**/
2289     763,
2290 /**/
2291     762,
2292 /**/
2293     761,
2294 /**/
2295     760,
2296 /**/
2297     759,
2298 /**/
2299     758,
2300 /**/
2301     757,
2302 /**/
2303     756,
2304 /**/
2305     755,
2306 /**/
2307     754,
2308 /**/
2309     753,
2310 /**/
2311     752,
2312 /**/
2313     751,
2314 /**/
2315     750,
2316 /**/
2317     749,
2318 /**/
2319     748,
2320 /**/
2321     747,
2322 /**/
2323     746,
2324 /**/
2325     745,
2326 /**/
2327     744,
2328 /**/
2329     743,
2330 /**/
2331     742,
2332 /**/
2333     741,
2334 /**/
2335     740,
2336 /**/
2337     739,
2338 /**/
2339     738,
2340 /**/
2341     737,
2342 /**/
2343     736,
2344 /**/
2345     735,
2346 /**/
2347     734,
2348 /**/
2349     733,
2350 /**/
2351     732,
2352 /**/
2353     731,
2354 /**/
2355     730,
2356 /**/
2357     729,
2358 /**/
2359     728,
2360 /**/
2361     727,
2362 /**/
2363     726,
2364 /**/
2365     725,
2366 /**/
2367     724,
2368 /**/
2369     723,
2370 /**/
2371     722,
2372 /**/
2373     721,
2374 /**/
2375     720,
2376 /**/
2377     719,
2378 /**/
2379     718,
2380 /**/
2381     717,
2382 /**/
2383     716,
2384 /**/
2385     715,
2386 /**/
2387     714,
2388 /**/
2389     713,
2390 /**/
2391     712,
2392 /**/
2393     711,
2394 /**/
2395     710,
2396 /**/
2397     709,
2398 /**/
2399     708,
2400 /**/
2401     707,
2402 /**/
2403     706,
2404 /**/
2405     705,
2406 /**/
2407     704,
2408 /**/
2409     703,
2410 /**/
2411     702,
2412 /**/
2413     701,
2414 /**/
2415     700,
2416 /**/
2417     699,
2418 /**/
2419     698,
2420 /**/
2421     697,
2422 /**/
2423     696,
2424 /**/
2425     695,
2426 /**/
2427     694,
2428 /**/
2429     693,
2430 /**/
2431     692,
2432 /**/
2433     691,
2434 /**/
2435     690,
2436 /**/
2437     689,
2438 /**/
2439     688,
2440 /**/
2441     687,
2442 /**/
2443     686,
2444 /**/
2445     685,
2446 /**/
2447     684,
2448 /**/
2449     683,
2450 /**/
2451     682,
2452 /**/
2453     681,
2454 /**/
2455     680,
2456 /**/
2457     679,
2458 /**/
2459     678,
2460 /**/
2461     677,
2462 /**/
2463     676,
2464 /**/
2465     675,
2466 /**/
2467     674,
2468 /**/
2469     673,
2470 /**/
2471     672,
2472 /**/
2473     671,
2474 /**/
2475     670,
2476 /**/
2477     669,
2478 /**/
2479     668,
2480 /**/
2481     667,
2482 /**/
2483     666,
2484 /**/
2485     665,
2486 /**/
2487     664,
2488 /**/
2489     663,
2490 /**/
2491     662,
2492 /**/
2493     661,
2494 /**/
2495     660,
2496 /**/
2497     659,
2498 /**/
2499     658,
2500 /**/
2501     657,
2502 /**/
2503     656,
2504 /**/
2505     655,
2506 /**/
2507     654,
2508 /**/
2509     653,
2510 /**/
2511     652,
2512 /**/
2513     651,
2514 /**/
2515     650,
2516 /**/
2517     649,
2518 /**/
2519     648,
2520 /**/
2521     647,
2522 /**/
2523     646,
2524 /**/
2525     645,
2526 /**/
2527     644,
2528 /**/
2529     643,
2530 /**/
2531     642,
2532 /**/
2533     641,
2534 /**/
2535     640,
2536 /**/
2537     639,
2538 /**/
2539     638,
2540 /**/
2541     637,
2542 /**/
2543     636,
2544 /**/
2545     635,
2546 /**/
2547     634,
2548 /**/
2549     633,
2550 /**/
2551     632,
2552 /**/
2553     631,
2554 /**/
2555     630,
2556 /**/
2557     629,
2558 /**/
2559     628,
2560 /**/
2561     627,
2562 /**/
2563     626,
2564 /**/
2565     625,
2566 /**/
2567     624,
2568 /**/
2569     623,
2570 /**/
2571     622,
2572 /**/
2573     621,
2574 /**/
2575     620,
2576 /**/
2577     619,
2578 /**/
2579     618,
2580 /**/
2581     617,
2582 /**/
2583     616,
2584 /**/
2585     615,
2586 /**/
2587     614,
2588 /**/
2589     613,
2590 /**/
2591     612,
2592 /**/
2593     611,
2594 /**/
2595     610,
2596 /**/
2597     609,
2598 /**/
2599     608,
2600 /**/
2601     607,
2602 /**/
2603     606,
2604 /**/
2605     605,
2606 /**/
2607     604,
2608 /**/
2609     603,
2610 /**/
2611     602,
2612 /**/
2613     601,
2614 /**/
2615     600,
2616 /**/
2617     599,
2618 /**/
2619     598,
2620 /**/
2621     597,
2622 /**/
2623     596,
2624 /**/
2625     595,
2626 /**/
2627     594,
2628 /**/
2629     593,
2630 /**/
2631     592,
2632 /**/
2633     591,
2634 /**/
2635     590,
2636 /**/
2637     589,
2638 /**/
2639     588,
2640 /**/
2641     587,
2642 /**/
2643     586,
2644 /**/
2645     585,
2646 /**/
2647     584,
2648 /**/
2649     583,
2650 /**/
2651     582,
2652 /**/
2653     581,
2654 /**/
2655     580,
2656 /**/
2657     579,
2658 /**/
2659     578,
2660 /**/
2661     577,
2662 /**/
2663     576,
2664 /**/
2665     575,
2666 /**/
2667     574,
2668 /**/
2669     573,
2670 /**/
2671     572,
2672 /**/
2673     571,
2674 /**/
2675     570,
2676 /**/
2677     569,
2678 /**/
2679     568,
2680 /**/
2681     567,
2682 /**/
2683     566,
2684 /**/
2685     565,
2686 /**/
2687     564,
2688 /**/
2689     563,
2690 /**/
2691     562,
2692 /**/
2693     561,
2694 /**/
2695     560,
2696 /**/
2697     559,
2698 /**/
2699     558,
2700 /**/
2701     557,
2702 /**/
2703     556,
2704 /**/
2705     555,
2706 /**/
2707     554,
2708 /**/
2709     553,
2710 /**/
2711     552,
2712 /**/
2713     551,
2714 /**/
2715     550,
2716 /**/
2717     549,
2718 /**/
2719     548,
2720 /**/
2721     547,
2722 /**/
2723     546,
2724 /**/
2725     545,
2726 /**/
2727     544,
2728 /**/
2729     543,
2730 /**/
2731     542,
2732 /**/
2733     541,
2734 /**/
2735     540,
2736 /**/
2737     539,
2738 /**/
2739     538,
2740 /**/
2741     537,
2742 /**/
2743     536,
2744 /**/
2745     535,
2746 /**/
2747     534,
2748 /**/
2749     533,
2750 /**/
2751     532,
2752 /**/
2753     531,
2754 /**/
2755     530,
2756 /**/
2757     529,
2758 /**/
2759     528,
2760 /**/
2761     527,
2762 /**/
2763     526,
2764 /**/
2765     525,
2766 /**/
2767     524,
2768 /**/
2769     523,
2770 /**/
2771     522,
2772 /**/
2773     521,
2774 /**/
2775     520,
2776 /**/
2777     519,
2778 /**/
2779     518,
2780 /**/
2781     517,
2782 /**/
2783     516,
2784 /**/
2785     515,
2786 /**/
2787     514,
2788 /**/
2789     513,
2790 /**/
2791     512,
2792 /**/
2793     511,
2794 /**/
2795     510,
2796 /**/
2797     509,
2798 /**/
2799     508,
2800 /**/
2801     507,
2802 /**/
2803     506,
2804 /**/
2805     505,
2806 /**/
2807     504,
2808 /**/
2809     503,
2810 /**/
2811     502,
2812 /**/
2813     501,
2814 /**/
2815     500,
2816 /**/
2817     499,
2818 /**/
2819     498,
2820 /**/
2821     497,
2822 /**/
2823     496,
2824 /**/
2825     495,
2826 /**/
2827     494,
2828 /**/
2829     493,
2830 /**/
2831     492,
2832 /**/
2833     491,
2834 /**/
2835     490,
2836 /**/
2837     489,
2838 /**/
2839     488,
2840 /**/
2841     487,
2842 /**/
2843     486,
2844 /**/
2845     485,
2846 /**/
2847     484,
2848 /**/
2849     483,
2850 /**/
2851     482,
2852 /**/
2853     481,
2854 /**/
2855     480,
2856 /**/
2857     479,
2858 /**/
2859     478,
2860 /**/
2861     477,
2862 /**/
2863     476,
2864 /**/
2865     475,
2866 /**/
2867     474,
2868 /**/
2869     473,
2870 /**/
2871     472,
2872 /**/
2873     471,
2874 /**/
2875     470,
2876 /**/
2877     469,
2878 /**/
2879     468,
2880 /**/
2881     467,
2882 /**/
2883     466,
2884 /**/
2885     465,
2886 /**/
2887     464,
2888 /**/
2889     463,
2890 /**/
2891     462,
2892 /**/
2893     461,
2894 /**/
2895     460,
2896 /**/
2897     459,
2898 /**/
2899     458,
2900 /**/
2901     457,
2902 /**/
2903     456,
2904 /**/
2905     455,
2906 /**/
2907     454,
2908 /**/
2909     453,
2910 /**/
2911     452,
2912 /**/
2913     451,
2914 /**/
2915     450,
2916 /**/
2917     449,
2918 /**/
2919     448,
2920 /**/
2921     447,
2922 /**/
2923     446,
2924 /**/
2925     445,
2926 /**/
2927     444,
2928 /**/
2929     443,
2930 /**/
2931     442,
2932 /**/
2933     441,
2934 /**/
2935     440,
2936 /**/
2937     439,
2938 /**/
2939     438,
2940 /**/
2941     437,
2942 /**/
2943     436,
2944 /**/
2945     435,
2946 /**/
2947     434,
2948 /**/
2949     433,
2950 /**/
2951     432,
2952 /**/
2953     431,
2954 /**/
2955     430,
2956 /**/
2957     429,
2958 /**/
2959     428,
2960 /**/
2961     427,
2962 /**/
2963     426,
2964 /**/
2965     425,
2966 /**/
2967     424,
2968 /**/
2969     423,
2970 /**/
2971     422,
2972 /**/
2973     421,
2974 /**/
2975     420,
2976 /**/
2977     419,
2978 /**/
2979     418,
2980 /**/
2981     417,
2982 /**/
2983     416,
2984 /**/
2985     415,
2986 /**/
2987     414,
2988 /**/
2989     413,
2990 /**/
2991     412,
2992 /**/
2993     411,
2994 /**/
2995     410,
2996 /**/
2997     409,
2998 /**/
2999     408,
3000 /**/
3001     407,
3002 /**/
3003     406,
3004 /**/
3005     405,
3006 /**/
3007     404,
3008 /**/
3009     403,
3010 /**/
3011     402,
3012 /**/
3013     401,
3014 /**/
3015     400,
3016 /**/
3017     399,
3018 /**/
3019     398,
3020 /**/
3021     397,
3022 /**/
3023     396,
3024 /**/
3025     395,
3026 /**/
3027     394,
3028 /**/
3029     393,
3030 /**/
3031     392,
3032 /**/
3033     391,
3034 /**/
3035     390,
3036 /**/
3037     389,
3038 /**/
3039     388,
3040 /**/
3041     387,
3042 /**/
3043     386,
3044 /**/
3045     385,
3046 /**/
3047     384,
3048 /**/
3049     383,
3050 /**/
3051     382,
3052 /**/
3053     381,
3054 /**/
3055     380,
3056 /**/
3057     379,
3058 /**/
3059     378,
3060 /**/
3061     377,
3062 /**/
3063     376,
3064 /**/
3065     375,
3066 /**/
3067     374,
3068 /**/
3069     373,
3070 /**/
3071     372,
3072 /**/
3073     371,
3074 /**/
3075     370,
3076 /**/
3077     369,
3078 /**/
3079     368,
3080 /**/
3081     367,
3082 /**/
3083     366,
3084 /**/
3085     365,
3086 /**/
3087     364,
3088 /**/
3089     363,
3090 /**/
3091     362,
3092 /**/
3093     361,
3094 /**/
3095     360,
3096 /**/
3097     359,
3098 /**/
3099     358,
3100 /**/
3101     357,
3102 /**/
3103     356,
3104 /**/
3105     355,
3106 /**/
3107     354,
3108 /**/
3109     353,
3110 /**/
3111     352,
3112 /**/
3113     351,
3114 /**/
3115     350,
3116 /**/
3117     349,
3118 /**/
3119     348,
3120 /**/
3121     347,
3122 /**/
3123     346,
3124 /**/
3125     345,
3126 /**/
3127     344,
3128 /**/
3129     343,
3130 /**/
3131     342,
3132 /**/
3133     341,
3134 /**/
3135     340,
3136 /**/
3137     339,
3138 /**/
3139     338,
3140 /**/
3141     337,
3142 /**/
3143     336,
3144 /**/
3145     335,
3146 /**/
3147     334,
3148 /**/
3149     333,
3150 /**/
3151     332,
3152 /**/
3153     331,
3154 /**/
3155     330,
3156 /**/
3157     329,
3158 /**/
3159     328,
3160 /**/
3161     327,
3162 /**/
3163     326,
3164 /**/
3165     325,
3166 /**/
3167     324,
3168 /**/
3169     323,
3170 /**/
3171     322,
3172 /**/
3173     321,
3174 /**/
3175     320,
3176 /**/
3177     319,
3178 /**/
3179     318,
3180 /**/
3181     317,
3182 /**/
3183     316,
3184 /**/
3185     315,
3186 /**/
3187     314,
3188 /**/
3189     313,
3190 /**/
3191     312,
3192 /**/
3193     311,
3194 /**/
3195     310,
3196 /**/
3197     309,
3198 /**/
3199     308,
3200 /**/
3201     307,
3202 /**/
3203     306,
3204 /**/
3205     305,
3206 /**/
3207     304,
3208 /**/
3209     303,
3210 /**/
3211     302,
3212 /**/
3213     301,
3214 /**/
3215     300,
3216 /**/
3217     299,
3218 /**/
3219     298,
3220 /**/
3221     297,
3222 /**/
3223     296,
3224 /**/
3225     295,
3226 /**/
3227     294,
3228 /**/
3229     293,
3230 /**/
3231     292,
3232 /**/
3233     291,
3234 /**/
3235     290,
3236 /**/
3237     289,
3238 /**/
3239     288,
3240 /**/
3241     287,
3242 /**/
3243     286,
3244 /**/
3245     285,
3246 /**/
3247     284,
3248 /**/
3249     283,
3250 /**/
3251     282,
3252 /**/
3253     281,
3254 /**/
3255     280,
3256 /**/
3257     279,
3258 /**/
3259     278,
3260 /**/
3261     277,
3262 /**/
3263     276,
3264 /**/
3265     275,
3266 /**/
3267     274,
3268 /**/
3269     273,
3270 /**/
3271     272,
3272 /**/
3273     271,
3274 /**/
3275     270,
3276 /**/
3277     269,
3278 /**/
3279     268,
3280 /**/
3281     267,
3282 /**/
3283     266,
3284 /**/
3285     265,
3286 /**/
3287     264,
3288 /**/
3289     263,
3290 /**/
3291     262,
3292 /**/
3293     261,
3294 /**/
3295     260,
3296 /**/
3297     259,
3298 /**/
3299     258,
3300 /**/
3301     257,
3302 /**/
3303     256,
3304 /**/
3305     255,
3306 /**/
3307     254,
3308 /**/
3309     253,
3310 /**/
3311     252,
3312 /**/
3313     251,
3314 /**/
3315     250,
3316 /**/
3317     249,
3318 /**/
3319     248,
3320 /**/
3321     247,
3322 /**/
3323     246,
3324 /**/
3325     245,
3326 /**/
3327     244,
3328 /**/
3329     243,
3330 /**/
3331     242,
3332 /**/
3333     241,
3334 /**/
3335     240,
3336 /**/
3337     239,
3338 /**/
3339     238,
3340 /**/
3341     237,
3342 /**/
3343     236,
3344 /**/
3345     235,
3346 /**/
3347     234,
3348 /**/
3349     233,
3350 /**/
3351     232,
3352 /**/
3353     231,
3354 /**/
3355     230,
3356 /**/
3357     229,
3358 /**/
3359     228,
3360 /**/
3361     227,
3362 /**/
3363     226,
3364 /**/
3365     225,
3366 /**/
3367     224,
3368 /**/
3369     223,
3370 /**/
3371     222,
3372 /**/
3373     221,
3374 /**/
3375     220,
3376 /**/
3377     219,
3378 /**/
3379     218,
3380 /**/
3381     217,
3382 /**/
3383     216,
3384 /**/
3385     215,
3386 /**/
3387     214,
3388 /**/
3389     213,
3390 /**/
3391     212,
3392 /**/
3393     211,
3394 /**/
3395     210,
3396 /**/
3397     209,
3398 /**/
3399     208,
3400 /**/
3401     207,
3402 /**/
3403     206,
3404 /**/
3405     205,
3406 /**/
3407     204,
3408 /**/
3409     203,
3410 /**/
3411     202,
3412 /**/
3413     201,
3414 /**/
3415     200,
3416 /**/
3417     199,
3418 /**/
3419     198,
3420 /**/
3421     197,
3422 /**/
3423     196,
3424 /**/
3425     195,
3426 /**/
3427     194,
3428 /**/
3429     193,
3430 /**/
3431     192,
3432 /**/
3433     191,
3434 /**/
3435     190,
3436 /**/
3437     189,
3438 /**/
3439     188,
3440 /**/
3441     187,
3442 /**/
3443     186,
3444 /**/
3445     185,
3446 /**/
3447     184,
3448 /**/
3449     183,
3450 /**/
3451     182,
3452 /**/
3453     181,
3454 /**/
3455     180,
3456 /**/
3457     179,
3458 /**/
3459     178,
3460 /**/
3461     177,
3462 /**/
3463     176,
3464 /**/
3465     175,
3466 /**/
3467     174,
3468 /**/
3469     173,
3470 /**/
3471     172,
3472 /**/
3473     171,
3474 /**/
3475     170,
3476 /**/
3477     169,
3478 /**/
3479     168,
3480 /**/
3481     167,
3482 /**/
3483     166,
3484 /**/
3485     165,
3486 /**/
3487     164,
3488 /**/
3489     163,
3490 /**/
3491     162,
3492 /**/
3493     161,
3494 /**/
3495     160,
3496 /**/
3497     159,
3498 /**/
3499     158,
3500 /**/
3501     157,
3502 /**/
3503     156,
3504 /**/
3505     155,
3506 /**/
3507     154,
3508 /**/
3509     153,
3510 /**/
3511     152,
3512 /**/
3513     151,
3514 /**/
3515     150,
3516 /**/
3517     149,
3518 /**/
3519     148,
3520 /**/
3521     147,
3522 /**/
3523     146,
3524 /**/
3525     145,
3526 /**/
3527     144,
3528 /**/
3529     143,
3530 /**/
3531     142,
3532 /**/
3533     141,
3534 /**/
3535     140,
3536 /**/
3537     139,
3538 /**/
3539     138,
3540 /**/
3541     137,
3542 /**/
3543     136,
3544 /**/
3545     135,
3546 /**/
3547     134,
3548 /**/
3549     133,
3550 /**/
3551     132,
3552 /**/
3553     131,
3554 /**/
3555     130,
3556 /**/
3557     129,
3558 /**/
3559     128,
3560 /**/
3561     127,
3562 /**/
3563     126,
3564 /**/
3565     125,
3566 /**/
3567     124,
3568 /**/
3569     123,
3570 /**/
3571     122,
3572 /**/
3573     121,
3574 /**/
3575     120,
3576 /**/
3577     119,
3578 /**/
3579     118,
3580 /**/
3581     117,
3582 /**/
3583     116,
3584 /**/
3585     115,
3586 /**/
3587     114,
3588 /**/
3589     113,
3590 /**/
3591     112,
3592 /**/
3593     111,
3594 /**/
3595     110,
3596 /**/
3597     109,
3598 /**/
3599     108,
3600 /**/
3601     107,
3602 /**/
3603     106,
3604 /**/
3605     105,
3606 /**/
3607     104,
3608 /**/
3609     103,
3610 /**/
3611     102,
3612 /**/
3613     101,
3614 /**/
3615     100,
3616 /**/
3617     99,
3618 /**/
3619     98,
3620 /**/
3621     97,
3622 /**/
3623     96,
3624 /**/
3625     95,
3626 /**/
3627     94,
3628 /**/
3629     93,
3630 /**/
3631     92,
3632 /**/
3633     91,
3634 /**/
3635     90,
3636 /**/
3637     89,
3638 /**/
3639     88,
3640 /**/
3641     87,
3642 /**/
3643     86,
3644 /**/
3645     85,
3646 /**/
3647     84,
3648 /**/
3649     83,
3650 /**/
3651     82,
3652 /**/
3653     81,
3654 /**/
3655     80,
3656 /**/
3657     79,
3658 /**/
3659     78,
3660 /**/
3661     77,
3662 /**/
3663     76,
3664 /**/
3665     75,
3666 /**/
3667     74,
3668 /**/
3669     73,
3670 /**/
3671     72,
3672 /**/
3673     71,
3674 /**/
3675     70,
3676 /**/
3677     69,
3678 /**/
3679     68,
3680 /**/
3681     67,
3682 /**/
3683     66,
3684 /**/
3685     65,
3686 /**/
3687     64,
3688 /**/
3689     63,
3690 /**/
3691     62,
3692 /**/
3693     61,
3694 /**/
3695     60,
3696 /**/
3697     59,
3698 /**/
3699     58,
3700 /**/
3701     57,
3702 /**/
3703     56,
3704 /**/
3705     55,
3706 /**/
3707     54,
3708 /**/
3709     53,
3710 /**/
3711     52,
3712 /**/
3713     51,
3714 /**/
3715     50,
3716 /**/
3717     49,
3718 /**/
3719     48,
3720 /**/
3721     47,
3722 /**/
3723     46,
3724 /**/
3725     45,
3726 /**/
3727     44,
3728 /**/
3729     43,
3730 /**/
3731     42,
3732 /**/
3733     41,
3734 /**/
3735     40,
3736 /**/
3737     39,
3738 /**/
3739     38,
3740 /**/
3741     37,
3742 /**/
3743     36,
3744 /**/
3745     35,
3746 /**/
3747     34,
3748 /**/
3749     33,
3750 /**/
3751     32,
3752 /**/
3753     31,
3754 /**/
3755     30,
3756 /**/
3757     29,
3758 /**/
3759     28,
3760 /**/
3761     27,
3762 /**/
3763     26,
3764 /**/
3765     25,
3766 /**/
3767     24,
3768 /**/
3769     23,
3770 /**/
3771     22,
3772 /**/
3773     21,
3774 /**/
3775     20,
3776 /**/
3777     19,
3778 /**/
3779     18,
3780 /**/
3781     17,
3782 /**/
3783     16,
3784 /**/
3785     15,
3786 /**/
3787     14,
3788 /**/
3789     13,
3790 /**/
3791     12,
3792 /**/
3793     11,
3794 /**/
3795     10,
3796 /**/
3797     9,
3798 /**/
3799     8,
3800 /**/
3801     7,
3802 /**/
3803     6,
3804 /**/
3805     5,
3806 /**/
3807     4,
3808 /**/
3809     3,
3810 /**/
3811     2,
3812 /**/
3813     1,
3814 /**/
3815     0
3816 };
3817 
3818 /*
3819  * Place to put a short description when adding a feature with a patch.
3820  * Keep it short, e.g.,: "relative numbers", "persistent undo".
3821  * Also add a comment marker to separate the lines.
3822  * See the official Vim patches for the diff format: It must use a context of
3823  * one line only.  Create it by hand or use "diff -C2" and edit the patch.
3824  */
3825 static char *(extra_patches[]) =
3826 {   /* Add your patch description below this line */
3827 /**/
3828     NULL
3829 };
3830 
3831     int
3832 highest_patch(void)
3833 {
3834     int		i;
3835     int		h = 0;
3836 
3837     for (i = 0; included_patches[i] != 0; ++i)
3838 	if (included_patches[i] > h)
3839 	    h = included_patches[i];
3840     return h;
3841 }
3842 
3843 #if defined(FEAT_EVAL) || defined(PROTO)
3844 /*
3845  * Return TRUE if patch "n" has been included.
3846  */
3847     int
3848 has_patch(int n)
3849 {
3850     int		i;
3851 
3852     for (i = 0; included_patches[i] != 0; ++i)
3853 	if (included_patches[i] == n)
3854 	    return TRUE;
3855     return FALSE;
3856 }
3857 #endif
3858 
3859     void
3860 ex_version(exarg_T *eap)
3861 {
3862     /*
3863      * Ignore a ":version 9.99" command.
3864      */
3865     if (*eap->arg == NUL)
3866     {
3867 	msg_putchar('\n');
3868 	list_version();
3869     }
3870 }
3871 
3872 /*
3873  * Output a string for the version message.  If it's going to wrap, output a
3874  * newline, unless the message is too long to fit on the screen anyway.
3875  * When "wrap" is TRUE wrap the string in [].
3876  */
3877     static void
3878 version_msg_wrap(char_u *s, int wrap)
3879 {
3880     int		len = (int)vim_strsize(s) + (wrap ? 2 : 0);
3881 
3882     if (!got_int && len < (int)Columns && msg_col + len >= (int)Columns
3883 								&& *s != '\n')
3884 	msg_putchar('\n');
3885     if (!got_int)
3886     {
3887 	if (wrap)
3888 	    msg_puts("[");
3889 	msg_puts((char *)s);
3890 	if (wrap)
3891 	    msg_puts("]");
3892     }
3893 }
3894 
3895     static void
3896 version_msg(char *s)
3897 {
3898     version_msg_wrap((char_u *)s, FALSE);
3899 }
3900 
3901 /*
3902  * List all features aligned in columns, dictionary style.
3903  */
3904     static void
3905 list_features(void)
3906 {
3907     list_in_columns((char_u **)features, -1, -1);
3908 }
3909 
3910 /*
3911  * List string items nicely aligned in columns.
3912  * When "size" is < 0 then the last entry is marked with NULL.
3913  * The entry with index "current" is inclosed in [].
3914  */
3915     void
3916 list_in_columns(char_u **items, int size, int current)
3917 {
3918     int		i;
3919     int		ncol;
3920     int		nrow;
3921     int		item_count = 0;
3922     int		width = 0;
3923 #ifdef FEAT_SYN_HL
3924     int		use_highlight = (items == (char_u **)features);
3925 #endif
3926 
3927     /* Find the length of the longest item, use that + 1 as the column
3928      * width. */
3929     for (i = 0; size < 0 ? items[i] != NULL : i < size; ++i)
3930     {
3931 	int l = (int)vim_strsize(items[i]) + (i == current ? 2 : 0);
3932 
3933 	if (l > width)
3934 	    width = l;
3935 	++item_count;
3936     }
3937     width += 1;
3938 
3939     if (Columns < width)
3940     {
3941 	/* Not enough screen columns - show one per line */
3942 	for (i = 0; i < item_count; ++i)
3943 	{
3944 	    version_msg_wrap(items[i], i == current);
3945 	    if (msg_col > 0)
3946 		msg_putchar('\n');
3947 	}
3948 	return;
3949     }
3950 
3951     /* The rightmost column doesn't need a separator.
3952      * Sacrifice it to fit in one more column if possible. */
3953     ncol = (int) (Columns + 1) / width;
3954     nrow = item_count / ncol + (item_count % ncol ? 1 : 0);
3955 
3956     /* i counts columns then rows.  idx counts rows then columns. */
3957     for (i = 0; !got_int && i < nrow * ncol; ++i)
3958     {
3959 	int idx = (i / ncol) + (i % ncol) * nrow;
3960 
3961 	if (idx < item_count)
3962 	{
3963 	    int last_col = (i + 1) % ncol == 0;
3964 
3965 	    if (idx == current)
3966 		msg_putchar('[');
3967 #ifdef FEAT_SYN_HL
3968 	    if (use_highlight && items[idx][0] == '-')
3969 		msg_puts_attr((char *)items[idx], HL_ATTR(HLF_W));
3970 	    else
3971 #endif
3972 		msg_puts((char *)items[idx]);
3973 	    if (idx == current)
3974 		msg_putchar(']');
3975 	    if (last_col)
3976 	    {
3977 		if (msg_col > 0)
3978 		    msg_putchar('\n');
3979 	    }
3980 	    else
3981 	    {
3982 		while (msg_col % width)
3983 		    msg_putchar(' ');
3984 	    }
3985 	}
3986 	else
3987 	{
3988 	    if (msg_col > 0)
3989 		msg_putchar('\n');
3990 	}
3991     }
3992 }
3993 
3994     void
3995 list_version(void)
3996 {
3997     int		i;
3998     int		first;
3999     char	*s = "";
4000 
4001     /*
4002      * When adding features here, don't forget to update the list of
4003      * internal variables in eval.c!
4004      */
4005     init_longVersion();
4006     msg(longVersion);
4007 #ifdef MSWIN
4008 # ifdef FEAT_GUI_MSWIN
4009 #  ifdef VIMDLL
4010 #   ifdef _WIN64
4011     msg_puts(_("\nMS-Windows 64-bit GUI/console version"));
4012 #   else
4013     msg_puts(_("\nMS-Windows 32-bit GUI/console version"));
4014 #   endif
4015 #  else
4016 #   ifdef _WIN64
4017     msg_puts(_("\nMS-Windows 64-bit GUI version"));
4018 #   else
4019     msg_puts(_("\nMS-Windows 32-bit GUI version"));
4020 #   endif
4021 #  endif
4022 #  ifdef FEAT_OLE
4023     msg_puts(_(" with OLE support"));
4024 #  endif
4025 # else
4026 #  ifdef _WIN64
4027     msg_puts(_("\nMS-Windows 64-bit console version"));
4028 #  else
4029     msg_puts(_("\nMS-Windows 32-bit console version"));
4030 #  endif
4031 # endif
4032 #endif
4033 #if defined(MACOS_X)
4034 # if defined(MACOS_X_DARWIN)
4035     msg_puts(_("\nmacOS version"));
4036 # else
4037     msg_puts(_("\nmacOS version w/o darwin feat."));
4038 # endif
4039 #endif
4040 
4041 #ifdef VMS
4042     msg_puts(_("\nOpenVMS version"));
4043 # ifdef HAVE_PATHDEF
4044     if (*compiled_arch != NUL)
4045     {
4046 	msg_puts(" - ");
4047 	msg_puts((char *)compiled_arch);
4048     }
4049 # endif
4050 
4051 #endif
4052 
4053     /* Print the list of patch numbers if there is at least one. */
4054     /* Print a range when patches are consecutive: "1-10, 12, 15-40, 42-45" */
4055     if (included_patches[0] != 0)
4056     {
4057 	msg_puts(_("\nIncluded patches: "));
4058 	first = -1;
4059 	/* find last one */
4060 	for (i = 0; included_patches[i] != 0; ++i)
4061 	    ;
4062 	while (--i >= 0)
4063 	{
4064 	    if (first < 0)
4065 		first = included_patches[i];
4066 	    if (i == 0 || included_patches[i - 1] != included_patches[i] + 1)
4067 	    {
4068 		msg_puts(s);
4069 		s = ", ";
4070 		msg_outnum((long)first);
4071 		if (first != included_patches[i])
4072 		{
4073 		    msg_puts("-");
4074 		    msg_outnum((long)included_patches[i]);
4075 		}
4076 		first = -1;
4077 	    }
4078 	}
4079     }
4080 
4081     /* Print the list of extra patch descriptions if there is at least one. */
4082     if (extra_patches[0] != NULL)
4083     {
4084 	msg_puts(_("\nExtra patches: "));
4085 	s = "";
4086 	for (i = 0; extra_patches[i] != NULL; ++i)
4087 	{
4088 	    msg_puts(s);
4089 	    s = ", ";
4090 	    msg_puts(extra_patches[i]);
4091 	}
4092     }
4093 
4094 #ifdef MODIFIED_BY
4095     msg_puts("\n");
4096     msg_puts(_("Modified by "));
4097     msg_puts(MODIFIED_BY);
4098 #endif
4099 
4100 #ifdef HAVE_PATHDEF
4101     if (*compiled_user != NUL || *compiled_sys != NUL)
4102     {
4103 	msg_puts(_("\nCompiled "));
4104 	if (*compiled_user != NUL)
4105 	{
4106 	    msg_puts(_("by "));
4107 	    msg_puts((char *)compiled_user);
4108 	}
4109 	if (*compiled_sys != NUL)
4110 	{
4111 	    msg_puts("@");
4112 	    msg_puts((char *)compiled_sys);
4113 	}
4114     }
4115 #endif
4116 
4117 #ifdef FEAT_HUGE
4118     msg_puts(_("\nHuge version "));
4119 #else
4120 # ifdef FEAT_BIG
4121     msg_puts(_("\nBig version "));
4122 # else
4123 #  ifdef FEAT_NORMAL
4124     msg_puts(_("\nNormal version "));
4125 #  else
4126 #   ifdef FEAT_SMALL
4127     msg_puts(_("\nSmall version "));
4128 #   else
4129     msg_puts(_("\nTiny version "));
4130 #   endif
4131 #  endif
4132 # endif
4133 #endif
4134 #ifndef FEAT_GUI
4135     msg_puts(_("without GUI."));
4136 #else
4137 # ifdef FEAT_GUI_GTK
4138 #  ifdef USE_GTK3
4139     msg_puts(_("with GTK3 GUI."));
4140 #  else
4141 #   ifdef FEAT_GUI_GNOME
4142      msg_puts(_("with GTK2-GNOME GUI."));
4143 #   else
4144      msg_puts(_("with GTK2 GUI."));
4145 #   endif
4146 # endif
4147 # else
4148 #  ifdef FEAT_GUI_MOTIF
4149     msg_puts(_("with X11-Motif GUI."));
4150 #  else
4151 #   ifdef FEAT_GUI_ATHENA
4152 #    ifdef FEAT_GUI_NEXTAW
4153     msg_puts(_("with X11-neXtaw GUI."));
4154 #    else
4155     msg_puts(_("with X11-Athena GUI."));
4156 #    endif
4157 #   else
4158 #     ifdef FEAT_GUI_PHOTON
4159     msg_puts(_("with Photon GUI."));
4160 #     else
4161 #      if defined(MSWIN)
4162     msg_puts(_("with GUI."));
4163 #      else
4164 #	if defined(TARGET_API_MAC_CARBON) && TARGET_API_MAC_CARBON
4165     msg_puts(_("with Carbon GUI."));
4166 #	else
4167 #	 if defined(TARGET_API_MAC_OSX) && TARGET_API_MAC_OSX
4168     msg_puts(_("with Cocoa GUI."));
4169 #	 else
4170 #	 endif
4171 #	endif
4172 #      endif
4173 #    endif
4174 #   endif
4175 #  endif
4176 # endif
4177 #endif
4178     version_msg(_("  Features included (+) or not (-):\n"));
4179 
4180     list_features();
4181 
4182 #ifdef SYS_VIMRC_FILE
4183     version_msg(_("   system vimrc file: \""));
4184     version_msg(SYS_VIMRC_FILE);
4185     version_msg("\"\n");
4186 #endif
4187 #ifdef USR_VIMRC_FILE
4188     version_msg(_("     user vimrc file: \""));
4189     version_msg(USR_VIMRC_FILE);
4190     version_msg("\"\n");
4191 #endif
4192 #ifdef USR_VIMRC_FILE2
4193     version_msg(_(" 2nd user vimrc file: \""));
4194     version_msg(USR_VIMRC_FILE2);
4195     version_msg("\"\n");
4196 #endif
4197 #ifdef USR_VIMRC_FILE3
4198     version_msg(_(" 3rd user vimrc file: \""));
4199     version_msg(USR_VIMRC_FILE3);
4200     version_msg("\"\n");
4201 #endif
4202 #ifdef USR_EXRC_FILE
4203     version_msg(_("      user exrc file: \""));
4204     version_msg(USR_EXRC_FILE);
4205     version_msg("\"\n");
4206 #endif
4207 #ifdef USR_EXRC_FILE2
4208     version_msg(_("  2nd user exrc file: \""));
4209     version_msg(USR_EXRC_FILE2);
4210     version_msg("\"\n");
4211 #endif
4212 #ifdef FEAT_GUI
4213 # ifdef SYS_GVIMRC_FILE
4214     version_msg(_("  system gvimrc file: \""));
4215     version_msg(SYS_GVIMRC_FILE);
4216     version_msg("\"\n");
4217 # endif
4218     version_msg(_("    user gvimrc file: \""));
4219     version_msg(USR_GVIMRC_FILE);
4220     version_msg("\"\n");
4221 # ifdef USR_GVIMRC_FILE2
4222     version_msg(_("2nd user gvimrc file: \""));
4223     version_msg(USR_GVIMRC_FILE2);
4224     version_msg("\"\n");
4225 # endif
4226 # ifdef USR_GVIMRC_FILE3
4227     version_msg(_("3rd user gvimrc file: \""));
4228     version_msg(USR_GVIMRC_FILE3);
4229     version_msg("\"\n");
4230 # endif
4231 #endif
4232     version_msg(_("       defaults file: \""));
4233     version_msg(VIM_DEFAULTS_FILE);
4234     version_msg("\"\n");
4235 #ifdef FEAT_GUI
4236 # ifdef SYS_MENU_FILE
4237     version_msg(_("    system menu file: \""));
4238     version_msg(SYS_MENU_FILE);
4239     version_msg("\"\n");
4240 # endif
4241 #endif
4242 #ifdef HAVE_PATHDEF
4243     if (*default_vim_dir != NUL)
4244     {
4245 	version_msg(_("  fall-back for $VIM: \""));
4246 	version_msg((char *)default_vim_dir);
4247 	version_msg("\"\n");
4248     }
4249     if (*default_vimruntime_dir != NUL)
4250     {
4251 	version_msg(_(" f-b for $VIMRUNTIME: \""));
4252 	version_msg((char *)default_vimruntime_dir);
4253 	version_msg("\"\n");
4254     }
4255     version_msg(_("Compilation: "));
4256     version_msg((char *)all_cflags);
4257     version_msg("\n");
4258 #ifdef VMS
4259     if (*compiler_version != NUL)
4260     {
4261 	version_msg(_("Compiler: "));
4262 	version_msg((char *)compiler_version);
4263 	version_msg("\n");
4264     }
4265 #endif
4266     version_msg(_("Linking: "));
4267     version_msg((char *)all_lflags);
4268 #endif
4269 #ifdef DEBUG
4270     version_msg("\n");
4271     version_msg(_("  DEBUG BUILD"));
4272 #endif
4273 }
4274 
4275 static void do_intro_line(int row, char_u *mesg, int add_version, int attr);
4276 
4277 /*
4278  * Show the intro message when not editing a file.
4279  */
4280     void
4281 maybe_intro_message(void)
4282 {
4283     if (BUFEMPTY()
4284 	    && curbuf->b_fname == NULL
4285 	    && firstwin->w_next == NULL
4286 	    && vim_strchr(p_shm, SHM_INTRO) == NULL)
4287 	intro_message(FALSE);
4288 }
4289 
4290 /*
4291  * Give an introductory message about Vim.
4292  * Only used when starting Vim on an empty file, without a file name.
4293  * Or with the ":intro" command (for Sven :-).
4294  */
4295     void
4296 intro_message(
4297     int		colon)		/* TRUE for ":intro" */
4298 {
4299     int		i;
4300     int		row;
4301     int		blanklines;
4302     int		sponsor;
4303     char	*p;
4304     static char	*(lines[]) =
4305     {
4306 	N_("VIM - Vi IMproved"),
4307 	"",
4308 	N_("version "),
4309 	N_("by Bram Moolenaar et al."),
4310 #ifdef MODIFIED_BY
4311 	" ",
4312 #endif
4313 	N_("Vim is open source and freely distributable"),
4314 	"",
4315 	N_("Help poor children in Uganda!"),
4316 	N_("type  :help iccf<Enter>       for information "),
4317 	"",
4318 	N_("type  :q<Enter>               to exit         "),
4319 	N_("type  :help<Enter>  or  <F1>  for on-line help"),
4320 	N_("type  :help version8<Enter>   for version info"),
4321 	NULL,
4322 	"",
4323 	N_("Running in Vi compatible mode"),
4324 	N_("type  :set nocp<Enter>        for Vim defaults"),
4325 	N_("type  :help cp-default<Enter> for info on this"),
4326     };
4327 #ifdef FEAT_GUI
4328     static char	*(gui_lines[]) =
4329     {
4330 	NULL,
4331 	NULL,
4332 	NULL,
4333 	NULL,
4334 #ifdef MODIFIED_BY
4335 	NULL,
4336 #endif
4337 	NULL,
4338 	NULL,
4339 	NULL,
4340 	N_("menu  Help->Orphans           for information    "),
4341 	NULL,
4342 	N_("Running modeless, typed text is inserted"),
4343 	N_("menu  Edit->Global Settings->Toggle Insert Mode  "),
4344 	N_("                              for two modes      "),
4345 	NULL,
4346 	NULL,
4347 	NULL,
4348 	N_("menu  Edit->Global Settings->Toggle Vi Compatible"),
4349 	N_("                              for Vim defaults   "),
4350     };
4351 #endif
4352 
4353     /* blanklines = screen height - # message lines */
4354     blanklines = (int)Rows - ((sizeof(lines) / sizeof(char *)) - 1);
4355     if (!p_cp)
4356 	blanklines += 4;  /* add 4 for not showing "Vi compatible" message */
4357 
4358     /* Don't overwrite a statusline.  Depends on 'cmdheight'. */
4359     if (p_ls > 1)
4360 	blanklines -= Rows - topframe->fr_height;
4361     if (blanklines < 0)
4362 	blanklines = 0;
4363 
4364     /* Show the sponsor and register message one out of four times, the Uganda
4365      * message two out of four times. */
4366     sponsor = (int)time(NULL);
4367     sponsor = ((sponsor & 2) == 0) - ((sponsor & 4) == 0);
4368 
4369     /* start displaying the message lines after half of the blank lines */
4370     row = blanklines / 2;
4371     if ((row >= 2 && Columns >= 50) || colon)
4372     {
4373 	for (i = 0; i < (int)(sizeof(lines) / sizeof(char *)); ++i)
4374 	{
4375 	    p = lines[i];
4376 #ifdef FEAT_GUI
4377 	    if (p_im && gui.in_use && gui_lines[i] != NULL)
4378 		p = gui_lines[i];
4379 #endif
4380 	    if (p == NULL)
4381 	    {
4382 		if (!p_cp)
4383 		    break;
4384 		continue;
4385 	    }
4386 	    if (sponsor != 0)
4387 	    {
4388 		if (strstr(p, "children") != NULL)
4389 		    p = sponsor < 0
4390 			? N_("Sponsor Vim development!")
4391 			: N_("Become a registered Vim user!");
4392 		else if (strstr(p, "iccf") != NULL)
4393 		    p = sponsor < 0
4394 			? N_("type  :help sponsor<Enter>    for information ")
4395 			: N_("type  :help register<Enter>   for information ");
4396 		else if (strstr(p, "Orphans") != NULL)
4397 		    p = N_("menu  Help->Sponsor/Register  for information    ");
4398 	    }
4399 	    if (*p != NUL)
4400 		do_intro_line(row, (char_u *)_(p), i == 2, 0);
4401 	    ++row;
4402 	}
4403     }
4404 
4405     /* Make the wait-return message appear just below the text. */
4406     if (colon)
4407 	msg_row = row;
4408 }
4409 
4410     static void
4411 do_intro_line(
4412     int		row,
4413     char_u	*mesg,
4414     int		add_version,
4415     int		attr)
4416 {
4417     char_u	vers[20];
4418     int		col;
4419     char_u	*p;
4420     int		l;
4421     int		clen;
4422 #ifdef MODIFIED_BY
4423 # define MODBY_LEN 150
4424     char_u	modby[MODBY_LEN];
4425 
4426     if (*mesg == ' ')
4427     {
4428 	vim_strncpy(modby, (char_u *)_("Modified by "), MODBY_LEN - 1);
4429 	l = (int)STRLEN(modby);
4430 	vim_strncpy(modby + l, (char_u *)MODIFIED_BY, MODBY_LEN - l - 1);
4431 	mesg = modby;
4432     }
4433 #endif
4434 
4435     /* Center the message horizontally. */
4436     col = vim_strsize(mesg);
4437     if (add_version)
4438     {
4439 	STRCPY(vers, mediumVersion);
4440 	if (highest_patch())
4441 	{
4442 	    /* Check for 9.9x or 9.9xx, alpha/beta version */
4443 	    if (isalpha((int)vers[3]))
4444 	    {
4445 		int len = (isalpha((int)vers[4])) ? 5 : 4;
4446 		sprintf((char *)vers + len, ".%d%s", highest_patch(),
4447 							 mediumVersion + len);
4448 	    }
4449 	    else
4450 		sprintf((char *)vers + 3, ".%d", highest_patch());
4451 	}
4452 	col += (int)STRLEN(vers);
4453     }
4454     col = (Columns - col) / 2;
4455     if (col < 0)
4456 	col = 0;
4457 
4458     /* Split up in parts to highlight <> items differently. */
4459     for (p = mesg; *p != NUL; p += l)
4460     {
4461 	clen = 0;
4462 	for (l = 0; p[l] != NUL
4463 			 && (l == 0 || (p[l] != '<' && p[l - 1] != '>')); ++l)
4464 	{
4465 	    if (has_mbyte)
4466 	    {
4467 		clen += ptr2cells(p + l);
4468 		l += (*mb_ptr2len)(p + l) - 1;
4469 	    }
4470 	    else
4471 		clen += byte2cells(p[l]);
4472 	}
4473 	screen_puts_len(p, l, row, col, *p == '<' ? HL_ATTR(HLF_8) : attr);
4474 	col += clen;
4475     }
4476 
4477     /* Add the version number to the version line. */
4478     if (add_version)
4479 	screen_puts(vers, row, col, 0);
4480 }
4481 
4482 /*
4483  * ":intro": clear screen, display intro screen and wait for return.
4484  */
4485     void
4486 ex_intro(exarg_T *eap UNUSED)
4487 {
4488     screenclear();
4489     intro_message(TRUE);
4490     wait_return(TRUE);
4491 }
4492