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