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