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