aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoakim Verona2015-02-01 00:37:46 +0100
committerJoakim Verona2015-02-01 00:37:46 +0100
commit69815dfe3704f8a8c733843f1fd04546cbb0f4d0 (patch)
treecee6910753a51b9a5ee88e2431c9bcad099e8ba8
parent4edad429cafb2f0b1fda028be58367286ab04f1c (diff)
parenta2c32b0cfc9f6d3410e2832d8ea0d4f1df576d1e (diff)
downloademacs-69815dfe3704f8a8c733843f1fd04546cbb0f4d0.tar.gz
emacs-69815dfe3704f8a8c733843f1fd04546cbb0f4d0.zip
Merge branch 'master' into xwidget
-rw-r--r--ChangeLog31
-rw-r--r--admin/ChangeLog4
-rwxr-xr-xadmin/update_autogen2
-rwxr-xr-xbuild-aux/update-copyright4
-rw-r--r--configure.ac3
-rw-r--r--doc/emacs/ChangeLog12
-rw-r--r--doc/emacs/cmdargs.texi9
-rw-r--r--doc/emacs/files.texi7
-rw-r--r--doc/emacs/programs.texi2
-rw-r--r--doc/lispref/ChangeLog23
-rw-r--r--doc/lispref/commands.texi23
-rw-r--r--doc/lispref/display.texi10
-rw-r--r--doc/lispref/frames.texi24
-rw-r--r--doc/lispref/searching.texi9
-rw-r--r--doc/lispref/text.texi1
-rw-r--r--doc/lispref/variables.texi1
-rw-r--r--doc/misc/eww.texi2
-rw-r--r--doc/misc/info.texi2
-rw-r--r--etc/ChangeLog15
-rw-r--r--etc/NEWS4
-rw-r--r--etc/images/README6
-rw-r--r--etc/images/splash.pbmbin8273 -> 9797 bytes
-rw-r--r--etc/images/splash.pngbin37472 -> 25160 bytes
-rw-r--r--etc/images/splash.svg124
-rw-r--r--etc/images/splash.xpm611
-rw-r--r--etc/tutorials/TUTORIAL.he74
-rw-r--r--lib/gnulib.mk1
-rw-r--r--lib/time.in.h2
-rw-r--r--lisp/ChangeLog235
-rw-r--r--lisp/button.el20
-rw-r--r--lisp/calc/calc-ext.el4
-rw-r--r--lisp/calc/calc-help.el2
-rw-r--r--lisp/calc/calc-units.el36
-rw-r--r--lisp/custom.el3
-rw-r--r--lisp/emacs-lisp/backquote.el4
-rw-r--r--lisp/emacs-lisp/cl-generic.el30
-rw-r--r--lisp/emacs-lisp/cl-macs.el215
-rw-r--r--lisp/emacs-lisp/cl-preloaded.el48
-rw-r--r--lisp/emacs-lisp/cl.el1
-rw-r--r--lisp/emacs-lisp/easy-mmode.el11
-rw-r--r--lisp/emacs-lisp/eieio-base.el4
-rw-r--r--lisp/emacs-lisp/eieio-core.el121
-rw-r--r--lisp/emacs-lisp/eieio-datadebug.el2
-rw-r--r--lisp/emacs-lisp/eieio-opt.el99
-rw-r--r--lisp/emacs-lisp/eieio.el71
-rw-r--r--lisp/erc/ChangeLog5
-rw-r--r--lisp/erc/erc-backend.el7
-rw-r--r--lisp/filenotify.el383
-rw-r--r--lisp/files.el71
-rw-r--r--lisp/gnus/ChangeLog27
-rw-r--r--lisp/gnus/gnus-registry.el14
-rw-r--r--lisp/gnus/message.el5
-rw-r--r--lisp/gnus/mm-decode.el2
-rw-r--r--lisp/gnus/nnimap.el29
-rw-r--r--lisp/loadup.el3
-rw-r--r--lisp/net/net-utils.el20
-rw-r--r--lisp/net/shr.el37
-rw-r--r--lisp/net/tramp.el3
-rw-r--r--lisp/outline.el320
-rw-r--r--lisp/progmodes/python.el702
-rw-r--r--lisp/progmodes/sh-script.el7
-rw-r--r--lisp/subr.el33
-rw-r--r--lisp/tar-mode.el115
-rw-r--r--lisp/textmodes/artist.el95
-rw-r--r--lisp/textmodes/reftex.el22
-rw-r--r--m4/time_h.m419
-rw-r--r--src/ChangeLog140
-rw-r--r--src/Makefile.in12
-rw-r--r--src/coding.c12
-rw-r--r--src/coding.h1
-rw-r--r--src/dired.c105
-rw-r--r--src/dispextern.h4
-rw-r--r--src/emacs.c6
-rw-r--r--src/frame.c2
-rw-r--r--src/indent.c7
-rw-r--r--src/insdel.c5
-rw-r--r--src/keyboard.c55
-rw-r--r--src/lisp.mk1
-rw-r--r--src/msdos.c2
-rw-r--r--src/nsterm.m2
-rw-r--r--src/w32.c46
-rw-r--r--src/w32fns.c103
-rw-r--r--src/w32font.c10
-rw-r--r--src/w32font.h4
-rw-r--r--src/w32heap.c4
-rw-r--r--src/w32menu.c47
-rw-r--r--src/w32uniscribe.c4
-rw-r--r--src/xdisp.c40
-rw-r--r--src/xfaces.c32
-rw-r--r--src/xfns.c33
-rw-r--r--test/ChangeLog40
-rw-r--r--test/automated/core-elisp-tests.el7
-rw-r--r--test/automated/eieio-tests.el5
-rw-r--r--test/automated/python-tests.el582
-rw-r--r--test/automated/regexp-tests.el2
95 files changed, 3244 insertions, 1900 deletions
diff --git a/ChangeLog b/ChangeLog
index 09a7968d587..d7fd76cd305 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,12 +1,31 @@
12015-01-28 Paul Eggert <eggert@cs.ucla.edu>
2
3 Merge from gnulib and try to repair bad merge
4 This attempts to repair problems introduced by the bad merge
5 5491fd1098d27b3ba3db054076b9ab60fb3558dc. The easiest way for me
6 to fix the badly-merged gnulib files was to run
7 'admin/merge-gnulib', so I did that, which also imported the
8 following changes:
9 * build-aux/update-copyright, m4/gnulib.m4:
10 Update from gnulib, incorporating:
11 2015-01-15 time: port to MinGW32 3.21
12 2015-01-15 update-copyright: apply to self
13 2015-01-11 update-copyright: recognize groff's \(co marker
14
152015-01-28 Eli Zaretskii <eliz@gnu.org>
16
17 * configure.ac (HAVE_W32): Abort with error message if
18 --without-toolkit-scroll-bars was specified. See
19 http://lists.gnu.org/archive/html/emacs-devel/2015-01/msg00525.html
20 for the details.
21
12015-01-27 Paul Eggert <eggert@cs.ucla.edu> 222015-01-27 Paul Eggert <eggert@cs.ucla.edu>
2 23
3 Port autogen.sh hook creation to Apple Git 24 Port autogen.sh hook creation to private templates
4 * autogen.sh: Do not assume that the hook samples exist. 25 * autogen.sh: Do not assume that the hook samples exist.
5 This ports to git version 1.9.3 (Apple Git-50). 26 This ports to developers who override templatedir in their Git
6 For some reason Apple decided to populate the git hooks directory 27 configuration. The downside is that patch applications won't be
7 in a different way from the way that standard Git does it. 28 checked, but that's better than autogen.sh failing.
8 The downside is that patch applications won't be checked on Apple,
9 but that's better than autogen.sh failing.
10 Problem reported by Sam Steingold in: 29 Problem reported by Sam Steingold in:
11 http://lists.gnu.org/archive/html/emacs-devel/2015-01/msg00898.html 30 http://lists.gnu.org/archive/html/emacs-devel/2015-01/msg00898.html
12 31
diff --git a/admin/ChangeLog b/admin/ChangeLog
index e692ca0dbfd..ec500569860 100644
--- a/admin/ChangeLog
+++ b/admin/ChangeLog
@@ -1,3 +1,7 @@
12015-01-28 Glenn Morris <rgm@gnu.org>
2
3 * update_autogen (commit): Prepend "# " to commit message.
4
12015-01-24 Paul Eggert <eggert@cs.ucla.edu> 52015-01-24 Paul Eggert <eggert@cs.ucla.edu>
2 6
3 Fix a couple of AM_V_GEN bugs 7 Fix a couple of AM_V_GEN bugs
diff --git a/admin/update_autogen b/admin/update_autogen
index 1a84030a5b0..73e8aebe3d8 100755
--- a/admin/update_autogen
+++ b/admin/update_autogen
@@ -228,7 +228,7 @@ commit ()
228 228
229 echo "Committing..." 229 echo "Committing..."
230 230
231 $vcs commit -m "Auto-commit of $type files." "$@" || return $? 231 $vcs commit -m "# Auto-commit of $type files." "$@" || return $?
232 232
233 [ "$vcs" = "git" ] && { 233 [ "$vcs" = "git" ] && {
234 $vcs push || return $? 234 $vcs push || return $?
diff --git a/build-aux/update-copyright b/build-aux/update-copyright
index 308fbf17f9b..4eb4b93ea6c 100755
--- a/build-aux/update-copyright
+++ b/build-aux/update-copyright
@@ -3,7 +3,7 @@ eval '(exit $?0)' && eval 'exec perl -wS -0777 -pi "$0" ${1+"$@"}'
3 if 0; 3 if 0;
4# Update an FSF copyright year list to include the current year. 4# Update an FSF copyright year list to include the current year.
5 5
6my $VERSION = '2013-01-03.09:41'; # UTC 6my $VERSION = '2015-01-15.20:53'; # UTC
7 7
8# Copyright (C) 2009-2015 Free Software Foundation, Inc. 8# Copyright (C) 2009-2015 Free Software Foundation, Inc.
9# 9#
@@ -124,7 +124,7 @@ use strict;
124use warnings; 124use warnings;
125 125
126my $copyright_re = 'Copyright'; 126my $copyright_re = 'Copyright';
127my $circle_c_re = '(?:\([cC]\)|@copyright{}|&copy;)'; 127my $circle_c_re = '(?:\([cC]\)|@copyright{}|\\\\\(co|&copy;)';
128my $holder = $ENV{UPDATE_COPYRIGHT_HOLDER}; 128my $holder = $ENV{UPDATE_COPYRIGHT_HOLDER};
129$holder ||= 'Free Software Foundation, Inc.'; 129$holder ||= 'Free Software Foundation, Inc.';
130my $prefix_max = 5; 130my $prefix_max = 5;
diff --git a/configure.ac b/configure.ac
index 59b16bdb1ed..f4fcf529498 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1940,6 +1940,9 @@ CM_OBJ="cm.o"
1940XARGS_LIMIT= 1940XARGS_LIMIT=
1941if test "${HAVE_W32}" = "yes"; then 1941if test "${HAVE_W32}" = "yes"; then
1942 AC_DEFINE(HAVE_NTGUI, 1, [Define to use native MS Windows GUI.]) 1942 AC_DEFINE(HAVE_NTGUI, 1, [Define to use native MS Windows GUI.])
1943 if test "$with_toolkit_scroll_bars" = "no"; then
1944 AC_MSG_ERROR([Non-toolkit scroll bars are not implemented for w32 build.])
1945 fi
1943 AC_CHECK_TOOL(WINDRES, [windres], 1946 AC_CHECK_TOOL(WINDRES, [windres],
1944 [AC_MSG_ERROR([No resource compiler found.])]) 1947 [AC_MSG_ERROR([No resource compiler found.])])
1945 W32_OBJ="w32fns.o w32menu.o w32reg.o w32font.o w32term.o" 1948 W32_OBJ="w32fns.o w32menu.o w32reg.o w32font.o w32term.o"
diff --git a/doc/emacs/ChangeLog b/doc/emacs/ChangeLog
index a90c58725f8..1287733b129 100644
--- a/doc/emacs/ChangeLog
+++ b/doc/emacs/ChangeLog
@@ -1,3 +1,15 @@
12015-01-28 Eli Zaretskii <eliz@gnu.org>
2
3 * cmdargs.texi (Action Arguments): Clarify into which buffer
4 '--insert' inserts. (Bug#19694)
5
6 * programs.texi (Custom C Indent): Fix a typo. (Bug#19647)
7
82015-01-27 Ivan Shmakov <ivan@siamics.net>
9
10 * files.texi (File Archives): Document "I" for tar-new-entry.
11 (Bug#19274)
12
12014-12-31 Paul Eggert <eggert@cs.ucla.edu> 132014-12-31 Paul Eggert <eggert@cs.ucla.edu>
2 14
3 Less 'make' chatter for Emacs doc 15 Less 'make' chatter for Emacs doc
diff --git a/doc/emacs/cmdargs.texi b/doc/emacs/cmdargs.texi
index f724f77e230..42c8e33d5c7 100644
--- a/doc/emacs/cmdargs.texi
+++ b/doc/emacs/cmdargs.texi
@@ -165,9 +165,12 @@ Evaluate Lisp expression @var{expression}.
165@item --insert=@var{file} 165@item --insert=@var{file}
166@opindex --insert 166@opindex --insert
167@cindex insert file contents, command-line argument 167@cindex insert file contents, command-line argument
168Insert the contents of @var{file} into the @file{*scratch*} buffer 168Insert the contents of @var{file} into the buffer that is current when
169(@pxref{Lisp Interaction}). This is like what @kbd{M-x insert-file} 169this command-line argument is processed. Usually, this is the
170does (@pxref{Misc File Ops}). 170@file{*scratch*} buffer (@pxref{Lisp Interaction}), but if arguments
171earlier on the command line visit files or switch buffers, that might
172be a different buffer. The effect of this command-line argument is
173like what @kbd{M-x insert-file} does (@pxref{Misc File Ops}).
171 174
172@item --kill 175@item --kill
173@opindex --kill 176@opindex --kill
diff --git a/doc/emacs/files.texi b/doc/emacs/files.texi
index 196c6bb0092..b12b28f9c17 100644
--- a/doc/emacs/files.texi
+++ b/doc/emacs/files.texi
@@ -1689,6 +1689,13 @@ likewise. @kbd{v} extracts a file into a buffer in View mode
1689another window, so you could edit the file and operate on the archive 1689another window, so you could edit the file and operate on the archive
1690simultaneously. 1690simultaneously.
1691 1691
1692 The @kbd{I} key adds a new (regular) file to the archive. The file
1693is initially empty, but can readily be edited using the commands
1694above. The command inserts the new file before the current one, so
1695that using it on the topmost line of the Tar buffer makes the new file
1696the first one in the archive, and using it at the end of the buffer
1697makes it the last one.
1698
1692 @kbd{d} marks a file for deletion when you later use @kbd{x}, and 1699 @kbd{d} marks a file for deletion when you later use @kbd{x}, and
1693@kbd{u} unmarks a file, as in Dired. @kbd{C} copies a file from the 1700@kbd{u} unmarks a file, as in Dired. @kbd{C} copies a file from the
1694archive to disk and @kbd{R} renames a file within the archive. 1701archive to disk and @kbd{R} renames a file within the archive.
diff --git a/doc/emacs/programs.texi b/doc/emacs/programs.texi
index 8f6111dfa24..609392f6bb7 100644
--- a/doc/emacs/programs.texi
+++ b/doc/emacs/programs.texi
@@ -546,7 +546,7 @@ your selected @dfn{style} with the syntactic construct and adds this
546onto the indentation of the @dfn{anchor statement}. 546onto the indentation of the @dfn{anchor statement}.
547 547
548@table @kbd 548@table @kbd
549@item C-c . @key{RET} @var{style} @key{RET} 549@item C-c . @var{style} @key{RET}
550Select a predefined style @var{style} (@code{c-set-style}). 550Select a predefined style @var{style} (@code{c-set-style}).
551@end table 551@end table
552 552
diff --git a/doc/lispref/ChangeLog b/doc/lispref/ChangeLog
index 4c0c116ba5a..2cde2fb6f48 100644
--- a/doc/lispref/ChangeLog
+++ b/doc/lispref/ChangeLog
@@ -1,3 +1,26 @@
12015-01-28 Eli Zaretskii <eliz@gnu.org>
2
3 * searching.texi (Regexp Search): Add a cross-reference to "Syntax
4 of Regexps". (Bug#19668)
5
62015-01-28 Daniel Koning <dk@danielkoning.com> (tiny change)
7
8 * commands.texi (Drag Events, Motion Events, Event Examples)
9 (Accessing Mouse): Describe actual range of values that mouse
10 position objects can have.
11
122015-01-28 Eli Zaretskii <eliz@gnu.org>
13
14 * display.texi (Manipulating Buttons): Explain more about the
15 'action' property. (Bug#19628)
16
17 * text.texi (Clickable Text): Improve indexing. (Bug#19629)
18
19 * variables.texi (Creating Buffer-Local): Improve indexing. (Bug#19608)
20
21 * frames.texi (Display Feature Testing): Make the description of
22 x-server-version and x-server-vendor less X-specific. (Bug#19502)
23
12015-01-15 Eli Zaretskii <eliz@gnu.org> 242015-01-15 Eli Zaretskii <eliz@gnu.org>
2 25
3 * streams.texi (Input Functions): Document 'set-binary-mode'. 26 * streams.texi (Input Functions): Document 'set-binary-mode'.
diff --git a/doc/lispref/commands.texi b/doc/lispref/commands.texi
index 36c74450ed4..6fdc8e2ec79 100644
--- a/doc/lispref/commands.texi
+++ b/doc/lispref/commands.texi
@@ -1489,8 +1489,10 @@ prefix @samp{drag-}. For example, dragging the mouse with button 2
1489held down generates a @code{drag-mouse-2} event. The second and third 1489held down generates a @code{drag-mouse-2} event. The second and third
1490elements of the event give the starting and ending position of the 1490elements of the event give the starting and ending position of the
1491drag, as mouse position lists (@pxref{Click Events}). You can access 1491drag, as mouse position lists (@pxref{Click Events}). You can access
1492the second element of any mouse event in the same way, with no need to 1492the second element of any mouse event in the same way. However, the
1493distinguish drag events from others. 1493drag event may end outside the boundaries of the frame that was
1494initially selected. In that case, the third element's position list
1495contains that frame in place of a window.
1494 1496
1495The @samp{drag-} prefix follows the modifier key prefixes such as 1497The @samp{drag-} prefix follows the modifier key prefixes such as
1496@samp{C-} and @samp{M-}. 1498@samp{C-} and @samp{M-}.
@@ -1635,7 +1637,10 @@ represented by lists that look like this:
1635 1637
1636@noindent 1638@noindent
1637@var{position} is a mouse position list (@pxref{Click Events}), 1639@var{position} is a mouse position list (@pxref{Click Events}),
1638specifying the current position of the mouse cursor. 1640specifying the current position of the mouse cursor. As with the
1641end-position of a drag event, this position list may represent a
1642location outside the boundaries of the initially selected frame, in
1643which case the list contains that frame in place of a window.
1639 1644
1640The special form @code{track-mouse} enables generation of motion 1645The special form @code{track-mouse} enables generation of motion
1641events within its body. Outside of @code{track-mouse} forms, Emacs 1646events within its body. Outside of @code{track-mouse} forms, Emacs
@@ -1850,6 +1855,14 @@ into another window. That produces a pair of events like these:
1850 -453816)) 1855 -453816))
1851@end smallexample 1856@end smallexample
1852 1857
1858The frame with input focus might not take up the entire screen, and
1859the user might move the mouse outside the scope of the frame. Inside
1860the @code{track-mouse} special form, that produces an event like this:
1861
1862@smallexample
1863(mouse-movement (#<frame *ielm* 0x102849a30> nil (563 . 205) 532301936))
1864@end smallexample
1865
1853To handle a SIGUSR1 signal, define an interactive function, and 1866To handle a SIGUSR1 signal, define an interactive function, and
1854bind it to the @code{signal usr1} event sequence: 1867bind it to the @code{signal usr1} event sequence:
1855 1868
@@ -2014,7 +2027,9 @@ Events}); and @code{nil} otherwise.
2014various parts of it: 2027various parts of it:
2015 2028
2016@defun posn-window position 2029@defun posn-window position
2017Return the window that @var{position} is in. 2030Return the window that @var{position} is in. If @var{position}
2031represents a location outside the frame where the event was initiated,
2032return that frame instead.
2018@end defun 2033@end defun
2019 2034
2020@defun posn-area position 2035@defun posn-area position
diff --git a/doc/lispref/display.texi b/doc/lispref/display.texi
index 1b7f21da282..b09b82a6724 100644
--- a/doc/lispref/display.texi
+++ b/doc/lispref/display.texi
@@ -5735,10 +5735,12 @@ Set @var{button}'s @var{prop} property to @var{val}.
5735@end defun 5735@end defun
5736 5736
5737@defun button-activate button &optional use-mouse-action 5737@defun button-activate button &optional use-mouse-action
5738Call @var{button}'s @code{action} property (i.e., invoke it). If 5738Call @var{button}'s @code{action} property (i.e., invoke the function
5739@var{use-mouse-action} is non-@code{nil}, try to invoke the button's 5739that is the value of that property, passing it the single argument
5740@code{mouse-action} property instead of @code{action}; if the button 5740@var{button}). If @var{use-mouse-action} is non-@code{nil}, try to
5741has no @code{mouse-action} property, use @code{action} as normal. 5741invoke the button's @code{mouse-action} property instead of
5742@code{action}; if the button has no @code{mouse-action} property, use
5743@code{action} as normal.
5742@end defun 5744@end defun
5743 5745
5744@defun button-label button 5746@defun button-label button
diff --git a/doc/lispref/frames.texi b/doc/lispref/frames.texi
index 663207c5253..a6f4081532d 100644
--- a/doc/lispref/frames.texi
+++ b/doc/lispref/frames.texi
@@ -2782,20 +2782,26 @@ colors).
2782This function returns the number of color cells the screen supports. 2782This function returns the number of color cells the screen supports.
2783@end defun 2783@end defun
2784 2784
2785 These functions obtain additional information specifically 2785 These functions obtain additional information about the window
2786about X displays. 2786system in use where Emacs shows the specified @var{display}. (Their
2787names begin with @code{x-} for historical reasons.)
2787 2788
2788@defun x-server-version &optional display 2789@defun x-server-version &optional display
2789This function returns the list of version numbers of the X server 2790This function returns the list of version numbers of the GUI window
2790running the display. The value is a list of three integers: the major 2791system running on @var{display}, such as the X server on GNU and Unix
2791and minor version numbers of the X protocol, and the 2792systems. The value is a list of three integers: the major and minor
2792distributor-specific release number of the X server software itself. 2793version numbers of the protocol, and the distributor-specific release
2794number of the window system software itself. On GNU and Unix systems,
2795these are normally the version of the X protocol and the
2796distributor-specific release number of the X server software. On
2797MS-Windows, this is the version of the Windows OS.
2793@end defun 2798@end defun
2794 2799
2795@defun x-server-vendor &optional display 2800@defun x-server-vendor &optional display
2796This function returns the ``vendor'' that provided the X server 2801This function returns the ``vendor'' that provided the window system
2797software (as a string). Really this means whoever distributes the X 2802software (as a string). On GNU and Unix systems this really means
2798server. 2803whoever distributes the X server. On MS-Windows this is the vendor ID
2804string of the Windows OS (Microsoft).
2799 2805
2800When the developers of X labeled software distributors as 2806When the developers of X labeled software distributors as
2801``vendors'', they showed their false assumption that no system could 2807``vendors'', they showed their false assumption that no system could
diff --git a/doc/lispref/searching.texi b/doc/lispref/searching.texi
index 2032b151d07..61fac78e4a8 100644
--- a/doc/lispref/searching.texi
+++ b/doc/lispref/searching.texi
@@ -988,10 +988,11 @@ list of characters @var{chars}.
988@cindex searching for regexp 988@cindex searching for regexp
989 989
990 In GNU Emacs, you can search for the next match for a regular 990 In GNU Emacs, you can search for the next match for a regular
991expression either incrementally or not. For incremental search 991expression (@pxref{Syntax of Regexps}) either incrementally or not.
992commands, see @ref{Regexp Search, , Regular Expression Search, emacs, 992For incremental search commands, see @ref{Regexp Search, , Regular
993The GNU Emacs Manual}. Here we describe only the search functions 993Expression Search, emacs, The GNU Emacs Manual}. Here we describe
994useful in programs. The principal one is @code{re-search-forward}. 994only the search functions useful in programs. The principal one is
995@code{re-search-forward}.
995 996
996 These search functions convert the regular expression to multibyte if 997 These search functions convert the regular expression to multibyte if
997the buffer is multibyte; they convert the regular expression to unibyte 998the buffer is multibyte; they convert the regular expression to unibyte
diff --git a/doc/lispref/text.texi b/doc/lispref/text.texi
index 1b8897f59e7..a7cfb22e889 100644
--- a/doc/lispref/text.texi
+++ b/doc/lispref/text.texi
@@ -3731,6 +3731,7 @@ clicks on the link quickly without moving the mouse. This behavior is
3731controlled by the user option @code{mouse-1-click-follows-link}. 3731controlled by the user option @code{mouse-1-click-follows-link}.
3732@xref{Mouse References,,, emacs, The GNU Emacs Manual}. 3732@xref{Mouse References,,, emacs, The GNU Emacs Manual}.
3733 3733
3734@cindex follow-link (text or overlay property)
3734 To set up the link so that it obeys 3735 To set up the link so that it obeys
3735@code{mouse-1-click-follows-link}, you must either (1) apply a 3736@code{mouse-1-click-follows-link}, you must either (1) apply a
3736@code{follow-link} text or overlay property to the link text, or (2) 3737@code{follow-link} text or overlay property to the link text, or (2)
diff --git a/doc/lispref/variables.texi b/doc/lispref/variables.texi
index 5d766e4ffa6..27bc0610959 100644
--- a/doc/lispref/variables.texi
+++ b/doc/lispref/variables.texi
@@ -1403,6 +1403,7 @@ buffer-local variable interactively, just as it is useful to create
1403buffer-local variables interactively. 1403buffer-local variables interactively.
1404@end deffn 1404@end deffn
1405 1405
1406@cindex local variables, killed by major mode
1406@defun kill-all-local-variables 1407@defun kill-all-local-variables
1407This function eliminates all the buffer-local variable bindings of the 1408This function eliminates all the buffer-local variable bindings of the
1408current buffer except for variables marked as ``permanent'' and local 1409current buffer except for variables marked as ``permanent'' and local
diff --git a/doc/misc/eww.texi b/doc/misc/eww.texi
index 8c1865d78a5..fd9f6f543e0 100644
--- a/doc/misc/eww.texi
+++ b/doc/misc/eww.texi
@@ -8,7 +8,7 @@
8@copying 8@copying
9This file documents the GNU Emacs Web Wowser (EWW) package. 9This file documents the GNU Emacs Web Wowser (EWW) package.
10 10
11Copyright @copyright{} 2014-2015 Free Software Foundation, Inc. 11Copyright @copyright{} 2014--2015 Free Software Foundation, Inc.
12 12
13@quotation 13@quotation
14Permission is granted to copy, distribute and/or modify this document 14Permission is granted to copy, distribute and/or modify this document
diff --git a/doc/misc/info.texi b/doc/misc/info.texi
index 0e2e64f2356..759956d21dc 100644
--- a/doc/misc/info.texi
+++ b/doc/misc/info.texi
@@ -15,7 +15,7 @@
15This file describes how to use Info, the menu-driven GNU 15This file describes how to use Info, the menu-driven GNU
16documentation system. 16documentation system.
17 17
18Copyright @copyright{} 1989, 1992, 1996--2014 Free Software Foundation, Inc. 18Copyright @copyright{} 1989, 1992, 1996--2015 Free Software Foundation, Inc.
19 19
20@quotation 20@quotation
21Permission is granted to copy, distribute and/or modify this document 21Permission is granted to copy, distribute and/or modify this document
diff --git a/etc/ChangeLog b/etc/ChangeLog
index b31e8a99383..8bc1afbef52 100644
--- a/etc/ChangeLog
+++ b/etc/ChangeLog
@@ -1,3 +1,18 @@
12015-01-29 Francesc Rocher <francesc.rocher@gmail.com>
2
3 * images/splash.svg, images/splash.png:
4 * images/splash.pbm, images/splash.xpm, images/README:
5 Splash images refurbished.
6
72015-01-28 Eli Zaretskii <eliz@gnu.org>
8
9 * tutorials/TUTORIAL.he: Use u+05f4 HEBREW PUNCTUATION GERSHAYIM
10 instead of u+0022 QUOTATION MARK in Hebrew acronyms.
11
122015-01-27 Ivan Shmakov <ivan@siamics.net>
13
14 * NEWS: Mention the new tar-new-entry command. (Bug#19274)
15
12015-01-27 Thomas Fitzsimmons <fitzsim@fitzsim.org> 162015-01-27 Thomas Fitzsimmons <fitzsim@fitzsim.org>
2 17
3 * NEWS: Document EUDC improvements. 18 * NEWS: Document EUDC improvements.
diff --git a/etc/NEWS b/etc/NEWS
index 755277854b7..4b0a268d8f2 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -527,6 +527,10 @@ to avoid interfering with the kill ring.
527allow overriding the regular expression that recognizes the ldapsearch 527allow overriding the regular expression that recognizes the ldapsearch
528command line's password prompt. 528command line's password prompt.
529 529
530+++
531** tar-mode: new `tar-new-entry' command, allowing for new members to
532be added to the archive.
533
530** Obsolete packages 534** Obsolete packages
531 535
532--- 536---
diff --git a/etc/images/README b/etc/images/README
index 486aca94392..005754b0a9e 100644
--- a/etc/images/README
+++ b/etc/images/README
@@ -25,12 +25,12 @@ File: mh-logo.xpm
25 Author: Satyaki Das 25 Author: Satyaki Das
26 Copyright (C) 2003-2015 Free Software Foundation, Inc. 26 Copyright (C) 2003-2015 Free Software Foundation, Inc.
27 27
28Files: splash.pbm, splash.xpm, gnus.pbm 28Files: gnus.pbm
29 Author: Luis Fernandes <elf@ee.ryerson.ca> 29 Author: Luis Fernandes <elf@ee.ryerson.ca>
30 Copyright (C) 2001-2015 Free Software Foundation, Inc. 30 Copyright (C) 2001-2015 Free Software Foundation, Inc.
31 31
32Files: splash.png, splash.svg 32Files: splash.png, splash.svg, splash.pbm, splash.xpm
33 Author: Francesc Rocher <rocher@member.fsf.org> 33 Author: Francesc Rocher <francesc.rocher@gmail.com>
34 Copyright (C) 2008-2015 Free Software Foundation, Inc. 34 Copyright (C) 2008-2015 Free Software Foundation, Inc.
35 35
36Files: checked.xpm, unchecked.xpm 36Files: checked.xpm, unchecked.xpm
diff --git a/etc/images/splash.pbm b/etc/images/splash.pbm
index 7f3589512b0..39b69a5a5d5 100644
--- a/etc/images/splash.pbm
+++ b/etc/images/splash.pbm
Binary files differ
diff --git a/etc/images/splash.png b/etc/images/splash.png
index a5331f1dc5a..9d0eb37c8ac 100644
--- a/etc/images/splash.png
+++ b/etc/images/splash.png
Binary files differ
diff --git a/etc/images/splash.svg b/etc/images/splash.svg
index bdd80bfe17e..54865f590bc 100644
--- a/etc/images/splash.svg
+++ b/etc/images/splash.svg
@@ -3,7 +3,7 @@
3 3
4 Copyright (C) 2008-2015 Free Software Foundation, Inc. 4 Copyright (C) 2008-2015 Free Software Foundation, Inc.
5 5
6 Author: Francesc Rocher <f.rocher@members.fsf.org> 6 Author: Francesc Rocher <francesc.rocher@gmail.com>
7 Based on the original work by Luis Fernandes <elf@ee.ryerson.ca> 7 Based on the original work by Luis Fernandes <elf@ee.ryerson.ca>
8 8
9 This file is part of GNU Emacs. 9 This file is part of GNU Emacs.
@@ -29,12 +29,39 @@
29 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 29 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
30 xmlns:svg="http://www.w3.org/2000/svg" 30 xmlns:svg="http://www.w3.org/2000/svg"
31 xmlns="http://www.w3.org/2000/svg" 31 xmlns="http://www.w3.org/2000/svg"
32 xmlns:xlink="http://www.w3.org/1999/xlink" 32 xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
33 xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
33 version="1.0" 34 version="1.0"
34 width="275.96875" 35 width="333"
35 height="190.40625" 36 height="233"
36 id="svg6706" 37 id="svg6706"
37 style="display:inline"> 38 style="display:inline"
39 inkscape:version="0.48.4 r9939"
40 sodipodi:docname="splash.svg"
41 inkscape:export-filename="/opt/src/emacs/etc/images/splash.png"
42 inkscape:export-xdpi="90"
43 inkscape:export-ydpi="90">
44 <sodipodi:namedview
45 pagecolor="#ffffff"
46 bordercolor="#666666"
47 borderopacity="1"
48 objecttolerance="10"
49 gridtolerance="10"
50 guidetolerance="10"
51 inkscape:pageopacity="1"
52 inkscape:pageshadow="2"
53 inkscape:window-width="1920"
54 inkscape:window-height="1004"
55 id="namedview3107"
56 showgrid="false"
57 inkscape:showpageshadow="false"
58 inkscape:zoom="1"
59 inkscape:cx="-49.78722"
60 inkscape:cy="105.19797"
61 inkscape:window-x="0"
62 inkscape:window-y="24"
63 inkscape:window-maximized="1"
64 inkscape:current-layer="layer1" />
38 <metadata 65 <metadata
39 id="metadata2314"> 66 id="metadata2314">
40 <rdf:RDF> 67 <rdf:RDF>
@@ -43,7 +70,7 @@
43 <dc:format>image/svg+xml</dc:format> 70 <dc:format>image/svg+xml</dc:format>
44 <dc:type 71 <dc:type
45 rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> 72 rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
46 <dc:title></dc:title> 73 <dc:title />
47 <dc:date>2008/06/28</dc:date> 74 <dc:date>2008/06/28</dc:date>
48 <dc:creator> 75 <dc:creator>
49 <cc:Agent> 76 <cc:Agent>
@@ -67,71 +94,28 @@
67 </rdf:RDF> 94 </rdf:RDF>
68 </metadata> 95 </metadata>
69 <defs 96 <defs
70 id="defs6709"> 97 id="defs6709" />
71 <linearGradient
72 id="linearGradient2550">
73 <stop
74 id="stop2552"
75 style="stop-color:#4c94f1;stop-opacity:0.78431374"
76 offset="0" />
77 <stop
78 id="stop2554"
79 style="stop-color:#4c94f1;stop-opacity:0.78431374"
80 offset="1" />
81 </linearGradient>
82 <linearGradient
83 id="linearGradient7896">
84 <stop
85 id="stop7898"
86 style="stop-color:#fc644b;stop-opacity:0.78431374"
87 offset="0" />
88 <stop
89 id="stop7900"
90 style="stop-color:#fc644b;stop-opacity:0.78431374"
91 offset="1" />
92 </linearGradient>
93 <linearGradient
94 xlink:href="#linearGradient2550"
95 id="linearGradient2556"
96 x1="147.62743"
97 y1="92.09787"
98 x2="145.82028"
99 y2="203.60176"
100 gradientUnits="userSpaceOnUse" />
101 <linearGradient
102 xlink:href="#linearGradient7896"
103 id="linearGradient2425"
104 gradientUnits="userSpaceOnUse"
105 gradientTransform="translate(-2.4002643e-7,-2.6398943e-6)"
106 x1="147.52159"
107 y1="0.92070419"
108 x2="147.12886"
109 y2="211.99936" />
110 </defs>
111 <g 98 <g
112 transform="translate(5.34375,-11.4375)" 99 inkscape:groupmode="layer"
113 id="layer2" 100 id="layer1"
101 inkscape:label="emacs"
114 style="display:inline"> 102 style="display:inline">
115 <path 103 <g
116 id="bg-emacs" 104 style="display:inline"
117 d="M -0.54734668,196.72853 C -10.238062,181.78405 5.3965305,167.92976 14.809201,161.97512 c 6.963497,-4.40524 14.224571,-9.82272 13.070957,-9.82483 -0.996579,-0.002 -3.28511,-0.79177 -5.085617,-1.75545 -6.217876,-3.328 -7.955628,-16.0503 7.055337,-28.37575 16.709358,-12.01621 42.570706,-26.817295 64.900729,-20.35237 3.972323,1.58882 2.904483,4.42259 -3.766368,9.99493 -5.675178,4.74062 -17.792772,11.85728 -18.753492,11.01391 -0.233326,-0.20481 2.490068,-2.19795 6.051979,-4.42919 3.551812,-2.45188 6.827,-5.57228 6.234589,-9.02517 -1.977492,-3.21848 -14.566202,0.87624 -19.657994,3.11812 -8.980399,3.95401 -30.419617,17.3969 -29.389287,24.77996 0.719552,5.15612 9.095912,7.16542 19.107524,2.72826 7.005023,-3.10464 12.660323,-6.60409 12.285323,-4.56715 -0.365454,1.98509 -12.574667,10.22701 -19.359801,12.99119 -10.773868,4.38916 -18.049435,9.35351 -26.510163,16.40859 -7.801376,6.50528 -6.794788,9.58593 -6.794788,14.18989 0,3.11466 2.974668,5.51843 6.829021,5.51843 7.964514,0 8.895804,0.12074 32.270578,-16.56369 5.162282,-3.68473 10.228089,-7.76323 13.653652,-9.77045 4.326017,-2.53484 9.463124,-4.13198 8.976988,-1.65526 -3.779364,7.61077 -5.74585,10.67934 -9.167556,16.15546 8.11118,-6.33235 15.840916,-14.71763 24.306604,-15.7298 2.101063,-0.25121 7.741174,-0.49516 8.636184,0.99596 0.66736,1.11183 -0.45512,5.1162 -2.21368,8.92266 -0.53908,1.16685 1.05142,0.38368 4.67533,-2.30213 7.4413,-5.51505 14.07911,-8.75072 17.95157,-8.75072 4.57712,0 4.83279,1.74832 1.24097,8.48622 -3.75741,7.04855 -6.75962,17.21422 -4.65148,19.88378 1.46622,1.85669 7.96734,-2.91147 10.3276,-4.31865 2.42293,-1.44454 6.05649,-3.67201 7.44149,-4.72955 10.37298,-7.92039 39.1617,-23.15505 40.99851,-21.53603 0.82449,0.72672 -1.6928,2.43145 -10.4509,7.07749 -14.25554,7.56231 -22.59862,14.9854 -22.60932,20.11619 -0.006,2.71011 4.1743,2.15203 7.26381,1.4275 4.40695,-1.03349 12.41622,-3.9676 -0.1736,3.14023 -13.16001,7.42973 -22.48474,6.17812 -16.63437,-3.95665 l 3.73574,-6.16441 -9.13253,6.55379 c -13.1916,9.46671 -19.35595,10.10807 -22.76505,7.11544 -2.6121,-2.29301 -1.99116,-8.56165 1.43897,-14.5266 2.74703,-4.77707 3.88176,-8.84229 2.46817,-8.84229 -2.38604,0 -7.35931,4.53611 -13.269938,10.69747 -9.974903,10.39803 -8.541011,15.10079 -10.591215,15.36937 -1.2597,0.16503 -6.977484,-1.59412 -4.555892,-8.64067 1.80805,-5.26122 4.692881,-8.68747 6.822262,-11.55279 3.866732,-5.2031 1.480467,-5.97342 -3.790272,-3.77097 -3.05613,1.27704 -5.350157,4.83814 -17.152826,15.01371 -13.804895,11.90177 -18.199091,17.31988 -20.790434,11.99663 -1.273249,-2.61557 1.017602,-5.97434 3.23361,-9.57032 4.367498,-7.21552 10.687821,-13.92473 8.632844,-16.40082 -2.050191,0.66573 -5.701417,3.94706 -7.917424,5.72051 -2.216008,1.77344 -5.216905,3.98662 -6.668674,4.91816 -1.451757,0.93154 -5.757863,3.9162 -9.569125,6.63254 -3.811251,2.71637 -10.546273,6.79489 -14.966706,9.06335 -9.584043,4.91833 -13.8359278,5.33836 -18.57838668,1.83533 z M 159.75643,187.9147 c -4.88506,-3.00364 -1.44968,-15.28517 5.948,-21.2642 3.32796,-2.68976 12.33843,-8.3073 13.32481,-8.3073 0.27463,0 -1.05354,2.61529 -2.9515,5.81174 -5.51025,9.28008 -4.30612,16.29397 2.79731,16.29397 5.95677,0 10.60291,-1.935 15.24759,-9.21089 3.95762,-6.19961 10.07679,-10.04817 15.75277,-13.07984 4.88528,-2.60934 15.49103,-5.23799 19.83723,-4.00272 6.01532,1.70966 5.07061,0.66399 -3.766,4.03459 -9.35359,3.5678 -12.15223,5.23437 -15.80579,9.41222 -4.62835,5.29254 -5.17979,8.5948 -1.91397,11.46168 2.05902,1.80749 3.56776,2.26807 7.41531,2.26374 2.65669,-0.003 5.81168,-1.7253 7.33518,-2.42296 1.52351,-0.69765 3.03519,0.21321 3.03519,0.61971 -5.88638,3.94569 -11.44839,6.45882 -14.00234,7.27145 -2.61375,0.96599 -7.35132,2.03318 -10.23523,1.93803 -5.03631,0.0339 -9.16147,-1.48631 -10.57379,-3.37846 -0.79608,-1.43217 -1.3268,-2.70381 -0.96262,-3.97903 1.0679,-3.73939 0.16517,-2.52343 -4.28527,0.23044 -13.102,8.10733 -21.40719,9.25285 -26.19688,6.30784 z m 75.29251,0.53861 c -1.38501,-0.41487 -3.99134,-0.79396 -5.79185,-0.84243 -5.99934,-0.16153 -3.6372,-2.26466 5.12716,-4.56493 2.24719,-0.58979 2.74693,-0.49039 2.32997,0.46346 -1.0714,2.45099 8.09297,3.14024 13.72804,1.0325 5.4798,-2.04969 7.70684,-5.31293 8.2153,-10.06119 0.16756,-8.34719 -12.6158,-6.31988 -18.32043,-6.36109 -12.98146,-0.0572 -14.34396,-1.01124 -7.14295,-5.00172 9.56822,-5.3023 20.88185,-11.1336 25.8426,-10.44585 5.86061,0.8125 5.42599,3.39743 -0.5575,3.43312 -3.92889,0.0234 -13.80136,5.14348 -14.97622,6.81223 -1.22979,1.74676 2.12319,2.47254 11.4854,2.48607 8.58743,0.0125 9.56792,0.19334 11.8355,2.18392 3.81332,3.3475 3.46341,8.67923 -0.80123,12.20836 -7.5132,6.21743 -19.30064,10.28748 -30.97375,8.65755 z" 105 id="g3171"
118 style="opacity:1;fill:#000000;display:inline" /> 106 transform="translate(-0.3199963,-16.05214)">
119 <path 107 <path
120 id="bg-gnu" 108 inkscape:connector-curvature="0"
121 d="m 55.834396,197.41294 c 2.448659,-7.38073 7.446723,-16.72109 12.277833,-22.94475 5.710592,-7.35667 7.378339,-9.3856 28.689891,-34.90319 16.87202,-20.20188 19.22296,-23.17964 22.55476,-28.56842 1.5428,-2.49527 3.17766,-4.53686 3.63304,-4.53686 1.18186,0 1.10043,0.30992 -1.63307,6.21531 -1.35357,2.92423 -2.46105,5.64532 -2.46105,6.04685 0,0.40153 -2.97647,4.90375 -6.6144,10.00493 -8.98843,12.60381 -10.76025,14.97182 -13.0823,17.48445 -1.0981,1.18822 -3.8535,4.49366 -6.123108,7.34539 -2.269606,2.85173 -4.587188,5.62332 -5.150194,6.15909 -0.562997,0.53575 -2.795585,3.19769 -4.961309,5.91542 -6.691216,8.39667 -16.095209,19.83397 -17.431654,21.20066 -0.699773,0.71561 -3.044271,3.91702 -5.209995,7.11426 -4.16128,6.14322 -5.795033,7.40513 -4.488444,3.46686 z m 66.481544,-23.7645 c 0.22279,-0.5941 1.5292,-4.28446 2.90315,-8.20081 3.44555,-9.82127 13.66236,-27.15831 19.73886,-33.49506 l 2.48602,-2.59251 2.25191,2.37646 c 2.67739,2.82544 3.88298,2.92759 8.02572,0.68 3.08741,-1.67502 7.69643,-8.22076 20.10229,-28.54928 4.55053,-7.456586 5.01229,-7.939498 5.0346,-5.26516 0.0415,4.9808 -22.21528,41.2544 -29.34472,47.82522 -4.11732,3.7947 -6.18823,4.04757 -8.84718,1.0802 -1.06473,-1.18822 -2.3151,-2.15972 -2.77861,-2.15886 -1.62142,0.003 -12.08302,16.59943 -16.47702,26.13939 -0.82094,1.78235 -1.9443,3.24062 -2.49635,3.24062 -0.55207,0 -0.82147,-0.48609 -0.59867,-1.08021 z m 84.19319,-24.88787 c 0,-7.49007 7.66313,-38.06798 12.33356,-49.21415 3.04458,-7.266009 7.33463,-20.847085 8.32578,-26.356986 0.42748,-2.376449 1.49075,-7.626245 2.36285,-11.666209 0.87207,-4.039964 1.5862,-11.563 1.58694,-16.717855 0.002,-10.935036 -1.20271,-13.589976 -7.10476,-15.663026 -7.62736,-2.67905 -10.16765,-1.47291 -13.00198,6.173428 -1.74243,4.700723 -3.72352,6.856253 -5.44369,5.923006 -1.89626,-1.028794 -1.05403,-4.387566 2.90016,-11.565454 8.13973,-14.77576 14.55936,-18.45654 24.45815,-14.02345 5.65324,2.53175 9.02208,8.60392 9.02208,16.2618 0,9.333563 -7.01946,35.141105 -14.28285,52.511886 -4.47563,10.703728 -11.5668,35.30103 -14.85507,51.5282 -2.1002,10.36421 -3.15113,13.73222 -4.51891,14.48205 -1.5746,0.86323 -1.78226,0.66827 -1.78226,-1.67324 z M 110.03525,94.607887 c -7.1e-4,-8.464568 -0.25892,-9.796146 -2.81265,-14.505144 -2.66535,-4.914782 -7.28206,-9.937882 -9.13385,-9.937882 -0.4676,0 -0.85017,-0.490243 -0.85017,-1.08943 0,-1.557732 8.70129,-12.737188 9.91372,-12.737188 1.73907,0 7.4566,5.456815 9.50728,9.073719 2.60567,4.595744 3.35771,11.337596 2.2795,20.434785 -0.9601,8.100583 -4.13995,15.843563 -7.07234,17.221213 -1.73206,0.81373 -1.83075,0.3578 -1.83149,-8.460073 z m -69.268036,2.283327 c -3.977291,-2.746359 -3.44557,-6.261434 2.439644,-16.127646 4.970535,-8.33282 10.094017,-15.38029 21.43897,-29.489855 6.601357,-8.209992 8.637667,-10.20312 9.579511,-9.376336 0.799394,0.701746 -2.618999,5.390153 -11.474198,15.737111 -16.940162,19.79395 -18.734332,27.221155 -6.575701,27.221155 3.304542,0 6.058837,-0.617002 8.461092,-1.895408 6.360466,-3.38485 18.203678,-11.286415 23.507089,-15.683501 2.848527,-2.361722 5.456729,-4.05036 5.795999,-3.752528 1.04524,0.917548 -4.907057,10.147668 -7.816978,12.121655 -1.511589,1.025416 -5.874113,4.197632 -9.69449,7.049372 -3.820388,2.85174 -8.563965,6.157166 -10.541309,7.345392 -1.977334,1.188224 -4.400156,2.796969 -5.384044,3.574986 -2.248219,1.777799 -11.920783,5.066639 -14.901091,5.066639 -1.232383,0 -3.407898,-0.80597 -4.834494,-1.791036 z M 167.35901,63.639316 c -4.35468,-2.677534 -4.37646,-3.982873 -0.1931,-11.57676 l 3.90554,-7.089571 2.54785,2.658058 c 3.02363,3.154415 6.72598,3.451472 12.70923,1.019721 4.8079,-1.95406 8.30397,-5.194275 11.75211,-10.892036 l 2.61484,-4.320814 -0.49413,3.334678 c -0.73833,4.982504 -10.09007,19.207325 -14.90376,22.669936 -7.26038,5.222576 -13.78694,6.749482 -17.93858,4.196788 z m -32.7125,-5.536491 c -1.89501,-0.888629 -8.4802,-6.332726 -14.63377,-12.09799 -11.53272,-10.804983 -19.30559,-15.591501 -25.31921,-15.591501 -4.300218,0 -9.890682,3.33457 -11.790334,7.032628 -2.74495,5.343604 -3.950075,5.711001 -6.196765,1.88915 -3.156098,-5.368868 -12.746669,-12.378428 -16.936324,-12.378428 -0.628489,0 -6.188212,4.49121 -12.354949,9.980456 -11.483232,10.221671 -16.718945,13.296629 -22.701995,13.33298 -3.490867,0.0212 -7.744061,-2.699113 -10.336357,-6.611093 -1.586521,-2.394192 -1.546221,-2.69169 1.094758,-8.081731 1.508064,-3.077822 3.079193,-6.373792 3.491421,-7.324372 0.652211,-1.50398 0.990788,-1.25829 2.608443,1.8928 1.911186,3.72288 6.321032,7.180923 9.157411,7.180923 4.150835,0 11.504527,-4.724593 21.3988,-13.748293 9.555236,-8.71448 10.829873,-9.58412 14.047538,-9.58412 4.293595,0 9.556372,2.77633 14.656374,7.73182 2.069449,2.0108 3.86226,3.5242 3.984029,3.36311 0.12178,-0.16109 0.945137,-1.31084 1.829667,-2.55499 0.88453,-1.24416 3.685604,-3.3308 6.224606,-4.63699 3.686737,-1.89664 5.463317,-2.29109 8.822097,-1.95876 6.8491,0.67769 15.00978,5.73859 25.22338,15.64246 9.22954,8.949677 17.70147,14.387397 22.41549,14.387397 3.79377,0 9.50175,-3.242454 12.44138,-7.067419 2.42259,-3.152211 2.91825,-3.453173 3.17838,-1.929873 0.1695,0.992615 -1.28406,4.871896 -3.23015,8.620627 -3.35987,6.472087 -6.91202,10.130201 -12.7132,13.092455 -3.04983,1.557333 -10.43785,1.258306 -14.36072,-0.581246 z" 109 id="gnu-7-7-5"
122 style="opacity:1;fill:#000000;display:inline" /> 110 d="m 91.501627,223.13422 c 2.44866,-7.38073 7.44672,-16.72109 12.277833,-22.94475 5.71059,-7.35667 7.37834,-9.3856 28.68987,-34.90319 16.87203,-20.20187 19.22297,-23.17963 22.55477,-28.56842 1.5428,-2.49527 3.17766,-4.53686 3.63304,-4.53686 1.18186,0 1.10043,0.30992 -1.63307,6.21531 -1.35357,2.92424 -2.46105,5.64533 -2.46105,6.04686 0,0.40153 -2.97647,4.90375 -6.6144,10.00493 -8.98843,12.6038 -10.76026,14.97181 -13.08231,17.48444 -1.0981,1.18822 -3.8535,4.49366 -6.1231,7.34539 -2.2696,2.85173 -4.58719,5.62332 -5.15019,6.15909 -0.56299,0.53575 -2.79558,3.19769 -4.9613,5.91542 -6.69122,8.39667 -16.09521,19.83397 -17.43166,21.20066 -0.69977,0.71561 -3.044273,3.91702 -5.209993,7.11426 -4.16128,6.14322 -5.79503,7.40513 -4.48844,3.46686 z m 66.481533,-23.7645 c 0.22279,-0.5941 1.5292,-4.28446 2.90315,-8.20081 3.44555,-9.82127 13.66236,-27.15831 19.73886,-33.49505 l 2.48602,-2.59251 2.25191,2.37646 c 2.67739,2.82543 3.88298,2.92758 8.02572,0.68 3.08741,-1.67502 7.69643,-8.22076 20.10229,-28.54929 4.55053,-7.45659 5.01229,-7.9395 5.0346,-5.26516 0.0415,4.9808 -22.21528,41.2544 -29.34472,47.82522 -4.11732,3.7947 -6.18823,4.04757 -8.84718,1.0802 -1.06473,-1.18822 -2.3151,-2.15972 -2.77861,-2.15886 -1.62142,0.003 -12.08302,16.59943 -16.47702,26.13939 -0.82094,1.78235 -1.9443,3.24062 -2.49635,3.24062 -0.55207,0 -0.82147,-0.48609 -0.59867,-1.08021 z m 84.56819,-24.82537 c -2.06645,-0.8019 1.13497,-15.11544 9.38534,-45.76041 8.25036,-30.64496 13.71984,-51.383787 14.84879,-58.25729 1.12895,-6.873503 2.03487,-14.092092 -4.36472,-16.458525 -6.39958,-2.366433 -16.77636,10.967049 -21.18571,12.891935 -1.80822,-0.98102 -3.1468,-0.58863 2.90016,-11.56546 6.04696,-10.97683 17.96376,-16.533598 24.45815,-14.02345 6.49439,2.510148 9.06627,8.870934 9.02208,16.2618 -0.0442,7.390866 -1.34227,9.483254 -10.57054,34.657444 -9.22827,25.174186 -15.27911,53.155486 -18.56738,69.382646 -1.67576,8.37809 -3.60972,13.73571 -5.92617,12.87131 z m -96.84888,-54.21518 c 1.40606,-16.35743 -4.16257,-18.77418 -12.79668,-25.53246 0,-1.55773 8.7013,-12.73719 9.91373,-12.73719 1.73907,0 4.26796,0.851938 9.50728,9.07372 5.23932,8.221782 2.81919,33.478 -4.79284,37.656 -1.73206,0.81373 -1.83075,0.3578 -1.83149,-8.46007 z m -67.235101,2.4601 C 66.149626,114.64118 107.1616,65.642805 109.89257,67.61866 c 1.43393,1.147042 -25.884213,36.7541 -19.110563,41.27888 6.77365,4.52478 36.496453,-21.773029 38.824823,-19.65206 2.32837,2.120969 -42.806145,38.90369 -51.139461,33.54379 z M 203.02623,89.36059 c -4.35468,-2.67753 -4.37646,-3.98287 -0.1931,-11.57676 l 3.90554,-7.08957 2.54785,2.65806 c 3.02363,3.15442 6.72598,3.45147 12.70923,1.01972 4.8079,-1.95406 8.30397,-5.19427 11.75211,-10.89203 l 2.61484,-4.32082 -0.49413,3.33468 c -0.73833,4.9825 -10.09007,19.20733 -14.90376,22.66994 -7.26038,5.22257 -13.78694,6.74948 -17.93858,4.19678 z m -30.4,-8.22399 C 157.50408,77.285901 148.7977,56.570002 130.36074,56.13461 c -4.30021,0 -9.89066,3.33457 -11.79031,7.03263 -2.74495,5.3436 -3.95008,5.711 -6.19677,1.88915 -3.1561,-5.36887 -12.746673,-12.37843 -16.936323,-12.37843 -0.62849,0 -6.18822,4.49121 -12.35495,9.98046 -11.48323,10.22167 -16.71895,13.29663 -22.702,13.33298 -3.49086,0.0212 -7.74406,-2.69911 -10.336349,-6.61109 -1.58653,-2.3942 -1.54623,-2.69169 1.09475,-8.08174 1.508069,-3.07782 3.079199,-6.37379 3.491429,-7.32437 0.65221,-1.50398 0.99078,-1.25829 2.60844,1.8928 1.91118,3.72288 6.32103,7.18093 9.15741,7.18093 4.15083,0 11.50453,-4.7246 21.3988,-13.7483 9.55523,-8.71448 10.82987,-9.58412 14.047543,-9.58412 4.29359,0 9.55637,2.77633 14.65637,7.73182 2.06945,2.0108 3.86226,3.5242 3.98403,3.36311 3.62266,-5.566805 10.90469,-9.699668 16.87635,-9.15074 16.82938,1.857986 31.50411,28.885923 47.63888,30.02986 6.12183,0.0506 13.64798,-10.853925 15.61976,-8.99729 0.1695,0.99261 -1.28406,4.87189 -3.23015,8.62062 -5.69216,10.252657 -13.63209,13.763692 -24.76142,9.82371 z"
123 </g> 111 style="fill:#c64e3b;fill-opacity:1;stroke:#c64e3b;stroke-width:0.9769991;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline"
124 <g 112 sodipodi:nodetypes="sssssssssscssssssscssscssssssczzzczzzzccccszcccczzcsscssscsssccssssssssssssscccccc" />
125 transform="translate(5.34375,-11.4375)" 113 <path
126 id="layer3" 114 sodipodi:nodetypes="cscszzczcsczzzssccssssssssssscssccsssssssssssccssccssssssssccssccccssscssssccsssscsscc"
127 style="display:inline"> 115 inkscape:connector-curvature="0"
128 <path 116 id="emacs-9-4-3"
129 id="gnu" 117 d="m 33.019748,221.94909 c -6.110408,-9.38954 3.380608,-25.48422 15.35655,-34.75342 6.516165,-5.04342 14.224569,-9.82272 13.070959,-9.82483 -0.99658,-0.002 -3.28511,-0.79177 -5.08562,-1.75545 -6.217869,-3.328 -13.320748,-11.33731 7.05534,-28.37574 20.376088,-17.03843 58.074533,-25.26395 64.900723,-20.35237 6.82619,4.91158 -21.13643,22.39146 -22.51985,21.00884 -0.54574,-1.30268 16.61528,-10.7144 12.28657,-13.45436 -4.32871,-2.73996 -49.428283,10.06303 -49.047283,27.89807 0.71955,5.15612 9.09591,7.16542 19.10752,2.72826 7.00502,-3.10464 12.660323,-6.60408 12.285323,-4.56715 -13.758486,12.27671 -39.124345,23.59007 -45.869963,29.39978 -6.745618,5.80971 -7.543869,11.67601 -6.794789,14.18989 0.74908,2.51388 2.060512,5.22647 6.829019,5.51844 4.768507,0.29197 8.89581,0.12074 32.27058,-16.5637 5.16228,-3.68473 10.22809,-7.76323 13.653653,-9.77045 4.32602,-2.53484 10.05688,-4.56948 8.97699,-1.65526 -3.77936,7.61077 -5.74585,10.67934 -9.16756,16.15546 8.11118,-6.33235 15.74717,-14.15513 24.3066,-15.7298 2.0811,-0.38286 6.77241,-1.55766 8.63617,0.99596 0.76447,1.04743 -0.45512,5.1162 -2.21368,8.92266 -0.53908,1.16685 1.05142,0.38368 4.67533,-2.30213 7.44131,-5.51505 14.07912,-8.75072 17.95158,-8.75072 4.57712,0 4.83279,1.74832 1.24097,8.48622 -3.75741,7.04855 -6.75962,17.21422 -4.65148,19.88378 1.46622,1.85669 7.96734,-2.91147 10.3276,-4.31865 2.42293,-1.44454 6.05649,-3.67201 7.44149,-4.72955 10.37298,-7.92039 39.1617,-23.15505 40.99851,-21.53603 0.82449,0.72672 -1.6928,2.43145 -10.4509,7.07749 -14.25554,7.56231 -22.59862,14.9854 -22.60932,20.11619 -0.006,2.71011 4.1743,2.15203 7.26381,1.4275 4.40695,-1.03349 12.41622,-3.9676 -0.1736,3.14023 -13.16001,7.42974 -22.48474,6.17813 -16.63437,-3.95665 l 3.73574,-6.16441 -9.13253,6.55379 c -13.1916,9.46671 -19.35595,10.10807 -22.76505,7.11544 -2.61211,-2.29301 -1.99117,-8.56165 1.43897,-14.5266 2.74703,-4.77707 3.88176,-8.84229 2.46817,-8.84229 -2.38604,0 -7.35932,4.53611 -13.26994,10.69747 -9.97489,10.39803 -8.541,15.10079 -10.5912,15.36938 -1.2597,0.16503 -6.97748,-1.59412 -4.55589,-8.64068 1.80805,-5.26122 4.69288,-8.68747 6.82226,-11.55279 3.86672,-5.2031 1.48047,-5.97342 -3.79027,-3.77097 -3.05613,1.27704 -5.35016,4.83814 -17.152833,15.01371 -13.80489,11.90178 -18.19909,17.31989 -20.79043,11.99664 -1.27325,-2.61557 1.0176,-5.97434 3.23361,-9.57032 4.3675,-7.21553 10.68782,-13.92474 8.63284,-16.40083 -2.05019,0.66573 -5.70142,3.94706 -7.91742,5.72051 -2.21601,1.77344 -5.21691,3.98662 -6.66868,4.91816 -1.45175,0.93154 -5.75786,3.9162 -9.56912,6.63255 -12.148528,7.72218 -28.712254,17.824 -33.545099,10.89873 z m 160.303772,-8.81383 c -4.88506,-3.00364 -1.44968,-15.28518 5.948,-21.26421 3.32796,-2.68976 12.33843,-8.3073 13.32481,-8.3073 0.27463,0 -1.05354,2.61529 -2.9515,5.81174 -5.51025,9.28008 -4.30612,16.29397 2.79731,16.29397 5.95677,0 10.60291,-1.935 15.24759,-9.21089 3.95762,-6.19961 10.07679,-10.04817 15.75277,-13.07984 4.88528,-2.60934 16.10975,-4.00015 19.83723,-4.00272 5.28129,-0.004 5.07061,0.66399 -3.766,4.03459 -5.96006,1.81342 -23.41185,8.68768 -18.33848,20.56454 1.0883,2.49035 5.34941,2.76493 8.03403,2.5731 2.64994,-0.18935 5.81168,-1.7253 7.33518,-2.42296 1.52351,-0.69765 3.03519,0.21321 3.03519,0.61971 -5.88638,3.94569 -11.44839,6.45882 -14.00234,7.27145 -2.61375,0.96599 -7.35132,2.03318 -10.23523,1.93803 -5.03631,0.0339 -9.16147,-1.48631 -10.57379,-3.37846 -0.79608,-1.43217 -1.06163,-2.48284 -0.96262,-3.97903 0.2568,-3.8804 0.16517,-2.52343 -4.28527,0.23044 -13.102,8.10733 -21.40719,9.25285 -26.19688,6.30784 z m 75.29251,0.5386 c -1.38501,-0.41486 -3.99134,-0.79396 -5.79185,-0.84243 -5.99934,-0.16153 -3.6372,-2.26466 5.12716,-4.56493 2.24719,-0.58979 2.74693,-0.49039 2.32997,0.46346 -1.0714,2.45099 8.09297,3.14025 13.72804,1.0325 5.4798,-2.04969 7.70684,-5.31293 8.2153,-10.06119 0.16756,-8.34719 -12.6158,-6.31988 -18.32043,-6.36109 -12.98146,-0.0572 -14.34396,-1.01124 -7.14295,-5.00172 9.56822,-5.3023 20.88185,-11.1336 25.8426,-10.44585 5.86061,0.8125 5.42599,3.39743 -0.5575,3.43312 -3.92889,0.0234 -13.80136,5.14348 -14.97622,6.81223 -1.22979,1.74676 2.12319,2.47254 11.4854,2.48607 8.58743,0.0125 10.7826,1.48644 11.8355,2.18392 2.50203,1.65742 3.46341,8.67923 -0.80123,12.20836 -7.5132,6.21744 -19.30064,10.28748 -30.97375,8.65755 z"
130 d="m 57.534816,196.31319 c 2.448659,-7.38073 7.446723,-16.72109 12.277833,-22.94475 5.710592,-7.35667 7.378339,-9.3856 28.689891,-34.90319 16.87202,-20.20188 19.22296,-23.17964 22.55476,-28.56842 1.5428,-2.49527 3.17766,-4.53686 3.63304,-4.53686 1.18186,0 1.10043,0.30992 -1.63307,6.21531 -1.35357,2.92423 -2.46105,5.64532 -2.46105,6.04685 0,0.40153 -2.97647,4.90375 -6.6144,10.00493 -8.98843,12.60381 -10.76025,14.97182 -13.0823,17.48445 -1.0981,1.18822 -3.8535,4.49366 -6.123108,7.34539 -2.269606,2.85173 -4.587188,5.62332 -5.150194,6.15909 -0.562997,0.53575 -2.795585,3.19769 -4.961309,5.91542 -6.691216,8.39667 -16.095209,19.83397 -17.431654,21.20066 -0.699773,0.71561 -3.044271,3.91702 -5.209995,7.11426 -4.16128,6.14322 -5.795033,7.40513 -4.488444,3.46686 z m 66.481544,-23.7645 c 0.22279,-0.5941 1.5292,-4.28446 2.90315,-8.20081 3.44555,-9.82127 13.66236,-27.15831 19.73886,-33.49506 l 2.48602,-2.59251 2.25191,2.37646 c 2.67739,2.82544 3.88298,2.92759 8.02572,0.68 3.08741,-1.67502 7.69643,-8.22076 20.10229,-28.54928 4.55053,-7.45659 5.01229,-7.939502 5.0346,-5.26516 0.0415,4.9808 -22.21528,41.2544 -29.34472,47.82522 -4.11732,3.7947 -6.18823,4.04757 -8.84718,1.0802 -1.06473,-1.18822 -2.3151,-2.15972 -2.77861,-2.15886 -1.62142,0.003 -12.08302,16.59943 -16.47702,26.13939 -0.82094,1.78235 -1.9443,3.24062 -2.49635,3.24062 -0.55207,0 -0.82147,-0.48609 -0.59867,-1.08021 z m 84.19319,-24.88787 c 0,-7.49007 7.66313,-38.06798 12.33356,-49.21415 3.04458,-7.266013 7.33463,-20.847089 8.32578,-26.35699 0.42748,-2.376449 1.49075,-7.626245 2.36285,-11.666209 0.87207,-4.039964 1.5862,-11.563 1.58694,-16.717855 0.002,-10.935036 -1.20271,-13.589976 -7.10476,-15.663026 -7.62736,-2.67905 -10.16765,-1.47291 -13.00198,6.173428 -1.74243,4.700723 -3.72352,6.856253 -5.44369,5.923006 -1.89626,-1.028794 -1.05403,-4.387566 2.90016,-11.565454 8.13973,-14.77576 14.55936,-18.45654 24.45815,-14.02345 5.65324,2.53175 9.02208,8.60392 9.02208,16.2618 0,9.333563 -7.01946,35.141105 -14.28285,52.511886 -4.47563,10.703728 -11.5668,35.301034 -14.85507,51.528204 -2.1002,10.36421 -3.15113,13.73222 -4.51891,14.48205 -1.5746,0.86323 -1.78226,0.66827 -1.78226,-1.67324 z M 111.73567,93.508133 c -7.1e-4,-8.464568 -0.25892,-9.796146 -2.81265,-14.505144 -2.66535,-4.914782 -7.28206,-9.937882 -9.13385,-9.937882 -0.4676,0 -0.85017,-0.490243 -0.85017,-1.08943 0,-1.557732 8.70129,-12.737188 9.91372,-12.737188 1.73907,0 7.4566,5.456815 9.50728,9.073719 2.60567,4.595744 3.35771,11.337596 2.2795,20.434785 -0.9601,8.100583 -4.13995,15.843567 -7.07234,17.221217 -1.73206,0.81373 -1.83075,0.3578 -1.83149,-8.460077 z M 42.467634,95.79146 c -3.977291,-2.746359 -3.44557,-6.261434 2.439644,-16.127646 4.970535,-8.33282 10.094017,-15.38029 21.43897,-29.489855 6.601357,-8.209992 8.637667,-10.20312 9.579511,-9.376336 0.799394,0.701746 -2.618999,5.390153 -11.474198,15.737111 -16.940162,19.79395 -18.734332,27.221155 -6.575701,27.221155 3.304542,0 6.058837,-0.617002 8.461092,-1.895408 6.360466,-3.38485 18.203678,-11.286415 23.507089,-15.683501 2.848527,-2.361722 5.456729,-4.05036 5.795999,-3.752528 1.04524,0.917548 -4.907057,10.147668 -7.816978,12.121655 -1.511589,1.025416 -5.874113,4.197632 -9.69449,7.049372 -3.820388,2.85174 -8.563965,6.157166 -10.541309,7.345392 -1.977334,1.188224 -4.400156,2.796969 -5.384044,3.574986 C 59.955,94.293656 50.282436,97.5825 47.302128,97.5825 c -1.232383,0 -3.407898,-0.80597 -4.834494,-1.79104 z M 169.05943,62.539562 c -4.35468,-2.677534 -4.37646,-3.982873 -0.1931,-11.57676 l 3.90554,-7.089571 2.54785,2.658058 c 3.02363,3.154415 6.72598,3.451472 12.70923,1.019721 4.8079,-1.95406 8.30397,-5.194275 11.75211,-10.892036 l 2.61484,-4.320814 -0.49413,3.334678 c -0.73833,4.982504 -10.09007,19.207325 -14.90376,22.669936 -7.26038,5.222576 -13.78694,6.749482 -17.93858,4.196788 z m -32.7125,-5.536491 c -1.89501,-0.888629 -8.4802,-6.332726 -14.63377,-12.09799 C 110.18044,34.100098 102.40757,29.31358 96.39395,29.31358 c -4.300218,0 -9.890682,3.33457 -11.790334,7.032628 -2.74495,5.343604 -3.950075,5.711001 -6.196765,1.88915 C 75.250753,32.86649 65.660182,25.85693 61.470527,25.85693 c -0.628489,0 -6.188212,4.49121 -12.354949,9.980456 -11.483232,10.221671 -16.718945,13.296629 -22.701995,13.33298 -3.490867,0.0212 -7.744061,-2.699113 -10.336357,-6.611093 -1.586521,-2.394192 -1.546221,-2.69169 1.094758,-8.081731 1.508064,-3.077822 3.079193,-6.373792 3.491421,-7.324372 0.652211,-1.50398 0.990788,-1.25829 2.608443,1.8928 1.911186,3.72288 6.321032,7.180923 9.157411,7.180923 4.150835,0 11.504527,-4.724593 21.3988,-13.748293 9.555236,-8.71448 10.829873,-9.58412 14.047538,-9.58412 4.293595,0 9.556372,2.77633 14.656374,7.73182 2.069449,2.0108 3.86226,3.5242 3.984029,3.36311 0.12178,-0.16109 0.945137,-1.31084 1.829667,-2.55499 0.88453,-1.24416 3.685604,-3.3308 6.224606,-4.63699 3.686737,-1.89664 5.463317,-2.29109 8.822097,-1.95876 6.8491,0.67769 15.00978,5.73859 25.22338,15.64246 9.22954,8.949677 17.70147,14.387397 22.41549,14.387397 3.79377,0 9.50175,-3.242454 12.44138,-7.067419 2.42259,-3.152211 2.91825,-3.453173 3.17838,-1.929873 0.1695,0.992615 -1.28406,4.871896 -3.23015,8.620627 -3.35987,6.472087 -6.91202,10.130201 -12.7132,13.092455 -3.04983,1.557333 -10.43785,1.258306 -14.36072,-0.581246 z" 118 style="fill:#3c74bd;fill-opacity:1;stroke:#3c74bd;stroke-width:0.99999905;stroke-opacity:1;display:inline" />
131 style="fill:url(#linearGradient2425);fill-opacity:1;stroke:#000000;stroke-width:0.97730815" /> 119 </g>
132 <path
133 id="emacs"
134 d="M -0.94705426,195.12806 C -10.63777,180.18357 4.9968228,166.32928 14.409493,160.37464 c 6.963497,-4.40524 14.224571,-9.82272 13.070957,-9.82483 -0.996579,-0.002 -3.28511,-0.79177 -5.085617,-1.75545 -6.217876,-3.328 -7.955628,-16.0503 7.055337,-28.37575 16.709358,-12.01621 42.570706,-26.817291 64.900729,-20.35236 3.972325,1.58882 2.904485,4.42259 -3.766368,9.99492 -5.675178,4.74062 -17.792772,11.85728 -18.753492,11.01391 -0.233326,-0.20481 2.490068,-2.19795 6.051979,-4.42919 3.551812,-2.45188 6.827,-5.57228 6.234589,-9.02516 -1.977492,-3.21848 -14.566202,0.87623 -19.657994,3.11811 -8.980399,3.95401 -30.419617,17.3969 -29.389287,24.77996 0.719552,5.15612 9.095912,7.16542 19.107524,2.72826 7.005023,-3.10464 12.660323,-6.60409 12.285323,-4.56715 -0.365454,1.98509 -12.574667,10.22701 -19.359801,12.99119 -10.773868,4.38916 -18.049435,9.35351 -26.510163,16.40859 -7.801376,6.50528 -6.794788,9.58593 -6.794788,14.18989 0,3.11466 2.974668,5.51844 6.829021,5.51844 7.964514,0 8.895804,0.12074 32.270578,-16.5637 5.162282,-3.68473 10.228089,-7.76323 13.653652,-9.77045 4.326017,-2.53484 9.463124,-4.13198 8.976988,-1.65526 -3.779364,7.61077 -5.74585,10.67934 -9.167556,16.15546 8.11118,-6.33235 15.840916,-14.71763 24.306604,-15.7298 2.101063,-0.25121 7.741176,-0.49516 8.636186,0.99596 0.66736,1.11183 -0.45512,5.1162 -2.21368,8.92266 -0.53908,1.16685 1.05142,0.38368 4.675326,-2.30213 7.4413,-5.51505 14.07911,-8.75072 17.95157,-8.75072 4.57712,0 4.83279,1.74832 1.24097,8.48622 -3.75741,7.04855 -6.75962,17.21422 -4.65148,19.88378 1.46622,1.85669 7.96734,-2.91147 10.3276,-4.31865 2.42293,-1.44454 6.05649,-3.67201 7.44149,-4.72955 10.37298,-7.92039 39.1617,-23.15505 40.99851,-21.53603 0.82449,0.72672 -1.6928,2.43145 -10.4509,7.07749 -14.25554,7.56231 -22.59862,14.9854 -22.60932,20.11619 -0.006,2.71011 4.1743,2.15203 7.26381,1.4275 4.40695,-1.03349 12.41622,-3.9676 -0.1736,3.14023 -13.16001,7.42974 -22.48474,6.17813 -16.63437,-3.95665 l 3.73574,-6.16441 -9.13253,6.55379 c -13.1916,9.46671 -19.35595,10.10807 -22.76505,7.11544 -2.6121,-2.29301 -1.99116,-8.56165 1.43897,-14.5266 2.74703,-4.77707 3.88176,-8.84229 2.46817,-8.84229 -2.38604,0 -7.35931,4.53611 -13.269936,10.69747 -9.974903,10.39803 -8.541011,15.10079 -10.591215,15.36938 -1.2597,0.16503 -6.977484,-1.59412 -4.555892,-8.64068 1.80805,-5.26122 4.692881,-8.68747 6.822262,-11.55279 3.866732,-5.2031 1.480467,-5.97342 -3.790272,-3.77097 -3.05613,1.27704 -5.350157,4.83814 -17.152826,15.01371 -13.804895,11.90178 -18.199091,17.31989 -20.790434,11.99664 -1.273249,-2.61557 1.017602,-5.97434 3.23361,-9.57032 4.367498,-7.21553 10.687821,-13.92474 8.632844,-16.40083 -2.050191,0.66573 -5.701417,3.94706 -7.917424,5.72051 -2.216008,1.77344 -5.216905,3.98662 -6.668674,4.91816 -1.451757,0.93154 -5.757863,3.9162 -9.569125,6.63255 -3.811251,2.71637 -10.546273,6.79488 -14.966706,9.06335 -9.5840432,4.91833 -13.8359275,5.33836 -18.57838626,1.83533 z M 159.35672,186.31423 c -4.88506,-3.00364 -1.44968,-15.28518 5.948,-21.26421 3.32796,-2.68976 12.33843,-8.3073 13.32481,-8.3073 0.27463,0 -1.05354,2.61529 -2.9515,5.81174 -5.51025,9.28008 -4.30612,16.29397 2.79731,16.29397 5.95677,0 10.60291,-1.935 15.24759,-9.21089 3.95762,-6.19961 10.07679,-10.04817 15.75277,-13.07984 4.88528,-2.60934 15.49103,-5.23799 19.83723,-4.00272 6.01532,1.70966 5.07061,0.66399 -3.766,4.03459 -9.35359,3.5678 -12.15223,5.23437 -15.80579,9.41222 -4.62835,5.29254 -5.17979,8.5948 -1.91397,11.46168 2.05902,1.80749 3.56776,2.26807 7.41531,2.26374 2.65669,-0.003 5.81168,-1.7253 7.33518,-2.42296 1.52351,-0.69765 3.03519,0.21321 3.03519,0.61971 -5.88638,3.94569 -11.44839,6.45882 -14.00234,7.27145 -2.61375,0.96599 -7.35132,2.03318 -10.23523,1.93803 -5.03631,0.0339 -9.16147,-1.48631 -10.57379,-3.37846 -0.79608,-1.43217 -1.3268,-2.70381 -0.96262,-3.97903 1.0679,-3.73939 0.16517,-2.52343 -4.28527,0.23044 -13.102,8.10733 -21.40719,9.25285 -26.19688,6.30784 z m 75.29251,0.5386 c -1.38501,-0.41486 -3.99134,-0.79396 -5.79185,-0.84243 -5.99934,-0.16153 -3.6372,-2.26466 5.12716,-4.56493 2.24719,-0.58979 2.74693,-0.49039 2.32997,0.46346 -1.0714,2.45099 8.09297,3.14025 13.72804,1.0325 5.4798,-2.04969 7.70684,-5.31293 8.2153,-10.06119 0.16756,-8.34719 -12.6158,-6.31988 -18.32043,-6.36109 -12.98146,-0.0572 -14.34396,-1.01124 -7.14295,-5.00172 9.56822,-5.3023 20.88185,-11.1336 25.8426,-10.44585 5.86061,0.8125 5.42599,3.39743 -0.5575,3.43312 -3.92889,0.0234 -13.80136,5.14348 -14.97622,6.81223 -1.22979,1.74676 2.12319,2.47254 11.4854,2.48607 8.58743,0.0125 9.56792,0.19334 11.8355,2.18392 3.81332,3.3475 3.46341,8.67923 -0.80123,12.20836 -7.5132,6.21744 -19.30064,10.28748 -30.97375,8.65755 z"
135 style="opacity:1;fill:url(#linearGradient2556);fill-opacity:1;stroke:#000000;display:inline" />
136 </g> 120 </g>
137</svg> 121</svg>
diff --git a/etc/images/splash.xpm b/etc/images/splash.xpm
index e53cd68f8af..2756bcd76bb 100644
--- a/etc/images/splash.xpm
+++ b/etc/images/splash.xpm
@@ -1,249 +1,370 @@
1/* XPM */ 1/* XPM */
2/* Gnu Emacs Logo
3 *
4 * Copyright (C) 2001-2015 Free Software Foundation, Inc.
5 *
6 * Author: Luis Fernandes <elf@ee.ryerson.ca>
7 *
8 * This file is part of GNU Emacs.
9 *
10 * GNU Emacs is free software: you can redistribute it and/or modify
11 * it under the terms of the GNU General Public License as published by
12 * the Free Software Foundation, either version 3 of the License, or
13 * (at your option) any later version.
14 *
15 * GNU Emacs is distributed in the hope that it will be useful,
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 * GNU General Public License for more details.
19 *
20 * You should have received a copy of the GNU General Public License
21 * along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
22 */
23static char *splash[] = { 2static char *splash[] = {
24/* width height num_colors chars_per_pixel */ 3/* columns rows colors chars-per-pixel */
25" 270 217 4 1", 4"333 233 131 2 ",
26/* colors */ 5" c #C64E3B",
27". c None", 6". c #C7513E",
28"# c #c64e3b", 7"X c #BD5144",
29"a c #000000", 8"o c #B3534D",
30"c c #2076c1", 9"O c #A95656",
10"+ c #A65759",
11"@ c #A1585E",
12"# c #8F5D6F",
13"$ c #9C5A63",
14"% c #935C6B",
15"& c #8A5F73",
16"* c #A15F67",
17"= c #83607A",
18"- c #926172",
19"; c #C14F40",
20": c #C75340",
21"> c #C85643",
22", c #C95846",
23"< c #C3594B",
24"1 c #CB5C4B",
25"2 c #CC604F",
26"3 c #CD6453",
27"4 c #CE6857",
28"5 c #CF6959",
29"6 c #D06E5E",
30"7 c #D16F60",
31"8 c #CF7062",
32"9 c #D27364",
33"0 c #D37768",
34"q c #D47A6C",
35"w c #D67E71",
36"e c #D78275",
37"r c #D88477",
38"t c #D88679",
39"y c #D98A7D",
40"u c #3C74BD",
41"i c #5F6A9C",
42"p c #766486",
43"a c #7B6382",
44"s c #6A6792",
45"d c #626999",
46"f c #4E6FAC",
47"g c #566DA5",
48"h c #5A6EA3",
49"j c #5574AE",
50"k c #4372B6",
51"l c #4971B1",
52"z c #4077BE",
53"x c #4279BF",
54"c c #457AC0",
55"v c #497DC1",
56"b c #4E81C3",
57"n c #5384C5",
58"m c #5A89C7",
59"M c #5D8CC8",
60"N c #6B8CC1",
61"B c #618EC9",
62"V c #6592CB",
63"C c #6B95CD",
64"Z c #6F98CE",
65"A c #719ACF",
66"S c #759DD0",
67"D c #789FD1",
68"F c #7CA2D3",
69"G c #DB8E82",
70"H c #DC9185",
71"J c #DD958A",
72"K c #DE998E",
73"L c #DF9C92",
74"P c #E09F94",
75"I c #E0A096",
76"U c #E2A59B",
77"Y c #E3A99F",
78"T c #E4ACA4",
79"R c #E6B0A7",
80"E c #E7B3AB",
81"W c #E8B7AE",
82"Q c #E8B7B0",
83"! c #E9BBB4",
84"~ c #EBBFB8",
85"^ c #ECC3BC",
86"/ c #81A5D5",
87"( c #89A6D1",
88") c #86A9D6",
89"_ c #89ABD7",
90"` c #8DAED8",
91"' c #90AFD9",
92"] c #8FB0D9",
93"[ c #9DB4D7",
94"{ c #93B2DB",
95"} c #99B6DC",
96"| c #9DB9DE",
97" . c #A1BCDF",
98".. c #A4BEE0",
99"X. c #A6C0E1",
100"o. c #ABC3E3",
101"O. c #B0C7E4",
102"+. c #B5CAE6",
103"@. c #B9CDE7",
104"#. c #BBCEE8",
105"$. c #BED0E9",
106"%. c #DBD0D8",
107"&. c #EDC7C1",
108"*. c #EECAC4",
109"=. c #EFCEC8",
110"-. c #F0CFCA",
111";. c #F0D2CD",
112":. c #F2D6D1",
113">. c #F3DAD5",
114",. c #F4DEDA",
115"<. c #F6E2DE",
116"1. c #C4D5EB",
117"2. c #CCDAEE",
118"3. c #D0DEEF",
119"4. c #D3DFF0",
120"5. c #D5E1F1",
121"6. c #DBE5F3",
122"7. c #DFE8F4",
123"8. c #EDE5E8",
124"9. c #F7E5E2",
125"0. c #F8E9E6",
126"q. c #F9EDEB",
127"w. c #FAF0EE",
128"e. c #E4ECF6",
129"r. c #E9EFF7",
130"t. c #ECF2F9",
131"y. c #FCF4F3",
132"u. c #FDF8F7",
133"i. c #F2F6FB",
134"p. c #F6F9FC",
135"a. c #FFFFFF",
31/* pixels */ 136/* pixels */
32"..............................................................................................................................................................................................................................................................................", 137"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
33"..................................................................########..........................................................................................................................................................########..................................", 138"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
34".................................................................##########.......................................................................................................................................................############................................", 139"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
35"................................................................#############.......................########....................................................................................................................################..............................", 140"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
36"..............................................................#################...................#############................................................................................................................###################............................", 141"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
37".............................................................###################.................################.............................................................................................................#####################...........................", 142"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
38"............................................................#####################..............###################...........................................................................................................######################...........................", 143"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
39"...........................................................#######################...........#######################.........................................................................................................#######################..........................", 144"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
40"..........................................................#########################.........##########################......................................................................................................#########################.........................", 145"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
41".........................................................###########################.......############################....................................................................................................##########################.........................", 146"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
42".........................................................############################.....###############################.................................................................................................############################........................", 147"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
43"........................................................##############################...a################################................................................................................................############################........................", 148"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
44".......................................................################################.a##################################..............................................................................................##############################.......................", 149"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
45"......................................................#################################aa###################################.............................................................................................##############################.......................", 150"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
46".....................................................########################################################################...........................................................................................################################......................", 151"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
47"....................................................##########################################################################.........................................................................................a################################......................", 152"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
48"......................#............................###########aaa##############################################################.......................................................................................a#################################......................", 153"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
49".....................##...........................###########aaaaaa#############################################################......................................................................................a######aaaaaa#####################......................", 154"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
50".....................###.........................##########aaaaaaaaaa############################################################....................................................................................a######aaaaaaaaaa##################......................", 155"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
51".....................###........................##########...aaaaaaaaaa###########################################################...................................................................................a#####aaaaaaaaaaaaa################......................", 156"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
52".................a..#####......................##########......aaaaaaaaa#######################aaaaaaa############################..................................................................................a#####aaaaaaaaaaaaaaaa##############......................", 157"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
53".................aa.#####.....................##########........aaaaaaaaa####################aaaaaaaaaaa###########################.................................................................................a#####aaaaaaaaaaaaaaaa##############......................", 158"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
54"................aaa.#####....................##########..........aaaaaaaaa#################aaaaaaaaaaaaaaa##########################...............................................................................a######aaaaaaaaaaaaaaaaa#############......................", 159"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
55"................aaa#######..................##########............aaaaaaaaa###############aaaaaaaaaaaaaaaaaa#########################..............................................................................a#####.........aaaaaaaaaa############......................", 160"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.,.H 9 4 w P ! 0.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
56"................aaa########...............###########...............aaaaaaaa############aa........aaaaaaaaaaaa########################.......................................................................#....a######............aaaaaaa############......................", 161"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.9.w : . , > q *.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.y.^ J r q 9 K ^ q.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
57"...............aaa##########............############.................aaaaaaaa###########.............aaaaaaaaaaa#######################......................................................................#....a######.............aaaaaaa###########......................", 162"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.=.> , 2 *.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.9.T J e 6 3 4 G E 9.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.y.R 4 : , , : U u.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
58"...............aaa############........#############...................aaaaaaaa#########................aaaaaaaaaa#######################.................................#..................................##...aa#####...............aaaaaa###########......................", 163"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.E > : e w.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.u.^ 8 , . > : 5 W y.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.q.K , : > 2 ;.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
59"...............aa##############.....##############.....................aaaaaaaa########..................aaaaaaaaa#######################...............................##..................................##...a######...............aaaaaa###########......................", 164"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.J : . , ~ a.a.a.a.a.a.a.a.a.a.a.a.a.u.I , > : , T u.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.E > : > y a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
60"..............aaa#################################......................aaaaaaa#######....................aaaaaaaaa#######################.............................###...............................a.###..aa######................aaaaa###########......................", 165"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.y.w > : K a.a.a.a.a.a.a.a.a.a.a.<.4 : , 3 =.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.<.6 : . : U a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
61"..............aa#################################........................aaaaaaa######.....................aaaaaaaaa#######################..........................a.###..............................aa.##...aa#####..................aaaa###########......................", 166"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.q.5 : > e u.a.a.a.a.a.a.a.a.E > > q 9.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.~ : . . : -.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
62".............aaa################################..........................aaaaaa#####.......................aaaaaaaaa#######################........................aa####..............................aa###...aa#####..................aaaa###########......................", 167"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.,.1 . : 5 q.a.a.a.a.a.u.w > . > I a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.I > , q.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
63".............aaa###############################...........................aaaaaaa####.........................aaaaaaaa######################........................a####..............................aaa###..aaa####....................aaa##########.......................", 168"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.*.> . . 1 <.a.a.a.a.r : . : 8 w.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.u.e : . w a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
64"............aaa###############################.............................aaaaaa###...........................aaaaaaaa#######################.....................aa####..............................aa###...aaaa##.....................aaa##########.......................", 169"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.E > , *.a.a.L > . , >.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.e : > y.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
65"............aaaa#############################...............................##aaa.#.............................aaaaaaaa########################..................aa####..............................aaa###...aaaaaa.....................aaa##########.......................", 170"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.J : > T E > > ! a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.J > > ~ a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
66"...........aaaaa############################...............................###aaa................................aaaaaaaa########################.................a#####..............................aa###...aaaaaa......................aaa##########.......................", 171"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.u.w : . > : . : G u.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.T > 9 a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
67"...........aaaaaa##########################...............................###aaa..................................aaaaaaaa#########################..............######..............................aa####...aaaaaa......................aaa#########........................", 172"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.w.5 : . : 8 w.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.;., : w.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
68"...........aaaaaaa#######################................................####aaa...................................aaaaaaaa##########################..........########..............................a####....aaaaa.......................aaa#########........................", 173"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.>.:.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.<.1 . . : , . . 3 0.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.y.3 > &.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
69"............aaaaaa######################................................a###..a.....................................aaaaaaaa###########################......##########.........#...................a#####....aaaa........................aaa#########........................", 174"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.y., , q.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.-.: : e -.P 1 > : . , <.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.J : > > > E a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
70"............aaaaaaa####################................................a###..........................................aaaaaaaa#########################################.........##...................#####.......a.........................aaa#########........................", 175"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.U : . e a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.E > : ! a.a.a.a.9.y : , ;.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.;.> > > w ~ ! T 5 , U a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
71".............aaaaaaa##################................................a####...........................................aaaaaaaa########################################.........###.................######.................................aaa#########........................", 176"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.y., > *.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.y.y > : 4 9.a.a.a.a.a.a.a.;.3 : : ^ a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.4 > U u.a.a.a.a.a.^ , G a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
72"..............aaaaaaa###############.................................a####.............................................aaaaaaaa######################################.........#####..............#######..................................aaa########.........................", 177"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.T > , y.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.,.3 : > r u.a.a.a.a.a.a.a.a.a.u.T : , . 2 w e 4 : > , . > E a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.^ > : 4 ,.a.a.a.a.a.a.a.a.:.> w a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
73"...............aaaaaaa############a.................................aa###...............................................aaaaaaa######################################......a..######...........########...................................aaa########.........................", 178"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.u., : r a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.T : : I a.a.a.a.a.a.a.a.a.a.a.a.a.0.4 : . : q ;.u.a.a.a.a.a.0.;.E r : : : P a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.3 > K u.a.a.a.a.a.a.a.a.a.a.R > 6 a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
74"...............aaaaaaaaa#######aaa.................................aa####................................................aaaaaaa####################################.......aa########.......###########...................................aaa########.........................", 179"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.E > : T a.a.a.a.a.a.a.a.a.a.a.a.a.a.y.q > . : ~ a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.y.9 > : r <.a.a.a.a.a.a.a.a.a.a.a.a.w.I , > > G a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.u.a.a.a.a.a.! , : 1 ;.a.a.a.a.a.a.a.a.a.a.a.a.u.> 9 a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
75"................aaaaaaaaaaaaaaaaa..................................aa###..................................................aaaaaaa###################################.......aa#########################....................................aaa########.........................", 180"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.1 . : U a.a.a.a.a.a.a.a.a.a.a.u.T > . . , :.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.G : > ~ a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.u.! 4 > : q y.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.8 E a.a.a.a.1 > w y.a.a.a.a.a.a.a.a.a.a.a.a.a.a.e r a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
76".................aaaaaaaaaaaaaa...................................aa###....................................................aaaaaaa#################################.......aa##########################....................................aaa########.........................", 181"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.~ > : J y.a.a.a.a.a.a.a.a.^ 1 > : 3 9.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.T > 1 <.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.! > . : 6 y.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.! ^ a.a.a.W > > G a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.E : J a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
77"..................aaaaaaaaaaaa...................................aa####....................................................aaaaaaaa################################.......aa#########################.....................................aaa#######..........................", 182"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.4 : 1 &.a.a.a.a.y.^ 4 > , 8 y.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.E > > 9.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.w.w : . 2 9.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.y., . <.a.a.a., : U a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.~ : U a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
78"....................aaaaaaa.....................................aa####......................................................aaaaaaaa##############################.......aa##########################.....................................aaa#######..........................", 183"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.>.> > , e G 3 : > . > y u.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.H : > &.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.! , . . , *.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.w.y : e a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.J : : u.a.a.;., : ~ a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.~ > : Q a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
79"................................................................aa###........................................................aaaaaaaa###########################.........aa#########################......................................aaa#######..........................", 184"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.r : T a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.u.7 . : H a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.q.8 : > U a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.:., . H a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.:.: e a.a.a.y . , -.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.^ > > ,.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
80"...............................................................aa###..........................................................aaaaaaaa#########################.........aa#########################.......................................aaa#######..........................", 185"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.y.: : *.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.w.1 , y.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.u.y > > w y.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.W > , ^ a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.u.3 , *.a.a.a.> > 3 <.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.^ > : a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
81"..............................................................aa###............................................................aaaaaaaa#######################..........aa#########################.......................................aaa######...........................", 186"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.T : . 1 ,.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.>.> , W a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.Y : : 3 <.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.J > > y.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.J : , a.a.a.a.: > G u.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.^ > w a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
82".............................................................aaa###...........................................##................aaaaaaaa#####################..........aa#########################........................................aa#######...........................", 187"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.6 : 4 q.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.T > : 9 a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.^ > , E u.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.y.9 > 9 a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.-.: . P a.a.a.a.K > : ~ a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.Y : E a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
83".............................................................aa###...........................................#####...............aaaaaaaaa##################..........aaa########################.........................................aa#######...........................", 188"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.w > w y.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.w.e , 0.a.a.I 1 e u.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.>., . > 3 =.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.:., : > *.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.9., . : 9.a.a.a.a.a.:.9.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.y > <.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
84"............................................................aa###...........................................#######...............aaaaaaaaaa##############a...........aaa#######################..........................................aa#######...........................", 189"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.*.: > K a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.:.1 . 7 a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.0.3 . . > q 9.a.a.a.a.a.a.a.a.a.a.a.a.T : 3 a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.q.1 . y a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.6 1 a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
85"...........................................................aa####...........................................########...............aaaaaaaaaaa##########aa...........aaa#######################...........................................aa######............................", 190"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.q . . : ! a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.;.> > ! a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.y.9 : : H 0.a.a.a.a.a.a.a.a.0.w , , ! a.a.a.a.a.a.a.u.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.w.3 . , w.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a., : I a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
86"..........................................................aa####...........................................##########...............aaaaaaaaaaaaaaaaaaaaa............aaaa####################.............................................aa######............................", 191"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.y.1 . : 5 9.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.;.> 4 u.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.t : . : : 4 T :.y.a.u.,.H : : , u.a.a.a.a.a.a.w.6 q.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.<.1 : : T a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.y.: : 0.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
87"..........................................................aa###..........................................a###########.................aaaaaaaaaaaaaaaaaa............aaaaa###################..............................................aa######............................", 192"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.<.> : U a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.;.> : ;.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.I : : , : , : , . . > T a.a.a.a.a.a.a.G 4 y.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.^ > . 3 a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.;., 5 a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
88".........................................................aa###..........................................aa#############..................aaaaaaaaaaaa...............aaaaaa#################...............................................a#######............................", 193"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.-.> : 3 >.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.:., . r a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.! : 4 u.a.a.a.a.a.a.<.> . 5 y.a.a.a.a.a.a.a.a.a.a.a.a.a.<.e : : ;.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.U . : E a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
89"........................................................aa###..........................................aa##############.............................................aaaaaaa##############a...............................................aa######.............................", 194"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.9.3 : : > L u.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.:.> : w.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.*., > :.a.a.a.a.a.a.a.q : 3 ,.a.a.a.a.a.a.a.a.a.a.9.r : . . w a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.8 : y.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
90"........................................................aa###...................................##.....a################............................................aaaaaaaa###########aa................................................aa######.............................", 195"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.y.y > . > , T y.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.9.> : E a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.,., : H a.a.a.a.a.a.a.-.> > E y.a.a.a.a.a.,.U 3 > . : 0.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.: q a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
91".......................................................aa###...................................###....aa################.............................................aaaaaaaaa######aaa..................................................aa######.............................", 196"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.9.G : , > , , > > 7 ^ u.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.y.1 . 6 a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.0.4 : . 5 y.a.a.a.a.a.a.a.4 > : 5 r q 6 , , . , ! a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.,., , ^ a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
92".......................................................aa##...................................####...aa##################.............................................aaaaaaaaaaaaaaaa...................................................aa#####..............................", 197"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.9.^ ~ :.y.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.u.8 . > ,.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.u.G : 1 w.a.a.a.a.a.a.a.~ > . : r a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.E . > u.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
93"......................................................aa###..................................####...aa###################..............................................aaaaaaaaaaaaaa...................................................aaa#####..............................", 198"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.r > : L a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.;.1 : . > ,.a.a.a.a.a.a.a.u.1 1 y.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.w G a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
94".....................................................aa###..................................####....aa####################..............................................aaaaaaaaaaa.....................................................aa######..............................", 199"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.U , 1 u.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.u.H : . , ;.a.a.a.a.a.a.a.a.R > > >.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.> , ;.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
95"....................................................aaa##..................................#####...aa#####################................................................aaaaaa........................................................aa#####...............................", 200"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.^ > . > =.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.;.w : : : 4 0.a.a.a.a.a.a.a.a.u., , T a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.9.> 1 a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
96"....................................................aa###.................................#####....aa######################.............................................................................................................aa#####...............................", 201"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.>.> : r a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.q.U 1 , . . > J u.a.a.a.a.a.a.a.a.a.T , . q a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.~ : : P a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
97"...................................................aa###.................................######...aaa######################.............................................................................................................a######...............................", 202"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.0., , w.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.u.E *.y.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.*.r > , . . , : r 0.a.a.a.a.a.a.a.a.a.a.y., . 3 y.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.y > 9.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
98"..................................................aa####................................######....aaaaa####################............................................................................................................aa######...............................", 203"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.6 . : ! a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.y.8 : , > ! a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.>.U 0 2 : : > : . , r ^ w.a.a.a.a.a.a.a.a.a.a.a.a.~ , 3 w.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.2 4 a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
99"..................................................aa###...............................########...aaaaaaa###################............................................................................................................aa#####................................", 204"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.K > . 9 a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.w.3 . > t a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.y.0.y.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.y 3 w.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.w.: : E a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
100".................................................aa####..............................########....aaaaaaaaa#################............................................................................................................aa#####................................", 205"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.*.> : 9.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.u.6 . > G a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.1 . 2 q.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.&., : y.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
101".................................................aa###..............................#########....aaaaaaaaa#################............................................................................................................aa#####................................", 206"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.0.> > U a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.y : > H a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.u.: : 6 q.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.J q a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
102"................................................aa###..............................#########.......aaaaaaaa################............................................................................................................aa####.................................", 207"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.7 . 3 u.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.T , > ~ a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.r . , ! a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.5 , &.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
103"...............................................aaa###............................##########.........aaaaaaaa###############............................................................................................................aa####.................................", 208"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.L > : ;.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.*.: > 9.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.:.> : G y.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.y.: > u.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
104"...............................................aa###............................##########............aaaaaaa###############..........................................................................................................aaa####.................................", 209"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.=.: . . e a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.9.-.a.a.a.a.a.0., . 6 a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.:., . . > 5 :.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.;., G a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
105"..............................................aaa###...........................##########..............aaaaaa###############..........................................................................................................aaa####.................................", 210"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.q., > 9.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.u.L : . 8 a.a.a.a.a.8 . : U a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.w.q : > . , , K <.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.U . , ;.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
106".............................................aaa####.........................##########.................aaaaaa##############..........................................................................................................aa#####.................................", 211"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.8 . : L a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.^ 1 : . , E a.a.a.a.U : . : >.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.w.W 8 > 1 5 0 G *.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.8 1 a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
107".............................................aaa###.........................#########...................aaaaaa##############.........................................................................................................aaa####..................................", 212"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.T > 1 y.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.9.9 > . : e a.a.a.a.>.> . . 0 a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.u.: . I a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
108"............................................aaa####.......................##########.....................aaaaaa#############.........................................................................................................aa#####..................................", 213"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.0.: > ! a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.T : . : q u.a.a.a.a.5 > 9.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.;., > 9.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
109"............................................aa#####......................##########......................aaaaaa#############.........................................................................................................aa#####..................................", 214"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.9 . 4 a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.0.8 : . : q u.a.a.a.a.*.: . J a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.L . 3 a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
110"...........................................aaa#####.....................##########........................aaaaaa############........................................................................................................aaa####...................................", 215"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.~ > , -.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.Q > . : w u.a.a.a.a.a.4 > u.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.4 : U a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
111"...........................................aa######...................###########.........................aaaaaa###########.........................................................................................................aaa####...................................", 216"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.w., 5 a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.q.0 > : w u.a.a.a.a.a.a.*., . , >.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.y.: > <.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
112"..........................................aaa#######................###########............................aaaaaa##########.........................................................................................................aa####....................................", 217"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.r : . , &.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.^ , . : w u.a.a.a.a.a.a.a.a.9.4 : : W a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.^ , 3 a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
113"..........................................aa#########..............###########.............................aaaaaa##########.........................................................................................................aa####....................................", 218"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.*.> 4 a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.w.e > > K a.a.a.a.a.a.a.a.a.a.a.u.y , G a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.H . U a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
114".........................................aaa##########...........############...............................aaaaa##########........................................................................................................aaa####....................................", 219"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.y.1 > ^ a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.*., . > W a.a.a.a.a.a.a.a.a.a.a.a.a.a.E > 4 a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.1 : <.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
115".........................................aa#################################................................aaaaaa#########........................................................................................................aa####.....................................", 220"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.J > 2 a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.y.y : . : =.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.>.1 . . a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.0.> 3 a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
116"........................................aaa################################..................................aaaaa#########........................................................................................................aa####.....................................", 221"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.>.: : ! a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.^ > . : 1 <.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.0.3 . : y.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.! : . U a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
117"........................................aa################################...................................aaaaa#########........................................................................................................aa###......................................", 222"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.9 . . : y.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.q.q : : 6 y.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.w.4 . > w.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.e , ,.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
118".......................................aaa###############################.....................................aaaa#########.......................................................................................................aaa###......................................", 223"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.>.> 5 a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.E > . > y u.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.w., , 9.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a., 1 a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
119".......................................aaa##############################......................................aaaa#########.......................................................................................................aaa###......................................", 224"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.q . P a.a.a.a.a.a.a.a.a.a.a.a.a.<.6 : : ! a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.>.> , ,.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.,., . I a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
120"......................................aaa#############################........................................aaaa#########.......................................................................................................aa###.......................................", 225"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.,.> , :.a.a.a.a.a.a.a.a.a.a.a.w.G : . . : 1 ,.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.U : , :.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.T : , <.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
121"......................................aaa############################.........................................aaaa#########......................................................................................................aaa###.......................................", 226"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.w : u.a.a.a.a.a.a.a.a.a.y.U > . . : w y.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.y., , -.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.q 1 a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
122"......................................aaa##########################............................cccc...........aaaa########.......................................................................................................aaa###.......................................", 227"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.<.> : a.a.a.a.a.a.a.a.a.! , : . : T a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.T : , >.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.u.: . P a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
123".....................................aaaa########################aa........................cccccccccc.........aaaa########.......................................................................................................aa###........................................", 228"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.e : 9.a.a.a.a.a.>.J , : . , ;.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.w.: > 9.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.:., , ,.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
124".....................................aaaa########################a.....................ccccccccccccccc........aaaa########.......................................................................................................aa###........................................", 229"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.9.> 4 ^ 9.;.Y 3 , . : 8 w.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.4 > w.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.I . 1 a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
125".....................................aaaa######################aa...................cccccccccccccccccc........aaaa########......................................................................................................aaa###........................................", 230"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.r . > , , . : P u.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.K . : u.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.6 . P a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
126".....................................aaaa#####################a...................cccccccccccccccccccc........aaaa#######.......................................................................................................aaa##.........................................", 231"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.w.: : 2 >.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.*., : a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.y.: , ,.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
127".....................................aaaaa##################aa.................ccccccccccccccccccccccc........aaaa#######.......................................................................................................aa###.........................................", 232"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.~ , . : H u.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.,., , a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.*., , a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
128".....................................aaaaaa##############aaa................cccccccccccccccccccccccccaaa......aaaa#######..................................................................#...................................aaa###.........................................", 233"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.w : 1 =.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.q., 8 a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.J . y a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
129".....................................aaaaaaa###########aaa................cccccccccccccccccccccccccccaaaa.....aaaa######...................................................................#...................................aa####.........................................", 234"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.u.: , r y.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.u.: J a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.2 > ^ a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
130".....................................aaaaaaaaa######aaaaa................cccccccccccccccccccccccccccaaaaa.....aaaa######..................................................................##...................................aa###..........................................", 235"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.;., . , ^ a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.: : ! a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.q.: : y.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
131"......................................aaaaaaaaaaaaaaaaa................ccccccccccccccccaaaaccccccccaaaaa......aaaa#####...................................................................##..................................aaa###..........................................", 236"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.~ > > e w.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.: , :.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.~ , 5 a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
132".......................................aaaaaaaaaaaaaa.................cccccccccccccccaaaaaacccccccaaaaaa......aaaa#####................................................................a.###..................................aa####..........................................", 237"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.T . > 4 ;.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.. . y.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.r . P a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
133"........................................aaaaaaaaaaa.................ccccccccccccccaaaaaaaaaccccccaaaaaa.......aaaa####.................................................................a.###..................................aa####..........................................", 238"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.H : , E a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.. 1 a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a., , :.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
134".........................................aaaaaaaa.................ccccccccccccaaaaaaaaaaaaccccccaaaaaaa.......aaaa####................................................................aa####.................................aaa###...........................................", 239"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.P > J y.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.u.: . J a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.<., : a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
135"................................................................cccccccccccaaaaaaaaaaaaaaacccccaaaaaaa........aaaa###................................................................aaa###..................................aa####...........................................", 240"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.&., > 0 9.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.y.: , ;.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.E : q a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
136"..............................................................cccccccccccaaaaaaaaaaaaa....ccccaaaaaaa.........aaaa#..................................................................aa####..................................aa####...........................................", 241"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.0.> . > 6 *.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.y.: : a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.q : Q a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
137".............................................................ccccccccccaaaaaaaaaaa.......cccaaaaaaaa..........aaaa..................................................................aa####..................................aa####............................................", 242"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.J > , > J <.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.y.: r a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.: > 0.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
138"...........................................................ccccccccccaaaaaaaaaa.........ccc.aaaaaaa...........aaa...........aaa.....................................................aa####..................................aa####............................................", 243"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.w > : > 6 ~ y.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.u.: , *.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.u.E ^ a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.:., 1 a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
139"..........................................................cccccccccaaaaaaaaa..........cccc..aaaaaa............aa............aaa.....................................................a####...................................aa####............................................", 244"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.u.^ y 0 H T <.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.. 4 a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.T . y a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.U . H a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
140".........................................................cccccccccaaaaaaaa...........cccc..aaaaaa.............a............aaa##...................................................aa####...................................aa####............................................", 245"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.: , =.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.9.: t a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.6 , *.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
141"........................................................ccccccccaaaaaaaa............ccc...aaaaaa...........................aaa##..................................................aa####...................................aa####.............................................", 246"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.r.4.+.| F M v z c c c c c m | 6.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.: . 8 a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.6 , ^ a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.u.: : y.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
142"......................................................cccccccccaaaaaaa............cccc...aaaaaa...........................aaa##...................................................aa####...................................aa####.............................................", 247"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.r.#.) m z z v c u u u u u u u u u u u c c v #.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a., . : >.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.E : : y.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.*., 6 a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
143".....................................................ccccccccaaaaaaaa............ccc....aaaaaa............................aa###..................................................aa####....................................aa####.............................................", 248"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.6.o.D v z c u u u u u u u u u u u u u u u u u u u u c 5.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.1 : *.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.0.: 8 a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.K : U a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
144"....................................................ccccccccaaaaaaa............ccc.....aaaaaa............................aaa###..................................................aa####....................................aa####.............................................", 249"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.i.+.Z c c c u u u u u u u u u u u u u u u u u u u u u u u u z X.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.e : : :.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.9 . , *.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.4 > >.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
145"..................................................ccccccccaaaaaaa.............cc.....aaaaaa..............................aa###..................................................aa####.....................................aa###..............................................", 250"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.t.O.V z c u u u u u u u u u u u u u u u u u u u u u u u u u u u u c X.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.q.W 0.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.! > 4 a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.y.: > a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
146".................................................cccccccaaaaaaa..............cc.....aaaaaa..............................aaa###..................................................aa####....................................aa####..............................................", 251"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.r.X.B x c u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u c p.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.w.: , ^ a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.&., w a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
147"................................................cccccccaaaaaaa.....................aaaaaa...............................aa###..................................................aa####.....................................aa####..............................................", 252"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.i...m c x u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u x } a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.u.&.w.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.e . 1 u.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.J . E a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
148"...............................................ccccccaaaaaaa.....................aaaaaa................................aaa###..................................................aa####.....................................aa####..............................................", 253"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.6.F c c u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u c t.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.y.0 . T a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.*.> : ! a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.3 , >.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
149"..............................................ccccccaaaaaaa.....................aaaaa.................................aaa####.................................................aa####......................................aa###...............................................", 254"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.p.#.m c u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u c 3.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.e : > *.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.y., 3 u.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.y.: : a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
150".............................................ccccccaaaaaa.....................aaaaa...................................aaa###.................................................aaa####.....................................aa####...............................................", 255"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.r.{ c c u u u u u u u u u u u u u u u u u u u u u u u c c x v V ) S M c u u u u u u u c 1.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.! : 1 a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.J : : *.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.&.> 6 a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
151"...........................................ccccccaaaaaaa.....................aaaa....................................aaa####.................................................aa####......................................aa####...............................................", 256"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.3.A c z u u u u u u u u u u u u u u u u u u u u u c u m { +.5.p.a.a.a.a.a.2.z u u u u u c O.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.0.> : T a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.>.: q a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.H L a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
152"..........................................ccccccaaaaaa..............................................................aaa####.................................................aaa####......................................aa####...............................................", 257"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.7.Z c u u u u u u u u u u u u u u u u u u u u z c c F #.i.a.a.a.a.a.a.a.a.a.a.| z u u u u c o.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.8 . : y.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.u.4 : 9.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.3 , &.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
153".........................................ccccccaaaaa...............................................................aaa#####.................................................aa####......................................aaa###................................................", 258"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.r./ z u u u u u u u u u u u u u u u u u u u u x M .6.a.a.a.a.a.a.a.a.a.a.a.a.a.3.c u u u u c 2.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.U > . G a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.Y > . J a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.y.: > w.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
154"........................................ccccccaaaaa................................................................aaa#####................................................aa####.......................................aa####................................................", 259"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.i.{ z z u u u u u u u u u u u u u u u u u u c v | r.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.1.c u u u x b 7.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.>.> : <.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.9.> > y.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.^ , 1 a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
155".......................................ccccccaaaaa................................................................aaa######................................................aa####.......................................aa####................................................", 260"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.p...c z u u u u u u u u u u u u u u u u u c c F 3.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.+.z u u u c B i.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.y.1 . 6 a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.9 > R a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.H r a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
156"......................................ccccccaaaaa................................................................aaa######................................................aa####........................................aa###.................................................", 261"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.+.b c u u u u u u u u u u u u u u u u u c B +.p.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a...c u u u c { p.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.G : > ^ a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.! : 3 a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.3 : W a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
157".....................................ccccccaaaaa.................................................................aaa#####.................................................aa####........................................a####.................................................", 262"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.t.C c u u u u u u u u u u u u u u u u u c S 6.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a._ c u u c m 5.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.^ > > u.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.w.> > *.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.w.: , <.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
158"....................................ccccccaaaaa.................................................................aaa######................................................aa####........................................aa####.................................................", 263"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.1.v z u u u u u u u u u u u u u u u u c S 6.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.e.m c u u z } a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.q., . P a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.e : . q a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.^ , : a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
159"...................................ccccccaaaaa.................................................................aaa######.................................................aa####........................................aa####.................................................", 264"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.p.` c u u u u u u u u u u u u u u u u c S 6.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.#.c u u c m 7.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.9 . : 0.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.*.> : <.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.H 8 a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
160"..................................ccccccaaaaa..........................c.......................................aaa######................................................aa####.........................................aa####.................................................", 265"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.6.m c u u u u u u u u u u u u u u u c S 6.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.p.) c u u z | a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.T , q a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.u.1 : J a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.3 . I a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
161".................................ccccccaaaaa.......................ccccc......................................aaa######................................................aa#####........................................aa#####.................................................", 266"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.X.c u u u u u u u u u u u u u u u c m 6.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.p.M z u c m e.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.:.: > 9.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.J : , y.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.w.: , -.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
162"................................cccccccaaaa......................cccccc......................................aaa######.................................................aa####.........................................aa#####.................................................", 267"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.i.C c u u u u u u u u u u u u u u u z } a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.i.m x c v O.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.0., > T a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.>.: : E a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.^ , : y.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
163"...............................ccccccccaaa.....................ccccccc......................................aaaa######................................................aa#####.........................................aa#####.................................................", 268"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.e.b z u u u u u u u u u u u u u u z b 5.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.i.M u v o.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.y.4 . 8 a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.u.4 . 3 a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.H 3 a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
164"..............................cccccccccaaa...................cccccccc...a...................................aaa######................................................aaa####.........................................aaa####..................................................", 269"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.e.v u u u u u u u u u u u u u u u c / p.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.#.#.7.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.e : , 9.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.T > > >.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.2 y a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
165".............................ccccccccccca..................ccccccccc..aaa..................................aaa######.................................................aa#####.........................................aaa####..................................................", 270"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.5.c u u u u u u u u u u u u u u x c 1.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.I : : T a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.9.: : K a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.w.: : ~ a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
166"............................ccccccccccccc................ccccccccccaaaaa..................................aaa#######................................................aa#####..........................................aa#####..................................................", 271"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.2.c u u u u u u u u u u u u u u x m t.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.^ : . 6 a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.8 . 2 u.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.^ , , 9.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
167"............................cccccccccccccc.............cccccccccccaaaaa...................................aaa######....................................##...........aa#####..........................................aa#####..................................................", 272"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.1.c u u u u u u u u u u u u u u z B i.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.,.> . : 9.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.L : > ;.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.G : a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
168"...........................ccccccccccccccccccccccccccccccccccccccaaaaa...................................aaa#######...................................####.........aa#####..........................................aaa#####..................................................", 273"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.+.z u u u u u u u u u u u u u u z B p.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.w.1 : T a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.*.> : H a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.2 0 a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
169"..........................ccccccccccccccccccccccccccccccccccccccaaaaa...................................aaa#######...................................######.......a######...........................................aaa####...................................................", 274"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.3.u u u u u u u u u u u u u u u u n p.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.u.8 . . 5 a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.9.> . 1 y.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.w.> . Y a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
170"..........................cccccccccccccccccccccccccccccccccccccaaaaa...................................aaa#######..................................a.######......a#######...........................................aa#####...................................................", 275"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.r.v u u u u u u u u u u u u u u u c 6.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.y : > <.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.^ q.a.a.a.a.a.a.a.a.a.a.a.u.4 > =.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.^ : , :.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
171".........................cccccccccccccccccccccccccccccccccccccaaaaa....................................aaa#######..................................a########....########............................................aa#####...................................................", 276"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.p.M u u u u u u u u u u u u u u u c o.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.T : > T a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.^ . 3 w.a.a.a.a.a.a.a.a.a.u.e : . r a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.G : y.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
172".........................cccccccccccccccccccccccccccccccccccaaaaaa....................................aaa#######..................................a#####################...........................................aaa#####...................................................", 277"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.F c u u u u u u u u u u u u u u u m a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.=.> . q a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.^ > . 4 y.a.a.a.a.a.a.a.y.7 : , y.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.1 . 4 a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
173".........................ccccccccccccccccccccccccccccccccccaaaaaa....................................aaa#######..................................a#####################............................................aaa#####...................................................", 278"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a...c u u u u u u u u u u u u u u u c @.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.9.> , w.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.:.> : 5 y.a.a.a.a.a.,.3 : > ^ a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.q.> H a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
174".........................ccccccccccccccccccccccccccccccccaaaaaaa.....................................aaa#######..................................a#####################............................................aaa####....................................................", 279"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.e.c u u u u u u u u u u u u u u u u v a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.y.2 . . > *.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.w., . 2 =.u.u.;.0 > . w a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.^ , > ^ a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
175".........................cccccccccccccccccccccccccccccaaaaaaaaa.....................................aaa#######..................................a#####################.............................................aaa####....................................................", 280"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a./ u u u u u u u u u u u u u u u u u / a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.p.@./ 3.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.9 . : K a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.u.6 . . , > : , : q.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.y > 0.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
176"..........................ccccccccccccccccccccccccccaaaaaaaaaa.....................................aaa########.................................aa####################..............................................aa#####....................................................", 281"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.e.c u u u u u u u u u u u u u u u u x ..a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.7.F c c u ` a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.J : 5 u.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.G : , ! a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.1 , a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
177"..........................acccccccccccccccccccccccaaaaaaaaaa......................................aaa########.................................aa#####################..............................................aa#####....................................................", 282"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.F u u u u u u u u u u u u u u u u u c $.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.5.Z c x u c ) a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.! > : 9.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.! , . 9 a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.w.> w a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
178"..........................aaacccccccccccccccccccaaaaaaaaaa........................................aaa#######.................................aa#####################..............................................aaa#####....................................................", 283"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.e.c u u u u u u u u u u u u u u u u u v 1.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.2.V c u u u z O.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.:.: > ! a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.>.: > 0.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.~ > : R a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
179"..........................aaaaacccccccccccccccaaaaaaaaa..........................................aaa#######..................................aa####################...............................................aaa####.....................................................", 284"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.#.c u u u u u u u u u u u u u u u u u u A a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.$.m c u u u u v 3.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.0.> : r a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.w.1 > ~ a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.J , >.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
180"...........................aaaaaaaacccccccccaaaaaaaaaa..........................................aaa########.................................aa#####################...............................................aaa####.....................................................", 285"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.' u u u u u u u u u u u u u u u u u u u x +.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.r.O.b c u u u u c M t.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.y.4 . 1 y.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.e . : y a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.9 : u.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
181"...........................aaaaaaacccccccccaaaaaaaa.............................................aa########.................................aaa####################................cc..............................aaa####.....................................................", 286"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.V u u u u u u u u u u u u u u u u u u u u z { p.a.a.a.a.a.a.a.a.a.a.7. .m c c u u u u u c _ p.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.e : > :.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.&., 4 y.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.1 6 a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
182".............................aaaaccccccccaaaaaaaa..............................................aaa########.................................aa#####################..............cccc..............................aaa####..............ccccccc...............cccccccccc.......", 287"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.v u u u u u u u u u u u u u u u u u u u u u x x F $.3.2.2.1.1.1.` v c x u u u u u u x v 2.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.I > . : U a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.y.1 > ,.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.y.: . I a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
183"...............................accccccccaaaaaaa...............................................aaa########.................................aaa####################.............ccccc...............................aa#####...........ccccccccc.............cccccccccccc........", 288"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.B u u u u u u u u u u u u u u u u u u u u u u u u c v c v v v v u u u u u u u u u c D i.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.^ > : 9 a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.H : . > W a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.>., . , =.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
184"..............................ccccccccaaaaaaaa..............................ccccc............aaa#########................ccccccc..........aa####################............cccccc...............................aaa#####........cccccccccc.............cccccccccc............", 289"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.] u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u x c #.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.,.> 2 y.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.:.> : e a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.~ > , u.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
185".............................cccccccaaaaaaaa..............................ccccccc...........aaa########c...............cccccccccc........aa######aaa###########..........ccccccc..aa.............................aaa####.......cccccccccc..aaaaaa.....cccccccc....aaaaaaa.....", 290"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.@.c u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u c C r.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.w.1 > <.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.u.3 . 6 u.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.L . y a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
186"............................cccccccaaaaaaa..............................cccccccc...........aaaa########cc............cccccccccccc........aa######aaa##########.........ccccccc..aaaa.............................aaa####.....cccccccccc.aaaaaaaa....cccccccc..aaaaaaaaaa......", 291"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.b u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u z v #.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.6 . : &.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.U > . 3 y.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.q , *.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
187"...........................cccccccaaaaaaa..............................ccccccccc...........aaa#######cccc...........ccccccccccccc.......aa######aaaaa########........ccccccc..aaaaa...cc.........................aaa####...ccccccccc..aaaaaaaa....cccccccc..aaaaaaaaaa........", 292"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.1.c u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u c ` p.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.y : , U a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.<.> : 2 : 1 0.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.4 > u.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
188"..........................cccccccaaaaaa..............................ccccccccccaaa........aaa########cccc.........cccccccccccccca.......aa#####aaaaaaa######........ccccccc.aaaaa....cc..........................aaa####.ccccccccc.aaaaaaaaa....cccccccccaaaaaaaaaa...........", 293"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.F c u u u u u u u u u u u u u u u u u u u u u u u u u u u u u c B 6.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.T , : r a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.8 . : Y u.y > . , ,.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.4 : W a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
189".........................ccccccaaaaaa..............................ccccccccccccaaa.......aaaa#######ccccc.......cccccccccccccccca......aa######.aaaaaaa####.......ccccccc.aaaaa....cccc..........................aaa####ccccccc.aaaaaaaaaa....cccccccccaaaaaaaaa..............", 294"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a./ c u u u u u u u u u u u u u u u u u u u u u u u u u u z v @.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.=.: . 6 u.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.^ > > U a.a.a.E > . : 7 w.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.6 5 a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
190"........................ccccccaaaaaa..............................ccccccccccccaaa.......aaaa########ccccaa.....cccccccccccccccccaa.....aa#####..aaaaaaaaaa......ccccccccaaaaaa....cccc...........................aaa##ccccccccaaaaaaaaaa....cccccccccaaaaaaaa.................", 295"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.{ c u u u u u u u u u u u u u u u u u u u u u u u u c ` i.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.9., , w.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.1 . e a.a.a.a.a.;., : . : : J u.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.&. 3 9.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
191".......................ccccccaaaaaa..............................cccccccccccccaaa.......aaa########cccccaa....cccccccccccccccccaaa....aa#####....aaaaaaaa.....cccccccccaaaaa....ccccc............................aaa#ccccccccaaaaaaaaa.....cccccccccaaaaaaa...................", 296"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.6.m c u u u u u u u u u u u u u u u u u u u u c B 5.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.y.3 . > ,.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.E > > y.a.a.a.a.a.a.q.Q G T y.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
192"......................ccccccaaaaa...............................cccccccccccccaaaa......aaa########ccccccaa...ccccccccccccccccccaa....aaa#####.....aaaaaa.....ccccccccaaaaaa....cccccc.aaa........................aaacccccccaaaaaaaaa.....ccccccccccaaaaaa.....................", 297"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.3.) c c u u u u u u u u u u u u u u u z c +.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.9 : > ^ a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.y., > &.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
193".....................ccccccaaaaa..............................ccccccccccccccaaaa......aaaa########ccccccaa.cccccccccccccccccccaaa....aa#####...............ccccccccaaaaaa....cccccccaaaa.........................aaccccccaaaaaaaaa.....ccccccccccccaaaa.......................", 298"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.1.v u u u u u u u u u u u u u c ` i.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.K > > U a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.I : : r a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.p.6.1.X.` / @.t.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
194"....................ccccccaaaaa..............................cccccccccccccccaaa......aaaa########ccccccaa.ccccccccccccccccccccaaa...aaa####...............cccccccaaaaaa.....ccccccccaaa..........................acccccccaaaaaaa......ccccccccccccccca........................", 299"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.t.C c u u u u u u u u u u u c V 7.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.~ : : e a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.w.: , y.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.3./ M m 5.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.p.e.e.r.p.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.p.#.V z c v c u u c z m t.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
195"...................ccccccaaaaa..............................cccccccccccccccaaaa...ccaaaa########cccccccaacccccccaacccccccccccaaa....aa#####..............cccccccaaaaa......ccccccccaaa..........................ccccccccaaaaaa.......ccccccccccccccccccccccccccccccccccc......", 300"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.1.v u u u u u u u u u u u z b 1.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.t.6.3.p.a.a.a.a.a.a.a.a.a.:.: . 5 u.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.G : > *.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.r.} b c u u z e.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.e.2.O. ./ V m c u v c c u V a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.3.F z c u u u u u u u u u x M a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
196"..................ccccccaaaaa.............................cccccccacccccccccaaa...ccaaaa########cccccccaaccccccaaaacccccccccccaaa...aaa#####............cccccccaaaaaa......cccccccccaaa.........................ccccccccaaaaa.........ccccccccccccccccccccccccccccccccccccc....", 301"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.p._ c u u u u u u u u u u z c o.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.5.D c c c D a.a.a.a.a.a.a.a.q., , 8.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.e.1.| / ..$.i.a.a.a.a.a.a.a.<.: : t a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.e.F z c u u z v 5.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.i.2.} V u c c c u u u u u u u u c c { a.a.a.a.a.a.a.a.a.a.a.a.p...v v z u u u u u u u u u u z x ..a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
197".................ccccccaaaaa.............................cccccccaaccccccccaaaa..cccaaa#########cccccccacccccaaaaaaccccccccccaaa....aa#####............cccccccaaaaa.......cccccccccaaa.........................ccccccccaaaaa..........cccccccccccccccccccccccccccccccccccccc...", 302"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.e.m c u u u u u u u u u u c ` t.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.$.M z u u u u A a.a.a.a.a.a.a.u.4 . X $ a d f x c u v / i.a.a.a.a.a.a.a.a.a.a.a.a.a.a.r.| v x c u u u c M p.a.a.a.a.a.a.w . > y.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.7.D x u u u u x F t.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.r.| m z c u u u u u u u u u u u u c v | t.a.a.a.a.a.a.a.a.a.a.a.a.o.v c u u u u u u u u c u n Z _ o.6.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
198"................ccccccaaaaa.............................cccccccaaccccccccaaaa..cccaaaa########cccccccccccccaaaaaaaccccccccccaaa....aa#####..........ccccccccaaaaa.......ccccccccccaaa........................ccccccccaaaaa.............aaaaaaaaaaaaaa.......cccccccccccccccc..", 303"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.O.z u u u u u u u u u u c C 7.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.p.| v c u u u u u c 2.a.a.a.a.a.a.a.e : ; # g k k u u u u u u u z b 6.a.a.a.a.a.a.a.a.a.a.a.2.C c z u u u u u u u z ..a.a.a.a.a.>.: > E a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.6.A c u u u u c M 5.a.a.a.a.a.a.6.e.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.p.@.V z c u u u u u u u u u u u u u c n O.p.a.a.a.a.a.a.a.a.a.a.a.a.O.b c u u u u u u u c m | 2.p.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
199"...............ccccccaaaaa.............................ccccccaaaaccccccccaaa..ccccaaa########cccccccccccccaaaaaaaacccccccccaaa....aa#####..........ccccccccaaaaa.......cccccccccccaa........................cccccccccaaaa.............aaaaaaaaaaaaaaaaaaaaaaaaaacccccccccccc..", 304"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.i.S c u u u u u u u u u c n 1.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.5.b z u u u u u u u V a.a.a.a.a.a.a.U < a k k u u u u u u u u u u u u { a.a.a.a.a.a.a.a.a.6.V c u u u u u u u u u u c +.a.a.a.a.a.e . 4 a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.5.C c u u u u c b #.a.a.a.a.a.a.e.F m a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.1.b c u u u u u u u u u u u u u u c B 1.a.a.a.a.a.a.a.a.a.a.a.a.a.+.b x u u u u u u x x D 5.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
200"..............ccccccaaaaa............................cccccccaaaaacccccccaaa..ccccaaa#########ccccccccccccaaaaaa..ccccccccccaaa....aa#####.........ccccccccaaaaa.......cccccccccccaaa.......................cccccccccaaaa..............aaaaaaaaaaaaaaaaaaaaaaaaaaaaccccccccccc.", 305"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.3.v x u u u u u u u u z c o.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.p.{ x u u u u u u u u z 5.a.a.a.a.a.a.&.- k u u u u u u u u u u u u u u u F a.a.a.a.a.a.a.t./ c u u u u u u u u u u u u v 6.a.a.a.a.w.: > ;.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.3.V c u u u u c c .p.a.a.a.a.a.i.` x u #.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.6.B c u u u u u u u u u u u u u c v { e.a.a.a.a.a.a.a.a.a.a.a.a.a.+.b c u u u u u u z c | t.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
201".............ccccccaaaaa............................ccccccaaaaaaccccccccaa.cccccaaa########cccccccccccccaaaaa....ccccccccccaa....aa#####........cccccccccaaaaa........cccccccccccaaa......................cccccccccaaaa................aaaaaaaaaaaaaaaaaaaaaaaaaaaacccccccccc.", 306"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.{ c u u u u u u u u u z D i.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.7.m c u u u u u u u u u D a.a.a.a.a.a.%.h k u u u u u u u u u u u u u u u x ..a.a.a.a.a.a.| z x u u u u u u u u u u u u u c p.a.a.a.a.I : . r a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.5.B c u u u u u c / t.a.a.a.a.a.a. .c z u m a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.p.) c u u u u u u u u u u u u z c D 1.p.a.a.a.a.a.a.a.a.a.a.a.a.a.$.b x u u u u u u x z ` i.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
202"............cccccccaaaa............................ccccccaaaaaaccccccccaaacccccaaaa########ccccccccccccaaaaa....cccccccccccaa....aa#####.......cccccccccaaaaa........ccccccccccccaa......................ccccccccccaaa......................................aaaaaaacccccccccca", 307"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.r.M c u u u u u u u u u c $.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a...c u u u u u u u u u u z e.a.a.a.a.a.[ k u u u u u u u u u u u u u u u u u c 3.a.a.a.a.e.M z u u u u u u u u u u u u u u x } a.a.a.a.u., : w.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.e.F c u u u u u c B 6.a.a.a.a.a.a.2.v c u u c 1.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.3.b z u u u u u u u u u u u c c { t.a.a.a.a.a.a.a.a.a.a.a.a.a.a.1.n x u u u u u u u c F e.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
203"...........cccccccaaaa............................ccccccaaaaaa.cccccccaaacccccaaaa########ccccccccccccaaaaa.....ccccccccccca....aaa####......ccccccccccaaaaa.........ccccccccccccaa.....................cccccccccccaa..........................................aaaacccccccccca", 308"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.5.v u u u u u u u u u c D i.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.r.B c u u u u u u u u u u z / a.a.a.a.6.n k u u u u u u u u u u u u u u u u u u c a.a.a.a.X.c u u u u u u u u u u u u u u u u z i.a.a.a.a.! > > T a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.p.{ c u u u u u z v #.a.a.a.a.a.a.p._ c u u u u m a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.p.{ c u u u u u u u u u u u u c ] i.a.a.a.a.a.a.a.a.a.a.a.a.a.a.1.m x u u u u u u u u c +.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
204"..........cccccccaaaa............................ccccccaaaaaa.ccccccccaaccccccaaa########cccccccccccccaaaa.....cccccccccccca....aaa####.....cccccccccccaaaa.........cccccccccccccaa....................cccccccccccaaa............................................aacccccccccca", 309"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.1.c u u u u u u u u x v 1.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.1.c x u u u u u u u u u u u z r.a.a.a.+.c u u u u u u u u u u u u u u u u u u u u ' a.a.e.V c u u u u u u u u u u u u u u u u z ] a.a.a.a.a.4 3 u.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.O.c x u u u u x x { p.a.a.a.a.a.a.5.b x u u u u z 1.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.r.m z u u u u u u u u u u u c C e.a.a.a.a.a.a.a.a.a.a.a.a.a.a.r.C c u u u u u u u u u v $.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
205"..........cccccccaaa............................ccccccaaaaa..ccccccccaaacccccaaaa########ccccccccccccaaaa......cccccccccccca...aaa####.....cccccccccccaaaa..........cccccccccccccaa...................ccccccccccccaa..............................................acccccccccca", 310"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.X.c u u u u u u u u c F t.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.` c u u u u u u u u u u u u c { a.a.a.` c u u u u u u u u u u u u u u u u u u u u c 6.a.O.c x u u u u u u u u u u u u u u u u u z r.a.a.a.a.;., > =.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.2.m z u u u u u c A e.a.a.a.a.a.a.p.` c u u u u u u m a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.e.b u u u u u u u u u u u u c O.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.O.c x u u u u u u u u u u z c ) ..O.#.1.3.e.r.p.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
206".........cccccccaaaa...........................ccccccaaaaa...cccccccaaacccccaaaa########ccccccccccccaaaaa.....ccccccccccccc....aaa###.....cccccccccccaaaa..........ccccccccccccccaa..................cccccccccccccaa..............................................acccccccccca", 311"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.` z u u u u u u u u c #.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.e.m c u u u u u u u u u u u u u c i.a.i.C c u u u u u u u u u u u u u u u u u u u u u m t.C c u u u u u u c u u u u u u u u u u u x F a.a.a.a.a.w 6 a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.7.Z c u u u u u c n 1.a.a.a.a.a.a.a.6.m x u u u u u u c #.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.3.c u u u u u u u u u u u x m r.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.A c u u u u u u u u u u u u u u u u z c v v c c u u x v b M V A { +.6.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
207".........cccccccaaa..........................cccccccaaaaa...ccccccccaccccccaaaa########.cccccccccccaaaaa......ccccccccccccc....aaa###....ccccccccccccaaa...........ccccccccccccccaa.................ccccccccccccccaa..............................................acccccccccca", 312"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.{ c u u u u u u u u c +.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.$.c u u u u u u u u u u u u u u c O.a.6.b u u u u u u u u u u u c x v u u u u u u u u z V c u u u u u u c / +.c u u u u u u u u u u x 6.a.a.a.a.w.: : :.a.a.a.a.a.a.a.a.a.a.a.a.a.a.t.) c u u u u u u c ..a.a.a.a.a.a.a.a.X.c u u u u u u u u v a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.1.c u u u u u u u u u u u z B i.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.1.c u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u c c v | i.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
208"........ccccccccaa..........................cccccccaaaa.....cccccccaccccccaaaaa########cccccccccccaaaaa......cccccccccccccc...aaa####..cccc.ccccccccaaaa...........ccccccccccccccaa................cccccccccccccccca..............................................ccccccccccaa", 313"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a. .c u u u u u u u u c X.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.p.) c u u u u u u u u u u u u u u x M a.$.c u u u u u u u u u k k ( 3.7.{ z u u u u u u u z c u u u u u c M e.a.5.v u u u u u u u u u u C a.a.a.a.a.T : 0 a.a.a.a.a.a.a.a.a.a.a.a.a.p.| c z u u u u u c m e.a.a.a.a.a.a.a.a. .z u u u u u u u u c ..a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.5.c u u u u u u u u u u u c C p.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.i.B x c x u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u x x ..a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
209"........cccccccaaa.........................ccccccaaaaa.....cccccccaccccccaaaaa########ccccccccccccaaaa.......cccccccccccccc...aaa###.ccccc.ccccccccaaaa...........cccccccccccccccca..............cccccccccccccccccca..............................................ccccccccccaa", 314"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.O.c u u u u u u u u c } a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.3.b c u u u u u u u u u u u u u u u x 6.{ z u u u u u u u u k l * ,.a.a.a./ u u u u u u u u u u u u u u z { p.a.a.| z u u u u u u u u u c 2.a.a.a.a.a.4 > >.a.a.a.a.a.a.a.a.a.a.a.a.5.m c u u u u u u c F p.a.a.a.a.a.a.a.a.} c u u u u u u u u u c i.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.t.c u u u u u u u u u u u u v p.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.p.4.X.{ _ F D Z C B M M V C A F D C V M m b x c c u u u u u u u u u u u u z 3.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
210".......ccccccccaa........................cccccccaaaaa.....ccccccccccccccaaaaa########.cccccccccccaaaa.......cccccccccccccccccaaaa##ccccc..cccccccccaaa............ccccccccccccccccc...........cccccccccccccccccccccc.................c............................cccccccccaaa", 315"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.#.z u u u u u u u u x F a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.p.{ c u u u c b v u u u u u u u u u u x / C c u u u u u u u u k p > ^ a.a.a.6.c u u u u u u u u u u u u u c +.a.a.a.p.v u u u u u u u u u u m a.a.a.a.a.9.: . w a.a.a.a.a.a.a.a.a.a.a.p.{ c u u u u u u u c O.a.a.a.a.a.a.a.a.a.+.z u u u u u u u u u u ` a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.V u u u u u u u u u u u u c 2.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.5.| c c u u u u u u u u u u u v p.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
211".......ccccccccaa.......................ccccccaaaaa......cccccccccccccaaaaaa########.cccccccccccaaaa........cccccccccccccccccaaa###cccc...cccccccccaaa............cccccccccccccccccc.......cccccc..cccccccccccccccccc...............cc...........................cccccccccaaa.", 316"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.7.c u u u u u u u u u z t.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.5.m c u u u c } a.m u u u u u u u u u u u x x u u u u u u u u k & : U a.a.a.a.V u u u u u u u u u u u u u z #.a.a.a.a.+.c u u u u u u u u u c +.a.a.a.a.a.I . > <.a.a.a.a.a.a.a.a.a.a.5.n c u u u u u u z n 7.a.a.a.a.a.a.a.a.a.e.z u u u u u u u u u u x e.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.` c u u u u u u u u u u u z F a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.p.{ c u u u u u u u u u u v 5.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
212"......ccccccccca.......................ccccccaaaaa.......ccccccccccccaaaaaa########..ccccccccccaaaaa........cccccccccccccccccaaa###ccc..aacccccccccaa.............cccccccccccccccccccccccccccccc...cccccccccccccccccccc..........cccc...........................ccccccccaaaaa.", 317"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.p.m u u u u u u u u u x } a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.p.{ c u u u c M e.a.e.x u u u u u u u u u x u u u u u u u u u u k % : e a.a.a.a.+.c u u u u u u u u u u u u z 1.a.a.a.a.a.b u u u u u u u u u u x i.a.a.a.a.a.1 . r a.a.a.a.a.a.a.a.a.p._ c u u u u u u u c D p.a.a.a.a.a.a.a.a.a.p.m u u u u u u u u u u u m a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.#.c u u u u u u u u u u u u c r.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a./ c u u u u u u u u u z O.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
213"......ccccccccca.....................cccccccaaaaa........cccccccccccaaaaaaa########..cccccccccaaaaa.........cccccccccccccccccaaa##cc..aacccccccccccaa..ccc........cccccccccccccccccccccccccccc....cccccccccccccccccccccccccccccccc.............................ccccccccaaaaa..", 318"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.F x u u u u u u u u u v p.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.7.m c u u u x F p.a.a.D u u u u u u u u u u x u u u u u u u u u k @ . 4 y.a.a.a.e.c u u u u u u u u u u u u c 2.a.a.a.a.a.1.c u u u u u u u u u u V a.a.a.a.a.>., > 9.a.a.a.a.a.a.a.a.3.b c u u u u u u u c ` a.a.a.a.a.a.a.a.a.a.a.| c u u u u u u u u u u u F a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.7.c u u u u u u u u u u u u u c a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.p.u u u u u u u u u u u ) a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
214".....cccccccccca....................cccccccaaaaa........cccccccccccaaaaaaa########..cccccccccaaaaa..........ccccccccccccccccaaa###c.aaaaccccccccccccccccc.........cccccccccccccccccccccccccc....aaccccccccccccccccccccccccccccccc...........c.................ccccccccaaaaa...", 319"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.+.c u u u u u u u u u x | a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.| c u u u u z ..a.a.a.5.c u u u u u u u u u u u u u u u u u u u k O , 0.a.a.a.a.m u u u u u u u u u u u u c 3.a.a.a.a.a.a.V u u u u u u u u u u c O.a.a.a.a.a.H . : L a.a.a.a.a.a.a.p.) c u u u u u u u u c S a.a.a.a.a.a.a.a.a.a.a.i.c u u u u u u u u u u u z X.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.p.b u u u u u u u u u u u u u u C a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.m u u u u u u u u u u D a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
215".....cccccccccca..................ccccccccaaaa..........ccccccccccaaaaaaaa########..ccccccccaaaaa...........ccccccccccccccccaaa###aaaaaaccccccccccccccc...........ccccccccccccccccccccccccc...aaaaccccccccccccccccccccccccccccc.......aaccccc................cccccccaaaaaa....", 320"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.e.c u u u u u u u u u u c 3.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.e.M c u u u u c 2.a.a.a.a.V u u u u u u u u u u u u u u u u u u u l o : :.a.a.a.a.{ c u u u u u u u u u u u c 3.a.a.a.a.a.a.6.c u u u u u u u u u u z r.a.a.a.a.a.4 . 1 y.a.a.a.a.a.a.2.b u u u u u u u u u z V p.a.a.a.a.a.a.a.a.a.a.a.` z u u u u u u u u u u u c X.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.S z u u u u u u u u u u u u u u { a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.A u u u u u u u u u x ..a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
216"....cccccccccccc.................ccccccccaaaa..........ccccccccccaaaaaaaa########..ccccccccaaaaa............ccccccccccccccccaaa##aaaaaaccccccccccccccc............ccccccccccccccccccccccc..aaaaaa..cccccccccccccccccccccccccc...aaaaaacccccc...............cccccccaaaaaaa.....", 321"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.C x u u u u u u u u u u u p.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.X.c u u u u c M r.a.a.a.a.$.c u u u u u u u u u u u u u u u u u u f o . : Q a.a.a.a.2.c u u u u u u u u u u u c 5.a.a.a.a.a.a.a.F u u u u u u u u u u u M a.a.a.a.a.a.U 8 q.a.a.a.a.a.i.F c u u u u u u u u u u M p.a.a.a.a.a.a.a.a.a.a.a.i.u u u u u u u u u u u u u u | a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.} c u u u u u u u u u u u u u u u F a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.m u u u u u u u u u c 2.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
217"....ccccccccccccc.............cccccccccaaaaa..........ccccccccccaaaaaaaa########..ccccccccaaaaa.............cccccccccccccccaaaa##aaaaaccccccccccccca....aaa.......ccccccccccccccccccccaaaaaaaaa....ccccccccccccccccccccaaaaaaaaaaaaccccccccccc..........ccccccccaaaaaaa.......", 322"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.2.z u u u u u u u u u u u m a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.r.V c u u u u c { a.a.a.a.a.t.v u u u u u u u u u u u u u u u u u k g X > J a.a.a.a.p.v u u u u u u u u u u u c 6.a.a.a.a.a.a.a.r.z u u u u u u u u u u x | a.a.a.a.a.a.a.a.a.a.a.a.a.+.v u z u c u u u u u u u b r.a.a.a.a.a.a.a.a.a.a.a.a.O.c u u u u u u u u u u u u u C a.a.a.a.a.a.a.a.a.a.a.a.a.a.p.F c u u u u u u u u u u u u u u u u b a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.p.u u u u u u u u u u x r.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
218"...cccccccccccccccc.......ccccccccccccaaaa............cccccccccaaaaaaaaa########..cccccccaaaaa..............cccccccccccccccaaa##aaaa.ccccccccccccccaaaaaaa........cccccccccccccccccccaaaaaaaa......acccccccccccccccccaaaaaaaaaaaaaccccccccccccccccccccccccccccaaaaaaaa........", 323"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.m u u u u u u u u u u u u m a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a. .c u u u u z c 2.a.a.a.a.a.a.S u u u u u u u u u u u u u u u u u k i . 0 a.a.a.a.a.} c u u u u u u u u u u c 3.a.a.a.a.a.a.a.a.] z u u u u u u u u u u c #.a.a.a.a.a.a.a.a.a.a.a.e.C c u x Z c u u u u u u u c 2.a.a.a.a.a.a.a.a.a.a.a.a.a.B u u u u u u u u u u u u u u c t.a.a.a.a.a.a.a.a.a.a.a.a.7.m c u u u u u u u u u u u u u u u u u z p.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.3.c u u u u u u u u u V a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
219"...ccccccccccccccccccccccccccccccccccaaaa............cccccccccaaaaaaaaa########...ccccccaaaaa...............cccccccccccccccaaaaaaaa..ccccccccccccaaaaaaa...........ccccccccccccccccaaaaaaaaa.......aaccccccccccccaaaaaaaaaaaaaaa..ccccccccccccccccccccccccc.aaaaaaaa..........", 324"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.X.z u u u u u u u u u u u u c a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.1.b z u u u u c V r.a.a.a.a.a.a.+.c u u u u u u u u u u u u u u u u k s . 2 y.a.a.a.a.e.x u u u u u u u u u u c o.a.a.a.a.a.a.a.a.p.c u u u u u u u u u u u c 7.a.a.a.a.a.a.a.a.a.a.X.c u u c 1.S u u u u u u u u B a.a.a.a.a.a.a.a.a.a.a.a.a.r.x u u u u u u u u u u u u u u c B p.a.a.a.a.a.a.a.a.a.e.| z u u u u u u u u u u u u u u u u u u u v 1.a.a.a.a.a.a.a.a.a.a.a.a.a.e.X.| X.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.Z u u u u u u u u u c 6.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
220"..cccccccccccccccccccccccccccccccccaaaaa.............ccccccccaaaaa.aaa########...ccccccaaaaa.................ccccccccccccaaaaaaaa....cccccccccccaaaaaa.............acccccccccccccaaaaaaaaa..........aaaaaaaaaaaaaaaaaaaaaaaaa..........aacccccccccccccccc.aaaaaaaa............", 325"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.p.c u u u u u u u u u u u u u c e.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.5.M c u u u u u c } a.a.a.a.a.a.a.r.c u u u u u u u u u u u u u u u u u p > 9.a.a.a.a.a.F u u u u u u u u u u c _ a.a.a.a.a.a.a.a.a.1.c u u u u u u u u u u u u a.a.a.a.a.a.a.a.a.6.m c u c V t.2.z u u u u u u u c o.a.a.a.a.a.a.a.a.a.a.a.a.a.1.c u u u u u u u u u u u u u u u x b +.t.a.a.a.r.5.O.B z c u u c z u u u u u u u u u u u u u u u u u v e.a.a.a.a.a.a.a.a.a.a.2.V z c u u Z a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.3.c u u u u u u u u c O.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
221"..ccccccccccccccccccccccccccccccccaaaaa.............ccccccccaaaaa.aaa########....cccccaaaaa..................ccccccccccaaaaaaaaa.....cccccccccaaaaaaa..............aaacccccccccaaaaaaaaa............aaaaaaaaaaaaaaaaaaaaaaa..........aaaaaaaacccccccccaaaaaaaaaa..............", 326"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.@.c u u u u u u u u u u u u u u { a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.e.D c u u u u u z b 6.a.a.a.a.a.a.a.a.C u u u u u u u u u u u u u u u u k = > =.a.a.a.a.a.t.c u u u u u u u u u u V a.a.a.a.a.a.a.a.a.a.} u u u u u u u u u u u u n a.a.a.a.a.a.a.i._ x u u x .a.a.b u u u u u u u u c 3.a.a.a.a.a.a.a.a.a.t.$._ ` } u u u u u u u u u u u u u u u u u u c c c c u c c c u u u c n 5.u u u u u u u u u u u u u u u u u u u z F 1.5.e.t.a.7.O.D c c u u u c C e.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.t.n u u u u u u u u c +.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
222"..cccccccccccccccccccccccccccccccaaaa...............cccccccaaaaa.aaaa#######....cccccaaaaa...................aaccccccaaaaaaaaaa......cccccccaaaaaaaa...............aaaaaaaaaaaaaaaaaaa..............aaaaaaaaaaaaaaaaaaa............aaaaaaaaaaaaaaaaaaaaaaaaaaa................", 327"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.M u u u u u u u u u u u u u u u c 7.a.a.a.a.a.a.a.a.a.a.a.a.a.p.{ c c u u u u u c ) p.a.a.a.a.a.a.a.a.O.c u u u u u u u u u u u u u u u k # > T a.a.a.a.a.a. .z u u u u u u u u u b p.a.a.a.a.a.a.a.a.a.a.B u u u u u u u u u u u u m a.a.a.a.a.a.$.v x u z n 6.a.a.X.z u u u u u u u u c ` a.a.a.a.p.7.#./ b z z u Z C u u u u u u u u u u u u u u u u u u u u u u u u u u u u c } a.a.u u u u u u u u u u u u u u u u u u u u u c v c z u c z u u u u c b 1.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.e.b u u u u u u u c C r.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
223"..ccccccccccccccccccccccccccccccaaaa...............cccccccaaaaa..aaa########...cccccaaaaa....................aaaaaaaaaaaaaaaa........ccccccaaaaaaa.................aaaaaaaaaaaaaaaaa.................aaaaaaaaaaaaaa................aaa.....aaaaaaaaaaaaaaaa...................", 328"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.e.x u u u u u u u u u u u u u u u u b 6.a.a.a.a.a.a.a.a.a.a.3._ c c u u u u u z v 2.a.a.a.a.a.a.a.a.a.r.x u u u u u u u u u u u u u u u k $ > y a.a.a.a.a.a.a.v u u u u u u u u u c e.a.a.a.a.a.a.a.a.a.a.p.c u u u u u u u u u u u u v a.a.a.a.e.C c u u z ` p.a.a.a.c u u u u u u u u u u c v C m u z c c u u u c | a.C u u u u u u u u u u u u u u u u u u u u u u u u u u c C 6.a.a.a.u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u z c ..p.a.a.a.a.a.a.a.a.a.a.3.o.) 7.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.3.b z u u u u u x c O.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
224"..ccccccccccccccccccccccccccccaaaaa...............cccccccaaaaa..aaa########.....cccaaaaa......................aaaaaaaaaaaaa...........aaaaaaaaaaa...................aaaaaaaaaaaaaa.....................aaaaaaa................................aaaaaaaaa.......................", 329"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.{ u u u u u u u u u u u u u u u u u u z ) 1.e.a.a.a.p.3.` c v u u u u u u u c D i.a.a.a.a.a.a.a.a.a.a.C u u u u u u u u u u u u u u u k + : 6 u.a.a.a.a.a.a.7.c u u u u u u u u c 1.a.a.a.a.a.a.a.a.a.a.a.t.x u u u u u u u u u u u u c 5.a.1.C c u u c m 3.a.a.a.a.$.c u u u u u u u u u u u u u u u u u u u c Z e.a.a.A u u u u u u u u u u u u u u u u u u u u u u u u c M 2.a.a.a.a.a.b u u u u u u u u u u u u u u u u u u u u u u u u u u u u c F t.a.a.a.a.a.a.a.a.p.$.F c c x z o.a.a.a.a.a.a.a.a.a.a.a.a.a.2.V c u u u u u u c C r.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
225"..ccccccccccccccccccccccccccaaaaa.................ccccccaaaaa...aaa#######........aaaa........................aaaaaaaaaa..............aaaaaaaaa.......................aaaaaaaaa...............................................................................................", 330"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.b u u u u u u u u u u u u u u u u u u u u c c z u u x c u u u u u u u u x c #.a.a.a.a.a.a.a.a.a.a.a.o.c u u u u u u u u u u u u u u l o 1 w.a.a.a.a.a.a.a.O.c u u u u u u u u B a.a.a.a.a.a.a.a.a.a.a.a.a.u u u u u u u u u u u u u u c u v u u u x } p.a.a.a.a.a.M u u u u u u u u u u u u u u u u u u c v 1.a.a.a.a./ u u u u u u u u u u u u u u u u u u u u u u c b #.a.a.a.a.a.a.a.{ z u u u u u u u u u u u u u u u u u u u u u u u u u c m 5.a.a.a.a.a.a.a.a.2.Z z c u u u u u V 6.a.a.a.a.a.a.a.a.i.1.{ m c u u u u u u v b +.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
226"..cccccccccccccccccccccccccaaaaa.................ccccccaaaa....aaa#######........aaaa...........................aaaaa.................aaaaaaa.................................................................................................................................", 331"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.p.z u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u c V r.a.a.a.a.a.a.a.a.a.a.a.i.c u u u u u u u u u u u u u z j X . : ,.a.a.a.a.a.a.a.a._ u u u u u u u u x 6.a.a.a.a.a.a.a.a.a.a.a.a.a.u u u u u u u u u u u u u u u u u u c B e.a.a.a.a.a.a.a.c u u u u u u u u u u u u u u u u u c { p.a.a.a.a.a.$.c u u u u u u u u u u u u u u u u u u u x v o.a.a.a.a.a.a.a.a.a.r.c u u u u u u u u u u u u u u u u u u u u u u x x C 2.a.a.a.a.a.a.a.a.3.M c u u u u u u u u z c u m / F D Z C b x c u u u u u u c z A 2.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
227"..cccccccccccccccccccccccaaaaaa..................cccccaaaa.....aaa#######.......aaaa..................................................aaaaaa..................................................................................................................................", 332"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.5.c u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u z c X.a.a.a.a.a.a.a.a.a.a.a.a.a.) z u u u u u u u u u u u u c N < > ^ a.a.a.a.a.a.a.a.a._ u u u u u u u x F a.a.a.a.a.a.a.a.a.a.a.a.a.a.v u u u u u u u u u u u u u u u x c o.a.a.a.a.a.a.a.a.a.u u u u u u u u u u u u u u u x x ) r.a.a.a.a.a.a.a.p.c u u u u u u u u u u u u u u u u u c c | i.a.a.a.a.a.a.a.a.a.a.a.3.c u u u u u u u u u u u u u u u u u u u c x ` e.a.a.a.a.a.a.a.a.a.6.z u u u u u u u u u u u u u u u u u u u u u u u u u u c v | t.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
228"...ccccccccccccccccccccaaaaaa....................ccccaaaa.....aaa#######.........a.....................................................aaa....................................................................................................................................", 333"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.o.c u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u x D r.a.a.a.a.a.a.a.a.a.a.a.a.a.7.z u u u u u u u u u u u u c ) 8 > I a.a.a.a.a.a.a.a.a.a. .x u u u u u u x t.a.a.a.a.a.a.a.a.a.a.a.a.a.a.X.c u u u u u u u u u u u u u c S r.a.a.a.a.a.a.a.a.a.i.z u u u u u u u u u u u u z c ) r.a.a.a.a.a.a.a.a.a.a.2.u u u u u u u u u u u u u u c x C +.i.a.a.a.a.a.a.a.a.a.a.a.a.a.a.e.F c c u u u u u u u u u u u u u c c A O.p.a.a.a.a.a.a.a.a.a.a.a.t.M x c c c u u u u u u u u u u u u u u u u u u v c v A 1.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
229"...accccccccccccccccccaaaaaa.......................aaaaa......aaa######.......................................................................................................................................................................................................", 334"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a./ u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u x b 3.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.C u u u u u u u u u u u u c ..;., : 9 a.a.a.a.a.a.a.a.a.a.a.7.c u u u u u x { a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.b u u u u u u u u u u c c _ e.a.a.a.a.a.a.a.a.a.a.a.a.` c u u u u u u u u u c v } r.a.a.a.a.a.a.a.a.a.a.a.a.a.1.b c u u u u u u u u c u B O.t.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.e.| V z c v v c c c c u c M } 3.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.r.1.X.) V v x c v c c u c z c c c z b S .2.t.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
230"...aacccccccccccccccaaaaaaa.......................aaaaa.......aa#######.......................................................................................................................................................................................................", 335"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a./ u u u u u u u u u u u u u u u u u u u u u u u u u u u u u z } a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.1.c u u u u u u u u u u u c @.a.8 , w.a.a.a.a.a.a.a.a.a.a.a.a.S x u u u u z e.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.5.b c u u u u u u c n O.p.a.a.a.a.a.a.a.a.a.a.a.a.a.a.t.V c u u u u v c c / 3.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.1.F n z v m B S / X.r.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.e.3.1.+.@.3.e.p.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.p.e.3.1.+.X.X.O.O.@.3.p.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
231"....aaccccccccccccaaaaaaa.........................aaaa.......aaa######........................................................................................................................................................................................................", 336"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.` u u u u u u u u u u u u u u u u u u u u u u u u u u u c Z e.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.V u u u u u u u u u u u c 3.a.;., > *.a.a.a.a.a.a.a.a.a.a.a.a.a.i.V c u u x Z a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.p...M z u x m / 2.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.6.| { _ { $.e.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
232"....aaaaccccccccaaaaaaa..........................aaa.........aaa######........................................................................................................................................................................................................", 337"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a. .u u u u u u u u u u u u u u u u u u u u u u u u u z b 1.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.p.z u u u u u u u u u z n e.a.a.9 > K a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.+.b x m t.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
233".....aaaaaaaaaaaaaaaaa......................................aaa######.........................................................................................................................................................................................................", 338"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.O.c u u u u u u u u u u u u u u u u u u u u u u z c { p.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.3.v u u u u u u u u c Z p.a.a.9.> . 5 u.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.t.p.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
234"......aaaaaaaaaaaaaa........................................aaa####...........................................................................................................................................................................................................", 339"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.3.c u u u u u u u u u u u u u u u u u u u u c c { t.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.6.c u u u u u u u c { a.a.a.a.K : > 0.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
235".......aaaaaaaaaaa.........................................aaa#####...........................................................................................................................................................................................................", 340"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.n u u u u u u u u u u u u u u u u u u x c ` t.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.u u u u u u u c #.a.a.a.a.u.> > ~ a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
236".........aaaaaaa...........................................aaa####............................................................................................................................................................................................................", 341"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.o.z u u u u u u u u u u u u u u u u z ` r.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.{ c u u u c b 7.a.a.a.a.a.^ , : H a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
237"...........................................................aaa####............................................................................................................................................................................................................", 342"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.p.c u u u u u u u u u u u u u u c ) r.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.D c c v ..p.a.a.a.a.a.a.9 . 6 u.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
238"..........................................................aaa####.............................................................................................................................................................................................................", 343"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.+.c u u u u u u u u u u c c { e.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.r.e.a.a.a.a.a.a.a.a.0.> , 0.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
239"..........................................................aaa####.............................................................................................................................................................................................................", 344"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.6.v v z u u u v c c / 3.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.Q : > -.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
240"..........................................................aaa###..............................................................................................................................................................................................................", 345"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.i.1.X.) D | $.7.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.y U a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
241".........................................................aaa###...............................................................................................................................................................................................................", 346"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.L J a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
242".........................................................aaa###...............................................................................................................................................................................................................", 347"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
243".........................................................a.###................................................................................................................................................................................................................", 348"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
244".........................................................a.##.................................................................................................................................................................................................................", 349"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
245"...........................................................##.................................................................................................................................................................................................................", 350"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
246"...........................................................#..................................................................................................................................................................................................................", 351"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
247"..........................................................##..................................................................................................................................................................................................................", 352"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
248".............................................................................................................................................................................................................................................................................." 353"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
354"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
355"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
356"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
357"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
358"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
359"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
360"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
361"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
362"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
363"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
364"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
365"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
366"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
367"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
368"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
369"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a."
249}; 370};
diff --git a/etc/tutorials/TUTORIAL.he b/etc/tutorials/TUTORIAL.he
index b3910989509..beb406e0e91 100644
--- a/etc/tutorials/TUTORIAL.he
+++ b/etc/tutorials/TUTORIAL.he
@@ -14,10 +14,10 @@
14כדי להפסיק פקודה ב×מצע ההקשה, יש להקיש C-g. 14כדי להפסיק פקודה ב×מצע ההקשה, יש להקיש C-g.
15המחרוזת ">>" בקצה הימני מסמנת הור×ות ×¢×‘×•×¨×›× ×›×“×™ לנסות להשתמש בפקודה כלשהי. 15המחרוזת ">>" בקצה הימני מסמנת הור×ות ×¢×‘×•×¨×›× ×›×“×™ לנסות להשתמש בפקודה כלשהי.
16לדוגמה: 16לדוגמה:
17<<שורות ריקות תתווספנה סביב השורה הב××” ×¢"×™ help-with-tutorial>> 17<<שורות ריקות תתווספנה סביב השורה הב××” ×¢×´×™ help-with-tutorial>>
18[×מצע העמוד הוש×ר ריק למטרות לימודיות. הטקסט ממשיך להלן] 18[×מצע העמוד הוש×ר ריק למטרות לימודיות. הטקסט ממשיך להלן]
19>> הקישו עתה C-v (הצג העמוד הב×) על־מנת ×œ×”×ª×§×“× ×œ×¢×ž×•×“ הב×. (קדימה, נסו 19>> הקישו עתה C-v (הצג העמוד הב×) על־מנת ×œ×”×ª×§×“× ×œ×¢×ž×•×“ הב×. (קדימה, נסו
20 ×–×ת ×¢"×™ לחיצה והחזקה של מקש CONTROL והקשה על v.) 20 ×–×ת ×¢×´×™ לחיצה והחזקה של מקש CONTROL והקשה על v.)
21 מעתה והל××”, ×¢×œ×™×›× ×œ×¢×©×•×ª ×–×ת בכל ×¤×¢× ×©×ª×¡×™×™×ž×• ×œ×§×¨×•× ×ת המוצג על המסך. 21 מעתה והל××”, ×¢×œ×™×›× ×œ×¢×©×•×ª ×–×ת בכל ×¤×¢× ×©×ª×¡×™×™×ž×• ×œ×§×¨×•× ×ת המוצג על המסך.
22 22
23שימו לב לחפיפה של שתי שורות ×›×שר ××ª× ×¢×•×‘×¨×™× ×ž×ž×¡×š למשך, מה שמבטיח רציפות 23שימו לב לחפיפה של שתי שורות ×›×שר ××ª× ×¢×•×‘×¨×™× ×ž×ž×¡×š למשך, מה שמבטיח רציפות
@@ -99,7 +99,7 @@ P מ־previous (קוד×), N מ־Next (הב×), B מ־Backward (×חורה)
99לתצוגה. לזה קור××™× "גלילה". גלילה מ×פשרת ל־Emacs להניע ×ת הסמן ×œ×ž×§×•× 99לתצוגה. לזה קור××™× "גלילה". גלילה מ×פשרת ל־Emacs להניע ×ת הסמן למקו×
100כלשהו בטקסט מבלי שהסמן ×™×™×¢×œ× ×ž×”×ª×¦×•×’×”. 100כלשהו בטקסט מבלי שהסמן ×™×™×¢×œ× ×ž×”×ª×¦×•×’×”.
101 101
102>> נסו להניע ×ת הסמן ×ל מחוץ לתצוגה ×¢"×™ הקשת C-n ושימו לב למה שקורה. 102>> נסו להניע ×ת הסמן ×ל מחוץ לתצוגה ×¢×´×™ הקשת C-n ושימו לב למה שקורה.
103 103
104×× ×ª× ×•×¢×” תו־תו ×יטית מדי, תוכלו לנוע ×ž×™×œ×™× ×©×œ×ž×•×ª. M-f â€(META-f) מזיז 104×× ×ª× ×•×¢×” תו־תו ×יטית מדי, תוכלו לנוע ×ž×™×œ×™× ×©×œ×ž×•×ª. M-f â€(META-f) מזיז
105×ת הסמן מילה ×חת קדימה ו×ילו M-b ×–×– מילה ×חורה. 105×ת הסמן מילה ×חת קדימה ו×ילו M-b ×–×– מילה ×חורה.
@@ -196,18 +196,18 @@ argument) ×ž×©×•× ×ž×§×™×©×™× ×ותו לפני הפקודה ×ליה ×”×•× ×
196>> נסו עתה להקיש C-u 8 C-v. 196>> נסו עתה להקיש C-u 8 C-v.
197 197
198כתוצ××”, התצוגה היתה צריכה לזוז ב־8 שורות. ×× ×‘×¨×¦×•× ×›× ×œ×’×œ×•×œ בחזרה, 198כתוצ××”, התצוגה היתה צריכה לזוז ב־8 שורות. ×× ×‘×¨×¦×•× ×›× ×œ×’×œ×•×œ בחזרה,
199×פשר להשיג ×–×ת ×¢"×™ מתן ×רגומנט ל־M-v. 199×פשר להשיג ×–×ת ×¢×´×™ מתן ×רגומנט ל־M-v.
200 200
201×× ×”×¤×¢×œ×ª× ×ת Emacs על־גבי תצוגה גרפית כגון X ×ו MS-Windows, ××ª× 201×× ×”×¤×¢×œ×ª× ×ת Emacs על־גבי תצוגה גרפית כגון X ×ו MS-Windows, ×ת×
202×¦×¨×™×›×™× ×œ×¨×ות פס צר וגבוה, ששמו פס גלילה (scroll bar) בצידו של החלון 202×¦×¨×™×›×™× ×œ×¨×ות פס צר וגבוה, ששמו פס גלילה (scroll bar) בצידו של החלון
203של Emacs. ניתן לגלול ×ת הטקסט ×¢"×™ הקלקת עכבר בתוך פס הגלילה. 203של Emacs. ניתן לגלול ×ת הטקסט ×¢×´×™ הקלקת עכבר בתוך פס הגלילה.
204 204
205×× ×”×¢×›×‘×¨ ×©×œ×›× ×ž×¦×•×™×“ בגלגל, תוכלו להשתמש ×’× ×‘×• לגלילת הטקסט. 205×× ×”×¢×›×‘×¨ ×©×œ×›× ×ž×¦×•×™×“ בגלגל, תוכלו להשתמש ×’× ×‘×• לגלילת הטקסט.
206 206
207* ×× Emacs מפסיק להגיב 207* ×× Emacs מפסיק להגיב
208---------------------- 208----------------------
209 209
210×× Emacs מפסיק להגיב לפקודות, תוכלו להפסיק ×ותו בבטחה ×¢"×™ הקשת C-g. 210×× Emacs מפסיק להגיב לפקודות, תוכלו להפסיק ×ותו בבטחה ×¢×´×™ הקשת C-g.
211פקודות שביצוען מת×רך ××£ הן ניתנות להפסקה בעזרת C-g. 211פקודות שביצוען מת×רך ××£ הן ניתנות להפסקה בעזרת C-g.
212 212
213בנוסף, ×ª×’×¨×•× ×”×§×©×ª C-g לביטול ×”×רגומנט הנומרי ×ו תחילת הפקודה ×©×˜×¨× 213בנוסף, ×ª×’×¨×•× ×”×§×©×ª C-g לביטול ×”×רגומנט הנומרי ×ו תחילת הפקודה שטר×
@@ -272,7 +272,7 @@ argument) ×ž×©×•× ×ž×§×™×©×™× ×ותו לפני הפקודה ×ליה ×”×•× ×
272יתכן שבמקלדת ×©×œ×›× ×§×™×™× ×ž×§×© שעליו ×¨×©×•× <Delete>, ×ך ×–×” ×ינו המקש ש×נו 272יתכן שבמקלדת ×©×œ×›× ×§×™×™× ×ž×§×© שעליו ×¨×©×•× <Delete>, ×ך ×–×” ×ינו המקש ש×נו
273קור××™× ×œ×• <DEL>. 273קור××™× ×œ×• <DEL>.
274 274
275>> הקישו עתה מספר תוי×, ו×חר־כך מחקו ××•×ª× ×¢"×™ הקשות ×חדות 275>> הקישו עתה מספר תוי×, ו×חר־כך מחקו ××•×ª× ×¢×´×™ הקשות ×חדות
276 על <DEL>. ×ל תחששו לשנות ×ת הקובץ ×”×–×” -- העותק המקורי 276 על <DEL>. ×ל תחששו לשנות ×ת הקובץ ×”×–×” -- העותק המקורי
277 של השיעור ייש×ר ×œ×œ× ×©×™× ×•×™. ××ª× ×¢×•×‘×“×™× ×¢×œ העותק ×”×ישי שלכ×. 277 של השיעור ייש×ר ×œ×œ× ×©×™× ×•×™. ××ª× ×¢×•×‘×“×™× ×¢×œ העותק ×”×ישי שלכ×.
278 278
@@ -402,7 +402,7 @@ argument) ×ž×©×•× ×ž×§×™×©×™× ×ותו לפני הפקודה ×ליה ×”×•× ×
402×× ×©×™× ×™×ª× ×ת הטקסט ו××– ×”×—×œ×˜×ª× ×©×”×©×™× ×•×™ ×”×™×” טעות, תוכלו לבטל ×ת השינוי 402×× ×©×™× ×™×ª× ×ת הטקסט ו××– ×”×—×œ×˜×ª× ×©×”×©×™× ×•×™ ×”×™×” טעות, תוכלו לבטל ×ת השינוי
403בעזרת פקודת הביטול, ‪C-/‬. 403בעזרת פקודת הביטול, ‪C-/‬.
404 404
405בדרך כלל,‪C-/‬ מבטל ×ת ×”×©×™× ×•×™×™× ×©×‘×•×¦×¢×• ×¢"×™ פקודה ×חת. הפעלה חוזרת של 405בדרך כלל,‪C-/‬ מבטל ×ת ×”×©×™× ×•×™×™× ×©×‘×•×¦×¢×• ×¢×´×™ פקודה ×חת. הפעלה חוזרת של
406‪C-/‬ ברצף מבטלת ×©×™× ×•×™×™× ×©×œ פקודות קודמות, ×חת ×חרי השניה. 406‪C-/‬ ברצף מבטלת ×©×™× ×•×™×™× ×©×œ פקודות קודמות, ×חת ×חרי השניה.
407 407
408שני יוצ××™× ×ž×”×›×œ×œ ×”×–×”: פקודות ש×ינן משנות טקסט (למשל פקודות הנעת הסמן 408שני יוצ××™× ×ž×”×›×œ×œ ×”×–×”: פקודות ש×ינן משנות טקסט (למשל פקודות הנעת הסמן
@@ -468,7 +468,7 @@ C-x u, ××Ö¾×›×™ ×”×™× ×¤×—×•×ª נוחה להקשה מספר ×¤×¢×ž×™× ×‘×–×•
468 468
469פקודה זו שומרת בקובץ ×ת הטקסט המוחזק בתוך Emacs. ×‘×¤×¢× ×”×¨×שונה שתפעילו 469פקודה זו שומרת בקובץ ×ת הטקסט המוחזק בתוך Emacs. ×‘×¤×¢× ×”×¨×שונה שתפעילו
470פקודה זו, Emacs משנה ×ת ×©× ×”×§×•×‘×¥ המקורי ×œ×©× ×—×“×© כך שהמקור ×œ× ×™×œ×š 470פקודה זו, Emacs משנה ×ת ×©× ×”×§×•×‘×¥ המקורי ×œ×©× ×—×“×© כך שהמקור ×œ× ×™×œ×š
471ל×יבוד. ×”×©× ×”×—×“×© נוצר ×¢"×™ הוספת "~" בסוף ×”×©× ×”×ž×§×•×¨×™ של הקובץ. 471ל×יבוד. ×”×©× ×”×—×“×© נוצר ×¢×´×™ הוספת "~" בסוף ×”×©× ×”×ž×§×•×¨×™ של הקובץ.
472 472
473כשהשמירה מסתיימת, Emacs מציג בשורה התחתונה ×ת ×©× ×”×§×•×‘×¥ שנשמר. נסו 473כשהשמירה מסתיימת, Emacs מציג בשורה התחתונה ×ת ×©× ×”×§×•×‘×¥ שנשמר. נסו
474לשמור ×œ×¢×ª×™× ×ž×–×•×ž× ×•×ª על־מנת להימנע מל×בד יותר מדי מהעבודה ×©×œ×›× ×× ×”×ž×—×©×‘ 474לשמור ×œ×¢×ª×™× ×ž×–×•×ž× ×•×ª על־מנת להימנע מל×בד יותר מדי מהעבודה ×©×œ×›× ×× ×”×ž×—×©×‘
@@ -489,7 +489,7 @@ Emacs ייצור ×ת הקובץ ×¢× ×”×˜×§×¡×˜ שהקשת×. מ×ותו רגע
489-------- 489--------
490 490
491×× ×ª×¤×ª×—×• קובץ נוסף ×¢× C-x C-f, הקובץ הר×שון עדיין נש×ר פתוח ב־Emacs. 491×× ×ª×¤×ª×—×• קובץ נוסף ×¢× C-x C-f, הקובץ הר×שון עדיין נש×ר פתוח ב־Emacs.
492תוכלו לחזור ×ליו ×¢"×™ C-x C-f. כך תוכלו לפתוח מספר רב של קבצי×. 492תוכלו לחזור ×ליו ×¢×´×™ C-x C-f. כך תוכלו לפתוח מספר רב של קבצי×.
493 493
494â€Emacs מחזיק כל קובץ בתוך יישות ×‘×©× "חוצץ" ("buffer"). פתיחת קובץ יוצרת 494â€Emacs מחזיק כל קובץ בתוך יישות ×‘×©× "חוצץ" ("buffer"). פתיחת קובץ יוצרת
495חוצץ חדש בתוך Emacs. כדי לר×ות ×ת רשימת ×”×—×•×¦×¦×™× ×”×§×™×™×ž×™× ×‘×ª×•×š Emacs, 495חוצץ חדש בתוך Emacs. כדי לר×ות ×ת רשימת ×”×—×•×¦×¦×™× ×”×§×™×™×ž×™× ×‘×ª×•×š Emacs,
@@ -508,19 +508,19 @@ Emacs ייצור ×ת הקובץ ×¢× ×”×˜×§×¡×˜ שהקשת×. מ×ותו רגע
508×›×©×§×™×™×ž×™× ×ž×¡×¤×¨ חוצצי×, רק ×חד ×ž×”× ×™×›×•×œ להיות החוצץ "הנוכחי" בכל רגע 508×›×©×§×™×™×ž×™× ×ž×¡×¤×¨ חוצצי×, רק ×חד ×ž×”× ×™×›×•×œ להיות החוצץ "הנוכחי" בכל רגע
509נתון. זהו החוצץ בו ××ª× ×ž×‘×¦×¢×™× ×¢×¨×™×›×” ב×ותו רגע. ×× ×‘×¨×¦×•× ×›× ×œ×¢×¨×•×š חוצץ 509נתון. זהו החוצץ בו ××ª× ×ž×‘×¦×¢×™× ×¢×¨×™×›×” ב×ותו רגע. ×× ×‘×¨×¦×•× ×›× ×œ×¢×¨×•×š חוצץ
510×חר, ×¢×œ×™×›× "לעבור" חוצץ. עבור ×—×•×¦×¦×™× ×©×ž×ª××™×ž×™× ×œ×§×‘×¦×™×, ניתן לעשות ×–×ת 510×חר, ×¢×œ×™×›× "לעבור" חוצץ. עבור ×—×•×¦×¦×™× ×©×ž×ª××™×ž×™× ×œ×§×‘×¦×™×, ניתן לעשות ×–×ת
511×¢"×™ C-x C-f שיפקוד ×ת הקובץ בשנית. ×בל קיימת דרך פשוטה יותר: שימוש 511×¢×´×™ C-x C-f שיפקוד ×ת הקובץ בשנית. ×בל קיימת דרך פשוטה יותר: שימוש
512בפקודה C-x b. פקודה זו תחייב ××•×ª×›× ×œ×”×§×™×© ×ת ×©× ×”×—×•×¦×¥. 512בפקודה C-x b. פקודה זו תחייב ××•×ª×›× ×œ×”×§×™×© ×ת ×©× ×”×—×•×¦×¥.
513 513
514>> ניצור עתה קובץ ×‘×©× "foo" ×¢"×™ הקשת C-x C-f foo <Return>‎. 514>> ניצור עתה קובץ ×‘×©× "foo" ×¢×´×™ הקשת C-x C-f foo <Return>‎.
515 עתה חזרו לשיעור זה בעזרת C-x b TUTORIAL.he <Return>‎. 515 עתה חזרו לשיעור זה בעזרת C-x b TUTORIAL.he <Return>‎.
516 516
517ברוב ×”×ž×§×¨×™× ×©× ×”×—×•×¦×¥ ×–×”×” ×œ×©× ×”×§×•×‘×¥ (×œ×œ× ×©× ×”×ª×™×§×™×” שלו). ×בל ×ין ×–×” 517ברוב ×”×ž×§×¨×™× ×©× ×”×—×•×¦×¥ ×–×”×” ×œ×©× ×”×§×•×‘×¥ (×œ×œ× ×©× ×”×ª×™×§×™×” שלו). ×בל ×ין ×–×”
518תמיד כך. רשימת ×”×—×•×¦×¦×™× ×©× ×•×¦×¨×ª ×¢"×™ C-x C-b תציג הן ×ת ×©× ×”×—×•×¦×¥ והן ×ת 518תמיד כך. רשימת ×”×—×•×¦×¦×™× ×©× ×•×¦×¨×ª ×¢×´×™ C-x C-b תציג הן ×ת ×©× ×”×—×•×¦×¥ והן ×ת
519×©× ×”×§×•×‘×¥ עבור כל ×”×—×•×¦×¦×™× ×”×§×™×™×ž×™× ×‘Ö¾Emacs. 519×©× ×”×§×•×‘×¥ עבור כל ×”×—×•×¦×¦×™× ×”×§×™×™×ž×™× ×‘Ö¾Emacs.
520 520
521כל טקסט שמוצג בחלון של Emacs הינו תמיד חלק של חוצץ כלשהו. ×§×™×™×ž×™× 521כל טקסט שמוצג בחלון של Emacs הינו תמיד חלק של חוצץ כלשהו. קיימי×
522×—×•×¦×¦×™× ×©××™× × ×§×©×•×¨×™× ×œ×©×•× ×§×•×‘×¥. לדוגמ×, החוצץ ×‘×©× "*Buffer List*" 522×—×•×¦×¦×™× ×©××™× × ×§×©×•×¨×™× ×œ×©×•× ×§×•×‘×¥. לדוגמ×, החוצץ ×‘×©× "*Buffer List*"
523המחזיק ×ת רשימת ×”×—×•×¦×¦×™× ×©× ×•×¦×¨×” ×¢"×™ C-x C-b ×ינו מציג ×©×•× ×§×•×‘×¥. ×’× 523המחזיק ×ת רשימת ×”×—×•×¦×¦×™× ×©× ×•×¦×¨×” ×¢×´×™ C-x C-b ×ינו מציג ×©×•× ×§×•×‘×¥. ×’×
524לחוצץ הנוכחי ששמו TUTORIAL.he ×œ× ×”×™×” קובץ עד ×©×”×§×©×ª× ×¢×œ C-x C-s כדי 524לחוצץ הנוכחי ששמו TUTORIAL.he ×œ× ×”×™×” קובץ עד ×©×”×§×©×ª× ×¢×œ C-x C-s כדי
525לשמור ×ותו בקובץ. 525לשמור ×ותו בקובץ.
526 526
@@ -545,18 +545,18 @@ C-x C-s. לכן קיימת פקודה
545 545
546>> הכניסו שורה של טקסט ו×חר־כך הקישו C-x s. 546>> הכניסו שורה של טקסט ו×חר־כך הקישו C-x s.
547 ×”×•× ×¦×¨×™×š לש×ול ×”×× ×œ×©×ž×•×¨ חוצץ ×‘×©× TUTORIAL.he. 547 ×”×•× ×¦×¨×™×š לש×ול ×”×× ×œ×©×ž×•×¨ חוצץ ×‘×©× TUTORIAL.he.
548 השיבו בחיוב ע"י הקשה על "y". 548 השיבו בחיוב ע״י הקשה על "y".
549 549
550 550
551* הרחבת ×וסף הפקודות 551* הרחבת ×וסף הפקודות
552-------------------- 552--------------------
553 553
554מספר הפקודות ב־Emacs גדול בהרבה ממה שניתן להפעיל ע"י כל תוי ה־control 554מספר הפקודות ב־Emacs גדול בהרבה ממה שניתן להפעיל ע״י כל תוי ה־control
555וה־meta. כדי להתגבר על בעיה זו, Emacs משתמש בפקודות X המרחיבות (eXtend) 555וה־meta. כדי להתגבר על בעיה זו, Emacs משתמש בפקודות X המרחיבות (eXtend)
556×ת ×וסף הפקודות הרגיל. פקודות הרחבה ×לו הן שתי×: 556×ת ×וסף הפקודות הרגיל. פקודות הרחבה ×לו הן שתי×:
557 557
558 â€C-x הרחבת תו. תו בודד ×©×‘× ×חריו ×ž×©×œ×™× ×ת הפקודה. 558 â€C-x הרחבת תו. תו בודד ×©×‘× ×חריו ×ž×©×œ×™× ×ת הפקודה.
559 â€M-x הרחבה ×¢"×™ ×©× ×”×¤×§×•×“×”. ×חריו ×‘× ×©× ×רוך של פקודה. 559 â€M-x הרחבה ×¢×´×™ ×©× ×”×¤×§×•×“×”. ×חריו ×‘× ×©× ×רוך של פקודה.
560 560
561בעזרת שתי ×לו ניתן להפעיל פקודות שימושיות שבהן ×ž×©×ª×ž×©×™× ×œ×¢×ª×™× ×¨×—×•×§×•×ª 561בעזרת שתי ×לו ניתן להפעיל פקודות שימושיות שבהן ×ž×©×ª×ž×©×™× ×œ×¢×ª×™× ×¨×—×•×§×•×ª
562יותר מ×שר פקודות ×©×œ×ž×“×ª× ×¢×“ עכשיו. כמה מהן כבר ר×ית×: C-x C-f לפתיחת 562יותר מ×שר פקודות ×©×œ×ž×“×ª× ×¢×“ עכשיו. כמה מהן כבר ר×ית×: C-x C-f לפתיחת
@@ -577,7 +577,7 @@ Emacs: ×”×•× ×ž×—×–×™×¨ ××ª×›× ×œ×©×•×¨×ª הפקודות הבסיסית של
577תצטרכו להקיש ×ת הפקודה "fg" ×ו ‪"%emacs"‬. 577תצטרכו להקיש ×ת הפקודה "fg" ×ו ‪"%emacs"‬.
578 578
579הרגע הנכון להשתמש ב־C-x C-c ×”×•× ×›×שר ××ª× ×¢×•×ž×“×™× ×œ×”×ª× ×ª×§ (log out). 579הרגע הנכון להשתמש ב־C-x C-c ×”×•× ×›×שר ××ª× ×¢×•×ž×“×™× ×œ×”×ª× ×ª×§ (log out).
580כמו־כן, תצטרכו להשתמש בו כדי לצ×ת מ־Emacs שהופעל ×¢"×™ תוכניות ×חרות 580כמו־כן, תצטרכו להשתמש בו כדי לצ×ת מ־Emacs שהופעל ×¢×´×™ תוכניות ×חרות
581כגון קרי×ת דו×ר ×לקטרוני. 581כגון קרי×ת דו×ר ×לקטרוני.
582 582
583קיימות פקודות C-x רבות מ×ד. להלן רשימת ×לו שכבר למדת×: 583קיימות פקודות C-x רבות מ×ד. להלן רשימת ×לו שכבר למדת×:
@@ -591,17 +591,17 @@ Emacs: ×”×•× ×ž×—×–×™×¨ ××ª×›× ×œ×©×•×¨×ª הפקודות הבסיסית של
591 â€C-x 1 הש×ר רק חלון ×חד ומחק כל הש×ר 591 â€C-x 1 הש×ר רק חלון ×חד ומחק כל הש×ר
592 â€C-x u בטל פקודה ×חרונה 592 â€C-x u בטל פקודה ×חרונה
593 593
594הרחבה ×¢"×™ ×©× ×”×¤×§×•×“×” שימושית ×¢× ×¤×§×•×“×•×ª עוד יותר נדירות ×ו פקודות 594הרחבה ×¢×´×™ ×©× ×”×¤×§×•×“×” שימושית ×¢× ×¤×§×•×“×•×ª עוד יותר נדירות ×ו פקודות
595ספציפיות רק ל×ופני פעולה (modes) מיוחדי×. ×“×•×’×ž× ×œ×›×š ×”×™× ×¤×§×•×“×” 595ספציפיות רק ל×ופני פעולה (modes) מיוחדי×. ×“×•×’×ž× ×œ×›×š ×”×™× ×¤×§×•×“×”
596replace-string (החלף מחרוזת) ×שר מחליפה מחרוזת ×חת במשנה בכל החוצץ. 596replace-string (החלף מחרוזת) ×שר מחליפה מחרוזת ×חת במשנה בכל החוצץ.
597×חרי שתקישו M-x, â€Emacs מציג M-x בתחתית התצוגה ומחכה שתקישו ×ת ×©× 597×חרי שתקישו M-x, â€Emacs מציג M-x בתחתית התצוגה ומחכה שתקישו ×ת ש×
598הפקודה, במקרה זה "replace-string". מספיק שתקישו "repl s<TAB>‎" ו־Emacs 598הפקודה, במקרה זה "replace-string". מספיק שתקישו "repl s<TAB>‎" ו־Emacs
599×™×©×œ×™× ×ת ×”×©× ×”×ž×œ×. (<TAB> ×”×•× ×ž×§×© Tab, בדרך כלל תמצ×ו ×ותו מעל מקש 599×™×©×œ×™× ×ת ×”×©× ×”×ž×œ×. (<TAB> ×”×•× ×ž×§×© Tab, בדרך כלל תמצ×ו ×ותו מעל מקש
600×”Ö¾CapsLock ×ו Shift, ליד הקצה השמ×לי של המקלדת.) סיימו ×ת הזנת הפקודה 600×”Ö¾CapsLock ×ו Shift, ליד הקצה השמ×לי של המקלדת.) סיימו ×ת הזנת הפקודה
601ע"י הקשת <Return>. 601ע״י הקשת <Return>.
602 602
603הפקודה להחלפת מחרוזת זקוקה לשני ××¨×’×•×ž× ×˜×™× -- המחרוזת שתוחלף וזו שתחליף 603הפקודה להחלפת מחרוזת זקוקה לשני ××¨×’×•×ž× ×˜×™× -- המחרוזת שתוחלף וזו שתחליף
604×ותה. סיימו הקשה של כל ×חת מהן ×¢"×™ <Return>. 604×ותה. סיימו הקשה של כל ×חת מהן ×¢×´×™ <Return>.
605 605
606>> הבי×ו ×ת הסמן שתי שורות מתחת לשורה זו. 606>> הבי×ו ×ת הסמן שתי שורות מתחת לשורה זו.
607 עתה הקישו M-x repl s<Return>changed<Return>altered<Return>‎. 607 עתה הקישו M-x repl s<Return>changed<Return>altered<Return>‎.
@@ -703,7 +703,7 @@ Auto Fill mode. ×›×שר ×ופן ×–×” מופעל, Emacs ×וטומטית פות
703×‘×¡×™×•× ×ž×™×œ×” ×× ×”×˜×§×¡×˜ ×©×”×§×©×ª× ×רוך מדי בשביל שורה ×חת. 703×‘×¡×™×•× ×ž×™×œ×” ×× ×”×˜×§×¡×˜ ×©×”×§×©×ª× ×רוך מדי בשביל שורה ×חת.
704 704
705להפעלת Auto Fill mode יש להקיש M-x auto-fill-mode <Return>‎. ×›×שר ×ופן 705להפעלת Auto Fill mode יש להקיש M-x auto-fill-mode <Return>‎. ×›×שר ×ופן
706×–×” מופעל, ניתן לבטלו ×¢"×™ M-x auto-fill-mode <Return>‎. ×–×ת ×ומרת, פקודה 706×–×” מופעל, ניתן לבטלו ×¢×´×™ M-x auto-fill-mode <Return>‎. ×–×ת ×ומרת, פקודה
707זו מפעילה ×ת ×”×ופן כש×ינו פעיל ומבטלת ×ותו ×›×©×”×•× ×¤×¢×™×œ. לפעולה זו 707זו מפעילה ×ת ×”×ופן כש×ינו פעיל ומבטלת ×ותו ×›×©×”×•× ×¤×¢×™×œ. לפעולה זו
708קור××™× "מיתוג" -- הפקודה "ממתגת" ×ת ×”×ופן. 708קור××™× "מיתוג" -- הפקודה "ממתגת" ×ת ×”×ופן.
709 709
@@ -717,7 +717,7 @@ Auto Fill mode. ×›×שר ×ופן ×–×” מופעל, Emacs ×וטומטית פות
717 717
718>> הקישו C-x f ×¢× ×רגומנט של 20. (C-u 2 0 C-x f). ×חר־כך הקישו טקסט 718>> הקישו C-x f ×¢× ×רגומנט של 20. (C-u 2 0 C-x f). ×חר־כך הקישו טקסט
719 כלשהו ושימו לב ש־Emacs פותח שורות חדשות ×חרי 20 ×ª×•×•×™× ×œ×›×œ היותר. 719 כלשהו ושימו לב ש־Emacs פותח שורות חדשות ×חרי 20 ×ª×•×•×™× ×œ×›×œ היותר.
720 לבסוף, החזירו ×ת הגדרת ×”×©×•×œ×™×™× ×œÖ¾70 ×¢"×™ שימוש חוזר ב־C-x f. 720 לבסוף, החזירו ×ת הגדרת ×”×©×•×œ×™×™× ×œÖ¾70 ×¢×´×™ שימוש חוזר ב־C-x f.
721 721
722×× ×¢×¨×›×ª× ×©×™× ×•×™×™× ×‘×מצע פסקה, Auto Fill mode ×œ× ×™×ž×œ× ×©×•×¨×•×ª מחדש ב×ופן 722×× ×¢×¨×›×ª× ×©×™× ×•×™×™× ×‘×מצע פסקה, Auto Fill mode ×œ× ×™×ž×œ× ×©×•×¨×•×ª מחדש ב×ופן
723×וטומטי. 723×וטומטי.
@@ -766,7 +766,7 @@ Auto Fill mode. ×›×שר ×ופן ×–×” מופעל, Emacs ×וטומטית פות
766× ×ž×¦× "סמ". עתה הקישו <DEL>. ×”Ö¾"מ" נמחק מהמחרוזת והסמן חוזר ×œ×ž×§×•× ×‘×• 766× ×ž×¦× "סמ". עתה הקישו <DEL>. ×”Ö¾"מ" נמחק מהמחרוזת והסמן חוזר ×œ×ž×§×•× ×‘×•
767×”×•× ×ž×¦× ×ת "ס" לר×שונה. 767×”×•× ×ž×¦× ×ת "ס" לר×שונה.
768 768
769×× ×‘×ž×”×œ×š החיפוש תפעילו פקודה כלשהי ×¢"×™ הקשה על מקש תוך לחיצה על 769×× ×‘×ž×”×œ×š החיפוש תפעילו פקודה כלשהי ×¢×´×™ הקשה על מקש תוך לחיצה על
770CONTROL ×ו META, החיפוש יסתיי×. (כמה ×ª×•×•×™× ×™×•×¦××™× ×ž×›×œ×œ ×–×” -- ×לו ×ª×•×•×™× 770CONTROL ×ו META, החיפוש יסתיי×. (כמה ×ª×•×•×™× ×™×•×¦××™× ×ž×›×œ×œ ×–×” -- ×לו תווי×
771×ž×™×•×—×“×™× ×‘×¢×ª חיפוש, כדוגמת C-s ו־C-r.) 771×ž×™×•×—×“×™× ×‘×¢×ª חיפוש, כדוגמת C-s ו־C-r.)
772 772
@@ -800,7 +800,7 @@ CONTROL ×ו META, החיפוש יסתיי×. (כמה ×ª×•×•×™× ×™×•×¦××™× ×ž
800 הסמן בחלון העליון ייש×ר ×‘×ž×§×•× ×‘×• ×”×•× ×”×™×” לפני־כן. 800 הסמן בחלון העליון ייש×ר ×‘×ž×§×•× ×‘×• ×”×•× ×”×™×” לפני־כן.
801 801
802תוכלו להמשיך להשתמש ב־C-x o כדי לדלג בין החלונות. "החלון הנבחר", ×ותו 802תוכלו להמשיך להשתמש ב־C-x o כדי לדלג בין החלונות. "החלון הנבחר", ×ותו
803חלון בו ×”× ×›× ×¢×•×¨×›×™× ×˜×§×¡×˜, מזוהה ×¢"×™ סמן בולט שמהבהב בזמן ש××™× ×›× 803חלון בו ×”× ×›× ×¢×•×¨×›×™× ×˜×§×¡×˜, מזוהה ×¢×´×™ סמן בולט שמהבהב בזמן ש××™× ×›×
804מקלידי×. לכל החלונות ×”××—×¨×™× ×ž×™×§×•× ×¡×ž×Ÿ משלה×; ×× ×”×¤×¢×œ×ª× ×ת Emacs על צג 804מקלידי×. לכל החלונות ×”××—×¨×™× ×ž×™×§×•× ×¡×ž×Ÿ משלה×; ×× ×”×¤×¢×œ×ª× ×ת Emacs על צג
805גרפי, ×ž×™×§×•× ×”×¡×ž×Ÿ בחלונות ×”××—×¨×™× ×ž×•×¦×’ כתיבה ריקה ש××™× ×” מהבהבת. 805גרפי, ×ž×™×§×•× ×”×¡×ž×Ÿ בחלונות ×”××—×¨×™× ×ž×•×¦×’ כתיבה ריקה ש××™× ×” מהבהבת.
806 806
@@ -809,9 +809,9 @@ CONTROL ×ו META, החיפוש יסתיי×. (כמה ×ª×•×•×™× ×™×•×¦××™× ×ž
809הנבחר. 809הנבחר.
810 810
811â€C-M-v ×”×™× ×“×•×’×ž× ×חת של פקודת CONTROL-META. ×× ×‘×ž×§×œ×“×ª ×©×œ×›× ×§×™×™× ×ž×§×© 811â€C-M-v ×”×™× ×“×•×’×ž× ×חת של פקודת CONTROL-META. ×× ×‘×ž×§×œ×“×ª ×©×œ×›× ×§×™×™× ×ž×§×©
812META (×ו Alt) ×מיתי, תוכלו להקיש ×ת הפקודה ×¢"×™ לחיצה והחזקה של מקשי 812META (×ו Alt) ×מיתי, תוכלו להקיש ×ת הפקודה ×¢×´×™ לחיצה והחזקה של מקשי
813CONTROL ו־META ×’× ×™×—×“ ו××– להקיש v. הסדר שבו תלחצו על CONTROL ו־META 813CONTROL ו־META ×’× ×™×—×“ ו××– להקיש v. הסדר שבו תלחצו על CONTROL ו־META
814×ינו משנה ×›×™ שני ×”×ž×§×©×™× ×”×œ×œ×• ×¤×•×¢×œ×™× ×¢"×™ שינוי התו המוקש יחד ×ית×. 814×ינו משנה ×›×™ שני ×”×ž×§×©×™× ×”×œ×œ×• ×¤×•×¢×œ×™× ×¢×´×™ שינוי התו המוקש יחד ×ית×.
815 815
816×× ×ין במקלדת מקש META ×מיתי ו××ª× ×ž×©×ª×ž×©×™× ×‘Ö¾<ESC> כתחליף, הסדר כן 816×× ×ין במקלדת מקש META ×מיתי ו××ª× ×ž×©×ª×ž×©×™× ×‘Ö¾<ESC> כתחליף, הסדר כן
817משנה: ×—×™×™×‘×™× ×œ×”×§×™×© <ESC> ורק ל×חר מכן CONTROL-v, וז×ת ×ž×©×•× 817משנה: ×—×™×™×‘×™× ×œ×”×§×™×© <ESC> ורק ל×חר מכן CONTROL-v, וז×ת משו×
@@ -854,8 +854,8 @@ CONTROL ו־META ×’× ×™×—×“ ו××– להקיש v. הסדר שבו תלחצו ×¢×
854>> הקישו M-x delete-frame <Return>‎. 854>> הקישו M-x delete-frame <Return>‎.
855 התבנית שבה ×”×§×©×ª× ×ת הפקודה תיסגר ×•×ª×™×¢×œ× ×ž×”×ž×¡×š. 855 התבנית שבה ×”×§×©×ª× ×ת הפקודה תיסגר ×•×ª×™×¢×œ× ×ž×”×ž×¡×š.
856 856
857כמו־כן, ניתן לסגור תבנית בדרך הרגילה הנתמכת ע"י התצוגה הגרפית של 857כמו־כן, ניתן לסגור תבנית בדרך הרגילה הנתמכת ע״י התצוגה הגרפית של
858המערכת ×©×œ×›× (בדרך־כלל, ×¢"×™ הקלקה על הכפתור המסומן ב־"X" בפינה עליונה 858המערכת ×©×œ×›× (בדרך־כלל, ×¢×´×™ הקלקה על הכפתור המסומן ב־"X" בפינה עליונה
859של התבנית.) ×©×•× ×ž×™×“×¢ ×ינו הולך לעיבוד ×›×שר ×¡×•×’×¨×™× ×ª×‘× ×™×ª (×ו חלון). 859של התבנית.) ×©×•× ×ž×™×“×¢ ×ינו הולך לעיבוד ×›×שר ×¡×•×’×¨×™× ×ª×‘× ×™×ª (×ו חלון).
860המידע ×”×–×” פשוט יורד מהתצוגה, ×בל ניתן ל×חזרו מ×וחר יותר. 860המידע ×”×–×” פשוט יורד מהתצוגה, ×בל ניתן ל×חזרו מ×וחר יותר.
861 861
@@ -863,7 +863,7 @@ CONTROL ו־META ×’× ×™×—×“ ו××– להקיש v. הסדר שבו תלחצו ×¢×
863* רמות עריכה רקורסיביות 863* רמות עריכה רקורסיביות
864----------------------- 864-----------------------
865 865
866יתכן ותיקלעו למצב שקרוי "רמת עריכה רקורסיבית". Emacs מציין ×–×ת ×¢"×™ 866יתכן ותיקלעו למצב שקרוי "רמת עריכה רקורסיבית". Emacs מציין ×–×ת ×¢×´×
867×¡×•×’×¨×™×™× ×ž×¨×•×‘×¢×™× ×‘×©×•×¨×ª הסטטוס מסביב ×œ×©× ×”×ופן הר×שי. למשל, יוצג ×©× 867×¡×•×’×¨×™×™× ×ž×¨×•×‘×¢×™× ×‘×©×•×¨×ª הסטטוס מסביב ×œ×©× ×”×ופן הר×שי. למשל, יוצג ש×
868[(Fundamental)] ×‘×ž×§×•× (Fundamental). 868[(Fundamental)] ×‘×ž×§×•× (Fundamental).
869 869
@@ -910,7 +910,7 @@ M-x help <Return>‎ כתחליף.)
910לציין מה הן עושות, השמות ×¢×©×•×™×™× ×œ×©×ž×© כתיעוד מקוצר -- מספיק כדי להזכיר 910לציין מה הן עושות, השמות ×¢×©×•×™×™× ×œ×©×ž×© כתיעוד מקוצר -- מספיק כדי להזכיר
911×œ×›× ×ת הפקודות ×©×œ×ž×“×ª× ×‘×¢×‘×¨. 911×œ×›× ×ת הפקודות ×©×œ×ž×“×ª× ×‘×¢×‘×¨.
912 912
913ניתן לציין ×חרי C-h c ×’× ×¤×§×•×“×•×ª שמופעלות ×¢"×™ סדרת ×ž×§×©×™× ×‘×ורך גדול 913ניתן לציין ×חרי C-h c ×’× ×¤×§×•×“×•×ª שמופעלות ×¢×´×™ סדרת ×ž×§×©×™× ×‘×ורך גדול
914מ×חד, כגון C-x C-s ×ו (×× ×ין מקש META ×ו EDIT ×ו ALT) â€â€Ž<ESC> v. 914מ×חד, כגון C-x C-s ×ו (×× ×ין מקש META ×ו EDIT ×ו ALT) â€â€Ž<ESC> v.
915 915
916לקבלת מידע מפורט יותר על פקודה, השתמשו בפקודה C-h k ×‘×ž×§×•× C-h c. 916לקבלת מידע מפורט יותר על פקודה, השתמשו בפקודה C-h k ×‘×ž×§×•× C-h c.
@@ -934,7 +934,7 @@ M-x help <Return>‎ כתחליף.)
934 934
935 â€C-h a פקודות בנוגע ×œ× ×•×©× ×ž×¡×•×™×™×. הקישו מילת מפתח ו־Emacs 935 â€C-h a פקודות בנוגע ×œ× ×•×©× ×ž×¡×•×™×™×. הקישו מילת מפתח ו־Emacs
936 יציג ×ת רשימת הפקודות ששמותיהן מכילות ×ת מילת המפתח. 936 יציג ×ת רשימת הפקודות ששמותיהן מכילות ×ת מילת המפתח.
937 כל הפקודות הללו ניתנות להפעלה ע"י META-x. עבור חלק 937 כל הפקודות הללו ניתנות להפעלה ע״י META-x. עבור חלק
938 מהפקודות תוצג ×’× ×¡×“×¨×ª ×ž×§×©×™× ×©×ž×¤×¢×™×œ×” ×ת הפקודה. 938 מהפקודות תוצג ×’× ×¡×“×¨×ª ×ž×§×©×™× ×©×ž×¤×¢×™×œ×” ×ת הפקודה.
939 939
940>> הקישו C-h a file <Return>‎. 940>> הקישו C-h a file <Return>‎.
@@ -960,9 +960,9 @@ find-file.
960* עוד תכונות 960* עוד תכונות
961------------ 961------------
962 962
963תוכלו ללמוד עוד על־×ודות Emacs ×¢"×™ קרי××” במדריך למשתמש שלו, ×× ×›×¡×¤×¨ 963תוכלו ללמוד עוד על־×ודות Emacs ×¢×´×™ קרי××” במדריך למשתמש שלו, ×× ×›×¡×¤×¨
964מודפס ×ו בגירסה מקוונת בתוך Emacs עצמו. (תוכלו להגיע ×ל המדריך דרך 964מודפס ×ו בגירסה מקוונת בתוך Emacs עצמו. (תוכלו להגיע ×ל המדריך דרך
965תפריט Help ×ו ×¢"×™ הקשה על C-h r.) ××•×œ× ×©×ª×™ תכונות שבווד××™ ימצ×ו חן 965תפריט Help ×ו ×¢×´×™ הקשה על C-h r.) ××•×œ× ×©×ª×™ תכונות שבווד××™ ימצ×ו חן
966×‘×¢×™× ×™×›× ×”×Ÿ השלמה ×שר חוסכת הקשות, ו־dired שמ×פשרת טיפול נוח בקבצי×. 966×‘×¢×™× ×™×›× ×”×Ÿ השלמה ×שר חוסכת הקשות, ו־dired שמ×פשרת טיפול נוח בקבצי×.
967 967
968השלמה ×”×™× ×“×¨×š להימנע מהקשות מיותרות. למשל, ×× ×‘×¨×¦×•× ×›× ×œ×¢×‘×•×¨ לחוצץ 968השלמה ×”×™× ×“×¨×š להימנע מהקשות מיותרות. למשל, ×× ×‘×¨×¦×•× ×›× ×œ×¢×‘×•×¨ לחוצץ
@@ -991,7 +991,7 @@ find-file.
991-------------- 991--------------
992 992
993שיעור ×–×” הינו צ××¦× ×©×œ שורה ×רוכה של ×©×™×¢×•×¨×™× ×‘×©×™×ž×•×© ב־Emacs, החל מהגרסה 993שיעור ×–×” הינו צ××¦× ×©×œ שורה ×רוכה של ×©×™×¢×•×¨×™× ×‘×©×™×ž×•×© ב־Emacs, החל מהגרסה
994הר×שונה שנכתבה ×¢"×™ Stuart Cracraft עבור גירסת ×”Ö¾Emacs המקורית. 994הר×שונה שנכתבה ×¢×´×™ Stuart Cracraft עבור גירסת ×”Ö¾Emacs המקורית.
995 995
996גירסה זו של השיעור ×”×™× ×” חלק מחבילת GNU Emacs. ×”×™× ×ž×•×’× ×ª בזכויות ×™×•×¦×¨×™× 996גירסה זו של השיעור ×”×™× ×” חלק מחבילת GNU Emacs. ×”×™× ×ž×•×’× ×ª בזכויות יוצרי×
997וניתנת להעתקה והפצת ×¢×•×ª×§×™× ×‘×ª× ××™× ×ž×¡×•×™×™×ž×™× ×›×“×œ×§×ž×Ÿ: 997וניתנת להעתקה והפצת ×¢×•×ª×§×™× ×‘×ª× ××™× ×ž×¡×•×™×™×ž×™× ×›×“×œ×§×ž×Ÿ:
@@ -999,7 +999,7 @@ find-file.
999 Copyright (C) 2010-2015 Free Software Foundation, Inc. 999 Copyright (C) 2010-2015 Free Software Foundation, Inc.
1000 1000
1001â€GNU Emacs הינו תכנה חפשית; ×–×›×•×ª×›× ×œ×”×¤×™×¦×• ו\×ו לשנותו בכפוף לתנ××™ 1001â€GNU Emacs הינו תכנה חפשית; ×–×›×•×ª×›× ×œ×”×¤×™×¦×• ו\×ו לשנותו בכפוף לתנ××™
1002הרשיון GNU General Public License, כפי ×©×”×•× ×™×•×¦× ×œ×ור ×¢"×™ Free 1002הרשיון GNU General Public License, כפי ×©×”×•× ×™×•×¦× ×œ×ור ×¢×´×™ Free
1003Software Foundation, ×× ×‘×’×¨×¡× 3 של הרשיון, ו×× (×›×ופציה השמורה לכ×) 1003Software Foundation, ×× ×‘×’×¨×¡× 3 של הרשיון, ו×× (×›×ופציה השמורה לכ×)
1004בכל ×’×¨×¡× ×ž×וחרת יותר. 1004בכל ×’×¨×¡× ×ž×וחרת יותר.
1005 1005
@@ -1012,7 +1012,7 @@ Software Foundation, ×× ×‘×’×¨×¡× 3 של הרשיון, ו×× (×›×ופציה
1012 1012
1013×”× ×›× ×ž×•×–×ž× ×™× ×œ×§×¨×•× ×ת הקובץ COPYING ו××– ×כן לחלק ×¢×•×ª×§×™× ×©×œ GNU Emacs 1013×”× ×›× ×ž×•×–×ž× ×™× ×œ×§×¨×•× ×ת הקובץ COPYING ו××– ×כן לחלק ×¢×•×ª×§×™× ×©×œ GNU Emacs
1014לחבריכ×. עזרו לנו לחסל ×ת "הבעלות" על תוכנה ש××™× ×” ××œ× ×—×‘×œ×” בתוכנה, 1014לחבריכ×. עזרו לנו לחסל ×ת "הבעלות" על תוכנה ש××™× ×” ××œ× ×—×‘×œ×” בתוכנה,
1015וז×ת ×¢"×™ שימוש, כתיבה ושיתוף של תוכנה חופשית! 1015וז×ת ×¢×´×™ שימוש, כתיבה ושיתוף של תוכנה חופשית!
1016 1016
1017 1017
1018 1018
diff --git a/lib/gnulib.mk b/lib/gnulib.mk
index 07541ec93c8..1b671e7f6de 100644
--- a/lib/gnulib.mk
+++ b/lib/gnulib.mk
@@ -1578,6 +1578,7 @@ time.h: time.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(
1578 -e 's|@''PTHREAD_H_DEFINES_STRUCT_TIMESPEC''@|$(PTHREAD_H_DEFINES_STRUCT_TIMESPEC)|g' \ 1578 -e 's|@''PTHREAD_H_DEFINES_STRUCT_TIMESPEC''@|$(PTHREAD_H_DEFINES_STRUCT_TIMESPEC)|g' \
1579 -e 's|@''SYS_TIME_H_DEFINES_STRUCT_TIMESPEC''@|$(SYS_TIME_H_DEFINES_STRUCT_TIMESPEC)|g' \ 1579 -e 's|@''SYS_TIME_H_DEFINES_STRUCT_TIMESPEC''@|$(SYS_TIME_H_DEFINES_STRUCT_TIMESPEC)|g' \
1580 -e 's|@''TIME_H_DEFINES_STRUCT_TIMESPEC''@|$(TIME_H_DEFINES_STRUCT_TIMESPEC)|g' \ 1580 -e 's|@''TIME_H_DEFINES_STRUCT_TIMESPEC''@|$(TIME_H_DEFINES_STRUCT_TIMESPEC)|g' \
1581 -e 's|@''UNISTD_H_DEFINES_STRUCT_TIMESPEC''@|$(UNISTD_H_DEFINES_STRUCT_TIMESPEC)|g' \
1581 -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ 1582 -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \
1582 -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ 1583 -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \
1583 -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \ 1584 -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \
diff --git a/lib/time.in.h b/lib/time.in.h
index 8d721c5ab84..1a6b746ccab 100644
--- a/lib/time.in.h
+++ b/lib/time.in.h
@@ -55,6 +55,8 @@
55# include <sys/time.h> 55# include <sys/time.h>
56# elif @PTHREAD_H_DEFINES_STRUCT_TIMESPEC@ 56# elif @PTHREAD_H_DEFINES_STRUCT_TIMESPEC@
57# include <pthread.h> 57# include <pthread.h>
58# elif @UNISTD_H_DEFINES_STRUCT_TIMESPEC@
59# include <unistd.h>
58# else 60# else
59 61
60# ifdef __cplusplus 62# ifdef __cplusplus
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 80dfeef3750..0a3c7c95929 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,15 +1,233 @@
12015-01-31 Stefan Monnier <monnier@iro.umontreal.ca>
2
3 * emacs-lisp/eieio.el (defclass): Use new eieio-make-class-predicate
4 and eieio-make-child-predicate.
5 (eieio-class-parents): Use eieio--class-object.
6 (slot-boundp, find-class, eieio-override-prin1): Avoid class-p.
7 (slot-exists-p): Use find-class.
8
9 * emacs-lisp/eieio-opt.el (eieio-help-class, eieio-help-constructor):
10 Use find-lisp-object-file-name, help-fns-short-filename and new calling
11 convention for eieio-class-def.
12 (eieio-build-class-list): Remove function, unused.
13 (eieio-method-def): Remove button type, unused.
14 (eieio-class-def): Inherit from help-function-def.
15 (eieio--defclass-regexp): New constant.
16 (find-function-regexp-alist): Use it.
17 (eieio--specializers-apply-to-class-p): Handle eieio--static as well.
18 (eieio-help-find-method-definition, eieio-help-find-class-definition):
19 Remove functions.
20
21 * emacs-lisp/eieio-core.el (eieio--check-type): Remove.
22 Use cl-check-type everywhere instead.
23 (eieio-class-object): Remove, use find-class instead when needed.
24 (class-p): Don't inline.
25 (eieio-object-p): Check more thoroughly, so we don't treat cl-structs,
26 such as eieio classes, as objects. Don't inline.
27 (object-p): Mark as obsolete.
28 (eieio-defclass-autoload, eieio-defclass-internal, eieio-oref)
29 (eieio--generic-tagcode): Avoid `class-p'.
30 (eieio-make-class-predicate, eieio-make-child-predicate): New functions.
31 (eieio-defclass-internal): Use current-load-list rather than
32 `class-location'.
33
34 * emacs-lisp/cl-generic.el (cl--generic-search-method): Fix regexp.
35
362015-01-30 Stefan Monnier <monnier@iro.umontreal.ca>
37
38 * emacs-lisp/backquote.el (backquote-delay-process): Don't reuse `s'
39 since it may be "equivalent" in some sense, yet different (bug#19734).
40
412015-01-30 Oleh Krehel <ohwoeowho@gmail.com>
42
43 * outline.el (outline-font-lock-face): Add docstring.
44 (outline-invisible-p): Improve docstring.
45 (outline-invent-heading): Add docstring.
46 (outline-promote): Improve docstring.
47 (outline-demote): Improve docstring.
48 (outline-head-from-level): Improve docstring.
49 (outline-end-of-heading): Add docstring.
50 (outline-next-visible-heading): Improve docstring.
51 (outline-previous-visible-heading): Improve docstring.
52 (outline-hide-region-body): Improve docstring.
53 (outline-flag-subtree): Add docstring.
54 (outline-end-of-subtree): Add docstring.
55 (outline-headers-as-kill): Improve docstring.
56
572015-01-30 Oleh Krehel <ohwoeowho@gmail.com>
58
59 * outline.el (outline-hide-entry): Rename from `hide-entry'.
60 (hide-entry): Declare as obsolete.
61 (outline-show-entry): Rename from `show-entry'.
62 (show-entry): Declare as obsolete.
63 (outline-hide-body): Rename from `hide-body'.
64 (hide-body): Declare as obsolete.
65 (outline-hide-region-body): Rename from `hide-region-body'.
66 (hide-region-body): Declare as obsolete.
67 (outline-show-all): Rename from `show-all'.
68 (show-all): Declare as obsolete.
69 (outline-hide-subtree): Rename from `hide-subtree'.
70 (hide-subtree): Declare as obsolete.
71 (outline-hide-leaves): Rename from `hide-leaves'.
72 (hide-leaves): Declare as obsolete.
73 (outline-show-subtree): Rename from `show-subtree'.
74 (show-subtree): Declare as obsolete.
75 (outline-hide-sublevels): Rename from `hide-sublevels'.
76 (hide-sublevels): Declare as obsolete.
77 (outline-hide-other): Rename from `hide-other'.
78 (hide-other): Declare as obsolete.
79 (outline-show-children): Rename from `show-children'.
80 (show-children): Declare as obsolete.
81 (outline-show-branches): Rename from `show-branches'.
82 (show-branches): Declare as obsolete.
83
842015-01-30 Oleh Krehel <ohwoeowho@gmail.com>
85
86 * outline.el (outline-mode): Clean up docstring.
87 (font-lock-warning-face): Remove obsolete declaration.
88 (outline-font-lock-face): Remove obsolete comment.
89
902015-01-30 Oleh Krehel <ohwoeowho@gmail.com>
91
92 * lisp/custom.el (defface): Set `indent' to 1.
93
942015-01-30 Oleh Krehel <ohwoeowho@gmail.com>
95
96 * emacs-lisp/easy-mmode.el (define-minor-mode): Set `indent' to 1.
97
982015-01-30 Michal Nazarewicz <mina86@mina86.com>
99
100 * lisp/files.el (save-buffers-kill-emacs): If `confirm-kill-emacs'
101 is set, but user has just been asked whether they really want to
102 kill Emacs (for example with a ‘Modified buffers exist; exit
103 anyway?’ prompt), do not ask them for another confirmation.
104
1052015-01-29 Jay Belanger <jay.p.belanger@gmail.com>
106
107 * lisp/calc/calc-units.el (calc-convert-exact-units): New function.
108 (calc-convert-units): Check for missing units.
109 (math-consistent-units-p): Strengthen the test for consistent units.
110
111 * lisp/calc/calc-ext.el (calc-init-extensions): Autoload
112 `calc-convert-exact-units' and assign it a keybinding.
113
114 * lisp/calc/calc-help (calc-u-prefix-help): Add help for the
115 "un" keybinding.
116
1172015-01-28 Stefan Monnier <monnier@iro.umontreal.ca>
118
119 * emacs-lisp/cl.el (cl--function-convert): Simplify.
120
1212015-01-28 Tassilo Horn <tsdh@gnu.org>
122
123 * textmodes/reftex.el (reftex-syntax-table-for-bib): Give ( and )
124 punctuation syntax since to allow bibtex fields with values such
125 as {Test 1) and 2)} (bug#19205, bug#19707).
126 (reftex--prepare-syntax-tables): New function.
127 (reftex-mode): Use it.
128
1292015-01-28 Fabián Ezequiel Gallina <fgallina@gnu.org>
130
131 python.el: New non-global state dependent indentation engine.
132 (Bug#18319, Bug#19595)
133 * progmodes/python.el (python-syntax-comment-or-string-p):
134 Accept PPSS as argument.
135 (python-syntax-closing-paren-p): New function.
136 (python-indent-current-level)
137 (python-indent-levels): Mark obsolete.
138 (python-indent-context): Return more context cases.
139 (python-indent--calculate-indentation)
140 (python-indent--calculate-levels): New functions.
141 (python-indent-calculate-levels): Use them.
142 (python-indent-calculate-indentation, python-indent-line):
143 (python-indent-line-function): Rewritten to use new API.
144 (python-indent-dedent-line): Simplify logic.
145 (python-indent-dedent-line-backspace): Use `unless`.
146 (python-indent-toggle-levels): Delete function.
147
1482015-01-28 Daniel Koning <dk@danielkoning.com> (tiny change)
149
150 * subr.el (posnp): Correct docstring of `posnp'.
151 (posn-col-row): Make it work with all mouse position objects.
152 * textmodes/artist.el (artist-mouse-draw-continously):
153 Cancel timers if an error occurs during continuous drawing. (Bug#6130)
154
1552015-01-28 Eli Zaretskii <eliz@gnu.org>
156
157 * button.el (button-activate, push-button): Doc fix. (Bug#19628)
158
1592015-01-28 Michael Albinus <michael.albinus@gmx.de>
160
161 * filenotify.el (file-notify-descriptors, file-notify-handle-event):
162 Adapt docstring.
163 (file-notify--descriptor): New defun.
164 (file-notify-callback, file-notify-add-watch, file-notify-rm-watch):
165 Adapt docstring. Handle multiple values for
166 `file-notify-descriptors' entries. (Bug#18880)
167
168 * net/tramp.el (tramp-handle-file-notify-rm-watch): Do not check
169 `file-notify-descriptors', the implementation has been changed.
170
1712015-01-28 Eli Zaretskii <eliz@gnu.org>
172
173 * net/net-utils.el (net-utils-run-program, net-utils-run-simple):
174 On MS-Windows, bind coding-system-for-read to the console output
175 codepage. (Bug#19458)
176
1772015-01-28 Dmitry Gutov <dgutov@yandex.ru>
178
179 Unbreak `mouse-action' property in text buttons.
180 * button.el (push-button): Fix regression from 2012-12-06.
181
1822015-01-28 Glenn Morris <rgm@gnu.org>
183
184 * progmodes/sh-script.el (sh-mode): Doc fix.
185 (sh-basic-indent-line): Handle electric newline. (Bug#18756)
186
1872015-01-28 Paul Eggert <eggert@cs.ucla.edu>
188
189 Fix dired quoting bug with "Hit`N`Hide". Fixes Bug#19498.
190 * files.el (shell-quote-wildcard-pattern): Also quote "`".
191
1922015-01-28 Stefan Monnier <monnier@iro.umontreal.ca>
193
194 Tighten up the tagcode used for eieio and cl-struct objects.
195 * loadup.el: Load cl-preloaded.
196 * emacs-lisp/eieio-core.el (eieio-defclass-internal): Set the function
197 slot of the tag symbol to :quick-object-witness-check.
198 (eieio-object-p): Use :quick-object-witness-check.
199 (eieio--generic-tagcode): Use cl--generic-struct-tag.
200 * emacs-lisp/cl-preloaded.el: New file.
201 * emacs-lisp/cl-macs.el (cl--bind-inits): Remove, unused.
202 (cl--transform-lambda, cl-destructuring-bind): Remove cl--bind-inits.
203 (cl--make-usage-args): Strip away &aux args.
204 (cl-case, cl-typecase, cl--parse-loop-clause): Use macroexp-let2.
205 (cl-the, cl-check-type): Use macroexp-let2 and cl-typep.
206 (cl-defstruct): Use `declare' and cl-struct-define.
207 * emacs-lisp/cl-generic.el (cl--generic-struct-tag): New function.
208 (cl--generic-struct-tagcode): Use it to tighten the tagcode.
209
2102015-01-27 Katsumi Yamaoka <yamaoka@jpl.org>
211
212 * emacs-lisp/cl.el (cl--function-convert):
213 Merge cache that cl--labels-convert adds (bug#19699).
214
2152015-01-27 Ivan Shmakov <ivan@siamics.net>
216
217 * tar-mode.el: Allow for adding new archive members. (Bug#19274)
218 (tar-new-regular-file-header, tar--pad-to, tar--put-at)
219 (tar-header-serialize): New functions.
220 (tar-current-position): Split from tar-current-descriptor.
221 (tar-current-descriptor): Use it.
222 (tar-new-entry): New command.
223 (tar-mode-map): Bind it.
224
12015-01-27 Sam Steingold <sds@gnu.org> 2252015-01-27 Sam Steingold <sds@gnu.org>
2 226
3 * progmodes/python.el (python-check-custom-command): Buffer local 227 * progmodes/python.el (python-check-custom-command): Buffer local
4 because it usually includes the buffer name. 228 because it usually includes the buffer name.
5 (python-check-command): Set to epylint when pyflakes is not available. 229 (python-check-command): Set to epylint when pyflakes is not available.
6 230
72015-01-27 Thomas Fitzsimmons <fitzsim@fitzsim.org>
8
9 * net/eudcb-bbdb.el, net/eudcb-ldap.el, net/eudcb-mab.el,
10 net/eudc-bob.el, net/eudcb-ph.el, net/eudc.el, net/eudc-export.el,
11 net/eudc-hotlist.el, net/eudc-vars.el: New maintainer.
12
132015-01-27 Artur Malabarba <bruce.connor.am@gmail.com> 2312015-01-27 Artur Malabarba <bruce.connor.am@gmail.com>
14 232
15 * isearch.el (isearch-process-search-char): Add docstring. 233 * isearch.el (isearch-process-search-char): Add docstring.
@@ -70,6 +288,8 @@
702015-01-26 Lars Ingebrigtsen <larsi@gnus.org> 2882015-01-26 Lars Ingebrigtsen <larsi@gnus.org>
71 289
72 * net/shr.el (shr-make-table-1): Fix colspan typo. 290 * net/shr.el (shr-make-table-1): Fix colspan typo.
291 (shr-make-table-1): Add comments.
292 (shr-make-table-1): Make colspan display more sensibly.
73 293
74 * net/eww.el (eww-add-bookmark): Fix prompt and clean up the code 294 * net/eww.el (eww-add-bookmark): Fix prompt and clean up the code
75 slightly. 295 slightly.
@@ -1742,8 +1962,7 @@
17422014-12-14 Steve Purcell <steve@sanityinc.com> (tiny change) 19622014-12-14 Steve Purcell <steve@sanityinc.com> (tiny change)
1743 1963
1744 * emacs-lisp/package.el (package-menu-mode): Use an extra column 1964 * emacs-lisp/package.el (package-menu-mode): Use an extra column
1745 for the "Version" column, to accomodate date-and-time-based 1965 for the "Version" column, to accomodate date-and-time-based versions.
1746 versions.
1747 1966
17482014-12-14 Cameron Desautels <camdez@gmail.com> 19672014-12-14 Cameron Desautels <camdez@gmail.com>
1749 1968
diff --git a/lisp/button.el b/lisp/button.el
index 189a1c23a4d..e7602dd7050 100644
--- a/lisp/button.el
+++ b/lisp/button.el
@@ -224,10 +224,10 @@ changes to a supertype are not reflected in its subtypes)."
224 prop val)))) 224 prop val))))
225 225
226(defun button-activate (button &optional use-mouse-action) 226(defun button-activate (button &optional use-mouse-action)
227 "Call BUTTON's action property. 227 "Call BUTTON's `action' property.
228If USE-MOUSE-ACTION is non-nil, invoke the button's mouse-action 228If USE-MOUSE-ACTION is non-nil, invoke the button's `mouse-action'
229instead of its normal action; if the button has no mouse-action, 229property instead of `action'; if the button has no `mouse-action',
230the normal action is used instead. 230the value of `action' is used instead.
231 231
232The action can either be a marker or a function. If it's a 232The action can either be a marker or a function. If it's a
233marker then goto it. Otherwise it it is a function then it is 233marker then goto it. Otherwise it it is a function then it is
@@ -429,11 +429,13 @@ instead of starting at the next button."
429(defun push-button (&optional pos use-mouse-action) 429(defun push-button (&optional pos use-mouse-action)
430 "Perform the action specified by a button at location POS. 430 "Perform the action specified by a button at location POS.
431POS may be either a buffer position or a mouse-event. If 431POS may be either a buffer position or a mouse-event. If
432USE-MOUSE-ACTION is non-nil, invoke the button's mouse-action 432USE-MOUSE-ACTION is non-nil, invoke the button's `mouse-action'
433instead of its normal action; if the button has no mouse-action, 433property instead of its `action' property; if the button has no
434the normal action is used instead. The action may be either a 434`mouse-action', the value of `action' is used instead.
435function to call or a marker to display and is invoked using 435
436`button-activate' (which see). 436The action in both cases may be either a function to call or a
437marker to display and is invoked using `button-activate' (which
438see).
437 439
438POS defaults to point, except when `push-button' is invoked 440POS defaults to point, except when `push-button' is invoked
439interactively as the result of a mouse-event, in which case, the 441interactively as the result of a mouse-event, in which case, the
diff --git a/lisp/calc/calc-ext.el b/lisp/calc/calc-ext.el
index c3acb89e417..67d0c2701d2 100644
--- a/lisp/calc/calc-ext.el
+++ b/lisp/calc/calc-ext.el
@@ -561,6 +561,7 @@
561 (define-key calc-mode-map "ud" 'calc-define-unit) 561 (define-key calc-mode-map "ud" 'calc-define-unit)
562 (define-key calc-mode-map "ue" 'calc-explain-units) 562 (define-key calc-mode-map "ue" 'calc-explain-units)
563 (define-key calc-mode-map "ug" 'calc-get-unit-definition) 563 (define-key calc-mode-map "ug" 'calc-get-unit-definition)
564 (define-key calc-mode-map "un" 'calc-convert-exact-units)
564 (define-key calc-mode-map "up" 'calc-permanent-units) 565 (define-key calc-mode-map "up" 'calc-permanent-units)
565 (define-key calc-mode-map "ur" 'calc-remove-units) 566 (define-key calc-mode-map "ur" 'calc-remove-units)
566 (define-key calc-mode-map "us" 'calc-simplify-units) 567 (define-key calc-mode-map "us" 'calc-simplify-units)
@@ -1176,7 +1177,8 @@ calc-trail-scroll-right calc-trail-yank)
1176 ("calc-undo" calc-last-args calc-redo) 1177 ("calc-undo" calc-last-args calc-redo)
1177 1178
1178 ("calc-units" calc-autorange-units calc-base-units 1179 ("calc-units" calc-autorange-units calc-base-units
1179calc-convert-temperature calc-convert-units calc-define-unit 1180calc-convert-temperature calc-convert-units
1181calc-convert-exact-units calc-define-unit
1180calc-enter-units-table calc-explain-units calc-extract-units 1182calc-enter-units-table calc-explain-units calc-extract-units
1181calc-get-unit-definition calc-permanent-units calc-quick-units 1183calc-get-unit-definition calc-permanent-units calc-quick-units
1182calc-remove-units calc-simplify-units calc-undefine-unit 1184calc-remove-units calc-simplify-units calc-undefine-unit
diff --git a/lisp/calc/calc-help.el b/lisp/calc/calc-help.el
index 511e208ddea..17e5b0fdead 100644
--- a/lisp/calc/calc-help.el
+++ b/lisp/calc/calc-help.el
@@ -647,7 +647,7 @@ C-w Describe how there is no warranty for Calc."
647(defun calc-u-prefix-help () 647(defun calc-u-prefix-help ()
648 (interactive) 648 (interactive)
649 (calc-do-prefix-help 649 (calc-do-prefix-help
650 '("Simplify, Convert, Temperature-convert, Base-units" 650 '("Simplify, Convert, coNvert exact, Temperature-convert, Base-units"
651 "Autorange; Remove, eXtract; Explain; View-table; 0-9" 651 "Autorange; Remove, eXtract; Explain; View-table; 0-9"
652 "Define, Undefine, Get-defn, Permanent" 652 "Define, Undefine, Get-defn, Permanent"
653 "SHIFT + View-table-other-window" 653 "SHIFT + View-table-other-window"
diff --git a/lisp/calc/calc-units.el b/lisp/calc/calc-units.el
index 05950864a52..f3d02340fe3 100644
--- a/lisp/calc/calc-units.el
+++ b/lisp/calc/calc-units.el
@@ -470,6 +470,8 @@ If COMP or STD is non-nil, put that in the units table instead."
470 (if (string-match "\\` */" uoldname) 470 (if (string-match "\\` */" uoldname)
471 (setq uoldname (concat "1" uoldname))) 471 (setq uoldname (concat "1" uoldname)))
472 (math-read-expr uoldname)))))) 472 (math-read-expr uoldname))))))
473 (unless (math-units-in-expr-p uold t)
474 (error "No units specified"))
473 (when (eq (car-safe uold) 'error) 475 (when (eq (car-safe uold) 'error)
474 (error "Bad format in units expression: %s" (nth 1 uold))) 476 (error "Bad format in units expression: %s" (nth 1 uold)))
475 (setq expr (math-mul expr uold)))) 477 (setq expr (math-mul expr uold))))
@@ -514,6 +516,38 @@ If COMP or STD is non-nil, put that in the units table instead."
514 (math-put-default-units (if noold units res) (if comp units))) 516 (math-put-default-units (if noold units res) (if comp units)))
515 (calc-enter-result 1 "cvun" res)))))) 517 (calc-enter-result 1 "cvun" res))))))
516 518
519(defun calc-convert-exact-units ()
520 (interactive)
521 (calc-slow-wrapper
522 (let* ((expr (calc-top-n 1)))
523 (unless (math-units-in-expr-p expr t)
524 (error "No units in expression."))
525 (let* ((old-units (math-extract-units expr))
526 (defunits (math-get-default-units expr))
527 units
528 (new-units
529 (read-string (concat "New units"
530 (if defunits
531 (concat
532 " (default "
533 defunits
534 "): ")
535 ": ")))))
536 (if (and
537 (string= new-units "")
538 defunits)
539 (setq new-units defunits))
540 (setq units (math-read-expr new-units))
541 (when (eq (car-safe units) 'error)
542 (error "Bad format in units expression: %s" (nth 2 units)))
543 (math-check-unit-consistency old-units units)
544 (let ((res
545 (list '* (math-mul (math-remove-units expr)
546 (math-simplify-units
547 (math-to-standard-units (list '/ old-units units) nil)))
548 units)))
549 (calc-enter-result 1 "cvxu" res))))))
550
517(defun calc-autorange-units (arg) 551(defun calc-autorange-units (arg)
518 (interactive "P") 552 (interactive "P")
519 (calc-wrapper 553 (calc-wrapper
@@ -945,7 +979,7 @@ If COMP or STD is non-nil, put that in the units table instead."
945 (or 979 (or
946 (and (eq (car-safe newunits) 'var) 980 (and (eq (car-safe newunits) 'var)
947 (assq (nth 1 newunits) math-standard-units-systems)) 981 (assq (nth 1 newunits) math-standard-units-systems))
948 (math-numberp (math-get-units (list '/ expr newunits))))) 982 (math-numberp (math-get-units (math-to-standard-units (list '/ expr newunits) nil)))))
949 983
950(defun math-check-unit-consistency (expr units) 984(defun math-check-unit-consistency (expr units)
951 "Give an error if EXPR and UNITS do not have consistent units." 985 "Give an error if EXPR and UNITS do not have consistent units."
diff --git a/lisp/custom.el b/lisp/custom.el
index 779e585c04f..e5fe0ebaedd 100644
--- a/lisp/custom.el
+++ b/lisp/custom.el
@@ -411,7 +411,8 @@ In the ATTS property list, possible attributes are `:family',
411 411
412See Info node `(elisp) Faces' in the Emacs Lisp manual for more 412See Info node `(elisp) Faces' in the Emacs Lisp manual for more
413information." 413information."
414 (declare (doc-string 3)) 414 (declare (doc-string 3)
415 (indent 1))
415 ;; It is better not to use backquote in this file, 416 ;; It is better not to use backquote in this file,
416 ;; because that makes a bootstrapping problem 417 ;; because that makes a bootstrapping problem
417 ;; if you need to recompile all the Lisp files using interpreted code. 418 ;; if you need to recompile all the Lisp files using interpreted code.
diff --git a/lisp/emacs-lisp/backquote.el b/lisp/emacs-lisp/backquote.el
index 082955e0823..d5cdca2b1b5 100644
--- a/lisp/emacs-lisp/backquote.el
+++ b/lisp/emacs-lisp/backquote.el
@@ -120,9 +120,7 @@ Vectors work just like lists. Nested backquotes are permitted."
120This simply recurses through the body." 120This simply recurses through the body."
121 (let ((exp (backquote-listify (list (cons 0 (list 'quote (car s)))) 121 (let ((exp (backquote-listify (list (cons 0 (list 'quote (car s))))
122 (backquote-process (cdr s) level)))) 122 (backquote-process (cdr s) level))))
123 (if (eq (car-safe exp) 'quote) 123 (cons (if (eq (car-safe exp) 'quote) 0 1) exp)))
124 (cons 0 (list 'quote s))
125 (cons 1 exp))))
126 124
127(defun backquote-process (s &optional level) 125(defun backquote-process (s &optional level)
128 "Process the body of a backquote. 126 "Process the body of a backquote.
diff --git a/lisp/emacs-lisp/cl-generic.el b/lisp/emacs-lisp/cl-generic.el
index 1bb70963a57..72ec8ec1801 100644
--- a/lisp/emacs-lisp/cl-generic.el
+++ b/lisp/emacs-lisp/cl-generic.el
@@ -635,7 +635,8 @@ Can only be used from within the lexical body of a primary or around method."
635 635
636(defun cl--generic-search-method (met-name) 636(defun cl--generic-search-method (met-name)
637 (let ((base-re (concat "(\\(?:cl-\\)?defmethod[ \t]+" 637 (let ((base-re (concat "(\\(?:cl-\\)?defmethod[ \t]+"
638 (regexp-quote (format "%s\\_>" (car met-name)))))) 638 (regexp-quote (format "%s" (car met-name)))
639 "\\_>")))
639 (or 640 (or
640 (re-search-forward 641 (re-search-forward
641 (concat base-re "[^&\"\n]*" 642 (concat base-re "[^&\"\n]*"
@@ -724,6 +725,14 @@ Can only be used from within the lexical body of a primary or around method."
724 725
725(add-function :before-until cl-generic-tagcode-function 726(add-function :before-until cl-generic-tagcode-function
726 #'cl--generic-struct-tagcode) 727 #'cl--generic-struct-tagcode)
728
729(defun cl--generic-struct-tag (name)
730 `(and (vectorp ,name)
731 (> (length ,name) 0)
732 (let ((tag (aref ,name 0)))
733 (if (eq (symbol-function tag) :quick-object-witness-check)
734 tag))))
735
727(defun cl--generic-struct-tagcode (type name) 736(defun cl--generic-struct-tagcode (type name)
728 (and (symbolp type) 737 (and (symbolp type)
729 (get type 'cl-struct-type) 738 (get type 'cl-struct-type)
@@ -733,12 +742,19 @@ Can only be used from within the lexical body of a primary or around method."
733 (or (equal '(cl-tag-slot) (car (get type 'cl-struct-slots))) 742 (or (equal '(cl-tag-slot) (car (get type 'cl-struct-slots)))
734 (error "Can't dispatch on cl-struct %S: no tag in slot 0" 743 (error "Can't dispatch on cl-struct %S: no tag in slot 0"
735 type)) 744 type))
736 ;; We could/should check the vector has length >0, 745 ;; It's tempting to use (and (vectorp ,name) (aref ,name 0))
737 ;; but really, mixing vectors and structs is a bad idea, 746 ;; but that would suffer from some problems:
738 ;; so let's not waste time trying to handle the case 747 ;; - the vector may have size 0.
739 ;; of an empty vector. 748 ;; - when called on an actual vector (rather than an object), we'd
740 ;; BEWARE: this returns a bogus tag for non-struct vectors. 749 ;; end up returning an arbitrary value, possibly colliding with
741 `(50 . (and (vectorp ,name) (aref ,name 0))))) 750 ;; other tagcode's values.
751 ;; - it can also result in returning all kinds of irrelevant
752 ;; values which would end up filling up the method-cache with
753 ;; lots of irrelevant/redundant entries.
754 ;; FIXME: We could speed this up by introducing a dedicated
755 ;; vector type at the C level, so we could do something like
756 ;; (and (vector-objectp ,name) (aref ,name 0))
757 `(50 . ,(cl--generic-struct-tag name))))
742 758
743(add-function :before-until cl-generic-tag-types-function 759(add-function :before-until cl-generic-tag-types-function
744 #'cl--generic-struct-tag-types) 760 #'cl--generic-struct-tag-types)
diff --git a/lisp/emacs-lisp/cl-macs.el b/lisp/emacs-lisp/cl-macs.el
index 38f15b89b0e..eaec2c5263c 100644
--- a/lisp/emacs-lisp/cl-macs.el
+++ b/lisp/emacs-lisp/cl-macs.el
@@ -221,7 +221,7 @@ The name is made by appending a number to PREFIX, default \"G\"."
221 '(&optional &rest &key &allow-other-keys &aux &whole &body &environment)) 221 '(&optional &rest &key &allow-other-keys &aux &whole &body &environment))
222 222
223(defvar cl--bind-block) (defvar cl--bind-defs) (defvar cl--bind-enquote) 223(defvar cl--bind-block) (defvar cl--bind-defs) (defvar cl--bind-enquote)
224(defvar cl--bind-inits) (defvar cl--bind-lets) (defvar cl--bind-forms) 224(defvar cl--bind-lets) (defvar cl--bind-forms)
225 225
226(defun cl--transform-lambda (form bind-block) 226(defun cl--transform-lambda (form bind-block)
227 "Transform a function form FORM of name BIND-BLOCK. 227 "Transform a function form FORM of name BIND-BLOCK.
@@ -229,9 +229,11 @@ BIND-BLOCK is the name of the symbol to which the function will be bound,
229and which will be used for the name of the `cl-block' surrounding the 229and which will be used for the name of the `cl-block' surrounding the
230function's body. 230function's body.
231FORM is of the form (ARGS . BODY)." 231FORM is of the form (ARGS . BODY)."
232 ;; FIXME: (lambda (a &aux b) 1) expands to (lambda (a &rest --cl-rest--) ...)
233 ;; where the --cl-rest-- is clearly undesired.
232 (let* ((args (car form)) (body (cdr form)) (orig-args args) 234 (let* ((args (car form)) (body (cdr form)) (orig-args args)
233 (cl--bind-block bind-block) (cl--bind-defs nil) (cl--bind-enquote nil) 235 (cl--bind-block bind-block) (cl--bind-defs nil) (cl--bind-enquote nil)
234 (cl--bind-inits nil) (cl--bind-lets nil) (cl--bind-forms nil) 236 (cl--bind-lets nil) (cl--bind-forms nil)
235 (header nil) (simple-args nil)) 237 (header nil) (simple-args nil))
236 (while (or (stringp (car body)) 238 (while (or (stringp (car body))
237 (memq (car-safe (car body)) '(interactive declare cl-declare))) 239 (memq (car-safe (car body)) '(interactive declare cl-declare)))
@@ -244,10 +246,10 @@ FORM is of the form (ARGS . BODY)."
244 (if (setq cl--bind-enquote (memq '&cl-quote args)) 246 (if (setq cl--bind-enquote (memq '&cl-quote args))
245 (setq args (delq '&cl-quote args))) 247 (setq args (delq '&cl-quote args)))
246 (if (memq '&whole args) (error "&whole not currently implemented")) 248 (if (memq '&whole args) (error "&whole not currently implemented"))
247 (let* ((p (memq '&environment args)) (v (cadr p)) 249 (let* ((p (memq '&environment args))
248 (env-exp 'macroexpand-all-environment)) 250 (v (cadr p)))
249 (if p (setq args (nconc (delq (car p) (delq v args)) 251 (if p (setq args (nconc (delq (car p) (delq v args))
250 (list '&aux (list v env-exp)))))) 252 `(&aux (,v macroexpand-all-environment))))))
251 (while (and args (symbolp (car args)) 253 (while (and args (symbolp (car args))
252 (not (memq (car args) '(nil &rest &body &key &aux))) 254 (not (memq (car args) '(nil &rest &body &key &aux)))
253 (not (and (eq (car args) '&optional) 255 (not (and (eq (car args) '&optional)
@@ -261,8 +263,7 @@ FORM is of the form (ARGS . BODY)."
261 (cl--do-arglist args nil (- (length simple-args) 263 (cl--do-arglist args nil (- (length simple-args)
262 (if (memq '&optional simple-args) 1 0))) 264 (if (memq '&optional simple-args) 1 0)))
263 (setq cl--bind-lets (nreverse cl--bind-lets)) 265 (setq cl--bind-lets (nreverse cl--bind-lets))
264 (cl-list* (and cl--bind-inits `(cl-eval-when (compile load eval) 266 (cl-list* nil
265 ,@(nreverse cl--bind-inits)))
266 (nconc (nreverse simple-args) 267 (nconc (nreverse simple-args)
267 (list '&rest (car (pop cl--bind-lets)))) 268 (list '&rest (car (pop cl--bind-lets))))
268 (nconc (let ((hdr (nreverse header))) 269 (nconc (let ((hdr (nreverse header)))
@@ -390,6 +391,11 @@ its argument list allows full Common Lisp conventions."
390 (t x))) 391 (t x)))
391 392
392(defun cl--make-usage-args (arglist) 393(defun cl--make-usage-args (arglist)
394 (let ((aux (ignore-errors (cl-position '&aux arglist))))
395 (when aux
396 ;; `&aux' args aren't arguments, so let's just drop them from the
397 ;; usage info.
398 (setq arglist (cl-subseq arglist 0 aux))))
393 (if (cdr-safe (last arglist)) ;Not a proper list. 399 (if (cdr-safe (last arglist)) ;Not a proper list.
394 (let* ((last (last arglist)) 400 (let* ((last (last arglist))
395 (tail (cdr last))) 401 (tail (cdr last)))
@@ -426,7 +432,7 @@ its argument list allows full Common Lisp conventions."
426 )))) 432 ))))
427 arglist)))) 433 arglist))))
428 434
429(defun cl--do-arglist (args expr &optional num) ; uses bind-* 435(defun cl--do-arglist (args expr &optional num) ; uses cl--bind-*
430 (if (nlistp args) 436 (if (nlistp args)
431 (if (or (memq args cl--lambda-list-keywords) (not (symbolp args))) 437 (if (or (memq args cl--lambda-list-keywords) (not (symbolp args)))
432 (error "Invalid argument name: %s" args) 438 (error "Invalid argument name: %s" args)
@@ -441,9 +447,9 @@ its argument list allows full Common Lisp conventions."
441 (keys nil) 447 (keys nil)
442 (laterarg nil) (exactarg nil) minarg) 448 (laterarg nil) (exactarg nil) minarg)
443 (or num (setq num 0)) 449 (or num (setq num 0))
444 (if (listp (cadr restarg)) 450 (setq restarg (if (listp (cadr restarg))
445 (setq restarg (make-symbol "--cl-rest--")) 451 (make-symbol "--cl-rest--")
446 (setq restarg (cadr restarg))) 452 (cadr restarg)))
447 (push (list restarg expr) cl--bind-lets) 453 (push (list restarg expr) cl--bind-lets)
448 (if (eq (car args) '&whole) 454 (if (eq (car args) '&whole)
449 (push (list (cl--pop2 args) restarg) cl--bind-lets)) 455 (push (list (cl--pop2 args) restarg) cl--bind-lets))
@@ -570,12 +576,11 @@ its argument list allows full Common Lisp conventions."
570 "Bind the variables in ARGS to the result of EXPR and execute BODY." 576 "Bind the variables in ARGS to the result of EXPR and execute BODY."
571 (declare (indent 2) 577 (declare (indent 2)
572 (debug (&define cl-macro-list def-form cl-declarations def-body))) 578 (debug (&define cl-macro-list def-form cl-declarations def-body)))
573 (let* ((cl--bind-lets nil) (cl--bind-forms nil) (cl--bind-inits nil) 579 (let* ((cl--bind-lets nil) (cl--bind-forms nil)
574 (cl--bind-defs nil) (cl--bind-block 'cl-none) (cl--bind-enquote nil)) 580 (cl--bind-defs nil) (cl--bind-block 'cl-none) (cl--bind-enquote nil))
575 (cl--do-arglist (or args '(&aux)) expr) 581 (cl--do-arglist (or args '(&aux)) expr)
576 (append '(progn) cl--bind-inits 582 (macroexp-let* (nreverse cl--bind-lets)
577 (list `(let* ,(nreverse cl--bind-lets) 583 (macroexp-progn (append (nreverse cl--bind-forms) body)))))
578 ,@(nreverse cl--bind-forms) ,@body)))))
579 584
580 585
581;;; The `cl-eval-when' form. 586;;; The `cl-eval-when' form.
@@ -655,30 +660,26 @@ allowed only in the final clause, and matches if no other keys match.
655Key values are compared by `eql'. 660Key values are compared by `eql'.
656\n(fn EXPR (KEYLIST BODY...)...)" 661\n(fn EXPR (KEYLIST BODY...)...)"
657 (declare (indent 1) (debug (form &rest (sexp body)))) 662 (declare (indent 1) (debug (form &rest (sexp body))))
658 (let* ((temp (if (cl--simple-expr-p expr 3) expr (make-symbol "--cl-var--"))) 663 (macroexp-let2 macroexp-copyable-p temp expr
659 (head-list nil) 664 (let* ((head-list nil))
660 (body (cons 665 `(cond
661 'cond 666 ,@(mapcar
662 (mapcar 667 (lambda (c)
663 (function 668 (cons (cond ((memq (car c) '(t otherwise)) t)
664 (lambda (c) 669 ((eq (car c) 'cl--ecase-error-flag)
665 (cons (cond ((memq (car c) '(t otherwise)) t) 670 `(error "cl-ecase failed: %s, %s"
666 ((eq (car c) 'cl--ecase-error-flag) 671 ,temp ',(reverse head-list)))
667 `(error "cl-ecase failed: %s, %s" 672 ((listp (car c))
668 ,temp ',(reverse head-list))) 673 (setq head-list (append (car c) head-list))
669 ((listp (car c)) 674 `(cl-member ,temp ',(car c)))
670 (setq head-list (append (car c) head-list)) 675 (t
671 `(cl-member ,temp ',(car c))) 676 (if (memq (car c) head-list)
672 (t 677 (error "Duplicate key in case: %s"
673 (if (memq (car c) head-list) 678 (car c)))
674 (error "Duplicate key in case: %s" 679 (push (car c) head-list)
675 (car c))) 680 `(eql ,temp ',(car c))))
676 (push (car c) head-list) 681 (or (cdr c) '(nil))))
677 `(eql ,temp ',(car c)))) 682 clauses)))))
678 (or (cdr c) '(nil)))))
679 clauses))))
680 (if (eq temp expr) body
681 `(let ((,temp ,expr)) ,body))))
682 683
683;;;###autoload 684;;;###autoload
684(defmacro cl-ecase (expr &rest clauses) 685(defmacro cl-ecase (expr &rest clauses)
@@ -698,24 +699,22 @@ final clause, and matches if no other keys match.
698\n(fn EXPR (TYPE BODY...)...)" 699\n(fn EXPR (TYPE BODY...)...)"
699 (declare (indent 1) 700 (declare (indent 1)
700 (debug (form &rest ([&or cl-type-spec "otherwise"] body)))) 701 (debug (form &rest ([&or cl-type-spec "otherwise"] body))))
701 (let* ((temp (if (cl--simple-expr-p expr 3) expr (make-symbol "--cl-var--"))) 702 (macroexp-let2 macroexp-copyable-p temp expr
702 (type-list nil) 703 (let* ((type-list nil))
703 (body (cons 704 (cons
704 'cond 705 'cond
705 (mapcar 706 (mapcar
706 (function 707 (function
707 (lambda (c) 708 (lambda (c)
708 (cons (cond ((eq (car c) 'otherwise) t) 709 (cons (cond ((eq (car c) 'otherwise) t)
709 ((eq (car c) 'cl--ecase-error-flag) 710 ((eq (car c) 'cl--ecase-error-flag)
710 `(error "cl-etypecase failed: %s, %s" 711 `(error "cl-etypecase failed: %s, %s"
711 ,temp ',(reverse type-list))) 712 ,temp ',(reverse type-list)))
712 (t 713 (t
713 (push (car c) type-list) 714 (push (car c) type-list)
714 (cl--make-type-test temp (car c)))) 715 `(cl-typep ,temp ',(car c))))
715 (or (cdr c) '(nil))))) 716 (or (cdr c) '(nil)))))
716 clauses)))) 717 clauses)))))
717 (if (eq temp expr) body
718 `(let ((,temp ,expr)) ,body))))
719 718
720;;;###autoload 719;;;###autoload
721(defmacro cl-etypecase (expr &rest clauses) 720(defmacro cl-etypecase (expr &rest clauses)
@@ -1439,16 +1438,14 @@ For more details, see Info node `(cl)Loop Facility'.
1439 (push `(progn (if ,what (cl-incf ,var)) t) cl--loop-body))) 1438 (push `(progn (if ,what (cl-incf ,var)) t) cl--loop-body)))
1440 1439
1441 ((memq word '(minimize minimizing maximize maximizing)) 1440 ((memq word '(minimize minimizing maximize maximizing))
1442 (let* ((what (pop cl--loop-args)) 1441 (push `(progn ,(macroexp-let2 macroexp-copyable-p temp
1443 (temp (if (cl--simple-expr-p what) what 1442 (pop cl--loop-args)
1444 (make-symbol "--cl-var--"))) 1443 (let* ((var (cl--loop-handle-accum nil))
1445 (var (cl--loop-handle-accum nil)) 1444 (func (intern (substring (symbol-name word)
1446 (func (intern (substring (symbol-name word) 0 3))) 1445 0 3))))
1447 (set `(setq ,var (if ,var (,func ,var ,temp) ,temp)))) 1446 `(setq ,var (if ,var (,func ,var ,temp) ,temp))))
1448 (push `(progn ,(if (eq temp what) set 1447 t)
1449 `(let ((,temp ,what)) ,set)) 1448 cl--loop-body))
1450 t)
1451 cl--loop-body)))
1452 1449
1453 ((eq word 'with) 1450 ((eq word 'with)
1454 (let ((bindings nil)) 1451 (let ((bindings nil))
@@ -2104,14 +2101,11 @@ values. For compatibility, (cl-values A B C) is a synonym for (list A B C).
2104 (< cl--optimize-speed 3) 2101 (< cl--optimize-speed 3)
2105 (= cl--optimize-safety 3))) 2102 (= cl--optimize-safety 3)))
2106 form 2103 form
2107 (let* ((temp (if (cl--simple-expr-p form 3) 2104 (macroexp-let2 macroexp-copyable-p temp form
2108 form (make-symbol "--cl-var--"))) 2105 `(progn (unless (cl-typep ,temp ',type)
2109 (body `(progn (unless ,(cl--make-type-test temp type) 2106 (signal 'wrong-type-argument
2110 (signal 'wrong-type-argument 2107 (list ',type ,temp ',form)))
2111 (list ',type ,temp ',form))) 2108 ,temp))))
2112 ,temp)))
2113 (if (eq temp form) body
2114 `(let ((,temp ,form)) ,body)))))
2115 2109
2116(defvar cl--proclaim-history t) ; for future compilers 2110(defvar cl--proclaim-history t) ; for future compilers
2117(defvar cl--declare-stack t) ; for future compilers 2111(defvar cl--declare-stack t) ; for future compilers
@@ -2425,15 +2419,11 @@ non-nil value, that slot cannot be set via `setf'.
2425 (tag (intern (format "cl-struct-%s" name))) 2419 (tag (intern (format "cl-struct-%s" name)))
2426 (tag-symbol (intern (format "cl-struct-%s-tags" name))) 2420 (tag-symbol (intern (format "cl-struct-%s-tags" name)))
2427 (include-descs nil) 2421 (include-descs nil)
2428 (side-eff nil)
2429 (type nil) 2422 (type nil)
2430 (named nil) 2423 (named nil)
2431 (forms nil) 2424 (forms nil)
2425 (docstring (if (stringp (car descs)) (pop descs)))
2432 pred-form pred-check) 2426 pred-form pred-check)
2433 (if (stringp (car descs))
2434 (push `(put ',name 'structure-documentation
2435 ,(pop descs))
2436 forms))
2437 (setq descs (cons '(cl-tag-slot) 2427 (setq descs (cons '(cl-tag-slot)
2438 (mapcar (function (lambda (x) (if (consp x) x (list x)))) 2428 (mapcar (function (lambda (x) (if (consp x) x (list x))))
2439 descs))) 2429 descs)))
@@ -2458,6 +2448,7 @@ non-nil value, that slot cannot be set via `setf'.
2458 ((eq opt :predicate) 2448 ((eq opt :predicate)
2459 (if args (setq predicate (car args)))) 2449 (if args (setq predicate (car args))))
2460 ((eq opt :include) 2450 ((eq opt :include)
2451 (when include (error "Can't :include more than once"))
2461 (setq include (car args) 2452 (setq include (car args)
2462 include-descs (mapcar (function 2453 include-descs (mapcar (function
2463 (lambda (x) 2454 (lambda (x)
@@ -2511,20 +2502,19 @@ non-nil value, that slot cannot be set via `setf'.
2511 (if named (setq tag name))) 2502 (if named (setq tag name)))
2512 (setq type 'vector named 'true))) 2503 (setq type 'vector named 'true)))
2513 (or named (setq descs (delq (assq 'cl-tag-slot descs) descs))) 2504 (or named (setq descs (delq (assq 'cl-tag-slot descs) descs)))
2514 (push `(defvar ,tag-symbol) forms)
2515 (when (and (null predicate) named) 2505 (when (and (null predicate) named)
2516 (setq predicate (intern (format "cl--struct-%s-p" name)))) 2506 (setq predicate (intern (format "cl--struct-%s-p" name))))
2517 (setq pred-form (and named 2507 (setq pred-form (and named
2518 (let ((pos (- (length descs) 2508 (let ((pos (- (length descs)
2519 (length (memq (assq 'cl-tag-slot descs) 2509 (length (memq (assq 'cl-tag-slot descs)
2520 descs))))) 2510 descs)))))
2521 (if (eq type 'vector) 2511 (cond
2522 `(and (vectorp cl-x) 2512 ((eq type 'vector)
2523 (>= (length cl-x) ,(length descs)) 2513 `(and (vectorp cl-x)
2524 (memq (aref cl-x ,pos) ,tag-symbol)) 2514 (>= (length cl-x) ,(length descs))
2525 (if (= pos 0) 2515 (memq (aref cl-x ,pos) ,tag-symbol)))
2526 `(memq (car-safe cl-x) ,tag-symbol) 2516 ((= pos 0) `(memq (car-safe cl-x) ,tag-symbol))
2527 `(and (consp cl-x) 2517 (t `(and (consp cl-x)
2528 (memq (nth ,pos cl-x) ,tag-symbol)))))) 2518 (memq (nth ,pos cl-x) ,tag-symbol))))))
2529 pred-check (and pred-form (> safety 0) 2519 pred-check (and pred-form (> safety 0)
2530 (if (and (eq (cl-caadr pred-form) 'vectorp) 2520 (if (and (eq (cl-caadr pred-form) 'vectorp)
@@ -2546,6 +2536,7 @@ non-nil value, that slot cannot be set via `setf'.
2546 (push slot slots) 2536 (push slot slots)
2547 (push (nth 1 desc) defaults) 2537 (push (nth 1 desc) defaults)
2548 (push `(cl-defsubst ,accessor (cl-x) 2538 (push `(cl-defsubst ,accessor (cl-x)
2539 (declare (side-effect-free t))
2549 ,@(and pred-check 2540 ,@(and pred-check
2550 (list `(or ,pred-check 2541 (list `(or ,pred-check
2551 (error "%s accessing a non-%s" 2542 (error "%s accessing a non-%s"
@@ -2554,7 +2545,6 @@ non-nil value, that slot cannot be set via `setf'.
2554 (if (= pos 0) '(car cl-x) 2545 (if (= pos 0) '(car cl-x)
2555 `(nth ,pos cl-x)))) 2546 `(nth ,pos cl-x))))
2556 forms) 2547 forms)
2557 (push (cons accessor t) side-eff)
2558 (if (cadr (memq :read-only (cddr desc))) 2548 (if (cadr (memq :read-only (cddr desc)))
2559 (push `(gv-define-expander ,accessor 2549 (push `(gv-define-expander ,accessor
2560 (lambda (_cl-do _cl-x) 2550 (lambda (_cl-do _cl-x)
@@ -2587,15 +2577,14 @@ non-nil value, that slot cannot be set via `setf'.
2587 defaults (nreverse defaults)) 2577 defaults (nreverse defaults))
2588 (when pred-form 2578 (when pred-form
2589 (push `(cl-defsubst ,predicate (cl-x) 2579 (push `(cl-defsubst ,predicate (cl-x)
2580 (declare (side-effect-free error-free))
2590 ,(if (eq (car pred-form) 'and) 2581 ,(if (eq (car pred-form) 'and)
2591 (append pred-form '(t)) 2582 (append pred-form '(t))
2592 `(and ,pred-form t))) 2583 `(and ,pred-form t)))
2593 forms) 2584 forms)
2594 (push `(put ',name 'cl-deftype-satisfies ',predicate) forms) 2585 (push `(put ',name 'cl-deftype-satisfies ',predicate) forms))
2595 (push (cons predicate 'error-free) side-eff))
2596 (and copier 2586 (and copier
2597 (progn (push `(defun ,copier (x) (copy-sequence x)) forms) 2587 (push `(defalias ',copier #'copy-sequence) forms))
2598 (push (cons copier t) side-eff)))
2599 (if constructor 2588 (if constructor
2600 (push (list constructor 2589 (push (list constructor
2601 (cons '&key (delq nil (copy-sequence slots)))) 2590 (cons '&key (delq nil (copy-sequence slots))))
@@ -2607,11 +2596,11 @@ non-nil value, that slot cannot be set via `setf'.
2607 (make (cl-mapcar (function (lambda (s d) (if (memq s anames) s d))) 2596 (make (cl-mapcar (function (lambda (s d) (if (memq s anames) s d)))
2608 slots defaults))) 2597 slots defaults)))
2609 (push `(cl-defsubst ,name 2598 (push `(cl-defsubst ,name
2610 (&cl-defs '(nil ,@descs) ,@args) 2599 (&cl-defs '(nil ,@descs) ,@args)
2600 ,@(if (cl--safe-expr-p `(progn ,@(mapcar #'cl-second descs)))
2601 '((declare (side-effect-free t))))
2611 (,type ,@make)) 2602 (,type ,@make))
2612 forms) 2603 forms)))
2613 (if (cl--safe-expr-p `(progn ,@(mapcar #'cl-second descs)))
2614 (push (cons name t) side-eff))))
2615 (if print-auto (nconc print-func (list '(princ ")" cl-s) t))) 2604 (if print-auto (nconc print-func (list '(princ ")" cl-s) t)))
2616 ;; Don't bother adding to cl-custom-print-functions since it's not used 2605 ;; Don't bother adding to cl-custom-print-functions since it's not used
2617 ;; by anything anyway! 2606 ;; by anything anyway!
@@ -2624,17 +2613,14 @@ non-nil value, that slot cannot be set via `setf'.
2624 ;; (and ,pred-form ,print-func)) 2613 ;; (and ,pred-form ,print-func))
2625 ;; cl-custom-print-functions)) 2614 ;; cl-custom-print-functions))
2626 ;; forms)) 2615 ;; forms))
2627 (push `(setq ,tag-symbol (list ',tag)) forms) 2616 `(progn
2628 (push `(cl-eval-when (compile load eval) 2617 (defvar ,tag-symbol)
2629 (put ',name 'cl-struct-slots ',descs) 2618 ,@(nreverse forms)
2630 (put ',name 'cl-struct-type ',(list type (eq named t))) 2619 (eval-and-compile
2631 (put ',name 'cl-struct-include ',include) 2620 (cl-struct-define ',name ,docstring ',include
2632 (put ',name 'cl-struct-print ,print-auto) 2621 ',type ,(eq named t) ',descs ',tag-symbol ',tag
2633 ,@(mapcar (lambda (x) 2622 ',print-auto))
2634 `(function-put ',(car x) 'side-effect-free ',(cdr x))) 2623 ',name)))
2635 side-eff))
2636 forms)
2637 `(progn ,@(nreverse (cons `',name forms)))))
2638 2624
2639(defun cl-struct-sequence-type (struct-type) 2625(defun cl-struct-sequence-type (struct-type)
2640 "Return the sequence used to build STRUCT-TYPE. 2626 "Return the sequence used to build STRUCT-TYPE.
@@ -2741,14 +2727,11 @@ STRING is an optional description of the desired type."
2741 (declare (debug (place cl-type-spec &optional stringp))) 2727 (declare (debug (place cl-type-spec &optional stringp)))
2742 (and (or (not (cl--compiling-file)) 2728 (and (or (not (cl--compiling-file))
2743 (< cl--optimize-speed 3) (= cl--optimize-safety 3)) 2729 (< cl--optimize-speed 3) (= cl--optimize-safety 3))
2744 (let* ((temp (if (cl--simple-expr-p form 3) 2730 (macroexp-let2 macroexp-copyable-p temp form
2745 form (make-symbol "--cl-var--"))) 2731 `(progn (or (cl-typep ,temp ',type)
2746 (body `(or ,(cl--make-type-test temp type) 2732 (signal 'wrong-type-argument
2747 (signal 'wrong-type-argument 2733 (list ,(or string `',type) ,temp ',form)))
2748 (list ,(or string `',type) 2734 nil))))
2749 ,temp ',form)))))
2750 (if (eq temp form) `(progn ,body nil)
2751 `(let ((,temp ,form)) ,body nil)))))
2752 2735
2753;;;###autoload 2736;;;###autoload
2754(defmacro cl-assert (form &optional show-args string &rest args) 2737(defmacro cl-assert (form &optional show-args string &rest args)
diff --git a/lisp/emacs-lisp/cl-preloaded.el b/lisp/emacs-lisp/cl-preloaded.el
new file mode 100644
index 00000000000..c9867b412a1
--- /dev/null
+++ b/lisp/emacs-lisp/cl-preloaded.el
@@ -0,0 +1,48 @@
1;;; cl-preloaded.el --- Preloaded part of the CL library -*- lexical-binding: t; -*-
2
3;; Copyright (C) 2015 Free Software Foundation, Inc
4
5;; Author: Stefan Monnier <monnier@iro.umontreal.ca>
6
7;; This file is part of GNU Emacs.
8
9;; GNU Emacs is free software: you can redistribute it and/or modify
10;; it under the terms of the GNU General Public License as published by
11;; the Free Software Foundation, either version 3 of the License, or
12;; (at your option) any later version.
13
14;; GNU Emacs is distributed in the hope that it will be useful,
15;; but WITHOUT ANY WARRANTY; without even the implied warranty of
16;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17;; GNU General Public License for more details.
18
19;; You should have received a copy of the GNU General Public License
20;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
21
22;;; Commentary:
23
24;; The expectation is that structs defined with cl-defstruct do not
25;; need cl-lib at run-time, but we'd like to hide the details of the
26;; cl-struct metadata behind the cl-struct-define function, so we put
27;; it in this pre-loaded file.
28
29;;; Code:
30
31(defun cl-struct-define (name docstring parent type named slots children-sym
32 tag print-auto)
33 (if (boundp children-sym)
34 (add-to-list children-sym tag)
35 (set children-sym (list tag)))
36 ;; If the cl-generic support, we need to be able to check
37 ;; if a vector is a cl-struct object, without knowing its particular type.
38 ;; So we use the (otherwise) unused function slots of the tag symbol
39 ;; to put a special witness value, to make the check easy and reliable.
40 (unless named (fset tag :quick-object-witness-check))
41 (put name 'cl-struct-slots slots)
42 (put name 'cl-struct-type (list type named))
43 (if parent (put name 'cl-struct-include parent))
44 (if print-auto (put name 'cl-struct-print print-auto))
45 (if docstring (put name 'structure-documentation docstring)))
46
47(provide 'cl-preloaded)
48;;; cl-preloaded.el ends here
diff --git a/lisp/emacs-lisp/cl.el b/lisp/emacs-lisp/cl.el
index 1cd7bd76b0e..5da1cea6bb3 100644
--- a/lisp/emacs-lisp/cl.el
+++ b/lisp/emacs-lisp/cl.el
@@ -376,7 +376,6 @@ The two cases that are handled are:
376 (setq cl--function-convert-cache (cons newf res)) 376 (setq cl--function-convert-cache (cons newf res))
377 res)))) 377 res))))
378 (t 378 (t
379 (setq cl--labels-convert-cache cl--function-convert-cache)
380 (cl--labels-convert f)))) 379 (cl--labels-convert f))))
381 380
382(defmacro lexical-let (bindings &rest body) 381(defmacro lexical-let (bindings &rest body)
diff --git a/lisp/emacs-lisp/easy-mmode.el b/lisp/emacs-lisp/easy-mmode.el
index 7e6f56518a2..f7e8619948a 100644
--- a/lisp/emacs-lisp/easy-mmode.el
+++ b/lisp/emacs-lisp/easy-mmode.el
@@ -149,11 +149,12 @@ For example, you could write
149 ...BODY CODE...)" 149 ...BODY CODE...)"
150 (declare (doc-string 2) 150 (declare (doc-string 2)
151 (debug (&define name string-or-null-p 151 (debug (&define name string-or-null-p
152 [&optional [&not keywordp] sexp 152 [&optional [&not keywordp] sexp
153 &optional [&not keywordp] sexp 153 &optional [&not keywordp] sexp
154 &optional [&not keywordp] sexp] 154 &optional [&not keywordp] sexp]
155 [&rest [keywordp sexp]] 155 [&rest [keywordp sexp]]
156 def-body))) 156 def-body))
157 (indent 1))
157 158
158 ;; Allow skipping the first three args. 159 ;; Allow skipping the first three args.
159 (cond 160 (cond
diff --git a/lisp/emacs-lisp/eieio-base.el b/lisp/emacs-lisp/eieio-base.el
index feb06711cb3..46585ee76c6 100644
--- a/lisp/emacs-lisp/eieio-base.el
+++ b/lisp/emacs-lisp/eieio-base.el
@@ -219,7 +219,7 @@ for CLASS. Optional ALLOW-SUBCLASS says that it is ok for
219being pedantic." 219being pedantic."
220 (unless class 220 (unless class
221 (message "Unsafe call to `eieio-persistent-read'.")) 221 (message "Unsafe call to `eieio-persistent-read'."))
222 (when class (eieio--check-type class-p class)) 222 (when class (cl-check-type class class))
223 (let ((ret nil) 223 (let ((ret nil)
224 (buffstr nil)) 224 (buffstr nil))
225 (unwind-protect 225 (unwind-protect
@@ -481,7 +481,7 @@ instance."
481 481
482(cl-defmethod eieio-object-set-name-string ((obj eieio-named) name) 482(cl-defmethod eieio-object-set-name-string ((obj eieio-named) name)
483 "Set the string which is OBJ's NAME." 483 "Set the string which is OBJ's NAME."
484 (eieio--check-type stringp name) 484 (cl-check-type name string)
485 (eieio-oset obj 'object-name name)) 485 (eieio-oset obj 'object-name name))
486 486
487(cl-defmethod clone ((obj eieio-named) &rest params) 487(cl-defmethod clone ((obj eieio-named) &rest params)
diff --git a/lisp/emacs-lisp/eieio-core.el b/lisp/emacs-lisp/eieio-core.el
index 7492f0522ab..77d8c01388b 100644
--- a/lisp/emacs-lisp/eieio-core.el
+++ b/lisp/emacs-lisp/eieio-core.el
@@ -40,6 +40,8 @@
40(declare-function slot-unbound "eieio") 40(declare-function slot-unbound "eieio")
41(declare-function slot-missing "eieio") 41(declare-function slot-missing "eieio")
42(declare-function child-of-class-p "eieio") 42(declare-function child-of-class-p "eieio")
43(declare-function same-class-p "eieio")
44(declare-function object-of-class-p "eieio")
43 45
44 46
45;;; 47;;;
@@ -154,15 +156,6 @@ Currently under control of this var:
154 156
155 157
156;;; Important macros used internally in eieio. 158;;; Important macros used internally in eieio.
157;;
158(defmacro eieio--check-type (type obj)
159 (unless (symbolp obj)
160 (error "eieio--check-type wants OBJ to be a variable"))
161 `(if (not ,(cond
162 ((eq 'or (car-safe type))
163 `(or ,@(mapcar (lambda (type) `(,type ,obj)) (cdr type))))
164 (t `(,type ,obj))))
165 (signal 'wrong-type-argument (list ',type ,obj))))
166 159
167(defmacro eieio--class-v (class) ;Use a macro, so it acts as a GV place. 160(defmacro eieio--class-v (class) ;Use a macro, so it acts as a GV place.
168 "Internal: Return the class vector from the CLASS symbol." 161 "Internal: Return the class vector from the CLASS symbol."
@@ -183,27 +176,17 @@ Currently under control of this var:
183 (eq (aref class 0) 'defclass) 176 (eq (aref class 0) 'defclass)
184 (error nil))) 177 (error nil)))
185 178
186(defsubst eieio-class-object (class) 179(defun class-p (class)
187 "Check that CLASS is a class and return the corresponding object."
188 (let ((c (eieio--class-object class)))
189 (eieio--check-type eieio--class-p c)
190 c))
191
192(defsubst class-p (class)
193 "Return non-nil if CLASS is a valid class vector. 180 "Return non-nil if CLASS is a valid class vector.
194CLASS is a symbol." ;FIXME: Is it a vector or a symbol? 181CLASS is a symbol." ;FIXME: Is it a vector or a symbol?
195 ;; this new method is faster since it doesn't waste time checking lots of 182 (and (symbolp class) (eieio--class-p (eieio--class-v class))))
196 ;; things.
197 (condition-case nil
198 (eq (aref (eieio--class-v class) 0) 'defclass)
199 (error nil)))
200 183
201(defun eieio-class-name (class) 184(defun eieio-class-name (class)
202 "Return a Lisp like symbol name for CLASS." 185 "Return a Lisp like symbol name for CLASS."
203 ;; FIXME: What's a "Lisp like symbol name"? 186 ;; FIXME: What's a "Lisp like symbol name"?
204 ;; FIXME: CLOS returns a symbol, but the code returns a string. 187 ;; FIXME: CLOS returns a symbol, but the code returns a string.
205 (if (eieio--class-p class) (setq class (eieio--class-symbol class))) 188 (if (eieio--class-p class) (setq class (eieio--class-symbol class)))
206 (eieio--check-type class-p class) 189 (cl-check-type class class)
207 ;; I think this is supposed to return a symbol, but to me CLASS is a symbol, 190 ;; I think this is supposed to return a symbol, but to me CLASS is a symbol,
208 ;; and I wanted a string. Arg! 191 ;; and I wanted a string. Arg!
209 (format "#<class %s>" (symbol-name class))) 192 (format "#<class %s>" (symbol-name class)))
@@ -221,14 +204,17 @@ CLASS is a symbol." ;FIXME: Is it a vector or a symbol?
221Return nil if that option doesn't exist." 204Return nil if that option doesn't exist."
222 (eieio--class-option-assoc (eieio--class-options class) option)) 205 (eieio--class-option-assoc (eieio--class-options class) option))
223 206
224(defsubst eieio-object-p (obj) 207(defun eieio-object-p (obj)
225 "Return non-nil if OBJ is an EIEIO object." 208 "Return non-nil if OBJ is an EIEIO object."
226 (and (vectorp obj) 209 (and (vectorp obj)
227 (condition-case nil 210 (> (length obj) 0)
228 (eq (aref (eieio--object-class-object obj) 0) 'defclass) 211 (let ((tag (eieio--object-class-tag obj)))
229 (error nil)))) 212 (and (symbolp tag)
213 ;; (eq (symbol-function tag) :quick-object-witness-check)
214 (boundp tag)
215 (eieio--class-p (symbol-value tag))))))
230 216
231(defalias 'object-p 'eieio-object-p) 217(define-obsolete-function-alias 'object-p 'eieio-object-p "25.1")
232 218
233(defsubst class-abstract-p (class) 219(defsubst class-abstract-p (class)
234 "Return non-nil if CLASS is abstract. 220 "Return non-nil if CLASS is abstract.
@@ -266,10 +252,9 @@ It creates an autoload function for CNAME's constructor."
266 ;; simply not exist yet. So instead we just don't store the list of parents 252 ;; simply not exist yet. So instead we just don't store the list of parents
267 ;; here in eieio-defclass-autoload at all, since it seems that they're just 253 ;; here in eieio-defclass-autoload at all, since it seems that they're just
268 ;; not needed before the class is actually loaded. 254 ;; not needed before the class is actually loaded.
269 (let* ((oldc (when (class-p cname) (eieio--class-v cname))) 255 (let* ((oldc (eieio--class-v cname))
270 (newc (eieio--class-make cname)) 256 (newc (eieio--class-make cname)))
271 ) 257 (if (eieio--class-p oldc)
272 (if oldc
273 nil ;; Do nothing if we already have this class. 258 nil ;; Do nothing if we already have this class.
274 259
275 ;; turn this into a usable self-pointing symbol 260 ;; turn this into a usable self-pointing symbol
@@ -300,7 +285,21 @@ It creates an autoload function for CNAME's constructor."
300 (cl-every (lambda (elem) (cl-typep elem ',elem-type)) 285 (cl-every (lambda (elem) (cl-typep elem ',elem-type))
301 list))))) 286 list)))))
302 287
303(declare-function eieio--defmethod "eieio-generic" (method kind argclass code)) 288
289(defun eieio-make-class-predicate (class)
290 (lambda (obj)
291 ;; (:docstring (format "Test OBJ to see if it's an object of type %S."
292 ;; class))
293 (and (eieio-object-p obj)
294 (same-class-p obj class))))
295
296(defun eieio-make-child-predicate (class)
297 (lambda (obj)
298 ;; (:docstring (format
299 ;; "Test OBJ to see if it's an object is a child of type %S."
300 ;; class))
301 (and (eieio-object-p obj)
302 (object-of-class-p obj class))))
304 303
305(defun eieio-defclass-internal (cname superclasses slots options) 304(defun eieio-defclass-internal (cname superclasses slots options)
306 "Define CNAME as a new subclass of SUPERCLASSES. 305 "Define CNAME as a new subclass of SUPERCLASSES.
@@ -314,7 +313,7 @@ See `defclass' for more information."
314 (setq eieio-hook nil) 313 (setq eieio-hook nil)
315 314
316 (let* ((pname superclasses) 315 (let* ((pname superclasses)
317 (oldc (when (class-p cname) (eieio--class-v cname))) 316 (oldc (let ((c (eieio--class-v cname))) (if (eieio--class-p c) c)))
318 (newc (if (and oldc (not (eieio--class-default-object-cache oldc))) 317 (newc (if (and oldc (not (eieio--class-default-object-cache oldc)))
319 ;; The oldc class is a stub setup by eieio-defclass-autoload. 318 ;; The oldc class is a stub setup by eieio-defclass-autoload.
320 ;; Reuse it instead of creating a new one, so that existing 319 ;; Reuse it instead of creating a new one, so that existing
@@ -342,19 +341,20 @@ See `defclass' for more information."
342 (if pname 341 (if pname
343 (progn 342 (progn
344 (dolist (p pname) 343 (dolist (p pname)
345 (if (and p (symbolp p)) 344 (if (not (and p (symbolp p)))
346 (if (not (class-p p)) 345 (error "Invalid parent class %S" p)
346 (let ((c (eieio--class-v p)))
347 (if (not (eieio--class-p c))
347 ;; bad class 348 ;; bad class
348 (error "Given parent class %S is not a class" p) 349 (error "Given parent class %S is not a class" p)
349 ;; good parent class... 350 ;; good parent class...
350 ;; save new child in parent 351 ;; save new child in parent
351 (cl-pushnew cname (eieio--class-children (eieio--class-v p))) 352 (cl-pushnew cname (eieio--class-children c))
352 ;; Get custom groups, and store them into our local copy. 353 ;; Get custom groups, and store them into our local copy.
353 (mapc (lambda (g) (cl-pushnew g groups :test #'equal)) 354 (mapc (lambda (g) (cl-pushnew g groups :test #'equal))
354 (eieio--class-option (eieio--class-v p) :custom-groups)) 355 (eieio--class-option c :custom-groups))
355 ;; save parent in child 356 ;; Save parent in child.
356 (push (eieio--class-v p) (eieio--class-parent newc))) 357 (push c (eieio--class-parent newc))))))
357 (error "Invalid parent class %S" p)))
358 ;; Reverse the list of our parents so that they are prioritized in 358 ;; Reverse the list of our parents so that they are prioritized in
359 ;; the same order as specified in the code. 359 ;; the same order as specified in the code.
360 (cl-callf nreverse (eieio--class-parent newc))) 360 (cl-callf nreverse (eieio--class-parent newc)))
@@ -506,13 +506,7 @@ See `defclass' for more information."
506 (eieio--class-option-assoc options :documentation)) 506 (eieio--class-option-assoc options :documentation))
507 507
508 ;; Save the file location where this class is defined. 508 ;; Save the file location where this class is defined.
509 (let ((fname (if load-in-progress 509 (add-to-list 'current-load-list `(eieio-defclass . ,cname))
510 load-file-name
511 buffer-file-name)))
512 (when fname
513 (when (string-match "\\.elc\\'" fname)
514 (setq fname (substring fname 0 (1- (length fname)))))
515 (put cname 'class-location fname)))
516 510
517 ;; We have a list of custom groups. Store them into the options. 511 ;; We have a list of custom groups. Store them into the options.
518 (let ((g (eieio--class-option-assoc options :custom-groups))) 512 (let ((g (eieio--class-option-assoc options :custom-groups)))
@@ -539,6 +533,7 @@ See `defclass' for more information."
539 ;; objects readable. 533 ;; objects readable.
540 (tag (intern (format "eieio-class-tag--%s" cname)))) 534 (tag (intern (format "eieio-class-tag--%s" cname))))
541 (set tag newc) 535 (set tag newc)
536 (fset tag :quick-object-witness-check)
542 (setf (eieio--object-class-tag cache) tag) 537 (setf (eieio--object-class-tag cache) tag)
543 (let ((eieio-skip-typecheck t)) 538 (let ((eieio-skip-typecheck t))
544 ;; All type-checking has been done to our satisfaction 539 ;; All type-checking has been done to our satisfaction
@@ -908,12 +903,13 @@ Argument FN is the function calling this verifier."
908;; 903;;
909(defun eieio-oref (obj slot) 904(defun eieio-oref (obj slot)
910 "Return the value in OBJ at SLOT in the object vector." 905 "Return the value in OBJ at SLOT in the object vector."
911 (eieio--check-type (or eieio-object-p class-p) obj) 906 (cl-check-type slot symbol)
912 (eieio--check-type symbolp slot) 907 (cl-check-type obj (or eieio-object class))
913 (if (class-p obj) (eieio-class-un-autoload obj))
914 (let* ((class (cond ((symbolp obj) 908 (let* ((class (cond ((symbolp obj)
915 (error "eieio-oref called on a class!") 909 (error "eieio-oref called on a class!")
916 (eieio--class-v obj)) 910 (let ((c (eieio--class-v obj)))
911 (if (eieio--class-p c) (eieio-class-un-autoload obj))
912 c))
917 (t (eieio--object-class-object obj)))) 913 (t (eieio--object-class-object obj))))
918 (c (eieio--slot-name-index class obj slot))) 914 (c (eieio--slot-name-index class obj slot)))
919 (if (not c) 915 (if (not c)
@@ -928,15 +924,15 @@ Argument FN is the function calling this verifier."
928 (slot-missing obj slot 'oref) 924 (slot-missing obj slot 'oref)
929 ;;(signal 'invalid-slot-name (list (eieio-object-name obj) slot)) 925 ;;(signal 'invalid-slot-name (list (eieio-object-name obj) slot))
930 ) 926 )
931 (eieio--check-type eieio-object-p obj) 927 (cl-check-type obj eieio-object)
932 (eieio-barf-if-slot-unbound (aref obj c) obj slot 'oref)))) 928 (eieio-barf-if-slot-unbound (aref obj c) obj slot 'oref))))
933 929
934 930
935(defun eieio-oref-default (obj slot) 931(defun eieio-oref-default (obj slot)
936 "Do the work for the macro `oref-default' with similar parameters. 932 "Do the work for the macro `oref-default' with similar parameters.
937Fills in OBJ's SLOT with its default value." 933Fills in OBJ's SLOT with its default value."
938 (eieio--check-type (or eieio-object-p class-p) obj) 934 (cl-check-type obj (or eieio-object class))
939 (eieio--check-type symbolp slot) 935 (cl-check-type slot symbol)
940 (let* ((cl (cond ((symbolp obj) (eieio--class-v obj)) 936 (let* ((cl (cond ((symbolp obj) (eieio--class-v obj))
941 (t (eieio--object-class-object obj)))) 937 (t (eieio--object-class-object obj))))
942 (c (eieio--slot-name-index cl obj slot))) 938 (c (eieio--slot-name-index cl obj slot)))
@@ -974,8 +970,8 @@ Fills in OBJ's SLOT with its default value."
974(defun eieio-oset (obj slot value) 970(defun eieio-oset (obj slot value)
975 "Do the work for the macro `oset'. 971 "Do the work for the macro `oset'.
976Fills in OBJ's SLOT with VALUE." 972Fills in OBJ's SLOT with VALUE."
977 (eieio--check-type eieio-object-p obj) 973 (cl-check-type obj eieio-object)
978 (eieio--check-type symbolp slot) 974 (cl-check-type slot symbol)
979 (let* ((class (eieio--object-class-object obj)) 975 (let* ((class (eieio--object-class-object obj))
980 (c (eieio--slot-name-index class obj slot))) 976 (c (eieio--slot-name-index class obj slot)))
981 (if (not c) 977 (if (not c)
@@ -999,8 +995,8 @@ Fills in OBJ's SLOT with VALUE."
999 "Do the work for the macro `oset-default'. 995 "Do the work for the macro `oset-default'.
1000Fills in the default value in CLASS' in SLOT with VALUE." 996Fills in the default value in CLASS' in SLOT with VALUE."
1001 (setq class (eieio--class-object class)) 997 (setq class (eieio--class-object class))
1002 (eieio--check-type eieio--class-p class) 998 (cl-check-type class eieio--class)
1003 (eieio--check-type symbolp slot) 999 (cl-check-type slot symbol)
1004 (let* ((c (eieio--slot-name-index class nil slot))) 1000 (let* ((c (eieio--slot-name-index class nil slot)))
1005 (if (not c) 1001 (if (not c)
1006 ;; It might be missing because it is a :class allocated slot. 1002 ;; It might be missing because it is a :class allocated slot.
@@ -1222,10 +1218,11 @@ method invocation orders of the involved classes."
1222 ;; A class must be defined before it can be used as a parameter 1218 ;; A class must be defined before it can be used as a parameter
1223 ;; specializer in a defmethod form. 1219 ;; specializer in a defmethod form.
1224 ;; So we can ignore types that are not known to denote classes. 1220 ;; So we can ignore types that are not known to denote classes.
1225 (and (class-p type) 1221 (and (eieio--class-p (eieio--class-object type))
1226 ;; Prefer (aref ,name 0) over (eieio--class-tag ,name) so that 1222 ;; Use the exact same code as for cl-struct, so that methods
1227 ;; the tagcode is identical to the tagcode used for cl-struct. 1223 ;; that dispatch on both kinds of objects get to share this
1228 `(50 . (and (vectorp ,name) (aref ,name 0))))) 1224 ;; part of the dispatch code.
1225 `(50 . ,(cl--generic-struct-tag name))))
1229 1226
1230(add-function :before-until cl-generic-tag-types-function 1227(add-function :before-until cl-generic-tag-types-function
1231 #'eieio--generic-tag-types) 1228 #'eieio--generic-tag-types)
diff --git a/lisp/emacs-lisp/eieio-datadebug.el b/lisp/emacs-lisp/eieio-datadebug.el
index 119f7cce038..82349192e5e 100644
--- a/lisp/emacs-lisp/eieio-datadebug.el
+++ b/lisp/emacs-lisp/eieio-datadebug.el
@@ -117,7 +117,7 @@ PREBUTTONTEXT is some text between PREFIX and the object button."
117 (setq publa (cdr publa))))))) 117 (setq publa (cdr publa)))))))
118 118
119;;; Augment the Data debug thing display list. 119;;; Augment the Data debug thing display list.
120(data-debug-add-specialized-thing (lambda (thing) (object-p thing)) 120(data-debug-add-specialized-thing (lambda (thing) (eieio-object-p thing))
121 #'data-debug-insert-object-button) 121 #'data-debug-insert-object-button)
122 122
123;;; DEBUG METHODS 123;;; DEBUG METHODS
diff --git a/lisp/emacs-lisp/eieio-opt.el b/lisp/emacs-lisp/eieio-opt.el
index 8d40edf5624..304ee364dc8 100644
--- a/lisp/emacs-lisp/eieio-opt.el
+++ b/lisp/emacs-lisp/eieio-opt.el
@@ -45,7 +45,7 @@ variable `eieio-default-superclass'."
45 nil t))) 45 nil t)))
46 nil)) 46 nil))
47 (if (not root-class) (setq root-class 'eieio-default-superclass)) 47 (if (not root-class) (setq root-class 'eieio-default-superclass))
48 (eieio--check-type class-p root-class) 48 (cl-check-type root-class class)
49 (display-buffer (get-buffer-create "*EIEIO OBJECT BROWSE*") t) 49 (display-buffer (get-buffer-create "*EIEIO OBJECT BROWSE*") t)
50 (with-current-buffer (get-buffer "*EIEIO OBJECT BROWSE*") 50 (with-current-buffer (get-buffer "*EIEIO OBJECT BROWSE*")
51 (erase-buffer) 51 (erase-buffer)
@@ -58,7 +58,7 @@ variable `eieio-default-superclass'."
58Argument THIS-ROOT is the local root of the tree. 58Argument THIS-ROOT is the local root of the tree.
59Argument PREFIX is the character prefix to use. 59Argument PREFIX is the character prefix to use.
60Argument CH-PREFIX is another character prefix to display." 60Argument CH-PREFIX is another character prefix to display."
61 (eieio--check-type class-p this-root) 61 (cl-check-type this-root class)
62 (let ((myname (symbol-name this-root)) 62 (let ((myname (symbol-name this-root))
63 (chl (eieio--class-children (eieio--class-v this-root))) 63 (chl (eieio--class-children (eieio--class-v this-root)))
64 (fprefix (concat ch-prefix " +--")) 64 (fprefix (concat ch-prefix " +--"))
@@ -85,12 +85,12 @@ If CLASS is actually an object, then also display current values of that object.
85 "n abstract" 85 "n abstract"
86 "") 86 "")
87 " class") 87 " class")
88 (let ((location (get class 'class-location))) 88 (let ((location (find-lisp-object-file-name class 'eieio-defclass)))
89 (when location 89 (when location
90 (insert " in `") 90 (insert " in `")
91 (help-insert-xref-button 91 (help-insert-xref-button
92 (file-name-nondirectory location) 92 (help-fns-short-filename location)
93 'eieio-class-def class location) 93 'eieio-class-def class location 'eieio-defclass)
94 (insert "'"))) 94 (insert "'")))
95 (insert ".\n") 95 (insert ".\n")
96 ;; Parents 96 ;; Parents
@@ -204,15 +204,6 @@ Outputs to the current buffer."
204 prot (cdr prot) 204 prot (cdr prot)
205 i (1+ i))))) 205 i (1+ i)))))
206 206
207(defun eieio-build-class-list (class)
208 "Return a list of all classes that inherit from CLASS."
209 (if (class-p class)
210 (cl-mapcan
211 (lambda (c)
212 (append (list c) (eieio-build-class-list c)))
213 (eieio--class-children (eieio--class-v class)))
214 (list class)))
215
216(defun eieio-build-class-alist (&optional class instantiable-only buildlist) 207(defun eieio-build-class-alist (&optional class instantiable-only buildlist)
217 "Return an alist of all currently active classes for completion purposes. 208 "Return an alist of all currently active classes for completion purposes.
218Optional argument CLASS is the class to start with. 209Optional argument CLASS is the class to start with.
@@ -256,24 +247,22 @@ are not abstract."
256 247
257;;; METHOD COMPLETION / DOC 248;;; METHOD COMPLETION / DOC
258 249
259(define-button-type 'eieio-method-def
260 :supertype 'help-xref
261 'help-function (lambda (class method file)
262 (eieio-help-find-method-definition class method file))
263 'help-echo (purecopy "mouse-2, RET: find method's definition"))
264
265(define-button-type 'eieio-class-def 250(define-button-type 'eieio-class-def
266 :supertype 'help-xref 251 :supertype 'help-function-def
267 'help-function (lambda (class file)
268 (eieio-help-find-class-definition class file))
269 'help-echo (purecopy "mouse-2, RET: find class definition")) 252 'help-echo (purecopy "mouse-2, RET: find class definition"))
270 253
254(defconst eieio--defclass-regexp "(defclass[ \t\r\n]+%s[ \t\r\n]+")
255(with-eval-after-load 'find-func
256 (defvar find-function-regexp-alist)
257 (add-to-list 'find-function-regexp-alist
258 `(eieio-defclass . eieio--defclass-regexp)))
259
271;;;###autoload 260;;;###autoload
272(defun eieio-help-constructor (ctr) 261(defun eieio-help-constructor (ctr)
273 "Describe CTR if it is a class constructor." 262 "Describe CTR if it is a class constructor."
274 (when (class-p ctr) 263 (when (class-p ctr)
275 (erase-buffer) 264 (erase-buffer)
276 (let ((location (get ctr 'class-location)) 265 (let ((location (find-lisp-object-file-name ctr 'eieio-defclass))
277 (def (symbol-function ctr))) 266 (def (symbol-function ctr)))
278 (goto-char (point-min)) 267 (goto-char (point-min))
279 (prin1 ctr) 268 (prin1 ctr)
@@ -288,8 +277,8 @@ are not abstract."
288 (when location 277 (when location
289 (insert " in `") 278 (insert " in `")
290 (help-insert-xref-button 279 (help-insert-xref-button
291 (file-name-nondirectory location) 280 (help-fns-short-filename location)
292 'eieio-class-def ctr location) 281 'eieio-class-def ctr location 'eieio-defclass)
293 (insert "'")) 282 (insert "'"))
294 (insert ".\nCreates an object of class " (symbol-name ctr) ".") 283 (insert ".\nCreates an object of class " (symbol-name ctr) ".")
295 (goto-char (point-max)) 284 (goto-char (point-max))
@@ -304,7 +293,7 @@ are not abstract."
304 "Return non-nil if a method with SPECIALIZERS applies to CLASS." 293 "Return non-nil if a method with SPECIALIZERS applies to CLASS."
305 (let ((applies nil)) 294 (let ((applies nil))
306 (dolist (specializer specializers) 295 (dolist (specializer specializers)
307 (if (eq 'subclass (car-safe specializer)) 296 (if (memq (car-safe specializer) '(subclass eieio--static))
308 (setq specializer (nth 1 specializer))) 297 (setq specializer (nth 1 specializer)))
309 ;; Don't include the methods that are "too generic", such as those 298 ;; Don't include the methods that are "too generic", such as those
310 ;; applying to `eieio-default-superclass'. 299 ;; applying to `eieio-default-superclass'.
@@ -443,60 +432,6 @@ The value returned is a list of elements of the form
443 (terpri) 432 (terpri)
444 )) 433 ))
445 434
446;;; HELP AUGMENTATION
447;;
448(defun eieio-help-find-method-definition (class method file)
449 (let ((filename (find-library-name file))
450 location buf)
451 (when (symbolp class)
452 (setq class (symbol-name class)))
453 (when (symbolp method)
454 (setq method (symbol-name method)))
455 (when (null filename)
456 (error "Cannot find library %s" file))
457 (setq buf (find-file-noselect filename))
458 (with-current-buffer buf
459 (goto-char (point-min))
460 (when
461 (re-search-forward
462 ;; Regexp for searching methods.
463 (concat "(defmethod[ \t\r\n]+" method
464 "\\([ \t\r\n]+:[a-zA-Z]+\\)?"
465 "[ \t\r\n]+(\\s-*(\\(\\sw\\|\\s_\\)+\\s-+"
466 class
467 "\\s-*)")
468 nil t)
469 (setq location (match-beginning 0))))
470 (if (null location)
471 (message "Unable to find location in file")
472 (pop-to-buffer buf)
473 (goto-char location)
474 (recenter)
475 (beginning-of-line))))
476
477(defun eieio-help-find-class-definition (class file)
478 (when (symbolp class)
479 (setq class (symbol-name class)))
480 (let ((filename (find-library-name file))
481 location buf)
482 (when (null filename)
483 (error "Cannot find library %s" file))
484 (setq buf (find-file-noselect filename))
485 (with-current-buffer buf
486 (goto-char (point-min))
487 (when
488 (re-search-forward
489 ;; Regexp for searching a class.
490 (concat "(defclass[ \t\r\n]+" class "[ \t\r\n]+")
491 nil t)
492 (setq location (match-beginning 0))))
493 (if (null location)
494 (message "Unable to find location in file")
495 (pop-to-buffer buf)
496 (goto-char location)
497 (recenter)
498 (beginning-of-line))))
499
500;;; SPEEDBAR SUPPORT 435;;; SPEEDBAR SUPPORT
501;; 436;;
502 437
@@ -546,7 +481,7 @@ current expansion depth."
546 481
547(defun eieio-class-button (class depth) 482(defun eieio-class-button (class depth)
548 "Draw a speedbar button at the current point for CLASS at DEPTH." 483 "Draw a speedbar button at the current point for CLASS at DEPTH."
549 (eieio--check-type class-p class) 484 (cl-check-type class class)
550 (let ((subclasses (eieio--class-children (eieio--class-v class)))) 485 (let ((subclasses (eieio--class-children (eieio--class-v class))))
551 (if subclasses 486 (if subclasses
552 (speedbar-make-tag-line 'angle ?+ 487 (speedbar-make-tag-line 'angle ?+
diff --git a/lisp/emacs-lisp/eieio.el b/lisp/emacs-lisp/eieio.el
index 91469b4b96c..526090954a9 100644
--- a/lisp/emacs-lisp/eieio.el
+++ b/lisp/emacs-lisp/eieio.el
@@ -110,7 +110,7 @@ Options in CLOS not supported in EIEIO:
110Due to the way class options are set up, you can add any tags you wish, 110Due to the way class options are set up, you can add any tags you wish,
111and reference them using the function `class-option'." 111and reference them using the function `class-option'."
112 (declare (doc-string 4)) 112 (declare (doc-string 4))
113 (eieio--check-type listp superclasses) 113 (cl-check-type superclasses list)
114 114
115 (cond ((and (stringp (car options-and-doc)) 115 (cond ((and (stringp (car options-and-doc))
116 (/= 1 (% (length options-and-doc) 2))) 116 (/= 1 (% (length options-and-doc) 2)))
@@ -223,18 +223,9 @@ This method is obsolete."
223 ;; referencing classes. ei, a class whose slot can contain only 223 ;; referencing classes. ei, a class whose slot can contain only
224 ;; pointers to itself. 224 ;; pointers to itself.
225 225
226 ;; Create the test function. 226 ;; Create the test functions.
227 (defun ,testsym1 (obj) 227 (defalias ',testsym1 (eieio-make-class-predicate ',name))
228 ,(format "Test OBJ to see if it an object of type %S." name) 228 (defalias ',testsym2 (eieio-make-child-predicate ',name))
229 (and (eieio-object-p obj)
230 (same-class-p obj ',name)))
231
232 (defun ,testsym2 (obj)
233 ,(format
234 "Test OBJ to see if it an object is a child of type %S."
235 name)
236 (and (eieio-object-p obj)
237 (object-of-class-p obj ',name)))
238 229
239 ,@(when eieio-backward-compatibility 230 ,@(when eieio-backward-compatibility
240 (let ((f (intern (format "%s-child-p" name)))) 231 (let ((f (intern (format "%s-child-p" name))))
@@ -374,7 +365,7 @@ variable name of the same name as the slot."
374(defun eieio-object-name (obj &optional extra) 365(defun eieio-object-name (obj &optional extra)
375 "Return a Lisp like symbol string for object OBJ. 366 "Return a Lisp like symbol string for object OBJ.
376If EXTRA, include that in the string returned to represent the symbol." 367If EXTRA, include that in the string returned to represent the symbol."
377 (eieio--check-type eieio-object-p obj) 368 (cl-check-type obj eieio-object)
378 (format "#<%s %s%s>" (eieio--object-class-name obj) 369 (format "#<%s %s%s>" (eieio--object-class-name obj)
379 (eieio-object-name-string obj) (or extra ""))) 370 (eieio-object-name-string obj) (or extra "")))
380(define-obsolete-function-alias 'object-name #'eieio-object-name "24.4") 371(define-obsolete-function-alias 'object-name #'eieio-object-name "24.4")
@@ -394,7 +385,7 @@ If EXTRA, include that in the string returned to represent the symbol."
394(cl-defmethod eieio-object-set-name-string (obj name) 385(cl-defmethod eieio-object-set-name-string (obj name)
395 "Set the string which is OBJ's NAME." 386 "Set the string which is OBJ's NAME."
396 (declare (obsolete eieio-named "25.1")) 387 (declare (obsolete eieio-named "25.1"))
397 (eieio--check-type stringp name) 388 (cl-check-type name string)
398 (setf (gethash obj eieio--object-names) name)) 389 (setf (gethash obj eieio--object-names) name))
399(define-obsolete-function-alias 390(define-obsolete-function-alias
400 'object-set-name-string 'eieio-object-set-name-string "24.4") 391 'object-set-name-string 'eieio-object-set-name-string "24.4")
@@ -402,7 +393,7 @@ If EXTRA, include that in the string returned to represent the symbol."
402(defun eieio-object-class (obj) 393(defun eieio-object-class (obj)
403 "Return the class struct defining OBJ." 394 "Return the class struct defining OBJ."
404 ;; FIXME: We say we return a "struct" but we return a symbol instead! 395 ;; FIXME: We say we return a "struct" but we return a symbol instead!
405 (eieio--check-type eieio-object-p obj) 396 (cl-check-type obj eieio-object)
406 (eieio--object-class-name obj)) 397 (eieio--object-class-name obj))
407(define-obsolete-function-alias 'object-class #'eieio-object-class "24.4") 398(define-obsolete-function-alias 'object-class #'eieio-object-class "24.4")
408;; CLOS name, maybe? 399;; CLOS name, maybe?
@@ -410,7 +401,7 @@ If EXTRA, include that in the string returned to represent the symbol."
410 401
411(defun eieio-object-class-name (obj) 402(defun eieio-object-class-name (obj)
412 "Return a Lisp like symbol name for OBJ's class." 403 "Return a Lisp like symbol name for OBJ's class."
413 (eieio--check-type eieio-object-p obj) 404 (cl-check-type obj eieio-object)
414 (eieio-class-name (eieio--object-class-name obj))) 405 (eieio-class-name (eieio--object-class-name obj)))
415(define-obsolete-function-alias 406(define-obsolete-function-alias
416 'object-class-name 'eieio-object-class-name "24.4") 407 'object-class-name 'eieio-object-class-name "24.4")
@@ -419,15 +410,14 @@ If EXTRA, include that in the string returned to represent the symbol."
419 "Return parent classes to CLASS. (overload of variable). 410 "Return parent classes to CLASS. (overload of variable).
420 411
421The CLOS function `class-direct-superclasses' is aliased to this function." 412The CLOS function `class-direct-superclasses' is aliased to this function."
422 (let ((c (eieio-class-object class))) 413 (eieio--class-parent (eieio--class-object class)))
423 (eieio--class-parent c)))
424 414
425(define-obsolete-function-alias 'class-parents #'eieio-class-parents "24.4") 415(define-obsolete-function-alias 'class-parents #'eieio-class-parents "24.4")
426 416
427(defun eieio-class-children (class) 417(defun eieio-class-children (class)
428 "Return child classes to CLASS. 418 "Return child classes to CLASS.
429The CLOS function `class-direct-subclasses' is aliased to this function." 419The CLOS function `class-direct-subclasses' is aliased to this function."
430 (eieio--check-type class-p class) 420 (cl-check-type class class)
431 (eieio--class-children (eieio--class-v class))) 421 (eieio--class-children (eieio--class-v class)))
432(define-obsolete-function-alias 422(define-obsolete-function-alias
433 'class-children #'eieio-class-children "24.4") 423 'class-children #'eieio-class-children "24.4")
@@ -446,13 +436,13 @@ The CLOS function `class-direct-subclasses' is aliased to this function."
446(defun same-class-p (obj class) 436(defun same-class-p (obj class)
447 "Return t if OBJ is of class-type CLASS." 437 "Return t if OBJ is of class-type CLASS."
448 (setq class (eieio--class-object class)) 438 (setq class (eieio--class-object class))
449 (eieio--check-type eieio--class-p class) 439 (cl-check-type class eieio--class)
450 (eieio--check-type eieio-object-p obj) 440 (cl-check-type obj eieio-object)
451 (eq (eieio--object-class-object obj) class)) 441 (eq (eieio--object-class-object obj) class))
452 442
453(defun object-of-class-p (obj class) 443(defun object-of-class-p (obj class)
454 "Return non-nil if OBJ is an instance of CLASS or CLASS' subclasses." 444 "Return non-nil if OBJ is an instance of CLASS or CLASS' subclasses."
455 (eieio--check-type eieio-object-p obj) 445 (cl-check-type obj eieio-object)
456 ;; class will be checked one layer down 446 ;; class will be checked one layer down
457 (child-of-class-p (eieio--object-class-object obj) class)) 447 (child-of-class-p (eieio--object-class-object obj) class))
458;; Backwards compatibility 448;; Backwards compatibility
@@ -461,13 +451,13 @@ The CLOS function `class-direct-subclasses' is aliased to this function."
461(defun child-of-class-p (child class) 451(defun child-of-class-p (child class)
462 "Return non-nil if CHILD class is a subclass of CLASS." 452 "Return non-nil if CHILD class is a subclass of CLASS."
463 (setq child (eieio--class-object child)) 453 (setq child (eieio--class-object child))
464 (eieio--check-type eieio--class-p child) 454 (cl-check-type child eieio--class)
465 ;; `eieio-default-superclass' is never mentioned in eieio--class-parent, 455 ;; `eieio-default-superclass' is never mentioned in eieio--class-parent,
466 ;; so we have to special case it here. 456 ;; so we have to special case it here.
467 (or (eq class 'eieio-default-superclass) 457 (or (eq class 'eieio-default-superclass)
468 (let ((p nil)) 458 (let ((p nil))
469 (setq class (eieio--class-object class)) 459 (setq class (eieio--class-object class))
470 (eieio--check-type eieio--class-p class) 460 (cl-check-type class eieio--class)
471 (while (and child (not (eq child class))) 461 (while (and child (not (eq child class)))
472 (setq p (append p (eieio--class-parent child)) 462 (setq p (append p (eieio--class-parent child))
473 child (pop p))) 463 child (pop p)))
@@ -475,11 +465,11 @@ The CLOS function `class-direct-subclasses' is aliased to this function."
475 465
476(defun object-slots (obj) 466(defun object-slots (obj)
477 "Return list of slots available in OBJ." 467 "Return list of slots available in OBJ."
478 (eieio--check-type eieio-object-p obj) 468 (cl-check-type obj eieio-object)
479 (eieio--class-public-a (eieio--object-class-object obj))) 469 (eieio--class-public-a (eieio--object-class-object obj)))
480 470
481(defun eieio--class-slot-initarg (class slot) "Fetch from CLASS, SLOT's :initarg." 471(defun eieio--class-slot-initarg (class slot) "Fetch from CLASS, SLOT's :initarg."
482 (eieio--check-type eieio--class-p class) 472 (cl-check-type class eieio--class)
483 (let ((ia (eieio--class-initarg-tuples class)) 473 (let ((ia (eieio--class-initarg-tuples class))
484 (f nil)) 474 (f nil))
485 (while (and ia (not f)) 475 (while (and ia (not f))
@@ -517,7 +507,7 @@ OBJECT can be an instance or a class."
517 ;; Return nil if the magic symbol is in there. 507 ;; Return nil if the magic symbol is in there.
518 (not (eq (cond 508 (not (eq (cond
519 ((eieio-object-p object) (eieio-oref object slot)) 509 ((eieio-object-p object) (eieio-oref object slot))
520 ((class-p object) (eieio-oref-default object slot)) 510 ((symbolp object) (eieio-oref-default object slot))
521 (t (signal 'wrong-type-argument (list 'eieio-object-p object)))) 511 (t (signal 'wrong-type-argument (list 'eieio-object-p object))))
522 eieio-unbound)))) 512 eieio-unbound))))
523 513
@@ -529,7 +519,8 @@ OBJECT can be an instance or a class."
529 "Return non-nil if OBJECT-OR-CLASS has SLOT." 519 "Return non-nil if OBJECT-OR-CLASS has SLOT."
530 (let ((cv (cond ((eieio-object-p object-or-class) 520 (let ((cv (cond ((eieio-object-p object-or-class)
531 (eieio--object-class-object object-or-class)) 521 (eieio--object-class-object object-or-class))
532 (t (eieio-class-object object-or-class))))) 522 ((eieio--class-p object-or-class) object-or-class)
523 (t (find-class object-or-class 'error)))))
533 (or (memq slot (eieio--class-public-a cv)) 524 (or (memq slot (eieio--class-public-a cv))
534 (memq slot (eieio--class-class-allocation-a cv))) 525 (memq slot (eieio--class-class-allocation-a cv)))
535 )) 526 ))
@@ -538,10 +529,10 @@ OBJECT can be an instance or a class."
538 "Return the class that SYMBOL represents. 529 "Return the class that SYMBOL represents.
539If there is no class, nil is returned if ERRORP is nil. 530If there is no class, nil is returned if ERRORP is nil.
540If ERRORP is non-nil, `wrong-argument-type' is signaled." 531If ERRORP is non-nil, `wrong-argument-type' is signaled."
541 (if (not (class-p symbol)) 532 (let ((class (eieio--class-v symbol)))
542 (if errorp (signal 'wrong-type-argument (list 'class-p symbol)) 533 (cond
543 nil) 534 ((eieio--class-p class) class)
544 (eieio--class-v symbol))) 535 (errorp (signal 'wrong-type-argument (list 'class-p symbol))))))
545 536
546;;; Slightly more complex utility functions for objects 537;;; Slightly more complex utility functions for objects
547;; 538;;
@@ -551,7 +542,7 @@ LIST is a list of objects whose slots are searched.
551Objects in LIST do not need to have a slot named SLOT, nor does 542Objects in LIST do not need to have a slot named SLOT, nor does
552SLOT need to be bound. If these errors occur, those objects will 543SLOT need to be bound. If these errors occur, those objects will
553be ignored." 544be ignored."
554 (eieio--check-type listp list) 545 (cl-check-type list list)
555 (while (and list (not (condition-case nil 546 (while (and list (not (condition-case nil
556 ;; This prevents errors for missing slots. 547 ;; This prevents errors for missing slots.
557 (equal key (eieio-oref (car list) slot)) 548 (equal key (eieio-oref (car list) slot))
@@ -563,7 +554,7 @@ be ignored."
563 "Return an association list with the contents of SLOT as the key element. 554 "Return an association list with the contents of SLOT as the key element.
564LIST must be a list of objects with SLOT in it. 555LIST must be a list of objects with SLOT in it.
565This is useful when you need to do completing read on an object group." 556This is useful when you need to do completing read on an object group."
566 (eieio--check-type listp list) 557 (cl-check-type list list)
567 (let ((assoclist nil)) 558 (let ((assoclist nil))
568 (while list 559 (while list
569 (setq assoclist (cons (cons (eieio-oref (car list) slot) 560 (setq assoclist (cons (cons (eieio-oref (car list) slot)
@@ -577,7 +568,7 @@ This is useful when you need to do completing read on an object group."
577LIST must be a list of objects, but those objects do not need to have 568LIST must be a list of objects, but those objects do not need to have
578SLOT in it. If it does not, then that element is left out of the association 569SLOT in it. If it does not, then that element is left out of the association
579list." 570list."
580 (eieio--check-type listp list) 571 (cl-check-type list list)
581 (let ((assoclist nil)) 572 (let ((assoclist nil))
582 (while list 573 (while list
583 (if (slot-exists-p (car list) slot) 574 (if (slot-exists-p (car list) slot)
@@ -869,12 +860,8 @@ this object."
869 (object-write thing)) 860 (object-write thing))
870 ((consp thing) 861 ((consp thing)
871 (eieio-list-prin1 thing)) 862 (eieio-list-prin1 thing))
872 ((class-p thing) 863 ((eieio--class-p thing)
873 (princ (eieio-class-name thing))) 864 (princ (eieio-class-name thing)))
874 ((or (keywordp thing) (booleanp thing))
875 (prin1 thing))
876 ((symbolp thing)
877 (princ (concat "'" (symbol-name thing))))
878 (t (prin1 thing)))) 865 (t (prin1 thing))))
879 866
880(defun eieio-list-prin1 (list) 867(defun eieio-list-prin1 (list)
@@ -942,7 +929,7 @@ Optional argument GROUP is the sub-group of slots to display.
942 929
943;;;*** 930;;;***
944 931
945;;;### (autoloads nil "eieio-opt" "eieio-opt.el" "b849f8bf1312d5ef57e53d02173e4b5a") 932;;;### (autoloads nil "eieio-opt" "eieio-opt.el" "ff1097f185bc2c253276a7d19fe2f54a")
946;;; Generated autoloads from eieio-opt.el 933;;; Generated autoloads from eieio-opt.el
947 934
948(autoload 'eieio-browse "eieio-opt" "\ 935(autoload 'eieio-browse "eieio-opt" "\
diff --git a/lisp/erc/ChangeLog b/lisp/erc/ChangeLog
index 28ac7d38b96..44971cc16fc 100644
--- a/lisp/erc/ChangeLog
+++ b/lisp/erc/ChangeLog
@@ -1,3 +1,8 @@
12015-01-28 Dima Kogan <dima@secretsauce.net>
2
3 * erc-backend.el (define-erc-response-handler): Give hook-name
4 default value of nil and add-to-list (bug#19363).
5
12015-01-22 Paul Eggert <eggert@cs.ucla.edu> 62015-01-22 Paul Eggert <eggert@cs.ucla.edu>
2 7
3 Don't downcase system diagnostics' first letters 8 Don't downcase system diagnostics' first letters
diff --git a/lisp/erc/erc-backend.el b/lisp/erc/erc-backend.el
index b8c67860e20..8ce199fbcbb 100644
--- a/lisp/erc/erc-backend.el
+++ b/lisp/erc/erc-backend.el
@@ -1162,8 +1162,11 @@ add things to `%s' instead."
1162 (cl-loop for alias in aliases 1162 (cl-loop for alias in aliases
1163 collect (intern (format "erc-server-%s-functions" alias))))) 1163 collect (intern (format "erc-server-%s-functions" alias)))))
1164 `(prog2 1164 `(prog2
1165 ;; Normal hook variable. 1165 ;; Normal hook variable. The variable may already have a
1166 (defvar ,hook-name ',fn-name ,(format hook-doc name)) 1166 ;; value at this point, so I default to nil, and (add-hook)
1167 ;; unconditionally
1168 (defvar ,hook-name nil ,(format hook-doc name))
1169 (add-to-list ',hook-name ',fn-name)
1167 ;; Handler function 1170 ;; Handler function
1168 (defun ,fn-name (proc parsed) 1171 (defun ,fn-name (proc parsed)
1169 ,fn-doc 1172 ,fn-doc
diff --git a/lisp/filenotify.el b/lisp/filenotify.el
index 35181b63f3a..c94f631dde8 100644
--- a/lisp/filenotify.el
+++ b/lisp/filenotify.el
@@ -41,13 +41,21 @@ could use another implementation.")
41 "Hash table for registered file notification descriptors. 41 "Hash table for registered file notification descriptors.
42A key in this hash table is the descriptor as returned from 42A key in this hash table is the descriptor as returned from
43`gfilenotify', `inotify', `w32notify' or a file name handler. 43`gfilenotify', `inotify', `w32notify' or a file name handler.
44The value in the hash table is the cons cell (DIR FILE CALLBACK).") 44The value in the hash table is a list
45
46 \(DIR (FILE . CALLBACK) (FILE . CALLBACK) ...)
47
48Several values for a given DIR happen only for `inotify', when
49different files from the same directory are watched.")
45 50
46;; This function is used by `gfilenotify', `inotify' and `w32notify' events. 51;; This function is used by `gfilenotify', `inotify' and `w32notify' events.
47;;;###autoload 52;;;###autoload
48(defun file-notify-handle-event (event) 53(defun file-notify-handle-event (event)
49 "Handle file system monitoring event. 54 "Handle file system monitoring event.
50If EVENT is a filewatch event, call its callback. 55If EVENT is a filewatch event, call its callback. It has the format
56
57 \(file-notify (DESCRIPTOR ACTIONS FILE COOKIE) CALLBACK)
58
51Otherwise, signal a `file-notify-error'." 59Otherwise, signal a `file-notify-error'."
52 (interactive "e") 60 (interactive "e")
53 (if (and (eq (car event) 'file-notify) 61 (if (and (eq (car event) 'file-notify)
@@ -81,12 +89,23 @@ This is available in case a file has been moved."
81This is available in case a file has been moved." 89This is available in case a file has been moved."
82 (nth 3 event)) 90 (nth 3 event))
83 91
92;; `inotify' returns the same descriptor when the file (directory)
93;; uses the same inode. We want to distinguish, and apply a virtual
94;; descriptor which make the difference.
95(defun file-notify--descriptor (descriptor file)
96 "Return the descriptor to be used in `file-notify-*-watch'.
97For `gfilenotify' and `w32notify' it is the same descriptor as
98used in the low-level file notification package."
99 (if (and (natnump descriptor) (eq file-notify--library 'inotify))
100 (cons descriptor file)
101 descriptor))
102
84;; The callback function used to map between specific flags of the 103;; The callback function used to map between specific flags of the
85;; respective file notifications, and the ones we return. 104;; respective file notifications, and the ones we return.
86(defun file-notify-callback (event) 105(defun file-notify-callback (event)
87 "Handle an EVENT returned from file notification. 106 "Handle an EVENT returned from file notification.
88EVENT is the same one as in `file-notify-handle-event' except the 107EVENT is the cdr of the event in `file-notify-handle-event'
89car of that event, which is the symbol `file-notify'." 108\(DESCRIPTOR ACTIONS FILE COOKIE)."
90 (let* ((desc (car event)) 109 (let* ((desc (car event))
91 (registered (gethash desc file-notify-descriptors)) 110 (registered (gethash desc file-notify-descriptors))
92 (pending-event (assoc desc file-notify--pending-events)) 111 (pending-event (assoc desc file-notify--pending-events))
@@ -97,99 +116,113 @@ car of that event, which is the symbol `file-notify'."
97 ;; Make actions a list. 116 ;; Make actions a list.
98 (unless (consp actions) (setq actions (cons actions nil))) 117 (unless (consp actions) (setq actions (cons actions nil)))
99 118
100 ;; Check, that event is meant for us. 119 ;; Loop over registered entries. In fact, more than one entry
101 (unless (setq callback (nth 2 registered)) 120 ;; happens only for `inotify'.
102 (setq actions nil)) 121 (dolist (entry (cdr registered))
103 122
104 ;; Loop over actions. In fact, more than one action happens only 123 ;; Check, that event is meant for us.
105 ;; for `inotify'. 124 (unless (setq callback (cdr entry))
106 (dolist (action actions) 125 (setq actions nil))
107 126
108 ;; Send pending event, if it doesn't match. 127 ;; Loop over actions. In fact, more than one action happens only
109 (when (and pending-event 128 ;; for `inotify'.
110 ;; The cookie doesn't match. 129 (dolist (action actions)
111 (not (eq (file-notify--event-cookie pending-event) 130
112 (file-notify--event-cookie event))) 131 ;; Send pending event, if it doesn't match.
113 (or 132 (when (and pending-event
114 ;; inotify. 133 ;; The cookie doesn't match.
115 (and (eq (nth 1 pending-event) 'moved-from) 134 (not (eq (file-notify--event-cookie pending-event)
116 (not (eq action 'moved-to))) 135 (file-notify--event-cookie event)))
117 ;; w32notify. 136 (or
118 (and (eq (nth 1 pending-event) 'renamed-from) 137 ;; inotify.
119 (not (eq action 'renamed-to))))) 138 (and (eq (nth 1 pending-event) 'moved-from)
120 (funcall callback 139 (not (eq action 'moved-to)))
121 (list desc 'deleted 140 ;; w32notify.
122 (file-notify--event-file-name pending-event))) 141 (and (eq (nth 1 pending-event) 'renamed-from)
123 (setq file-notify--pending-events 142 (not (eq action 'renamed-to)))))
124 (delete pending-event file-notify--pending-events))) 143 (funcall callback
125 144 (list desc 'deleted
126 ;; Map action. We ignore all events which cannot be mapped. 145 (file-notify--event-file-name pending-event)))
127 (setq action 146 (setq file-notify--pending-events
128 (cond 147 (delete pending-event file-notify--pending-events)))
129 ;; gfilenotify. 148
130 ((memq action '(attribute-changed changed created deleted)) action) 149 ;; Map action. We ignore all events which cannot be mapped.
131 ((eq action 'moved) 150 (setq action
132 (setq file1 (file-notify--event-file1-name event)) 151 (cond
133 'renamed) 152 ;; gfilenotify.
134 153 ((memq action '(attribute-changed changed created deleted))
135 ;; inotify. 154 action)
136 ((eq action 'attrib) 'attribute-changed) 155 ((eq action 'moved)
137 ((eq action 'create) 'created) 156 (setq file1 (file-notify--event-file1-name event))
138 ((eq action 'modify) 'changed) 157 'renamed)
139 ((memq action '(delete 'delete-self move-self)) 'deleted) 158
140 ;; Make the event pending. 159 ;; inotify.
141 ((eq action 'moved-from) 160 ((eq action 'attrib) 'attribute-changed)
142 (add-to-list 'file-notify--pending-events 161 ((eq action 'create) 'created)
143 (list desc action file 162 ((eq action 'modify) 'changed)
144 (file-notify--event-cookie event))) 163 ((memq action '(delete 'delete-self move-self)) 'deleted)
145 nil) 164 ;; Make the event pending.
146 ;; Look for pending event. 165 ((eq action 'moved-from)
147 ((eq action 'moved-to) 166 (add-to-list 'file-notify--pending-events
148 (if (null pending-event) 167 (list desc action file
149 'created 168 (file-notify--event-cookie event)))
150 (setq file1 file 169 nil)
151 file (file-notify--event-file-name pending-event) 170 ;; Look for pending event.
152 file-notify--pending-events 171 ((eq action 'moved-to)
153 (delete pending-event file-notify--pending-events)) 172 (if (null pending-event)
154 'renamed)) 173 'created
155 174 (setq file1 file
156 ;; w32notify. 175 file (file-notify--event-file-name pending-event)
157 ((eq action 'added) 'created) 176 file-notify--pending-events
158 ((eq action 'modified) 'changed) 177 (delete pending-event file-notify--pending-events))
159 ((eq action 'removed) 'deleted) 178 'renamed))
160 ;; Make the event pending. 179
161 ((eq 'renamed-from action) 180 ;; w32notify.
162 (add-to-list 'file-notify--pending-events 181 ((eq action 'added) 'created)
163 (list desc action file 182 ((eq action 'modified) 'changed)
164 (file-notify--event-cookie event))) 183 ((eq action 'removed) 'deleted)
165 nil) 184 ;; Make the event pending.
166 ;; Look for pending event. 185 ((eq action 'renamed-from)
167 ((eq 'renamed-to action) 186 (add-to-list 'file-notify--pending-events
168 (if (null pending-event) 187 (list desc action file
169 'created 188 (file-notify--event-cookie event)))
170 (setq file1 file 189 nil)
171 file (file-notify--event-file-name pending-event) 190 ;; Look for pending event.
172 file-notify--pending-events 191 ((eq action 'renamed-to)
173 (delete pending-event file-notify--pending-events)) 192 (if (null pending-event)
174 'renamed)))) 193 'created
175 194 (setq file1 file
176 ;; Apply callback. 195 file (file-notify--event-file-name pending-event)
177 (when (and action 196 file-notify--pending-events
178 (or 197 (delete pending-event file-notify--pending-events))
179 ;; If there is no relative file name for that watch, 198 'renamed))))
180 ;; we watch the whole directory. 199
181 (null (nth 1 registered)) 200 ;; Apply callback.
182 ;; File matches. 201 (when (and action
183 (string-equal 202 (or
184 (nth 1 registered) (file-name-nondirectory file)) 203 ;; If there is no relative file name for that watch,
185 ;; File1 matches. 204 ;; we watch the whole directory.
186 (and (stringp file1) 205 (null (nth 0 entry))
187 (string-equal 206 ;; File matches.
188 (nth 1 registered) (file-name-nondirectory file1))))) 207 (string-equal
189 (if file1 208 (nth 0 entry) (file-name-nondirectory file))
190 (funcall callback (list desc action file file1)) 209 ;; File1 matches.
191 (funcall callback (list desc action file))))))) 210 (and (stringp file1)
192 211 (string-equal
212 (nth 0 entry) (file-name-nondirectory file1)))))
213 (if file1
214 (funcall
215 callback
216 `(,(file-notify--descriptor desc (nth 0 entry))
217 ,action ,file ,file1))
218 (funcall
219 callback
220 `(,(file-notify--descriptor desc (nth 0 entry))
221 ,action ,file))))))))
222
223;; `gfilenotify' and `w32notify' return a unique descriptor for every
224;; `file-notify-add-watch', while `inotify' returns a unique
225;; descriptor per inode only.
193(defun file-notify-add-watch (file flags callback) 226(defun file-notify-add-watch (file flags callback)
194 "Add a watch for filesystem events pertaining to FILE. 227 "Add a watch for filesystem events pertaining to FILE.
195This arranges for filesystem events pertaining to FILE to be reported 228This arranges for filesystem events pertaining to FILE to be reported
@@ -206,7 +239,7 @@ include the following symbols:
206 `attribute-change' -- watch for file attributes changes, like 239 `attribute-change' -- watch for file attributes changes, like
207 permissions or modification time 240 permissions or modification time
208 241
209If FILE is a directory, 'change' watches for file creation or 242If FILE is a directory, `change' watches for file creation or
210deletion in that directory. This does not work recursively. 243deletion in that directory. This does not work recursively.
211 244
212When any event happens, Emacs will call the CALLBACK function passing 245When any event happens, Emacs will call the CALLBACK function passing
@@ -240,82 +273,96 @@ FILE is the name of the file whose event is being reported."
240 (if (file-directory-p file) 273 (if (file-directory-p file)
241 file 274 file
242 (file-name-directory file)))) 275 (file-name-directory file))))
243 desc func l-flags) 276 desc func l-flags registered)
244 277
245 ;; Check, whether this has been registered already. 278 (if handler
246; (maphash 279 ;; A file name handler could exist even if there is no local
247; (lambda (key value) 280 ;; file notification support.
248; (when (equal (cons file callback) value) (setq desc key))) 281 (setq desc (funcall
249; file-notify-descriptors) 282 handler 'file-notify-add-watch dir flags callback))
250 283
251 (unless desc 284 ;; Check, whether Emacs has been compiled with file
252 (if handler 285 ;; notification support.
253 ;; A file name handler could exist even if there is no local 286 (unless file-notify--library
254 ;; file notification support. 287 (signal 'file-notify-error
255 (setq desc (funcall 288 '("No file notification package available")))
256 handler 'file-notify-add-watch dir flags callback)) 289
257 290 ;; Determine low-level function to be called.
258 ;; Check, whether Emacs has been compiled with file 291 (setq func
259 ;; notification support. 292 (cond
260 (unless file-notify--library 293 ((eq file-notify--library 'gfilenotify) 'gfile-add-watch)
261 (signal 'file-notify-error 294 ((eq file-notify--library 'inotify) 'inotify-add-watch)
262 '("No file notification package available"))) 295 ((eq file-notify--library 'w32notify) 'w32notify-add-watch)))
263 296
264 ;; Determine low-level function to be called. 297 ;; Determine respective flags.
265 (setq func 298 (if (eq file-notify--library 'gfilenotify)
266 (cond 299 (setq l-flags '(watch-mounts send-moved))
267 ((eq file-notify--library 'gfilenotify) 'gfile-add-watch) 300 (when (memq 'change flags)
268 ((eq file-notify--library 'inotify) 'inotify-add-watch) 301 (setq
269 ((eq file-notify--library 'w32notify) 'w32notify-add-watch))) 302 l-flags
270 303 (cond
271 ;; Determine respective flags. 304 ((eq file-notify--library 'inotify) '(create modify move delete))
272 (if (eq file-notify--library 'gfilenotify) 305 ((eq file-notify--library 'w32notify)
273 (setq l-flags '(watch-mounts send-moved)) 306 '(file-name directory-name size last-write-time)))))
274 (when (memq 'change flags) 307 (when (memq 'attribute-change flags)
275 (setq 308 (add-to-list
276 l-flags 309 'l-flags
277 (cond 310 (cond
278 ((eq file-notify--library 'inotify) '(create modify move delete)) 311 ((eq file-notify--library 'inotify) 'attrib)
279 ((eq file-notify--library 'w32notify) 312 ((eq file-notify--library 'w32notify) 'attributes)))))
280 '(file-name directory-name size last-write-time))))) 313
281 (when (memq 'attribute-change flags) 314 ;; Call low-level function.
282 (add-to-list 315 (setq desc (funcall func dir l-flags 'file-notify-callback)))
283 'l-flags 316
284 (cond 317 ;; Modify `file-notify-descriptors'.
285 ((eq file-notify--library 'inotify) 'attrib) 318 (setq registered (gethash desc file-notify-descriptors))
286 ((eq file-notify--library 'w32notify) 'attributes))))) 319 (puthash
287 320 desc
288 ;; Call low-level function. 321 `(,dir
289 (setq desc (funcall func dir l-flags 'file-notify-callback)))) 322 (,(unless (file-directory-p file) (file-name-nondirectory file))
323 . ,callback)
324 . ,(cdr registered))
325 file-notify-descriptors)
290 326
291 ;; Return descriptor. 327 ;; Return descriptor.
292 (puthash desc 328 (file-notify--descriptor
293 (list (directory-file-name 329 desc (unless (file-directory-p file) (file-name-nondirectory file)))))
294 (if (file-directory-p dir) dir (file-name-directory dir)))
295 (unless (file-directory-p file)
296 (file-name-nondirectory file))
297 callback)
298 file-notify-descriptors)
299 desc))
300 330
301(defun file-notify-rm-watch (descriptor) 331(defun file-notify-rm-watch (descriptor)
302 "Remove an existing watch specified by its DESCRIPTOR. 332 "Remove an existing watch specified by its DESCRIPTOR.
303DESCRIPTOR should be an object returned by `file-notify-add-watch'." 333DESCRIPTOR should be an object returned by `file-notify-add-watch'."
304 (let ((file (car (gethash descriptor file-notify-descriptors))) 334 (let* ((desc (if (consp descriptor) (car descriptor) descriptor))
305 handler) 335 (file (if (consp descriptor) (cdr descriptor)))
306 336 (dir (car (gethash desc file-notify-descriptors)))
307 (when (stringp file) 337 handler registered)
308 (setq handler (find-file-name-handler file 'file-notify-rm-watch)) 338
309 (if handler 339 (when (stringp dir)
310 (funcall handler 'file-notify-rm-watch descriptor) 340 (setq handler (find-file-name-handler dir 'file-notify-rm-watch))
311 (funcall 341
312 (cond 342 ;; Modify `file-notify-descriptors'.
313 ((eq file-notify--library 'gfilenotify) 'gfile-rm-watch) 343 (if (not file)
314 ((eq file-notify--library 'inotify) 'inotify-rm-watch) 344 (remhash desc file-notify-descriptors)
315 ((eq file-notify--library 'w32notify) 'w32notify-rm-watch)) 345
316 descriptor))) 346 (setq registered (gethash desc file-notify-descriptors))
317 347 (setcdr registered
318 (remhash descriptor file-notify-descriptors))) 348 (delete (assoc file (cdr registered)) (cdr registered)))
349 (if (null (cdr registered))
350 (remhash desc file-notify-descriptors)
351 (puthash desc registered file-notify-descriptors)))
352
353 ;; Call low-level function.
354 (when (null (cdr registered))
355 (if handler
356 ;; A file name handler could exist even if there is no local
357 ;; file notification support.
358 (funcall handler 'file-notify-rm-watch desc)
359
360 (funcall
361 (cond
362 ((eq file-notify--library 'gfilenotify) 'gfile-rm-watch)
363 ((eq file-notify--library 'inotify) 'inotify-rm-watch)
364 ((eq file-notify--library 'w32notify) 'w32notify-rm-watch))
365 desc))))))
319 366
320;; The end: 367;; The end:
321(provide 'filenotify) 368(provide 'filenotify)
diff --git a/lisp/files.el b/lisp/files.el
index ed1943dfc28..5e80cb76599 100644
--- a/lisp/files.el
+++ b/lisp/files.el
@@ -6094,7 +6094,7 @@ and `list-directory-verbose-switches'."
6094 6094
6095PATTERN is assumed to represent a file-name wildcard suitable for the 6095PATTERN is assumed to represent a file-name wildcard suitable for the
6096underlying filesystem. For Unix and GNU/Linux, each character from the 6096underlying filesystem. For Unix and GNU/Linux, each character from the
6097set [ \\t\\n;<>&|()'\"#$] is quoted with a backslash; for DOS/Windows, all 6097set [ \\t\\n;<>&|()`'\"#$] is quoted with a backslash; for DOS/Windows, all
6098the parts of the pattern which don't include wildcard characters are 6098the parts of the pattern which don't include wildcard characters are
6099quoted with double quotes. 6099quoted with double quotes.
6100 6100
@@ -6108,12 +6108,12 @@ need to be passed verbatim to shell commands."
6108 ;; argument has quotes, we can safely assume it is already 6108 ;; argument has quotes, we can safely assume it is already
6109 ;; quoted by the caller. 6109 ;; quoted by the caller.
6110 (if (or (string-match "[\"]" pattern) 6110 (if (or (string-match "[\"]" pattern)
6111 ;; We quote [&()#$'] in case their shell is a port of a 6111 ;; We quote [&()#$`'] in case their shell is a port of a
6112 ;; Unixy shell. We quote [,=+] because stock DOS and 6112 ;; Unixy shell. We quote [,=+] because stock DOS and
6113 ;; Windows shells require that in some cases, such as 6113 ;; Windows shells require that in some cases, such as
6114 ;; passing arguments to batch files that use positional 6114 ;; passing arguments to batch files that use positional
6115 ;; arguments like %1. 6115 ;; arguments like %1.
6116 (not (string-match "[ \t;&()#$',=+]" pattern))) 6116 (not (string-match "[ \t;&()#$`',=+]" pattern)))
6117 pattern 6117 pattern
6118 (let ((result "\"") 6118 (let ((result "\"")
6119 (beg 0) 6119 (beg 0)
@@ -6128,7 +6128,7 @@ need to be passed verbatim to shell commands."
6128 (concat result (substring pattern beg) "\"")))) 6128 (concat result (substring pattern beg) "\""))))
6129 (t 6129 (t
6130 (let ((beg 0)) 6130 (let ((beg 0))
6131 (while (string-match "[ \t\n;<>&|()'\"#$]" pattern beg) 6131 (while (string-match "[ \t\n;<>&|()`'\"#$]" pattern beg)
6132 (setq pattern 6132 (setq pattern
6133 (concat (substring pattern 0 (match-beginning 0)) 6133 (concat (substring pattern 0 (match-beginning 0))
6134 "\\" 6134 "\\"
@@ -6590,35 +6590,40 @@ Runs the members of `kill-emacs-query-functions' in turn and stops
6590if any returns nil. If `confirm-kill-emacs' is non-nil, calls it." 6590if any returns nil. If `confirm-kill-emacs' is non-nil, calls it."
6591 (interactive "P") 6591 (interactive "P")
6592 (save-some-buffers arg t) 6592 (save-some-buffers arg t)
6593 (and (or (not (memq t (mapcar (function 6593 (let ((confirm confirm-kill-emacs))
6594 (lambda (buf) (and (buffer-file-name buf) 6594 (and
6595 (buffer-modified-p buf)))) 6595 (or (not (memq t (mapcar (function
6596 (buffer-list)))) 6596 (lambda (buf) (and (buffer-file-name buf)
6597 (yes-or-no-p "Modified buffers exist; exit anyway? ")) 6597 (buffer-modified-p buf))))
6598 (or (not (fboundp 'process-list)) 6598 (buffer-list))))
6599 ;; process-list is not defined on MSDOS. 6599 (progn (setq confirm nil)
6600 (let ((processes (process-list)) 6600 (yes-or-no-p "Modified buffers exist; exit anyway? ")))
6601 active) 6601 (or (not (fboundp 'process-list))
6602 (while processes 6602 ;; process-list is not defined on MSDOS.
6603 (and (memq (process-status (car processes)) '(run stop open listen)) 6603 (let ((processes (process-list))
6604 (process-query-on-exit-flag (car processes)) 6604 active)
6605 (setq active t)) 6605 (while processes
6606 (setq processes (cdr processes))) 6606 (and (memq (process-status (car processes)) '(run stop open listen))
6607 (or (not active) 6607 (process-query-on-exit-flag (car processes))
6608 (with-current-buffer-window 6608 (setq active t))
6609 (get-buffer-create "*Process List*") nil 6609 (setq processes (cdr processes)))
6610 #'(lambda (window _value) 6610 (or (not active)
6611 (with-selected-window window 6611 (with-current-buffer-window
6612 (unwind-protect 6612 (get-buffer-create "*Process List*") nil
6613 (yes-or-no-p "Active processes exist; kill them and exit anyway? ") 6613 #'(lambda (window _value)
6614 (when (window-live-p window) 6614 (with-selected-window window
6615 (quit-restore-window window 'kill))))) 6615 (unwind-protect
6616 (list-processes t))))) 6616 (progn
6617 ;; Query the user for other things, perhaps. 6617 (setq confirm nil)
6618 (run-hook-with-args-until-failure 'kill-emacs-query-functions) 6618 (yes-or-no-p "Active processes exist; kill them and exit anyway? "))
6619 (or (null confirm-kill-emacs) 6619 (when (window-live-p window)
6620 (funcall confirm-kill-emacs "Really exit Emacs? ")) 6620 (quit-restore-window window 'kill)))))
6621 (kill-emacs))) 6621 (list-processes t)))))
6622 ;; Query the user for other things, perhaps.
6623 (run-hook-with-args-until-failure 'kill-emacs-query-functions)
6624 (or (null confirm)
6625 (funcall confirm "Really exit Emacs? "))
6626 (kill-emacs))))
6622 6627
6623(defun save-buffers-kill-terminal (&optional arg) 6628(defun save-buffers-kill-terminal (&optional arg)
6624 "Offer to save each buffer, then kill the current connection. 6629 "Offer to save each buffer, then kill the current connection.
diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog
index 7bf4a6e01d6..76683310b3e 100644
--- a/lisp/gnus/ChangeLog
+++ b/lisp/gnus/ChangeLog
@@ -1,3 +1,30 @@
12015-01-30 Glenn Morris <rgm@gnu.org>
2
3 * gnus-registry.el (gnus-registry-max-pruned-entries)
4 (gnus-registry-prune-factor, gnus-registry-default-sort-function):
5 Fix :version.
6 (gnus-registry-default-sort-function): Improve :type.
7
82015-01-29 Lars Ingebrigtsen <larsi@gnus.org>
9
10 * nnimap.el (nnimap-request-group): Allow running this function on
11 groups that don't exist in Gnus yet.
12 (nnimap-request-group): Revert previous patch since that made it
13 impossible to enter nnimap groups.
14
15 * message.el (message-smtpmail-send-it): Remove the mail header
16 separator before sending.
17
182015-01-28 Elias Oltmanns <eo@nebensachen.de>
19
20 * nnimap.el (nnimap-find-expired-articles): Fix handling of
21 (expiry-wait . never).
22
232015-01-28 Lars Ingebrigtsen <larsi@gnus.org>
24
25 * nnimap.el (nnimap-request-group): Clear the buffer before returning
26 the data.
27
12015-01-27 Lars Ingebrigtsen <larsi@gnus.org> 282015-01-27 Lars Ingebrigtsen <larsi@gnus.org>
2 29
3 * nnir.el (nnir-imap-expr-to-imap): Check for literal+ capability in 30 * nnir.el (nnir-imap-expr-to-imap): Check for literal+ capability in
diff --git a/lisp/gnus/gnus-registry.el b/lisp/gnus/gnus-registry.el
index 9cfca1290c5..2017ea2f826 100644
--- a/lisp/gnus/gnus-registry.el
+++ b/lisp/gnus/gnus-registry.el
@@ -176,7 +176,8 @@ nnmairix groups are specifically excluded because they are ephemeral."
176(make-obsolete-variable 'gnus-registry-max-track-groups nil "23.4") 176(make-obsolete-variable 'gnus-registry-max-track-groups nil "23.4")
177(make-obsolete-variable 'gnus-registry-entry-caching nil "23.4") 177(make-obsolete-variable 'gnus-registry-entry-caching nil "23.4")
178(make-obsolete-variable 'gnus-registry-trim-articles-without-groups nil "23.4") 178(make-obsolete-variable 'gnus-registry-trim-articles-without-groups nil "23.4")
179(make-obsolete-variable 'gnus-registry-max-pruned-entries nil "24.4") 179;; FIXME it was simply deleted.
180(make-obsolete-variable 'gnus-registry-max-pruned-entries nil "25.1")
180 181
181(defcustom gnus-registry-track-extra '(subject sender recipient) 182(defcustom gnus-registry-track-extra '(subject sender recipient)
182 "Whether the registry should track extra data about a message. 183 "Whether the registry should track extra data about a message.
@@ -253,21 +254,18 @@ exactly how much less. For example, given a maximum size of
253cut the registry back to \(- 50000 \(* 50000 0.1\)\) -> 45000 254cut the registry back to \(- 50000 \(* 50000 0.1\)\) -> 45000
254entries. The pruning process is constrained by the presence of 255entries. The pruning process is constrained by the presence of
255\"precious\" entries." 256\"precious\" entries."
256 :version "24.4" 257 :version "25.1"
257 :group 'gnus-registry 258 :group 'gnus-registry
258 :type 'float) 259 :type 'float)
259 260
260(defcustom gnus-registry-default-sort-function 261(defcustom gnus-registry-default-sort-function
261 #'gnus-registry-sort-by-creation-time 262 #'gnus-registry-sort-by-creation-time
262 "Sort function to use when pruning the registry. 263 "Sort function to use when pruning the registry.
263 264Entries that sort to the front of the list are pruned first.
264Entries which sort to the front of the list will be pruned
265first.
266
267This can slow pruning down. Set to nil to perform no sorting." 265This can slow pruning down. Set to nil to perform no sorting."
268 :version "24.4" 266 :version "25.1"
269 :group 'gnus-registry 267 :group 'gnus-registry
270 :type 'symbol) 268 :type '(choice (const :tag "No sorting" nil) function))
271 269
272(defun gnus-registry-sort-by-creation-time (l r) 270(defun gnus-registry-sort-by-creation-time (l r)
273 "Sort older entries to front of list." 271 "Sort older entries to front of list."
diff --git a/lisp/gnus/message.el b/lisp/gnus/message.el
index de7e9bab8ec..a06de2a6414 100644
--- a/lisp/gnus/message.el
+++ b/lisp/gnus/message.el
@@ -4906,6 +4906,11 @@ evaluates `message-send-mail-hook' just before sending a message.
4906It is useful if your ISP requires the POP-before-SMTP 4906It is useful if your ISP requires the POP-before-SMTP
4907authentication. See the Gnus manual for details." 4907authentication. See the Gnus manual for details."
4908 (run-hooks 'message-send-mail-hook) 4908 (run-hooks 'message-send-mail-hook)
4909 ;; Change header-delimiter to be what smtpmail expects.
4910 (goto-char (point-min))
4911 (when (re-search-forward
4912 (concat "^" (regexp-quote mail-header-separator) "\n"))
4913 (replace-match "\n"))
4909 (smtpmail-send-it)) 4914 (smtpmail-send-it))
4910 4915
4911(defun message-send-mail-with-mailclient () 4916(defun message-send-mail-with-mailclient ()
diff --git a/lisp/gnus/mm-decode.el b/lisp/gnus/mm-decode.el
index f03b9c9b484..311ea7cffff 100644
--- a/lisp/gnus/mm-decode.el
+++ b/lisp/gnus/mm-decode.el
@@ -889,7 +889,7 @@ external if displayed external."
889 (when (and (boundp 'gnus-summary-buffer) 889 (when (and (boundp 'gnus-summary-buffer)
890 (bufferp gnus-summary-buffer) 890 (bufferp gnus-summary-buffer)
891 (buffer-name gnus-summary-buffer)) 891 (buffer-name gnus-summary-buffer))
892 ;; So that we pop back to the right place, sortof. 892 ;; So that we pop back to the right place, sort of.
893 (switch-to-buffer gnus-summary-buffer) 893 (switch-to-buffer gnus-summary-buffer)
894 (switch-to-buffer mm)) 894 (switch-to-buffer mm))
895 (delete-other-windows) 895 (delete-other-windows)
diff --git a/lisp/gnus/nnimap.el b/lisp/gnus/nnimap.el
index 8e81abcf9c0..e619c0f13c2 100644
--- a/lisp/gnus/nnimap.el
+++ b/lisp/gnus/nnimap.el
@@ -812,6 +812,7 @@ textual parts.")
812 (nnimap-finish-retrieve-group-infos server (list info) sequences 812 (nnimap-finish-retrieve-group-infos server (list info) sequences
813 t) 813 t)
814 (setq active (nth 2 (assoc group nnimap-current-infos))))) 814 (setq active (nth 2 (assoc group nnimap-current-infos)))))
815 (erase-buffer)
815 (insert (format "211 %d %d %d %S\n" 816 (insert (format "211 %d %d %d %S\n"
816 (- (cdr active) (car active)) 817 (- (cdr active) (car active))
817 (car active) 818 (car active)
@@ -1020,20 +1021,20 @@ textual parts.")
1020 1021
1021(defun nnimap-find-expired-articles (group) 1022(defun nnimap-find-expired-articles (group)
1022 (let ((cutoff (nnmail-expired-article-p group nil nil))) 1023 (let ((cutoff (nnmail-expired-article-p group nil nil)))
1023 (with-current-buffer (nnimap-buffer) 1024 (when cutoff
1024 (let ((result 1025 (with-current-buffer (nnimap-buffer)
1025 (nnimap-command 1026 (let ((result
1026 "UID SEARCH SENTBEFORE %s" 1027 (nnimap-command
1027 (format-time-string 1028 "UID SEARCH SENTBEFORE %s"
1028 (format "%%d-%s-%%Y" 1029 (format-time-string
1029 (upcase 1030 (format "%%d-%s-%%Y"
1030 (car (rassoc (nth 4 (decode-time cutoff)) 1031 (upcase
1031 parse-time-months)))) 1032 (car (rassoc (nth 4 (decode-time cutoff))
1032 cutoff)))) 1033 parse-time-months))))
1033 (and (car result) 1034 cutoff))))
1034 (delete 0 (mapcar #'string-to-number 1035 (and (car result)
1035 (cdr (assoc "SEARCH" (cdr result)))))))))) 1036 (delete 0 (mapcar #'string-to-number
1036 1037 (cdr (assoc "SEARCH" (cdr result)))))))))))
1037 1038
1038(defun nnimap-find-article-by-message-id (group server message-id 1039(defun nnimap-find-article-by-message-id (group server message-id
1039 &optional limit) 1040 &optional limit)
diff --git a/lisp/loadup.el b/lisp/loadup.el
index 96641c8a268..003b0db4abd 100644
--- a/lisp/loadup.el
+++ b/lisp/loadup.el
@@ -145,7 +145,8 @@
145 (file-error (load "ldefs-boot.el"))) 145 (file-error (load "ldefs-boot.el")))
146 146
147(load "emacs-lisp/nadvice") 147(load "emacs-lisp/nadvice")
148(load "minibuffer") 148(load "emacs-lisp/cl-preloaded")
149(load "minibuffer") ;After loaddefs, for define-minor-mode.
149(load "abbrev") ;lisp-mode.el and simple.el use define-abbrev-table. 150(load "abbrev") ;lisp-mode.el and simple.el use define-abbrev-table.
150(load "simple") 151(load "simple")
151 152
diff --git a/lisp/net/net-utils.el b/lisp/net/net-utils.el
index 28aa43117da..ebcbc714ffb 100644
--- a/lisp/net/net-utils.el
+++ b/lisp/net/net-utils.el
@@ -328,7 +328,15 @@ This variable is only used if the variable
328 328
329(defun net-utils-run-program (name header program args) 329(defun net-utils-run-program (name header program args)
330 "Run a network information program." 330 "Run a network information program."
331 (let ((buf (get-buffer-create (concat "*" name "*")))) 331 (let ((buf (get-buffer-create (concat "*" name "*")))
332 (coding-system-for-read
333 ;; MS-Windows versions of network utilities output text
334 ;; encoded in the console (a.k.a. "OEM") codepage, which is
335 ;; different from the default system (a.k.a. "ANSI")
336 ;; codepage.
337 (if (eq system-type 'windows-nt)
338 (intern (format "cp%d" (w32-get-console-output-codepage)))
339 coding-system-for-read)))
332 (set-buffer buf) 340 (set-buffer buf)
333 (erase-buffer) 341 (erase-buffer)
334 (insert header "\n") 342 (insert header "\n")
@@ -352,7 +360,15 @@ This variable is only used if the variable
352 (when proc 360 (when proc
353 (set-process-filter proc nil) 361 (set-process-filter proc nil)
354 (delete-process proc))) 362 (delete-process proc)))
355 (let ((inhibit-read-only t)) 363 (let ((inhibit-read-only t)
364 (coding-system-for-read
365 ;; MS-Windows versions of network utilities output text
366 ;; encoded in the console (a.k.a. "OEM") codepage, which is
367 ;; different from the default system (a.k.a. "ANSI")
368 ;; codepage.
369 (if (eq system-type 'windows-nt)
370 (intern (format "cp%d" (w32-get-console-output-codepage)))
371 coding-system-for-read)))
356 (erase-buffer)) 372 (erase-buffer))
357 (net-utils-mode) 373 (net-utils-mode)
358 (setq-local net-utils--revert-cmd 374 (setq-local net-utils--revert-cmd
diff --git a/lisp/net/shr.el b/lisp/net/shr.el
index a0c9eba4144..59c277b01c2 100644
--- a/lisp/net/shr.el
+++ b/lisp/net/shr.el
@@ -1628,6 +1628,8 @@ The preference is a float determined from `shr-prefer-media-type'."
1628 (let ((trs nil) 1628 (let ((trs nil)
1629 (shr-inhibit-decoration (not fill)) 1629 (shr-inhibit-decoration (not fill))
1630 (rowspans (make-vector (length widths) 0)) 1630 (rowspans (make-vector (length widths) 0))
1631 (colspan-remaining 0)
1632 colspan-width colspan-count
1631 width colspan) 1633 width colspan)
1632 (dolist (row (dom-non-text-children dom)) 1634 (dolist (row (dom-non-text-children dom))
1633 (when (eq (dom-tag row) 'tr) 1635 (when (eq (dom-tag row) 'tr)
@@ -1659,24 +1661,39 @@ The preference is a float determined from `shr-prefer-media-type'."
1659 (if column 1661 (if column
1660 (aref widths width-column) 1662 (aref widths width-column)
1661 10)) 1663 10))
1662 (when (and fill 1664 (when (setq colspan (dom-attr column 'colspan))
1663 (setq colspan (dom-attr column 'colspan)))
1664 (setq colspan (min (string-to-number colspan) 1665 (setq colspan (min (string-to-number colspan)
1665 ;; The colspan may be wrong, so 1666 ;; The colspan may be wrong, so
1666 ;; truncate it to the length of the 1667 ;; truncate it to the length of the
1667 ;; remaining columns. 1668 ;; remaining columns.
1668 (- (length widths) i))) 1669 (- (length widths) i)))
1669 (dotimes (j (1- colspan)) 1670 (dotimes (j (1- colspan))
1670 (if (> (+ i 1 j) (1- (length widths))) 1671 (setq width
1671 (setq width (aref widths (1- (length widths)))) 1672 (if (> (+ i 1 j) (1- (length widths)))
1672 (setq width (+ width 1673 ;; If we have a colspan spec that's longer
1673 shr-table-separator-length 1674 ;; than the table is wide, just use the last
1674 (aref widths (+ i 1 j)))))) 1675 ;; width as the width.
1675 (setq width-column (+ width-column (1- colspan)))) 1676 (aref widths (1- (length widths)))
1677 ;; Sum up the widths of the columns we're
1678 ;; spanning.
1679 (+ width
1680 shr-table-separator-length
1681 (aref widths (+ i 1 j))))))
1682 (setq width-column (+ width-column (1- colspan))
1683 colspan-count colspan
1684 colspan-remaining colspan))
1676 (when (or column 1685 (when (or column
1677 (not fill)) 1686 (not fill))
1678 (push (shr-render-td column width fill) 1687 (let ((data (shr-render-td column width fill)))
1679 tds)) 1688 (if (and (not fill)
1689 (> colspan-remaining 0))
1690 (progn
1691 (when (= colspan-count colspan-remaining)
1692 (setq colspan-width data))
1693 (let ((this-width (/ colspan-width colspan-count)))
1694 (push this-width tds)
1695 (setq colspan-remaining (1- colspan-remaining))))
1696 (push data tds))))
1680 (setq i (1+ i) 1697 (setq i (1+ i)
1681 width-column (1+ width-column)))) 1698 width-column (1+ width-column))))
1682 (push (nreverse tds) trs)))) 1699 (push (nreverse tds) trs))))
diff --git a/lisp/net/tramp.el b/lisp/net/tramp.el
index d44c8ea2f6d..ba0d13eab8b 100644
--- a/lisp/net/tramp.el
+++ b/lisp/net/tramp.el
@@ -64,7 +64,6 @@
64(defvar bkup-backup-directory-info) 64(defvar bkup-backup-directory-info)
65(defvar directory-sep-char) 65(defvar directory-sep-char)
66(defvar eshell-path-env) 66(defvar eshell-path-env)
67(defvar file-notify-descriptors)
68(defvar ls-lisp-use-insert-directory-program) 67(defvar ls-lisp-use-insert-directory-program)
69(defvar outline-regexp) 68(defvar outline-regexp)
70 69
@@ -3415,7 +3414,7 @@ of."
3415(defun tramp-handle-file-notify-rm-watch (proc) 3414(defun tramp-handle-file-notify-rm-watch (proc)
3416 "Like `file-notify-rm-watch' for Tramp files." 3415 "Like `file-notify-rm-watch' for Tramp files."
3417 ;; The descriptor must be a process object. 3416 ;; The descriptor must be a process object.
3418 (unless (and (processp proc) (gethash proc file-notify-descriptors)) 3417 (unless (processp proc)
3419 (tramp-error proc 'file-notify-error "Not a valid descriptor %S" proc)) 3418 (tramp-error proc 'file-notify-error "Not a valid descriptor %S" proc))
3420 (tramp-message proc 6 "Kill %S" proc) 3419 (tramp-message proc 6 "Kill %S" proc)
3421 (kill-process proc)) 3420 (kill-process proc))
diff --git a/lisp/outline.el b/lisp/outline.el
index 11d71fb1226..ae31b8088f0 100644
--- a/lisp/outline.el
+++ b/lisp/outline.el
@@ -35,9 +35,6 @@
35 35
36;;; Code: 36;;; Code:
37 37
38(defvar font-lock-warning-face)
39
40
41(defgroup outlines nil 38(defgroup outlines nil
42 "Support for hierarchical outlining." 39 "Support for hierarchical outlining."
43 :prefix "outline-" 40 :prefix "outline-"
@@ -65,73 +62,66 @@ in the file it applies to.")
65 (define-key map "@" 'outline-mark-subtree) 62 (define-key map "@" 'outline-mark-subtree)
66 (define-key map "\C-n" 'outline-next-visible-heading) 63 (define-key map "\C-n" 'outline-next-visible-heading)
67 (define-key map "\C-p" 'outline-previous-visible-heading) 64 (define-key map "\C-p" 'outline-previous-visible-heading)
68 (define-key map "\C-i" 'show-children) 65 (define-key map "\C-i" 'outline-show-children)
69 (define-key map "\C-s" 'show-subtree) 66 (define-key map "\C-s" 'outline-show-subtree)
70 (define-key map "\C-d" 'hide-subtree) 67 (define-key map "\C-d" 'outline-hide-subtree)
71 (define-key map "\C-u" 'outline-up-heading) 68 (define-key map "\C-u" 'outline-up-heading)
72 (define-key map "\C-f" 'outline-forward-same-level) 69 (define-key map "\C-f" 'outline-forward-same-level)
73 (define-key map "\C-b" 'outline-backward-same-level) 70 (define-key map "\C-b" 'outline-backward-same-level)
74 (define-key map "\C-t" 'hide-body) 71 (define-key map "\C-t" 'outline-hide-body)
75 (define-key map "\C-a" 'show-all) 72 (define-key map "\C-a" 'outline-show-all)
76 (define-key map "\C-c" 'hide-entry) 73 (define-key map "\C-c" 'outline-hide-entry)
77 (define-key map "\C-e" 'show-entry) 74 (define-key map "\C-e" 'outline-show-entry)
78 (define-key map "\C-l" 'hide-leaves) 75 (define-key map "\C-l" 'outline-hide-leaves)
79 (define-key map "\C-k" 'show-branches) 76 (define-key map "\C-k" 'outline-show-branches)
80 (define-key map "\C-q" 'hide-sublevels) 77 (define-key map "\C-q" 'outline-hide-sublevels)
81 (define-key map "\C-o" 'hide-other) 78 (define-key map "\C-o" 'outline-hide-other)
82 (define-key map "\C-^" 'outline-move-subtree-up) 79 (define-key map "\C-^" 'outline-move-subtree-up)
83 (define-key map "\C-v" 'outline-move-subtree-down) 80 (define-key map "\C-v" 'outline-move-subtree-down)
84 (define-key map [(control ?<)] 'outline-promote) 81 (define-key map [(control ?<)] 'outline-promote)
85 (define-key map [(control ?>)] 'outline-demote) 82 (define-key map [(control ?>)] 'outline-demote)
86 (define-key map "\C-m" 'outline-insert-heading) 83 (define-key map "\C-m" 'outline-insert-heading)
87 ;; Where to bind outline-cycle ?
88 map)) 84 map))
89 85
90(defvar outline-mode-menu-bar-map 86(defvar outline-mode-menu-bar-map
91 (let ((map (make-sparse-keymap))) 87 (let ((map (make-sparse-keymap)))
92
93 (define-key map [hide] (cons "Hide" (make-sparse-keymap "Hide"))) 88 (define-key map [hide] (cons "Hide" (make-sparse-keymap "Hide")))
94 89 (define-key map [hide outline-hide-other]
95 (define-key map [hide hide-other] 90 '(menu-item "Hide Other" outline-hide-other
96 '(menu-item "Hide Other" hide-other
97 :help "Hide everything except current body and parent and top-level headings")) 91 :help "Hide everything except current body and parent and top-level headings"))
98 (define-key map [hide hide-sublevels] 92 (define-key map [hide outline-hide-sublevels]
99 '(menu-item "Hide Sublevels" hide-sublevels 93 '(menu-item "Hide Sublevels" outline-hide-sublevels
100 :help "Hide everything but the top LEVELS levels of headers, in whole buffer")) 94 :help "Hide everything but the top LEVELS levels of headers, in whole buffer"))
101 (define-key map [hide hide-subtree] 95 (define-key map [hide outline-hide-subtree]
102 '(menu-item "Hide Subtree" hide-subtree 96 '(menu-item "Hide Subtree" outline-hide-subtree
103 :help "Hide everything after this heading at deeper levels")) 97 :help "Hide everything after this heading at deeper levels"))
104 (define-key map [hide hide-entry] 98 (define-key map [hide outline-hide-entry]
105 '(menu-item "Hide Entry" hide-entry 99 '(menu-item "Hide Entry" outline-hide-entry
106 :help "Hide the body directly following this heading")) 100 :help "Hide the body directly following this heading"))
107 (define-key map [hide hide-body] 101 (define-key map [hide outline-hide-body]
108 '(menu-item "Hide Body" hide-body 102 '(menu-item "Hide Body" outline-hide-body
109 :help "Hide all body lines in buffer, leaving all headings visible")) 103 :help "Hide all body lines in buffer, leaving all headings visible"))
110 (define-key map [hide hide-leaves] 104 (define-key map [hide outline-hide-leaves]
111 '(menu-item "Hide Leaves" hide-leaves 105 '(menu-item "Hide Leaves" outline-hide-leaves
112 :help "Hide the body after this heading and at deeper levels")) 106 :help "Hide the body after this heading and at deeper levels"))
113
114 (define-key map [show] (cons "Show" (make-sparse-keymap "Show"))) 107 (define-key map [show] (cons "Show" (make-sparse-keymap "Show")))
115 108 (define-key map [show outline-show-subtree]
116 (define-key map [show show-subtree] 109 '(menu-item "Show Subtree" outline-show-subtree
117 '(menu-item "Show Subtree" show-subtree
118 :help "Show everything after this heading at deeper levels")) 110 :help "Show everything after this heading at deeper levels"))
119 (define-key map [show show-children] 111 (define-key map [show outline-show-children]
120 '(menu-item "Show Children" show-children 112 '(menu-item "Show Children" outline-show-children
121 :help "Show all direct subheadings of this heading")) 113 :help "Show all direct subheadings of this heading"))
122 (define-key map [show show-branches] 114 (define-key map [show outline-show-branches]
123 '(menu-item "Show Branches" show-branches 115 '(menu-item "Show Branches" outline-show-branches
124 :help "Show all subheadings of this heading, but not their bodies")) 116 :help "Show all subheadings of this heading, but not their bodies"))
125 (define-key map [show show-entry] 117 (define-key map [show outline-show-entry]
126 '(menu-item "Show Entry" show-entry 118 '(menu-item "Show Entry" outline-show-entry
127 :help "Show the body directly following this heading")) 119 :help "Show the body directly following this heading"))
128 (define-key map [show show-all] 120 (define-key map [show outline-show-all]
129 '(menu-item "Show All" show-all 121 '(menu-item "Show All" outline-show-all
130 :help "Show all of the text in the buffer")) 122 :help "Show all of the text in the buffer"))
131
132 (define-key map [headings] 123 (define-key map [headings]
133 (cons "Headings" (make-sparse-keymap "Headings"))) 124 (cons "Headings" (make-sparse-keymap "Headings")))
134
135 (define-key map [headings demote-subtree] 125 (define-key map [headings demote-subtree]
136 '(menu-item "Demote Subtree" outline-demote 126 '(menu-item "Demote Subtree" outline-demote
137 :help "Demote headings lower down the tree")) 127 :help "Demote headings lower down the tree"))
@@ -152,23 +142,18 @@ in the file it applies to.")
152 '(menu-item "New Heading" outline-insert-heading 142 '(menu-item "New Heading" outline-insert-heading
153 :help "Insert a new heading at same depth at point")) 143 :help "Insert a new heading at same depth at point"))
154 (define-key map [headings outline-backward-same-level] 144 (define-key map [headings outline-backward-same-level]
155
156 '(menu-item "Previous Same Level" outline-backward-same-level 145 '(menu-item "Previous Same Level" outline-backward-same-level
157 :help "Move backward to the arg'th subheading at same level as this one.")) 146 :help "Move backward to the arg'th subheading at same level as this one."))
158 (define-key map [headings outline-forward-same-level] 147 (define-key map [headings outline-forward-same-level]
159
160 '(menu-item "Next Same Level" outline-forward-same-level 148 '(menu-item "Next Same Level" outline-forward-same-level
161 :help "Move forward to the arg'th subheading at same level as this one")) 149 :help "Move forward to the arg'th subheading at same level as this one"))
162 (define-key map [headings outline-previous-visible-heading] 150 (define-key map [headings outline-previous-visible-heading]
163
164 '(menu-item "Previous" outline-previous-visible-heading 151 '(menu-item "Previous" outline-previous-visible-heading
165 :help "Move to the previous heading line")) 152 :help "Move to the previous heading line"))
166 (define-key map [headings outline-next-visible-heading] 153 (define-key map [headings outline-next-visible-heading]
167
168 '(menu-item "Next" outline-next-visible-heading 154 '(menu-item "Next" outline-next-visible-heading
169 :help "Move to the next visible heading line")) 155 :help "Move to the next visible heading line"))
170 (define-key map [headings outline-up-heading] 156 (define-key map [headings outline-up-heading]
171
172 '(menu-item "Up" outline-up-heading 157 '(menu-item "Up" outline-up-heading
173 :help "Move to the visible heading line of which the present line is a subheading")) 158 :help "Move to the visible heading line of which the present line is a subheading"))
174 map)) 159 map))
@@ -190,7 +175,6 @@ in the file it applies to.")
190 outline-mode-menu-bar-map)))))) 175 outline-mode-menu-bar-map))))))
191 map)) 176 map))
192 177
193
194(defvar outline-mode-map 178(defvar outline-mode-map
195 (let ((map (make-sparse-keymap))) 179 (let ((map (make-sparse-keymap)))
196 (define-key map "\C-c" outline-mode-prefix-map) 180 (define-key map "\C-c" outline-mode-prefix-map)
@@ -198,7 +182,7 @@ in the file it applies to.")
198 map)) 182 map))
199 183
200(defvar outline-font-lock-keywords 184(defvar outline-font-lock-keywords
201 '(;; 185 '(
202 ;; Highlight headings according to the level. 186 ;; Highlight headings according to the level.
203 (eval . (list (concat "^\\(?:" outline-regexp "\\).+") 187 (eval . (list (concat "^\\(?:" outline-regexp "\\).+")
204 0 '(outline-font-lock-face) nil t))) 188 0 '(outline-font-lock-face) nil t)))
@@ -248,33 +232,14 @@ in the file it applies to.")
248 [outline-1 outline-2 outline-3 outline-4 232 [outline-1 outline-2 outline-3 outline-4
249 outline-5 outline-6 outline-7 outline-8]) 233 outline-5 outline-6 outline-7 outline-8])
250 234
251;; (defvar outline-font-lock-levels nil)
252;; (make-variable-buffer-local 'outline-font-lock-levels)
253
254(defun outline-font-lock-face () 235(defun outline-font-lock-face ()
255 ;; (save-excursion 236 "Return one of `outline-font-lock-faces' for current level."
256 ;; (outline-back-to-heading t)
257 ;; (let* ((count 0)
258 ;; (start-level (funcall outline-level))
259 ;; (level start-level)
260 ;; face-level)
261 ;; (while (not (setq face-level
262 ;; (if (or (bobp) (eq level 1)) 0
263 ;; (cdr (assq level outline-font-lock-levels)))))
264 ;; (outline-up-heading 1 t)
265 ;; (setq count (1+ count))
266 ;; (setq level (funcall outline-level)))
267 ;; ;; Remember for later.
268 ;; (unless (zerop count)
269 ;; (setq face-level (+ face-level count))
270 ;; (push (cons start-level face-level) outline-font-lock-levels))
271 ;; (condition-case nil
272 ;; (aref outline-font-lock-faces face-level)
273 ;; (error font-lock-warning-face))))
274 (save-excursion 237 (save-excursion
275 (goto-char (match-beginning 0)) 238 (goto-char (match-beginning 0))
276 (looking-at outline-regexp) 239 (looking-at outline-regexp)
277 (aref outline-font-lock-faces (% (1- (funcall outline-level)) (length outline-font-lock-faces))))) 240 (aref outline-font-lock-faces
241 (% (1- (funcall outline-level))
242 (length outline-font-lock-faces)))))
278 243
279(defvar outline-view-change-hook nil 244(defvar outline-view-change-hook nil
280 "Normal hook to be run after outline visibility changes.") 245 "Normal hook to be run after outline visibility changes.")
@@ -296,29 +261,11 @@ invisible, or visible again. Invisible lines are attached to the end
296of the heading, so they move with it, if the line is killed and yanked 261of the heading, so they move with it, if the line is killed and yanked
297back. A heading with text hidden under it is marked with an ellipsis (...). 262back. A heading with text hidden under it is marked with an ellipsis (...).
298 263
299Commands:\\<outline-mode-map> 264\\{outline-mode-map}
300\\[outline-next-visible-heading] outline-next-visible-heading move by visible headings 265The commands `outline-hide-subtree', `outline-show-subtree',
301\\[outline-previous-visible-heading] outline-previous-visible-heading 266`outline-show-children', `outline-hide-entry',
302\\[outline-forward-same-level] outline-forward-same-level similar but skip subheadings 267`outline-show-entry', `outline-hide-leaves', and `outline-show-branches'
303\\[outline-backward-same-level] outline-backward-same-level 268are used when point is on a heading line.
304\\[outline-up-heading] outline-up-heading move from subheading to heading
305
306\\[hide-body] make all text invisible (not headings).
307\\[show-all] make everything in buffer visible.
308\\[hide-sublevels] make only the first N levels of headers visible.
309
310The remaining commands are used when point is on a heading line.
311They apply to some of the body or subheadings of that heading.
312\\[hide-subtree] hide-subtree make body and subheadings invisible.
313\\[show-subtree] show-subtree make body and subheadings visible.
314\\[show-children] show-children make direct subheadings visible.
315 No effect on body, or subheadings 2 or more levels down.
316 With arg N, affects subheadings N levels down.
317\\[hide-entry] make immediately following body invisible.
318\\[show-entry] make it visible.
319\\[hide-leaves] make body under heading and under its subheadings invisible.
320 The subheadings remain visible.
321\\[show-branches] make all subheadings at all levels visible.
322 269
323The variable `outline-regexp' can be changed to control what is a heading. 270The variable `outline-regexp' can be changed to control what is a heading.
324A line is a heading if `outline-regexp' matches something at the 271A line is a heading if `outline-regexp' matches something at the
@@ -340,7 +287,7 @@ Turning on outline mode calls the value of `text-mode-hook' and then of
340 '(outline-font-lock-keywords t nil nil backward-paragraph)) 287 '(outline-font-lock-keywords t nil nil backward-paragraph))
341 (setq imenu-generic-expression 288 (setq imenu-generic-expression
342 (list (list nil (concat "^\\(?:" outline-regexp "\\).*$") 0))) 289 (list (list nil (concat "^\\(?:" outline-regexp "\\).*$") 0)))
343 (add-hook 'change-major-mode-hook 'show-all nil t)) 290 (add-hook 'change-major-mode-hook 'outline-show-all nil t))
344 291
345(defcustom outline-minor-mode-prefix "\C-c@" 292(defcustom outline-minor-mode-prefix "\C-c@"
346 "Prefix key to use for Outline commands in Outline minor mode. 293 "Prefix key to use for Outline commands in Outline minor mode.
@@ -373,7 +320,7 @@ See the command `outline-mode' for more information on this mode."
373 ;; Cause use of ellipses for invisible text. 320 ;; Cause use of ellipses for invisible text.
374 (remove-from-invisibility-spec '(outline . t)) 321 (remove-from-invisibility-spec '(outline . t))
375 ;; When turning off outline mode, get rid of any outline hiding. 322 ;; When turning off outline mode, get rid of any outline hiding.
376 (show-all))) 323 (outline-show-all)))
377 324
378(defvar outline-level 'outline-level 325(defvar outline-level 'outline-level
379 "Function of no args to compute a header's nesting level in an outline. 326 "Function of no args to compute a header's nesting level in an outline.
@@ -441,7 +388,8 @@ at the end of the buffer."
441 nil 'move)) 388 nil 'move))
442 389
443(defsubst outline-invisible-p (&optional pos) 390(defsubst outline-invisible-p (&optional pos)
444 "Non-nil if the character after point is invisible." 391 "Non-nil if the character after POS is invisible.
392If POS is nil, use `point' instead."
445 (get-char-property (or pos (point)) 'invisible)) 393 (get-char-property (or pos (point)) 'invisible))
446 394
447(defun outline-back-to-heading (&optional invisible-ok) 395(defun outline-back-to-heading (&optional invisible-ok)
@@ -454,7 +402,7 @@ Only visible heading lines are considered, unless INVISIBLE-OK is non-nil."
454 (while (not found) 402 (while (not found)
455 (or (re-search-backward (concat "^\\(?:" outline-regexp "\\)") 403 (or (re-search-backward (concat "^\\(?:" outline-regexp "\\)")
456 nil t) 404 nil t)
457 (error "before first heading")) 405 (error "Before first heading"))
458 (setq found (and (or invisible-ok (not (outline-invisible-p))) 406 (setq found (and (or invisible-ok (not (outline-invisible-p)))
459 (point))))) 407 (point)))))
460 (goto-char found) 408 (goto-char found)
@@ -489,6 +437,9 @@ If INVISIBLE-OK is non-nil, an invisible heading line is ok too."
489 (run-hooks 'outline-insert-heading-hook))) 437 (run-hooks 'outline-insert-heading-hook)))
490 438
491(defun outline-invent-heading (head up) 439(defun outline-invent-heading (head up)
440 "Create a heading by using heading HEAD as a template.
441When UP is non-nil, the created heading will be one level above.
442Otherwise, it will be one level below."
492 (save-match-data 443 (save-match-data
493 ;; Let's try to invent one by repeating or deleting the last char. 444 ;; Let's try to invent one by repeating or deleting the last char.
494 (let ((new-head (if up (substring head 0 -1) 445 (let ((new-head (if up (substring head 0 -1)
@@ -504,7 +455,7 @@ If INVISIBLE-OK is non-nil, an invisible heading line is ok too."
504 455
505(defun outline-promote (&optional which) 456(defun outline-promote (&optional which)
506 "Promote headings higher up the tree. 457 "Promote headings higher up the tree.
507If transient-mark-mode is on, and mark is active, promote headings in 458If `transient-mark-mode' is on, and mark is active, promote headings in
508the region (from a Lisp program, pass `region' for WHICH). Otherwise: 459the region (from a Lisp program, pass `region' for WHICH). Otherwise:
509without prefix argument, promote current heading and all headings in the 460without prefix argument, promote current heading and all headings in the
510subtree (from a Lisp program, pass `subtree' for WHICH); with prefix 461subtree (from a Lisp program, pass `subtree' for WHICH); with prefix
@@ -543,7 +494,7 @@ nil for WHICH, or do not pass any argument)."
543 494
544(defun outline-demote (&optional which) 495(defun outline-demote (&optional which)
545 "Demote headings lower down the tree. 496 "Demote headings lower down the tree.
546If transient-mark-mode is on, and mark is active, demote headings in 497If `transient-mark-mode' is on, and mark is active, demote headings in
547the region (from a Lisp program, pass `region' for WHICH). Otherwise: 498the region (from a Lisp program, pass `region' for WHICH). Otherwise:
548without prefix argument, demote current heading and all headings in the 499without prefix argument, demote current heading and all headings in the
549subtree (from a Lisp program, pass `subtree' for WHICH); with prefix 500subtree (from a Lisp program, pass `subtree' for WHICH); with prefix
@@ -585,7 +536,7 @@ nil for WHICH, or do not pass any argument)."
585 (replace-match down-head nil t))))) 536 (replace-match down-head nil t)))))
586 537
587(defun outline-head-from-level (level head &optional alist) 538(defun outline-head-from-level (level head &optional alist)
588 "Get new heading with level LEVEL from ALIST. 539 "Get new heading with level LEVEL, closest to HEAD, from ALIST.
589If there are no such entries, return nil. 540If there are no such entries, return nil.
590ALIST defaults to `outline-heading-alist'. 541ALIST defaults to `outline-heading-alist'.
591Similar to (car (rassoc LEVEL ALIST)). 542Similar to (car (rassoc LEVEL ALIST)).
@@ -677,16 +628,17 @@ the match data is set appropriately."
677 (move-marker ins-point (point)) 628 (move-marker ins-point (point))
678 (insert (delete-and-extract-region beg end)) 629 (insert (delete-and-extract-region beg end))
679 (goto-char ins-point) 630 (goto-char ins-point)
680 (if folded (hide-subtree)) 631 (if folded (outline-hide-subtree))
681 (move-marker ins-point nil))) 632 (move-marker ins-point nil)))
682 633
683(defun outline-end-of-heading () 634(defun outline-end-of-heading ()
635 "Move to one char before the next `outline-heading-end-regexp'."
684 (if (re-search-forward outline-heading-end-regexp nil 'move) 636 (if (re-search-forward outline-heading-end-regexp nil 'move)
685 (forward-char -1))) 637 (forward-char -1)))
686 638
687(defun outline-next-visible-heading (arg) 639(defun outline-next-visible-heading (arg)
688 "Move to the next visible heading line. 640 "Move to the next visible heading line.
689With argument, repeats or can move backward if negative. 641With ARG, repeats or can move backward if negative.
690A heading line is one that starts with a `*' (or that 642A heading line is one that starts with a `*' (or that
691`outline-regexp' matches)." 643`outline-regexp' matches)."
692 (interactive "p") 644 (interactive "p")
@@ -714,7 +666,7 @@ A heading line is one that starts with a `*' (or that
714 666
715(defun outline-previous-visible-heading (arg) 667(defun outline-previous-visible-heading (arg)
716 "Move to the previous heading line. 668 "Move to the previous heading line.
717With argument, repeats or can move forward if negative. 669With ARG, repeats or can move forward if negative.
718A heading line is one that starts with a `*' (or that 670A heading line is one that starts with a `*' (or that
719`outline-regexp' matches)." 671`outline-regexp' matches)."
720 (interactive "p") 672 (interactive "p")
@@ -739,7 +691,7 @@ This puts point at the start of the current subtree, and mark at the end."
739(defvar outline-isearch-open-invisible-function nil 691(defvar outline-isearch-open-invisible-function nil
740 "Function called if `isearch' finishes in an invisible overlay. 692 "Function called if `isearch' finishes in an invisible overlay.
741The function is called with the overlay as its only argument. 693The function is called with the overlay as its only argument.
742If nil, `show-entry' is called to reveal the invisible text.") 694If nil, `outline-show-entry' is called to reveal the invisible text.")
743 695
744(put 'outline 'reveal-toggle-invisible 'outline-reveal-toggle-invisible) 696(put 'outline 'reveal-toggle-invisible 'outline-reveal-toggle-invisible)
745(defun outline-flag-region (from to flag) 697(defun outline-flag-region (from to flag)
@@ -763,51 +715,51 @@ If FLAG is nil then text is shown, while if FLAG is t the text is hidden."
763 (save-excursion 715 (save-excursion
764 (goto-char (overlay-start o)) 716 (goto-char (overlay-start o))
765 (if hidep 717 (if hidep
766 ;; When hiding the area again, we could just clean it up and let 718 ;; When hiding the area again, we could just clean it up and let
767 ;; reveal do the rest, by simply doing: 719 ;; reveal do the rest, by simply doing:
768 ;; (remove-overlays (overlay-start o) (overlay-end o) 720 ;; (remove-overlays (overlay-start o) (overlay-end o)
769 ;; 'invisible 'outline) 721 ;; 'invisible 'outline)
770 ;; 722 ;;
771 ;; That works fine as long as everything is in sync, but if the 723 ;; That works fine as long as everything is in sync, but if the
772 ;; structure of the document is changed while revealing parts of it, 724 ;; structure of the document is changed while revealing parts of it,
773 ;; the resulting behavior can be ugly. I.e. we need to make 725 ;; the resulting behavior can be ugly. I.e. we need to make
774 ;; sure that we hide exactly a subtree. 726 ;; sure that we hide exactly a subtree.
775 (progn 727 (progn
776 (let ((end (overlay-end o))) 728 (let ((end (overlay-end o)))
777 (delete-overlay o) 729 (delete-overlay o)
778 (while (progn 730 (while (progn
779 (hide-subtree) 731 (outline-hide-subtree)
780 (outline-next-visible-heading 1) 732 (outline-next-visible-heading 1)
781 (and (not (eobp)) (< (point) end)))))) 733 (and (not (eobp)) (< (point) end))))))
782 734
783 ;; When revealing, we just need to reveal sublevels. If point is 735 ;; When revealing, we just need to reveal sublevels. If point is
784 ;; inside one of the sublevels, reveal will call us again. 736 ;; inside one of the sublevels, reveal will call us again.
785 ;; But we need to preserve the original overlay. 737 ;; But we need to preserve the original overlay.
786 (let ((o1 (copy-overlay o))) 738 (let ((o1 (copy-overlay o)))
787 (overlay-put o 'invisible nil) ;Show (most of) the text. 739 (overlay-put o 'invisible nil) ;Show (most of) the text.
788 (while (progn 740 (while (progn
789 (show-entry) 741 (outline-show-entry)
790 (show-children) 742 (outline-show-children)
791 ;; Normally just the above is needed. 743 ;; Normally just the above is needed.
792 ;; But in odd cases, the above might fail to show anything. 744 ;; But in odd cases, the above might fail to show anything.
793 ;; To avoid an infinite loop, we have to make sure that 745 ;; To avoid an infinite loop, we have to make sure that
794 ;; *something* gets shown. 746 ;; *something* gets shown.
795 (and (equal (overlay-start o) (overlay-start o1)) 747 (and (equal (overlay-start o) (overlay-start o1))
796 (< (point) (overlay-end o)) 748 (< (point) (overlay-end o))
797 (= 0 (forward-line 1))))) 749 (= 0 (forward-line 1)))))
798 ;; If still nothing was shown, just kill the damn thing. 750 ;; If still nothing was shown, just kill the damn thing.
799 (when (equal (overlay-start o) (overlay-start o1)) 751 (when (equal (overlay-start o) (overlay-start o1))
800 ;; I've seen it happen at the end of buffer. 752 ;; I've seen it happen at the end of buffer.
801 (delete-overlay o1)))))) 753 (delete-overlay o1))))))
802 754
803;; Function to be set as an outline-isearch-open-invisible' property 755;; Function to be set as an outline-isearch-open-invisible' property
804;; to the overlay that makes the outline invisible (see 756;; to the overlay that makes the outline invisible (see
805;; `outline-flag-region'). 757;; `outline-flag-region').
806(defun outline-isearch-open-invisible (_overlay) 758(defun outline-isearch-open-invisible (_overlay)
807 ;; We rely on the fact that isearch places point on the matched text. 759 ;; We rely on the fact that isearch places point on the matched text.
808 (show-entry)) 760 (outline-show-entry))
809 761
810(defun hide-entry () 762(defun outline-hide-entry ()
811 "Hide the body directly following this heading." 763 "Hide the body directly following this heading."
812 (interactive) 764 (interactive)
813 (save-excursion 765 (save-excursion
@@ -815,22 +767,31 @@ If FLAG is nil then text is shown, while if FLAG is t the text is hidden."
815 (outline-end-of-heading) 767 (outline-end-of-heading)
816 (outline-flag-region (point) (progn (outline-next-preface) (point)) t))) 768 (outline-flag-region (point) (progn (outline-next-preface) (point)) t)))
817 769
818(defun show-entry () 770(define-obsolete-function-alias
771 'hide-entry 'outline-hide-entry "25.1")
772
773(defun outline-show-entry ()
819 "Show the body directly following this heading. 774 "Show the body directly following this heading.
820Show the heading too, if it is currently invisible." 775Show the heading too, if it is currently invisible."
821 (interactive) 776 (interactive)
822 (save-excursion 777 (save-excursion
823 (outline-back-to-heading t) 778 (outline-back-to-heading t)
824 (outline-flag-region (1- (point)) 779 (outline-flag-region (1- (point))
825 (progn (outline-next-preface) (point)) nil))) 780 (progn (outline-next-preface) (point)) nil)))
781
782(define-obsolete-function-alias
783 'show-entry 'outline-show-entry "25.1")
826 784
827(defun hide-body () 785(defun outline-hide-body ()
828 "Hide all body lines in buffer, leaving all headings visible." 786 "Hide all body lines in buffer, leaving all headings visible."
829 (interactive) 787 (interactive)
830 (hide-region-body (point-min) (point-max))) 788 (outline-hide-region-body (point-min) (point-max)))
831 789
832(defun hide-region-body (start end) 790(define-obsolete-function-alias
833 "Hide all body lines in the region, but not headings." 791 'hide-body 'outline-hide-body "25.1")
792
793(defun outline-hide-region-body (start end)
794 "Hide all body lines between START and END, but not headings."
834 ;; Nullify the hook to avoid repeated calls to `outline-flag-region' 795 ;; Nullify the hook to avoid repeated calls to `outline-flag-region'
835 ;; wasting lots of time running `lazy-lock-fontify-after-outline' 796 ;; wasting lots of time running `lazy-lock-fontify-after-outline'
836 ;; and run the hook finally. 797 ;; and run the hook finally.
@@ -850,30 +811,47 @@ Show the heading too, if it is currently invisible."
850 (outline-end-of-heading)))))) 811 (outline-end-of-heading))))))
851 (run-hooks 'outline-view-change-hook)) 812 (run-hooks 'outline-view-change-hook))
852 813
853(defun show-all () 814(define-obsolete-function-alias
815 'hide-region-body 'outline-hide-region-body "25.1")
816
817(defun outline-show-all ()
854 "Show all of the text in the buffer." 818 "Show all of the text in the buffer."
855 (interactive) 819 (interactive)
856 (outline-flag-region (point-min) (point-max) nil)) 820 (outline-flag-region (point-min) (point-max) nil))
857 821
858(defun hide-subtree () 822(define-obsolete-function-alias
823 'show-all 'outline-show-all "25.1")
824
825(defun outline-hide-subtree ()
859 "Hide everything after this heading at deeper levels." 826 "Hide everything after this heading at deeper levels."
860 (interactive) 827 (interactive)
861 (outline-flag-subtree t)) 828 (outline-flag-subtree t))
862 829
863(defun hide-leaves () 830(define-obsolete-function-alias
831 'hide-subtree 'outline-hide-subtree "25.1")
832
833(defun outline-hide-leaves ()
864 "Hide the body after this heading and at deeper levels." 834 "Hide the body after this heading and at deeper levels."
865 (interactive) 835 (interactive)
866 (save-excursion 836 (save-excursion
867 (outline-back-to-heading) 837 (outline-back-to-heading)
868;; Turned off to fix bug reported by Otto Maddox on 22 Nov 2005. 838 ;; Turned off to fix bug reported by Otto Maddox on 22 Nov 2005.
869;; (outline-end-of-heading) 839 ;; (outline-end-of-heading)
870 (hide-region-body (point) (progn (outline-end-of-subtree) (point))))) 840 (outline-hide-region-body
841 (point)
842 (progn (outline-end-of-subtree) (point)))))
843
844(define-obsolete-function-alias
845 'hide-leaves 'outline-hide-leaves "25.1")
871 846
872(defun show-subtree () 847(defun outline-show-subtree ()
873 "Show everything after this heading at deeper levels." 848 "Show everything after this heading at deeper levels."
874 (interactive) 849 (interactive)
875 (outline-flag-subtree nil)) 850 (outline-flag-subtree nil))
876 851
852(define-obsolete-function-alias
853 'show-subtree 'outline-show-subtree "25.1")
854
877(defun outline-show-heading () 855(defun outline-show-heading ()
878 "Show the current heading and move to its end." 856 "Show the current heading and move to its end."
879 (outline-flag-region (- (point) 857 (outline-flag-region (- (point)
@@ -884,7 +862,7 @@ Show the heading too, if it is currently invisible."
884 (progn (outline-end-of-heading) (point)) 862 (progn (outline-end-of-heading) (point))
885 nil)) 863 nil))
886 864
887(defun hide-sublevels (levels) 865(defun outline-hide-sublevels (levels)
888 "Hide everything but the top LEVELS levels of headers, in whole buffer." 866 "Hide everything but the top LEVELS levels of headers, in whole buffer."
889 (interactive (list 867 (interactive (list
890 (cond 868 (cond
@@ -922,14 +900,17 @@ Show the heading too, if it is currently invisible."
922 (outline-flag-region (1- (point)) (point) nil)))) 900 (outline-flag-region (1- (point)) (point) nil))))
923 (run-hooks 'outline-view-change-hook)) 901 (run-hooks 'outline-view-change-hook))
924 902
925(defun hide-other () 903(define-obsolete-function-alias
904 'hide-sublevels 'outline-hide-sublevels "25.1")
905
906(defun outline-hide-other ()
926 "Hide everything except current body and parent and top-level headings." 907 "Hide everything except current body and parent and top-level headings."
927 (interactive) 908 (interactive)
928 (hide-sublevels 1) 909 (outline-hide-sublevels 1)
929 (let (outline-view-change-hook) 910 (let (outline-view-change-hook)
930 (save-excursion 911 (save-excursion
931 (outline-back-to-heading t) 912 (outline-back-to-heading t)
932 (show-entry) 913 (outline-show-entry)
933 (while (condition-case nil (progn (outline-up-heading 1 t) (not (bobp))) 914 (while (condition-case nil (progn (outline-up-heading 1 t) (not (bobp)))
934 (error nil)) 915 (error nil))
935 (outline-flag-region (1- (point)) 916 (outline-flag-region (1- (point))
@@ -937,17 +918,21 @@ Show the heading too, if it is currently invisible."
937 nil)))) 918 nil))))
938 (run-hooks 'outline-view-change-hook)) 919 (run-hooks 'outline-view-change-hook))
939 920
921(define-obsolete-function-alias
922 'hide-other 'outline-hide-other "25.1")
923
940(defun outline-toggle-children () 924(defun outline-toggle-children ()
941 "Show or hide the current subtree depending on its current state." 925 "Show or hide the current subtree depending on its current state."
942 (interactive) 926 (interactive)
943 (save-excursion 927 (save-excursion
944 (outline-back-to-heading) 928 (outline-back-to-heading)
945 (if (not (outline-invisible-p (line-end-position))) 929 (if (not (outline-invisible-p (line-end-position)))
946 (hide-subtree) 930 (outline-hide-subtree)
947 (show-children) 931 (outline-show-children)
948 (show-entry)))) 932 (outline-show-entry))))
949 933
950(defun outline-flag-subtree (flag) 934(defun outline-flag-subtree (flag)
935 "Assign FLAG to the current subtree."
951 (save-excursion 936 (save-excursion
952 (outline-back-to-heading) 937 (outline-back-to-heading)
953 (outline-end-of-heading) 938 (outline-end-of-heading)
@@ -956,6 +941,7 @@ Show the heading too, if it is currently invisible."
956 flag))) 941 flag)))
957 942
958(defun outline-end-of-subtree () 943(defun outline-end-of-subtree ()
944 "Move to the end of the current subtree."
959 (outline-back-to-heading) 945 (outline-back-to-heading)
960 (let ((first t) 946 (let ((first t)
961 (level (funcall outline-level))) 947 (level (funcall outline-level)))
@@ -972,12 +958,15 @@ Show the heading too, if it is currently invisible."
972 ;; leave blank line before heading 958 ;; leave blank line before heading
973 (forward-char -1)))))) 959 (forward-char -1))))))
974 960
975(defun show-branches () 961(defun outline-show-branches ()
976 "Show all subheadings of this heading, but not their bodies." 962 "Show all subheadings of this heading, but not their bodies."
977 (interactive) 963 (interactive)
978 (show-children 1000)) 964 (outline-show-children 1000))
965
966(define-obsolete-function-alias
967 'show-branches 'outline-show-branches "25.1")
979 968
980(defun show-children (&optional level) 969(defun outline-show-children (&optional level)
981 "Show all direct subheadings of this heading. 970 "Show all direct subheadings of this heading.
982Prefix arg LEVEL is how many levels below the current level should be shown. 971Prefix arg LEVEL is how many levels below the current level should be shown.
983Default is enough to cause the following heading to appear." 972Default is enough to cause the following heading to appear."
@@ -1004,6 +993,9 @@ Default is enough to cause the following heading to appear."
1004 (if (eobp) (point-max) (1+ (point))))))) 993 (if (eobp) (point-max) (1+ (point)))))))
1005 (run-hooks 'outline-view-change-hook)) 994 (run-hooks 'outline-view-change-hook))
1006 995
996(define-obsolete-function-alias
997 'show-children 'outline-show-children "25.1")
998
1007 999
1008 1000
1009(defun outline-up-heading (arg &optional invisible-ok) 1001(defun outline-up-heading (arg &optional invisible-ok)
@@ -1086,7 +1078,7 @@ If there is no such heading, return nil."
1086 (point))))) 1078 (point)))))
1087 1079
1088(defun outline-headers-as-kill (beg end) 1080(defun outline-headers-as-kill (beg end)
1089 "Save the visible outline headers in region at the start of the kill ring. 1081 "Save the visible outline headers between BEG and END to the kill ring.
1090 1082
1091Text shown between the headers isn't copied. Two newlines are 1083Text shown between the headers isn't copied. Two newlines are
1092inserted between saved headers. Yanking the result may be a 1084inserted between saved headers. Yanking the result may be a
diff --git a/lisp/progmodes/python.el b/lisp/progmodes/python.el
index 13ff439bef2..d340550a017 100644
--- a/lisp/progmodes/python.el
+++ b/lisp/progmodes/python.el
@@ -463,9 +463,14 @@ The type returned can be `comment', `string' or `paren'."
463 ((nth 8 ppss) (if (nth 4 ppss) 'comment 'string)) 463 ((nth 8 ppss) (if (nth 4 ppss) 'comment 'string))
464 ((nth 1 ppss) 'paren)))) 464 ((nth 1 ppss) 'paren))))
465 465
466(defsubst python-syntax-comment-or-string-p () 466(defsubst python-syntax-comment-or-string-p (&optional ppss)
467 "Return non-nil if point is inside 'comment or 'string." 467 "Return non-nil if PPSS is inside 'comment or 'string."
468 (nth 8 (syntax-ppss))) 468 (nth 8 (or ppss (syntax-ppss))))
469
470(defsubst python-syntax-closing-paren-p ()
471 "Return non-nil if char after point is a closing paren."
472 (= (syntax-class (syntax-after (point)))
473 (syntax-class (string-to-syntax ")"))))
469 474
470(define-obsolete-function-alias 475(define-obsolete-function-alias
471 'python-info-ppss-context #'python-syntax-context "24.3") 476 'python-info-ppss-context #'python-syntax-context "24.3")
@@ -704,11 +709,28 @@ It makes underscores and dots word constituent chars.")
704 'python-guess-indent 'python-indent-guess-indent-offset "24.3") 709 'python-guess-indent 'python-indent-guess-indent-offset "24.3")
705 710
706(defvar python-indent-current-level 0 711(defvar python-indent-current-level 0
707 "Current indentation level `python-indent-line-function' is using.") 712 "Deprecated var available for compatibility.")
708 713
709(defvar python-indent-levels '(0) 714(defvar python-indent-levels '(0)
710 "Levels of indentation available for `python-indent-line-function'. 715 "Deprecated var available for compatibility.")
711Can also be `noindent' if automatic indentation can't be used.") 716
717(make-obsolete-variable
718 'python-indent-current-level
719 "The indentation API changed to avoid global state.
720The function `python-indent-calculate-levels' does not use it
721anymore. If you were defadvising it and or depended on this
722variable for indentation customizations, refactor your code to
723work on `python-indent-calculate-indentation' instead."
724 "24.5")
725
726(make-obsolete-variable
727 'python-indent-levels
728 "The indentation API changed to avoid global state.
729The function `python-indent-calculate-levels' does not use it
730anymore. If you were defadvising it and or depended on this
731variable for indentation customizations, refactor your code to
732work on `python-indent-calculate-indentation' instead."
733 "24.5")
712 734
713(defun python-indent-guess-indent-offset () 735(defun python-indent-guess-indent-offset ()
714 "Guess and set `python-indent-offset' for the current buffer." 736 "Guess and set `python-indent-offset' for the current buffer."
@@ -748,362 +770,358 @@ Can also be `noindent' if automatic indentation can't be used.")
748 python-indent-offset))))))) 770 python-indent-offset)))))))
749 771
750(defun python-indent-context () 772(defun python-indent-context ()
751 "Get information on indentation context. 773 "Get information about the current indentation context.
752Context information is returned with a cons with the form: 774Context is returned in a cons with the form (STATUS . START).
753 (STATUS . START) 775
754 776STATUS can be one of the following:
755Where status can be any of the following symbols: 777
756 778keyword
757 * after-comment: When current line might continue a comment block 779-------
758 * inside-paren: If point in between (), {} or [] 780
759 * inside-string: If point is inside a string 781:after-comment
760 * after-backslash: Previous line ends in a backslash 782 - Point is after a comment line.
761 * after-beginning-of-block: Point is after beginning of block 783 - START is the position of the \"#\" character.
762 * after-line: Point is after normal line 784:inside-string
763 * dedenter-statement: Point is on a dedenter statement. 785 - Point is inside string.
764 * no-indent: Point is at beginning of buffer or other special case 786 - START is the position of the first quote that starts it.
765START is the buffer position where the sexp starts." 787:no-indent
788 - No possible indentation case matches.
789 - START is always zero.
790
791:inside-paren
792 - Fallback case when point is inside paren.
793 - START is the first non space char position *after* the open paren.
794:inside-paren-at-closing-nested-paren
795 - Point is on a line that contains a nested paren closer.
796 - START is the position of the open paren it closes.
797:inside-paren-at-closing-paren
798 - Point is on a line that contains a paren closer.
799 - START is the position of the open paren.
800:inside-paren-newline-start
801 - Point is inside a paren with items starting in their own line.
802 - START is the position of the open paren.
803:inside-paren-newline-start-from-block
804 - Point is inside a paren with items starting in their own line
805 from a block start.
806 - START is the position of the open paren.
807
808:after-backslash
809 - Fallback case when point is after backslash.
810 - START is the char after the position of the backslash.
811:after-backslash-assignment-continuation
812 - Point is after a backslashed assignment.
813 - START is the char after the position of the backslash.
814:after-backslash-block-continuation
815 - Point is after a backslashed block continuation.
816 - START is the char after the position of the backslash.
817:after-backslash-dotted-continuation
818 - Point is after a backslashed dotted continuation. Previous
819 line must contain a dot to align with.
820 - START is the char after the position of the backslash.
821:after-backslash-first-line
822 - First line following a backslashed continuation.
823 - START is the char after the position of the backslash.
824
825:after-block-end
826 - Point is after a line containing a block ender.
827 - START is the position where the ender starts.
828:after-block-start
829 - Point is after a line starting a block.
830 - START is the position where the block starts.
831:after-line
832 - Point is after a simple line.
833 - START is the position where the previous line starts.
834:at-dedenter-block-start
835 - Point is on a line starting a dedenter block.
836 - START is the position where the dedenter block starts."
766 (save-restriction 837 (save-restriction
767 (widen) 838 (widen)
768 (let ((ppss (save-excursion (beginning-of-line) (syntax-ppss))) 839 (let ((ppss (save-excursion
769 (start)) 840 (beginning-of-line)
770 (cons 841 (syntax-ppss))))
771 (cond 842 (cond
772 ;; Beginning of buffer 843 ;; Beginning of buffer.
773 ((save-excursion 844 ((= (line-number-at-pos) 1)
774 (goto-char (line-beginning-position)) 845 (cons :no-indent 0))
775 (bobp)) 846 ;; Comment continuation (maybe).
776 'no-indent) 847 ((save-excursion
777 ;; Comment continuation 848 (when (and
778 ((save-excursion 849 (or
779 (when (and 850 (python-info-current-line-comment-p)
780 (or 851 (python-info-current-line-empty-p))
781 (python-info-current-line-comment-p) 852 (forward-comment -1)
782 (python-info-current-line-empty-p)) 853 (python-info-current-line-comment-p))
783 (progn 854 (cons :after-comment (point)))))
784 (forward-comment -1) 855 ;; Inside a string.
785 (python-info-current-line-comment-p))) 856 ((let ((start (python-syntax-context 'string ppss)))
786 (setq start (point)) 857 (when start
787 'after-comment))) 858 (cons :inside-string start))))
788 ;; Inside string 859 ;; Inside a paren.
789 ((setq start (python-syntax-context 'string ppss)) 860 ((let* ((start (python-syntax-context 'paren ppss))
790 'inside-string) 861 (starts-in-newline
791 ;; Inside a paren 862 (when start
792 ((setq start (python-syntax-context 'paren ppss)) 863 (save-excursion
793 'inside-paren) 864 (goto-char start)
794 ;; After backslash 865 (forward-char)
795 ((setq start (when (not (or (python-syntax-context 'string ppss) 866 (not
796 (python-syntax-context 'comment ppss))) 867 (= (line-number-at-pos)
797 (let ((line-beg-pos (line-number-at-pos))) 868 (progn
798 (python-info-line-ends-backslash-p 869 (python-util-forward-comment)
799 (1- line-beg-pos))))) 870 (line-number-at-pos))))))))
800 'after-backslash) 871 (when start
801 ;; After beginning of block 872 (cond
802 ((setq start (save-excursion 873 ;; Current line only holds the closing paren.
803 (when (progn 874 ((save-excursion
804 (back-to-indentation) 875 (skip-syntax-forward " ")
805 (python-util-forward-comment -1) 876 (when (and (python-syntax-closing-paren-p)
806 (equal (char-before) ?:)) 877 (progn
807 ;; Move to the first block start that's not in within 878 (forward-char 1)
808 ;; a string, comment or paren and that's not a 879 (not (python-syntax-context 'paren))))
809 ;; continuation line. 880 (cons :inside-paren-at-closing-paren start))))
810 (while (and (re-search-backward 881 ;; Current line only holds a closing paren for nested.
811 (python-rx block-start) nil t) 882 ((save-excursion
812 (or 883 (back-to-indentation)
813 (python-syntax-context-type) 884 (python-syntax-closing-paren-p))
814 (python-info-continuation-line-p)))) 885 (cons :inside-paren-at-closing-nested-paren start))
815 (when (looking-at (python-rx block-start)) 886 ;; This line starts from a opening block in its own line.
816 (point-marker))))) 887 ((save-excursion
817 'after-beginning-of-block) 888 (goto-char start)
818 ((when (setq start (python-info-dedenter-statement-p)) 889 (when (and
819 'dedenter-statement)) 890 starts-in-newline
820 ;; After normal line 891 (save-excursion
821 ((setq start (save-excursion 892 (back-to-indentation)
893 (looking-at (python-rx block-start))))
894 (cons
895 :inside-paren-newline-start-from-block start))))
896 (starts-in-newline
897 (cons :inside-paren-newline-start start))
898 ;; General case.
899 (t (cons :inside-paren
900 (save-excursion
901 (goto-char (1+ start))
902 (skip-syntax-forward "(" 1)
903 (skip-syntax-forward " ")
904 (point))))))))
905 ;; After backslash.
906 ((let ((start (when (not (python-syntax-comment-or-string-p ppss))
907 (python-info-line-ends-backslash-p
908 (1- (line-number-at-pos))))))
909 (when start
910 (cond
911 ;; Continuation of dotted expression.
912 ((save-excursion
913 (back-to-indentation)
914 (when (eq (char-after) ?\.)
915 ;; Move point back until it's not inside a paren.
916 (while (prog2
917 (forward-line -1)
918 (and (not (bobp))
919 (python-syntax-context 'paren))))
920 (goto-char (line-end-position))
921 (while (and (search-backward
922 "." (line-beginning-position) t)
923 (python-syntax-context-type)))
924 ;; Ensure previous statement has dot to align with.
925 (when (and (eq (char-after) ?\.)
926 (not (python-syntax-context-type)))
927 (cons :after-backslash-dotted-continuation (point))))))
928 ;; Continuation of block definition.
929 ((let ((block-continuation-start
930 (python-info-block-continuation-line-p)))
931 (when block-continuation-start
932 (save-excursion
933 (goto-char block-continuation-start)
934 (re-search-forward
935 (python-rx block-start (* space))
936 (line-end-position) t)
937 (cons :after-backslash-block-continuation (point))))))
938 ;; Continuation of assignment.
939 ((let ((assignment-continuation-start
940 (python-info-assignment-continuation-line-p)))
941 (when assignment-continuation-start
942 (save-excursion
943 (goto-char assignment-continuation-start)
944 (cons :after-backslash-assignment-continuation (point))))))
945 ;; First line after backslash continuation start.
946 ((save-excursion
947 (goto-char start)
948 (when (or (= (line-number-at-pos) 1)
949 (not (python-info-beginning-of-backslash
950 (1- (line-number-at-pos)))))
951 (cons :after-backslash-first-line start))))
952 ;; General case.
953 (t (cons :after-backslash start))))))
954 ;; After beginning of block.
955 ((let ((start (save-excursion
956 (back-to-indentation)
957 (python-util-forward-comment -1)
958 (when (equal (char-before) ?:)
959 (python-nav-beginning-of-block)))))
960 (when start
961 (cons :after-block-start start))))
962 ;; At dedenter statement.
963 ((let ((start (python-info-dedenter-statement-p)))
964 (when start
965 (cons :at-dedenter-block-start start))))
966 ;; After normal line.
967 ((let ((start (save-excursion
822 (back-to-indentation) 968 (back-to-indentation)
823 (skip-chars-backward (rx (or whitespace ?\n))) 969 (skip-chars-backward " \t\n")
824 (python-nav-beginning-of-statement) 970 (python-nav-beginning-of-statement)
825 (point-marker))) 971 (point))))
826 'after-line) 972 (when start
827 ;; Do not indent 973 (if (save-excursion
828 (t 'no-indent)) 974 (python-util-forward-comment -1)
829 start)))) 975 (python-nav-beginning-of-statement)
830 976 (looking-at (python-rx block-ender)))
831(defun python-indent-calculate-indentation () 977 (cons :after-block-end start)
832 "Calculate correct indentation offset for the current line. 978 (cons :after-line start)))))
833Returns `noindent' if the indentation does not depend on Python syntax, 979 ;; Default case: do not indent.
834such as in strings." 980 (t (cons :no-indent 0))))))
835 (let* ((indentation-context (python-indent-context)) 981
836 (context-status (car indentation-context)) 982(defun python-indent--calculate-indentation ()
837 (context-start (cdr indentation-context))) 983 "Internal implementation of `python-indent-calculate-indentation'.
838 (save-restriction 984May return an integer for the maximum possible indentation at
839 (widen) 985current context or a list of integers. The latter case is only
840 (save-excursion 986happening for :at-dedenter-block-start context since the
841 (pcase context-status 987possibilities can be narrowed to especific indentation points."
842 (`no-indent 0) 988 (save-restriction
843 (`after-comment 989 (widen)
844 (goto-char context-start) 990 (save-excursion
845 (current-indentation)) 991 (pcase (python-indent-context)
846 ;; When point is after beginning of block just add one level 992 (`(:no-indent . ,_) 0)
847 ;; of indentation relative to the context-start 993 (`(,(or :after-line
848 (`after-beginning-of-block 994 :after-comment
849 (goto-char context-start) 995 :inside-string
850 (+ (current-indentation) python-indent-offset)) 996 :after-backslash
851 ;; When after a simple line just use previous line 997 :inside-paren-at-closing-paren
852 ;; indentation. 998 :inside-paren-at-closing-nested-paren) . ,start)
853 (`after-line 999 ;; Copy previous indentation.
854 (let* ((pair (save-excursion 1000 (goto-char start)
855 (goto-char context-start) 1001 (current-indentation))
856 (cons 1002 (`(,(or :after-block-start
857 (current-indentation) 1003 :after-backslash-first-line
858 (python-info-beginning-of-block-p)))) 1004 :inside-paren-newline-start) . ,start)
859 (context-indentation (car pair)) 1005 ;; Add one indentation level.
860 ;; TODO: Separate block enders into its own case. 1006 (goto-char start)
861 (adjustment 1007 (+ (current-indentation) python-indent-offset))
862 (if (save-excursion 1008 (`(,(or :inside-paren
863 (python-util-forward-comment -1) 1009 :after-backslash-block-continuation
864 (python-nav-beginning-of-statement) 1010 :after-backslash-assignment-continuation
865 (looking-at (python-rx block-ender))) 1011 :after-backslash-dotted-continuation) . ,start)
866 python-indent-offset 1012 ;; Use the column given by the context.
867 0))) 1013 (goto-char start)
868 (- context-indentation adjustment))) 1014 (current-column))
869 ;; When point is on a dedenter statement, search for the 1015 (`(:after-block-end . ,start)
870 ;; opening block that corresponds to it and use its 1016 ;; Subtract one indentation level.
871 ;; indentation. If no opening block is found just remove 1017 (goto-char start)
872 ;; indentation as this is an invalid python file. 1018 (- (current-indentation) python-indent-offset))
873 (`dedenter-statement 1019 (`(:at-dedenter-block-start . ,_)
874 (let ((block-start-point 1020 ;; List all possible indentation levels from opening blocks.
875 (python-info-dedenter-opening-block-position))) 1021 (let ((opening-block-start-points
876 (save-excursion 1022 (python-info-dedenter-opening-block-positions)))
877 (if (not block-start-point) 1023 (if (not opening-block-start-points)
878 0 1024 0 ; if not found default to first column
879 (goto-char block-start-point) 1025 (mapcar (lambda (pos)
880 (current-indentation))))) 1026 (save-excursion
881 ;; When inside of a string, do nothing. just use the current 1027 (goto-char pos)
882 ;; indentation. XXX: perhaps it would be a good idea to 1028 (current-indentation)))
883 ;; invoke standard text indentation here 1029 opening-block-start-points))))
884 (`inside-string 'noindent) 1030 (`(,(or :inside-paren-newline-start-from-block) . ,start)
885 ;; After backslash we have several possibilities. 1031 ;; Add two indentation levels to make the suite stand out.
886 (`after-backslash 1032 (goto-char start)
887 (cond 1033 (+ (current-indentation) (* python-indent-offset 2)))))))
888 ;; Check if current line is a dot continuation. For this 1034
889 ;; the current line must start with a dot and previous 1035(defun python-indent--calculate-levels (indentation)
890 ;; line must contain a dot too. 1036 "Calculate levels list given INDENTATION.
891 ((save-excursion 1037Argument INDENTATION can either be an integer or a list of
892 (back-to-indentation) 1038integers. Levels are returned in ascending order, and in the
893 (when (looking-at "\\.") 1039case INDENTATION is a list, this order is enforced."
894 ;; If after moving one line back point is inside a paren it 1040 (if (listp indentation)
895 ;; needs to move back until it's not anymore 1041 (sort (copy-sequence indentation) #'<)
896 (while (prog2 1042 (let* ((remainder (% indentation python-indent-offset))
897 (forward-line -1) 1043 (steps (/ (- indentation remainder) python-indent-offset))
898 (and (not (bobp)) 1044 (levels (mapcar (lambda (step)
899 (python-syntax-context 'paren)))) 1045 (* python-indent-offset step))
900 (goto-char (line-end-position)) 1046 (number-sequence steps 0 -1))))
901 (while (and (re-search-backward 1047 (reverse
902 "\\." (line-beginning-position) t) 1048 (if (not (zerop remainder))
903 (python-syntax-context-type))) 1049 (cons indentation levels)
904 (if (and (looking-at "\\.") 1050 levels)))))
905 (not (python-syntax-context-type))) 1051
906 ;; The indentation is the same column of the 1052(defun python-indent--previous-level (levels indentation)
907 ;; first matching dot that's not inside a 1053 "Return previous level from LEVELS relative to INDENTATION."
908 ;; comment, a string or a paren 1054 (let* ((levels (sort (copy-sequence levels) #'>))
909 (current-column) 1055 (default (car levels)))
910 ;; No dot found on previous line, just add another 1056 (catch 'return
911 ;; indentation level. 1057 (dolist (level levels)
912 (+ (current-indentation) python-indent-offset))))) 1058 (when (funcall #'< level indentation)
913 ;; Check if prev line is a block continuation 1059 (throw 'return level)))
914 ((let ((block-continuation-start 1060 default)))
915 (python-info-block-continuation-line-p))) 1061
916 (when block-continuation-start 1062(defun python-indent-calculate-indentation (&optional previous)
917 ;; If block-continuation-start is set jump to that 1063 "Calculate indentation.
918 ;; marker and use first column after the block start 1064Get indentation of PREVIOUS level when argument is non-nil.
919 ;; as indentation value. 1065Return the max level of the cycle when indentation reaches the
920 (goto-char block-continuation-start) 1066minimum."
921 (re-search-forward 1067 (let* ((indentation (python-indent--calculate-indentation))
922 (python-rx block-start (* space)) 1068 (levels (python-indent--calculate-levels indentation)))
923 (line-end-position) t) 1069 (if previous
924 (current-column)))) 1070 (python-indent--previous-level levels (current-indentation))
925 ;; Check if current line is an assignment continuation 1071 (apply #'max levels))))
926 ((let ((assignment-continuation-start 1072
927 (python-info-assignment-continuation-line-p))) 1073(defun python-indent-line (&optional previous)
928 (when assignment-continuation-start
929 ;; If assignment-continuation is set jump to that
930 ;; marker and use first column after the assignment
931 ;; operator as indentation value.
932 (goto-char assignment-continuation-start)
933 (current-column))))
934 (t
935 (forward-line -1)
936 (goto-char (python-info-beginning-of-backslash))
937 (if (save-excursion
938 (and
939 (forward-line -1)
940 (goto-char
941 (or (python-info-beginning-of-backslash) (point)))
942 (python-info-line-ends-backslash-p)))
943 ;; The two previous lines ended in a backslash so we must
944 ;; respect previous line indentation.
945 (current-indentation)
946 ;; What happens here is that we are dealing with the second
947 ;; line of a backslash continuation, in that case we just going
948 ;; to add one indentation level.
949 (+ (current-indentation) python-indent-offset)))))
950 ;; When inside a paren there's a need to handle nesting
951 ;; correctly
952 (`inside-paren
953 (cond
954 ;; If current line closes the outermost open paren use the
955 ;; current indentation of the context-start line.
956 ((save-excursion
957 (skip-syntax-forward "\s" (line-end-position))
958 (when (and (looking-at (regexp-opt '(")" "]" "}")))
959 (progn
960 (forward-char 1)
961 (not (python-syntax-context 'paren))))
962 (goto-char context-start)
963 (current-indentation))))
964 ;; If open paren is contained on a line by itself add another
965 ;; indentation level, else look for the first word after the
966 ;; opening paren and use it's column position as indentation
967 ;; level.
968 ((let* ((content-starts-in-newline)
969 (indent
970 (save-excursion
971 (if (setq content-starts-in-newline
972 (progn
973 (goto-char context-start)
974 (forward-char)
975 (save-restriction
976 (narrow-to-region
977 (line-beginning-position)
978 (line-end-position))
979 (python-util-forward-comment))
980 (looking-at "$")))
981 (+ (current-indentation) python-indent-offset)
982 (current-column)))))
983 ;; Adjustments
984 (cond
985 ;; If current line closes a nested open paren de-indent one
986 ;; level.
987 ((progn
988 (back-to-indentation)
989 (looking-at (regexp-opt '(")" "]" "}"))))
990 (- indent python-indent-offset))
991 ;; If the line of the opening paren that wraps the current
992 ;; line starts a block add another level of indentation to
993 ;; follow new pep8 recommendation. See: http://ur1.ca/5rojx
994 ((save-excursion
995 (when (and content-starts-in-newline
996 (progn
997 (goto-char context-start)
998 (back-to-indentation)
999 (looking-at (python-rx block-start))))
1000 (+ indent python-indent-offset))))
1001 (t indent)))))))))))
1002
1003(defun python-indent-calculate-levels ()
1004 "Calculate `python-indent-levels' and reset `python-indent-current-level'."
1005 (if (or (python-info-continuation-line-p)
1006 (not (python-info-dedenter-statement-p)))
1007 ;; XXX: This asks for a refactor. Even if point is on a
1008 ;; dedenter statement, it could be multiline and in that case
1009 ;; the continuation lines should be indented with normal rules.
1010 (let* ((indentation (python-indent-calculate-indentation)))
1011 (if (not (numberp indentation))
1012 (setq python-indent-levels indentation)
1013 (let* ((remainder (% indentation python-indent-offset))
1014 (steps (/ (- indentation remainder) python-indent-offset)))
1015 (setq python-indent-levels (list 0))
1016 (dotimes (step steps)
1017 (push (* python-indent-offset (1+ step)) python-indent-levels))
1018 (when (not (eq 0 remainder))
1019 (push (+ (* python-indent-offset steps) remainder)
1020 python-indent-levels)))))
1021 (setq python-indent-levels
1022 (or
1023 (mapcar (lambda (pos)
1024 (save-excursion
1025 (goto-char pos)
1026 (current-indentation)))
1027 (python-info-dedenter-opening-block-positions))
1028 (list 0))))
1029 (when (listp python-indent-levels)
1030 (setq python-indent-current-level (1- (length python-indent-levels))
1031 python-indent-levels (nreverse python-indent-levels))))
1032
1033(defun python-indent-toggle-levels ()
1034 "Toggle `python-indent-current-level' over `python-indent-levels'."
1035 (setq python-indent-current-level (1- python-indent-current-level))
1036 (when (< python-indent-current-level 0)
1037 (setq python-indent-current-level (1- (length python-indent-levels)))))
1038
1039(defun python-indent-line (&optional force-toggle)
1040 "Internal implementation of `python-indent-line-function'. 1074 "Internal implementation of `python-indent-line-function'.
1041Uses the offset calculated in 1075Use the PREVIOUS level when argument is non-nil, otherwise indent
1042`python-indent-calculate-indentation' and available levels 1076to the maxium available level. When indentation is the minimum
1043indicated by the variable `python-indent-levels' to set the 1077possible and PREVIOUS is non-nil, cycle back to the maximum
1044current indentation. 1078level."
1079 (let ((follow-indentation-p
1080 ;; Check if point is within indentation.
1081 (and (<= (line-beginning-position) (point))
1082 (>= (+ (line-beginning-position)
1083 (current-indentation))
1084 (point)))))
1085 (save-excursion
1086 (indent-line-to
1087 (python-indent-calculate-indentation previous))
1088 (python-info-dedenter-opening-block-message))
1089 (when follow-indentation-p
1090 (back-to-indentation))))
1045 1091
1046When the variable `last-command' is equal to one of the symbols 1092(defun python-indent-calculate-levels ()
1047inside `python-indent-trigger-commands' or FORCE-TOGGLE is 1093 "Return possible indentation levels."
1048non-nil it cycles levels indicated in the variable 1094 (python-indent--calculate-levels
1049`python-indent-levels' by setting the current level in the 1095 (python-indent--calculate-indentation)))
1050variable `python-indent-current-level'.
1051
1052When the variable `last-command' is not equal to one of the
1053symbols inside `python-indent-trigger-commands' and FORCE-TOGGLE
1054is nil it calculates possible indentation levels and saves them
1055in the variable `python-indent-levels'. Afterwards it sets the
1056variable `python-indent-current-level' correctly so offset is
1057equal to
1058 (nth python-indent-current-level python-indent-levels)"
1059 (if (and (or (and (memq this-command python-indent-trigger-commands)
1060 (eq last-command this-command))
1061 force-toggle)
1062 (not (equal python-indent-levels '(0))))
1063 (if (listp python-indent-levels)
1064 (python-indent-toggle-levels))
1065 (python-indent-calculate-levels))
1066 (if (eq python-indent-levels 'noindent)
1067 python-indent-levels
1068 (let* ((starting-pos (point-marker))
1069 (indent-ending-position
1070 (+ (line-beginning-position) (current-indentation)))
1071 (follow-indentation-p
1072 (or (bolp)
1073 (and (<= (line-beginning-position) starting-pos)
1074 (>= indent-ending-position starting-pos))))
1075 (next-indent (nth python-indent-current-level python-indent-levels)))
1076 (unless (= next-indent (current-indentation))
1077 (beginning-of-line)
1078 (delete-horizontal-space)
1079 (indent-to next-indent)
1080 (goto-char starting-pos))
1081 (and follow-indentation-p (back-to-indentation)))
1082 (python-info-dedenter-opening-block-message)))
1083 1096
1084(defun python-indent-line-function () 1097(defun python-indent-line-function ()
1085 "`indent-line-function' for Python mode. 1098 "`indent-line-function' for Python mode.
1086See `python-indent-line' for details." 1099When the variable `last-command' is equal to one of the symbols
1087 (python-indent-line)) 1100inside `python-indent-trigger-commands' it cycles possible
1101indentation levels from right to left."
1102 (python-indent-line
1103 (and (memq this-command python-indent-trigger-commands)
1104 (eq last-command this-command))))
1088 1105
1089(defun python-indent-dedent-line () 1106(defun python-indent-dedent-line ()
1090 "De-indent current line." 1107 "De-indent current line."
1091 (interactive "*") 1108 (interactive "*")
1092 (when (and (not (python-syntax-comment-or-string-p)) 1109 (when (and (not (bolp))
1093 (<= (point) (save-excursion 1110 (not (python-syntax-comment-or-string-p))
1094 (back-to-indentation) 1111 (= (+ (line-beginning-position)
1095 (point))) 1112 (current-indentation))
1096 (> (current-column) 0)) 1113 (point)))
1097 (python-indent-line t) 1114 (python-indent-line t)
1098 t)) 1115 t))
1099 1116
1100(defun python-indent-dedent-line-backspace (arg) 1117(defun python-indent-dedent-line-backspace (arg)
1101 "De-indent current line. 1118 "De-indent current line.
1102Argument ARG is passed to `backward-delete-char-untabify' when 1119Argument ARG is passed to `backward-delete-char-untabify' when
1103point is not in between the indentation." 1120point is not in between the indentation."
1104 (interactive "*p") 1121 (interactive "*p")
1105 (when (not (python-indent-dedent-line)) 1122 (unless (python-indent-dedent-line)
1106 (backward-delete-char-untabify arg))) 1123 (backward-delete-char-untabify arg)))
1124
1107(put 'python-indent-dedent-line-backspace 'delete-selection 'supersede) 1125(put 'python-indent-dedent-line-backspace 'delete-selection 'supersede)
1108 1126
1109(defun python-indent-region (start end) 1127(defun python-indent-region (start end)
diff --git a/lisp/progmodes/sh-script.el b/lisp/progmodes/sh-script.el
index e8b6bf5adf7..135f945dbb9 100644
--- a/lisp/progmodes/sh-script.el
+++ b/lisp/progmodes/sh-script.el
@@ -1,7 +1,6 @@
1;;; sh-script.el --- shell-script editing commands for Emacs -*- lexical-binding:t -*- 1;;; sh-script.el --- shell-script editing commands for Emacs -*- lexical-binding:t -*-
2 2
3;; Copyright (C) 1993-1997, 1999, 2001-2015 Free Software Foundation, 3;; Copyright (C) 1993-1997, 1999, 2001-2015 Free Software Foundation, Inc.
4;; Inc.
5 4
6;; Author: Daniel Pfeiffer <occitan@esperanto.org> 5;; Author: Daniel Pfeiffer <occitan@esperanto.org>
7;; Version: 2.0f 6;; Version: 2.0f
@@ -1599,7 +1598,6 @@ buffer indents as it currently is indented.
1599 1598
1600 1599
1601\\[backward-delete-char-untabify] Delete backward one position, even if it was a tab. 1600\\[backward-delete-char-untabify] Delete backward one position, even if it was a tab.
1602\\[newline-and-indent] Delete unquoted space and indent new line same as this one.
1603\\[sh-end-of-command] Go to end of successive commands. 1601\\[sh-end-of-command] Go to end of successive commands.
1604\\[sh-beginning-of-command] Go to beginning of successive commands. 1602\\[sh-beginning-of-command] Go to beginning of successive commands.
1605\\[sh-set-shell] Set this buffer's shell, and maybe its magic number. 1603\\[sh-set-shell] Set this buffer's shell, and maybe its magic number.
@@ -2501,7 +2499,8 @@ Lines containing only comments are considered empty."
2501 (current-column))) 2499 (current-column)))
2502 current) 2500 current)
2503 (save-excursion 2501 (save-excursion
2504 (indent-to (if (eq this-command 'newline-and-indent) 2502 (indent-to (if (or (eq this-command 'newline-and-indent)
2503 (and electric-indent-mode (eq this-command 'newline)))
2505 previous 2504 previous
2506 (if (< (current-column) 2505 (if (< (current-column)
2507 (setq current (progn (back-to-indentation) 2506 (setq current (progn (back-to-indentation)
diff --git a/lisp/subr.el b/lisp/subr.el
index 05345853edc..68cd230c5e2 100644
--- a/lisp/subr.el
+++ b/lisp/subr.el
@@ -1082,7 +1082,12 @@ The return value is a positive integer."
1082;;;; Extracting fields of the positions in an event. 1082;;;; Extracting fields of the positions in an event.
1083 1083
1084(defun posnp (obj) 1084(defun posnp (obj)
1085 "Return non-nil if OBJ appears to be a valid `posn' object." 1085 "Return non-nil if OBJ appears to be a valid `posn' object specifying a window.
1086If OBJ is a valid `posn' object, but specifies a frame rather
1087than a window, return nil."
1088 ;; FIXME: Correct the behavior of this function so that all valid
1089 ;; `posn' objects are recognized, after updating other code that
1090 ;; depends on its present behavior.
1086 (and (windowp (car-safe obj)) 1091 (and (windowp (car-safe obj))
1087 (atom (car-safe (setq obj (cdr obj)))) ;AREA-OR-POS. 1092 (atom (car-safe (setq obj (cdr obj)))) ;AREA-OR-POS.
1088 (integerp (car-safe (car-safe (setq obj (cdr obj))))) ;XOFFSET. 1093 (integerp (car-safe (car-safe (setq obj (cdr obj))))) ;XOFFSET.
@@ -1142,24 +1147,28 @@ For a scroll-bar event, the result column is 0, and the row
1142corresponds to the vertical position of the click in the scroll bar. 1147corresponds to the vertical position of the click in the scroll bar.
1143POSITION should be a list of the form returned by the `event-start' 1148POSITION should be a list of the form returned by the `event-start'
1144and `event-end' functions." 1149and `event-end' functions."
1145 (let* ((pair (posn-x-y position)) 1150 (let* ((pair (posn-x-y position))
1146 (window (posn-window position)) 1151 (frame-or-window (posn-window position))
1147 (area (posn-area position))) 1152 (frame (if (framep frame-or-window)
1153 frame-or-window
1154 (window-frame frame-or-window)))
1155 (window (when (windowp frame-or-window) frame-or-window))
1156 (area (posn-area position)))
1148 (cond 1157 (cond
1149 ((null window) 1158 ((null frame-or-window)
1150 '(0 . 0)) 1159 '(0 . 0))
1151 ((eq area 'vertical-scroll-bar) 1160 ((eq area 'vertical-scroll-bar)
1152 (cons 0 (scroll-bar-scale pair (1- (window-height window))))) 1161 (cons 0 (scroll-bar-scale pair (1- (window-height window)))))
1153 ((eq area 'horizontal-scroll-bar) 1162 ((eq area 'horizontal-scroll-bar)
1154 (cons (scroll-bar-scale pair (window-width window)) 0)) 1163 (cons (scroll-bar-scale pair (window-width window)) 0))
1155 (t 1164 (t
1156 (let* ((frame (if (framep window) window (window-frame window))) 1165 ;; FIXME: This should take line-spacing properties on
1157 ;; FIXME: This should take line-spacing properties on 1166 ;; newlines into account.
1158 ;; newlines into account. 1167 (let* ((spacing (when (display-graphic-p frame)
1159 (spacing (when (display-graphic-p frame) 1168 (or (with-current-buffer
1160 (or (with-current-buffer (window-buffer window) 1169 (window-buffer (frame-selected-window frame))
1161 line-spacing) 1170 line-spacing)
1162 (frame-parameter frame 'line-spacing))))) 1171 (frame-parameter frame 'line-spacing)))))
1163 (cond ((floatp spacing) 1172 (cond ((floatp spacing)
1164 (setq spacing (truncate (* spacing 1173 (setq spacing (truncate (* spacing
1165 (frame-char-height frame))))) 1174 (frame-char-height frame)))))
diff --git a/lisp/tar-mode.el b/lisp/tar-mode.el
index 1ee54515bea..6c7f7553f82 100644
--- a/lisp/tar-mode.el
+++ b/lisp/tar-mode.el
@@ -50,9 +50,6 @@
50;; 50;;
51;; o chmod should understand "a+x,og-w". 51;; o chmod should understand "a+x,og-w".
52;; 52;;
53;; o It's not possible to add a NEW file to a tar archive; not that
54;; important, but still...
55;;
56;; o The code is less efficient that it could be - in a lot of places, I 53;; o The code is less efficient that it could be - in a lot of places, I
57;; pull a 512-character string out of the buffer and parse it, when I could 54;; pull a 512-character string out of the buffer and parse it, when I could
58;; be parsing it in place, not garbaging a string. Should redo that. 55;; be parsing it in place, not garbaging a string. Should redo that.
@@ -369,6 +366,80 @@ write-date, checksum, link-type, and link-name."
369 string) 366 string)
370 (tar-parse-octal-integer string)) 367 (tar-parse-octal-integer string))
371 368
369(defun tar-new-regular-file-header (filename &optional size time)
370 "Return a Tar header for a regular file.
371The header will lack a proper checksum; use `tar-header-block-checksum'
372to compute one, or request `tar-header-serialize' to do that.
373
374Other tar-mode facilities may also require the data-start header
375field to be set to a valid value.
376
377If SIZE is not given or nil, it defaults to 0.
378If TIME is not given or nil, assume now."
379 (make-tar-header
380 nil
381 filename
382 #o644 0 0 (or size 0)
383 (or time (current-time))
384 nil ; checksum
385 nil nil
386 nil nil nil nil nil))
387
388(defun tar--pad-to (pos)
389 (make-string (+ pos (- (point)) (point-min)) 0))
390
391(defun tar--put-at (pos val &optional fmt mask)
392 (when val
393 (insert (tar--pad-to pos)
394 (if fmt
395 (format fmt (if mask (logand mask val) val))
396 val))))
397
398(defun tar-header-serialize (header &optional update-checksum)
399 "Return the serialization of a Tar HEADER as a string.
400This function calls `tar-header-block-check-checksum' to ensure the
401checksum is correct.
402
403If UPDATE-CHECKSUM is non-nil, update HEADER with the newly-computed
404checksum before doing the check."
405 (with-temp-buffer
406 (set-buffer-multibyte nil)
407 (let ((encoded-name
408 (encode-coding-string (tar-header-name header)
409 tar-file-name-coding-system)))
410 (unless (< (length encoded-name) 99)
411 ;; FIXME: Implement it.
412 (error "Long file name support is not implemented"))
413 (insert encoded-name))
414 (tar--put-at tar-mode-offset (tar-header-mode header) "%6o\0 " #o777777)
415 (tar--put-at tar-uid-offset (tar-header-uid header) "%6o\0 " #o777777)
416 (tar--put-at tar-gid-offset (tar-header-gid header) "%6o\0 " #o777777)
417 (tar--put-at tar-size-offset (tar-header-size header) "%11o ")
418 (insert (tar--pad-to tar-time-offset)
419 (tar-octal-time (tar-header-date header))
420 " ")
421 ;; Omit tar-header-checksum (tar-chk-offset) for now.
422 (tar--put-at tar-linkp-offset (tar-header-link-type header))
423 (tar--put-at tar-link-offset (tar-header-link-name header))
424 (when (tar-header-magic header)
425 (tar--put-at tar-magic-offset (tar-header-magic header))
426 (tar--put-at tar-uname-offset (tar-header-uname header))
427 (tar--put-at tar-gname-offset (tar-header-gname header))
428 (tar--put-at tar-dmaj-offset (tar-header-dmaj header) "%7o\0" #o7777777)
429 (tar--put-at tar-dmin-offset (tar-header-dmin header) "%7o\0" #o7777777))
430 (tar--put-at 512 "")
431 (let ((ck (tar-header-block-checksum (buffer-string))))
432 (goto-char (+ (point-min) tar-chk-offset))
433 (delete-char 8)
434 (insert (format "%6o\0 " ck))
435 (when update-checksum
436 (setf (tar-header-checksum header) ck))
437 (tar-header-block-check-checksum (buffer-string)
438 (tar-header-checksum header)
439 (tar-header-name header)))
440 ;; .
441 (buffer-string)))
442
372 443
373(defun tar-header-block-checksum (string) 444(defun tar-header-block-checksum (string)
374 "Compute and return a tar-acceptable checksum for this block." 445 "Compute and return a tar-acceptable checksum for this block."
@@ -547,6 +618,7 @@ MODE should be an integer which is a file mode value."
547 (define-key map "p" 'tar-previous-line) 618 (define-key map "p" 'tar-previous-line)
548 (define-key map "\^P" 'tar-previous-line) 619 (define-key map "\^P" 'tar-previous-line)
549 (define-key map [up] 'tar-previous-line) 620 (define-key map [up] 'tar-previous-line)
621 (define-key map "I" 'tar-new-entry)
550 (define-key map "R" 'tar-rename-entry) 622 (define-key map "R" 'tar-rename-entry)
551 (define-key map "u" 'tar-unflag) 623 (define-key map "u" 'tar-unflag)
552 (define-key map "v" 'tar-view) 624 (define-key map "v" 'tar-view)
@@ -731,10 +803,14 @@ tar-file's buffer."
731 (interactive "p") 803 (interactive "p")
732 (tar-next-line (- arg))) 804 (tar-next-line (- arg)))
733 805
806(defun tar-current-position ()
807 "Return the `tar-parse-info' index for the current line."
808 (count-lines (point-min) (line-beginning-position)))
809
734(defun tar-current-descriptor (&optional noerror) 810(defun tar-current-descriptor (&optional noerror)
735 "Return the tar-descriptor of the current line, or signals an error." 811 "Return the tar-descriptor of the current line, or signals an error."
736 ;; I wish lines had plists, like in ZMACS... 812 ;; I wish lines had plists, like in ZMACS...
737 (or (nth (count-lines (point-min) (line-beginning-position)) 813 (or (nth (tar-current-position)
738 tar-parse-info) 814 tar-parse-info)
739 (if noerror 815 (if noerror
740 nil 816 nil
@@ -948,6 +1024,37 @@ the current tar-entry."
948 (write-region start end to-file nil nil nil t))) 1024 (write-region start end to-file nil nil nil t)))
949 (message "Copied tar entry %s to %s" name to-file))) 1025 (message "Copied tar entry %s to %s" name to-file)))
950 1026
1027(defun tar-new-entry (filename &optional index)
1028 "Insert a new empty regular file before point."
1029 (interactive "*sFile name: ")
1030 (let* ((buffer (current-buffer))
1031 (index (or index (tar-current-position)))
1032 (d-list (and (not (zerop index))
1033 (nthcdr (+ -1 index) tar-parse-info)))
1034 (pos (if d-list
1035 (tar-header-data-end (car d-list))
1036 (point-min)))
1037 (new-descriptor
1038 (tar-new-regular-file-header filename)))
1039 ;; Update the data buffer; fill the missing descriptor fields.
1040 (with-current-buffer tar-data-buffer
1041 (goto-char pos)
1042 (insert (tar-header-serialize new-descriptor t))
1043 (setf (tar-header-data-start new-descriptor)
1044 (copy-marker (point) nil)))
1045 ;; Update tar-parse-info.
1046 (if d-list
1047 (setcdr d-list (cons new-descriptor (cdr d-list)))
1048 (setq tar-parse-info (cons new-descriptor tar-parse-info)))
1049 ;; Update the listing buffer.
1050 (save-excursion
1051 (goto-char (point-min))
1052 (forward-line index)
1053 (let ((inhibit-read-only t))
1054 (insert (tar-header-block-summarize new-descriptor) ?\n)))
1055 ;; .
1056 index))
1057
951(defun tar-flag-deleted (p &optional unflag) 1058(defun tar-flag-deleted (p &optional unflag)
952 "In Tar mode, mark this sub-file to be deleted from the tar file. 1059 "In Tar mode, mark this sub-file to be deleted from the tar file.
953With a prefix argument, mark that many files." 1060With a prefix argument, mark that many files."
diff --git a/lisp/textmodes/artist.el b/lisp/textmodes/artist.el
index 8a2383c12ff..85d9410868a 100644
--- a/lisp/textmodes/artist.el
+++ b/lisp/textmodes/artist.el
@@ -4963,52 +4963,55 @@ The event, EV, is the mouse event."
4963 (artist-funcall init-fn x1 y1) 4963 (artist-funcall init-fn x1 y1)
4964 (if (not artist-rubber-banding) 4964 (if (not artist-rubber-banding)
4965 (artist-no-rb-set-point1 x1 y1)) 4965 (artist-no-rb-set-point1 x1 y1))
4966 (track-mouse 4966 (unwind-protect
4967 (while (or (mouse-movement-p ev) 4967 (track-mouse
4968 (member 'down (event-modifiers ev))) 4968 (while (or (mouse-movement-p ev)
4969 (setq ev-start-pos (artist-coord-win-to-buf 4969 (member 'down (event-modifiers ev)))
4970 (posn-col-row (event-start ev)))) 4970 (setq ev-start-pos (artist-coord-win-to-buf
4971 (setq x1 (car ev-start-pos)) 4971 (posn-col-row (event-start ev))))
4972 (setq y1 (cdr ev-start-pos)) 4972 (setq x1 (car ev-start-pos))
4973 4973 (setq y1 (cdr ev-start-pos))
4974 ;; Cancel previous timer 4974
4975 (if timer 4975 ;; Cancel previous timer
4976 (cancel-timer timer)) 4976 (if timer
4977 4977 (cancel-timer timer))
4978 (if (not (eq initial-win (posn-window (event-start ev)))) 4978
4979 ;; If we moved outside the window, do nothing 4979 (if (not (eq initial-win (posn-window (event-start ev))))
4980 nil 4980 ;; If we moved outside the window, do nothing
4981 4981 nil
4982 ;; Still in same window: 4982
4983 ;; 4983 ;; Still in same window:
4984 ;; Check if user presses or releases shift key 4984 ;;
4985 (if (artist-shift-has-changed shift-state ev) 4985 ;; Check if user presses or releases shift key
4986 4986 (if (artist-shift-has-changed shift-state ev)
4987 ;; First check that the draw-how is the same as we 4987
4988 ;; already have. Otherwise, ignore the changed shift-state. 4988 ;; First check that the draw-how is the same as we
4989 (if (not (eq draw-how 4989 ;; already have. Otherwise, ignore the changed shift-state.
4990 (artist-go-get-draw-how-from-symbol 4990 (if (not (eq draw-how
4991 (if (not shift-state) shifted unshifted)))) 4991 (artist-go-get-draw-how-from-symbol
4992 (message "Cannot switch to shifted operation") 4992 (if (not shift-state) shifted unshifted))))
4993 4993 (message "Cannot switch to shifted operation")
4994 ;; progn is "implicit" since this is the else-part 4994
4995 (setq shift-state (not shift-state)) 4995 ;; progn is "implicit" since this is the else-part
4996 (setq op (if shift-state shifted unshifted)) 4996 (setq shift-state (not shift-state))
4997 (setq draw-how (artist-go-get-draw-how-from-symbol op)) 4997 (setq op (if shift-state shifted unshifted))
4998 (setq draw-fn (artist-go-get-draw-fn-from-symbol op)))) 4998 (setq draw-how (artist-go-get-draw-how-from-symbol op))
4999 4999 (setq draw-fn (artist-go-get-draw-fn-from-symbol op))))
5000 ;; Draw the new shape 5000
5001 (setq shape (artist-funcall draw-fn x1 y1)) 5001 ;; Draw the new shape
5002 (artist-move-to-xy x1 y1) 5002 (setq shape (artist-funcall draw-fn x1 y1))
5003 5003 (artist-move-to-xy x1 y1)
5004 ;; Start the timer to call `draw-fn' repeatedly every 5004
5005 ;; `interval' second 5005 ;; Start the timer to call `draw-fn' repeatedly every
5006 (if (and interval draw-fn) 5006 ;; `interval' second
5007 (setq timer (run-at-time interval interval draw-fn x1 y1)))) 5007 (if (and interval draw-fn)
5008 5008 (setq timer (run-at-time interval interval draw-fn x1 y1))))
5009 ;; Read next event 5009
5010 (setq ev (read-event)))) 5010 ;; Read next event
5011 5011 (setq ev (read-event))))
5012 ;; Cleanup: get rid of any active timer.
5013 (if timer
5014 (cancel-timer timer)))
5012 ;; Cancel any timers 5015 ;; Cancel any timers
5013 (if timer 5016 (if timer
5014 (cancel-timer timer)) 5017 (cancel-timer timer))
diff --git a/lisp/textmodes/reftex.el b/lisp/textmodes/reftex.el
index 160d9fb4cdf..7cf54c6d28a 100644
--- a/lisp/textmodes/reftex.el
+++ b/lisp/textmodes/reftex.el
@@ -106,17 +106,21 @@
106(defvar reftex-syntax-table nil) 106(defvar reftex-syntax-table nil)
107(defvar reftex-syntax-table-for-bib nil) 107(defvar reftex-syntax-table-for-bib nil)
108 108
109(unless reftex-syntax-table 109(defun reftex--prepare-syntax-tables ()
110 (setq reftex-syntax-table (copy-syntax-table)) 110 (setq reftex-syntax-table (copy-syntax-table))
111 (modify-syntax-entry ?\( "." reftex-syntax-table) 111 (modify-syntax-entry ?\( "." reftex-syntax-table)
112 (modify-syntax-entry ?\) "." reftex-syntax-table)) 112 (modify-syntax-entry ?\) "." reftex-syntax-table)
113 113
114(unless reftex-syntax-table-for-bib
115 (setq reftex-syntax-table-for-bib (copy-syntax-table)) 114 (setq reftex-syntax-table-for-bib (copy-syntax-table))
116 (modify-syntax-entry ?\' "." reftex-syntax-table-for-bib) 115 (modify-syntax-entry ?\' "." reftex-syntax-table-for-bib)
117 (modify-syntax-entry ?\" "." reftex-syntax-table-for-bib) 116 (modify-syntax-entry ?\" "." reftex-syntax-table-for-bib)
118 (modify-syntax-entry ?\[ "." reftex-syntax-table-for-bib) 117 (modify-syntax-entry ?\[ "." reftex-syntax-table-for-bib)
119 (modify-syntax-entry ?\] "." reftex-syntax-table-for-bib)) 118 (modify-syntax-entry ?\] "." reftex-syntax-table-for-bib)
119 (modify-syntax-entry ?\( "." reftex-syntax-table-for-bib)
120 (modify-syntax-entry ?\) "." reftex-syntax-table-for-bib))
121
122(unless (and reftex-syntax-table reftex-syntax-table-for-bib)
123 (reftex--prepare-syntax-tables))
120 124
121;; The following definitions are out of place, but I need them here 125;; The following definitions are out of place, but I need them here
122;; to make the compilation of reftex-mode not complain. 126;; to make the compilation of reftex-mode not complain.
@@ -180,15 +184,7 @@ on the menu bar.
180 (put 'reftex-auto-recenter-toc 'initialized t)) 184 (put 'reftex-auto-recenter-toc 'initialized t))
181 185
182 ;; Prepare the special syntax tables. 186 ;; Prepare the special syntax tables.
183 (setq reftex-syntax-table (copy-syntax-table (syntax-table))) 187 (reftex--prepare-syntax-tables)
184 (modify-syntax-entry ?\( "." reftex-syntax-table)
185 (modify-syntax-entry ?\) "." reftex-syntax-table)
186
187 (setq reftex-syntax-table-for-bib (copy-syntax-table))
188 (modify-syntax-entry ?\' "." reftex-syntax-table-for-bib)
189 (modify-syntax-entry ?\" "." reftex-syntax-table-for-bib)
190 (modify-syntax-entry ?\[ "." reftex-syntax-table-for-bib)
191 (modify-syntax-entry ?\] "." reftex-syntax-table-for-bib)
192 188
193 (run-hooks 'reftex-mode-hook)) 189 (run-hooks 'reftex-mode-hook))
194 ;; Mode was turned off 190 ;; Mode was turned off
diff --git a/m4/time_h.m4 b/m4/time_h.m4
index 0f0b7d9a2ac..d9c41a48f33 100644
--- a/m4/time_h.m4
+++ b/m4/time_h.m4
@@ -2,7 +2,7 @@
2 2
3# Copyright (C) 2000-2001, 2003-2007, 2009-2015 Free Software Foundation, Inc. 3# Copyright (C) 2000-2001, 2003-2007, 2009-2015 Free Software Foundation, Inc.
4 4
5# serial 8 5# serial 9
6 6
7# This file is free software; the Free Software Foundation 7# This file is free software; the Free Software Foundation
8# gives unlimited permission to copy and/or distribute it, 8# gives unlimited permission to copy and/or distribute it,
@@ -26,7 +26,7 @@ AC_DEFUN([gl_HEADER_TIME_H_BODY],
26]) 26])
27 27
28dnl Check whether 'struct timespec' is declared 28dnl Check whether 'struct timespec' is declared
29dnl in time.h, sys/time.h, or pthread.h. 29dnl in time.h, sys/time.h, pthread.h, or unistd.h.
30 30
31AC_DEFUN([gl_CHECK_TYPE_STRUCT_TIMESPEC], 31AC_DEFUN([gl_CHECK_TYPE_STRUCT_TIMESPEC],
32[ 32[
@@ -44,6 +44,7 @@ AC_DEFUN([gl_CHECK_TYPE_STRUCT_TIMESPEC],
44 TIME_H_DEFINES_STRUCT_TIMESPEC=0 44 TIME_H_DEFINES_STRUCT_TIMESPEC=0
45 SYS_TIME_H_DEFINES_STRUCT_TIMESPEC=0 45 SYS_TIME_H_DEFINES_STRUCT_TIMESPEC=0
46 PTHREAD_H_DEFINES_STRUCT_TIMESPEC=0 46 PTHREAD_H_DEFINES_STRUCT_TIMESPEC=0
47 UNISTD_H_DEFINES_STRUCT_TIMESPEC=0
47 if test $gl_cv_sys_struct_timespec_in_time_h = yes; then 48 if test $gl_cv_sys_struct_timespec_in_time_h = yes; then
48 TIME_H_DEFINES_STRUCT_TIMESPEC=1 49 TIME_H_DEFINES_STRUCT_TIMESPEC=1
49 else 50 else
@@ -70,12 +71,26 @@ AC_DEFUN([gl_CHECK_TYPE_STRUCT_TIMESPEC],
70 [gl_cv_sys_struct_timespec_in_pthread_h=no])]) 71 [gl_cv_sys_struct_timespec_in_pthread_h=no])])
71 if test $gl_cv_sys_struct_timespec_in_pthread_h = yes; then 72 if test $gl_cv_sys_struct_timespec_in_pthread_h = yes; then
72 PTHREAD_H_DEFINES_STRUCT_TIMESPEC=1 73 PTHREAD_H_DEFINES_STRUCT_TIMESPEC=1
74 else
75 AC_CACHE_CHECK([for struct timespec in <unistd.h>],
76 [gl_cv_sys_struct_timespec_in_unistd_h],
77 [AC_COMPILE_IFELSE(
78 [AC_LANG_PROGRAM(
79 [[#include <unistd.h>
80 ]],
81 [[static struct timespec x; x.tv_sec = x.tv_nsec;]])],
82 [gl_cv_sys_struct_timespec_in_unistd_h=yes],
83 [gl_cv_sys_struct_timespec_in_unistd_h=no])])
84 if test $gl_cv_sys_struct_timespec_in_unistd_h = yes; then
85 UNISTD_H_DEFINES_STRUCT_TIMESPEC=1
86 fi
73 fi 87 fi
74 fi 88 fi
75 fi 89 fi
76 AC_SUBST([TIME_H_DEFINES_STRUCT_TIMESPEC]) 90 AC_SUBST([TIME_H_DEFINES_STRUCT_TIMESPEC])
77 AC_SUBST([SYS_TIME_H_DEFINES_STRUCT_TIMESPEC]) 91 AC_SUBST([SYS_TIME_H_DEFINES_STRUCT_TIMESPEC])
78 AC_SUBST([PTHREAD_H_DEFINES_STRUCT_TIMESPEC]) 92 AC_SUBST([PTHREAD_H_DEFINES_STRUCT_TIMESPEC])
93 AC_SUBST([UNISTD_H_DEFINES_STRUCT_TIMESPEC])
79]) 94])
80 95
81AC_DEFUN([gl_TIME_MODULE_INDICATOR], 96AC_DEFUN([gl_TIME_MODULE_INDICATOR],
diff --git a/src/ChangeLog b/src/ChangeLog
index 8e5166e22be..9e564ea6414 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,143 @@
12015-01-31 Eli Zaretskii <eliz@gnu.org>
2
3 * coding.c (raw_text_coding_system_p): New function.
4
5 * keyboard.c (read_decoded_event_from_main_queue): Use it when the
6 keyboard coding-system is 'raw-text'. (Bug#19532)
7
8 * coding.h (raw_text_coding_system_p): Add prototype.
9
102015-01-31 Andreas Schwab <schwab@linux-m68k.org>
11
12 * Makefile.in (gl-stamp): Generate globals.h through the use of
13 move-if-change.
14 (globals.h): Replace with empty command.
15
162015-01-31 Eli Zaretskii <eliz@gnu.org>
17
18 * keyboard.c (kbd_buffer_store_event_hold): Ignore FOCUS_OUT_EVENT
19 and ICONIFY_EVENT for the purposes of breaking while-no-input
20 loops. (Bug#19547)
21
22 * dired.c (read_dirent): Correct the "MSDOS hacks" hack: the
23 special code for errno = ENOENT or EACCES is needed for WINDOWSNT,
24 not for MSDOS.
25
262015-01-31 Paul Eggert <eggert@cs.ucla.edu>
27
28 Simplify read_dirent's MSDOS hacks
29 * dired.c (read_dirent): Simplify by removing the need for the
30 DIR_ENTRY argument. All callers changed. This separates the
31 MS-DOS idiosyncrasies better from the rest of the code.
32
332015-01-30 Eli Zaretskii <eliz@gnu.org>
34
35 * dired.c (read_dirent): Accept an additional argument
36 FIRST_ENTRY. If readdir fails with ENOENT or EACCES the first
37 time it is called, report the error as if it happened in
38 open_directory.
39 (directory_files_internal, file_name_completion): Adjust callers
40 or read_dirent.
41
422015-01-30 Paul Eggert <eggert@cs.ucla.edu>
43
44 Refactor calls to opendir for simplicity
45 * dired.c (open_directory): Accept Lisp_Object, not char *, for
46 dirname. Signal an error if the open fails. All callers changed.
47
482015-01-29 Paul Eggert <eggert@cs.ucla.edu>
49
50 Report readdir failures
51 Previously, on non-MS-Windows platforms the code treated most
52 readdir failures as EOF. This was incorrect, e.g., when readdir
53 fails with errno == EOVERFLOW. Signal an error instead.
54 * dired.c (read_dirent):
55 New function, which signals an error when readdir fails.
56 (directory_files_internal, file_name_completion): Use it.
57
582015-01-29 Eli Zaretskii <eliz@gnu.org>
59
60 Use bool for boolean in w32menu.c, w32font.c, w32uniscribe.c.
61 * w32uniscribe.c (uniscribe_list, uniscribe_match): Use bool where
62 appropriate.
63
64 * w32font.c (struct font_callback_data, w32font_list_internal)
65 (w32font_driver, w32font_match_internal): Use bool where appropriate.
66
67 * w32menu.c (x_activate_menubar, set_frame_menubar)
68 (w32_dialog_show, initialize_frame_menubar, w32_menu_show)
69 (is_simple_dialog): Use bool where appropriate.
70
712015-01-28 Paul Eggert <eggert@cs.ucla.edu>
72
73 Use bool, not int, to track face changes
74 * xfaces.c (face_change): Rename from face_change_count, and
75 change from int to bool. The var is now true (instead of nonzero)
76 if attributes have changed; this is simpler. All uses changed.
77 (Bug#19698)
78
792015-01-28 Eli Zaretskii <eliz@gnu.org>
80
81 * dired.c (directory_files_internal, file_name_completion)
82 [WINDOWSNT]: Signal an error when errno is set non-zero by
83 'readdir', regardless of its value.
84
85 * w32.c (sys_readdir): Set errno to ENOENT when the directory
86 doesn't exist and to EACCES when it's not accessible to the
87 current user. Set errno to zero when FindNextFile exhausts the
88 directory, so that callers don't interpret that as an error and
89 don't signal a file-error.
90 (open_unc_volume): Set errno to ENOENT if WNetOpenEnum fails.
91
92 * dired.c (directory_files_internal) [WINDOWSNT]: If readdir
93 returns NULL and errno is ENOTDIR, behave as if opendir failed to
94 open the directory. (Bug#19701)
95
96 * w32.c (sys_readdir): If FindFirstFile fails because the
97 directory doesn't exist, set errno to ENOTDIR.
98
992015-01-28 Jan Djärv <jan.h.d@swipnet.se>
100
101 * nsterm.m (drawRect:): Add block/unblock_input (Bug#19660).
102
1032015-01-28 Paul Eggert <eggert@cs.ucla.edu>
104
105 Fix coding.c subscript error
106 * coding.c (CODING_ISO_INVOKED_CHARSET):
107 Avoid undefined behavior if CODING_ISO_INVOCATION returns negative.
108
1092015-01-28 Eli Zaretskii <eliz@gnu.org>
110
111 * xdisp.c (produce_image_glyph): Fix display of images in R2L
112 screen lines: prepend the new glyph to the ones already there
113 instead of appending it.
114
115 * w32fns.c (w32_set_title_bar_text): New function, including
116 support for titles with non-ASCII characters outside of the
117 current system codepage.
118 (x_set_name, x_set_title): Use it. (Bug#19590)
119
120 * indent.c (Fvertical_motion): Return zero if we started from ZV
121 and there's an overlay after-string there. (Bug#19553)
122
123 * emacs.c (usage_message): Fix the description of the -nl switch.
124 (Bug#19542)
125
126 * xdisp.c (move_it_to, try_cursor_movement): Don't use the window
127 end information if the window_end_valid flag is unset.
128 (try_window_id): If the call to display_line invalidated the
129 window end information, give up the try_window_id optimization.
130 (Bug#19511)
131
132 * w32fns.c (Fx_server_version, Fx_server_vendor): Doc fix.
133 * xfns.c (Fx_server_version, Fx_server_vendor): Doc fix.
134
135 * emacs.c (syms_of_emacs) <system-configuration>: Doc fix. (Bug#19502)
136
1372015-01-28 Stefan Monnier <monnier@iro.umontreal.ca>
138
139 * lisp.mk (lisp): Add cl-preloaded.
140
12015-01-27 Paul Eggert <eggert@cs.ucla.edu> 1412015-01-27 Paul Eggert <eggert@cs.ucla.edu>
2 142
3 Use bool for boolean in xfaces.c 143 Use bool for boolean in xfaces.c
diff --git a/src/Makefile.in b/src/Makefile.in
index 079e0e41c9f..81977dbfec2 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -504,11 +504,17 @@ buildobj.h: Makefile
504 504
505GLOBAL_SOURCES = $(base_obj:.o=.c) $(NS_OBJC_OBJ:.o=.m) 505GLOBAL_SOURCES = $(base_obj:.o=.c) $(NS_OBJC_OBJ:.o=.m)
506 506
507AM_V_GLOBALS = $(am__v_GLOBALS_@AM_V@)
508am__v_GLOBALS_ = $(am__v_GLOBALS_@AM_DEFAULT_V@)
509am__v_GLOBALS_0 = @echo " GEN " globals.h;
510am__v_GLOBALS_1 =
511
507gl-stamp: $(libsrc)/make-docfile$(EXEEXT) $(GLOBAL_SOURCES) 512gl-stamp: $(libsrc)/make-docfile$(EXEEXT) $(GLOBAL_SOURCES)
508 $(AM_V_GEN)$(libsrc)/make-docfile -d $(srcdir) -g $(obj) >$@ 513 $(AM_V_GLOBALS)$(libsrc)/make-docfile -d $(srcdir) -g $(obj) > globals.tmp
514 $(AM_V_at)$(top_srcdir)/build-aux/move-if-change globals.tmp globals.h
515 $(AM_V_at)echo timestamp > $@
509 516
510globals.h: gl-stamp 517globals.h: gl-stamp; @true
511 $(AM_V_GEN)cmp $< $@ >/dev/null || cp $< $@
512 518
513$(ALLOBJS): globals.h 519$(ALLOBJS): globals.h
514 520
diff --git a/src/coding.c b/src/coding.c
index 54811588c6a..1a0e1279648 100644
--- a/src/coding.c
+++ b/src/coding.c
@@ -350,7 +350,8 @@ static Lisp_Object Vbig5_coding_system;
350#define CODING_ISO_BOL(coding) \ 350#define CODING_ISO_BOL(coding) \
351 ((coding)->spec.iso_2022.bol) 351 ((coding)->spec.iso_2022.bol)
352#define CODING_ISO_INVOKED_CHARSET(coding, plane) \ 352#define CODING_ISO_INVOKED_CHARSET(coding, plane) \
353 CODING_ISO_DESIGNATION ((coding), CODING_ISO_INVOCATION ((coding), (plane))) 353 (CODING_ISO_INVOCATION (coding, plane) < 0 ? -1 \
354 : CODING_ISO_DESIGNATION (coding, CODING_ISO_INVOCATION (coding, plane)))
354#define CODING_ISO_CMP_STATUS(coding) \ 355#define CODING_ISO_CMP_STATUS(coding) \
355 (&(coding)->spec.iso_2022.cmp_status) 356 (&(coding)->spec.iso_2022.cmp_status)
356#define CODING_ISO_EXTSEGMENT_LEN(coding) \ 357#define CODING_ISO_EXTSEGMENT_LEN(coding) \
@@ -5978,6 +5979,15 @@ raw_text_coding_system (Lisp_Object coding_system)
5978 : AREF (raw_text_eol_type, 2)); 5979 : AREF (raw_text_eol_type, 2));
5979} 5980}
5980 5981
5982/* Return true if CODING corresponds to raw-text coding-system. */
5983
5984bool
5985raw_text_coding_system_p (struct coding_system *coding)
5986{
5987 return (coding->decoder == decode_coding_raw_text
5988 && coding->encoder == encode_coding_raw_text) ? true : false;
5989}
5990
5981 5991
5982/* If CODING_SYSTEM doesn't specify end-of-line format, return one of 5992/* If CODING_SYSTEM doesn't specify end-of-line format, return one of
5983 the subsidiary that has the same eol-spec as PARENT (if it is not 5993 the subsidiary that has the same eol-spec as PARENT (if it is not
diff --git a/src/coding.h b/src/coding.h
index d49d786e6dd..c73a9cc3263 100644
--- a/src/coding.h
+++ b/src/coding.h
@@ -705,6 +705,7 @@ extern Lisp_Object code_convert_string_norecord (Lisp_Object, Lisp_Object,
705extern Lisp_Object encode_file_name (Lisp_Object); 705extern Lisp_Object encode_file_name (Lisp_Object);
706extern Lisp_Object decode_file_name (Lisp_Object); 706extern Lisp_Object decode_file_name (Lisp_Object);
707extern Lisp_Object raw_text_coding_system (Lisp_Object); 707extern Lisp_Object raw_text_coding_system (Lisp_Object);
708extern bool raw_text_coding_system_p (struct coding_system *);
708extern Lisp_Object coding_inherit_eol_type (Lisp_Object, Lisp_Object); 709extern Lisp_Object coding_inherit_eol_type (Lisp_Object, Lisp_Object);
709extern Lisp_Object complement_process_encoding_system (Lisp_Object); 710extern Lisp_Object complement_process_encoding_system (Lisp_Object);
710 711
diff --git a/src/dired.c b/src/dired.c
index e31fdf87ac2..5038e04cd01 100644
--- a/src/dired.c
+++ b/src/dired.c
@@ -66,8 +66,9 @@ dirent_namelen (struct dirent *dp)
66} 66}
67 67
68static DIR * 68static DIR *
69open_directory (char const *name, int *fdp) 69open_directory (Lisp_Object dirname, int *fdp)
70{ 70{
71 char *name = SSDATA (dirname);
71 DIR *d; 72 DIR *d;
72 int fd, opendir_errno; 73 int fd, opendir_errno;
73 74
@@ -98,8 +99,9 @@ open_directory (char const *name, int *fdp)
98 99
99 unblock_input (); 100 unblock_input ();
100 101
102 if (!d)
103 report_file_errno ("Opening directory", dirname, opendir_errno);
101 *fdp = fd; 104 *fdp = fd;
102 errno = opendir_errno;
103 return d; 105 return d;
104} 106}
105 107
@@ -120,6 +122,35 @@ directory_files_internal_unwind (void *dh)
120 unblock_input (); 122 unblock_input ();
121} 123}
122 124
125/* Return the next directory entry from DIR; DIR's name is DIRNAME.
126 If there are no more directory entries, return a null pointer.
127 Signal any unrecoverable errors. */
128
129static struct dirent *
130read_dirent (DIR *dir, Lisp_Object dirname)
131{
132 while (true)
133 {
134 errno = 0;
135 struct dirent *dp = readdir (dir);
136 if (dp || errno == 0)
137 return dp;
138 if (! (errno == EAGAIN || errno == EINTR))
139 {
140#ifdef WINDOWSNT
141 /* The MS-Windows implementation of 'opendir' doesn't
142 actually open a directory until the first call to
143 'readdir'. If 'readdir' fails to open the directory, it
144 sets errno to ENOENT or EACCES, see w32.c. */
145 if (errno == ENOENT || errno == EACCES)
146 report_file_error ("Opening directory", dirname);
147#endif
148 report_file_error ("Reading directory", dirname);
149 }
150 QUIT;
151 }
152}
153
123/* Function shared by Fdirectory_files and Fdirectory_files_and_attributes. 154/* Function shared by Fdirectory_files and Fdirectory_files_and_attributes.
124 If not ATTRS, return a list of directory filenames; 155 If not ATTRS, return a list of directory filenames;
125 if ATTRS, return a list of directory filenames and their attributes. 156 if ATTRS, return a list of directory filenames and their attributes.
@@ -130,15 +161,12 @@ directory_files_internal (Lisp_Object directory, Lisp_Object full,
130 Lisp_Object match, Lisp_Object nosort, bool attrs, 161 Lisp_Object match, Lisp_Object nosort, bool attrs,
131 Lisp_Object id_format) 162 Lisp_Object id_format)
132{ 163{
133 DIR *d;
134 int fd;
135 ptrdiff_t directory_nbytes; 164 ptrdiff_t directory_nbytes;
136 Lisp_Object list, dirfilename, encoded_directory; 165 Lisp_Object list, dirfilename, encoded_directory;
137 struct re_pattern_buffer *bufp = NULL; 166 struct re_pattern_buffer *bufp = NULL;
138 bool needsep = 0; 167 bool needsep = 0;
139 ptrdiff_t count = SPECPDL_INDEX (); 168 ptrdiff_t count = SPECPDL_INDEX ();
140 struct gcpro gcpro1, gcpro2, gcpro3, gcpro4, gcpro5; 169 struct gcpro gcpro1, gcpro2, gcpro3, gcpro4, gcpro5;
141 struct dirent *dp;
142#ifdef WINDOWSNT 170#ifdef WINDOWSNT
143 Lisp_Object w32_save = Qnil; 171 Lisp_Object w32_save = Qnil;
144#endif 172#endif
@@ -182,9 +210,8 @@ directory_files_internal (Lisp_Object directory, Lisp_Object full,
182 /* Now *bufp is the compiled form of MATCH; don't call anything 210 /* Now *bufp is the compiled form of MATCH; don't call anything
183 which might compile a new regexp until we're done with the loop! */ 211 which might compile a new regexp until we're done with the loop! */
184 212
185 d = open_directory (SSDATA (dirfilename), &fd); 213 int fd;
186 if (d == NULL) 214 DIR *d = open_directory (dirfilename, &fd);
187 report_file_error ("Opening directory", directory);
188 215
189 /* Unfortunately, we can now invoke expand-file-name and 216 /* Unfortunately, we can now invoke expand-file-name and
190 file-attributes on filenames, both of which can throw, so we must 217 file-attributes on filenames, both of which can throw, so we must
@@ -221,28 +248,13 @@ directory_files_internal (Lisp_Object directory, Lisp_Object full,
221 || !IS_ANY_SEP (SREF (directory, directory_nbytes - 1))) 248 || !IS_ANY_SEP (SREF (directory, directory_nbytes - 1)))
222 needsep = 1; 249 needsep = 1;
223 250
224 /* Loop reading blocks until EOF or error. */ 251 /* Loop reading directory entries. */
225 for (;;) 252 for (struct dirent *dp; (dp = read_dirent (d, directory)); )
226 { 253 {
227 ptrdiff_t len; 254 ptrdiff_t len = dirent_namelen (dp);
228 bool wanted = 0; 255 Lisp_Object name = make_unibyte_string (dp->d_name, len);
229 Lisp_Object name, finalname; 256 Lisp_Object finalname = name;
230 struct gcpro gcpro1, gcpro2; 257 struct gcpro gcpro1, gcpro2;
231
232 errno = 0;
233 dp = readdir (d);
234 if (!dp)
235 {
236 if (errno == EAGAIN || errno == EINTR)
237 {
238 QUIT;
239 continue;
240 }
241 break;
242 }
243
244 len = dirent_namelen (dp);
245 name = finalname = make_unibyte_string (dp->d_name, len);
246 GCPRO2 (finalname, name); 258 GCPRO2 (finalname, name);
247 259
248 /* Note: DECODE_FILE can GC; it should protect its argument, 260 /* Note: DECODE_FILE can GC; it should protect its argument,
@@ -255,9 +267,8 @@ directory_files_internal (Lisp_Object directory, Lisp_Object full,
255 immediate_quit = 1; 267 immediate_quit = 1;
256 QUIT; 268 QUIT;
257 269
258 if (NILP (match) 270 bool wanted = (NILP (match)
259 || re_search (bufp, SSDATA (name), len, 0, len, 0) >= 0) 271 || re_search (bufp, SSDATA (name), len, 0, len, 0) >= 0);
260 wanted = 1;
261 272
262 immediate_quit = 0; 273 immediate_quit = 0;
263 274
@@ -446,8 +457,6 @@ static Lisp_Object
446file_name_completion (Lisp_Object file, Lisp_Object dirname, bool all_flag, 457file_name_completion (Lisp_Object file, Lisp_Object dirname, bool all_flag,
447 Lisp_Object predicate) 458 Lisp_Object predicate)
448{ 459{
449 DIR *d;
450 int fd;
451 ptrdiff_t bestmatchsize = 0; 460 ptrdiff_t bestmatchsize = 0;
452 int matchcount = 0; 461 int matchcount = 0;
453 /* If ALL_FLAG is 1, BESTMATCH is the list of all matches, decoded. 462 /* If ALL_FLAG is 1, BESTMATCH is the list of all matches, decoded.
@@ -481,37 +490,17 @@ file_name_completion (Lisp_Object file, Lisp_Object dirname, bool all_flag,
481 work with decoded file names, but we still do some filtering based 490 work with decoded file names, but we still do some filtering based
482 on the encoded file name. */ 491 on the encoded file name. */
483 encoded_file = ENCODE_FILE (file); 492 encoded_file = ENCODE_FILE (file);
484
485 encoded_dir = ENCODE_FILE (Fdirectory_file_name (dirname)); 493 encoded_dir = ENCODE_FILE (Fdirectory_file_name (dirname));
486 494 int fd;
487 d = open_directory (SSDATA (encoded_dir), &fd); 495 DIR *d = open_directory (encoded_dir, &fd);
488 if (!d)
489 report_file_error ("Opening directory", dirname);
490
491 record_unwind_protect_ptr (directory_files_internal_unwind, d); 496 record_unwind_protect_ptr (directory_files_internal_unwind, d);
492 497
493 /* Loop reading blocks */ 498 /* Loop reading directory entries. */
494 /* (att3b compiler bug requires do a null comparison this way) */ 499 for (struct dirent *dp; (dp = read_dirent (d, dirname)); )
495 while (1)
496 { 500 {
497 struct dirent *dp; 501 ptrdiff_t len = dirent_namelen (dp);
498 ptrdiff_t len;
499 bool canexclude = 0; 502 bool canexclude = 0;
500 503
501 errno = 0;
502 dp = readdir (d);
503 if (!dp)
504 {
505 if (errno == EAGAIN || errno == EINTR)
506 {
507 QUIT;
508 continue;
509 }
510 break;
511 }
512
513 len = dirent_namelen (dp);
514
515 QUIT; 504 QUIT;
516 if (len < SCHARS (encoded_file) 505 if (len < SCHARS (encoded_file)
517 || (scmp (dp->d_name, SSDATA (encoded_file), 506 || (scmp (dp->d_name, SSDATA (encoded_file),
diff --git a/src/dispextern.h b/src/dispextern.h
index 9ea64fb9f63..fbf0c74454d 100644
--- a/src/dispextern.h
+++ b/src/dispextern.h
@@ -1860,10 +1860,10 @@ GLYPH_CODE_P (Lisp_Object gc)
1860 : TYPE_MAXIMUM (EMACS_INT))))); 1860 : TYPE_MAXIMUM (EMACS_INT)))));
1861} 1861}
1862 1862
1863/* Non-zero means face attributes have been changed since the last 1863/* True means face attributes have been changed since the last
1864 redisplay. Used in redisplay_internal. */ 1864 redisplay. Used in redisplay_internal. */
1865 1865
1866extern int face_change_count; 1866extern bool face_change;
1867 1867
1868/* For reordering of bidirectional text. */ 1868/* For reordering of bidirectional text. */
1869 1869
diff --git a/src/emacs.c b/src/emacs.c
index 03dea46fe2d..87b1f11d59b 100644
--- a/src/emacs.c
+++ b/src/emacs.c
@@ -234,7 +234,7 @@ Initialization options:\n\
234 "\ 234 "\
235--no-desktop do not load a saved desktop\n\ 235--no-desktop do not load a saved desktop\n\
236--no-init-file, -q load neither ~/.emacs nor default.el\n\ 236--no-init-file, -q load neither ~/.emacs nor default.el\n\
237--no-shared-memory, -nl do not use shared memory\n\ 237--no-loadup, -nl do not load loadup.el into bare Emacs\n\
238--no-site-file do not load site-start.el\n\ 238--no-site-file do not load site-start.el\n\
239--no-site-lisp, -nsl do not add site-lisp directories to load-path\n\ 239--no-site-lisp, -nsl do not add site-lisp directories to load-path\n\
240--no-splash do not display a splash screen on startup\n\ 240--no-splash do not display a splash screen on startup\n\
@@ -2398,9 +2398,7 @@ hpux, irix, usg-unix-v) indicates some sort of Unix system. */);
2398 /* See configure.ac (and config.nt) for the possible SYSTEM_TYPEs. */ 2398 /* See configure.ac (and config.nt) for the possible SYSTEM_TYPEs. */
2399 2399
2400 DEFVAR_LISP ("system-configuration", Vsystem_configuration, 2400 DEFVAR_LISP ("system-configuration", Vsystem_configuration,
2401 doc: /* Value is string indicating configuration Emacs was built for. 2401 doc: /* Value is string indicating configuration Emacs was built for. */);
2402On MS-Windows, the value reflects the OS flavor and version on which
2403Emacs is running. */);
2404 Vsystem_configuration = build_string (EMACS_CONFIGURATION); 2402 Vsystem_configuration = build_string (EMACS_CONFIGURATION);
2405 2403
2406 DEFVAR_LISP ("system-configuration-options", Vsystem_configuration_options, 2404 DEFVAR_LISP ("system-configuration-options", Vsystem_configuration_options,
diff --git a/src/frame.c b/src/frame.c
index 2ce5a623853..e4adfe8f08f 100644
--- a/src/frame.c
+++ b/src/frame.c
@@ -3632,7 +3632,7 @@ x_set_font_backend (struct frame *f, Lisp_Object new_value, Lisp_Object old_valu
3632 3632
3633 XSETFRAME (frame, f); 3633 XSETFRAME (frame, f);
3634 x_set_font (f, Fframe_parameter (frame, Qfont), Qnil); 3634 x_set_font (f, Fframe_parameter (frame, Qfont), Qnil);
3635 ++face_change_count; 3635 face_change = true;
3636 windows_or_buffers_changed = 18; 3636 windows_or_buffers_changed = 18;
3637 } 3637 }
3638} 3638}
diff --git a/src/indent.c b/src/indent.c
index 589aeb9c005..8660400e1ce 100644
--- a/src/indent.c
+++ b/src/indent.c
@@ -2137,10 +2137,15 @@ whether or not it is currently displayed in some window. */)
2137 if (nlines > 1) 2137 if (nlines > 1)
2138 move_it_by_lines (&it, min (PTRDIFF_MAX, nlines - 1)); 2138 move_it_by_lines (&it, min (PTRDIFF_MAX, nlines - 1));
2139 } 2139 }
2140 else 2140 else /* it_start = ZV */
2141 { 2141 {
2142 it.vpos = 0; 2142 it.vpos = 0;
2143 move_it_by_lines (&it, min (PTRDIFF_MAX, nlines)); 2143 move_it_by_lines (&it, min (PTRDIFF_MAX, nlines));
2144 /* We could have some display or overlay string at ZV,
2145 in which case it.vpos will be nonzero now, while
2146 actually we didn't move vertically at all. */
2147 if (IT_CHARPOS (it) == CHARPOS (pt) && CHARPOS (pt) == it_start)
2148 it.vpos = 0;
2144 } 2149 }
2145 } 2150 }
2146 2151
diff --git a/src/insdel.c b/src/insdel.c
index 3b5b520aac8..80650be25ae 100644
--- a/src/insdel.c
+++ b/src/insdel.c
@@ -1,7 +1,6 @@
1/* Buffer insertion/deletion and gap motion for GNU Emacs. 1/* Buffer insertion/deletion and gap motion for GNU Emacs.
2 2 Copyright (C) 1985-1986, 1993-1995, 1997-2015 Free Software
3Copyright (C) 1985-1986, 1993-1995, 1997-2015 Free Software Foundation, 3 Foundation, Inc.
4Inc.
5 4
6This file is part of GNU Emacs. 5This file is part of GNU Emacs.
7 6
diff --git a/src/keyboard.c b/src/keyboard.c
index a5e1363326c..a9ff77d0473 100644
--- a/src/keyboard.c
+++ b/src/keyboard.c
@@ -2288,30 +2288,41 @@ read_decoded_event_from_main_queue (struct timespec *end_time,
2288 { /* An encoded byte sequence, let's try to decode it. */ 2288 { /* An encoded byte sequence, let's try to decode it. */
2289 struct coding_system *coding 2289 struct coding_system *coding
2290 = TERMINAL_KEYBOARD_CODING (terminal); 2290 = TERMINAL_KEYBOARD_CODING (terminal);
2291 unsigned char src[MAX_ENCODED_BYTES]; 2291
2292 unsigned char dest[MAX_ENCODED_BYTES * MAX_MULTIBYTE_LENGTH]; 2292 if (raw_text_coding_system_p (coding))
2293 int i; 2293 {
2294 for (i = 0; i < n; i++) 2294 int i;
2295 src[i] = XINT (events[i]); 2295 if (meta_key != 2)
2296 if (meta_key != 2) 2296 for (i = 0; i < n; i++)
2297 for (i = 0; i < n; i++) 2297 events[i] = make_number (XINT (events[i]) & ~0x80);
2298 src[i] &= ~0x80;
2299 coding->destination = dest;
2300 coding->dst_bytes = sizeof dest;
2301 decode_coding_c_string (coding, src, n, Qnil);
2302 eassert (coding->produced_char <= n);
2303 if (coding->produced_char == 0)
2304 { /* The encoded sequence is incomplete. */
2305 if (n < MAX_ENCODED_BYTES) /* Avoid buffer overflow. */
2306 continue; /* Read on! */
2307 } 2298 }
2308 else 2299 else
2309 { 2300 {
2310 const unsigned char *p = coding->destination; 2301 unsigned char src[MAX_ENCODED_BYTES];
2311 eassert (coding->carryover_bytes == 0); 2302 unsigned char dest[MAX_ENCODED_BYTES * MAX_MULTIBYTE_LENGTH];
2312 n = 0; 2303 int i;
2313 while (n < coding->produced_char) 2304 for (i = 0; i < n; i++)
2314 events[n++] = make_number (STRING_CHAR_ADVANCE (p)); 2305 src[i] = XINT (events[i]);
2306 if (meta_key != 2)
2307 for (i = 0; i < n; i++)
2308 src[i] &= ~0x80;
2309 coding->destination = dest;
2310 coding->dst_bytes = sizeof dest;
2311 decode_coding_c_string (coding, src, n, Qnil);
2312 eassert (coding->produced_char <= n);
2313 if (coding->produced_char == 0)
2314 { /* The encoded sequence is incomplete. */
2315 if (n < MAX_ENCODED_BYTES) /* Avoid buffer overflow. */
2316 continue; /* Read on! */
2317 }
2318 else
2319 {
2320 const unsigned char *p = coding->destination;
2321 eassert (coding->carryover_bytes == 0);
2322 n = 0;
2323 while (n < coding->produced_char)
2324 events[n++] = make_number (STRING_CHAR_ADVANCE (p));
2325 }
2315 } 2326 }
2316 } 2327 }
2317 /* Now `events' should hold decoded events. 2328 /* Now `events' should hold decoded events.
@@ -3639,7 +3650,9 @@ kbd_buffer_store_event_hold (register struct input_event *event,
3639 as input, set quit-flag to cause an interrupt. */ 3650 as input, set quit-flag to cause an interrupt. */
3640 if (!NILP (Vthrow_on_input) 3651 if (!NILP (Vthrow_on_input)
3641 && event->kind != FOCUS_IN_EVENT 3652 && event->kind != FOCUS_IN_EVENT
3653 && event->kind != FOCUS_OUT_EVENT
3642 && event->kind != HELP_EVENT 3654 && event->kind != HELP_EVENT
3655 && event->kind != ICONIFY_EVENT
3643 && event->kind != DEICONIFY_EVENT) 3656 && event->kind != DEICONIFY_EVENT)
3644 { 3657 {
3645 Vquit_flag = Vthrow_on_input; 3658 Vquit_flag = Vthrow_on_input;
diff --git a/src/lisp.mk b/src/lisp.mk
index a9deb2b53d9..ee2a07c0fd7 100644
--- a/src/lisp.mk
+++ b/src/lisp.mk
@@ -71,6 +71,7 @@ lisp = \
71 $(lispsource)/faces.elc \ 71 $(lispsource)/faces.elc \
72 $(lispsource)/button.elc \ 72 $(lispsource)/button.elc \
73 $(lispsource)/startup.elc \ 73 $(lispsource)/startup.elc \
74 $(lispsource)/emacs-lisp/cl-preloaded.elc \
74 $(lispsource)/emacs-lisp/nadvice.elc \ 75 $(lispsource)/emacs-lisp/nadvice.elc \
75 $(lispsource)/minibuffer.elc \ 76 $(lispsource)/minibuffer.elc \
76 $(lispsource)/abbrev.elc \ 77 $(lispsource)/abbrev.elc \
diff --git a/src/msdos.c b/src/msdos.c
index 3c2277e6955..8b05b34795d 100644
--- a/src/msdos.c
+++ b/src/msdos.c
@@ -1733,7 +1733,7 @@ IT_set_frame_parameters (struct frame *f, Lisp_Object alist)
1733 1733
1734 if (redraw) 1734 if (redraw)
1735 { 1735 {
1736 face_change_count++; /* forces xdisp.c to recompute basic faces */ 1736 face_change = true; /* forces xdisp.c to recompute basic faces */
1737 if (f == SELECTED_FRAME ()) 1737 if (f == SELECTED_FRAME ())
1738 redraw_frame (f); 1738 redraw_frame (f);
1739 } 1739 }
diff --git a/src/nsterm.m b/src/nsterm.m
index ee1268ef850..e90c3d70db3 100644
--- a/src/nsterm.m
+++ b/src/nsterm.m
@@ -6773,7 +6773,9 @@ if (cols > 0 && rows > 0)
6773 return; 6773 return;
6774 6774
6775 ns_clear_frame_area (emacsframe, x, y, width, height); 6775 ns_clear_frame_area (emacsframe, x, y, width, height);
6776 block_input ();
6776 expose_frame (emacsframe, x, y, width, height); 6777 expose_frame (emacsframe, x, y, width, height);
6778 unblock_input ();
6777 6779
6778 /* 6780 /*
6779 drawRect: may be called (at least in OS X 10.5) for invisible 6781 drawRect: may be called (at least in OS X 10.5) for invisible
diff --git a/src/w32.c b/src/w32.c
index 31b13289b57..90096689776 100644
--- a/src/w32.c
+++ b/src/w32.c
@@ -3433,17 +3433,51 @@ sys_readdir (DIR *dirp)
3433 } 3433 }
3434 3434
3435 if (dir_find_handle == INVALID_HANDLE_VALUE) 3435 if (dir_find_handle == INVALID_HANDLE_VALUE)
3436 return NULL; 3436 {
3437 /* Any changes in the value of errno here should be in sync
3438 with what directory_files_internal does when it calls
3439 readdir. */
3440 switch (GetLastError ())
3441 {
3442 /* Windows uses this value when FindFirstFile finds no
3443 files that match the wildcard. This is not supposed
3444 to happen, since our wildcard is "*", but just in
3445 case, if there's some weird empty directory with not
3446 even "." and ".." entries... */
3447 case ERROR_FILE_NOT_FOUND:
3448 errno = 0;
3449 /* FALLTHRU */
3450 default:
3451 break;
3452 case ERROR_ACCESS_DENIED:
3453 case ERROR_NETWORK_ACCESS_DENIED:
3454 errno = EACCES;
3455 break;
3456 case ERROR_PATH_NOT_FOUND:
3457 case ERROR_INVALID_DRIVE:
3458 case ERROR_BAD_NETPATH:
3459 case ERROR_BAD_NET_NAME:
3460 errno = ENOENT;
3461 break;
3462 }
3463 return NULL;
3464 }
3437 } 3465 }
3438 else if (w32_unicode_filenames) 3466 else if (w32_unicode_filenames)
3439 { 3467 {
3440 if (!FindNextFileW (dir_find_handle, &dir_find_data_w)) 3468 if (!FindNextFileW (dir_find_handle, &dir_find_data_w))
3441 return NULL; 3469 {
3470 errno = 0;
3471 return NULL;
3472 }
3442 } 3473 }
3443 else 3474 else
3444 { 3475 {
3445 if (!FindNextFileA (dir_find_handle, &dir_find_data_a)) 3476 if (!FindNextFileA (dir_find_handle, &dir_find_data_a))
3446 return NULL; 3477 {
3478 errno = 0;
3479 return NULL;
3480 }
3447 } 3481 }
3448 3482
3449 /* Emacs never uses this value, so don't bother making it match 3483 /* Emacs never uses this value, so don't bother making it match
@@ -3545,7 +3579,11 @@ open_unc_volume (const char *path)
3545 if (result == NO_ERROR) 3579 if (result == NO_ERROR)
3546 return henum; 3580 return henum;
3547 else 3581 else
3548 return INVALID_HANDLE_VALUE; 3582 {
3583 /* Make sure directory_files_internal reports a sensible error. */
3584 errno = ENOENT;
3585 return INVALID_HANDLE_VALUE;
3586 }
3549} 3587}
3550 3588
3551static void * 3589static void *
diff --git a/src/w32fns.c b/src/w32fns.c
index c269c4f8e68..8435270438d 100644
--- a/src/w32fns.c
+++ b/src/w32fns.c
@@ -1759,6 +1759,50 @@ x_change_tool_bar_height (struct frame *f, int height)
1759 x_clear_under_internal_border (f); 1759 x_clear_under_internal_border (f);
1760} 1760}
1761 1761
1762static void
1763w32_set_title_bar_text (struct frame *f, Lisp_Object name)
1764{
1765 if (FRAME_W32_WINDOW (f))
1766 {
1767 block_input ();
1768#ifdef __CYGWIN__
1769 GUI_FN (SetWindowText) (FRAME_W32_WINDOW (f),
1770 GUI_SDATA (GUI_ENCODE_SYSTEM (name)));
1771#else
1772 /* The frame's title many times shows the name of the file
1773 visited in the selected window's buffer, so it makes sense to
1774 support non-ASCII characters outside of the current system
1775 codepage in the title. */
1776 if (w32_unicode_filenames)
1777 {
1778 Lisp_Object encoded_title = ENCODE_UTF_8 (name);
1779 wchar_t *title_w;
1780 int tlen = pMultiByteToWideChar (CP_UTF8, 0, SSDATA (encoded_title),
1781 -1, NULL, 0);
1782
1783 if (tlen > 0)
1784 {
1785 /* Windows truncates the title text beyond what fits on
1786 a single line, so we can limit the length to some
1787 reasonably large value, and use alloca. */
1788 if (tlen > 10000)
1789 tlen = 10000;
1790 title_w = alloca ((tlen + 1) * sizeof (wchar_t));
1791 pMultiByteToWideChar (CP_UTF8, 0, SSDATA (encoded_title), -1,
1792 title_w, tlen);
1793 title_w[tlen] = L'\0';
1794 SetWindowTextW (FRAME_W32_WINDOW (f), title_w);
1795 }
1796 else /* Conversion to UTF-16 failed, so we punt. */
1797 SetWindowTextA (FRAME_W32_WINDOW (f),
1798 SSDATA (ENCODE_SYSTEM (name)));
1799 }
1800 else
1801 SetWindowTextA (FRAME_W32_WINDOW (f), SSDATA (ENCODE_SYSTEM (name)));
1802#endif
1803 unblock_input ();
1804 }
1805}
1762 1806
1763/* Change the name of frame F to NAME. If NAME is nil, set F's name to 1807/* Change the name of frame F to NAME. If NAME is nil, set F's name to
1764 w32_id_name. 1808 w32_id_name.
@@ -1812,13 +1856,7 @@ x_set_name (struct frame *f, Lisp_Object name, bool explicit)
1812 if (! NILP (f->title)) 1856 if (! NILP (f->title))
1813 name = f->title; 1857 name = f->title;
1814 1858
1815 if (FRAME_W32_WINDOW (f)) 1859 w32_set_title_bar_text (f, name);
1816 {
1817 block_input ();
1818 GUI_FN (SetWindowText) (FRAME_W32_WINDOW (f),
1819 GUI_SDATA (GUI_ENCODE_SYSTEM (name)));
1820 unblock_input ();
1821 }
1822} 1860}
1823 1861
1824/* This function should be called when the user's lisp code has 1862/* This function should be called when the user's lisp code has
@@ -1856,13 +1894,7 @@ x_set_title (struct frame *f, Lisp_Object name, Lisp_Object old_name)
1856 if (NILP (name)) 1894 if (NILP (name))
1857 name = f->name; 1895 name = f->name;
1858 1896
1859 if (FRAME_W32_WINDOW (f)) 1897 w32_set_title_bar_text (f, name);
1860 {
1861 block_input ();
1862 GUI_FN (SetWindowText) (FRAME_W32_WINDOW (f),
1863 GUI_SDATA (GUI_ENCODE_SYSTEM (name)));
1864 unblock_input ();
1865 }
1866} 1898}
1867 1899
1868void 1900void
@@ -4895,25 +4927,38 @@ If omitted or nil, that stands for the selected frame's display. */)
4895} 4927}
4896 4928
4897DEFUN ("x-server-vendor", Fx_server_vendor, Sx_server_vendor, 0, 1, 0, 4929DEFUN ("x-server-vendor", Fx_server_vendor, Sx_server_vendor, 0, 1, 0,
4898 doc: /* Return the "vendor ID" string of the W32 system (Microsoft). 4930 doc: /* Return the "vendor ID" string of the GUI software on TERMINAL.
4899The optional argument DISPLAY specifies which display to ask about. 4931
4900DISPLAY should be either a frame or a display name (a string). 4932\(Labeling every distributor as a "vendor" embodies the false assumption
4933that operating systems cannot be developed and distributed noncommercially.)
4934
4935For GNU and Unix systems, this queries the X server software; for
4936MS-Windows, this queries the OS.
4937
4938The optional argument TERMINAL specifies which display to ask about.
4939TERMINAL should be a terminal object, a frame or a display name (a string).
4901If omitted or nil, that stands for the selected frame's display. */) 4940If omitted or nil, that stands for the selected frame's display. */)
4902 (Lisp_Object display) 4941 (Lisp_Object terminal)
4903{ 4942{
4904 return build_string ("Microsoft Corp."); 4943 return build_string ("Microsoft Corp.");
4905} 4944}
4906 4945
4907DEFUN ("x-server-version", Fx_server_version, Sx_server_version, 0, 1, 0, 4946DEFUN ("x-server-version", Fx_server_version, Sx_server_version, 0, 1, 0,
4908 doc: /* Return the version numbers of the server of DISPLAY. 4947 doc: /* Return the version numbers of the GUI software on TERMINAL.
4909The value is a list of three integers: the major and minor 4948The value is a list of three integers specifying the version of the GUI
4910version numbers of the X Protocol in use, and the distributor-specific 4949software in use.
4911release number. See also the function `x-server-vendor'.
4912 4950
4913The optional argument DISPLAY specifies which display to ask about. 4951For GNU and Unix system, the first 2 numbers are the version of the X
4914DISPLAY should be either a frame or a display name (a string). 4952Protocol used on TERMINAL and the 3rd number is the distributor-specific
4953release number. For MS-Windows, the 3 numbers report the version and
4954the build number of the OS.
4955
4956See also the function `x-server-vendor'.
4957
4958The optional argument TERMINAL specifies which display to ask about.
4959TERMINAL should be a terminal object, a frame or a display name (a string).
4915If omitted or nil, that stands for the selected frame's display. */) 4960If omitted or nil, that stands for the selected frame's display. */)
4916 (Lisp_Object display) 4961 (Lisp_Object terminal)
4917{ 4962{
4918 return list3i (w32_major_version, w32_minor_version, w32_build_number); 4963 return list3i (w32_major_version, w32_minor_version, w32_build_number);
4919} 4964}
@@ -5623,7 +5668,7 @@ x_create_tip_frame (struct w32_display_info *dpyinfo,
5623 ptrdiff_t count = SPECPDL_INDEX (); 5668 ptrdiff_t count = SPECPDL_INDEX ();
5624 struct gcpro gcpro1, gcpro2, gcpro3; 5669 struct gcpro gcpro1, gcpro2, gcpro3;
5625 struct kboard *kb; 5670 struct kboard *kb;
5626 int face_change_count_before = face_change_count; 5671 bool face_change_before = face_change;
5627 Lisp_Object buffer; 5672 Lisp_Object buffer;
5628 struct buffer *old_buffer; 5673 struct buffer *old_buffer;
5629 5674
@@ -5835,11 +5880,11 @@ x_create_tip_frame (struct w32_display_info *dpyinfo,
5835 f->can_x_set_window_size = true; 5880 f->can_x_set_window_size = true;
5836 5881
5837 /* Setting attributes of faces of the tooltip frame from resources 5882 /* Setting attributes of faces of the tooltip frame from resources
5838 and similar will increment face_change_count, which leads to the 5883 and similar will set face_change, which leads to the
5839 clearing of all current matrices. Since this isn't necessary 5884 clearing of all current matrices. Since this isn't necessary
5840 here, avoid it by resetting face_change_count to the value it 5885 here, avoid it by resetting face_change to the value it
5841 had before we created the tip frame. */ 5886 had before we created the tip frame. */
5842 face_change_count = face_change_count_before; 5887 face_change = face_change_before;
5843 5888
5844 /* Discard the unwind_protect. */ 5889 /* Discard the unwind_protect. */
5845 return unbind_to (count, frame); 5890 return unbind_to (count, frame);
diff --git a/src/w32font.c b/src/w32font.c
index ab772679908..360ad3f1c48 100644
--- a/src/w32font.c
+++ b/src/w32font.c
@@ -95,7 +95,7 @@ struct font_callback_data
95 /* The list to add matches to. */ 95 /* The list to add matches to. */
96 Lisp_Object list; 96 Lisp_Object list;
97 /* Whether to match only opentype fonts. */ 97 /* Whether to match only opentype fonts. */
98 int opentype_only; 98 bool opentype_only;
99}; 99};
100 100
101/* Handles the problem that EnumFontFamiliesEx will not return all 101/* Handles the problem that EnumFontFamiliesEx will not return all
@@ -746,7 +746,8 @@ w32font_otf_drive (struct font *font, Lisp_Object features,
746 Additional parameter opentype_only restricts the returned fonts to 746 Additional parameter opentype_only restricts the returned fonts to
747 opentype fonts, which can be used with the Uniscribe backend. */ 747 opentype fonts, which can be used with the Uniscribe backend. */
748Lisp_Object 748Lisp_Object
749w32font_list_internal (struct frame *f, Lisp_Object font_spec, int opentype_only) 749w32font_list_internal (struct frame *f, Lisp_Object font_spec,
750 bool opentype_only)
750{ 751{
751 struct font_callback_data match_data; 752 struct font_callback_data match_data;
752 HDC dc; 753 HDC dc;
@@ -798,7 +799,8 @@ w32font_list_internal (struct frame *f, Lisp_Object font_spec, int opentype_only
798 Additional parameter opentype_only restricts the returned fonts to 799 Additional parameter opentype_only restricts the returned fonts to
799 opentype fonts, which can be used with the Uniscribe backend. */ 800 opentype fonts, which can be used with the Uniscribe backend. */
800Lisp_Object 801Lisp_Object
801w32font_match_internal (struct frame *f, Lisp_Object font_spec, int opentype_only) 802w32font_match_internal (struct frame *f, Lisp_Object font_spec,
803 bool opentype_only)
802{ 804{
803 struct font_callback_data match_data; 805 struct font_callback_data match_data;
804 HDC dc; 806 HDC dc;
@@ -2459,7 +2461,7 @@ w32font_filter_properties (Lisp_Object font, Lisp_Object alist)
2459struct font_driver w32font_driver = 2461struct font_driver w32font_driver =
2460 { 2462 {
2461 LISP_INITIALLY_ZERO, /* Qgdi */ 2463 LISP_INITIALLY_ZERO, /* Qgdi */
2462 0, /* case insensitive */ 2464 false, /* case insensitive */
2463 w32font_get_cache, 2465 w32font_get_cache,
2464 w32font_list, 2466 w32font_list,
2465 w32font_match, 2467 w32font_match,
diff --git a/src/w32font.h b/src/w32font.h
index 82c5e09b9fc..0ad01254be9 100644
--- a/src/w32font.h
+++ b/src/w32font.h
@@ -66,10 +66,10 @@ struct w32font_info
66Lisp_Object w32font_get_cache (struct frame *fe); 66Lisp_Object w32font_get_cache (struct frame *fe);
67Lisp_Object w32font_list_internal (struct frame *f, 67Lisp_Object w32font_list_internal (struct frame *f,
68 Lisp_Object font_spec, 68 Lisp_Object font_spec,
69 int opentype_only); 69 bool opentype_only);
70Lisp_Object w32font_match_internal (struct frame *f, 70Lisp_Object w32font_match_internal (struct frame *f,
71 Lisp_Object font_spec, 71 Lisp_Object font_spec,
72 int opentype_only); 72 bool opentype_only);
73int w32font_open_internal (struct frame *f, Lisp_Object font_entity, 73int w32font_open_internal (struct frame *f, Lisp_Object font_entity,
74 int pixel_size, Lisp_Object font_object); 74 int pixel_size, Lisp_Object font_object);
75void w32font_close (struct font *font); 75void w32font_close (struct font *font);
diff --git a/src/w32heap.c b/src/w32heap.c
index d5a9dae0aa4..ee0eb161502 100644
--- a/src/w32heap.c
+++ b/src/w32heap.c
@@ -1,5 +1,5 @@
1/* Heap management routines for GNU Emacs on the Microsoft Windows 1/* Heap management routines for GNU Emacs on the Microsoft Windows API.
2 API. Copyright (C) 1994, 2001-2015 Free Software Foundation, Inc. 2 Copyright (C) 1994, 2001-2015 Free Software Foundation, Inc.
3 3
4 This file is part of GNU Emacs. 4 This file is part of GNU Emacs.
5 5
diff --git a/src/w32menu.c b/src/w32menu.c
index 2a1dafbd6d7..40b8f5f82a0 100644
--- a/src/w32menu.c
+++ b/src/w32menu.c
@@ -103,7 +103,7 @@ void set_frame_menubar (struct frame *, bool, bool);
103#ifdef HAVE_DIALOGS 103#ifdef HAVE_DIALOGS
104static Lisp_Object w32_dialog_show (struct frame *, Lisp_Object, Lisp_Object, char **); 104static Lisp_Object w32_dialog_show (struct frame *, Lisp_Object, Lisp_Object, char **);
105#else 105#else
106static int is_simple_dialog (Lisp_Object); 106static bool is_simple_dialog (Lisp_Object);
107static Lisp_Object simple_dialog_show (struct frame *, Lisp_Object, Lisp_Object); 107static Lisp_Object simple_dialog_show (struct frame *, Lisp_Object, Lisp_Object);
108#endif 108#endif
109 109
@@ -166,7 +166,7 @@ w32_popup_dialog (struct frame *f, Lisp_Object header, Lisp_Object contents)
166void 166void
167x_activate_menubar (struct frame *f) 167x_activate_menubar (struct frame *f)
168{ 168{
169 set_frame_menubar (f, 0, 1); 169 set_frame_menubar (f, false, true);
170 170
171 /* Lock out further menubar changes while active. */ 171 /* Lock out further menubar changes while active. */
172 f->output_data.w32->menubar_active = 1; 172 f->output_data.w32->menubar_active = 1;
@@ -289,7 +289,7 @@ set_frame_menubar (struct frame *f, bool first_time, bool deep_p)
289 XSETFRAME (Vmenu_updating_frame, f); 289 XSETFRAME (Vmenu_updating_frame, f);
290 290
291 if (! menubar_widget) 291 if (! menubar_widget)
292 deep_p = 1; 292 deep_p = true;
293 293
294 if (deep_p) 294 if (deep_p)
295 { 295 {
@@ -388,7 +388,7 @@ set_frame_menubar (struct frame *f, bool first_time, bool deep_p)
388 else 388 else
389 first_wv->contents = wv; 389 first_wv->contents = wv;
390 /* Don't set wv->name here; GC during the loop might relocate it. */ 390 /* Don't set wv->name here; GC during the loop might relocate it. */
391 wv->enabled = 1; 391 wv->enabled = true;
392 wv->button_type = BUTTON_TYPE_NONE; 392 wv->button_type = BUTTON_TYPE_NONE;
393 prev_wv = wv; 393 prev_wv = wv;
394 } 394 }
@@ -501,7 +501,7 @@ set_frame_menubar (struct frame *f, bool first_time, bool deep_p)
501 /* Force the window size to be recomputed so that the frame's text 501 /* Force the window size to be recomputed so that the frame's text
502 area remains the same, if menubar has just been created. */ 502 area remains the same, if menubar has just been created. */
503 if (old_widget == NULL) 503 if (old_widget == NULL)
504 adjust_frame_size (f, -1, -1, 2, 0, Qmenu_bar_lines); 504 adjust_frame_size (f, -1, -1, 2, false, Qmenu_bar_lines);
505 } 505 }
506 506
507 unblock_input (); 507 unblock_input ();
@@ -518,7 +518,7 @@ initialize_frame_menubar (struct frame *f)
518 /* This function is called before the first chance to redisplay 518 /* This function is called before the first chance to redisplay
519 the frame. It has to be, so the frame will have the right size. */ 519 the frame. It has to be, so the frame will have the right size. */
520 fset_menu_bar_items (f, menu_bar_items (FRAME_MENU_BAR_ITEMS (f))); 520 fset_menu_bar_items (f, menu_bar_items (FRAME_MENU_BAR_ITEMS (f)));
521 set_frame_menubar (f, 1, 1); 521 set_frame_menubar (f, true, true);
522} 522}
523 523
524/* Get rid of the menu bar of frame F, and free its storage. 524/* Get rid of the menu bar of frame F, and free its storage.
@@ -570,7 +570,7 @@ w32_menu_show (struct frame *f, int x, int y, int menuflags,
570 Lisp_Object *subprefix_stack 570 Lisp_Object *subprefix_stack
571 = (Lisp_Object *) alloca (menu_items_used * word_size); 571 = (Lisp_Object *) alloca (menu_items_used * word_size);
572 int submenu_depth = 0; 572 int submenu_depth = 0;
573 int first_pane; 573 bool first_pane;
574 574
575 *error = NULL; 575 *error = NULL;
576 576
@@ -590,7 +590,7 @@ w32_menu_show (struct frame *f, int x, int y, int menuflags,
590 wv = make_widget_value ("menu", NULL, true, Qnil); 590 wv = make_widget_value ("menu", NULL, true, Qnil);
591 wv->button_type = BUTTON_TYPE_NONE; 591 wv->button_type = BUTTON_TYPE_NONE;
592 first_wv = wv; 592 first_wv = wv;
593 first_pane = 1; 593 first_pane = true;
594 594
595 /* Loop over all panes and items, filling in the tree. */ 595 /* Loop over all panes and items, filling in the tree. */
596 i = 0; 596 i = 0;
@@ -601,14 +601,14 @@ w32_menu_show (struct frame *f, int x, int y, int menuflags,
601 submenu_stack[submenu_depth++] = save_wv; 601 submenu_stack[submenu_depth++] = save_wv;
602 save_wv = prev_wv; 602 save_wv = prev_wv;
603 prev_wv = 0; 603 prev_wv = 0;
604 first_pane = 1; 604 first_pane = false;
605 i++; 605 i++;
606 } 606 }
607 else if (EQ (AREF (menu_items, i), Qlambda)) 607 else if (EQ (AREF (menu_items, i), Qlambda))
608 { 608 {
609 prev_wv = save_wv; 609 prev_wv = save_wv;
610 save_wv = submenu_stack[--submenu_depth]; 610 save_wv = submenu_stack[--submenu_depth];
611 first_pane = 0; 611 first_pane = false;
612 i++; 612 i++;
613 } 613 }
614 else if (EQ (AREF (menu_items, i), Qt) 614 else if (EQ (AREF (menu_items, i), Qt)
@@ -664,7 +664,7 @@ w32_menu_show (struct frame *f, int x, int y, int menuflags,
664 save_wv = wv; 664 save_wv = wv;
665 prev_wv = 0; 665 prev_wv = 0;
666 } 666 }
667 first_pane = 0; 667 first_pane = false;
668 i += MENU_ITEMS_PANE_LENGTH; 668 i += MENU_ITEMS_PANE_LENGTH;
669 } 669 }
670 else 670 else
@@ -883,8 +883,9 @@ w32_dialog_show (struct frame *f, Lisp_Object title,
883 883
884 /* Number of elements seen so far, before boundary. */ 884 /* Number of elements seen so far, before boundary. */
885 int left_count = 0; 885 int left_count = 0;
886 /* 1 means we've seen the boundary between left-hand elts and right-hand. */ 886 /* true means we've seen the boundary between left-hand elts and
887 int boundary_seen = 0; 887 right-hand. */
888 bool boundary_seen = false;
888 889
889 *error = NULL; 890 *error = NULL;
890 891
@@ -928,7 +929,7 @@ w32_dialog_show (struct frame *f, Lisp_Object title,
928 { 929 {
929 /* This is the boundary between left-side elts 930 /* This is the boundary between left-side elts
930 and right-side elts. Stop incrementing right_count. */ 931 and right-side elts. Stop incrementing right_count. */
931 boundary_seen = 1; 932 boundary_seen = true;
932 i++; 933 i++;
933 continue; 934 continue;
934 } 935 }
@@ -986,7 +987,7 @@ w32_dialog_show (struct frame *f, Lisp_Object title,
986 /* Actually create the dialog. */ 987 /* Actually create the dialog. */
987 dialog_id = widget_id_tick++; 988 dialog_id = widget_id_tick++;
988 menu = lw_create_widget (first_wv->name, "dialog", dialog_id, first_wv, 989 menu = lw_create_widget (first_wv->name, "dialog", dialog_id, first_wv,
989 f->output_data.w32->widget, 1, 0, 990 f->output_data.w32->widget, true, 0,
990 dialog_selection_callback, 0); 991 dialog_selection_callback, 0);
991 lw_modify_all_widgets (dialog_id, first_wv->contents, TRUE); 992 lw_modify_all_widgets (dialog_id, first_wv->contents, TRUE);
992 993
@@ -1037,25 +1038,25 @@ w32_dialog_show (struct frame *f, Lisp_Object title,
1037 anywhere in Emacs that uses the other specific dialog choices that 1038 anywhere in Emacs that uses the other specific dialog choices that
1038 MessageBox provides. */ 1039 MessageBox provides. */
1039 1040
1040static int 1041static bool
1041is_simple_dialog (Lisp_Object contents) 1042is_simple_dialog (Lisp_Object contents)
1042{ 1043{
1043 Lisp_Object options; 1044 Lisp_Object options;
1044 Lisp_Object name, yes, no, other; 1045 Lisp_Object name, yes, no, other;
1045 1046
1046 if (!CONSP (contents)) 1047 if (!CONSP (contents))
1047 return 0; 1048 return false;
1048 options = XCDR (contents); 1049 options = XCDR (contents);
1049 1050
1050 yes = build_string ("Yes"); 1051 yes = build_string ("Yes");
1051 no = build_string ("No"); 1052 no = build_string ("No");
1052 1053
1053 if (!CONSP (options)) 1054 if (!CONSP (options))
1054 return 0; 1055 return false;
1055 1056
1056 name = XCAR (options); 1057 name = XCAR (options);
1057 if (!CONSP (name)) 1058 if (!CONSP (name))
1058 return 0; 1059 return false;
1059 name = XCAR (name); 1060 name = XCAR (name);
1060 1061
1061 if (!NILP (Fstring_equal (name, yes))) 1062 if (!NILP (Fstring_equal (name, yes)))
@@ -1063,18 +1064,18 @@ is_simple_dialog (Lisp_Object contents)
1063 else if (!NILP (Fstring_equal (name, no))) 1064 else if (!NILP (Fstring_equal (name, no)))
1064 other = yes; 1065 other = yes;
1065 else 1066 else
1066 return 0; 1067 return false;
1067 1068
1068 options = XCDR (options); 1069 options = XCDR (options);
1069 if (!CONSP (options)) 1070 if (!CONSP (options))
1070 return 0; 1071 return false;
1071 1072
1072 name = XCAR (options); 1073 name = XCAR (options);
1073 if (!CONSP (name)) 1074 if (!CONSP (name))
1074 return 0; 1075 return false;
1075 name = XCAR (name); 1076 name = XCAR (name);
1076 if (NILP (Fstring_equal (name, other))) 1077 if (NILP (Fstring_equal (name, other)))
1077 return 0; 1078 return false;
1078 1079
1079 /* Check there are no more options. */ 1080 /* Check there are no more options. */
1080 options = XCDR (options); 1081 options = XCDR (options);
diff --git a/src/w32uniscribe.c b/src/w32uniscribe.c
index 9cd97e28616..73c0410c7b7 100644
--- a/src/w32uniscribe.c
+++ b/src/w32uniscribe.c
@@ -67,7 +67,7 @@ memq_no_quit (Lisp_Object elt, Lisp_Object list)
67static Lisp_Object 67static Lisp_Object
68uniscribe_list (struct frame *f, Lisp_Object font_spec) 68uniscribe_list (struct frame *f, Lisp_Object font_spec)
69{ 69{
70 Lisp_Object fonts = w32font_list_internal (f, font_spec, 1); 70 Lisp_Object fonts = w32font_list_internal (f, font_spec, true);
71 FONT_ADD_LOG ("uniscribe-list", font_spec, fonts); 71 FONT_ADD_LOG ("uniscribe-list", font_spec, fonts);
72 return fonts; 72 return fonts;
73} 73}
@@ -75,7 +75,7 @@ uniscribe_list (struct frame *f, Lisp_Object font_spec)
75static Lisp_Object 75static Lisp_Object
76uniscribe_match (struct frame *f, Lisp_Object font_spec) 76uniscribe_match (struct frame *f, Lisp_Object font_spec)
77{ 77{
78 Lisp_Object entity = w32font_match_internal (f, font_spec, 1); 78 Lisp_Object entity = w32font_match_internal (f, font_spec, true);
79 FONT_ADD_LOG ("uniscribe-match", font_spec, entity); 79 FONT_ADD_LOG ("uniscribe-match", font_spec, entity);
80 return entity; 80 return entity;
81} 81}
diff --git a/src/xdisp.c b/src/xdisp.c
index d868633e25c..01d598fe2c2 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -2730,9 +2730,9 @@ init_iterator (struct it *it, struct window *w,
2730 free realized faces now because they depend on face definitions 2730 free realized faces now because they depend on face definitions
2731 that might have changed. Don't free faces while there might be 2731 that might have changed. Don't free faces while there might be
2732 desired matrices pending which reference these faces. */ 2732 desired matrices pending which reference these faces. */
2733 if (face_change_count && !inhibit_free_realized_faces) 2733 if (face_change && !inhibit_free_realized_faces)
2734 { 2734 {
2735 face_change_count = 0; 2735 face_change = false;
2736 free_all_realized_faces (Qnil); 2736 free_all_realized_faces (Qnil);
2737 } 2737 }
2738 2738
@@ -9316,6 +9316,7 @@ move_it_to (struct it *it, ptrdiff_t to_charpos, int to_x, int to_y, int to_vpos
9316 && it->current_x == it->last_visible_x - 1 9316 && it->current_x == it->last_visible_x - 1
9317 && it->c != '\n' 9317 && it->c != '\n'
9318 && it->c != '\t' 9318 && it->c != '\t'
9319 && it->w->window_end_valid
9319 && it->vpos < it->w->window_end_vpos) 9320 && it->vpos < it->w->window_end_vpos)
9320 { 9321 {
9321 it->continuation_lines_width += it->current_x; 9322 it->continuation_lines_width += it->current_x;
@@ -13425,10 +13426,10 @@ redisplay_internal (void)
13425 last_glyphless_glyph_frame = NULL; 13426 last_glyphless_glyph_frame = NULL;
13426 last_glyphless_glyph_face_id = (1 << FACE_ID_BITS); 13427 last_glyphless_glyph_face_id = (1 << FACE_ID_BITS);
13427 13428
13428 /* If face_change_count is non-zero, init_iterator will free all 13429 /* If face_change, init_iterator will free all realized faces, which
13429 realized faces, which includes the faces referenced from current 13430 includes the faces referenced from current matrices. So, we
13430 matrices. So, we can't reuse current matrices in this case. */ 13431 can't reuse current matrices in this case. */
13431 if (face_change_count) 13432 if (face_change)
13432 windows_or_buffers_changed = 47; 13433 windows_or_buffers_changed = 47;
13433 13434
13434 if ((FRAME_TERMCAP_P (sf) || FRAME_MSDOS_P (sf)) 13435 if ((FRAME_TERMCAP_P (sf) || FRAME_MSDOS_P (sf))
@@ -15436,7 +15437,8 @@ try_cursor_movement (Lisp_Object window, struct text_pos startp, int *scroll_ste
15436 /* Likewise there was a check whether window_end_vpos is nil or larger 15437 /* Likewise there was a check whether window_end_vpos is nil or larger
15437 than the window. Now window_end_vpos is int and so never nil, but 15438 than the window. Now window_end_vpos is int and so never nil, but
15438 let's leave eassert to check whether it fits in the window. */ 15439 let's leave eassert to check whether it fits in the window. */
15439 eassert (w->window_end_vpos < w->current_matrix->nrows); 15440 eassert (!w->window_end_valid
15441 || w->window_end_vpos < w->current_matrix->nrows);
15440 15442
15441 /* Handle case where text has not changed, only point, and it has 15443 /* Handle case where text has not changed, only point, and it has
15442 not moved off the frame. */ 15444 not moved off the frame. */
@@ -18183,6 +18185,21 @@ try_window_id (struct window *w)
18183 if (f->fonts_changed) 18185 if (f->fonts_changed)
18184 return -1; 18186 return -1;
18185 18187
18188 /* The redisplay iterations in display_line above could have
18189 triggered font-lock, which could have done something that
18190 invalidates IT->w window's end-point information, on which we
18191 rely below. E.g., one package, which will remain unnamed, used
18192 to install a font-lock-fontify-region-function that called
18193 bury-buffer, whose side effect is to switch the buffer displayed
18194 by IT->w, and that predictably resets IT->w's window_end_valid
18195 flag, which we already tested at the entry to this function.
18196 Amply punish such packages/modes by giving up on this
18197 optimization in those cases. */
18198 if (!w->window_end_valid)
18199 {
18200 clear_glyph_matrix (w->desired_matrix);
18201 return -1;
18202 }
18186 18203
18187 /* Compute differences in buffer positions, y-positions etc. for 18204 /* Compute differences in buffer positions, y-positions etc. for
18188 lines reused at the bottom of the window. Compute what we can 18205 lines reused at the bottom of the window. Compute what we can
@@ -25728,6 +25745,15 @@ produce_image_glyph (struct it *it)
25728 enum glyph_row_area area = it->area; 25745 enum glyph_row_area area = it->area;
25729 25746
25730 glyph = it->glyph_row->glyphs[area] + it->glyph_row->used[area]; 25747 glyph = it->glyph_row->glyphs[area] + it->glyph_row->used[area];
25748 if (it->glyph_row->reversed_p)
25749 {
25750 struct glyph *g;
25751
25752 /* Make room for the new glyph. */
25753 for (g = glyph - 1; g >= it->glyph_row->glyphs[it->area]; g--)
25754 g[1] = *g;
25755 glyph = it->glyph_row->glyphs[it->area];
25756 }
25731 if (glyph < it->glyph_row->glyphs[area + 1]) 25757 if (glyph < it->glyph_row->glyphs[area + 1])
25732 { 25758 {
25733 glyph->charpos = CHARPOS (it->position); 25759 glyph->charpos = CHARPOS (it->position);
diff --git a/src/xfaces.c b/src/xfaces.c
index 7c9f62683fd..6e01ab08cef 100644
--- a/src/xfaces.c
+++ b/src/xfaces.c
@@ -313,10 +313,10 @@ static int clear_font_table_count;
313 313
314#endif /* HAVE_WINDOW_SYSTEM */ 314#endif /* HAVE_WINDOW_SYSTEM */
315 315
316/* Non-zero means face attributes have been changed since the last 316/* True means face attributes have been changed since the last
317 redisplay. Used in redisplay_internal. */ 317 redisplay. Used in redisplay_internal. */
318 318
319int face_change_count; 319bool face_change;
320 320
321/* True means don't display bold text if a face's foreground 321/* True means don't display bold text if a face's foreground
322 and background colors are the inverse of the default colors of the 322 and background colors are the inverse of the default colors of the
@@ -694,7 +694,7 @@ Optional THOROUGHLY non-nil means try to free unused fonts, too. */)
694 (Lisp_Object thoroughly) 694 (Lisp_Object thoroughly)
695{ 695{
696 clear_face_cache (!NILP (thoroughly)); 696 clear_face_cache (!NILP (thoroughly));
697 ++face_change_count; 697 face_change = true;
698 windows_or_buffers_changed = 53; 698 windows_or_buffers_changed = 53;
699 return Qnil; 699 return Qnil;
700} 700}
@@ -2530,11 +2530,11 @@ Value is a vector of face attributes. */)
2530 /* Changing a named face means that all realized faces depending on 2530 /* Changing a named face means that all realized faces depending on
2531 that face are invalid. Since we cannot tell which realized faces 2531 that face are invalid. Since we cannot tell which realized faces
2532 depend on the face, make sure they are all removed. This is done 2532 depend on the face, make sure they are all removed. This is done
2533 by incrementing face_change_count. The next call to 2533 by setting face_change. The next call to init_iterator will then
2534 init_iterator will then free realized faces. */ 2534 free realized faces. */
2535 if (NILP (Fget (face, Qface_no_inherit))) 2535 if (NILP (Fget (face, Qface_no_inherit)))
2536 { 2536 {
2537 ++face_change_count; 2537 face_change = true;
2538 windows_or_buffers_changed = 54; 2538 windows_or_buffers_changed = 54;
2539 } 2539 }
2540 2540
@@ -2609,11 +2609,11 @@ The value is TO. */)
2609 /* Changing a named face means that all realized faces depending on 2609 /* Changing a named face means that all realized faces depending on
2610 that face are invalid. Since we cannot tell which realized faces 2610 that face are invalid. Since we cannot tell which realized faces
2611 depend on the face, make sure they are all removed. This is done 2611 depend on the face, make sure they are all removed. This is done
2612 by incrementing face_change_count. The next call to 2612 by setting face_change. The next call to init_iterator will then
2613 init_iterator will then free realized faces. */ 2613 free realized faces. */
2614 if (NILP (Fget (to, Qface_no_inherit))) 2614 if (NILP (Fget (to, Qface_no_inherit)))
2615 { 2615 {
2616 ++face_change_count; 2616 face_change = true;
2617 windows_or_buffers_changed = 55; 2617 windows_or_buffers_changed = 55;
2618 } 2618 }
2619 2619
@@ -3107,13 +3107,13 @@ FRAME 0 means change the face on all frames, and change the default
3107 /* Changing a named face means that all realized faces depending on 3107 /* Changing a named face means that all realized faces depending on
3108 that face are invalid. Since we cannot tell which realized faces 3108 that face are invalid. Since we cannot tell which realized faces
3109 depend on the face, make sure they are all removed. This is done 3109 depend on the face, make sure they are all removed. This is done
3110 by incrementing face_change_count. The next call to 3110 by setting face_change. The next call to init_iterator will then
3111 init_iterator will then free realized faces. */ 3111 free realized faces. */
3112 if (!EQ (frame, Qt) 3112 if (!EQ (frame, Qt)
3113 && NILP (Fget (face, Qface_no_inherit)) 3113 && NILP (Fget (face, Qface_no_inherit))
3114 && NILP (Fequal (old_value, value))) 3114 && NILP (Fequal (old_value, value)))
3115 { 3115 {
3116 ++face_change_count; 3116 face_change = true;
3117 windows_or_buffers_changed = 56; 3117 windows_or_buffers_changed = 56;
3118 } 3118 }
3119 3119
@@ -3281,12 +3281,12 @@ update_face_from_frame_parameter (struct frame *f, Lisp_Object param,
3281 /* Changing a named face means that all realized faces depending on 3281 /* Changing a named face means that all realized faces depending on
3282 that face are invalid. Since we cannot tell which realized faces 3282 that face are invalid. Since we cannot tell which realized faces
3283 depend on the face, make sure they are all removed. This is done 3283 depend on the face, make sure they are all removed. This is done
3284 by incrementing face_change_count. The next call to 3284 by setting face_change. The next call to init_iterator will then
3285 init_iterator will then free realized faces. */ 3285 free realized faces. */
3286 if (!NILP (face) 3286 if (!NILP (face)
3287 && NILP (Fget (face, Qface_no_inherit))) 3287 && NILP (Fget (face, Qface_no_inherit)))
3288 { 3288 {
3289 ++face_change_count; 3289 face_change = true;
3290 windows_or_buffers_changed = 57; 3290 windows_or_buffers_changed = 57;
3291 } 3291 }
3292} 3292}
@@ -5820,7 +5820,7 @@ is non-nil. */)
5820 (Lisp_Object suppress) 5820 (Lisp_Object suppress)
5821{ 5821{
5822 tty_suppress_bold_inverse_default_colors_p = !NILP (suppress); 5822 tty_suppress_bold_inverse_default_colors_p = !NILP (suppress);
5823 ++face_change_count; 5823 face_change = true;
5824 return suppress; 5824 return suppress;
5825} 5825}
5826 5826
diff --git a/src/xfns.c b/src/xfns.c
index 9dd00868d7b..65eb6b497f2 100644
--- a/src/xfns.c
+++ b/src/xfns.c
@@ -3542,10 +3542,15 @@ If omitted or nil, that stands for the selected frame's display. */)
3542} 3542}
3543 3543
3544DEFUN ("x-server-vendor", Fx_server_vendor, Sx_server_vendor, 0, 1, 0, 3544DEFUN ("x-server-vendor", Fx_server_vendor, Sx_server_vendor, 0, 1, 0,
3545 doc: /* Return the "vendor ID" string of the X server of display TERMINAL. 3545 doc: /* Return the "vendor ID" string of the GUI software on TERMINAL.
3546
3546\(Labeling every distributor as a "vendor" embodies the false assumption 3547\(Labeling every distributor as a "vendor" embodies the false assumption
3547that operating systems cannot be developed and distributed noncommercially.) 3548that operating systems cannot be developed and distributed noncommercially.)
3548The optional argument TERMINAL specifies which display to ask about. 3549The optional argument TERMINAL specifies which display to ask about.
3550
3551For GNU and Unix systems, this queries the X server software; for
3552MS-Windows, this queries the OS.
3553
3549TERMINAL should be a terminal object, a frame or a display name (a string). 3554TERMINAL should be a terminal object, a frame or a display name (a string).
3550If omitted or nil, that stands for the selected frame's display. */) 3555If omitted or nil, that stands for the selected frame's display. */)
3551 (Lisp_Object terminal) 3556 (Lisp_Object terminal)
@@ -3558,10 +3563,16 @@ If omitted or nil, that stands for the selected frame's display. */)
3558} 3563}
3559 3564
3560DEFUN ("x-server-version", Fx_server_version, Sx_server_version, 0, 1, 0, 3565DEFUN ("x-server-version", Fx_server_version, Sx_server_version, 0, 1, 0,
3561 doc: /* Return the version numbers of the X server of display TERMINAL. 3566 doc: /* Return the version numbers of the GUI software on TERMINAL.
3562The value is a list of three integers: the major and minor 3567The value is a list of three integers specifying the version of the GUI
3563version numbers of the X Protocol in use, and the distributor-specific release 3568software in use.
3564number. See also the function `x-server-vendor'. 3569
3570For GNU and Unix system, the first 2 numbers are the version of the X
3571Protocol used on TERMINAL and the 3rd number is the distributor-specific
3572release number. For MS-Windows, the 3 numbers report the version and
3573the build number of the OS.
3574
3575See also the function `x-server-vendor'.
3565 3576
3566The optional argument TERMINAL specifies which display to ask about. 3577The optional argument TERMINAL specifies which display to ask about.
3567TERMINAL should be a terminal object, a frame or a display name (a string). 3578TERMINAL should be a terminal object, a frame or a display name (a string).
@@ -4921,7 +4932,7 @@ x_create_tip_frame (struct x_display_info *dpyinfo,
4921 int width, height; 4932 int width, height;
4922 ptrdiff_t count = SPECPDL_INDEX (); 4933 ptrdiff_t count = SPECPDL_INDEX ();
4923 struct gcpro gcpro1, gcpro2, gcpro3; 4934 struct gcpro gcpro1, gcpro2, gcpro3;
4924 int face_change_count_before = face_change_count; 4935 bool face_change_before = face_change;
4925 Lisp_Object buffer; 4936 Lisp_Object buffer;
4926 struct buffer *old_buffer; 4937 struct buffer *old_buffer;
4927 4938
@@ -5218,11 +5229,11 @@ x_create_tip_frame (struct x_display_info *dpyinfo,
5218 f->can_x_set_window_size = true; 5229 f->can_x_set_window_size = true;
5219 5230
5220 /* Setting attributes of faces of the tooltip frame from resources 5231 /* Setting attributes of faces of the tooltip frame from resources
5221 and similar will increment face_change_count, which leads to the 5232 and similar will set face_change, which leads to the clearing of
5222 clearing of all current matrices. Since this isn't necessary 5233 all current matrices. Since this isn't necessary here, avoid it
5223 here, avoid it by resetting face_change_count to the value it 5234 by resetting face_change to the value it had before we created
5224 had before we created the tip frame. */ 5235 the tip frame. */
5225 face_change_count = face_change_count_before; 5236 face_change = face_change_before;
5226 5237
5227 /* Discard the unwind_protect. */ 5238 /* Discard the unwind_protect. */
5228 return unbind_to (count, frame); 5239 return unbind_to (count, frame);
diff --git a/test/ChangeLog b/test/ChangeLog
index 61ab8b6595a..a9834cc0f3f 100644
--- a/test/ChangeLog
+++ b/test/ChangeLog
@@ -1,3 +1,38 @@
12015-01-31 Stefan Monnier <monnier@iro.umontreal.ca>
2
3 * automated/eieio-tests.el (eieio-test-23-inheritance-check): Simplify.
4
52015-01-30 Stefan Monnier <monnier@iro.umontreal.ca>
6
7 * automated/core-elisp-tests.el (core-elisp-tests-3-backquote): New test.
8
92015-01-28 Fabián Ezequiel Gallina <fgallina@gnu.org>
10
11 * automated/python-tests.el (python-indent-pep8-1)
12 (python-indent-pep8-2, python-indent-pep8-3)
13 (python-indent-after-comment-1, python-indent-after-comment-2)
14 (python-indent-inside-paren-1, python-indent-inside-paren-2)
15 (python-indent-after-block-1, python-indent-after-block-2)
16 (python-indent-after-backslash-1, python-indent-after-backslash-2)
17 (python-indent-after-backslash-3, python-indent-block-enders-1)
18 (python-indent-block-enders-2, python-indent-block-enders-3)
19 (python-indent-block-enders-4, python-indent-block-enders-5)
20 (python-indent-dedenters-1, python-indent-dedenters-2)
21 (python-indent-dedenters-3, python-indent-dedenters-4)
22 (python-indent-dedenters-5, python-indent-dedenters-6)
23 (python-indent-dedenters-7, python-indent-dedenters-8): Fix tests.
24 (python-indent-base-case, python-indent-after-block-3)
25 (python-indent-after-backslash-5, python-indent-inside-paren-3)
26 (python-indent-inside-paren-4, python-indent-inside-paren-5)
27 (python-indent-inside-paren-6, python-indent-inside-string-1)
28 (python-indent-inside-string-2, python-indent-inside-string-3)
29 (python-indent-dedent-line-backspace-1): New Tests.
30
312015-01-28 Glenn Morris <rgm@gnu.org>
32
33 * automated/regexp-tests.el: Require regexp-opt, which is
34 not preloaded --without-x.
35
12015-01-26 Stefan Monnier <monnier@iro.umontreal.ca> 362015-01-26 Stefan Monnier <monnier@iro.umontreal.ca>
2 37
3 * automated/cl-generic-tests.el: Try and make sure cl-lib is not 38 * automated/cl-generic-tests.el: Try and make sure cl-lib is not
@@ -33,6 +68,11 @@
33 * automated/cl-generic-tests.el (setf cl--generic-2): Make sure 68 * automated/cl-generic-tests.el (setf cl--generic-2): Make sure
34 the setf can be used already in the body of the method. 69 the setf can be used already in the body of the method.
35 70
712015-01-20 Jorgen Schaefer <contact@jorgenschaefer.de>
72
73 * automated/package-test.el (package-test-install-prioritized):
74 Remove test due to unreproducible failures.
75
362015-01-20 Michal Nazarewicz <mina86@mina86.com> 762015-01-20 Michal Nazarewicz <mina86@mina86.com>
37 77
38 * automated/descr-text-test.el: New file with tests for 78 * automated/descr-text-test.el: New file with tests for
diff --git a/test/automated/core-elisp-tests.el b/test/automated/core-elisp-tests.el
index 1b76c767b95..c31ecef4a32 100644
--- a/test/automated/core-elisp-tests.el
+++ b/test/automated/core-elisp-tests.el
@@ -24,7 +24,7 @@
24 24
25;;; Code: 25;;; Code:
26 26
27(ert-deftest core-elisp-tests () 27(ert-deftest core-elisp-tests-1-defvar-in-let ()
28 "Test some core Elisp rules." 28 "Test some core Elisp rules."
29 (with-temp-buffer 29 (with-temp-buffer
30 ;; Check that when defvar is run within a let-binding, the toplevel default 30 ;; Check that when defvar is run within a let-binding, the toplevel default
@@ -36,7 +36,7 @@
36 c-e-x) 36 c-e-x)
37 '(1 2))))) 37 '(1 2)))))
38 38
39(ert-deftest core-elisp-test-window-configurations () 39(ert-deftest core-elisp-tests-2-window-configurations ()
40 "Test properties of window-configurations." 40 "Test properties of window-configurations."
41 (let ((wc (current-window-configuration))) 41 (let ((wc (current-window-configuration)))
42 (with-current-buffer (window-buffer (frame-selected-window)) 42 (with-current-buffer (window-buffer (frame-selected-window))
@@ -45,5 +45,8 @@
45 (set-window-configuration wc) 45 (set-window-configuration wc)
46 (should (or (not mark-active) (mark))))) 46 (should (or (not mark-active) (mark)))))
47 47
48(ert-deftest core-elisp-tests-3-backquote ()
49 (should (eq 3 (eval ``,,'(+ 1 2)))))
50
48(provide 'core-elisp-tests) 51(provide 'core-elisp-tests)
49;;; core-elisp-tests.el ends here 52;;; core-elisp-tests.el ends here
diff --git a/test/automated/eieio-tests.el b/test/automated/eieio-tests.el
index 847aefd63fc..7532609c4c3 100644
--- a/test/automated/eieio-tests.el
+++ b/test/automated/eieio-tests.el
@@ -537,9 +537,8 @@ METHOD is the method that was attempting to be called."
537 (should (object-of-class-p eitest-ab 'class-b)) 537 (should (object-of-class-p eitest-ab 'class-b))
538 (should (object-of-class-p eitest-ab 'class-ab)) 538 (should (object-of-class-p eitest-ab 'class-ab))
539 (should (eq (eieio-class-parents 'class-a) nil)) 539 (should (eq (eieio-class-parents 'class-a) nil))
540 ;; FIXME: eieio-class-parents now returns class objects! 540 (should (equal (eieio-class-parents 'class-ab)
541 (should (equal (mapcar #'eieio-class-object (eieio-class-parents 'class-ab)) 541 (mapcar #'find-class '(class-a class-b))))
542 (mapcar #'eieio-class-object '(class-a class-b))))
543 (should (same-class-p eitest-a 'class-a)) 542 (should (same-class-p eitest-a 'class-a))
544 (should (class-a-p eitest-a)) 543 (should (class-a-p eitest-a))
545 (should (not (class-a-p eitest-ab))) 544 (should (not (class-a-p eitest-ab)))
diff --git a/test/automated/python-tests.el b/test/automated/python-tests.el
index e989ccb6792..672b05c39de 100644
--- a/test/automated/python-tests.el
+++ b/test/automated/python-tests.el
@@ -174,13 +174,13 @@ aliqua."
174foo = long_function_name(var_one, var_two, 174foo = long_function_name(var_one, var_two,
175 var_three, var_four) 175 var_three, var_four)
176" 176"
177 (should (eq (car (python-indent-context)) 'no-indent)) 177 (should (eq (car (python-indent-context)) :no-indent))
178 (should (= (python-indent-calculate-indentation) 0)) 178 (should (= (python-indent-calculate-indentation) 0))
179 (python-tests-look-at "foo = long_function_name(var_one, var_two,") 179 (python-tests-look-at "foo = long_function_name(var_one, var_two,")
180 (should (eq (car (python-indent-context)) 'after-line)) 180 (should (eq (car (python-indent-context)) :after-line))
181 (should (= (python-indent-calculate-indentation) 0)) 181 (should (= (python-indent-calculate-indentation) 0))
182 (python-tests-look-at "var_three, var_four)") 182 (python-tests-look-at "var_three, var_four)")
183 (should (eq (car (python-indent-context)) 'inside-paren)) 183 (should (eq (car (python-indent-context)) :inside-paren))
184 (should (= (python-indent-calculate-indentation) 25)))) 184 (should (= (python-indent-calculate-indentation) 25))))
185 185
186(ert-deftest python-indent-pep8-2 () 186(ert-deftest python-indent-pep8-2 ()
@@ -192,19 +192,22 @@ def long_function_name(
192 var_four): 192 var_four):
193 print (var_one) 193 print (var_one)
194" 194"
195 (should (eq (car (python-indent-context)) 'no-indent)) 195 (should (eq (car (python-indent-context)) :no-indent))
196 (should (= (python-indent-calculate-indentation) 0)) 196 (should (= (python-indent-calculate-indentation) 0))
197 (python-tests-look-at "def long_function_name(") 197 (python-tests-look-at "def long_function_name(")
198 (should (eq (car (python-indent-context)) 'after-line)) 198 (should (eq (car (python-indent-context)) :after-line))
199 (should (= (python-indent-calculate-indentation) 0)) 199 (should (= (python-indent-calculate-indentation) 0))
200 (python-tests-look-at "var_one, var_two, var_three,") 200 (python-tests-look-at "var_one, var_two, var_three,")
201 (should (eq (car (python-indent-context)) 'inside-paren)) 201 (should (eq (car (python-indent-context))
202 :inside-paren-newline-start-from-block))
202 (should (= (python-indent-calculate-indentation) 8)) 203 (should (= (python-indent-calculate-indentation) 8))
203 (python-tests-look-at "var_four):") 204 (python-tests-look-at "var_four):")
204 (should (eq (car (python-indent-context)) 'inside-paren)) 205 (should (eq (car (python-indent-context))
206 :inside-paren-newline-start-from-block))
205 (should (= (python-indent-calculate-indentation) 8)) 207 (should (= (python-indent-calculate-indentation) 8))
206 (python-tests-look-at "print (var_one)") 208 (python-tests-look-at "print (var_one)")
207 (should (eq (car (python-indent-context)) 'after-beginning-of-block)) 209 (should (eq (car (python-indent-context))
210 :after-block-start))
208 (should (= (python-indent-calculate-indentation) 4)))) 211 (should (= (python-indent-calculate-indentation) 4))))
209 212
210(ert-deftest python-indent-pep8-3 () 213(ert-deftest python-indent-pep8-3 ()
@@ -215,18 +218,34 @@ foo = long_function_name(
215 var_one, var_two, 218 var_one, var_two,
216 var_three, var_four) 219 var_three, var_four)
217" 220"
218 (should (eq (car (python-indent-context)) 'no-indent)) 221 (should (eq (car (python-indent-context)) :no-indent))
219 (should (= (python-indent-calculate-indentation) 0)) 222 (should (= (python-indent-calculate-indentation) 0))
220 (python-tests-look-at "foo = long_function_name(") 223 (python-tests-look-at "foo = long_function_name(")
221 (should (eq (car (python-indent-context)) 'after-line)) 224 (should (eq (car (python-indent-context)) :after-line))
222 (should (= (python-indent-calculate-indentation) 0)) 225 (should (= (python-indent-calculate-indentation) 0))
223 (python-tests-look-at "var_one, var_two,") 226 (python-tests-look-at "var_one, var_two,")
224 (should (eq (car (python-indent-context)) 'inside-paren)) 227 (should (eq (car (python-indent-context)) :inside-paren-newline-start))
225 (should (= (python-indent-calculate-indentation) 4)) 228 (should (= (python-indent-calculate-indentation) 4))
226 (python-tests-look-at "var_three, var_four)") 229 (python-tests-look-at "var_three, var_four)")
227 (should (eq (car (python-indent-context)) 'inside-paren)) 230 (should (eq (car (python-indent-context)) :inside-paren-newline-start))
228 (should (= (python-indent-calculate-indentation) 4)))) 231 (should (= (python-indent-calculate-indentation) 4))))
229 232
233(ert-deftest python-indent-base-case ()
234 "Check base case does not trigger errors."
235 (python-tests-with-temp-buffer
236 "
237
238"
239 (goto-char (point-min))
240 (should (eq (car (python-indent-context)) :no-indent))
241 (should (= (python-indent-calculate-indentation) 0))
242 (forward-line 1)
243 (should (eq (car (python-indent-context)) :after-line))
244 (should (= (python-indent-calculate-indentation) 0))
245 (forward-line 1)
246 (should (eq (car (python-indent-context)) :after-line))
247 (should (= (python-indent-calculate-indentation) 0))))
248
230(ert-deftest python-indent-after-comment-1 () 249(ert-deftest python-indent-after-comment-1 ()
231 "The most simple after-comment case that shouldn't fail." 250 "The most simple after-comment case that shouldn't fail."
232 (python-tests-with-temp-buffer 251 (python-tests-with-temp-buffer
@@ -240,23 +259,23 @@ class Blag(object):
240# with the exception with which the first child failed. 259# with the exception with which the first child failed.
241" 260"
242 (python-tests-look-at "# We only complete") 261 (python-tests-look-at "# We only complete")
243 (should (eq (car (python-indent-context)) 'after-line)) 262 (should (eq (car (python-indent-context)) :after-block-end))
244 (should (= (python-indent-calculate-indentation) 8)) 263 (should (= (python-indent-calculate-indentation) 8))
245 (python-tests-look-at "# terminal state") 264 (python-tests-look-at "# terminal state")
246 (should (eq (car (python-indent-context)) 'after-comment)) 265 (should (eq (car (python-indent-context)) :after-comment))
247 (should (= (python-indent-calculate-indentation) 8)) 266 (should (= (python-indent-calculate-indentation) 8))
248 (python-tests-look-at "# with the exception") 267 (python-tests-look-at "# with the exception")
249 (should (eq (car (python-indent-context)) 'after-comment)) 268 (should (eq (car (python-indent-context)) :after-comment))
250 ;; This one indents relative to previous block, even given the fact 269 ;; This one indents relative to previous block, even given the fact
251 ;; that it was under-indented. 270 ;; that it was under-indented.
252 (should (= (python-indent-calculate-indentation) 4)) 271 (should (= (python-indent-calculate-indentation) 4))
253 (python-tests-look-at "# terminal state" -1) 272 (python-tests-look-at "# terminal state" -1)
254 ;; It doesn't hurt to check again. 273 ;; It doesn't hurt to check again.
255 (should (eq (car (python-indent-context)) 'after-comment)) 274 (should (eq (car (python-indent-context)) :after-comment))
256 (python-indent-line) 275 (python-indent-line)
257 (should (= (current-indentation) 8)) 276 (should (= (current-indentation) 8))
258 (python-tests-look-at "# with the exception") 277 (python-tests-look-at "# with the exception")
259 (should (eq (car (python-indent-context)) 'after-comment)) 278 (should (eq (car (python-indent-context)) :after-comment))
260 ;; Now everything should be lined up. 279 ;; Now everything should be lined up.
261 (should (= (python-indent-calculate-indentation) 8)))) 280 (should (= (python-indent-calculate-indentation) 8))))
262 281
@@ -275,33 +294,33 @@ now_we_do_mess_cause_this_is_not_a_comment = 1
275# yeah, that. 294# yeah, that.
276" 295"
277 (python-tests-look-at "# I don't do much") 296 (python-tests-look-at "# I don't do much")
278 (should (eq (car (python-indent-context)) 'after-beginning-of-block)) 297 (should (eq (car (python-indent-context)) :after-block-start))
279 (should (= (python-indent-calculate-indentation) 4)) 298 (should (= (python-indent-calculate-indentation) 4))
280 (python-tests-look-at "return arg") 299 (python-tests-look-at "return arg")
281 ;; Comment here just gets ignored, this line is not a comment so 300 ;; Comment here just gets ignored, this line is not a comment so
282 ;; the rules won't apply here. 301 ;; the rules won't apply here.
283 (should (eq (car (python-indent-context)) 'after-beginning-of-block)) 302 (should (eq (car (python-indent-context)) :after-block-start))
284 (should (= (python-indent-calculate-indentation) 4)) 303 (should (= (python-indent-calculate-indentation) 4))
285 (python-tests-look-at "# This comment is badly") 304 (python-tests-look-at "# This comment is badly")
286 (should (eq (car (python-indent-context)) 'after-line)) 305 (should (eq (car (python-indent-context)) :after-block-end))
287 ;; The return keyword moves indentation backwards 4 spaces, but 306 ;; The return keyword moves indentation backwards 4 spaces, but
288 ;; let's assume this comment was placed there because the user 307 ;; let's assume this comment was placed there because the user
289 ;; wanted to (manually adding spaces or whatever). 308 ;; wanted to (manually adding spaces or whatever).
290 (should (= (python-indent-calculate-indentation) 0)) 309 (should (= (python-indent-calculate-indentation) 0))
291 (python-tests-look-at "# but we won't mess") 310 (python-tests-look-at "# but we won't mess")
292 (should (eq (car (python-indent-context)) 'after-comment)) 311 (should (eq (car (python-indent-context)) :after-comment))
293 (should (= (python-indent-calculate-indentation) 4)) 312 (should (= (python-indent-calculate-indentation) 4))
294 ;; Behave the same for blank lines: potentially a comment. 313 ;; Behave the same for blank lines: potentially a comment.
295 (forward-line 1) 314 (forward-line 1)
296 (should (eq (car (python-indent-context)) 'after-comment)) 315 (should (eq (car (python-indent-context)) :after-comment))
297 (should (= (python-indent-calculate-indentation) 4)) 316 (should (= (python-indent-calculate-indentation) 4))
298 (python-tests-look-at "now_we_do_mess") 317 (python-tests-look-at "now_we_do_mess")
299 ;; Here is where comment indentation starts to get ignored and 318 ;; Here is where comment indentation starts to get ignored and
300 ;; where the user can't freely indent anymore. 319 ;; where the user can't freely indent anymore.
301 (should (eq (car (python-indent-context)) 'after-line)) 320 (should (eq (car (python-indent-context)) :after-block-end))
302 (should (= (python-indent-calculate-indentation) 0)) 321 (should (= (python-indent-calculate-indentation) 0))
303 (python-tests-look-at "# yeah, that.") 322 (python-tests-look-at "# yeah, that.")
304 (should (eq (car (python-indent-context)) 'after-line)) 323 (should (eq (car (python-indent-context)) :after-line))
305 (should (= (python-indent-calculate-indentation) 0)))) 324 (should (= (python-indent-calculate-indentation) 0))))
306 325
307(ert-deftest python-indent-inside-paren-1 () 326(ert-deftest python-indent-inside-paren-1 ()
@@ -325,49 +344,53 @@ data = {
325} 344}
326" 345"
327 (python-tests-look-at "data = {") 346 (python-tests-look-at "data = {")
328 (should (eq (car (python-indent-context)) 'after-line)) 347 (should (eq (car (python-indent-context)) :after-line))
329 (should (= (python-indent-calculate-indentation) 0)) 348 (should (= (python-indent-calculate-indentation) 0))
330 (python-tests-look-at "'key':") 349 (python-tests-look-at "'key':")
331 (should (eq (car (python-indent-context)) 'inside-paren)) 350 (should (eq (car (python-indent-context)) :inside-paren-newline-start))
332 (should (= (python-indent-calculate-indentation) 4)) 351 (should (= (python-indent-calculate-indentation) 4))
333 (python-tests-look-at "{") 352 (python-tests-look-at "{")
334 (should (eq (car (python-indent-context)) 'inside-paren)) 353 (should (eq (car (python-indent-context)) :inside-paren-newline-start))
335 (should (= (python-indent-calculate-indentation) 4)) 354 (should (= (python-indent-calculate-indentation) 4))
336 (python-tests-look-at "'objlist': [") 355 (python-tests-look-at "'objlist': [")
337 (should (eq (car (python-indent-context)) 'inside-paren)) 356 (should (eq (car (python-indent-context)) :inside-paren-newline-start))
338 (should (= (python-indent-calculate-indentation) 8)) 357 (should (= (python-indent-calculate-indentation) 8))
339 (python-tests-look-at "{") 358 (python-tests-look-at "{")
340 (should (eq (car (python-indent-context)) 'inside-paren)) 359 (should (eq (car (python-indent-context)) :inside-paren-newline-start))
341 (should (= (python-indent-calculate-indentation) 12)) 360 (should (= (python-indent-calculate-indentation) 12))
342 (python-tests-look-at "'pk': 1,") 361 (python-tests-look-at "'pk': 1,")
343 (should (eq (car (python-indent-context)) 'inside-paren)) 362 (should (eq (car (python-indent-context)) :inside-paren-newline-start))
344 (should (= (python-indent-calculate-indentation) 16)) 363 (should (= (python-indent-calculate-indentation) 16))
345 (python-tests-look-at "'name': 'first',") 364 (python-tests-look-at "'name': 'first',")
346 (should (eq (car (python-indent-context)) 'inside-paren)) 365 (should (eq (car (python-indent-context)) :inside-paren-newline-start))
347 (should (= (python-indent-calculate-indentation) 16)) 366 (should (= (python-indent-calculate-indentation) 16))
348 (python-tests-look-at "},") 367 (python-tests-look-at "},")
349 (should (eq (car (python-indent-context)) 'inside-paren)) 368 (should (eq (car (python-indent-context))
369 :inside-paren-at-closing-nested-paren))
350 (should (= (python-indent-calculate-indentation) 12)) 370 (should (= (python-indent-calculate-indentation) 12))
351 (python-tests-look-at "{") 371 (python-tests-look-at "{")
352 (should (eq (car (python-indent-context)) 'inside-paren)) 372 (should (eq (car (python-indent-context)) :inside-paren-newline-start))
353 (should (= (python-indent-calculate-indentation) 12)) 373 (should (= (python-indent-calculate-indentation) 12))
354 (python-tests-look-at "'pk': 2,") 374 (python-tests-look-at "'pk': 2,")
355 (should (eq (car (python-indent-context)) 'inside-paren)) 375 (should (eq (car (python-indent-context)) :inside-paren-newline-start))
356 (should (= (python-indent-calculate-indentation) 16)) 376 (should (= (python-indent-calculate-indentation) 16))
357 (python-tests-look-at "'name': 'second',") 377 (python-tests-look-at "'name': 'second',")
358 (should (eq (car (python-indent-context)) 'inside-paren)) 378 (should (eq (car (python-indent-context)) :inside-paren-newline-start))
359 (should (= (python-indent-calculate-indentation) 16)) 379 (should (= (python-indent-calculate-indentation) 16))
360 (python-tests-look-at "}") 380 (python-tests-look-at "}")
361 (should (eq (car (python-indent-context)) 'inside-paren)) 381 (should (eq (car (python-indent-context))
382 :inside-paren-at-closing-nested-paren))
362 (should (= (python-indent-calculate-indentation) 12)) 383 (should (= (python-indent-calculate-indentation) 12))
363 (python-tests-look-at "]") 384 (python-tests-look-at "]")
364 (should (eq (car (python-indent-context)) 'inside-paren)) 385 (should (eq (car (python-indent-context))
386 :inside-paren-at-closing-nested-paren))
365 (should (= (python-indent-calculate-indentation) 8)) 387 (should (= (python-indent-calculate-indentation) 8))
366 (python-tests-look-at "}") 388 (python-tests-look-at "}")
367 (should (eq (car (python-indent-context)) 'inside-paren)) 389 (should (eq (car (python-indent-context))
390 :inside-paren-at-closing-nested-paren))
368 (should (= (python-indent-calculate-indentation) 4)) 391 (should (= (python-indent-calculate-indentation) 4))
369 (python-tests-look-at "}") 392 (python-tests-look-at "}")
370 (should (eq (car (python-indent-context)) 'inside-paren)) 393 (should (eq (car (python-indent-context)) :inside-paren-at-closing-paren))
371 (should (= (python-indent-calculate-indentation) 0)))) 394 (should (= (python-indent-calculate-indentation) 0))))
372 395
373(ert-deftest python-indent-inside-paren-2 () 396(ert-deftest python-indent-inside-paren-2 ()
@@ -384,43 +407,121 @@ data = {'key': {
384}} 407}}
385" 408"
386 (python-tests-look-at "data = {") 409 (python-tests-look-at "data = {")
387 (should (eq (car (python-indent-context)) 'after-line)) 410 (should (eq (car (python-indent-context)) :after-line))
388 (should (= (python-indent-calculate-indentation) 0)) 411 (should (= (python-indent-calculate-indentation) 0))
389 (python-tests-look-at "'objlist': [") 412 (python-tests-look-at "'objlist': [")
390 (should (eq (car (python-indent-context)) 'inside-paren)) 413 (should (eq (car (python-indent-context)) :inside-paren-newline-start))
391 (should (= (python-indent-calculate-indentation) 4)) 414 (should (= (python-indent-calculate-indentation) 4))
392 (python-tests-look-at "{'pk': 1,") 415 (python-tests-look-at "{'pk': 1,")
393 (should (eq (car (python-indent-context)) 'inside-paren)) 416 (should (eq (car (python-indent-context)) :inside-paren-newline-start))
394 (should (= (python-indent-calculate-indentation) 8)) 417 (should (= (python-indent-calculate-indentation) 8))
395 (python-tests-look-at "'name': 'first'},") 418 (python-tests-look-at "'name': 'first'},")
396 (should (eq (car (python-indent-context)) 'inside-paren)) 419 (should (eq (car (python-indent-context)) :inside-paren))
397 (should (= (python-indent-calculate-indentation) 9)) 420 (should (= (python-indent-calculate-indentation) 9))
398 (python-tests-look-at "{'pk': 2,") 421 (python-tests-look-at "{'pk': 2,")
399 (should (eq (car (python-indent-context)) 'inside-paren)) 422 (should (eq (car (python-indent-context)) :inside-paren-newline-start))
400 (should (= (python-indent-calculate-indentation) 8)) 423 (should (= (python-indent-calculate-indentation) 8))
401 (python-tests-look-at "'name': 'second'}") 424 (python-tests-look-at "'name': 'second'}")
402 (should (eq (car (python-indent-context)) 'inside-paren)) 425 (should (eq (car (python-indent-context)) :inside-paren))
403 (should (= (python-indent-calculate-indentation) 9)) 426 (should (= (python-indent-calculate-indentation) 9))
404 (python-tests-look-at "]") 427 (python-tests-look-at "]")
405 (should (eq (car (python-indent-context)) 'inside-paren)) 428 (should (eq (car (python-indent-context))
429 :inside-paren-at-closing-nested-paren))
406 (should (= (python-indent-calculate-indentation) 4)) 430 (should (= (python-indent-calculate-indentation) 4))
407 (python-tests-look-at "}}") 431 (python-tests-look-at "}}")
408 (should (eq (car (python-indent-context)) 'inside-paren)) 432 (should (eq (car (python-indent-context))
433 :inside-paren-at-closing-nested-paren))
409 (should (= (python-indent-calculate-indentation) 0)) 434 (should (= (python-indent-calculate-indentation) 0))
410 (python-tests-look-at "}") 435 (python-tests-look-at "}")
411 (should (eq (car (python-indent-context)) 'inside-paren)) 436 (should (eq (car (python-indent-context)) :inside-paren-at-closing-paren))
412 (should (= (python-indent-calculate-indentation) 0)))) 437 (should (= (python-indent-calculate-indentation) 0))))
413 438
439(ert-deftest python-indent-inside-paren-3 ()
440 "The simplest case possible."
441 (python-tests-with-temp-buffer
442 "
443data = ('these',
444 'are',
445 'the',
446 'tokens')
447"
448 (python-tests-look-at "data = ('these',")
449 (should (eq (car (python-indent-context)) :after-line))
450 (should (= (python-indent-calculate-indentation) 0))
451 (forward-line 1)
452 (should (eq (car (python-indent-context)) :inside-paren))
453 (should (= (python-indent-calculate-indentation) 8))
454 (forward-line 1)
455 (should (eq (car (python-indent-context)) :inside-paren))
456 (should (= (python-indent-calculate-indentation) 8))
457 (forward-line 1)
458 (should (eq (car (python-indent-context)) :inside-paren))
459 (should (= (python-indent-calculate-indentation) 8))))
460
461(ert-deftest python-indent-inside-paren-4 ()
462 "Respect indentation of first column."
463 (python-tests-with-temp-buffer
464 "
465data = [ [ 'these', 'are'],
466 ['the', 'tokens' ] ]
467"
468 (python-tests-look-at "data = [ [ 'these', 'are'],")
469 (should (eq (car (python-indent-context)) :after-line))
470 (should (= (python-indent-calculate-indentation) 0))
471 (forward-line 1)
472 (should (eq (car (python-indent-context)) :inside-paren))
473 (should (= (python-indent-calculate-indentation) 9))))
474
475(ert-deftest python-indent-inside-paren-5 ()
476 "Test when :inside-paren initial parens are skipped in context start."
477 (python-tests-with-temp-buffer
478 "
479while ((not some_condition) and
480 another_condition):
481 do_something_interesting(
482 with_some_arg)
483"
484 (python-tests-look-at "while ((not some_condition) and")
485 (should (eq (car (python-indent-context)) :after-line))
486 (should (= (python-indent-calculate-indentation) 0))
487 (forward-line 1)
488 (should (eq (car (python-indent-context)) :inside-paren))
489 (should (= (python-indent-calculate-indentation) 7))
490 (forward-line 1)
491 (should (eq (car (python-indent-context)) :after-block-start))
492 (should (= (python-indent-calculate-indentation) 4))
493 (forward-line 1)
494 (should (eq (car (python-indent-context)) :inside-paren-newline-start))
495 (should (= (python-indent-calculate-indentation) 8))))
496
497(ert-deftest python-indent-inside-paren-6 ()
498 "This should be aligned.."
499 (python-tests-with-temp-buffer
500 "
501CHOICES = (('some', 'choice'),
502 ('another', 'choice'),
503 ('more', 'choices'))
504"
505 (python-tests-look-at "CHOICES = (('some', 'choice'),")
506 (should (eq (car (python-indent-context)) :after-line))
507 (should (= (python-indent-calculate-indentation) 0))
508 (forward-line 1)
509 (should (eq (car (python-indent-context)) :inside-paren))
510 (should (= (python-indent-calculate-indentation) 11))
511 (forward-line 1)
512 (should (eq (car (python-indent-context)) :inside-paren))
513 (should (= (python-indent-calculate-indentation) 11))))
514
414(ert-deftest python-indent-after-block-1 () 515(ert-deftest python-indent-after-block-1 ()
415 "The most simple after-block case that shouldn't fail." 516 "The most simple after-block case that shouldn't fail."
416 (python-tests-with-temp-buffer 517 (python-tests-with-temp-buffer
417 " 518 "
418def foo(a, b, c=True): 519def foo(a, b, c=True):
419" 520"
420 (should (eq (car (python-indent-context)) 'no-indent)) 521 (should (eq (car (python-indent-context)) :no-indent))
421 (should (= (python-indent-calculate-indentation) 0)) 522 (should (= (python-indent-calculate-indentation) 0))
422 (goto-char (point-max)) 523 (goto-char (point-max))
423 (should (eq (car (python-indent-context)) 'after-beginning-of-block)) 524 (should (eq (car (python-indent-context)) :after-block-start))
424 (should (= (python-indent-calculate-indentation) 4)))) 525 (should (= (python-indent-calculate-indentation) 4))))
425 526
426(ert-deftest python-indent-after-block-2 () 527(ert-deftest python-indent-after-block-2 ()
@@ -432,9 +533,28 @@ def foo(a, b, c={
432}): 533}):
433" 534"
434 (goto-char (point-max)) 535 (goto-char (point-max))
435 (should (eq (car (python-indent-context)) 'after-beginning-of-block)) 536 (should (eq (car (python-indent-context)) :after-block-start))
436 (should (= (python-indent-calculate-indentation) 4)))) 537 (should (= (python-indent-calculate-indentation) 4))))
437 538
539(ert-deftest python-indent-after-block-3 ()
540 "A weird (malformed) sample, usually found in python shells."
541 (python-tests-with-temp-buffer
542 "
543In [1]:
544def func():
545pass
546
547In [2]:
548something
549"
550 (python-tests-look-at "pass")
551 (should (eq (car (python-indent-context)) :after-block-start))
552 (should (= (python-indent-calculate-indentation) 4))
553 (python-tests-look-at "something")
554 (end-of-line)
555 (should (eq (car (python-indent-context)) :after-line))
556 (should (= (python-indent-calculate-indentation) 0))))
557
438(ert-deftest python-indent-after-backslash-1 () 558(ert-deftest python-indent-after-backslash-1 ()
439 "The most common case." 559 "The most common case."
440 (python-tests-with-temp-buffer 560 (python-tests-with-temp-buffer
@@ -444,16 +564,16 @@ from foo.bar.baz import something, something_1 \\\\
444 something_4, something_5 564 something_4, something_5
445" 565"
446 (python-tests-look-at "from foo.bar.baz import something, something_1") 566 (python-tests-look-at "from foo.bar.baz import something, something_1")
447 (should (eq (car (python-indent-context)) 'after-line)) 567 (should (eq (car (python-indent-context)) :after-line))
448 (should (= (python-indent-calculate-indentation) 0)) 568 (should (= (python-indent-calculate-indentation) 0))
449 (python-tests-look-at "something_2 something_3,") 569 (python-tests-look-at "something_2 something_3,")
450 (should (eq (car (python-indent-context)) 'after-backslash)) 570 (should (eq (car (python-indent-context)) :after-backslash-first-line))
451 (should (= (python-indent-calculate-indentation) 4)) 571 (should (= (python-indent-calculate-indentation) 4))
452 (python-tests-look-at "something_4, something_5") 572 (python-tests-look-at "something_4, something_5")
453 (should (eq (car (python-indent-context)) 'after-backslash)) 573 (should (eq (car (python-indent-context)) :after-backslash))
454 (should (= (python-indent-calculate-indentation) 4)) 574 (should (= (python-indent-calculate-indentation) 4))
455 (goto-char (point-max)) 575 (goto-char (point-max))
456 (should (eq (car (python-indent-context)) 'after-line)) 576 (should (eq (car (python-indent-context)) :after-line))
457 (should (= (python-indent-calculate-indentation) 0)))) 577 (should (= (python-indent-calculate-indentation) 0))))
458 578
459(ert-deftest python-indent-after-backslash-2 () 579(ert-deftest python-indent-after-backslash-2 ()
@@ -471,40 +591,104 @@ objects = Thing.objects.all() \\\\
471 .values_list() 591 .values_list()
472" 592"
473 (python-tests-look-at "objects = Thing.objects.all()") 593 (python-tests-look-at "objects = Thing.objects.all()")
474 (should (eq (car (python-indent-context)) 'after-line)) 594 (should (eq (car (python-indent-context)) :after-line))
475 (should (= (python-indent-calculate-indentation) 0)) 595 (should (= (python-indent-calculate-indentation) 0))
476 (python-tests-look-at ".filter(") 596 (python-tests-look-at ".filter(")
477 (should (eq (car (python-indent-context)) 'after-backslash)) 597 (should (eq (car (python-indent-context))
598 :after-backslash-dotted-continuation))
478 (should (= (python-indent-calculate-indentation) 23)) 599 (should (= (python-indent-calculate-indentation) 23))
479 (python-tests-look-at "type='toy',") 600 (python-tests-look-at "type='toy',")
480 (should (eq (car (python-indent-context)) 'inside-paren)) 601 (should (eq (car (python-indent-context)) :inside-paren-newline-start))
481 (should (= (python-indent-calculate-indentation) 27)) 602 (should (= (python-indent-calculate-indentation) 27))
482 (python-tests-look-at "status='bought'") 603 (python-tests-look-at "status='bought'")
483 (should (eq (car (python-indent-context)) 'inside-paren)) 604 (should (eq (car (python-indent-context)) :inside-paren-newline-start))
484 (should (= (python-indent-calculate-indentation) 27)) 605 (should (= (python-indent-calculate-indentation) 27))
485 (python-tests-look-at ") \\\\") 606 (python-tests-look-at ") \\\\")
486 (should (eq (car (python-indent-context)) 'inside-paren)) 607 (should (eq (car (python-indent-context)) :inside-paren-at-closing-paren))
487 (should (= (python-indent-calculate-indentation) 23)) 608 (should (= (python-indent-calculate-indentation) 23))
488 (python-tests-look-at ".aggregate(") 609 (python-tests-look-at ".aggregate(")
489 (should (eq (car (python-indent-context)) 'after-backslash)) 610 (should (eq (car (python-indent-context))
611 :after-backslash-dotted-continuation))
490 (should (= (python-indent-calculate-indentation) 23)) 612 (should (= (python-indent-calculate-indentation) 23))
491 (python-tests-look-at "Sum('amount')") 613 (python-tests-look-at "Sum('amount')")
492 (should (eq (car (python-indent-context)) 'inside-paren)) 614 (should (eq (car (python-indent-context)) :inside-paren-newline-start))
493 (should (= (python-indent-calculate-indentation) 27)) 615 (should (= (python-indent-calculate-indentation) 27))
494 (python-tests-look-at ") \\\\") 616 (python-tests-look-at ") \\\\")
495 (should (eq (car (python-indent-context)) 'inside-paren)) 617 (should (eq (car (python-indent-context)) :inside-paren-at-closing-paren))
496 (should (= (python-indent-calculate-indentation) 23)) 618 (should (= (python-indent-calculate-indentation) 23))
497 (python-tests-look-at ".values_list()") 619 (python-tests-look-at ".values_list()")
498 (should (eq (car (python-indent-context)) 'after-backslash)) 620 (should (eq (car (python-indent-context))
621 :after-backslash-dotted-continuation))
499 (should (= (python-indent-calculate-indentation) 23)) 622 (should (= (python-indent-calculate-indentation) 23))
500 (forward-line 1) 623 (forward-line 1)
501 (should (eq (car (python-indent-context)) 'after-line)) 624 (should (eq (car (python-indent-context)) :after-line))
502 (should (= (python-indent-calculate-indentation) 0)))) 625 (should (= (python-indent-calculate-indentation) 0))))
503 626
627(ert-deftest python-indent-after-backslash-3 ()
628 "Backslash continuation from block start."
629 (python-tests-with-temp-buffer
630 "
631with open('/path/to/some/file/you/want/to/read') as file_1, \\\\
632 open('/path/to/some/file/being/written', 'w') as file_2:
633 file_2.write(file_1.read())
634"
635 (python-tests-look-at
636 "with open('/path/to/some/file/you/want/to/read') as file_1, \\\\")
637 (should (eq (car (python-indent-context)) :after-line))
638 (should (= (python-indent-calculate-indentation) 0))
639 (python-tests-look-at
640 "open('/path/to/some/file/being/written', 'w') as file_2")
641 (should (eq (car (python-indent-context))
642 :after-backslash-block-continuation))
643 (should (= (python-indent-calculate-indentation) 5))
644 (python-tests-look-at "file_2.write(file_1.read())")
645 (should (eq (car (python-indent-context)) :after-block-start))
646 (should (= (python-indent-calculate-indentation) 4))))
647
648(ert-deftest python-indent-after-backslash-4 ()
649 "Backslash continuation from assignment."
650 (python-tests-with-temp-buffer
651 "
652super_awful_assignment = some_calculation() and \\\\
653 another_calculation() and \\\\
654 some_final_calculation()
655"
656 (python-tests-look-at
657 "super_awful_assignment = some_calculation() and \\\\")
658 (should (eq (car (python-indent-context)) :after-line))
659 (should (= (python-indent-calculate-indentation) 0))
660 (python-tests-look-at "another_calculation() and \\\\")
661 (should (eq (car (python-indent-context))
662 :after-backslash-assignment-continuation))
663 (should (= (python-indent-calculate-indentation) 25))
664 (python-tests-look-at "some_final_calculation()")
665 (should (eq (car (python-indent-context)) :after-backslash))
666 (should (= (python-indent-calculate-indentation) 25))))
667
668(ert-deftest python-indent-after-backslash-5 ()
669 "Dotted continuation bizarre example."
670 (python-tests-with-temp-buffer
671 "
672def delete_all_things():
673 Thing \\\\
674 .objects.all() \\\\
675 .delete()
676"
677 (python-tests-look-at "Thing \\\\")
678 (should (eq (car (python-indent-context)) :after-block-start))
679 (should (= (python-indent-calculate-indentation) 4))
680 (python-tests-look-at ".objects.all() \\\\")
681 (should (eq (car (python-indent-context)) :after-backslash-first-line))
682 (should (= (python-indent-calculate-indentation) 8))
683 (python-tests-look-at ".delete()")
684 (should (eq (car (python-indent-context))
685 :after-backslash-dotted-continuation))
686 (should (= (python-indent-calculate-indentation) 16))))
687
504(ert-deftest python-indent-block-enders-1 () 688(ert-deftest python-indent-block-enders-1 ()
505 "Test de-indentation for pass keyword." 689 "Test de-indentation for pass keyword."
506 (python-tests-with-temp-buffer 690 (python-tests-with-temp-buffer
507 " 691 "
508Class foo(object): 692Class foo(object):
509 693
510 def bar(self): 694 def bar(self):
@@ -516,17 +700,18 @@ Class foo(object):
516 else: 700 else:
517 pass 701 pass
518" 702"
519 (python-tests-look-at "3)") 703 (python-tests-look-at "3)")
520 (forward-line 1) 704 (forward-line 1)
521 (should (= (python-indent-calculate-indentation) 8)) 705 (should (= (python-indent-calculate-indentation) 8))
522 (python-tests-look-at "pass") 706 (python-tests-look-at "pass")
523 (forward-line 1) 707 (forward-line 1)
524 (should (= (python-indent-calculate-indentation) 8)))) 708 (should (eq (car (python-indent-context)) :after-block-end))
709 (should (= (python-indent-calculate-indentation) 8))))
525 710
526(ert-deftest python-indent-block-enders-2 () 711(ert-deftest python-indent-block-enders-2 ()
527 "Test de-indentation for return keyword." 712 "Test de-indentation for return keyword."
528 (python-tests-with-temp-buffer 713 (python-tests-with-temp-buffer
529 " 714 "
530Class foo(object): 715Class foo(object):
531 '''raise lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do 716 '''raise lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
532 717
@@ -539,64 +724,68 @@ Class foo(object):
539 2, 724 2,
540 3) 725 3)
541" 726"
542 (python-tests-look-at "def") 727 (python-tests-look-at "def")
543 (should (= (python-indent-calculate-indentation) 4)) 728 (should (= (python-indent-calculate-indentation) 4))
544 (python-tests-look-at "if") 729 (python-tests-look-at "if")
545 (should (= (python-indent-calculate-indentation) 8)) 730 (should (= (python-indent-calculate-indentation) 8))
546 (python-tests-look-at "return") 731 (python-tests-look-at "return")
547 (should (= (python-indent-calculate-indentation) 12)) 732 (should (= (python-indent-calculate-indentation) 12))
548 (goto-char (point-max)) 733 (goto-char (point-max))
549 (should (= (python-indent-calculate-indentation) 8)))) 734 (should (eq (car (python-indent-context)) :after-block-end))
735 (should (= (python-indent-calculate-indentation) 8))))
550 736
551(ert-deftest python-indent-block-enders-3 () 737(ert-deftest python-indent-block-enders-3 ()
552 "Test de-indentation for continue keyword." 738 "Test de-indentation for continue keyword."
553 (python-tests-with-temp-buffer 739 (python-tests-with-temp-buffer
554 " 740 "
555for element in lst: 741for element in lst:
556 if element is None: 742 if element is None:
557 continue 743 continue
558" 744"
559 (python-tests-look-at "if") 745 (python-tests-look-at "if")
560 (should (= (python-indent-calculate-indentation) 4)) 746 (should (= (python-indent-calculate-indentation) 4))
561 (python-tests-look-at "continue") 747 (python-tests-look-at "continue")
562 (should (= (python-indent-calculate-indentation) 8)) 748 (should (= (python-indent-calculate-indentation) 8))
563 (forward-line 1) 749 (forward-line 1)
564 (should (= (python-indent-calculate-indentation) 4)))) 750 (should (eq (car (python-indent-context)) :after-block-end))
751 (should (= (python-indent-calculate-indentation) 4))))
565 752
566(ert-deftest python-indent-block-enders-4 () 753(ert-deftest python-indent-block-enders-4 ()
567 "Test de-indentation for break keyword." 754 "Test de-indentation for break keyword."
568 (python-tests-with-temp-buffer 755 (python-tests-with-temp-buffer
569 " 756 "
570for element in lst: 757for element in lst:
571 if element is None: 758 if element is None:
572 break 759 break
573" 760"
574 (python-tests-look-at "if") 761 (python-tests-look-at "if")
575 (should (= (python-indent-calculate-indentation) 4)) 762 (should (= (python-indent-calculate-indentation) 4))
576 (python-tests-look-at "break") 763 (python-tests-look-at "break")
577 (should (= (python-indent-calculate-indentation) 8)) 764 (should (= (python-indent-calculate-indentation) 8))
578 (forward-line 1) 765 (forward-line 1)
579 (should (= (python-indent-calculate-indentation) 4)))) 766 (should (eq (car (python-indent-context)) :after-block-end))
767 (should (= (python-indent-calculate-indentation) 4))))
580 768
581(ert-deftest python-indent-block-enders-5 () 769(ert-deftest python-indent-block-enders-5 ()
582 "Test de-indentation for raise keyword." 770 "Test de-indentation for raise keyword."
583 (python-tests-with-temp-buffer 771 (python-tests-with-temp-buffer
584 " 772 "
585for element in lst: 773for element in lst:
586 if element is None: 774 if element is None:
587 raise ValueError('Element cannot be None') 775 raise ValueError('Element cannot be None')
588" 776"
589 (python-tests-look-at "if") 777 (python-tests-look-at "if")
590 (should (= (python-indent-calculate-indentation) 4)) 778 (should (= (python-indent-calculate-indentation) 4))
591 (python-tests-look-at "raise") 779 (python-tests-look-at "raise")
592 (should (= (python-indent-calculate-indentation) 8)) 780 (should (= (python-indent-calculate-indentation) 8))
593 (forward-line 1) 781 (forward-line 1)
594 (should (= (python-indent-calculate-indentation) 4)))) 782 (should (eq (car (python-indent-context)) :after-block-end))
783 (should (= (python-indent-calculate-indentation) 4))))
595 784
596(ert-deftest python-indent-dedenters-1 () 785(ert-deftest python-indent-dedenters-1 ()
597 "Test de-indentation for the elif keyword." 786 "Test de-indentation for the elif keyword."
598 (python-tests-with-temp-buffer 787 (python-tests-with-temp-buffer
599 " 788 "
600if save: 789if save:
601 try: 790 try:
602 write_to_disk(data) 791 write_to_disk(data)
@@ -604,15 +793,15 @@ if save:
604 cleanup() 793 cleanup()
605 elif 794 elif
606" 795"
607 (python-tests-look-at "elif\n") 796 (python-tests-look-at "elif\n")
608 (should (eq (car (python-indent-context)) 'dedenter-statement)) 797 (should (eq (car (python-indent-context)) :at-dedenter-block-start))
609 (should (= (python-indent-calculate-indentation) 0)) 798 (should (= (python-indent-calculate-indentation) 0))
610 (should (equal (python-indent-calculate-levels) '(0))))) 799 (should (= (python-indent-calculate-indentation t) 0))))
611 800
612(ert-deftest python-indent-dedenters-2 () 801(ert-deftest python-indent-dedenters-2 ()
613 "Test de-indentation for the else keyword." 802 "Test de-indentation for the else keyword."
614 (python-tests-with-temp-buffer 803 (python-tests-with-temp-buffer
615 " 804 "
616if save: 805if save:
617 try: 806 try:
618 write_to_disk(data) 807 write_to_disk(data)
@@ -627,43 +816,50 @@ if save:
627 finally: 816 finally:
628 data.free() 817 data.free()
629" 818"
630 (python-tests-look-at "else\n") 819 (python-tests-look-at "else\n")
631 (should (eq (car (python-indent-context)) 'dedenter-statement)) 820 (should (eq (car (python-indent-context)) :at-dedenter-block-start))
632 (should (= (python-indent-calculate-indentation) 8)) 821 (should (= (python-indent-calculate-indentation) 8))
633 (should (equal (python-indent-calculate-levels) '(0 4 8))))) 822 (python-indent-line t)
823 (should (= (python-indent-calculate-indentation t) 4))
824 (python-indent-line t)
825 (should (= (python-indent-calculate-indentation t) 0))
826 (python-indent-line t)
827 (should (= (python-indent-calculate-indentation t) 8))))
634 828
635(ert-deftest python-indent-dedenters-3 () 829(ert-deftest python-indent-dedenters-3 ()
636 "Test de-indentation for the except keyword." 830 "Test de-indentation for the except keyword."
637 (python-tests-with-temp-buffer 831 (python-tests-with-temp-buffer
638 " 832 "
639if save: 833if save:
640 try: 834 try:
641 write_to_disk(data) 835 write_to_disk(data)
642 except 836 except
643" 837"
644 (python-tests-look-at "except\n") 838 (python-tests-look-at "except\n")
645 (should (eq (car (python-indent-context)) 'dedenter-statement)) 839 (should (eq (car (python-indent-context)) :at-dedenter-block-start))
646 (should (= (python-indent-calculate-indentation) 4)) 840 (should (= (python-indent-calculate-indentation) 4))
647 (should (equal (python-indent-calculate-levels) '(4))))) 841 (python-indent-line t)
842 (should (= (python-indent-calculate-indentation t) 4))))
648 843
649(ert-deftest python-indent-dedenters-4 () 844(ert-deftest python-indent-dedenters-4 ()
650 "Test de-indentation for the finally keyword." 845 "Test de-indentation for the finally keyword."
651 (python-tests-with-temp-buffer 846 (python-tests-with-temp-buffer
652 " 847 "
653if save: 848if save:
654 try: 849 try:
655 write_to_disk(data) 850 write_to_disk(data)
656 finally 851 finally
657" 852"
658 (python-tests-look-at "finally\n") 853 (python-tests-look-at "finally\n")
659 (should (eq (car (python-indent-context)) 'dedenter-statement)) 854 (should (eq (car (python-indent-context)) :at-dedenter-block-start))
660 (should (= (python-indent-calculate-indentation) 4)) 855 (should (= (python-indent-calculate-indentation) 4))
661 (should (equal (python-indent-calculate-levels) '(4))))) 856 (python-indent-line t)
857 (should (= (python-indent-calculate-indentation) 4))))
662 858
663(ert-deftest python-indent-dedenters-5 () 859(ert-deftest python-indent-dedenters-5 ()
664 "Test invalid levels are skipped in a complex example." 860 "Test invalid levels are skipped in a complex example."
665 (python-tests-with-temp-buffer 861 (python-tests-with-temp-buffer
666 " 862 "
667if save: 863if save:
668 try: 864 try:
669 write_to_disk(data) 865 write_to_disk(data)
@@ -676,29 +872,31 @@ if save:
676 do_cleanup() 872 do_cleanup()
677 else 873 else
678" 874"
679 (python-tests-look-at "else\n") 875 (python-tests-look-at "else\n")
680 (should (eq (car (python-indent-context)) 'dedenter-statement)) 876 (should (eq (car (python-indent-context)) :at-dedenter-block-start))
681 (should (= (python-indent-calculate-indentation) 8)) 877 (should (= (python-indent-calculate-indentation) 8))
682 (should (equal (python-indent-calculate-levels) '(0 8))))) 878 (should (= (python-indent-calculate-indentation t) 0))
879 (python-indent-line t)
880 (should (= (python-indent-calculate-indentation t) 8))))
683 881
684(ert-deftest python-indent-dedenters-6 () 882(ert-deftest python-indent-dedenters-6 ()
685 "Test indentation is zero when no opening block for dedenter." 883 "Test indentation is zero when no opening block for dedenter."
686 (python-tests-with-temp-buffer 884 (python-tests-with-temp-buffer
687 " 885 "
688try: 886try:
689 # if save: 887 # if save:
690 write_to_disk(data) 888 write_to_disk(data)
691 else 889 else
692" 890"
693 (python-tests-look-at "else\n") 891 (python-tests-look-at "else\n")
694 (should (eq (car (python-indent-context)) 'dedenter-statement)) 892 (should (eq (car (python-indent-context)) :at-dedenter-block-start))
695 (should (= (python-indent-calculate-indentation) 0)) 893 (should (= (python-indent-calculate-indentation) 0))
696 (should (equal (python-indent-calculate-levels) '(0))))) 894 (should (= (python-indent-calculate-indentation t) 0))))
697 895
698(ert-deftest python-indent-dedenters-7 () 896(ert-deftest python-indent-dedenters-7 ()
699 "Test indentation case from Bug#15163." 897 "Test indentation case from Bug#15163."
700 (python-tests-with-temp-buffer 898 (python-tests-with-temp-buffer
701 " 899 "
702if a: 900if a:
703 if b: 901 if b:
704 pass 902 pass
@@ -706,10 +904,10 @@ if a:
706 pass 904 pass
707 else: 905 else:
708" 906"
709 (python-tests-look-at "else:" 2) 907 (python-tests-look-at "else:" 2)
710 (should (eq (car (python-indent-context)) 'dedenter-statement)) 908 (should (eq (car (python-indent-context)) :at-dedenter-block-start))
711 (should (= (python-indent-calculate-indentation) 0)) 909 (should (= (python-indent-calculate-indentation) 0))
712 (should (equal (python-indent-calculate-levels) '(0))))) 910 (should (= (python-indent-calculate-indentation t) 0))))
713 911
714(ert-deftest python-indent-dedenters-8 () 912(ert-deftest python-indent-dedenters-8 ()
715 "Test indentation for Bug#18432." 913 "Test indentation for Bug#18432."
@@ -721,10 +919,99 @@ if (a == 1 or
721elif (a == 3 or 919elif (a == 3 or
722a == 4): 920a == 4):
723" 921"
922 (python-tests-look-at "elif (a == 3 or")
923 (should (eq (car (python-indent-context)) :at-dedenter-block-start))
924 (should (= (python-indent-calculate-indentation) 0))
925 (should (= (python-indent-calculate-indentation t) 0))
724 (python-tests-look-at "a == 4):\n") 926 (python-tests-look-at "a == 4):\n")
725 (should (eq (car (python-indent-context)) 'inside-paren)) 927 (should (eq (car (python-indent-context)) :inside-paren))
726 (should (= (python-indent-calculate-indentation) 6)) 928 (should (= (python-indent-calculate-indentation) 6))
727 (should (equal (python-indent-calculate-levels) '(0 4 6))))) 929 (python-indent-line)
930 (should (= (python-indent-calculate-indentation t) 4))
931 (python-indent-line t)
932 (should (= (python-indent-calculate-indentation t) 0))
933 (python-indent-line t)
934 (should (= (python-indent-calculate-indentation t) 6))))
935
936(ert-deftest python-indent-inside-string-1 ()
937 "Test indentation for strings."
938 (python-tests-with-temp-buffer
939 "
940multiline = '''
941bunch
942of
943lines
944'''
945"
946 (python-tests-look-at "multiline = '''")
947 (should (eq (car (python-indent-context)) :after-line))
948 (should (= (python-indent-calculate-indentation) 0))
949 (python-tests-look-at "bunch")
950 (should (eq (car (python-indent-context)) :inside-string))
951 (should (= (python-indent-calculate-indentation) 0))
952 (python-tests-look-at "of")
953 (should (eq (car (python-indent-context)) :inside-string))
954 (should (= (python-indent-calculate-indentation) 0))
955 (python-tests-look-at "lines")
956 (should (eq (car (python-indent-context)) :inside-string))
957 (should (= (python-indent-calculate-indentation) 0))
958 (python-tests-look-at "'''")
959 (should (eq (car (python-indent-context)) :inside-string))
960 (should (= (python-indent-calculate-indentation) 0))))
961
962(ert-deftest python-indent-inside-string-2 ()
963 "Test indentation for docstrings."
964 (python-tests-with-temp-buffer
965 "
966def fn(a, b, c=True):
967 '''docstring
968 bunch
969 of
970 lines
971 '''
972"
973 (python-tests-look-at "'''docstring")
974 (should (eq (car (python-indent-context)) :after-block-start))
975 (should (= (python-indent-calculate-indentation) 4))
976 (python-tests-look-at "bunch")
977 (should (eq (car (python-indent-context)) :inside-string))
978 (should (= (python-indent-calculate-indentation) 4))
979 (python-tests-look-at "of")
980 (should (eq (car (python-indent-context)) :inside-string))
981 (should (= (python-indent-calculate-indentation) 4))
982 (python-tests-look-at "lines")
983 (should (eq (car (python-indent-context)) :inside-string))
984 (should (= (python-indent-calculate-indentation) 4))
985 (python-tests-look-at "'''")
986 (should (eq (car (python-indent-context)) :inside-string))
987 (should (= (python-indent-calculate-indentation) 4))))
988
989(ert-deftest python-indent-inside-string-3 ()
990 "Test indentation for nested strings."
991 (python-tests-with-temp-buffer
992 "
993def fn(a, b, c=True):
994 some_var = '''
995 bunch
996 of
997 lines
998 '''
999"
1000 (python-tests-look-at "some_var = '''")
1001 (should (eq (car (python-indent-context)) :after-block-start))
1002 (should (= (python-indent-calculate-indentation) 4))
1003 (python-tests-look-at "bunch")
1004 (should (eq (car (python-indent-context)) :inside-string))
1005 (should (= (python-indent-calculate-indentation) 4))
1006 (python-tests-look-at "of")
1007 (should (eq (car (python-indent-context)) :inside-string))
1008 (should (= (python-indent-calculate-indentation) 4))
1009 (python-tests-look-at "lines")
1010 (should (eq (car (python-indent-context)) :inside-string))
1011 (should (= (python-indent-calculate-indentation) 4))
1012 (python-tests-look-at "'''")
1013 (should (eq (car (python-indent-context)) :inside-string))
1014 (should (= (python-indent-calculate-indentation) 4))))
728 1015
729(ert-deftest python-indent-electric-colon-1 () 1016(ert-deftest python-indent-electric-colon-1 ()
730 "Test indentation case from Bug#18228." 1017 "Test indentation case from Bug#18228."
@@ -1802,6 +2089,23 @@ def f():
1802 (python-nav-backward-up-list) 2089 (python-nav-backward-up-list)
1803 (should (looking-at "def f():")))) 2090 (should (looking-at "def f():"))))
1804 2091
2092(ert-deftest python-indent-dedent-line-backspace-1 ()
2093 "Check de-indentation on first call. Bug#18319."
2094 (python-tests-with-temp-buffer
2095 "
2096if True:
2097 x ()
2098 if False:
2099"
2100 (python-tests-look-at "if False:")
2101 (call-interactively #'python-indent-dedent-line-backspace)
2102 (should (zerop (current-indentation)))
2103 ;; XXX: This should be a call to `undo' but it's triggering errors.
2104 (insert " ")
2105 (should (= (current-indentation) 4))
2106 (call-interactively #'python-indent-dedent-line-backspace)
2107 (should (zerop (current-indentation)))))
2108
1805 2109
1806;;; Shell integration 2110;;; Shell integration
1807 2111
diff --git a/test/automated/regexp-tests.el b/test/automated/regexp-tests.el
index 31a4ee958c6..ee177b3e2e9 100644
--- a/test/automated/regexp-tests.el
+++ b/test/automated/regexp-tests.el
@@ -23,6 +23,8 @@
23 23
24;;; Code: 24;;; Code:
25 25
26(require 'regexp-opt)
27
26(ert-deftest regexp-test-regexp-opt () 28(ert-deftest regexp-test-regexp-opt ()
27 "Test the `compilation-error-regexp-alist' regexps. 29 "Test the `compilation-error-regexp-alist' regexps.
28The test data is in `compile-tests--test-regexps-data'." 30The test data is in `compile-tests--test-regexps-data'."