From 8433d47026bc042ed7e792d032469a6ea4f6d622 Mon Sep 17 00:00:00 2001 From: Thien-Thi Nguyen Date: Wed, 17 May 2006 10:38:15 +0000 Subject: [PATCH 001/501] (ewoc-map, ewoc-invalidate): Compute PP before looping. --- lisp/ChangeLog | 2 ++ lisp/emacs-lisp/ewoc.el | 8 +++++--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 85e397cbe29..cd8a9c6f5c7 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -3,6 +3,8 @@ * emacs-lisp/ewoc.el (ewoc-data): Add docstring. (ewoc-nth): Doc fix. + (ewoc-map, ewoc-invalidate): Compute PP before looping. + 2006-05-16 Eli Zaretskii * international/mule.el (auto-coding-alist): Add .lha to files diff --git a/lisp/emacs-lisp/ewoc.el b/lisp/emacs-lisp/ewoc.el index fa85ce21fb0..dbfae49233a 100644 --- a/lisp/emacs-lisp/ewoc.el +++ b/lisp/emacs-lisp/ewoc.el @@ -352,11 +352,12 @@ If more than two arguments are given, the remaining arguments will be passed to MAP-FUNCTION." (ewoc--set-buffer-bind-dll-let* ewoc ((footer (ewoc--footer ewoc)) + (pp (ewoc--pretty-printer ewoc)) (node (ewoc--node-nth dll 1))) (save-excursion (while (not (eq node footer)) (if (apply map-function (ewoc--node-data node) args) - (ewoc--refresh-node (ewoc--pretty-printer ewoc) node)) + (ewoc--refresh-node pp node)) (setq node (ewoc--node-next dll node)))))) (defun ewoc-filter (ewoc predicate &rest args) @@ -465,10 +466,11 @@ If the EWOC is empty, nil is returned." (defun ewoc-invalidate (ewoc &rest nodes) "Call EWOC's pretty-printer for each element in NODES. Delete current text first, thus effecting a \"refresh\"." - (ewoc--set-buffer-bind-dll ewoc + (ewoc--set-buffer-bind-dll-let* ewoc + ((pp (ewoc--pretty-printer ewoc))) (save-excursion (dolist (node nodes) - (ewoc--refresh-node (ewoc--pretty-printer ewoc) node))))) + (ewoc--refresh-node pp node))))) (defun ewoc-goto-prev (ewoc arg) "Move point to the ARGth previous element in EWOC. From fb58b23a98a342a2be9c510fcc33d93e1466b29e Mon Sep 17 00:00:00 2001 From: "Kim F. Storm" Date: Wed, 17 May 2006 21:25:47 +0000 Subject: [PATCH 002/501] *** empty log message *** --- lisp/ChangeLog | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index cd8a9c6f5c7..1a53519e840 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,7 @@ +2006-05-17 Kim F. Storm + + * ido.el (ido-read-internal): Use only nondirectory part of default item. + 2006-05-17 Thien-Thi Nguyen * emacs-lisp/ewoc.el (ewoc-data): Add docstring. From 2d38f869f6f2aafd1fc3ddc605d79eda2fa207ae Mon Sep 17 00:00:00 2001 From: "Kim F. Storm" Date: Wed, 17 May 2006 21:25:59 +0000 Subject: [PATCH 003/501] (ido-read-internal): Use only nondirectory part of default item. --- lisp/ido.el | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/lisp/ido.el b/lisp/ido.el index a622a7e6275..d03c002d597 100644 --- a/lisp/ido.el +++ b/lisp/ido.el @@ -1778,7 +1778,7 @@ With ARG, turn ido speed-up on if arg is positive, off otherwise." "Perform the `ido-read-buffer' and `ido-read-file-name' functions. Return the name of a buffer or file selected. PROMPT is the prompt to give to the user. -DEFAULT if given is the default directory to start with. +DEFAULT if given is the default item to start with. If REQUIRE-MATCH is non-nil, an existing file must be selected. If INITIAL is non-nil, it specifies the initial input string." (let @@ -1822,7 +1822,10 @@ If INITIAL is non-nil, it specifies the initial input string." (cond ((eq item 'buffer) (if (bufferp default) (buffer-name default) default)) - ((stringp default) default) + ((stringp default) + (if (memq item '(file dir)) + (file-name-nondirectory default) + default)) ((eq item 'file) (and ido-enable-last-directory-history (let ((d (assoc ido-current-directory ido-last-directory-list))) From 05327ca9724287cc3da4c625f180da5ab11be998 Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Wed, 17 May 2006 21:57:25 +0000 Subject: [PATCH 004/501] (shell-dirtrack-mode): Make it into a proper minor mode, so we can explicitly enable/disable rather than toggle. (shell-mode): Use it. (shell-cd): Don't try to reproduce what `cd' does. --- lisp/ChangeLog | 10 ++- lisp/shell.el | 161 ++++++++++++++++++++++++------------------------- 2 files changed, 88 insertions(+), 83 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 1a53519e840..64a78b0c2bc 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,6 +1,14 @@ +2006-05-17 Stefan Monnier + + * shell.el (shell-dirtrack-mode): Make it into a proper minor mode, so + we can explicitly enable/disable rather than toggle. + (shell-mode): Use it. + (shell-cd): Don't try to reproduce what `cd' does. + 2006-05-17 Kim F. Storm - * ido.el (ido-read-internal): Use only nondirectory part of default item. + * ido.el (ido-read-internal): Use only nondirectory part of + default item. 2006-05-17 Thien-Thi Nguyen diff --git a/lisp/shell.el b/lisp/shell.el index 71b5862feb6..bfa9565e8d4 100644 --- a/lisp/shell.el +++ b/lisp/shell.el @@ -150,7 +150,7 @@ This is a fine thing to set in your `.emacs' file." :group 'shell) (defcustom shell-completion-fignore nil - "*List of suffixes to be disregarded during file/command completion. + "List of suffixes to be disregarded during file/command completion. This variable is used to initialize `comint-completion-fignore' in the shell buffer. The default is nil, for compatibility with most shells. Some people like (\"~\" \"#\" \"%\"). @@ -199,19 +199,19 @@ shell buffer. This is a fine thing to set in your `.emacs' file.") (defcustom shell-command-regexp "[^;&|\n]+" - "*Regexp to match a single command within a pipeline. + "Regexp to match a single command within a pipeline. This is used for directory tracking and does not do a perfect job." :type 'regexp :group 'shell) (defcustom shell-command-separator-regexp "[;&|\n \t]*" - "*Regexp to match a single command within a pipeline. + "Regexp to match a single command within a pipeline. This is used for directory tracking and does not do a perfect job." :type 'regexp :group 'shell) (defcustom shell-completion-execonly t - "*If non-nil, use executable files only for completion candidates. + "If non-nil, use executable files only for completion candidates. This mirrors the optional behavior of tcsh. Detecting executability of files may slow command completion considerably." @@ -219,35 +219,35 @@ Detecting executability of files may slow command completion considerably." :group 'shell) (defcustom shell-popd-regexp "popd" - "*Regexp to match subshell commands equivalent to popd." + "Regexp to match subshell commands equivalent to popd." :type 'regexp :group 'shell-directories) (defcustom shell-pushd-regexp "pushd" - "*Regexp to match subshell commands equivalent to pushd." + "Regexp to match subshell commands equivalent to pushd." :type 'regexp :group 'shell-directories) (defcustom shell-pushd-tohome nil - "*If non-nil, make pushd with no arg behave as \"pushd ~\" (like cd). + "If non-nil, make pushd with no arg behave as \"pushd ~\" (like cd). This mirrors the optional behavior of tcsh." :type 'boolean :group 'shell-directories) (defcustom shell-pushd-dextract nil - "*If non-nil, make \"pushd +n\" pop the nth dir to the stack top. + "If non-nil, make \"pushd +n\" pop the nth dir to the stack top. This mirrors the optional behavior of tcsh." :type 'boolean :group 'shell-directories) (defcustom shell-pushd-dunique nil - "*If non-nil, make pushd only add unique directories to the stack. + "If non-nil, make pushd only add unique directories to the stack. This mirrors the optional behavior of tcsh." :type 'boolean :group 'shell-directories) (defcustom shell-cd-regexp "cd" - "*Regexp to match subshell commands equivalent to cd." + "Regexp to match subshell commands equivalent to cd." :type 'regexp :group 'shell-directories) @@ -256,19 +256,19 @@ This mirrors the optional behavior of tcsh." ; NetWare allows the five chars between upper and lower alphabetics. "[]a-zA-Z^_`\\[\\\\]:" nil) - "*If non-nil, is regexp used to track drive changes." + "If non-nil, is regexp used to track drive changes." :type '(choice regexp (const nil)) :group 'shell-directories) (defcustom shell-dirtrack-verbose t - "*If non-nil, show the directory stack following directory change. + "If non-nil, show the directory stack following directory change. This is effective only if directory tracking is enabled." :type 'boolean :group 'shell-directories) (defcustom explicit-shell-file-name nil - "*If non-nil, is file name to use for explicitly requested inferior shell." + "If non-nil, is file name to use for explicitly requested inferior shell." :type '(choice (const :tag "None" nil) file) :group 'shell) @@ -278,7 +278,7 @@ This is effective only if directory tracking is enabled." ;; than us about what terminal modes to use. '("-i" "-T") '("-i")) - "*Args passed to inferior shell by M-x shell, if the shell is csh. + "Args passed to inferior shell by \\[shell], if the shell is csh. Value is a list of strings, which may be nil." :type '(repeat (string :tag "Argument")) :group 'shell) @@ -296,13 +296,13 @@ Value is a list of strings, which may be nil." (shell-command-to-string (concat prog " --noediting")))) '("-i") '("--noediting" "-i"))) - "*Args passed to inferior shell by M-x shell, if the shell is bash. + "Args passed to inferior shell by \\[shell], if the shell is bash. Value is a list of strings, which may be nil." :type '(repeat (string :tag "Argument")) :group 'shell) (defcustom shell-input-autoexpand 'history - "*If non-nil, expand input command history references on completion. + "If non-nil, expand input command history references on completion. This mirrors the optional behavior of tcsh (its autoexpand and histlit). If the value is `input', then the expansion is seen on input. @@ -433,9 +433,7 @@ buffer." (setq shell-dirstack nil) (make-local-variable 'shell-last-dir) (setq shell-last-dir nil) - (make-local-variable 'shell-dirtrackp) - (setq shell-dirtrackp t) - (add-hook 'comint-input-filter-functions 'shell-directory-tracker nil t) + (shell-dirtrack-mode 1) (setq comint-input-autoexpand shell-input-autoexpand) ;; This is not really correct, since the shell buffer does not really ;; edit this directory. But it is useful in the buffer list and menus. @@ -558,48 +556,48 @@ Otherwise, one argument `-i' is passed to the shell. (shell-mode))) buffer) -;;; Don't do this when shell.el is loaded, only while dumping. +;; Don't do this when shell.el is loaded, only while dumping. ;;;###autoload (add-hook 'same-window-buffer-names "*shell*") ;;; Directory tracking -;;; -;;; This code provides the shell mode input sentinel -;;; SHELL-DIRECTORY-TRACKER -;;; that tracks cd, pushd, and popd commands issued to the shell, and -;;; changes the current directory of the shell buffer accordingly. -;;; -;;; This is basically a fragile hack, although it's more accurate than -;;; the version in Emacs 18's shell.el. It has the following failings: -;;; 1. It doesn't know about the cdpath shell variable. -;;; 2. It cannot infallibly deal with command sequences, though it does well -;;; with these and with ignoring commands forked in another shell with ()s. -;;; 3. More generally, any complex command is going to throw it. Otherwise, -;;; you'd have to build an entire shell interpreter in Emacs Lisp. Failing -;;; that, there's no way to catch shell commands where cd's are buried -;;; inside conditional expressions, aliases, and so forth. -;;; -;;; The whole approach is a crock. Shell aliases mess it up. File sourcing -;;; messes it up. You run other processes under the shell; these each have -;;; separate working directories, and some have commands for manipulating -;;; their w.d.'s (e.g., the lcd command in ftp). Some of these programs have -;;; commands that do *not* affect the current w.d. at all, but look like they -;;; do (e.g., the cd command in ftp). In shells that allow you job -;;; control, you can switch between jobs, all having different w.d.'s. So -;;; simply saying %3 can shift your w.d.. -;;; -;;; The solution is to relax, not stress out about it, and settle for -;;; a hack that works pretty well in typical circumstances. Remember -;;; that a half-assed solution is more in keeping with the spirit of Unix, -;;; anyway. Blech. -;;; -;;; One good hack not implemented here for users of programmable shells -;;; is to program up the shell w.d. manipulation commands to output -;;; a coded command sequence to the tty. Something like -;;; ESC | | -;;; where is the new current working directory. Then trash the -;;; directory tracking machinery currently used in this package, and -;;; replace it with a process filter that watches for and strips out -;;; these messages. +;; +;; This code provides the shell mode input sentinel +;; SHELL-DIRECTORY-TRACKER +;; that tracks cd, pushd, and popd commands issued to the shell, and +;; changes the current directory of the shell buffer accordingly. +;; +;; This is basically a fragile hack, although it's more accurate than +;; the version in Emacs 18's shell.el. It has the following failings: +;; 1. It doesn't know about the cdpath shell variable. +;; 2. It cannot infallibly deal with command sequences, though it does well +;; with these and with ignoring commands forked in another shell with ()s. +;; 3. More generally, any complex command is going to throw it. Otherwise, +;; you'd have to build an entire shell interpreter in Emacs Lisp. Failing +;; that, there's no way to catch shell commands where cd's are buried +;; inside conditional expressions, aliases, and so forth. +;; +;; The whole approach is a crock. Shell aliases mess it up. File sourcing +;; messes it up. You run other processes under the shell; these each have +;; separate working directories, and some have commands for manipulating +;; their w.d.'s (e.g., the lcd command in ftp). Some of these programs have +;; commands that do *not* affect the current w.d. at all, but look like they +;; do (e.g., the cd command in ftp). In shells that allow you job +;; control, you can switch between jobs, all having different w.d.'s. So +;; simply saying %3 can shift your w.d.. +;; +;; The solution is to relax, not stress out about it, and settle for +;; a hack that works pretty well in typical circumstances. Remember +;; that a half-assed solution is more in keeping with the spirit of Unix, +;; anyway. Blech. +;; +;; One good hack not implemented here for users of programmable shells +;; is to program up the shell w.d. manipulation commands to output +;; a coded command sequence to the tty. Something like +;; ESC | | +;; where is the new current working directory. Then trash the +;; directory tracking machinery currently used in this package, and +;; replace it with a process filter that watches for and strips out +;; these messages. (defun shell-directory-tracker (str) "Tracks cd, pushd and popd commands issued to the shell. @@ -607,8 +605,8 @@ This function is called on each input passed to the shell. It watches for cd, pushd and popd commands and sets the buffer's default directory to track these commands. -You may toggle this tracking on and off with M-x dirtrack-mode. -If Emacs gets confused, you can resync with the shell with M-x dirs. +You may toggle this tracking on and off with \\[dirtrack-mode]. +If Emacs gets confused, you can resync with the shell with \\[dirs]. See variables `shell-cd-regexp', `shell-chdrive-regexp', `shell-pushd-regexp', and `shell-popd-regexp', while `shell-pushd-tohome', `shell-pushd-dextract', @@ -677,7 +675,7 @@ Environment variables are expanded, see function `substitute-in-file-name'." (setq string (replace-match "" nil nil string))))) string))) -;;; popd [+n] +;; popd [+n] (defun shell-process-popd (arg) (let ((num (or (shell-extract-num arg) 0))) (cond ((and num (= num 0) shell-dirstack) @@ -703,7 +701,7 @@ Environment variables are expanded, see function `substitute-in-file-name'." ;; For relative name we assume default-directory already has the prefix. (expand-file-name dir)))) -;;; cd [dir] +;; cd [dir] (defun shell-process-cd (arg) (let ((new-dir (cond ((zerop (length arg)) (concat comint-file-name-prefix "~")) @@ -713,7 +711,7 @@ Environment variables are expanded, see function `substitute-in-file-name'." (shell-cd new-dir) (shell-dirstack-message))) -;;; pushd [+n | dir] +;; pushd [+n | dir] (defun shell-process-pushd (arg) (let ((num (shell-extract-num arg))) (cond ((zerop (length arg)) @@ -762,26 +760,25 @@ Environment variables are expanded, see function `substitute-in-file-name'." (and (string-match "^\\+[1-9][0-9]*$" str) (string-to-number str))) - -(defun shell-dirtrack-mode () +(defvaralias 'shell-dirtrack-mode 'shell-dirtrackp) +(define-minor-mode shell-dirtrack-mode "Turn directory tracking on and off in a shell buffer." - (interactive) - (if (setq shell-dirtrackp (not shell-dirtrackp)) - (setq list-buffers-directory default-directory) - (setq list-buffers-directory nil)) - (message "Directory tracking %s" (if shell-dirtrackp "ON" "OFF"))) + nil nil nil + (setq list-buffers-directory (if shell-dirtrack-mode default-directory)) + (if shell-dirtrack-mode + (add-hook 'comint-input-filter-functions 'shell-directory-tracker nil t) + (remove-hook 'comint-input-filter-functions 'shell-directory-tracker t))) -;;; For your typing convenience: -(defalias 'shell-dirtrack-toggle 'shell-dirtrack-mode) +;; For your typing convenience: +(defalias 'shell-dirtrack-toggle 'shell-dirtrack-mode) ;??Convenience?? (defalias 'dirtrack-toggle 'shell-dirtrack-mode) (defalias 'dirtrack-mode 'shell-dirtrack-mode) (defun shell-cd (dir) "Do normal `cd' to DIR, and set `list-buffers-directory'." + (cd dir) (if shell-dirtrackp - (setq list-buffers-directory (file-name-as-directory - (expand-file-name dir)))) - (cd dir)) + (setq list-buffers-directory default-directory))) (defun shell-resync-dirs () "Resync the buffer's idea of the current directory stack. @@ -841,15 +838,15 @@ command again." (shell-dirstack-message)) (error (message "Couldn't cd"))))))) -;;; For your typing convenience: +;; For your typing convenience: (defalias 'dirs 'shell-resync-dirs) -;;; Show the current dirstack on the message line. -;;; Pretty up dirs a bit by changing "/usr/jqr/foo" to "~/foo". -;;; (This isn't necessary if the dirlisting is generated with a simple "dirs".) -;;; All the commands that mung the buffer's dirstack finish by calling -;;; this guy. +;; Show the current dirstack on the message line. +;; Pretty up dirs a bit by changing "/usr/jqr/foo" to "~/foo". +;; (This isn't necessary if the dirlisting is generated with a simple "dirs".) +;; All the commands that mung the buffer's dirstack finish by calling +;; this guy. (defun shell-dirstack-message () (when shell-dirtrack-verbose (let* ((msg "") @@ -1076,5 +1073,5 @@ Returns t if successful." (provide 'shell) -;;; arch-tag: bcb5f12a-c1f4-4aea-a809-2504bd5bd797 +;; arch-tag: bcb5f12a-c1f4-4aea-a809-2504bd5bd797 ;;; shell.el ends here From bc023640a335ed2c8b7ddc239bc9489f78601c74 Mon Sep 17 00:00:00 2001 From: "Richard M. Stallman" Date: Wed, 17 May 2006 22:17:09 +0000 Subject: [PATCH 005/501] (Regexp Special): Clarify nested regexp warning. --- lispref/searching.texi | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/lispref/searching.texi b/lispref/searching.texi index 644376f5cdd..505122fdd16 100644 --- a/lispref/searching.texi +++ b/lispref/searching.texi @@ -306,9 +306,10 @@ matching @samp{ca*ar} against the string @samp{caaar}, the @samp{a*} first tries to match all three @samp{a}s; but the rest of the pattern is @samp{ar} and there is only @samp{r} left to match, so this try fails. The next alternative is for @samp{a*} to match only two @samp{a}s. With -this choice, the rest of the regexp matches successfully.@refill +this choice, the rest of the regexp matches successfully. -Nested repetition operators take a long time, or even forever, if they +@strong{Warning:} Nested repetition operators take a long time, +or even forever, if they lead to ambiguous matching. For example, trying to match the regular expression @samp{\(x+y*\)*a} against the string @samp{xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxz} could take hours before it @@ -316,7 +317,8 @@ ultimately fails. Emacs must try each way of grouping the 35 @samp{x}s before concluding that none of them can work. Even worse, @samp{\(x*\)*} can match the null string in infinitely many ways, so it causes an infinite loop. To avoid these problems, check nested -repetitions carefully. +repetitions carefully, to make sure that they do not cause combinatorial +explosions in backtracking. @item @samp{+} @cindex @samp{+} in regexp From f5ecbceeee0087bcf9b8d94ddf371716fccd05f5 Mon Sep 17 00:00:00 2001 From: "Kim F. Storm" Date: Wed, 17 May 2006 22:22:29 +0000 Subject: [PATCH 006/501] *** empty log message *** --- src/ChangeLog | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index 1a58d0b5905..dd8feb509b1 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,13 @@ +2006-05-18 Kim F. Storm + + * xdisp.c (display_tool_bar_line): Restore entire tool-bar geometry when + backtracking in case last image doesn't fit on line. + +2006-05-18 MIYOSHI Masanori (tiny change) + + * xdisp.c (display_tool_bar_line): Don't adjust tool-bar height by more than + height of one frame default line. + 2006-05-16 Kim F. Storm * xterm.c (handle_one_xevent): Check that f is not NULL before @@ -17012,8 +17022,7 @@ (Fapropos_internal): Initialize them and clear them out. Don't GCPRO them. - * buffer.c (syms_of_buffer) : - Doc fixes. + * buffer.c (syms_of_buffer) : Doc fixes. * lisp.h: New misc type Lisp_Save_Value. (enum Lisp_Misc_Type): Add Lisp_Misc_Save_Value. From e410360421363eff50dafe5397b26af0e1b42a2c Mon Sep 17 00:00:00 2001 From: "Richard M. Stallman" Date: Wed, 17 May 2006 22:23:17 +0000 Subject: [PATCH 007/501] (Minibuffer History): Clarify. --- lispref/minibuf.texi | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/lispref/minibuf.texi b/lispref/minibuf.texi index 73cc0817d9b..f69cf03deac 100644 --- a/lispref/minibuf.texi +++ b/lispref/minibuf.texi @@ -450,19 +450,17 @@ history list symbol. The variable @code{history-delete-duplicates} specifies whether to delete duplicates in history. @defun add-to-history history-var newelt &optional maxelt keep-all -This function adds a new element @var{newelt}, if non-empty, to the -history list stored in the variable @var{history-var}, and returns the -updated history list. By default, the list length is limited by the -value specified by @code{history-length} (described below), but the -optional argument @var{maxelt} overrides that. The possible values of -@var{maxelt} have the same meaning as the values of -@code{history-length}. +This function adds a new element @var{newelt}, if it isn't the empty +string, to the history list stored in the variable @var{history-var}, +and returns the updated history list. It limits the list length to +the value of @var{maxelt} (if non-@code{nil}) or @code{history-length} +(described below). The possible values of @var{maxelt} have the same +meaning as the values of @code{history-length}. -Duplicate members are removed from the history list, if -@code{history-delete-duplicates} is non-@code{nil}. - -If @var{keep-all} is non-@code{nil}, even an empty or duplicate -@var{newelt} element is added to the history list. +Normally, @code{add-to-history} removes duplicate members from the +history list if @code{history-delete-duplicates} is non-@code{nil}. +However, if @var{keep-all} is non-@code{nil}, that says not to remove +duplicates, and to add @var{newelt} to the list even if it is empty. @end defun @defvar history-length From 914dee7a62684fad3fe2b543373d750f27ee69eb Mon Sep 17 00:00:00 2001 From: "Kim F. Storm" Date: Wed, 17 May 2006 22:24:13 +0000 Subject: [PATCH 008/501] (display_tool_bar_line): Restore entire tool-bar geometry when backtracking in case last image doesn't fit on line. (display_tool_bar_line): Don't adjust tool-bar height by more than height of one frame default line. From: MIYOSHI Masanori. --- src/xdisp.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/xdisp.c b/src/xdisp.c index c0caaf4daf2..87764e5ecb6 100644 --- a/src/xdisp.c +++ b/src/xdisp.c @@ -9492,6 +9492,7 @@ display_tool_bar_line (it, height) while (it->current_x < max_x) { int x_before, x, n_glyphs_before, i, nglyphs; + struct it it_before; /* Get the next display element. */ if (!get_next_display_element (it)) @@ -9505,9 +9506,10 @@ display_tool_bar_line (it, height) /* Produce glyphs. */ x_before = it->current_x; n_glyphs_before = it->glyph_row->used[TEXT_AREA]; + it_before = *it; PRODUCE_GLYPHS (it); - nglyphs = it->glyph_row->used[TEXT_AREA] - n_glyphs_before; + nglyphs = row->used[TEXT_AREA] - n_glyphs_before; i = 0; x = x_before; while (i < nglyphs) @@ -9516,9 +9518,9 @@ display_tool_bar_line (it, height) if (x + glyph->pixel_width > max_x) { - /* Glyph doesn't fit on line. */ - it->glyph_row->used[TEXT_AREA] = n_glyphs_before + i; - it->current_x = x; + /* Glyph doesn't fit on line. Backtrack. */ + row->used[TEXT_AREA] = n_glyphs_before; + *it = it_before; goto out; } @@ -9549,6 +9551,8 @@ display_tool_bar_line (it, height) /* Make line the desired height and center it vertically. */ if ((height -= it->max_ascent + it->max_descent) > 0) { + /* Don't add more than one line height. */ + height %= FRAME_LINE_HEIGHT (it->f); it->max_ascent += height / 2; it->max_descent += (height + 1) / 2; } From 59767336096a79c54b7c034dc22539c45c8d638d Mon Sep 17 00:00:00 2001 From: "Richard M. Stallman" Date: Wed, 17 May 2006 22:24:59 +0000 Subject: [PATCH 009/501] (Diff Mode): Mention C-x `. --- man/files.texi | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/man/files.texi b/man/files.texi index 6f38f18b1cb..65edbc22e36 100644 --- a/man/files.texi +++ b/man/files.texi @@ -2333,8 +2333,10 @@ diff-mode}. One general feature of Diff mode is that manual edits to the patch automatically correct line numbers, including those in the hunk header, so that you can actually apply the edited patch. Diff mode -also provides the following commands to navigate, manipulate and apply -parts of patches: +treats each hunk location as an ``error message'', so that you can use +commands such as @kbd{C-x '} to visit the corresponding source +locations. It also provides the following commands to navigate, +manipulate and apply parts of patches: @table @kbd @item M-n From 624d2678584bd7b1d42b25ab1c617757b74a7c8e Mon Sep 17 00:00:00 2001 From: "Richard M. Stallman" Date: Wed, 17 May 2006 22:26:51 +0000 Subject: [PATCH 010/501] (Fprevious_overlay_change, Fnext_overlay_change): Doc fixes. --- src/buffer.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/buffer.c b/src/buffer.c index 5ed9043fd0a..c03c58a39f3 100644 --- a/src/buffer.c +++ b/src/buffer.c @@ -2465,10 +2465,10 @@ swap_out_buffer_local_variables (b) Return the number found, and store them in a vector in *VEC_PTR. Store in *LEN_PTR the size allocated for the vector. Store in *NEXT_PTR the next position after POS where an overlay starts, - or ZV if there are no more overlays. + or ZV if there are no more overlays between POS and ZV. Store in *PREV_PTR the previous position before POS where an overlay ends, or where an overlay starts which ends at or after POS; - or BEGV if there are no such overlays. + or BEGV if there are no such overlays from BEGV to POS. NEXT_PTR and/or PREV_PTR may be 0, meaning don't store that info. *VEC_PTR and *LEN_PTR should contain a valid vector and size @@ -3939,7 +3939,8 @@ or between BEG and END. */) DEFUN ("next-overlay-change", Fnext_overlay_change, Snext_overlay_change, 1, 1, 0, doc: /* Return the next position after POS where an overlay starts or ends. -If there are no more overlay boundaries after POS, return (point-max). */) +If there are no overlay boundaries from POS to (point-max), +the value is (point-max). */) (pos) Lisp_Object pos; { @@ -3980,7 +3981,8 @@ If there are no more overlay boundaries after POS, return (point-max). */) DEFUN ("previous-overlay-change", Fprevious_overlay_change, Sprevious_overlay_change, 1, 1, 0, doc: /* Return the previous position before POS where an overlay starts or ends. -If there are no more overlay boundaries before POS, return (point-min). */) +If there are no overlay boundaries from (point-min) to POS, +the value is (point-min). */) (pos) Lisp_Object pos; { From 59367bff6b65cb1992c43e1b57fdd9d4592b0a24 Mon Sep 17 00:00:00 2001 From: "Kim F. Storm" Date: Wed, 17 May 2006 22:37:25 +0000 Subject: [PATCH 011/501] (display_tool_bar_line): Eliminate x_before variable. --- src/xdisp.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/xdisp.c b/src/xdisp.c index 87764e5ecb6..d74b6d04aa5 100644 --- a/src/xdisp.c +++ b/src/xdisp.c @@ -9491,7 +9491,7 @@ display_tool_bar_line (it, height) while (it->current_x < max_x) { - int x_before, x, n_glyphs_before, i, nglyphs; + int x, n_glyphs_before, i, nglyphs; struct it it_before; /* Get the next display element. */ @@ -9504,14 +9504,14 @@ display_tool_bar_line (it, height) } /* Produce glyphs. */ - x_before = it->current_x; - n_glyphs_before = it->glyph_row->used[TEXT_AREA]; + n_glyphs_before = row->used[TEXT_AREA]; it_before = *it; + PRODUCE_GLYPHS (it); nglyphs = row->used[TEXT_AREA] - n_glyphs_before; i = 0; - x = x_before; + x = it_before.current_x; while (i < nglyphs) { struct glyph *glyph = row->glyphs[TEXT_AREA] + n_glyphs_before + i; From 6c1195abb7d1644c9d1b971dbf0fb80af3e97860 Mon Sep 17 00:00:00 2001 From: "Richard M. Stallman" Date: Wed, 17 May 2006 22:51:07 +0000 Subject: [PATCH 012/501] (better_font_p): Any font beats no font. (best_matching_font): Simplify based on above change. --- src/xfaces.c | 43 +++++++++++++++++++++---------------------- 1 file changed, 21 insertions(+), 22 deletions(-) diff --git a/src/xfaces.c b/src/xfaces.c index a5c5a21f585..b65efa7961e 100644 --- a/src/xfaces.c +++ b/src/xfaces.c @@ -6383,6 +6383,12 @@ better_font_p (values, font1, font2, compare_pt_p, avgwidth) { int i; + /* Any font is better than no font. */ + if (! font1) + return 0; + if (! font2) + return 1; + for (i = 0; i < DIM (font_sort_order); ++i) { int xlfd_idx = font_sort_order[i]; @@ -6627,29 +6633,19 @@ best_matching_font (f, attrs, fonts, nfonts, width_ratio, needs_overstrike) if (needs_overstrike) *needs_overstrike = 0; - /* Start with the first non-scalable font in the list. */ - for (i = 0; i < nfonts; ++i) - if (!font_scalable_p (fonts + i)) - break; + best = NULL; /* Find the best match among the non-scalable fonts. */ - if (i < nfonts) - { - best = fonts + i; + for (i = 1; i < nfonts; ++i) + if (!font_scalable_p (fonts + i) + && better_font_p (specified, fonts + i, best, 1, avgwidth)) + { + best = fonts + i; - for (i = 1; i < nfonts; ++i) - if (!font_scalable_p (fonts + i) - && better_font_p (specified, fonts + i, best, 1, avgwidth)) - { - best = fonts + i; - - exact_p = exact_face_match_p (specified, best, avgwidth); - if (exact_p) - break; - } - } - else - best = NULL; + exact_p = exact_face_match_p (specified, best, avgwidth); + if (exact_p) + break; + } /* Unless we found an exact match among non-scalable fonts, see if we can find a better match among scalable fonts. */ @@ -6673,8 +6669,7 @@ best_matching_font (f, attrs, fonts, nfonts, width_ratio, needs_overstrike) for (i = 0; i < nfonts; ++i) if (font_scalable_p (fonts + i)) { - if (best == NULL - || better_font_p (specified, fonts + i, best, 0, 0) + if (better_font_p (specified, fonts + i, best, 0, 0) || (!non_scalable_has_exact_height_p && !better_font_p (specified, best, fonts + i, 0, 0))) { @@ -6702,6 +6697,10 @@ best_matching_font (f, attrs, fonts, nfonts, width_ratio, needs_overstrike) } } + /* We should have found SOME font. */ + if (best == NULL) + abort (); + if (font_scalable_p (best)) font_name = build_scalable_font_name (f, best, pt); else From 92daa8486fa0512c1a95e2c251a6432e1421ab36 Mon Sep 17 00:00:00 2001 From: "Richard M. Stallman" Date: Wed, 17 May 2006 22:53:23 +0000 Subject: [PATCH 013/501] Comment change. --- src/xterm.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/xterm.c b/src/xterm.c index bd0d6db9524..e034e5aa469 100644 --- a/src/xterm.c +++ b/src/xterm.c @@ -6084,6 +6084,8 @@ handle_one_xevent (dpyinfo, eventp, finish, hold_quit) f = x_any_window_to_frame (dpyinfo, event.xkey.window); + /* If mouse-highlight is an integer, input clears out + mouse highlighting. */ if (!dpyinfo->mouse_face_hidden && INTEGERP (Vmouse_highlight) && (f == 0 || !EQ (f->tool_bar_window, dpyinfo->mouse_face_window))) From 32483280976d345b9042ddcf89866e36ac4c0908 Mon Sep 17 00:00:00 2001 From: "Richard M. Stallman" Date: Wed, 17 May 2006 22:54:35 +0000 Subject: [PATCH 014/501] (file-name-extension): Doc fix. --- lisp/files.el | 1 + 1 file changed, 1 insertion(+) diff --git a/lisp/files.el b/lisp/files.el index 16df2661fcf..2eaeae5ac86 100644 --- a/lisp/files.el +++ b/lisp/files.el @@ -3062,6 +3062,7 @@ except that a leading `.', if any, doesn't count." (defun file-name-extension (filename &optional period) "Return FILENAME's final \"extension\". The extension, in a file name, is the part that follows the last `.', +excluding version numbers and backup suffixes, except that a leading `.', if any, doesn't count. Return nil for extensionless file names such as `foo'. Return the empty string for file names such as `foo.'. From 0bcf87358ccef1934800153eb9692df1195486b1 Mon Sep 17 00:00:00 2001 From: "Richard M. Stallman" Date: Wed, 17 May 2006 22:54:44 +0000 Subject: [PATCH 015/501] *** empty log message *** --- lisp/ChangeLog | 4 ++++ lispref/ChangeLog | 6 ++++++ man/ChangeLog | 8 ++++++++ 3 files changed, 18 insertions(+) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 64a78b0c2bc..b4d3b0d4c62 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,7 @@ +2006-05-17 Richard Stallman + + * files.el (file-name-extension): Doc fix. + 2006-05-17 Stefan Monnier * shell.el (shell-dirtrack-mode): Make it into a proper minor mode, so diff --git a/lispref/ChangeLog b/lispref/ChangeLog index caf04b086a7..39bf92c54d1 100644 --- a/lispref/ChangeLog +++ b/lispref/ChangeLog @@ -1,3 +1,9 @@ +2006-05-17 Richard Stallman + + * minibuf.texi (Minibuffer History): Clarify. + + * searching.texi (Regexp Special): Clarify nested regexp warning. + 2006-05-16 Kim F. Storm * minibuf.texi (Minibuffer History): Update add-to-history. diff --git a/man/ChangeLog b/man/ChangeLog index 90f3f8a0a27..5641f133277 100644 --- a/man/ChangeLog +++ b/man/ChangeLog @@ -1,3 +1,11 @@ +2006-05-17 Richard Stallman + + * files.texi (Diff Mode): Mention C-x `. + +2006-05-08 Richard Stallman + + * custom.texi (Disabling): Textual cleanups. + 2006-05-12 Reiner Steib * message.texi (Interface): Add tool bar customization. From ad598c8b58dd85c94b23918b55091e0ea7f027bc Mon Sep 17 00:00:00 2001 From: Kenichi Handa Date: Thu, 18 May 2006 02:17:39 +0000 Subject: [PATCH 016/501] (CODING_ASCII_INCOMPATIBLE_MASK): New macro. --- src/coding.h | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/coding.h b/src/coding.h index 9ace4d1e074..54553a071fa 100644 --- a/src/coding.h +++ b/src/coding.h @@ -443,10 +443,12 @@ struct coding_system Lisp_Object translation_table_for_encode; }; -#define CODING_REQUIRE_FLUSHING_MASK 1 -#define CODING_REQUIRE_DECODING_MASK 2 -#define CODING_REQUIRE_ENCODING_MASK 4 -#define CODING_REQUIRE_DETECTION_MASK 8 +/* Mask bits for (struct coding_system *)->common_flags. */ +#define CODING_REQUIRE_FLUSHING_MASK 0x01 +#define CODING_REQUIRE_DECODING_MASK 0x02 +#define CODING_REQUIRE_ENCODING_MASK 0x04 +#define CODING_REQUIRE_DETECTION_MASK 0x08 +#define CODING_ASCII_INCOMPATIBLE_MASK 0x10 /* Return 1 if the coding system CODING requires specific code to be attached at the tail of converted text. */ From 0c2660c849293d23296f758c4a50f6e40432cf2e Mon Sep 17 00:00:00 2001 From: Kenichi Handa Date: Thu, 18 May 2006 02:19:01 +0000 Subject: [PATCH 017/501] (Qascii_incompatible): New variable. (syms_of_coding): Setup Qascii_incompatible. (setup_coding_system): Be sure to initialize coding->common_flags. Check `ascii-incompatible' property of the coding system. --- src/coding.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/coding.c b/src/coding.c index 155da568007..478e119c003 100644 --- a/src/coding.c +++ b/src/coding.c @@ -363,6 +363,7 @@ Lisp_Object Qno_conversion, Qundecided; Lisp_Object Qcoding_system_history; Lisp_Object Qsafe_chars; Lisp_Object Qvalid_codes; +Lisp_Object Qascii_incompatible; extern Lisp_Object Qinsert_file_contents, Qwrite_region; Lisp_Object Qcall_process, Qcall_process_region; @@ -3625,7 +3626,10 @@ setup_coding_system (coding_system, coding) = CODING_REQUIRE_DECODING_MASK | CODING_REQUIRE_ENCODING_MASK; } else - coding->eol_type = CODING_EOL_LF; + { + coding->common_flags = 0; + coding->eol_type = CODING_EOL_LF; + } coding_type = XVECTOR (coding_spec)->contents[0]; /* Try short cut. */ @@ -3685,6 +3689,12 @@ setup_coding_system (coding_system, coding) if (!NILP (val)) coding->composing = COMPOSITION_NO; + /* If the coding system is ascii-incompatible, record it in + common_flags. */ + val = Fplist_get (plist, Qascii_incompatible); + if (! NILP (val)) + coding->common_flags |= CODING_ASCII_INCOMPATIBLE_MASK; + switch (XFASTINT (coding_type)) { case 0: @@ -7814,6 +7824,9 @@ syms_of_coding () Qvalid_codes = intern ("valid-codes"); staticpro (&Qvalid_codes); + Qascii_incompatible = intern ("ascii-incompatible"); + staticpro (&Qascii_incompatible); + Qemacs_mule = intern ("emacs-mule"); staticpro (&Qemacs_mule); From 8acb7dad7a13f83bec14cb2c6cbe729ece5271ef Mon Sep 17 00:00:00 2001 From: Kenichi Handa Date: Thu, 18 May 2006 02:20:39 +0000 Subject: [PATCH 018/501] (Fcall_process): Reject encoding arguments by ascii-incompatible coding systems (e.g. utf-16). --- src/ChangeLog | 12 ++++++++++++ src/callproc.c | 2 ++ 2 files changed, 14 insertions(+) diff --git a/src/ChangeLog b/src/ChangeLog index dd8feb509b1..3c527e22dd8 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,15 @@ +2006-05-18 Kenichi Handa + + * callproc.c (Fcall_process): Reject encoding arguments by + ascii-incompatible coding systems (e.g. utf-16). + + * coding.c (Qascii_incompatible): New variable. + (syms_of_coding): Setup Qascii_incompatible. + (setup_coding_system): Be sure to initialize coding->common_flags. + Check `ascii-incompatible' property of the coding system. + + * coding.h (CODING_ASCII_INCOMPATIBLE_MASK): New macro. + 2006-05-18 Kim F. Storm * xdisp.c (display_tool_bar_line): Restore entire tool-bar geometry when diff --git a/src/callproc.c b/src/callproc.c index 8cf261c646f..f23996253f1 100644 --- a/src/callproc.c +++ b/src/callproc.c @@ -295,6 +295,8 @@ usage: (call-process PROGRAM &optional INFILE BUFFER DISPLAY &rest ARGS) */) val = Qnil; } setup_coding_system (Fcheck_coding_system (val), &argument_coding); + if (argument_coding.common_flags & CODING_ASCII_INCOMPATIBLE_MASK) + setup_coding_system (Qraw_text, &argument_coding); if (argument_coding.eol_type == CODING_EOL_UNDECIDED) argument_coding.eol_type = system_eol_type; } From 60eae434e8f376b4ac6a8c3553711c4eb73db930 Mon Sep 17 00:00:00 2001 From: Thien-Thi Nguyen Date: Thu, 18 May 2006 12:04:40 +0000 Subject: [PATCH 019/501] (ewoc--adjust): New func. (ewoc--insert-new-node): Don't insert trailing newline. Instead, adjust succesor nodes' start markers. (ewoc--refresh-node): Delete all text from current node's start marker to the next one's; adjust successor nodes' start markers. (ewoc--create): Doc fixes. (ewoc--refresh): Don't insert newline. (ewoc--set-hf): Use `ewoc--set-buffer-bind-dll-let*'. --- lisp/emacs-lisp/ewoc.el | 59 +++++++++++++++++++++++++---------------- 1 file changed, 36 insertions(+), 23 deletions(-) diff --git a/lisp/emacs-lisp/ewoc.el b/lisp/emacs-lisp/ewoc.el index dbfae49233a..7742de944cb 100644 --- a/lisp/emacs-lisp/ewoc.el +++ b/lisp/emacs-lisp/ewoc.el @@ -205,6 +205,22 @@ BUT if it is the header or the footer in EWOC return nil instead." (eq node (ewoc--footer ewoc))) node)) +(defun ewoc--adjust (beg end node) + ;; "Manually reseat" markers for NODE and its successors (including footer + ;; and dll), in the case where they originally shared start position with + ;; BEG, to END. BEG and END are buffer positions describing NODE's left + ;; neighbor. This operation is functionally equivalent to temporarily + ;; setting these nodes' markers' insertion type to t around the pretty-print + ;; call that precedes the call to `ewoc-adjust', and then changing them back + ;; to nil. + (when (< beg end) + (let (m) + (while (and (= beg (setq m (ewoc--node-start-marker node))) + (progn + (set-marker m end) + (not (eq dll node)))) + (setq node (ewoc--node-right node)))))) + (defun ewoc--insert-new-node (node data pretty-printer) "Insert before NODE a new node for DATA, displayed by PRETTY-PRINTER. Call PRETTY-PRINTER with point at NODE's start, thus pushing back @@ -215,29 +231,26 @@ NODE and leaving the new node's start there. Return the new node." (pos (marker-position m)) (elemnode (ewoc--node-create m data))) (goto-char pos) - ;; Insert the trailing newline using insert-before-markers - ;; so that the start position for the next element is updated. - (insert-before-markers ?\n) - ;; Move back, and call the pretty-printer. - (backward-char 1) (funcall pretty-printer data) (setf (marker-position m) pos (ewoc--node-left elemnode) (ewoc--node-left node) (ewoc--node-right elemnode) node (ewoc--node-right (ewoc--node-left node)) elemnode (ewoc--node-left node) elemnode) + (ewoc--adjust pos (point) node) elemnode))) (defun ewoc--refresh-node (pp node) "Redisplay the element represented by NODE using the pretty-printer PP." - (let ((inhibit-read-only t)) + (let ((inhibit-read-only t) + (m (ewoc--node-start-marker node)) + (R (ewoc--node-right node))) ;; First, remove the string from the buffer: - (delete-region (ewoc--node-start-marker node) - (1- (marker-position - (ewoc--node-start-marker (ewoc--node-right node))))) + (delete-region m (ewoc--node-start-marker R)) ;; Calculate and insert the string. - (goto-char (ewoc--node-start-marker node)) - (funcall pp (ewoc--node-data node)))) + (goto-char m) + (funcall pp (ewoc--node-data node)) + (ewoc--adjust m (point) R))) ;;; =========================================================================== ;;; Public members of the Ewoc package @@ -251,14 +264,12 @@ The ewoc will be inserted in the current buffer at the current position. PRETTY-PRINTER should be a function that takes one argument, an element, and inserts a string representing it in the buffer (at point). The string PRETTY-PRINTER inserts may be empty or span -several lines. A trailing newline will always be inserted -automatically. The PRETTY-PRINTER should use `insert', and not +several lines. The PRETTY-PRINTER should use `insert', and not `insert-before-markers'. -Optional second argument HEADER is a string that will always be -present at the top of the ewoc. HEADER should end with a -newline. Optional third argument FOOTER is similar, and will -be inserted at the bottom of the ewoc." +Optional second and third arguments HEADER and FOOTER are strings, +possibly empty, that will always be present at the top and bottom, +respectively, of the ewoc." (let* ((dummy-node (ewoc--node-create 'DL-LIST 'DL-LIST)) (dll (progn (setf (ewoc--node-right dummy-node) dummy-node) (setf (ewoc--node-left dummy-node) dummy-node) @@ -527,7 +538,6 @@ number of elements needs to be refreshed." (while (not (eq node footer)) (set-marker (ewoc--node-start-marker node) (point)) (funcall pp (ewoc--node-data node)) - (insert "\n") (setq node (ewoc--node-next dll node))))) (set-marker (ewoc--node-start-marker footer) (point)))) @@ -566,11 +576,14 @@ Return nil if the buffer has been deleted." (defun ewoc-set-hf (ewoc header footer) "Set the HEADER and FOOTER of EWOC." - (setf (ewoc--node-data (ewoc--header ewoc)) header) - (setf (ewoc--node-data (ewoc--footer ewoc)) footer) - (save-excursion - (ewoc--refresh-node 'insert (ewoc--header ewoc)) - (ewoc--refresh-node 'insert (ewoc--footer ewoc)))) + (ewoc--set-buffer-bind-dll-let* ewoc + ((head (ewoc--header ewoc)) + (foot (ewoc--footer ewoc))) + (setf (ewoc--node-data head) header + (ewoc--node-data foot) footer) + (save-excursion + (ewoc--refresh-node 'insert head) + (ewoc--refresh-node 'insert foot)))) (provide 'ewoc) From c93a67c54c52f8bf21fa837b6dc84ac132992578 Mon Sep 17 00:00:00 2001 From: Thien-Thi Nguyen Date: Thu, 18 May 2006 12:07:10 +0000 Subject: [PATCH 020/501] (cvs-make-cvs-buffer): Specify extra newline for ewoc's header and footer. (cvs-update-header): Update initial header recognition. Append newline to final header and footer values. --- lisp/pcvs.el | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lisp/pcvs.el b/lisp/pcvs.el index b9d04522181..7209c135e52 100644 --- a/lisp/pcvs.el +++ b/lisp/pcvs.el @@ -467,7 +467,7 @@ If non-nil, NEW means to create a new buffer no matter what." (cvs-mode) (set (make-local-variable 'list-buffers-directory) buffer-name) ;;(set (make-local-variable 'cvs-temp-buffer) (cvs-temp-buffer)) - (let ((cookies (ewoc-create 'cvs-fileinfo-pp "\n" ""))) + (let ((cookies (ewoc-create 'cvs-fileinfo-pp "\n\n" "\n"))) (set (make-local-variable 'cvs-cookies) cookies) (add-hook 'kill-buffer-hook (lambda () @@ -618,7 +618,7 @@ If non-nil, NEW means to create a new buffer no matter what." (str (car hf)) (done "") (tin (ewoc-nth cvs-cookies 0))) - (if (eq (length str) 1) (setq str "")) + (if (eq (length str) 2) (setq str "")) ;; look for the first *real* fileinfo (to determine emptyness) (while (and tin @@ -633,6 +633,7 @@ If non-nil, NEW means to create a new buffer no matter what." (setq str (replace-match "" t t str)) (if (zerop (length str)) (setq str "\n")) (setq done (concat "-- last cmd: " cmd " --")))) + (setq str (concat str "\n") done (concat done "\n")) ;; set the new header and footer (ewoc-set-hf cvs-cookies str (concat "\n--------------------- " From 438dd27db31c84723aeac7fe3cd8b06fb84c63a6 Mon Sep 17 00:00:00 2001 From: Thien-Thi Nguyen Date: Thu, 18 May 2006 12:09:16 +0000 Subject: [PATCH 021/501] (cvs-fileinfo-pp): Insert trailing newline. --- lisp/ChangeLog | 16 ++++++++++++++++ lisp/pcvs-info.el | 3 ++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index b4d3b0d4c62..0955a5da684 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,19 @@ +2006-05-18 Thien-Thi Nguyen + + * emacs-lisp/ewoc.el (ewoc--adjust): New func. + (ewoc--insert-new-node): Don't insert trailing newline. + Instead, adjust succesor nodes' start markers. + (ewoc--refresh-node): Delete all text from current node's start + marker to the next one's; adjust successor nodes' start markers. + (ewoc--create): Doc fixes. + (ewoc--refresh): Don't insert newline. + (ewoc--set-hf): Use `ewoc--set-buffer-bind-dll-let*'. + * pcvs.el (cvs-make-cvs-buffer): Specify + extra newline for ewoc's header and footer. + (cvs-update-header): Update initial header recognition. + Append newline to final header and footer values. + * pcvs-info.el (cvs-fileinfo-pp): Insert trailing newline. + 2006-05-17 Richard Stallman * files.el (file-name-extension): Doc fix. diff --git a/lisp/pcvs-info.el b/lisp/pcvs-info.el index 4aaa5add58d..085f294e6fb 100644 --- a/lisp/pcvs-info.el +++ b/lisp/pcvs-info.el @@ -379,7 +379,8 @@ For use by the cookie package." ;; or nothing ""))) (format "%-11s %s %-11s %-11s %s" - side status type base file))))))) + side status type base file)))) + "\n"))) (defun cvs-fileinfo-update (fi fi-new) From a0fa505b419ef7256d7c6f499e7cd09b5383751b Mon Sep 17 00:00:00 2001 From: "Kim F. Storm" Date: Thu, 18 May 2006 14:38:57 +0000 Subject: [PATCH 022/501] *** empty log message *** --- lisp/ChangeLog | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 0955a5da684..31efe51b263 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2006-05-18 Kim F. Storm + + * progmodes/grep.el (grep-find): Don't check grep-find-command + before running command (breaks non-interactive usage). + 2006-05-18 Thien-Thi Nguyen * emacs-lisp/ewoc.el (ewoc--adjust): New func. From a34f7eb16500950ad2d328c7718268f4e54f4966 Mon Sep 17 00:00:00 2001 From: "Kim F. Storm" Date: Thu, 18 May 2006 14:39:09 +0000 Subject: [PATCH 023/501] (grep-find): Don't check grep-find-command before running command (breaks non-interactive usage). --- lisp/progmodes/grep.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/progmodes/grep.el b/lisp/progmodes/grep.el index 410a973d1b4..d207094cafe 100644 --- a/lisp/progmodes/grep.el +++ b/lisp/progmodes/grep.el @@ -553,7 +553,7 @@ easily repeat a find command." (read-string "compile.el: No `grep-find-command' command available. Press RET.") (list nil)))) - (when (and grep-find-command command-args) + (when command-args (let ((null-device nil)) ; see grep (grep command-args)))) From 2eec8691173131614036efc7fddc913e3faf8f5b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Dj=C3=A4rv?= Date: Thu, 18 May 2006 16:58:16 +0000 Subject: [PATCH 024/501] * configure.in: Add check for ALSA. --- configure.in | 130 +++++++++++++++++++++++++++++---------------------- 1 file changed, 74 insertions(+), 56 deletions(-) diff --git a/configure.in b/configure.in index 31aebae1a1b..e47e6ec94c7 100644 --- a/configure.in +++ b/configure.in @@ -1480,12 +1480,83 @@ AC_CONFIG_LIBOBJ_DIR(src) dnl Do this early because it can frob feature test macros for Unix-98 &c. AC_SYS_LARGEFILE + +dnl This function defintion taken from Gnome 2.0 +dnl PKG_CHECK_MODULES(GSTUFF, gtk+-2.0 >= 1.3 glib = 1.3.4, action-if, action-not) +dnl defines GSTUFF_LIBS, GSTUFF_CFLAGS, see pkg-config man page +dnl also defines GSTUFF_PKG_ERRORS on error +AC_DEFUN([PKG_CHECK_MODULES], [ + succeeded=no + + if test -z "$PKG_CONFIG"; then + AC_PATH_PROG(PKG_CONFIG, pkg-config, no) + fi + + if test "$PKG_CONFIG" = "no" ; then + ifelse([$4], , [AC_MSG_ERROR([ + *** The pkg-config script could not be found. Make sure it is in your path, or give the full path to pkg-config with the PKG_CONFIG environment variable or --with-pkg-config-prog. Or see http://www.freedesktop.org/software/pkgconfig to get pkg-config.])], [$4]) + else + PKG_CONFIG_MIN_VERSION=0.9.0 + if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then + AC_MSG_CHECKING(for $2) + + if $PKG_CONFIG --exists "$2" ; then + AC_MSG_RESULT(yes) + succeeded=yes + + AC_MSG_CHECKING($1_CFLAGS) + $1_CFLAGS=`$PKG_CONFIG --cflags "$2"` + AC_MSG_RESULT($$1_CFLAGS) + + AC_MSG_CHECKING($1_LIBS) + $1_LIBS=`$PKG_CONFIG --libs "$2"` + AC_MSG_RESULT($$1_LIBS) + else + AC_MSG_RESULT(no) + $1_CFLAGS="" + $1_LIBS="" + ## If we have a custom action on failure, don't print errors, but + ## do set a variable so people can do so. + $1_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$2"` + ifelse([$4], ,echo $$1_PKG_ERRORS,) + fi + + AC_SUBST($1_CFLAGS) + AC_SUBST($1_LIBS) + else + echo "*** Your version of pkg-config is too old. You need version $PKG_CONFIG_MIN_VERSION or newer." + echo "*** See http://www.freedesktop.org/software/pkgconfig" + fi + fi + + if test $succeeded = yes; then + ifelse([$3], , :, [$3]) + else + ifelse([$4], , [AC_MSG_ERROR([Library requirements ($2) not met; consider adjusting the PKG_CONFIG_PATH environment variable if your libraries are in a nonstandard prefix so pkg-config can find them.])], [$4]) + fi +]) + + if test "${with_sound}" != "no"; then # Sound support for GNU/Linux and the free BSDs. AC_CHECK_HEADERS(machine/soundcard.h sys/soundcard.h soundcard.h) # Emulation library used on NetBSD. AC_CHECK_LIB(ossaudio, _oss_ioctl, LIBSOUND=-lossaudio, LIBSOUND=) AC_SUBST(LIBSOUND) + + ALSA_REQUIRED=1.0.0 + ALSA_MODULES="alsa >= $ALSA_REQUIRED" + dnl Check if --with-pkg-config-prog has been given. + if test "X${with_pkg_config_prog}" != X; then + PKG_CONFIG="${with_pkg_config_prog}" + fi + PKG_CHECK_MODULES(ALSA, $ALSA_MODULES, HAVE_ALSA=yes, HAVE_ALSA=no) + if test $HAVE_ALSA = yes; then + LIBSOUND="$LIBSOUND $ALSA_LIBS" + CFLAGS_SOUND="$CFLAGS_SOUND $ALSA_CFLAGS" + AC_DEFINE(HAVE_ALSA, 1, [Define to 1 if ALSA is available.]) + fi + AC_SUBST(CFLAGS_SOUND) fi dnl checks for header files @@ -1943,62 +2014,6 @@ fail; fi fi -dnl This function defintion taken from Gnome 2.0 -dnl PKG_CHECK_MODULES(GSTUFF, gtk+-2.0 >= 1.3 glib = 1.3.4, action-if, action-not) -dnl defines GSTUFF_LIBS, GSTUFF_CFLAGS, see pkg-config man page -dnl also defines GSTUFF_PKG_ERRORS on error -AC_DEFUN([PKG_CHECK_MODULES], [ - succeeded=no - - if test -z "$PKG_CONFIG"; then - AC_PATH_PROG(PKG_CONFIG, pkg-config, no) - fi - - if test "$PKG_CONFIG" = "no" ; then - echo "*** The pkg-config script could not be found. Make sure it is" - echo "*** in your path, or give the full path to pkg-config with" - echo "*** the PKG_CONFIG environment variable or --with-pkg-config-prog." - echo "*** Or see http://www.freedesktop.org/software/pkgconfig to get pkg-config." - else - PKG_CONFIG_MIN_VERSION=0.9.0 - if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then - AC_MSG_CHECKING(for $2) - - if $PKG_CONFIG --exists "$2" ; then - AC_MSG_RESULT(yes) - succeeded=yes - - AC_MSG_CHECKING($1_CFLAGS) - $1_CFLAGS=`$PKG_CONFIG --cflags "$2"` - AC_MSG_RESULT($$1_CFLAGS) - - AC_MSG_CHECKING($1_LIBS) - $1_LIBS=`$PKG_CONFIG --libs "$2"` - AC_MSG_RESULT($$1_LIBS) - else - $1_CFLAGS="" - $1_LIBS="" - ## If we have a custom action on failure, don't print errors, but - ## do set a variable so people can do so. - $1_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$2"` - ifelse([$4], ,echo $$1_PKG_ERRORS,) - fi - - AC_SUBST($1_CFLAGS) - AC_SUBST($1_LIBS) - else - echo "*** Your version of pkg-config is too old. You need version $PKG_CONFIG_MIN_VERSION or newer." - echo "*** See http://www.freedesktop.org/software/pkgconfig" - fi - fi - - if test $succeeded = yes; then - ifelse([$3], , :, [$3]) - else - ifelse([$4], , [AC_MSG_ERROR([Library requirements ($2) not met; consider adjusting the PKG_CONFIG_PATH environment variable if your libraries are in a nonstandard prefix so pkg-config can find them.])], [$4]) - fi -]) - HAVE_GTK=no if test "${with_gtk}" = "yes" || test "$USE_X_TOOLKIT" = "gtk"; then if test "$USE_X_TOOLKIT" != "none" && test "$USE_X_TOOLKIT" != "maybe"; then @@ -2917,6 +2932,9 @@ AH_BOTTOM([ #ifdef HAVE_SOUNDCARD_H #define HAVE_SOUND 1 #endif +#ifdef HAVE_ALSA +#define HAVE_SOUND 1 +#endif #endif /* __FreeBSD__ || __NetBSD__ || __linux__ */ /* If using GNU, then support inline function declarations. */ From 439f58eeae9b6956db778cd4e461a9827a5962e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Dj=C3=A4rv?= Date: Thu, 18 May 2006 16:58:44 +0000 Subject: [PATCH 025/501] * configure: Regenerate. --- configure | 137 ++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 128 insertions(+), 9 deletions(-) diff --git a/configure b/configure index 6a7e3cc9db3..d72790133d7 100755 --- a/configure +++ b/configure @@ -2,7 +2,7 @@ # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.59. # -# Copyright (C) 2003, 2006 Free Software Foundation, Inc. +# Copyright (C) 2003 Free Software Foundation, Inc. # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## --------------------- ## @@ -310,7 +310,7 @@ ac_includes_default="\ # include #endif" -ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS MAINT build build_cpu build_vendor build_os host host_cpu host_vendor host_os CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CPP EGREP LN_S INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA RANLIB ac_ct_RANLIB INSTALL_INFO GZIP_PROG LIBSOUND SET_MAKE PKG_CONFIG GTK_CFLAGS GTK_LIBS ALLOCA liblockfile LIBOBJS NEED_SETGID KMEM_GROUP GETLOADAVG_LIBS GETOPT_H GETOPTOBJS version configuration canonical srcdir lispdir locallisppath lisppath x_default_search_path etcdir archlibdir docdir bitmapdir gamedir gameuser c_switch_system c_switch_machine LD_SWITCH_X_SITE LD_SWITCH_X_SITE_AUX C_SWITCH_X_SITE X_TOOLKIT_TYPE machfile opsysfile carbon_appdir LTLIBOBJS' +ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS MAINT build build_cpu build_vendor build_os host host_cpu host_vendor host_os CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CPP EGREP LN_S INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA RANLIB ac_ct_RANLIB INSTALL_INFO GZIP_PROG LIBSOUND PKG_CONFIG ALSA_CFLAGS ALSA_LIBS CFLAGS_SOUND SET_MAKE GTK_CFLAGS GTK_LIBS ALLOCA liblockfile LIBOBJS NEED_SETGID KMEM_GROUP GETLOADAVG_LIBS GETOPT_H GETOPTOBJS version configuration canonical srcdir lispdir locallisppath lisppath x_default_search_path etcdir archlibdir docdir bitmapdir gamedir gameuser c_switch_system c_switch_machine LD_SWITCH_X_SITE LD_SWITCH_X_SITE_AUX C_SWITCH_X_SITE X_TOOLKIT_TYPE machfile opsysfile carbon_appdir LTLIBOBJS' ac_subst_files='' # Initialize some variables set by options. @@ -5165,6 +5165,10 @@ rm -f conftest* fi + + + + if test "${with_sound}" != "no"; then # Sound support for GNU/Linux and the free BSDs. echo "$as_me:$LINENO: checking for ANSI C header files" >&5 @@ -5629,6 +5633,117 @@ else fi + + ALSA_REQUIRED=1.0.0 + ALSA_MODULES="alsa >= $ALSA_REQUIRED" + if test "X${with_pkg_config_prog}" != X; then + PKG_CONFIG="${with_pkg_config_prog}" + fi + + succeeded=no + + if test -z "$PKG_CONFIG"; then + # Extract the first word of "pkg-config", so it can be a program name with args. +set dummy pkg-config; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_PKG_CONFIG+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $PKG_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no" + ;; +esac +fi +PKG_CONFIG=$ac_cv_path_PKG_CONFIG + +if test -n "$PKG_CONFIG"; then + echo "$as_me:$LINENO: result: $PKG_CONFIG" >&5 +echo "${ECHO_T}$PKG_CONFIG" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + fi + + if test "$PKG_CONFIG" = "no" ; then + HAVE_ALSA=no + else + PKG_CONFIG_MIN_VERSION=0.9.0 + if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then + echo "$as_me:$LINENO: checking for $ALSA_MODULES" >&5 +echo $ECHO_N "checking for $ALSA_MODULES... $ECHO_C" >&6 + + if $PKG_CONFIG --exists "$ALSA_MODULES" ; then + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + succeeded=yes + + echo "$as_me:$LINENO: checking ALSA_CFLAGS" >&5 +echo $ECHO_N "checking ALSA_CFLAGS... $ECHO_C" >&6 + ALSA_CFLAGS=`$PKG_CONFIG --cflags "$ALSA_MODULES"` + echo "$as_me:$LINENO: result: $ALSA_CFLAGS" >&5 +echo "${ECHO_T}$ALSA_CFLAGS" >&6 + + echo "$as_me:$LINENO: checking ALSA_LIBS" >&5 +echo $ECHO_N "checking ALSA_LIBS... $ECHO_C" >&6 + ALSA_LIBS=`$PKG_CONFIG --libs "$ALSA_MODULES"` + echo "$as_me:$LINENO: result: $ALSA_LIBS" >&5 +echo "${ECHO_T}$ALSA_LIBS" >&6 + else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + ALSA_CFLAGS="" + ALSA_LIBS="" + ## If we have a custom action on failure, don't print errors, but + ## do set a variable so people can do so. + ALSA_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$ALSA_MODULES"` + + fi + + + + else + echo "*** Your version of pkg-config is too old. You need version $PKG_CONFIG_MIN_VERSION or newer." + echo "*** See http://www.freedesktop.org/software/pkgconfig" + fi + fi + + if test $succeeded = yes; then + HAVE_ALSA=yes + else + HAVE_ALSA=no + fi + + if test $HAVE_ALSA = yes; then + LIBSOUND="$LIBSOUND $ALSA_LIBS" + CFLAGS_SOUND="$CFLAGS_SOUND $ALSA_CFLAGS" + +cat >>confdefs.h <<\_ACEOF +#define HAVE_ALSA 1 +_ACEOF + + fi + fi @@ -10195,8 +10310,6 @@ echo "${ECHO_T}before 5" >&6 fi fi - - HAVE_GTK=no if test "${with_gtk}" = "yes" || test "$USE_X_TOOLKIT" = "gtk"; then if test "$USE_X_TOOLKIT" != "none" && test "$USE_X_TOOLKIT" != "maybe"; then @@ -10258,10 +10371,11 @@ fi fi if test "$PKG_CONFIG" = "no" ; then - echo "*** The pkg-config script could not be found. Make sure it is" - echo "*** in your path, or give the full path to pkg-config with" - echo "*** the PKG_CONFIG environment variable or --with-pkg-config-prog." - echo "*** Or see http://www.freedesktop.org/software/pkgconfig to get pkg-config." + { { echo "$as_me:$LINENO: error: + *** The pkg-config script could not be found. Make sure it is in your path, or give the full path to pkg-config with the PKG_CONFIG environment variable or --with-pkg-config-prog. Or see http://www.freedesktop.org/software/pkgconfig to get pkg-config." >&5 +echo "$as_me: error: + *** The pkg-config script could not be found. Make sure it is in your path, or give the full path to pkg-config with the PKG_CONFIG environment variable or --with-pkg-config-prog. Or see http://www.freedesktop.org/software/pkgconfig to get pkg-config." >&2;} + { (exit 1); exit 1; }; } else PKG_CONFIG_MIN_VERSION=0.9.0 if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then @@ -10285,6 +10399,8 @@ echo $ECHO_N "checking GTK_LIBS... $ECHO_C" >&6 echo "$as_me:$LINENO: result: $GTK_LIBS" >&5 echo "${ECHO_T}$GTK_LIBS" >&6 else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 GTK_CFLAGS="" GTK_LIBS="" ## If we have a custom action on failure, don't print errors, but @@ -23653,8 +23769,11 @@ s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t s,@INSTALL_INFO@,$INSTALL_INFO,;t t s,@GZIP_PROG@,$GZIP_PROG,;t t s,@LIBSOUND@,$LIBSOUND,;t t -s,@SET_MAKE@,$SET_MAKE,;t t s,@PKG_CONFIG@,$PKG_CONFIG,;t t +s,@ALSA_CFLAGS@,$ALSA_CFLAGS,;t t +s,@ALSA_LIBS@,$ALSA_LIBS,;t t +s,@CFLAGS_SOUND@,$CFLAGS_SOUND,;t t +s,@SET_MAKE@,$SET_MAKE,;t t s,@GTK_CFLAGS@,$GTK_CFLAGS,;t t s,@GTK_LIBS@,$GTK_LIBS,;t t s,@ALLOCA@,$ALLOCA,;t t From 88fab15ba901ff507dd0b14ef6f084b1785e5ad4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Dj=C3=A4rv?= Date: Thu, 18 May 2006 16:59:12 +0000 Subject: [PATCH 026/501] * configure.in: Add check for ALSA. * configure: Regenerate. --- ChangeLog | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/ChangeLog b/ChangeLog index e2f103f8169..a434af8ca49 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2006-05-18 Jan Dj,Ad(Brv + + * configure.in: Add check for ALSA. + * configure: Regenerate. + 2006-05-06 Eli Zaretskii * Makefile.in (INFO_FILES): Remove emacs-xtra. From 51d139915eab710f75bdc99783b955117bef053e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Dj=C3=A4rv?= Date: Thu, 18 May 2006 17:04:59 +0000 Subject: [PATCH 027/501] * config.in: Regenerated (HAVE_ALSA). --- src/config.in | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/config.in b/src/config.in index 2bc4ba56e79..09f7be65b3b 100644 --- a/src/config.in +++ b/src/config.in @@ -87,6 +87,9 @@ Boston, MA 02110-1301, USA. */ */ #undef HAVE_ALLOCA_H +/* Define to 1 if ALSA is available. */ +#undef HAVE_ALSA + /* Define to 1 if you have the `bcmp' function. */ #undef HAVE_BCMP @@ -943,6 +946,9 @@ Boston, MA 02110-1301, USA. */ #ifdef HAVE_SOUNDCARD_H #define HAVE_SOUND 1 #endif +#ifdef HAVE_ALSA +#define HAVE_SOUND 1 +#endif #endif /* __FreeBSD__ || __NetBSD__ || __linux__ */ /* If using GNU, then support inline function declarations. */ From 4900d996ca5fc5e4123fe74b55f7ca4feb1cebc8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Dj=C3=A4rv?= Date: Thu, 18 May 2006 17:05:36 +0000 Subject: [PATCH 028/501] * Makefile.in (CFLAGS_SOUND): New flags for ALSA (ALL_CFLAGS): Add CFLAGS_SOUND --- src/Makefile.in | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Makefile.in b/src/Makefile.in index ba539b07f90..4b6599dc26d 100644 --- a/src/Makefile.in +++ b/src/Makefile.in @@ -280,7 +280,7 @@ TOOLKIT_DEFINES = /* C_SWITCH_X_SITE must come before C_SWITCH_X_MACHINE and C_SWITCH_X_SYSTEM since it may have -I options that should override those two. */ -ALL_CFLAGS=-Demacs -DHAVE_CONFIG_H $(TOOLKIT_DEFINES) $(MYCPPFLAGS) -I. -I${srcdir} C_SWITCH_MACHINE C_SWITCH_SYSTEM C_SWITCH_SITE C_SWITCH_X_SITE C_SWITCH_X_MACHINE C_SWITCH_X_SYSTEM C_SWITCH_SYSTEM_TEMACS ${CFLAGS} +ALL_CFLAGS=-Demacs -DHAVE_CONFIG_H $(TOOLKIT_DEFINES) $(MYCPPFLAGS) -I. -I${srcdir} C_SWITCH_MACHINE C_SWITCH_SYSTEM C_SWITCH_SITE C_SWITCH_X_SITE C_SWITCH_X_MACHINE C_SWITCH_X_SYSTEM C_SWITCH_SYSTEM_TEMACS ${CFLAGS_SOUND} ${CFLAGS} .c.o: $(CC) -c $(CPPFLAGS) $(ALL_CFLAGS) $< @@ -453,6 +453,7 @@ LIBX= $(LIBXMENU) LD_SWITCH_X_SITE -lX10 LIBX10_MACHINE LIBX10_SYSTEM #endif /* not HAVE_X_WINDOWS */ LIBSOUND= @LIBSOUND@ +CFLAGS_SOUND= @CFLAGS_SOUND@ #ifndef ORDINARY_LINK /* Fix linking if compiled with GCC. */ From 2d2643f6535ee6160abbf2d6adfe5898ebdc2a02 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Dj=C3=A4rv?= Date: Thu, 18 May 2006 17:06:01 +0000 Subject: [PATCH 029/501] * sound.c (alsa_sound_perror, alsa_open, alsa_period_size) (alsa_configure, alsa_close, alsa_choose_format, alsa_write) (snd_error_quiet, alsa_init): New functions. (vox_init): Return 0 if unable to open device. (Fplay_sound_internal): Test for alsa first and use vox (oss) as a fallback. (struct sound_device): Add period_size. (wav_play, au_play): Use period_size if set. --- src/sound.c | 401 ++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 392 insertions(+), 9 deletions(-) diff --git a/src/sound.c b/src/sound.c index 0fbeceb4b9e..2ceefd3bce3 100644 --- a/src/sound.c +++ b/src/sound.c @@ -73,6 +73,10 @@ Boston, MA 02110-1301, USA. */ #ifdef HAVE_SOUNDCARD_H #include #endif +#ifdef HAVE_ALSA +#include +#endif + /* END: Non Windows Includes */ #else /* WINDOWSNT */ @@ -121,6 +125,9 @@ static int parse_sound P_ ((Lisp_Object, Lisp_Object *)); #ifndef DEFAULT_SOUND_DEVICE #define DEFAULT_SOUND_DEVICE "/dev/dsp" #endif +#ifndef DEFAULT_ALSA_SOUND_DEVICE +#define DEFAULT_ALSA_SOUND_DEVICE "default" +#endif /* Structure forward declarations. */ @@ -227,6 +234,10 @@ struct sound_device void (* choose_format) P_ ((struct sound_device *sd, struct sound *s)); + /* Return a preferred data size in bytes to be sent to write (below) + each time. 2048 is used if this is NULL. */ + int (* period_size) P_ ((struct sound_device *sd)); + /* Write NYBTES bytes from BUFFER to device SD. */ void (* write) P_ ((struct sound_device *sd, const char *buffer, int nbytes)); @@ -280,7 +291,7 @@ static void vox_open P_ ((struct sound_device *)); static void vox_configure P_ ((struct sound_device *)); static void vox_close P_ ((struct sound_device *sd)); static void vox_choose_format P_ ((struct sound_device *, struct sound *)); -static void vox_init P_ ((struct sound_device *)); +static int vox_init P_ ((struct sound_device *)); static void vox_write P_ ((struct sound_device *, const char *, int)); static void find_sound_type P_ ((struct sound *)); static u_int32_t le2hl P_ ((u_int32_t)); @@ -604,7 +615,7 @@ wav_play (s, sd) { char *buffer; int nbytes; - int blksize = 2048; + int blksize = sd->period_size ? sd->period_size (sd) : 2048; buffer = (char *) alloca (blksize); lseek (s->fd, sizeof *header, SEEK_SET); @@ -633,7 +644,8 @@ enum au_encoding AU_ENCODING_32, AU_ENCODING_IEEE32, AU_ENCODING_IEEE64, - AU_COMPRESSED = 23 + AU_COMPRESSED = 23, + AU_ENCODING_ALAW_8 = 27 }; @@ -689,7 +701,7 @@ au_play (s, sd) SBYTES (s->data) - header->data_offset); else { - int blksize = 2048; + int blksize = sd->period_size ? sd->period_size (sd) : 2048; char *buffer; int nbytes; @@ -868,16 +880,33 @@ vox_choose_format (sd, s) /* Initialize device SD. Set up the interface functions in the device structure. */ -static void +static int vox_init (sd) struct sound_device *sd; { + char *file; + int fd; + + /* Open the sound device. Default is /dev/dsp. */ + if (sd->file) + file = sd->file; + else + file = DEFAULT_SOUND_DEVICE; + fd = emacs_open (file, O_WRONLY, 0); + if (fd >= 0) + emacs_close (fd); + else + return 0; + sd->fd = -1; sd->open = vox_open; sd->close = vox_close; sd->configure = vox_configure; sd->choose_format = vox_choose_format; sd->write = vox_write; + sd->period_size = NULL; + + return 1; } /* Write NBYTES bytes from BUFFER to device SD. */ @@ -893,6 +922,359 @@ vox_write (sd, buffer, nbytes) sound_perror ("Error writing to sound device"); } +#ifdef HAVE_ALSA +/*********************************************************************** + ALSA Driver Interface + ***********************************************************************/ + +/* This driver is available on GNU/Linux. */ + +static void +alsa_sound_perror (msg, err) + char *msg; + int err; +{ + error ("%s: %s", msg, snd_strerror (err)); +} + +struct alsa_params +{ + snd_pcm_t *handle; + snd_pcm_hw_params_t *hwparams; + snd_pcm_sw_params_t *swparams; + snd_pcm_uframes_t period_size; +}; + +/* Open device SD. If SD->file is non-null, open that device, + otherwise use a default device name. */ + +static void +alsa_open (sd) + struct sound_device *sd; +{ + char *file; + struct alsa_params *p; + int err; + + /* Open the sound device. Default is "default". */ + if (sd->file) + file = sd->file; + else + file = DEFAULT_ALSA_SOUND_DEVICE; + + p = xmalloc (sizeof (*p)); + p->handle = NULL; + p->hwparams = NULL; + p->swparams = NULL; + + sd->fd = -1; + sd->data = p; + + + if ((err = snd_pcm_open (&p->handle, file, SND_PCM_STREAM_PLAYBACK, 0)) < 0) + alsa_sound_perror (file, err); +} + +static int +alsa_period_size (sd) + struct sound_device *sd; +{ + struct alsa_params *p = (struct alsa_params *) sd->data; + return p->period_size; +} + +static void +alsa_configure (sd) + struct sound_device *sd; +{ + int val, err, dir; + struct alsa_params *p = (struct alsa_params *) sd->data; + snd_pcm_uframes_t buffer_size; + + xassert (p->handle != 0); + + if ((err = snd_pcm_hw_params_malloc (&p->hwparams)) < 0) + alsa_sound_perror ("Could not allocate hardware parameter structure", err); + + if ((err = snd_pcm_sw_params_malloc (&p->swparams)) < 0) + alsa_sound_perror ("Could not allocate software parameter structure", err); + + if ((err = snd_pcm_hw_params_any (p->handle, p->hwparams)) < 0) + alsa_sound_perror ("Could not initialize hardware parameter structure", err); + + if ((err = snd_pcm_hw_params_set_access (p->handle, p->hwparams, + SND_PCM_ACCESS_RW_INTERLEAVED)) < 0) + alsa_sound_perror ("Could not set access type", err); + + val = sd->format; + if ((err = snd_pcm_hw_params_set_format (p->handle, p->hwparams, val)) < 0) + alsa_sound_perror ("Could not set sound format", err); + + val = sd->sample_rate; + if ((err = snd_pcm_hw_params_set_rate_near (p->handle, p->hwparams, &val, 0)) + < 0) + alsa_sound_perror ("Could not set sample rate", err); + + val = sd->channels; + if ((err = snd_pcm_hw_params_set_channels (p->handle, p->hwparams, val)) < 0) + alsa_sound_perror ("Could not set channel count", err); + + + err = snd_pcm_hw_params_get_period_size (p->hwparams, &p->period_size, &dir); + if (err < 0) + alsa_sound_perror ("Unable to get period size for playback", err); + + err = snd_pcm_hw_params_get_buffer_size (p->hwparams, &buffer_size); + if (err < 0) + alsa_sound_perror("Unable to get buffer size for playback", err); + + if ((err = snd_pcm_hw_params (p->handle, p->hwparams)) < 0) + alsa_sound_perror ("Could not set parameters", err); + + err = snd_pcm_sw_params_current (p->handle, p->swparams); + if (err < 0) + alsa_sound_perror ("Unable to determine current swparams for playback", + err); + + /* Start the transfer when the buffer is almost full */ + err = snd_pcm_sw_params_set_start_threshold (p->handle, p->swparams, + (buffer_size / p->period_size) + * p->period_size); + if (err < 0) + alsa_sound_perror ("Unable to set start threshold mode for playback", err); + + /* Allow the transfer when at least period_size samples can be processed */ + err = snd_pcm_sw_params_set_avail_min (p->handle, p->swparams, p->period_size); + if (err < 0) + alsa_sound_perror ("Unable to set avail min for playback", err); + + /* Align all transfers to 1 period */ + err = snd_pcm_sw_params_set_xfer_align (p->handle, p->swparams, + p->period_size); + if (err < 0) + alsa_sound_perror ("Unable to set transfer align for playback", err); + + err = snd_pcm_sw_params (p->handle, p->swparams); + if (err < 0) + alsa_sound_perror ("Unable to set sw params for playback\n", err); + + snd_pcm_hw_params_free (p->hwparams); + p->hwparams = NULL; + snd_pcm_sw_params_free (p->swparams); + p->swparams = NULL; + + if ((err = snd_pcm_prepare (p->handle)) < 0) + alsa_sound_perror ("Could not prepare audio interface for use", err); + + if (sd->volume > 0) + { + int chn; + snd_mixer_t *handle; + snd_mixer_elem_t *e; + char *file = sd->file ? sd->file : DEFAULT_ALSA_SOUND_DEVICE; + + if (snd_mixer_open (&handle, 0) >= 0) + { + if (snd_mixer_attach (handle, file) >= 0 + && snd_mixer_load (handle) >= 0 + && snd_mixer_selem_register (handle, NULL, NULL) >= 0) + for (e = snd_mixer_first_elem (handle); + e; + e = snd_mixer_elem_next (e)) + { + if (snd_mixer_selem_has_playback_volume (e)) + { + long pmin, pmax; + snd_mixer_selem_get_playback_volume_range (e, &pmin, &pmax); + long vol = pmin + (sd->volume * (pmax - pmin)) / 100; + + for (chn = 0; chn <= SND_MIXER_SCHN_LAST; chn++) + snd_mixer_selem_set_playback_volume (e, chn, vol); + } + } + snd_mixer_close(handle); + } + } +} + + +/* Close device SD if it is open. */ + +static void +alsa_close (sd) + struct sound_device *sd; +{ + struct alsa_params *p = (struct alsa_params *) sd->data; + if (p) + { + if (p->hwparams) + snd_pcm_hw_params_free (p->hwparams); + if (p->swparams) + snd_pcm_sw_params_free (p->swparams); + if (p->handle) + { + snd_pcm_drain(p->handle); + snd_pcm_close (p->handle); + } + free (p); + } +} + +/* Choose device-dependent format for device SD from sound file S. */ + +static void +alsa_choose_format (sd, s) + struct sound_device *sd; + struct sound *s; +{ + struct alsa_params *p = (struct alsa_params *) sd->data; + if (s->type == RIFF) + { + struct wav_header *h = (struct wav_header *) s->header; + if (h->precision == 8) + sd->format = SND_PCM_FORMAT_U8; + else if (h->precision == 16) + sd->format = SND_PCM_FORMAT_S16_LE; + else + error ("Unsupported WAV file format"); + } + else if (s->type == SUN_AUDIO) + { + struct au_header *header = (struct au_header *) s->header; + switch (header->encoding) + { + case AU_ENCODING_ULAW_8: + sd->format = SND_PCM_FORMAT_MU_LAW; + break; + case AU_ENCODING_ALAW_8: + sd->format = SND_PCM_FORMAT_A_LAW; + break; + case AU_ENCODING_IEEE32: + sd->format = SND_PCM_FORMAT_FLOAT_BE; + break; + case AU_ENCODING_IEEE64: + sd->format = SND_PCM_FORMAT_FLOAT64_BE; + break; + case AU_ENCODING_8: + sd->format = SND_PCM_FORMAT_S8; + break; + case AU_ENCODING_16: + sd->format = SND_PCM_FORMAT_S16_BE; + break; + case AU_ENCODING_24: + sd->format = SND_PCM_FORMAT_S24_BE; + break; + case AU_ENCODING_32: + sd->format = SND_PCM_FORMAT_S32_BE; + break; + + default: + error ("Unsupported AU file format"); + } + } + else + abort (); +} + + +/* Write NBYTES bytes from BUFFER to device SD. */ + +static void +alsa_write (sd, buffer, nbytes) + struct sound_device *sd; + const char *buffer; + int nbytes; +{ + struct alsa_params *p = (struct alsa_params *) sd->data; + + /* The the third parameter to snd_pcm_writei is frames, not bytes. */ + int fact = snd_pcm_format_size (sd->format, 1) * sd->channels; + int nwritten = 0; + int err; + + while (nwritten < nbytes) + { + if ((err = snd_pcm_writei (p->handle, + buffer + nwritten, + (nbytes - nwritten)/fact)) < 0) + { + fprintf(stderr, "Err %d/%s\n", err, snd_strerror(err)); + if (err == -EPIPE) + { /* under-run */ + err = snd_pcm_prepare (p->handle); + if (err < 0) + alsa_sound_perror ("Can't recover from underrun, prepare failed", + err); + } + else if (err == -ESTRPIPE) + { + while ((err = snd_pcm_resume (p->handle)) == -EAGAIN) + sleep(1); /* wait until the suspend flag is released */ + if (err < 0) + { + err = snd_pcm_prepare (p->handle); + if (err < 0) + alsa_sound_perror ("Can't recover from suspend, " + "prepare failed", + err); + } + } + else + alsa_sound_perror ("Error writing to sound device", err); + + } + else + nwritten += err * fact; + } +} + +static void +snd_error_quiet (file, line, function, err, fmt) + const char *file; + int line; + const char *function; + int err; + const char *fmt; +{ +} + +/* Initialize device SD. Set up the interface functions in the device + structure. */ + +static int +alsa_init (sd) + struct sound_device *sd; +{ + char *file; + snd_pcm_t *handle; + int err; + + /* Open the sound device. Default is "default". */ + if (sd->file) + file = sd->file; + else + file = DEFAULT_ALSA_SOUND_DEVICE; + + snd_lib_error_set_handler ((snd_lib_error_handler_t) snd_error_quiet); + err = snd_pcm_open (&handle, file, SND_PCM_STREAM_PLAYBACK, 0); + snd_lib_error_set_handler (NULL); + if (err < 0) + return 0; + + sd->fd = -1; + sd->open = alsa_open; + sd->close = alsa_close; + sd->configure = alsa_configure; + sd->choose_format = alsa_choose_format; + sd->write = alsa_write; + sd->period_size = alsa_period_size; + + return 1; +} + +#endif /* HAVE_ALSA */ + + /* END: Non Windows functions */ #else /* WINDOWSNT */ @@ -1056,10 +1438,11 @@ Internal use only, use `play-sound' instead.\n */) args[1] = sound; Frun_hook_with_args (2, args); - /* There is only one type of device we currently support, the VOX - sound driver. Set up the device interface functions for that - device. */ - vox_init (current_sound_device); +#ifdef HAVE_ALSA + if (!alsa_init (current_sound_device)) +#endif + if (!vox_init (current_sound_device)) + error ("No usable sound device driver found"); /* Open the device. */ current_sound_device->open (current_sound_device); From a940e2c652c2d9bec1f088a1c801403fb9378e6f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Dj=C3=A4rv?= Date: Thu, 18 May 2006 17:06:55 +0000 Subject: [PATCH 030/501] * config.in: Regenerated (HAVE_ALSA). * sound.c (alsa_sound_perror, alsa_open, alsa_period_size) (alsa_configure, alsa_close, alsa_choose_format, alsa_write) (snd_error_quiet, alsa_init): New functions. (vox_init): Return 0 if unable to open device. (Fplay_sound_internal): Test for alsa first and use vox (oss) as a fallback. (struct sound_device): Add period_size. (wav_play, au_play): Use period_size if set. * Makefile.in (CFLAGS_SOUND): New flags for ALSA (ALL_CFLAGS): Add CFLAGS_SOUND --- src/ChangeLog | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/ChangeLog b/src/ChangeLog index 3c527e22dd8..e0f844b284e 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,19 @@ +2006-05-18 Jan Dj,Ad(Brv + + * config.in: Regenerated (HAVE_ALSA). + + * sound.c (alsa_sound_perror, alsa_open, alsa_period_size) + (alsa_configure, alsa_close, alsa_choose_format, alsa_write) + (snd_error_quiet, alsa_init): New functions. + (vox_init): Return 0 if unable to open device. + (Fplay_sound_internal): Test for alsa first and use vox (oss) as + a fallback. + (struct sound_device): Add period_size. + (wav_play, au_play): Use period_size if set. + + * Makefile.in (CFLAGS_SOUND): New flags for ALSA + (ALL_CFLAGS): Add CFLAGS_SOUND + 2006-05-18 Kenichi Handa * callproc.c (Fcall_process): Reject encoding arguments by From d7ba2a0133de877bb573cabbadb48983c69ba6fb Mon Sep 17 00:00:00 2001 From: Reiner Steib Date: Thu, 18 May 2006 17:50:53 +0000 Subject: [PATCH 031/501] (wid-edit): Require. (defun-gmm): Renamed from `gmm-defun-compat'. (gmm-image-search-load-path): Use it. (gmm-image-load-path-for-library): Use it. Sync with `mh-compat.el'. --- lisp/gnus/ChangeLog | 8 ++++++++ lisp/gnus/gmm-utils.el | 22 ++++++++-------------- 2 files changed, 16 insertions(+), 14 deletions(-) diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog index 7f0f248c7cf..3cba77d4b21 100644 --- a/lisp/gnus/ChangeLog +++ b/lisp/gnus/ChangeLog @@ -1,3 +1,10 @@ +2006-05-18 Reiner Steib + + * gmm-utils.el (wid-edit): Require. + (defun-gmm): Renamed from `gmm-defun-compat'. + (gmm-image-search-load-path): Use it. + (gmm-image-load-path-for-library): Use it. Sync with `mh-compat.el'. + 2006-05-04 Stefan Monnier * mm-decode.el (mm-dissect-buffer): Remove spurious double assignment. @@ -4112,6 +4119,7 @@ See ChangeLog.2 for earlier changes. ;; Local Variables: ;; coding: iso-2022-7bit +;; fill-column: 79 ;; End: ;;; arch-tag: 3f33a3e7-090d-492b-bedd-02a1417d32b4 diff --git a/lisp/gnus/gmm-utils.el b/lisp/gnus/gmm-utils.el index 4db811053ec..f314d0e81d7 100644 --- a/lisp/gnus/gmm-utils.el +++ b/lisp/gnus/gmm-utils.el @@ -30,7 +30,7 @@ ;;; Code: -;; (require 'wid-edit) +(require 'wid-edit) (defgroup gmm nil "Utility functions for Gnus, Message and MML" @@ -279,11 +279,7 @@ DEFAULT-MAP specifies the default key map for ICON-LIST." icon-list)) tool-bar-map)) -;; WARNING: The following is subject to change. Don't rely on it yet. - -;; From MH-E without modifications: - -(defmacro gmm-defun-compat (name function arg-list &rest body) +(defmacro defun-gmm (name function arg-list &rest body) "Create function NAME. If FUNCTION exists, then NAME becomes an alias for FUNCTION. Otherwise, create function NAME with ARG-LIST and BODY." @@ -292,21 +288,19 @@ Otherwise, create function NAME with ARG-LIST and BODY." `(defalias ',name ',function) `(defun ,name ,arg-list ,@body)))) -(gmm-defun-compat gmm-image-search-load-path +(defun-gmm gmm-image-search-load-path image-search-load-path (file &optional path) "Emacs 21 and XEmacs don't have `image-search-load-path'. This function returns nil on those systems." nil) -;; From MH-E with modifications: +;; Cf. `mh-image-load-path-for-library' in `mh-compat.el'. -;; Don't use `gmm-defun-compat' until API changes in -;; `image-load-path-for-library' in Emacs CVS are completed. +(defun-gmm gmm-image-load-path-for-library + image-load-path-for-library (library image &optional path no-error) + "Return a suitable search path for images used by LIBRARY. -(defun gmm-image-load-path-for-library (library image &optional path no-error) - "Return a suitable search path for images relative to LIBRARY. - -First it searches for IMAGE in `image-load-path' (excluding +It searches for IMAGE in `image-load-path' (excluding \"`data-directory'/images\") and `load-path', followed by a path suitable for LIBRARY, which includes \"../../etc/images\" and \"../etc/images\" relative to the library file itself, and then From f18df03d4a0494455b1cfc9540c725b2081fce65 Mon Sep 17 00:00:00 2001 From: Miles Bader Date: Thu, 18 May 2006 23:59:14 +0000 Subject: [PATCH 032/501] Merge from gnus--rel--5.10 Patches applied: * gnus--rel--5.10 (patch 102) - Update from CVS Revision: emacs@sv.gnu.org/emacs--devo--0--patch-287 --- lisp/gnus/ChangeLog | 3 +++ lisp/gnus/gnus-sum.el | 4 ++-- man/ChangeLog | 5 +++++ man/gnus.texi | 2 +- 4 files changed, 11 insertions(+), 3 deletions(-) diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog index 3cba77d4b21..1e5bfa23ed3 100644 --- a/lisp/gnus/ChangeLog +++ b/lisp/gnus/ChangeLog @@ -1,5 +1,8 @@ 2006-05-18 Reiner Steib + * gnus-sum.el (gnus-summary-save-article-mail): Clarify doc string. + (gnus-summary-expire-articles-now): Shorten prompt. + * gmm-utils.el (wid-edit): Require. (defun-gmm): Renamed from `gmm-defun-compat'. (gmm-image-search-load-path): Use it. diff --git a/lisp/gnus/gnus-sum.el b/lisp/gnus/gnus-sum.el index daecb1701cd..5208ae27eb9 100644 --- a/lisp/gnus/gnus-sum.el +++ b/lisp/gnus/gnus-sum.el @@ -9507,7 +9507,7 @@ deleted forever, right now." (interactive) (or gnus-expert-user (gnus-yes-or-no-p - "Are you really, really, really sure you want to delete all these messages? ") + "Are you really, really sure you want to delete all expirable messages? ") (error "Phew!")) (gnus-summary-expire-articles t)) @@ -11043,7 +11043,7 @@ If HEADERS (the symbolic prefix), include the headers, too." (gnus-configure-windows 'pipe)))) (defun gnus-summary-save-article-mail (&optional arg) - "Append the current article to an mail file. + "Append the current article to a Unix mail box file. If N is a positive number, save the N next articles. If N is a negative number, save the N previous articles. If N is nil and any articles have been marked with the process mark, diff --git a/man/ChangeLog b/man/ChangeLog index 5641f133277..1f716090c73 100644 --- a/man/ChangeLog +++ b/man/ChangeLog @@ -1,3 +1,7 @@ +2006-05-18 Reiner Steib + + * gnus.texi (Saving Articles): Clarify gnus-summary-save-article-mail. + 2006-05-17 Richard Stallman * files.texi (Diff Mode): Mention C-x `. @@ -6230,6 +6234,7 @@ ;; Local Variables: ;; coding: iso-2022-7bit +;; fill-column: 79 ;; End: Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002, diff --git a/man/gnus.texi b/man/gnus.texi index 9623bc468d9..b1654b8302f 100644 --- a/man/gnus.texi +++ b/man/gnus.texi @@ -7377,7 +7377,7 @@ Save the current article using the default article saver @item O m @kindex O m (Summary) @findex gnus-summary-save-article-mail -Save the current article in mail format +Save the current article in a Unix mail box (mbox) file (@code{gnus-summary-save-article-mail}). @item O r From a37288ad91ae681f5239ea3eb5c7d975341c3f70 Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Fri, 19 May 2006 03:31:44 +0000 Subject: [PATCH 033/501] *** empty log message *** --- etc/TODO | 2 ++ 1 file changed, 2 insertions(+) diff --git a/etc/TODO b/etc/TODO index d210ecb7d6d..757e040562a 100644 --- a/etc/TODO +++ b/etc/TODO @@ -135,6 +135,8 @@ to the FSF. * Other features we would like: +** Remove the default toggling behavior of minor modes when called from elisp +rather than interactively. This a trivial one-liner in easy-mode.el. ** Create a category of errors called `user-error' for errors which are typically due to pilot errors and should thus be in debug-ignored-errors. From a161b46d27b3b9deb0aa218a108ff53af0ecca7f Mon Sep 17 00:00:00 2001 From: Kenichi Handa Date: Fri, 19 May 2006 04:25:54 +0000 Subject: [PATCH 034/501] (mik): Table corrected. --- lisp/ChangeLog | 4 ++++ lisp/international/code-pages.el | 4 ++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 31efe51b263..8d6dfbba75a 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,7 @@ +2006-05-19 Alexander Shopov (tiny change) + + * international/code-pages.el (mik): Table corrected. + 2006-05-18 Kim F. Storm * progmodes/grep.el (grep-find): Don't check grep-find-command diff --git a/lisp/international/code-pages.el b/lisp/international/code-pages.el index 359773ac346..13181268b36 100644 --- a/lisp/international/code-pages.el +++ b/lisp/international/code-pages.el @@ -4489,7 +4489,7 @@ Return an updated `non-iso-charset-alist'." ;; Suggested by Anton Zinoviev : Bulgarian DOS ;; codepage. Table at -;; . +;; . ;;;###autoload(autoload-coding-system 'mik '(require 'code-pages)) (cp-make-coding-system mik @@ -4497,7 +4497,7 @@ Return an updated `non-iso-charset-alist'." ?Ч ?Ш ?Щ ?Ъ ?Ы ?Ь ?Э ?Ю ?Я ?а ?б ?в ?г ?д ?е ?ж ?з ?и ?й ?к ?л ?м ?н ?о ?п ?р ?с ?т ?у ?ф ?х ?ц ?ч ?ш ?щ ?ъ ?ы ?ь ?э ?ю ?я ?└ ?┴ ?┬ ?├ ?─ ?┼ ?╣ ?║ ?╚ ?╔ ?╩ ?╦ ?╠ ?═ ?╬ ?┐ ?░ ?▒ ?▓ ?│ ?┤ ?№ ?§ ?╗ ?╝ ?┘ ?┌ ?█ - ?▄ ?▌ ?▐ ?▀ ?α ?β ?Γ ?π ?Σ ?σ ?μ ?τ ?Φ ?Θ ?Ω ?δ ?∞ ?∅ ?∈ ?∩ ?≡ ?± ?≥ + ?▄ ?▌ ?▐ ?▀ ?α ?ß ?Γ ?π ?Σ ?σ ?µ ?τ ?Φ ?Θ ?Ω ?δ ?∞ ?φ ?ε ?∩ ?≡ ?± ?≥ ?≤ ?⌠ ?⌡ ?÷ ?≈ ?° ?∙ ?· ?√ ?ⁿ ?² ?■ ? ]) (coding-system-put 'mik 'mime-charset nil) From 04c34eb88e1965927221b04716f679e01b126cc8 Mon Sep 17 00:00:00 2001 From: Thien-Thi Nguyen Date: Fri, 19 May 2006 05:57:07 +0000 Subject: [PATCH 035/501] (Digression concerning error): Fix typo. --- lispintro/ChangeLog | 4 ++++ lispintro/emacs-lisp-intro.texi | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/lispintro/ChangeLog b/lispintro/ChangeLog index 753aec71d80..731e734f78c 100644 --- a/lispintro/ChangeLog +++ b/lispintro/ChangeLog @@ -1,3 +1,7 @@ +2006-05-19 Thien-Thi Nguyen + + * emacs-lisp-intro.texi (Digression concerning error): Fix typo. + 2005-09-16 Romain Francoise * emacs-lisp-intro.texi (GNU Free Documentation License): diff --git a/lispintro/emacs-lisp-intro.texi b/lispintro/emacs-lisp-intro.texi index c7fef17061f..f941f3e44ba 100644 --- a/lispintro/emacs-lisp-intro.texi +++ b/lispintro/emacs-lisp-intro.texi @@ -18278,7 +18278,7 @@ But a human expects to attempt this sort of thing, if only to find out whether the kill ring is full or empty. This is an act of exploration. -(From the human point of view, the act of exploration and discovery is +From the human point of view, the act of exploration and discovery is not necessarily an error, and therefore should not be labelled as one, even in the bowels of a computer. As it is, the code in Emacs implies that a human who is acting virtuously, by exploring his or her From e6b71a8f0aea6e968d3d014eb5f3b9137ffe9bbc Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Fri, 19 May 2006 08:24:21 +0000 Subject: [PATCH 036/501] *** empty log message *** --- lisp/ChangeLog | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 8d6dfbba75a..3f351d5fbaa 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,28 @@ +2006-05-19 Glenn Morris + + * calendar/diary-lib.el (diary-bahai-date) + (list-bahai-diary-entries, mark-bahai-diary-entries) + (mark-bahai-calendar-date-pattern): Not interactive. + (add-to-diary-list): New optional arg LITERAL. Doc fix. + (diary-entries-list): Change format of 4th element in each entry. + (diary-list-entries): Use add-to-diary-list. + (diary-goto-entry): Handle the case where the buffer visiting the + diary has been killed. + (fancy-diary-display): Add 'locator to button rather than 'marker. + Only generate temp-face when there are marks to apply. + (list-sexp-diary-entries): Pass literal to add-to-diary-list. + (diary-fancy-date-pattern): New variable. + (diary-time-regexp): Doc fix. + (diary-anniversary, diary-time): New faces. + (fancy-diary-font-lock-keywords): Use diary-fancy-date-pattern and + diary-time-regexp. Add font-lock-multiline property where needed. + Use new faces diary-anniversary and diary-time. + (diary-fancy-font-lock-fontify-region-function): New function, to + handle multiline font-lock pattern in fancy diary. + (fancy-diary-display-mode): Set font-lock-fontify-region-function. + (diary-font-lock-keywords): Tweak time regexp. Use new face + diary-time. + 2006-05-19 Alexander Shopov (tiny change) * international/code-pages.el (mik): Table corrected. From e652c999deb85c535f3beedbc22d4075947670fb Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Fri, 19 May 2006 08:24:51 +0000 Subject: [PATCH 037/501] (diary-bahai-date) (list-bahai-diary-entries, mark-bahai-diary-entries) (mark-bahai-calendar-date-pattern): Not interactive. (add-to-diary-list): New optional arg LITERAL. Doc fix. (diary-entries-list): Change format of 4th element in each entry. (diary-list-entries): Use add-to-diary-list. (diary-goto-entry): Handle the case where the buffer visiting the diary has been killed. (fancy-diary-display): Add 'locator to button rather than 'marker. Only generate temp-face when there are marks to apply. (list-sexp-diary-entries): Pass literal to add-to-diary-list. (diary-fancy-date-pattern): New variable. (diary-time-regexp): Doc fix. (diary-anniversary, diary-time): New faces. (fancy-diary-font-lock-keywords): Use diary-fancy-date-pattern and diary-time-regexp. Add font-lock-multiline property where needed. Use new faces diary-anniversary and diary-time. (diary-fancy-font-lock-fontify-region-function): New function, to handle multiline font-lock pattern in fancy diary. (fancy-diary-display-mode): Set font-lock-fontify-region-function. (diary-font-lock-keywords): Tweak time regexp. Use new face diary-time. --- lisp/calendar/diary-lib.el | 301 +++++++++++++++++++++++-------------- 1 file changed, 189 insertions(+), 112 deletions(-) diff --git a/lisp/calendar/diary-lib.el b/lisp/calendar/diary-lib.el index c27939b8075..947de0f2136 100644 --- a/lisp/calendar/diary-lib.el +++ b/lisp/calendar/diary-lib.el @@ -121,20 +121,16 @@ The holidays are those in the list `calendar-holidays'.") "Mark dates in calendar window that conform to Islamic date MONTH/DAY/YEAR.") (autoload 'diary-bahai-date "cal-bahai" - "Baha'i calendar equivalent of date diary entry." - t) + "Baha'i calendar equivalent of date diary entry.") (autoload 'list-bahai-diary-entries "cal-bahai" - "Add any Baha'i date entries from the diary file to `diary-entries-list'." - t) + "Add any Baha'i date entries from the diary file to `diary-entries-list'.") (autoload 'mark-bahai-diary-entries "cal-bahai" - "Mark days in the calendar window that have Baha'i date diary entries." - t) + "Mark days in the calendar window that have Baha'i date diary entries.") (autoload 'mark-bahai-calendar-date-pattern "cal-bahai" - "Mark dates in calendar window that conform to Baha'i date MONTH/DAY/YEAR." - t) + "Mark dates in calendar window that conform to Baha'i date MONTH/DAY/YEAR.") (autoload 'diary-hebrew-date "cal-hebrew" "Hebrew calendar equivalent of date diary entry.") @@ -323,6 +319,42 @@ number of days of diary entries displayed." (integer :tag "Saturday"))) :group 'diary) + +(defvar diary-modify-entry-list-string-function nil + "Function applied to entry string before putting it into the entries list. +Can be used by programs integrating a diary list into other buffers (e.g. +org.el and planner.el) to modify the string or add properties to it. +The function takes a string argument and must return a string.") + +(defun add-to-diary-list (date string specifier &optional marker + globcolor literal) + "Add an entry to `diary-entries-list'. +Do nothing if DATE or STRING is nil. DATE is the (MONTH DAY +YEAR) for which the entry applies; STRING is the text of the +entry as it will appear in the diary (i.e. with any format +strings such as \%d\" expanded); SPECIFIER is the date part of +the entry as it appears in the diary-file; LITERAL is the entry +as it appears in the diary-file (i.e. before expansion). If +LITERAL is nil, it is taken to be the same as STRING. + +The entry is added to the list as (DATE STRING SPECIFIER LOCATOR +GLOBCOLOR), where LOCATOR has the form (MARKER FILENAME LITERAL), +FILENAME being the file containing the diary entry." + (when (and date string) + (if diary-file-name-prefix + (let ((prefix (funcall diary-file-name-prefix-function + (buffer-file-name)))) + (or (string= prefix "") + (setq string (format "[%s] %s" prefix string))))) + (and diary-modify-entry-list-string-function + (setq string (funcall diary-modify-entry-list-string-function + string))) + (setq diary-entries-list + (append diary-entries-list + (list (list date string specifier + (list marker (buffer-file-name) literal) + globcolor)))))) + (define-obsolete-function-alias 'list-diary-entries 'diary-list-entries) (defun diary-list-entries (date number &optional list-only) "Create and display a buffer containing the relevant lines in `diary-file'. @@ -468,9 +500,7 @@ If LIST-ONLY is non-nil don't modify or display the buffer, only return a list." (copy-marker entry-start) (nth 1 temp))))))) (or entry-found (not diary-list-include-blanks) - (setq diary-entries-list - (append diary-entries-list - (list (list date "" "" "" ""))))) + (add-to-diary-list date "" "" "" "")) (setq date (calendar-gregorian-from-absolute (1+ (calendar-absolute-from-gregorian date)))) @@ -577,10 +607,27 @@ changing the variable `diary-include-string'." 'face 'diary-button) (defun diary-goto-entry (button) - (let ((marker (button-get button 'marker))) - (when marker - (pop-to-buffer (marker-buffer marker)) - (goto-char (marker-position marker))))) + (let* ((locator (button-get button 'locator)) + (marker (car locator)) + markbuf file) + ;; If marker pointing to diary location is valid, use that. + (if (and marker (setq markbuf (marker-buffer marker))) + (progn + (pop-to-buffer markbuf) + (goto-char (marker-position marker))) + ;; Marker is invalid (eg buffer has been killed). + (or (and (setq file (cadr locator)) + (file-exists-p file) + (find-file-other-window file) + (progn + (when (eq major-mode default-major-mode) (diary-mode)) + (goto-char (point-min)) + (if (re-search-forward (format "%s.*\\(%s\\)" + (regexp-quote (nth 2 locator)) + (regexp-quote (nth 3 locator))) + nil t) + (goto-char (match-beginning 1))))) + (message "Unable to locate this diary entry"))))) (defun fancy-diary-display () "Prepare a diary buffer with relevant entries in a fancy, noneditable form. @@ -666,37 +713,45 @@ This function is provided for optional use as the `diary-display-hook'." (setq entry (car (cdr (car entry-list)))) (if (< 0 (length entry)) - (progn - (if (nth 3 (car entry-list)) + (let ((this-entry (car entry-list)) + this-loc) + (if (setq this-loc (nth 3 this-entry)) (insert-button (concat entry "\n") - 'marker (nth 3 (car entry-list)) + ;; (MARKER FILENAME SPECIFIER LITERAL) + 'locator (list (car this-loc) + (cadr this-loc) + (nth 2 this-entry) + (or (nth 2 this-loc) + (nth 1 this-entry))) :type 'diary-entry) (insert entry ?\n)) (save-excursion - (let* ((marks (nth 4 (car entry-list))) - (temp-face (make-symbol - (apply - 'concat "temp-face-" - (mapcar (lambda (sym) - (if (stringp sym) - sym - (symbol-name sym))) - marks)))) - (faceinfo marks)) - (make-face temp-face) - ;; Remove :face info from the marks, - ;; copy the face info into temp-face - (while (setq faceinfo (memq :face faceinfo)) - (copy-face (read (nth 1 faceinfo)) temp-face) - (setcar faceinfo nil) - (setcar (cdr faceinfo) nil)) - (setq marks (delq nil marks)) - ;; Apply the font aspects. - (apply 'set-face-attribute temp-face nil marks) - (search-backward entry) - (overlay-put - (make-overlay (match-beginning 0) (match-end 0)) - 'face temp-face))))) + (let* ((marks (nth 4 this-entry)) + (faceinfo marks) + temp-face) + (when marks + (setq temp-face (make-symbol + (apply + 'concat "temp-face-" + (mapcar (lambda (sym) + (if (stringp sym) + sym + (symbol-name sym))) + marks)))) + (make-face temp-face) + ;; Remove :face info from the marks, + ;; copy the face info into temp-face + (while (setq faceinfo (memq :face faceinfo)) + (copy-face (read (nth 1 faceinfo)) temp-face) + (setcar faceinfo nil) + (setcar (cdr faceinfo) nil)) + (setq marks (delq nil marks)) + ;; Apply the font aspects. + (apply 'set-face-attribute temp-face nil marks) + (search-backward entry) + (overlay-put + (make-overlay (match-beginning 0) (match-end 0)) + 'face temp-face)))))) (setq entry-list (cdr entry-list)))) (set-buffer-modified-p nil) (goto-char (point-min)) @@ -1350,7 +1405,7 @@ best if they are nonmarking." (setq line-start (point))) (setq specifier (buffer-substring-no-properties (1+ line-start) (point)) - entry-start (1+ line-start)) + entry-start (1+ line-start)) (forward-char 1) (if (and (or (char-equal (preceding-char) ?\^M) (char-equal (preceding-char) ?\n)) @@ -1367,24 +1422,26 @@ best if they are nonmarking." (while (string-match "[\^M]" entry) (aset entry (match-beginning 0) ?\n ))) (let ((diary-entry (diary-sexp-entry sexp entry date)) - temp) - (setq entry (if (consp diary-entry) - (cdr diary-entry) - diary-entry)) + temp literal) + (setq literal entry ; before evaluation + entry (if (consp diary-entry) + (cdr diary-entry) + diary-entry)) (if diary-entry - (progn + (progn (remove-overlays line-start (point) 'invisible 'diary) - (if (< 0 (length entry)) - (setq temp (diary-pull-attrs entry file-glob-attrs) - entry (nth 0 temp) - marks (nth 1 temp))))) - (add-to-diary-list date - entry - specifier - (if entry-start (copy-marker entry-start) - nil) - marks) - (setq entry-found (or entry-found diary-entry))))) + (if (< 0 (length entry)) + (setq temp (diary-pull-attrs entry file-glob-attrs) + entry (nth 0 temp) + marks (nth 1 temp))))) + (add-to-diary-list date + entry + specifier + (if entry-start (copy-marker entry-start) + nil) + marks + literal) + (setq entry-found (or entry-found diary-entry))))) entry-found)) (defun diary-sexp-entry (sexp entry date) @@ -1636,28 +1693,6 @@ marked on the calendar." (or (diary-remind sexp (car days) marking) (diary-remind sexp (cdr days) marking)))))) -(defvar diary-modify-entry-list-string-function nil - "Function applied to entry string before putting it into the entries list. -Can be used by programs integrating a diary list into other buffers (e.g. -org.el and planner.el) to modify the string or add properties to it. -The function takes a string argument and must return a string.") - -(defun add-to-diary-list (date string specifier &optional marker globcolor) - "Add the entry (DATE STRING SPECIFIER MARKER GLOBCOLOR) to `diary-entries-list'. -Do nothing if DATE or STRING is nil." - (when (and date string) - (if diary-file-name-prefix - (let ((prefix (funcall diary-file-name-prefix-function - (buffer-file-name)))) - (or (string= prefix "") - (setq string (format "[%s] %s" prefix string))))) - (and diary-modify-entry-list-string-function - (setq string (funcall diary-modify-entry-list-string-function - string))) - (setq diary-entries-list - (append diary-entries-list - (list (list date string specifier marker globcolor)))))) - (defun diary-redraw-calendar () "If `calendar-buffer' is live and diary entries are marked, redraw it." (and mark-diary-entries-in-calendar @@ -1796,36 +1831,86 @@ Prefix arg will make the entry nonmarking." (if diary-header-line-flag (setq header-line-format diary-header-line-format))) -(define-derived-mode fancy-diary-display-mode fundamental-mode - "Diary" - "Major mode used while displaying diary entries using Fancy Display." - (set (make-local-variable 'font-lock-defaults) - '(fancy-diary-font-lock-keywords t)) - (local-set-key "q" 'quit-window)) +(defvar diary-fancy-date-pattern + (concat + (let ((dayname (diary-name-pattern calendar-day-name-array nil t)) + (monthname (diary-name-pattern calendar-month-name-array nil t)) + (day "[0-9]+") + (month "[0-9]+") + (year "-?[0-9]+")) + (mapconcat 'eval calendar-date-display-form "")) + ;; Optional ": holiday name" after the date. + "\\(: .*\\)?") + "Regular expression matching a date header in Fancy Diary.") + +(defconst diary-time-regexp + ;; Accepted formats: 10:00 10.00 10h00 10h 10am 10:00am 10.00am + ;; Use of "." as a separator annoyingly matches numbers, eg "123.45". + ;; Hence often prefix this with "\\(^\\|\\s-\\)." + (concat "[0-9]?[0-9]\\([AaPp][mM]\\|\\(" + "[Hh]\\([0-9][0-9]\\)?\\|[:.][0-9][0-9]" + "\\)\\([AaPp][Mm]\\)?\\)") + "Regular expression matching a time of day.") + +(defface diary-anniversary '((t :inherit font-lock-keyword-face)) + "Face used for anniversaries in the diary." + :version "22.1" + :group 'diary) + +(defface diary-time '((t :inherit font-lock-variable-name-face)) + "Face used for times of day in the diary." + :version "22.1" + :group 'diary) (defvar fancy-diary-font-lock-keywords (list - (cons - (concat - (let ((dayname (diary-name-pattern calendar-day-name-array nil t)) - (monthname (diary-name-pattern calendar-month-name-array nil t)) - (day "[0-9]+") - (month "[0-9]+") - (year "-?[0-9]+")) - (mapconcat 'eval calendar-date-display-form "")) - "\\(\\(: .*\\)\\|\\(\n +.*\\)\\)*\n=+$") - 'diary-face) - '("^.*anniversary.*$" . font-lock-keyword-face) - '("^.*birthday.*$" . font-lock-keyword-face) + (list + ;; Any number of " other holiday name" lines, followed by "==" line. + (concat diary-fancy-date-pattern "\\(\n +.*\\)*\n=+$") + '(0 (progn (put-text-property (match-beginning 0) (match-end 0) + 'font-lock-multiline t) + diary-face))) + '("^.*\\([aA]nniversary\\|[bB]irthday\\).*$" . 'diary-anniversary) '("^.*Yahrzeit.*$" . font-lock-reference-face) '("^\\(Erev \\)?Rosh Hodesh.*" . font-lock-function-name-face) '("^Day.*omer.*$" . font-lock-builtin-face) '("^Parashat.*$" . font-lock-comment-face) - '("^[ \t]*[0-9]?[0-9]\\([:.]?[0-9][0-9]\\)?\\(am\\|pm\\|AM\\|PM\\)?\\(-[0-9]?[0-9]\\([:.]?[0-9][0-9]\\)?\\(am\\|pm\\|AM\\|PM\\)?\\)?" - . font-lock-variable-name-face)) + `(,(format "\\(^\\|\\s-\\)%s\\(-%s\\)?" diary-time-regexp + diary-time-regexp) . 'diary-time)) "Keywords to highlight in fancy diary display") +;; If region looks like it might start or end in the middle of a +;; multiline pattern, extend the region to encompass the whole pattern. +(defun diary-fancy-font-lock-fontify-region-function (beg end &optional verbose) + "Function to use for `font-lock-fontify-region-function' in Fancy Diary. +Needed to handle multiline keyword in `fancy-diary-font-lock-keywords'." + (goto-char beg) + (forward-line 0) + (if (looking-at "=+$") (forward-line -1)) + (while (and (looking-at " +[^ ]") + (zerop (forward-line -1)))) + ;; This check not essential. + (if (looking-at diary-fancy-date-pattern) + (setq beg (line-beginning-position))) + (goto-char end) + (forward-line 0) + (while (and (looking-at " +[^ ]") + (zerop (forward-line 1)))) + (if (looking-at "=+$") + (setq end (line-beginning-position 2))) + (font-lock-default-fontify-region beg end verbose)) + +(define-derived-mode fancy-diary-display-mode fundamental-mode + "Diary" + "Major mode used while displaying diary entries using Fancy Display." + (set (make-local-variable 'font-lock-defaults) + '(fancy-diary-font-lock-keywords + t nil nil nil + (font-lock-fontify-region-function + . diary-fancy-font-lock-fontify-region-function))) + (local-set-key "q" 'quit-window)) + (defun diary-font-lock-sexps (limit) "Recognize sexp diary entry for font-locking." @@ -1877,13 +1962,6 @@ names." (eval-when-compile (require 'cal-hebrew) (require 'cal-islam)) -(defconst diary-time-regexp - ;; Formats that should be accepted: - ;; 10:00 10.00 10h00 10h 10am 10:00am 10.00am - (concat "[0-9]?[0-9]\\([AaPp][mM]\\|\\(" - "[Hh]\\([0-9][0-9]\\)?\\|[:.][0-9][0-9]" - "\\)\\([AaPp][Mm]\\)?\\)")) - (defvar diary-font-lock-keywords (append (diary-font-lock-date-forms calendar-month-name-array @@ -1924,10 +2002,9 @@ names." "?\\(" (regexp-quote islamic-diary-entry-symbol) "\\)") '(1 font-lock-reference-face)) '(diary-font-lock-sexps . font-lock-keyword-face) - (cons - (concat ;; "^[ \t]+" - diary-time-regexp "\\(-" diary-time-regexp "\\)?") - 'font-lock-function-name-face))) + `(,(concat "\\(^\\|\\s-\\)" + diary-time-regexp "\\(-" diary-time-regexp "\\)?") + . 'diary-time))) "Forms to highlight in `diary-mode'.") From 45380d4259f266d79674c1586e7ff09a167c0b02 Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Fri, 19 May 2006 08:42:50 +0000 Subject: [PATCH 038/501] (add-to-diary-list): Fix typo in previous doc fix. --- lisp/calendar/diary-lib.el | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lisp/calendar/diary-lib.el b/lisp/calendar/diary-lib.el index 947de0f2136..95588fccd92 100644 --- a/lisp/calendar/diary-lib.el +++ b/lisp/calendar/diary-lib.el @@ -332,9 +332,9 @@ The function takes a string argument and must return a string.") Do nothing if DATE or STRING is nil. DATE is the (MONTH DAY YEAR) for which the entry applies; STRING is the text of the entry as it will appear in the diary (i.e. with any format -strings such as \%d\" expanded); SPECIFIER is the date part of +strings such as \"%d\" expanded); SPECIFIER is the date part of the entry as it appears in the diary-file; LITERAL is the entry -as it appears in the diary-file (i.e. before expansion). If +as it appears in the diary-file (i.e. before expansion). If LITERAL is nil, it is taken to be the same as STRING. The entry is added to the list as (DATE STRING SPECIFIER LOCATOR From 7b39356d19367ebfa56b5de3f466542c72124890 Mon Sep 17 00:00:00 2001 From: YAMAMOTO Mitsuharu Date: Fri, 19 May 2006 09:09:37 +0000 Subject: [PATCH 039/501] (mac-bytes-to-digits): Remove function. (mac-handle-toolbar-switch-mode): Use coercion instead of it. --- lisp/term/mac-win.el | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/lisp/term/mac-win.el b/lisp/term/mac-win.el index 6adbdd11274..77a1533ef9a 100644 --- a/lisp/term/mac-win.el +++ b/lisp/term/mac-win.el @@ -1585,17 +1585,6 @@ in `selection-converter-alist', which see." (ash (lsh result extended-sign-len) (- extended-sign-len)) result))) -(defun mac-bytes-to-digits (bytes &optional from to) - (or from (setq from 0)) - (or to (setq to (length bytes))) - (let ((len (- to from)) - (val 0.0)) - (dotimes (i len) - (setq val (+ (* val 256.0) - (aref bytes (+ from (if (eq (byteorder) ?B) i - (- len i 1))))))) - (format "%.0f" val))) - (defun mac-ae-selection-range (ae) ;; #pragma options align=mac68k ;; typedef struct SelectionRange { @@ -1693,7 +1682,8 @@ modifiers, it changes global tool-bar visibility setting." (if (and modifiers (not (string= modifiers "\000\000\000\000"))) ;; Globally toggle tool-bar-mode if some modifier key is pressed. (tool-bar-mode) - (let ((window-id (mac-bytes-to-digits (cdr (mac-ae-parameter ae)))) + (let ((window-id + (mac-coerce-ae-data "long" (cdr (mac-ae-parameter ae)) "TEXT")) (rest (frame-list)) frame) (while (and (null frame) rest) From 380bff67284e9162a6ba006cc4cbc5dbe2063641 Mon Sep 17 00:00:00 2001 From: YAMAMOTO Mitsuharu Date: Fri, 19 May 2006 09:10:48 +0000 Subject: [PATCH 040/501] (SOME_MACHINE_LISP): Add fringe.elc. --- mac/makefile.MPW | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mac/makefile.MPW b/mac/makefile.MPW index 4d0986ea60f..18866c2979d 100644 --- a/mac/makefile.MPW +++ b/mac/makefile.MPW @@ -1100,8 +1100,8 @@ SOME_MACHINE_LISP = {Lisp}mouse.elc {Lisp}w32-fns.elc {Lisp}dos-w32.elc {Lisp}disp-table.elc {Lisp}dos-vars.elc {Lisp}tooltip.elc {Lisp}image.elc - {Lisp}dnd.elc {Lisp}mwheel.elc - {Lisp}tool-bar.elc + {Lisp}fringe.elc {Lisp}dnd.elc + {Lisp}mwheel.elc {Lisp}tool-bar.elc {Lisp}x-dnd.elc {Lisp}international:ccl.elc {Lisp}international:codepage.elc From f3e86bf2b6d8eca30779881622b22285787f6262 Mon Sep 17 00:00:00 2001 From: YAMAMOTO Mitsuharu Date: Fri, 19 May 2006 09:11:14 +0000 Subject: [PATCH 041/501] (x_set_border_width): Remove #ifndef MAC_OS. --- src/frame.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/frame.c b/src/frame.c index 1c3a30c9e1c..6e2a1a21e55 100644 --- a/src/frame.c +++ b/src/frame.c @@ -3139,10 +3139,8 @@ x_set_border_width (f, arg, oldval) if (XINT (arg) == f->border_width) return; -#ifndef MAC_OS if (FRAME_X_WINDOW (f) != 0) error ("Cannot change the border width of a frame"); -#endif /* MAC_TODO */ f->border_width = XINT (arg); } From a73c40d183efae0ff48133a80b5fd50359aaeb11 Mon Sep 17 00:00:00 2001 From: YAMAMOTO Mitsuharu Date: Fri, 19 May 2006 09:11:30 +0000 Subject: [PATCH 042/501] (gif_load): Allocate Lisp string first. --- src/image.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/image.c b/src/image.c index f309a401139..c317418326f 100644 --- a/src/image.c +++ b/src/image.c @@ -8067,18 +8067,18 @@ gif_load (f, img) /* Save GIF image extension data for `image-extension-data'. Format is (count IMAGES 0xf9 GRAPHIC_CONTROL_EXTENSION_BLOCK). */ { - unsigned char gce[4]; + Lisp_Object gce = make_uninit_string (4); int centisec = ((float)duration / time_scale) * 100.0f + 0.5f; /* Fill the delay time field. */ - gce[1] = centisec & 0xff; - gce[2] = (centisec >> 8) & 0xff; + SSET (gce, 1, centisec & 0xff); + SSET (gce, 2, (centisec >> 8) & 0xff); /* We don't know about other fields. */ - gce[0] = gce[3] = 0; + SSET (gce, 0, 0); + SSET (gce, 3, 0); img->data.lisp_val = list4 (Qcount, make_number (nsamples), - make_number (0xf9), - make_unibyte_string (gce, 4)); + make_number (0xf9), gce); } /* Maybe fill in the background field while we have ximg handy. */ From 91c889526a413b94bce5b407beee2d2b3b9fb485 Mon Sep 17 00:00:00 2001 From: YAMAMOTO Mitsuharu Date: Fri, 19 May 2006 09:11:47 +0000 Subject: [PATCH 043/501] (Fx_focus_frame): Don't check dpyinfo->x_focus_frame. --- src/macfns.c | 24 ++++++++++-------------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/src/macfns.c b/src/macfns.c index 95356e5edf4..7b8c261f1f0 100644 --- a/src/macfns.c +++ b/src/macfns.c @@ -2829,26 +2829,22 @@ FRAME nil means use the selected frame. */) Lisp_Object frame; { struct frame *f = check_x_frame (frame); - struct mac_display_info *dpyinfo = FRAME_MAC_DISPLAY_INFO (f); - if (dpyinfo->x_focus_frame != f) - { - BLOCK_INPUT; + BLOCK_INPUT; #ifdef MAC_OSX - ActivateWindow (ActiveNonFloatingWindow (), false); - ActivateWindow (FRAME_MAC_WINDOW (f), true); + ActivateWindow (ActiveNonFloatingWindow (), false); + ActivateWindow (FRAME_MAC_WINDOW (f), true); #else #if !TARGET_API_MAC_CARBON - /* SelectWindow (Non-Carbon) does not issue deactivate events if - the possibly inactive window that is to be selected is - already the frontmost one. */ - SendBehind (FRAME_MAC_WINDOW (f), NULL); + /* SelectWindow (Non-Carbon) does not issue deactivate events if the + possibly inactive window that is to be selected is already the + frontmost one. */ + SendBehind (FRAME_MAC_WINDOW (f), NULL); #endif - /* This brings the window to the front. */ - SelectWindow (FRAME_MAC_WINDOW (f)); + /* This brings the window to the front. */ + SelectWindow (FRAME_MAC_WINDOW (f)); #endif - UNBLOCK_INPUT; - } + UNBLOCK_INPUT; return Qnil; } From 2abb0fde834c3ddd2ffb2187c4e661734fdf0e77 Mon Sep 17 00:00:00 2001 From: YAMAMOTO Mitsuharu Date: Fri, 19 May 2006 09:12:04 +0000 Subject: [PATCH 044/501] (XTread_socket) [TARGET_API_MAC_CARBON && MAC_OSX]: Forward keyUp events to toolbox_dispatcher. --- src/macterm.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/macterm.c b/src/macterm.c index 5ea083894a4..7b20e8b9427 100644 --- a/src/macterm.c +++ b/src/macterm.c @@ -10333,6 +10333,7 @@ XTread_socket (sd, expected, hold_quit) break; case keyDown: + case keyUp: case autoKey: { int keycode = (er.message & keyCodeMask) >> 8; @@ -10354,6 +10355,8 @@ XTread_socket (sd, expected, hold_quit) != eventNotHandledErr) break; #endif + if (er.what == keyUp) + break; #if 0 if (dpyinfo->x_focus_frame == NULL) From 76fb556f5255f6447bf855ad2925b17a85107e67 Mon Sep 17 00:00:00 2001 From: YAMAMOTO Mitsuharu Date: Fri, 19 May 2006 09:12:26 +0000 Subject: [PATCH 045/501] (foreach_window): Check WINDOWP (FRAME_ROOT_WINDOW (f)). --- src/window.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/window.c b/src/window.c index 2663b8d0d90..772ee18b08c 100644 --- a/src/window.c +++ b/src/window.c @@ -6796,7 +6796,9 @@ foreach_window (f, fn, user_data) int (* fn) P_ ((struct window *, void *)); void *user_data; { - foreach_window_1 (XWINDOW (FRAME_ROOT_WINDOW (f)), fn, user_data); + /* Fdelete_frame may set FRAME_ROOT_WINDOW (f) to Qnil. */ + if (WINDOWP (FRAME_ROOT_WINDOW (f))) + foreach_window_1 (XWINDOW (FRAME_ROOT_WINDOW (f)), fn, user_data); } From 689840b9224725a0beae741aaaa325d7edb2244c Mon Sep 17 00:00:00 2001 From: YAMAMOTO Mitsuharu Date: Fri, 19 May 2006 09:12:55 +0000 Subject: [PATCH 046/501] *** empty log message *** --- lisp/ChangeLog | 5 +++++ mac/ChangeLog | 4 ++++ src/ChangeLog | 13 +++++++++++++ 3 files changed, 22 insertions(+) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 3f351d5fbaa..7732edb6b24 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2006-05-19 YAMAMOTO Mitsuharu + + * term/mac-win.el (mac-bytes-to-digits): Remove function. + (mac-handle-toolbar-switch-mode): Use coercion instead of it. + 2006-05-19 Glenn Morris * calendar/diary-lib.el (diary-bahai-date) diff --git a/mac/ChangeLog b/mac/ChangeLog index 80e30045dda..a17f456ae6f 100644 --- a/mac/ChangeLog +++ b/mac/ChangeLog @@ -1,3 +1,7 @@ +2006-05-19 YAMAMOTO Mitsuharu + + * makefile.MPW (SOME_MACHINE_LISP): Add fringe.elc. + 2006-04-12 YAMAMOTO Mitsuharu * inc/config.h (pid_t): Define to int. diff --git a/src/ChangeLog b/src/ChangeLog index e0f844b284e..5acc6313bbb 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,16 @@ +2006-05-19 YAMAMOTO Mitsuharu + + * frame.c (x_set_border_width): Remove #ifndef MAC_OS. + + * image.c [MAC_OS] (gif_load): Allocate Lisp string first. + + * macfns.c (Fx_focus_frame): Don't check dpyinfo->x_focus_frame. + + * macterm.c (XTread_socket) [TARGET_API_MAC_CARBON && MAC_OSX]: + Forward keyUp events to toolbox_dispatcher. + + * window.c (foreach_window): Check WINDOWP (FRAME_ROOT_WINDOW (f)). + 2006-05-18 Jan Dj,Ad(Brv * config.in: Regenerated (HAVE_ALSA). From e00b99c8180dc354a8f053cefe515214274b676e Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Fri, 19 May 2006 19:05:07 +0000 Subject: [PATCH 047/501] (init_environment): Perform the processing of environment variables on a copy of default variables and their values, not on the original. --- src/ChangeLog | 6 ++++++ src/w32.c | 19 +++++++++++++++---- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index 5acc6313bbb..621e2632982 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,9 @@ +2006-05-19 Eli Zaretskii + + * w32.c (init_environment): Perform the processing of environment + variables on a copy of default variables and their values, not on + the original. + 2006-05-19 YAMAMOTO Mitsuharu * frame.c (x_set_border_width): Remove #ifndef MAC_OS. diff --git a/src/w32.c b/src/w32.c index 71799befdbb..30474b842d8 100644 --- a/src/w32.c +++ b/src/w32.c @@ -950,11 +950,11 @@ init_environment (char ** argv) struct stat ignored; char default_home[MAX_PATH]; - static struct env_entry + static const struct env_entry { char * name; char * def_value; - } env_vars[] = + } dflt_envvars[] = { {"HOME", "C:/"}, {"PRELOAD_WINSOCK", NULL}, @@ -971,6 +971,17 @@ init_environment (char ** argv) {"LANG", NULL}, }; +#define N_ENV_VARS sizeof(dflt_envvars)/sizeof(dflt_envvars[0]) + + /* We need to copy dflt_envvars[] and work on the copy because we + don't want the dumped Emacs to inherit the values of + environment variables we saw during dumping (which could be on + a different system). The defaults above must be left intact. */ + struct env_entry env_vars[N_ENV_VARS]; + + for (i = 0; i < N_ENV_VARS; i++) + env_vars[i] = dflt_envvars[i]; + /* For backwards compatibility, check if a .emacs file exists in C:/ If not, then we can try to default to the appdata directory under the user's profile, which is more likely to be writable. */ @@ -1005,7 +1016,7 @@ init_environment (char ** argv) LOCALE_SABBREVLANGNAME | LOCALE_USE_CP_ACP, locale_name, sizeof (locale_name))) { - for (i = 0; i < (sizeof (env_vars) / sizeof (env_vars[0])); i++) + for (i = 0; i < N_ENV_VARS; i++) { if (strcmp (env_vars[i].name, "LANG") == 0) { @@ -1069,7 +1080,7 @@ init_environment (char ** argv) } } - for (i = 0; i < (sizeof (env_vars) / sizeof (env_vars[0])); i++) + for (i = 0; i < N_ENV_VARS; i++) { if (!getenv (env_vars[i].name)) { From 892eb2370135a8c5985ffe06d3f22fb334381965 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Fri, 19 May 2006 19:29:36 +0000 Subject: [PATCH 048/501] (init_environment): Simplify code that calls ExpandEnvironmentStrings and make buf1[] and buf2[] more visible for easier debugging. --- src/w32.c | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/src/w32.c b/src/w32.c index 30474b842d8..f11ffb7a785 100644 --- a/src/w32.c +++ b/src/w32.c @@ -1095,20 +1095,17 @@ init_environment (char ** argv) if (lpval) { + char buf1[SET_ENV_BUF_SIZE], buf2[SET_ENV_BUF_SIZE]; + if (dwType == REG_EXPAND_SZ) - { - char buf1[SET_ENV_BUF_SIZE], buf2[SET_ENV_BUF_SIZE]; - - ExpandEnvironmentStrings ((LPSTR) lpval, buf1, sizeof(buf1)); - _snprintf (buf2, sizeof(buf2)-1, "%s=%s", env_vars[i].name, buf1); - _putenv (strdup (buf2)); - } + ExpandEnvironmentStrings ((LPSTR) lpval, buf1, sizeof(buf1)); else if (dwType == REG_SZ) + strcpy (buf1, lpval); + if (dwType == REG_EXPAND_SZ || dwType == REG_SZ) { - char buf[SET_ENV_BUF_SIZE]; - - _snprintf (buf, sizeof(buf)-1, "%s=%s", env_vars[i].name, lpval); - _putenv (strdup (buf)); + _snprintf (buf2, sizeof(buf2)-1, "%s=%s", env_vars[i].name, + buf1); + _putenv (strdup (buf2)); } if (!dont_free) From 5345f90dfa6444f1dd5428492d0133db97baec75 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Fri, 19 May 2006 19:47:14 +0000 Subject: [PATCH 049/501] (Simple Match Data): Warn about match data being set anew by every search. --- lispref/searching.texi | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lispref/searching.texi b/lispref/searching.texi index 505122fdd16..e93cee42a3b 100644 --- a/lispref/searching.texi +++ b/lispref/searching.texi @@ -1264,6 +1264,12 @@ subexpression is numbered 1, the second 2, and so on. Only regular expressions can have subexpressions---after a simple string search, the only information available is about the entire match. + Every successful search sets the match data. Therefore, you should +query the match data immediately after searching, before calling any +other function that might perform another search. Alternatively, you +may save and restore the match data (@pxref{Saving Match Data}) around +the call to functions that could perform another search. + A search which fails may or may not alter the match data. In the past, a failing search did not do this, but we may change it in the future. So don't try to rely on the value of the match data after From 74456292cede7bb245b53e58abf6aaf763f85695 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Fri, 19 May 2006 19:50:50 +0000 Subject: [PATCH 050/501] (c-style-alist): Doc fix. --- lisp/progmodes/cc-styles.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/progmodes/cc-styles.el b/lisp/progmodes/cc-styles.el index 6f623623535..c2b9b435e4c 100644 --- a/lisp/progmodes/cc-styles.el +++ b/lisp/progmodes/cc-styles.el @@ -264,7 +264,7 @@ element of the list is added with `add-hook'. Do not change this variable directly. Use the function `c-add-style' to add new styles or modify existing styles (it is not a good idea to modify existing styles -- you should create a new style that inherits -the existing style.") +the existing style).") ;; Functions that manipulate styles From 75e3b95755421ebf5f55d3288e522161903976f7 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Fri, 19 May 2006 19:51:35 +0000 Subject: [PATCH 051/501] *** empty log message *** --- lisp/ChangeLog | 4 ++++ lispref/ChangeLog | 5 +++++ src/ChangeLog | 3 ++- 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 7732edb6b24..c8054a5dd76 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,7 @@ +2006-05-19 Eli Zaretskii + + * progmodes/cc-styles.el (c-style-alist): Doc fix. + 2006-05-19 YAMAMOTO Mitsuharu * term/mac-win.el (mac-bytes-to-digits): Remove function. diff --git a/lispref/ChangeLog b/lispref/ChangeLog index 39bf92c54d1..ad91c194743 100644 --- a/lispref/ChangeLog +++ b/lispref/ChangeLog @@ -1,3 +1,8 @@ +2006-05-19 Michael Ernst (tiny change) + + * searching.texi (Simple Match Data): Warn about match data being + set anew by every search. + 2006-05-17 Richard Stallman * minibuf.texi (Minibuffer History): Clarify. diff --git a/src/ChangeLog b/src/ChangeLog index 621e2632982..b2f6e402c0d 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -2,7 +2,8 @@ * w32.c (init_environment): Perform the processing of environment variables on a copy of default variables and their values, not on - the original. + the original. Simplify code that calls ExpandEnvironmentStrings + and make buf1[] and buf2[] more visible for easier debugging. 2006-05-19 YAMAMOTO Mitsuharu From 978dfc3f3b3538933336d971de090c7c4e5992a3 Mon Sep 17 00:00:00 2001 From: Luc Teirlinck Date: Fri, 19 May 2006 22:00:15 +0000 Subject: [PATCH 052/501] (GPL): ifinfo -> ifnottex. --- lispref/gpl.texi | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/lispref/gpl.texi b/lispref/gpl.texi index efd43cdefcf..d3ffb26719b 100644 --- a/lispref/gpl.texi +++ b/lispref/gpl.texi @@ -67,9 +67,9 @@ modification follow. @iftex @unnumberedsec Terms and Conditions for Copying, Distribution and Modification @end iftex -@ifinfo +@ifnottex @center TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION -@end ifinfo +@end ifnottex @enumerate 0 @item @@ -292,9 +292,9 @@ of promoting the sharing and reuse of software generally. @iftex @heading NO WARRANTY @end iftex -@ifinfo +@ifnottex @center NO WARRANTY -@end ifinfo +@end ifnottex @item BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY @@ -322,9 +322,9 @@ POSSIBILITY OF SUCH DAMAGES. @iftex @heading END OF TERMS AND CONDITIONS @end iftex -@ifinfo +@ifnottex @center END OF TERMS AND CONDITIONS -@end ifinfo +@end ifnottex @page @unnumberedsec How to Apply These Terms to Your New Programs From 9300b3108a342d1763e4d151fe426776ce77d534 Mon Sep 17 00:00:00 2001 From: Luc Teirlinck Date: Fri, 19 May 2006 22:23:14 +0000 Subject: [PATCH 053/501] *** empty log message *** --- lispref/ChangeLog | 4 ++++ man/ChangeLog | 14 ++++++++++++++ 2 files changed, 18 insertions(+) diff --git a/lispref/ChangeLog b/lispref/ChangeLog index ad91c194743..3f531262e3c 100644 --- a/lispref/ChangeLog +++ b/lispref/ChangeLog @@ -1,3 +1,7 @@ +2006-05-19 Luc Teirlinck + + * gpl.texi (GPL): ifinfo -> ifnottex. + 2006-05-19 Michael Ernst (tiny change) * searching.texi (Simple Match Data): Warn about match data being diff --git a/man/ChangeLog b/man/ChangeLog index 1f716090c73..a89b6bc785b 100644 --- a/man/ChangeLog +++ b/man/ChangeLog @@ -1,3 +1,17 @@ +2006-05-19 Luc Teirlinck + + * trouble.texi (Checklist): + * text.texi (Text, Auto Fill, Text Mode): + * search.texi (Nonincremental Search): + * rmail.texi (Rmail Labels): + * mule.texi (Input Methods, Multibyte Conversion): + * misc.texi (Gnus, Where to Look, PostScript): + * maintaining.texi (Create Tags Table): + * indent.texi (Indentation Commands): + * fixit.texi (Spelling): + * emacs.texi (Copying): + * custom.texi (Init File): ifinfo -> ifnottex. + 2006-05-18 Reiner Steib * gnus.texi (Saving Articles): Clarify gnus-summary-save-article-mail. From bd9e44e786a5637796cd64a55c8c6f4134bf06a5 Mon Sep 17 00:00:00 2001 From: Luc Teirlinck Date: Fri, 19 May 2006 22:26:44 +0000 Subject: [PATCH 054/501] Whitespace change. --- man/ChangeLog | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/man/ChangeLog b/man/ChangeLog index a89b6bc785b..1646a94e603 100644 --- a/man/ChangeLog +++ b/man/ChangeLog @@ -1,16 +1,16 @@ 2006-05-19 Luc Teirlinck - * trouble.texi (Checklist): - * text.texi (Text, Auto Fill, Text Mode): - * search.texi (Nonincremental Search): - * rmail.texi (Rmail Labels): - * mule.texi (Input Methods, Multibyte Conversion): - * misc.texi (Gnus, Where to Look, PostScript): - * maintaining.texi (Create Tags Table): - * indent.texi (Indentation Commands): - * fixit.texi (Spelling): - * emacs.texi (Copying): - * custom.texi (Init File): ifinfo -> ifnottex. + * trouble.texi (Checklist): + * text.texi (Text, Auto Fill, Text Mode): + * search.texi (Nonincremental Search): + * rmail.texi (Rmail Labels): + * mule.texi (Input Methods, Multibyte Conversion): + * misc.texi (Gnus, Where to Look, PostScript): + * maintaining.texi (Create Tags Table): + * indent.texi (Indentation Commands): + * fixit.texi (Spelling): + * emacs.texi (Copying): + * custom.texi (Init File): ifinfo -> ifnottex. 2006-05-18 Reiner Steib @@ -48,8 +48,8 @@ 2006-05-12 Eli Zaretskii * calendar.texi (Calendar/Diary, Holidays, Displaying the Diary) - (Displaying the Diary, Special Diary Entries, Importing Diary): - * building.texi (Compilation Shell): + (Displaying the Diary, Special Diary Entries, Importing Diary): + * building.texi (Compilation Shell): * buffers.texi (Several Buffers) [iftex]: Replace @xref's to emacs-xtra with @inforef's. From d70afed477c1d1a33ea23a758a940f9b143a6737 Mon Sep 17 00:00:00 2001 From: Luc Teirlinck Date: Fri, 19 May 2006 22:35:11 +0000 Subject: [PATCH 055/501] (Init File): ifinfo -> ifnottex. --- man/custom.texi | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/man/custom.texi b/man/custom.texi index 78a51716031..fc9fb51c0d6 100644 --- a/man/custom.texi +++ b/man/custom.texi @@ -2111,10 +2111,10 @@ for more information about compiling Emacs Lisp programs. If you are going to write actual Emacs Lisp programs that go beyond minor customization, you should read the @cite{Emacs Lisp Reference Manual}. -@ifinfo +@ifnottex @xref{Top, Emacs Lisp, Emacs Lisp, elisp, the Emacs Lisp Reference Manual}. -@end ifinfo +@end ifnottex @menu * Init Syntax:: Syntax of constants in Emacs Lisp. From 00ea6f3da97e16bec3577aa3d943cb735f233d36 Mon Sep 17 00:00:00 2001 From: Luc Teirlinck Date: Fri, 19 May 2006 22:39:56 +0000 Subject: [PATCH 056/501] (Copying): ifinfo -> ifnottex. --- man/emacs.texi | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/man/emacs.texi b/man/emacs.texi index 94ec0cc52a6..fe95b74e759 100644 --- a/man/emacs.texi +++ b/man/emacs.texi @@ -1227,9 +1227,9 @@ modification follow. @iftex @unnumberedsec TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION @end iftex -@ifinfo +@ifnottex @center TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION -@end ifinfo +@end ifnottex @enumerate 0 @item @@ -1452,9 +1452,9 @@ of promoting the sharing and reuse of software generally. @iftex @heading NO WARRANTY @end iftex -@ifinfo +@ifnottex @center NO WARRANTY -@end ifinfo +@end ifnottex @item BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY @@ -1482,9 +1482,9 @@ POSSIBILITY OF SUCH DAMAGES. @iftex @heading END OF TERMS AND CONDITIONS @end iftex -@ifinfo +@ifnottex @center END OF TERMS AND CONDITIONS -@end ifinfo +@end ifnottex @page @unnumberedsec How to Apply These Terms to Your New Programs From 8107bc04e0f2dd7cd7266c8547b8bf74744d413d Mon Sep 17 00:00:00 2001 From: Luc Teirlinck Date: Fri, 19 May 2006 22:42:17 +0000 Subject: [PATCH 057/501] (Spelling): ifinfo -> ifnottex. --- man/fixit.texi | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/man/fixit.texi b/man/fixit.texi index fed37ce9705..1d7c1b6eb41 100644 --- a/man/fixit.texi +++ b/man/fixit.texi @@ -267,9 +267,9 @@ case-convert it and go on typing. @xref{Case}.@refill This section describes the commands to check the spelling of a single word or of a portion of a buffer. These commands work with the spelling checker programs Aspell and Ispell, which are not part of Emacs. -@ifinfo +@ifnottex @xref{Top, Aspell,, aspell, The Aspell Manual}. -@end ifinfo +@end ifnottex @table @kbd @item M-x flyspell-mode From 2984897411ae968a45f1abd4f02fe82c3c1cb613 Mon Sep 17 00:00:00 2001 From: Luc Teirlinck Date: Fri, 19 May 2006 22:44:02 +0000 Subject: [PATCH 058/501] (Indentation Commands): ifinfo -> ifnottex. --- man/indent.texi | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/man/indent.texi b/man/indent.texi index 319244bface..d5c69daa192 100644 --- a/man/indent.texi +++ b/man/indent.texi @@ -154,9 +154,9 @@ point, until it is underneath the next indentation point in the previous line. An indentation point is the end of a sequence of whitespace or the end of the line. If point is farther right than any indentation point in the previous line, @code{indent-relative} runs @code{tab-to-tab-stop} -@ifinfo +@ifnottex (@pxref{Tab Stops}), -@end ifinfo +@end ifnottex @iftex (see next section), @end iftex From af566730fc8a61c2a73fce92d78e670b6082d853 Mon Sep 17 00:00:00 2001 From: Luc Teirlinck Date: Fri, 19 May 2006 22:46:09 +0000 Subject: [PATCH 059/501] (Create Tags Table): ifinfo -> ifnottex. --- man/maintaining.texi | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/man/maintaining.texi b/man/maintaining.texi index 1307ce6a229..42af2f93aeb 100644 --- a/man/maintaining.texi +++ b/man/maintaining.texi @@ -355,9 +355,9 @@ the syntax of several languages, as described in @iftex the previous section. @end iftex -@ifinfo +@ifnottex @ref{Tag Syntax}. -@end ifinfo +@end ifnottex Here is how to run @code{etags}: @example From d3ea5f55e00ef4be14e9e00454d9f7aece296e4a Mon Sep 17 00:00:00 2001 From: Luc Teirlinck Date: Fri, 19 May 2006 22:49:16 +0000 Subject: [PATCH 060/501] (Gnus, Where to Look, PostScript): ifinfo -> ifnottex. --- man/misc.texi | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/man/misc.texi b/man/misc.texi index 9e5d2835e20..b8c3c133a60 100644 --- a/man/misc.texi +++ b/man/misc.texi @@ -30,9 +30,9 @@ Usenet news. It can also be used to read and respond to messages from a number of other sources---mail, remote directories, digests, and so on. Here we introduce Gnus and describe several basic features. -@ifinfo +@ifnottex For full details, see @ref{Top, Gnus,, gnus, The Gnus Manual}. -@end ifinfo +@end ifnottex @iftex For full details on Gnus, type @kbd{M-x info} and then select the Gnus manual. @@ -238,10 +238,10 @@ for @var{regexp}. @c Too many references to the name of the manual if done with xref in TeX! Gnus is powerful and customizable. Here are references to a few -@ifinfo +@ifnottex additional topics: -@end ifinfo +@end ifnottex @iftex additional topics in @cite{The Gnus Manual}: @@ -274,7 +274,7 @@ Send an article to a newsgroup.@* See section ``Composing Messages.'' @end itemize @end iftex -@ifinfo +@ifnottex @itemize @bullet @item Follow discussions on specific topics.@* @@ -304,7 +304,7 @@ name, subject, or string in the body of the articles.@* Send an article to a newsgroup.@* @xref{Composing Messages, , , gnus, The Gnus Manual}. @end itemize -@end ifinfo +@end ifnottex @end ignore @node Shell, Emacs Server, Gnus, Top @@ -1503,9 +1503,9 @@ rendition of the current buffer as a cursive handwritten document. It can be customized in group @code{handwrite}. This function only supports ISO 8859-1 characters. -@ifinfo +@ifnottex The following section describes variables for customizing these commands. -@end ifinfo +@end ifnottex @node PostScript Variables, Printing Package, PostScript, Printing @section Variables for PostScript Hardcopy From 200a0063f742814bb192e1036866dc2b691f0663 Mon Sep 17 00:00:00 2001 From: Luc Teirlinck Date: Fri, 19 May 2006 22:51:45 +0000 Subject: [PATCH 061/501] (Input Methods, Multibyte Conversion): ifinfo -> ifnottex. --- man/mule.texi | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/man/mule.texi b/man/mule.texi index e2dd270c772..b4076dde031 100644 --- a/man/mule.texi +++ b/man/mule.texi @@ -429,9 +429,9 @@ immediately delete it. For example, you could type @kbd{e e @key{DEL} Another method, more general but not quite as easy to type, is to use @kbd{C-\ C-\} between two characters to stop them from combining. This is the command @kbd{C-\} (@code{toggle-input-method}) used twice. -@ifinfo +@ifnottex @xref{Select Input Method}. -@end ifinfo +@end ifnottex @cindex incremental search, input method interference @kbd{C-\ C-\} is especially useful inside an incremental search, @@ -563,9 +563,9 @@ through your choice of language environment @iftex (see above). @end iftex -@ifinfo +@ifnottex (@pxref{Language Environments}). -@end ifinfo +@end ifnottex If you do not specify a choice, the default is Latin-1. If you insert a character in the range 0200 through 0237, which From 4714476b2b37f484c326f7ec29aa1d3cb9743554 Mon Sep 17 00:00:00 2001 From: Luc Teirlinck Date: Fri, 19 May 2006 22:54:03 +0000 Subject: [PATCH 062/501] (Rmail Labels): ifinfo -> ifnottex. --- man/rmail.texi | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/man/rmail.texi b/man/rmail.texi index 3ad50ff3b71..5c6c2e5011b 100644 --- a/man/rmail.texi +++ b/man/rmail.texi @@ -550,9 +550,9 @@ labels. Any given label is either present or absent on a particular message. A few label names have standard meanings and are given to messages automatically by Rmail when appropriate; these special labels are called @dfn{attributes}. -@ifinfo +@ifnottex (@xref{Rmail Attributes}.) -@end ifinfo +@end ifnottex All other labels are assigned only by users. @table @kbd From e0866401688faa5486832ca1c1eceb8b3032b56f Mon Sep 17 00:00:00 2001 From: Luc Teirlinck Date: Fri, 19 May 2006 22:56:16 +0000 Subject: [PATCH 063/501] (Nonincremental Search): ifinfo -> ifnottex. --- man/search.texi | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/man/search.texi b/man/search.texi index 4ea3053dea7..88c31d5fc0b 100644 --- a/man/search.texi +++ b/man/search.texi @@ -372,9 +372,9 @@ specify is empty. (Such an empty argument would otherwise be useless.) But it does not call @code{search-forward} right away. First it checks the next input character to see if is @kbd{C-w}, which specifies a word search. -@ifinfo +@ifnottex @xref{Word Search}. -@end ifinfo +@end ifnottex @kbd{C-r @key{RET}} does likewise, for a reverse incremental search. @findex search-forward From 4b45d5d190b96995166847ee1057e92439530631 Mon Sep 17 00:00:00 2001 From: Luc Teirlinck Date: Fri, 19 May 2006 22:59:21 +0000 Subject: [PATCH 064/501] (Text, Auto Fill, Text Mode): ifinfo -> ifnottex. --- man/text.texi | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/man/text.texi b/man/text.texi index f9b1d312453..3660901a83d 100644 --- a/man/text.texi +++ b/man/text.texi @@ -39,9 +39,9 @@ input to @TeX{}, you would use @TeX{} @iftex mode (@pxref{TeX Mode}). @end iftex -@ifinfo +@ifnottex mode. -@end ifinfo +@end ifnottex For input to groff or nroff, use Nroff mode. Instead of using a text formatter, you can edit formatted text in @@ -473,9 +473,9 @@ automatically from the second or first line of a paragraph. cannot merge lines. So editing in the middle of a paragraph can result in a paragraph that is not correctly filled. The easiest way to make the paragraph properly filled again is usually with the explicit fill commands. -@ifinfo +@ifnottex @xref{Fill Commands}. -@end ifinfo +@end ifnottex Many users like Auto Fill mode and want to use it in all text files. The section on init files says how to arrange this permanently for yourself. @@ -934,7 +934,7 @@ mode, Outline mode, and Mail mode. Hook functions on @code{text-mode-hook} can look at the value of @code{major-mode} to see which of these modes is actually being entered. @xref{Hooks}. -@ifinfo +@ifnottex Emacs provides two other modes for editing text that is to be passed through a text formatter to produce fancy formatted printed output. @xref{Nroff Mode}, for editing input to the formatter nroff. @@ -945,7 +945,7 @@ text at various levels of detail. You can view either the outline headings alone or both headings and text; you can also hide some of the headings at lower levels from view to make the high level structure more visible. @xref{Outline Mode}. -@end ifinfo +@end ifnottex @node Outline Mode @section Outline Mode From 62fe831c80bf076614e1507e6d3b059b91ff82c0 Mon Sep 17 00:00:00 2001 From: Luc Teirlinck Date: Fri, 19 May 2006 23:01:04 +0000 Subject: [PATCH 065/501] (Checklist): ifinfo -> ifnottex. --- man/trouble.texi | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/man/trouble.texi b/man/trouble.texi index 9e09dac4d43..a462c2468b7 100644 --- a/man/trouble.texi +++ b/man/trouble.texi @@ -890,10 +890,10 @@ understand it at all. And if we can't understand what bug you are trying to fix, or why your patch should be an improvement, we mustn't install it. -@ifinfo +@ifnottex @xref{Sending Patches}, for guidelines on how to make it easy for us to understand and install your patches. -@end ifinfo +@end ifnottex @item A guess about what the bug is or what it depends on. From 86735b2d72495b556bc60d534bdedb4e16350ae1 Mon Sep 17 00:00:00 2001 From: Luc Teirlinck Date: Sat, 20 May 2006 02:27:30 +0000 Subject: [PATCH 066/501] *** empty log message *** --- lispref/ChangeLog | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lispref/ChangeLog b/lispref/ChangeLog index 3f531262e3c..5399bdf91c7 100644 --- a/lispref/ChangeLog +++ b/lispref/ChangeLog @@ -1,5 +1,7 @@ 2006-05-19 Luc Teirlinck + * hooks.texi (Standard Hooks): Correct typo. + * gpl.texi (GPL): ifinfo -> ifnottex. 2006-05-19 Michael Ernst (tiny change) From cf1c2307d3ff4121863a421df546fff8ba82dc00 Mon Sep 17 00:00:00 2001 From: Luc Teirlinck Date: Sat, 20 May 2006 02:28:50 +0000 Subject: [PATCH 067/501] (Standard Hooks): Correct typo. --- lispref/hooks.texi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lispref/hooks.texi b/lispref/hooks.texi index 410e975ad57..842211d6be5 100644 --- a/lispref/hooks.texi +++ b/lispref/hooks.texi @@ -305,7 +305,7 @@ Manual}. @item today-invisible-calendar-hook @iftex -@infref{Calendar Customizing,, emacs-xtra}. +@inforef{Calendar Customizing,, emacs-xtra}. @end iftex @ifnottex @xref{Calendar Customizing,,, emacs}. From 01aa8c41f37a23b2149f5e86b6f6b7d3261d6ca2 Mon Sep 17 00:00:00 2001 From: YAMAMOTO Mitsuharu Date: Sat, 20 May 2006 04:28:48 +0000 Subject: [PATCH 068/501] (dnd-handle-one-url): Change 3rd arg ARG to URL. Don't unescape URL. (dnd-get-local-file-name): Unescape URL on conversion to file name. Specify LITERAL in replace-regexp-in-string. --- lisp/dnd.el | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/lisp/dnd.el b/lisp/dnd.el index dec57481570..85881b3261f 100644 --- a/lisp/dnd.el +++ b/lisp/dnd.el @@ -69,39 +69,34 @@ if some action was made, or nil if the URL is ignored." ;; Functions -(defun dnd-handle-one-url (window action arg) +(defun dnd-handle-one-url (window action url) "Handle one dropped url by calling the appropriate handler. The handler is first located by looking at `dnd-protocol-alist'. If no match is found here, and the value of `browse-url-browser-function' is a pair of (REGEXP . FUNCTION), those regexps are tried for a match. If no match is found, just call `dnd-insert-text'. WINDOW is where the drop happend, ACTION is the action for the drop, -ARG is the URL that has been dropped. +URL is what has been dropped. Returns ACTION." (require 'browse-url) - (let* ((uri (replace-regexp-in-string - "%[A-Z0-9][A-Z0-9]" - (lambda (arg) - (format "%c" (string-to-number (substring arg 1) 16))) - arg)) - ret) + (let (ret) (or (catch 'done (dolist (bf dnd-protocol-alist) - (when (string-match (car bf) uri) - (setq ret (funcall (cdr bf) uri action)) + (when (string-match (car bf) url) + (setq ret (funcall (cdr bf) url action)) (throw 'done t))) nil) (when (not (functionp browse-url-browser-function)) (catch 'done (dolist (bf browse-url-browser-function) - (when (string-match (car bf) uri) + (when (string-match (car bf) url) (setq ret 'private) - (funcall (cdr bf) uri action) + (funcall (cdr bf) url action) (throw 'done t))) nil)) (progn - (dnd-insert-text window action uri) + (dnd-insert-text window action url) (setq ret 'private))) ret)) @@ -134,6 +129,11 @@ Return nil if URI is not a local file." ((string-match "^file:" uri) ; Old KDE, Motif, Sun (substring uri (match-end 0)))))) (when (and f must-exist) + (setq f (replace-regexp-in-string + "%[A-Z0-9][A-Z0-9]" + (lambda (arg) + (format "%c" (string-to-number (substring arg 1) 16))) + f nil t)) (let* ((decoded-f (decode-coding-string f (or file-name-coding-system From f9be433c82c1c0bb8903dbd180b599c292557eee Mon Sep 17 00:00:00 2001 From: YAMAMOTO Mitsuharu Date: Sat, 20 May 2006 04:29:18 +0000 Subject: [PATCH 069/501] (x-dnd-handle-file-name): Encode and escape file names on conversion to URLs. --- lisp/x-dnd.el | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/lisp/x-dnd.el b/lisp/x-dnd.el index a5b6d409b87..693a2d7fa4b 100644 --- a/lisp/x-dnd.el +++ b/lisp/x-dnd.el @@ -256,14 +256,20 @@ STRING is the uri-list as a string. The URIs are separated by \r\n." retval)) (defun x-dnd-handle-file-name (window action string) - "Prepend file:// to file names and call `dnd-handle-one-url'. + "Convert file names to URLs and call `dnd-handle-one-url'. WINDOW is the window where the drop happened. STRING is the file names as a string, separated by nulls." (let ((uri-list (split-string string "[\0\r\n]" t)) + (coding (and default-enable-multibyte-characters + (or file-name-coding-system + default-file-name-coding-system))) retval) (dolist (bf uri-list) ;; If one URL is handeled, treat as if the whole drop succeeded. - (let* ((file-uri (concat "file://" bf)) + (if coding (setq bf (encode-coding-string bf coding))) + (let* ((file-uri (concat "file://" + (mapconcat 'url-hexify-string + (split-string bf "/") "/"))) (did-action (dnd-handle-one-url window action file-uri))) (when did-action (setq retval did-action)))) retval)) From 59b715013ed28cc0280fdca151ee750e4f7534c3 Mon Sep 17 00:00:00 2001 From: YAMAMOTO Mitsuharu Date: Sat, 20 May 2006 04:29:38 +0000 Subject: [PATCH 070/501] (browse-url-file-url): Encode file name on conversion to URL. --- lisp/net/browse-url.el | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lisp/net/browse-url.el b/lisp/net/browse-url.el index 101b9cf210d..3f514a2aaab 100644 --- a/lisp/net/browse-url.el +++ b/lisp/net/browse-url.el @@ -680,6 +680,10 @@ interactively. Turn the filename into a URL with function (defun browse-url-file-url (file) "Return the URL corresponding to FILE. Use variable `browse-url-filename-alist' to map filenames to URLs." + (let ((coding (and default-enable-multibyte-characters + (or file-name-coding-system + default-file-name-coding-system)))) + (if coding (setq file (encode-coding-string file coding)))) ;; URL-encode special chars, do % first (let ((s 0)) (while (setq s (string-match "%" file s)) From fc0a69d1e762adeabe1dbed048d914817dce1ebe Mon Sep 17 00:00:00 2001 From: YAMAMOTO Mitsuharu Date: Sat, 20 May 2006 04:30:07 +0000 Subject: [PATCH 071/501] (mac-ae-open-documents): Escape file name on conversion to URL. --- lisp/term/mac-win.el | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lisp/term/mac-win.el b/lisp/term/mac-win.el index 77a1533ef9a..8eb8e6a0460 100644 --- a/lisp/term/mac-win.el +++ b/lisp/term/mac-win.el @@ -1616,7 +1616,10 @@ in `selection-converter-alist', which see." (let ((ae (mac-event-ae event))) (dolist (file-name (mac-ae-list ae nil 'undecoded-file-name)) (if file-name - (dnd-open-local-file (concat "file:" file-name) nil))) + (dnd-open-local-file + (concat "file://" + (mapconcat 'url-hexify-string + (split-string file-name "/") "/")) nil))) (let ((selection-range (mac-ae-selection-range ae)) (search-text (mac-ae-text-for-search ae))) (cond (selection-range From 0cd80dfa3f00fdba0ef49edbaf2d512819e464c8 Mon Sep 17 00:00:00 2001 From: YAMAMOTO Mitsuharu Date: Sat, 20 May 2006 04:31:17 +0000 Subject: [PATCH 072/501] (w32-drag-n-drop): Substitute '/' for '\', encode, and escape file name on conversion to URL. --- lisp/ChangeLog | 23 +++++++++++++++++++++++ lisp/term/w32-win.el | 8 ++++++++ 2 files changed, 31 insertions(+) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index c8054a5dd76..9d589c693a0 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,26 @@ +2006-05-20 Masayuki FUJII (tiny change) + + * dnd.el (dnd-get-local-file-name): Specify LITERAL in + replace-regexp-in-string. + + * term/w32-win.el (w32-drag-n-drop): Substitute '/' for '\', + encode, and escape file name on conversion to URL. + +2006-05-20 YAMAMOTO Mitsuharu + + * dnd.el (dnd-handle-one-url): Change 3rd arg ARG to URL. Don't + unescape URL. + (dnd-get-local-file-name): Unescape URL on conversion to file name. + + * x-dnd.el (x-dnd-handle-file-name): Encode and escape file names + on conversion to URLs. + + * net/browse-url.el (browse-url-file-url): Encode file name on + conversion to URL. + + * term/mac-win.el (mac-ae-open-documents): Escape file name on + conversion to URL. + 2006-05-19 Eli Zaretskii * progmodes/cc-styles.el (c-style-alist): Doc fix. diff --git a/lisp/term/w32-win.el b/lisp/term/w32-win.el index 3987ad66f6a..31a794eeaa1 100644 --- a/lisp/term/w32-win.el +++ b/lisp/term/w32-win.el @@ -112,6 +112,14 @@ Switch to a buffer editing the last file dropped." (if (and (> x 0) (> y 0)) (set-frame-selected-window nil window)) (mapcar (lambda (file-name) + (let ((f (subst-char-in-string ?\\ ?/ file-name)) + (coding (or file-name-coding-system + default-file-name-coding-system))) + (setq file-name + (mapconcat 'url-hexify-string + (split-string (encode-coding-string f coding) + "/") + "/"))) (dnd-handle-one-url window 'private (concat "file:" file-name))) (car (cdr (cdr event))))) From 431225c60ec5d1a204c3e7cd29942d3db4cb28a8 Mon Sep 17 00:00:00 2001 From: YAMAMOTO Mitsuharu Date: Sat, 20 May 2006 07:15:33 +0000 Subject: [PATCH 073/501] (convert_fn_keycode): Fix last change. --- src/ChangeLog | 4 ++++ src/macterm.c | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/ChangeLog b/src/ChangeLog index b2f6e402c0d..4636c945877 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,7 @@ +2006-05-20 YAMAMOTO Mitsuharu + + * macterm.c (convert_fn_keycode): Fix last change. + 2006-05-19 Eli Zaretskii * w32.c (init_environment): Perform the processing of environment diff --git a/src/macterm.c b/src/macterm.c index 7b20e8b9427..5401e9dfe0e 100644 --- a/src/macterm.c +++ b/src/macterm.c @@ -9692,7 +9692,7 @@ convert_fn_keycode (EventRef eventRef, int keyCode, int *newCode) { err = GetEventParameter (eventRef, kEventParamKeyModifiers, typeUInt32, NULL, sizeof (UInt32), NULL, &mods); - if (err != noErr && mods & kEventKeyModifierFnMask) + if (err == noErr && mods & kEventKeyModifierFnMask) { *newCode = fn_keycode_to_xkeysym_table [keyCode & 0x7f]; return (*newCode != 0); From 237d230e4eb951ac94dc8f592dad5e946e53b951 Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Sat, 20 May 2006 14:40:56 +0000 Subject: [PATCH 074/501] (gdb-script-font-lock-keywords): Use a stricter regexp for keywords. --- lisp/ChangeLog | 17 +++++++++++------ lisp/progmodes/gud.el | 2 +- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 9d589c693a0..8f3858c5e32 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2006-05-20 Stefan Monnier + + * progmodes/gud.el (gdb-script-font-lock-keywords): Use a stricter + regexp for keywords. + 2006-05-20 Masayuki FUJII (tiny change) * dnd.el (dnd-get-local-file-name): Specify LITERAL in @@ -8,8 +13,8 @@ 2006-05-20 YAMAMOTO Mitsuharu - * dnd.el (dnd-handle-one-url): Change 3rd arg ARG to URL. Don't - unescape URL. + * dnd.el (dnd-handle-one-url): Change 3rd arg ARG to URL. + Don't unescape URL. (dnd-get-local-file-name): Unescape URL on conversion to file name. * x-dnd.el (x-dnd-handle-file-name): Encode and escape file names @@ -68,14 +73,14 @@ * emacs-lisp/ewoc.el (ewoc--adjust): New func. (ewoc--insert-new-node): Don't insert trailing newline. - Instead, adjust succesor nodes' start markers. + Instead, adjust successor nodes's start markers. (ewoc--refresh-node): Delete all text from current node's start - marker to the next one's; adjust successor nodes' start markers. + marker to the next one's; adjust successor nodes's start markers. (ewoc--create): Doc fixes. (ewoc--refresh): Don't insert newline. (ewoc--set-hf): Use `ewoc--set-buffer-bind-dll-let*'. - * pcvs.el (cvs-make-cvs-buffer): Specify - extra newline for ewoc's header and footer. + * pcvs.el (cvs-make-cvs-buffer): + Specify extra newline for ewoc's header and footer. (cvs-update-header): Update initial header recognition. Append newline to final header and footer values. * pcvs-info.el (cvs-fileinfo-pp): Insert trailing newline. diff --git a/lisp/progmodes/gud.el b/lisp/progmodes/gud.el index d2e6cfc4ae4..bda30b196e1 100644 --- a/lisp/progmodes/gud.el +++ b/lisp/progmodes/gud.el @@ -3166,7 +3166,7 @@ class of the file (using s to separate nested class ids)." (defvar gdb-script-font-lock-keywords '(("^define\\s-+\\(\\(\\w\\|\\s_\\)+\\)" (1 font-lock-function-name-face)) ("\\$\\(\\w+\\)" (1 font-lock-variable-name-face)) - ("^\\s-*\\(\\(\\w\\|\\s_\\)+\\)" (1 font-lock-keyword-face)))) + ("^\\s-*\\(\\w\\(\\w\\|\\s_\\)*\\)" (1 font-lock-keyword-face)))) ;; FIXME: The keyword "end" associated with "document" ;; should have font-lock-keyword-face (currently font-lock-doc-face). From d689858f8aae8f00ebf5f149ce0bc8068d99e9fa Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sat, 20 May 2006 17:27:07 +0000 Subject: [PATCH 075/501] (show-ifdef-block): Fix bug where parts of a hidden block remained hidden if `hide-ifdef-lines' is non-nil. --- lisp/ChangeLog | 5 +++++ lisp/progmodes/hideif.el | 14 ++++++++------ 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 8f3858c5e32..a238259d778 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2006-05-20 Martin Rudalics + + * progmodes/hideif.el (show-ifdef-block): Fix bug where parts of + a hidden block remained hidden if `hide-ifdef-lines' is non-nil. + 2006-05-20 Stefan Monnier * progmodes/gud.el (gdb-script-font-lock-keywords): Use a stricter diff --git a/lisp/progmodes/hideif.el b/lisp/progmodes/hideif.el index 04e44e2dac1..a100424108d 100644 --- a/lisp/progmodes/hideif.el +++ b/lisp/progmodes/hideif.el @@ -928,15 +928,17 @@ Return as (TOP . BOTTOM) the extent of ifdef block." (setq hide-ifdef-hiding t)) (setq buffer-read-only (or hide-ifdef-read-only hif-outside-read-only))) - (defun show-ifdef-block () "Show the ifdef block (true or false part) enclosing or before the cursor." (interactive) - (if hide-ifdef-lines - (save-excursion - (beginning-of-line) - (hif-show-ifdef-region (1- (point)) (progn (end-of-line) (point)))) - (let ((top-bottom (hif-find-ifdef-block))) + (let ((top-bottom (hif-find-ifdef-block))) + (if hide-ifdef-lines + (hif-show-ifdef-region + (save-excursion + (goto-char (car top-bottom)) (line-beginning-position)) + (save-excursion + (goto-char (1+ (cdr top-bottom))) + (hif-end-of-line) (point))) (hif-show-ifdef-region (1- (car top-bottom)) (cdr top-bottom))))) From 3b96a16d2e629e5ff8ef9f996382ba6587256082 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sat, 20 May 2006 17:36:45 +0000 Subject: [PATCH 076/501] (rmail-mime-charset-pattern): Add "?:" before "format". (rmail-convert-to-babyl-format): Undo the change from 2006-04-19. --- lisp/ChangeLog | 6 ++++++ lisp/mail/rmail.el | 6 +++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index a238259d778..cce330ae9f3 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,9 @@ +2006-05-20 Eli Zaretskii + + * mail/rmail.el (rmail-mime-charset-pattern): Add "?:" before + "format". + (rmail-convert-to-babyl-format): Undo the change from 2006-04-19. + 2006-05-20 Martin Rudalics * progmodes/hideif.el (show-ifdef-block): Fix bug where parts of diff --git a/lisp/mail/rmail.el b/lisp/mail/rmail.el index faeec5abf02..195eb60830c 100644 --- a/lisp/mail/rmail.el +++ b/lisp/mail/rmail.el @@ -624,7 +624,7 @@ the variable `rmail-mime-feature'.") ;;;###autoload (defvar rmail-mime-charset-pattern (concat "^content-type:[ ]*text/plain;" - "\\(?:[ \t\n]*\\(format\\|delsp\\)=\"?[-a-z0-9]+\"?;\\)*" + "\\(?:[ \t\n]*\\(?:format\\|delsp\\)=\"?[-a-z0-9]+\"?;\\)*" "[ \t\n]*charset=\"?\\([^ \t\n\";]+\\)\"?") "Regexp to match MIME-charset specification in a header of message. The first parenthesized expression should match the MIME-charset name.") @@ -1994,7 +1994,7 @@ is non-nil if the user has supplied the password interactively. (re-search-backward rmail-mime-charset-pattern start t)))) - (intern (downcase (match-string 2)))))) + (intern (downcase (match-string 1)))))) (rmail-decode-region start (point) mime-charset))))) ;; Add an X-Coding-System: header if we don't have one. (save-excursion @@ -2155,7 +2155,7 @@ is non-nil if the user has supplied the password interactively. (re-search-backward rmail-mime-charset-pattern start t)))) - (intern (downcase (match-string 2)))))) + (intern (downcase (match-string 1)))))) (rmail-decode-region start (point) mime-charset))) (save-excursion (goto-char start) From 664a80e90ab62cace261b1fd1727a37d6229cafd Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sat, 20 May 2006 17:46:07 +0000 Subject: [PATCH 077/501] (c-backslash-column): Mark as safe if its value is an integer. --- lisp/ChangeLog | 5 +++++ lisp/progmodes/cc-vars.el | 1 + 2 files changed, 6 insertions(+) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index cce330ae9f3..75765851482 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2006-05-20 Karl Chen + + * progmodes/cc-vars.el (c-backslash-column): Mark as safe if its + value is an integer. + 2006-05-20 Eli Zaretskii * mail/rmail.el (rmail-mime-charset-pattern): Add "?:" before diff --git a/lisp/progmodes/cc-vars.el b/lisp/progmodes/cc-vars.el index 64e38be62d0..0e6738710c5 100644 --- a/lisp/progmodes/cc-vars.el +++ b/lisp/progmodes/cc-vars.el @@ -812,6 +812,7 @@ macro exceeds this column then the next tab stop from that line is used as alignment column instead." :type 'integer :group 'c) +;;;###autoload(put 'c-backslash-column 'safe-local-variable 'integerp) (defcustom-c-stylevar c-backslash-max-column 72 "*Maximum alignment column for line continuation backslashes. From 8a5e4b3bf76372f34f9a6f4ae1f42fa6eb7f5315 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sat, 20 May 2006 18:11:02 +0000 Subject: [PATCH 078/501] (info-xref-check-all-custom): Skip :tag part of ``(custom-manual :tag "Foo" "(foo)Node")''. --- lisp/ChangeLog | 5 +++++ lisp/info-xref.el | 5 ++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 75765851482..254c21b3a54 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2006-05-20 Kevin Ryde + + * info-xref.el (info-xref-check-all-custom): Skip :tag part of + ``(custom-manual :tag "Foo" "(foo)Node")''. + 2006-05-20 Karl Chen * progmodes/cc-vars.el (c-backslash-column): Mark as safe if its diff --git a/lisp/info-xref.el b/lisp/info-xref.el index 75bc72f25b4..a6acfa8021c 100644 --- a/lisp/info-xref.el +++ b/lisp/info-xref.el @@ -301,7 +301,10 @@ quite a while." (lambda (symbol) (dolist (link (get symbol 'custom-links)) (when (memq (car link) '(custom-manual info-link)) - (if (info-xref-goto-node-p (cadr link)) + ;; skip :tag part of (custom-manual :tag "Foo" "(foo)Node") + (if (eq :tag (cadr link)) + (setq link (cddr link))) + (if (info-xref-goto-node-p (cadr link)) (setq good (1+ good)) (setq bad (1+ bad)) ;; symbol-file gives nil for preloaded variables, would need From 4d4acba25dcab4c768d030b8c961b2f09d3b3b4e Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sat, 20 May 2006 18:14:27 +0000 Subject: [PATCH 079/501] (TeX Print): tex-dvi-view-command has a default value, remove the bit saying you must set it. --- man/text.texi | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/man/text.texi b/man/text.texi index 3660901a83d..07ccac4b9a5 100644 --- a/man/text.texi +++ b/man/text.texi @@ -1596,9 +1596,7 @@ directory, such as @code{"/tmp"}. you can do so by setting the values of the variables @code{tex-run-command}, @code{latex-run-command}, @code{slitex-run-command}, @code{tex-dvi-print-command}, @code{tex-dvi-view-command}, and -@code{tex-show-queue-command}. You @emph{must} set the value of -@code{tex-dvi-view-command} for your particular terminal; this variable -has no default value. The other variables have default values that may +@code{tex-show-queue-command}. The default values may (or may not) be appropriate for your system. Normally, the file name given to these commands comes at the end of From 40c50be3a61655ed6e1ddb51195e2711d23ea60a Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sat, 20 May 2006 18:19:36 +0000 Subject: [PATCH 080/501] (dired-do-shell-command): Doc fix. --- lisp/ChangeLog | 4 ++++ lisp/dired-aux.el | 3 ++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 254c21b3a54..06875dc6d0c 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,7 @@ +2006-05-20 Eli Zaretskii + + * dired-aux.el (dired-do-shell-command): Doc fix. + 2006-05-20 Kevin Ryde * info-xref.el (info-xref-check-all-custom): Skip :tag part of diff --git a/lisp/dired-aux.el b/lisp/dired-aux.el index e07689973e4..b4cb8933194 100644 --- a/lisp/dired-aux.el +++ b/lisp/dired-aux.el @@ -493,7 +493,8 @@ the Dired buffer, so output files usually are created there instead of in a subdir. In a noninteractive call (from Lisp code), you must specify -the list of file names explicitly with the FILE-LIST argument." +the list of file names explicitly with the FILE-LIST argument, which +can be produced by `dired-get-marked-files', for example." ;;Functions dired-run-shell-command and dired-shell-stuff-it do the ;;actual work and can be redefined for customization. (interactive From 73290fbd37d3f8d8ad28d959a15467d82fdac13f Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sat, 20 May 2006 18:36:11 +0000 Subject: [PATCH 081/501] (makefile-mode): Doc fix. --- lisp/progmodes/make-mode.el | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/lisp/progmodes/make-mode.el b/lisp/progmodes/make-mode.el index 3bbfeaac683..32d245f67f2 100644 --- a/lisp/progmodes/make-mode.el +++ b/lisp/progmodes/make-mode.el @@ -724,11 +724,10 @@ The function must satisfy this calling convention: If you are editing a file for a different make, try one of the variants `makefile-automake-mode', `makefile-gmake-mode', -`makefile-makepp-mode', `makefile-bsdmake-mode' or, -`makefile-imake-mode'All but the -last should be correctly chosen based on the file name, except if -it is *.mk. This function ends by invoking the function(s) -`makefile-mode-hook'. +`makefile-makepp-mode', `makefile-bsdmake-mode' or, +`makefile-imake-mode'. All but the last should be correctly +chosen based on the file name, except if it is *.mk. This +function ends by invoking the function(s) `makefile-mode-hook'. It is strongly recommended to use `font-lock-mode', because that provides additional parsing information. This is used for From 16c4412e9c42ec698d4ea98389649a9b4f450354 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sat, 20 May 2006 18:36:50 +0000 Subject: [PATCH 082/501] *** empty log message *** --- lisp/ChangeLog | 6 +++++- man/ChangeLog | 5 +++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 06875dc6d0c..b543742f0ff 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,7 @@ +2006-05-20 Micha,Ak(Bl Cadilhac (tiny change) + + * progmodes/make-mode.el (makefile-mode): Doc fix. + 2006-05-20 Eli Zaretskii * dired-aux.el (dired-do-shell-command): Doc fix. @@ -559,7 +563,7 @@ reference to the Lisp manual to the warning about pure space overflow. -2006-05-05 Micha,Ak(Bl Cadilhac +2006-05-05 Micha,Ak(Bl Cadilhac (tiny change) * textmodes/ispell.el (ispell-buffer-local-dict): Add a `no-reload' argument to avoid the call to `ispell-internal-change-dictionary' diff --git a/man/ChangeLog b/man/ChangeLog index 1646a94e603..9311c54bc11 100644 --- a/man/ChangeLog +++ b/man/ChangeLog @@ -1,3 +1,8 @@ +2006-05-20 Kevin Ryde + + * text.texi (TeX Print): tex-dvi-view-command has a default value, + remove the bit saying you must set it. + 2006-05-19 Luc Teirlinck * trouble.texi (Checklist): From 375136cc7cd5be2bfb9cea04dc89d70ef52d314f Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sat, 20 May 2006 18:56:22 +0000 Subject: [PATCH 083/501] (Windows Printing): Mention non-support of plain text printing with some el-cheapo printers, and suggest a workaround. --- man/msdog.texi | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/man/msdog.texi b/man/msdog.texi index 0dfb57ffdc9..17185e952a0 100644 --- a/man/msdog.texi +++ b/man/msdog.texi @@ -328,6 +328,12 @@ the default directory of the current buffer, so if the file name in files, each one in the directory of the buffer from which the printing was done. + If the value of @code{printer-name} is correct, but printing does +not produce the hardcopy on your printer, it is possible that your +printer does not support printing plain text (some cheap printers omit +this functionality). In that case, as a workaround, try the +PostScript print commands, described below, to the same printer + @findex print-buffer @r{(MS-DOS)} @findex print-region @r{(MS-DOS)} @vindex lpr-headers-switches @r{(MS-DOS)} From d836fdf52e0db7135b6be7cebcc0fe1d7f1c177e Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sat, 20 May 2006 19:04:35 +0000 Subject: [PATCH 084/501] (CODING_REQUIRE_ENCODING): Elaborate the comment. --- src/coding.h | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/coding.h b/src/coding.h index 54553a071fa..5727b57a850 100644 --- a/src/coding.h +++ b/src/coding.h @@ -462,7 +462,10 @@ struct coding_system || (coding)->common_flags & CODING_REQUIRE_DECODING_MASK) /* Return 1 if the coding system CODING requires code conversion on - encoding. */ + encoding. + The non-multibyte part of the condition is to support encoding of + unibyte strings/buffers generated by string-as-unibyte or + (set-buffer-multibyte nil) from multibyte strings/buffers. */ #define CODING_REQUIRE_ENCODING(coding) \ ((coding)->src_multibyte \ || (coding)->common_flags & CODING_REQUIRE_ENCODING_MASK) From 4cc27edbecbf2902330b9e7d4548b50c9ff66b74 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sat, 20 May 2006 19:08:02 +0000 Subject: [PATCH 085/501] (Visiting): Mention `end-of-line' explicitly. --- man/files.texi | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/man/files.texi b/man/files.texi index 65edbc22e36..3eb413b4687 100644 --- a/man/files.texi +++ b/man/files.texi @@ -261,17 +261,17 @@ copies the file into the displayed directory. For details, see you had visited an existing empty file. If you make any changes and save them, the file is created. - Emacs recognizes from the contents of a file which convention it uses -to separate lines---newline (used on GNU/Linux and on Unix), -carriage-return linefeed (used on Microsoft systems), or just -carriage-return (used on the Macintosh)---and automatically converts the -contents to the normal Emacs convention, which is that the newline -character separates lines. This is a part of the general feature of -coding system conversion (@pxref{Coding Systems}), and makes it possible -to edit files imported from different operating systems with -equal convenience. If you change the text and save the file, Emacs -performs the inverse conversion, changing newlines back into -carriage-return linefeed or just carriage-return if appropriate. + Emacs recognizes from the contents of a file which end-of-line +convention it uses to separate lines---newline (used on GNU/Linux and +on Unix), carriage-return linefeed (used on Microsoft systems), or +just carriage-return (used on the Macintosh)---and automatically +converts the contents to the normal Emacs convention, which is that +the newline character separates lines. This is a part of the general +feature of coding system conversion (@pxref{Coding Systems}), and +makes it possible to edit files imported from different operating +systems with equal convenience. If you change the text and save the +file, Emacs performs the inverse conversion, changing newlines back +into carriage-return linefeed or just carriage-return if appropriate. @vindex find-file-run-dired If the file you specify is actually a directory, @kbd{C-x C-f} invokes From 22956078a61d0abb02fab2ef01c872a685f60e22 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sat, 20 May 2006 19:19:25 +0000 Subject: [PATCH 086/501] (Coding Systems): Mention the undecided-* coding systems and their aliases. --- man/mule.texi | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/man/mule.texi b/man/mule.texi index b4076dde031..c2f789ec800 100644 --- a/man/mule.texi +++ b/man/mule.texi @@ -679,6 +679,13 @@ predictable. For example, the coding system @code{iso-latin-1} has variants @code{iso-latin-1-unix}, @code{iso-latin-1-dos} and @code{iso-latin-1-mac}. +@cindex @code{undecided}, coding system + The coding systems @code{unix}, @code{dos}, and @code{mac} are +aliases for @code{undecided-unix}, @code{undecided-dos}, and +@code{undecided-mac}, respectively. These coding systems specify only +the end-of-line conversion, and leave the character code conversion to +be deduced from the text itself. + The coding system @code{raw-text} is good for a file which is mainly @acronym{ASCII} text, but may contain byte values above 127 which are not meant to encode non-@acronym{ASCII} characters. With From d964e2958b0001f88cc028286213f1b05cdc160d Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sat, 20 May 2006 19:29:47 +0000 Subject: [PATCH 087/501] New file. --- etc/pt-br-refcard.ps | 2527 +++++++++++++++++++++++++++++++++++++++++ etc/pt-br-refcard.tex | 682 +++++++++++ 2 files changed, 3209 insertions(+) create mode 100644 etc/pt-br-refcard.ps create mode 100644 etc/pt-br-refcard.tex diff --git a/etc/pt-br-refcard.ps b/etc/pt-br-refcard.ps new file mode 100644 index 00000000000..376315aa30b --- /dev/null +++ b/etc/pt-br-refcard.ps @@ -0,0 +1,2527 @@ +%!PS-Adobe-2.0 +%%Creator: dvips(k) 5.92b Copyright 2002 Radical Eye Software +%%Title: refcard.dvi +%%Pages: 2 +%%PageOrder: Ascend +%%Orientation: Landscape +%%BoundingBox: 0 0 596 842 +%%DocumentFonts: CMBX10 CMR8 CMTT8 CMBX8 CMR6 CMSY6 CMTI8 CMMI8 +%%EndComments +%DVIPSWebPage: (www.radicaleye.com) +%DVIPSCommandLine: dvips -t landscape refcard.dvi +%DVIPSParameters: dpi=600, compressed +%DVIPSSource: TeX output 2006.05.10:0849 +%%BeginProcSet: texc.pro +%! +/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S +N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 +mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 +0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ +landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize +mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[ +matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round +exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{ +statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0] +N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin +/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array +/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2 +array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N +df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A +definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get +}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub} +B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr +1 add N}if}B/id 0 N/rw 0 N/rc 0 N/gp 0 N/cp 0 N/G 0 N/CharBuilder{save 3 +1 roll S A/base get 2 index get S/BitMaps get S get/Cd X pop/ctr 0 N Cdx +0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx +sub Cy .1 sub]/id Ci N/rw Cw 7 add 8 idiv string N/rc 0 N/gp 0 N/cp 0 N{ +rc 0 ne{rc 1 sub/rc X rw}{G}ifelse}imagemask restore}B/G{{id gp get/gp +gp 1 add N A 18 mod S 18 idiv pl S get exec}loop}B/adv{cp add/cp X}B +/chg{rw cp id gp 4 index getinterval putinterval A gp add/gp X adv}B/nd{ +/cp 0 N rw exit}B/lsh{rw cp 2 copy get A 0 eq{pop 1}{A 255 eq{pop 254}{ +A A add 255 and S 1 and or}ifelse}ifelse put 1 adv}B/rsh{rw cp 2 copy +get A 0 eq{pop 128}{A 255 eq{pop 127}{A 2 idiv S 128 and or}ifelse} +ifelse put 1 adv}B/clr{rw cp 2 index string putinterval adv}B/set{rw cp +fillstr 0 4 index getinterval putinterval adv}B/fillstr 18 string 0 1 17 +{2 copy 255 put pop}for N/pl[{adv 1 chg}{adv 1 chg nd}{1 add chg}{1 add +chg nd}{adv lsh}{adv lsh nd}{adv rsh}{adv rsh nd}{1 add adv}{/rc X nd}{ +1 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]A{bind pop} +forall N/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn +/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put +}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{ +bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A +mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{ +SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{ +userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X +1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4 +index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N +/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{ +/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT) +(LaserWriter 16/600)]{A length product length le{A length product exch 0 +exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse +end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask +grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot} +imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round +exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto +fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p +delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M} +B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{ +p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S +rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end + +%%EndProcSet +%%BeginProcSet: f7b6d320.enc +% Thomas Esser, Dec 2002. public domain +% +% Encoding for: +% cmb10 cmbx10 cmbx12 cmbx5 cmbx6 cmbx7 cmbx8 cmbx9 cmbxsl10 +% cmdunh10 cmr10 cmr12 cmr17cmr6 cmr7 cmr8 cmr9 cmsl10 cmsl12 cmsl8 +% cmsl9 cmss10cmss12 cmss17 cmss8 cmss9 cmssbx10 cmssdc10 cmssi10 +% cmssi12 cmssi17 cmssi8cmssi9 cmssq8 cmssqi8 cmvtt10 +% +/TeXf7b6d320Encoding [ +/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /Omega +/ff /fi /fl /ffi /ffl /dotlessi /dotlessj /grave /acute /caron /breve +/macron /ring /cedilla /germandbls /ae /oe /oslash /AE /OE /Oslash +/suppress /exclam /quotedblright /numbersign /dollar /percent /ampersand +/quoteright /parenleft /parenright /asterisk /plus /comma /hyphen +/period /slash /zero /one /two /three /four /five /six /seven /eight +/nine /colon /semicolon /exclamdown /equal /questiondown /question /at +/A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W /X +/Y /Z /bracketleft /quotedblleft /bracketright /circumflex /dotaccent +/quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u +/v /w /x /y /z /endash /emdash /hungarumlaut /tilde /dieresis /suppress +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space +/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /.notdef +/.notdef /Omega /ff /fi /fl /ffi /ffl /dotlessi /dotlessj /grave /acute +/caron /breve /macron /ring /cedilla /germandbls /ae /oe /oslash /AE +/OE /Oslash /suppress /dieresis /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +] def + +%%EndProcSet +%%BeginProcSet: 09fbbfac.enc +% Thomas Esser, Dec 2002. public domain +% +% Encoding for: +% cmsltt10 cmtt10 cmtt12 cmtt8 cmtt9 +/TeX09fbbfacEncoding [ +/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi +/Omega /arrowup /arrowdown /quotesingle /exclamdown /questiondown +/dotlessi /dotlessj /grave /acute /caron /breve /macron /ring /cedilla +/germandbls /ae /oe /oslash /AE /OE /Oslash /visiblespace /exclam +/quotedbl /numbersign /dollar /percent /ampersand /quoteright /parenleft +/parenright /asterisk /plus /comma /hyphen /period /slash /zero /one +/two /three /four /five /six /seven /eight /nine /colon /semicolon /less +/equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N +/O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright +/asciicircum /underscore /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l +/m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright +/asciitilde /dieresis /visiblespace /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /space /Gamma /Delta /Theta /Lambda /Xi /Pi +/Sigma /Upsilon /Phi /Psi /.notdef /.notdef /Omega /arrowup /arrowdown +/quotesingle /exclamdown /questiondown /dotlessi /dotlessj /grave /acute +/caron /breve /macron /ring /cedilla /germandbls /ae /oe /oslash /AE +/OE /Oslash /visiblespace /dieresis /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +] def + +%%EndProcSet +%%BeginProcSet: bbad153f.enc +% Thomas Esser, Dec 2002. public domain +% +% Encoding for: +% cmsy10 cmsy5 cmsy6 cmsy7 cmsy8 cmsy9 +% +/TeXbbad153fEncoding [ +/minus /periodcentered /multiply /asteriskmath /divide /diamondmath +/plusminus /minusplus /circleplus /circleminus /circlemultiply +/circledivide /circledot /circlecopyrt /openbullet /bullet +/equivasymptotic /equivalence /reflexsubset /reflexsuperset /lessequal +/greaterequal /precedesequal /followsequal /similar /approxequal +/propersubset /propersuperset /lessmuch /greatermuch /precedes /follows +/arrowleft /arrowright /arrowup /arrowdown /arrowboth /arrownortheast +/arrowsoutheast /similarequal /arrowdblleft /arrowdblright /arrowdblup +/arrowdbldown /arrowdblboth /arrownorthwest /arrowsouthwest /proportional +/prime /infinity /element /owner /triangle /triangleinv /negationslash +/mapsto /universal /existential /logicalnot /emptyset /Rfractur /Ifractur +/latticetop /perpendicular /aleph /A /B /C /D /E /F /G /H /I /J /K +/L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /union /intersection +/unionmulti /logicaland /logicalor /turnstileleft /turnstileright +/floorleft /floorright /ceilingleft /ceilingright /braceleft /braceright +/angbracketleft /angbracketright /bar /bardbl /arrowbothv /arrowdblbothv +/backslash /wreathproduct /radical /coproduct /nabla /integral +/unionsq /intersectionsq /subsetsqequal /supersetsqequal /section +/dagger /daggerdbl /paragraph /club /diamond /heart /spade /arrowleft +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/minus /periodcentered /multiply /asteriskmath /divide /diamondmath +/plusminus /minusplus /circleplus /circleminus /.notdef /.notdef +/circlemultiply /circledivide /circledot /circlecopyrt /openbullet +/bullet /equivasymptotic /equivalence /reflexsubset /reflexsuperset +/lessequal /greaterequal /precedesequal /followsequal /similar +/approxequal /propersubset /propersuperset /lessmuch /greatermuch +/precedes /follows /arrowleft /spade /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +] def + +%%EndProcSet +%%BeginProcSet: 74afc74c.enc +% Thomas Esser, Dec 2002. public domain +% +% Encoding for: +% cmbxti10 cmff10 cmfi10 cmfib8 cmti10 cmti12 cmti7 cmti8cmti9 cmu10 +% +/TeX74afc74cEncoding [ +/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /Omega +/ff /fi /fl /ffi /ffl /dotlessi /dotlessj /grave /acute /caron /breve +/macron /ring /cedilla /germandbls /ae /oe /oslash /AE /OE /Oslash +/suppress /exclam /quotedblright /numbersign /sterling /percent +/ampersand /quoteright /parenleft /parenright /asterisk /plus /comma +/hyphen /period /slash /zero /one /two /three /four /five /six /seven +/eight /nine /colon /semicolon /exclamdown /equal /questiondown /question +/at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W +/X /Y /Z /bracketleft /quotedblleft /bracketright /circumflex /dotaccent +/quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u +/v /w /x /y /z /endash /emdash /hungarumlaut /tilde /dieresis /suppress +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space +/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /.notdef +/.notdef /Omega /ff /fi /fl /ffi /ffl /dotlessi /dotlessj /grave /acute +/caron /breve /macron /ring /cedilla /germandbls /ae /oe /oslash /AE +/OE /Oslash /suppress /dieresis /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +] def + +%%EndProcSet +%%BeginProcSet: aae443f0.enc +% Thomas Esser, Dec 2002. public domain +% +% Encoding for: +% cmmi10 cmmi12 cmmi5 cmmi6 cmmi7 cmmi8 cmmi9 cmmib10 +% +/TeXaae443f0Encoding [ +/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /Omega +/alpha /beta /gamma /delta /epsilon1 /zeta /eta /theta /iota /kappa +/lambda /mu /nu /xi /pi /rho /sigma /tau /upsilon /phi /chi /psi +/omega /epsilon /theta1 /pi1 /rho1 /sigma1 /phi1 /arrowlefttophalf +/arrowleftbothalf /arrowrighttophalf /arrowrightbothalf /arrowhookleft +/arrowhookright /triangleright /triangleleft /zerooldstyle /oneoldstyle +/twooldstyle /threeoldstyle /fouroldstyle /fiveoldstyle /sixoldstyle +/sevenoldstyle /eightoldstyle /nineoldstyle /period /comma /less /slash +/greater /star /partialdiff /A /B /C /D /E /F /G /H /I /J /K /L /M /N +/O /P /Q /R /S /T /U /V /W /X /Y /Z /flat /natural /sharp /slurbelow +/slurabove /lscript /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p +/q /r /s /t /u /v /w /x /y /z /dotlessi /dotlessj /weierstrass /vector +/tie /psi /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/space /Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi +/.notdef /.notdef /Omega /alpha /beta /gamma /delta /epsilon1 /zeta /eta +/theta /iota /kappa /lambda /mu /nu /xi /pi /rho /sigma /tau /upsilon +/phi /chi /psi /tie /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef +] def + +%%EndProcSet +%%BeginProcSet: texps.pro +%! +TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2 +index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll +exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]FontType 0 +ne{/Metrics exch def dict begin Encoding{exch dup type/integertype ne{ +pop pop 1 sub dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get +div def}ifelse}forall Metrics/Metrics currentdict end def}{{1 index type +/nametype eq{exit}if exch pop}loop}ifelse[2 index currentdict end +definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{dup +sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1 roll +mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def dup[ +exch{dup CharStrings exch known not{pop/.notdef/Encoding true def}if} +forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def}def +end + +%%EndProcSet +%%BeginFont: CMMI8 +%!PS-AdobeFont-1.1: CMMI8 1.100 +%%CreationDate: 1996 Jul 23 07:53:54 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.100) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMMI8) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle -14.04 def +/isFixedPitch false def +end readonly def +/FontName /CMMI8 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 0 /.notdef put +readonly def +/FontBBox{-24 -250 1110 750}readonly def +/UniqueID 5087383 def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE +3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B +532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470 +B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B +986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE +D919C2DDD26BDC0D99398B9F4D03D6A8F05B47AF95EF28A9C561DBDC98C47CF5 +5250011D19E9366EB6FD153D3A100CAA6212E3D5D93990737F8D326D347B7EDC +4391C9DF440285B8FC159D0E98D4258FC57892DDF753642CD526A96ACEDA4120 +788F22B1D09F149794E66DD1AC2C2B3BC6FEC59D626F427CD5AE9C54C7F78F62 +C36F49B3C2E5E62AFB56DCEE87445A12A942C14AE618D1FE1B11A9CF9FAA1F32 +617B598CE5058715EF3051E228F72F651040AD99A741F247C68007E68C84E9D1 +D0BF99AA5D777D88A7D3CED2EA67F4AE61E8BC0495E7DA382E82DDB2B009DD63 +532C74E3BE5EC555A014BCBB6AB31B8286D7712E0E926F8696830672B8214E9B +5D0740C16ADF0AFD47C4938F373575C6CA91E46D88DE24E682DEC44B57EA8AF8 +4E57D45646073250D82C4B50CBBB0B369932618301F3D4186277103B53B3C9E6 +DB42D6B30115F67B9D078220D5752644930643BDF9FACF684EBE13E39B65055E +B1BD054C324962025EC79E1D155936FE32D9F2224353F2A46C3558EF216F6BB2 +A304BAF752BEEC36C4440B556AEFECF454BA7CBBA7537BCB10EBC21047333A89 +8936419D857CD9F59EBA20B0A3D9BA4A0D3395336B4CDA4BA6451B6E4D1370FA +D9BDABB7F271BC1C6C48D9DF1E5A6FAE788F5609DE3C48D47A67097C547D9817 +AD3A7CCE2B771843D69F860DA4059A71494281C0AD8D4BAB3F67BB6739723C04 +AE05F9E35B2B2CB9C7874C114F57A185C8563C0DCCA93F8096384D71A2994748 +A3C7C8B8AF54961A8838AD279441D9A5EB6C1FE26C98BD025F353124DA68A827 +AE2AF8D25CA48031C242AA433EEEBB8ABA4B96821786C38BACB5F58C3D5DA011 +85B385124C2B6534F3CD1866AF92009D93B97F763AA3D16684AA65F029E776DA +3BFB75EDD46D562E6A284DB4F2FDBF7CDE7C1F3772CD7B6FD372842A0E07E3EF +68A98AB9278ADC2D35891543F57ED6DCFE8923368D556F1A8B3E35863112F409 +FBE67FC270328312BAA43A9A372C510717B50AAB01A1E02A9982113E2D7C601C +B0BDA1C0E081E546A97647B74EE5194C57ACD62502B329FED4D966BDEB4028F0 +F082EDD5DFC8387653D620E9E73FDCE3C155347D5929C3A24D6121AEA46BBF3A +B1C8A4793FB7F21C84400912C27D9AB0845537103553BF8F +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: CMTI8 +%!PS-AdobeFont-1.1: CMTI8 1.0 +%%CreationDate: 1991 Aug 18 21:07:42 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.0) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMTI8) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle -14.04 def +/isFixedPitch false def +end readonly def +/FontName /CMTI8 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 0 /.notdef put +readonly def +/FontBBox{-35 -250 1190 750}readonly def +/UniqueID 5000826 def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE +3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B +532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470 +B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B +986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE +D919C2DDD26BDC0D99398B9F4D03D6A8F05B47AF95EF28A9C561DBDC98C47CF5 +525003F3DAD7933EB57E7DB1462E9D906F6D8F5BF740206C1EC5F36E00AAFF68 +F3EF6F3A2540E5F9564D1C215BC1E7E69C7D04DA5DB1CF195613C9CBF4BAA360 +84AEF3E10E24877FBE36AD731DC97305BDE6DB1F934909FAF60B8E28561FBC57 +0F5B6225425BFDE8F0C71CD4507B82FF803E9A301397975E38A259DE1E1B4FC0 +06BB1DC2D45B987A2268A77CE8DC025CB0D1B39788BBEE149103950650171C94 +5FED1063050A90BD38605BD9365D1C2AE42A7DA3DDB9A263FE10BD487F63D908 +D4F02758BD9D7BE53E6353A25BEFA29E42B50C1D078A8B3A746EEDB381CCE36C +93FC4BD1A8D1D6ACD0D355E948CFE397B74D243EB51597D251D0BAE6884D70E8 +FEE119462E1939A9783414DF59EEA5FF1529F13869D1FF0A44935C5198CC5DAA +E1FD2A17AEEBF4974052D06734A409E26C457C06700C55896C90BB33E044A737 +46590D9FA242819B9527FD59818D8829D4EB2D26A34CC05A2CC063E66F2DF193 +8E4F9670014BC243180E45B51DDB05AD1E6A7F619EE1CE09CFC1A4F02CB7270E +4482FEDF673EDED38EF3173C475C34BFB3F6623C5E942A7797FEDDD0EF1D54E9 +1D90D7076C0A9687E334907C22F2E7C603388D8D626B0E5A62B7543DCBB575D7 +9A6BE1528EC9BC18570001092524E4FBB02F3B29293BCB4F0EF14A2DD9DB22A5 +BB33455799E8120D2A4862424AA4A382972E2845E042506FC8F6E201D11DD0F2 +09FAD8DC29C3E12B66293ACBFB13FA0F26238981F2CD52B47A8CDE6DF5CDFAAF +3113E1A6366B806EABA9C34E5D41167CD10D7B639021FB4CFDAE28CE72A93F3C +E8929A4813956AAB24BE7C20FCF9196E8E2F30816FE2279CE3E6067667A39E44 +488D58BFD17606AE885FA06F478D359A6ECF5564C095FE0E5038425D8B152750 +F72F41B3D1E7420EE91CF4A9ED5BBE8C2275624AE257D2BDF5752E803B426F40 +924CB5C29460BC09EC84F3F3A95F6900836F0ECCF6A7BB85A3F8D650017E5FE0 +503A73644EC6C6B0254F0259F8DD4AB3945950974CEB34521881A2506E76EBB3 +7DBA7812E0186DE2C0AD3E6D42BCA320014368DD738408C54AE2CAAA9C05612B +E7F33218F2FECCE8DB2E4B3A3BCD9D8D0BAD7EDDCCAE45F6A15FD2B8ED263E45 +14AF0CC7B58EF52D5FE73023EE9DAB8249D1EB3B795C7B42BFD2A2852D2D16BF +CD71056F412571F41CF7EE80AA916EA4FF1630B1E226F474CC3195006043B1AB +915DA8A9484B930F1F00028287EA3802DA3C3F99961952E04B736CDEC7768307 +879B4D2D553518FBBA727266F94C3A607FFD5D85CD0FB802CA51E6A3792C80F9 +A637D47C13A787F5D9C5BAC24E843DA198B7CC898AD786DEAC0BA9B6EF955ECC +72DA3A8CCCF7F3B69597A2F868AE359737A9714AE6D81989B4152DA33095DAB8 +5759080AA156DF1F3767120018CE81D296D813DC52786586CF3F38EE3CE181D3 +9D79439EE13D4E5799E03338E93315C3F6BA8ADC731A0D8282637E524C1E9736 +29C594C6F19B49C859D7CCA98148215F7E6943637797641D44DC9FB8FA403FCA +BD581E477C7BBDBC84048141760B4EE0D181D585C519D02DEB7D1C650BB49874 +A75E95E6A17D8024346AF3288A32A7EDFFAE15BACD436CC76850F2EAC7EFF565 +C4273160FC5DC7434DB94BFA01D1648421FCFEF66D786CFF60F0031B649B6F14 +E9139B27185E6E9A70E439AA8D68C6535A42634FFDA55DE86BDEDDF3D6B73015 +37C7437A96CDAC620A29942E834F714D82774AED0A83771A152EAC0CC043CB09 +02574AFC4CA006FC0D24C3DAAF4D681CC1D2D7870F273773171A4977AD05A082 +0DF3F50C8A36D7D8AA96E82387AAFB48D048CFAE2CBAA88F1865B84CFBBC1731 +A212A44EB98265A8D4A8C118E038A0C3503B27D8B58846C4F3E8112C8B05A41A +9F8B0E1513528F5D7E509EE847F7224AA06819954974F8065AF49F21840E972D +C1B028B541BA1364045E814A9F8FB299B6B62CA150245D92588056992FE6D71B +FB16F2B42A3DE425B302051FCC4A2AA76F6146BAA385614913D2B11191CA6A09 +BAE8567DCAC342D013C7830A0F03D848397110F021C63C9D6AFA90ABBC2DE4C9 +69EDFEE42C028640F9784E8CA11B83B4E7AB58F8335FA294DD68BA87FFFCC743 +67239D7FF1C54B725D53581832F5307FF1995D8273EBA54372AC82B7D5EC5773 +8F52B55255502008E0EDA0646D4D71137D822A57C0E9E05F3D61B91436B5FFE5 +CD90CABEA89420F4ADD844733B9B0F0C72688B9184A2EF69966411DF2B23A25A +11F009C6F23E452854B77AA33129C531C2C7A8666D550A83CBA6F251CB016F0C +940EC74FF62C721F3D854404F431DB39548F0785C5140A9D406C06306CBB0C99 +B7AA0E4680D8DE074B369A7481F0C12BCEDB787A1A9E4C71C869F5022447E317 +E6B851B8D89144BEE028D2352745CB0C081A7E806482F74E7EDDB5F1601A58D9 +EC5B92F7DAD1B462B0EB9DF22604BB2D617AC6056E723110CEBACFB0F6ADFC92 +F64C98F9910F91A8C4B39EF508A1AA01656C41247E1E8280A97089C515A1792B +509D2DBD3C5B6972F6829B60135247B75DFA7C067675B7010FB2F116B5009B12 +1F139A8A3E25FF52BE00D9C4AE67496958CA3D1D4568218542B77C865056E45A +0A07947C4E7D16D24E07A77ED01F10226CBBC21E0DF75293CED54214149619A2 +4A591F3F99EB14032AE840BEC7313CF1F24250BD8D6BDDBE85883D35D6907C77 +FCF01A7E8DAA9BF8E47DA3225623B645891455874BA99ABF9AC9CFABC083127E +CA636C8673A1ECF967BABDABF1A569319A4E382E7C593CB954522CC9DF04BEA6 +57297331734B3959805B89F96DD23C38DC8CE17C7373EE5F7A9035557E40C310 +7D1DA91F87F0CF45E54518B549DDC5F91851E2899E9756A069CBAE8E63A42974 +299781A390072C7E59B9433F9D47111900DEF4E4F10913BAEE90794333454574 +37B7A46664522983EADBAF6155C6A8624CC7FF1A850313072EF5B066059CC840 +C4A1DA2BAC6DD27D3D3BC9653003D5B25405492BB64FE4A1C294F06492093093 +A4B0175F6DBFE6C4C28C310F71010F97035774250EE0468E54A7CCF54465C7FE +7A70ADA08BB5B6A4AEBB3F60FA39FB810E6D7B1FBF169DEF45FD7E7EEC4B273E +A11269ED5BC9F8250F8D29BCBB656105FF2D71FB624F7A67C899828D3A563491 +9CCE8EF268F2A8986577C3A752F91B650DC9717A89F76DBAC254DF1BC705308B +2E4C7C55A152ED1AE945337B93E411B46DF56DD8F0942DD8403ED15FA515079C +A1035F3C7A2648761792E241C6710503F7A6093FAD8BCA34C0378700928762E7 +FC371BDA7488C95F69518E1DB63068E740942234A79478DF18C5752490DF199F +95C654423257DE301117F3C379DA5C90392A7BA173BA19BF2C35C9A0EE180098 +C228CED65FD5241B5DA3D318891994D363AE49E3B0FFDE091C82DB4BE7B240EB +159050F74BD181337EE202011BC96EB74C68E8BBB26E46020355378E6EC2B9D8 +89DB7907378B83FDC294B134E69D5AC1B2CBC821420EE28CEE8681EA3EC902F8 +3E8503A833B675E21679D6C5B7041701FC553B95D2DB82987EB4A010C8DCD9A9 +C0FB4C048617716CEA638CE3A16C90E55DBF76408A71B3B7FB784820EC3971EF +726DBE12A1098F350D9FF84E1846CD57B6DDAEF32C6B839644F57EE6B256090E +C711154CB95AB2910587E15E3F16D402943157E9CBA2174BE93B820951499A42 +F797664141F9F2698166395DF7116293B6557266C7DA28E2FC1F8BDA4B00C07B +6F7FE6AD4937A694EA423A2B90F9EBD30B8D3710E7E6D7BE15BA631E6991EE2B +1A28A02C4CC51889C37702E57F13F1E54295D77148C7EBB6B006DD232EF94D83 +20FFCB794B221BDEB84DCD737D301A44B8414B4591BD1D184C85B09BC5E28A0D +7DB0830419C1D92775DBFAD72F2D7E581EB08E516B0DE87BFF2DC167EBACE23B +73A3E770832A7A22B28AD12CA07DD15D22FF5EE53C48C55CEE77BD2D429571F8 +9DC52FC92A2D4F7BEDC0F27C39E7BFBBE38721E56234E9AF5FF1EFC753C8E281 +4EAF702CA8F08D3407FEF7E177FDE6177F6604B47872CD9EC22A6644C5A78CDA +FE3C51033C45BC1BE224F09EAF923B058E13ACDC61A0E7CB5C999DB0C8543BFC +4D65815338F65AA12BDDFC1EF5A249270D84BF1377FA064F62F41787F3D875D3 +0E4EBD38E30D593389ED01180CA5AD540A89B31933BCEC4DEEA2CFA94C03FD0D +290573BB3162C80FA9783A66AF33F11CD9437A7EE16812BBC32D80DC10057A97 +C83152905B954CBE464EF39D40056FF3047D9D57B9088A7FAD48E997B5096D20 +E21F9FF5858FC241EC16527F66DE8B403281A8FCA32AF1408D05387C3BFF79CF +25C5E6EE231B17287ACC5643C94E54A6962CE33246F7D03060042B623CB80C2C +2E2AC47CB431B64828D8D35426810074E1B98188A866406D24B8020D2082961A +A4AA27528B60C098CC0F8D34FF1DC6C5A4836C028B2295A4D8281278264283A9 +ABE23AC0A2EC42562FFD6F5FAFA72C8A029F333C26D8CC5B972073019BFB320A +966156DEF26E9AE303FB4E20EEC86A48468755EB228C5BDAB00714F96797F5D7 +E099755C8F80F0E3331B038527D5743345DDB65784D8234292AEB642C74D95AB +8927727F73AF12F8B189BDA6BE8BE6A08333ED0E2F6F95CE8367174E0280565A +97E1F70518E142D658D2335C2FF8C7C401322D6405D0964966EAC8341F34BB5D +1C654BD9D3489E6F730BB646EDE9F8607F401C5DD1B310D7D422703F305ADDE4 +BC45DD88E798C4F4286B117962E210BB9EFDC968BEE0A9C3EB6B35D1C2E8E50F +9B9A8D965B63255791A17BF7E7596DDB15B617B98A8E838DE92775EE9338421C +9A4C9BF5B8E78E475E814EB117719239075BA70DC806DCEF05ACC948AEB8378F +DBAFC9D998270678435EE7F8E262C2341B173AEE3F9A2EBC2C74CB158BE302D7 +A4FE57E744271A24F3714DF24DDC103687754CFC72ADDED342B5FD5CF9D13D98 +1A13712D09148EF593050E8099035C6B9AE8CFD59948E786E3EC4E1F426FA3A7 +9082E10E79CE44C2D9FA830113503944F8D23CDB9C27A3570907FEAEF76D3ED7 +C8E1F81DA7A51CF5B723F0E4C42E3ECAC298B3E1ACB9679A1250633C373805E5 +C9496CF87FA7A858656D4A663D3EE3218D9792CF705C361994B69461026D8CCC +130FB9D34293701A137E393F5AE79DE677D13DF5AE9EDDC545496A8C5456A860 +B36397BCC78EF754B6965D22004B978B4A55409F73C44B9FF02801D524740B9C +E4F45750CD7E45235F376CC2CDCD3BC1B8C7658F52A5EB185EFDB6A0884FF0AF +1958FAA5FDF4595D6EDFE28FB5249A40BDE8BA11AB0E997E9876CA0A0CD05A5B +A26F60316F61DBF6E65F43089BDA2D57F00EC72BA3666952E730B14C79FFADB5 +7448ACE6463BD29995D6F6F571BF3D0B426897E457BD30FE76D6CDD6151A94D3 +3D53801608A7E865A01A2FF3D915CAC2614DFDA0A931E009FD1CB63FCEFD0A3D +B26711BE84286E389805941573E02841C8E653FD3131316E768E2D096E5BA648 +9F03F9825333B2DAC376A79850AC29CEABC8BB1E7D4E34F37D6E9F388124A9E1 +9981131FE0F6718FFC580E678C9D8C1AED790D0C0D78407050D5FF315E605C73 +A16D6868E5DE5E8C1F63A88E159CC44DC0BB3E5CEC35CCBB7493975DC55F52BB +A33709E5AE3066894885728EE784142B492056EF876521DA69BE39FF4E2BB95E +C60688678B37692CD40A8BCD585240B0AA809328CEC0F954F0D50DA10DF61A21 +EADE286E22F67227CA286D9A0512EC909DC28518994C6D6E207D4D00514B0EF9 +5DCDA5965D827642072E6DB4B23D1F6C3250081B4D8E66084AEFD663C5F26E7C +E19A4F3C9A100FC4AADA76F9E4AD474D033819801F7444B51203366CC709AD98 +F62722F700E13DB42D80041014AFCA8D12B23B85BB2302AB944C437FE0FAADF3 +E86291BA50463C32C29FC7D8E4B5EFED49EC40947016D0846AC79E3776E62388 +372568D2AD0DAADAFECEFBC4F7E6A8B47C214A +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: CMSY6 +%!PS-AdobeFont-1.1: CMSY6 1.0 +%%CreationDate: 1991 Aug 15 07:21:34 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.0) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMSY6) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle -14.035 def +/isFixedPitch false def +end readonly def +/FontName /CMSY6 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 0 /.notdef put +readonly def +/FontBBox{-4 -948 1329 786}readonly def +/UniqueID 5000816 def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA052F09F9C8ADE9D907C058B87E9B6964 +7D53359E51216774A4EAA1E2B58EC3176BD1184A633B951372B4198D4E8C5EF4 +A213ACB58AA0A658908035BF2ED8531779838A960DFE2B27EA49C37156989C85 +E21B3ABF72E39A89232CD9F4237FC80C9E64E8425AA3BEF7DED60B122A52922A +221A37D9A807DD01161779DDE7D5FC1B2109839E5B52DFB7605D7BA557CC35D6 +49F6EB651B83771034BA0C39DB8D426A24543EF4529E2D939125B5157482688E +9045C2242F4AFA4C489D975C029177CD6497EACD181FF151A45F521A4C4043C2 +1F3E76EF5B3291A941583E27DFC68B9211105827590393ABFB8AA4D1623D1761 +6AC0DF1D3154B0277BE821712BE7B33385E7A4105E8F3370F981B8FE9E3CF3E0 +007B8C9F2D934F24D591C330487DDF179CECEC5258C47E4B32538F948AB00673 +F9D549C971B0822056B339600FC1E3A5E51844CC8A75B857F15E7276260ED115 +C5FD550F53CE5583743B50B0F9B7C4F836DEF7499F439A6EBE9BF559D2EE0571 +CE54AEC461D354A32E69F39DD0C017BD6576F1E9500DC0328E8AF6EAB528FD7B +85132A2A9995EB211FCE849216BF6D663AD649AE92DA953C4D520AB9A22D27B5 +6C34121FD688F9E17FE39B939D8DCED9EDDE5AF6DD7DC2297F2A3E1287E5AF45 +0306EDBA3C843FB8234D0DDEC7595CDE6657E499324DA260BACAE9D6DB126FD9 +AAA7368F7164F6BBBBE11EFFFB65660DA0961A97D51ADAF2136A085FDC16C199 +72BC2CA210B330C03F4252A275FEAADC95CFBC79C3B7285C4C7B5C9665909A56 +4176C37DCB569C8EED1B59C58B5EBD3ADD31010DCFD59411FC2020E238A07B83 +2439DEB653AFF1CF197533724E45EDA9810B6793E27943CF51484A5BC7DC61C5 +E97F71E04BB623E0BC9C +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: CMR6 +%!PS-AdobeFont-1.1: CMR6 1.0 +%%CreationDate: 1991 Aug 20 16:39:02 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.0) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMR6) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle 0 def +/isFixedPitch false def +end readonly def +/FontName /CMR6 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 0 /.notdef put +readonly def +/FontBBox{-20 -250 1193 750}readonly def +/UniqueID 5000789 def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 +016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 +9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F +D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 +469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 +2BDBF16FBC7512FAA308A093FE5CF4E9D2405B169CD5365D6ECED5D768D66D6C +68618B8C482B341F8CA38E9BB9BAFCFAAD9C2F3FD033B62690986ED43D9C9361 +3645B82392D5CAE11A7CB49D7E2E82DCD485CBA17D1AFFF95F4224CF7ECEE45C +BFB7C8C77C22A01C345078D28D3ECBF804CDC2FE5025FA0D05CCC5EFC0C4F87E +CBED13DDDF8F34E404F471C6DD2E43331D73E89BBC71E7BF889F6293793FEF5A +C9DD3792F032E37A364C70914843F7AA314413D022AE3238730B420A7E9D0CF5 +D0E24F501451F9CDECE10AF7E14FF15C4F12F3FCA47DD9CD3C7AEA8D1551017D +23131C09ED104C052054520268A4FA3C6338BA6CF14C3DE3BAF2EA35296EE3D8 +D6496277E11DFF6076FE64C8A8C3419FA774473D63223FFA41CBAE609C3D976B +93DFB4079ADC7C4EF07303F93808DDA9F651F61BCCF79555059A44CBAF84A711 +6D98083CEF58230D54AD486C74C4A257FC703ACF918219D0A597A5F680B606E4 +EF94ADF8BF91A5096A806DB64EC96636A98397D22A74932EB7346A9C4B5EE953 +CB3C80AA634BFC28AA938C704BDA8DC4D13551CCFE2B2784BE8BF54502EBA9AF +D49B79237B9C56310550BC30E9108BB06EAC755D6AA4E688EFE2A0AAB17F20FE +00CD0BFF1B9CB6BDA0FA3A29A3117388B6686657A150CE6421FD5D420F4F7FB5 +B0DAA1BA19D638676E9CF159AC7325EF17B9F74E082BEF75E10A31C7011C0FFA +99B797CE549B5C45238DD0FADD6B99D233AC69282DF0D91EA2DBD08CE0083904 +A6D968D5AE3BD159D01BDFF42D16111BC0A517C66B43972080D9DD4F3B9AE7FB +11B035CE715C1218B2D779761D8D7E9DEBE277531BD58F313EBD27E33BEF9DC5 +50C7821A8BBC3B9FDF899D7EAA0B94493B97AFEAC503EB5ED7A7AB600A22D03B +86A088CED7AE528182D2EBF4D351FD835B5DAB2036F44604002D0E21510DDCEA +F8DD36174C2CFEBAE2D183407AAC7D4D52D51D5B2890CD3B23A88228089D26BD +6E7ED4B31A60C45C7D8C00274A812ECF682228F241C13C41497BEAE1DB58C3B8 +3EED1B4F48D1A4706D71EB098C4FD67CC7890957724C12067CA54A2140855928 +E6197231734CB46E3EF820A1C19A6AE55A2547EDAA9994B59311C2D02BAF4950 +2A8739E2E60A1490884101F56392D67FBCB271783118B2568E2DD484465B899A +8312F466470B4A490266852CA56F7F56991A746CCD5A365EAFD700D47D11860E +2E2B21C90AA8B3F9915F81F0E2C2DF98D942F3CEA2300F2B9F6BC99FE21F2966 +AA932F222C35EECC2520F10C110D6FF9A32EF56A812D3760B54B451C79D6FE5F +3F93D3E5F9E4D56096A92B9E953F160551BB6FE26206D6A317219222AA58FE76 +6C758416537175D1F7DDA512DAE5A4794216C90B561F6C29C44FAAA5EB719F20 +43333A0605C0A095D8AAC862DE53BFE3EA97A756193E9E74E7604AB5EEFC1E7C +00888CF0F286073143ABD034A1BD66E81E588FF34930DA0421D01B48A71EF115 +BD68ECA6C15DB673CF17821A79484DA091B0FD42820B35ACBCC4E2873C3B4950 +F76EFCE8F0A80EAE5086450D76847F299FFEFAFB731C72B63DE42CDB342B1691 +0CAF1AD419B1B3102894D78C3ADE69C39ACD063566B0118C0E127D4A7C013D93 +C3F3A8D55B3A6BCFA37FC6796CB40EA156958F27435A2832A5FE55A08B76E258 +9440C4741B30E211BD4216DF1EDEE02D168A398B6769F8D165B7D7225D278BA8 +994DDDE391F57EB890156023E6E3D56E22843F3DCC582F7E6C571EF2BB436631 +A7E7738ADDAE7A0433C43A8A3B90AD8952E976F348973F79797E5B68469542DE +D610798FAFF13B24AFA2574BF898DBD661417C41BD0FB6D448CE99BFABB91117 +E8CDCADFAD71D882E51DF28B7D04624615C826CBFA745CD903E2303337AAA886 +DF481C65C7D914DE22A026BA75D232481DC320B89A9A2F6DA1D9E54C48CDCDF3 +F657A66DFEEA1FEB0E98A71666F115BAC1286D5E0273BE8A67ECEDAA1BFA4921 +E96E67138F28919D708719107D48D8F0C4E4DDBDFE6DEC21C27F260DF7A46327 +D924F8918E2F0837760BEC3666C7D5D60A9F2A7EB0DFAECA1AE4A79C15CEBDA9 +7592B665DFC923D1C6ECB7A3444016A1F9760493BA1D71232BF2576DB84CF966 +7A7466A55FDF764D4BD7810541055B989E8A8189ACA63014CF403E3926C4F455 +81E25361FE1339777B597EFF1CD63F007EE735B9049315DE035415170248B359 +EF4A0BD6960E23D3318A59E11190AFF749ECEBC81B0D3E26795B6369309ABA76 +C1E2EA4EC1DB3065E4618BFDE7729263920EFE5236EA355BC30C95C62718EDDC +69C3824B6A450B37974FE23553D0E1ECA572155E53DFCAD1E4F7C40FCCEB42F0 +8A41A4F516B5937D75FBB86BF290BB6548FF327853DC5A25D002A381A13DBAE8 +6CFD76979CBD26A4F4D97A791BC1E65AC1B34F43AA12D9F5E66E85E368AC33DA +2626EE4E399623D6449037D555E35E0A22E4AABC91B360D7A961FD335E37FAD1 +46DB866561D431B05A65BE91077FEBAD52EA5587D5DB86CBD753EB270B4AFDA6 +68C0F1232BDBC07B5D7E2B58AD4FCE8D004149EA212653A83BCA85A1BC8E5AD7 +D15D165521AB6377FA20A09413403C79B1266F49D983AD0BC50AB766F1CEC782 +4609F22694540DBCF5FD113626C89BDCAA59F4905D07BABD08BA49F976C0A79F +94A77AD26783AA9BC47B8A11CAA11090D09A88BA948844A45BCEDD3CDE0EF114 +2E16ABAC0D90E7B7345C04B53577218009E67C7B7010AD8DB0FF1073DE31C770 +670C6619622031490EA2A2D1A9FB80DD21A5ACC526C2BF0D999651B8E22A28FD +47B4708B288F5BED8E5DFBE57FB3FB33F00657B8544CDF6CAFE1A3BBDA9F2296 +3C5BEC4351412CCB9AB6F450188D307B9AC70CA7D9DD184414833868B27BCF62 +C8CDDF23A7D796D0A1F8155E66EC9D7B35BF0FBE185103A37EC12981EADBD16D +70CDB2D685FC168F08AE39F375739ADFC915A63C6A7246D164A12569155B956D +A7A5795A6EA9D4FDB0AFE54C63CBC01D5C338B68DAC3D23B110527B91BC0527A +30D7E8B7DB2A6CA19B7C71D78D71C41AE0557E0A9CF2F3285F53CEF69DC3C91A +B3EE632FC1416B4B36CD2FDB8BAE850FAC5E9E0B7B57534A8D86948074AB123B +B39EBA873F819AA42D36D4E07E2507EDBB3144337A743FB436545938E4DEABF7 +03EF9E9752B4DF79396023282325AC3AD52F42430A97C54287C94C3C910D025E +B6C40DC9A11D864614393CE973DE186B99F4B3C0F33CA18E1D30F8E8EA70223A +36853FEC29C0F96B59A6F59C0A33712B7053001FD554D23D0FF848FEB3C7EC9F +7455645E42209FD5B8CC08A4A882E34275F6EEC5B16E7A7DE6C9D8941EB6BB46 +ABA35AA067E0439AFFF7DF7A660D66C8503BF35EC83C32270E04512FFA90618F +6825695BB8ED9F97C4FA706BB84B66A9BB210628EBE19ADB36D679CF9E7B3BFA +4D4764BBB31682A14FD537266E2CE1F4640131D324382542FF8B8CD9BB108B69 +6655FE8FCFB277A88C58A7E2AFAC9B740D840EDF1DFC50747CD3EA1DC24B050F +B12404954E42E14DB6092B38F32CBAB9546A9784BFF7FB16FC0F3D2875A35A16 +75EEEA82FDD3DE0BAFF2C26BD37D229CA06A002529D27EAB41E20818ADFBBB5F +0AAA37BB95CAD96A3F700C2E5B7DD988E89049051077CBDC2DDA592E2B99C090 +53C7D459D85A72B01880F10F9919777AAC2A3133B8A7CC5926ACB6C87B0552BE +D310D8E86E5F4B142850D45664F2CB087C0E7546DA66214DE18E67D1BF098A30 +137068F9E9735933B96B4242E805B0D4E58FC9EDE7330D4217C9315BF6317608 +ECEE1BFED5BE0CBCDBE36119465AF20A6D7A3244652112A1E602C358D5271595 +213FC19C6562678CA6B38A817C0E7CD65FE588A1D9307FACB838C6F5461C0ED0 +888437043743899769E94B7EFD49B022E3A663EB0A00479B5C291937407B52DB +36E71F524C1C6F4A91BB99E1A824A25C3917DDD42FC2F9DF16BB14C4D28CFFA3 +BBA2BD381C27AD1885F7DECA566B15C763B3B4B3F3EAF3806275D8600FBE4B42 +D1FEBC74147DB1CF64549C9C7DBEED10F44F4D585371BBA5357ACE0BF864231A +436FEC2C90C94ED01324D5946B89CC05C087CEB96AF03E350BDF44683BDD566F +0B2C48C4041411EF91A57119C9ADB0F2523477F46F72FEA57ADBB2AC25D3135F +4F0BD460DC6D8E29830341C64BAB91275E9CA08B713955A5D344EDAEF871DCC1 +B50F30858C3C3666597B73A752E93DF128546D1A1812C5B916AE1F44CB36DBC5 +A26B5C3ECFE3A3E2A013B5BAD5722A8943BD678F651528ED340EBBF59FE47E0F +D7BC565E44C38FF7697C3F1569C241D339EBC685E7C4D7BBD318B74E6AAFC97C +49EECA3B147E485F1F2475AE983A18395063BFDE981F51E6A2CDBF1906E499CE +6C6403DBD85E65E44839011D7E3F62B7504A9CFBF6A5D3C9AFD6BA64E636D7AA +E43BD83ED14C6EFB36A5233A5D795622583AFAA09000C8557848705231B6ED8E +5E3FA79173C172763C70AD176F4F3DB0054F144F661F9F028B596107DDA43168 +11B6A56CE4D375EB9F3DACC6EC06F632CAD1D994217FA7DA1C56F681FE7CD0AC +6CA60BCD21FF4950D20D4A3F11E0662BC1D3CBD8AFE2DFF3DA1C609E0B337B88 +87B6FC6E735DDEFC00C491916F69D0478BA2C346608AECD337AA80031A269380 +45E450ED7BEAADFCBED412595BAC771ED3C1BFA4459A6278EA1F00CF89C9EBDB +0A43F9CDF70A0AF808CB329CE9907FD5B36C3AF5D1C475AC99A6D6F22596CD42 +1CB7B14123D38D8FD9109438D9F49EC8AF29176204C0A776C60009AA148697B7 +F5496C6FA123F9ADAC59400E139A0B886E110425839B747241A0FD2DCA8621E4 +AC3B71FFB6FF1BD4FC5DF726DA5F383D573640774EC6327F772290930F2656C3 +3D3B1FD3F6B321E0919720F03F3C6EC09D05629549549CAF621EF916071CB6F1 +22625657C27985471E16B21714100F8B80A2C4035C5905C54FF95AB7358117C0 +DE70C0FDA8187FA316189D13A9176C1171A318A81D6A77F0E54D6DE37E5D81C2 +5BF1C7EFFEB8D130DDEA4250C4FF4F1BD1B535A20C3FEF972323F114A9FE90D8 +48162CD532AA3423FDA9AB00AD6754C8216253CE936DAD6AED5BAFAA64921186 +E217F709A73D6083A8D04F11FFF49D2D8AD5A55415043A8EFB32A478B9D70F95 +D9E63A92B53EFAABD9BE62461FEAA541F5CA67FC137E3AAEECB5BE50FF74DAB4 +18BAAE0A7244F072B33F3AF7474EBC681DDB09F4A11663EDA56268CEE9E653D7 +4C068E233BD3F142653DCAEB01E2825AFD6ACC54659F66B21AEE64F66727F033 +B3D7D17C051B17B4BF41DAC5D8FCAB88A36DEB62BCB5D248854EEB8A9EB2672A +391013A66539BDAAD4189563B45C2FB57EBB9B02BA6845FE2E7D66CED6098014 +2831ED864C366FD3D2A36D9823E84C686D401BF9F01B71CB9864AE245E34D554 +4DE79FEE3B5C74846967D0512CC9FC103DCA3DF48D0D491E70C8A102AB9A92AD +E868509AEC8134C6587B505139FC438FA994819CD17F108C754DF744F31B0731 +E07BB4F12389EA058127E75F5AC024595CD8477F5FEC80AE9EF2109D0FF15326 +808FC436888B98938234E93EBFB0BB009F8FACC9D0BC0058E37040CED69EDA45 +D08942E834665C0595737BD2C4B18CEF53BE576C03427D0EBD25D335ACCB2473 +63B2FC3FF036BEF8DE2CAA9308E089C591C331DE41017E36914FBC5426358701 +151572CE393FABA2C55D67E7CDC90C78CC6D58C3C6DF6524E5A9804D0D9A0E3B +DE85F7D0057D2ADBB04FC0077E0080DB404726A8AF5029FAFC05589D835F9ABF +ABAB4C3B3F66384368D4A2B6B3D6C1EC0FB4121C59D1C5C50CE8E65E988D06AD +7D03BDC5B095F3BB54A1E4E7DE57601A28BDF6D1C8A26268FE2A8B510CC62B10 +A2F69EF9E8A766BE982C9D791B42C10502F3BE4516D103DE941633F021DDC99E +4C6BB01CAFD7B886E677897C775485878943292F8592C4DED879058D96EF9F10 +B89C8BFB5567EB7D53B13F1C9893A60D22246DE121C993E9EA563EF972E433BD +DA1119607CEC7C89145164BBF82194A31932BFA6EA40A2466EF148E9EF09209B +973714C0DADAD79BC4DC8F767D948AA227F9A12F46262ADC3FC80BD464EB3750 +51CDE98239A728AFBA32DFCDF0E04F1364399121FBA23EA9660E71F1BD2BF976 +F6DB04FE31B3D89112C8EACEC00D8BC0834D63025580AA2A77588FEF5F95BE78 +7AB5A9BBD218B94A7D7E14AE6FC65A615D39058DE4644A126ED9AA1EA03B0A90 +9B8162D84A883D5BA85B83BE8E7EE7B3EFB9F50ACFBFDE4178C4D12D6054A046 +7CC57C142E055B9B822422C9F6E3F2323278AD2299BF211302CAD720BD980980 +4D4EBA8BCE79BC6613EB227A233BF4E0C5B73FD1C424689FECC8949C19E581B5 +9B4534060BB017C315E46E102F9C54830C11CF867846427AFF0293B6EF11970F +A5E75BB89A8937512FAE083F1BA63BECF2B5ADCF9618F092F461096C565B55B8 +714F9AEAB4F76920A80BB74538CAE55A617C3B265F64E1B1EB19D96DEE120581 +7FDB28B9823C6F5241ED566AA02650CEEA40E6E1A2C6DB55590C5B5572D8F57B +6AEB288D7869B6A7A50B27E496905CE770852E9BE460CD2D1C723FC7236F92DD +727B27FAF82E9E7F32BADB7911ED3C6525D913BFA333EBDC18573F1441624892 +EB53FDBB6A945B38FC9C376C3D534127720420E20DF513EF381E2B6B5D5E5C23 +83412BD67435CD6BCE407B8FDFCE4F0A0C35E5DF9DDBB2D1D5D7CB2A45D886DD +58F908A07FC48C245DC31F28D30FFAD477A1D1AC593FFE8086D05B285C700996 +2CB06125A817D4850B6D3DD246D671554AC1F513932BFACF92A15B75F87DB140 +F5225D5B066A913E6E3631F160CF60F54709FA0DECEBF1BB203F4D902B4351EA +6369E4872617A98DDA8BFD29E8933D201A09149077EC934C0B082B92244DBBA5 +0E70943FE5E1E8823E0620C857D8A3CE3F857FA05A0DE16D7673E9CF27C847A7 +C8A8DC1F7B8E80A652C47C0AD748A60D76724354AE6D98D37E164B8DF1AA36C3 +04975386BD0C356DE67AF3AF9A2A7C5AB957994A588CD1BF864C64C2D00F8D07 +CCD30A5BEED0371BD23A4622BA3B8EFC35FF8A552E770FB899BFDD7A924F228B +95B56FDDF795C0D469B399FD0DDC140CDCB61C6A6E30561CA594D7A7A0E86CE6 +B8B4A04D3651CEAF4D11F86CC71A66DA5D66555E27B1D3503E92E368352A0501 +FD045A7D79716CA26C601CA2888B9E57DED1163C821C10EAFE81CF0461A92413 +BB96D2CBD385D17430F3DD50B260F58DB83423E826B9F55FE96ADC290621D17C +8E4BD1A39007D3EFFB5EC104D2FFC18DF08E16753C26836752BCA0F190882433 +00D86B38E658215741C887494D161A56FDEC75FD5C4E3802318C3D2B72987F3C +2DD3B75F669F2808F2A9C0880852A4A6236FE8A4AA4FFF753FB8E0403A9926F2 +73A342837512D46102279CC3B105A959516C9CD4FF86C704BD81A2DB5FC1BA55 +4798041822419EE5B201F48A1C182EEB9530D6205677136F81D3D911C98FB220 +C04E1532CBB717A68A5AE74FC5F6ACCFFE1ADBF194551F4E9E8C481C32345FDD +4615B1EF62FB11C900DF204485616A9D37EA2B41E81EB1854570A07B76C7A064 +2C897C81FF81F703AD989D304CF7AD99F9B900681C935A9FD79C0188B3E2B50F +19B15C3D95D0319406F917A31676DB06839E0180EB5AF09ACB81A4493CEF52FE +F606841668FF02BBA4492216D789B6A3C4D9C3FA1310305E9878D7457D7791E2 +4F4749102F501AFF64C3EAF5A90B7B85DF090316D74ACAC512B040C19BBC61CC +2534597944221052369729EDFF43EDAB917F2117353A8E76A6ED790FAEFD58CD +7B0F694B156BDCDA89DDF6DCF2B47B71CCC037111432C562AF9C6B6CA1D1BA78 +FCD24F49127731799F7A0C29786E2DAFBE0A24DBFBAE0E9A0DCD44E4649DCB7D +2916659DB0C65232B5CDCB015827F31A5530489B79A6BB45D68E19E3ED13D3B5 +31DC8454C68CF35E3E8FD307CB301884BDC0A03EDC4F08D4142E20494C59F6EA +8CE8046D29869C7DDCA98EC906411C57957D1C8FC5404434250881714434B1A4 +5E368208D33D37066855A8BA7318DBEAABC15A83F2E1E50362142A67E443CF03 +E31904E3AC02993022789C3A1638A2056A0D94EC8D64E2A13CED8014C4F4FA51 +8F54801B2BDE7F9F2D0F656A09EB713E8A97793DC5E7F7005241AC5D45BF297E +429C0CB733F1B86A28AE15CB627C98548AA0DFC81E7F62817989E325324AF65E +C44FB6A9E42A270D789463D125EEEAFDA57DFD09C94F1354D5FB7B10D8F9F47E +B6F581CFB243A6B634647EB496F2884CF4DEA98503F4EE906A38173D2A6BDADC +A21B3C206B15BC842DC7FFB7022AF0F963177F310E971319B9DD3BCE508D4B92 +AB9B051FDB2851502D383EE103C4B0B232E32642E305838BD2D3936387816961 +762185C7152062F990585E9055F94BDBF7BCF46EE1E5D30558BCCB4C996F27B9 +05F40807866C255B81A55D0739041B5275A66F58FC149778AF1D2D90BD83397A +33AAE594FF0A34FE74F524FEB43A223F8E29D7ACEB1E8838EB0AEE7A5AA401CC +9D93AA03026E0879E9B7C7BB3FED71492BDDBB28EEE6860FC9E453B0A73982DD +7AEA950B45736DB924A67B8E88945C2FD9CD01AEAABDFA43D12083AF7D4EB987 +FCD27CA7EDE61E5707AB481BC4B566887884C33C89A2D0B234D6135BBE98ADD7 +90BB22D3BCF19B4C69FAAF0F7946A8E3ACE5C933E2AB65511E861E3C5F9428B7 +B6B61DE712F224237AC705913D0C15E717D00F1913ACF411528D7A0BA81ECC2C +EE9C5A09F0414B01AA880EAF1776C3C4C965FDA4FF258C2C10ED0C0F894F67DC +1EC0876ED390CE114D4635F1F7837381CC94F52F4DA12FB9C700B94D75E282BA +C68B284F09331DCA78387C2F262FFC436FFE0B62F304CBC8BA5C287736ED17EB +7ACE389AC473AD84A72438FD57D3F8BC75E058F0ABCB016BE01ABC26E1F2EAF1 +406809EE7F30883E006C5D62FE0D92AF0FF209B881537F7B5A34443B9A94A6D4 +4C6749230716E53A28B429458A485D1C1530527C869EAC3DB8E0928515CA5370 +83D760905152AE563F58CD82D46F80BBD9D6CA797FC8720CBE190D7264D4C754 +4590D83891A2A01C4D43AE46AECFB938899BBFDD5A0719AB0B51BD705B33446F +24DCFD6C9D7CEC05CBC7084CFC316B0370E9F9C5F3808822C8D29CF927C76BDC +E6C31B044951C7F455686689CF06E8138A7B19B7CE1DFDE3343136DE9287DF1E +81778DDC3BCEF0D6DA8DBD4D56D3E06FD6AE0B51EABDB7B52024636DDC0A2396 +D34630D3E3F47889DB84CBEFB6270B85E448E02F6E81A338AE0230551D629FF4 +94A5859462DCEBE89BA8E57E107F6AC587F79CF8B427C493A5C14AF7BB045176 +A9FEE5E34663AB3AF9A8CF714DD1DD50E18889D04110634B15674D68601C4ED3 +BC8B95B927E5B2E16880E1BC5CE1FE385A2D416973B52C1A2FE4332E964074E2 +94A69FC4946F579CCBC12BD381A80B5F2B1C662CB98138B58EBB93BCA99564B0 +98CF2EB381B04F005343633B163C4DDE8A98500B447D2BEB878AFE8982510794 +D276A4A6DF3D36B0ECF8CFE7D3ED4B364B08AF5012B5AD4BA29FF5886BDF1BB0 +72378D823C1929FB02BF7C9E41B483EE3D18817B056E8FA98FB9863D79EAB517 +54BECBF7579400AC5DF7EDE80E202AF75E66C48257A50390A9784BD6077C8FDB +CBE3D17F8BAD802E97087A8353D3412C24B0F886AFF91D101A5833CDADF898B6 +DE548E996DAFF04D6CF8668A5CFCE8400C2737D0124A97083CC808CB80B24BD5 +0162448072D97FCD1FACC4146559DFFFA11BDDE0E2698D92A9733C10BFD23E38 +73151FA9C0D030872CFA02208A31647E1A7DD2C182044D90F90D48A9C4C422A0 +FB5A3A88331168A296EEDFAA02AEAEBFCA1A698BF8A01F109EF2FB767B4F679D +6A39AFF1972E93364E5FC5E52CCB76B06560A8FCEFEA58BE9893F9B20ED2CDA0 +F0A2EFF2C9142A50B73A1EB3547C2B7954BFA47C590FC35260C75BA557A36AD8 +18CBBC03CC65C597F432FA0F0F27DB31EEE7F754781BFCD4EFF6570BE397BFFC +35A7C0443A8172ED4FCB128DAA55D7A0AC14F9FFF97A43538C005ED8A1FB1760 +8D01F3440420FFFDEE149F036E278E481C35007888431CA712097362CFA27134 +36FCB600FD4C4541659571FC17B8136CF3860E2A41177C4E0B6B5E39B51ABC5D +5B5D6D732DD3D122B956D4B4328F15252762249F5D50EE7E37FBBFCFE28B12ED +48285FF811045768B7893A838F0E02536912157475D473DBB14CB666A00B400C +276DB1129A8D68681CED61F7E21C5761AE13FC383F55BB6FF75579CC533AB682 +E2811BC342AD6E899EBB2B16632CCEDE09B05F9DEBD65591D8CE0B6EF0FEC4DA +10A55429C85B679511962DB373C41EFAC813C0674DA0C2B02BFD0DC1CF82E26E +15BD338FC3236CA8DA4FB3437442EFC077549ED51208497C6B074DFB6D386333 +C0DA4772232A367AC13665201336B291E8F08BB7B30F88A3959B21C0303EAC16 +BF5BA8B4F051B58028544D56A13B171BC76F3854974A0632E262C2B90763593C +D85BA7A24030561D968C05E641F3A72EB769B4 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: CMBX8 +%!PS-AdobeFont-1.1: CMBX8 1.0 +%%CreationDate: 1991 Aug 20 16:36:07 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.0) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMBX8) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Bold) readonly def +/ItalicAngle 0 def +/isFixedPitch false def +end readonly def +/FontName /CMBX8 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 0 /.notdef put +readonly def +/FontBBox{-59 -250 1235 750}readonly def +/UniqueID 5000766 def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 +016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 +9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F +D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 +469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 +2BDBF16FBC7512FAA308A093FE5F05C11F9A72F5DA508C30BC4BF52C8B1EC5FB +7F9DDDD0964A6D59193A389D490DAA6F6ACD02CF71C06802F3AE5A001F2B3A6D +EEB60E9DD26DBCE1D29C825A9BEFE3A6572E70DC7B60344C3E0C9C77ABE1804C +7ED61C544F0B4A3D6C7662DE8575C07BED3F6DBA7D64A9C8613AA152B74A140E +AAD9B66E0FAEED6AF9D1820F361C1269A5E90519A3E6D40782E06778C0AFAA30 +E8CEAB87054C4D156C1B14B4E8471D78648FDAC70A3B8ED474FA356393A77420 +4211F60E397D2FEFC6A8D91A80C84EB9E38E663249FB91D5C8A5CBA68BA04272 +5D5D42497E1CF5CA1E62EC2B139F5CD4D6318EBBA7AE28614D2D88709C2A3762 +611524B8A1FFC7B0FCBAF77AD8159C354F4887DB1A27781DE0A4BA7DF2CE2025 +D9278CED48584E8E6BDF30BFD24284BA1DF828B637BF84A02908BBCED67372C9 +EF44711BC2B1DA343C8D9D27A9745525C774F5D639B7AEC197CEEDD06FD27923 +35ED0D402AEEB51134665A47847429D91CF419CA9B09DC905F610F8DFC54E606 +ADCDA19D5CC68A7BC7108EC9236C64205B23CE68B9BC38EF3E5BF9E0E6ADF404 +7365C8D0436609438C82EEB2F356F79186DDF6C1C797D3C278108B1767D15178 +C4C3E8ADC2482BAB9536AE8419E5CF3EE1B6E53BDCE2A83E2E485F496A562C10 +B3F5A131BB19D1E5414C86C5F995521076340536E10613E42779FA15EFDB451F +53495CE8EFF239E4EC442E1439594549D45F5276F93D496C9AC712D762D0B702 +E894290BA028837304AFDDD8BAA6564E9DC307A14A7A206550FADDC7784DE3BF +3390188BBCDDD929C82B1D7B529553BA75ACF5B385D31EE3902D96B2B5DDFFF1 +9F0F90FD791E54128C1717F313486896868A34FAFF22E23CEF046D02C1419BA3 +4389DED48DFDE7F78F8ABE3DA17968B0FEE61D27AB43F61978CC300F2924EA14 +BA6FC2FB5CD4E01313B34CEC99B77A3D837EE53D274DC3BB04EBB9EF0EEC5A69 +962A0F4F2A482166A52E809D5C4888EC688BD43E5A099D9FA7035129CA7C2722 +844491DE966335021F4012ABC14F978ED81748F0538178EA4C9D7A0B35351EDE +6807474C509D11DAB19B297536ABBC95CE452FB95A95A704B50458BFA68E30D8 +BC5CF97BCD247877760E3D6214BC148EC97E11DAF733750448223DAC2431D482 +63AB82145EA5F9ABBDCC991DB40F5DD4D5F484954C2E595E477F986444F55AEE +401B565D0FE39818DB83ED1702301ED4A36C26B64CBB6C061D6D0D15E5BBA146 +B302DD3E988B4A55409F36929DF832640D9E53100AA7ED1D1B256F255CCC0690 +C3CF605410317820B3E03ECB0B9EB0127613DD7816D649EF409EB9C1EDEA9D8B +54F7AE88DD345B7E37076A9009EEF28BF01F3A1C854881D99A29D9034BAAFDD8 +C3F2FAD2A47CB69009B4352F69FDC78C225C69B3A637A26065954A38329AF9B5 +29A7F6932FD992D80292F2CD1597FA436D0DE7C91407D1CC2AFEB98F55478094 +2741CBAEB447D55DEFC2B7C49D020B6EB50616F4BF5063D30EE5838E4FC2E147 +715C3B6416075E9AEB71E42569A9ECEFF9A2AE2AA55C500BED59B9C1F6A1F66F +38AE40AA742517E379E65283EE626156AF35FE4A26E1CBA0073A738709F54B4D +B9BDAA4EE057E728D0B461687C9975DACDF3690605C2D98EE0B7BA127114E52C +23C542E8D2EF39D2C9E4B793EA50A934110C51066DF92D7B38C3480777D07EAB +49B84B4CEDEE7158CFE26EC882F1A5E4B28441561FD2D13647AB40792DD4A970 +25B7F1A23EF4EBDCDFF405B122646895FB3E8E628027E34A72E67020D5E62A87 +38C223A0F1BA730FB4FAC3112FEC9111997301529D41598F4A40249E083ACB42 +ADE41AC53ABBD8717429106AF10DE43B659A6BBA8A235107E1CB2FE299511AB7 +6CFDA174E57BB46991370ADD818E0BC0C54A8C66E4C97AF12E038FDA89110237 +F214F4D582705CE5B3315FA281E35AE58953F8D70457CADDD552CDD364C90FBD +DA811ECABA00498EECC9094A28B5E198058D7E2D4D76EA6D75959FB832FB7034 +989D3059DF980833CB801F53DB5E1117FF0BFF172BA5821D83A2A3D669F39A29 +B85B33884FD0240588A9894FC06E395193E97179B9DEC65AB5F823757547945D +863733D848BF0FA705C52606455D8A3541ECD15C42A0FFA699FF350DB28EE378 +3467202A90B7ABBDE00DB651874F6D60CC26909C7618D4C741ACE9180A572632 +BFCE0C6C9021E1ABCFAD7824095B19DF5B849A293E7F1795806DF7FC89A8A91B +27E3908645DEE3E6468BE5356ED95832591900216DFF2BF9316A474B7BD36214 +8EEB23E9AD6FC316076B051DD9C90C7D632120F972FC285632F12367C5ED1560 +9B2918D03B72B9B551D2177E700EEEE3377B8CCC1AB270255D90A81C3183457E +4358C0F074367D9A555149559B8A6038B2F3E740215847A92DB817B98DB070A4 +6B92C8C8A0746319DF9E9FCF25E73789ECA755D28959F89621F315608ECE9029 +BB685128C8D22BED5500D1886C7A677C985DDF465869866E2F725F6BDE7FCE2C +C819498AE0DEA811D77FD1C7431BFA72BA2ACE9656A7B947B698B95EC35D9A1B +E9E908B2E47F213C7780BA017D3F52E3A65ECD58002A40B9BB01A7A9D9B05484 +AC1831899684A68B28CC9DE6C37514A815145B7B13990DCC49D8C28642496457 +B23819CDF607DBFD58F09E920CB72E0C971D883DBB5C8CB563BC09F096F20EAC +4F2E6391A8736AEDF56B60A4FBAAD9E2126C42FD8C71B5AAEC21B6206E7547E7 +0B0CECC2EFE5734F00EF5CFF7F35F4A49F2F5BB6E3B5260A9FF0C8FEBFDCD944 +F797069CE01E2CD7CAA31A8297142C8BEC67C912248931C6256BECE7D7EC08D8 +2F81BE0558DC9C80E7E9B4E60BFD3ABB8F33BD62CDD74C78272833D88A13116F +1999901D3D02A3AB6DBAB0059C475931B9C2C7A99CE5CDDB388D95B2682DF46C +AAB2DE828CC5A4D2F41B7689C83E30D4BD80B9909FEF97441664290119C8C36F +E3C16D55AC2E121675137F4BEAB59765CC5C85C1B7EB918ACA2CB44EB0B06CE9 +BE34C937A8AE8122BB93773F6F411F7A759AD4811874D72F7E3F75EA52109914 +7D00EA70A4DBF354EEBCF2E8AE0CABEF155ACDC24E6797AC20B388675E8CB391 +FBA2122CB835176E241899C7F13F534DBF8DB886A6F83F126BF019DBF9FC5C8D +E4C95FACEADD7E7B6A1755C1CEF78D7AA92286BF4837EDA2E794EE2E2277D58F +E66DAE65897E32BF653F4AACBE2B17AB3AA7FE117E029436F8F6059069B74ACF +1EC7B1302AFF42B38C72A96141B21FEEB4F4FFFAECEC4F2C2FC1068D831DA3D6 +7BE531812DE4307FFFE8A98B6C4AB5F9E5A1F6956AE39807CD6A18A12AF22992 +35D43F2A274D6D081E8D530C8BBA1CA5B5F8AA11E0E05036B272D9CD053C615A +9DEA172685B70429A9A8308E9C16B95E6E06789B1E3DD22A7289F05D13BF0789 +F50D6608835CADDDA11676597736C41E7DA9A948C857439F0B6F39845FB1679D +3C8C14F3C8C5131A469EAC144B44DD3F3DC1315FB627A80587F37A42B211064F +9780A45ECEBB176CE484A8018D41896F6FDB4E4F4257A60E869F280DE1CAD45F +BB478526395FC993C9CA6A566D3FAB84B678D7E0F591A8E7D009DA0952A44632 +DC4277D08D56B5E81103DF31BF466629EA658C190EFC1DFADC75D272E7DCE4A0 +C6309F2563AB76640643CCF0A905614A3EED3426DC172A4FE55B76640B415A10 +951883D8FCE87FFD8E1987E93475DA0435344EC33709FDEEA16D732B9BF323CB +FFDC2F308FAB7D76D431713478E922BD9CA32CF958B8E6B82B8ED9B81CB06BCB +3AF17A9CB807F8FB2A963450667F7CD93E292E13916FC07B976E7FBD978D10EB +685D7160102AA8359E260454D8C094C2BD04648FDC58E14A075B6EBE0E861E3D +6117DA938A1215B0790E7F46B7EEC0AB98C37FF9A54A7D3A6DD83759FE9716D6 +80F4AADC28AA151DC0E7916146343B2229FEBBE04E4650018BB3D3172C2E1455 +3080E67ADF626201FECF58201BC5FAEE3C01E8EBF8781A4F8595CF80B013ABA7 +A2842C6AAC9BB76FCD645F0B5A081B69B5A641886826EEB75C8ABAE54E7FA7D4 +39875A9ED06053C61A330ACBF818BE56FEC992BD5A30CEB78D8CA54FB1CABC63 +02E052501B309D157571BB3BF7E27493D6C2BB197064E1E26DC2FF85D5549B03 +5D53346C86588A0980DD26175314898BD7288FDFA33E44FC77AF2AF116D39543 +13B45BCFFDC83E8B9E2C9AAA46AC3ECCFB07E17B35DE3070818B648E2A69D438 +FCCD284A6955A8D50CCA3C46ED33F8C3A3D686311BBEECBA3CCA1206D01B955B +A805244D4E5D4F02E346B408F838264C5A056413D25326FF1AADBD21C2130B87 +CB6F9C91420B9594309F002215ECA7A5BCE554CABBB1A43CBD3E76372A48D95A +2F1237DAE67566A6BFF200E263345D4FBD5A1B7266BC04F85EAF6DEE32ED2D01 +D15F80DD5D8C1EF7E614BB629990C440C0B964B39104F82CD5D0CBB0BC376ACD +0E2E75D06E65C92D163E7498EB7B0F9A7A6BD9C8483B0CC801C30A31A4DB8DFA +2DDF2F1EF87634ACC600B066E017BDA91917569E9AD59F33D7564C875EF596AF +A953F2226C410FB2CEAB7A508A666CA3D94F2C25A931ED9518DF783AEF44DE3C +733875511D5E6E4E06E3C430D979208B60445757CAF3EEB3B63C29751E3C5C34 +D120E62F4868D87828D191221FA26BF60F4DC9741991EE948B413587CBF50520 +FF5F296B9483EB0E056F548E82E9DFECC2B90DCD5D5EA0958C62A48B1784716A +859C863592EC99195BEECEB6AA64C2A870D34903722AA7B19B1C7F5126BB74FF +763EC2285CCB52F13A2D1E95D8875DEECF34DDFD5CC3F18F27E925C9BF9690C6 +263CC22381F06042F0AC415A28EA5302DE6F35F1215B04C098AA18277F23EB63 +E08951EF3059C4A3C606E548DAC4CEF42D2A116C02EED4270D1334B3C7813820 +054DC6639A3C4B25A398D5354F57B7C556A5A95D20FA6FBF3406E3CFA512648F +6680ED47767E80A0F0F1EA0603CB441476A81B8BB278584E747369C88E4A9A27 +202C3688C3C2162AECCCB65FEF5314F81E0953BA98E833F84134502BA2C4F0DB +CBCD65A0EB3DEADFD9584FFFC9948571038249749CE13A9FF0969100DB588B09 +901964577D93D0856FF3A078C4DC79FE5B6C1B5A5B35FD22B214BC16E2D7A5FE +9B34197D4A24A1DC48240C6CBEE2F4FF5A1353A1E8F83209B0310166B96FF31D +56CC9EB5BC1206BFAD846CD174304627F81638FDE11A6BDE75CA9F346859E578 +85F334A455BE91A56B9413EE7D8AA01FF35499934773CAEA0D32041B04933C9F +51AAC647AD00541885B774AD4D3634D409DADF2004D8EE731A3E6134D79F0954 +CAE30C6A6CDD2BA4A9F93C10C94C1F9934917627E4FE44965AE2DDE0B415E0AB +EB5D1624171C7D55769F616F73D7812DC4222C2E4D65DF04EFE406BC4835F746 +BCF26D09314490CA27CA888713E8EA68C130EBB4CC5E23F2468220AA157D6803 +6811FC79435982D29E09A43F7707B821B3FD44738EC3993797469052AA9C0AAA +F21AEC2E1D2DB7AF0F65B4C3736FAD9C3A4DE9E72CC92B53B74AD4343D244EA9 +EC06AD54D945040A6F160A6E1D9F4B5902601647A2811F9D2312FAFEFBB31BD8 +0D0B39593E10DD94B862FF81B35649FB16178D80C9F6F027C2CC3BEEFB474A17 +EF1C77A9247B0D550BD314240C2BCF0A37DDFF8BAB723B153970CE2849897844 +29D3C6ACC315198B15CD9D3FF34A8E283A5137C42474BFABD43B7C7181409831 +3BC0F8BF0506CC5FFE145289105E80854503FD574F37608D176B4F9B60B05222 +6F4D14D97B85F27066D0E19999AD9EF9B657B24136FDF9061411735629D48504 +1171A1A9186630275E705D61390E2BE3D33D0D97902096587FEA4E7DB365AD54 +0393E3A46D605A3B6EA413D14465B7B8E21106C8938A67E51FE9B1BE16637E15 +763DBE8BF1D9A10E28389421AE48C8D31A6F424350E7F10804F4626331AFC871 +69CAB26391A66A12BD07B8D761380F5717B207850257E97EA23ABEF5BB35BE49 +A09FA8CE4B0C101F614AFB6C4EFEBF1254D3B86F55F8B56D9AECC8E381CF1421 +FBE59AC373352296D8F33468BBCC19EB3185406A09528BEB811C190B99FA86E5 +AFD86E94A12C600D267F5F43D0DCE259D6D191E425B1CA0DE9175FEF448C9F3D +EA82033212ED917388CDBD31A6658960E6CB45B6D7F40653C4802BE6C26ED167 +EDB3D361647B157A7AB0C0CED73DE07685BC674C59A7CE9CE049DE8DC1B5459F +8F9C54441B994483FE30A024CC33F093D6FE259626A436F4DD28F37B297295E3 +22AC3F9976E7ED86D6C3C7483971D456883A62A63BB59F3CDF5E1AD6BA381B9F +B4D042F69B7B6415B641E569FBF1A127256CE296DBB5629CB8B37AC47C93804D +FB58DF99F70611FB2631BB84BD7E34F671EBE84325C35C4529E75239339B09FA +313CFDF6AADA +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: CMTT8 +%!PS-AdobeFont-1.1: CMTT8 1.0 +%%CreationDate: 1991 Aug 20 16:46:05 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.0) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMTT8) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle 0 def +/isFixedPitch true def +end readonly def +/FontName /CMTT8 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 0 /.notdef put +readonly def +/FontBBox{-5 -232 545 699}readonly def +/UniqueID 5000830 def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 +016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 +9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F +D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 +469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 +2BDBF16FBC7512FAA308A093FE5F0187316F83DDE3E2D27FCDF6C5CE4F95B6EE +3317BD91B7921F3039DD35FEA387D5CFB6C6E9DC84C178F3432994FC7FAC6E5A +ED41A1E2EBA350178FBFEB45944511731BA827167DDAC238FC69A5486B995477 +C469E2E27493B0B711DF8E267D3D5613B450011921685147114106C9472580BD +F531022F6DF5432B2A4EBC51A8032C7F9689B6FA942D849B29709631613DA68D +4DF7B6F059A19304F40A3C3580CE3B51D79D42984194D4F178801720892FB6E7 +61FF43C63F9256B5E9F4227B1378222BAAD4D52C77462DF01892220E11129C16 +6C9E45BB9F01ED7C1AD5D8B4D72BE0E12969AFEA90FEF170603CDB91CB243173 +B19A56084D10293B80A35275F41BF78A054DDC98F4A1FFF592463D944960FB31 +6BE5F03960F9B1F213CBCC7FD448657FE388F10104D42B0715FC9571CC60CF23 +C72560CBB8835A0CA208FE06676B3B48B093CB7FB2C0C53AF17EC5B372A9771B +BFD52FFB7062B4FE0106A01A2A1A1DD4EF5C8C7623EC9324A2CB3B402FCC1FCE +52BFC8662F8A39D5F1B41C97E7CE34E16AC28A1E94007AEA7D4C519399F1B7A9 +48FA7DDB671067244F09C29F95DD60668223F45BBDA8B1C452E930A9F3F341C5 +351D59EA87462FFB30277D3B24E2104D4AAB873BB2B16DA5B23BEE25BE2C8128 +C4CF2F4F438A4E520CD864F3EAFB5363753B82978F6FD664A14E5D6F3A929348 +5839EA752FD635619C4FABF1E1454510BD9D6B538A343BE748AE05B47F917367 +1BA5EDB15F1BDBE806E51B294257D7087334165419A6520462D794D670A1D6E1 +3BB03BF689391D056D55AD660D15A386E6D222C9572BDC4DC8A46EEC75124BB5 +F0E8978FD6031A90E4768CCBF62A5ED8C8087FD66D2033011947634878BDC0AB +6501DA7E6D96E227068E993DBB0072F037CA4111CDD092DD0CAEC1DC6D0CEEC3 +B291B4AF285DBA243A3457A855171EA0527DFBF10E34A60D3BE2092B3218365F +07271A0CFA3AD15205D0D0886AAE1C89807C74C6BB23F55F0405A522BE78D4C3 +0E6C7A2C17EF66CDDD65AB75D03526DBD692FF1557B689A200BB5A593E92DA77 +01E5A82004AEF4402C06C65B21971E8240F87BE60F5F7E0B56D3024B7D49B9A7 +724C55353C362CB35B720A5405B2B9301A1A0083802E8766ADB7856925D45001 +1FA451AA61F72022FF0419B1650CE94208DEEC7EE3B53ED7F9E995F883338936 +EA6FCE2E2466BE5C04B46FC7DD9E80E6F1ECDF77599D3AB9E61C00D7E425636A +E0AAD63D341CE31564C7882916EC35366208A3C06435BF1F55086D627E06B996 +7C49FF12CC6D0E793EB19C4972C3904ED0FA9FE0C4E05140CBAB2C41EC148B05 +43A9AD2CA401532FE0045933AE0B08BC1F16D94D85420A26A9D32A9F2486BD9F +EA2553F2E8B6950F63A1102E9E8DE227BD756612412DB1520358DDB08CFFAEF4 +AC3597978F43E982BEDBAD042738D05AD42348840F9D0122535E6CE711AB2898 +9F1003DB762D3B15BF35F3B7F593C40282FCDA0CFB1DD0B2B3A8DB68E326251A +E4B6B6C559E735EEA2CB221ED8B8E2366B1BFAFAA234FCAB5F94F7134DB434C9 +7033F5ED902DE94FAB29392934E8DFFB00C5D27505CFDB2F1BDC7B10C9379B1B +8533F17A4369203D2C65B5C75975A65D20BF6880FFDF8043435779F26127B38E +09399EBB27BC2CC481594BEAF8A749445805A6EDA1DCDD02D7F23038B6EF99C3 +18918626F164B6F9FB32CFFB0D936C11AE7E2AC80543864A65EA8575DE49848B +B09FDE687FA8AD27D0221315119A0EF7CB87E6C72A232B51E48F4AA67AB0FE6F +36C4BA99B3C0C343EEBF2C0E5905E71FB897C0E80C9A3B15A9CBE81994D24580 +EC447198E94134154F103060C6CCEEC2006A2F7B8A01457493EDB59205B0194F +F4859CB75EAF60F98B0A213864DD8407DE4DF86AE6EDC5147FBED02C022B26D4 +158A8313188C7BFA5F185AF65FA75F0A17DE6A5CA276DCBDB01CF410114E8B17 +5DCCB1486455DDA266A778A9EEB6B41B9DE0F79021D241FEB9E9496DDEEB6558 +7145D3540032DD2F1848CF4AD9F88E67C4B77339BFA9EE3CF75FD78A63ADB40E +68B3D693AEB0E7AA4E46B84BAF08CDC361A106C566D01FE63AF40D245B717B92 +FD7391F92B159830ACA6303C8E96AFA4780DCD4963BD98AF67D8511E4E6C6E7A +32616CE5F6CB270F01B6AC4EE342610E0CA1AF1DFE51CECFF133AD714F5EE89E +978C4BF5EA08125733CFE4B0C3853429E910677D568EA9A4A0800AA5D391A772 +E8114BC600B2D6B2651BBF987CC3509B00CEEBDDBDD82330A9181D209271073F +B37241398D70D049B9FF607A41AC70E64B928DEAB1A0B4745D98ADEFB18F2D04 +0C44BD18F8687967984B9D48A5BF27E09CEFFD7953E6D9881A197CD09B8C75AE +31C9ED0FEF539E4D71E4DE6E65D106975A0F9C57966D50E678AE5EA9FB83EC80 +0020420E2FDB7F4234A3DF285B9D761E1F0A21018BDD9EB84934B808E345BF4E +91556AE5779EADC1BD02E198C73D1D10A56A0F09F01302BB91879DBB084C488C +972D39D4212AAD28F9B24C164F18CAAF595BB6F9EA9DB90C3AC98D0F37C36830 +F28A9DDAFBD9E3C84928E9EA230FBC0F3C3D05DE4084621B65D26AF4F07F74E6 +183E59EAAE390C8AC834DC662B06E83A9CADC8B891B3EDB56FCA7252600082BB +DCE150610319A3861811339A621DEEAD6D619D475BA86984561F489D052BAA18 +7AF5FF29298168AC79B1626F882CB19F6AF7DCC4E28124ECE52599C51890E580 +132273798D3013CF390A8569A8618258D3570D2F1E538E96793E4A939293BCAB +A9EAB62579E456B5C80CB9B79A70EB36080A6AAECB786FBDC7F19E6543F67B8B +39D24FF379D8C6C257C2E361FDB384C822DB095DA0F10211D6572E4DE6D4E8BD +1770868E2752631376DEDD29CC784ECD374D72232026BDF4650B9E2712190D39 +4C0748743D7EE4706B7B31C90E5743E85DAB062B01DA4960E0314D9D51293BEA +9DC2DA2C67DF7186F9346CA769A0C7C6E6DE1BD9B48709EB87C6E6139BDFB245 +69A02887DF104549CFDDD7FFD86E9822FFFD2DF186512BB81BEE95253FB15FEA +01E04ED643D2C7ED7B43AF1919ED54C69908A87FEF3C46BE979787C79F885451 +3C658541A8E388297ACE1CE31AF3DC7DE205B72F27EA432387A609D9401C0FA7 +B53EF719D0BA60B400DD9D02C7D9626799D39C51039B3D0408CBCFEBB0B2EF81 +220B69B2953E00666BB31C73F11F1E6108C62F4F54138631B9FAAC2C9F92935C +2B3D9989D3D78AE5CB66BB48F669178200ECEECAAF28DC0D5378238DFB8C4DEE +D337C8F28BBAC0840F950DF373EE8C3A59568D95648E33802210A3A563B5819B +14C059E7F4AC6F426CD4E7B3F1A2F6F4C2FC19C2C3E9DA7D2C8F950D7564C282 +860C60EADC8F9B71B90DAAD27095804884289E914F0BF17C555A91FD07B13DA0 +66232C27711289C4D5E20A39A4660BFC00566BB31FA6511B763EFBF1CF95AC91 +CCC63FB618BB886C3B7318CC8301E323EDB4E016F0F7889C4FEDE858094C23E2 +8429D32F5C52CAA03CFD74820F2B956E61560B64CCA58607B300CA9166864F66 +49FC01C8848EE25857AD731386858093E9F87299D452D9C13D06F90E9FEF2C9C +B9B78EA3D3F31785364D36B1650A567AE8CF30A7A5E5C6686B614DFFF65EE9E1 +04211CFDD13B3F021E5D9C965BB56FA136C0B14761ADEB5C8092088990E8D0D6 +B92F39F4E85E71FA38904C93EFB4D7FFA8012920C2445339BEEFC621CD4765D7 +01A9C397BDA9C3C0D0E6B15297BA0BBF6169BF10162524EA71D7CA539FC209BF +375314A88500ECFB9C7363C5AE0D7FB44D0D1AFA09F34E57AAEA2EA67E2888A0 +1B202C2FC4017AB742D5437E8BC89CB24A4A1B0DF2453026E69B60AD3AC8EEAF +ABCC24A1F4C628D67BBC03985396C05E5DFFDD98A0CD615D37EE0FC2C9173D91 +7F20B0964E1FACA7FEF48DDF1ABD76716E06B403998530C15C434F1FD2BBB250 +4B95E75486B54604D3687C2320FDF083A23C01A79363A225733925DBB954D366 +3C535E17565ACB00D3ACB5116996A172743511888EAA2D69B180A4C4FECCF034 +BBB539DCD94510B84AB82E9154C93F025FE50BF00B325A6CC4B6974BC3B67596 +CF605CC04A14625DB25A6EB9E9F9BE93066E34A285CDC45ED330AD2073A9DDF4 +8D3A6739CBF4E846C3BB01B9DC7F01055BD43AA0022FFFB2B93DC850419B4BF7 +97451F057CC0BC68C208DF288E8A1310A015BDD1019C17EBDB42CDCA2509CE3C +E74D55C55630B10A7F042F260D0B285DE8399D11D079E91F348317AA3DDE0CC2 +A8DAC75318B5FEA8A6359EE3765E6F75E58D354B9607034F6A8BF0B22C9F770A +F537347806E5FB7C0A6A9325D0519B02A0E7CA47946561B848BFB1C00B5AC67F +BE25853D147950FB70854C7F4C8D7C503850F1748DDA6210DDA2BDA36DE9AF9E +7D4DD3152165C9AFE4CAD15D146B71F0B7F2DEAA5EB3E1637A9CB5C3CF60ACB0 +7E6A11244B3FE758DF42E346A847B6FDCA6B6FCD7F02BE7D467CDC4AA2435E5E +34647FB8C7EFCBFD144895C0AECD5E0F2AA6375C005C75535C0833FCC123A07A +C841157D68C80ED5341FBCA8C83274C751016C40FB73A5EA4C6ABE1ADB730CC5 +1CD781A616C79C2B99EB1F13115FB00A8994DF8017791E23CCC269D90D49B402 +E1AEEF2326CB2AB44079CE18A1FFA08195CA2AFAD0ED73D907F4FC6422B882BE +F7CE67E17EE720B1767BB925E432CDE667B4D3F0483DBCA9EEF9A41A786DBC81 +AC9A52114892FB6D2FA892B6FDD27DDDB9E173AB1DB7FD612506E2D0338D1747 +1ABEB8BA78BF7127FEBBA18A70DAEEB612B7E48885C76CBB9DB5786C17B286C8 +A955C89B3DC4FBC16C3DA027D10148F5A2C685255F2D165570BF8BB7EF72A0C9 +F90C740E57BA036C38B3FD04BDE1119FD3582FAF9F254220CC20532D8C839CCD +ADB7ED9483CB784126475CDE0E8B2C602A14D13486C214AD6B53E14779E7DCD0 +59A4C4D62A704B4EFA896439CB66B953822B492265FFA6BE2367DE24DA97CD5E +31D715A3320B7D0E1EEC35EA1828A218BF3B2B4EFDADCF91DDF152D4E4F92155 +757446DD8D122A22AC3C02D9FB49D31732A03F9AAC36B0494F234466B3C239AB +4D41488FFB5EE503F69942287348E09637CCE28F1A6671B06E8F700A2276B2E9 +60BCDD1CBAECFE816F6A4A1277569D6EF85BB49503708F56A8411F76E53148F8 +A49C0623E3EC3DE32B280F5BD47AE3F759589C2E4DF29ED5DFC587E8241F559B +4B6A1F8646D292D966CBCF651D751E5C92751B289BB75A8058E9B19C375013AC +5B810252BF23FF9C7A0A568C6B4E329F5B71003118F3DE19F99760B525AC3D51 +AC85F6E4E47F1EB7589AC39379C35DE27F4FC5B79B8F5D33049D4BF72A8FAD0D +04A1C77795B44EDC59FEC22A5843F86D18FD4415FAC8AD44AA7520392D57B7B6 +2C755EF3AE81A83D965E65EE8583F575AE1CC4F50A37F0B3C007771A5B60B01C +19FF8858951E0E7CAC7D157D3F5BC7F0E453738DC33EB390F31D38781CDA8578 +F9555EA83FA8BF8BDF55740882D9140C9596ABD438E903B366ADF71304E81E58 +FF9B51BA19FE3EB5599C6D1787569B44BF26D4E14FE79C1D47F3FD4E573CCECC +BA3F8FD36B608D87CAAC3686BE994B252287AEFD9A14AB3051CD4D751F27DB18 +BED214064F065F20D3FE097DF160C63EA5CD01B3C27788A927C79A21C4F2164C +EEE8F38C79A7C68B1C1958F7B6F0F696A203C93918B3C23DBBEECCCB2EF2D96A +EF6BA2A7AE40979ACEEFF78FC82EA9B34F6126F515C307783045FE80587D0FD4 +D0F81422E0B82CCC82BEE3D4189536E2C08B35AFAF3FAE2D5D009DE9BB99598A +A91B9B58964B4CC7CB625084C0DC42ED14D685C25C85181A8735C4EA6BA9CFD2 +B7C8E67977D047470C7A778166FF42BC4B9A8F33C5451FD16878F6D65A47617C +543A1E51AC939FB97235FDCD67962AD3CB5985DFA5737B28AD2E24DFA5921B3A +CF2CF5FF6687C7EC9C66C4DF80C039DD5965CB1B49D0091ACAC40AA078DF781E +55A2457EE55B1E0422C5F8074A9D475E194E5742857BD6544A636AE573FD8E68 +70BF3858E463E94E5F5D956B9859DCF1917516005364779BB9DDB66F5DA107E4 +2B5BC512D0F9C32FDC34794BA631A0731CED84706E2FB9AF7CBD4ECD53B6157F +7B01BFFB519C87689E2A489833D22F3C1D812849B656E6C91088880F135DEE39 +FBE71EB03E6B5AD77280112F6C3E2636D22A38AD1D34F33B7C327122B9F4BE2E +791FED7545D52ABF2ACBDFCF770F8F874806DE0D1977776B330FB8D84A52834B +0D2BC3FC18BC1885959B65A2B395202A8BE49350C1E133EBAEDF41D36345C24F +86E4576E68E81EB707EEFED92F6F09FA46F2F54BA766E3B20F1CFBD6677B59EB +73778BADEBB3783A5CFA9138815187A86694E8965FABF1DF6960865AE363D418 +4C3401F3854DD5C241F3667E2CB34EBBE9A74D890283DCA529E1B63DEA16898E +FD241DAA19EECE2869780A8A03BE546819B3C82762F5757E72C0FA749F90050B +BDDE78E6D01685F6DCEB9A6F45E7EC9D253ED34D2EBCB98FDE257FE1AE7D39C7 +1171F5425F3604B93531EBD0DFF691A905ACAB90F760AF4A674C500119B91549 +0566246482F9454E3D3927239AD8DEEE6D4E9ECB56748D2965D7D4C59E358307 +F936122ECCF570568F9C8C8FE5F135AAE916CED51041840BC4B1F403FA632FD1 +E694065B7F48EE00FE1E6ACAD8B86A11F3ECCA19B5ADB114D0980766991F8AC1 +573EA9B5C8FB5669574CC0426377764CF911BD316C8A7D772F78F47524112BB2 +A32F11FA6A6D1B295D96456A0D621C2B8F284DBD8FEA152D9EDE6A68B9CE8CED +65E380ADEA02DD9C06733A4984AB4F7F8C5E87E58C9AEC65CD3490C87C04DCA3 +42AC5CFFDAF21995432D0115B425B20DFC3AF8206354267FD0A8242BE0B23B24 +7B8BFE5CB5A2340838F3BD77B6ED26A6E43D2F732F5036807505B5E8C155D194 +03E57F31DB974254F3CE52708587825117D646942431DC4A29E99E7DF8193B3F +2C9FA9049DF511A48E405A3B798F0855493AA0A2777BF1F9F55B6797F27B8711 +5B34A0C897B7B13543477D159232939A052E46DF470936A8479BCA8ED9F97F88 +A9D77E43F19DBDD737EA504D94AC6DDAF29AF0DFB73AF8B7681E501AE88A6264 +B879436A69BD0DCF3465BE9D480A31B9702B2BDDB87D647E5A03B7E931505CD6 +7FF4595F44DA7EC3B1BE6C3E713AB806A1737D026A890E77AD137A9317779D08 +B84026855E4D84BFF2B50ACD7E4E23A50B888916681BE1FFD83128E9C36029BB +AB6225DECF2F6DFE22E12A084C27F809F53074A272735FA977D783ADFA5555C5 +F2FF03C670E2018C9388CA3034414402C60E0D49E121FA06B54E649E73E65E2E +3376B59F3E3221FF238488418E7B969795938996B506C9CCAE529C1AD10CBCBD +B2DC727D9722C198F7BAA1BF583AEE1B88740668CC1E9EC960B33820981700CC +01F5AB0586DEA46B96A72EBA2568E8A3774935B4A17BB2DF361B4E4D30814CAE +7C6BABE324FE7FCC67E32F773924E8C995A025948E253CA14FD35DB48A4C9869 +10ADFBFEA18E729FE71A53584FF7CC8E50D04A3700181E0218558C262873C7D8 +DF424F5457D76FE99ACDF797E542433AAF9E811516AC28698A179E17915BB3E1 +368DC25C96394147D0483ECB7EC5543595AD8903BEBFB250C76ACC782BBA59DD +36D393AB25D84A09E19F7788CAA4A9110997581DCA6EA82B149660101B9DA10C +66A13ACB601596B68CBDEB3F8AAAB3DE33874C0B07B71BCB6E4BF05CA47A7AD0 +69B6F516E4ED20D017CE5D324FE97D7FD2412A73B92D8601B8D716AD4C87891B +53D9E95DFAC1F27A582CCA123096B12BC1BFD68F432956606CAAD9752102B925 +555EB728A26DCB480AFA1E87F2990585E477E5E83C045A72FB2DD04D0AFC8512 +640086008CD6989676719D94E4646EA41508A6A4C25E93E84B3928E9F875186D +B2C6079FA73A221FADDED66AA88F5B49208D10C2E1E91E25DB3818D69E69F10D +197A16CF687E74CDE885CB876C185F19D120D916E66F88D03B308ECD3BF2010C +7530AC389495B4E63B70999149C463F46DC3FBB0E77E74ACA0E0CE17172AEFB5 +F3D559DA122B384EC940CD845E8B5271D2859A12F5E913BA6CCF8576ED7F5C04 +9C4FE5B7DF849BBD08DB1B44A71A59CD1769853CF9E49A3425D48D19233988AC +3263BD7D1861EE4E99C9D33FCDE02854B0A9CCC24F337F04F9AA4F0292F5613B +0DC69AFFD972B2EA03B018057A588936F7868AC2FF5474B9A9584F2AB70A6813 +23571813A6B3B48ABA4CB44F6C14E9DD5EBC97D9A705F215B31352711E6DDC25 +27B5CF2AB2C4A1B2310A91711D39A4BB8EDC93361A18A38487F8D2E3C91E5D80 +53C2B713BB837DE72556FA3D1E797EB6A90D83DA02DE424D074B6A8EFF11BE23 +D9E905B15C4860FEC665B2182CA30293A86B5D1BB1F7230D7ACF88D7C53317F2 +57FABDDDC049CA2CF03E8F0FE9FD160736418DDAD7809A85D3F3CAE9F7C51E3D +2238449F781D61AE69614F0B307558D4423C86EE67C353E9B49DBEB7B060D7F5 +25AE5A7F64F20D22B4932E86D5F70632334D3F08F22B81472545ADD27C389FAE +F619E9FF87185F0F54BDDD40430CC44576CA2A2F3F4C115D3C82E53689203F93 +36421BCAEB7FE999BF2EA19D3B126C073EEEEDE1E841BA512B2A4D8E1BFB3A8C +B2272496B09DD88CC7C37EE8E06BB92797FEA48E4845D7EDB60A61206C581894 +1FB3FFFFA610E81026A7AFF8D400EF068D1797F8512F05223DDA51FE18DFDD7D +79FA8754A79D501826F705CC5450BE63C2390764D2AF32BDEF3E45940774C9AF +E869BCF5D5C028278DA373F0B0B6ADA106DBF419FFD5ECA3C60A6C1AD46C6C25 +5C3DC971BB07A23E3F3180DD9DEAEDFC2A96DF506424C5EFA695150D5B550AF8 +E60CDEA33876B075EF693883F6FB70EF5676B4552318E1EBBD4050B2BAD9273B +FA895B3DAB65E4202AB0EBBC633A0810F852824D3FA83865E505F0A226A85D26 +C7D69739B671A64FDAA895F7C98660E43B18923702C6E02C3B0806BC375AC535 +527265D76CAB05110C7854CB477F1ED55D0B876CF2421E3FD0F21337AFBEC2BD +24E8E304B141B878DDF0A9F692E1481FCE9FE8734E6FE9CC2114F0F341AB9E03 +8E4118316EEA0985914711F52F7D2CA2FF11FD9D79C5CBC12807B5992B8485DC +494FC91F87A7A8731CE88752D02E4527597BD7485D4B88BADA367D516EE4069E +12625CD755DE031815AE82EEABBFF8563BD74A2A5430F4B084D7F10CAB27224B +8A8ACAB00DD8B88D7A3B9F05D769D8328E46C1345B7BA0DAD75302227CE54C2C +AB035F296ADF6F7F7E7CDE3EA657F1244C2370C6D95EE876257AD318A92D90D9 +4249B2EF5F001B88C41BF9C9424E9904A28951038318B55BEDDD504F111622D0 +0F9D23CDB090D27E1A7B0B7DEF03C71D5F90523852FB2530A4832382EC10EDDD +EAA73D2C1CC08A53F1262BF636D56748631DEBE79B173EBF76B6E2334BF0D855 +74430668E6E49160A25FDE5DB59FE6320B10D00AFDAA328324572B6F767D98D5 +ABFF8B9418D51864EAAAAAA2872BEDBA9ADDD7F24012DDCD6200E5B322B2FBF2 +3A37639CBD9918FBAC813DDFF7A330CEAF3BBEC787D6B404C88E22F2EA4B0F88 +1260BC45253FDDB713D260F72F074FF766A841C7B258F281C092CF643013ED6D +F4C3DB7750E93E405958FD2DFB84FE26FB582A61A029088B6193560370751546 +230789365755CF9412EE72731564C80661E5D607DB15823CFD57DC71DB65996A +3093A3328998FC86ED7E2214BDAA5D70F0DF0D54D0E2380B71B9E321131F247D +37AB1EE17FEC0ABCFC5906695B15B21CF44DE062BDBC4B9088844D4F0E39E071 +0B33110F36C709E62F7129C3089F2C235F2EFCB1820B54FFA88F157C0CE08271 +AF58E9BEDEEB16F461B77596D9FCA92F3ED5B751FC0C0312769C23E85DB83BA1 +A1F8D74BC27276BD842D5856664582B3F5414E2213E382DDD8EC2EEF31E79B95 +C2497A33906574377E7FAF03CE9131A925189213E7BA883D30BDA2D03A696FDC +E62DC5B68FC604FC6E612BCDB18482FDAD3EE1E2E0ED7F93C91C81176D33BA53 +6CEBA5D8ECDF838640ED67372D1B2943A94D82DC93AC338C57CDE651DAE7C234 +03630634D5C816277DBC9EC71DC0A862F19B1756A11703DF5DB91E110FDC7271 +C2EBBC42F233B575752573E7C3DDC8EFC73A6B8DE7E6B8D48352C3733CB9635C +ECAD66C97F2DD346865CF018F46B4565883834D989216E3CA25556E1F9E98930 +394B985ECF798743D8277C2AB8DCAC16B483610DB7C3C90F71680D807BFD5493 +FBEA7F3FA4293659AE976D036FAD43D509C2DBA3992DD24DE8A99BF1FEEE7431 +31705015A098AD47A51E6D955DAA1A4B03CEA003E0273BA5671F7F1998238D88 +D0DA4262B134AC9003BCE375A75AC93715F8F2F8A628409CAE9FF9D119301B3E +E8147F1DE16649984430EC4BA948BF5C74111D0F8056383D444F6524C7FAD4F8 +6A4FDF445CF8EEDFED560A6C262E24C0444B2AF705926A9E0805A1911F0230ED +5B2030D956CEC14A102CF4F8E8C3DAC74ADC16C169BC4A4DE75DB3CE82376254 +00FA86DB89265200CEB4CC133B2A993AD95C5AE5A695DEBB05624CEE6DDA6B5E +A089344AFA90ACA83A413762F0153EAF7DE15333BF9AF6E75EFEB3964D59E183 +42C5E52A77C87E85E2B3049508C00ADA5D6F0A8EEB2A4D71DF16F3DACD580DD5 +68C68834C0778B469ED2F8C833A1BA9CD0DB2D6AD88C506F5BB23CFEF461D30C +ABF3164B702B433E0156590C1FD699268144766D3AE1F8E582ADC19B2D4FEC59 +0DDC8270512D3318D854BE1BA7F545AF9D9A0F3B59710609AD7A624CDCE04DAB +095A54E8FBBBB1987D01EB7CD1B6BEDCCAA46A07077655A73707D6902BE02565 +EC7C6145AF4E52D1073E3DAC7C087A14E9631570901BEE1FF3255B8D501384A4 +0658B67909EC2F6B90A1BCEFFA9D74C1CF5570D7EA96391CAB7CA4E0CFDDB3FB +C3591EEB49AB7B154973F0EEB9879D53DE90351F0F76BD90764ADE187C68FEB5 +AF1B4B290F2F0AA66E1D138B21C1D4EE491ED26EE44CE490F326A0407B0FA267 +1707218CA4EE1FDE220835476614DD67C7845DFB243FD2C5D856ABC7E97671AD +B85BCAABD214B9D9BA81B4E925A726A122F1FFF11F9581A3F08645BBC4197B27 +D40D2A95EE1DAFA9C8A6157E0E79866BA40C0702B26210725AA2239785D9D9F5 +017047AB62B57F6744B2D4A5D642E971074A2FB1F8809AB65A52E96C51415FC1 +A5286427DE8C81BBFB5A218090595CC14A86A40ED9709D5752157EA673A4084A +93BD7E215DBD1148BC140DDC68FF8F3C1AE10894D8BA9C4A3AE55992F88429C8 +DD9B8247EB0D653FFE69165BE6827825C1F88FB36E69F2A8A3CDB6D72FF96DDA +072C65F51A898EE82590678C43FC184B532ABBEEB801F0143111C9941F2B1C3A +484DF4C0AA7E738EB2063278EB7B70E1BAAA88C50BC462ED449B66E4E0978C1F +7DB04568AF5EB412C3E41BA22E8273C1996042DFF01F9702B676E858F4FDD430 +F6B417197D8999945E9A82DA43969580863825D31F9D59A0D87D0F313FE2C28B +C6B97A98DB142B88A45943DD49471C3424BEB1DB482E9650B0B92AC70FE8845C +DA7716D68C9C2A14BD68F379E2C9DBFF92DBACFA705F328AC2D196F472A24ACA +244A17F00C82EF653DCB067E0F3762CA52E58A5604D29EB1D56B2EB40417E2E7 +9406035A253BC2F539D5B09ACABB048EF1D689A5889B9C5FA6B2E0E2EDB9599B +F6F4B355E3733E6BF9B21DBF7580E52526F2900F980B3C28062A33A25CE7F6A7 +4F13D6AAD9327ECC7F3F97BF15C3BEDE1A0DE042E749F648354D061C3E52E7D9 +F376216E4BD2B782A5AA0D9FDC5551CF660285E4CA7363858C51DCC79F66072A +2FFD59D6799BC84EDC0C5DC09D9E40056A4608B235F1357D454ED3028322AB8F +DAF5CC60F8B5EF4E01A8ECE97C491D828A87CB85D50CD56E4A7BB6DE2315CB0B +D0113AE20B4EF27FC486B648C3C0E6F69C1FFAE0C766DFB8B16611CB504FCAD3 +06B8169190CC5F836CB68D7CC34A8434BDDBBEF33E2B778884A8070654378FB3 +744459C9FFD348B2059652D47335D7C864619700681D45A39F068430F8DBC4F0 +D1122FCC17182216F62C82A2800FEAB2247A07413B3809DBAD5A03E1F1968BBD +B41B98142B9B0403D882A3A70B334F0365353E51A7FE4309DE4EA9BE3B695601 +3CF86249952A437666BDFACB7D272F200A64B9C09A125287FE2779E950687EBB +3EB747653C8D95758407DC3AD8C95AC3D2E18994156FD13CC03A6653EC7A2993 +F9893778089FA63708B0E3942A226A5289090412CBED2CD71BE93DD4CC56F095 +2E41EB41DE3CA0F8953C28C3285C57B75C13CB8A7E588054BDBF3B5AD6E86965 +4BAC32C54CC88E2BA882A887BD84BBC8F15DE986DC2118D2DD0A0E154EE11815 +65B18565F5C97BA8F5753324CCB5CD8D40463D909E832CAD28E62AA2250D8DC3 +120252A10404200CEA8A2B67CF44676E6003B7FC2AC00ADDE1227724B9E8999E +B5A4E94223504B52575111E828E4AC03833844683B64101AB5D91EFB4CC8A822 +72C394436D8930F1541359194EAB8F44403958F415678D3EACC777022271EBA2 +2A76DC2E2E833B426A15D5AE648101CDB8116D353A837D466E4311DD86F1D921 +64EF76C5CB35B5B0E4B8B1B93861E03C1B635391276D77ECFCF247E714CC67EF +72209891C418D1472541D68A6761EBB440E360881E993D3FA4E29CADBFE733AA +7C260797DFE27403E70F6B1D2E493A1C55B2381AF9A815808B5081231FDF30D7 +CB3A1D091A4B6887F9EF692C736AB5770BA5921D48DB3F196A4515FEFD4317D5 +BCBE5394CB5EFDB4C4A972B669C294966E5D76171CE5B903E4D8E6AE50C5C075 +37C42B59E74CF491556B618191C3489D11288587FF05713B18529C7C7DE1B9FC +CEA7667AA32EC4F02F452F9F20E54C89E071ABFC4155ACDB4DF3900EAEC25386 +E14C88BB174890A966703ABE3B6EE4E229882DD0543C3E33025F072EECAC34A7 +7945C2D58A721E42FE71F1A2CBC59EE8278EE39F6BFDAE2AABA5562E0970991B +75A3AE1B2B0CE3B8BA0E32F6D281990054BB095B9E9B128D54E3492C08380208 +B6FD878894DE6F487363C826F26F5B810314E48E86C933B885D21887ECFC7FA7 +711F256D819274209A0E08AB6E147F7642D07C97F92E70699D88ADDFFC941A17 +E521A3D5E3596491CF5D9BB95E483C353441CC4748A59F9E49C79968AAD58F19 +38FE5E275EA22403CC4A287A30F7B616CD4B31519AAB4DD7237916906B59CBCB +C275E1E993B33AD6F76E945DD4CFC3CAC1BA88E5CF9D15F03212207182AA054E +9B53A2469E76F128006747A7E3E95720EC90B43BAF6E016205435EA4AC8C8303 +E1E41BF20358CDA809B88C72AB0C2011A6C91A884D542D92971327564E175217 +A40ED9EDA6B45192C46B648215A556591A5C8AFB8468947B8BEBFAB854983A44 +CB88DD24D3C8920383944E2FE13C18A45D4A5507110C61FBA11945DDE8F0E5C6 +265F450C30BDF5D3C95F40573B139857539F01E8C804BDC8DA9306C133E7FC0B +66F52013A1D7C4BBF2B2E1EBF80EC769D802C7117C06AE917206ED17D13A3E95 +5C987FBAFDF8B1B49E00376E8B4D60E9F2B140267A587BE8D14B1A0249C2B1DF +003533FDA36B565ED493CD1A807E139F6C2CE7148B6FE62615731CDFF1EFD40A +A79DCDDD7F4F4CA0D00DF277E7A38556B684A32AC4A8B6998EF6C1693F043E31 +374B86213BF7CAEE905D239D358FFCF91EF2F34DF7E0A1A16832A54640D42610 +8C77E6BDB82B862426F153B0C87170D31DA509ADAC29EE7A614EF359D584CA36 +787DA85840A14036378E25A53F907D10F7416D5334705DB9A111553FAF2EE20F +9C3A0BFE2D3BE88C28899043C8293D012CD8E2752F30A883C2287D5AE64D00D7 +443218C7F45449B4C9B2BCEBCEEBAE0AC8934549F5E27BC01AED860754AB4962 +12C42C1E066CE0B5726331F64A1B6A738F4D79388076AF52C46CE481988B5341 +85A8CFC7F9ACB1F0647D33B762CCC7C34F91BF607940DFC09040775AFC3FAF6A +41E89010D5700942F78D5F6E159CD13806F1F62C28EC0BD6F40E4E812B50F088 +A20C82231D47C911A9F4213077793947F6C8EA53BF2763F75779BBFA65A75E27 +791959727522E48FC28B9C649BB0AA1DFF96D7681CE5C8A42632EEC5CB7405FC +167DAB24900FF3CDFA2FADEB8829283B73CBA2B1A95B483CD3E6F02C693AAFF9 +9C09D3D2DC196A6EAF720FDFE7C060FECB0392610B17EC0AE65C72D89D892694 +99CADF5E3F60F6571E29EBA897831B8AB7253557713BA2529465C615D848A1CB +57633090AF2993CF37E19A97094B8686238056F22AAAC0CD81034661B9BFF73B +18151C4DDCFCBA332283CB1970BF1830DB778E626626DE94E0A8004E5FD830CA +93E4BC3607809BD56C75B558196999C92E7325ECDF73AA32B49C49C3C5FE4B95 +7F50AC40FD642A52CF12F3547ACAC754EB8F7164FE5624BEF7160B14258EDAD8 +E26A181219321F2AA523CFCA7B2E12878A5E242BB7BA5C9F22D0C5722766C564 +306F713ED39E883D2A7ED68A0D7C7EFD64EB39FC189A0C7FF8111660A188E19C +DE642C8F2B0D284AC2B52405206A5E1A449319D94B3DFA20DBCBC522B5D67431 +E3A072463B59BF356F924434B5AEA53BD49298D25738AA79AB1E274F0A7E9330 +2982789B56EE39AEE8DF359C968C704C7D3B8FCB09FFC69587EEFA7E39DD5370 +FF513753E7518954525B083BFA191115CF310A98EF5CF0C2540265031BCC9694 +8C6A3F1A053753838516389F26ED5D57BE285F92938D59B0DBC6047C0439E127 +55CF071FE044451EC5C557F6CC29D8C5256EB48AFB23A0CCA88307B7E8EE1E45 +91B46854300FF369C6D84072D4D1625A0613CD330AB55B0B326554909D57C7DD +73422A8588FAEA378B917785E75F25E4F4183A36AE15C7FC2C3E2C6E890B113E +0B3FEACB2A3C5ED2F7E5BFF91E8E273869D4143A954E6A5C1012A2FC7839A878 +B86D878370EF71ED0A7555E8858C68B1468E130C1CE3A6199D93FAD963AC0877 +1981237BF431B598966143C8DC7F3B802729DF288A39EDD5B06F0F808741C6AC +4D59EEDEE8655A6CB5FFFD911D8A942590E4BA2709403D0741C70B0FF9FBFA7C +C3FD928B5B265DEE100172E5E917F273918C7941AB9071E1C3EC631AC555CE9F +35F88068E213C0F9A4BA7D133755EFB674717B4FF225AA16BB0B7A930D7F4474 +F2C9C784CB7C8C0A2F2201B57541D25DB2C2C8EB11D172306F7F912149C2E61B +40B0A570CF8A47F792860E4CDCBEB9A05B511E4903921CB80EAEB5A3B6567E14 +71229E7AE16210B7F307E1FEB739554261547BFF5B559B88CB5BDD64124817D1 +AAE0DEDA95D830BBCFE0AE34A90A70E42BE5E9A54D420B7F15D678425F1F7408 +B0A45ED88BBC61FFF2433D65AEBC21CC21A454F416913AF8B4272F7E20CAE1E6 +0AFB2D16F862DFB2861CCDFE73BA66BA95636004349740C2E9292EA3C326F077 +1A69BE963D955A35B72920D063127E3C8DB8655C089312F094231517A9198B70 +CEB0F01B22DD451966D72B2152947AE928D38F39C34EA1A6DCAA758EE660700E +351A8E433028CD6ACD63B6745E0F501E72E3E3A001696B500F83B67E027E47C4 +36B251893D87A5B646C1BFCC94F2516C5A82CA364FCD3F128289F1DBBD0E1BD2 +8D641FBA92924ECDB132C1F89BA3650DAE6E68BAD856CDAC195A70FBB0D9ADD4 +BFE9194C5C2C525337AC29B8A55D56BB2BF90C004F1B5B3842DB2581E728BFE7 +4112D349EF2FD56CD145DC9CCE9F8364830E466E60F6F437EEE13DFC07D8009C +ECF876BCF50BF9C60CC60544EBD3BC42EE61F0DB1ED1EB920CD367149B52B2FD +353B4ADB2C18A087AA670E492BA5FAB513AFBE786F2A729D93F28D282A2A1945 +3A0D2565D395FB4A07E97F04E1A50AEA7EBCAB7D5DABA2603BDCA8FE770A4012 +114B736C19E1649153A74C74E7218A0A031EAAFD8420A712DEB1233036455045 +18F9902DB6390E82EF280BF3C104B4E25EDAD22880D74EE456D1E5225D683D5F +13E8DA2C4D1A8A1F456D9A3887EB3D9ED71BBE682C7FA3AD06CE4F2C554DBB72 +71FCCF5A8D945387E9FA42BE9D774C44FD296270FB67B1004273051EFB74C2AC +2E215CCEA6F18AADA4EE6B94915242B113F094ACC5D837566D5B49C51FA2012A +792357BA0162EA6D04C7106B60E25EDC02CC4FDDC90FA314E4D9DD972536C486 +7A772B06B55C1545C98E90E8104FD7AA76B0DC12C7331859B6DFD01FF9022F05 +34FCF3DB906EDDF0E8 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: CMBX10 +%!PS-AdobeFont-1.1: CMBX10 1.00B +%%CreationDate: 1992 Feb 19 19:54:06 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.00B) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMBX10) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Bold) readonly def +/ItalicAngle 0 def +/isFixedPitch false def +end readonly def +/FontName /CMBX10 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 0 /.notdef put +readonly def +/FontBBox{-301 -250 1164 946}readonly def +/UniqueID 5000768 def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 +016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 +9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F +D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 +469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 +2BDBF16FBC7512FAA308A093FE5F00F963068B8B731A88D7740B0DDAED1B3F82 +7DB9DFB4372D3935C286E39EE7AC9FB6A9B5CE4D2FAE1BC0E55AE02BFC464378 +77B9F65C23E3BAB41EFAE344DDC9AB1B3CCBC0618290D83DC756F9D5BEFECB18 +2DB0E39997F264D408BD076F65A50E7E94C9C88D849AB2E92005CFA316ACCD91 +FF524AAD7262B10351C50EBAD08FB4CD55D2E369F6E836C82C591606E1E5C73F +DE3FA3CAD272C67C6CBF43B66FE4B8677DAFEEA19288428D07FEB1F4001BAA68 +7AAD6DDBE432714E799CFA49D8A1A128F32E8B280524BC8041F1E64ECE4053C4 +9F0AEC699A75B827002E9F95826DB3F643338F858011008E338A899020962176 +CF66A62E3AEF046D91C88C87DEB03CE6CCDF4FB651990F0E86D17409F121773D +6877DF0085DFB269A3C07AA6660419BD0F0EF3C53DA2318BA1860AB34E28BAC6 +E82DDB1C43E5203AC9DF9277098F2E42C0F7BD03C6D90B629DE97730245B8E8E +8903B9225098079C55A37E4E59AE2A9E36B6349FA2C09BB1F5F4433E4EEFC75E +3F9830EB085E7E6FBE2666AC5A398C2DF228062ACF9FCA5656390A15837C4A99 +EC3740D873CFEF2E248B44CA134693A782594DD0692B4DBF1F16C4CDECA692C4 +0E44FDBEF704101118BC53575BF22731E7F7717934AD715AC33B5D3679B784C9 +4046E6CD3C0AD80ED1F65626B14E33CFDA6EB2825DC444FA6209615BC08173FF +1805BDFCCA4B11F50D6BD483FD8639F9E8D0245B463D65A0F12C26C8A8EE2910 +757696C3F13144D8EA5649816AAD61A949C3A723ABB585990593F20A35CD6B7E +0FA0AD8551CEE41F61924DC36A464A10A1B14C33FAFB04862E30C66C1BC55665 +6D07D93B8C0D596E109EE2B1AAB479F7FAA35279ADB468A624BE26D527BFF5ED +E067598E1B8B78188FA4BCFB0B51692D07B0BEBB930C6F0997B437E2C51B876B +61A563A2673932C2045833FAA35DB22ADE12102335D5DC734AE3AC5EEE6658D7 +92EB62131E1DFBA441F53EFF9021D9D4C491F26BE8F54C61165CAD778CE8695C +EEAF70E3B20C64D4C2B34A084B5770BAB2A974E898F62BFE90F132A37E2DCA4F +43E13DB13C94DFA8ECE2B7374827AE168634FA007F8981ADA046CED3448BF453 +FCD9A4F194FA648F9FC0971734BB69CB75348A88CC361FF06E984C86AF0EA429 +DAA5808CCE3583664AEFE0C59EDA04A147FB51227A5AB0C13942323E9B3733DD +3EE7DF7F774DE5D0D0980DA8C0192983F1E3EF18481EAF1EFEDA0068BCBDB28A +7FC7D9191EFFC574588DEC1E180341DC959F8EF56ED5B19F50AA82A4653649B7 +CDCA11A1FF27AFA7FF189A7E8A7C099AEEE0CAF3E121798B2721ABE8808D20A4 +AB6E704C0C376BD242C4966325D4C939669E28B55BC335405C400A9983B89EBB +B13D8C5F3A148E38E9ABD86D0171C927F1051266CBBD5C5D12522AF7CC17918F +410BABDD5FDD279338E8B17434DBF20B8E06B58D9E13B731E3C07E4CC350C431 +CE2034CB23828A19AE93124011BF053A3C5705D9BEF6D95205FB8360391C84B3 +7C6D719C0FB459A312AAC3C4256EAB293B6DC729CC5070524D1BDA41091E8B42 +2B6C4A092995AFB40CCF35730350CBA197F3D5BC5BB83CEDDBC6FBDE23A885CE +61D416B3A6CEC46474A0F42D5B923A61832262F234001DBCED9A7A00F5511F3D +C2178422A46CA5494AA8C37F51C40339CF9392A7098DF8596EA97C440989CA06 +EEEB5025B29EBF6038EFDDFD6F70989D63440E9C14E2A1040FAF427EB41259E3 +FF3BA255BD4C04BAAC47326181EC7CA1FFB32CBCAB92B1F8CDE6ED0DD3FE6D5F +EE14B739FC25BB13CD94A0C0DD7CEDD886AAC62248C64B8439064D1038886DB3 +187F017A79318B69963296B4812128EACEFBAAE983646E021F24BDAA2B78E8FE +2BCD5BFB302103D7DD28668DA7A60C446A27BFF8D6C66F4FBC61D271B91F0470 +16F567DABCD1E8B04CFBEF602BD9CE44B724B3EB8D30CE573EBB13BAA047F947 +90B24F2E49C20E2474EE9D019565E6FF25BDB3F74DF05BB9E148E1C5883A9EA1 +53AD383463F47D6C1077CB8D8DE48F71A5D42C54BEF4C0058EDAA735809798FB +356002E6B41BC6D5E3D3027540168761334720113FF02B2C734749091BE71BE4 +5DA61AC33554AF15E6F60EBECDED2ED271C80B5C4F943ECFCDA66DB6165620AB +0360CF8DD672B0C03DF892BD397923C6855938CB739FE4B3815D76DBCB1C8A22 +EE4A86AB55FF7994EB31BA410DE548B6276C354EEE51D5BBDBBEF76E9DA42C02 +CCB3729DB2F52BFC06A5A030F32927E2215BC0C86F99D9F39C0C4E342DD816A3 +B51AB73808F2545F9C55CC3D352B263E37D3D6E47854D7508D29BF6B52CDA83B +45C36FD67DCAA7BD22745B1AA86908ADE52BB14B55498AFFB5892A6BC9256571 +575183D73B178FB7B67307222F6165175519E7CF674964F2131FF44528D21025 +3A624A5AB5BD4411386573C91A067186318F266B2EF29918160A5F5AFC3AD9C4 +68F5C559617D890FABCDDDEEAD20FE6658231877FF9B545C2042681D7FE55EE1 +BA15672861CDEAD8D8912E54EC0E7220590889C891E619704210F18E1DDAFECE +E923F177F11CB40633F4B9760709DF4B36D503CB983B2F03F3AFEBC0555EBE77 +6EA688CD50AAE49D66E039C732580CB40AB9DBBB0CF90031855AA61170350429 +4745F6356B0E41CDD4032CAD246852114729067E2304AD100A1A93068EC4CB7C +D607190F2FF5BBFB344D34907EC5240F250807DA5AB47E80F790590286049653 +88286A3CAD9FD12BE3F5D0547A166A0AD59C1EFB41C0093B04737319A2ADF9B0 +312841786B47E9DE8A534A26ACE8E47429430BE234FACC6B012D459D8F204150 +E2CA96A46FBCDBC271639C57D38B0FEBCF6C152369A73FCAB8FF6411585A0CED +B410973B3C0E800320CEF2181F8FFE5FB711464FA52C6D98511C4B33FB9BF5EB +800E3346C8591E5B941F4A20E3266804D728939CF653CF9BB16CE22E987BDA2C +0EE6C0D9E9D1E81392F5E8A5499E97C0105B0F5411809652D406AC8AB76FBE20 +366AB998234BEC5C8BB66ABE2AEADE28BEF7FA5B9C628A7F2C315F5013D15264 +A3EBDD6C1739B3F0B3BB3371B9140AE771AB86CFA74695EB191F81788594F6E2 +C953003ECC01331A8044C1A925FC8B79CC48ABB9609FA9626886AB2AC449A171 +325D08A1B286B46119AD1E2BAAE747D8CAA562ADDF6F432DD9071DBA9645DC59 +09D3903F39A2712AD1BE871D18B8AF9BD38AFAD32B216AEA13BEFD9A0A5D185B +3385DA10D2D42C32E6806826E8947C3E177172ECDD4FA9380AE4F09B23BFB954 +FCFED455EC8BF93CCF7628BADEAD05250F7380EA2AE79A191E65183E7A901FAC +DF333A1D645118CA7FDD838BF35598FA055189A93F3EA6D0AA6AF3F89889725C +845FBE53DF1DDAAA1D67679AF697A570763E122FBA174697A0DBAE2ED8C66637 +248397F01AF8AB4CFD80DCE9F29E0064542F4DE88A2AD15B0FFFD02FA09D8F5C +09DAADD0FF16F547AA17F5DA9768416A4B66887F2B8F39ACAC89743A3A06AAAD +1B1720B5DAD72C09D75AA6F4B78425624500913BDD175204B9647997099AD757 +FC19EBEE8B0E6C40EFEDCEE15D6B5FB820EF4A889B11AE989A23BF390D2D1D96 +A230BA563188B911F17447E331E1AD1D6F2FB13E1B83CADCF22EA3650C94E9F8 +504D1F24E22EDE0A65737C22528FB52072B21759BBA80D390E87A53595AF6899 +98426CA645A7894A60EE88B52F9B55FFB1EE2B0896A421E929B0AB47A5F4A72C +6F4A4C5EB84A5CCE13BE620F7E109C72A196CA073B8192B3980F27D2C4461BB6 +360C074C3BCE043A3DE64024F038835536AF5DC58C1EE004DE6CC7DB1AF7A216 +A85A082CD0522D8E0C896AB309B6BA98E83780B9967BCA5C8BA0D5AF2D7AEB88 +A6C69B01680461A2DC4073F549EC9118212B8125FB2BD5289B4C57B1ABF5B26C +1214D50D335996FED213215561E44C2257B4464A887F333D466E492E44D25584 +83A269EC5F51F5C407E700052B9C349B37B3B6A7E93C1B9B9C3B32F3993DE385 +636D496BE8781D22DE0031F98D6B7FAAEFE76B49460D2CE096AB03878F1EF424 +0A5A160BAC37379476C178884BD55A841F000652A430560610DD781E63C51AE1 +8648A4A3459194B7FC456906DB1177EF405289C2EC496BBD4ABF1A913F31876C +380D3C4A436B3D7CE97E2E538E8837D379D16232F292C7425763AE75482D1372 +68A8160E6A70DF891EB308FD3AB9ABCA346E4FAD5F5CF78A4E3DE21E558ECA72 +098F147E6F87F0F9535C9DD793B5A3C3570A303B9E4A73B4B41A1BFBAD5E8BC5 +E5A9DDB8C63BAA30E474DB44C78FC1F022B54DF5650E71F60FAA8332C9A77FF2 +F31FF3D589D9D39A98A4B454B67D64CA43A8C86207CA3BCE340E65A5113AB662 +10581682ADE7B1599C14E7B4A882A602B031728027EBE6FD135B99CBB5AC2687 +E49228F18BA68C72E325BDBD2861236FBA49358A8B3EA5CB54A8EC2E8ED54A7B +4D66838E41AA8768DBABD5890A70FC402C8682CB4C40959C523CEC82B1555A80 +235EEA1BD2DC28761071BC767A2DE1927973300D5035BB879B56C8C64236201B +ECB15AB9181EFD6A50F96BAAC35A8901F070D9251CBA2EB826994AC95EDAA8E7 +058A702B707C261A1E3700343BFE3585DD1D8DF4863564976F74D16426D44278 +C4DF38CB2ACB8314CF66EA8153610CB4A3A14CADF596EC875105C860D15E06D5 +FAFA54636C90D409EF8E0DAB451DBB2778F9FBEC581BC7E6BFBBADF12E9B239A +F56C5020C05B5399B480BE3FD9B0AACF0AC7B346B48AD3A2EF170C7DEDFDCE06 +45587A0BE775573AB2E57EAA3786CDD2C9861D1226CFF342DC2E5138A629B6CF +0B75FF5C6FD8DB85C547F46EA878F7700903EC8AE67F5907F8397A8A61901574 +4329D8F79C56565FA7DF824BA44E6C22760FDF9DE3107D8883141DB3CEEFC28C +770C9930E982389F2EF279566B2096CA205001CA3E045854C3750E67AB8BFF43 +F8B07F2EE55BCEC65351BC2B085F803FB9BF5D7FABF3401F5B364F83BC8A97AD +B74B10868CA83F97017925021B8F919A1F50AF8CA08753D760D410245DC30E9F +A7E9A19C073E7C9BC7D7FEED4A6B2CBBD781214BEA20BD72A07B701C2066FCA0 +1DF7389F8159596F96778902346D0F40EB3C024372307BB97AE619E42B5C3DA4 +F836F926EC44617B3935C58A28CD67D0E3A438954E915E0BF6172D1CF1F00539 +27AE36704D5B4C1BB7565DE82625267ECFE71FDF2F78E5E083AA64A79BFD5DF8 +017C6BF7D4A991CDFBBC6483BA8DF4DFD414B121B01FDF6F068980D30CC635C3 +36418A8CDA06D1CBE330E751AD061376331BF1F30AB81DC9C673172DABCA64F2 +6DD69606A9B91587B8B57707B36A1C1E734E4C9C738B0F7B430FDBE5919926AF +2E464A8B621898EF381022F04FBAAAD5184B5868B56F105D1DBEE45AADCC3D80 +2C22EBCE143F63E5BA24CFCF22A05ADF1F35DA88C03A759FA9FF867A8E37A821 +AD7089706B432AD35BBFF303D738C5C9654205D95DAC3936AE8363F6C26FF08B +C87C803729A0F44C7A65E0BB3CF2E7A33B7CCC1EF51558D8FC80981B922BE986 +87A641241B0A0BE8D9F09881208EC7D62AB094D00E9F572AE27D536325FD421E +D010EC7684F097E4AEF2E6D203AED5E0D7C42E11FCBC051E56D25DFF8130579A +8D745EB13E6C7AF76C10E81F68471315DCB58E6155A9614F8F0BDD64D37B8456 +7CF46A233A62F1DB9309E29E21660F9648DD1BB14BDDFF43693C1DA4E3B302E9 +15CEB125750544926E0AF982A38A3A4B082C421C0FDF6ECC39C569F97BA229CA +43329F348329BE708C97B98B189CBCB2960D71F1CA73CA1EEB832713E627F870 +69B0DCC3CCD8482EA3EA7FEE339E0566108E46BE17B52C8389E300A41BDEB1F2 +4D9FEEDE1C077A5EF20D8F80AE83BAF2F632D0E4B44AD0D0BAAA968F2B3D2168 +75F939ECEB31D2E7811FA0A73A519FF0CA08992D4FD40E7A2BD53BF94733F41E +789BC5A7008B72255236B3D042996C45E4E1200B314418AA4EEDE6D718567526 +7BC1B992974BA3A8057E2298952B0385D7DD5089E9D7C5B8FACE9B09AA441594 +CE6501B80E7CFBB0DA29C2014AE02080D8D423EDF27FF4328135CF4D494EA175 +9CEE197C2CA22519AB42AFD301E9637FE98A19485F8A2B6D24E05FB13E66A9A2 +C602FF16147AAB158E8DF5A1FF820D8B7ED5A3F387CCDF247252C3D68A5E37BE +3BC5DC42F28C8F776E9ABF518407B2975ED2647B3949B4E199D2F6E174971828 +C7D3BF0FEE47A33C97C98ABFE47E87813722BF3F9B809F6F98D2771B8537A541 +EBBB8405B38BE6865F4E6B7A3D2BB0C783B1B73BA5FDC9EB65065EDA3E1C32F2 +8748BADDE0DCF35BEE32CA8B537DA99007625EC906F8F407912655DA1A05F01E +F6EB582FF37089852921EC8AEEEC1BADD79428965097B82577772E53F18D8B79 +0CBFDAE9F71CB9D66FCBEC1313D7BAE572743C0253470B42805ED77B125BA5A0 +EF873BE7490A3B23231CE6907327E93DDC90B656BD6D089C6DEBA6E0937CD89C +1C831543C9C882E1D6A67AE45E2DEFF0A01EC9FC670F4942192862BEC7247F19 +59D87F0834EF21A434C8E9E9876797A94FA6E8AC226376F822D07CAE909A6FD5 +8630BDE38D97097E32FF6119728D50F88960F740DD78D73B291885748957D025 +219DC96237FE9B64D514EE7C6BF47DC4B49E4F4AD10AEE0D3A779F2D977BE792 +8E15199C8983284D3F6E6824BEA40662EE2289BC4CD6198C8BE88788AE7373B7 +63ADAF8E4D8B78AE39773AA8DDFE87AD7C2059B9D72AFEFD73B85DA2586545D0 +8733C2E16495B7B1F51B31268887EFD3D47DFC5CC038A46ABC88A627DA32BD4E +BA3FC33EC0D95C42609DA3B413001139881D68D5E6693295EADB4C6D56CA04F9 +656774723158F04CF91A963BE122701B89714087D03F331996F4E0F98D758E4B +AA6B3DE1BACFC6C277EBC7CA9DCB09B4D741ACAB3792DB72C8D7AA2553980E0A +39713FD6D3800D82C7003013951E35DC5442A52819F5D2C5EB718D42B1B393D2 +867260222949356C2B1B8CF43D249A5B535089CA0883BC998D7BFBB398926D1C +FE753DDECCF869EB97182F3EBF918197A1BC28448F690E6B0942602D6486DFAA +7EC1D10DA996C972A3E0E0A258F096687DB95BE9376ACAA49C70810C1447FC50 +6213CD7284772C95455283F2A5EBFD4D910AB726B832480A95D156F7313F35F8 +0AEC649B0D6FD7C776D24F3DF345209D80B9BAAE127CAD607E11D199FC8B833C +C6C254388C6FD46D2E8BB6D8D5F186E700457B1842775BF1CA7A1C1F225181EE +ADA71EB7B0491BF23D3D324C3F8265B485906F6D767E2CF449CCD50BC0377B7A +F9618B7C6A52BD93859FE594AB6D4C1ED7D30F8E6D0341E6F49397288A254E5B +0AFC33846C581D2DBAFB8358A3CD88CA1BAE004512EFCB89D726B8A4AAA78925 +67E69B122A7CE8A86C1EEB4B0678AE1CBC2F31F0D033E529A8503AFACCE19D73 +1244EDBC161CC6730009B023DE1AB46A323D4C03E5562410A6B6DC15B97D6AC2 +258C10FDFC17AA4668BCCAEA7392463DBCE1F26430CA44A53680B42A7197800B +574ECF1C1E496429E37DE2C7717A304753BE4E443D6D8B482D2610252C42AA21 +08F9358BC6F57F4840641B2616D3F758AC5B0FD3C69A077B5D8268A11D535915 +5EC3F3E303DD241D5876BDDAA1BE799711AA04EDDADA0353CFFF3E9836DAB250 +325F865FC146CF262039A33F346B18E4AA1641F2B4CCC073492F73F8346268BD +7145ED165FAA332554CA84A82913A259EDD0FC5DFB10959F0E80B6E3F4840668 +4F4EBAE2EE71C942006CA58F45D947ECEBBAAF002098946CB2258E6E71CF0C3A +2A2709CC262C80CA18D2AE777FDD00224BE90CA60D12C6778EE48C6A258885D2 +2698F97B7ACA2142A06AB50131F3C565739D8523E6D0A9CEA0B18B1593764129 +626FD058020E5BBA72468B644AB847A13A87E71907C9F753B41CE36D5670B8A2 +6AA29599751E337387E63FB5099068C876E6AE81D47EF59BB82AF772BDF99948 +14F3E8D90005F6D095AED8C3C47D6F136B888B53CF4341BB1A18DBBE2C155A4B +FAA06FDA4BCEFFE8C2E77782FB062C2FF89FA77C07BF3F39E45DE3EEC32A932E +8AD72191B7A6268726CFCE67A0E7B74D1D105AAD8F6EB5F518FDDC27A218789E +10C6D56B2469C8E9D724075D494FB49FCFA6B1EF250DF13599BBA5B8194197D3 +0F17F383ACAB237905466228CF4DA095671A66012C871480313558E60F40A36B +1C206152EAF398F8DFD8EC7FF80FFFF7A426D335CAB6589CB823D8BE6ED4E5BD +18F60101BC8C85B29A9677F8715F6BF5861E20B0BB8A2C9C12EC0E6A20566777 +A8B1C23A1C1AD7B4705330C254D9F4DB7E2B00B56A93A2ECEED51EF7ABCFF15C +22A92196EED3F0BBEF2ED110152510272026FE777198C3F9406419D92584A7F9 +BCD1DC02148236693B48EED88CDDCFFBEAF7BB26A9983DDDA5A7DFC3B4C1A6D5 +2560BD180419ACFD74D5F66DD31BF1B934E7B64E748CC95151252AD15FAF2005 +6C734D30D26DFC23718D00C9FBE113A40A9DC5685F07A0201FA748A4116D69DD +65E10AF83FA4AD53C4130846C703EAC6748EBA15ECC44BB4E9402CC4C4B75B78 +C0CFD428CD377867C74EDE17833D69F8840F2CFE5A1817A41AEE75C7FF288EBB +31012604E066F8F3E1783A94D81AA9F5F64A749D457A008DB5AB146114221258 +B314DC5738630CDFB4827F9AECCEADD888ECB3A7DF47022A6C629452FF54E360 +70E38E72E4AEB4F4660B3DFF80BBC43F3562BB7B254FA86606E7F83868F9A0D1 +A9B2DCF267B8696F5C70AD811F88A7F16417B3D958AC1DC5AAAB1EEFE04F6FD2 +228DB732D1B4FF62C5C27956C2AC4D9D8664A07B9CD71493D78A3C0F157DEEFB +04E12BFA1A2F4CC6CBB02E4CC5CA3E8BCC3E0E2E1A64A7B1942E95022BDB34E6 +157DEFE50E41C785CF9AC73684BF49A3541FAD59A1A22F17EB6B6523E9397506 +F5DE864EC40EF1EDCDAC5683F0025A2F9ECEC40DB69E03F39C09833162FEEED1 +50211931877DFAFD1AD95FB8B05847AB51C95338DEFF5AE18EB3DDCF2A786F6C +4D38ADCEEB944ECE60B82BB068318306F7598B166962800DFA7CD3518C1EA0D6 +4F5AD48208EEB8F60DD5799203342229E9DE9688DF1AC8B199C5BD8AFACB732A +79081866ED73082CDC6E391F618F36545F59BBE9DECA4BF5BBA8572A66308222 +F3AB21A2FD400E1D5F5AB897307340A274606D15657EA5D19FCB932F9F037F05 +03C9CCD4D9A79339A1157B2D725810E21031FF0B07319666F4154787BE88089C +D08551FF4D7FCBC31E1B1C33585D62D185F0146FEC998E2A16DBFEE0C1C60E5B +E196969E68B35BD6B41CFDF8065B8D483C9797E2F847E81E44ED315EAF1D3C22 +0B61209F1F56A22C1694AD16CE228305986E55661485A005935657DDA8DB7B2E +A5CC38CB5583C0DD1DF29DEBB277B4705BA3BF5391AB57909E8888123AB72080 +CD050ABDA976F4232ED10FFB2D1B321EB14DF3BC16BD3B3B09C763E8AE443859 +80B4F62D888CB482AE32D3C8D81B166107AE507B53B8679DAAE558151FA9B010 +A45CE34B88BD4EB95E7DE41277F03A343114E904AB0827CE9E3ED93E95318BF7 +CF51B3E32AFA4B84249074D7071F5268FE3C8F4A8B58AAA63494CC1CBFA4D7D9 +999251A76D99D261EB8AF8C0D5E9AA59284DCE0C9B6E150662A18F0F601E2519 +6204EBBD240955811392FC1099F5B4DB0782AF4E33F8A2CD594C0A7CF2CCEFD9 +73CF5A6661BFB1F2F437AA86B89BA67B999CF90A38BCF64BDC76276A09F93537 +A288B0898D7E361F90919D272246D4B0C09DBB9960FAA0CC2DC39A14B8282E58 +B1F7243B1AE573C7CBD74A9CDE09A1921F8CF7BE00297D286BC2FD3AA11CB06E +3D7A2C52D10F878E51C9AFE8F16668C0E1FD7F90E2743A65C382B91F4D76AFA7 +AF041C9DE7A83B48D89B770FFB53C1B066682D6A9A1E48E5CDA32A46F8F8B085 +DD0ED34438161EF33711496CC2B8E640793E1E9BFFAABDAC89DCE6833EAA71F7 +578E20D43D3739FF58D41C1EB8C63414CAAE2FC534D677134D218DAA40A13E36 +59EAED3B3648BD7A3607868F43E0C85B2E04B67FB07F564FB9D14CE479B9763E +B0FEA84500D86F75517670F03715A50AC0AFD0B71090E530F6CFBF3E6226C609 +2AC4726F8D1C6C1362524D9F658F7FB532BE1C05D74A3A46CA935EAFC5CD9828 +3511C71910A24B326E2C994A9ECCDA2C4879802B5A2651449E7445E84A9D50D1 +4968CDA95450FE448EEDBD06FD1FE20178A752B95E59CD5729353FD982FDB318 +2DCC5254DF36CC72B4758CBAC3267723627796AB2C3048BA3422679BF381C838 +76F0EFA03CDA22FCA4E6C19D08C849CC1005859796FE8A17E0278CB0D04E6CAE +CDF828F23397B59BF7511624EE4A27730A79250C2B094995660C43230995E255 +02C65BC6C853C981A5EF9EA9A5A5E455477D996005167153638EED63F55B08DB +218C65137F17B871E0F75D9128484A64FD8290BF50914BD98BFEBDF8D689AB0C +D011ACA2B89EFA51396CE71097ABD82EEA261A4E592AEB824DB9E444D25ABA68 +F4B65D5526A6B70A7CC23AE476AB155B0903CECDB2AEDB1BED5537E291F215A2 +2C69E73C4B09A6108A0A1E16A218C1790CF5B4D2E6199F0269DBE62199F9166B +96D6610E3F42F573F9EBF70145A5D0D2D87F7599A56974284F5F92B274F249C4 +3801B3B138140C78ECFC061AA8844A41A029FB1A90CD09222BD9971F9B8C7488 +9A448CDE2D62C2270B34068F87AF5C5CE86A443D5F2F0F9C78D84EDADFC1CAB3 +119F7D3897D89D6D95A2F72DB6AE9D17FDABC7B3D9F1E1EC514EFD82D912569A +7DFF257929A5D0B3B88D7253E11FEEC431C73B9A1D56BB87A2C73B45AE345026 +CC27558FB4A4D34FE528060CE0425C77EFFF57FC6C9C8E9CEE24B78CA06F052B +540BCDB2F118F9A06F708BEC473274C882313BF600050BB6CF36C58F9AB8A701 +502CB618F0FE530A7AFBE9DFAB8B150C787540968A68A5EE07123969C884D7D4 +BC48CE82C27B3B192442508420176E10107EF453B20FF400C12A980C7246B12D +290EBBC3DCDCDF25ACEF0E6470C40890EBDB4285B9A03C7566B45578AC4906C0 +E15029A768A2FD07F7FE0FAE46C92F2BD601BAD9BF06EE83083568BF2F7CE09F +14FDF7394E7CCD99E9D8930FAC99D14AC9FA211A02D4739F48F6541259192098 +3C15DDA136869EBA347F33818A24CC2BBE88FFB74DF8D3BFBC190E191ED351C5 +4B3CAAD0CDA1B9986DABED2991CEB775F51FF106A35647B6FDDAB142705A2113 +14DB6066929B20CC11242374A0833E5208962C9C079E44E9F5FDC6DE87F70DFF +CBA137C67BD1EC78D08C73D0FA138339E5F28363BC3B96351A7BD115958BF4F4 +47DB8EDBDD35B2806B741D1CD31FCE5BDA1BE899AB94B520D8A7749F1B1DA579 +3C408B11BD15075B04E99589D9F6327EC85F1862A754D4FC13C49A82043E9FFE +B5A257C6A87B45386A7125071BF7CD6B3409CDFA9C2BA0DBD61627F9E9160163 +67A8389FC9BE20E1854FCC35C3252E96E687BB0DF1F4CAF4ED4C61FDDB5A3B51 +05213CF547186987D447194A5FEA3243D947B02E80DFF12370FFFC3CC5696371 +B6F1C23A9CD0F6A64E4A019CF6CBAB1FDF44AF866EE19BF59D78BB375280B9CD +A74E328753A560A20A977934E6B58C905DB51AA3C35EFB6B3B49152C288D6683 +535DD175A81F1DAA1F1EEF1007AB605B822B09CCAD1DF39D016A84D8C603200D +086F358D55FCA0EACAAFFC1D76EF864541E519D2DD5BDB7D1EE6C7066C7B42B4 +346A0A3042B354824D0C7EFB4E9DD6D6B4BA7E10694901FE227C7EB9B9615855 +59D6A8FACEC963D2F9A93305FE995A3A83055DB229166826641BCDC83740EF7F +B50AE8171CCD22B230E2784C8CFC1ED22C9C3F5EC90A16603322E2A889CC4DD4 +0FEE8D0DB78FD9B74E2A7FA196AC0AF888A36CE05A899943188920A6DB719076 +CD4B39D3559C992A02DD5B3C47AA1B859F8E6DFAB5F26947A0AB3F30E35FBDE7 +7BC63991C716A54738AFC85A7FC259A874F7619AE7BAE01C1C59A97D595F0AA0 +9CF737C6795EFC15858C11BBA24442B5EE5C6E279C25F022E5D8FA458FE8FDC5 +3FC1C7583963E300B86586F88F42972FC0C56232FC394ED64E275D9889E6FEEC +13F0F853D1D6C390F1242FF327E23370D8D4BFDD2312415FBB25C759DFEBC763 +34C45C85E0E82108F790215F5CCAEC481BF451C34EE685E85270702194A740BC +6697B6BCBFB850E7727D3104702988326DF435C7127C3645E3307C877191955C +84D52B3DBD402013610A3D6EB523C4D98100AC761FF5D8D7081371CBB4235215 +D0507160B45196DFC9C390029D883363DA88226787415541E8CA99A7EA1899CD +B4FB6F6AFEBA08358E7A978AE7E8FC054FD729B735C60BD29C5DEAA39E6CF5BA +01074B51351E0AFB5B9185B7033AA1E410613284DB9299A3B3986E60A2E9C178 +88DDF8444A6C8CD7A140E1E4A84C33F25D184EC3DA1BE13CC019825C19D246EC +7D55C87B8685707E3BCEECA0D6BA729C045B3DF4AAC711C019FF2E8F80CF7BE9 +37BCB4852BEDD366103A4C73C4CDF0F495D9A07E005E98696B863C25BB79086F +281865CEF0EA2E1D8E48FC3966B93C2FC3854AF80225F9CEEDF97F0254F2B419 +DB4BFB43BC0D392E17BFDD433A18F11478D955873277FF45E00DC49C5B7F2DB2 +02E129C246C31320FCA3428D185C0E8F413D4566EEDD044A87D68E75F9FA9A87 +156FC6E2C9223DDD57548508AFBCE5F9D429D156D06D9140954511656027BE45 +F8658279BD85EB6EA1BF7E760226D750C5C6BCEA47D8E5648014431946877B59 +0804F03058E80FB624970E85C40DC80E265DF761CA2646579FC5BF43B706260B +67B0D308A04F0E5950A4BC8A635E1263A60743F59B124E726AEB9F39B44EE7D4 +ECCEDEBA0031272A266E69B90F24403662B09DFB5C6CB855E553B38EED88742E +114A0B159D1A3C41D782818842F567C616EA6751408F89CA8177D1E625D8B2CF +2B6F0EA9DD7003D93ECF7C9665FF1F8ABDAF859D04D208481217300DA1DDFFB7 +654FCE01FA87539AF944F27A9F833D4DD166582850BDC8A54296EB7707DB578C +854FDE7CA891F11B9C82415BA4A4FB9B123D043E86C390576DB5E86EFB220D24 +741EE8A174D30D462700AF8D22083B91167410876185A11FA32469A0B807E249 +B59CE0DC5E01BD846B32575371F4C1308C7229DCAE0849B680D4AA30CC7B8769 +DAA9B72BD93B32D26F11BA8BA05410B57F9A103F941B1170B36E5DB60548FE51 +3369FC3F55785EC754C8A1800414B9E8114601996042AD4F4CEC7CD0AAC679B5 +B5D6D321CDFC4AC16BBC3FE44652767533973DAA76786228A8D0B835F7BDF74E +FCF2F2025E2C4EB5B4009E7965A4DEB180129065FB47A093BAC368BB1FB2766D +0D97AA715BD2C2D692FFC56C18E2333DDDF66FE21E87255B7B50DBB7D79CE1 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: CMR8 +%!PS-AdobeFont-1.1: CMR8 1.0 +%%CreationDate: 1991 Aug 20 16:39:40 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.0) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMR8) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle 0 def +/isFixedPitch false def +end readonly def +/FontName /CMR8 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 0 /.notdef put +readonly def +/FontBBox{-36 -250 1070 750}readonly def +/UniqueID 5000791 def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 +016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 +9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F +D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 +469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 +2BDBF16FBC7512FAA308A093FE5CF4E9D2405B169CD5365D6ECED5D768D66D6C +68618B8C482B341F8CA38E9BB9BAFCFAAD9C2F3FD033B62690986ED43D9C9361 +3645B82392D5CAE11A7CB49D7E2E82DCD485CBA1772CE422BB1D7283AD675B65 +48A7EA0069A883EC1DAA3E1F9ECE7586D6CF0A128CD557C7E5D7AA3EA97EBAD3 +9619D1BFCF4A6D64768741EDEA0A5B0EFBBF347CDCBE2E03D756967A16B613DB +0FC45FA2A3312E0C46A5FD0466AB097C58FFEEC40601B8395E52775D0AFCD7DB +8AB317333110531E5C44A4CB4B5ACD571A1A60960B15E450948A5EEA14DD330F +EA209265DB8E1A1FC80DCD3860323FD26C113B041A88C88A21655878680A4466 +FA10403D24BB97152A49B842C180E4D258C9D48F21D057782D90623116830BA3 +9902B3C5F2F2DD01433B0D7099C07DBDE268D0FFED5169BCD03D48B2F058AD62 +D8678C626DC7A3F352152C99BA963EF95F8AD11DB8B0D351210A17E4C2C55AD8 +9EB64172935D3C20A398F3EEEEC31551966A7438EF3FEE422C6D4E05337620D5 +ACC7B52BED984BFAAD36EF9D20748B05D07BE4414A63975125D272FAD83F76E6 +10FFF8363014BE526D580873C5A42B70FA911EC7B86905F13AFE55EB0273F582 +83158793B8CC296B8DE1DCCF1250FD57CB0E035C7EDA3B0092ED940D37A05493 +2EC54E09B984FCA4AB7D2EA182BCF1263AA244B07EC0EA912A2BCC6CA6105B29 +044005DDBEAF88E0F05541BBD233977A447B469F013D8535A9D7023CC0FB7B49 +A95CD2B6F18935C37F49E9A73E97A8602C5C26EE13D7A04A188336FCAB4CDEE0 +23DE9D803FD6E8D846B3F729BD36137E834E016242CD2F7BF048959DD45AD413 +19B985D05E5D422F3D0968375EA6A90FBEBF8B42B15F15280469D69629C08A42 +1C298CC027CC288B9C984239ABB96B6A891C1360D08F9ECC22202861E4CE9B39 +8BF147F0B2D22726583618BBD081A7CBB0F10ACEFC161043760929406853BF52 +3EC809222FB195795F19F76FF7541EE3E7A0ABD4F0D9ACD5039881353B0964DE +AA5F4BF19DAC50B2AB87AF57E4384D8E8CA2E26121C778BA9DB6AF926C29B3EC +C51DCAEC6811F219E002EF7EBA102BC5B409BBA3EA06FF63321D004D0FDF986A +4ABA9BF9171846319418EC2DA26255ACEB6B4869FF71CC9027A3F36EE4B98837 +58AEBC43692F20B492410BDD93F6817C48DE242FDF30AD76568E792C3A665C58 +44C54E752A1A87728330533622720E65799B3ED33230FEA1D4C22BC367D9F547 +F667E5A90597799D54BF50BB11337A7DDF67A7FB6F52B15A2876973A8352650C +CF74C4575B0A43BCD33DF8D7961642B509468FB6E92B23263E8FB5615E223AB3 +6CCFD05B612CDE7B555B7FA92AF3E5E7DFF8D973FC3791C97D145D4EA72946AA +89AC3CC4016DD03878383BD5906C224CE197E8126D217114547E4D96E0AD8E65 +A4DC61A106F023AAF1BC47E496F9C9DF8C42DBDAE44E33FB910984F73E5949E9 +99DBE07EF7825C060BFEA997291B25FDAA70B09BB13CD8CF4A480A232E21919A +E9887FD8BC9EF086AA85F50AD7C889DF09696A34CEF35D8CBFABFCD8CF6776E3 +76EE2342139FBC0133E18F11B2F0C6679FF971775F67F937CAB200820AFE75EF +9A589A8FC9E20AC601FA521E3D7915D50FB94F3B39BF46EEE1928A09BA1A6442 +F924B2C1B490A622F67917273E141EDCBE6945244F5A671B8BC2F92AE560EEE0 +975E335B484214FF4F5B15D4700D3208F4844D6AA4B5D67C05D5BDA16C5F1D84 +63E49D9DA5443D596106C094583A83704DAF474505F9EEE80CACDD901BFC8571 +56846DF88902B435C79681E8A508F9CC42C7809A975EB756747E700B28485E1F +FD7E6D86EC9285A095DB0DDE4FC086D5C7AAFAE10A145AF9E3D1E7CAA2AFAC08 +88A23EBDC79670AA8CFFE38DDD204BE3224C4609757633C029BE2509391B80F3 +19FEE5F3AB163506FD274929767D3D3FBC06B5A7DFE7ED1D4A93C3E41689C5AE +A84A914904CDB6D2A60F1ACFE5001268F67DC07634E2F52164C4ACB0BBD16F1A +87E9428A3FAE4A0207C8A1860D8E0696C748A8457403EE1A801CABA8E2D2203C +B8F565B065C449EEE679AB1C1BB241DC14CD367557EE8BAFC76383B7E30F353B +2A1695F7FE392192514F9DF81564C81E282DFE6502C213ECA87A66A5057B72D5 +73A3A848C2BC2FF6A0E0AFB313EA45D7FE2E328AC3016FD8802EE4538AAEA5E8 +947B2DD12CC78E53D47423EBAAA312035B1E6BCD86FF619796B170BF834BDD99 +90169BE96C0EBD84B97C244705525D1D60E88231B825D93B1D700728D8919CA1 +6518CCFA5C2768068D76EDCD7A22A6D4C42FD4CCD3E28C61D3B46C3510B78931 +DB7655923FB7E94062A8955859B0C5A9180F54972CDEC0661D1B6F4DC58EA397 +CD341EE81EB212CE34580EF988CAD9477B119766FFB7D1CB2F1376CCB238C6E8 +EA3C9313F8018CB60DCE502378BB3F49EAA6C680B62E73A01DF8C4347D00D2F5 +863114D3D9B00E9A7E8E6EB7D6F6FA6C10103A641174A6131DCF49CFE1D641C3 +F61B89CC6B2A69C55B691934E1E4B0E8D67E592EC7BFFF841BFF3A4A574EB3E9 +9C3FC6A9B177E2AFCE1D7BAE9AB6B361DA451E88F493702A6A34764D5120BBB9 +210A43932754B18409AA1B5EEA960F3D9EB27FE9D70430DF93ABB6F4B91FC467 +2F5BBA217AA35DBCC7F3E752D847DCA8B85FA0FDC8DCD6825777899CA8FE22BE +BBEF9C8D1A1C8B44DF3016948B9C28B66A287D4410C9650F95607DBECF0BA8FE +FABD6676D359E9552C5BEB2FB2889F5E3D5232B2B5353616EBFC2309B6D4959E +6EF07CB014A149AE040CB5865A9BD3EB34588C9850A93060AF4A056BD4717142 +7F8B25A5ADBD8FFC26701BF936CBF17306B831756D88435DF01B2B875BEE18C3 +456728338AEFE6C9A7CED1384319FA59A743D25C5AA157F7A0D3477A362A0BE4 +17CD9297CE707258B89B88C6C826EA26700A58AE1F5164995EC4DC0E8E1281C4 +000230B6AA110BB6CA46B754E6F8AD09B5355BB515ECB328239362BAD7C59272 +E6932894CBDA403725C583A1009D4996310FDB839BF9B4AEC033E1BE2D35110F +683A33913C2AA953369BE268EDCDAD6C50E38DF26AC3BCA358CDA00F540A1A49 +CE2D47C55DDAF4C24B3B8759238D5D4F9AD4B771D2A33AD905092A95F83B0FB2 +734A420FD1AD12DA80DA11BC469634B6AE4D6F66BB1636384A8C47010E53C401 +E628BA3659089E4921C080C7E05858193D0C40E0C9B05D6DAC0F74B1834925ED +46A45A6983943E2B12E0A8A1CED859BCBC46350968514823198443693CE806DD +28C71ED2E71AFCD8E418E1B2D13B82299D2FFDF346AD454EE37340CE52684FC8 +615AD8E9D2BE0EEA0B8B079C5E48EDB4CA82D2FB1D8684CAC5089379BD833E2F +14F4A81AA27B49EA54DE490D19AE2281BB39474C8AF6A1B9EABE8D9B09E284C8 +483EF3A6F0CAEA501F62799CF1E6DC4B637D02E99FB51E328DC2AE144B3F715C +7A16F9C0F1B6C97A4464C87AA4D113A54A3FC1AF77B5D4CB4EAB75CD9BF22A29 +1A24AA5EA470B632B04984501C4028C197E5E1D1C402284C6B2100DE79FBE6BA +51404E105F0F86F8940E4ABE72B534DA426AD0A8DE5D35B84966C4E99DF0082A +E44F82EBEC804D7ADEA1CBEB134527433A075B2ABB7598D04B673D442874B0DB +9AC93C9FDA219F1D91A1EC35CDD6B3272E1C32539EC6046EE0EA6DD3E4A48987 +162B3AEABA2A42845320CB9E12EFC8E17A72701C38FF5759A2B8592C7935A88C +C7384FC3A9B60CBB3E9E70E49CCFC7F3A116F9903583F51B385FC7DDC0E9A9B9 +CD0B5C38F0D89D490809D449FB3755B8EC83A4DD979EB995376600BFF7F38A0C +604E6BD6A7F033D92400E988725116A2B364ECEBD706FA978315735499EA0C9C +990C15B6B70C2A74960F1FC37B448D61B768E8235BE90A19F9D7DDD3C7135B94 +40B107F1CCBFB04656920E01413C5128B0AB583A26398D82526492583EDFAED9 +B1B953655EF05FA42547467F072E229D7135228A0DBBA87708D07BEA319C6409 +7D48C3CC8BC7B4B1F6D04E3915D79FE4167CC462F2598F1F1606C785FD1E9538 +717B45099C35C3B3894506F898D83C838FD4530A1EE0C11335D74828BEF6E111 +B041AE57F24722ECECABBEB1CCCC9C8AF3BA599688694A8C35581E29D503F089 +B98E96529FC4B1058B8E23782D2F9AF14E7C4105298638A5E29847640A7486D1 +3BB1A79F86FB2DFE5A03C1371E4D7B95B388515DF5A5E50887CF3B29F1984D84 +F75C9EA0D77A925492CE608E90A96C280F7E86AFFC852B058937C948C6BE22A1 +0E28FBDC6167ECD6BF9547135FA62C46B21341EF230079684FE18D96984790ED +908D58AACFBD0830C5D8D3220F2EEEA0FA6B21CE7433B5FC517E64303F7145C4 +22D09ED0758B40F1DAD62DEF3C201BEAA94AA345D0002B809D602E2F89CE8CBA +5DBF38FB7B09EB01A508E655A068E83AD44EF21FB94BF63B017D86F85B3D5BD3 +F2B6BEFCB4E51F264991DD7C60931B55BCA29BCBDE2850333CDD069AAD68E630 +741E8FEA3C880D4D06E2E1BE457FD5CB53432A4A967870C8BCF142821F20E506 +F7A998D034E608CFA62DE8C3B9CA4358DAE3B848F0D437F8A8159B54B4115E07 +22A279338EA0A3C85B72257F0CB7BB210925AC87CDD912959ECDBE86D27336C1 +F6D5A21457DCE672F20358A65A3E40DB43821FECD679131891D89B8B3DC6CDCC +EC6FD74D1ED22D3793E1633A735C20B257C591855F0EB703612C1ECCB179FB15 +A313CB0834F6D16CBDA8B6993C477E765C786AB86E3089E01C4918F2ED9AA149 +694B62BB249E654E2C592CDE345C7D898531EFDBBC95DC95B90DA35A7C1F49B8 +72012676DEAF762E8BA52F2A79B877FA34EBC0D332C9B38930CF47C769F6381B +41BC928EDF77085C3726D0F980EAC0D7E0A32BF70A21AFB4B4A214054A3B9A48 +BF8321ABA58373C6697BCE4D3028BE2F8D8D31A50731A84A09543835422F01EB +CF74436F6C9C8592DB8D9BCCF3674D393F0915DA10F1D8DC218B55ADA7349584 +AF31B0B60BD69047BAA7456571F846FBB7E5E094080E7653ABB8AA29E890085C +38AE13B004E54E1E1B922B08D6D07A086CC533E7ED87FF44B402009098A4D9AA +E4F3930F459AF1A400A7BA85F5F7E0E3AD3E514D29222463DC18DCFBD444E106 +8B335C699B5BCDF254E170CDE093357483E18482DC80E0A54CD500F14F0E7249 +F603D1B462CA94C71B46B6B1FA9D5091E34B8CC2CF599F7435297FB66F5D48FA +7572A000A16E444A83772BF2B05688CE41029FBFA0B17AE1C7CF6D361F257E21 +23CEB2DF1FF2111765E2B34D27800A7349BCABAB2C080F816AFF76CEE128401B +C43F1BEDAF5794DEB1A298ED61633ECC24969169D021FA32EEDB5055226E399A +A7BAFB70A624A7AD76608416ABE23C450D7E70C6959DCBF03B845168C2839166 +493D3355FBC4FB00B96C9B8AE6583D02A1999AE46BC882AA85D66B526F207E5E +0AD5FD3EF0ABA378D56562E9DCD1263D78F8BBADF9EAAEBB52AFB72F348D822B +B82303C874FD3E6187C25990EC297DA7806D2CDF2C1030F137D333CEC7FA4DE8 +41DD9114E582EF366A6DFFC2E01A16F0122718736BF9B1A2D50A3EBD48F0561D +4A391E7FDA3727422F521476E7DBB76FC4AE557D4CB7040C8917A61C17211D68 +2176A97B3B8DC4F6F8A95031B68D00F7D0CBFA6684B5BB7D8A357F5AB6639858 +D730FD5FA1C02E9F97301E42A6CE735435B3BBA80C1B53AC645D2C1F351153FF +D4E4A0EBC453314CA575D5B151A9AA1ADC1A1A5AA79664397F3217E24CD81B3A +ECE0BA0D6F4A6427FBE37320726A841980070C1159C3901E3E8F1C07F7EC7A8B +428FB4423E598ADBD4E22E137D6529C588ACDE86B869B914A1A95318F9B089CD +BA2652842C8AD3E63EEFE546B2F09A3CC465933F8F4FD9882CFFF650DEB06658 +A20B633B3290005B1C1EAD65723A4E6F690311705FD1B0CFDA227D7E7D3B0DEF +59AC88DE4D22D7AEE169F2455C7EB0209D4DAD5CBB9860BA701AB526E4C7FBA7 +FD9B1662E3DE2DCD193EEE7BD18D68EF0328C46D023A7C7AF34FA60D43308F4B +0554F7043C1833B13094C7C72BFEC5108CAB7FF8B65EDDFA0EE11881F3554E29 +583F7CF64267BC470B5C1F170D31E8C7BCAAAEE41586E3BDE7CEB625F4B04120 +76083615F281D011357BFBE006315B2D821F05754FA853C710F459EDCF1F346D +22B569FA4B373962FA2C659196317632B962C84B98BEF32141BC60ABE433459F +920620A5D02631E384B86BDBE056185E5D66C3567715709B905E2A06ABEF89A4 +7C0E2ECC7EA17CDDBC0035AD01A1DE89CB6CA97FC14C3BA6B693120CC6BF8CF9 +44F50B63E69681B859C38ACD3683B2C619E39FCA40E5C12274ACBDCDFE8CC111 +DCA3FB07C11E52D39B3E0394B01723969E0CBF1F104772670363A09F29D7EE87 +77BB82420FA3CCCADC9516F5439D570279F035CBD0B3962BAF7B635965401636 +9EFCDC2FF1B04382DBF5BD2CD19CEC9F3B51CFD446D242454803EB8EBBF1F134 +C8EF82414B204BA307433A05AC5DD19ED2AFF67211193DC6819F10FA9318B157 +C9CB661248C02FE2673D4CABE69A20EB2820283C08DB0922BEE054306748E4B8 +91946D5DF12F3D30EEAAE38F79A65319209B2158837E0D1D39D42DB06444C8CA +5A40F3FD7F42EF6B74765B9D6866AC87D76AC1D1C040D17D3E905AFADFBAF0F8 +7F3978A9A8395979EC07D0BDE80E3D42AE312310247E78446697DB0D3840A51F +3C8F3B529CB8F26AB863CDBDE1E30F97F42A05F58B3E91C4709050674097E01F +21B99F98090288B857675EF4264C36932BD56B99CB22DF90016DC8A69C210B5C +4C34333E2B58014CDA465D73B0ECC2F971D1348751B271167C6BD624917AF015 +213C1AE4EB4D6CD8DDBD0C0BCCEAF3F3E883E4A526DA548E3AE665FC54315436 +EF05026950C500C3ECC1F6064725FD5602F0E892695A6993FC6A87B2ACB96907 +3E44F141A7F55B4964AA281B6E09EAD3D17CA9D5FEC455D0F86AE5BD008751F7 +0D63C9A8627F492E2FD1483370BCD0DF33DDE857E9F8433CDEFCE4B02C60AE1C +3EED2F7BDC50AA172E2FA00291DC71AC2695AC12AC797FF7D15D0E8C5B21FB55 +DC3E109C1AFA49E6D3F30B1C8AEC3CED7B210E9179B57DD5FA9FAA3DE9950C69 +1A7ADD7A9FCD6C17719CF70A0D427F8070229DE9E2894F8759DD71821238816D +594544573EB6C30530DBD16539427A829FE98E711CA5B2740095B9FD36276FD1 +3FDD540ABB094D03ACC45FA9AD01D892FE8CE30FA613DD4FA754880C646DAD8B +93372472D897CA32B84A58164B20BD322FC29594D0930C9406E7B736B74E8766 +CC4DCA58487AF93351E4C0078B38CF7E31B4CB8C223C339D4DA42571119856D2 +F0C68DA2CB254FD6CBEF4FDE3E309B5F6FE8A6D7B44E4AC065C1B79D2B16DAC7 +02E597D73088DFFF688EA96D9E72E3E5419AC7A99D7B58AF8587CB6E853B6131 +95BA5AE058809E32A3D072F50C8FBF4D0DFADD6E992BFEF5CBCF1039A2A7E689 +1BEFDFB04EC241C34629F5AAFC06EEAC05637E2E4792FE142F48CC5145FDDB73 +52708B00611BECB47B94BCB55AFEB796E3E4D3F06EFDB0CE6450F12863E4DD5A +0935240700CAE9B81E4D3D0A5AAF17D0C1A279F6F11742C9FBBA6FFFBA168C55 +735ED654ED3FA24A565DC0B1A9AFA9A44130E5CBF92B82FCCAF73DEDAACFD669 +0605D02EDCCABEA4A227F28A576FEA5B5318B68053E539E86CC18FC55727536E +1CF8B1A7C40291044C17C5C2D8E18C5922887120704B819587B5A33C4528287E +F0A2F9527B997854CD877FDAB96903F4BA8803C9C7D61E724993A0E7BDBCB496 +4F5AD996B519F86009254B081E32E93F282CE95FB0DD281A4973D4D0BFFE68A8 +3F0E199DF122754A557E7B6D73B67E1EFE2E1B219D80B6F2C2AC4C373CA73DFA +B4A993E71143DCFC8CC84C661C672CFE83B8CDB7E28BAB9F230C822682964C5D +2B54037976CED27FABBA43042B38DD96D692E98F6E7A20C435A469EAE880FDAD +768016E39A51B902518F131DB096259CB222AEFC0FDF9CBD82531B34B8295CB3 +B1ECE0F397DB6B4B1D1F2C1ECAEBD71B97CD5B510341611AB5BE4A5EF9CE300F +BD691EAAEDF57B6D585B27345D03147555DF906976C1AC2F95ED3A35853BED76 +554192A5BE7ED25898D8C9728A39CDE39D5E02DD02E9E719A4689AA59FF39B1F +C9D89032E09E5AD8A64EB24BBDFD79AA6BE4659DC05A0568FD808BA7895B4C05 +6C511B8CAC8FFEB08CA271264D61D5C894315055CA842E50710273023EF5D489 +C3BAFDFB601FEE2DA54FA552B2878A0AD8EB5D7E812437F4650F7170F809575E +8D038E35B29C32F707B1BFE57D2AA5DA2AF23FE8B3D8C533B8518CEBEF534E15 +69A01E4D8D69F262B9DC2D15CCE7372C3A76FBE5183106E1036705BCC83F3C3A +FC8AFE4A96C06D0C7781ACB721721B980B87A4C481BB4A656535D9F51C0ED3DD +9854247C788789B9E6341E1BC43BE6B62A8D2D7976BAFEDAAF618DA03C14C961 +77104F6CF1F9D3231BAB1460CBEF935F5FF42B65967702DECED0D02179E9B646 +43BDB7AC41E2316C8D720C15963DC7832454C717A2388EA42127EB01AB80186E +556998759E200CD7FAEE373FD3618435143B198257B9F35BC40E33C3BAF6022A +BEB9D17122C09AA7EE7F58C32160B43E03934ECC65FDED1C3B9BF21858FB7920 +236C832457D298800438531822E1772849E67987B35158F6DA1FD3A3F5A3E564 +B88F98155B678E39BBB8083E8B71E0D4CC0B5FC2B707FE47379FDC040CD5C5CA +D8D730CF6920E772231AA1AA0F1647E6DB488B8721B8D788AFE95CB0C1D461F2 +F47B8E69CB327090A741773714739B898E8831F2476201A345F828C4B4B7861A +C6898325965DBB1F5EAF82D0D76B3B0FD34F2C26AB975AE793B8E442608EEA59 +4FDCE8508CCBC90385ADCB98DDB926E14F5B0E6753A7918A9DBFED088DA9805A +6DE843148B384756AC4A04E2509E290BC9C1C75350799E8917D7D09B922C62E5 +B2F6DB234C0CEB92753C7D4BDA4E146D0B71064BA773969F816ED9B8EB71DB47 +1812AA97E08444EBBF8B365DF86E06747A222A9BF26C72347EC77A24D594D9C2 +1A612033B071CE656D0BAD462322DAAD74083FD761C0EAE10A03620AA6DDB154 +A0CEC3F8987A2FED9F4BFC02D90DDA261885E738771C81DD918A03D633D9003A +3AC8F1337CD0A0AECB63121C76F840F7D9BBF7AF1BBB3678D6C9764CD85E72B6 +14E5E388D616559D2694499FA80D61F5053AEB5E4B55BEB697008D5404497B8F +CC69652DC03A76237FA23D10CB68E5880A7ADE2575B31B54F10C268813F4B0C9 +1FC1E54CC5C37BB4053536C14453CAE6990AE22D3E74E82BB2608D6B4CDB369D +065D18D2813026453CF911CF7C2333230F466C74C87728273F38C2EB6C3FB9E3 +D17634C0C28A76889AC3A2C5693060A5F0AEE214B090C055D52776A53E632404 +0772D2DB1269AF13430C25F51692FF6392137B142D1C3094F53F5AB9FE4CE32B +E758D3AD09FBC4976AD60C457B290874FE7B6ABE54AFCC4F56AED40DDA532465 +AF22CAE2F3EF1CC4B689364F39255AA5BACB5120D8EE8F39D58AB98FB489669A +7800A1B5D13B36FDA95B8053C15C9B66E8B5622174B4D6B01D49888A73BB9DBA +22A3AE699D725021F052B96D2B76E2FF25C61095CA21A1800820183A16D4E2B0 +1968F422C761CF59770D75355811914419E6B9A624C114FC53CED7DD80C92BA3 +267BFDF01CD2D33540F5DB420388EE1EA536F7FB7619D3B00A34AF9ACE09BF60 +BFFCB3EE98F8E751231A94E70F49495BCB5AEC508041FE26F9FCFC38DFB7B7F4 +CAE3D60AF6C656D62F90BA6ABAC3CA1ADBDE709782366475D50ED30F67D9BF2B +EC7105CA22A743D5A7BA4B7B16C0871AC38CDFE9A165920AB712E992BF1F0838 +46BBA68353AA0EB2A3B7851938B5C0BD617A91B47BE536EEE1CF4C9542D184C4 +92A798FAC3452075EC6F931C724EE15C18587F1EEC9EE90DD5F3670E7ADE9B72 +828813D0BC116CD5B39031A20CF5453FAB9B77C40BB9E3401433E9E494E9047E +0E8E2F36B5E8DCB181375CF98506928FDD6F907769D83794E9B663FA26808BFB +A5486D2036DF0283765C35A848E10972A70E0C8DA0A6CDB3224A15C74A9F0A09 +AD75C5807E2CD5BB82E94EDFAF8E4946A60BB63ECC3FD0B03A3B4DA73A875FFD +84590E796DA58AAC47F05DD6BD99986FCCA6EC80985015CC720BAD6DBAF21EA8 +729FB5AA85D91C9AE221DE7C65DD537701F6ECDDEBF4DC7F3E6F8E8A1A917DCE +D53E6BD03C9F9053A3AB7F41B3F152F975D8D55307170C9C61D6EEE56A2D47F3 +8B97728F98B958F2CCF21C86A5765C5FCF1C78B020174628BFA439BBEC241906 +C37520DA9BEC389A3F2F30E19F44EFCEA08B13CD33B5337EE434220EA836F314 +8BB7AD4474A1986F6BD74878198266DA13C489A6D995AA96D7C6D52B0FB3CD7D +CEEF2D2D5823052D675C1B5615E794BB08B01A2B81B49C4D1F56AA31C9B4FEBD +0B26B30E3591B06C3939D57B89698ACEF90AA629138D8CF8914D554462B578A3 +30EF36AFE4E54DA09CBC28E1FA269739E85585B649F2F92F9D8BA67C21BAB667 +9D229DFAFFDAD907F911DA8D92A889CD4EF143DC9C3663135AD73AE2958AAB4E +2ED4C642ADB1D4752077FE0A4D9EFD9BA4FEE0CF063F0825823D9D0625FD8AD6 +693B2DF499255F85C4A927AD9EDC46E1E3E7F9607B689BD1AAB7893B2B0B6BB5 +5D0A3B0DAD7D09117F75B9D149DCE9E139D424F3BAF7051F33F1B7C687BC7CA9 +F18EFE617ECCE79C7D028C7DE780179FCFC26430C46553D378596D7A2ECEC876 +6245F7DAB2DC3303279BC8D48B29C1987586EF5D0ED2380BFC775C39EEEF4AC3 +D37FFD79FBFEF28B59104A06720A04A95CDD63FF80D6BE6580F51D1AA9A5C150 +B7919E0070AE5FD51D0913868F094B0B72E402405EAF9E1B4A5E0F12C694C0B3 +0C27A34DDD703B50BF20E0596163B68BAF57201BFAFC0003CEF86C345670EAF8 +3747D7800ACA9775AF17E86C6934E1839C7DBEFA9B5643A14469CB4D7E899A3D +16990A484A44E6104F075628D26FA0E9D860557D92D700EEB3B0A65EE5CD1608 +60168DD6A7D124608DAEF0E1EA9CF48C9B41DC24FE1AEABD582CF6608D45D3BE +B5E5457520FB95AEBCD716E38C317B8BE48066260EE2E6B2A10FACF46507629A +50C3C81E322FFA26F4110A0799A6AB0C7EF1B7779E295938F4551C715E44B0BD +4969C5B710F510F476FB15ED0CD1D854D3ABE782667066111E0225B0A1C44F59 +47F73C7DCFF60B275CF8537C06DBFE629ACD0C0F3F48D574D388CC2F95B4EF18 +961588BC15842347A1676C7C7F55538967454E065BFEF5C2E270DCB36D80A5D6 +2E1529A9890AF8DFB474B354F39804F48063830587EA4E271079780E84F76860 +B8D4159F8897579A70B4503329979A6EA0FE4B199ACF509363FF184DE28452B8 +7311E849ACE4132ED733B25719DDE36CEF7B29B5707C09927BEAB25FEF52C71D +0C9F7F39F2D08E6669B86EB5CB8D90BC1E7566FBDE0EE87A55D50E733008D457 +2D81631F3599E93C776EB59C620BF118AF3010777B0240CE7DB42A6786723ACE +E54B0AD66D257261041968F88B386126501B16005730CBC68ACDE21B73D16F0A +F15D90BF1ABFEE94F8B862362AF2E36D323F28C2665C57D22F5A718930B14B1E +D8943E10FB9AA3AADC4930A6E78C1FC15F1F1DDA7C832E2163F6CD70FFAC04D2 +8B04C206384BB66E96320C8559452968967EEAB10E9E579C87DCED7AF394F93E +A5F0E9EC82825F2FA364E33040B1B1F294FA4C5E536D012EC0209B72E08FED9C +4948761E0AD756DB78EB1C9E6DE99761BDBDD8BE8CB042112299DF825F68C53E +300EE1AFA59C7FA408092CAB515AEDC9D3873948A4B4B6D78A799DBA9FD3628B +D1947AB0AD9D594DDDD16997BCBFD44DE3F68D556EA982823FB851B381527276 +D0C68AA3EB370BA46F93AF52580932534AB73D609021411A9E0F0009E7821FCF +27181278CB75E994318E0C1B4C84DDA3C52291D2CDE0C45A509DD29518083AF2 +E3EFB3271BBB843080671C2ADD01A0D956EB48FB1166AEB5E8FC92A2D988BA5C +698131A1A6E4C51ABC3CD6D8D7BFE390A70838454BB6AB2CA40B1110575C3AA1 +73523DAF9BCD863A0708854890A24E63A05B272873A1323B00DF14759F78AA5D +453670FD92756E8654D0ED19883758D1B00E78CCE7DECD064907E27CD4167625 +27A0BA98448069C7B3D21FF1F53412ED84364526C3DA1574B175D68BA7626EE5 +6323C7E472614B86D77E2FD6E47C2D01A2F4D755F3307CFC06C094E233FCE72E +4845F7E31652A90B1DC8B940AA48A402281486F2200DE05BDDB5B69DDB965FAB +7BF0CBA38A2E5A7E91084ABE9B12A855F8747400561FD5C368D1997D3411227A +96AADDABF8E558826E73B474FE9E51A967DBE0C44133193EE765B8B224373A32 +7564FBF11B80986534A81D033ED05EE15A77B79493A6D69496D71ECDCFBF1731 +8E2FF0FF0125E3D186A4DDC597E478D525FA8E8058C3F131BC525EFD8B840CDB +EA2A792DF2AD54C513762859E34C3589DE590AE441804FBA07CB25BDA09EA7CF +40AFFEA627E46B1A461E2E5AB9C6B611B7E45C008EA5BC6EABADCC2541786210 +B319320D086BA982E7F6520E8EC957174D159CEB2CF3B858A4B903D9F47F2B8F +7ADCA2C5645447871D264E7FA1C8414CDB12B163C7BAA7533B25536E6DBB68F2 +7C215B25F3CD02163D3F5A562057083F3078F25708A62F627B0BFFF7A5221E6D +46A032EDEA888F00E6A23E59020B2C0A2BDC06322AC1F324D88CFD3B8FF74AE6 +084574963B4A3B06CD39F9CD0403D2D20D5EF4CE271CB18F792E3EFDAEA66B3C +CD2A4FB743E9D8E2DB995125D1F18BDEC5CAD402F4D90B2F8DB7ABC6841664E4 +1486BC2332C4E8F4A6F5B7A20AF10D041C8AA138B5F16EB1778A7485F003287D +01465EC47D5DE48546B13529A708CFAADEA60BFCC6EB1D6EC3DC36B512788BB3 +038125961302DB9761403C3B8016344897C590FC99CE273F2B224C799980FFD2 +3CEFD589FFBDA045E65ED55B9E3FAF327B4818FF9D49518B63EDEDFE31549146 +D971BEC326ED65033E8F +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +TeXDict begin 55380996 39158280 1000 600 600 (refcard.dvi) +@start /Fa 197[20 58[{ TeXaae443f0Encoding ReEncodeFont }1 +66.4176 /CMMI8 rf /Fb 134[35 3[38 24 29 30 1[36 36 40 +58 18 2[22 36 33 1[33 36 33 33 36 51[26 45[{ + TeX74afc74cEncoding ReEncodeFont }19 66.4176 /CMTI8 +rf /Fc 242[61 13[{ TeXbbad153fEncoding ReEncodeFont }1 +49.8132 /CMSY6 rf /Fd 134[32 1[43 32 34 24 24 24 1[34 +30 34 50 18 32 1[18 34 30 19 27 34 27 34 30 11[45 1[34 +2[41 1[45 54 3[22 1[47 39 41 1[43 42 45 10[30 30 1[30 +30 30 30 1[18 21 18 44[{ TeXf7b6d320Encoding ReEncodeFont }43 +49.8132 /CMR6 rf /Fe 129[41 5[43 1[43 45 32 32 34 1[45 +41 45 68 23 2[23 45 41 25 37 45 36 45 40 72[36 4[41 2[23 +3[45 47 11[{ TeXf7b6d320Encoding ReEncodeFont }26 66.4176 +/CMBX8 rf /Ff 130[35 35 35 35 35 35 35 35 35 35 35 35 +35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 +35 35 35 35 35 3[35 2[35 35 35 1[35 2[35 35 4[35 35 35 +35 35 35 35 35 35 35 1[35 1[35 4[35 35 35 35 35 35 35 +35 35 35 35 35 35 35 35 1[35 35 35 35 35 33[{ + TeX09fbbfacEncoding ReEncodeFont }74 66.4176 /CMTT8 +rf /Fg 129[57 3[51 1[60 1[60 64 45 45 47 60 64 57 64 +95 32 1[35 32 64 57 35 53 64 51 64 56 2[57 9[80 64 86 +1[78 86 1[109 69 1[59 43 90 1[72 75 1[83 81 87 18[32 +38 3[45 45 15[51 4[57 6[64 67 11[{ TeXf7b6d320Encoding ReEncodeFont }48 +99.6264 /CMBX10 rf /Fh 129[35 3[31 1[37 51 37 39 27 28 +28 37 39 35 39 59 20 1[22 20 39 35 22 31 39 31 39 35 +2[35 1[35 6[53 51 39 52 55 48 55 53 65 44 2[25 1[55 46 +48 54 2[53 6[20 7[35 2[35 20 24 20 2[27 27 5[35 9[31 +4[35 2[20 3[39 41 11[{ TeXf7b6d320Encoding ReEncodeFont }57 +66.4176 /CMR8 rf /Fi 129[69 9[53 54 57 2[69 76 115 3[38 +2[42 63 76 61 1[67 2[69 8[106 2[103 3[108 6[108 1[90 +1[99 8[38 58[{ TeXf7b6d320Encoding ReEncodeFont }21 119.552 +/CMBX10 rf end +%%EndProlog +%%BeginSetup +%%Feature: *Resolution 600dpi +TeXDict begin +%%PaperSize: A4 + @landscape end +%%EndSetup +%%Page: 1 1 +TeXDict begin @landscape 1 0 bop -555 -364 a Fi(GNU)45 +b(Emacs:)62 b(Cart)o(~)-68 b(ao)45 b(de)i(Refer)m(^)-66 +b(encia)259 -266 y Fh(\(para)24 b(v)n(ers~)-35 b(ao)24 +b(22\))-450 -59 y Fg(Iniciando)37 b(o)i(Emacs)-450 97 +y Fh(P)n(ara)24 b(en)n(trar)f(no)i(GNU)e(Emacs,)h(digite:)31 +b Ff(emacs)-450 300 y Fg(Saindo)37 b(do)h(Emacs)-450 +455 y Fh(susp)r(ende)25 b(ou)f(minimiza)f(o)g(Emacs)476 +b Ff(C-z)-450 525 y Fh(encerra)24 b(o)g(Emacs)933 b Ff(C-x)36 +b(C-c)-450 709 y Fg(Arquiv)m(os)-450 865 y Fe(abre)23 +b Fh(um)h(arquiv)n(o)910 b Ff(C-x)36 b(C-f)-450 934 y +Fe(salv)-5 b(a)23 b Fh(um)g(arquiv)n(o)h(em)g(disco)603 +b Ff(C-x)36 b(C-s)-450 1004 y Fh(salv)l(a)24 b Fe(to)r(dos)f +Fh(arquiv)n(os)h(ab)r(ertos)543 b Ff(C-x)36 b(s)-450 +1074 y Fe(insere)24 b Fh(outro)g(arquiv)n(o)g(neste)g(bu\013er)409 +b Ff(C-x)36 b(i)-450 1144 y Fh(substitui)24 b(este)g(arquiv)n(o)g(p)r +(or)g(outro)463 b Ff(C-x)36 b(C-v)-450 1213 y Fh(salv)l(a)24 +b(o)g(bu\013er)g(em)f(um)h(arquiv)n(o)g(esp)r(eci\014cado)155 +b Ff(C-x)36 b(C-w)-450 1283 y Fh(alterna)22 b(o)g(estado)g(de)g(somen)n +(te)h(leitura)e(do)h(bu\013er)71 b Ff(C-x)36 b(C-q)-450 +1494 y Fg(Ajuda)h(\(Help\))-450 1661 y Fh(T)-6 b(ecle)24 +b Ff(C-h)h Fh(\(ou)f Ff(F1)p Fh(\))h(e)f(siga)f(as)h(instru\030)-31 +b(c~)c(oes.)-450 1759 y(remo)n(v)n(e)24 b(a)g(janela)g(de)g(a)t(juda) +666 b Ff(C-x)36 b(1)-450 1829 y Fh(rola)23 b(a)h(janela)g(de)g(a)t +(juda)766 b Ff(C-M-v)-450 1927 y Fh(aprop)r(os:)30 b(mostra)22 +b(comandos)g(que)h(casam)e(com)h(a)-450 1997 y(string)990 +1927 y Ff(C-h)36 b(a)-450 2063 y Fh(descrev)n(e)25 b(fun\030)-31 +b(c~)c(ao)24 b(asso)r(ciada)h(a)f(teclas)392 b Ff(C-h)36 +b(k)-450 2132 y Fh(descrev)n(e)25 b(uma)f(fun\030)-31 +b(c~)c(ao)803 b Ff(C-h)36 b(f)-450 2202 y Fh(busca)24 +b(informa\030)-31 b(c~)c(oes)24 b(esp)r(ec)-8 b(\023)-27 +b(\020\014cas)25 b(do)f(mo)r(do)249 b Ff(C-h)36 b(m)-450 +2405 y Fg(Recup)s(erando-se)g(de)h(Erros)-450 2561 y +Fe(ab)r(orta)22 b Fh(uma)i(op)r(era\030)-31 b(c~)c(ao)756 +b Ff(C-g)-450 2631 y Fe(recup)r(era)24 b Fh(arquiv)n(os)f(ap\023)-35 +b(os)25 b(crash)313 b Ff(M-x)36 b(recover-session)-450 +2700 y Fh(desfaz)24 b(uma)g(altera\030)-31 b(c~)c(ao)25 +b(\()p Fe(undo)p Fh(\))400 b Ff(C-x)36 b(u,)g(C-_)g Fh(or)f +Ff(C-/)-450 2770 y Fh(restaura)24 b(um)f(bu\013er)h(para)g(o)g(arquiv)n +(o)252 b Ff(M-x)36 b(revert-buffer)-450 2840 y Fh(redesenha)25 +b(a)f(tela)942 b Ff(C-l)-450 3024 y Fg(Busca)38 b(Incremen)m(tal)-450 +3179 y Fh(busca)24 b(para)g(fren)n(te)907 b Ff(C-s)-450 +3249 y Fh(busca)24 b(para)g(tr\023)-35 b(as)965 b Ff(C-r)-450 +3319 y Fh(busca)24 b(p)r(or)g(express~)-35 b(ao)24 b(regular)584 +b Ff(C-M-s)-450 3389 y Fh(busca)24 b(p)r(or)g(express~)-35 +b(ao)24 b(regular)g(para)f(tr\023)-35 b(as)282 b Ff(C-M-r)-450 +3487 y Fh(seleciona)24 b(a)g(string)g(de)g(p)r(esquisa)g(an)n(terior) +268 b Ff(M-p)-450 3557 y Fh(seleciona)24 b(a)g(string)g(seguin)n(te)h +(de)f(p)r(esquisa)260 b Ff(M-n)-450 3626 y Fh(sai)23 +b(da)h(busca)h(incremen)n(tal)681 b Ff(RET)-450 3696 +y Fh(desfaz)24 b(o)g(efeito)g(do)i(\023)-37 b(ultimo)24 +b(caracter)413 b Ff(DEL)-450 3766 y Fh(encerra)24 b(a)g(busca)962 +b Ff(C-g)-450 3864 y Fh(Use)28 b Ff(C-s)g Fh(ou)h Ff(C-r)f +Fh(no)n(v)l(amen)n(te)i(para)f(rep)r(etir)e(a)h(busca.)45 +b Ff(C-g)29 b Fh(cancela)-450 3934 y(ap)r(enas)c(o)e(que)i(ainda)f(n~) +-35 b(ao)24 b(foi)f(feito.)-358 4131 y Fd(c)-375 4133 +y Fc(\015)e Fd(2006)h(F)-5 b(ree)22 b(Soft)n(w)n(are)g(F)-5 +b(oundation,)20 b(Inc.)27 b(P)n(ermissions)21 b(on)g(bac)n(k.)28 +b(v2.3)1860 -364 y Fg(Mo)m(vimen)m(ta\030)-51 b(c)o(~)-56 +b(ao)1860 -208 y Fe(a)n(v)-5 b(an\030)-36 b(car)1124 +b(tr)o(\023)-40 b(as)109 b(fren)n(te)1860 -139 y Fh(um)24 +b(caracter)1027 b Ff(C-b)142 b(C-f)1860 -69 y Fh(uma)24 +b(pala)n(vra)1011 b Ff(M-b)142 b(M-f)1860 1 y Fh(uma)24 +b(linha)1085 b Ff(C-p)142 b(C-n)1860 71 y Fh(para)24 +b(in)-8 b(\023)-27 b(\020cio)23 b(ou)h(\014m)g(de)g(linha)579 +b Ff(C-a)142 b(C-e)1860 140 y Fh(sen)n(ten\030)-31 b(ca)1136 +b Ff(M-a)142 b(M-e)1860 210 y Fh(par\023)-35 b(agrafo)1103 +b Ff(M-{)142 b(M-})1860 280 y Fh(p\023)-35 b(agina)1192 +b Ff(C-x)36 b([)71 b(C-x)36 b(])1860 349 y Fh(sexp)1260 +b Ff(C-M-b)72 b(C-M-f)1860 419 y Fh(fun\030)-31 b(c~)c(ao)1194 +b Ff(C-M-a)72 b(C-M-e)1860 489 y Fh(para)24 b(in)-8 b(\023)-27 +b(\020cio)23 b(ou)h(\014m)g(do)g(bu\013er)550 b Ff(M-<)142 +b(M->)1860 587 y Fh(rolar)23 b(para)g(pr\023)-35 b(oxima)24 +b(tela)721 b Ff(C-v)1860 657 y Fh(rolar)23 b(para)g(tela)i(an)n(terior) +732 b Ff(M-v)1860 727 y Fh(rolar)23 b(para)g(esquerda)843 +b Ff(C-x)36 b(<)1860 796 y Fh(rolar)23 b(para)g(direita)911 +b Ff(C-x)36 b(>)1860 866 y Fh(rolar)23 b(a)h(linha)f(corren)n(te)i +(para)e(o)h(cen)n(tro)h(da)f(tela)119 b Ff(C-u)36 b(C-l)1860 +1069 y Fg(Cortando)h(e)h(Apagando)1860 1225 y Fe(en)n(tidade)27 +b(a)f(cortar)642 b(tr)o(\023)-40 b(as)250 b(fren)n(te)1860 +1295 y Fh(caracter)25 b(\(apaga,)g(n~)-35 b(ao)24 b(corta\))416 +b Ff(DEL)283 b(C-d)1860 1364 y Fh(pala)n(vra)1027 b Ff(M-DEL)213 +b(M-d)1860 1434 y Fh(linha)23 b(\(at)n(\023)-33 b(e)25 +b(o)f(\014nal\))714 b Ff(M-0)36 b(C-k)142 b(C-k)1860 +1504 y Fh(sen)n(ten\030)-31 b(ca)995 b Ff(C-x)36 b(DEL)142 +b(M-k)1860 1574 y Fh(sexp)1119 b Ff(M--)36 b(C-M-k)72 +b(C-M-k)1860 1672 y Fh(corta)24 b Fe(regi)o(~)-40 b(ao)1044 +b Ff(C-w)1860 1742 y Fh(copia)24 b(a)g Fe(regi)o(~)-40 +b(ao)981 b Ff(M-w)1860 1811 y Fh(cortar)24 b(at)n(\023)-33 +b(e)25 b(a)e(pr\023)-35 b(oxima)24 b(o)r(corr)n(^)-33 +b(encia)24 b(de)g Fb(char)211 b Ff(M-z)36 b Fb(char)1860 +1910 y Fh(colar)24 b(a)h(\023)-37 b(ultima)24 b(coisa)g(cortada)582 +b Ff(C-y)1860 1979 y Fh(substitui)24 b(a)i(\023)-37 b(ult.)31 +b(colagem)24 b(p)r(ela)g(c\023)-35 b(opia)25 b(an)n(terior)106 +b Ff(M-y)1860 2184 y Fg(Marcando)1860 2340 y Fh(p)r(osiciona)24 +b(a)g(marca)g(aqui)730 b Ff(C-@)36 b Fh(or)f Ff(C-SPC)1860 +2410 y Fh(tro)r(ca)24 b(a)g(marca)g(p)r(elo)g(p)r(on)n(to)h(e)f(vice-v) +n(ersa)281 b Ff(C-x)36 b(C-x)1860 2508 y Fh(colo)r(ca)25 +b(a)e(marca)h Fb(ar)l(g)30 b Fe(pala)n(vras)22 b Fh(adian)n(te)290 +b Ff(M-@)1860 2578 y Fh(marca)24 b(o)g Fe(par)o(\023)-40 +b(agrafo)829 b Ff(M-h)1860 2647 y Fh(marca)24 b(a)g Fe(p)o(\023)-40 +b(agina)935 b Ff(C-x)36 b(C-p)1860 2717 y Fh(marca)24 +b(a)g Fe(sexp)1012 b Ff(C-M-@)1860 2787 y Fh(marca)24 +b(uma)g Fe(fun\030)-36 b(c)o(~)c(ao)839 b Ff(C-M-h)1860 +2857 y Fh(marca)24 b(to)r(do)g Fe(bu\013er)858 b Ff(C-x)36 +b(h)1860 3041 y Fg(Busca)i(e)g(Substitui\030)-51 b(c)o(~)-56 +b(ao)1860 3196 y Fh(Substitui)24 b(in)n(terativ)l(amen)n(te)i(uma)e +(string)300 b Ff(M-\045)1860 3266 y Fh(usando)25 b(express~)-35 +b(ao)24 b(regular)301 b Ff(M-x)36 b(query-replace-regexp)1860 +3364 y Fh(Resp)r(ostas)24 b(v\023)-35 b(alidas)24 b(no)g(mo)r(do)g(de)g +(busca)h(e)f(substitui\030)-31 b(c~)c(ao)1860 3463 y +Fe(substitui)23 b Fh(esta,)h(e)g(prossegue)594 b Ff(SPC)1860 +3533 y Fh(substitui)24 b(esta)g(e)g(en)n(trada)h(e)f(n~)-35 +b(ao)24 b(a)n(v)l(an\030)-31 b(ca)298 b Ff(,)1860 3602 +y Fe(pula)23 b Fh(para)h(a)g(pr\023)-35 b(oxima)23 b(sem)h(substituir) +331 b Ff(DEL)1860 3672 y Fh(substitui)24 b(em)g(to)r(do)g(o)g(texto)h +(restan)n(te)388 b Ff(!)1860 3742 y Fe(v)n(olta)22 b +Fh(para)h(a)h(pala)n(vra)g(an)n(terior)530 b Ff(^)1860 +3811 y Fe(encerra)1177 b Ff(RET)1860 3881 y Fh(en)n(tra)24 +b(na)g(edi\030)-31 b(c~)c(ao)25 b(recursiv)l(a)f(\()p +Ff(C-M-c)h Fh(para)f(sair\))121 b Ff(C-r)4241 -364 y +Fg(M)s(\023)-60 b(ultiplas)36 b(Janelas)4241 -223 y Fh(Quando)23 +b(forem)e(mostrados)i(2)g(comandos,)g(o)f(segundo)i(tem)f(comp)r(or-) +4241 -153 y(tamen)n(to)i(similar)d(para)i(frame.)4241 +-59 y(elimina)f(to)r(das)h(outras)g(janelas)351 b Ff(C-x)36 +b(1)212 b(C-x)36 b(5)g(1)4241 11 y Fh(divide)23 b(a)h(janela,)g(acima)f +(e)h(abaixo)261 b Ff(C-x)36 b(2)212 b(C-x)36 b(5)g(2)4241 +81 y Fh(elimina)23 b(esta)h(janela)640 b Ff(C-x)36 b(0)212 +b(C-x)36 b(5)g(0)4241 175 y Fh(divide)23 b(a)h(janela,)g(lado)f(a)h +(lado)606 b Ff(C-x)36 b(3)4241 270 y Fh(rola)23 b(a)h(outra)g(janela) +870 b Ff(C-M-v)4241 365 y Fh(lev)l(a)24 b(o)f(cursor)h(para)f(outra)i +(janela)269 b Ff(C-x)36 b(o)212 b(C-x)36 b(5)g(o)4241 +434 y Fh(seleciona)24 b(um)g(bu\013er)f(em)h(outra)g(janela)113 +b Ff(C-x)36 b(4)g(b)141 b(C-x)36 b(5)g(b)4241 504 y Fh(mostra)23 +b(um)h(bu\013er)g(em)f(outra)i(janela)171 b Ff(C-x)36 +b(4)g(C-o)71 b(C-x)36 b(5)g(C-o)4241 574 y Fh(busca)24 +b(um)g(arquiv)n(o)f(em)h(outra)g(janela)160 b Ff(C-x)36 +b(4)g(f)141 b(C-x)36 b(5)g(f)4241 644 y Fh(busca)24 b(arquiv)n(o)g +(\(ro\))g(em)g(outra)g(janela)140 b Ff(C-x)36 b(4)g(r)141 +b(C-x)36 b(5)g(r)4241 713 y Fh(executa)25 b(Dired)e(em)h(outra)g +(janela)279 b Ff(C-x)36 b(4)g(d)141 b(C-x)36 b(5)g(d)4241 +783 y Fh(busca)24 b(tag)h(em)e(outra)h(janela)413 b Ff(C-x)36 +b(4)g(.)141 b(C-x)36 b(5)g(.)4241 878 y Fh(aumen)n(ta)25 +b(a)f(janela)f(na)h(v)n(ertical)563 b Ff(C-x)36 b(^)4241 +948 y Fh(estreita)24 b(a)g(janela)948 b Ff(C-x)36 b({)4241 +1017 y Fh(alarga)23 b(a)h(janela)988 b Ff(C-x)36 b(})4241 +1202 y Fg(F)-10 b(ormatando)4241 1343 y Fh(iden)n(ta)24 +b(a)g Fe(linha)f Fh(corren)n(te)h(\(mo)r(do\))473 b Ff(TAB)4241 +1413 y Fh(iden)n(ta)24 b(a)g Fe(regi)o(~)-40 b(ao)22 +b Fh(\(mo)r(do\))706 b Ff(C-M-\\)4241 1482 y Fh(iden)n(ta)24 +b(a)g Fe(sexp)g Fh(\(mo)r(do\))763 b Ff(C-M-q)4241 1552 +y Fh(iden)n(ta)24 b(regi~)-35 b(ao)24 b(rigidamen)n(te)g +Fb(ar)l(g)30 b Fh(colunas)281 b Ff(C-x)36 b(TAB)4241 +1647 y Fh(insere)23 b(uma)h(no)n(v)l(a)g(linha)g(ap\023)-35 +b(os)24 b(o)g(p)r(on)n(to)347 b Ff(C-o)4241 1717 y Fh(mo)n(v)n(e)24 +b(o)g(restan)n(te)h(da)f(linha)f(para)h(baixo)329 b Ff(C-M-o)4241 +1786 y Fh(apaga)24 b(linhas)g(em)f(branco)i(em)e(torno)i(do)f(p)r(on)n +(to)112 b Ff(C-x)36 b(C-o)4241 1856 y Fh(jun)n(ta)24 +b(a)g(linha)f(com)h(a)g(an)n(terior)572 b Ff(M-^)4241 +1926 y Fh(apaga)24 b(to)r(dos)h(brancos)f(em)g(torno)g(do)g(p)r(on)n +(to)212 b Ff(M-\\)4241 1995 y Fh(insere)23 b(um)g(espa\030)-31 +b(co)25 b(em)f(branco)574 b Ff(M-SPC)4241 2090 y Fh(preenc)n(he)25 +b(o)f(par\023)-35 b(agrafo)797 b Ff(M-q)4241 2160 y Fh(de\014ne)24 +b(a)g(coluna)h(limite)e(de)h(preenc)n(himen)n(to)215 +b Ff(C-x)36 b(f)4241 2230 y Fh(de\014ne)24 b(um)g(pre\014xo)g(para)g +(cada)h(linha)403 b Ff(C-x)36 b(.)4241 2324 y Fh(formata)23 +b(fon)n(te)1024 b Ff(M-o)4241 2490 y Fg(Mai)s(\023)-60 +b(usculas)36 b(e)i(Min)s(\023)-60 b(usculas)4241 2631 +y Fh(P)n(ala)n(vra)23 b(para)h(mai)r(\023)-37 b(usculas)688 +b Ff(M-u)4241 2701 y Fh(P)n(ala)n(vra)23 b(para)h(min)r(\023)-37 +b(usculas)684 b Ff(M-l)4241 2770 y Fh(Primeira)22 b(letra)h(mai)r(\023) +-37 b(uscula)24 b(\(capitalize\))312 b Ff(M-c)4241 2865 +y Fh(Regi~)-35 b(ao)24 b(para)g(mai)r(\023)-37 b(usculas)713 +b Ff(C-x)36 b(C-u)4241 2935 y Fh(Regi~)-35 b(ao)24 b(para)g(min)r(\023) +-37 b(usculas)709 b Ff(C-x)36 b(C-l)4241 3120 y Fg(O)i(Minibu\013er) +4241 3260 y Fh(As)23 b(teclas)h(seguin)n(tes)h(s~)-35 +b(ao)24 b(de\014nidas)g(no)g(minibu\013er.)4241 3355 +y(complete)h(o)e(m\023)-35 b(aximo)24 b(p)r(ossi)-8 b(\023)-27 +b(\020v)n(el)557 b Ff(TAB)4241 3425 y Fh(complete)25 +b(at)n(\023)-33 b(e)24 b(uma)g(pala)n(vra)641 b Ff(SPC)4241 +3494 y Fh(complete)25 b(e)e(execute)861 b Ff(RET)4241 +3564 y Fh(mostre)23 b(as)h(op\030)-31 b(c~)c(oes)25 b(para)f(completar) +432 b Ff(?)4241 3634 y Fh(busca)24 b(a)g(en)n(trada)h(an)n(terior)e(no) +h(minibu\013er)250 b Ff(M-p)4241 3704 y Fh(busca)25 b(a)h(pr\023)-35 +b(oxima)25 b(en)n(trada)h(no)g(minibu\013er)e(ou)i(o)4241 +3773 y(default)5681 3704 y Ff(M-n)4241 3826 y Fh(busca)e(regexp)g(no)g +(hist\023)-35 b(orico)24 b(para)g(tr\023)-35 b(as)355 +b Ff(M-r)4241 3896 y Fh(busca)24 b(regexp)g(no)g(hist\023)-35 +b(orico)24 b(para)g(fren)n(te)297 b Ff(M-s)4241 3966 +y Fh(encerra)24 b(o)f(comando)862 b Ff(C-g)4241 4060 +y Fh(T)-6 b(ecle)22 b Ff(C-x)37 b(ESC)f(ESC)23 b Fh(para)f(editar)g(e)h +(rep)r(etir)f(o)i(\023)-37 b(ultimo)22 b(comando)i(uti-)4241 +4130 y(lizado.)31 b(T)-6 b(ecle)24 b Ff(F10)h Fh(para)e(ativ)l(ar)h(o)g +(men)n(u.)p eop end +%%Page: 2 2 +TeXDict begin @landscape 2 1 bop -555 -364 a Fi(GNU)45 +b(Emacs:)62 b(Cart)o(~)-68 b(ao)45 b(de)i(Refer)m(^)-66 +b(encia)259 -266 y Fh(\(para)24 b(v)n(ers~)-35 b(ao)24 +b(22\))-450 -61 y Fg(Bu\013ers)-450 93 y Fh(seleciona)g(outro)h +(bu\013er)779 b Ff(C-x)36 b(b)-450 163 y Fh(lista)23 +b(to)r(dos)i(bu\013ers)890 b Ff(C-x)36 b(C-b)-450 233 +y Fh(mata)24 b(um)g(bu\013er)960 b Ff(C-x)36 b(k)-450 +415 y Fg(T)-10 b(ransp)s(osi\030)-51 b(c)o(~)-56 b(ao)-450 +569 y Fh(transp~)-35 b(oe)25 b Fe(caracteres)795 b Ff(C-t)-450 +638 y Fh(transp~)-35 b(oe)25 b Fe(pala)n(vras)858 b Ff(M-t)-450 +708 y Fh(transp~)-35 b(oe)25 b Fe(linhas)945 b Ff(C-x)36 +b(C-t)-450 778 y Fh(transp~)-35 b(oe)25 b Fe(sexps)964 +b Ff(C-M-t)-450 979 y Fg(Corre\030)-51 b(c)o(~)-56 b(ao)38 +b(Ortogr)o(\023)-56 b(a\014ca)-450 1133 y Fh(v)n(eri\014ca)24 +b(a)g(pala)n(vra)g(corren)n(te)639 b Ff(M-$)-450 1203 +y Fh(v)n(eri\014ca)24 b(to)r(das)h(pala)n(vras)e(de)i(uma)e(regi~)-35 +b(ao)152 b Ff(M-x)36 b(ispell-region)-450 1272 y Fh(v)n(eri\014ca)24 +b(to)r(do)h(o)f(bu\013er)656 b Ff(M-x)36 b(ispell-buffer)-450 +1474 y Fg(T)-10 b(ags)-450 1628 y Fh(busca)24 b(uma)g(tag)h(\(uma)f +(de\014ni\030)-31 b(c~)c(ao\))485 b Ff(M-.)-450 1698 +y Fh(encon)n(tra)25 b(a)f(pr\023)-35 b(oxima)23 b(o)r(corr)n(^)-33 +b(encia)25 b(da)f(tag)282 b Ff(C-u)36 b(M-.)-450 1768 +y Fh(esp)r(eci\014ca)25 b(um)f(no)n(v)n(o)g(arquiv)n(o)g(de)g(tags)142 +b Ff(M-x)36 b(visit-tags-table)-450 1866 y Fh(busca)24 +b(p)r(or)g(regexp)g(em)g(to)r(dos)h(arquiv)n(os)188 b +Ff(M-x)36 b(tags-search)-450 1936 y Fh(busca)24 b(e)g(subst.)32 +b(em)23 b(to)r(dos)i(arquiv)n(os)119 b Ff(M-x)36 b(tags-query-replace) +-450 2005 y Fh(con)n(tin)n(ua)c(a)h(\023)-37 b(ultima)31 +b(busca)h(ou)f(busca)h(e)f(substi-)-450 2075 y(tui\030)-31 +b(c~)c(ao)990 2005 y Ff(M-,)-450 2274 y Fg(Shells)-450 +2428 y Fh(executa)26 b(um)d(comando)i(do)f(shell)528 +b Ff(M-!)-450 2498 y Fh(executa)26 b(um)d(comando)i(do)f(shell)f(na)h +(regi~)-35 b(ao)223 b Ff(M-|)-450 2568 y Fh(\014ltra)24 +b(uma)f(regi~)-35 b(ao)24 b(p)r(or)g(um)f(comando)i(do)f(shell)120 +b Ff(C-u)36 b(M-|)-450 2638 y Fh(inicia)23 b(um)h(shell)f(na)h(janela)g +Ff(*shell*)420 b(M-x)36 b(shell)-450 2839 y Fg(Ret)o(^)-56 +b(angulos)-450 2993 y Fh(copia)24 b(o)g(ret^)-35 b(angulo)25 +b(para)f(o)f(registrador)330 b Ff(C-x)36 b(r)g(r)-450 +3062 y Fh(corta)24 b(o)g(ret^)-35 b(angulo)912 b Ff(C-x)36 +b(r)g(k)-450 3132 y Fh(cola)24 b(o)g(ret^)-35 b(angulo)947 +b Ff(C-x)36 b(r)g(y)-450 3202 y Fh(abre)24 b(o)g(ret^)-35 +b(angulo,)24 b(mo)n(v)n(e)g(o)g(texto)h(para)f(direita)107 +b Ff(C-x)36 b(r)g(o)-450 3272 y Fh(tro)r(ca)24 b(p)r(or)g(espa\030)-31 +b(cos)25 b(o)e(con)n(te)r(\023)-37 b(udo)26 b(do)e(ret^)-35 +b(angulo)133 b Ff(C-x)36 b(r)g(c)-450 3341 y Fh(an)n(tep~)-35 +b(oe)26 b(uma)e(linha)f(a)h(string)610 b Ff(C-x)36 b(r)g(t)-450 +3542 y Fg(Abreviaturas)-450 3696 y Fh(adiciona)24 b(uma)g(abreviatura)h +(global)442 b Ff(C-x)36 b(a)g(g)-450 3766 y Fh(adiciona)24 +b(abreviatura)h(ao)f(mo)r(do)g(lo)r(cal)352 b Ff(C-x)36 +b(a)g(l)-450 3836 y Fh(adiciona)24 b(globalmen)n(te)h(expans~)-35 +b(ao)26 b(de)e(abrev.)179 b Ff(C-x)36 b(a)g(i)f(g)-450 +3906 y Fh(adiciona)24 b(lo)r(calmen)n(te)h(expans~)-35 +b(ao)25 b(de)g(abrev.)220 b Ff(C-x)36 b(a)g(i)f(l)-450 +3975 y Fh(explicitamen)n(te)25 b(expande)h(uma)e(abrev)366 +b Ff(C-x)36 b(a)g(e)-450 4073 y Fh(completa)24 b(pala)n(vras)e(com)h +(base)g(em)f(pala)n(vras)g(an-)-450 4143 y(teriores)990 +4073 y Ff(M-/)1860 -364 y Fg(Express~)-57 b(oes)39 b(Regulares)1860 +-208 y Fh(qualquer)24 b(caracter)h(menos)f(no)n(v)l(a)g(linha)346 +b Ff(.)71 b Fh(\(dot\))1860 -139 y(zero)24 b(ou)g(mais)f(rep)r(eti\030) +-31 b(c~)c(oes)725 b Ff(*)1860 -69 y Fh(uma)24 b(ou)g(mais)f(rep)r +(eti\030)-31 b(c~)c(oes)717 b Ff(+)1860 1 y Fh(zero)24 +b(ou)g(uma)g(rep)r(eti\030)-31 b(c~)c(ao)757 b Ff(?)1860 +71 y Fh(protege)25 b(o)f(caracter)g(esp)r(ecial)h Fb(c)565 +b Ff(\\)p Fb(c)1860 140 y Fh(\(\\or"\))1253 b Ff(\\|)1860 +210 y Fh(agrupamen)n(to)1040 b Ff(\\\()36 b Fa(:)11 b(:)h(:)34 +b Ff(\\\))1860 280 y Fh(mesmo)24 b(texto)h(que)f Fb(n)5 +b Fh(-)n(\023)-33 b(esimo)24 b(grup)r(o)447 b Ff(\\)p +Fb(n)1860 349 y Fh(quebra)24 b(de)g(pala)n(vra)886 b +Ff(\\b)1860 419 y Fh(sem)24 b(quebra)g(de)g(pala)n(vra)744 +b Ff(\\B)1860 518 y Fe(en)n(tidade)707 b(casa)26 b(in)-9 +b(\023)-32 b(\020cio)70 b(casa)26 b(\014m)1860 587 y +Fh(linha)856 b Ff(^)400 b($)1860 657 y Fh(pala)n(vra)782 +b Ff(\\<)365 b(\\>)1860 727 y Fh(bu\013er)831 b Ff(\\`)365 +b(\\')1860 796 y Fe(classe)27 b(de)g(caracteres)315 b(casa)26 +b(esses)91 b(casa)26 b(os)h(outros)1860 866 y Fh(conjun)n(to)e(expl)-8 +b(\023)-27 b(\020cito)459 b Ff([)35 b Fa(:)12 b(:)f(:)35 +b Ff(])212 b([^)36 b Fa(:)11 b(:)g(:)35 b Ff(])1860 936 +y Fh(caracter)25 b(de)f(sin)n(taxe)g(de)g(pala)n(vra)84 +b Ff(\\w)365 b(\\W)1860 1006 y Fh(caracter)25 b(de)f(sin)n(taxe)g(de)g +Fb(c)278 b Ff(\\s)p Fb(c)332 b Ff(\\S)p Fb(c)1860 1201 +y Fg(Conjun)m(tos)37 b(de)g(Carac.)50 b(In)m(ternacionais)1860 +1357 y Fh(esp)r(eci\014ca)25 b(uma)f(l)-8 b(\023)-27 +b(\020ngua)24 b(principal)488 b Ff(C-x)36 b(RET)g(l)1860 +1427 y Fh(mostra)24 b(to)r(dos)g(m)n(\023)-33 b(eto)r(dos)25 +b(de)f(inser\030)-31 b(c~)c(ao)96 b Ff(M-x)36 b(list-input-methods)1860 +1496 y Fh(habilita/desabilita)24 b(um)g(m)n(\023)-33 +b(eto)r(do)25 b(de)f(inser\030)-31 b(c~)c(ao)136 b Ff(C-\\)1860 +1566 y Fh(determina)24 b(o)g(sistema)g(de)g(co)r(di\014ca\030)-31 +b(c~)c(ao)369 b Ff(C-x)36 b(RET)g(c)1860 1636 y Fh(mostra)24 +b(sistemas)f(de)h(co)r(di\014ca\030)-31 b(c~)c(ao)166 +b Ff(M-x)37 b(list-coding-systems)1860 1706 y Fh(escolhe)25 +b(a)e(co)r(di\014ca\030)-31 b(c~)c(ao)26 b(preferida)143 +b Ff(M-x)36 b(prefer-coding-system)1860 1911 y Fg(Info)1860 +2066 y Fh(en)n(tra)24 b(no)g(leitor)g(de)g(Info)760 b +Ff(C-h)36 b(i)1860 2136 y Fh(busca)24 b(fun\030)-31 b(c~)c(ao)25 +b(ou)f(arquiv)n(o)g(no)g(Info)448 b Ff(C-h)36 b(S)1860 +2234 y Fh(Mo)n(vimen)n(ta\030)-31 b(c~)c(ao)25 b(em)f(um)g(no)r(do:) +1931 2333 y(rola)f(para)h(fren)n(te)891 b Ff(SPC)1931 +2402 y Fh(rola)23 b(para)h(tr\023)-35 b(as)949 b Ff(DEL)1931 +2472 y Fh(in)-8 b(\023)-27 b(\020cio)23 b(do)h(no)r(do)933 +b Ff(.)71 b Fh(\(dot\))1860 2570 y(Mo)n(vimen)n(ta\030)-31 +b(c~)c(ao)25 b(en)n(tre)g(no)r(dos:)1931 2669 y Fe(pr\023)-41 +b(oximo)22 b Fh(no)r(do)902 b Ff(n)1931 2738 y Fh(no)r(do)24 +b Fe(an)n(terior)911 b Ff(p)1931 2808 y Fh(mo)n(v)n(er)23 +b(cima)h Fe(cima)824 b Ff(u)1931 2878 y Fh(seleciona)24 +b(item)g(do)g(men)n(u)g(p)r(elo)g(nome)311 b Ff(m)1931 +2948 y Fh(seleciona)24 b Fb(n)5 b Fh(-)n(\023)-33 b(esimo)23 +b(item)h(do)g(men)n(u)385 b Fb(n)1931 3017 y Fh(segue)24 +b(refer)n(^)-33 b(encia)24 b(cruzada)h(\(return)f(with)f +Ff(l)p Fh(\))133 b Ff(f)1931 3087 y Fh(retorna)26 b(\023)-37 +b(ultimo)23 b(no)r(do)i(visitado)483 b Ff(l)1931 3157 +y Fh(retorna)24 b(ao)g(diret\023)-35 b(orio)23 b(de)h(no)r(dos)470 +b Ff(d)1931 3227 y Fh(ir)22 b(para)i(o)g(top)r(o)h(do)f(arquiv)n(o)f +(Info)445 b Ff(t)1931 3296 y Fh(ir)22 b(para)i(qualquer)g(no)r(do)h(p)r +(or)e(nome)382 b Ff(g)1860 3395 y Fh(Outros:)1931 3493 +y(executar)25 b Fe(tutorial)c Fh(do)j(Info)575 b Ff(h)1931 +3563 y Fe(sair)22 b Fh(Info)1097 b Ff(q)1931 3633 y Fh(busca)24 +b(p)r(or)f(express~)-35 b(ao)25 b(regular)513 b Ff(M-s)4170 +-364 y Fg(Registrador)4170 -208 y Fh(salv)l(a)24 b(regi~)-35 +b(ao)24 b(em)f(um)h(registrador)488 b Ff(C-x)36 b(r)g(s)4170 +-139 y Fh(insere)23 b(o)h(con)n(te)r(\023)-37 b(udo)26 +b(do)e(registrador)f(no)h(bu\013er)150 b Ff(C-x)36 b(r)g(i)4170 +-40 y Fh(salv)l(a)24 b(v)l(alor)f(do)h(p)r(on)n(to)h(no)f(registrador) +361 b Ff(C-x)36 b(r)g(SPC)4170 29 y Fh(salta)24 b(para)g(o)g(p)r(on)n +(to)h(salv)n(o)e(no)h(registrador)243 b Ff(C-x)36 b(r)g(j)4170 +234 y Fg(Macros)i(de)g(T)-10 b(eclado)4170 390 y Fe(inicia)22 +b Fh(a)i(de\014ni\030)-31 b(c~)c(ao)25 b(de)f(uma)g(macro)436 +b Ff(C-x)36 b(\()4170 460 y Fe(encerra)23 b Fh(a)h(de\014ni\030)-31 +b(c~)c(ao)25 b(de)f(uma)g(macro)362 b Ff(C-x)36 b(\))4170 +529 y Fe(executa)24 b Fh(a)h(\023)-37 b(ultima)24 b(macro)g(de\014nida) +410 b Ff(C-x)36 b(e)4170 599 y Fh(adiciona)24 b(a)i(\023)-37 +b(ultima)24 b(macro)f(de\014nida)426 b Ff(C-u)36 b(C-x)g(\()4170 +669 y Fh(nomeia)24 b(a)i(\023)-37 b(ultima)23 b(macro)h(de\014nida)129 +b Ff(M-x)37 b(name-last-kbd-macro)4170 739 y Fh(insere)23 +b(uma)h(de\014ni\030)-31 b(c~)c(ao)25 b(em)f(Lisp)318 +b Ff(M-x)36 b(insert-kbd-macro)4170 942 y Fg(Lidando)h(com)i(Emacs)f +(Lisp)4170 1097 y Fh(a)n(v)l(alia)24 b Fe(sexp)g Fh(an)n(tes)h(do)f(p)r +(on)n(to)603 b Ff(C-x)36 b(C-e)4170 1167 y Fh(a)n(v)l(alia)24 +b(a)g Fe(defun)g Fh(corren)n(te)712 b Ff(C-M-x)4170 1237 +y Fh(a)n(v)l(alia)24 b(a)g Fe(regi)o(~)-40 b(ao)824 b +Ff(M-x)36 b(eval-region)4170 1306 y Fh(l)n(^)-33 b(e)23 +b(e)h(a)n(v)l(alia)g(o)g(minibu\013er)736 b Ff(M-:)4170 +1376 y Fh(carrega)24 b(do)g(diret\023)-35 b(orio)23 b(padr~)-35 +b(ao)25 b(do)f(sistema)106 b Ff(M-x)36 b(load-library)4170 +1581 y Fg(P)m(ersonaliza\030)-51 b(c)o(~)-56 b(ao)37 +b(Simples)4170 1737 y Fh(p)r(ersonaliza)24 b(v)l(ari\023)-35 +b(av)n(eis)24 b(e)g(fon)n(tes)408 b Ff(M-x)36 b(customize)4170 +1835 y Fh(F)-6 b(azendo)25 b(teclas)g(de)f(atalho)h(globais)e(em)h +(Emacs)g(Lisp)f(\(exemplos\):)4170 1933 y Ff(\(global-set-key)40 +b("\\C-cg")d('goto-line\))4170 2003 y(\(global-set-key)j("\\M-#")d +('query-replace-regexp\))4170 2208 y Fg(Escrev)m(endo)h(Comandos)4170 +2364 y Ff(\(defun)f Fb(c)l(ommand-name)43 b Ff(\()p Fb(ar)l(gs)5 +b Ff(\))4241 2433 y(")p Fb(do)l(cumentation)g Ff(")38 +b(\(interactive)g(")p Fb(template)5 b Ff("\))4241 2503 +y Fb(b)l(o)l(dy)h Ff(\))4170 2601 y Fh(Um)23 b(exemplo:)4170 +2700 y Ff(\(defun)37 b(this-line-to-top-of-win)q(dow)42 +b(\(line\))4241 2769 y("Reposition)c(line)e(point)h(is)f(on)g(to)g(top) +g(of)g(window.)4170 2839 y(With)g(ARG,)h(put)f(point)h(on)f(line)g +(ARG.")4241 2909 y(\(interactive)i("P"\))4241 2979 y(\(recenter)f(\(if) +g(\(null)f(line\))4735 3048 y(0)4664 3118 y(\(prefix-numeric-value)41 +b(line\)\)\)\))4170 3216 y Fh(A)19 b(esp)r(eci\014cao)i +Ff(interactive)i Fh(explica)d(como)g(in)n(terativ)l(amen)n(te)i(ler)d +(ar-)4170 3286 y(gumen)n(tos.)32 b(T)-6 b(ecle)25 b Ff(C-h)36 +b(f)f(interactive)27 b Fh(para)d(mais)f(detalhes.)4463 +3550 y Fd(Cop)n(yrigh)n(t)4766 3548 y(c)4749 3550 y Fc(\015)e +Fd(2006)h(F)-5 b(ree)22 b(Soft)n(w)n(are)h(F)-5 b(oundation,)20 +b(Inc.)4627 3606 y(v2.3)i(for)f(GNU)f(Emacs)h(v)n(ersion)h(22,)f(2006) +4760 3661 y(designed)f(b)n(y)h(Stephen)f(Gildea)4170 +3746 y(P)n(ermission)28 b(is)f(gran)n(ted)i(to)f(mak)n(e)h(and)e +(distribute)f(copies)j(of)f(this)f(card)h(pro-)4170 3802 +y(vided)23 b(the)h(cop)n(yrigh)n(t)h(notice)g(and)f(this)f(p)r +(ermission)h(notice)g(are)h(preserv)n(ed)g(on)4170 3857 +y(all)20 b(copies.)4170 3942 y(F)-5 b(or)21 b(copies)g(of)g(the)g(GNU)e +(Emacs)i(man)n(ual,)f(write)h(to)g(the)f(F)-5 b(ree)22 +b(Soft)n(w)n(are)g(F)-5 b(oun-)4170 3998 y(dation,)29 +b(Inc.,)g(51)g(F)-5 b(ranklin)28 b(Street,)h(Fifth)f(Flo)r(or,)h +(Boston,)i(MA)d(02110-1301)4170 4053 y(USA)p eop end +%%Trailer + +userdict /end-hook known{end-hook}if +%%EOF diff --git a/etc/pt-br-refcard.tex b/etc/pt-br-refcard.tex new file mode 100644 index 00000000000..e5c2fe704f9 --- /dev/null +++ b/etc/pt-br-refcard.tex @@ -0,0 +1,682 @@ +% Reference Card for GNU Emacs version 22 on Unix systems +%**start of header +\newcount\columnsperpage +\newcount\letterpaper +\input psfig + +% This file can be printed with 1, 2, or 3 columns per page (see below). +% Specify how many you want here. + +\columnsperpage=3 + +% Set letterpapaer to 0 for A4 paper, 1 for letter (US) paper. Useful +% only when columnsperpage is 2 or 3. + +\letterpaper=0 + +% Nothing else needs to be changed below this line. +% Copyright (C) 1987, 1993, 1996, 1997, 2002, 2003, 2004, +% 2006 Free Software Foundation, Inc. + +% This file is part of GNU Emacs. + +% GNU Emacs is free software; you can redistribute it and/or modify +% it under the terms of the GNU General Public License as published by +% the Free Software Foundation; either version 2, or (at your option) +% any later version. + +% GNU Emacs is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. + +% You should have received a copy of the GNU General Public License +% along with GNU Emacs; see the file COPYING. If not, write to +% the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +% Boston, MA 02110-1301, USA. + +% This file is intended to be processed by plain TeX (TeX82). +% +% The final reference card has six columns, three on each side. +% This file can be used to produce it in any of three ways: +% 1 column per page +% produces six separate pages, each of which needs to be reduced to 80%. +% This gives the best resolution. +% 2 columns per page +% produces three already-reduced pages. +% You will still need to cut and paste. +% 3 columns per page +% produces two pages which must be printed sideways to make a +% ready-to-use 8.5 x 11 inch reference card. +% For this you need a dvi device driver that can print sideways. +% Which mode to use is controlled by setting \columnsperpage above. +% +% To compile and print this document: +% tex refcard.tex +% dvips -t landscape refcard.dvi +% +% Author: +% Stephen Gildea +% Internet: gildea@stop.mail-abuse.org +% +% Thanks to Paul Rubin, Bob Chassell, Len Tower, and Richard Mlynarik +% for their many good ideas. + +% If there were room, it would be nice to see a section on Dired. + +\def\versionnumber{2.3} +\def\year{2006} + +\def\shortcopyrightnotice{\vskip 1ex plus 2 fill + \centerline{\small \copyright\ \year\ Free Software Foundation, Inc. + Permissions on back. v\versionnumber}} + +\def\copyrightnotice{ +\vskip 1ex plus 2 fill\begingroup\small +\centerline{Copyright \copyright\ \year\ Free Software Foundation, Inc.} +\centerline{v\versionnumber{} for GNU Emacs version 22, \year} +\centerline{designed by Stephen Gildea} + +Permission is granted to make and distribute copies of +this card provided the copyright notice and this permission notice +are preserved on all copies. + +For copies of the GNU Emacs manual, write to the Free Software +Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +\endgroup} + +% make \bye not \outer so that the \def\bye in the \else clause below +% can be scanned without complaint. +\def\bye{\par\vfill\supereject\end} + +\newdimen\intercolumnskip %horizontal space between columns +\newbox\columna %boxes to hold columns already built +\newbox\columnb + +\def\ncolumns{\the\columnsperpage} + +\message{[\ncolumns\space + column\if 1\ncolumns\else s\fi\space per page]} + +\def\scaledmag#1{ scaled \magstep #1} + +% This multi-way format was designed by Stephen Gildea October 1986. +% Note that the 1-column format is fontfamily-independent. +\if 1\ncolumns %one-column format uses normal size + \hsize 4in + \vsize 10in + \voffset -.7in + \font\titlefont=\fontname\tenbf \scaledmag3 + \font\headingfont=\fontname\tenbf \scaledmag2 + \font\smallfont=\fontname\sevenrm + \font\smallsy=\fontname\sevensy + + \footline{\hss\folio} + \def\makefootline{\baselineskip10pt\hsize6.5in\line{\the\footline}} +\else %2 or 3 columns uses prereduced size + \hsize 3.2in + \if 1\the\letterpaper + \vsize 7.95in + \else + \vsize 7.65in + \fi + \hoffset -.75in + \voffset -.745in + \font\titlefont=cmbx10 \scaledmag2 + \font\headingfont=cmbx10 \scaledmag1 + \font\smallfont=cmr6 + \font\smallsy=cmsy6 + \font\eightrm=cmr8 + \font\eightbf=cmbx8 + \font\eightit=cmti8 + \font\eighttt=cmtt8 + \font\eightmi=cmmi8 + \font\eightsy=cmsy8 + \textfont0=\eightrm + \textfont1=\eightmi + \textfont2=\eightsy + \def\rm{\eightrm} + \def\bf{\eightbf} + \def\it{\eightit} + \def\tt{\eighttt} + \if 1\the\letterpaper + \normalbaselineskip=.8\normalbaselineskip + \else + \normalbaselineskip=.7\normalbaselineskip + \fi + \normallineskip=.8\normallineskip + \normallineskiplimit=.8\normallineskiplimit + \normalbaselines\rm %make definitions take effect + + \if 2\ncolumns + \let\maxcolumn=b + \footline{\hss\rm\folio\hss} + \def\makefootline{\vskip 2in \hsize=6.86in\line{\the\footline}} + \else \if 3\ncolumns + \let\maxcolumn=c + \nopagenumbers + \else + \errhelp{You must set \columnsperpage equal to 1, 2, or 3.} + \errmessage{Illegal number of columns per page} + \fi\fi + +%% \intercolumnskip=.46in + \intercolumnskip=.65in + \def\abc{a} + \output={% %see The TeXbook page 257 + % This next line is useful when designing the layout. + %\immediate\write16{Column \folio\abc\space starts with \firstmark} + \if \maxcolumn\abc \multicolumnformat \global\def\abc{a} + \else\if a\abc + \global\setbox\columna\columnbox \global\def\abc{b} + %% in case we never use \columnb (two-column mode) + \global\setbox\columnb\hbox to -\intercolumnskip{} + \else + \global\setbox\columnb\columnbox \global\def\abc{c}\fi\fi} + \def\multicolumnformat{\shipout\vbox{\makeheadline + \hbox{\box\columna\hskip\intercolumnskip + \box\columnb\hskip\intercolumnskip\columnbox} + \makefootline}\advancepageno} + \def\columnbox{\leftline{\pagebody}} + + \def\bye{\par\vfill\supereject + \if a\abc \else\null\vfill\eject\fi + \if a\abc \else\null\vfill\eject\fi + \end} +\fi + +% we won't be using math mode much, so redefine some of the characters +% we might want to talk about +\catcode`\^=12 +\catcode`\_=12 + +\chardef\\=`\\ +\chardef\{=`\{ +\chardef\}=`\} + +\hyphenation{mini-buf-fer} + +\parindent 0pt +\parskip 1ex plus .5ex minus .5ex + +\def\small{\smallfont\textfont2=\smallsy\baselineskip=.8\baselineskip} + +% newcolumn - force a new column. Use sparingly, probably only for +% the first column of a page, which should have a title anyway. +\outer\def\newcolumn{\vfill\eject} + +% title - page title. Argument is title text. +\outer\def\title#1{{\titlefont\centerline{#1}}\vskip 1ex plus .5ex} + +% section - new major section. Argument is section name. +\outer\def\section#1{\par\filbreak + \vskip 3ex plus 2ex minus 2ex {\headingfont #1}\mark{#1}% + \vskip 2ex plus 1ex minus 1.5ex} + +\newdimen\keyindent + +% beginindentedkeys...endindentedkeys - key definitions will be +% indented, but running text, typically used as headings to group +% definitions, will not. +\def\beginindentedkeys{\keyindent=1em} +\def\endindentedkeys{\keyindent=0em} +\endindentedkeys + +% paralign - begin paragraph containing an alignment. +% If an \halign is entered while in vertical mode, a parskip is never +% inserted. Using \paralign instead of \halign solves this problem. +\def\paralign{\vskip\parskip\halign} + +% \<...> - surrounds a variable name in a code example +\def\<#1>{{\it #1\/}} + +% kbd - argument is characters typed literally. Like the Texinfo command. +\def\kbd#1{{\tt#1}\null} %\null so not an abbrev even if period follows + +% beginexample...endexample - surrounds literal text, such a code example. +% typeset in a typewriter font with line breaks preserved +\def\beginexample{\par\leavevmode\begingroup + \obeylines\obeyspaces\parskip0pt\tt} +{\obeyspaces\global\let =\ } +\def\endexample{\endgroup} + +% key - definition of a key. +% \key{description of key}{key-name} +% prints the description left-justified, and the key-name in a \kbd +% form near the right margin. +\def\key#1#2{\leavevmode\hbox to \hsize{\vtop + {\hsize=.75\hsize\rightskip=1em + \hskip\keyindent\relax#1}\kbd{#2}\hfil}} + +\newbox\metaxbox +\setbox\metaxbox\hbox{\kbd{M-x }} +\newdimen\metaxwidth +\metaxwidth=\wd\metaxbox + +% metax - definition of a M-x command. +% \metax{description of command}{M-x command-name} +% Tries to justify the beginning of the command name at the same place +% as \key starts the key name. (The "M-x " sticks out to the left.) +\def\metax#1#2{\leavevmode\hbox to \hsize{\hbox to .75\hsize + {\hskip\keyindent\relax#1\hfil}% + \hskip -\metaxwidth minus 1fil + \kbd{#2}\hfil}} + +% threecol - like "key" but with two key names. +% for example, one for doing the action backward, and one for forward. +\def\threecol#1#2#3{\hskip\keyindent\relax#1\hfil&\kbd{#2}\hfil\quad + &\kbd{#3}\hfil\quad\cr} + + +%**end of header + + +\title{GNU Emacs: Cart\~ao de Refer\^encia} +\centerline{(para vers\~ao 22)} + +\section{Iniciando o Emacs} + +Para entrar no GNU Emacs, digite: \kbd{emacs} + +\section{Saindo do Emacs} + +\key{suspende ou minimiza o Emacs}{C-z} +\key{encerra o Emacs}{C-x C-c} + +\section{Arquivos} + +\key{{\bf abre} um arquivo}{C-x C-f} +\key{{\bf salva} um arquivo em disco}{C-x C-s} +\key{salva {\bf todos} arquivos abertos}{C-x s} +\key{{\bf insere} outro arquivo neste buffer}{C-x i} +\key{substitui este arquivo por outro}{C-x C-v} +\key{salva o buffer em um arquivo especificado}{C-x C-w} +\key{alterna o estado de somente leitura do buffer}{C-x C-q} + +\section{Ajuda (Help)} + +Tecle \kbd{C-h} (ou \kbd{F1}) e siga as instru{\c{c}}{\~o}es. + +\key{remove a janela de ajuda}{C-x 1} +\key{rola a janela de ajuda}{C-M-v} + +\key{apropos: mostra comandos que casam com a string}{C-h a} +\key{descreve fun{\c{c}}{\~a}o associada a teclas}{C-h k} +\key{descreve uma fun{\c{c}}{\~a}o}{C-h f} +\key{busca informa{\c{c}}{\~o}es espec{\'\i}ficas do modo}{C-h m} + +\section{Recuperando-se de Erros} + +\key{{\bf aborta} uma opera{\c{c}}{\~a}o}{C-g} +\metax{{\bf recupera} arquivos ap{\'o}s crash}{M-x recover-session} +\metax{desfaz uma altera{\c{c}}{\~a}o ({\bf undo})}{C-x u, C-_ {\rm or} C-/} +\metax{restaura um buffer para o arquivo}{M-x revert-buffer} +\key{redesenha a tela}{C-l} + +\section{Busca Incremental} + +\key{busca para frente}{C-s} +\key{busca para tr{\'a}s}{C-r} +\key{busca por express{\~a}o regular}{C-M-s} +\key{busca por express{\~a}o regular para tr{\'a}s}{C-M-r} + +\key{seleciona a string de pesquisa anterior}{M-p} +\key{seleciona a string seguinte de pesquisa}{M-n} +\key{sai da busca incremental}{RET} +\key{desfaz o efeito do {\'u}ltimo caracter}{DEL} +\key{encerra a busca}{C-g} + +Use \kbd{C-s} ou \kbd{C-r} novamente para repetir a busca. +\kbd{C-g} cancela apenas o que ainda n{\~a}o foi feito. + +\shortcopyrightnotice + +\section{Movimenta{\c{c}}{\~a}o} + +\paralign to \hsize{#\tabskip=10pt plus 1 fil&#\tabskip=0pt&#\cr +\threecol{{\bf avan{\c{c}}ar}}{{\bf tr{\'a}s}}{{\bf frente}} +\threecol{um caracter}{C-b}{C-f} +\threecol{uma palavra}{M-b}{M-f} +\threecol{uma linha}{C-p}{C-n} +\threecol{para in{\'\i}cio ou fim de linha}{C-a}{C-e} +\threecol{senten{\c{c}}a}{M-a}{M-e} +\threecol{par{\'a}grafo}{M-\{}{M-\}} +\threecol{p{\'a}gina}{C-x [}{C-x ]} +\threecol{sexp}{C-M-b}{C-M-f} +\threecol{fun{\c{c}}{\~a}o}{C-M-a}{C-M-e} +\threecol{para in{\'\i}cio ou fim do buffer}{M-<}{M->} +} + +\key{rolar para pr{\'o}xima tela}{C-v} +\key{rolar para tela anterior}{M-v} +\key{rolar para esquerda}{C-x <} +\key{rolar para direita}{C-x >} +\key{rolar a linha corrente para o centro da tela}{C-u C-l} + +\section{Cortando e Apagando} + +\paralign to \hsize{#\tabskip=10pt plus 1 fil&#\tabskip=0pt&#\cr +\threecol{{\bf entidade a cortar}}{{\bf tr{\'a}s}}{{\bf frente}} +\threecol{caracter (apaga, n{\~a}o corta)}{DEL}{C-d} +\threecol{palavra}{M-DEL}{M-d} +\threecol{linha (at{\'e} o final)}{M-0 C-k}{C-k} +\threecol{senten{\c{c}}a}{C-x DEL}{M-k} +\threecol{sexp}{M-- C-M-k}{C-M-k} +} + +\key{corta {\bf regi{\~a}o}}{C-w} +\key{copia a {\bf regi{\~a}o}}{M-w} +\key{cortar at{\'e} a pr{\'o}xima ocorr{\^e}ncia de {\it char}}{M-z {\it char}} + +\key{colar a {\'u}ltima coisa cortada}{C-y} +\key{substitui a {\'u}lt. colagem pela c{\'o}pia anterior}{M-y} + +\section{Marcando} + +\key{posiciona a marca aqui}{C-@ {\rm or} C-SPC} +\key{troca a marca pelo ponto e vice-versa}{C-x C-x} + +\key{coloca a marca {\it arg\/} {\bf palavras} adiante}{M-@} +\key{marca o {\bf par{\'a}grafo}}{M-h} +\key{marca a {\bf p{\'a}gina}}{C-x C-p} +\key{marca a {\bf sexp}}{C-M-@} +\key{marca uma {\bf fun{\c{c}}{\~a}o}}{C-M-h} +\key{marca todo {\bf buffer}}{C-x h} + +\section{Busca e Substitui{\c{c}}{\~a}o} + +\key{Substitui interativamente uma string}{M-\%} +% query-replace-regexp is bound to C-M-% but that can't be typed on +% consoles. +\metax{usando express{\~a}o regular}{M-x query-replace-regexp} + +Respostas v{\'a}lidas no modo de busca e substitui{\c{c}}{\~a}o + +\key{{\bf substitui} esta, e prossegue}{SPC} +\key{substitui esta e entrada e n{\~a}o avan{\c{c}}a}{,} +\key{{\bf pula} para a pr{\'o}xima sem substituir}{DEL} +\key{substitui em todo o texto restante}{!} +\key{{\bf volta} para a palavra anterior}{^} +\key{{\bf encerra}}{RET} +\key{entra na edi{\c{c}}{\~a}o recursiva (\kbd{C-M-c} para sair)}{C-r} + + +\section{M{\'u}ltiplas Janelas} + +Quando forem mostrados 2 comandos, o segundo tem comportamento similar +para frame. + +{\setbox0=\hbox{\kbd{0}}\advance\hsize by 0\wd0 +\paralign to \hsize{#\tabskip=10pt plus 1 fil&#\tabskip=0pt&#\cr +\threecol{elimina todas outras janelas}{C-x 1\ \ \ \ }{C-x 5 1} +\threecol{divide a janela, acima e abaixo}{C-x 2\ \ \ \ }{C-x 5 2} +\threecol{elimina esta janela}{C-x 0\ \ \ \ }{C-x 5 0} +}} +\key{divide a janela, lado a lado}{C-x 3} + +\key{rola a outra janela}{C-M-v} + +{\setbox0=\hbox{\kbd{0}}\advance\hsize by 2\wd0 +\paralign to \hsize{#\tabskip=10pt plus 1 fil&#\tabskip=0pt&#\cr +\threecol{leva o cursor para outra janela}{C-x o}{C-x 5 o} + +\threecol{seleciona um buffer em outra janela}{C-x 4 b}{C-x 5 b} +\threecol{mostra um buffer em outra janela}{C-x 4 C-o}{C-x 5 C-o} +\threecol{busca um arquivo em outra janela}{C-x 4 f}{C-x 5 f} +\threecol{busca arquivo (ro) em outra janela}{C-x 4 r}{C-x 5 r} +\threecol{executa Dired em outra janela}{C-x 4 d}{C-x 5 d} +\threecol{busca tag em outra janela}{C-x 4 .}{C-x 5 .} +}} + +\key{aumenta a janela na vertical}{C-x ^} +\key{estreita a janela}{C-x \{} +\key{alarga a janela}{C-x \}} + +\section{Formatando} + +\key{identa a {\bf linha} corrente (modo)}{TAB} +\key{identa a {\bf regi{\~a}o} (modo)}{C-M-\\} +\key{identa a {\bf sexp} (modo)}{C-M-q} +\key{identa regi{\~a}o rigidamente {\it arg\/} colunas}{C-x TAB} + +\key{insere uma nova linha ap{\'o}s o ponto}{C-o} +\key{move o restante da linha para baixo}{C-M-o} +\key{apaga linhas em branco em torno do ponto}{C-x C-o} +\key{junta a linha com a anterior}{M-^} +\key{apaga todos brancos em torno do ponto}{M-\\} +\key{insere um espa{\c{c}}o em branco}{M-SPC} + +\key{preenche o par{\'a}grafo}{M-q} +\key{define a coluna limite de preenchimento}{C-x f} +\key{define um prefixo para cada linha}{C-x .} + +\key{formata fonte}{M-o} + +\section{Mai{\'u}sculas e Min{\'u}sculas} + +\key{Palavra para mai{\'u}sculas}{M-u} +\key{Palavra para min{\'u}sculas}{M-l} +\key{Primeira letra mai{\'u}scula (capitalize)}{M-c} + +\key{Regi{\~a}o para mai{\'u}sculas}{C-x C-u} +\key{Regi{\~a}o para min{\'u}sculas}{C-x C-l} + +\section{O Minibuffer} + +As teclas seguintes s{\~a}o definidas no minibuffer. + +\key{complete o m{\'a}ximo possi{\'\i}vel}{TAB} +\key{complete at{\'e} uma palavra}{SPC} +\key{complete e execute}{RET} +\key{mostre as op{\c{c}}{\~o}es para completar}{?} +\key{busca a entrada anterior no minibuffer}{M-p} +\key{busca a pr{\'o}xima entrada no minibuffer ou o default}{M-n} +\key{busca regexp no hist{\'o}rico para tr{\'a}s}{M-r} +\key{busca regexp no hist{\'o}rico para frente}{M-s} +\key{encerra o comando}{C-g} + +Tecle \kbd{C-x ESC ESC} para editar e repetir o {\'u}ltimo comando +utilizado. Tecle \kbd{F10} para ativar o menu. + +\newcolumn +\title{GNU Emacs: Cart\~ao de Refer\^encia} +\centerline{(para vers\~ao 22)} + +\section{Buffers} + +\key{seleciona outro buffer}{C-x b} +\key{lista todos buffers}{C-x C-b} +\key{mata um buffer}{C-x k} + +\section{Transposi{\c{c}}{\~a}o} + +\key{transp{\~o}e {\bf caracteres}}{C-t} +\key{transp{\~o}e {\bf palavras}}{M-t} +\key{transp{\~o}e {\bf linhas}}{C-x C-t} +\key{transp{\~o}e {\bf sexps}}{C-M-t} + +\section{Corre{\c{c}}{\~a}o Ortogr{\'a}fica} + +\key{verifica a palavra corrente}{M-\$} +\metax{verifica todas palavras de uma regi{\~a}o}{M-x ispell-region} +\metax{verifica todo o buffer}{M-x ispell-buffer} + +\section{Tags} + +\key{busca uma tag (uma defini{\c{c}}{\~a}o)}{M-.} +\key{encontra a pr{\'o}xima ocorr{\^e}ncia da tag}{C-u M-.} +\metax{especifica um novo arquivo de tags}{M-x visit-tags-table} + +\metax{busca por regexp em todos arquivos}{M-x tags-search} +\metax{busca e subst. em todos arquivos}{M-x tags-query-replace} +\key{continua a {\'u}ltima busca ou busca e substitui{\c{c}}{\~a}o}{M-,} + +\section{Shells} + +\key{executa um comando do shell}{M-!} +\key{executa um comando do shell na regi{\~a}o}{M-|} +\key{filtra uma regi{\~a}o por um comando do shell}{C-u M-|} +\key{inicia um shell na janela \kbd{*shell*}}{M-x shell} + +\section{Ret{\^a}ngulos} + +\key{copia o ret{\^a}ngulo para o registrador}{C-x r r} +\key{corta o ret{\^a}ngulo}{C-x r k} +\key{cola o ret{\^a}ngulo}{C-x r y} +\key{abre o ret{\^a}ngulo, move o texto para direita}{C-x r o} +\key{troca por espa{\c{c}}os o conte{\'u}do do ret{\^a}ngulo}{C-x r c} +\key{antep{\~o}e uma linha a string}{C-x r t} + +\section{Abreviaturas} + +\key{adiciona uma abreviatura global}{C-x a g} +\key{adiciona abreviatura ao modo local}{C-x a l} +\key{adiciona globalmente expans{\~a}o de abrev.}{C-x a i g} +\key{adiciona localmente expans{\~a}o de abrev.}{C-x a i l} +\key{explicitamente expande uma abrev}{C-x a e} + +\key{completa palavras com base em palavras anteriores}{M-/} + + +\section{Express{\~o}es Regulares} + +\key{qualquer caracter menos nova linha}{. {\rm(dot)}} +\key{zero ou mais repeti{\c{c}}{\~o}es}{*} +\key{uma ou mais repeti{\c{c}}{\~o}es}{+} +\key{zero ou uma repeti{\c{c}}{\~a}o}{?} +\key{protege o caracter especial {\it c\/}}{\\{\it c}} +\key{(``or'')}{\\|} +\key{agrupamento}{\\( {\rm$\ldots$} \\)} +\key{mesmo texto que {\it n\/}-{\'e}simo grupo}{\\{\it n}} +\key{quebra de palavra}{\\b} +\key{sem quebra de palavra}{\\B} + +\paralign to \hsize{#\tabskip=10pt plus 1 fil&#\tabskip=0pt&#\cr +\threecol{{\bf entidade}}{{\bf casa in{\'\i}cio}}{{\bf casa fim}} +\threecol{linha}{^}{\$} +\threecol{palavra}{\\<}{\\>} +\threecol{buffer}{\\`}{\\'} + +\threecol{{\bf classe de caracteres}}{{\bf casa esses}}{{\bf casa os outros}} +\threecol{conjunto expl{\'\i}cito}{[ {\rm$\ldots$} ]}{[^ {\rm$\ldots$} ]} +\threecol{caracter de sintaxe de palavra}{\\w}{\\W} +\threecol{caracter de sintaxe de {\it c}}{\\s{\it c}}{\\S{\it c}} +} + +\section{Conjuntos de Carac. Internacionais} + +\key{especifica uma l{\'\i}ngua principal}{C-x RET l} +\metax{mostra todos m{\'e}todos de inser{\c{c}}{\~a}o}{M-x list-input-methods} +\key{habilita/desabilita um m{\'e}todo de inser{\c{c}}{\~a}o}{C-\\} +\key{determina o sistema de codifica{\c{c}}{\~a}o}{C-x RET c} +\metax{mostra sistemas de codifica{\c{c}}{\~a}o}{M-x list-coding-systems} +\metax{escolhe a codifica{\c{c}}{\~a}o preferida}{M-x prefer-coding-system} + +\section{Info} + +\key{entra no leitor de Info}{C-h i} +\key{busca fun{\c{c}}{\~a}o ou arquivo no Info}{C-h S} +\beginindentedkeys + +Movimenta{\c{c}}{\~a}o em um nodo: + +\key{rola para frente}{SPC} +\key{rola para tr{\'a}s}{DEL} +\key{in{\'\i}cio do nodo}{. {\rm (dot)}} + +Movimenta{\c{c}}{\~a}o entre nodos: + +\key{{\bf pr{\'o}ximo} nodo}{n} +\key{nodo {\bf anterior}}{p} +\key{mover cima {\bf cima}}{u} +\key{seleciona item do menu pelo nome}{m} +\key{seleciona {\it n\/}-{\'e}simo item do menu}{{\it n}} +\key{segue refer{\^e}ncia cruzada (return with \kbd{l})}{f} +\key{retorna {\'u}ltimo nodo visitado}{l} +\key{retorna ao diret{\'o}rio de nodos}{d} +\key{ir para o topo do arquivo Info}{t} +\key{ir para qualquer nodo por nome}{g} + +Outros: + +\key{executar {\bf tutorial} do Info}{h} +\key{{\bf sair} Info}{q} +\key{busca por express{\~a}o regular}{M-s} + + +\endindentedkeys + +\section{Registrador} + +\key{salva regi{\~a}o em um registrador}{C-x r s} +\key{insere o conte{\'u}do do registrador no buffer}{C-x r i} + +\key{salva valor do ponto no registrador}{C-x r SPC} +\key{salta para o ponto salvo no registrador}{C-x r j} + +\section{Macros de Teclado} + +\key{{\bf inicia} a defini{\c{c}}{\~a}o de uma macro}{C-x (} +\key{{\bf encerra} a defini{\c{c}}{\~a}o de uma macro}{C-x )} +\key{{\bf executa} a {\'u}ltima macro definida}{C-x e} +\key{adiciona a {\'u}ltima macro definida}{C-u C-x (} +\metax{nomeia a {\'u}ltima macro definida}{M-x name-last-kbd-macro} +\metax{insere uma defini{\c{c}}{\~a}o em Lisp}{M-x insert-kbd-macro} + +\section{Lidando com Emacs Lisp} + +\key{avalia {\bf sexp} antes do ponto}{C-x C-e} +\key{avalia a {\bf defun} corrente}{C-M-x} +\metax{avalia a {\bf regi{\~a}o}}{M-x eval-region} +\key{l{\^e} e avalia o minibuffer}{M-:} +\metax{carrega do diret{\'o}rio padr{\~a}o do sistema}{M-x load-library} + +\section{Personaliza{\c{c}}{\~a}o Simples} + +\metax{personaliza vari{\'a}veis e fontes}{M-x customize} + +% The intended audience here is the person who wants to make simple +% customizations and knows Lisp syntax. + +Fazendo teclas de atalho globais em Emacs Lisp (exemplos): + +\beginexample% +(global-set-key "\\C-cg" 'goto-line) +(global-set-key "\\M-\#" 'query-replace-regexp) +\endexample + +\section{Escrevendo Comandos} + +\beginexample% +(defun \ (\) + "\" (interactive "\