DVIPS = dvips -D ${PSDPI} $(QUIETPS) -o $@ # tricky
DVIPDF = dvipdfm -o $@ -p ${PAPERSIZE}
PSPDF = gs -sPAPERSIZE=${PAPERSIZE} -sDEVICE=pdfwrite -dNOPAUSE -dBATCH -sOutputFile=$@
+# experimental; uses external texi2dvi for now; this needs pdftex to be present
+TEXI2PDF = texi2dvi --pdf
RLSRC = $(srcdir)/rlman.texi $(srcdir)/rluser.texi \
$(srcdir)/rltech.texi $(srcdir)/version.texi \
$(srcdir)/hstech.texi $(srcdir)/version.texi
# This should be a program that converts troff to an ascii-readable format
-NROFF = groff -Tascii
+NROFF = groff -Tascii -P -c
# This should be a program that converts troff to postscript
GROFF = groff
INFOOBJ = readline.info history.info rluserman.info
PSOBJ = readline.ps history.ps rluserman.ps
HTMLOBJ = readline.html history.html rluserman.html
-PDFOBJ = readline.pdf history.pdf rluserman.pdf
+TEXTOBJ = readline.0 history.0
+PDFOBJ = readline.pdf history.pdf rluserman.pdf readline_3.pdf history_3.pdf
INTERMEDIATE_OBJ = rlman.dvi
CREATED_DOCS = $(DVIOBJ) $(INFOOBJ) $(PSOBJ) $(HTMLOBJ) $(PDFOBJ)
-.SUFFIXES: .ps .txt .dvi .html .pdf
+.SUFFIXES: .0 .3 .ps .txt .dvi .html .pdf
-.ps.pdf:
+.3.0:
$(RM) $@
- -${PSPDF} $<
+ -${NROFF} -man $< > $@
+
+.3.pdf:
+ $(RM) $@
+ -${GROFF} -man -T pdf $< > $@
+
+.3.ps:
+ $(RM) $@
+ -${GROFF} -man $< > $@
+
+#.ps.pdf:
+# $(RM) $@
+# -${PSPDF} $<
.dvi.pdf:
$(RM) $@
-${DVIPDF} $<
-all: info dvi html ps
-nodvi: info html
+all: info html text pdf ps dvi
+nodvi: info html text
pdf: $(PDFOBJ)
readline.dvi: $(RLSRC)
- TEXINPUTS=.:$(TEXINPUTDIR):$$TEXINPUTS $(TEXI2DVI) $(srcdir)/rlman.texi
- mv rlman.dvi readline.dvi
+ $(RM) $@
+ TEXINPUTS=.:$(TEXINPUTDIR):$$TEXINPUTS $(TEXI2DVI) -o $@ $(srcdir)/rlman.texi
readline.info: $(RLSRC)
+ $(RM) $@
$(MAKEINFO) --no-split -I $(TEXINPUTDIR) -o $@ $(srcdir)/rlman.texi
+readline.pdf: $(RLSRC)
+ $(RM) $@
+ $(TEXI2PDF) -I $(TEXINPUTDIR) -o $@ $(srcdir)/rlman.texi
+
rluserman.dvi: $(RLSRC)
+ $(RM) $@
TEXINPUTS=.:$(TEXINPUTDIR):$$TEXINPUTS $(TEXI2DVI) $(srcdir)/rluserman.texi
rluserman.info: $(RLSRC)
+ $(RM) $@
$(MAKEINFO) --no-split -I $(TEXINPUTDIR) -o $@ $(srcdir)/rluserman.texi
+rluserman.pdf: $(RLSRC)
+ $(RM) $@
+ $(TEXI2PDF) -I $(TEXINPUTDIR) -o $@ $(srcdir)/rluserman.texi
+
history.dvi: ${HISTSRC}
+ $(RM) $@
TEXINPUTS=.:$(TEXINPUTDIR):$$TEXINPUTS $(TEXI2DVI) $(srcdir)/history.texi
history.info: ${HISTSRC}
+ $(RM) $@
$(MAKEINFO) --no-split -I $(TEXINPUTDIR) -o $@ $(srcdir)/history.texi
+history.pdf: $(HISTSRC)
+ $(RM) $@
+ $(TEXI2PDF) -I $(TEXINPUTDIR) -o $@ $(srcdir)/history.texi
+
readline.ps: readline.dvi
$(RM) $@
$(DVIPS) readline.dvi
$(DVIPS) history.dvi
readline.html: ${RLSRC}
- $(TEXI2HTML) -menu -monolithic -I $(TEXINPUTDIR) $(srcdir)/rlman.texi
- sed -e 's:rlman.html:readline.html:' rlman.html > readline.html
- $(RM) rlman.html
+ $(RM) $@
+ $(TEXI2HTML) -menu -monolithic -I $(TEXINPUTDIR) -o $@ $(srcdir)/rlman.texi
rluserman.html: ${RLSRC}
$(TEXI2HTML) -menu -monolithic -I $(TEXINPUTDIR) $(srcdir)/rluserman.texi
history.html: ${HISTSRC}
$(TEXI2HTML) -menu -monolithic -I $(TEXINPUTDIR) $(srcdir)/history.texi
+history.0: $(srcdir)/history.3
+readline.0: $(srcdir)/readline.3
+
+history_3.pdf: $(srcdir)/history.3
+ $(RM) $@
+ -${GROFF} -man -T pdf $< > $@
+
+readline_3.pdf: $(srcdir)/readline.3
+ $(RM) $@
+ -${GROFF} -man -T pdf $< > $@
+
info: $(INFOOBJ)
dvi: $(DVIOBJ)
ps: $(PSOBJ)
html: $(HTMLOBJ)
-
-readline.pdf: readline.dvi
-history.pdf: history.dvi
-rluserman.pdf: rluserman.dvi
+text: $(TEXTOBJ)
+pdf: $(PDFOBJ)
clean:
$(RM) *.aux *.cp *.fn *.ky *.log *.pg *.toc *.tp *.vr *.cps *.pgs \
--- /dev/null
+_\bH_\bI_\bS_\bT_\bO_\bR_\bY(3) Library Functions Manual _\bH_\bI_\bS_\bT_\bO_\bR_\bY(3)
+
+N\bNA\bAM\bME\bE
+ history - GNU History Library
+
+C\bCO\bOP\bPY\bYR\bRI\bIG\bGH\bHT\bT
+ The GNU History Library is Copyright (C) 1989-2024 by the Free Software
+ Foundation, Inc.
+
+D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
+ Many programs read input from the user a line at a time. The GNU His-
+ tory library is able to keep track of those lines, associate arbitrary
+ data with each line, and utilize information from previous lines when
+ composing new ones.
+
+ The History library provides functions that allow applications to their
+ _\bh_\bi_\bs_\bt_\bo_\br_\by, the set of previously-typed lines, which it keeps in a list.
+ Applications can choose which lines to save into a history list, how
+ many commands to save, save a history list to a file, read a history
+ list from a file, and display lines from the history in various for-
+ mats.
+
+H\bHI\bIS\bST\bTO\bOR\bRY\bY E\bEX\bXP\bPA\bAN\bNS\bSI\bIO\bON\bN
+ The history library supports a history expansion feature that is iden-
+ tical to the history expansion in b\bba\bas\bsh\bh. This section describes what
+ syntax features are available.
+
+ History expansions introduce words from the history list into the input
+ stream, making it easy to repeat commands, insert the arguments to a
+ previous command into the current input line, or fix errors in previous
+ commands quickly.
+
+ History expansion is usually performed immediately after a complete
+ line is read. It takes place in two parts. The first is to determine
+ which history list entry to use during substitution. The second is to
+ select portions of that entry to include into the current one.
+
+ The entry selected from the history is the _\be_\bv_\be_\bn_\bt, and the portions of
+ that entry that are acted upon are _\bw_\bo_\br_\bd_\bs. Various _\bm_\bo_\bd_\bi_\bf_\bi_\be_\br_\bs are avail-
+ able to manipulate the selected words. The entry is split into words
+ in the same fashion as b\bba\bas\bsh\bh does when reading input, so that several
+ words that would otherwise be separated are considered one word when
+ surrounded by quotes (see the description of h\bhi\bis\bst\bto\bor\bry\by_\b_t\bto\bok\bke\ben\bni\biz\bze\be(\b()\b) below).
+ The _\be_\bv_\be_\bn_\bt _\bd_\be_\bs_\bi_\bg_\bn_\ba_\bt_\bo_\br selects the event, the optional _\bw_\bo_\br_\bd _\bd_\be_\bs_\bi_\bg_\bn_\ba_\bt_\bo_\br
+ selects words from the event, and various optional _\bm_\bo_\bd_\bi_\bf_\bi_\be_\br_\bs are avail-
+ able to manipulate the selected words.
+
+ History expansions are introduced by the appearance of the history ex-
+ pansion character, which is !\b! by default. History expansions may ap-
+ pear anywhere in the input, but do not nest.
+
+ Only backslash (\\b\) and single quotes can quote the history expansion
+ character.
+
+ There is a special abbreviation for substitution, active when the _\bq_\bu_\bi_\bc_\bk
+ _\bs_\bu_\bb_\bs_\bt_\bi_\bt_\bu_\bt_\bi_\bo_\bn character (default ^\b^) is the first character on the line.
+ It selects the previous history list entry, using an event designator
+ equivalent to !\b!!\b!, and substitutes one string for another in that entry.
+ It is described below under E\bEv\bve\ben\bnt\bt D\bDe\bes\bsi\big\bgn\bna\bat\bto\bor\brs\bs. This is the only his-
+ tory expansion that does not begin with the history expansion charac-
+ ter.
+
+ E\bEv\bve\ben\bnt\bt D\bDe\bes\bsi\big\bgn\bna\bat\bto\bor\brs\bs
+ An event designator is a reference to an entry in the history list.
+ The event designator consists of the portion of the word beginning with
+ the history expansion character and ending with the word designator if
+ present, or the end of the word. Unless the reference is absolute,
+ events are relative to the current position in the history list.
+
+ !\b! Start a history substitution, except when followed by a b\bbl\bla\ban\bnk\bk,
+ newline, carriage return, =, or (.
+ !\b!_\bn Refer to history list entry _\bn.
+ !\b!-\b-_\bn Refer to the current entry minus _\bn.
+ !\b!!\b! Refer to the previous entry. This is a synonym for "!-1".
+ !\b!_\bs_\bt_\br_\bi_\bn_\bg
+ Refer to the most recent command preceding the current position
+ in the history list starting with _\bs_\bt_\br_\bi_\bn_\bg.
+ !\b!?\b?_\bs_\bt_\br_\bi_\bn_\bg[\b[?\b?]\b]
+ Refer to the most recent command preceding the current position
+ in the history list containing _\bs_\bt_\br_\bi_\bn_\bg. The trailing ?\b? may be
+ omitted if _\bs_\bt_\br_\bi_\bn_\bg is followed immediately by a newline. If
+ _\bs_\bt_\br_\bi_\bn_\bg is missing, this uses the string from the most recent
+ search; it is an error if there is no previous search string.
+ ^\b^_\bs_\bt_\br_\bi_\bn_\bg_\b1^\b^_\bs_\bt_\br_\bi_\bn_\bg_\b2^\b^
+ Quick substitution. Repeat the previous command, replacing
+ _\bs_\bt_\br_\bi_\bn_\bg_\b1 with _\bs_\bt_\br_\bi_\bn_\bg_\b2. Equivalent to "!!:s^_\bs_\bt_\br_\bi_\bn_\bg_\b1^_\bs_\bt_\br_\bi_\bn_\bg_\b2^"
+ (see M\bMo\bod\bdi\bif\bfi\bie\ber\brs\bs below).
+ !\b!#\b# The entire command line typed so far.
+
+ W\bWo\bor\brd\bd D\bDe\bes\bsi\big\bgn\bna\bat\bto\bor\brs\bs
+ Word designators are used to select desired words from the event. They
+ are optional; if the word designator isn't supplied, the history expan-
+ sion uses the entire event. A :\b: separates the event specification from
+ the word designator. It may be omitted if the word designator begins
+ with a ^\b^, $\b$, *\b*, -\b-, or %\b%. Words are numbered from the beginning of the
+ line, with the first word being denoted by 0 (zero). Words are in-
+ serted into the current line separated by single spaces.
+
+ 0\b0 (\b(z\bze\ber\bro\bo)\b)
+ The zeroth word. For the shell, and many other applications,
+ this is the command word.
+ _\bn The _\bnth word.
+ ^\b^ The first argument: word 1.
+ $\b$ The last word. This is usually the last argument, but will ex-
+ pand to the zeroth word if there is only one word in the line.
+ %\b% The first word matched by the most recent "?_\bs_\bt_\br_\bi_\bn_\bg?" search, if
+ the search string begins with a character that is part of a
+ word. By default, searches begin at the end of each line and
+ proceed to the beginning, so the first word matched is the one
+ closest to the end of the line.
+ _\bx-\b-_\by A range of words; "-_\by" abbreviates "0-_\by".
+ *\b* All of the words but the zeroth. This is a synonym for "_\b1_\b-_\b$".
+ It is not an error to use *\b* if there is just one word in the
+ event; it expands to the empty string in that case.
+ x\bx*\b* Abbreviates _\bx_\b-_\b$.
+ x\bx-\b- Abbreviates _\bx_\b-_\b$ like x\bx*\b*, but omits the last word. If x\bx is miss-
+ ing, it defaults to 0.
+
+ If a word designator is supplied without an event specification, the
+ previous command is used as the event, equivalent to !\b!!\b!.
+
+ M\bMo\bod\bdi\bif\bfi\bie\ber\brs\bs
+ After the optional word designator, the expansion may include a se-
+ quence of one or more of the following modifiers, each preceded by a
+ ":". These modify, or edit, the word or words selected from the his-
+ tory event.
+
+ h\bh Remove a trailing filename component, leaving only the head.
+ t\bt Remove all leading filename components, leaving the tail.
+ r\br Remove a trailing suffix of the form _\b._\bx_\bx_\bx, leaving the basename.
+ e\be Remove all but the trailing suffix.
+ p\bp Print the new command but do not execute it.
+ q\bq Quote the substituted words, escaping further substitutions.
+ x\bx Quote the substituted words as with q\bq, but break into words at
+ b\bbl\bla\ban\bnk\bks\bs and newlines. The q\bq and x\bx modifiers are mutually exclu-
+ sive; expansion uses the last one supplied.
+ s\bs/\b/_\bo_\bl_\bd/\b/_\bn_\be_\bw/\b/
+ Substitute _\bn_\be_\bw for the first occurrence of _\bo_\bl_\bd in the event
+ line. Any character may be used as the delimiter in place of /.
+ The final delimiter is optional if it is the last character of
+ the event line. A single backslash will quote the delimiter in
+ _\bo_\bl_\bd and _\bn_\be_\bw. If & appears in _\bn_\be_\bw, it is replaced with _\bo_\bl_\bd. A
+ single backslash will quote the &. If _\bo_\bl_\bd is null, it is set to
+ the last _\bo_\bl_\bd substituted, or, if no previous history substitu-
+ tions took place, the last _\bs_\bt_\br_\bi_\bn_\bg in a !\b!?\b?_\bs_\bt_\br_\bi_\bn_\bg[\b[?\b?]\b] search. If
+ _\bn_\be_\bw is null, each matching _\bo_\bl_\bd is deleted.
+ &\b& Repeat the previous substitution.
+ g\bg Cause changes to be applied over the entire event line. This is
+ used in conjunction with ":\b:s\bs" (e.g., ":\b:g\bgs\bs/\b/_\bo_\bl_\bd/\b/_\bn_\be_\bw/\b/") or ":\b:&\b&".
+ If used with ":\b:s\bs", any delimiter can be used in place of /, and
+ the final delimiter is optional if it is the last character of
+ the event line. An a\ba may be used as a synonym for g\bg.
+ G\bG Apply the following "s\bs" or "&\b&" modifier once to each word in the
+ event line.
+
+P\bPR\bRO\bOG\bGR\bRA\bAM\bMM\bMI\bIN\bNG\bG W\bWI\bIT\bTH\bH H\bHI\bIS\bST\bTO\bOR\bRY\bY F\bFU\bUN\bNC\bCT\bTI\bIO\bON\bNS\bS
+ This section describes how to use the History library in other pro-
+ grams.
+
+ I\bIn\bnt\btr\bro\bod\bdu\buc\bct\bti\bio\bon\bn t\bto\bo H\bHi\bis\bst\bto\bor\bry\by
+ A programmer using the History library has available functions for re-
+ membering lines on a history list, associating arbitrary data with a
+ line, removing lines from the list, searching through the list for a
+ line containing an arbitrary text string, and referencing any line in
+ the list directly. In addition, a history _\be_\bx_\bp_\ba_\bn_\bs_\bi_\bo_\bn function is avail-
+ able which provides for a consistent user interface across different
+ programs.
+
+ The user using programs written with the History library has the bene-
+ fit of a consistent user interface with a set of well-known commands
+ for manipulating the text of previous lines and using that text in new
+ commands. The basic history manipulation commands are identical to the
+ history substitution provided by b\bba\bas\bsh\bh.
+
+ The programmer can also use the readline library, which includes some
+ history manipulation by default, and has the added advantage of command
+ line editing.
+
+ Before declaring any functions using any functionality the History li-
+ brary provides in other code, an application writer should include the
+ file _\b<_\br_\be_\ba_\bd_\bl_\bi_\bn_\be_\b/_\bh_\bi_\bs_\bt_\bo_\br_\by_\b._\bh_\b> in any file that uses the History library's
+ features. It supplies extern declarations for all of the library's
+ public functions and variables, and declares all of the public data
+ structures.
+
+ H\bHi\bis\bst\bto\bor\bry\by S\bSt\bto\bor\bra\bag\bge\be
+ The history list is an array of history entries. A history entry is
+ declared as follows:
+
+ _\bt_\by_\bp_\be_\bd_\be_\bf _\bv_\bo_\bi_\bd _\b* h\bhi\bis\bst\btd\bda\bat\bta\ba_\b_t\bt;\b;
+
+ typedef struct _hist_entry {
+ char *line;
+ char *timestamp;
+ histdata_t data;
+ } HIST_ENTRY;
+
+ The history list itself might therefore be declared as
+
+ _\bH_\bI_\bS_\bT_\b__\bE_\bN_\bT_\bR_\bY _\b*_\b* t\bth\bhe\be_\b_h\bhi\bis\bst\bto\bor\bry\by_\b_l\bli\bis\bst\bt;\b;
+
+ The state of the History library is encapsulated into a single struc-
+ ture:
+
+ /*
+ * A structure used to pass around the current state of the history.
+ */
+ typedef struct _hist_state {
+ HIST_ENTRY **entries; /* Pointer to entry records. */
+ int offset; /* The current record. */
+ int length; /* Number of records in list. */
+ int size; /* Number of records allocated. */
+ int flags;
+ } HISTORY_STATE;
+
+ If the flags member includes H\bHS\bS_\b_S\bST\bTI\bIF\bFL\bLE\bED\bD, the history has been stifled.
+
+H\bHi\bis\bst\bto\bor\bry\by F\bFu\bun\bnc\bct\bti\bio\bon\bns\bs
+ This section describes the calling sequence for the various functions
+ exported by the GNU History library.
+
+ I\bIn\bni\bit\bti\bia\bal\bli\biz\bzi\bin\bng\bg H\bHi\bis\bst\bto\bor\bry\by a\ban\bnd\bd S\bSt\bta\bat\bte\be M\bMa\ban\bna\bag\bge\bem\bme\ben\bnt\bt
+ This section describes functions used to initialize and manage the
+ state of the History library when you want to use the history functions
+ in your program.
+
+ _\bv_\bo_\bi_\bd u\bus\bsi\bin\bng\bg_\b_h\bhi\bis\bst\bto\bor\bry\by (_\bv_\bo_\bi_\bd)
+ Begin a session in which the history functions might be used. This
+ initializes the interactive variables.
+
+ _\bH_\bI_\bS_\bT_\bO_\bR_\bY_\b__\bS_\bT_\bA_\bT_\bE _\b* h\bhi\bis\bst\bto\bor\bry\by_\b_g\bge\bet\bt_\b_h\bhi\bis\bst\bto\bor\bry\by_\b_s\bst\bta\bat\bte\be (_\bv_\bo_\bi_\bd)
+ Return a structure describing the current state of the input history.
+
+ _\bv_\bo_\bi_\bd h\bhi\bis\bst\bto\bor\bry\by_\b_s\bse\bet\bt_\b_h\bhi\bis\bst\bto\bor\bry\by_\b_s\bst\bta\bat\bte\be (_\bH_\bI_\bS_\bT_\bO_\bR_\bY_\b__\bS_\bT_\bA_\bT_\bE _\b*_\bs_\bt_\ba_\bt_\be)
+ Set the state of the history list according to _\bs_\bt_\ba_\bt_\be.
+
+ H\bHi\bis\bst\bto\bor\bry\by L\bLi\bis\bst\bt M\bMa\ban\bna\bag\bge\bem\bme\ben\bnt\bt
+ These functions manage individual entries on the history list, or set
+ parameters managing the list itself.
+
+ _\bv_\bo_\bi_\bd a\bad\bdd\bd_\b_h\bhi\bis\bst\bto\bor\bry\by (_\bc_\bo_\bn_\bs_\bt _\bc_\bh_\ba_\br _\b*_\bs_\bt_\br_\bi_\bn_\bg)
+ Place _\bs_\bt_\br_\bi_\bn_\bg at the end of the history list. The associated data field
+ (if any) is set to N\bNU\bUL\bLL\bL. If the maximum number of history entries has
+ been set using s\bst\bti\bif\bfl\ble\be_\b_h\bhi\bis\bst\bto\bor\bry\by(\b()\b), and the new number of history entries
+ would exceed that maximum, the oldest history entry is removed.
+
+ _\bv_\bo_\bi_\bd a\bad\bdd\bd_\b_h\bhi\bis\bst\bto\bor\bry\by_\b_t\bti\bim\bme\be (_\bc_\bo_\bn_\bs_\bt _\bc_\bh_\ba_\br _\b*_\bs_\bt_\br_\bi_\bn_\bg)
+ Change the time stamp associated with the most recent history entry to
+ _\bs_\bt_\br_\bi_\bn_\bg.
+
+ _\bH_\bI_\bS_\bT_\b__\bE_\bN_\bT_\bR_\bY _\b* r\bre\bem\bmo\bov\bve\be_\b_h\bhi\bis\bst\bto\bor\bry\by (_\bi_\bn_\bt _\bw_\bh_\bi_\bc_\bh)
+ Remove history entry at offset _\bw_\bh_\bi_\bc_\bh from the history. The removed el-
+ ement is returned so you can free the line, data, and containing struc-
+ ture.
+
+ _\bh_\bi_\bs_\bt_\bd_\ba_\bt_\ba_\b__\bt f\bfr\bre\bee\be_\b_h\bhi\bis\bst\bto\bor\bry\by_\b_e\ben\bnt\btr\bry\by (_\bH_\bI_\bS_\bT_\b__\bE_\bN_\bT_\bR_\bY _\b*_\bh_\bi_\bs_\bt_\be_\bn_\bt)
+ Free the history entry _\bh_\bi_\bs_\bt_\be_\bn_\bt and any history library private data as-
+ sociated with it. Returns the application-specific data so the caller
+ can dispose of it.
+
+ _\bH_\bI_\bS_\bT_\b__\bE_\bN_\bT_\bR_\bY _\b* r\bre\bep\bpl\bla\bac\bce\be_\b_h\bhi\bis\bst\bto\bor\bry\by_\b_e\ben\bnt\btr\bry\by (_\bi_\bn_\bt _\bw_\bh_\bi_\bc_\bh_\b, _\bc_\bo_\bn_\bs_\bt _\bc_\bh_\ba_\br _\b*_\bl_\bi_\bn_\be_\b, _\bh_\bi_\bs_\bt_\b-
+ _\bd_\ba_\bt_\ba_\b__\bt _\bd_\ba_\bt_\ba)
+ Make the history entry at offset _\bw_\bh_\bi_\bc_\bh have _\bl_\bi_\bn_\be and _\bd_\ba_\bt_\ba. This re-
+ turns the old entry so the caller can dispose of any application-spe-
+ cific data. In the case of an invalid _\bw_\bh_\bi_\bc_\bh, a N\bNU\bUL\bLL\bL pointer is re-
+ turned.
+
+ _\bv_\bo_\bi_\bd c\bcl\ble\bea\bar\br_\b_h\bhi\bis\bst\bto\bor\bry\by (_\bv_\bo_\bi_\bd)
+ Clear the history list by deleting all the entries.
+
+ _\bv_\bo_\bi_\bd s\bst\bti\bif\bfl\ble\be_\b_h\bhi\bis\bst\bto\bor\bry\by (_\bi_\bn_\bt _\bm_\ba_\bx)
+ Stifle the history list, remembering only the last _\bm_\ba_\bx entries. The
+ history list will contain only _\bm_\ba_\bx entries at a time.
+
+ _\bi_\bn_\bt u\bun\bns\bst\bti\bif\bfl\ble\be_\b_h\bhi\bis\bst\bto\bor\bry\by (_\bv_\bo_\bi_\bd)
+ Stop stifling the history. This returns the previously-set maximum
+ number of history entries (as set by s\bst\bti\bif\bfl\ble\be_\b_h\bhi\bis\bst\bto\bor\bry\by(\b()\b)). history was
+ stifled. The value is positive if the history was stifled, negative if
+ it wasn't.
+
+ _\bi_\bn_\bt h\bhi\bis\bst\bto\bor\bry\by_\b_i\bis\bs_\b_s\bst\bti\bif\bfl\ble\bed\bd (_\bv_\bo_\bi_\bd)
+ Returns non-zero if the history is stifled, zero if it is not.
+
+ I\bIn\bnf\bfo\bor\brm\bma\bat\bti\bio\bon\bn A\bAb\bbo\bou\but\bt t\bth\bhe\be H\bHi\bis\bst\bto\bor\bry\by L\bLi\bis\bst\bt
+ These functions return information about the entire history list or in-
+ dividual list entries.
+
+ _\bH_\bI_\bS_\bT_\b__\bE_\bN_\bT_\bR_\bY _\b*_\b* h\bhi\bis\bst\bto\bor\bry\by_\b_l\bli\bis\bst\bt (_\bv_\bo_\bi_\bd)
+ Return a N\bNU\bUL\bLL\bL terminated array of _\bH_\bI_\bS_\bT_\b__\bE_\bN_\bT_\bR_\bY _\b* which is the current in-
+ put history. Element 0 of this list is the beginning of time. If
+ there is no history, return N\bNU\bUL\bLL\bL.
+
+ _\bi_\bn_\bt w\bwh\bhe\ber\bre\be_\b_h\bhi\bis\bst\bto\bor\bry\by (_\bv_\bo_\bi_\bd)
+ Returns the offset of the current history element.
+
+ _\bH_\bI_\bS_\bT_\b__\bE_\bN_\bT_\bR_\bY _\b* c\bcu\bur\brr\bre\ben\bnt\bt_\b_h\bhi\bis\bst\bto\bor\bry\by (_\bv_\bo_\bi_\bd)
+ Return the history entry at the current position, as determined by
+ w\bwh\bhe\ber\bre\be_\b_h\bhi\bis\bst\bto\bor\bry\by(\b()\b). If there is no entry there, return a N\bNU\bUL\bLL\bL pointer.
+
+ _\bH_\bI_\bS_\bT_\b__\bE_\bN_\bT_\bR_\bY _\b* h\bhi\bis\bst\bto\bor\bry\by_\b_g\bge\bet\bt (_\bi_\bn_\bt _\bo_\bf_\bf_\bs_\be_\bt)
+ Return the history entry at position _\bo_\bf_\bf_\bs_\be_\bt. The range of valid values
+ of _\bo_\bf_\bf_\bs_\be_\bt starts at h\bhi\bis\bst\bto\bor\bry\by_\b_b\bba\bas\bse\be and ends at h\bhi\bis\bst\bto\bor\bry\by_\b_l\ble\ben\bng\bgt\bth\bh - 1. If
+ there is no entry there, or if _\bo_\bf_\bf_\bs_\be_\bt is outside the valid range, re-
+ turn a N\bNU\bUL\bLL\bL pointer.
+
+ _\bt_\bi_\bm_\be_\b__\bt h\bhi\bis\bst\bto\bor\bry\by_\b_g\bge\bet\bt_\b_t\bti\bim\bme\be (_\bH_\bI_\bS_\bT_\b__\bE_\bN_\bT_\bR_\bY _\b*)
+ Return the time stamp associated with the history entry passed as the
+ argument.
+
+ _\bi_\bn_\bt h\bhi\bis\bst\bto\bor\bry\by_\b_t\bto\bot\bta\bal\bl_\b_b\bby\byt\bte\bes\bs (_\bv_\bo_\bi_\bd)
+ Return the number of bytes that the primary history entries are using.
+ This function returns the sum of the lengths of all the lines in the
+ history.
+
+ M\bMo\bov\bvi\bin\bng\bg A\bAr\bro\bou\bun\bnd\bd t\bth\bhe\be H\bHi\bis\bst\bto\bor\bry\by L\bLi\bis\bst\bt
+ These functions allow the current index into the history list to be set
+ or changed.
+
+ _\bi_\bn_\bt h\bhi\bis\bst\bto\bor\bry\by_\b_s\bse\bet\bt_\b_p\bpo\bos\bs (_\bi_\bn_\bt _\bp_\bo_\bs)
+ Set the current history offset to _\bp_\bo_\bs, an absolute index into the list.
+ Returns 1 on success, 0 if _\bp_\bo_\bs is less than zero or greater than the
+ number of history entries.
+
+ _\bH_\bI_\bS_\bT_\b__\bE_\bN_\bT_\bR_\bY _\b* p\bpr\bre\bev\bvi\bio\bou\bus\bs_\b_h\bhi\bis\bst\bto\bor\bry\by (_\bv_\bo_\bi_\bd)
+ Back up the current history offset to the previous history entry, and
+ return a pointer to that entry. If there is no previous entry, return
+ a N\bNU\bUL\bLL\bL pointer.
+
+ _\bH_\bI_\bS_\bT_\b__\bE_\bN_\bT_\bR_\bY _\b* n\bne\bex\bxt\bt_\b_h\bhi\bis\bst\bto\bor\bry\by (_\bv_\bo_\bi_\bd)
+ If the current history offset refers to a valid history entry, incre-
+ ment the current history offset. If the possibly-incremented history
+ offset refers to a valid history entry, return a pointer to that entry;
+ otherwise, return a N\bNU\bUL\bLL\bL pointer.
+
+ S\bSe\bea\bar\brc\bch\bhi\bin\bng\bg t\bth\bhe\be H\bHi\bis\bst\bto\bor\bry\by L\bLi\bis\bst\bt
+ These functions allow searching of the history list for entries con-
+ taining a specific string. Searching may be performed both forward and
+ backward from the current history position. The search may be _\ba_\bn_\b-
+ _\bc_\bh_\bo_\br_\be_\bd, meaning that the string must match at the beginning of the his-
+ tory entry.
+
+ _\bi_\bn_\bt h\bhi\bis\bst\bto\bor\bry\by_\b_s\bse\bea\bar\brc\bch\bh (_\bc_\bo_\bn_\bs_\bt _\bc_\bh_\ba_\br _\b*_\bs_\bt_\br_\bi_\bn_\bg_\b, _\bi_\bn_\bt _\bd_\bi_\br_\be_\bc_\bt_\bi_\bo_\bn)
+ Search the history for _\bs_\bt_\br_\bi_\bn_\bg, starting at the current history offset.
+ If _\bd_\bi_\br_\be_\bc_\bt_\bi_\bo_\bn is less than 0, then the search is through previous en-
+ tries, otherwise through subsequent entries. If _\bs_\bt_\br_\bi_\bn_\bg is found, then
+ the current history index is set to that history entry, and the value
+ returned is the offset in the line of the entry where _\bs_\bt_\br_\bi_\bn_\bg was found.
+ Otherwise, nothing is changed, and the function returns -1.
+
+ _\bi_\bn_\bt h\bhi\bis\bst\bto\bor\bry\by_\b_s\bse\bea\bar\brc\bch\bh_\b_p\bpr\bre\bef\bfi\bix\bx (_\bc_\bo_\bn_\bs_\bt _\bc_\bh_\ba_\br _\b*_\bs_\bt_\br_\bi_\bn_\bg_\b, _\bi_\bn_\bt _\bd_\bi_\br_\be_\bc_\bt_\bi_\bo_\bn)
+ Search the history for _\bs_\bt_\br_\bi_\bn_\bg, starting at the current history offset.
+ The search is anchored: matching lines must begin with _\bs_\bt_\br_\bi_\bn_\bg. If _\bd_\bi_\b-
+ _\br_\be_\bc_\bt_\bi_\bo_\bn is less than 0, then the search is through previous entries,
+ otherwise through subsequent entries. If _\bs_\bt_\br_\bi_\bn_\bg is found, then the
+ current history index is set to that entry, and the return value is 0.
+ Otherwise, nothing is changed, and the function returns -1.
+
+ _\bi_\bn_\bt h\bhi\bis\bst\bto\bor\bry\by_\b_s\bse\bea\bar\brc\bch\bh_\b_p\bpo\bos\bs (_\bc_\bo_\bn_\bs_\bt _\bc_\bh_\ba_\br _\b*_\bs_\bt_\br_\bi_\bn_\bg_\b, _\bi_\bn_\bt _\bd_\bi_\br_\be_\bc_\bt_\bi_\bo_\bn_\b, _\bi_\bn_\bt _\bp_\bo_\bs)
+ Search for _\bs_\bt_\br_\bi_\bn_\bg in the history list, starting at _\bp_\bo_\bs, an absolute in-
+ dex into the list. If _\bd_\bi_\br_\be_\bc_\bt_\bi_\bo_\bn is negative, the search proceeds back-
+ ward from _\bp_\bo_\bs, otherwise forward. Returns the absolute index of the
+ history element where _\bs_\bt_\br_\bi_\bn_\bg was found, or -1 otherwise.
+
+ M\bMa\ban\bna\bag\bgi\bin\bng\bg t\bth\bhe\be H\bHi\bis\bst\bto\bor\bry\by F\bFi\bil\ble\be
+ The History library can read the history from and write it to a file.
+ This section documents the functions for managing a history file.
+
+ _\bi_\bn_\bt r\bre\bea\bad\bd_\b_h\bhi\bis\bst\bto\bor\bry\by (_\bc_\bo_\bn_\bs_\bt _\bc_\bh_\ba_\br _\b*_\bf_\bi_\bl_\be_\bn_\ba_\bm_\be)
+ Add the contents of _\bf_\bi_\bl_\be_\bn_\ba_\bm_\be to the history list, a line at a time. If
+ _\bf_\bi_\bl_\be_\bn_\ba_\bm_\be is N\bNU\bUL\bLL\bL, then read from _\b~_\b/_\b._\bh_\bi_\bs_\bt_\bo_\br_\by. Returns 0 if successful,
+ or e\ber\brr\brn\bno\bo if not.
+
+ _\bi_\bn_\bt r\bre\bea\bad\bd_\b_h\bhi\bis\bst\bto\bor\bry\by_\b_r\bra\ban\bng\bge\be (_\bc_\bo_\bn_\bs_\bt _\bc_\bh_\ba_\br _\b*_\bf_\bi_\bl_\be_\bn_\ba_\bm_\be_\b, _\bi_\bn_\bt _\bf_\br_\bo_\bm_\b, _\bi_\bn_\bt _\bt_\bo)
+ Read a range of lines from _\bf_\bi_\bl_\be_\bn_\ba_\bm_\be, adding them to the history list.
+ Start reading at line _\bf_\br_\bo_\bm and end at _\bt_\bo. If _\bf_\br_\bo_\bm is zero, start at
+ the beginning. If _\bt_\bo is less than _\bf_\br_\bo_\bm, then read until the end of the
+ file. If _\bf_\bi_\bl_\be_\bn_\ba_\bm_\be is N\bNU\bUL\bLL\bL, then read from _\b~_\b/_\b._\bh_\bi_\bs_\bt_\bo_\br_\by. Returns 0 if
+ successful, or e\ber\brr\brn\bno\bo if not.
+
+ _\bi_\bn_\bt w\bwr\bri\bit\bte\be_\b_h\bhi\bis\bst\bto\bor\bry\by (_\bc_\bo_\bn_\bs_\bt _\bc_\bh_\ba_\br _\b*_\bf_\bi_\bl_\be_\bn_\ba_\bm_\be)
+ Write the current history to _\bf_\bi_\bl_\be_\bn_\ba_\bm_\be, overwriting _\bf_\bi_\bl_\be_\bn_\ba_\bm_\be if neces-
+ sary. If _\bf_\bi_\bl_\be_\bn_\ba_\bm_\be is N\bNU\bUL\bLL\bL, then write the history list to _\b~_\b/_\b._\bh_\bi_\bs_\bt_\bo_\br_\by.
+ Returns 0 on success, or e\ber\brr\brn\bno\bo on a read or write error.
+
+ _\bi_\bn_\bt a\bap\bpp\bpe\ben\bnd\bd_\b_h\bhi\bis\bst\bto\bor\bry\by (_\bi_\bn_\bt _\bn_\be_\bl_\be_\bm_\be_\bn_\bt_\bs_\b, _\bc_\bo_\bn_\bs_\bt _\bc_\bh_\ba_\br _\b*_\bf_\bi_\bl_\be_\bn_\ba_\bm_\be)
+ Append the last _\bn_\be_\bl_\be_\bm_\be_\bn_\bt_\bs of the history list to _\bf_\bi_\bl_\be_\bn_\ba_\bm_\be. If _\bf_\bi_\bl_\be_\bn_\ba_\bm_\be
+ is N\bNU\bUL\bLL\bL, then append to _\b~_\b/_\b._\bh_\bi_\bs_\bt_\bo_\br_\by. Returns 0 on success, or e\ber\brr\brn\bno\bo on
+ a read or write error.
+
+ _\bi_\bn_\bt h\bhi\bis\bst\bto\bor\bry\by_\b_t\btr\bru\bun\bnc\bca\bat\bte\be_\b_f\bfi\bil\ble\be (_\bc_\bo_\bn_\bs_\bt _\bc_\bh_\ba_\br _\b*_\bf_\bi_\bl_\be_\bn_\ba_\bm_\be_\b, _\bi_\bn_\bt _\bn_\bl_\bi_\bn_\be_\bs)
+ Truncate the history file _\bf_\bi_\bl_\be_\bn_\ba_\bm_\be, leaving only the last _\bn_\bl_\bi_\bn_\be_\bs lines.
+ If _\bf_\bi_\bl_\be_\bn_\ba_\bm_\be is N\bNU\bUL\bLL\bL, then _\b~_\b/_\b._\bh_\bi_\bs_\bt_\bo_\br_\by is truncated. Returns 0 on suc-
+ cess, or e\ber\brr\brn\bno\bo on failure.
+
+ H\bHi\bis\bst\bto\bor\bry\by E\bEx\bxp\bpa\ban\bns\bsi\bio\bon\bn
+ These functions implement history expansion.
+
+ _\bi_\bn_\bt h\bhi\bis\bst\bto\bor\bry\by_\b_e\bex\bxp\bpa\ban\bnd\bd (_\bc_\bo_\bn_\bs_\bt _\bc_\bh_\ba_\br _\b*_\bs_\bt_\br_\bi_\bn_\bg_\b, _\bc_\bh_\ba_\br _\b*_\b*_\bo_\bu_\bt_\bp_\bu_\bt)
+ Expand _\bs_\bt_\br_\bi_\bn_\bg, placing the result into _\bo_\bu_\bt_\bp_\bu_\bt, a pointer to a string.
+ Returns:
+ 0 If no expansions took place (or, if the only change in
+ the text was the removal of escape characters preceding
+ the history expansion character);
+ 1 if expansions did take place;
+ -1 if there was an error in expansion;
+ 2 if the returned line should be displayed, but not exe-
+ cuted, as with the :\b:p\bp modifier.
+ If an error occurred in expansion, then _\bo_\bu_\bt_\bp_\bu_\bt contains a descriptive
+ error message.
+
+ _\bc_\bh_\ba_\br _\b* g\bge\bet\bt_\b_h\bhi\bis\bst\bto\bor\bry\by_\b_e\bev\bve\ben\bnt\bt (_\bc_\bo_\bn_\bs_\bt _\bc_\bh_\ba_\br _\b*_\bs_\bt_\br_\bi_\bn_\bg_\b, _\bi_\bn_\bt _\b*_\bc_\bi_\bn_\bd_\be_\bx_\b, _\bi_\bn_\bt _\bq_\bc_\bh_\ba_\br)
+ Returns the text of the history event beginning at _\bs_\bt_\br_\bi_\bn_\bg + _\b*_\bc_\bi_\bn_\bd_\be_\bx.
+ _\b*_\bc_\bi_\bn_\bd_\be_\bx is modified to point to after the event specifier. At function
+ entry, _\bc_\bi_\bn_\bd_\be_\bx points to the index into _\bs_\bt_\br_\bi_\bn_\bg where the history event
+ specification begins. _\bq_\bc_\bh_\ba_\br is a character that is allowed to end the
+ event specification in addition to the ``normal'' terminating charac-
+ ters.
+
+ _\bc_\bh_\ba_\br _\b*_\b* h\bhi\bis\bst\bto\bor\bry\by_\b_t\bto\bok\bke\ben\bni\biz\bze\be (_\bc_\bo_\bn_\bs_\bt _\bc_\bh_\ba_\br _\b*_\bs_\bt_\br_\bi_\bn_\bg)
+ Return an array of tokens parsed out of _\bs_\bt_\br_\bi_\bn_\bg, much as the shell
+ might. The tokens are split on the characters in the h\bhi\bis\bst\bto\bor\bry\by_\b_w\bwo\bor\brd\bd_\b_d\bde\be-\b-
+ l\bli\bim\bmi\bit\bte\ber\brs\bs variable, and shell quoting conventions are obeyed.
+
+ _\bc_\bh_\ba_\br _\b* h\bhi\bis\bst\bto\bor\bry\by_\b_a\bar\brg\bg_\b_e\bex\bxt\btr\bra\bac\bct\bt (_\bi_\bn_\bt _\bf_\bi_\br_\bs_\bt_\b, _\bi_\bn_\bt _\bl_\ba_\bs_\bt_\b, _\bc_\bo_\bn_\bs_\bt _\bc_\bh_\ba_\br _\b*_\bs_\bt_\br_\bi_\bn_\bg)
+ Extract a string segment consisting of the _\bf_\bi_\br_\bs_\bt through _\bl_\ba_\bs_\bt arguments
+ present in _\bs_\bt_\br_\bi_\bn_\bg. Arguments are split using h\bhi\bis\bst\bto\bor\bry\by_\b_t\bto\bok\bke\ben\bni\biz\bze\be(\b()\b).
+
+ H\bHi\bis\bst\bto\bor\bry\by V\bVa\bar\bri\bia\bab\bbl\ble\bes\bs
+ This section describes the externally-visible variables exported by the
+ GNU History Library.
+
+ _\bi_\bn_\bt h\bhi\bis\bst\bto\bor\bry\by_\b_b\bba\bas\bse\be
+ The logical offset of the first entry in the history list.
+
+ _\bi_\bn_\bt h\bhi\bis\bst\bto\bor\bry\by_\b_l\ble\ben\bng\bgt\bth\bh
+ The number of entries currently stored in the history list.
+
+ _\bi_\bn_\bt h\bhi\bis\bst\bto\bor\bry\by_\b_m\bma\bax\bx_\b_e\ben\bnt\btr\bri\bie\bes\bs
+ The maximum number of history entries. This must be changed using s\bst\bti\bi-\b-
+ f\bfl\ble\be_\b_h\bhi\bis\bst\bto\bor\bry\by(\b()\b).
+
+ _\bi_\bn_\bt h\bhi\bis\bst\bto\bor\bry\by_\b_w\bwr\bri\bit\bte\be_\b_t\bti\bim\bme\bes\bst\bta\bam\bmp\bps\bs
+ If non-zero, timestamps are written to the history file, so they can be
+ preserved between sessions. The default value is 0, meaning that time-
+ stamps are not saved. The current timestamp format uses the value of
+ _\bh_\bi_\bs_\bt_\bo_\br_\by_\b__\bc_\bo_\bm_\bm_\be_\bn_\bt_\b__\bc_\bh_\ba_\br to delimit timestamp entries in the history file.
+ If that variable does not have a value (the default), timestamps will
+ not be written.
+
+ _\bc_\bh_\ba_\br h\bhi\bis\bst\bto\bor\bry\by_\b_e\bex\bxp\bpa\ban\bns\bsi\bio\bon\bn_\b_c\bch\bha\bar\br
+ The character that introduces a history event. The default is !\b!. Set-
+ ting this to 0 inhibits history expansion.
+
+ _\bc_\bh_\ba_\br h\bhi\bis\bst\bto\bor\bry\by_\b_s\bsu\bub\bbs\bst\bt_\b_c\bch\bha\bar\br
+ The character that invokes word substitution if found at the start of a
+ line. The default is ^\b^.
+
+ _\bc_\bh_\ba_\br h\bhi\bis\bst\bto\bor\bry\by_\b_c\bco\bom\bmm\bme\ben\bnt\bt_\b_c\bch\bha\bar\br
+ During tokenization, if this character is seen as the first character
+ of a word, then it and all subsequent characters up to a newline are
+ ignored, suppressing history expansion for the remainder of the line.
+ This is disabled by default.
+
+ _\bc_\bh_\ba_\br _\b* h\bhi\bis\bst\bto\bor\bry\by_\b_w\bwo\bor\brd\bd_\b_d\bde\bel\bli\bim\bmi\bit\bte\ber\brs\bs
+ The characters that separate tokens for h\bhi\bis\bst\bto\bor\bry\by_\b_t\bto\bok\bke\ben\bni\biz\bze\be(\b()\b). The de-
+ fault value is "\b" \\b\t\bt\\b\n\bn(\b()\b)<\b<>\b>;\b;&\b&|\b|"\b".
+
+ _\bc_\bh_\ba_\br _\b* h\bhi\bis\bst\bto\bor\bry\by_\b_n\bno\bo_\b_e\bex\bxp\bpa\ban\bnd\bd_\b_c\bch\bha\bar\brs\bs
+ The list of characters which inhibit history expansion if found immedi-
+ ately following h\bhi\bis\bst\bto\bor\bry\by_\b_e\bex\bxp\bpa\ban\bns\bsi\bio\bon\bn_\b_c\bch\bha\bar\br. The default is space, tab,
+ newline, \\b\r\br, and =\b=.
+
+ _\bc_\bh_\ba_\br _\b* h\bhi\bis\bst\bto\bor\bry\by_\b_s\bse\bea\bar\brc\bch\bh_\b_d\bde\bel\bli\bim\bmi\bit\bte\ber\br_\b_c\bch\bha\bar\brs\bs
+ The list of additional characters which can delimit a history search
+ string, in addition to space, tab, _\b: and _\b? in the case of a substring
+ search. The default is empty.
+
+ _\bi_\bn_\bt h\bhi\bis\bst\bto\bor\bry\by_\b_q\bqu\buo\bot\bte\bes\bs_\b_i\bin\bnh\bhi\bib\bbi\bit\bt_\b_e\bex\bxp\bpa\ban\bns\bsi\bio\bon\bn
+ If non-zero, the history expansion code implements shell-like quoting:
+ single-quoted words are not scanned for the history expansion character
+ or the history comment character, and double-quoted words may have his-
+ tory expansion performed, since single quotes are not special within
+ double quotes. The default value is 0.
+
+ _\bi_\bn_\bt h\bhi\bis\bst\bto\bor\bry\by_\b_q\bqu\buo\bot\bti\bin\bng\bg_\b_s\bst\bta\bat\bte\be
+ An application may set this variable to indicate that the current line
+ being expanded is subject to existing quoting. If set to _\b', the history
+ expansion function will assume that the line is single-quoted and in-
+ hibit expansion until it reads an unquoted closing single quote; if set
+ to _\b", history expansion will assume the line is double quoted until it
+ reads an unquoted closing double quote. If set to zero, the default,
+ the history expansion function will assume the line is not quoted and
+ treat quote characters within the line as described above. This is
+ only effective if h\bhi\bis\bst\bto\bor\bry\by_\b_q\bqu\buo\bot\bte\bes\bs_\b_i\bin\bnh\bhi\bib\bbi\bit\bt_\b_e\bex\bxp\bpa\ban\bns\bsi\bio\bon\bn is set.
+
+ _\br_\bl_\b__\bl_\bi_\bn_\be_\bb_\bu_\bf_\b__\bf_\bu_\bn_\bc_\b__\bt _\b* h\bhi\bis\bst\bto\bor\bry\by_\b_i\bin\bnh\bhi\bib\bbi\bit\bt_\b_e\bex\bxp\bpa\ban\bns\bsi\bio\bon\bn_\b_f\bfu\bun\bnc\bct\bti\bio\bon\bn
+ This should be set to the address of a function that takes two argu-
+ ments: a c\bch\bha\bar\br *\b* (_\bs_\bt_\br_\bi_\bn_\bg) and an i\bin\bnt\bt index into that string (_\bi). It
+ should return a non-zero value if the history expansion starting at
+ _\bs_\bt_\br_\bi_\bn_\bg_\b[_\bi_\b] should not be performed; zero if the expansion should be
+ done. It is intended for use by applications like b\bba\bas\bsh\bh that use the
+ history expansion character for additional purposes. By default, this
+ variable is set to N\bNU\bUL\bLL\bL.
+
+F\bFI\bIL\bLE\bES\bS
+ _\b~_\b/_\b._\bh_\bi_\bs_\bt_\bo_\br_\by
+ Default filename for reading and writing saved history
+
+S\bSE\bEE\bE A\bAL\bLS\bSO\bO
+ _\bT_\bh_\be _\bG_\bn_\bu _\bR_\be_\ba_\bd_\bl_\bi_\bn_\be _\bL_\bi_\bb_\br_\ba_\br_\by, Brian Fox and Chet Ramey
+ _\bT_\bh_\be _\bG_\bn_\bu _\bH_\bi_\bs_\bt_\bo_\br_\by _\bL_\bi_\bb_\br_\ba_\br_\by, Brian Fox and Chet Ramey
+ _\bb_\ba_\bs_\bh(1)
+ _\br_\be_\ba_\bd_\bl_\bi_\bn_\be(3)
+
+A\bAU\bUT\bTH\bHO\bOR\bRS\bS
+ Brian Fox, Free Software Foundation
+ bfox@gnu.org
+
+ Chet Ramey, Case Western Reserve University
+ chet.ramey@case.edu
+
+B\bBU\bUG\bG R\bRE\bEP\bPO\bOR\bRT\bTS\bS
+ If you find a bug in the h\bhi\bis\bst\bto\bor\bry\by library, you should report it. But
+ first, you should make sure that it really is a bug, and that it ap-
+ pears in the latest version of the h\bhi\bis\bst\bto\bor\bry\by library that you have.
+
+ Once you have determined that a bug actually exists, mail a bug report
+ to _\bb_\bu_\bg_\b-_\br_\be_\ba_\bd_\bl_\bi_\bn_\be@_\bg_\bn_\bu_\b._\bo_\br_\bg. If you have a fix, you are welcome to mail
+ that as well! Suggestions and `philosophical' bug reports may be
+ mailed to _\bb_\bu_\bg_\b-_\br_\be_\ba_\bd_\bl_\bi_\bn_\be@_\bg_\bn_\bu_\b._\bo_\br_\bg or posted to the Usenet newsgroup
+ g\bgn\bnu\bu.\b.b\bba\bas\bsh\bh.\b.b\bbu\bug\bg.
+
+ Comments and bug reports concerning this manual page should be directed
+ to _\bc_\bh_\be_\bt_\b._\br_\ba_\bm_\be_\by_\b@_\bc_\ba_\bs_\be_\b._\be_\bd_\bu.
+
+GNU History 8.3 2024 October 10 _\bH_\bI_\bS_\bT_\bO_\bR_\bY(3)
Many programs read input from the user a line at a time.
The GNU
History library is able to keep track of those lines, associate arbitrary
-data with each line, and utilize information from previous lines in
+data with each line, and utilize information from previous lines when
composing new ones.
.PP
The History library provides functions that allow applications to their
@xrdef{History Interaction-snt}{Section@tie 1.1}
@xrdef{Event Designators-title}{Event Designators}
@xrdef{Event Designators-snt}{Section@tie 1.1.1}
-@xrdef{Word Designators-title}{Word Designators}
-@xrdef{Word Designators-snt}{Section@tie 1.1.2}
@xrdef{Using History Interactively-pg}{1}
@xrdef{History Interaction-pg}{1}
@xrdef{Event Designators-pg}{1}
+@xrdef{Word Designators-title}{Word Designators}
+@xrdef{Word Designators-snt}{Section@tie 1.1.2}
+@xrdef{Word Designators-pg}{2}
@xrdef{Modifiers-title}{Modifiers}
@xrdef{Modifiers-snt}{Section@tie 1.1.3}
-@xrdef{Word Designators-pg}{2}
-@xrdef{Modifiers-pg}{2}
+@xrdef{Modifiers-pg}{3}
@xrdef{Programming with GNU History-title}{Programming with GNU History}
@xrdef{Programming with GNU History-snt}{Chapter@tie 2}
@xrdef{Introduction to History-title}{Introduction to History}
@xrdef{Managing the History File-pg}{7}
@xrdef{History Expansion-title}{History Expansion}
@xrdef{History Expansion-snt}{Section@tie 2.3.7}
+@xrdef{History Expansion-pg}{8}
@xrdef{History Variables-title}{History Variables}
@xrdef{History Variables-snt}{Section@tie 2.4}
-@xrdef{History Expansion-pg}{8}
@xrdef{History Variables-pg}{9}
@xrdef{History Programming Example-title}{History Programming Example}
@xrdef{History Programming Example-snt}{Section@tie 2.5}
@xrdef{History Programming Example-pg}{10}
@xrdef{GNU Free Documentation License-title}{GNU Free Documentation License}
@xrdef{GNU Free Documentation License-snt}{Appendix@tie @char65{}}
-@xrdef{GNU Free Documentation License-pg}{12}
+@xrdef{GNU Free Documentation License-pg}{13}
@xrdef{Concept Index-title}{Concept Index}
@xrdef{Concept Index-snt}{Appendix@tie @char66{}}
-@xrdef{Concept Index-pg}{20}
+@xrdef{Concept Index-pg}{21}
@xrdef{Function and Variable Index-title}{Function and Variable Index}
@xrdef{Function and Variable Index-snt}{Appendix@tie @char67{}}
-@xrdef{Function and Variable Index-pg}{21}
+@xrdef{Function and Variable Index-pg}{22}
\initial {A}
-\entry {anchored search}{7}
+\entry{anchored search}{7}
\initial {E}
-\entry {event designators}{1}
+\entry{event designators}{1}
\initial {H}
-\entry {history events}{1}
-\entry {history expansion}{1}
-\entry {History Searching}{7}
+\entry{history events}{1}
+\entry{history expansion}{1}
+\entry{History Searching}{7}
\entry{history_truncate_file}{8}{\code {history_truncate_file}}
\entry{history_expand}{8}{\code {history_expand}}
\entry{get_history_event}{8}{\code {get_history_event}}
-\entry{history_tokenize}{8}{\code {history_tokenize}}
-\entry{history_arg_extract}{8}{\code {history_arg_extract}}
+\entry{history_tokenize}{9}{\code {history_tokenize}}
+\entry{history_arg_extract}{9}{\code {history_arg_extract}}
\initial {A}
-\entry {\code {add_history}}{5}
-\entry {\code {add_history_time}}{5}
-\entry {\code {append_history}}{8}
+\entry{\code {add_history}}{5}
+\entry{\code {add_history_time}}{5}
+\entry{\code {append_history}}{8}
\initial {C}
-\entry {\code {clear_history}}{6}
-\entry {\code {current_history}}{6}
+\entry{\code {clear_history}}{6}
+\entry{\code {current_history}}{6}
\initial {F}
-\entry {\code {free_history_entry}}{5}
+\entry{\code {free_history_entry}}{5}
\initial {G}
-\entry {\code {get_history_event}}{8}
+\entry{\code {get_history_event}}{8}
\initial {H}
-\entry {\code {history_arg_extract}}{8}
-\entry {\code {history_expand}}{8}
-\entry {\code {history_get}}{6}
-\entry {\code {history_get_history_state}}{5}
-\entry {\code {history_get_time}}{6}
-\entry {\code {history_is_stifled}}{6}
-\entry {\code {history_list}}{6}
-\entry {\code {history_search}}{7}
-\entry {\code {history_search_pos}}{7}
-\entry {\code {history_search_prefix}}{7}
-\entry {\code {history_set_history_state}}{5}
-\entry {\code {history_set_pos}}{7}
-\entry {\code {history_tokenize}}{8}
-\entry {\code {history_total_bytes}}{6}
-\entry {\code {history_truncate_file}}{8}
+\entry{\code {history_arg_extract}}{9}
+\entry{\code {history_expand}}{8}
+\entry{\code {history_get}}{6}
+\entry{\code {history_get_history_state}}{5}
+\entry{\code {history_get_time}}{6}
+\entry{\code {history_is_stifled}}{6}
+\entry{\code {history_list}}{6}
+\entry{\code {history_search}}{7}
+\entry{\code {history_search_pos}}{7}
+\entry{\code {history_search_prefix}}{7}
+\entry{\code {history_set_history_state}}{5}
+\entry{\code {history_set_pos}}{7}
+\entry{\code {history_tokenize}}{9}
+\entry{\code {history_total_bytes}}{6}
+\entry{\code {history_truncate_file}}{8}
\initial {N}
-\entry {\code {next_history}}{7}
+\entry{\code {next_history}}{7}
\initial {P}
-\entry {\code {previous_history}}{7}
+\entry{\code {previous_history}}{7}
\initial {R}
-\entry {\code {read_history}}{7}
-\entry {\code {read_history_range}}{8}
-\entry {\code {remove_history}}{5}
-\entry {\code {replace_history_entry}}{6}
+\entry{\code {read_history}}{7}
+\entry{\code {read_history_range}}{8}
+\entry{\code {remove_history}}{5}
+\entry{\code {replace_history_entry}}{6}
\initial {S}
-\entry {\code {stifle_history}}{6}
+\entry{\code {stifle_history}}{6}
\initial {U}
-\entry {\code {unstifle_history}}{6}
-\entry {\code {using_history}}{5}
+\entry{\code {unstifle_history}}{6}
+\entry{\code {using_history}}{5}
\initial {W}
-\entry {\code {where_history}}{6}
-\entry {\code {write_history}}{8}
+\entry{\code {where_history}}{6}
+\entry{\code {write_history}}{8}
<HTML>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<!-- Created on January, 2 2018 by texi2html 1.64 -->
+<!-- Created on October, 12 2024 by texi2html 1.64 -->
<!--
Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
Karl Berry <karl@freefriends.org>
<!--docid::SEC1::-->
<P>
-This chapter describes how to use the GNU History Library interactively,
-from a user's standpoint. It should be considered a user's guide. For
-information on using the GNU History Library in your own programs,
+This chapter describes how to use the GNU History Library
+interactively, from a user's standpoint.
+It should be considered a user's guide.
+For information on using the GNU History Library in your own programs,
see section <A HREF="history.html#SEC6">2. Programming with GNU History</A>.
</P><P>
<!--docid::SEC2::-->
<P>
-The History library provides a history expansion feature that is similar
-to the history expansion provided by <CODE>csh</CODE>. This section
-describes the syntax used to manipulate the history information.
+The History library
+provides a history expansion feature that is similar
+to the history expansion provided by <CODE>csh</CODE>
+(also referred to as history substitution where appropriate).
+This section describes the syntax used to manipulate the
+history information.
</P><P>
History expansions introduce words from the history list into
fix errors in previous commands quickly.
</P><P>
-History expansion takes place in two parts. The first is to determine
-which line from the history list should be used during substitution.
-The second is to select portions of that line for inclusion into the
-current one. The line selected from the history is called the
-<EM>event</EM>, and the portions of that line that are acted upon are
-called <EM>words</EM>. Various <EM>modifiers</EM> are available to manipulate
-the selected words. The line is broken into words in the same fashion
-that Bash does, so that several words
-surrounded by quotes are considered one word.
+History expansion takes place in two parts.
+The first is to determine
+which entry from the history list should be used during substitution.
+The second is to select portions of that entry to include into the
+current one.
+</P><P>
+
+The entry selected from the history is called the <EM>event</EM>,
+and the portions of that entry that are acted upon are <EM>words</EM>.
+Various <EM>modifiers</EM> are available to manipulate the selected words.
+The entry is split into words in the same fashion that Bash
+does when reading input,
+so that several words surrounded by quotes are considered one word.
+The <EM>event designator</EM> selects the event, the optional
+<EM>word designator</EM> selects words from the event, and
+various optional <EM>modifiers</EM> are available to manipulate the
+selected words.
+</P><P>
+
History expansions are introduced by the appearance of the
history expansion character, which is <SAMP>`!'</SAMP> by default.
+History expansions may appear anywhere in the input, but do not nest.
+</P><P>
+
+History expansion implements shell-like quoting conventions:
+a backslash can be used to remove the special handling for the next character;
+single quotes enclose verbatim sequences of characters, and can be used to
+inhibit history expansion;
+and characters enclosed within double quotes may be subject to history
+expansion, since backslash can escape the history expansion character,
+but single quotes may not, since they are not treated specially within
+double quotes.
+</P><P>
+
+There is a special abbreviation for substitution, active when the
+<VAR>quick substitution</VAR> character
+(default <SAMP>`^'</SAMP>)
+is the first character on the line.
+It selects the previous history list entry, using an event designator
+equivalent to <CODE>!!</CODE>,
+and substitutes one string for another in that entry.
+It is described below (see section <A HREF="history.html#SEC3">1.1.1 Event Designators</A>).
+This is the only history expansion that does not begin with the history
+expansion character.
</P><P>
<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0>
<!--docid::SEC3::-->
<P>
-An event designator is a reference to a command line entry in the
-history list.
+An event designator is a reference to an entry in the history list.
+The event designator consists of the portion of the word beginning
+with the history expansion character, and ending with the word designator
+if one is present, or the end of the word.
Unless the reference is absolute, events are relative to the current
position in the history list.
<A NAME="IDX1"></A>
<P>
<DT><CODE>!<VAR>n</VAR></CODE>
-<DD>Refer to command line <VAR>n</VAR>.
+<DD>Refer to history list entry <VAR>n</VAR>.
<P>
<DT><CODE>!-<VAR>n</VAR></CODE>
-<DD>Refer to the command <VAR>n</VAR> lines back.
+<DD>Refer to the history entry minus <VAR>n</VAR>.
<P>
<DT><CODE>!!</CODE>
-<DD>Refer to the previous command. This is a synonym for <SAMP>`!-1'</SAMP>.
+<DD>Refer to the previous entry.
+This is a synonym for <SAMP>`!-1'</SAMP>.
<P>
<DT><CODE>!<VAR>string</VAR></CODE>
The trailing
<SAMP>`?'</SAMP> may be omitted if the <VAR>string</VAR> is followed immediately by
a newline.
+If <VAR>string</VAR> is missing, this uses
+the string from the most recent search;
+it is an error if there is no previous search string.
<P>
<DT><CODE>^<VAR>string1</VAR>^<VAR>string2</VAR>^</CODE>
-<DD>Quick Substitution. Repeat the last command, replacing <VAR>string1</VAR>
-with <VAR>string2</VAR>. Equivalent to
-<CODE>!!:s/<VAR>string1</VAR>/<VAR>string2</VAR>/</CODE>.
+<DD>Quick Substitution.
+Repeat the last command, replacing <VAR>string1</VAR> with <VAR>string2</VAR>.
+Equivalent to <CODE>!!:s^<VAR>string1</VAR>^<VAR>string2</VAR>^</CODE>.
<P>
<DT><CODE>!#</CODE>
<P>
Word designators are used to select desired words from the event.
-A <SAMP>`:'</SAMP> separates the event specification from the word designator. It
-may be omitted if the word designator begins with a <SAMP>`^'</SAMP>, <SAMP>`$'</SAMP>,
-<SAMP>`*'</SAMP>, <SAMP>`-'</SAMP>, or <SAMP>`%'</SAMP>. Words are numbered from the beginning
-of the line, with the first word being denoted by 0 (zero). Words are
-inserted into the current line separated by single spaces.
+They are optional; if the word designator isn't supplied, the history
+expansion uses the entire event.
+A <SAMP>`:'</SAMP> separates the event specification from the word designator.
+It may be omitted if the word designator begins with a <SAMP>`^'</SAMP>, <SAMP>`$'</SAMP>,
+<SAMP>`*'</SAMP>, <SAMP>`-'</SAMP>, or <SAMP>`%'</SAMP>.
+Words are numbered from the beginning of the line,
+with the first word being denoted by 0 (zero).
+Words are inserted into the current line separated by single spaces.
</P><P>
For example,
<DL COMPACT>
<DT><CODE>!!</CODE>
-<DD>designates the preceding command. When you type this, the preceding
-command is repeated in toto.
+<DD>designates the preceding command.
+When you type this, the preceding command is repeated in toto.
<P>
<DT><CODE>!!:$</CODE>
-<DD>designates the last argument of the preceding command. This may be
-shortened to <CODE>!$</CODE>.
+<DD>designates the last argument of the preceding command.
+This may be shortened to <CODE>!$</CODE>.
<P>
<DT><CODE>!fi:2</CODE>
<P>
Here are the word designators:
-
+</P><P>
+
<DL COMPACT>
<DT><CODE>0 (zero)</CODE>
-<DD>The <CODE>0</CODE>th word. For many applications, this is the command word.
+<DD>The <CODE>0</CODE>th word.
+For the shell, and many other, applications, this is the command word.
<P>
<DT><CODE><VAR>n</VAR></CODE>
<P>
<DT><CODE>^</CODE>
-<DD>The first argument; that is, word 1.
+<DD>The first argument: word 1.
<P>
<DT><CODE>$</CODE>
-<DD>The last argument.
+<DD>The last word.
+This is usually the last argument, but will expand to the
+zeroth word if there is only one word in the line.
<P>
<DT><CODE>%</CODE>
-<DD>The word matched by the most recent <SAMP>`?<VAR>string</VAR>?'</SAMP> search.
+<DD>The first word matched by the most recent <SAMP>`?<VAR>string</VAR>?'</SAMP> search,
+if the search string begins with a character that is part of a word.
+By default, searches begin at the end of each line and proceed to the
+beginning, so the first word matched is the one closest to the end of
+the line.
<P>
<DT><CODE><VAR>x</VAR>-<VAR>y</VAR></CODE>
<P>
<DT><CODE>*</CODE>
-<DD>All of the words, except the <CODE>0</CODE>th. This is a synonym for <SAMP>`1-$'</SAMP>.
+<DD>All of the words, except the <CODE>0</CODE>th.
+This is a synonym for <SAMP>`1-$'</SAMP>.
It is not an error to use <SAMP>`*'</SAMP> if there is just one word in the event;
-the empty string is returned in that case.
+it expands to the empty string in that case.
<P>
<DT><CODE><VAR>x</VAR>*</CODE>
-<DD>Abbreviates <SAMP>`<VAR>x</VAR>-$'</SAMP>
+<DD>Abbreviates <SAMP>`<VAR>x</VAR>-$'</SAMP>.
<P>
<DT><CODE><VAR>x</VAR>-</CODE>
<DD>Abbreviates <SAMP>`<VAR>x</VAR>-$'</SAMP> like <SAMP>`<VAR>x</VAR>*'</SAMP>, but omits the last word.
+If <SAMP>`x'</SAMP> is missing, it defaults to 0.
<P>
</DL>
<P>
If a word designator is supplied without an event specification, the
-previous command is used as the event.
+previous command is used as the event, equivalent to <CODE>!!</CODE>.
</P><P>
<A NAME="Modifiers"></A>
After the optional word designator, you can add a sequence of one or more
of the following modifiers, each preceded by a <SAMP>`:'</SAMP>.
+These modify, or edit, the word or words selected from the history event.
</P><P>
<DL COMPACT>
<DT><CODE>h</CODE>
-<DD>Remove a trailing pathname component, leaving only the head.
+<DD>Remove a trailing filename component, leaving only the head.
<P>
<DT><CODE>t</CODE>
-<DD>Remove all leading pathname components, leaving the tail.
+<DD>Remove all leading filename components, leaving the tail.
<P>
<DT><CODE>r</CODE>
<DT><CODE>s/<VAR>old</VAR>/<VAR>new</VAR>/</CODE>
<DD>Substitute <VAR>new</VAR> for the first occurrence of <VAR>old</VAR> in the
-event line. Any delimiter may be used in place of <SAMP>`/'</SAMP>.
+event line.
+Any character may be used as the delimiter in place of <SAMP>`/'</SAMP>.
The delimiter may be quoted in <VAR>old</VAR> and <VAR>new</VAR>
-with a single backslash. If <SAMP>`&'</SAMP> appears in <VAR>new</VAR>,
-it is replaced by <VAR>old</VAR>. A single backslash will quote
-the <SAMP>`&'</SAMP>. The final delimiter is optional if it is the last
+with a single backslash.
+If <SAMP>`&'</SAMP> appears in <VAR>new</VAR>, it is replaced with <VAR>old</VAR>.
+A single backslash will quote the <SAMP>`&'</SAMP> in <VAR>old</VAR> and <VAR>new</VAR>.
+If <VAR>old</VAR> is null, it is set to the last <VAR>old</VAR>
+substituted, or, if no previous history substitutions took place,
+the last <VAR>string</VAR>
+in a !?<VAR>string</VAR><CODE>[?]</CODE>
+search.
+If <VAR>new</VAR> is null, each matching <VAR>old</VAR> is deleted.
+The final delimiter is optional if it is the last
character on the input line.
<P>
<DT><CODE>g</CODE>
<DD><DT><CODE>a</CODE>
-<DD>Cause changes to be applied over the entire event line. Used in
-conjunction with <SAMP>`s'</SAMP>, as in <CODE>gs/<VAR>old</VAR>/<VAR>new</VAR>/</CODE>,
+<DD>Cause changes to be applied over the entire event line.
+This is used in conjunction with
+<SAMP>`s'</SAMP>, as in <CODE>gs/<VAR>old</VAR>/<VAR>new</VAR>/</CODE>,
or with <SAMP>`&'</SAMP>.
<P>
<DT><CODE>G</CODE>
-<DD>Apply the following <SAMP>`s'</SAMP> modifier once to each word in the event.
+<DD>Apply the following <SAMP>`s'</SAMP> or <SAMP>`&'</SAMP> modifier once to each word
+in the event.
<P>
</DL>
This chapter describes how to interface programs that you write
with the GNU History Library.
It should be considered a technical guide.
-For information on the interactive use of GNU History, see section <A HREF="history.html#SEC1">1. Using History Interactively</A>.
+For information on the interactive use of GNU History,
+see section <A HREF="history.html#SEC1">1. Using History Interactively</A>.
</P><P>
<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0>
<!--docid::SEC7::-->
<P>
-Many programs read input from the user a line at a time. The GNU
-History library is able to keep track of those lines, associate arbitrary
-data with each line, and utilize information from previous lines in
-composing new ones.
+Many programs read input from the user a line at a time.
+The GNU History library is able to keep track of those lines,
+associate arbitrary data with each line, and utilize information from
+previous lines when composing new ones.
</P><P>
-The programmer using the History library has available functions
-for remembering lines on a history list, associating arbitrary data
-with a line, removing lines from the list, searching through the list
-for a line containing an arbitrary text string, and referencing any line
-in the list directly. In addition, a history <EM>expansion</EM> function
+A programmer using the History library can use functions
+to save commands on a history list,
+associate arbitrary data with history list entries,
+remove entries from the list,
+search through the list for a line containing an arbitrary text string,
+reference any entry in the list directly,
+and read and write the history list from and to a file.
+In addition, a history <EM>expansion</EM> function
is available which provides for a consistent user interface across
different programs.
</P><P>
-The user using programs written with the History library has the
+Someone using programs written with the History library has the
benefit of a consistent user interface with a set of well-known
commands for manipulating the text of previous lines and using that text
-in new commands. The basic history manipulation commands are similar to
+in new commands.
+The basic history manipulation commands are similar to
the history substitution provided by <CODE>csh</CODE>.
</P><P>
-If the programmer desires, he can use the Readline library, which
+The programmer can also use the Readline library, which
includes some history manipulation by default, and has the added
advantage of command line editing.
</P><P>
Before declaring any functions using any functionality the History
library provides in other code, an application writer should include
the file <CODE><readline/history.h></CODE> in any file that uses the
-History library's features. It supplies extern declarations for all
-of the library's public functions and variables, and declares all of
-the public data structures.
+History library's features.
+It supplies declarations for all of the library's
+public functions and variables,
+and declares all of the public data structures.
</P><P>
<A NAME="History Storage"></A>
<!--docid::SEC8::-->
<P>
-The history list is an array of history entries. A history entry is
-declared as follows:
+The history list is an array of history entries.
+A history entry is declared as follows:
</P><P>
<TABLE><tr><td> </td><td class=example><pre>typedef void *histdata_t;
</pre></td></tr></table></P><P>
If the flags member includes <CODE>HS_STIFLED</CODE>, the history has been
-stifled.
+stifled (limited to a maximum number of entries).
</P><P>
<A NAME="History Functions"></A>
<A NAME="IDX2"></A>
<DL>
<DT><U>Function:</U> void <B>using_history</B> <I>(void)</I>
-<DD>Begin a session in which the history functions might be used. This
-initializes the interactive variables.
+<DD>Begin a session that will use the history functions.
+This initializes the interactive variables.
</DL>
</P><P>
<A NAME="IDX5"></A>
<DL>
<DT><U>Function:</U> void <B>add_history</B> <I>(const char *string)</I>
-<DD>Place <VAR>string</VAR> at the end of the history list. The associated data
-field (if any) is set to <CODE>NULL</CODE>.
+<DD>Add <VAR>string</VAR> to the end of the history list, and
+set the associated data field (if any) to <CODE>NULL</CODE>.
If the maximum number of history entries has been set using
-<CODE>stifle_history()</CODE>, and the new number of history entries would exceed
-that maximum, the oldest history entry is removed.
+<CODE>stifle_history()</CODE>, and the new number of history entries
+would exceed that maximum, this removes the oldest history entry.
</DL>
</P><P>
<A NAME="IDX7"></A>
<DL>
<DT><U>Function:</U> HIST_ENTRY * <B>remove_history</B> <I>(int which)</I>
-<DD>Remove history entry at offset <VAR>which</VAR> from the history. The
-removed element is returned so you can free the line, data,
+<DD>Remove the history entry at offset <VAR>which</VAR> from the history list.
+This returns the removed element so you can free the line, data,
and containing structure.
+Since the data is private to your application, the History library
+doesn't know how to free it, if necessary.
</DL>
</P><P>
<DL>
<DT><U>Function:</U> histdata_t <B>free_history_entry</B> <I>(HIST_ENTRY *histent)</I>
<DD>Free the history entry <VAR>histent</VAR> and any history library private
-data associated with it. Returns the application-specific data
+data associated with it.
+Returns the application-specific data
so the caller can dispose of it.
</DL>
</P><P>
<DT><U>Function:</U> HIST_ENTRY * <B>replace_history_entry</B> <I>(int which, const char *line, histdata_t data)</I>
<DD>Make the history entry at offset <VAR>which</VAR> have <VAR>line</VAR> and <VAR>data</VAR>.
This returns the old entry so the caller can dispose of any
-application-specific data. In the case
-of an invalid <VAR>which</VAR>, a <CODE>NULL</CODE> pointer is returned.
+application-specific data.
+In the case of an invalid <VAR>which</VAR>, this returns <CODE>NULL</CODE>.
</DL>
</P><P>
<A NAME="IDX12"></A>
<DL>
<DT><U>Function:</U> int <B>unstifle_history</B> <I>(void)</I>
-<DD>Stop stifling the history. This returns the previously-set
-maximum number of history entries (as set by <CODE>stifle_history()</CODE>).
-The value is positive if the history was
-stifled, negative if it wasn't.
+<DD>Stop stifling the history.
+This returns the previously-set maximum number of history
+entries (as set by <CODE>stifle_history()</CODE>).
+The value is positive if the history was stifled, negative if it wasn't.
</DL>
</P><P>
<DL>
<DT><U>Function:</U> HIST_ENTRY ** <B>history_list</B> <I>(void)</I>
<DD>Return a <CODE>NULL</CODE> terminated array of <CODE>HIST_ENTRY *</CODE> which is the
-current input history. Element 0 of this list is the beginning of time.
-If there is no history, return <CODE>NULL</CODE>.
+current input history.
+Element 0 of this list is the beginning of time.
+Return <CODE>NULL</CODE> if there is no history.
</DL>
</P><P>
<A NAME="IDX15"></A>
<DL>
<DT><U>Function:</U> int <B>where_history</B> <I>(void)</I>
-<DD>Returns the offset of the current history element.
+<DD>Return the offset of the current history entry.
</DL>
</P><P>
<DL>
<DT><U>Function:</U> HIST_ENTRY * <B>current_history</B> <I>(void)</I>
<DD>Return the history entry at the current position, as determined by
-<CODE>where_history()</CODE>. If there is no entry there, return a <CODE>NULL</CODE>
-pointer.
+<CODE>where_history()</CODE>.
+If there is no entry there, return <CODE>NULL</CODE>.
</DL>
</P><P>
values of <VAR>offset</VAR> starts at <CODE>history_base</CODE> and ends at
<VAR>history_length</VAR> - 1 (see section <A HREF="history.html#SEC17">2.4 History Variables</A>).
If there is no entry there, or if <VAR>offset</VAR> is outside the valid
-range, return a <CODE>NULL</CODE> pointer.
+range, return <CODE>NULL</CODE>.
</DL>
</P><P>
<DL>
<DT><U>Function:</U> HIST_ENTRY * <B>previous_history</B> <I>(void)</I>
<DD>Back up the current history offset to the previous history entry, and
-return a pointer to that entry. If there is no previous entry, return
-a <CODE>NULL</CODE> pointer.
+return a pointer to that entry.
+If there is no previous entry, return <CODE>NULL</CODE>.
</DL>
</P><P>
increment the current history offset.
If the possibly-incremented history offset refers to a valid history
entry, return a pointer to that entry;
-otherwise, return a <CODE>BNULL</CODE> pointer.
+otherwise, return <CODE>NULL</CODE>.
</DL>
</P><P>
<!--docid::SEC14::-->
<P>
-These functions allow searching of the history list for entries containing
-a specific string. Searching may be performed both forward and backward
-from the current history position. The search may be <EM>anchored</EM>,
-meaning that the string must match at the beginning of the history entry.
+These functions search the history list for entries containing
+a specific string.
+Searching may be performed both forward and backward
+from the current history position.
+The search may be <EM>anchored</EM>,
+meaning that the string must match at the beginning of a history entry.
<A NAME="IDX23"></A>
</P><P>
<DD>Search the history for <VAR>string</VAR>, starting at the current history offset.
If <VAR>direction</VAR> is less than 0, then the search is through
previous entries, otherwise through subsequent entries.
-If <VAR>string</VAR> is found, then
-the current history index is set to that history entry, and the value
-returned is the offset in the line of the entry where
-<VAR>string</VAR> was found. Otherwise, nothing is changed, and a -1 is
-returned.
+If <VAR>string</VAR> is found, then the current history index is set to
+that history entry, and <CODE>history_search</CODE>
+returns the offset in the line of the entry where
+<VAR>string</VAR> was found.
+Otherwise, nothing is changed, and this returns -1.
</DL>
</P><P>
<DL>
<DT><U>Function:</U> int <B>history_search_prefix</B> <I>(const char *string, int direction)</I>
<DD>Search the history for <VAR>string</VAR>, starting at the current history
-offset. The search is anchored: matching lines must begin with
-<VAR>string</VAR>. If <VAR>direction</VAR> is less than 0, then the search is
+offset.
+The search is anchored: matching history entries must begin with <VAR>string</VAR>.
+If <VAR>direction</VAR> is less than 0, then the search is
through previous entries, otherwise through subsequent entries.
-If <VAR>string</VAR> is found, then the
-current history index is set to that entry, and the return value is 0.
-Otherwise, nothing is changed, and a -1 is returned.
+If <VAR>string</VAR> is found, then the current history index is set to
+that entry, and the return value is 0.
+Otherwise, nothing is changed, and this returns -1.
</DL>
</P><P>
<DL>
<DT><U>Function:</U> int <B>history_search_pos</B> <I>(const char *string, int direction, int pos)</I>
<DD>Search for <VAR>string</VAR> in the history list, starting at <VAR>pos</VAR>, an
-absolute index into the list. If <VAR>direction</VAR> is negative, the search
-proceeds backward from <VAR>pos</VAR>, otherwise forward. Returns the absolute
-index of the history element where <VAR>string</VAR> was found, or -1 otherwise.
+absolute index into the list.
+If <VAR>direction</VAR> is negative, the search
+proceeds backward from <VAR>pos</VAR>, otherwise forward.
+Returns the index in the history list
+of the history element where <VAR>string</VAR> was
+found, or -1 otherwise.
</DL>
</P><P>
<A NAME="IDX27"></A>
<DL>
<DT><U>Function:</U> int <B>read_history</B> <I>(const char *filename)</I>
-<DD>Add the contents of <VAR>filename</VAR> to the history list, a line at a time.
-If <VAR>filename</VAR> is <CODE>NULL</CODE>, then read from <TT>`~/.history'</TT>.
+<DD>Add the contents of <VAR>filename</VAR> to the history list, one entry
+at a time.
+If <VAR>filename</VAR> is <CODE>NULL</CODE>, this reads from <TT>`~/.history'</TT>,
+if it exists.
+This attempts to determine whether the history file includes timestamp
+information, and assigns timestamps to the history entries it reads
+if so.
Returns 0 if successful, or <CODE>errno</CODE> if not.
</DL>
</P><P>
<DT><U>Function:</U> int <B>read_history_range</B> <I>(const char *filename, int from, int to)</I>
<DD>Read a range of lines from <VAR>filename</VAR>, adding them to the history list.
Start reading at line <VAR>from</VAR> and end at <VAR>to</VAR>.
-If <VAR>from</VAR> is zero, start at the beginning. If <VAR>to</VAR> is less than
-<VAR>from</VAR>, then read until the end of the file. If <VAR>filename</VAR> is
-<CODE>NULL</CODE>, then read from <TT>`~/.history'</TT>. Returns 0 if successful,
-or <CODE>errno</CODE> if not.
+If <VAR>from</VAR> is zero, start at the beginning.
+If <VAR>to</VAR> is less than <VAR>from</VAR>, this reads until the end of the file.
+This attempts to determine whether the history file includes timestamp
+information, and assigns timestamps to the history entries it reads
+if so.
+If <VAR>filename</VAR> is <CODE>NULL</CODE>, this reads from <TT>`~/.history'</TT>,
+if it exists.
+Returns 0 if successful, or <CODE>errno</CODE> if not.
</DL>
</P><P>
<DT><U>Function:</U> int <B>write_history</B> <I>(const char *filename)</I>
<DD>Write the current history to <VAR>filename</VAR>, overwriting <VAR>filename</VAR>
if necessary.
+This writes timestamp information if the
+<CODE>history_write_timestamps</CODE> variable is set to a non-zero value.
If <VAR>filename</VAR> is <CODE>NULL</CODE>, then write the history list to
<TT>`~/.history'</TT>.
Returns 0 on success, or <CODE>errno</CODE> on a read or write error.
<DL>
<DT><U>Function:</U> int <B>append_history</B> <I>(int nelements, const char *filename)</I>
<DD>Append the last <VAR>nelements</VAR> of the history list to <VAR>filename</VAR>.
+This writes timestamp information if the
+<CODE>history_write_timestamps</CODE> variable is set to a non-zero value.
If <VAR>filename</VAR> is <CODE>NULL</CODE>, then append to <TT>`~/.history'</TT>.
Returns 0 on success, or <CODE>errno</CODE> on a read or write error.
</DL>
<DT><U>Function:</U> int <B>history_truncate_file</B> <I>(const char *filename, int nlines)</I>
<DD>Truncate the history file <VAR>filename</VAR>, leaving only the last
<VAR>nlines</VAR> lines.
-If <VAR>filename</VAR> is <CODE>NULL</CODE>, then <TT>`~/.history'</TT> is truncated.
+If <VAR>filename</VAR> is <CODE>NULL</CODE>, this truncates <TT>`~/.history'</TT>.
Returns 0 on success, or <CODE>errno</CODE> on failure.
</DL>
</P><P>
<A NAME="IDX32"></A>
<DL>
-<DT><U>Function:</U> int <B>history_expand</B> <I>(char *string, char **output)</I>
+<DT><U>Function:</U> int <B>history_expand</B> <I>(const char *string, char **output)</I>
<DD>Expand <VAR>string</VAR>, placing the result into <VAR>output</VAR>, a pointer
-to a string (see section <A HREF="history.html#SEC2">1.1 History Expansion</A>). Returns:
+to a string (see section <A HREF="history.html#SEC2">1.1 History Expansion</A>).
+Returns:
<DL COMPACT>
<DT><CODE>0</CODE>
<DD>If no expansions took place (or, if the only change in
</DL>
<P>
-If an error occurred in expansion, then <VAR>output</VAR> contains a descriptive
-error message.
+If an error occurred during expansion,
+then <VAR>output</VAR> contains a descriptive error message.
</DL>
</P><P>
<DL>
<DT><U>Function:</U> char * <B>get_history_event</B> <I>(const char *string, int *cindex, int qchar)</I>
<DD>Returns the text of the history event beginning at <VAR>string</VAR> +
-<VAR>*cindex</VAR>. <VAR>*cindex</VAR> is modified to point to after the event
-specifier. At function entry, <VAR>cindex</VAR> points to the index into
-<VAR>string</VAR> where the history event specification begins. <VAR>qchar</VAR>
+<VAR>*cindex</VAR>.
+Modifies <VAR>*cindex</VAR> to point to after the event specifier.
+At function entry, <VAR>cindex</VAR> points to the index into <VAR>string</VAR>
+where the history event specification begins.
+<VAR>qchar</VAR>
is a character that is allowed to end the event specification in addition
to the "normal" terminating characters.
</DL>
<DL>
<DT><U>Function:</U> char ** <B>history_tokenize</B> <I>(const char *string)</I>
<DD>Return an array of tokens parsed out of <VAR>string</VAR>, much as the
-shell might. The tokens are split on the characters in the
+shell might.
+The tokens are split on the characters in the
<VAR>history_word_delimiters</VAR> variable,
-and shell quoting conventions are obeyed.
+and shell quoting conventions are obeyed as described below.
</DL>
</P><P>
<DL>
<DT><U>Function:</U> char * <B>history_arg_extract</B> <I>(int first, int last, const char *string)</I>
<DD>Extract a string segment consisting of the <VAR>first</VAR> through <VAR>last</VAR>
-arguments present in <VAR>string</VAR>. Arguments are split using
-<CODE>history_tokenize</CODE>.
+arguments present in <VAR>string</VAR>.
+This splits <VAR>string</VAR> into arguments using <CODE>history_tokenize</CODE>.
</DL>
</P><P>
<A NAME="IDX38"></A>
<DL>
<DT><U>Variable:</U> int <B>history_max_entries</B>
-<DD>The maximum number of history entries. This must be changed using
-<CODE>stifle_history()</CODE>.
+<DD>The maximum number of history entries.
+This must be changed using <CODE>stifle_history()</CODE>.
</DL>
</P><P>
<DL>
<DT><U>Variable:</U> int <B>history_write_timestamps</B>
<DD>If non-zero, timestamps are written to the history file, so they can be
-preserved between sessions. The default value is 0, meaning that
-timestamps are not saved.
+preserved between sessions.
+The default value is 0, meaning that timestamps are not saved.
</P><P>
The current timestamp format uses the value of <VAR>history_comment_char</VAR>
-to delimit timestamp entries in the history file. If that variable does
-not have a value (the default), timestamps will not be written.
+to delimit timestamp entries in the history file.
+If that variable does not have a value (the default), this will not
+write timestamps.
</DL>
</P><P>
<A NAME="IDX40"></A>
<DL>
<DT><U>Variable:</U> char <B>history_expansion_char</B>
-<DD>The character that introduces a history event. The default is <SAMP>`!'</SAMP>.
+<DD>The character that introduces a history event.
+The default is <SAMP>`!'</SAMP>.
Setting this to 0 inhibits history expansion.
</DL>
</P><P>
<DL>
<DT><U>Variable:</U> char <B>history_subst_char</B>
<DD>The character that invokes word substitution if found at the start of
-a line. The default is <SAMP>`^'</SAMP>.
+a line.
+The default is <SAMP>`^'</SAMP>.
</DL>
</P><P>
<A NAME="IDX42"></A>
<DL>
<DT><U>Variable:</U> char <B>history_comment_char</B>
-<DD>During tokenization, if this character is seen as the first character
+<DD>During tokenization, if this character appears as the first character
of a word, then it and all subsequent characters up to a newline are
ignored, suppressing history expansion for the remainder of the line.
This is disabled by default.
<DT><U>Variable:</U> char * <B>history_search_delimiter_chars</B>
<DD>The list of additional characters which can delimit a history search
string, in addition to space, TAB, <SAMP>`:'</SAMP> and <SAMP>`?'</SAMP> in the case of
-a substring search. The default is empty.
+a substring search.
+The default is empty.
</DL>
</P><P>
<DL>
<DT><U>Variable:</U> char * <B>history_no_expand_chars</B>
<DD>The list of characters which inhibit history expansion if found immediately
-following <VAR>history_expansion_char</VAR>. The default is space, tab, newline,
-carriage return, and <SAMP>`='</SAMP>.
+following <VAR>history_expansion_char</VAR>.
+The default is space, tab, newline, carriage return, and <SAMP>`='</SAMP>.
</DL>
</P><P>
<A NAME="IDX46"></A>
<DL>
<DT><U>Variable:</U> int <B>history_quotes_inhibit_expansion</B>
-<DD>If non-zero, double-quoted words are not scanned for the history expansion
-character or the history comment character. The default value is 0.
+<DD>If non-zero, the history expansion code implements shell-like quoting:
+single-quoted words are not scanned for the history expansion
+character or the history comment character, and double-quoted words may
+have history expansion performed, since single quotes are not special
+within double quotes.
+The default value is 0.
</DL>
</P><P>
<A NAME="IDX47"></A>
<DL>
+<DT><U>Variable:</U> int <B>history_quoting_state</B>
+<DD>An application may set this variable to indicate that the current line
+being expanded is subject to existing quoting.
+If set to <SAMP>`''</SAMP>, the
+history expansion function will assume that the line is single-quoted and
+inhibit expansion until it reads an unquoted closing single quote;
+if set to <SAMP>`"'</SAMP>, history expansion will assume the line is
+double quoted until it reads an unquoted closing double quote.
+If set to 0, the default,
+the history expansion function will assume the line is not quoted and
+treat quote characters within the line as described above.
+This is only effective if <VAR>history_quotes_inhibit_expansion</VAR> is set.
+This is intended for use by applications like Bash which allow
+quoted strings to span multiple lines.
+</DL>
+</P><P>
+
+<A NAME="IDX48"></A>
+<DL>
<DT><U>Variable:</U> rl_linebuf_func_t * <B>history_inhibit_expansion_function</B>
<DD>This should be set to the address of a function that takes two arguments:
a <CODE>char *</CODE> (<VAR>string</VAR>)
<TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre>#include <stdio.h>
#include <readline/history.h>
-main (argc, argv)
- int argc;
- char **argv;
+int
+main (int argc, char **argv)
{
char line[1024], *t;
int len, done = 0;
<TR><TD></TD><TD valign=top><A HREF="history.html#IDX17"><CODE>history_get</CODE></A></TD><TD valign=top><A HREF="history.html#SEC12">2.3.3 Information About the History List</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="history.html#IDX3"><CODE>history_get_history_state</CODE></A></TD><TD valign=top><A HREF="history.html#SEC10">2.3.1 Initializing History and State Management</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="history.html#IDX18"><CODE>history_get_time</CODE></A></TD><TD valign=top><A HREF="history.html#SEC12">2.3.3 Information About the History List</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX47"><CODE>history_inhibit_expansion_function</CODE></A></TD><TD valign=top><A HREF="history.html#SEC17">2.4 History Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="history.html#IDX48"><CODE>history_inhibit_expansion_function</CODE></A></TD><TD valign=top><A HREF="history.html#SEC17">2.4 History Variables</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="history.html#IDX13"><CODE>history_is_stifled</CODE></A></TD><TD valign=top><A HREF="history.html#SEC11">2.3.2 History List Management</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="history.html#IDX37"><CODE>history_length</CODE></A></TD><TD valign=top><A HREF="history.html#SEC17">2.4 History Variables</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="history.html#IDX14"><CODE>history_list</CODE></A></TD><TD valign=top><A HREF="history.html#SEC12">2.3.3 Information About the History List</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="history.html#IDX38"><CODE>history_max_entries</CODE></A></TD><TD valign=top><A HREF="history.html#SEC17">2.4 History Variables</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="history.html#IDX45"><CODE>history_no_expand_chars</CODE></A></TD><TD valign=top><A HREF="history.html#SEC17">2.4 History Variables</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="history.html#IDX46"><CODE>history_quotes_inhibit_expansion</CODE></A></TD><TD valign=top><A HREF="history.html#SEC17">2.4 History Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="history.html#IDX47"><CODE>history_quoting_state</CODE></A></TD><TD valign=top><A HREF="history.html#SEC17">2.4 History Variables</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="history.html#IDX24"><CODE>history_search</CODE></A></TD><TD valign=top><A HREF="history.html#SEC14">2.3.5 Searching the History List</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="history.html#IDX44"><CODE>history_search_delimiter_chars</CODE></A></TD><TD valign=top><A HREF="history.html#SEC17">2.4 History Variables</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="history.html#IDX26"><CODE>history_search_pos</CODE></A></TD><TD valign=top><A HREF="history.html#SEC14">2.3.5 Searching the History List</A></TD></TR>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H1>About this document</H1>
-This document was generated by <I>Chet Ramey</I> on <I>January, 2 2018</I>
+This document was generated by <I>Chet Ramey</I> on <I>October, 12 2024</I>
using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html
"><I>texi2html</I></A>
<P></P>
<BR>
<FONT SIZE="-1">
This document was generated
-by <I>Chet Ramey</I> on <I>January, 2 2018</I>
+by <I>Chet Ramey</I> on <I>October, 12 2024</I>
using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html
"><I>texi2html</I></A>
-This is history.info, produced by makeinfo version 6.5 from
+This is history.info, produced by makeinfo version 7.1 from
history.texi.
-This document describes the GNU History library (version 7.0, 28
-December 2017), a programming tool that provides a consistent user
-interface for recalling lines of previously typed input.
+This document describes the GNU History library (version 8.3, 10 October
+2024), a programming tool that provides a consistent user interface for
+recalling lines of previously typed input.
- Copyright (C) 1988-2016 Free Software Foundation, Inc.
+ Copyright © 1988-2024 Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License,
=====================
The History library provides a history expansion feature that is similar
-to the history expansion provided by 'csh'. This section describes the
-syntax used to manipulate the history information.
+to the history expansion provided by ‘csh’ (also referred to as history
+substitution where appropriate). This section describes the syntax used
+to manipulate the history information.
History expansions introduce words from the history list into the
input stream, making it easy to repeat commands, insert the arguments to
previous commands quickly.
History expansion takes place in two parts. The first is to
-determine which line from the history list should be used during
-substitution. The second is to select portions of that line for
-inclusion into the current one. The line selected from the history is
-called the "event", and the portions of that line that are acted upon
-are called "words". Various "modifiers" are available to manipulate the
-selected words. The line is broken into words in the same fashion that
-Bash does, so that several words surrounded by quotes are considered one
-word. History expansions are introduced by the appearance of the
-history expansion character, which is '!' by default.
+determine which entry from the history list should be used during
+substitution. The second is to select portions of that entry to include
+into the current one.
+
+ The entry selected from the history is called the “event”, and the
+portions of that entry that are acted upon are “words”. Various
+“modifiers” are available to manipulate the selected words. The entry
+is split into words in the same fashion that Bash does when reading
+input, so that several words surrounded by quotes are considered one
+word. The “event designator” selects the event, the optional “word
+designator” selects words from the event, and various optional
+“modifiers” are available to manipulate the selected words.
+
+ History expansions are introduced by the appearance of the history
+expansion character, which is ‘!’ by default. History expansions may
+appear anywhere in the input, but do not nest.
+
+ History expansion implements shell-like quoting conventions: a
+backslash can be used to remove the special handling for the next
+character; single quotes enclose verbatim sequences of characters, and
+can be used to inhibit history expansion; and characters enclosed within
+double quotes may be subject to history expansion, since backslash can
+escape the history expansion character, but single quotes may not, since
+they are not treated specially within double quotes.
+
+ There is a special abbreviation for substitution, active when the
+QUICK SUBSTITUTION character (default ‘^’) is the first character on the
+line. It selects the previous history list entry, using an event
+designator equivalent to ‘!!’, and substitutes one string for another in
+that entry. It is described below (*note Event Designators::). This is
+the only history expansion that does not begin with the history
+expansion character.
* Menu:
1.1.1 Event Designators
-----------------------
-An event designator is a reference to a command line entry in the
-history list. Unless the reference is absolute, events are relative to
-the current position in the history list.
+An event designator is a reference to an entry in the history list. The
+event designator consists of the portion of the word beginning with the
+history expansion character, and ending with the word designator if one
+is present, or the end of the word. Unless the reference is absolute,
+events are relative to the current position in the history list.
-'!'
+‘!’
Start a history substitution, except when followed by a space, tab,
- the end of the line, or '='.
+ the end of the line, or ‘=’.
-'!N'
- Refer to command line N.
+‘!N’
+ Refer to history list entry N.
-'!-N'
- Refer to the command N lines back.
+‘!-N’
+ Refer to the history entry minus N.
-'!!'
- Refer to the previous command. This is a synonym for '!-1'.
+‘!!’
+ Refer to the previous entry. This is a synonym for ‘!-1’.
-'!STRING'
+‘!STRING’
Refer to the most recent command preceding the current position in
the history list starting with STRING.
-'!?STRING[?]'
+‘!?STRING[?]’
Refer to the most recent command preceding the current position in
- the history list containing STRING. The trailing '?' may be
- omitted if the STRING is followed immediately by a newline.
+ the history list containing STRING. The trailing ‘?’ may be
+ omitted if the STRING is followed immediately by a newline. If
+ STRING is missing, this uses the string from the most recent
+ search; it is an error if there is no previous search string.
-'^STRING1^STRING2^'
+‘^STRING1^STRING2^’
Quick Substitution. Repeat the last command, replacing STRING1
- with STRING2. Equivalent to '!!:s/STRING1/STRING2/'.
+ with STRING2. Equivalent to ‘!!:s^STRING1^STRING2^’.
-'!#'
+‘!#’
The entire command line typed so far.
\1f
1.1.2 Word Designators
----------------------
-Word designators are used to select desired words from the event. A ':'
-separates the event specification from the word designator. It may be
-omitted if the word designator begins with a '^', '$', '*', '-', or '%'.
-Words are numbered from the beginning of the line, with the first word
-being denoted by 0 (zero). Words are inserted into the current line
-separated by single spaces.
+Word designators are used to select desired words from the event. They
+are optional; if the word designator isn't supplied, the history
+expansion uses the entire event. A ‘:’ separates the event
+specification from the word designator. It may be omitted if the word
+designator begins with a ‘^’, ‘$’, ‘*’, ‘-’, or ‘%’. Words are numbered
+from the beginning of the line, with the first word being denoted by 0
+(zero). Words are inserted into the current line separated by single
+spaces.
For example,
-'!!'
+‘!!’
designates the preceding command. When you type this, the
preceding command is repeated in toto.
-'!!:$'
+‘!!:$’
designates the last argument of the preceding command. This may be
- shortened to '!$'.
+ shortened to ‘!$’.
-'!fi:2'
+‘!fi:2’
designates the second argument of the most recent command starting
- with the letters 'fi'.
+ with the letters ‘fi’.
Here are the word designators:
-'0 (zero)'
- The '0'th word. For many applications, this is the command word.
+‘0 (zero)’
+ The ‘0’th word. For the shell, and many other, applications, this
+ is the command word.
-'N'
+‘N’
The Nth word.
-'^'
- The first argument; that is, word 1.
+‘^’
+ The first argument: word 1.
-'$'
- The last argument.
+‘$’
+ The last word. This is usually the last argument, but will expand
+ to the zeroth word if there is only one word in the line.
-'%'
- The word matched by the most recent '?STRING?' search.
+‘%’
+ The first word matched by the most recent ‘?STRING?’ search, if the
+ search string begins with a character that is part of a word. By
+ default, searches begin at the end of each line and proceed to the
+ beginning, so the first word matched is the one closest to the end
+ of the line.
-'X-Y'
- A range of words; '-Y' abbreviates '0-Y'.
+‘X-Y’
+ A range of words; ‘-Y’ abbreviates ‘0-Y’.
-'*'
- All of the words, except the '0'th. This is a synonym for '1-$'.
- It is not an error to use '*' if there is just one word in the
- event; the empty string is returned in that case.
+‘*’
+ All of the words, except the ‘0’th. This is a synonym for ‘1-$’.
+ It is not an error to use ‘*’ if there is just one word in the
+ event; it expands to the empty string in that case.
-'X*'
- Abbreviates 'X-$'
+‘X*’
+ Abbreviates ‘X-$’.
-'X-'
- Abbreviates 'X-$' like 'X*', but omits the last word.
+‘X-’
+ Abbreviates ‘X-$’ like ‘X*’, but omits the last word. If ‘x’ is
+ missing, it defaults to 0.
If a word designator is supplied without an event specification, the
-previous command is used as the event.
+previous command is used as the event, equivalent to ‘!!’.
\1f
File: history.info, Node: Modifiers, Prev: Word Designators, Up: History Interaction
---------------
After the optional word designator, you can add a sequence of one or
-more of the following modifiers, each preceded by a ':'.
+more of the following modifiers, each preceded by a ‘:’. These modify,
+or edit, the word or words selected from the history event.
-'h'
- Remove a trailing pathname component, leaving only the head.
+‘h’
+ Remove a trailing filename component, leaving only the head.
-'t'
- Remove all leading pathname components, leaving the tail.
+‘t’
+ Remove all leading filename components, leaving the tail.
-'r'
- Remove a trailing suffix of the form '.SUFFIX', leaving the
+‘r’
+ Remove a trailing suffix of the form ‘.SUFFIX’, leaving the
basename.
-'e'
+‘e’
Remove all but the trailing suffix.
-'p'
+‘p’
Print the new command but do not execute it.
-'s/OLD/NEW/'
+‘s/OLD/NEW/’
Substitute NEW for the first occurrence of OLD in the event line.
- Any delimiter may be used in place of '/'. The delimiter may be
- quoted in OLD and NEW with a single backslash. If '&' appears in
- NEW, it is replaced by OLD. A single backslash will quote the '&'.
- The final delimiter is optional if it is the last character on the
- input line.
-
-'&'
+ Any character may be used as the delimiter in place of ‘/’. The
+ delimiter may be quoted in OLD and NEW with a single backslash. If
+ ‘&’ appears in NEW, it is replaced with OLD. A single backslash
+ will quote the ‘&’ in OLD and NEW. If OLD is null, it is set to
+ the last OLD substituted, or, if no previous history substitutions
+ took place, the last STRING in a !?STRING‘[?]’ search. If NEW is
+ null, each matching OLD is deleted. The final delimiter is
+ optional if it is the last character on the input line.
+
+‘&’
Repeat the previous substitution.
-'g'
-'a'
- Cause changes to be applied over the entire event line. Used in
- conjunction with 's', as in 'gs/OLD/NEW/', or with '&'.
+‘g’
+‘a’
+ Cause changes to be applied over the entire event line. This is
+ used in conjunction with ‘s’, as in ‘gs/OLD/NEW/’, or with ‘&’.
-'G'
- Apply the following 's' modifier once to each word in the event.
+‘G’
+ Apply the following ‘s’ or ‘&’ modifier once to each word in the
+ event.
\1f
File: history.info, Node: Programming with GNU History, Next: GNU Free Documentation License, Prev: Using History Interactively, Up: Top
Many programs read input from the user a line at a time. The GNU
History library is able to keep track of those lines, associate
arbitrary data with each line, and utilize information from previous
-lines in composing new ones.
+lines when composing new ones.
- The programmer using the History library has available functions for
-remembering lines on a history list, associating arbitrary data with a
-line, removing lines from the list, searching through the list for a
-line containing an arbitrary text string, and referencing any line in
-the list directly. In addition, a history "expansion" function is
-available which provides for a consistent user interface across
-different programs.
+ A programmer using the History library can use functions to save
+commands on a history list, associate arbitrary data with history list
+entries, remove entries from the list, search through the list for a
+line containing an arbitrary text string, reference any entry in the
+list directly, and read and write the history list from and to a file.
+In addition, a history “expansion” function is available which provides
+for a consistent user interface across different programs.
- The user using programs written with the History library has the
+ Someone using programs written with the History library has the
benefit of a consistent user interface with a set of well-known commands
for manipulating the text of previous lines and using that text in new
commands. The basic history manipulation commands are similar to the
-history substitution provided by 'csh'.
+history substitution provided by ‘csh’.
- If the programmer desires, he can use the Readline library, which
-includes some history manipulation by default, and has the added
-advantage of command line editing.
+ The programmer can also use the Readline library, which includes some
+history manipulation by default, and has the added advantage of command
+line editing.
Before declaring any functions using any functionality the History
library provides in other code, an application writer should include the
-file '<readline/history.h>' in any file that uses the History library's
-features. It supplies extern declarations for all of the library's
-public functions and variables, and declares all of the public data
-structures.
+file ‘<readline/history.h>’ in any file that uses the History library's
+features. It supplies declarations for all of the library's public
+functions and variables, and declares all of the public data structures.
\1f
File: history.info, Node: History Storage, Next: History Functions, Prev: Introduction to History, Up: Programming with GNU History
int flags;
} HISTORY_STATE;
- If the flags member includes 'HS_STIFLED', the history has been
-stifled.
+ If the flags member includes ‘HS_STIFLED’, the history has been
+stifled (limited to a maximum number of entries).
\1f
File: history.info, Node: History Functions, Next: History Variables, Prev: History Storage, Up: Programming with GNU History
your program.
-- Function: void using_history (void)
- Begin a session in which the history functions might be used. This
+ Begin a session that will use the history functions. This
initializes the interactive variables.
-- Function: HISTORY_STATE * history_get_history_state (void)
parameters managing the list itself.
-- Function: void add_history (const char *string)
- Place STRING at the end of the history list. The associated data
- field (if any) is set to 'NULL'. If the maximum number of history
- entries has been set using 'stifle_history()', and the new number
- of history entries would exceed that maximum, the oldest history
- entry is removed.
+ Add STRING to the end of the history list, and set the associated
+ data field (if any) to ‘NULL’. If the maximum number of history
+ entries has been set using ‘stifle_history()’, and the new number
+ of history entries would exceed that maximum, this removes the
+ oldest history entry.
-- Function: void add_history_time (const char *string)
Change the time stamp associated with the most recent history entry
to STRING.
-- Function: HIST_ENTRY * remove_history (int which)
- Remove history entry at offset WHICH from the history. The removed
- element is returned so you can free the line, data, and containing
- structure.
+ Remove the history entry at offset WHICH from the history list.
+ This returns the removed element so you can free the line, data,
+ and containing structure. Since the data is private to your
+ application, the History library doesn't know how to free it, if
+ necessary.
-- Function: histdata_t free_history_entry (HIST_ENTRY *histent)
Free the history entry HISTENT and any history library private data
*line, histdata_t data)
Make the history entry at offset WHICH have LINE and DATA. This
returns the old entry so the caller can dispose of any
- application-specific data. In the case of an invalid WHICH, a
- 'NULL' pointer is returned.
+ application-specific data. In the case of an invalid WHICH, this
+ returns ‘NULL’.
-- Function: void clear_history (void)
Clear the history list by deleting all the entries.
-- Function: int unstifle_history (void)
Stop stifling the history. This returns the previously-set maximum
- number of history entries (as set by 'stifle_history()'). The
+ number of history entries (as set by ‘stifle_history()’). The
value is positive if the history was stifled, negative if it
wasn't.
individual list entries.
-- Function: HIST_ENTRY ** history_list (void)
- Return a 'NULL' terminated array of 'HIST_ENTRY *' which is the
+ Return a ‘NULL’ terminated array of ‘HIST_ENTRY *’ which is the
current input history. Element 0 of this list is the beginning of
- time. If there is no history, return 'NULL'.
+ time. Return ‘NULL’ if there is no history.
-- Function: int where_history (void)
- Returns the offset of the current history element.
+ Return the offset of the current history entry.
-- Function: HIST_ENTRY * current_history (void)
Return the history entry at the current position, as determined by
- 'where_history()'. If there is no entry there, return a 'NULL'
- pointer.
+ ‘where_history()’. If there is no entry there, return ‘NULL’.
-- Function: HIST_ENTRY * history_get (int offset)
Return the history entry at position OFFSET. The range of valid
- values of OFFSET starts at 'history_base' and ends at
+ values of OFFSET starts at ‘history_base’ and ends at
HISTORY_LENGTH - 1 (*note History Variables::). If there is no
- entry there, or if OFFSET is outside the valid range, return a
- 'NULL' pointer.
+ entry there, or if OFFSET is outside the valid range, return
+ ‘NULL’.
-- Function: time_t history_get_time (HIST_ENTRY *entry)
Return the time stamp associated with the history entry ENTRY. If
-- Function: HIST_ENTRY * previous_history (void)
Back up the current history offset to the previous history entry,
and return a pointer to that entry. If there is no previous entry,
- return a 'NULL' pointer.
+ return ‘NULL’.
-- Function: HIST_ENTRY * next_history (void)
If the current history offset refers to a valid history entry,
increment the current history offset. If the possibly-incremented
history offset refers to a valid history entry, return a pointer to
- that entry; otherwise, return a 'BNULL' pointer.
+ that entry; otherwise, return ‘NULL’.
\1f
File: history.info, Node: Searching the History List, Next: Managing the History File, Prev: Moving Around the History List, Up: History Functions
2.3.5 Searching the History List
--------------------------------
-These functions allow searching of the history list for entries
-containing a specific string. Searching may be performed both forward
-and backward from the current history position. The search may be
-"anchored", meaning that the string must match at the beginning of the
-history entry.
+These functions search the history list for entries containing a
+specific string. Searching may be performed both forward and backward
+from the current history position. The search may be “anchored”,
+meaning that the string must match at the beginning of a history entry.
-- Function: int history_search (const char *string, int direction)
Search the history for STRING, starting at the current history
offset. If DIRECTION is less than 0, then the search is through
previous entries, otherwise through subsequent entries. If STRING
is found, then the current history index is set to that history
- entry, and the value returned is the offset in the line of the
- entry where STRING was found. Otherwise, nothing is changed, and a
- -1 is returned.
+ entry, and ‘history_search’ returns the offset in the line of the
+ entry where STRING was found. Otherwise, nothing is changed, and
+ this returns -1.
-- Function: int history_search_prefix (const char *string, int
direction)
Search the history for STRING, starting at the current history
- offset. The search is anchored: matching lines must begin with
- STRING. If DIRECTION is less than 0, then the search is through
- previous entries, otherwise through subsequent entries. If STRING
- is found, then the current history index is set to that entry, and
- the return value is 0. Otherwise, nothing is changed, and a -1 is
- returned.
+ offset. The search is anchored: matching history entries must
+ begin with STRING. If DIRECTION is less than 0, then the search is
+ through previous entries, otherwise through subsequent entries. If
+ STRING is found, then the current history index is set to that
+ entry, and the return value is 0. Otherwise, nothing is changed,
+ and this returns -1.
-- Function: int history_search_pos (const char *string, int direction,
int pos)
Search for STRING in the history list, starting at POS, an absolute
index into the list. If DIRECTION is negative, the search proceeds
- backward from POS, otherwise forward. Returns the absolute index
- of the history element where STRING was found, or -1 otherwise.
+ backward from POS, otherwise forward. Returns the index in the
+ history list of the history element where STRING was found, or -1
+ otherwise.
\1f
File: history.info, Node: Managing the History File, Next: History Expansion, Prev: Searching the History List, Up: History Functions
This section documents the functions for managing a history file.
-- Function: int read_history (const char *filename)
- Add the contents of FILENAME to the history list, a line at a time.
- If FILENAME is 'NULL', then read from '~/.history'. Returns 0 if
- successful, or 'errno' if not.
+ Add the contents of FILENAME to the history list, one entry at a
+ time. If FILENAME is ‘NULL’, this reads from ‘~/.history’, if it
+ exists. This attempts to determine whether the history file
+ includes timestamp information, and assigns timestamps to the
+ history entries it reads if so. Returns 0 if successful, or
+ ‘errno’ if not.
-- Function: int read_history_range (const char *filename, int from,
int to)
Read a range of lines from FILENAME, adding them to the history
list. Start reading at line FROM and end at TO. If FROM is zero,
- start at the beginning. If TO is less than FROM, then read until
- the end of the file. If FILENAME is 'NULL', then read from
- '~/.history'. Returns 0 if successful, or 'errno' if not.
+ start at the beginning. If TO is less than FROM, this reads until
+ the end of the file. This attempts to determine whether the
+ history file includes timestamp information, and assigns timestamps
+ to the history entries it reads if so. If FILENAME is ‘NULL’, this
+ reads from ‘~/.history’, if it exists. Returns 0 if successful, or
+ ‘errno’ if not.
-- Function: int write_history (const char *filename)
Write the current history to FILENAME, overwriting FILENAME if
- necessary. If FILENAME is 'NULL', then write the history list to
- '~/.history'. Returns 0 on success, or 'errno' on a read or write
- error.
+ necessary. This writes timestamp information if the
+ ‘history_write_timestamps’ variable is set to a non-zero value. If
+ FILENAME is ‘NULL’, then write the history list to ‘~/.history’.
+ Returns 0 on success, or ‘errno’ on a read or write error.
-- Function: int append_history (int nelements, const char *filename)
- Append the last NELEMENTS of the history list to FILENAME. If
- FILENAME is 'NULL', then append to '~/.history'. Returns 0 on
- success, or 'errno' on a read or write error.
+ Append the last NELEMENTS of the history list to FILENAME. This
+ writes timestamp information if the ‘history_write_timestamps’
+ variable is set to a non-zero value. If FILENAME is ‘NULL’, then
+ append to ‘~/.history’. Returns 0 on success, or ‘errno’ on a read
+ or write error.
-- Function: int history_truncate_file (const char *filename, int
nlines)
Truncate the history file FILENAME, leaving only the last NLINES
- lines. If FILENAME is 'NULL', then '~/.history' is truncated.
- Returns 0 on success, or 'errno' on failure.
+ lines. If FILENAME is ‘NULL’, this truncates ‘~/.history’.
+ Returns 0 on success, or ‘errno’ on failure.
\1f
File: history.info, Node: History Expansion, Prev: Managing the History File, Up: History Functions
These functions implement history expansion.
- -- Function: int history_expand (char *string, char **output)
+ -- Function: int history_expand (const char *string, char **output)
Expand STRING, placing the result into OUTPUT, a pointer to a
string (*note History Interaction::). Returns:
- '0'
+ ‘0’
If no expansions took place (or, if the only change in the
text was the removal of escape characters preceding the
history expansion character);
- '1'
+ ‘1’
if expansions did take place;
- '-1'
+ ‘-1’
if there was an error in expansion;
- '2'
+ ‘2’
if the returned line should be displayed, but not executed, as
- with the ':p' modifier (*note Modifiers::).
+ with the ‘:p’ modifier (*note Modifiers::).
- If an error occurred in expansion, then OUTPUT contains a
+ If an error occurred during expansion, then OUTPUT contains a
descriptive error message.
-- Function: char * get_history_event (const char *string, int *cindex,
int qchar)
Returns the text of the history event beginning at STRING +
- *CINDEX. *CINDEX is modified to point to after the event
- specifier. At function entry, CINDEX points to the index into
- STRING where the history event specification begins. QCHAR is a
- character that is allowed to end the event specification in
- addition to the "normal" terminating characters.
+ *CINDEX. Modifies *CINDEX to point to after the event specifier.
+ At function entry, CINDEX points to the index into STRING where the
+ history event specification begins. QCHAR is a character that is
+ allowed to end the event specification in addition to the "normal"
+ terminating characters.
-- Function: char ** history_tokenize (const char *string)
Return an array of tokens parsed out of STRING, much as the shell
might. The tokens are split on the characters in the
HISTORY_WORD_DELIMITERS variable, and shell quoting conventions are
- obeyed.
+ obeyed as described below.
-- Function: char * history_arg_extract (int first, int last, const
char *string)
Extract a string segment consisting of the FIRST through LAST
- arguments present in STRING. Arguments are split using
- 'history_tokenize'.
+ arguments present in STRING. This splits STRING into arguments
+ using ‘history_tokenize’.
\1f
File: history.info, Node: History Variables, Next: History Programming Example, Prev: History Functions, Up: Programming with GNU History
-- Variable: int history_max_entries
The maximum number of history entries. This must be changed using
- 'stifle_history()'.
+ ‘stifle_history()’.
-- Variable: int history_write_timestamps
If non-zero, timestamps are written to the history file, so they
The current timestamp format uses the value of HISTORY_COMMENT_CHAR
to delimit timestamp entries in the history file. If that variable
- does not have a value (the default), timestamps will not be
- written.
+ does not have a value (the default), this will not write
+ timestamps.
-- Variable: char history_expansion_char
- The character that introduces a history event. The default is '!'.
+ The character that introduces a history event. The default is ‘!’.
Setting this to 0 inhibits history expansion.
-- Variable: char history_subst_char
The character that invokes word substitution if found at the start
- of a line. The default is '^'.
+ of a line. The default is ‘^’.
-- Variable: char history_comment_char
- During tokenization, if this character is seen as the first
+ During tokenization, if this character appears as the first
character of a word, then it and all subsequent characters up to a
newline are ignored, suppressing history expansion for the
remainder of the line. This is disabled by default.
-- Variable: char * history_word_delimiters
- The characters that separate tokens for 'history_tokenize()'. The
- default value is '" \t\n()<>;&|"'.
+ The characters that separate tokens for ‘history_tokenize()’. The
+ default value is ‘" \t\n()<>;&|"’.
-- Variable: char * history_search_delimiter_chars
The list of additional characters which can delimit a history
- search string, in addition to space, TAB, ':' and '?' in the case
+ search string, in addition to space, TAB, ‘:’ and ‘?’ in the case
of a substring search. The default is empty.
-- Variable: char * history_no_expand_chars
The list of characters which inhibit history expansion if found
immediately following HISTORY_EXPANSION_CHAR. The default is
- space, tab, newline, carriage return, and '='.
+ space, tab, newline, carriage return, and ‘=’.
-- Variable: int history_quotes_inhibit_expansion
- If non-zero, double-quoted words are not scanned for the history
- expansion character or the history comment character. The default
+ If non-zero, the history expansion code implements shell-like
+ quoting: single-quoted words are not scanned for the history
+ expansion character or the history comment character, and
+ double-quoted words may have history expansion performed, since
+ single quotes are not special within double quotes. The default
value is 0.
+ -- Variable: int history_quoting_state
+ An application may set this variable to indicate that the current
+ line being expanded is subject to existing quoting. If set to ‘'’,
+ the history expansion function will assume that the line is
+ single-quoted and inhibit expansion until it reads an unquoted
+ closing single quote; if set to ‘"’, history expansion will assume
+ the line is double quoted until it reads an unquoted closing double
+ quote. If set to 0, the default, the history expansion function
+ will assume the line is not quoted and treat quote characters
+ within the line as described above. This is only effective if
+ HISTORY_QUOTES_INHIBIT_EXPANSION is set. This is intended for use
+ by applications like Bash which allow quoted strings to span
+ multiple lines.
+
-- Variable: rl_linebuf_func_t * history_inhibit_expansion_function
This should be set to the address of a function that takes two
- arguments: a 'char *' (STRING) and an 'int' index into that string
+ arguments: a ‘char *’ (STRING) and an ‘int’ index into that string
(I). It should return a non-zero value if the history expansion
starting at STRING[I] should not be performed; zero if the
expansion should be done. It is intended for use by applications
like Bash that use the history expansion character for additional
- purposes. By default, this variable is set to 'NULL'.
+ purposes. By default, this variable is set to ‘NULL’.
\1f
File: history.info, Node: History Programming Example, Prev: History Variables, Up: Programming with GNU History
#include <stdio.h>
#include <readline/history.h>
- main (argc, argv)
- int argc;
- char **argv;
+ int
+ main (int argc, char **argv)
{
char line[1024], *t;
int len, done = 0;
Version 1.3, 3 November 2008
- Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
+ Copyright © 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
<http://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
0. PREAMBLE
The purpose of this License is to make a manual, textbook, or other
- functional and useful document "free" in the sense of freedom: to
+ functional and useful document “free” in the sense of freedom: to
assure everyone the effective freedom to copy and redistribute it,
with or without modifying it, either commercially or
noncommercially. Secondarily, this License preserves for the
* anchored search: Searching the History List.
(line 10)
* event designators: Event Designators. (line 6)
-* history events: Event Designators. (line 8)
+* history events: Event Designators. (line 10)
* history expansion: History Interaction. (line 6)
* History Searching: Searching the History List.
(line 6)
* add_history_time: History List Management.
(line 16)
* append_history: Managing the History File.
- (line 28)
+ (line 35)
* clear_history: History List Management.
- (line 37)
+ (line 39)
* current_history: Information About the History List.
(line 17)
* free_history_entry: History List Management.
- (line 25)
+ (line 27)
* get_history_event: History Expansion. (line 26)
* history_arg_extract: History Expansion. (line 41)
* history_base: History Variables. (line 9)
* history_expand: History Expansion. (line 8)
* history_expansion_char: History Variables. (line 29)
* history_get: Information About the History List.
- (line 22)
+ (line 21)
* history_get_history_state: Initializing History and State Management.
(line 14)
* history_get_time: Information About the History List.
- (line 29)
-* history_inhibit_expansion_function: History Variables. (line 62)
+ (line 28)
+* history_inhibit_expansion_function: History Variables. (line 79)
* history_is_stifled: History List Management.
- (line 50)
+ (line 52)
* history_length: History Variables. (line 12)
* history_list: Information About the History List.
(line 9)
* history_max_entries: History Variables. (line 15)
* history_no_expand_chars: History Variables. (line 52)
* history_quotes_inhibit_expansion: History Variables. (line 57)
+* history_quoting_state: History Variables. (line 65)
* history_search: Searching the History List.
- (line 12)
+ (line 11)
* history_search_delimiter_chars: History Variables. (line 47)
* history_search_pos: Searching the History List.
- (line 31)
+ (line 30)
* history_search_prefix: Searching the History List.
- (line 21)
+ (line 20)
* history_set_history_state: Initializing History and State Management.
(line 18)
* history_set_pos: Moving Around the History List.
* history_subst_char: History Variables. (line 33)
* history_tokenize: History Expansion. (line 35)
* history_total_bytes: Information About the History List.
- (line 33)
+ (line 32)
* history_truncate_file: Managing the History File.
- (line 33)
+ (line 42)
* history_word_delimiters: History Variables. (line 43)
* history_write_timestamps: History Variables. (line 19)
* next_history: Moving Around the History List.
* read_history: Managing the History File.
(line 9)
* read_history_range: Managing the History File.
- (line 14)
+ (line 17)
* remove_history: History List Management.
(line 20)
* replace_history_entry: History List Management.
- (line 30)
+ (line 32)
* stifle_history: History List Management.
- (line 40)
+ (line 42)
* unstifle_history: History List Management.
- (line 44)
+ (line 46)
* using_history: Initializing History and State Management.
(line 10)
* where_history: Information About the History List.
(line 14)
* write_history: Managing the History File.
- (line 22)
+ (line 28)
\1f
Tag Table:
-Node: Top\7f849
-Node: Using History Interactively\7f1494
-Node: History Interaction\7f2002
-Node: Event Designators\7f3426
-Node: Word Designators\7f4565
-Node: Modifiers\7f6202
-Node: Programming with GNU History\7f7425
-Node: Introduction to History\7f8169
-Node: History Storage\7f9859
-Node: History Functions\7f10994
-Node: Initializing History and State Management\7f11983
-Node: History List Management\7f12795
-Node: Information About the History List\7f15089
-Node: Moving Around the History List\7f16703
-Node: Searching the History List\7f17796
-Node: Managing the History File\7f19721
-Node: History Expansion\7f21541
-Node: History Variables\7f23451
-Node: History Programming Example\7f26521
-Node: GNU Free Documentation License\7f29198
-Node: Concept Index\7f54370
-Node: Function and Variable Index\7f55075
+Node: Top\7f847
+Node: Using History Interactively\7f1492
+Node: History Interaction\7f2000
+Node: Event Designators\7f4714
+Node: Word Designators\7f6216
+Node: Modifiers\7f8527
+Node: Programming with GNU History\7f10178
+Node: Introduction to History\7f10922
+Node: History Storage\7f12654
+Node: History Functions\7f13834
+Node: Initializing History and State Management\7f14823
+Node: History List Management\7f15626
+Node: Information About the History List\7f18057
+Node: Moving Around the History List\7f19670
+Node: Searching the History List\7f20750
+Node: Managing the History File\7f22696
+Node: History Expansion\7f25166
+Node: History Variables\7f27139
+Node: History Programming Example\7f31281
+Node: GNU Free Documentation License\7f33935
+Node: Concept Index\7f59110
+Node: Function and Variable Index\7f59815
\1f
End Tag Table
+
+\1f
+Local Variables:
+coding: utf-8
+End:
-This is pdfTeX, Version 3.14159265-2.6-1.40.18 (TeX Live 2017/MacPorts 2017_2) (preloaded format=etex 2017.7.5) 2 JAN 2018 10:55
+This is pdfTeX, Version 3.141592653-2.6-1.40.26 (TeX Live 2024/MacPorts 2024.70613_0) (preloaded format=etex 2024.4.9) 12 OCT 2024 13:36
entering extended mode
restricted \write18 enabled.
file:line:error style messages enabled.
%&-line parsing enabled.
-**\catcode126=12 \def\normaltilde{~}\catcode126=13 \let~\normaltilde \input ./
-./history.texi
-(././history.texi (./texinfo.tex Loading texinfo [version 2015-11-22.14]:
+**\nonstopmode \input ././history.texi
+(././history.texi
+(/usr/local/src/bash/bash-20241011/lib/readline/doc/texinfo.tex
+Loading texinfo [version 2015-11-22.14]:
\outerhsize=\dimen16
\outervsize=\dimen17
\cornerlong=\dimen18
\boxB=\box20
\countA=\count32
\nopdfimagehelp=\toks20
-
-fonts,
+ fonts,
\sffam=\fam8
\textleading=\dimen26
markup,
\fontdepth=\count33
glyphs,
\errorbox=\box21
- page headings,
+
+page headings,
\titlepagetopglue=\skip20
\titlepagebottomglue=\skip21
\evenheadline=\toks21
\doublecolumntopgap=\dimen34
\savedtopmark=\toks26
\savedfirstmark=\toks27
-
-sectioning,
+ sectioning,
\unnumberedno=\count38
\chapno=\count39
\secno=\count40
\nonfillparindent=\dimen39
\tabw=\dimen40
\verbbox=\box25
- defuns,
+
+defuns,
\defbodyindent=\skip39
\defargsindent=\skip40
\deflastargmargin=\skip41
texinfo.tex: doing @include of version.texi
-(./version.texi) [1] [2] (./history.toc) [-1]
+(/usr/local/src/bash/bash-20241011/lib/readline/doc/version.texi) [1] [2]
+(/usr/local/src/bash/bash-20241011/lib/readline/doc/history.toc) [-1]
texinfo.tex: doing @include of hsuser.texi
- (./hsuser.texi Chapter 1
+
+(/usr/local/src/bash/bash-20241011/lib/readline/doc/hsuser.texi Chapter 1
\openout0 = `history.toc'.
-(./history.aux)
+(/usr/local/src/bash/bash-20241011/lib/readline/doc/history.aux)
\openout1 = `history.aux'.
@cpindfile=@write2
@numsubsecentry{Event Designators}{1.1.1}{Event Designators}{1}
] [2
@numsubsecentry{Word Designators}{1.1.2}{Word Designators}{2}
-@numsubsecentry{Modifiers}{1.1.3}{Modifiers}{2}
])
texinfo.tex: doing @include of hstech.texi
- (./hstech.texi Chapter 2 [3] [4
+ (/usr/local/src/bash/bash-20241011/lib/readline/doc/hstech.texi Chapter 2
+[3
+@numsubsecentry{Modifiers}{1.1.3}{Modifiers}{3}
+] [4
@numchapentry{Programming with GNU History}{2}{Programming with GNU History}{4}
@numsecentry{Introduction to History}{2.1}{Introduction to History}{4}
] [10
@numsecentry{History Programming Example}{2.5}{History Programming Example}{10}
-]) Appendix A [11]
+] [11]) Appendix A [12]
texinfo.tex: doing @include of fdl.texi
- (./fdl.texi [12
-@appentry{GNU Free Documentation License}{A}{GNU Free Documentation License}{12
+
+(/usr/local/src/bash/bash-20241011/lib/readline/doc/fdl.texi [13
+@appentry{GNU Free Documentation License}{A}{GNU Free Documentation License}{13
}
-] [13] [14] [15] [16] [17] [18]) Appendix B [19] Appendix C [20
-@appentry{Concept Index}{B}{Concept Index}{20}
-] [21
-@appentry{Function and Variable Index}{C}{Function and Variable Index}{21}
+] [14] [15] [16] [17] [18] [19]) Appendix B [20] Appendix C [21
+@appentry{Concept Index}{B}{Concept Index}{21}
+] [22
+@appentry{Function and Variable Index}{C}{Function and Variable Index}{22}
] )
Here is how much of TeX's memory you used:
- 3182 strings out of 497114
- 31680 string characters out of 6207173
- 79568 words of memory out of 5000000
- 4354 multiletter control sequences out of 15000+600000
+ 3183 strings out of 495850
+ 32438 string characters out of 6172145
+ 89088 words of memory out of 5000000
+ 4539 multiletter control sequences out of 15000+600000
32778 words of font info for 114 fonts, out of 8000000 for 9000
- 51 hyphenation exceptions out of 8191
- 19i,6n,17p,362b,772s stack positions out of 5000i,500n,10000p,200000b,80000s
+ 701 hyphenation exceptions out of 8191
+ 19i,6n,17p,307b,772s stack positions out of 10000i,1000n,20000p,200000b,200000s
-Output written on history.dvi (24 pages, 69556 bytes).
+Output written on history.dvi (25 pages, 75220 bytes).
%!PS-Adobe-2.0
-%%Creator: dvips(k) 5.997 Copyright 2017 Radical Eye Software
+%%Creator: dvips(k) 2024.1 (TeX Live 2024) Copyright 2024 Radical Eye Software
%%Title: history.dvi
-%%CreationDate: Tue Jan 2 15:55:40 2018
-%%Pages: 24
+%%CreationDate: Sat Oct 12 17:36:36 2024
+%%Pages: 25
%%PageOrder: Ascend
%%BoundingBox: 0 0 596 842
%%DocumentFonts: CMBX12 CMR10 CMTT10 CMSY10 CMCSC10 CMSL10 CMSLTT10
%DVIPSWebPage: (www.radicaleye.com)
%DVIPSCommandLine: dvips -D 300 -o history.ps history.dvi
%DVIPSParameters: dpi=300
-%DVIPSSource: TeX output 2018.01.02:1055
+%DVIPSSource: TeX output 2024.10.12:1336
%%BeginProcSet: tex.pro 0 0
%!
/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
dup 12 /fi put
dup 13 /fl put
dup 14 /ffi put
+dup 33 /exclam put
dup 34 /quotedblright put
dup 39 /quoteright put
dup 40 /parenleft put
dup 57 /nine put
dup 58 /colon put
dup 59 /semicolon put
+dup 63 /question put
dup 65 /A put
dup 66 /B put
dup 67 /C put
6744856E689A479CB3A8BC081F33CB06755926204981DC0A45B3ACC18F6865BB
EE2C50DB43B62E3630FC1D9B1FFB3BFFAA6D0A20C0381ADF48E4D916BEE85BA2
BB40F538F55C11D50F882B73913840B45161262BC8B0012694C3EF26452F9B77
-2CD7C7AD6BFEEAFE31C8A721C2D46AA00C10681BA9970D09F1E10DDB693AFE84
-246AB18279A2B24E5B50A2FF6337B7B1039FFDD4B00ED3667B5F2F7BC2786D2F
-525A0E82234B30711AA835EAEAC2E404915FC7EC0081B194765032708B5E11CE
-EF6868298CD26E5B9EF345BFA3EC2911E2B96A0B40AEAB95BDCCEE38F5EC170D
-3BFB792D2DDA7E57BD2FB7669484EF9322A1BEE009594901095DE2BA9A15A0EE
-4DD77404CEF16EA6C31FC04A8FBDEF27B9FC1AD3264388B0B12D8E476305B912
-30B51624D4605C45B514473F327DC3EE8BA69032A95301CF714F225A92C253D0
-D943C80B9CD0524C5B87A8D052D2E47A9725EF869D3B89097CC13CA9BC695FF8
-A9468004450A76A13B7EE78A03CC18917EC44036C2DD237344E594569B8F2DDB
-21F7619180B8C760741961CCBE54FD6DD07C4CF73B346099234A1EFFEFC88574
-6324E4232BA18A38EC9F0B780C298877EF0AF42C1EBC2EB52DB64A1E1E352503
-36AA29953A073B864FCB31BA938A4163D000A159ED4D345331FA1EB4009CFF67
-1D107BABA6AAA48075C6C50BC7683929EC146594E55B01D4F5B582328284068B
-2AB05CE92EEE1DF4557DFC8FEF287CB7F961F4F1828EA48B0ACF5C63E1EEC8FB
-6A0EFF132268B7DDF7B465D4A21B05993F4A4CFD168A700D04A7303BC2C00391
-392C3FF97E770E6FAFFFE501242B20B4F7B6C17331C64BDBA3E59695E176CC79
-E7632AC6D2E920AA048BD1EBCF9909D8C314D2EF3CFC5CF88D8570BAA814D467
-96D86CF4415C5B739FA6FE7B4C228F06268D28EE33381982E7B005C26D2604B3
-AA363CA4732B9BB0E4D4EE50556D777258A7BC232087C9F00B0D5EF70270B40D
-3071E14E4E5AB5AF1C686C5A7C268D36A0787DC9300D4CFA004F89A73FFEF780
-E6BBC957E31B764159C3ADF752E6E1A6C3B5B855F8A483497A347B601E3C8DE0
-362D76B715916113CBD2D3765197074104C7E17B87670CDD5C227A1467BD678A
-BE442F196034B02132850CCB77143C2873447FDB8767C462C63916D9D4A13198
-B7910E1B274B27644DFB2E8372C8CD55E6E2AA5CA952A079E1E6389927495921
-CA39D69ECB4DF382FD2DC213EE382BA1A48CA886CB6AEF2B0C50CAB47B1FC40B
-2C95E13190C92480439E3C56188D162C294F24987AAF4E15E8FF7ABBFF2A12FD
-AEB884FCFFD671EEB94CC075B815C6A45549EC23DB85923F4C37221641B75CE0
-C5C8FA8403C2C9FFCB66CC74C5160D6C7042DDFF33A954DD01C8E21B21F8F364
-F6FC735507D0DB5F68F2D8B520AAA7E0F1D503211339F9466006E9A148F39874
-A1488F1F0458409D442D2BF5935A655AD4656A8411543F58C63DFF9C4FE56256
-7F9F876B56BEB208F9DCA363D2E0F7DF3CCAFD5F9674675BF622CBFC2D1CEFA2
-7A5323971101D3641E99D84197B00D67436843EB9CF74C273062159C361A07C6
-E3F1E0E4666ABFD5C9AA8F914F05D02EE1906FCB66E421C73243257170617FEC
-2F02D5A7F3347CC0D290E52FA815C4D5D2A16A4D4A5E0B50165B0C5C77B675F1
-0EF343D70813346EC4D7384A9D9A091984AF29C810F8C3D4247D37F91C5DA967
-747890DFFB25E67F6FB766168487AE8BD8E49C55BC1B68B831E3F510BA1DA3A3
-9F810B865FA98AF89696CF7489BACBC1033A1C929023588E9E03FAD6D901DC52
-A2F5EB74DB679A16DE42F7B47BCBE16617EDC7328A2CEB2C23733D98ED753C66
-502DD2FC75CE2905A429B5B56C62C1C0FCE17144D96E0C615E7FEA48EFA05D9D
-344ED266BD96C3296D6005D289228C62D572167E369AC65724E0E62AEAF608C3
-423FD37E586D41B2AF9B10E0A36312AC1A6F61418BEBF528932FE61881636837
-47CFEDDFEB25F7FC156AC7D6E78D608A91270FF6D1D510E8CD61C289F3E7960C
-B6093B333A0CA3CB8BE51107C5C1C085B3CF6D6F61379420AC1E5D9A3FABF084
-80D6C719D93BF74A99D681726C81F9F83949E06A560F3B3905C0766134533256
-6CEECBBE3EDC220193964706085526386391260838C2E885C88F882E29F31F69
-149CB1B4B788BE82AEBD32B5A8F07D1F537D85077B4BD1FF945EED4BB41B79FC
-CA0B25D1D761129A6043D701AB1F6655C06DF7B0891C3C5224977B9464A6A794
-5FAC6547F7548402420976CA3A644E5A7CD7F64974B71872B02756FF6A135EE7
-BA60B9974A0A2CFA4E46D91B929A3A0DECDF44C39CC06BC2105538856718CF59
-59B1D9BD88735ED4D83C17A67031178B43CFEB4C301E551D708F5F08E80E5A1E
-5579CDA06C9902E412052CE7714A8BE29DF9911F556899F819A7FC2565522182
-20918E8C476DFC00F79BCC4248BCAC6615891C3115B30A39B365044CDA0AB26F
-C8966DB46FB9FB7B7BB37C48B7CC4852C8C05A57D92ED8E6AAE6EE5A60BC81B8
-C0B22E5E74610495094F12BA6D60DA3190C4CAC7F46D740005264BDBCDE61FB2
-50B8DF1CBF41195E616F4595F7860F1538363D529E3E3FD2D408B56CE034521F
-3D9AD6C30174D0AC1A9F9151C8C8DB6E7624290CEB82632679BD0A01EC30B3CF
-FCE72F32F4443E137EA554CDEF84B62CFE21A5E8BFB2EE52C87CBD603C8E0FC7
-35A9ADA5E49FC4C7E3F1538C84761186C045B9F11074F8061F0F4BE061D22C85
-2BDC140F6CCD858B1A4E9AE9444B4EE3DAEFF4E3760A8B851ED3B9780F990595
-36210570D82E9DE83AFB3A20D0D955F69FD838B6F9F785231A84D8BF9F434665
-CB62D518CD5F4623711E022DF76D2CF20202FBA15A1D1070FEA87D6BE954DEE0
-370280ED09237334FCA7AFB1A0CBC9A153A25A929BEF57B202A5889958A9AEDA
-535781A11DA8E2BB5C885BCB83053BEDE8436846C7B54B41703839F861F95D5E
-3C34C4DC8FAADB39D20DC53F642A28B92D0BF1B02876E348B088AC9B2C55DB06
-808BA40658ABE50D6956C9B1201C8D3D97CF9ACBE1FCDB7E7C02D1BB8D87AE61
-2902D77900C11D1DA6CE808C425A7EC0B31BBDC690E98A09AB656294A1B17E00
-2D12DDCAA5E0F1B44EC9D7CDFB5E916045F5CE852D3FF3E8D421A11356EB4392
-F7DA22AFA6C18C7F507F5D8892E8F1DF11E5CC965A61D732F12EFA8339951645
-CC3AF8C3EC88C5B372729EBBD3530439E0E8AE43B43CF57A5258AE8AB259EB71
-9E1F057688B110D4177CF54B1D56D2EAB6B1DB603D6536EA9B9EA11DD57E7F3E
-DB574B05043CEDD701DF8C0982EE726187EAF637ADC279BF7C83A244D3EA9800
-F9797A4D3E4D5F6669B49D2B37CC9BB1C9244B54DD62A5C4BE533DF46F618D3B
-9FE2203DC6C75B25AD6B49B2A760D3604F156ACD80CF5458FEEA64E243B2E527
-E750720E97CCFFE2322734D5DD0FB1A8FD8FA77AD87AA1C8EA1B023F70BCCF92
-624F9A6B0B27B5C8A5AD21D8C08F62BA1738359A4D78439A7A580D605929D6D7
-60790297E11930F43BA89832A2D351CAD0F77AF8BB70A2DD5DEDD4B34FCBC714
-C2BEA2C26F768EE44D27F39021F5AC95FEF199F6ACC4A2F3109E081A3AC7F42D
-1767C2A82683BED075A3293189784AC8D12F17FC3C15B83915E0425926D6069C
-16D58DCF97B1D8E1021F51C47BDB1286B5F9CB60A2B2B7D3F219F20C8651DCCF
-80B30FC5B20DD6D887BD571450A3A005F5980E90A649DEDD316A452589B2BBA4
-BE8625C231E5D4886124B24580C7795F7B3D063667F400C18150A80DEA255943
-B9BC4E1F0A0E5F5BFEF9F7322C836AE892F91A4B3291F216F99654C54BDEB5DD
-87563AEAEED8D8E65D1B60795F1011C3CC63B8FAA15B381E04E1FBC2A5BA5EC8
-B76DCA2AE3686F7D71CF0662338C5E468C0E8155715EE8DD963FA7C257214DB0
-6E523E1370D0F14165FDEF1C9D2F9DDDB4C61DC764B946DC40BB897E8A0BD7A9
-A7D9B684B5899E1A8F4CF9FF67EE19B4FCB61AA4463C5F06309C7B10A131AC21
-63E04A69A223818185F44D48ED721CCCD98737DF4BD3CF6924C6EF30372E9E38
-22B3230829B054EC1B8B42D29059AB5E706E5EBD6CAFA57502005BB170E5B471
-8BC330C11C068849A61C37E5AEDFF994D9A53E73E12D3F7BF63CD6C435055F5C
-875056658B8141B78E3E5050E3F8209CEDC015445893B5B798DED6777B98017B
-4B9766F79E20DE51B4081215A072BF3BFDA0AA741D3EAB7F35138C2B32982453
-5681A66A99A21F0663C8B559FA49AD7B854BD648335DC7B8F72EA85CEC66231B
-AE8F8FA55020FEB0FDA90055CE8255D02C0E2FCC829AEC8EFBAA08071CDD03E3
-9FE8C4F28DB460E0AE8514E319ADE43559B190D9104C78DEB8DCD9E1B2118746
-3DF257B5DA0A52F0F6F0F70352C2B1F851F14F3251A2CEF2B15590E4E80363ED
-652CEA14D0CD2FAF8CD0CD6A7888159FEFC0A3D8978F49D85DC8BFBF33FEE7B3
-C0B040618510F483EF114F46A509E86D08D9470B9A6293083E6FBD511C388D8E
-5A16B5777FC9FF933366757609163E9567B121906BAAB48B1D3CEF9D0B1028C2
-18E9B6536DDA27ACD9816D2D1D5571038F936FE496081B801485F9CCAFC7EE0A
-34D2BF741863A5F639D9D4E123EE90AEB355314E4E38F3F4C243CAD3112A0504
-48BBD089B189203DF7ED4933819A0C1D57ED8AE20B2B15F19F8A0CFD927CAC50
-116B04C25A4E5B20C4C5864A8DCF8CC9BDF5CEA59D1EC52EF62CB642A8FCF1C9
-3E036AA4DD6F4ADBA4F8CD013C622F831397B8640936910C6D1F82ACC6451C68
-760E14BF5B7845762DFE0037BABBE5046C5F3CE3874702EE51D1A463F3B86C69
-7C758A4B1960E1A796F07859A9B1860AE5BC7D5703E63A37B9334D67613241C2
-5B606439A6AB29FA7386317DB876D26FAC05188B4C59672F2CD9A750A0E70CD5
-AD69A8609AB0C78F625E7749C770391D5426D9C3CD1CD7D37445D9718C07A37B
-5BECECE3E6F3147731D5C12C4946F88A7C82500F8C495FFA7E2FFF6A9C2F0BFA
-8EF861E6C369C8DF969B5FB0F02CAC74E8E080B16BEF1CF0D1A81E90FA1612F1
-FCF086961FDD981A8698FBDCE44A80E4290B7B553D9F46BDF6E346627437903D
-499C80A29BE6E7A2C03D943D23C41F1B85C92FE922EE3A3E0601565564C55116
-17F01B2DC9FACA12AC59950EA410D5533B0C31D89FA68D07E9FF1139554C7920
-FF84CB51E13B7FA3EE6A32DDD9FCC192B576A871CBC9E04C5C66ABED560AFF24
-6D6271979BC7D04F7287E32F52B1D2DF60B7D7A53A7D776FC36D70E9C6F54E97
-44F15C5ABF2547DB40EC913EF0B9597A721563C3664E74E7283E9030CAE36B7A
-B14E781BC772691347ED48EBAFDF23EDC452EE8A118A840A185B7C1DFB7F3AF1
-A2D64EFBA1C9F662A35F3B46CC8E2D7E7A7F63F9BFEBB6E4A6DB8FF0BDC83E9A
-A70438435C3B8A780F7F92578501656FF963ED66A73921E014A46385450D26F5
-B73EDA0630201BEE50325B0F76B55E77BC55F4401251D083225EA5777F42A7C7
-748FAE7C22E6A17E04BA9F6D451B35A63DA6F3D80B0365E159B3E993E0DAA242
-2212784C9651F9A0766F473DF743748FAF491CB69728C2473ECC5524E0F2997C
-2650BC1F945EDA4CE833980E706C4D413F7929804A0B1D182E26052876D6B836
-01284296115233D90D2D0FE83317D4AA206A67207BD899DAC1D726C937A34193
-F0B6EEDECB391C6434144275295014BA4283D4346BCC495AE3EC6EE9C4FA7711
-BB6004D39D7BE17FAF0241F2798C36C451BCC4227899837FC244BEC3432ADE1D
-9E4F47F45E9B1D2C832FEF6896C92A207AAED7AA924520D096F983D66DCAF476
-83A2F6F1844E7EC5195EDD3E5FBD0FBAABACE5D13BF754BB2B0CC8FC633D83BA
-3BB65BD9837B109AC1B5B255298E6B65AE4CEC0FFE24DDC3D1883FB0D6F8FE65
-94D0A898278E0313303CF7DE2E37BE0152A1D4CDBA04ED61D54555B1B107D9CC
-C08C89BD2A19050191867EFAB8FD582226B03D7ACFA97C6D404BF99F39EAB7AA
-9AA9397B57CD7CAC1B338C21579A593D7DE1241E6F77366CAB10C3FAA772C663
-BD1051F9D791A84C35196E74D28D342553D344199CBEF83D3A6ABF05A4779B16
-EAC70F7CEE167132D04BE5F56F8F20927DC3C7A20239AC6AAC2B57BBC83174D6
-25F59228ED58B5D492B16ACF3EECA04054F59247A8E318B6F5A09F0A8B3820B7
-2CE711056E3A3ED9300B6F2DFE2C665D7C3351D40A779FEDA09B406E804BFFDB
-9831478F237DAF6352CADC53D6AE85A14E5FC7C0C1BA4009FF962FAA52499506
-C6F3C18BD4C13C1272D844EE151CB5A0DB0188AB7FA2DD47A6A2CE8554A7CB82
-C0CC30593F062451363778FD5A8D39C60835825D63CF3BEF323C8CBEF3055F61
-294FE558C7542977A3C520DE15A984C6D82041E06C356FD7BE75D601CB95816F
-F05AA3F53144B7D768F6732339FB8E6A068F8E021C1BDDB26572385FD1B3794A
-0E1C780576819CA271C78010D8416F6B19912227CE781CDF6AFEC335138203D0
-ADEA0617451CE0BEB024CDE135922C72FE0932F10589F0FF9F1DA721D32B1583
-8D032EB9049E4AC34B3AF16C4DC1A85CDD8B047035ED7D50CF8D9D02621BF6C8
-2CCAA23DE753C7B0B8818B68D625F44A54689C0B1CA36FA7C68A567FDAB813A1
-8B34DFF1300D5E42067F51ADDF7DC9BEC7D4376D304A417741E17AE427639676
-407472CBFAABB5AB329AA7CCF130B3EC6DD588A1F44409FD239238B1A8884382
-F04198DD7C5DC5E2288FE0B206C9D9516D468AA6E2B1183E2E906F9DE47C9209
-578321590CF839C9FFD5FBC3393FFC75322B4E703EFE69534745D579B74AAE3A
-2336823D2DD5F477F39AA9386736476F5C0B1CB19457D44AD6417BA503475D23
-51A99BDC97751E7172363DB670AA50D21920E98BC1DE7349EF8B8C1E72CACB47
-557B3E2BC30454F75CCC41B84A67648E894AA0A43C5A2BFB5BEE8D0BB07910B3
-47EDA7B547EF357C2553933E0BDC0F05D596E4C55B33AD63E924164DEC1934E4
-58F937DADD65AC866E4EA2BF02D36C54AE3E3727A8FF9F3658337D2BFAED5908
-5BE3C1F4503843FFA47C83B3D9CBF1DF2AED7A6B97A7E68CB6B9E5420E70C5C4
-36843B29D902584DF95CCD8C34647E87E2335371DCD89E495A92033BA482A62A
-0D2D3A7BB06506E42A4926CA0AFF80EC8DA63D7B73E8A04B25312F03251B512D
-76BBFD76C1F5207FD6A8E69ED9BF063C7DDD0FD4C6974BBC531429EBB55BB715
-0D08FCB2F80275425FE42E87AEDCE78D2BDC07CED8BC49D260D1671BA0ABDDB8
-98E0F7BA7EDA086F4E3585157A71CCEEA35750B9DC3195E3396F1161EE1E1D25
-E6FE6E0B022A9625B5866B8EF59DFE5391AA7F033886402C654F4834F4E43138
-EBAAA758DFC8C27356F012F4D0F398EB8D013678059D8419C2D947F3FB2BDA1F
-70A5FCB549BFFAC288ACA7051BDAEA41A4AE0341035B4365A63C553DB80CE429
-02670706A74AD397B49AF535067EB07CC3CB86704ED45301DDFD5238E7DF5ADA
-8DF465E45F7514D7A0BAA202305CEC73032FC09294480796251045AFBCD6B081
-8EE4481D29E817C7DC32539B364076672596DC24CA8AC45D60A8536865FB475A
-3DB48E98C675A8BFA39792AFD17B5251D56F0D5C27E229DFA75FA3560E7ECFBB
-8164E4FF15421846BA40EE13146A316D530287CC8652B58804B95C53F6FA9DF6
-F84DE1E222C5D69E45E12C06C97E672D456E21B95584F8371FE34ECB0E6174BB
-468EA60BB0C06B3DF48D996D9083F70181799CECC224FE60736CFCC6F246E5E2
-EF465A6B1B411ACB7474A59BECA5935DFD15F5C18160D4AD4DE9767D6213C35E
-08AB18F834CAB32013AEB8C634DD6382D4C7E49F10BC5113214A18A5EB31A0D6
-923630A849327C1CAFEA3B8F5EBA83668E03EBE084ABC1A4C1DEFB333ACE0696
-EB20FAB6FE6E61D38457C8E10D8FB7595C627E8FBE2D5563C4D50A6E1F3DCFF1
-F5A2DF1A62301665C0E44C2257B4516B515FC995A52D4DBD54B3D4EFBFC63A8D
-F07C27065CFE19527AE04A9CA14935B7399E30EF88D2B63891A58044D7CE07F2
-916EB8E9C65388A73956B3D82B4B41AC378B4B75AC304A32339CA7701636B6A3
-84254743EA5F8525897D4FB054698031D1FFF4C971A10440212DE812752425D1
-E71B02AAD20E994357EC8436BF1B74F016DD41D6B1F6C1578E4B261ADE5A7B31
-2ECA2C16294C9309F200AE0AB5BDAF2BBCB3E97B0FC5556BD8208E50CDEB88BD
-F137D2F72258B6E41092F1256CA4AD867338DE757E29298F404FF94F247A805B
-40524952A6D8581F065B11B6324F9F2821A3AAC2E7A583771EEE640F2FD0975D
-299EACAB2A99942480DCCC95BC7CEA846EB1B2423FCE304596A2581583450455
-CD1D56843DF8FFBA723FBE4A4AD8E539828BF48BFB4D0C4EAA68EADB81A2C58B
-EBF89CF83017DE3382BEF407B493FA5EEF810C740C3C8B646292AECE9A5180CE
-07ADE6E6B2935B90BC521D3ECBE25B43F14DABCF49F378C26CDD2B27C690EAE1
-E888EDC3C963F55F1AD13C8FBED4BE0BEFEF31C0636913B47205DB1D0DDDBEEF
-4441A3DE9825160AD57948567EDE8660567998D41A0AE2D9A9B5BD4207F2A0F3
-EE82DDE22D16C32A583613E0EC2BA331EA91042B8FA2865A8A7DE1BDAD0B6D33
-3DB1409222AAD20577ABAA7A2DD6B302803FC7B4244ACFF725E37CB5926563D2
-82AEF220424600581E25001DE71E1385C9D690747BCE051539AB8B03B2EA77BC
-39B27AA8F63CA37E3886C50E125D3886C5132869596039589AD6A8421C8B7AF8
-B0EE2872AF974A4B779F09DC1DF2BBF673A7FB32BD1BF3D8D99A94E1BCDFEF81
-37B2D7BBB80ABEC1EAD544448E6A49DF730A1B7F63267C9DDFE81131867F0C0A
-8D2B37E8B0AF2A6265C57CF9BCF98A01998081E7BBB94DD53FCAE52F3F5010C7
-AFB011FC6FA98FFDF173FA0F935D33EC3DE55890BFAD217870974C00CBBB6C67
-1CC558F6FB2C30B28B9987721722A27EBFA924A382569E3D7C47A3220F21EAB9
-1011D71B104BAD1A47CDD9CD64487A8E9721CABFDB83FDEC748EBF0D08E77CFF
-1A54D0B3ABF4024DAA403436C9F6CABF3B6CA7089776ACB183AC01C8E7F287FF
-9DA7959C4B7D73F00976AC5C3E4B810DBCCE732E4C9ED9EF8006AFC7314F0055
-FA3FAEC780434F273ADD7D07C2006E4B755B24A26341AA5AC2DCE258F8B03409
-188109067E22F078E093A76FA372C87CAD401794D94317B2665DCC7E21FDF901
-E1511307385B6EE148FE1666BB616351F48A8082ABF94040CDB058DD584364F8
-CBE3E94DBB8A2450D18D435FF5C8CF2DBA1EB562E957A83F184C9F3CC43C1860
-E6FBEE91C4D240C61D7A7D554A17B90D0A9CE1E7AAF7840846B3F1A1BB9926A7
-CF8E9DA56DB81D35CB3687E9818CE74C0336DF7B2CEFD8BC432268AC93EB34E2
-3D361A8387BC92B459F645BC069A49628D7382E22EB249BC7CAAE98AC55FBD24
-F570D8D654B54710B809234AA2E662D2ACC44E1FE1AA63A497FDD94A46B9D1BC
-E37B29430A5E0C2E592F13BE227CD9A6556E9A0E1C3EAD9DCD742D1F9CF62014
-5EA4510003418D1881C4EF1589A8B9EFB52DDBB67BCFC4E55B134A3C2E31AC1C
-4658B592EF69C2E23E335499A35B91A58DF9A947712DD55BDCDB7E0AADD53E29
-2777329340EC29A51E9020B8EBABB7B066113ED3A4791D3FBCABADC40CC45FB6
-8744DC0116379D2649B216366C6FC83999E1FC558EEE5E17E13A12B252E5F7A9
-E760CD51C96C1B4815BFE37D4D39621BCD10DA9428CF186E61E9921585C1944F
-DDC084DC9216FAB69CF54E456D47F65B3FB02F34B0CC998E12E41110A4791465
-19780824EE2AC1B799655553375ECB24149100E539C23829944BCC82211A85E8
-6A2D3559BBC0EDFEC2DA02AE3BB86A9E30AD5BF95E5CD956297C1F6AE85D0768
-1F9D96DD8EAAAD78CFBB543E913951A78D3262CF08BE0DDE7D870FDA94C51A1B
-1F8544122EDB7653E66D772E3EBCBCE4419F17500D8469EF4FBF93144B20DCD7
-39B815E0B09D0BC3283E8B7A907F203EA3B22924419C1C3A8DEEAD335FD538F6
-0D5ED1581BB64FAD4979D67D51F18B047E096747FC50C6A2B48377E458038374
-7FF93A3A46E09ADA5A844EAAA3EEFA1625510D3AB7A74764FFB229725FDA314A
-72CCE353A9693869F26CB904505B089DE6D41825336318DA00DAFD986779D4DE
-E8DC47E496A9936DD3CF46719D5E832E3B7C85B44D16D4BB588CADCCB90CBBF3
-3589F08AF2AF77D7ECC3AB68D6409221B2ED853012C693C522407B4E97DD4F89
-9EAA4CDA6C85F8B65F5E165399F6CA79550965F3AAF7D875CA947FD6BC42A4DA
-1AF797BDBAEE65A1C3BAF00E8E48FE567E757715166DD2757F7DE6C45FE4B3FC
-A0C76D12FCB66B4CE9CCB47060AA5CB3FD427BCA5B549A4AF34CA654D9421C26
-9EA4106806950525CA856624E9EFF9DC5B598AE4AFE928447D0704D4EE99DF07
-69AC51F4D3163B7424059ABA4381DBBBD5C8C7DEEF723F163AE69C48962C34D5
-7514F73FAF946C121EA5848C29E127DD0FDACDCB6B1AF4414EA369093282383D
-0213B391666CF596FAB2AA27270FC273E32B90D3209091D8360A0D50F8F28D23
-F7B8B097E2FCF2DCE92A7D5AB68EE680B691C2DC7BB846FD5132EB5789A30B8E
-9B849C18E8560E9F49764CB89FE01E2E9968C769BAF6B44E08E45E563EB14BC0
-70601E5133AAC33723E934677518C54A235EE9E4A832B363DE44FD82D37BEEF1
-E9C842EF2570C97C3C5D6C0DE94DED4DC5B6681E4A04BAA725F0D9061B16C431
-8ED6859AA5E5BF254BD3C29F100293FEF2D0D6EDAF428490E13B06527B5FCC90
-54768BCE8007EAA2EB1AE14F3F577CC243BA416AB6E43E92EC4FC99775BC1D92
-CECEA05EB8ADDA826E364921ABE388295AAEC6678C08D26415B2725025C70089
-9F12735F37C45F00218EA2E398A8CB173086C43B2A7EE4C95852110F8DCD12DD
-64AEA60156E560E8D8D84285B523515EC15888E9912C6C1AB91290E1D57D7595
-1DF73319FCA62BE7C04F4E9968F7E453C384899736D48EE6FF64DF1260057C37
-3082E207F796CE6AB2271E3F31AD2FF83B99FC3DF2826C07F4E4CD05077DCD69
-A3B9EC76BC02C12A468AC4C0D7D83FD4BB4BC8ACF9C312CE3144E76D2F3C6246
-A210DCC9834608CD0A52CC551FBC059B88BC2CEE954AC6B5811281737EC83C8D
-72B39D016B0ECCED40BDC58706910851447C80E3FFFA9D57898204F9815DB6DB
-1EB38FC10637CC50768703AF9FAE89A94B424A3C647A7870B26970954CEAAD68
-E069ECBADBFC0519C33AEECE55AA93C75B6CF907DF65B98C7A9B043E4BB5840A
-88DBB212EA2E86888D36B76D270926739B48D6435C1547D703FEA7B989CA60A4
-87CDF9DF654919F730787D58680BAD0E5B506FDC2BF0C89569CFAF6BE11F80B2
-07D69B417562178E087AE3AE9380CAF8CEEE40FD3989BB50E8521963B0617401
-2996B2C32A3F03B7F312A211B605932233E7C230FA084BB912BFB20E85D721C9
-532D22AB85802085C715206297C09713C3142039602BA9D607F7A52FEA25B0D9
-FDB7E9FB15499E3DE1E47CCF2500BA8B8798497469DF248B8244493738C81815
-1008200E9457B4CCA5740897B17F8832515EBAA84A237E17542B359F173E7868
-64E99FD8159C9051E876C235E434BD5920F55084DD7F31C6FD2B6CB58E5FF307
-0AF6020EA9012AEA47F9BCF018C30885988ADD1A630C2F1CBBCFD5A2C95028AA
-6FC89D43E089957267B6F94C7F4E05FCFBAC85E879D27F7BA921FEDB4B551F9F
-3B5D3197C0FCFE264D45F6C1181BA26796006B94BEFDC342C7CCDDBFAF332F8A
-D96D8D6C52ACBB10C871DAA7162501071CBC04CE01D8FDBAB48393E59ACCF1C3
-9EE4972D7DABC3E639B1C2722F346553DA9E9F163DCE4CC7CB2D1B966F561A07
-8862C3230BDB104C55DE3436ACA77800229637A6DFE1F041DB4B45B2D1A5481A
-6641D77981CDA367CD23E64AD5355B484930C7B09B47ED6C79851844099A68C7
-1F4E6ABBDDD7490259E856C267804A4EAF61246AB4C1233F025EE81793312479
-CECC3813C2D887855573122E59FAD0B85DBD9AF66203F4618F22D6D56E1F7323
-2BE1ABF7702D8BACA8AAB9FDEAB48E3ED56BC0D3E4696505E16473CAD93D0559
-54E8991E7F146F4D4C9E3DFD35012F5830B57FA04BA42BEC724E5708FFB6D521
-B209D2F6CDA86560921C705D6A99F822DD3B182B0BAC8AB381653298B82C86E5
-098FBC2E1E30DDA83919362D1BCF4D91702B16E849E032B44EC2482369B4C342
-211E7382390388FDDAC362431B45DCB55FEAA7C48C30996C47B0E21BB32FAA7B
-14D6F0DB95C450B59975CE25D65E727148BC7400E00C249A415AA52DA829F547
-8D7AF32D029BFB27EA195EA3E8A038493FE5BDDFD89597C420CA1ADDD2D5AE9D
-D3BF13CE3B530D78BB7413F47056F663395BEAFAF4002BAA6E9FFD3F1F0C7C72
-03592F5627EA49F1C0E8C95813E1C30BC256C99A2F34A027D4552B650B0376EB
-9BC2482C80F19BD6F9315C71A185EB246091F6D7D019637100B555077B1549FF
-27446A2CA0C8C815B6CCEE95CF19B78908DEDB25C1F9A5E6C36FFE65E0A8F694
-8A3E847529C50351F6CF88F1F3B901A78378BAE535678A6C60D7DF4A00505B14
-FAFB1A1AE87CE09E1E90769C046C11309AA7BD8476AFAAC0EA48E6D32842E0FA
-10CEE024B1B178D8B9A15E29F825E42564A8F8F1E1F1EC760FC03F1D5773DB78
-E177A95C3D2E3FFEBA469404A866E662D217FEF7A99D6BEDF9F144A2A8B97542
-9423BDE10EED471B99F70661A7AC7A260C6C32EB4D00F21F7A3A5257EC597EE4
-885981989562FB08DBFCE4ADCBE6D9A1C92F6E9FF65A23BDF943835BBB7C29C4
-0D7C987B626819583D4D52DA32BF7DF15C21BE5BB64B575C7F4B149AC539ACBD
-A49DF3F0480DCD61E3C14BBC956DE5D968E74DF4141BEB0106E6C5F7828E4F77
-4EC7F0775CF320C26323EBD09354B3E2A52973E75E54CB42F6B0F5C10AE8A8E6
-EB93124C15AD140C971D2E2D9C2B5275F93BA3B01556B72B7630CBE7AAF3D997
-E82D11875B82071FE770B13C232388C07F2E6F7E9C6930F4D7379BF74FC3436C
-D301123050BECE20F2BF95FAD2E57FC50203EE6EC6D9420BF8C218D3D2F8B236
-6572EB16DE1CB2AF00CF19C56BFD8D333FE1DA4494933BAD214701819B0C2ACE
-FD02F0682306A6B0039002B0B7095D992A30CB675CDA3D4B196C447F102DB4B2
-FCE3AAF81D94B2FA40B31EAC2BEC613654B1D885EA590F675E6106BFD0575B1B
-4AA50D0583A2BA2F79AFC2EF5640A9EDF12F6BFE45ADBBBA43B773B36DE8DD60
-C4BB8FB6F09A334FD947877A785AFCC4F9D366326F5B609ABF1E0CB8942560D7
-68D0FA410EB83A9BE859840A9E024FDF850DCBF5FA8D649B40505AE64B1BEEA3
-6776EC44EA3298203B09990EAAA5FA937CB648A0377173CAAED6432A38B48DC7
-906B730B6BFEB2B9B166526D1E8D4110C6A2A4CE1ADD2D0C9C179621F7867669
-31D3A28EA97D1281E80B4B6A4F223D1FF77F8960CDB83E5768F3A8FE52120CA6
-15164AA799E18FCBFD91697783BA537FA897D58726F5F3BAC1F0B20B57583374
-35837E9EE8DD0DE39B6CFB69EE47ADEE4624EDF65E43781EDD056024FE108280
-29E5A39815F494C65020B91F68D1187F815ED8A312150B414D9DA84F542E0F15
-32351B82F2322C9200F987E477807E9E4051D4057240E99D42E6852164704F26
-81A939AF1E3BD237C4FA341C702F7AB978F63CBA8DF745DC2C57AD5511D89AE5
-B4A80BFC57B1A5CA1A110D3BD5859EF41959EB364DF07CE50F709B30EA099EB9
-01C010ED4F4DA9AB062BB8E10F515559D2FEEE69C579859E43962AF7640A705B
-2C3086E862AB4297EF9625C58AF049BDC0840F9562D8D8BC686CDECA7D4259C7
-4C86D8C92909BAB7FA09AA2E83B4089B246F8B4AB7A086C5B9943773C496C62E
-9E6344BBD213B44C821CDDA42B1BE933F74BC8FDFD0A85070F50D4881C7E875E
-DD689E97ABBF6AEEA6E8C8BA377BF3E4A8EEBBB1D47FBDAEC3B88462A62CF500
-727EF93FD166092861FB67303490DCC4504B759BE754808BEDD580E6DC38223B
-E02EE2D9BB8F32E2D3386376F8E49A853F7C81650DBD33E23437EC98F4A6F7EC
-12705E52817A7B647F4CDE1B173EC370C78589E329D93C35895CA8B3EA2B945D
-E30630DBCB2B8ACC49846C7835869202FB5231ED9167F307CBA31D2DC0B423D8
-65DE2E24CABD53913C01C388F64BB66976FE3B0B421AAE861E0C0D495D5E0B26
-1D207792F1072BABB49156544C024118BF0D239BCB1AEF8AB7F38EEB34C88CEC
-C7401AA6177E9B7849AAA081334E04A2205077A90C0377A363F22091678371F2
-36A088CF84558630C3F370FE00FE97209AF40D77C6F70B1B4028F1680FF6268D
-EC09B05DB3F8DEE17678CFC46AE78E02DD01454A9A8ABBAE157086DDC92AD22B
-DBE7861A2909232DE46FFDB6FC84989B2B137C564FE84961BCD663B592FF2A85
-A65D7B595113AA7DA8463F852A28233A754591A5F2D7F70649A12EB8CFA35361
-1410C7E2F08EB5353A91CBF2109D6E279758B8E458DC7737369AA35B330A9229
-B73DFB9E1745410440E440DEC966C0B21349149E08D57740773B1F17161217AE
-B0605236A44353081EA2248CBE9E8F4A0CE1499354F6475C10346F337227B8C0
-2474942B49CF891C5D0953B1015203B1BFE0A7528C900968D16A876AFD9BF28F
-43EAD0516A38FE48F7091219A717617CEF422F7E2054F3E40D7D6239F6744E44
-86F62AD7ABB61DB0E75B245B44E7A6FF9D72DAB469A07D8046DAA059CA891766
-1420C7A397CEFC7CBFC41A09C54FEC6E77312347C14CB8D87B313A0E7F2CABEF
-CEAC4B9E15C279A18BABC098027A02EEA025F481769AAC7A89F9F419A9EE5908
-351B0D25A2F9FB805227F0ABC3D4A87C63C59E80B1BF915FBB1E1E164568CCEB
-1EB5B1A19180F370EBF2DD11827844584475357DE9E31A138874E567B8E1DA93
-FC5D6084A3737CA8EE391773F3F91C243AF33013891B4E7DCBA7BBE1E06C5031
-C3C0FD60806B7052C5F7B069BFCF4F879914D9C2827EB53C505D5C738E1564D1
-1FE8A3EFE5B3EDE0B766E816FF02473739FC5BED647CEB758C6D7457ACD5E352
-1C3F13E6F1DBA43FACA8FB3D257B24902EBC64B10C7701AD3850BD845140C3D1
-A6CB630AFD8E81ED647D65D7F51803369D37DA44F36D8AC77976AF53B9C4E56C
-84D5969C27EE9DA518FBBD8430D5769AD02F28B6036D5D8AB73C784734C22D5C
-7200D0A706326DB04C52907DC99648D46F2741B3A9BADAF9040F2CA68642156D
-E597FD6BDBB5658C87501440DA17A44557EDDEF1C576F8FE343A6E2DE27CDB35
-8E62AA7C8367E3E44DA6E435DA063BAC3DE82D73AA2A147CC5A844187D29B83C
-D12D91B9018718B53C9CB11CABDC9F7A8848C19E73E1DA7067632DFED7994B8D
-3A5E1260D0315558BA94389D996A960836FD9C7570F02C453129DA181B2BB9B6
-56BDBA69A47729BB3EE50403667025273C0FA725D6742B32DF5E58BAF48BA6BD
-DB77F2571F3643E792CC757B8F1AABD13B60965B5F1AEFC5108B68126149F4F5
-F54E72341790C7D75372F0550FF3C9FA8844DE0C6E71C261F94C2A763C6853CB
-6179437BFB20949F530804A81C8C71B2E04531E2F3E0C158040763FF38F69682
-F8FE6FC7F914C9BD77FD51B7F533FADAC22C819B6F7E3094BA3B4F96A74E43BF
-240DB5BC95B8577597AB79D6ECCAB0D65EE279F5CB8527B05BB521EF2F7F23C8
-42349BEDFD0E303A7969A9383A6290B9ACFF7C7D402EA8A7C9517F01C28D31A7
-5B705C785F6418B802A18AB458C03291A0751FB55AB25515926778649BF7DC53
-8E94F949469AB3EEC16FCA42F98220A5EAEE73D6E82C71779E8892B2BE652796
-E12C2B6E3D535037013D60F8211EBA7119383CEE9B06981BFB98666749064BEF
-338B4AD1C6300DA217F38EBF093C867A7B019F1C8F4C64226FAEFC38027AC7F3
-A528689C44EC4CC0D0612AEF76650826D2B16F53675A57273A78A911647D112A
-193F579ADA161BB62859141F9893013F55D636A595E532BCA11F26E5846724EE
-E6F3026983BA6E24C1E462CB599D2C6F3E7C0803244D9A773D1DE70325786EF5
-C42D2E9F3DDA5F7108E3C28357AD1F088404AFF56EF5BC9ABC92A32BD46FAD66
-4BF53BD32E3A6781F4DA33E25E0075638D941389DCF2D5F3FA3C9AD7DC26BC19
-28D04510B6DC27C7C6EF0EF6189968C8759920E15F65108B389BAA1D2047B977
-E1818381DF9FC5FC217DBBDCA80BAB7B98E7A00A97AA3BD47EF50ED526FC8583
-1FF5B2B4B470642E3F575F4C0B1FC5EBBDA263F89E6D644E2F56DBC6FB50D23A
-A04A2ED571997F30657BEDF19D268F69D7A624FB11BBE30E94448708D077A238
-CD4543C8E805BC0DE96A0F4E14E721CA75A34DF4F911034DCAF94C190380D55E
-77BBA860C105DCBA06BB201281A02830F8FE7951855ECD7E13A2514B2EC6A93D
-A40D690A17709E21DA5305E3DFFB395708581573005A777EAFA0403B2F6ABC0B
-EAD09C5C3E2B111D8E3687DDA302B8AC5B11341E916A63832439057BC72B2E67
-7BAA5ECF2A8FB4D60751A1F209BA3F80E2BDDD496106EE382F0B704B94A7EB2D
-1659474F5B80774BB710BA2A744794A74061970230B044218212BF7C908A9F5C
-8575922D7E0D13FE10CC1E548C182F402346C6E256C3C77E871703214488172A
-76E46E6B5BF7B7704AA57E3C8CE8EABC9F8BF0A53538F3A09F27ABC005117354
-39F733BCE06C01F617CA9552C01B0ECC3AD05D9C04E67CB7C194007C4C64A460
-726BA5371B9B33A713C6B3D69A6DDA20E104580E1CCF7B0958E5086B31C28AF0
-D645B982521DDF76581C7DE21C7FA385F5A5AE637169427D13300AA66B53DBCC
-4CC79A0320A2C5379B7A9A54AC967163DBFB993753FA7AF4E4F7AB3710BDBF8C
-3F10A9BCC0BB17ADB5C5727895910CD7CA7F4923F00B07FD16318E0A53633A3B
-0501EA6D8851CB557D80120DF270B85DC721881CD897BEB71CD7EEC64CA12990
-E8E580E138EF6F9EE2F8EBD3DDC3C5F63AAF381ECC7350379646788EDDE61725
-C72975D2DBD54F7E7B5B1DCF78969BBCFDF726C8F7CB93F39CA28715C943C782
-5CD1C1DDB42404E24E079ECB45A8C3625039AAE73D365CDE69473537D4E575A1
-1D017E12D1FB54B41D956915EB6315A82EF3CA876200D5CF0973CE5F56649FEB
-F62747208C08C8C61A0AE81FC3A538B16DDB109177C7A686A256CF37D55DBDA7
-8F807AD40060A99A44BEDF27C3B7178199E750C91119A7AF35496F6F1ACBD666
-B5E1C8F49FF59AC5C5648011E2D0F7F85596705D4DF9CA26541624DD059E8E70
-4E74F1743A6C6DFE15BF1FAC3CD9A004F3AD0828489706818A60C1661B9E09D3
-3F18885643D21E8EFFA14F48E22ED8124BFBB4398024C177B02C760A59F7C0CE
-E1B619449022B819131DDCD178F826A0C2E9389C2B8B44B229F954FEB4D5FC0E
-CA84B53501FC1767BEED2381CF24BD89BAC6BFE1868C78416159F6F933E7C828
-DB743BC92B2EC3DC2DBB0E14F569EF1BCFF9182C04627D1E2BD48EF654850CD8
-7151797484EAFF38C38F8577737F5EE125EF08565E4F6E6603CB9CAFA165A355
-4B06608C939495934D515A13D319F3F8C4C1425363C897D025D28BF1A4BFA09E
-0F97561179C2C0F030F0B6A3C8591537506D9FDF232AC0BC848E517E61F2AB95
-88D386584AB5F92CE4C68D1F419A32576D47EA6CEF4B37946B1E3DAB1E67FED4
-A5B70D62A9F69C227C21C8AB490DB86DFB4CA788B6CBFF8F02B920F739B141DE
-1A095167465D82714F492EA9D2B4F7BF14719BAB487EF25F8BD1B377FEC95E66
-F3D7020294E06E743A606D61B27DE20252F211737C4026FF7B9B4945DBFC9809
-8E1594CE15A1D7E5270B7448CDEC0E7D728AF99771E64A43B27A041FCE6B963D
-42B6E1975F5F8F8C26602DC75D04ACF27CB1DA2B0841529E26CE6A1D0E5E9B31
-0C191C39FDB29C4505CAAC095E91619AD29468DE658EFE5D5198FE5EEFB0A2E1
-4D6A7F1BBBBE87D543592D0E658FAD7B5A002D6464C9A413D8952C533DAE8507
-B88888C8BFC31C3F8838653527A3AF640BB9CF67FBB5844FA83E7D9D51D801F5
-62C12CA2D6070801067033521249A56C5B0B77B19811FAD4951E34A6CE5CA1A8
-443E4C5B72CAD2FFE1650FFF90A91EE8D7DD95D77F681C1858857EC9C449AA1B
-C0D7145473917BC9E1D8D6A691C91E1A9DBABCAB74BB080F506E992C1A974E26
-00C556FE22EA28DF85CE94B3898AD28F137ED56D605CE095BAD1AC60BC6B73CF
-85EA4ED98FC0ED5971DC5A75F289698FB94A4FEA6479479FB2A9BFED1859F69D
-1EDF8BEFD567FA71B725B11D55B06CF0E95F817DD67612B41AD48934A4D5ED7B
-D888DD698395041DB1C9290F599BF0ACD24AD9EEE1ABCFEFABFFEEA96A02D292
-C78CBAF56DC3AE9E909A2856E2614E2EB9D4F46289AF8248CACE1CFF69C66F94
-F5B939A523DD14332C225110DA3446A4818FDD67B5D16FDACA990DDE72B9F10B
-F3924237D2B6069030B76DECAFFA70FE97F5C5C684A750AC53EE37B1E27C5910
-48BDAC0DE147D16BEA29E4A67AB88588CD8F3B50C4EA3A18D81778949CB17F14
-E4B19BBB9FE53ED4105C05FC9180CFF9F59F956CA0A6D11230499F04724051CA
-B98968E61ED0DF26ACB0D0EB7EC9BA825547B42F4A439AF0F1B4D4F9F4518ED9
-4A80B709484E08438B6D103CA4F0C7C8CE75889EC2C501A375FD8D91722D5FF8
-195D24FB5D569630D94FDEFA35A8D881FF0271B3D451A884D106735D4A2361A6
-D71626BBDF60991E20045C1B980FDCA1F436C1EC063C9B454E55062FE19F88B3
-C84211C2D38911CCC65C1B10931EBC9D633FF04826D1875DE425E69D60905013
-3280E96B205088FA4C3AA2665B595DC5BE5AFF1C29FE961869F3A03AC93569CF
-A1EF8D26E4FCB55CC541FAD73B55A60A9AFDB07C4F26B7AAD34193D5D3E55B6E
-53B7E8C23EF6AF8D363C59A59C1C5DF268B43E3BDE031C960662E3B308BDE103
-5717C31227ED287DE82B9C1923F0FB2885C2AA2839273128EA545CB9704CC989
-C4B324BB68E070E9F0810137F4B1FDAD4B7E959872BDB8929AE4855EB15D88BF
-F1A10FDD74B735B9EE49465875B67070F6D6CA219A64FA86934A4CB5EDF7073B
-B814B8C9892EF9A90129E3C0D84BC60C0DAED6A7CA8EF9164BAA7B3B11736AF8
-C58302F9578CAF243178E37C0CC8C3C9544AFA68952BF4B02890A0D000645694
-7AEBF900234A5374E199A5D90F10E57A1C123DEA596AC51BFD29DF7433141F90
-E0656BECAFED14399A3CB3A7CC99D5B2A8F88FAF17C9EEE84C08D0EADBC15B41
-7B21B8BF97FE52CEB94EBA37CEEB39EF757F7FC8A76B150796A27C646D5C85DD
-69AFE8AAF7465D0BE73B348CCD8E6493AACB6CEA5C15A9636C2DF301E5C7F72C
-B8C6BA861E90D2015817619C9A013CA9E7D22D26C6E8393187F8179E1693EDEA
-F2531A7555FF7BA758D3792108786E9745DC6B235D02AEC8A65A45CD310169BB
-F8AE3BA1C8A88A4C2A8C2C730F428FDDE333C75558417E41F95D6DC547E0AE93
-134F547C8F7BCA1D2FF766A9E2A2C799C529348871F5A56D5B8ADEA3B2A11DF0
-545A0A5930AC1EB9B33D296DB9F1E8B815B741D855622350EC35DA65E002610F
-4EBA010D0E018E168377533CC24CF7F4B79C90FD7C4AFAD40756621200E45012
-6C65F1359854128910451346DB93A34374EBE00140D3BB639CC14901E7C448EA
-B7C6F6D76DD96CDB8910BC20869B7E235BEA990DC962554C1D92EC9625813BAC
-252E58DF9D422C9C3645A999A3F25B5ECBE2B43926E2E9951E47DDC1E302FAC5
-921AF039D110CAB81962ED99254457E99A142A2F3230492827806417B1480691
-BE5511A7C1FAEC3B11745B30A10B8DDBFCBAC3B3B8122115F3E869C36AF8584C
-ACCD78A3B88E09C7AC348187D3D9B650827FACB330B2492DA961EAF8CBBE87C6
-8ADD19B167EBE1A73EEFD7CC9239DBE4E8438A4A16A28F97A1C6CEB14F543C23
-238478AC9630CDC4CD3A01C8DF7E06C8B8F033A32D2B4BF1C23CAA5366367DDC
-D3CA457D69489D0C84E56D50796B28F8BD089108F4D8C7FF554CC68309055B12
-9F910D46D48AFF711073F5453D8DE7A781FD9DF4CF4B28799093DD8FC2055BCE
-E8129ED81391F18F26EED523B9BCC59E941DDED79B23E74FC37BFAE9724A9E24
-5304601310BE6FF3B480C7BA9E0B72E4C6FC8BE2A0A9407109E1770ABC56FBC0
-A8A44AC1496D3F41A74B8AB00435E679E7B107C133F3669697E8341B70DEDED3
-48D6BCDD9BF9D336F25E5739A9CB1420D6F1813D1282C0E0EFBFD8DDE2C66089
-8B82A466300D6356A3257222AD8B28F8185085218997DFE0FE1A1CE1AF554B98
-A1699E9068CB49374FDEFFA433B638B71284FAA1211B65898C3C056802FD3AD2
-3AA4F680922D437146E4F7DEC9CB8ABF1A8EBFCCFB7DC9B3BCE38C8C4F2A578F
-51B3AA15BD2BA58496CF4BF26DB0DE0CE1214674239166AAA4A25606920B81D2
-A0AD21E24B3AC6A74368F9E7F116BBA02DD2AECEC99F41BC3D955D43C2E22F2C
-7C81B1EB554351D47461805FEEF5CB89426AD58246617F6E5135F7F735822D2A
-8A41C2A685086F145175154762EB694EF1A877670A51C4A86139E64063A80933
-61B9C6111F450BE26BB644316FE30986368945EFA43F6BD4BE3840F578C6B7E5
-64E8BB87AF2A7E2F4A8B1AA257C2DEB9C8BDA8A5274E5076756B3E942A44F1BA
-D26498BF571F450D904733A0F796238403E5A781E640330D70AD296F6D74B679
-B0B1168B656E9B28E4BC7026FD15197875D89A72696FD7B20A3EE4ECA24B78B6
-6391F8DE690ED48966603F2186424B17A28CD3B64BE1E3768D8AE01954A4DC91
-CDD6F3A30D3C4EB5F9C2CE00A5A64086FFE87EBD9B4ED432FE59DDBA942F72B0
-F6B3C8CA4CCFA5DD2BB195FBE297F6E65CF6C06E9D4475EA2C41D61D39F0B25B
-889E1EF856FF0817142ABA12DE2C80A2FBE0C0D98A60952D93E3AB87C644D4AA
-B7CD2011876AD53DE27BB957F69F4C4E48B292D916CEE8BDCF3AA2FF9C72E580
-EB5482E26EB7719FC7BEBAEA7102D55048289FBEF5C5829D96A437F4F7CA57CF
-9FDE380071F7859DC68EFD00288063EBAC1112227AF649694E3D2D63B6AFDD3C
-7702EEE2F4ED8D760D2023EE1193D3266AD408AB8A3FFBBF6FB9FB1E8E849F75
-D79AA064A146C42EBEC6B1F5B77A02D9C92DFE729DB8F03C6E67E9587346ADCE
-213F08F02AE6C6D2340E8F041B212A760F0EB6D4C4F7AD11C0C7D003C384E9EC
-8009BBF3B5351BAC77CBB2DEC5547D9C9F2ECFEBCAB4D48B5985E891E51C7BFA
-0A02C7B166565EE79D8D5BDCA41C79C69399102BAB4561B1171CA99A57550363
-3231BB3E3F48BEAE734E65310AFB89A170D7D2C23690D07050E6246647B2A3C5
-BF170818138683EA1B4DEA8C2F018D0FD5778BEA72C72E6CDA1458BC8D1E553D
-E61050AA240D0677D9DA9D9C22810CBC6C0E441C02B27BEF9BB48027E07FC495
-9E83F67BE50872095AD837B6BF75C0B5669091CD4923EE8929877CD0BBC624F9
-17B90C8D5FCE286F68DE2FC1508373EE9F9FA6F5A3978C75F52DDC397E368A0B
-57F5B40322053BBAFE6C7F8F293E0E3BACFE054A8AA7DCC3FF253F58C75B9D12
-4669407237089506FE8CC6A24A1025C8B4673B48FF3174C042C4D66BE2AC584F
-6A346027B020024CB9816965E99F62488D47EF144740C30CDDD2562F6BAC56EE
-04AE0AA4421F68C2525130D92002CE82F361624166C24F7C2B11C69310B93719
-0947BA4E74BA25398727049E1E8C94669B709718B2BA25D889BA48D66B0A9EF9
-173C6CF93116BC0DCE2DD62D2A936341BA360D901BF23D9A6579977464D12A3E
-14A083FB37A4049BDC5F4D9E8D49D05FC4213B01CFB0231D2B03F552F366846B
-7AB75D68EB74D57CA505C571AE2086BBB8072B00881A57AEBE38304FD73F20D1
-B3A3F4DBA7CD736A475A04B7785C64F8802DD8483C75E50F385FE63D063E7ADB
-0FC45DC313B0585C605D1529D226FE08FF7ACA26E0CB2C1B23444E976107731F
-1795EE18D69C11B9969542AA52BF0D3C4D00862494DF946B74718DB8FC586DAF
-64BAE620E3C1512720B0ACB343DA448A0419975CD986B40D91192158129232C5
-85E18BBA914D219AE5979CF98BC9A4006687095BB53215DEE575D4FF7FDFE94A
-25A05F1CCE048E2F7A801C7AFACD586C218C1A04B43F167EEA5D6A4EC9DB4FB8
-C2E56225709D9AF95C88DFFF3B7EB9C337069278D51F0824C96DF582C630BEE2
-C4DFA3E9C9CE76D1B52A23CBAAC840EEC8B3786D45834D55942B46B6B4C612AF
-BFB077F21E0F7F0EC6436BDF1704EAC52789C75F7900EB441EF83E37C780A699
-2E3B2F5222D7FC4440FFBD93A01205FC7E64CBE9849BD01FD4448B343FEA4101
-9FFF4E1527F81F4DF3FEE2F42953C4BD655A50BDC6EFC02E25A5D8695544E166
-7ECC195622F1911EE8D637DCEFD8686B01A130671BA5597768246CEEDB1DC252
-214E01AB3AF7AB7E3D766C1FF37CFEFC2FBD4448DE566042D46B3F2A0CD85D27
-52F4CBBF632139E86B8A2669321B4488AEE0E3EE016440B026BA4F3CDB798BF5
-1E026DE9653F2851D1B095C7272112CC642066872578C2063921B1F1DC1DC37E
-6FCA614E9EDC7EFBCADDF112E3127B753D0DBA1F920964D69C779343ABB1B56C
-EEF95475F7CCE12C08A5AC0502C65284DD6F34C8FC31E6D696D9B1075B6CA4E6
-8857AE5D9267CF640DBEB733B3FA1DF1EE67D578445DA58492A8BC190AE91CAE
-DFE1F1C833312BD85578E1D63F8E593432BE3D4A9307127750DD9F9509660664
-92F85F9C97860433F1190C2448AAEE97CEFD9E048681D41D17F5CD3B8C6C3AC9
-E7D46179623C806085BB5D23E6ED26B2D900515216EFC224A9F25660536467B8
-B47665F6514284E567397A7AC78784A8CF47B61DDC9A66B74C04FADC5074B8C0
-476EAE541AB9F94E990FFC31CD94CAA9E93966096383C1951B00C4E79B51A728
-7526A4FD3A5F6E9D673555CD7142C94EDE73E8A3295341698D777405898E3B4A
-E149CB4E9EF567CC18C35C3BA9354CDE55382A6569A8D0B2B7453E5008347B32
-8B5745431E577B3525D343EEE8C0CE5CBE1CC6D3FD13AE8C5C9F672B10451183
-3BDB33698C0D220902195138EF44A545EA6092A79C9F4AF24D73B735E3733FE6
-67E47D76CE584299B16295BE997949021F949E035F49593BC128DFA89182F89B
-2FC9EDE36D2010B1BA62A6D900B00C4524AC6981F0DDEE41043ED7500F574409
-C275BD142BE36AD2F5B08121EB0EFD58E8EDF388CEE211D4FC3C2D04D09E8757
-17CF2869D202B2302BF7F5741F4DF47C1D76962A3DE9E718ACF684751BD968F4
-6B3488D623E734451674276CE47A465AE3F50B50A938C17DAEDBD7E40737FC3D
-35A709ED283B930E0381A174F3804E78BDF8B8761BC37179A96FA636127145B8
-639577E80613C9A547AA8C3441C85E8408C0C4C1A5143A3179F9366DECA49F47
-324BCB48FFBF44DC15A98DF0A4F9331BCD908E5D516881A82ADA22B906A85015
-6643813BFBBFBD2790451F64AF61E0252CA23D2C44BB92D546B50DF7C2F5F3B9
-560117B9EC0D5DEC65A4404FD7CAB019E50B6C468DA7B5D2239F298DB98C83EC
-8611CDF1D5207EE2F8F817958D2ECDC5557BA2D8023B69FE98BF4ADEBA5610DD
-F12B997F1D998441952BD2EB089AF2C6CC99FAD2E7E9AF14648BF99A09355470
-F32C0A511E8A02FE7E24F7E535020C6FA0FC4D9015532467666B0192BAE64768
-756C8AC401A71864A830359DEAC2919113979FE4DA48292EFC5DDD97A53377ED
-CB29E122DACB9C126F687AD2684F4EF885727C84F09CA8C579D48ADEF1F47859
-DA6848081327E0316788D90F3F59452FC9EBDA175845FF0FD6178A0582E20436
-4BCE9A140877B4DE31EC9006341568BDCCC9DF9DDA0B086DCF1D5A8BCE4060B4
-1F13F5A274242B4A0990BE59BC8DD36A2AC264258E19CFDC1AA63432D07E9DFD
-C35528A40580887195D79101345AEBBD0041A765274D09780B2BE95BD42CD1E6
-A5B490374097FA0E5B6F196A3C47C18E8499717C07A36BF3DEC7064845253515
-E0299143BEED08AE775CADA4F8ACEB96D70F08779BEBF179B2BFB0DCB0F1C126
-35B6BAB5C1F755CC9C40D5506135F11A22F802A9F3C79342B6FB9522729E681C
-C4A93373F8E6DB2CABFA5B7CAB4C243C975EFF5C5D634D4D311EEFADBF115E41
-1C3EA696F82803A071B80E18BE67F7828DB353FDE5B51073E86E68486CDCE01F
-5D79F3E3DB087505FCEF1F9B01908F1D9FE1EBEB25B6DDB40C119D5B28DECDDF
-0F579BBDE6CA59B903368E3460730A756FBEBA62903512DEFDA5CE765C479DC4
-5658ED736D9EEE0CCA46CD2676C475FD3F8E2BFEEF43E7B959F19468FDEDAB2E
-BDFF5ACA6119413724BA04E9B006C4AC43CF2A16FFDD90A1E46F52C661328295
-B245F8
+2CD7C7AD6BFEEAFE31C8A721C2D46AA00C10681BA9970D09F1E10DDC250E2AC3
+9A160EC8C9654FCEB36AC2B586E978D54744FC8A0E963D8EF6E228ADD22D093B
+B889C940206F504F14DD921D909BE06EC9BACBC23EB9E9D137FBC983570FFD2E
+CC5D2EB5D2A4A8604A4AD418B800EDC6B89809E00091A2315EA8C071AB631CCD
+04C3EA77541646B7F9D70B7EA564D92A65C4DED8966517660EFB9F77E172CD8F
+1B5FA83270898C3709DE964B0C4A899418435F92C13E94F5C1C5B9D7DF3E8793
+5F9E83CE1430E3EF275C26835080FD2AC78DE88BF65298A8EB4181F215181356
+A09245577F997AB5F23F31DB7E081C7385F461B083E96E3F08890BCEFBFBB6FC
+E597C3F22E0F0F7B6A93C55879A8EA022411E0C1864E987D2F00CE0427E4E8DE
+D92F9621E3F7751A3CE5CF1EC306A78C0D1CC6781A016A285C0D195E17B59A63
+C593D2DC78B6071636FFBF968B8E7970871E4B60DF79B9BF341528C4F0C5008F
+191FABC891AD46A68212B20FCC87E25AE386DFA935CC1563EA96F1339B6CC859
+CEA88CCE5DD0993F19E3902D9683ADA47980535FB5597CF57C046C48E0D0140A
+C40AF806F16E94FA0C046C0F32AB5BE121A7157A42654E7C1FCBA31379FDA9F7
+BFA8A0D0384D3B29B9DEA1500AFBE314EF78B201E5F679AA38F12A87D1E1512F
+F71D12EF75F3DC48BD8BA01A6D091F0C5B2B961F4371E588F79C825EBC124C1C
+E334BD4714EDEBB709068CE0669738B49AF675692317C3E530C6AE57CA21B59A
+0B542AC77FF404DEEF116796DFAF46DD8C9290CDCA4A16FFE88A0D60ACD6CB47
+440014F30DA7C27C199D99A1E6D89D0A0C31CD1AD4891668DFF5FFFAE992F10E
+C7B88872E9AC808E0663929D199AB424136E03E284D8F44DF9235246B9D22C9D
+79BBFCC936171A58B943DF0EA5ADFE2818992B46DF97AE05915E078FD6AAF8B7
+1047AD85A1CB13CAF70D095264B8AF9A3FFE6A603B10EFC6A20DD56A9947DC94
+06DE0A6AC5B655C71870FA1BA99322E51D46A52D3E7AEF8189C9F1DE58AC9833
+7B325CC59375D0F61488AD740909A855DC069F260A465080F5570CE7D41CBADA
+47C1AB404D32CBE9E1B8220A27C8003ADE08A63AB714709CE4312179218E4924
+6CDEBDCAE80C39AC4063789B6A407EA9C19D12688DF86B62D63BC05E9D65ACD6
+CD5DBF04B896DA28B466D584426F531F4A3F9C4A717A0C5ED8C8CB4191E950DB
+CCD311A20B14B417714501AEB2F6F8510242AF91BEDB6D70B1A52B91FB3BBC8F
+A8F9731E745F2BA8ED8B00CFD8A93B2BB05DC2DFFB5EF265CAE08E9B046C3F0D
+9DD51BECA540149E202F9042A94113745077BCC293DDF27CEB36D7B0C78E1B9C
+0308C3A413492F0D59409D923BB699CC6F59285CBF31CF7F1B464AF4BC054880
+B279621391D022E71427F275BF550881FEFF31BA2071293421FF99BCAC2D5483
+B7E56EDB7929BFF410A35BC193DEB96C4A1894D3D262DDCE224ADC5C6E85178B
+40FE0E15AD22D7B2F6D066B0DB42E32B026967088FC62BF250842B195D82AB30
+4A5263BEC475A33ADE6EF9B4205BC44543AE6912F1B9BB3D694AF8E9CFA440C2
+E2CA5DD42B637763D9C96DA8DCE38246532ACA6AC4BD7B8F2D348A0A4BBFFCA3
+4CF17A22BF7AF3BC490D254639584011D9D515EEBB719246499AA89CCFBAF34C
+77541F2112ABE03FF03C5C8B2BB07DDA99390C222C7CBC96AAAFAB4EE6391224
+6BF97923CCA98DDAF09E5E01C94798C4AE609E954BF1E40330D66423C3CF96A8
+F6879E2135374C80689F757F71375E333A3582C2886F0615F2379DB47721F6B4
+04385DAC971DE716D5AA2CA014EAE9FD0859A89CC62667BD404A071154F7015C
+4E1C734081F61F33176F8805AEA5A95E427712789EF20881BAC36C6190971AFD
+B876670811FEB1DBC25014AA98D3D0D9A29CA7D853C8118DDE2DC2402DC99211
+438F8A380EF1BD24B442988AE5DD9FE3A87B54BB834F2AB8F69241E7A10559EE
+9E1F3DD7597A041F96313568639B2BB50A76FE62D7714AB955DA07C374F642E5
+2060C46160DE1F11ED73A837DEB4EF5FEF9BA654837203FE8BCEAC3F500A0957
+9E673A257569C4D4E6B00BF84FBE1A8C9A566A77B3693FD20159F95F66AF9559
+A80D47C776CD363E299BEEE2D5BB9B10B58B1AF2A76242D59997773834D8945E
+F42FBB1E75B90B6BDE5E4DB2E2FE96BB5B8E485E42682E9F4ECF97D61D441707
+9D2DCF09A0E67F4027A9D1072FA8934106E9D7156F7333342BC640D6094EC706
+5BED449D636E42046EEF2AE810351BF1E38581FC71D1BE17BA690B2567F52A39
+1205F2704B712B22C4AA4684CB74785537AE120F66EE7FBB73A8C475477E1E83
+8D6CE79D788B1AE7A159013A2E070123EBDA58BE4DFC8BB39C3D561E2A2917CF
+1B3F64217ED680EAF63F04F9415D7F9CB6A5D3E0BC2A6EA4165E69CD8F93727A
+4F4E9EDA653BCA0422BFECC33066DFDF3E4AFB32361ACA3A0C339E1B4B1F99EE
+EF4C3C3ED1FC3E7078F7FE282F0F6793A4C18A484F1062F780D2947F2AFF2E84
+182DCBFBE1BA25E8346045859715EA2437263F6CE83BE0B858CEE6A5CAD60BBB
+45723E3858702B52B9AC50EA918DACB15EC541ACDF19782024143AE9ADC39A0C
+AF0B2E4FCD4E97EB36923F31341B9D72B917711F55F4ABE40E6B5F732D46C76F
+02BF82C68500194FF7CDEE3CAFE3316C4643295F769C4BD964C3BD4196F7DD45
+EA2E80DA6C2B8A23DADADD50BD28E2DD1BE5852CB88CAA6FB71C40F8EECDA3BD
+CE874BAABB668133D5001FA651BE928981AD1A8D95ACDFD83095F12B3E460DF7
+2B68B2C84DB441EB1ABA2DED0E9BF8A04B1572284498AFA3F6DBD1D4DAE8D4EA
+877B0AF0944DCF4B6F6B55ED1D99ECBB2A7393DDB4634FC166A47B4D5236C543
+F066200A255781DC3E2E583A0288C1874BE8C25A7C13214A79DA8062B0274429
+57264A9AD87F246982C80FF9E34473082B8A836A0C83FBB736DA740688432090
+3EC63BE175131C8CC487F76FF44F247B7951454D01876332B4DFC27CCEE5476B
+68B432744A0C3689D1D79F2B876A30975783B96F904B92F39D2D3FAE7ACB1DFE
+A19A42AFE6A2318B0E3542440A40A69FAC261313DAF36C61FBA307C908682BF6
+658BB9FAF140EE91B182D763130FCDF172B811359D669E86C106679FADF3E2C1
+F83685B6CA73CB8E1D58323B6A733EEEBC0323A6F23BE68E5977EB3D881522F2
+0E49440AF248939790089CD9615F24D9370355054A7077585637E6D80E13574E
+B802422BDE06ABFA0D1601D78E215DEBFEA118A5CB82E68C5EA656FE97A5E1AD
+01A8CD577848C5DA4B9D780BD1B0B4362FA271BEA800890613D8247171938596
+CEBD54A77CA281A5326F2E6F6111C5CB507FF35387ED3D870BEE3C9F06E6E756
+7E84D952B39B49905AC2C1BFF606AD3C07E45A768BA1969F865C58F3455FA101
+2657884B120E69D4D515F8BED9D9FBE928CEAC720A707BA004D95434D4236957
+86A7AB03ECCC79A9D33039559291483B27C66EFF11B3540F7A0E8716584BB29C
+EA6259399E5FE1962DCEE55E4AFE699A7BE7E2C5081D6F025F66E4A236E95C01
+9ED2BC2B369D0F7DBDE3F53DEF90FC9F29DDADA413EE3589BA2C9B802F9B5F44
+E00109A44BBAB43AA4E86B63C6E1FE10E8C7049EA6ABAB908C0386FC64BD8C6B
+BD8A089A521EB06ED2F433059D5AF5B4E1E86D6F0ACC65A5AA9665651E82F38F
+10ACD33897B4612A7D0E08C92FB67193C5F16DAE8017F3F246E509422F8AA656
+ED88EAE8608354A2F6334559DE541445AC1EAB60FC9D4A66110AE5DED90584F3
+EE278836F121144C3038D3B47D9751E0E2285085544558F53464BD908A71B94B
+57A71E94C110C8D8DB565A8C6E527BF7E7030848FD2BA4E6748459CB4ED3D0BB
+3017EFB793B2A8627F7AD99A9602161C8FA3B0A8B89334D2082370A87CBBF01C
+5F420760AB1F70F2794B3C98CDB70BCD5F437BF4593B1BCCFCEDA9577FB496F3
+7E86D7D3235A4CCB9D4320925AC726AE1A27113235E24FAD6CF43365609990F0
+466CEE79F0C0EDE02D2102CB024C9DD90E9863AC9F2C8A6E1ED0C4A2193103BD
+C2426B358A2CD7ADC8C1F875D672E220883FFED285666956EC8CCD2F6D5BBDA9
+4907A3E13EC09DA98DEFA48721B1B1E140ABF1CCECC3D17D364D5CE4021B8D28
+546FAEB139027DEF6E4A11312A6357B25B6601E8F6816C413BB16D9CB7535E89
+3CDCFD4A08C51D5310A114E474CF1C48B06C87FBE85E2186D1B8081A3C9BFA67
+6CE5AB3C5ED7539F05344A2A061F5D409EC6D03E5769BC69C6BA042714A6DA0F
+890B03838426C5C69D393469CD8FC4BF4C5D7BAAACF20F905FD7BC3246189A36
+E1EEDEFD3F488362478967755E9C2476A76E8197F91F855586B9D8D8E79FC4F0
+66C4D6E151ACA5B821C74BE4A19E86229BFCB3EEF07A2F6DD59F4CB5511FBA40
+378633B1E5B6040ADCBBBD31C7722A828642A38E80A42A90A1984881D9107671
+91F2A5E50887AA1B0D3E96673A3FB85D73EA75007D7E30D21C54FC8224944F8B
+6FF866AC71499C6F5F38A54EA4269AE591E9BE9543FCD72C49BCDE00A2FDDCDF
+130133FE649CBA9A607428F71FD761EF81046CCA214F7DDCC1A0BE0EFC7B05BE
+85D1DF5606F398DDB0413766DDE50E614EEEE1EF52500129D3C6E25E09B7594D
+E5F86EBEDC9A262FBC012BE5E4044B64E8F86327FB10EE5AF01746A46971BF45
+73A7804D9FBFFC791A2B38674EB34688108D1A05C6A58117CF47CE531FB6B84D
+7419C0C6A3E29C6BFDD122FB1D4675D2510F27032BCBEC6BA2705EBB37367CDB
+40EB8C8ECF19E2B507FA4B64F1C1293578380F289D6F006E78428669BE48730C
+9DFEF090304F4EA254E12F422316BCF1D3BE6FC7DCCF5963A646A909380BC6A2
+32B67F5C312FEA9A1AC7281EFCBDB4D7ED9FACD9616DBC2B14D513BBE956F29D
+191748D03650D722C48A49F12CA6A7C5E211E526AA7071D951511CDA58BD0CD8
+A6F821F4D20C219BE6DCBEC9C04B61CD7EA0BDC7A528FBAF88A5003DEE761F17
+32A465D05343ECCCDBBD9E410084DE2EA145AE58482B5EDEE78A4BECCA5D50E1
+FE61847CD91FCFA32C5D83F97651FBE30DFD72BD9536641298F062669FDD8FF5
+06F837C2927B3DAAA6EC88DDF23FAC5A77A4D79E4D6501288458897E6682666F
+C94EA8ECC173CD268236D759A04337A123A5D499CE0328168B6B13E6470200D0
+725B87023AEEC48256D4ADB2BD7B6C960F2C6BDE3D2DEED6EC5C270CDB33195E
+78CD19CCE6A80C7495628B11355F2E560721C29AF77CC7CB9B2B3EE5DBDE2185
+47ABA4CB28E69F351FCADA2765CB7457DA00A683EB485EACB21A3D72CFE027E7
+3FAFDBA8B5A44F46F817690D484E5F57C00B139B5B8195701CEAAD3E0C4E225F
+369AFB09115B8CFE8B09A31AA43CDA4F6A70C188183A7695DFC0E6FE024DF9A7
+796933FC2F94A70B64576B8DFF20DB12888E0C0E6C69EC10A3787DEAC56DFD0B
+9DE60C1081EC41D49B63C8E93A29657DD944093DC8E43BA31396F7BB08D6A773
+5E6DCF48F5FFB922EF5C084592914AE4D236F9D227CFC55CA687F1FDD8BA31A6
+309110D25EB61F5882A6B3326D3FE04099B986DFD407D75B21DFCEA02551CA95
+2C8A9606039BF8C268CA3F761274457F6E08260529E8EA65B16BC30EFBB1FF0B
+181EEED4230A43529E2D95E7ED03CEE2FEE295B1616E6DA77F50EF6190702BA6
+B0DB00F3AB9ECD4561DDFC45B4FCF78F81AA3132C273F4FAB4839DDE5644DA35
+1504DABE027DE826F331F655E28D7EF3BD8848439F4A265D5F78A20B8E626DF7
+684B174333448C107EB6937F8E9730A86EBC26D86415EB8B2EAE82E384882822
+C03090F25DB59F163596547E62A25B4C5A514447522C9A2DBA21023D31EBB946
+51DD3229B562ED5604E4D85D54D17EFB6A03AB5C59AC2E1FF5FD951BA5F85419
+90550337BC83F44C4C503609AAF3EF76845C50744FD18571900164DE71BD06C4
+CA06177A36EEA8C1BCAA73D5468981227964ADA6C27B06519421D000C0E1E11E
+B210F818665010B3E8DF82277C8B1E6BA61D51A87B0B1175E75A6A88BA55CED8
+C564F583090C12A3CFE29303CABF1E88819F226D8F29DD2C2D999A35C8121ED5
+15F7AE050E5ADFEB0F8A87065A3FED16AF811F7A74B0A9AD18F2F6F5CEC824CD
+FCA9781998B67088F5D6C0203DBD9C43D886844B9C0970DA4BA88799B4ADBE5C
+2E2B7D1EFD3FFD0FD130E544083FDE0E3793A354711F1D6CEFD8ED99CD29A5E2
+32F7B1EB4ABDBD7D86FBDD8B9D22C429F1C50277E859039E8E6D6A6F3EED2CF4
+4BD04AB88B70C071175FC6400304EA0BFBD02FEDA05CBFEC31699A0A244986C4
+C688E733DACD7775386DD2CE86716AFB5EC33EF1AB10E63C85B820044A540703
+9FF2DDA0C9B0A4F90970DCDCF75A022AF83013DE7A3D9E544486225AC1601CA5
+21F356B84BD903067AF45598964A0FFB06DE209D6569D00190C0140B3F2B6D54
+C9172B77422B25001D50BDC26DB1705CC2A2C09C582E1945BF8D20208F505FDE
+DBAB67848B8F29300EACBE3F393B2648EDE71F5B3ED721F81807B7624A7D3B75
+C458A8211FC0CBB1D2125082EB9E0A37E468F2FFD1866862D3C3A2CC9D8FB07B
+0B457AE1A3CC54474A1BCC93CD21BDAC95A36239DE043A431839263509389733
+79249412851DFCFAE1B2163738CA5DC64AE5322FECD2F1FF852554292DFEF94F
+BE8ED5A3E72E7F8DBC91EB990D3C055E4C91990D389C511747D8D7F7BC33B34B
+F3EB81905DAD0E88A31C0ABB4CAE612F7911E9D338F3F5498AA389C20F30EB11
+6953F4AF288850CB7425349719DEF18A290CF40B27D625207FAD6557F80898C2
+EC247A4FBCD884C459DBA0D3A083EFF8D0A133C0597CE5B2B803933530EE1C10
+A88C85564AD8F7CF7BE09AA5406917E26937AADF884723F1BCC3D5B4171074B0
+B21AE144538B141791B901E3A12E7B4C26CE3ADC9E2A80305F6B983F8B3262B7
+23981BF5DB92443B3CC866C0D17136D3C045036F2C7F39C33536E4A09F76700A
+E1CC6880D251EA090FB88F555FCF201D4707CC95169F6AB9878A2D342DE5BB38
+82A2F02186490DC055DF783118EE78C1E02685E4F05A0616CCEC0DFAA9ED09EB
+847E2F9911D2F5276538A481A17A8E9B2A25D63242918A78F920660B2D77B7C4
+12DF7F369BC3DB114A7E9CEC7993598FD71CFB92DFFD8359E22AE1B1B124A856
+EC29D9F05A660506D49167544588FA9BD8BF8D23D9CF6559180C532680B1CAF1
+9B776E24F1F8DAC95083EEF00EBBD775619173F7CF4139C45804C23C0C736414
+303C465159DAF5CB5153D9A6638C8E31CDAD0907B6E4BB41555F8E0FB5B799CF
+BC46A80CD1D14ADCC7EF0D2E16A955CEAAAA7554C70D27328B4DDE0EB50DD8CF
+62E2A4A40740F5A13DFF032AC5FAB6EB0AC3F6AAFC32F0AC635323538E91D8C3
+FE69E72F66ACA72F289FE2A94B699958F5123BB7864AE46E1C2BDEA67946BE1B
+2A65EF0D2373B40FBD107E619AE03B2FBC3CD29FF68BD79F86CC6CEF3C354C3B
+08825FC1A96E2A993EB37F8B2DF2FBCF2CCCFB032351AEEAF24950E8F428FC67
+A6F668B6F8956411E70AA3224B7E24FC18F0E9251DC4E7FBF2FAF57125576412
+33BF3AC7B1EE19C164525EC17483F68ED41CBC6182D882799DBEBF250E9334B9
+1E201D5D08BAF01FAEA5389AB934479A29BCB99F3CF8D9FB5022454C6A9CBBF2
+05EC3BC73DB4AFC552B8148F42774AF8392C5CE42EEB1780E003F7F5D61265E5
+EB18F7B139EDA4169FD97593C10CCCADE160437ACCD537FAE3BD1C0C10A6663E
+ACA01304DB5EDBB612BF5DD24CCF6D1362278B3BFEFEA590B255D2DF95AE4193
+3F33C268C47B75B9D008B9F5E17E7D13EE72C1030A05AF676FE29368D4847055
+B8EB37074295EE705B9EE6229155E578BEB24A8E0106D20F475AC4B6CED93D40
+CFCBD74C0551A1F532F2E19923248030F3FE1A717B9A9AFD494918300A396DE4
+3A2544B6C6A8D8FF2E28B4711AB72D25791B8E8FBC57A698AF3CC9F17B18F07F
+A86CF80D0F4ECD065A579743FD7974877360CD910B1E7BD3099B4036D6FD0BC3
+A80C96598B59B8AAE0BE7578B7A68258A1F6EEDB774FBA7FCB4952F90705DD5D
+F8A0E1B6FCC7220DBEE1582A9168571A80D95C939DE1A3A404DB4328E107C672
+AE8122A745C918280472EF626D7137AC72E88A296174E5CAC33E59C955A55A2B
+49970C8D84558F3CD22F53942959A830FF71FDAB7A73E0F64210CE46818A781B
+071FF5CDBE768ECD3D6D1BD52856C236284B4C0CF40E377C694D74D165A61DB3
+192E4D4C197EBEFCBAD48CCAEB50AC8A4D52C2C1E7A4930768FE6AFE6D286F70
+BFAAC5295CA89B6329FAF994B8013868A7E9F5C6D6C71D667950996C2DED0B80
+7F0A8F1A525397D9A41AA2934D3B8C2441C010888154A14499DC6D3A0F0C247F
+37D8FB45847AA94F37C8CB299D24F608F01EFF597BC9026724E200BC00629354
+21B2736A497796630DE340AE317E2B04F20482EA0206D01F90A83B7A56E29474
+5F0196DF23D2E8219E681908BD6D2074794C620B2330FD5B0E6AFAB092FAFA45
+BB2ED8599166A24DB77ADC449699547DA0B6683BC153135FFE59D9E650E78518
+CEB174C35115A94B8689B16AEA36D25A49B694D5B72DA72568D8FB2E10878B93
+88D754D6EF8E035ABC26382C2FA13A75040A1B332C050044A81441238859D8A6
+0A33E2DB068D8F32D3047EE64E31A6E79D9BC344A8B498823519372F5D9E3310
+7809F989C979BE5ED9F8E2CA6E0FB8C68B39BF957C8E425860D6B1E75DCA7867
+E044250791F3757D649BA897246E233A8D7B686F137EEA37251001F008DE01DF
+BCD2443819603C03EA1301E4D809B32DCD2F525EBB839469D0F764FC978D82ED
+AE597DF1EB131486B00F65BCC29396FDB8F75728AB03E71911C74E5DA6DD6E59
+8C4B1F45F77854B200DFDB656898CEDE1B7DB619B9BD75B90C075FF88E1BD95B
+5314EF039611A4A793C31FF4F2FDE7FE3F9A51C6DA4080A7BC7DBB1D7723488C
+E668E78E025B4D2F82C5E663B02C5024CC35459FFCFA5C5BE9C9BAC09020C603
+AB653316994DE4EBAE83A2BD866D392B6D46D83B9E7E0DC2AB098F7C86431D31
+D07C1F41955C777C635B022CE5F2F503D0D812B3318E9A792E42CE4926661CD2
+950F1A3855D694B2B061ED5CC64E6EAEFA1081A5CC322FFAC259C01D272C8A30
+4416D3B622EAD1D1B2B6BF7EBD395AE45922CF3956D9E9BB557E2783F5C8544D
+C3509410DCD994247B50DE3626C33650F9F76334CBDDE3E90E9D9618ED5A78F3
+FF7A6D01071AB4BA91FB47BFCBB3B8E54528E6540D75BD5EB6A4E301C2B49330
+B6866A4BD4AB5CDCD23A8BC873D212C2A6592D62EB573140A6B79EF9ADE701F9
+9D2F8A7205A36AFD20572C1A5C5F55FB8FEE492D999FDE3C641BD8FE201F7975
+2D9EA9C65979BB45D2EB33F5C3A85573834C75DF4556C6254A90C7499F684D22
+7B434CFAAF6C118DAE59E0C79F327F4D8D260D9A633DA0B02079947316C84D88
+05975C05A1734C88FB0A48BB85F87560F1BB214259EE46F5F3406E418B6EE281
+0F93F058DAD0F43B7B0EE4F7C809FFC30366560E98DDC13D82DFD58C0F8BE287
+374BD8655C4691E39F4660F5273E5A545A10BC582D0592CE2DF452D9A8731351
+54B163AF681FB97288647058DF71A290D1EA6DE31E60A4CB7DB4AD2E2928D738
+3FA9E4801278B8D78664E5E3F7691783F71AB1CB2053567466D21CDADAF4F97D
+4DCCE8DC1CDE465AF48A37E21DDF443906F91731614029D6F3B8ED69A7F77800
+F3C6ECDF7BDCD03276CC54E1237F47EAC383742E5DCE2346A715A8CA9A5BC487
+0A996E7EF0F44F349B581C7E537A3968492B28CBDBEA4CAE3E6E34550AB706BC
+220354C6CC45F3EC16CC1ACDEB8FBB25873CB5DEAF3072312669518AC3BCF57C
+500269761D11BAA25B73C1B4B0F44B1F085BDBC1F849225A14C30A9FD245E72F
+DDE99E0E31B57C3C9F3170D0CD7C5FD0CEB32A379F0AA9F32CA92BAFA82273BD
+FC8FAFDC0CBA3EB8A074F78A505A52619D5546E5FFD31640D1E14810172184B2
+2D278B5BE71360A739C949C3D4C46DB023040A993519A8F24335BA854460F51E
+777771BB912A3900BBAA2258D178BB9552FE18E4AE9A453D89A4133B5EAB1061
+6182B3C80A4CA11A7B706E44DE5DEABE7D80DEDBEDDCB304C548BFCB1A0C17F8
+06899F6C5ABC9DE62210C390C33FE92665477562A97AA07D16173CFFEC45736D
+C6451F1C6B64AEC235A0139CC8A4DC96847470CDF08CE08D0A58583884C7A35D
+DBADB9DB07C17BE52B1259DF1841CAC042F9FACCD3590104B619151B34EE822F
+B4B753A6A8198B0A2D6EE580F8C4A21FDF415FEADBE7AAE5C59508523E9BAB02
+3F49DB2E19E7DCD504944FB0FE660626A1CE5554728C1ECD6B2AEA7FE6C512DB
+E056AF6C1226A25547A8CEDE7C961B158365C99E574A0D6B81B2356364A61664
+B92D006607E6167A4002BBDF9951E8251142C4DFE4924E227CDCA028F6A42C33
+4011F0CC83B59E5852CEEDC6CAF1A94ABFF15122A698E5FB6247DA6AC6A8EC32
+000557DEC06FE0135DBC6B56CDCE6EA59764AF9E7E5AB79CC1D71ABAB2BF1916
+843AE75A64C177ECF1BFD83F713CFFB6278918624FAA4BF2B5FCA38C634E550F
+FA25E51768F931AB7D2C2E3000FCBBB1B1E22E7381A53C358AB4AD42EE7BC991
+913C633CA0EF25B9230CA9681B91D22880BCF44D4FEBF6F132FE120EBF104761
+6FDAFE8F33FCD2248B12B8BE283B37089B0383745324EE468DFBB3926A30F4F7
+6AC4B9EAF19D663BF1DE3B085ED88D9CFBFB36C2C53F12BB1FC55E3234A68C3E
+D6EBA530B8D23B99D098521DD3F1005D4F5E4E333E50C5C9F607D551019B0110
+2B8A931F27824ABF72C26615FB82859E6D527694EB41A17F6B08C9BB329AB6DA
+16D9CDBB7F00A0286EE119E7AC89A959EB16D9D06D6149D0C073D771B67E7BB8
+CBC6A3FD291BB1EBDC68428214BB371996544FF8A4F38A672AF2DA2F820437B5
+AEFE65350F6327F1772C9C9632A517A0EF4CB5C7ED1159887BC65C4F1311D1F6
+156964E2AF01F91CB4DF824AB0B3409908611FDD799A12C51B705E6DAD1BA8CA
+F0066A66C20A8871EFAFB0BCA7A22DFEDD54654E0BE31767BAF9CF894B00B435
+C9FA8F63F32FC2F23C80640C0CAA01BF46FADBD147DFCB10B988ABA1F2169AE0
+65E5779FD0FABE6A8C60F166CC1C8EE6EB1532A8491FBF84A824125B436E455B
+01C64FB89ED5AA77CE3148C135D76837CA45E7EA92EC857AC3A5B723DD7DC830
+CF1458512499217162FAF4EDCA0195A42EE1721482E56028B4895ABFFECE721F
+CA5FC8BE5DB4B7C6D026BCAA58AD7B9BEC349E395E16B897AD1404C27F0FDC9B
+5F706354C2E2F135E3A20B450D6788FB9AAAFDE95813AA09AFE116EAA7B9C76C
+F3D61AEBFEADB20580E3906E72F76CAD27D854381A10F56FDFA77EA5C8B15457
+E6278FA20742413B0BC95C1AF12E948905E2D8501E81BCF4095EDF9B941E1AC5
+E2B9EF45599AD38DCBBFCAD80405659D828DAC269825271518AE3721585DB57C
+520FAC927E8440B8306FDF0D2149B2CEAA73839A16681C6DDB6E596446B01BD3
+DF66AF8D7B391472DFE40B13BCD9C03A46B65814E06C2332404C4F1CA8D0EDD7
+37ACE6CD13620B84A3A80A122620E57E9BD33FAC8F2D9569A5AD18246A720B0E
+4EAEB68D73EEE587ABDF93F8684157595D5299CDCA11A72203B664C505EC8B17
+49D76E555CE3DC2DAD377D04A854B7A6066E5824CABD48C2F5585C4187AA81C5
+BA883542E97C87339B34823A5E32C83E1344D6D59AB2C64C6AFCFEC6767946FE
+001B6501171FB0AFD07D20840447E9F692A88C8162DD8E753D1D984B1893C019
+691930563E2935E4AB3DFD1437F4A2741636B5CC2AAAC5AE74E5181D28F643F6
+9DD08F5A28921CB8384E43532B16A9AA64A4537FFD1ABAB417CCEF27F373B58B
+2D0C78D40078B03AC3DCEB3922CBA12BC4CCCB6F3972AF9C16522E6B05D68B3F
+FFCADA33B2A7CF4445D6DC0E94BB089CBEC2A1603BC6F704C9107ACF0FFE1C07
+319DB0DABB3F3317E0CA977E70FE310BBBCA339ADE39E17A0E0644A9155ACFF1
+4E1C8FB9EE6E917E0830CD37498E3DFF20604766D25925576B599ED7997F272D
+11F53CE4000FFB0E89506A2E7B3CD818309F586966AB21C6226E70297FD093A2
+0A0DE3BEA5A2841C59DD1A48555235CA8B2654413E13EFCEC9C3D1ADB555EB22
+BD634C01514D76EEC3181A14C5264F5DD143A21D3626CB611F9F90D7BC05AEEE
+9F947743CA9429F2BBF30176821365D15C419B27A085DB7CE7BDD6F28ED3BD68
+6E91938951303521F260F7C1636A39726E03C0DF3A08942DEB17280EAF7AA849
+66F95D56116501CDA299E005A7D303BA09E9033CF45C0469593C7AFA2A5C9F03
+28D64726083EBFCF05DDE3564BB12AC5C90FB0786153D10DDDBBD41269FF9537
+836DF30F71A587A3935D91E24EB56403A2A4F5C6E995A89AAB2A42EDF8586C81
+52BD65DD33C8B10AB18FA9F93895FAA1639A62D553FDE5F976CBDB5059F099E5
+91BB6C1489F9C66E2FB7ABCC579FEF05E75083FB02D8CD2E4C37D438CB64B920
+81DD594F55047309C66258BEB1108B4A52A4AC52384E2861DAFD6DC2B0A88F6F
+0DAEE75B35222DEDCE1490BC77F808D56985E390AC2EADE948B377E051B2CCB4
+2CE6D1A8B6C56DFDE8874773C8D9E8EB0BC66E3272E7970621DD41103CC78165
+CE745AE462BE3CE12765A2353D89AD2B2C74658C5BF922A3A2E4E5FA79111525
+01A082205FC54279ED5F656FD80EA1E3A988E7EC83CE2439D8E9D4EA2EC6A11F
+DA81B6B259503BB7F66C3373A40AC6474A85B71B79A66BFA105EE8B90B1C204B
+5DC2D4EB387D4A1D36AF0AB4C2B20D6B06206DE70805ABDDCD7F1A9A6C3AA5EF
+1E59AD9703BF74A032B5F458A4B19E296D4770D7315F05877D1D9346DAA742BE
+C941D937156610F1075661F679BD680000E6F210DCBC2508D4EA5484625CFE83
+774073B2BCA4BCB71E64B3755E69BC6E39BF59341D3FC71BF0A97D3F139A9765
+CEB0FA137A1AA226BF329CBF14B1C509EF36D417D4993DF331BCB79F29267291
+D9523735BCFB3837839F26108BF833B1E3E4AF576A2045289860E7ADB936DDCF
+818CB035558E4C444D06C74D5865768C9CB901EFE53A92CD2EBAEC0A8EB15EE7
+867940DE7D7B61216B67FAEE1A72C06A916F3F2F7D766FB3ED6BB50A02550B25
+9EC6E7B65CFA667A505F200DF4CF743F37B0E876A0A5A6742A0329C9D22FFD1A
+0FE985931AD6A124A25A4340D2848230E73BC52FF698B5DD9A3DCC6B530047EF
+79BBDCA20FE02236C25BAA421995E202E09C41E24EB424EA401679B15988F8BC
+E1DE0C0838B32F0AD240F9C217F7E94118917A7BFCE878C423C0537CBA1C62BB
+3D7DE687FE49193FD2E8737DC18990772E1CEAF4FC5BEC50BD603CEA326E948A
+3ECAFCCF56346F9DCDA5C70AD7F1ABF751AE962CEE507A5489D4E86B512B53B8
+40AEB1AA263944CFF84D5D80CCB63AFFEF8026FD69BE94BEF7D15E07062B9F5B
+43D7420588F26015FD5E4357473C1853C4D600579BFAC96BA963DDA2AF04FED1
+2244E91B8A097AE961F45685B9159C8A1B14D25672740B5313F18CC262992CDF
+4E50C76B74C198955DB662569CC9C18432B448CAC4F8C64A3A80E7336EB29BF0
+9BD4BDBBBF1C05868296DEE024548D3E52DBF0A00897CC9E7A0AD30AA683A898
+6DA657559DE0EDCDC82986200485435CBED48A4A5B9B4416941A737DA4A43865
+50900743A13040965178B71853D2194E73C6BFE4FECBC76030FF25448D623DC2
+802B1CDFF958690833A7AB636B30475C54F34944976233E0AC952CE4593E63A9
+A5CA3A8AC18E53B37F8E60A3B8ED4FDEE0FE5A69F280CBD531DB0A9E36A1D80B
+19AA485604F64F7A2F3D0005A55927A7C4393190A09A3F386170325D427D01B0
+BBF1D02BED32E5E929C9EA7B8273C34BC5FA1CC076A0A4D42ADE112A24EB4CF7
+39F7CDD3F0337C0A70EF6858DA5D76694B7870C2FF84BB2D4E8D4CCEFBDD8BFF
+E650DB24EDC4FF041C21769FA7C15374F938467B46E518F2206FE3C70851C667
+D4F35857B33462A603AF8AE50E78AA616D699781FDE049CFF60AB24DC796551C
+D3E4B4BB39726EC682E8FEC0030905B89F2C2853D41D5D039AC6F68AA52D4C26
+217586E7CD877C011D0A0672F392400066FAEC7CE19760EA67D657FE5336680F
+6ADCE6A294F81DF1BF69AD6E55D7CFB4262C2EEC8D1348F3F707E2CA6D041AD4
+4D1F888FF99691546C3EB5E79C3B9EB73F50895B8163F80CB8BACFFA86E01CA0
+5953CAF2C7C9EC7BBC065081128CCAD4836699D30AFF499D8E00369CD6A0C4F7
+0ECD965091FDA3C2ECA853E805C5A55E36BCFCBB5EE8949C38A2D42C685E370D
+A1A9172A76874D53AA6C52D2926F5E5797B6A73B75F0F5FBC3E8D10EA913368D
+6B6ACB2DE7F528795911678498ED557F7FB6383B657D17C85B31BC06F1C0E908
+C212B0D11EEB8C2E61A929FCDC9C5F4F9EA9A1730E9A81EE313F103CF736254B
+B67AC0595FC838689E33D2F1922416B1E24892160CA8F04B502244014EC5BE45
+1D288C43D0D00FCD418FABDC7FE016A4E3586C14D22E1BEB4691D13E58C9E66F
+435A85CAE6173F3591B0FE2E727DFC579B16B2A95933E7854EAD8F8946A6E527
+E1119B0F029A1C4209F00F09E03769F00C7F13CD11B91CB07FC41BB31E6F1E12
+7917DC9E91E790B644581AB087D78DA43A621BB0C80DA75A08E09D7A6DD98AB5
+2AE5C74394B0C42BD7E7D222D3554215C6F1C04BE694B2A841BD9F606A01ED52
+B6DD7B7283C7971ABB732BF93CD11CD2C407B7F68DAB86E7DD380F8684F3F768
+692756D6879D8867870F39BC955CE0213E400EA1F40F76E46AED18C6814854E3
+AA2700D296CCBAFA4EF58C3E1163D88198845582F52DDB0641AC31FB36A130F7
+FE16F12FCB3D09E386A5DF2073C56F01A7A89346EC1DAD1038BBE20138492861
+0091D8A9F091616CCA67051700B90746423C002FDEEC4D86CB9DE72FF87FFA15
+B6E9A9B58A7CB8D98E3DAC7A522DFB45906ED1C58392C9CB204ECC263F098864
+2AD1E02CBCC95A104FC6DB30DC6A603DFFF7694181B4E64D06BFB3E19086B55F
+C653925A2678E6957CBE6F68F1DD12AFD9795072B122D72B23F0E0916D7FD554
+6DBA60BF6FB8D1A99822099BD96957381A7001EE267E773F3D9AC79460C5C092
+3A2EC8EABEBF5492AC3BA22D0D1DD5F6725D71B5B363D13F99BD08A114950A16
+C6C9B99FE48D05065AE2111B16DEAE00B1910B7CD0FACB1DDADF1E7BC57169B4
+4215A14F63A223979B6068967C045C7443BD920E8F406BEEA35897C3C9AEC183
+4FEECA6DAA76AF17EE3FFF748A2BA63DF94BCD21DFF30218DFE6B04853CA2D6A
+CC230131DB265BE32EE6D21102935D70FD223C79F7FD0926D68BE38481639849
+82FDFBA040734A19311350D7A74A895D8D45E177BEB8FE2A22B11FF69A9A8C95
+DE72184CA297379E7621F642815ED6C54100FC1613A18FA632739A5B2AD60D8F
+7B2B756528F96C86ACE4EF1BD851F72426EFBF5B70306A4BE758A15D0E367E9C
+BA0D5A378DE7EABADA5D75D687049FD5AC0033AC1F2336E5C716BEC683EFBBE3
+36ABF0B965B2317C681F0B7F4F6D8B7093855FFFD725EF4C2312DBAC2F715CCE
+0FD786A46D06820DC3FE7EF87C59D7D84D11E877808F590C5754F94C6BF2A306
+405D3EA8A1064CEBA85FFD472B72F64AEA7B81147ABF52C05D17D13AE4D32C04
+C20170DB4125F85FCE3665ECF7458169A62DA7A928AC3E58A5E9F69D2E051086
+FB380BF8E39D48D653D75C5C83B924449ADD13CA3493A7590E27B3D98D24E320
+2F9700C26E797D1F78EA39169074E365E62B9B6D730DE95DB3007AFC44086E50
+60C18957CCAF3389A18060FADA8D5C329CDB6EA2DF5C5882840A1147115ACDE9
+4357A24F095E2EAAF0D7201555687B56AD5224859203C059C63194C092DBE505
+6B118FFCB885E58F8D40988D2E14A73AA40303D6A935A97DB6A8E7D5889EB21B
+3A01063599DA829927380AD6134EF4661418DA85AC42AF2C455ABEC0413B3D9D
+684E852E69B743B1324F7671B8D75D815C2F1C425327B4410E013BEAD314DAA5
+FE193719A5BFEF3E5FAA0C5E4CA2B1EFF6CF921B56017526CC62293036F76E51
+1A999063CB2F93517614C0937BA9708728BE1C381CA8D0768EF314427A0DB447
+BE59B9A034A8296AE3F848C75784517C47D019141FABF56F2B110C6A768BF493
+BD5C38879397A86AFA7905804E2EB3AE253038E267098F3B7674C3510985FB41
+09A5E02E5F4F7CDAF6E12CB47346647A58CB05D9AFABFD5A9A538F947E205FE3
+C6480C7A1A940C21CEF21CF1EF48F15FEA6C0734A5B8FC23CB315BE3B420E65F
+AA895CF17377F0CBC197191B3CB8336A2588E8C26BC988BC6E51C67E21B64972
+7FA5F4F1E95CB29E217A4FC4998A54B480B7861400CEF84E18095C55702C8F78
+F3B8CAE65BD5F4DE369C583EAC060E69EA40F595213F8ACFBD6B55AD0F5CBCC6
+11707FEECC47B1E28C9A8CCE499E248A2B108FB29C309558F8B12EC74AD295B5
+B5E8072C15AB09FFA698D0265B38F88D0D4724528F79A97776B8BE04C29E1D16
+703A23EF60B67A3ED14EF29179FF9F719A9F274E0F73EA8CA198F7053B6E8C5E
+A912738F68128EA32E2764DE57C99080482C11FCA714412D3B6AFAE4A2C9F044
+721C372CF6D8861182DDBD2BFF1B2FCF894F0C0799DFCDE0D8083E16A855E2FA
+D5E660989B98A7A9F3057AC99B76854DA2E75E510AB2E53C6789750149DD1438
+367D28A8FEFDE2042BFE791D28ABB435C807E7B7AAAE140EB065646207FC75D4
+559CD14A44E0DF2EBEA232A4057C72C65A595905A56F2C2C0FFE326EF9B3CA7C
+C2CC7F3A8BC588AFEA2624616ADE803C1D0067463F4DD78C97D2616E14562D70
+AD7BB516183630C1182BD2813D8E282B26B18F4C1ED4FFBC86A090A036E54877
+7DBDF63E27E7446304BDDA5D5E5C2DB68374E76D698CBD3657AE037324A75E16
+B1E656932F8C7253C8F1EDC06642D8F74612498F9ECB96A9375152046C2169DF
+9B3D0654663948351E48C0EC24E9D691748DBCF758D60EA3643623C7ECE568C5
+5168171E8D2ED9BA5049018DB73E2EA3F9E60683856D3CDC4F0C930BB1B126E8
+AC776C33525BBC280FD87904D5DFEA512A3B073CBA5AC823B3B2FF68D289C558
+58553E0EF0617B4156665007C8895492F2C19AB138EEF10A977C9A61AA554866
+32F446EF885346CA0372C001223769F7C01CB76977EE84E76C178FB444E33804
+B4E72782ADE86D811BD395A15C329E11973B021C8882969DDD5F9E4B3FAB0D2D
+60CB9370DC3000772E3263E693A4699F2EE60E4C022090F4273F6134729987CC
+ECA36D229EAD946149831037B9701B0C50FE9B4304CFB73ADF8C829D36F285F6
+FF9C056045A0369FF759FFC5994DC0B40B87E547CC46274BC40823C22D90B9E9
+D01F41FC59B7BCF259C4C2E301C5F7EC3163DB07FAAFCE8F0CC08CFA7A07107A
+483779E4DD39EA89B3B9CEA198765C6A52BD80C624C3CCEF16A6CF3E21FA1BB5
+BA78FB5AA13759CE5D822DA725A07CEE1D39E63D4D86FFB30FA1D070B27D34B2
+80B335AD7C86688BAF25B2FD2910A2EAA186C500120AC2898F66AED320EC43C2
+1C9D8BE8888AB84F09D16B61167FC6E42DBBA1D3DAB971576160E8B85FF5DAAE
+F37D9872B22CD19A436BEC7E7C27DB2D7F7BDF4266E515516C0A2F8A899BB1B2
+D7D5811CE7ABB71AE427FB019D07E0BDD635D3527D677620275525781A1A9F8D
+B339C3E4D5817FEDF135EB150144EC6FDA234066FB0082C52C1A851CAA19AE8F
+A1960216743A9EF3B6CD2CA93FAA3FFFDA3D144DE465DD11AAFECDBC9A694A76
+93EE2F2B10E37D26F2CCE520D0A358E13A541CA963B239C132D1680D147AD8F3
+0E162C56D0F4D423890E36A2FCE66C11AD14B2FD4F7B84B2197AC12B49DEE166
+6C157079FB2B538817C030506C318698C10A5C4FF2731E31ECFCE48282398A79
+0B3730964A1D7DDFD6964E62293E2E6D35E8F9C9C675D95F375F4714CDF5FD59
+5A506FF7FCB08A9F5B9F3989C847C92AC53DBEAE739E2596377DC1DA1949E7BC
+62573D838E4BE9D025946E1C7F6DF511965BE847FE138E87A646FC1E1F43E822
+EE272145B75265C69C1C9D8DE3AA9F9E3DAB873A8146D7606B2DB7AD9D815D68
+50ADFB48776F11F97631AE5C59B4AF8CDF8011CC76D8058AC70C6826AE88D109
+F50B6FBA868F63EF089F428873E6E24DF8DDC504CF34862BC1E53055B3DE8012
+9F86F50B0ACD428124A97867C3B51C83929EF73E78B78F8D09A83BBE59591A78
+3182284C7035875981A4B68097D9DAB5A1901A4E398B219089554DDEE17CCB46
+94FDF29575367973279C4676D9864B0ADFCC0B2A27405B5144865352209FE496
+020017FD425F2A84A5EA6D006A4B0D1782C7C9443BA8671CCA3B30F3E7C0CD48
+5806DB28764F94AC413A5BD9DECA1B119900A82D3009499998C925377D637052
+57687CE3EF5B5EB49D49BE3AFBD8A4531606AE86CEF07E058CFDC4FD1764C9FF
+1DEC0ADC674C30DA9C9A24A4267A7D694626E9E9C9AEAF66D0381854AA05BD14
+177AC9CF2A0C0677F0B8F496F325D78AA336B04CEF7E6ADE30569A4DA09B2847
+F754A24E3309472B0B50CB43181E56D7AF316A5E9044DA230403CA6E013C0D85
+2CE3D19C611DD70D79EEF35ACEAF797AA94A6B4C52E27E140C43BCA68723F2B6
+DEAFC3117D4652F9ECE33C4C51F564C464428ED27B302750C0309EEE5FE0483B
+182F1D43D8F7B460BAC7C0D0250042013EC0C3AEB5C4FD9F882F9A3557C15DBF
+324BDDFAB515E1B069F210F96F6648A8F96F9E61A36B2F7E2E06CF67912A1869
+FD85F47B84AD9E879BC4E3C48B39138406C6A2549AEA55F7A9D79D9638F97151
+4B0C7A41AF770C575CB1327FA3BDF66D83600F1271B04D484BC4285CBD5ADF0D
+DAB6774C8F0D60DB4C25081F2B278D2C11B21501A840E68E2DA02179FCF9E2A7
+F993DA9620880EE6960274954DAC790372C9D831C4604A07EBAB27C6EF5EE84A
+0C99613EC5021DF782CE12D96EC117B8997E1BF9E783A5737BEB7306FC4D9F08
+CB92A999C8B13CD6A2695190132BD04B94222C7B60597CBC1750F4B189B9F38D
+04AE51084F7DC95A39B008CBACA295AF18F7C1FD5174F5EC78D11E1154A900C0
+EED0392B0AB46BB3993EE89F05AF25041D71C0BB35B2FF71DE9D842B9FC98CB3
+1375B5F2853D18C64DB633675D37E0550BC73A47D8A35AAE5593FC1297B21F68
+52B6FC4BFC2A4C58A8B0DBE73587DDA9E35A1E20AEA29E3E1D46EC0B6660522F
+57236E7EDC9C1F91ED36871B6802686092E5E4F98A66379DC2ADA482DB15F522
+1272B394721A7ADC446E9A5F98D401BE1DC712F010DC17845DF75737D6C4794D
+51806744F84A4D7B30B198AE46C46D3DD71EED74A96CE8791AF292F45104A055
+B651BE40EA7FB93F54A8089FD5B624DD3B7F29663229A8ACC91BB7D07F71B017
+3530EA873B77C0298087D3AE901BD59A71EFF85A8E490FF120C6DBAED5B67F21
+B8957374F7FF0C14BE5459A40CCFA987ADDB03D8F4E507554FE3ADD1301F2DA8
+BB218724D4F966CEEC21A1E28C39F3901605BCAD62E311A4AA9C295A69D51D0A
+8801A26ADE83DBBDE01D65FE1F1C26255325238C119C6D6190B5979FD7337F12
+57E2695B74CBFC9291D7DDDFEF77879C8331BD21164D5773691931C4BC15620F
+CC55C7E3B130091D42F619069B056167074173B8C19575274CDB7D2D8C1CD4A1
+2CF2DD3D8B0072DE563541219857CD8D94068C375F33CB5B028FA233064E0DA7
+4DEFF8E9789A8EC86AB9E57B3CFCFCA9DAE4E27C3DD1EE9009215B726FAEF03F
+21CD4A7B32DC8889A8E68A0D509EA68101BD2077E3AAD72C003C66C80D566E7E
+2C1A022970C6CEE4185BF6299B9025162CFBD33E4DF7246382BA2449EA5A2A08
+DD4F10D8A8617F4033ECDD7FBF55E537B099BFDB6E6884D0835E9F58857EC91C
+432930F1307C5D7EB390D8652C4D981C496F1BC4D898BB66B9CF804F7BDC41B7
+4FEB527554D00EE0EF56862355CFE59A17596CE9FD737932496C67A339034286
+62D3FB833BFA261B632902AE3AD8D199DE5CAE4627EEED4CAF7C60FD50AE68E1
+0F85D679C10C52AB4F3B8848B5886D02EEE1ADA9E292F2E2EF40EA1DFE567733
+37FA902654A3770E2F108CCC08E32E3985AAFAB55B83D5BBCDBBE61DF5E378E8
+F64BA772901333C57B6DB0EA3418A923EA2D13ED7EC9550C71B2444EEDB0BE0F
+0CB182CA3D2EAB214840FBD18A3DE5DCA551B6D4E7BD9F8B3B2C7BF11F870B7E
+B8C594704BEC50165234B6D41161AF9B8570F4BA6EAE2C48652523E275738F8B
+89C66E1739C05471C19ED3B2D16434F22C25677356EF8D0B01A6A9F427598523
+4FEC98CB244F58953AD560113C038000F8F7650C0D56A0BB12E391762B3B4004
+E2516B29F80D719E8E85014C23E59B9CBB3A966B5E83B8B51FC02F32535D03DA
+EA4F801077C94CDD2F98D1E25547659B0F528971DCEE22A88D9A1F1E0F219771
+86E161A0608C3511EB0D969E8C956E8A55B1FB3E9278845E8BA26F6B6381CF74
+9CEF69192CB36B4502553A99D047EF5251194D7E269752CCD9778123295CCE8A
+CBC1B4DC2938D076967A07155138B3E91A4AA888A09095C3D2F442F98529EA24
+7C717439B62F7F1C5D140D9CAAA94B22A8D1355E7D3D85561D26A71C826CE30F
+D7157F63100097F04F39C6FAD40ABA2F9DA78CA6E2A7324FAFEFA1112BEA7856
+F8BC9E21D32F9EB9BB4DB631DA30EFFB05CE5BF7948980CE6E29A379E6420D9E
+B2E6A8F19EC8DE7371FFE985D0CA83E6B0C25465F11C299388865CE474EFC22C
+73ECFE21098FAB65C332BDE3CD631CB5CEF22279C8CE8AD38D97EEE9E4DCC1EB
+4E15F2B38341DE20E81E8DFD504A1CB456211F8C21E806FD62807D0A4C231FE0
+09052F95B3397FE4B1947A90C596E58E0D74441D1584C9DCD1BA47737553F54C
+A119099D8EB107A9185234A613D6B5279F9DB5C5FE4377B92DE77F8D0DA00A4A
+F438F080347C01D9C1DF7BD28FC1C30B1A9B337B0F77E968C6E9B9A7CC5049F5
+56862250770FCB1F086491ABE56ACA8EE9C14DA082C0D43230D383D41256788F
+AB2EE3CA273B90F822BA0D7F1A3B2D50C6381632FF34AFB322A6308CCC5EF3CE
+BC847CF050AFF76CA1C9B049C334AFFBFBBAD19A101FC4361E51455283CB9DDA
+2145417EADFE932B34C9800758D651CCF90BFD324D12FC8616B423B08BC449FD
+03D6469522B23A7E094AE8EDC2719034941091AF269725CA0E510806CEA18BE4
+F980B58EB05E9021B10643E7CEB0CE2A42B976324DE1CF105F1CBA07DF358D34
+B4366DA6DD135F36F32387026C45C4A94017312FDA49C4E6E0F5AF2F0A9126A8
+07602AA9C8576262931EEE464E0A2787011D33F9E7C6C9D7DC0C0C5D20B8A746
+4D139F5F2B1B6E0AE059747949EDB3FDE1FE2162086C4F01720AD408DECAA906
+7586D3E2DC51D8A63EF20E21F0A5725DC80D02453DFE9F75E6EF660D9A892F95
+411B7558D3676610042CEF99261185A8D7F69F15E2405D2E5C0E452E223D0924
+F20DB835C62466FBC0A8038F3F110036104E9DC649A5BACBD568B0B85A7B64CE
+7EEC067FCC7F7E6A51FDE5272FA30847E70D319F9D593CC2EE45C83E67FA6F5B
+C7412096BBDFE81666CA8B3EE1411DD487B4CC3C3EAD104A2C9BBDCAF9D0C847
+6D2C7DF762BC3BC874B4DD3BF2BD7D0F6227FC8AFE4D568D70BD9928051EC85D
+62D8B2FF07AD099B8F879677BFD4B90A08C585D71F2820551C2558CD14DF1555
+66416E2B9C87BB7B1A0C9D6E3D4F80C5F3F4F887B17A957025BCF65372D9D3A1
+77E2CA348A47DA5100CC3EA2EB7742654B955FB2BD3B5A6F84D2D5F5F0339D84
+D8AD3DA2A75FFB2328DDC5004778BFDB4B0C9916D306BDF393ABD5FDB45187ED
+95F01EB80FAF51B7B38FB22517655D532DF3C6A8BFFD339AB7E21C009D467AA8
+78AA46B04DCE4F5C17A5E1E1081E33CD14E2E7BDFD41DEE2CA9C042CB66C70C9
+9A07B488A14488AABEE67E51A4DF481CB30774279F049C9D56D80AA2B4EFBA6E
+94A881775CB7B1373B81A69B301711AE47ED07264BC98A84819746C192BA6F9D
+693A825F0210125BC4372391890975B78626DADE396B2470522A8AB9DC4837BF
+1467A13F281F125F0FA2E87C8A67946EBBFDB7ABDDC2F9AC10DC820DDA8208C0
+55252FE5C829AB859A983FF7545B6A6892CF73A5C9AC8D2D4B1D9D01A481FE21
+51BFDC258D0B8BF0743EE4A7DE9AF2630A9740FCC2838BC84CEE12404701C36E
+A9BFAC54A7AF6211B17F0AEFDA006CA74105BCA14A882463F233E831D8477CC5
+0E42E19D5E21A3D922F645EED56DC7BB7F371785B8565389D39EFCC4850550BE
+10CE6C78EEEBF8828F83F9E858FBF0640F27E925AE3C2539D609DDDB0964A513
+88238CD14F7B91CD651054CA37BD71F9E64DF562C5E2613CA29318D3B39035E3
+B538A5871E119CB3558E0D301B091568C807D63AAB36336AD239FF58C1131D5E
+FAA0F85AC68D33C154F97E42E73EB71437B0F2727BF9FDCAC75965C62B15564E
+9BF7154DE438CC9B04D343FBCE0FF6DDAB9E46A260C7BF76679B8483BBFA4DCF
+D652C0FC93610A6A4ADF53C3D9B7296E70CE1FA3EB6DA1B46749FDC0E2BFAC85
+F00FE4A1A164CCEBBC6CFAD03E3D2C987EC80ABA6D1DCA6B85689F4C6ECCAA29
+CA2852B2325AA1D5A895B2D8C582060673605C54ADA2F41A20B2E98CB38785A5
+3183C9562EE46D58E515DAB27B9A5A86917B05554FF899BA50E1D97EFD9E7EBA
+03C6AF103CE3570E592DEC96A8C634AD7067ED147E3399F0933F8E245B269AEB
+362DCFE8FA9B42ED031F5DE999962C9F53594A437AB2E629338F662ABDEBA947
+7AB265D05AE53AC692ACC2B30973ADC366921B48F8D53F668E08BF65A3031C10
+F4DF18B1D5536A7794576A2A836503B6F62CD601B1F7151B90E915A927287D99
+9941949683B99325AFD768D0BE6C27B14A073A4DEC837CF91D61A3392B13C2BA
+323FBE1B93090BC4603E35B5C1774BD7FC3F2B843A8F59B51B0E4DAE91C5DCD1
+8553B77BF8A5D3156C2B92F9E14B53344C72B1C9AE82F86352D70A7802B2A948
+3B7A89D4C4F402657B46C474E6AC77D75505B9EA6AFCC1359BDAF1D82BD67C43
+B61FB8430B9C0D6F8B5B7EC8FF87AB6A824FB39848140C8F35ECA135A9E25913
+1D8ECDB09AB9C418F0EDB189CF314BC15031EEAEDD76C062245700583CB82ACF
+8F5A6E8AFAFCA8AC150C0CB7A96AC61B1DE23498278F37BF6383608BFBEB4E92
+F74BFD5B630B601ACCDFB1795DF67DB3B87A79DB4BD17364EE8C6B74A04E0C4F
+B11DCDABC0169779ED890C0543452380AEFC40581A93424D9B626315CDAEA786
+39874F4A6468BACFEB626B63CDEE84F4F51E26E52D1487890601D4116FA68600
+8CA491E20ABF21D1B1A02CDB96A25ED403ABCAA32944AF30648D7C4A7A208968
+E2F6AFD610B8C8F7F3306B1BF263C2A47299F436D1C741B24DAE39174F30F88C
+7DE095E133643F0BC96D84413D373AFFC457DD7751C2B4AE16625D57D7F0385D
+0C5723E54D10C7AF66648D7DA4942CBFD4EFD530B8EAA843692ACE50B13389FB
+67924D2037EB81EA52D37976C2984BFBB05438DC8050BEE88125A7119C68118F
+39313CB6E36B04AF224354D6A3E08A2A45DC030B6DEEC6758CA726473D766D1E
+C6661DCE8FA0086D4FE42237C70771109FCB99B2C3BCEA066541D4B2A5CD1BAA
+C01A5E22A7885A2A4298EADA5D1735A00A851BC1640E62EA5C30D9B3085B7877
+3F2174394A5A8A75BEB15805CAF2CB0E6E5A7A3CF05575ACBB7A897E7E1239BC
+D4D3615DC0E77DEF51F7DD2B803AA1A321FB51E2AF854D672E1C14736869F49A
+E5ACDC57E3B3976537B8FCAE4748984E668FDC1DE630EDF826F57CBA3F2A030C
+155D3A2FAF649220AE2B1D1960B6B0483A37D24B32D263FEAB89E7D6C916BB37
+437245D788031CC042CFF7D712220112EC16A61F7ADCDDB09AA365980D0A687E
+01C6DA9D234326EE9B8755F7B8ED79E6B4E5ECA508CA102D27A3A226D02F4370
+7EE4061C0B8D75EC0D3FD681AC5FA83664B3D0CD55C3A95B5813FEAD19642EF1
+748D06ABB5AF95D258A8B433C4D8215625E8AF1F47924BB1F0530EFE633A333B
+9227C1ABAD32ADDB6910993C4A2176E1DF3D738B4E9E899DF859DF3F42EA4508
+B9A3312BEE27B4570260FC6261C8F03D72C056E7D824F143302157C869316E7A
+5B3BAA828F6C1FFF5EEFCE3A79F41F97C2EC11E6F8121282D823A3746E1D9C13
+39B02BE7059BABAE7E2274DE13F9C1158E821637CC124600B89390A15ECAB890
+AE0F2EFE53E7755FCC955879A1EB9E73E61D4572E292E72FED83B94715A3D4DD
+B682A712D578B9D2E6A34DC10506DBC9479EC3C2ED12B2C310AA9C34466D979D
+15275746E0FF396053909C6A73777380826D98B61D166E0085F2FA98A3267634
+3B806CA0A9ECDF557406239E72A470D51985D7F24A4CACFC71131694C40573DF
+70AA1BC7C29A94272FC53C0AC0BDAABCD7FE594B4BE530B432F3C089B52EA8F8
+7280F52EA3FCA6848DA826324A497C393772F156C709FA1C0976F7F8EE15EB46
+82F0C0E2BF11650E9A8D241255A5A999F1AA83270B655E354D177AAA05284912
+469113159F4E8134E48C194C158A012480869DA113
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
dup 91 /bracketleft put
dup 93 /bracketright put
dup 97 /a put
+dup 98 /b put
dup 99 /c put
dup 100 /d put
dup 101 /e put
dup 103 /g put
dup 104 /h put
dup 105 /i put
+dup 107 /k put
dup 108 /l put
dup 109 /m put
dup 110 /n put
C93ECCD6BBCD792189A12FC9366BA7134EFD67A22B4FD62465250E0BA6B7C627
73E8F50E379328B7FABA341B0D50F9A2CFB055E01DDF6BBCF6FE4114BC36C10B
E581D76A84EA12995506C33DAE9035683FBD5F54AA1545992B94B8ED946E5866
-2F2CF263CBDE3B77E12E7D863F0A87788D89A93707CFEB6A5EA14C8BAC433C65
-56730E3E8985960FC4D00F2B821A9218A20F11EEC2D6A153C403EC4BCD0B7573
-5BA5398D8A252EA71E8928674FAB4CFC6C2FC36E7CB12136830849198CB0B249
-74C07C83EC06B2E0A5323E3320ED056D02B614EAD64E0F8F083F5892BC3881A7
-A9279ED632967D7F5BBA2B7CA37F7BE21987D8BD349C3DADF4682D4088DDBB35
-D6F8F74749063C4F59AF41B9AC950E6E588B3856C7F7AA1C9030B9AEE3D70321
-2DA63309EA56951A6E077EE1FEB9BA112BA69982E9EDCFC5A3B462FCA9D16A5B
-951C2128F30DAFEAB3007F0DC4F16F3D38371618A2F4848A9D0D59062E63CBD4
-E4E0F337CEEA736493E344617B5F1EBC96096B66ADEFD26110B4A59C69FC619F
-4CBB9FAC2C9314C831A6399B611D597F4F817603450983BEEE834691DD492844
-A222BFBD54593B70F18BBEF4D0969B1EA062F7DC61DB08F88E988B58EF871C3E
-EE1F380B98FBA95CA4E524DFC9DB291A5222D9792B9AE3A1F64E868B1BA4B5EA
-E2BC7C68C837776B01738FD3B8D41A3091D8B9A27050E56E0AA39F8F3AE52AC6
-42D30C4363786477D1C2D2FD832C7E2418A7B1E24FAEA7AB5AD1B99E319E3319
-BA790965EFBEDC46D4E7699CD4FA57A28ABCF8D4C05D4C7618C133ED3180C465
-80FAD466CB46D5FD53216F0F15EB9776562B7B6F808A9D8D9F4DE099D7C99C9D
-06588071FA8C36F774B05C0D65259DD0514539030DCDBAB67D6E1A19B2A6A547
-3BACEF7DCCA65B35BF4FCA3531D08DC5A301E0C112FAE9D9173B7B47E7F7C531
-3103B70633AA09E4F87D64CF5E3B7FEC94276E910FAED3C4B30C32C3743A5C39
-B5FBFB0D16C2B1998F53A0C3CB48DF19B4FA9E98BA3D503F5B82EDC2EFCD8521
-8C9006735D194CCCB8DEDF3D465F2C057E1F8F2D35B362EF9D084D429BB71584
-62AE48163478E7FB8AD99F01600BAA8B77C6F98DB7DCBE7E0C46B917EDD2CFA1
-F209D9A01CC283B773BC469257401809BFAAACC0C9980C497DEEA796A60B992E
-39F098D4218AC55FF0ECE7BE1CA314F586AE82CE5B71E4AE1D768BB52FDAA949
-AD21F4FBFC0EF3CDD44FE8D92EB97776F618AD9E38553BD0492149B3BACD7FBD
-7440BB8786D93167C8E4FCF61AC3D360B06C4424F4D46FA91B862D7A27BCEEE6
-C3ADEAB1CD0F8A8752EFCCB3E592162C57933169DA1DAEBFC2C866C10A5F7840
-5447A38BD856996DDD56BCAFDFDA2979FBA4AB6D4FB7E70E20B76F5A2AA3442A
-4EEF4B1CDBCB3278A1F55C99C7C4F7F34C81B063F8255348553E00D3CD5F5A33
-C7FA5E4FFF58B2D19B9D04915B1A33903ECD61512AEEFB41E67535D32AAFA528
-10FA9F87F68EF03DE847AD8BE921CF3D20D06098BE223F66DED6AD3BBA11F79F
-CE8F4EC2A83A6264406B36A48FF893E972BBD98613C6BA7C27804BCF2FD5A4CA
-D8DAA8D54F14C21A361CD594B9F76822908797D78288D86EBF0E627CC4C8F79C
-CBED3B764D2CA0D05BEDABDBAC5E09E2080CE815A76245D0E0F13314ADCE77A8
-6656CFD4C2460601ACED80939C44F600BCA055BB0332198CC80ABD2A7E361E26
-2AE4C41F97E34A97897586C5D79FFB57F5BEF34EC91CFEF1FF1F64F7D1FE945F
-F0DA4CCA520C5941F83318E765966FF0B9729FAED847F59264E7C5752AEB8AB1
-77426AFF9CE3AF2C1A3FC8F8EFC4B6E74A2201B08036FAEE8F74D6E74A0D397C
-7A7CE3E2D1F9BC1CDC1FDBE1647CA8FDD2AD012EBA5D8D4DBBA99BCF9ED3EEA8
-E8773C09545D482E30653D9FBCC67B925D48363D75B11A0E402D9585C2D5D053
-EBF046430962FA0D514308B0E9DCC14CFB51C0F9836B2244650E77777826DC35
-B5480DF48F8D9A9D731D50FAE55365BAACBE23E7FD0F4F6E22EE8B17F1CB806E
-3FA29E94280B973A85EB8CB57C047605811637076E0D98C349353BD4207FCA1D
-A11094D4DCDBB76B4AF79BBBC627ED1D176D82FE6CF34A24EF452B1F26F543ED
-2193C75C0C003B6B3C030BD9AC90C312698C4EEEF07D64753999E7E45C326DE9
-D5F1F3717D94E94E4B27F809444E1E474358D138DFABCBD6FC00E5DF2B6628F9
-89CC2B4821E8486147E9EB9CC942809FD4514C3FFCB1A9DEAEFF56EF66277F41
-8E3F7CB7997BDFAAC4429B1FBE3CEDC59DB54BA0A335AF065DE6A9981D9CB365
-86B48861A11FE0AC44C1C6CC9EFE479427C4CC328AC44D3C4312EA23A04F6D82
-A9A0062AB6D412C5A1A8CB99E7527C3B37FF79343AB8ACD53B6090341960823C
-D6F5B332A2EA6C19E5B237FED411F3C088AFFB94F1AE2E4EBCD67885214C1333
-3644DA63A8BAD52C9408C0E34AF8ED898422A0A2A4B8E9698142B53D76462200
-36CF4D53F66C51AFE6336651AC3CE180B9C382998331BFB6A86B973955D28045
-E5106EF370EBD1B57300A0EC9EAF11BA81A19131076A75D6364556F0CCB5FBA3
-872299EBC8A91563904119DA00450E360B5B7C5B6A6EEA87C10DE6B911109D46
-FBF66B637688E63AFBA42D647637A654D7D16F5A85382EBF72A7103359CB5899
-AFA4C0217EF645D765BA796BC00788DB7590F64EF066F5DEB3321090F544FFA6
-1F2185AE24C9C6051D625C2FF4D0CE0A476178E9DEE5A1A76E2139419AC8C875
-CABCCB25A1A1D18E4422015C6B8BB9EAC87F01E6DC4B5C194A0AFDAFADCABC1A
-14F9B80BC7CF2B18E2C9140ECB160CE260278344E3168A17DFB3612E8336800D
-FF3A13DBE3EDA20852D38D89CAA2B692EAF9E380302C7587C5ABE01A862FD37C
-1BD1315ECE39E266FEF9D847FD2A45DDD7A3E662C4182233EF90573138EEE323
-F64817AA1398052715686BCF461D29AAB9957671EF40869821CD6D5D499C0862
-17951DC682C529CBE8E8C0D49A5E6FA0956B2BD29EF5870CC2A2AF06EC743EAE
-6D9530AE87BF2018CEF6408BC4D97086451A0124A841A094C34F2A6FEAA97D68
-7F60A45619136B914439B1B12326314B821BEC74CC70ACB09953F287C5A0932B
-FF84B72200A20FFCC7F0038B44A5A0E9958490F023D786EB9E2C7C88D95C1EB5
-570424C0A458E89B31F2E681B99CEEC4F6A72E7BC4B7E6F159C84268138AE583
-138484A95D42F3743423480678BC749D90B1E0233071693B87E9277F3A1D9D43
-1A0CCAC46EB872FD71CE75BFE106580A89DE930211125CC6255361FAAF2DAF57
-9F4A86FB8F1FD6BFF647488691B113F5F4621614E87502EC3AD9C70B8770755F
-ECEC384171BE34CB185439F8B1CA228A0E1E2FA02D38FC2E6B1A1B1BDDA7648E
-C39306D18013CDF6F9FE27861C172CC1E5EBCA0F9395DA7C363799EB6476A573
-CC95218E4B1387908DD37C402C5E14DB7E1236B1BC094407906120EFCE4D620B
-6D8279BA52D64C5C3BE3D6E162975B61D1B8630C10A5F342D4244C9793C6651B
-10B0B67CB877E7BBD8190FDB646C044734EDA86407D9E3414404E392EF366FCD
-C7461F6E08AB2B09B4FCC7C98C97E4ED4CDFBFF8AC9EE7E97C1A7B3A0DDAA3C2
-F9849E4003A8F043BA005D297E5A292982CBB759439F9011B3261433C8EB3F92
-E3AE95248806CB2665DCDF4B3759A48E1EE84BB1B8693AE805F4631974522203
-3F467FDC225087213BF2D79B8B148A47D96DCF3F22F3005FF5541898F95B54C5
-07B931899E8EA1BD0F4F46457F63D64E57CE355BBA9EC53AC8257B1B37ABF0EB
-3429392E1427A120FEFAA66D1FDDED3F1D26439168690F10CA3C48C8921735D7
-E059470DF5C64F1EA4A20857EBFB70FD768C2DF77B90FD83D907268269F2D233
-D603056697E13F1B46DE86C3153A92A619912D6E5316E0D1DD7F5DD8C7FF1B5F
-F2FB39A652F6536A5BAD407AB9A5C9D93CA5A6284A9FAB4D353D54C5CE177C95
-C2C3E5918524DA01F22BDC2E60FD35D43C46686877A088099F000C632412562B
-D30BFA5DA02A94740A250DA5F130E3ADCDC390F2BDB1192DC7C5A7E4D7D908AE
-2E2D50846BBD1191FA262B2E38416B5F99EF71510530CD803DA1303CEA9CD053
-24ED32D8F992521D8F3B358A56B42D89EC455210D052023EEFC35FBD2CEE6A76
-A9F715D6A19BAACB7A6E56E4DF72F516C4F9354024800017E30C3D97EF968CF0
-07992318D1C9B8DC96AA1639B0B0F460D679D6306B34CE67203A97C9A2043AC3
-671DA26BFA89B90E564C29089000CE852D7E76776ED7BB562036B78CC746FD2A
-B45880E09EEF0F7BF4BEB7FD573382968226E4AD9094D801F07B16E63B83850E
-88111A93497978E539051BD0176D51E8888C1CB09AB7B64333C87C5574772010
-A74416F6D539634394B1BFFAED30DA7F67B36781606366C11D722A8C712638E9
-0341CBA1A31CF39EA1EFDECD7969DC31B06538765A2E1C8C7267737847BDFEF8
-971FBBFF86F375979CF48E6A34FC82FA9E2A934764DC72035324577A84225BE3
-D0BB79BA56D8EAB0DDCB541E50A2DBB501D7CB45D8FE16C9655ADA08BFFCC38B
-3077D05BA9ADC17F6EFE5F85125AE6A8935B00856BD588BDF0562E5224A4A4F5
-3A863355F6067AC8BD4ADBAAC72A99F351D82404292DBE2EFAC89921EE4B4784
-28661DEB2AF55AE6EEEAF6FB1C7483135D0D15ABFCA646FF3D64EC992ABA0FD5
-A8FCFDBA5080ADC60FC4B93CF4A84FC30E122C67D92DB0DA18DFDCB0D6BA9FD9
-E0F8C0286FF73E9129F37A863033C1E933896E2D47785B8FEE054EBAB376D670
-3346EFE8319B56827B4448429C5CD70ED1138B209FE7CE20CB3CF16612657665
-73856F9D127751D0F82A61FA10A366060746C0A627E39ADBB3B6A3056998D623
-1A08E7F86E6CB07B00AF5781F287BB62B553BB1490CE885BEBB92C9240F1EFF2
-CD6B893C8CF63B600B2FC17BC96AFB51C0BCE68427D843E5F98851B5AF735302
-EB6EC9BE8DE93BC5C6F48B309CEC0006D15506538F01AE8773F457CDB07D8A98
-EE767B499D60D9F115A692949754FF4983B95599F4DE322CA7F9DFAAC1658C36
-C2268D5569835DCE35DB6E40030CB28B30E31AD16AC8395F66F39F5D9DCC0E5A
-273E3111A4DD69ADE07B9FA18C7A7EA669164C6851A72EFFFFEA3E18B5B87D7F
-9A5331599ECC82C362A2103DD50E9D8825898D360C73A7E1E4E9ED66130746F8
-3BF5542959DC2210652383EFF1857D9657C67984629BC1E14570EB254C3D5043
-1E8A0347F9ED66FBF17BDA2C713CD7DC0F5347F06B3432967D1D0C4F7211B5B5
-CCD61164D5C9F01A0BA207D6EA2724F67F84BA845A28F1DCFB5E59D4DC57BFE1
-50864ADC1A703DBA46EF00F2F4ACA298EC1C1DCD26D647014806CECCC8A93E87
-158F2982A72C2B7167A87207D637B92826AFE261D9763A456F90E735DDFDBD09
-1C176B0C0D1774D9FAA5462C2943715E71F3C8CCB0BEF0AEBB5D00812E64CFEE
-282505EE165C6777C37A0CB2B7066F4CCF84B1578DC1A1165D1C60324CFA0263
-08FD152E9D3BC399CF45036466B70C54DF463A19923356834E49FBAA86250899
-4F1DA6637091255FB9B16BFC9DB377AC505FBBD1DAF88233EFCE65F1F91D7428
-10BAFF60705AFB67647EF947A26D86E868681A18E60CBBB552B96FD411100658
-1EF8A14F2E4373667B2879ABCB2D13D97A7084B345EDFEBC6B329CFF8F828330
-8DAA4AE60B8B3BBE78C05ACD0DC43A6907EC875605F84716A4E95FB406A4EC1E
-C5DA35309A932CAB84F62A9045A2D391A7728D51B18ACB5CA1FD1AE58976FDA8
-1F8D86E3052DA3A64360E1DF8B9407979E583F2EB2752C8317B255F73A2F87DF
-8BB2B5FE9464B360868C02DC6182C634140D9D51206B57DA40198D911CEF0691
-9EC2165F4BC87618D1177D281B5AD42F39FB0B76F678BAB0A757130078135EAA
-BB8A0260B772B9A748752D281FA0568790E80AFCBB1340C5E6DC160471802D8D
-D754FEE5FBA6532EAF51163DF21702C81E315834EE88F771CC9CF1D33E20F561
-1E3E661D89EC5C535FF486DDD590AD7F072B432EB842C7A6CE4C52C2A5C1B80B
-EBBC113C933400A257B2E16888290B16DC53991FDC668B304842C8600B9313E9
-08D29D7F02375F216DEE47DFD6E1D3C04F2D50977387457AF1A7FEA816D34427
-0278A675204C264FFE5C0EE3A21CD6BE7FB3A025CD33D6FB112BB0D0D20A416B
-EBCF0FCDD560A5E0983019CC7AF66D92B52C881153E8E12AD300571ACB5BAE05
-17C00671628B1E76E899D116B9A140BDD9CBCCDA64600402E6341305E77B1A7F
-418E108F85A4427F425784705844344B6F405352259DC6DE7584C7E0E5E2D22B
-6BA08FDA205B0DB705E8FBC9C917A0CE1C4AE14C17A0E98042CCAD0D2279BC79
-FB504AD1E264015F95B5DECD45332947C70C69FA10CE0B5FE6C933960B4866DA
-43E4B1283ADC307D18ABDFE9A8A2B10E862C5A771B346896C7FACE788569E483
-FE26378F52AF1D05FF2CF8C09119F7250D4EDB175CB7B958A8013CF68483A2FF
-93A39E2D0C51D4DEBC50E275869570686EA784F7F13401D7CD2619FC435F1344
-320D875C32319F796E494F75604B326CBACA2D5E16F37DF3E0BE72A649BA7562
-7EE30478DC8DE07D32A0FF5C7072D0A4C4CF36CD9E3E1DD20BD28B90776865E3
-16334B2A74EBFA0185FA602445ED88AC4FC8ABD184BD0FEB2713A6DEF4CA992C
-FED715F768F9D9842BB6DBF76B201A04D23055193A9C93CCD0717A2045A7E0B9
-0D6466D1B7FCBFDA58AB8F758593FA72A067C5C627C52EF12587397C6D626AE1
-28C12AE56AA1ED22573AC2897FBB7CF56EBD98BFBE369545F66FE6B4350EE538
-A419F9F61A592B7A54179B1CD577380DECBA2465B62EB9662BF2B82EB64279F5
-728D63F13B123102FD0727CCB312918FF43FF5543BDF8A0B01A7881E71F4D05A
-531BE4A89EA6809F2BB681A9DE9F53E37FA6E2E710086DFBD2FB8A7EC5060864
-9DB12C1E043A0C0FDB3EA5EDC78F400753FDA077EAD9EFB407EFF4A4ACDC3BC1
-0A149991A58B908EEB75581D2E2EF47E64EF9145485F652379E9A3C01117EDA2
-281D91D363E8D7588F24794AD2CF2590995A3339C7430364163AEC6E31529CEF
-EDE730EFB5FBC05DFB61BC9BC79367E9FBDCA34A4A537F78AF4F141DF5291A77
-A2225E7B7EA8DE8048F644DBEA4A47DDD8F275A462452E5737F8EFC04EF2D779
-25BD61881D197873B097172331B61256D45FFB8447D6774AB3BD150CEF43E0BD
-043C86D3C7427A3D521D2C484715E4A48693D647DE2D84003B48AED1A96FF440
-4A586D53BA76A434AC33BA6F9C6F4B443135F1F35FB197B0FC92080ACEBB2DAC
-A46B38126DC5B87DB7E1E83C7DE21AE5C7156CA18005ED6AD02B4CDF99E1B21F
-978FAFC5954EEDE6E394FEB95CC559A6DABF05ACDC0796DA6A39DD25A7BC9477
-C4795C728928C1A9EE1672205D07B1EFAA8F4BB2BB413D45738E8D474CDE2299
-552B37BF12EE136DC692F5E742D809DFE6D18BF866909A87A2C62C526BCE085E
-FE8C7ACCAF4A4B9561E3E3BE14A8633B885B86EC57C0D8095751536548C74963
-054189593A7BDE80B28F6642190AA560ED47BFA85FBA91557627D3EE2BA2E851
-DE2E17EFDEC23189CB308311FA623EF6F86EC34E231304DEEDF5E9C6BF964126
-F79D5EBB5F22C70CA5EE66991CB1FAEEF95E7E14BD5D25E2871CBD2163DA990C
-FFDA3D174140C7635710C1B3B927989111A6D37C8749EED67FBDD93D0A45E873
-E7398025B1DE7F4238A118977749B489923B4E6AE60162B6105F5E1FA02ABA5C
-84C1B26EFA27D1A5F58822A1897A374F73EECCE0422CC1D0177505F132DD4C55
-6AC7783729BB7B6A1CD33FC430A264F229D0C5A69DCF9F804FD1F01D575E77E2
-67FC00F6ECF7B3F592A7A49E410E8314BE48BDC95560401700C11A15DFEB6B2C
-189646F7FE7CAA7F938227F0B232BABE8865E8D3B764AFE6EB635ACAC6BA7C40
-CBFD610D215D07209EDB7B60807FD3DEA51E9DB40968DA07248168B6DD4C3003
-F5402EE2695D212B4DC983CC2EF4FC5BD59320EB462C88F2F4B62CEB6E22A726
-09961D7E4F09260BD5711713C32FCE1689E2CC03BB005EBAEA2A942AF20E3635
-D99B2D1C6E349EE350C923EFB6815F8BBA40D947E2619D62053E72601EAB54ED
-5F20652B03C8E7E1D65896252B7D436B77D3692C115D114F5042605050C3E06B
-2637DA6F0CC97AF4D51242D59D335491D67E95B7149C3D323BEAD304478F4196
-7E473D7DD7C9B6E1E8EEDFDA487697286F939A445B5ECE89437FEBD59AF5836A
-0FC41F7AEBCEC8EAC56D827587843055E19629E6BA0644DA586493763589549B
-C39EE3725E9C20692F2023862A3D29C4116F875DCF7D2BB4E79BFD54991A4FD9
-A7E852BBD7CDB42B624C969FA6A7DA55CD2E92AADC4243ADFD124D941152C53F
-E3764D1EAD5A6623D94036E1A88C37791DD21C59727E6ED28FC5F644B6CEE4E4
-9132042DF830F9DE1E6B78EC16EBF7687C4A4D07DF3ED52554F76996D88E40E8
-C30572AD06D64FCD20532C2B6BE71E65136EAAF008638C9EF102EB32243FA5E7
-1DDA1FEBF85FD71337C818C953219F592640A6171229F0D8E1447C4AB0E6622B
-5124945199A32EDB5125FAD3C022FF2D0AE256749223A16829FB4E1A0B60590F
-4268047D9DF9CCC59D3562D5E44E29E0F066F23AEEE045707647A75811D0351D
-AA4CC0841BDB7A63EA0BA675E4CE4CDE08975FA95C99A9CBA60817A52B5E6417
-199173813190A6151058DB86852F2C1BE4DDD1266F911F2882B5376B60C9C38C
-95B39F8511CAEB1E3003C279A4CA1FC38FF69C833DCCB586FDFE22BBB49D263C
-6444EF2C6CB9979D0CF54FC8EB7BB49EB3569DDFCB71D0966D0F0D2CD69698DB
-3862AA0B9B3D90FDE9B4BB39726EC682E8974AF9075539D975CE0CF5803EDD6F
-9F9ED36969486CD805C96E5DAE2D50F1246F36E95A974327579DAA83A63AF308
-7BFCFF42022C2D949B430C14B7536CA6AA82930B14112F87E9854AC8D6185267
-0528A7107D396A034E337A4B73BFCC2F323D5768A1E987A2BF2C8F2306404EB1
-26B3D2070A0CCE97065387D57FD9F733FD66997BE2E407F100E5E4021BAA9410
-E07A7128B51C9D320BA607C06C7F184BC27E0B7002C0B4F19685B4A08E2DF900
-16E82D6CDB0885F9260DFCE170996D78E8869A19125249AF59BF153D71E5F00E
-433DCE51F0D8065D54B605A30D0A6108C34F4EB8E56D33ECB111BD38EC94ABB5
-732AB831EF6CEE8B863D6C7CA4B95C2A154B94A16ED47B4A144153ABCDD8D206
-7CDC3843F264A5B786AE843CE7D83B2DACDD82E09D38FDC0FCC56F0D8B91D8AC
-51CF7E1DF59B11B4C5981C25E3C081E27866A3AD792C58C11C05B9EEC61AA9E5
-BC923F96864DD5A754205EEEDEDA4B63E8DFE69C2478905CE7E277EC00EEE7BB
-C2B1765F00DA731BCEBE209D595FC9E0F89F1AE7260D59375B89F88641E9C697
-E7766ACD81AE325EA386137FA6712FE56A3D4074BEEC88D76076E31C96838A2D
-7C6BF02DCC26F98A18C4206B33ABF6E6CB0D36E21735B89C64964CF4E1B9A8B5
-DDD1097309B975DD6D75824FB2D6C92EA2D010AA792228FC89B079771322BFF3
-E91B92AFAFE64D84CF391236A83524B3D4957B1A2C78ABE1EA4312FC347D1430
-43EEAD380C9ADDF5F459AFCC91682F8318DD22606240DF454E445491F07DA7EF
-58D0C679D9E887ECB473520581DEF2DE4B2A04B5B849BAC43A414E11AA3A5B41
-A7EAA9691400A3E935D922374043C8528394883DE9D7C98F9F7C814CFE8C7A46
-D52353B0AE2461F404503C38D956ED7C9EB65E3A0058F9A26333B034B7C0A97D
-28B8AD14F4DBB4D12122055E08FF3BC08D4709447D1C7A1CDE89AB45435DC837
-ACD2B64D368CB767F9B1D06D720E3271EBC715D0E2711D6C343F09039033A82D
-6716650CFDA57CEFCF25E8B86E243E77B4364B04BCA2D3BFA335C55FBB2ABA8B
-98CC06C87794FC020E7E0041CFAA75A6EEE43F6A5CB49E75EDA9D28AC1310D58
-DB1E938AEC9700C3F5102BAA6434D528C1C388BF13126C9E38173A1593895140
-42B9C08F98BE436EB5AB4B41B5B7422D853F982A5A1993FF9C03CB7A2068FA75
-F8E261E683E6F183EBEEEE8F407BF7024C6C66B0DF0379FD4A636F0EAF3940A5
-F48A71B8DB7473892474063353CEDAE734B034D9F7CC60FF1FF349F9C073B88B
-66E84AFCDE225BF8603C28BC8114DA9E9713C0246B4791AB5E55E0EA415D0163
-CEB21A1007D6F060E4DFB0902980B806E8476149241CF2388A4F3A75DC92CBEC
-303CA5829ED4BDE069F7FD3986D51D8A0BC0C7B6DE0FD5023A0B90075DEBAA48
-F5A62FC091642A061800CEC50FDD9BB3BD9E016391DBE31871B6EF431BC14A0D
-486D3827016B5A68A223117D416E86064A90A4B3B447977C0A681DBD07FCDC53
-90D92DEFF3BBAE3404AF40A5D357AD532BF82A67293799A1223A0D4B21A7C590
-D38CB008D97C51A2F2A64B35658795EF6CD44186263539760637F9C8DC75CC3E
-0F5F14E7B46302816ABAD623C664CE96B237E61EDBFE55DC5D00D858B75C8F25
-D33E2ED4643AE95E2470AE34CDFDA6C2B6D88AB81370F0C6A52E734164FB7611
-54414E4FF7B929DF6C3774EC50D769E41EFA98A21277ACF2C9F23F042F74BDD6
-B83A3156141787EBBAC8443CC276DEC97AFB922E5F4FFB16B79F913B874D29E4
-E88768568C31B1E14F081CDBBCF94D7DC3F16FDCA2918B8D1193BF99D756EFE1
-49BD3C3A0CE71BD20D416E0DCB6F83E8C3B9B4050A25DCF54962BB07865E3F24
-EDD4946718F7210D839E1EF0445D68D10D8926470541CFC9F5A336363BF66E5C
-9AEBCFFFB906E377ABE9025662729660B5AE961DFF59B4B11656295F0487E01D
-0E9DA65A913F371EBEC1D8C89154D739423F6BDCF53437BB665DF3D17BEF6F3F
-59D532D76B53A6240DEE8D68EDF71700AA468CC3E0CDD8DD50C3051608119713
-F4D5E13CA685FD48D03E71726BCB26A4C885B025179C6C7BCBBB669EC6CA544E
-16BE90184A5DF4A9532277C765CB25678D798E3E6BAFCCC1B0B31880526BFFFC
-B707D24FD48BC2DFB593285989EB1135D47FD2E30330943C5424550C4C17934D
-2CC69FB31F81916BCB774D27AE711B0754E25655927429C626799846240E7AE7
-5F662E4851322F94A14A73BB355C6DEEEB0809B730812B0798A4E0CDE08A0594
-1D8C3FC7E055BCC948D74DDD4AFB62533B78BE85310B9BCCF61F1038BFFE4A3E
-7B982D1756B58331F924D67A55F86CDB5BB347DD4EB04271D0FD2D25D3EF6682
-2EEE955197ED008219F386F41539875CD8DD847499F9E56545DE11C43036CD5C
-E5C5262A59EE74E0CD303056D37C61F555DEEFC997CC80B06C47F90A3C46D097
-610A281CF632C8E2F7B0D2F84A434BD575B49A795EA04CA3CA5AA86B299E9F77
-78FC4C37568A66996722B764000A7915EED0B05CEC2942FF564B7C784B2A68A2
-8CAFC810C16DE4691C98A7C99ECBB03BC1A16C7AA61931FEDE0E139AA1E294AF
-9D0A84607DEEEC4DD4C35D5C9798655960A8F335FFF479D061EEC26555110D4C
-5877552A318CACE59A4561BEE79F36E292C427F36EBCAEDCFDE161707FFA98F2
-C87E128FC6998F2241E4A62C4860BBF4C6496DBB4F218D5FC94C2A40523B20A4
-5A5C9FF7E16C377EFDEDD5B018D40AB01F26815275529D1359B60658FA1B7BAB
-FDF854786A00D61E1122C91C3DDFB2D8B66CC9E523CA09404A885256AC627FB4
-E41918676F3E2B7762A1AF4DD985A4E133EED84E239E38BF4A737E2719409464
-6A368163AE86C54CCBFAAE1B512103E458B2ACEB514D0C3227242B0969FD8F29
-9DB6568F5EA741F84395753D67E291D1B08401574E79FB07969ADECF750D3FAD
-C12CAA382468F626D5D541C6A9BE2657A4C2504AFE6672F60DC3B3CF1A7F74BC
-3B0157D9F19709623D01E657890A40C85B10868DAF4BF1D37C8FCD5D7D3E86AA
-02A5FF16B3487240D84AFA03354B666C20D144D59AA23A265DA4E1D0AED3A934
-C64F4C0738F8B1315BE988949C371284E5299E6BE88AF64E94DEE15E43EBDB03
-AD261E1DC736BB5F413437F4CAA0C586AAF9801A041347627DE8DE18927C2CC6
-A47653C740D5EAE722D730E17951E481DB07F3A0DBDFC4E3B7272F9FEF143A65
-B18E766CEF8E256DDC5409DBE5CC46009BEF3195BEF390F8E2AD6D972B62A0E6
-91D73A39FB27D355DC79BD514F9AC5B38FB6196CDA5DEC54E5A044661BD66975
-2777FC133B8AC7A4B56A21F018079320A3F5F5997855117658B1DF49F5D259FC
-80FF80DAAF9723E2A85467CD60861DAA5A8C80CDB1FDAEDEC2C603D44EBE2789
-91800C4D327350CA005467F8E4941F1DD74B61C5BC8885D73FD4C68EF69FAE01
-2C87B96DC09B516B2250C7E6A1F640D61A557F471C7CE4837317F885F94E7DC5
-C561168BB8C390AECB871C6A782B1C82C1AFAB46C339ACF9B4C411C9CE0437EB
-
+2F2CF263C941F6D5BC6524B34672AA2E8F514803C1E8F55F2FCAB120298DC137
+431DFDAF370FBC83A23575A6579B29525D8BF0CC2AE0812E43BD6B5BC69540B2
+5088418937AAC195F0783FFD2BB3CE3C30667D26D416BB3E656EBE8C7F03EBAA
+ADE01A21A0CCFA5AB8092737602739EBAA82AFC3506EDAFB0FB23DBF2518FE65
+7A2F3183416F0DADB058DECDC88B67FED4C606DEE67F7B20627A60CEFD6D247C
+B45103F2A1F501B0975EAFF78A14AF74706C690795ADD723B440BBBA2BEE3DF6
+F9DB670C8592B2D55B5C9AAD4C98971F0BB8BF23D5EE9C3EA8AF1E1F8B1FE6B7
+5733603870C63C668D33FD66EB454921BD87A36BF21F6EA50F645309598F9A69
+BE403C51346A68C26B7A90533A1B54CB5CA33635308BE80E66DCBF679353C8B7
+B0F1B866D0638FD94EB0AB92020966A51BFC6BFA0FB1C4AEF975E1F034C54D4F
+8186D2D6EA376758E3D9D0FBF6467E7D9A8BA2A1B404196514D687268F3EB325
+F223E60F2BB410D7D9A5882CC1ED8E73023426B6D339A174264647887E9FCCFD
+44412756145226164EA5ED5B30818F17B7D86D4D6F2D1CFF6746034995DDFA6F
+E185C74C4ACDA520446A14207A0334ACAB47E9E630B7F81D1088A502D8DEC537
+96D2902BA91E80C0BF60472411C584229B98CFEEE4747607E329C22E58701441
+186D4A5E5B31E3EC43BEF15137DEC88BD2C72D3AE066988079E9AF997FE66AC5
+DA922ECFFEC6813881363A7C98EA2FDF7DC976E8441A441C27D92EBE8FFBC28E
+2AEB583BC4301D237013846FF4F1F6B5EBF72D6C6D889ECE9F55C625EFCEA99D
+17290CE3303CC7661C822B972DC863AE61F0B3A73D656235F2B9B370B6FC1CD7
+2C51C8A34746868A81A595D785439151A528790CC6516FCF6C0F792E5CB451C3
+59AC12FF2367F9ABBCF6A0CA61CB50E0BEC451D74FD11A3EB97930B90E45D5D1
+931DB7614A8EC569F988C0F324123A4797646FD995A93CA3724E5A30192DEBD7
+A3F32D71F34DE70DF335EB29962C4E6EB065AC59E265D9198551AB627578A883
+11C644B2F7A4FE253385AE904F36CFAFCC09515E6026695656B097EF53A714CB
+6D67ACE27D86EA29528031104BC0C7C657E3A189614C4C71CDB02AF8A3D1EE4A
+8A882396A5A84E446BE3092C7C4C56A116A8C31874A63F1CCEB51CE7DB370979
+D18E1F9A8A2D809DA94F9069EFFA8CB9A58D45A6EB0E1C53443EC39A6180813F
+DED570D79EE76A45019204250B5C7034A9E35D975DA24A139F190A7293FCDF2B
+4262BF157059D1558E3AF6D710AC7121035998B6ECC0363B654422A3A68751BE
+BF6862FF1A994A9ADA163D23F4ED2D7461F910F51CFD86FD471C752B686ACCB2
+083A6501514E4A9B7CA9EBDF434B47B8D164AAFEDAAEEDF82D500D41ACF6B47F
+BDA773298C9FF511E8DE1A26E92A5607CFDD2A34CEA8551929CB4B6744882B09
+2ED6954069FB831AAA881B03476F369E00D8BC7292FADF493CAC21A878F8C167
+3BCE4BC24DC5C0A2B3213E10854F7D23BD05107C64BDB336F8878A571696FD3C
+4A2E5418D59102D6F1D66E2FCD6B157586401D80ADE2CDE0796141C569120A68
+1AE2D0E06EEA6AEBAB56604CE46A5EB52C0B0F34EE7A1BC9E60B9B12071F1CF6
+7A23886A7B1A3933176B6D2F9F96B902DC900DC051B8C02A4C37DD5C2B0D32C7
+6936BD399B33BE511D16ED77CE8A973C0D7D9946F21336167484A7C8990F5AD3
+44E00963A8DDA72A35C4B017ED37A4D874B000649AE2AE9FC4265470A7DAE304
+99DCD05DCC2AB7A35FE07C1B50895028E45EF513CD43694E683827676A561C4A
+B40F171DA97B93D735CC57FDFE23672132EFE594FC07968CFFD18056B46D37B3
+ACB4DD63AD987922E0CFAC1D88A283363E394B6F46C4E51BDEC9B55055E2918C
+389D5DFA85741E2A1AFB3007DAB4AC711B18BB12E618E62B69F53944E5161864
+7A372245024254EAF66A0D2AB94DF1C7C0DEE22C6FA445085731347E480E7D0E
+8D16B37757880E7B23A8F2D8CA3F1AA6D00D733ED5DF19B206C60B7680D2D423
+D445497B5FDDB06511533F88E686FD529A1A454AEF1844D67FCF08B4B1ED07C8
+2043A0D0A6935A232896F11AD08EAAEC6666BB828C6C2C208BE74B95F675A5FB
+DF5A5AD3C90F096CEB6BEBAA82D56DB2096F3E3C778F173B19630681CFCE560D
+C5AC8B35781D6F6DABD9ED6EF895AAEA7EC81EC327E4CB9E106EE07FFFD59019
+63B50155066DFFB53874D2A60F8F312FD68A43070954ACE11DF3D182D03D6784
+C5055498D670DBBDC35AABE825F605E82918D4992314D6D20E5FFB99A8755BBB
+120BC62D8E168A08D79AC6AEABA87FE11DE5A83BD99A077518E6162036FA6381
+251EB7D94A61735DAE349E6363A9C30F2F399097BE0F684E1989333F8C88F304
+967DAACD36E7057FCADF61429C8260868AA786F92250CBE6F3D84766FC590267
+74EBAC7A909ECC8CFF68BE8BB4F697D86AAE5286A04D7B9FEA6812E682DFF090
+D43FC28ACE03B7D62EF750B442687F7F3257AD4CB1CAD613AD3D6A27B6444199
+1BEB37DC535DF91667B47182E0053C6560195D476AA2C370DCD0804EA85C457D
+7A640C2E808B327CF62E6BAFB9A39660BE892F43F203331348361632CB0CF363
+16C587FD5F579B2A14A8E5D781DA5146B58E3DB9834EE1E0C172DDC00834C88C
+D42F73672E67FC4418526E7430BE92D57F15247446DF6482CF0DAD40485521DF
+3A4591743762B6C73051EC17164D0401D3517135E5B5E460F8614A1BD7A1C3E4
+CFCD9694FCFC3968676DEB42EB1987A489C711EA9ED493A20ACC389507F11E81
+FC931D4451EC5F897D159AE4D0E8B26AD1C64DCE2295C44AF44E57DE040D041C
+A3D3B438C3C95B9213E1795AE52E605C693581A47D376EA6A0EA50F2B7F8093C
+5950A8FF842225350BBAB27EF31AE5355D36DD07ACDC20776F4554A55558B784
+5C610C12055FAF049F8610655F5AC9A4D4E4D8D98F664325D90CB7B45C0C504A
+96B1DD5EB57BF2E2CBF59A59145BB2A6CFC10448F98A6E31EFEDA339F125EC3E
+05EE01B26AB28CD2096701F95BEEFA94D3C73598FC41A35FDEEC00A61DE9C3CD
+B734BB2F977BE1E2A47196DD069A7CFDEE30E257CFCE90E5F31E2ED1AE832060
+B5DDBDD4F326B4498296399BD9504573788CCDA457CA814C026BD201B8FCDF6D
+F938D66D68B489EF76B64BA853AC58122A0F1FFB4CBE1C6B30EEF44915B81EB4
+CF8F3B7F8EAC091A3652BD4013CF44AF62F9F5B9012487B4C549AFAF0463DA64
+5E5A2E29D7D2481179FFC83838727E0BF250178BBF8C26C5A6F5DE91CE52E36B
+3A962587570EE36995C917287DAB4F10F086117C1A4D86DC83BEE163624EA023
+62E8584A47FB88ED06371F1AA5337BDAB4BD05194CBACE39A55AB4A130057264
+4284CA5CE508835E44D15FC40B551D4CD167A6781A5F5D784DE009C1883C9AF5
+007AFA69D819716C7929FEC1A0EFB64F872F9E683A89B4A7940380333353E36E
+6B7CDD54534E034D8E2EE0134B81544892DC1C48001E5DB6CDDD7110B0AEEB90
+C91F1DF2E8C45A24685B6A46F3C61926EC51EBD4722993FC2572DB90CD753CE8
+22E3B93E8DE9FA444D0595180925EF6F4F889F31AF7EDE354AD2699543BBEE71
+797332A7A4F41382043E9FFE8B85998EA8AED71723859AF2970530DA6833159E
+031482A238371811854BA394F90DE07241C1BBEBB55DC1441ABBC8524714E401
+49AD1E865799F93F4746A420195F681ABA9C761236C689154EA42F08776787E9
+440DA8E289A5C16DD637A71203E90CCB0A25791BDA7B12F2865AE7F436976550
+094B9D6F28C648041EDC5037840AB9DC00FA8C12000E78F636CC47E9A1AE0A19
+18061B6CF101E61AF8BFE4CB86D2EA0A07F870AA46EE945F814044A7D7AEB845
+BF84AC4712B0AF124730BDA95F46CE5663891C42B8899D4FBCFC1796D37F736E
+406D0E27C3F088426FA2345EBFCB40378002D53B72CFE17AF0E3A7525BC89523
+D7106D711A6D2E18377C20FF9E6F4E23044B4CE9AF94B982D920C63D7DB86B09
+CF1AB5A77406A1E1518F40A1ACEFAC974E094B86D0D04FE5D7AD36DB6C42A9F7
+A2FA04B05DA0F2A6F5BC049C86C037C1E3095250F44D7783B11C1CC2D8D0DF15
+9E992B7C54863D709C6C8B4A9EA1E3697FB96FCC3AA52A4725BD821CF64D275F
+9513276379CDE3CC80A917B83F955CCAC6B0CFD07534AD1A977AB61578A07BB1
+A0A106DF564A182F2291CE101A62FC5E2E7D94DD1B304909320EB07B30E3133C
+3E1273EE0D1DA4F473EF9ECE97EFD485EE71F94A40C1210E8D095DA67D6C41AE
+F68D519D151BF2AE17141077EAE0F8D5BCBC8AD1A65AF2204E7A477F5E10C5D0
+4F61F777175EE300340285CBF3FC164121AA430E24AE894B593D82765C33A050
+1C445E58B85BA3627457E3A197E94DC65E4C577B1A4FEFD78E33AA2AE7168C75
+BCA3387C3CDE43475F3F0D0798A543A34F0361B87E439B11E5D32EA52BDAFCE3
+C0AC9117D06AFE15374CB757F4F771336D985CF04BE834BA2E8092CBC640FB4F
+78BAF4E81AE90661EACAE45A074F23DDFB3DB3E0D0D8F8D9EA929504193E7ABC
+E413731FB7D0AEDCA0ABD5D951F5BEB901DC7F3CCD2D0E61B1D2A07B79071AA1
+61D5728F7865F34D6F30FBD4997A59BF993C8F7F6A4F0C4A515DE06C79425945
+98D7FCF7FE365C5656DF8C5FA1610660FDD6A19CE5982478F5453F1F1E079767
+727FEC7ACDBE50AEA9D05948804BE55FE0FC7F464A0BD1F099940C99E6ADC894
+C21B5672C7E50A440B388D5E4BB4E37976C5A1CA0399802F2EA7DAF60C61A6B8
+E279F842832B285BD0532412D8A1E272C0F64B2AE5D993428E36C4BF6ED24240
+467FF48457766C2F24CCA637C622B84C8B22308D5F4DA3A1C10C905FCB01DA2F
+10D61FAA96622F03D5181850C1FD0209C6FA0951CFC38C67700F5AF1BBCAD623
+2E815110143D910C03E13643D9B287685AE13F4CAD0210896EC21F9791B3A313
+62F3A9E5E837D356E03EB26E0B58466760DA9287AFA33581927231965B76543B
+BE7CBAE37C49ADD39692EA5A53939199B9ABFFDB0373A7B4D356A759B94C9D19
+9E6DF8AFFFEE69DD41D414DCDBA3C0C1548927C516BF025056930CA1EA7F12A9
+A42ED08324A53DCB96D043D3D6C71E49C140DA3C0EEEDBA89B4D1D20D0D4385F
+17BCDE7660700CA6B95A3564A25E4274E59C72CE2CDB90B5306ADEA2768D5439
+52E1099A0957E41FAB5B65D0A70A457672BD7E3C2E00ECDA042D38D2398E3FB3
+66238157D749EFCA6BFAB70B0FFF39517049B3C508F6768F32C03DE2746D20A6
+FB7B039CD461207B1302BD71BD43F53768C564DB3F29A36447BE8F01F48AE503
+A6B9AE1AE673AE34C5A1C0E769495642C7AA2FA673FB741414E01EE2E8EBD04C
+C1E0C7A875DE5BCB43A5588C7D4C64AC4EC028685D463A02A9F0606659F71898
+69272F6DAB3FDF573BC9833D055508BA1BEDA4D18452E95F2DC0138E4B96B54D
+1892A69B2CBEFA8E3536DA3623FE9D23638CA5D656D007C43DBC3E022582D872
+FAAB422B7E834D0349ADA62E2D02467CCBFECF5B0B567D2610DBAD0E72BC4A9D
+FB6B8E8BFDC60AFEB2AAD9D2971568AC5803F5CC487AF1125B9F918FE66B21FA
+F20283F5FDA3FBD5C410283212D96BCD32FD6801B199BDDA5284ABA8424F5B71
+B4F48204FEE6E8E7BB1CB3A8901C747B6B7F169DEFF040FDCFF7BD950481EBDD
+D26576055339E8E950874E08E49F8770E80B12942ED8B7B749626550C761DF70
+10284DF51E1BD4839A3238D60A4E981B1631F32D178838DEAA63E61BE1AE94DF
+2989DB919CA4EE5E2EA5537323FBEC10E9D2E989DDAFECC37CB36B74E0393BAF
+07ED8A19140C408BFACF41C0E2EC4982D32BCFB2671D36A1AD823BEF7DA8C97C
+F553B680B797069D882AFBD0FDBB1BBC47B684B1582FE0D6C74E17ECCA4425F3
+7272D70973897879B7AD81966CD20BD13811E18F8706EA40E9DCE7D1788E0C16
+B56B72AD90F759AB9AEB4AD949E9588B452FEA29FCA2DA3C13E54EDFA9C6CE8E
+65FA26D04133A56E85DC878923734478FFD08115C7061FAA277873DAA4D5026B
+7DC761389538666C4ED3405B3FD657B7CE0534BABF6A3282B67B610C7CD46244
+AD3037AC1DEB04318861B64E681F355A123BB0ECD0AC34ABFE77C157354F7E22
+7FB4008BD6CFFC940392BC53FB751EC742A09B575FF0144AA758C29EAD8DF5FE
+C14D9F32D0E26098B2268750028A5CB8773021DE6A53A71B1432903CFFF5834A
+EA0596E85D11DB5B3581D6E990E2A97D6B5FB6DA2742230925083EA6A1151E6B
+54C3A58253C4D27E9EA834F75860714087D03F06D022C1FCEAFEE102D755AB6A
+CE0A5B64DD8499B0F8282237B52E2A8D3914EC53D471229C03ABCCF305F94BE7
+4B47DD210FEC8954C423937685B62CD589AFA801ECFACC8A47B46078D3C4CD6C
+BF8632B90A006F0936FD942F4C275F5B334241B7949924E07859DB270BAD3BFE
+C86FD3C8C157BC1802417EFA5AEC67C67729F460DCF50F40AEFF262C92DD3C46
+D12D08307B95233C096B0ABFCA115414EBE051FEBC3E9CF4A3A6F229C8422B24
+AA3E82DD2DE9E9DAD9858102A52DE68B800169831D87FABEA4351369D5CC78EC
+B6E1607416DBACAEADE82819EE220BF346409B73DAAAF345DABB73D4BA008B94
+767DF352C52B7644BBB936B905ABCCFAAA2928DE21518BD973B2CB71408FB7AD
+36620ED9D54158B5BD477DCBA04CF0B42A796F879340C4736A6C9912EAAFA9C8
+9F4B4FA517CD67FE0AD33525D6FE14374AA136D9BBF462C65599080220D01935
+DF941F1757AD4EA3F587F84276C2FBC610481A551D5625E2B3422C272C90A0FA
+229BC37D06D40A8218CBE487021C74FE8834C0896AAFA3A1095666EA299BBA9A
+DE77DF2E1CC2270169479DF9A1DAA5ADABA829261801BCFA556AE13D97D87E29
+39A35956938B17ABC005933AD3FEED156DDBE391935BA54E62B374BA08471153
+6445AF692BDA89EBE9A10609073086DC0CAF5536A273ED6084FFA474A54DBFB8
+BFC7C507A4F5807016E4429C45C2F4B70FD6C099F9844E9642AB1287E499F66E
+7DF53620EEA49B83F564BF0B46E53C633A26361D307B040D7B34A7594C12EF8D
+D76A4213F29D44AA1F7682F09A924C7722EAB9DD0B7C141BA9B017134A7A9548
+1C5F9C88427389C5FD09ABC2EB06B8A6E030140F3A02B59B6DAF7FD48653BB75
+E16CFFEB450C18029F08014BF0905E4AA76AD913F29C101735C5A5BB2A501181
+7BFEA9A8025ACD6F5EAECD826B4FA3B3A33C44D866AB06C3CF5C82C3D68259C6
+BEFDC662E24D634462654016BAFA72CB74CDA3715FC979BB24A043D6B2707F9F
+E040CE5571105F904470360EC37F73541B528EB5BB52BAB9296B5DF1418404F1
+649FBCE2505038BED3C59C2EDD762CB5FBC7FA86E07C529A0B48BF7034860C8C
+B5A144BD668E852DE553E989D7B71EF8C53F107F375AA55B61CBC9AF872F8421
+E21ACF007026DBB7F3BB1A5DA00FEDBD9661071DDAAB1D56DC3AD03A35DF9255
+EA2C492AEE4A39A3EFE798EAD76FD29DBFDB088B620BB0401C6B5667FEBBB8C6
+0E9DD8E1DCCBCF346B583A704D166B079140C4E7871449A16F65B8FC21FEC40F
+E7BF9D9D0207A2DBB387FD8BD3A7B7246FF612C721CDC52D7D41426F3FB0EDDB
+A937C38A339E3E83B2A5F300E4029F4F2845D11BEC33006716FDEFAF356CC981
+1DC615967B2F39FA17E8B632E0D738E869692658A550139B906CD8FF8DAAA906
+BBD7C48B6B9C12B40660248E3ABBE9F651D2E3E8888DC8CA0E706176EA4F63B6
+3EE4C5589C70ED426780F28A94C80EC697D1E082F46F3FF34EB670C2D3347F88
+A4D6399156D9A937B9DBBC40F6BB6B576D13E5D5462CFF7967E10A39FDF4F41E
+8845E579AC534DF0764E0F403B28CC95A8DF92DCE1E90F17582377A5E39A5212
+2A0D2FEED125C900AB4ADA0061D874ACC5AE2B275EE15233AD5D8CF63FB3F38A
+61C09E3F0AC1D5BF4DDA585FA65B115C01E1BF7EBB1018CA3387C8ACC981067B
+83B74721D032340CCCE396B12FF61FB9EB44E3DE962C14659EC2AE7E20333A84
+9C16F2F115A340C9935D42D14A2FFF11B25C46FC93A09C4470A102ABC21DEB32
+280E91A9AEF2627CDFA6B1824F75B87713883D4881D452B5B4A7D0118D4EBD2A
+616B8DFDED3047714F179E558F783FF5B190D8CD3ECABD9499BA020F0BCE19AF
+8CE61FD7B87578F1FD471D5DFD21A019B0E810BCB90D3EDE346E0AE3E50283EB
+BFF5D5B1AA8BD456AC552641D97276E1E7F335FF66372C39D2401D129C5AE204
+0851B5E2F8C322CEB29C19EF05602AD0D5FC2F8FBA0AC7E2B647C088A1F301CE
+2B9646EC5E35B496758777972480C9332F36AE3B8AB6286E1414912B7F914932
+E2B5A293BE734C3052BD7BE8C44BF59ACD5D3A550AA70DC610A7BA4C8F210E50
+C257FC5773CF186D18E63F926618763DBA7C24F99B60AFD4D1B0FA6250540FEC
+CADED9AFFEEDDCF914456559FFD61E175244606CF311AB9C1547A41B7672596F
+960C00B0ACDE1E14B0DF3619A4B49E052EEA1A6E81FC5DCC40D783155FBFCDA1
+CB2D4B5C61E421F77BF0C207B504B9F4AA495409182468598D773D2C04739C8A
+72050916EBADAA311CE4C29BB3873C27295A46D7011537576F4EE669541A1C8C
+993F8BB33B5E6F16447B76525012F15B49FAE4D3E4999797F7949304F8BD08ED
+59995346BCC901EE3FF11C8802A52F28F66F7DC908810B31EA29C26B50A519EA
+5084113D938378906DA5989C65ED2572C491C953AE9A36D60C3ACE819C870A70
+56EFF71C92E6B08D5B39BAA48C13C6F68D172BF14E9AC911150272AD517F7547
+92F51675047591D4EAE640CA3FBF009A127722F7FD083D89DE04977CA986886E
+83E7F4C2504BFE4A2F2619FAFBC7B849B30A354FC8089926B468501B8E71113F
+33CD7791E7AF6885F9F795CD3DEB888940D6CD536BC51418AB1F8EE52FD9A84C
+63DFA7DE8EEC74F136130494E6ABF7D1DC9A9E8968622804C39D7FBAE2075C35
+D78FC0E669CFC162975D4B8DFD7481F40BB44BC57B1844D0B59994DCFCAE8F7B
+31C88416EE6D3764BBF15FDF39AD40DE82A641D5C8206B403F6C5504DE224341
+E8305367901F0E34CBFCA9948C6A897ED66F3402A988B25D7D5FB949D31B7E68
+19F1D6D4622AEB139BD718E4931BC1A128EFA2477568C5D4EB01C27804CBE74E
+2B0D5362499A3B6EF7484A2FEF7479A15E712855BED59E92A62C97C580FE2C1E
+7CBD35802A3D8BB170D3C97B46CC632B8EACF44ED53E114D0730038987973776
+37773179395A784B86FE9EDDD38C1009502FB403A6DFF6CEDF5D3BD338C958CF
+4B85E3EE63D7233AA1CCEFA4E6F7D6EDA7B18D6242BFD605747BBC10EE0B38B2
+94E4694FEA3DF6B7C5E5B79F3B2D1CAC242842E6F9D33F2610CBED9015F2BD81
+EAE29A9A2904837617A13A16483AA14FBCABD16D469A20CE3D04CDA52B094DDB
+D2486B3B2496A84FDCD8E80EC0A8A5641F4B32C4BD8EBB430D2ED927BDAF8017
+34A339CD48B5EDC20CDFF536A149FF65E8E77CB3EE7946A92C53CDC4CE9EA097
+6CC28E1EE2D52C8FDDEE2F02019C522ECB6668C14ACC3E5DF4FABC300526C6DB
+0855A79FC44C7DED773D18886CAB73A2F2ACED5223D766612B5D263DD57EEB06
+865324E10AAF90B424A05EC6682FAE8917431E6597B4E1B88D5D131CAA714F2D
+16BDC6F72D50C024AC07E5D0A8DB997B437CC47E921146C2233002F7A94BFFE3
+7C912996476D41E4273D266F9BD0D6115EA15C1E1985FB17B4425B7B339EC81F
+23A3A66FBBE2DF4CA9CB21916EBA0165FDE10B4D7EA4BB8336EF343CC91D4A8F
+7636B292F29DB1B0CE86468C487307785C584BAF4446B14636AE3AD37C67D675
+B6517CBEC34A4B62B2A8B3344221180055717290A8534C72628AD81A3A9D727B
+80F52FFFCD2C719002D47499FB9BE38512B37CFE25AA80DBCC05DEDC4EC948DA
+1E88CA822FCBAF8980D4BB740373821B2E70A21582A44CD1D543B39C9DD1E037
+DF79B9C17E11972D2676BE689DBC327DE8F579047AC9B721CC1653D912D21D43
+7EB4E52DC5819BD0FD03F864E89237B0D40206F009504831F2F40FBA2C4F4A9E
+71B9953A8D6C654B4C3A92F22EB42D6D8E88A604F8DE9EE2ACE678513B8714CE
+2A1762708C9EBC9A0B22E159BCFC4F16F72FF3FB41C5724D76AC1AB39F59C1B4
+B3407C681CD1435DA5C4E44700A4B12A247959F57F09DD57D03FEC922EC47272
+10EA80225C369E48586367DA5DB93748920C564F8CF96EF79C2D327B435AB31A
+F68AAD8690864979B8224BE14FD84DB532837760AEC3179F423C23A2EBCE6362
+B21638DF9EFD7173C3D78D51EA560864E14F48A248FD5B532BD638BF719496F1
+48AE24A2ACAB2BBA942E2CD266F7FBC0568098C4EDAD62CA09434277F6F4B328
+97D974E4F40335115B70115F589FAFEB02EC71CA5B6B02B64AD906B2F0F691CF
+4E3A7D1363AC1E0EE88D2DC700CB7782119D82ADC61222046D73B2A12EF635CF
+0E24BABEDAD302D88BA598E8250861C41BCCE21E3A95B08183E56AB6C94AB422
+621DBA42ECF736B96A5EF45C34BC56427B8082FF8EA173BEBE0C348D0A2C1AE1
+4C40D031C30DAAC920937CD8679DCFF60C951E894E32CECDD8252B8259FDCEED
+3C7386CCBBFC35568F5495E4CE1182ACAD245E67B1E53EAC8589A9489428CACB
+3341F99743C4D81D9550CDCF4E2FB53B475426CC81B68F3D5BCBCF16986302B6
+DE01B3E0E6E1F9A1F605F51E29E0953AE7352964B43EDB112EC4282C8381C212
+02BE2E8EAB757198C146E5D1FF75F727D43AAF41BC6BAC8B9373AEF03996F7DE
+6C60429B61B83190298F5E4E0233B33696AC30CC7D4186EC95E5006911C93E17
+A6283A9D76DAE5F32DB37344307EEE29ECC3DCF09E26DD93034CCE4141C1346F
+B8686F25E57C67F7B9ACD41757364E8B656B0D2539C2991F2E5CD4913BAF426A
+0A8D8602AD092E48764D4337223D5AD4D5EDC4E9474EC4A79E5F8D8D55396EBC
+BA4A7317B54F9B9628C1C7A889B359CBB5691948E762FD406558E448F5080089
+8463475FCF5E50A97919AC5EB8A08815EA1FE0FC1A47C545E749DD85C735A0FC
+8FEAFFFBDD1F3BA3382010756510EF1A3D310AAA8BE9ECF9B3FA49F0D2B73502
+E8F6D60035DFD9AE3AAD5632E7D4D332B0CF27B2A5051947D62EDD2598E9BDED
+FC71D76746B11AD54204119BEECB72500F66ECB7F9EABD3DD88B27476F9FA6F4
+9B4CFED9C1A84681B03B5A3EC2D3098ED38F2EFE93D5172F21888CF7ED9999B0
+65DDB28DE5DB69BFB81881208D951700D029778111884BF70FEBF3A348B4A5DF
+D4472C7EA45F027DF31B9923BBCF68FC6D42F89E780B05B8EE384F6FC9FB5EA9
+1C0BF43600E9C51004C58E7C6AFF658270DDD9BB2A6E7BC4AA3EC6D56917B276
+E824238085DB57FF709C890DF1767127A6F38074F955F24EE9824AA56654E0B3
+AC2849D8053DEE50984750B885F376B344170CC3C56B2F146FB0C785B4F4BBB5
+0E324CF3840DB9DE988E5BC5874CE59FDBD0BA494CF9013AE9818F8348723DAF
+4A768813E9380447CEC2815A32E2044E7679E9031B489F1FB6935FD9F6B1E235
+5A44AD6D46B88C25BCE2DD1579C5CA7D702487361222DD9D8DD2B96DECC8D1F7
+2DEA85F8606394E9DB1C413B91297EEA29E46C4298FE51221976C5A5B0D9C43F
+2C08535C7F49E3225BD89D859FB7FEC4FE29FF531035D7F1BC15928AE535E414
+37EC6A3E2D862A0E819F517A0E7D419679E302D112DF5822402A2DCFABA7BF50
+71D21B15B7E12D543992D1A6C83B76FA19CD64ECAB2704A063D74D9D512B0DC7
+E6B6FBEC7859E283EA3FE396B2BC1A17E8370A65F2A8E1B5DDD96659051A65BE
+4517ACDE751CDEA75DFED139F9151DC208487575B83385B1429527703D671144
+156B906DCA4CF416CB592B3187E35DAA04F793BA32045BE0438D687C98EFD5A7
+82A5EE014ECE289BE9CEE29B4A3B7B44F0CD9C64849136705A775FF183B5B6EE
+102265FA44CC976155C3A0DBEA416ACE591D86C04D70A2E9EB20A288F93B9E40
+891B6A794C68B0AFB9D34665B51FEB52B6D049C8700E1C622DBC6A20948FB8EF
+2C6D8AA266C29802F712172055ABB9C3DBE02CA698FC66E015AAD7FF09C2674D
+AD4DE23D1CC794A8052BC235648E0E4D2D23A9A2AA5B36A116FACD1216704855
+D0B004DE763CC85245372C555D14E52CF0F84AFECA601F7071C2A72715B11C1C
+18BBBD2679DE8B3D7CC05B7391E22E64EBB20800464D2EACF37FE6ACABEB5CF0
+E0BEEABABAC9EAECED1D0015EC93EC3DA8E55FE35D393E6F98C7EE861AA29E63
+4CD536296EB8EDE8B3981A8C13CF0CF08504FDB38DC00C98D8E70072944E2099
+1A1E7FE0585DF32DD336E57A7CF20F7518A64A408955ED92828CEF3998E91F1B
+935FCAF14B2F5E6037E199EE276AECD5E419838E984F98AA715D9CC3AB7CD27D
+9875CA787F92E07649FE979F0EF9C111A28660034E5E21DB087A413F97F5F1E4
+B2CD771AD846F134BDB38DAC28DEBFE4947FEEFCEBB87CA5B82C5DEEF49B959A
+E6CBE43402847A824D64BB22CA8DFEDFB72F23C55CF7C57D157A6ABBB4211973
+54FEB121E0E0833908959E1D39C7E2A51965081158A4F88936CD27E201BA09EC
+B4002C6D246B2BDB14440465A55994330381E3E86CAEB06045B92A12482656D9
+A0287CBF975039E810C1945C5EB1CD9DC31823CA125071CE4C2B7DDC1936C33C
+C681A518244F6AAC82BCB22A1F220894EB24E8A974AFF9050EE3F4A1B320523A
+7F095B60D2256E4521CF3FC0A4D90F13A376D32216178D98ACAE185F0B0FF401
+BA10DAAA0B6F99F72DDC08D4272C70CFE48ADFD443DA7542FA0782E68D5259A3
+862139A5B4C1E878D8C9F5F200B2F422384056329D8D795163F5EAD318E7C522
+8ECF83FF72776DE6B1EE7095FB101F38E5154BFDDCBEE89CFD1F9A393BBAA13E
+20BEA2F8CF709E99D17469D2E6C34187F8403071288243605215E4177AC5AE86
+E336934B8EA1820046
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
dup 36 /dollar put
dup 37 /percent put
dup 38 /ampersand put
+dup 39 /quoteright put
dup 40 /parenleft put
dup 41 /parenright put
dup 42 /asterisk put
dup 62 /greater put
dup 63 /question put
dup 65 /A put
-dup 66 /B put
dup 68 /D put
dup 69 /E put
dup 70 /F put
7329622828B2785C1A8B26351BC74237A6BF99216652ACBD4CCF54CFC8AC72A6
46342F1E32D4318E7E27C7B2DAC943B3E72C472FC6F1DDA8684AA922516A672C
E969C047E318B5E3B1270C1BEB1C4071A15BC81B29B268C679B41FC5E381BE33
-DD95F0D68118CBB60C521E5CB2BA46A10E50E9238163713290DF6DD8A594210F
-B5200157C0F02340FDD61392BE9B0D9C46C1A0C4A3AB05918672D6D6020D3A88
-8C18A08AFA6BBD8A513A3C06A29A0FE923ADB6F9996F3516967E5066FAEDE5F2
-8317ADC676E012A737EFA5B743C0FEDB224E360B05D089459F860F97BA62BABC
-E86CF3127088FE3ADCC29BBCC991BF7A13A3A5BE34409C002DCF2B05C095A01A
-12BBB5C8F3CE43DCDA76D261E3F7734DE2DB7D9A323CD68D78DB2A5DFBF469C3
-D02FFFD3B21DFE7CBA8B9C7F438CDF8944DD5A06583A75079194054F8C06AA13
-1698FDF6B55E5B1B11C5AE8BD7FBDB7BA6E90FDCD1802F2EC862FB85A143D7B2
-99223ED8525202C26A53ECB0894A7A3A64569699C1C085B3CF6D6F6130C45C7F
-D74B5E4EF480988AA30EAC8CD07D10E5195B7199058C8B8EFBA9F66BBECEA137
-33037B3072C48E8295A2185EB3B83956FB26033581A702C8A2C65FEE3EC92CBE
-4FAB38A2F5BCDA2F6F6698E3A87BB14E848E1A67E3FF1DCC92B85461BF16C111
-6D3A59FCCE098512A2B17ACB186BBCB369B984A363525211D9B83BA91C2B1EA4
-3133C3CB489173988833DF780EBFFB461090B51E5C6454E4ACEFD98F22E80F8A
-23ECAE2A7803B9200043E29AE21F7EDB5D73EC2BC7EFEC3468C239A1E1C5A2F3
-B6A3D13C41A83DECA870ADAA461BAE73B44B9CBD7D9FC1D8BA7F096402CED6D3
-0C0D5640646143431C318824FC397E06BA888D966E976366613AE3075D3ADF08
-7E1730EFF0C108B268253AD90C929A8F9CE53FA3344692B4F2C8EE88C508D30C
-7D3713DFBF78CB79AD34CFA007500B8D1EFB46C3902B183CE019A4656F585B91
-337C8FB23A923689F96FA3FA862ACDB4DFCC63C202DEE6D52253A210F7FE163E
-BF0466BFC1104F859AC97006C5DAC76B68FBBBA1E86D352FF8299D5D94B6111C
-4E4961C13C1980ED85E5BABDBC25E26BD2611CF9644C28F3F783C91FB71E6511
-3305932CDB949C97E3C994AA9DE2E3069DB02FC5D1A7B552291D4FC01BD06992
-7BB266B91E315382D3FBEE6578EF6BC38C8AC5D27C8075C3C6C90E1133DEABA2
-600409713AABEDFB90A7D59DE9B1C55D5BF69E81500342759F8EAB102276AE4C
-62226488BE3548335C8B5DF636318A758825ED631CC7897D81D8DB5E1BDC5FA5
-472B07CAF20A93B34EE07C1F1B35CCE504BD00584F0AC929F8D276FBE1A906DA
-76508D83491CE04DFA2D053CC70BD6F6D4F4FC37AE9574F0427F56D04FB60C65
-40CD0C4F9D4B202B68C573C3883AF97D3679B67A9750ED2F7FA8C39E69967DA9
-2D0BCBB592BB6DA1C14CFE5AE55BD8E1EF4D4D5CAD9543A3ADB8346D4F0372E7
-7BAFCFBDBD48211C061927D955929DF620C0B3F9C5C62E8C2EBCB8C31065CC45
-36857F4A093AE79BEBA97AE481ADCA3F806C26D1C407AC716C6CD1680E4FB711
-EB5837E62986F81259FDD4BB7EF510B5A8068E167B6E9F79A85EAE7933D0593F
-E2E47F110DA4F91FE1D1C9EBAEA7AC1EE47C32B850413D2F151439B2CE1CADB4
-7D369343F4FE7A23FE7225240EE5BB2EAD003B791E184C05E16E5B1237336108
-42E036A6736612F2D560738B460C36B7D6BC9ACC66DDC5835744F58900D88F88
-32F5A49330101FE11A2DCC0E1BE4BB40B798C0B17F06E93373736FF86328A280
-439E9293434FEDB5174FB34CABE580EE7389CAF1DABBA6A053D514BE0C3F9CF0
-F3B9E5D971C3E42711FE1426DD84C2A1462CE67A7E9CDA86B3581FE979B06C4B
-E02A9FC63EB240C890DDA668C586795961871B93E01E80D140B1D3E84DC0A522
-86CE9CF8612A35940CF0DC3BFACCDAC376BDBB3A4B063E64C59C61CEDB570B32
-315481B2D8127B9B6462C898A7FA5037DA8D88EFBCBE60B4A803C0E5D4722760
-2FEDD14E231C6377F18BAC84FC907E25108902B9353CA450AFA7A2B028395D93
-C547ACC959FC5F66D49CAFBF6090C67CA7CE8267C80C7AC2BD031CEA01EDE032
-D124162800A144E00AF57B0F7683630F58A223111D278B122D39F1040A35A543
-E850DA1DC3B6C24B1D0FDFD347427E1E0C089F7AF6F499B6DDC5D184EF6C3C22
-2E4BC5A1E7741BD398A43D47BC25601671460EC39CEE52C9A63F03E014100CA3
-9107C794F2A7EB2B5F75EBB0D1ADDBADBE84A42B32247BB1F48A1EA537D9B93A
-9BE5CAEC478D7AAB59D92F1F96A76025C2EBBAB8480A7E7D1DA3C64540ACF041
-1FF7A968795CD24C3B6302C9B95EE6AF47BF5B6F6AD4103A229AECD3B8D6F6F5
-08EC913E120825E699EE78D8CD1202D2F57E2F7FF64AA7BC0B3A947FB07A149E
-59A402E894363FE848DF9B84029A1CB228B5DCD030B86DAF7D7032AA640FA603
-E7B28A4703D4D84D1B7BC417562B51DDEFAD015AF7A25409DF2DA380590D680C
-5E9EC71AC9372D3EFDA6667CFD495C86E4233A490B9C4C72666174B0D320AFCA
-66543CFB72EC10CE2E1E7625D2616C2571B6B2E33430E28BCED3FF154726E618
-14F68511ECD14AC32539B0BEE272A1FD7BDD577A27C6D3BAE6AE3A25A924B50F
-95A815EBAD7947FCB8C58C70A83181B8AA858A70D10F396AE89524407EB2ED07
-68EA77EE29E32F040655EEC1FE51069E22329FCA0F3FD24DD2431A46634AD6D5
-F242F5ED8508E7E1F2E6F8261558B2DB9CC40ABA2FA86E8C9F6D1112AA3EF18D
-0D5BFB642F77D4DD7FC8D3CD74C6434DD634FCA744B58D80D76D446922068DD2
-EB47C42C2EE8C96CC501699E50BB54274133348ECE59A563B4BE5B7CE1DED13F
-0047C7A6B6CB384C8444936BD165B9C6A43EC34FB1BA55E7D63BBD9ACEA2F622
-CF42EED2C3557519B5473BA4B765C75A66369389FC5B07B79B87015A90D2BEBB
-E91BDDA7F6DE559E13D6DB081965B83B050F97BEA2BA3FE20B1C80DB18388C0D
-2FAE933C71CE4123BA815A50D93D97C29698C0C0C96838271AFAB4FF2BC830E6
-184087C68A05C6ADCF9D87F949AC5667C0D2F8538D8D7A0862C62EDEB58CE413
-3AD8C8280432E93ED5DD49EB1C47818D8EDE3B6BA4CD8D21EDD7071FB490ED10
-C910F5399547FBF372840036E3D167CE36B7DA6E3EE3975934FD51A1B77FC8EB
-E576AC8AF5D3A9DE883BDD29FE161F0FD1FE61BAAC76E47CC4E4403A947ED8A0
-36BE4184200F11DE0975421241E77D372C9FCCF8305F9E4679E87E7D0C9311E5
-7CE314162DC520519578434AFC3E6694FC3C907BE36C433FEA335F47BC2332C4
-E8AB9E715BB21D8016162429932C527FEC90A076BADCE3F14E6A8BB84B85F640
-BE5CCB23E63C3334A84E606D014AFA5D22189E5F6697AE6958C6E4A9B14A1EA7
-8A3C53174BE2458BA347038C3C67A8215EEB9909833F1973860F73C3C8E1BDB7
-B3A4830A7A82BCAE2574C9662D9B79F7C9209F388EB655655268240DB3E87310
-966464371A5F1C833894978FF20B2DED89C69ED956DDAB5B3B10A121D49DAC62
-D56399106138052C66D44439EFFB6BA49FAD8823EFE66850FD534A86074C5EE6
-141351C5319252D5DCF7FB36F0F868BA5BE6469BAAC008ADB1FFC72E4BEC7C57
-6DB7B4B8BB56F2990E8A5F8368A67FAEBE4FF86FFFC5F914396E9D4536E3BFF0
-32FF663883563606D288E4F747853EC60A535E19ECB75D4661F1967B55A7535F
-E6E214BA61CE6D84BC6F7D78FA0F7DA7E20B4DD668D016CD47C81E1E832F9D19
-4CC0907B9A1CDD2C241A672A025EABF26DEEAF4074289CF072CDF858B4E61536
-819A7B6A9F51F9EF82AA614FCF4C3C373E77A5B0413856EADE27601CF60EEBC6
-0FE89D9A1D11129AC54B76C6215EE2DD0076C187D039351A8289809783D3FDE8
-70F11D780FA6412CFA96D04798EF3209A1B6F81B14F283D5B3C8F118897F7D05
-9FE1769DA0CB6048672F61B429FEE444967B4279B24C20890EE7B159132DCC36
-DACCE06AFB113A96D8395BF21AE603D578C46E70012AD1E73448E306006DDE55
-AF7EC201895FC7C241549CA800439276011BFFB3C8FAB1DE36C1108DCBE67B71
-56CD9CAD7F14A6BEF3CC4B5E8711BA4ECF0ACAFBE613D5B96EECC0794FF10999
-9EFCC16247FC0F4A09BF9BDB5F840EC4BB48DA4D8B5995FF535B45FB134DD2FE
-F2CBD655AC6F137EDAC2113F8E0C180E069C359B294B2F4C0055A06742D6AACF
-35A519D3922F28C867ADA92F4961CA18A3D104BCA99E0B6452111DA91D39489B
-DBA169A25988765832AAE78B7263C2FED70309078F0EF08AC8614F475A0C5258
-E68536E981EB9270B22D2B94D2892C1D6E447AF65EA74CB0A90A620CF61F1CE5
-FC70CC7E6723171DB1E20AB4BC2AEFA9389F598222025D691E8525A478DCF513
-6C72364F2666AB46677197399C3D68B4CF1F4F87F430A5806E2FD9E798D7AC5C
-977D23EE3000795422818868AADCCC0AFA560830FB9E33D5D8B7C5E4A714FECC
-7EF122247BB79641B10008EBE4AF583E7B89C97821C05075F46208FBA9F88B24
-EBB4E80F0D93999670A3AA0BB5B7B5B72C35D317D27DF658382D849CFBED8D3F
-64D88411ED621ADAD8948E9AC5A874837387E435C19EA34F010B27A0279036D0
-0927647212F62332627582F78239539D7332B563CB823437958240F278E6CC47
-BA53C09452990A4453F5119221D998B69C370EEB7FBB5EC946A2667805EDDE1C
-FCCEDF03BF98C2104673D26A09A249D57690B135537625E48258392840A73967
-B967BE08B211837E50410E273B27B856F66772430F326E9BD0E619D70AF5190A
-D70D7497AA36C39A7579AA36BB89BE2CBBEB16DFB15042C9C2F37FF83E7DF8A5
-36AC3F8AA0D7A78D430B643B6ED36DCA486A81B06951777335704851651CB4F0
-5AFAE9EB706E9A3F8E4F7F131D9F24AD2ACD0F05144FE7CF8B09046628788B6C
-FAFB39E3709836C7B514C2FA8C9CA76A6CAE796E9D52AA6A0EF7260A10B429FF
-F91B1AE060E64B6E61A87484137BF6BA7709730C694015AE6DEEB97C9509C929
-4CAB68E161E10FCF6E84D76C391343E4FA361B1E9F88AA2889B1684803269963
-82BD49E653DD8D19247EA3074E60ABA1ED612C056B4F18962DE3086EA2283B43
-9FD66FC6C08DBC5AC5DBBEBC7998D0EC16805E4080DF1C7F587FE226D9F76290
-11B51364BB712DE2A413FF159C357534005A20CA77AC8F3437D7BCA1C2BE92DC
-FD81A74C007BDA36766FFBAD0AF3EFC3B60E24B2FC23E6E71FC11365B2E3022C
-2C04E123D06919429FCD9F938F5ABB037B7C03061B9E7D883D953C20CE325C61
-8944BF344D96FCB68BE7B872BA1FA3616D43C7C375A0845B5A0B469A091E4D59
-676D53E592DD776AA99EF8196D1D1485AAC1D0EEAE079F0627DFD3B8F5D96E86
-92BB272BF1A20FC52C709B4F9DF4805671082013007D6338185B6BA6AC572AA5
-53CDD41F0CD270EE38ADC8FAA95AA16B68768DCDB552DEA2D6825EAE1B9038B4
-48CEADED7C157695843FD9CF8D6B17D3B1B2F08DA18EA57CB90F47C8D2DC9F0B
-EC8AC42A758E812A549294FC224188F68B6894B08FDBB5EF274E41ADE95680AF
-133B6D6CA99E90B527DE9B15F0C21FA640861E82F83327CEF9B0D4F6E689D1F1
-6A92852DBEFD22B6F8DFBA577E173DD275621BA99E3BFF9C4F8FCD7420DE5810
-A851488A5B968401A3CD8197DB19746EFC0331125B0A7016A9B8F84B0F8C7DC3
-60FBA1201BE6645E37BB02824B2D712BBFB4442215E19D44084D066DA95D75BA
-4446DB751955EA3C4BA900CE491EFC809EA1F8161175F282098ED54778DE77A9
-598AD316C3C7BC26B301B7A12F1A82DA58D466939A23D7A786C9201930E4B750
-AD10988EC2E5B461A2286CC39695B6A5A05B151BDB13066720F467C67EA9744B
-944AB6261D889C365DB55E03334B29679A5F0FC301AA6FC0870B84B8263B1392
-DDD3153B380FE80463ECDEF1318E838BB899D2F420D6C4F99A56D64A5D618E99
-C86CA73DB8BCD3E76A869864DB0A7276F47EF594690C3CAE6E1C47C11887DA03
-22B6F2E6E97A7338221E38AEF20726C9687D1B8280EACE8E8B0B842EDDFBC123
-A6A090B89D5AD42C312418FDD834FD4F354AAAD5002ECC573FCA75E359B52C48
-3ED5A6944A4B5CA3E6EE7FE01C70F8E059B986D7F54D003858569C207F6D4E21
-51572D716A821B7FF136B2FC6649809599F77990E1935842AA0B34DD9AC288DD
-C7A08C49F96C99D716E17E84BF3B622D3DA4ABD0F7C2CD9247F84FF0A0CE3CD0
-54A635725EB0A9B2BE2F6D421DF42C12A8F83CE4964A184D4CD2CC13056004FF
-2654106BD9C6767094C7162231201C4E1FA16D5926BDA3B7467CA4937CA4319E
-3C96B6C0E0043BED230592B06E18C7A1319A778DE99FFD8D9E4C75400CE635F1
-85EF89D9BF91A246F4CBA5FF0C62748C958E3EE1F71CDE61E4C919CE74AB7E3F
-5E5D26C498C7DEE52EA37F00A94F28A7ECF0F0A9EACC292A03E3F107A6C5F6F8
-1EAA1ACADE655FD7A0A67D8682478F68B317EDAEFFF7B7461E0771DFAB0A948A
-28E05549C7575588FD72FE2DD72FD72ECAF8D81CE40A818A655875C0B4894C23
-C3A2E904FEE3ED5473091A41D3A209B818A91D6F1B41BF8E92A270FCAE2D7A0F
-FD60F2294DFCC98D65E33AD49E462599908E4DE5ED7E10BCCEAD3CD5A0B380B3
-E2EB703723E4DF58B08F92BA0293BD16FACB5C78B9A1729E78BA2B7A89572709
-9BD8806875F67C87CC1141E0ECC1C6A4897BD31556C81FA3E2F1E7A568531E6B
-81CBD2DAB4B86410D615E8641F8064FF925171E54E165F33DCFA5113AFAB1E11
-C0678CE2689C7CFCCCA3EAF5D84E715307EDBC68FE1703BC6601E0BDFD4D181A
-C6D7355D4D5A6509777D97F21834D834D905F58303433A49AA135FB8C7E7320C
-24552D6F7E26065CAF3EC1BE08D14C539CB5787D6F119875F18ABBEC5B02D9BF
-CBBE4C315C7773DA59178EBBE098919CDB2B93A3DA0113CF5E4553EEACD7D937
-D092CEF9DB58D3F69D577CA9C3415C710CE46E35D6B252186EF35D59BB97492D
-496192F8D8BCA202442791B0B0A7149AE9BCE292AC6FC53B71D5F8349FF82C81
-91684F71BF4CB9C72FA83B1E6549FADF452B3CE23C6DD3E788538AD9A02E702B
-54BD07B019930E70D793BCE8E83475566B418C27352E1B7947F9E46BC0E5290B
-7AC28B606FB74834085DB3ACE48669824239C4C85AE31C385C4A747E91EA352F
-E6CF035FDC13E146F78A06CF3D1DD83DCED5B0D10760E3A7273AE3172B4455CD
-3BD17AE58B6E2B2D143AED816423A5DCDAFE0532E1A5E7E8CCCA0F3D4D3B98D2
-C3AB43FD353E11C880917EE3189DDE2C1EF5B0E613303BCBB31183DAE43E06B2
-9E8975C9CFEF26E225D83D6161C80FA6B142A3CBECEFFD2355AF6A2F9C590EB1
-8FD3320F35150EFE4F96991345A1D430BCA481C86EC5993915FA62731A551E5D
-B680D4BA1BD02388006737C078F4D104D6F4D38F67F60EEA66C8AF2CBD5CC158
-B342D6E992518A73CF14856DA38EA231FB26A6BB6D0222F5089712B721C80E73
-02051D4DC608B394B2712362EEE267B5FEDCA41425981F8A746C31998132FA2A
-11DBC1F88FD70E24ED19816541549859749854AC92E7000EEBEFD20FFD090D4A
-88F4F27FB18D9E951827E39837B26B12A6C042B60257CFFC9195B371A1AF8E09
-32C39E5B183DB4207C4FA28BA0861A0C4E81C6378F575D56AE2642F46E33F460
-A6293898DF193C8AA496E3800FC23AE3B69463FE9DC9D8776A83F2086DFF16E4
-D5C41FB0C09F1DD405193DFBB68A5EA027E034C69036D40C7BECBE1C6EBB13A5
-1AC11FB6075C973A0A50DA0BDF3E371F4451915C23FC1B1DCAD3085717E6F190
-088A6406038C39B1D8E5AC6C510CFA62222E079A5F94DB168104F4AD2D97253D
-7EDFD74115F05048D4A02AF14202CAAFE8F24BAC11281B4896AFA52058BAF641
-2645E49EE964530DEDDA4FD27FC52ADB572722E1E8CCF51EC924213FF00EF0A8
-0BDD64D37B8A6D5EEEFE09DBA2E131A6EF79625983D31717CFC77C1B8B26EC15
-83ED97C8543A876B22D31EFB2A33F7E6FD2ECD86FF9D428C800E761E49AC8A42
-39BCA596FC08EF4F36E1167B1E9A4391E74E38EF571A2C302AF4C249A54A8297
-C4FD21781920A37057A39B11114EA01A605D249726A950AB9CA13742904614EB
-90EA7993298FF3759BFDE6697E3527036C4B8F37EE3D77BF6DC844E3FFE37161
-C48ED17D1376ED07B8CDBA21F5FF282E1960C5F28219D8B0BC110E7BA3E19C3A
-52F42215A32A050A9E7479065B1FDB644FC88F615877D6A78353945121DC3552
-3F821B76B49A45B668120CC59C1EF57BE66CC57CD0311D57DDDC160872E598C0
-3DC70F7294FFB2C3FFFC14B05934008892DCC197128D644E77767AA88D86FAD1
-51AC3093BE3D8B801C36F94444B23EC3152C3DE0208D109BBE9DB2C632C4A425
-5E49049D29785AD20C3FB106CF1AC5322F33177F4BAA9B5D4C86BBBB5374649F
-83E7565448E89FBAF449922313E96A0C7C0AA2279DED3EED0CF58101DEE159C5
-92DBDAD0A4EDB2FEA9A8CF30E41A12E1E426A92743C7BBDE0EBC948C9CF07AB7
-FA41FC082F303281BEE558A79E3E77B31C752B2840298222F218D813CA7263F4
-51488CFD1A57D7B00FCF5F246CFA7B6438CC0A0071148424D3A7114A358F36B3
-71CB463BB9212F29A5289D0EFC07DE6A4536A030DA9096148ECE837611D1AC32
-66FE24CE590349E3ED0B7DAF61EBE669689B7EA383BB8396A0662C6B7DB61B09
-844EC6A4D0ECA6F09E1D7B3C0C194EC7203DD92D563CD5E4578112B5977C9B1E
-ACD4DA7A6388C0835D021838CB190C1C4A0C43AB7DB4F53A511165201BD8DEF5
-CDB21DCEE81240FE961ED84FAC75E1A0C834D0F07D22D0A30F12126222E51C31
-950433A6EA3DE6438E09724BCB18D6E54CEF6B8B058D1E43409736B7B6BD7D99
-1E2390FAD64F6693F6F1DEBCF5AEFC0DEAC1800CFD326C61A5DD28C269F29F84
-54A07482A7D3F57B789D5597FE88BC127420CB07B3B926EF18D385A7A326A2B0
-87ADE9EDE8EF8887421E66924001C11325535E66EE4C351CC07F878550B5BB7D
-6F3FF0178E710D1AB430A2EFE9ACAF098834059E52D687036ADFB3118F20A78A
-28C559EF84C6CB99087FC344888536F3992571426A9D9F41C26D46B9AE842A7B
-DB9C9160D33BE70543B73BEC74D164E780EE98052D76C2AC8984D0DA790F775E
-6D65AE5C896E2D1A9DBC6F1B9BDA40D6F610E32B4BC21AC198E9F5CA5FFBD93D
-AE97C90881FF85E9E12961B57FDD3103B1EEB05AB42507EA5240A9D3A45714E2
-F79C63CA55E414218EDFEDEE8B782BA3E5D66350AC0F17882486C577DB57BA58
-9B1024388912484C6BF9A0AC48AD306AF2034E7260B35DD6CBB70D48AD716529
-5742DCA4C092EB0E1C420934E7317F0BED25F7F5E190FB708F2CE4AE0D14565C
-D1A77BAF88C75FCC37BDF41010F5D3510121B92338FCA01F4464B178391B5C95
-5F1DB500644C369A7E678F2BAC5FC1124DC7D457376F955351C060D66B75297C
-3D0EBB38119D5F9A930E1063B7DCA33208194907197635F839DE10D98A5A61BA
-6638ACC396C609DF13BEEA0264D39E3D4FEBB8598ADEEF96B0B1BC242ACF137A
-F18B6363ADB7CB53BA96EB2076C7387F1A70C6550A5631B398392DA54EA178FE
-DDF58D0D1ED403F88489AFFBB86C7847DBF7F21BE25847B82DBCC87B46477839
-BCC43986721734097461B8C6B9D0BF2B6EF3C15D44885433D2842A5EE41F2075
-DE45DBBDDA19BB853D41142E1F55B2245ABEC6C01F3254357593397EACBE6A3D
-4956A31982B83A688E0CF2F7426FA7C48DF17DEABC4D213DD5DEC551EFDC7218
-28A68B9EB46AF707919FA0C06451FCFDED1ADD901032B2D403B20D6E8F63E43E
-35591142FBBA5F13299E1C17D38A36AD3B0B89EE2A3DD3BBF875FFFEED310D68
-FB7734479D284B2C0EB236E23202E1BA84A243593E213112286C032D6BE17238
-0C078B117E4B25AC190D251C1ACB6B933C387BF6F02F2DFD8E7B237B52A1AA01
-8E826235AFA451E3CC27B40D67931869C8C0EA92D1E08FC9C546C24F60895113
-E9218BBCB58BF09F9220FFBBDD1B1CBB060B5BB3AE83501A79A78BB15D62B87C
-031435CF68E4CC06593B3B3C5078251F615EF33FEF992E75F84E4D0B6769F73E
-E045A2A6B868AB740A5DDF2FEB58BD2FD74278F9C551522D7E5C722C9CEE6EEE
-D00182BF7E5E2C96058D5FB62D08AE837C727A147DA3A72B7C5487AE97C908AB
-9BD6FFB71D1F69C903FDAD725BEABFD77E775A451B7EEC6881D18D5748E81EC3
-54BC98BBB1FD5BA0E0189445CD489C32BF42884E7964A44054A656921857A2B9
-7A04681CB650B641E19CB6709F10815537F88C9BDA1B55D77648643E2915D2A7
-F46A6E9CBB8874EC1240EBE59C91A99D484DEBEBA60A760DACB8C4BD004547C5
-97FB6384AFC98CD9BB053F335A28A11061CB3C6331B61A9AD32286D360D0DCCF
-4ADE09AE98C56962017816C3563BC9D98C38CC09B1C11A36C17EF18E9C8FCD55
-BE0FD8965DE846D2AF3025861CA5A7C19C2E80CB74F86CD53E8CC9DE6BE3BC10
-386D56410A624BD602018985FA9C49730F20D19ED91BD77F29BAC81CA59ACDA6
-CF14046FB202FF5D7A20D3A46FA47D7D7B85B87B18353FDB263983D9501F49B1
-7A6938C305280A288A18B896725FB13CF0CDC435ECAE7B83428E5D60B6252082
-38EBBC2930019564CA04B7AC91B949ED72EC204BAFB469F56A69A3C1C4326999
-E300C14341F9E836005CF3F1D73C67A459D83832300ED1E6C3E027B828F39C86
-53EB935D1D8D8222144EFBED18CE0548FC8B0996B192D92A69001A8CF42F5391
-7DC08F94FB9DE42AFB9468F27A1B6013E86510A8570DE5743B07B069FBA9A38C
-F923D368622DB5A489A7B7E988BF8A7367B6E713FEA38726CBFE1A3A716B9BFB
-6079389DE1341CC21795033C8AF45ACFEA4D61EB463CC92E543EB7150B5C009A
-6DEF0A41CED12566968B60527F925ADDCE4C13F2046DC05F20201D9F5BE85564
-BD91E07D49C8EBD39BFD36CE3D25B3823FEFAF33783150B23CB4546E81BE7921
-7E7F3988BA130605D007BA0D32C76F4182628AE9C77F5BCE45BE41ABF426FDEE
-276CF14DCD5DB2FF86757BA0FD92C09D343C20E2D28C90FE748C49B5112F34BF
-A7698C19D54FA504F6DDD3861F9199E9093051851212C61071BD7007E43A3190
-844B5DEC290B844ECF3723DA15F60E49D9BEC8B2D1C4B757A35819001FEB97A9
-EC1CDB6E0A5C047EBD0E58118C1F4AC99ABB99926068E157367D91D2D45B580C
-D969FC8F66C4B195084888D50E99A1813BCC3B2E137FA09BB94C96F3CABA8A31
-8DEAE7E321FBA6BBF275E7FDCB0A9EBCCAC180BBFB8278854047284F3B4AA610
-D8D6C8B944BA4E336D68E3FAFC62367EC250213DCFCE27E0B88EA9E85CE24281
-BDC1FD6101E5C1D85F6C16A6F76A529EE35B53CA3B49F612C005AC54DB9DB8FB
-B1376B9DA3B5EF2616A005C012112C7C10DA19B9378A506027E493480D441493
-764D48AD4C8E3CC115279F3687E89D87156E3FB7C062411360B8F7BFA4FEFD03
-6310B69D83D8322DB0E5AA6218A96BBA3DEB66FB67C22587FCB01779F21B9EDE
-2902AE0DDD9FF27D9AC17D5A6D0967A02A20CEA11EBB416B9C2C91D1F70C485A
-39D7816D9B1E573C3BE6D6D002378C5A220CFA7ADB2DC09D9C4A1DD38D06BE06
-AC204C44772FC9BA8CB5A7AC8E927A152BB4EDDF4528FA2D36436CAB54182D33
-6205FAAB5932FC8FA1EC3DD1252A4C947405B72330C4418216D136C4B20B96CF
-22CA8E2B471325B294C61C59FD32E7D2C148F8565DBBCD90B66FA40A83D4AC60
-AC9F8DA1CB5D4E222C27767543EA86D83C3C66C8604A4FBBEA67B6833065E014
-04DEF898EBAC3CD067C2E706E7D1C68F3A236EAE478040B730CE590ED38FE340
-52EA7C1844C49B8911621046AB717AE6FBF3719F7941EC91235F21855B7FBF90
-62C8F23BC153B74FA398F7ECE19CB38A490E534700F97E64984366C1061BEDBA
-6358B94BD318574792A1D00851943BC899B60AB66FF8C64AC97E925AACF493CA
-CF1E2BDAC575E9EA58F82878A5C531CDFA79329DAF07A5D1FEEDBF771C205DB0
-8F7FF003D0D4D382F175CE5DB7BD66FC2D4025FF06C96B99F37683D32B76D83C
-4E4EA738FF8B368AD737273A5B5270C705D8D1824D1D21A8AF0ED7EB23619FB8
-177A61E80C32CFCFD788B203F05B3B3B49F76FAFF5650CBB65FE0FA2FB5D5282
-172A2835ADBAF0B9BC69CDF82AFB639285A250ED1340182F0B8A7CD3EB6E481F
-B1479530461DDAF09C567BF3A814A2B96F4681FB1ECF0FAE7D75EC91643AA71D
-6A129F07276A8C7BACA7D0468CE0386D7667DFE04B09677D502A05C3874586AA
-DAAA13ABD2FB93B8F92F72CA2F38AF9D643F0C1A7786A15DEC80F3F13DC2EB0A
-956A5DC1211D02E732476EFB7D999C63CE53B27759D7D93B47383DB234C4C384
-E5E664206B8C833335CA6A89730543071E483CB92DA30755A982E25E1A268AE6
-D1355E15CA20BFD7B9EA1F89C3C07F0EEDFDEA65F8A82C39BE3AE22E727D22F7
-C8DD4788497AF3E6D9AF79471F575F989158977D3277AB36597BE0EC8347DD33
-BF0D93288549C90642004A9F969893798F93C1EF3C7A6CAB9CADEBB6787C18CC
-2232972AFD6BBC6317FA46765FA74DBD6F1FFD5491E0E6335F0D08605883DA1D
-9E3A80097856D540B61473D573A9AF12B79AD066F09B2BAAEC9E46CBFD1046A9
-1C07FD78B5C98E0F9847157361293ABBAE194FA860141A43482C7CA75F781351
-E762FC9E3F892735C496DFB7045E86C7943775D96ACCF2DFA451089EBD4BA12B
-DDE24237724CA3ABB3AA061213185206F058C2CAFDF35535C1AB6EB38065CDFD
-E57123DB9B0C933C6796B59DB405093C8E429A0511B6A23D2A6FEE64DAF67F99
-0A4B3772003EAC01BE1ED68FBA87079D0100BFBE054A3EAE2CAE8B01971FF85E
-352F86A1A29ED975D4D69C748D244345E7486974F0D402ACED2B7DAD1E1C53FB
-A029DF4E5CBFD64C694B1D911E53900A38DFA5FBE785D35A2595BA71D5209E3F
-803726BC42832EF1FFB227F6BC5691B2DD989BD48CAE99B4B69807E55DEEE2E6
-1C2E43A3F90F08DA4049A65C2EBB68AB37CE0AF7C4ED41B27BDAFE3D37E982B5
-17CD994BA4F8C064FBB1C4D477E177371D0589C4078CE74A1DC6BFBD2C76C8C4
-4DF12316FC2294A8C834A2A1AB1271A7C3CAF90507679280F4BD0C6FF1121BA7
-45ADFA2BAF226982DB7781A96434FA8495F971BB17475C7CDDD134AA6E87946E
-EC2BA6AE663F4317DB621CE3D2644A5B3B5F577DEBB33407D13D5BDB873A9622
-5E0F138FF5EED620E4ECDCFC4BC8D43E46BC62FD90F59B06938D1405DD8F92AC
-7985F4DBE35AB0AD927A7AA1AED8A3FCC9992B89D9CF9EFE02517A602C10CAA4
-44C9FABBBF210F406B358DF144827E04540B47B01AA6631DF583A36A10944787
-AF2F517BE8D6B8B43C4A97F49132467F0243735AAD44908C4FB05137A7374EC2
-BBF2CA497924F050E7902E06785CD6BE7550360283D231BD53628F576B92B6C7
-3A67EDB5366C3DD053660561D5EC2C7D7337E4A89AE89EE9F2ADF4D99A75ED5B
-78C496422AA1B58B8ABC81F5AF8BDA7A3C65D221977FC6EDBAA2E98F26358788
-29E0DC0A30527D64CBC82F2CCAE18ACCC1B2A64DF31030F0F14F233B5306D623
-DCB30263BD18592A089CE4C2D0390126741EE14F7558ED949D13DDC9EEF0AB4A
-3166F740E41EDA16F729F76E42DC1D18B2EC06D694781851E9C9ADDD139F7768
-627A1D4BD88C1505F31911B1BF4AA76BF6866EF658F607EA4272095480CDF526
-DD9FCE4FBD76AB86C887FEBD791AC89EE99AB5A2903FC1D4ECDBBC4AED1E2568
-DC74937B487A36FDEFD62C230258B15372F25FDEF0B59A482A6FA149248743EB
-ADFCCAF718FD9D6B8576F8DC7DBBB96DD1FD3AD502F6F9FDEACDABD1A9D54290
-C3417857F1818AB3AB34C1BAC6BD65D7A1A5B3480921E9E48546BB99D41FC796
-D2D373042F1F4A796F8FA1AD43F1BCD937534ABB4BEE3F1BE7592C158885353A
-C2DF29E4E95EE1D526A064B5EBB9C5A53DF45876AF31DEABCEADCB5E4000497F
-7A0CE6E11077A22DA49AE3416E9B3EA88F151CA288979D90D1F5B9CEC9F1B36A
-7D5546E3B317556F0CBB4375AD06D7834A2B16B0F4A2BC18B3775EF4817CCB4B
-51C75736D8E5CEE393965FBEDB98568BACC0CE59D39E0DB30D4D735566681A7A
-D7F39C19B682DC7B98B87772E9FDFF1A9848463EF22C76724B4FBFB5765DE1FE
-E57B45C65CCA8150A80DEA255943EADA2DD043C239AFFB5FCFB187B763A3BB27
-CC0BC3936F5E9F833A745B3FD079BC7489104F77880229227F07B294BB9B14D7
-62909E582CFC20A5C57CB42D90863F4B7A2BC6EFFE6CB02490D1E1953C5C5B77
-BD5A751FA40E2E681D55AD39F5FEC3D1B564BD77899552874802D7E7C1236388
-07E672122D3C4591E895B2792DB4E265AC250D2511AD07E43490004486C43471
-38FB164E23466689B3CBD57555E84337B5D7F0B809B9524CA5AF7D1406F80EAB
-C72BFC9987447C62D70B4D88A54A6B8BED5F7200A00F59432CAEBD1120BC882E
-82CA6223D0F60FE03319260659263AAAFA9A309D6B87A926821520FBA6B269CB
-C0245426B25DB5B5C9202AF788D8CE53F20EA1F18BB16EE5373AB5593AF0BDA4
-D0BCF44B51AB29CEF3295C3CDE1A112043AB47F05812A5FBABEC2FBBF404C331
-BE74B93237561CBFB1627AC5883F56EAD46A8B2132E352EAEFF95D79A9C36731
-EF7DE5EC66671E4231A6784977C2883AC1597C73E047FFCF49D0E16E4355A8B6
-60EA0698EDE972C32F0FD19754134B5D83C3FDB82D4F8904DDA62E22E2743A89
-E79421A43FCAB3E6FF90C36E5A5B4F2FA2FEA6D0EE41AA3C44B727AF545A3B45
-2D931C1BB522CE068979A7DED0470409E7999EEBD6C58A1F1909CDD00ED2180D
-44A271811E80B3950222BA531719FC4B0ADB6255BAA63787774E2947CCA6519D
-E51D71A2ABD77B282CC8B4F8BAD57ADFED6818B3C24ABE0E668AB63CF2F17731
-2F7C7A492A47EB38DBFAC5A36BBA799375A4EDDF6A0122789BF6F58F8EC9F0C1
-49CF01C136A792BE4C6118DCDC0675459ECCCA754ECDA9D170708CE58A230DB7
-D753C45E7434FFE711AA5DA45393DCA8B5C8920A95C94F3B89776C23B53F70BA
-B6D217CA58C551206918303DB33B6081E3391F10DDC5F58B1790028AA2150AFB
-085185754358891D30992FFA2C23DB2A04521107101C2B52A1A168E2CE7C85FC
-37D32B44FD1DC3BE4B28BBA9A9F91229C79997F5184F5E7143C838FDC8196C52
-0B33A375B320A025180846736F0649DCA8FC61EBB6CC1974A4134EA26E6F5E5C
-A73992547B9A4E6BDA10FF2B41C9215F2F9AC755DB11C1CDAF34396E4B92DB64
-83034FC2023D846B33DC7CD297527F183540456192DCF23BCB4A1DBBB7A2ECBB
-D938F9F3C03AA46A1893059A722AE7FA05CE716AC8D446D7F038D6C72C172A5F
-05F91CB5FD5427E6C156F126F6B2014F97F5792F77CCDA6A802CD7E3405FA66B
-E32EECF53CA9071D1EE20AAFA9AF3DBF4CBD250650870F0B9A3923BC4484F349
-EB072F3244C98AB39B6F708A4A52C0EA243DEB4DD77BBCE573A2E56323A18A0F
-504EE24F90A29AFC5FD3002749E953E1E1E6E6E8989A029BADA9CA0A261884EB
-C6BC3BDE99849D6F05D8D1ABAF82A452EE116463444BE4D3DE38F63938BF69BD
-10EEA7C68AA8077F412060D185E4187120926B4B209A74497A3C9065F1BAE8A3
-C5DF1A6A01349D7E8D215FAA03677C682022A26D3179CABD03A0C4BC6B303BFF
-BC7B3FAF26B96747A840C12EF14E16A2DEC76B243519B53E04038D3FB13A2C24
-B531C3147B51A8C3623F4C161B4097364608D5871A29006F7ACDE5ADA1F82C11
-11BD9E2AAEA52D352D70FA4C94809422ED65C03C4A72DBE2FBF26F4CEACE9DDA
-F6D895413EC28F2F61F40D67AB8798DF36773780B292455A689B4B70F03D18E1
-EEDF66F3C5823D47156B6B2D1A1006C513FCCA31D101DEBD474E72B49B664F35
-86EBB75BDCCB5F4AF8B583B835449F7CAEE5E97A819AC9ECEDDD6AB2E7B326D2
-A92F7568D8301B1F1485F234B32632E8725F8B637EEFA1397FF031342A03B602
-815005BE674B52CD4744E20CCD2DB8F7F58D0717FCDF04001101A51B0926D53B
-BFF990D7B01091B64F85C9397DBE3F48A17BD2584141B3229CEAAA3F0546EC6A
-4B9FBD4EED3EB6F78F8FE6D342B13F5BEEB210E4A527D83B9354A085AC87B359
-4E5DB704BF8363E95FF526A56182093FBC89926FA47D90178A91CAA8D5A73F2A
-E38BFCF454444A79EB4AAA502292C08166EC7CBC37014DC7DCEB4DDDFF7B9A29
-75A5DC4C86D19B4E9901464C7E81F251DD00CEB0A87C6DC15EDE276E8976DC6E
-77642A3B502A160CA2AE5EF55BEFC154602E96F496F7A4D2F3D345F51B28543C
-DE2412AE9C332C5141F664C9B5BA61806420359A29A473E0BCA4FC49853F6622
-A6EF486456683FF69DFE32EA117216FF797E3CFD8C4FE436CA7E1AF5F91DFDD0
-408876DFC19DB1CD9EB2CE9AE76EEEE3E73E0F37BDBF4010B581C510B3DB0CA2
-C340B265B989E1E682B4FF9EE3CF10B9166604FA8262B123C7333E91CEEC975C
-80D73B4DE4F9A065B1D86A040B69197EDDFC955054AEBED3B93C9EE76A139D91
-D8F1967EC2579F6E111AFCA78FDCA67DC154D4DB3CAD540024BDCAC2A28537F4
-51BCBD448C87549379CE17DC363254735D586FC39A5BBCB4EFE907F37B4E9842
-12BFA21977D0D519B0628AA31C58EF538A78402BC7611FFC01B6049A8437D319
-9A9A1375578B7D36F14F6A31E2717F1DB8A55CB0624BD9BB4ACFEF4594715AD3
-BEB006D593E3D0FB36A82813A39AA70E
+DD95F0D68118CBB60C521E5CB2BA46A10E50E9238163713290DF6DD8A27D3813
+F871C07E725D4518013D9A84CEC96782541E5580E33C2EBCDB18F08EB4655A46
+507A8526DB26C854928B81FD502B0CCE4A68943C12078F57C10F4E85FBEE1025
+46D925B8B3B447D4920410FEEB9844FABE985F9228FDD9F26BDA3B469D678F01
+BBD601F46245B0AEF9E844A38F0A186733A8523992CBBF6DFDED8BDE4E6DDEE1
+AA0EE78B943B79CBA4AE311FF4612252D9EEC7DDF88BA8080801F9BC7611DCF9
+D6AA4A8651177CB85010D420CDFB43CD103ED7A1B9C2E885C88F882E29F4C301
+4750C3EFA20150F9AF0A5BCC8DD9C7DD53434855ACC1FF84087D95BE7A2FC2AA
+446A89DCD272268178C02DB29FED2749139BF0A51A5A9E0B6B8322558086D62E
+BF48C20DCB99FD2BAE6853877991059EA432234EA3DBBEAA7A63B0279661F69F
+181917D92AA634ED55BF9736395C609B315ACC4F49566EDF37EE388BB8B5D9A7
+E227219DE137AA06BBBB2F2530EB0082E730BA30DF67E83E8E3E6D47CC0D6183
+D68AFDFDB89A8F7F6B8C3381BF4903576CC2D058CF656F221C153D7EC7C6CFDE
+3487F61D3712FACEC12BBDA5C084F01CD52E27B685B7ADDB34D477C47BDA3D6A
+F5F94FEEE22ED1CF93F2A4576F53D5E9AB73CAB5CFBE85DD6F4364A8CE71574F
+2D6AC3F8AD690AEC0AAC2AAF8CFDEE51FE47B56661DF84FCD8AC27A0C21706A3
+3CCB741E91304FA287688FF87FBAA44DAFABFADB8BE47AA6C623BB1E86BC855F
+B26CF97B7196EC4BFD755518688DB56F77F5EB87AC368FD46E295D7DC1B5E785
+DD301E260CF2F1E9E23072972E05FD4AED7A5AA34432BFB817DA2C19704A0206
+3077ECA9232EBF203016E7D98E3DD0C78BB0E332579EF7430063A099B9BD86E4
+3E55A8FCC6397B191360C8382BFD531BF247BD3686BF00A96B8DCF25BBB009F4
+ADD3E77BFE2AF010F83C1BE339B0FA4581782A246086668B10ABE646B09C1334
+A894212EC934EC80AFEFDFFA7C6EA84F44E072E3801864398E192532476CD8EA
+9492441B0A1FFA3606ED65A10A8E8A87200096F3A8D3218CCE883A453ADA2B58
+1BA1AA2A5E3EF41A7F224F806FA47E36796C659C9984BD45AF96FB8A5464886D
+46FD31A07B390F3CE60CCD246ED0E1CAD0521C7AD4D405A7A5606EC545AA78A6
+2FF931A5EA145350006F96E4854333B4374E602D71EEF218C15C31D866F3417D
+147D88DC59B7485C532521BA04EF26040B140D84679E38DD71576B4D367AA58D
+B4CCC2B9C8CEEFD28947BC07BB494AAF2DDB0136D77350BB00E2912F32E23D0F
+54CD1A8B717A6973F3B87A627A601BDCF84562F771D6627D9987F659E04A205C
+6EDA3339856C673F51402AB278A8099E2C38FFECEC5B7AD60F1A573995AA93B1
+F7FB6FC8CD351F101FD629969DF1D3DFC67517CD5B69EA89612A19A1288840F8
+D2AEC8131971101A4563BA13DF95EF8CFD634EFA417D985972084D45B94B8234
+2437367E0F2F5191C2C721CA9453CDE7114B8A952629FDED8C0D49B505623A8B
+EA6267A8B676C0A2722D9E1C8D4B202B949D86F3DA5861E0AE858C398D651AB3
+500ECBAD16B80FAB6565F19BC83C7CCE995A21DE4BA42D5B346B76F0A64687AD
+75931A022AAA078DC8AAB00146D59C041A70AB4978D6A4D809E94E0F849F8379
+DD126929166FCE6EDB1F47C10DE60A539D53181D88E0280B22F5CE53F7D794AF
+4D60F82F098F49FF48762BBFFB7F47C813999C3C595AFC86CD0B7BE65DAEDB32
+CB25D34DEB46C4AD0D21BFC3A9A11405B0873D4E927B81F4EB1ABD547CBDB6BC
+C28B2A1E34685BAB890DDF3423848ABD848400DDF57E5E5435E5A6F73EA79A24
+8AC886D63920703129B258BA8717973CA2FDE1E6755718E9283491C6611D4217
+131352587901769AA8A21F616EC20C1194DF5BDF59F980BAFA88316E78CFD776
+6C105A0C3CFA40AF83551D9C4F5D237A38CAAC1AFAC9CF03B0A1369DE1ABA1DA
+B1B9DDF82D9FB40BF0DBD74168E1D65B769292B48547DCCDB8023FA10A81431D
+D252B18FFDC276D5CF4618A7BACB70660CF177C6496B0B36E2E8C1494640BC00
+11A25CC5200A0C9076854B095EBE850D0AC6A736F8DE5374A7A8532AC5D3AABE
+8A1587A7BC96C843B1D57C0BA320BD7E3600CC8CCFD4AD6D3EF8D34CEBD5EB55
+B545E390482BE9AA96C298172F0879718031CBB6173885E7B425115A934B23A5
+C5C87D078B81C776A2B72E564662ED3079A19F4C2544CF1E2DBA7EF84E0EADDD
+9B98E93F5B9CC9E1F63BF5D3B4AD23DF0A82CC481E2351274426E3D0986D852E
+106CDD6D5325453720F02A01A21B3CC7EBC159A8AD8558F049061AB37344453A
+5FAE64E67DFA79E3FA729C275FD32BD38E09815B5C85D94909E448627FAA373A
+0C6C1CBB3A8C8263D1B4B3A080D05B61C2C2B9F21090B71663D48140DDE065ED
+14CF9752E806DBE5E1BD69A9DDFB250E9EA0D4849962B18360F6567BA3554817
+4F41D789FFD5700F85043461632C060C3EBDA9445C644E092BF3F012E113A766
+0ADA5F1BDBE806E51B294688FB8397847E27B311C9F0CBC64A8DD820FE887E63
+3117C3E921CAACC57F54F19ED20AD61BADC8C60DE9FEB1C1C3E39FF01BB0A1B8
+C24D14CDB1170D17B82180876C5A920DF6EBD0C31D283438E086ACC4042B1C45
+E915702288FA47C269BC22AD5DDE54AE8D599E6D77A19A362D49B5ABB051053D
+4D7CE175432DF3C803F934690D1EFCBEB637D314982C75FD2BC0EA5CC6A794F7
+FD7F7B158F81D3AC9E3A7F55F6A98FCEF757D5DF114E5C1020862DC5BD8DE854
+57BEE746C45E9108F029E68717FEE815A4385466AC97F5F8F4AA6728D76929BB
+9AD49089C18707BE23C449CA50C11AEBB8DC6F21F9497121887FC0D1F9BAD1D5
+9238A6ABB6DB63EFF800FBBE29A0DC6E1751B578B152BB3845AAC8E6022599BE
+29EF5325632340CF216BBD202B61BBBDC68F91F7E47296F3C257CDDA95955884
+398C55F58EB6C08D6431602DDA5BFEF5CD477D489D6902C2CD37D25492DC1222
+CF22ABDF01EF0EF19A49A4A403866C910B080735E2D8211894D8BE0D86D0AF52
+5F5417FE0D8028852F06C64CC98D3F01B2A54007709EE157F555528726E44781
+696DCBF37BD1E441A54F1C058579557C35AE5A2A8099615409F8B8764DCDB05E
+6A46BF57FAB00A33C014694E80D5AA8A2182E4C648AB7D4F83DC10B83BD9601E
+40AF9021381DB253C2125357F819F9D01A17AE3918E21D859103DC4D6966D167
+7E304DF9694D5107DD6F6CB4416642C4750D5BB85CCDAAB368E324A8CFB09E0A
+5877E1C1F837B105D9B61E1786D26BF02C765D3047D4A8C8A1F12CD5062BFDEF
+8516AEA8078F3B6F09A6FB9C967F832AC5D79354B720F0466A2D8620E56EFAF4
+8F959C4D8E1A2D572E3290ECF7C831C659398661F59B08EF3AA2FACAA655C70F
+91E54D53E67150245CB81A5128A30B4A061FB6575EB0214C8719E08C44EC2EFA
+B3A50CE947C18FFC3F8557910E1FA276088667A86FEEE4EFC2F181C49DEBAA69
+59B6F48917F9F433C7E3FB9ACBF58FC87732424AB7D1124A10707967F923CF8B
+5020E00E532CD077D2CE6DFB2609123D15B8B3B1D6C6E00FA58B83595E35D880
+AED20B11E908D9C61993384A222ED458875F966916B03CF8099477C312ADE6BB
+1373EEC46B823E91DABABEBEC7A2F76FEE618C5821FFB6C5585D73559D8AFBB9
+0FD916018AD8D0E6FAEB79345BD6CF14BA080B690A2EF0B3A073DA81B8CC0C5F
+3275336F56D0563F2A536268E35A849256F617645FEDA785FC96B0276E96F91B
+84793029C6B98AB7605B9AC5F63345A5E91AC07397B40EF856180B334BE47108
+88D856185D0546DBAE75253E778D803D803A7B246F9BD2B6F3A12270071544A6
+6F173B4671B4AD3E20C94688DF7F1CB6EA0EEBD1B06127A7E7DC190E958AF0BB
+DA59E0B940E3A88FEFAC83EF10B4282397791034A69E7C8DC10B9AB5E27317DD
+B5508FD10C9C02FB0A9D083BA060A6E6F33F48168939B27560F0A080FB902EB8
+11E9CD74E7E9448A7BA7484B802C88073CCC280ED4FA164132C4A7E2DF062525
+CF9D9285009EFD6FD1E30D5AF0BAE568E094D4BCA5D86CF88A2979ADEE744585
+BBC8118CFF5D83364B01620C8615C07E61197215F06D2D065938CA7EFC7D3351
+0500A71A05CF47A5D67F24AC1C7BDAA977EB2A1E5370AF0FCF7FCB16F0A7FC14
+BE31DE5BB0252BEB0EF974B1D58BAC12601424057C0CAB73A6A7883A54A72309
+DF9602ECCAFC29C319DE45A6417A8CAF46697D742F2F861122668CA96736658F
+9EED30163DCE9B424FCBAA19DDFF07C324828BF6B5AD0DD41B842F8ED254BF10
+5549BB7474D41BE0FAC170736F879B855C7D2133487F5BCA5940A45A914FD141
+5EEA94FD36161BCA86DE5944A1AF9FCC3AFAD2E52BDEDBDC1913046EEC5F1368
+97CB8C7A1F8C031A151DB23D42279970320F3F4B961D1C7803BD07514BE2C03D
+AB3791A9F82C545A5EA3F7A2568211926DFE2AA0CF0B706A5763F70D7CD1F39B
+38DC8B5AFACBDE0F55E1F21D4D312217C6D31C9A93DF60CAA58887CE62C4AB2E
+66063E2EDC7B4F5EF539C729DB9E2208EE0F5C04FAEA2C30C38FFD84F62ECA53
+4D42952BB3683DEA550954D19A94F651C6D7093F5741902DF790C95507C31948
+EC909649F6809922DEAF2B47A9A376636D62B6049493323F66C0A8CFBEB66AE6
+31C69BD8F7EE51A9C5DE688486A5DF0B2F03ABAE0357170F70ADDAA9A1EB0D67
+12A4BAD07C47A753453575451AA5666B84DCC8B427678C9B8BC130CFE9207981
+26DC39E6BC715E0B3353C34FB111AB26DD3FED9E0E00933B3E2E357D190FF99C
+56EA982EC3BB7ED0BC03F3408276535A338D72EB3019C77E70F4D2F52ECBA7DA
+00FA4A5DAD777214FB3835B5899742B81ACF0A01AD0E47A11D16AC55122546EE
+79C6E93F51101435120A6AEEF8D022997C74FF0A3DFC6E22C9C929ABC2CEAE9E
+8E43B6D0BC0EDFBEECB5831C603FFC9D0BD064AB54C9A449FA98CB1FC2238903
+2C57BACDC05791FE45F069B794AF65B52AB5F8120C4008529FD24717ED17B0FE
+D99FF7C5804D303235B6F996FC2A02DA9C392A066812653B8E541BC38F309F4D
+AB56DCA08695C11849BF155FF173A96290CEA2E74C33C3F1CC77D8D8C6729249
+2C0E9FB82477600B6569A3CFB0AC9285843BC79F226567314F2B0B9DCF049DCD
+72F37AE1337C9E822A1191B3C2DE6B96D69A2BC14660D0FFA7A4D51BDD640E90
+16CE25382C382686FCEFC1DB233A4B0906419E143A8B63975FD8E07D092A699F
+1B16C8576038090C9D5439C263A2B2042EB950DC0EF2C18439E4C0840CB7A29F
+27DBF7EA1C4EDC0EE3506FB3330E8274EE311F0A9207F13B00FECBE42F8DCC46
+63476DC28C275ADDA56A84535087F79B6E15083E8C855ED6181D266D880ED1F8
+E4F33A602EAE4432091423C3640E49DB68E1EB83AEDB7739049BAE3FC53EF314
+93A74C45C2B1ECA469B7B52F400CABFF431B220AD14E1EAE70CE0B7C9C89A236
+90A45D4B3ECAB3E7CEC2B8AB30A0D39A3E10D6A0DF6B7C3F8EF7268019FC952F
+F8D47DBCC809591AAC86D7D7B7A6DB12561FEF0531069CF4FB380530E65082DC
+F1D05A893FCCD8938E5FC23C3654B3A0A352034000310377DAAAA4A15A76BACD
+43C6BBF93E337946542B96AE3D133575C60CD13D202DA617B34C652A23D5E904
+97E300667AAB55FEC698C89647284916916F302146913DA5B003EC153C95B608
+9BB1CEF3D6141280875BF1E144A7D4D0B9C08152ADF2D5A05D101697CA36147A
+297DA42055ACA9652CC9CE0D596A42A73268F062B08E60C80DB50C81EA0180CC
+698A7CD50212524CBC3E5C7103F48D841A50B6506E25E8B34A6096D0359B0870
+B5109F7FB44876D24868B5EC0AF2F4E68FC0444A35AADFFC68183BB6E8F8C7CC
+6FD42F158AFA49EE096CC4432640F86549C565EEFA779E2218EDDB73AFE840E0
+590A8440CEBB2D7BF83256485E617685D05AE401C7105CA5D520B23265D7A109
+A638A5450C19C406AD524CBE2678EC97DC28A9C8307BB7D6F08BF7D7DF07A280
+F8DF84BFF4BEE3035B6A3133292B96918618D8FF3C54BE5215DDF8E5A9D3302F
+2154D48D33E374C0128BAC271F4B5EB30FEC59E702B6D3B078752AFDDE547CFF
+BD8BD019E775DCE680B6641EC6B6C639F9A81E7A34843CB7BCD6E26744A6F2D9
+7BFD4E207205B988E5922B12AA325317455667E5A0136DADDAC92C389D3F7066
+DE370042F545C2BD97CDC5AF80B1263B937AF92FA75109FA64EEB0E9A83918AC
+92E8AD5D75AA769DBB2453B42CD1B98F689BB56E9FCAEE456C8F0549300D22C2
+7106962EECB67FDDC78D109DA76C1980BA2B4B89F2305414A72E78CE66D3F162
+543B266587800FE3616B55B1147525E3DC456BCEC1665E01C027354E138D2880
+F0B643AFEC47FA16D6C6894D45627419E40C40F6B34E663B4A82D4672115137E
+52F31600FD88473B0F56EFB50B3402A1DB9090520DD82AB3A00D8AA481B01CBC
+337194CB49972EB557D80F3A3BE89EBCA984D0BD45972AA47BDB66816F5C9E99
+F60FBFA6C31D00B1C51A293268BE49AC80A4A28F919CB1AAB7FDC28D2A1E805C
+64775C50ABA31A86F812B2C7FBCB1FCBFAFC0F483E4F9174E60716C51CE26F73
+6A36B5566E8D616E6CA9A7BA4060D16D51F7DFFDE45ACA4990FF43CABCCE04E2
+B69C7B11F0F4C0A9A9788539BE8977D81223B98E7AB76EADF95C6E78698385C1
+8D70AF232AAC9BE222D954F5C7FD77E938ECD96572E5B8753F9A5D403008118B
+CC0171A621C9682A25713A31843D74FA7EAD73141F1E4554FFFC71A02EB86FB8
+320942E2BFDE7678AF71FFCFEEE3F9328458DEACE101341625B05196A3643051
+12037C9E88940758C8BB69C4DB90F58F798CC00F2CE50FA30F8ABF8C6A2AEE5E
+DBC15B5C998B2871A2DF437A58D4A00721B023EC53476FD538E99AFD36308EC5
+EAD6570456390AD49A6049794DA7CC4FF90D52166A6209D4110C12A9B740343C
+202E7483F24ABC0D95B1C6044DD9674CC5B6432BA242581DEAD58B7493AC11DC
+AB3015247EC7F3D5FF0D38D4B33E1FE09E5F63704084835BD6CA565E038D2CD1
+00A18BD30801E0CA98D6C2A2767FD2C74D3BB821C16B5E3EA835674AEECEDBA0
+7A34BF5DF232190502712891930C61E3AEDAC418EB9F7992E220F63855D16D06
+0A586D4DDA86EA7634E9ED540882BCBE098AD73752247FC4FC6453406CEE1E19
+0FB84831CCE16EDF748DF0D0B61AC2CC3FA8D4C8103A051B2204E8A5166B2CD9
+2650854A9BC8AF642EC945B7DEF10CC7F9BED36D19D57AE0F39E5B6D55472F4C
+89F21FCD45B6570E02B234FFB4EF4672B334732230B99E8E2A0A4267C059320C
+CEE8C67EC198DB603CD01968E83A7B0134FE4133B4014A398584AB71CCEEB998
+8B60B244A9D7FE34FE77A2143F668D600F923C6B3CBFFD6D24E6A9A5C5869A32
+B3ED6963E84366203EB82AF9D181EEB36676D4CD3A8B694F7585E283767C5F8A
+EE0142AAF74167A0CB151D06F05F78C984B1A6D88053F0FCE5EFF2213A6D3337
+1D20E7FFE0A70040C5B9260DBB781DE09D46220FFBD1372D662A9898569E109D
+07D3560BF1FBE95ED391EB7159A16C8A214380D5C265620C38B6C9F24FFF6C7F
+AF5B82AA8C84E514B86F314D3CEE3F5A357676570A085F42AD1D2F7E1E6B544A
+A96B365B5C47ACA4068F3B69ECB25B8BE74834D7E7BA09AAEAC1797D5DBBB08F
+31431F5E50273C641CDA5EC7C56246B6BF59C2E56EEA5004F7FC36FB1A93D8F6
+30566A260FE38A2EEC21BD5439E15480FFA57A17A72786E98BEEAC8FFB530D17
+568FE3EF5F1962359DC7E59DE5C721FCF7A330495AFD7F38A8CB82B55A826918
+E4AD6A84648EF1456658F5C69FC5BBBF54ED930855FAFAE82CD4DD3232496A43
+A329413120095902FAD5FBB54A5D9398FE0EAC4482E72A5655C966FD27CD7BAB
+A94DF1E54E7E0D1E9861954B617042DE4D34D2798A628D95759437A3A63D3B54
+0407330F3CC93C476941EFEF1590090B60AA39B7759E96D5784D36A93D02B9E1
+25EA97E3DAB0AE147612B1C61BFB5A28DB7DC903CD9D14545A49998F9E7FB80B
+97F2DEF6D2D9D3AC968C71C3E7CC7B776A4D0CB3D8FE9F351DE74D8E28DBA6AD
+C7B7473051D372495D51F32E4C315F7E1FEE69FEB50A2AC41B3D753E788AF83D
+BEC200E32832F9290610042A74E2ADD177DE1F553C22D836B865673FE8FF62F7
+29B760CFA8C58EBD47131AE5F7131A8551BF6BE477EFCDBAB0219F411B54320D
+EA1E74CB6598DFD42AA22C2A34690F90732FA72F3C1CB6AED96A0652BED5D42A
+790A25FE20AE2FC4E8964F0A1ADDD2E8FCF6D009CA95D41B70A3E82536DF3F3D
+8EAEE50310B1FBFEA16472790ADBD69394F6AE200154B65FA4397C88195C5B9B
+2F4C67B813D148987097F447A890A17CEA1694F0BD89B77FD4CB414A0A18083F
+FD48AE1AD4DD1E5EC5AB821061304774A1087E6767CB0738AA8C7207B5CF410E
+1075D74B27F4DB85A182B27A3DF94981BBB315277C70A22260F4A00EDCF7F3FB
+FFD5C6D3B18F29A1DAFFFCB352972C15B13E2AF9EE1C2196A14A4D6F64C76F1B
+340582F1BD063F9D63990FAF20CFA09785353D4A27B9A8725D44ABD8712BE25B
+56C88B435E53BCBA60D38823BF93368F45A4618E234F3C1BF2C1BF13FD2C82CC
+85E59E3FE4DD67CBB4AF25DB3CF82A2D47914EBA390EC87B893E3AF3DFC12DF3
+B36E8FFF3A6DDE708D799C9C9882CF5C568B77CFB92DD134D6EC86A5FD0D5B46
+C15C4A13662FAA49705CE1A0809D5C29791C13F153E622DBE47AD5EBDBA07E78
+19BBA14A8CEC6A1C16DD922476B6A7EACD5E798B3B2457FEA6779140504840DF
+57E22B3F4FF33B78C8CEC5BC11FD7905DF6A7501340CB40E49E86B8468E13857
+B8FA4345E8209B501B30829128526ADF0424D12F8FB7690832F9008472A62055
+0F467D4DFAF718FC2BDA9A39D77E2EF4550A481956E8D126593BC8A7DE888A78
+02709AD3AD0E89CF46C4699B8337E505C23382716E37F3384F768EE37CB11462
+2B492A09FEC41C8DD33728441089A0D523EB1BFB41ED365A5C7ADD082D14045E
+200606FD8B2498D9A81AC8DA319194F4F71E5E5E966DFB60F7114977D0141C4D
+90F0984C5438D6F455D94B966937EE725D480112E62D6F3AFA41186A9C9EB7D7
+2D7CD239133B2D34CFB70DA8FF64C2F84542264E8A1166A47D70774F6BDC422F
+2474C6899E1ED968A41008705393D50DFEBEB92420F9AF90EF638A96192BBF38
+81D1C5DC6E3FA5F2D9B6E871141CE429A37BD00763D1FBAFDDBB50A00AC924A2
+388EF0270B15FA03E769F1AFAF0465ECF6B5537AD75B74A435921D589DCD7310
+595F4A62DF89116AAAF591B34F09E5AC07A983338C72B432ACA1AF0794564DF0
+04D1F0D4E6D8318A07578FC5F962E648948A7272E2E14CEBCBBE138D9B4571A7
+2B38DC96C43DC31CA8D34A5F52A4E877E8792AA97C95FAD01EFC5D85FA13BDE2
+70767FDDF7D513C48C257C141501CC74314300585064F6F5F25503A89F8DB27E
+FD36F76BD2B84E24F0D0915CC297995E640FB029676E9277A497A6BEB80B74E0
+6391BF4C52707461D9EAA8D5ABAD4BA636FFE5EF82C6BC33E7C15A684FBE369B
+28EE6F4D11FBA39EF06FA10CF15E4333E3C9A1BBCA3C3712C2DB8F43B5C36854
+FDEF11F528DA8DDE4A6FEB1305D4BA73BBB629FD53A74AA41369361D518C0BC8
+13C826F2AB3E8335481338DE18EEC9B8DD7E7F01F44B329A2BC1731637A70256
+2A6CF98151E8338D7DEA6FB0EE2168EE9C7A4B07E91467377F23F1246EF71F1D
+9084E6ED573959CB55BE5D1F91FFBA4AA7E9DE42599E97690EA268D3CE467658
+ECF76521D18BFC3AFE305C7AEF0AA44E4300BFB6995EC9785540A90C9EF8AC00
+89F0D74B5FD167AAC40A5352A718733DF674FF9164A930CE03909A93B1479248
+A41DE8297192CE693F89A8BC54741B0EEA6841C16A3388D3564E10E92C1BEC86
+2B3862E97E424356689B9103528A71831018A759CCA7BFFC84B2DB942077E02D
+9BCCADC6FFA13E783B7AD4181DA76CD2C4BD870374CA65D1BEC518C2728833F3
+FF038028DD38D8811EF8EFEC4A5236D42E5B30CEC0F06F79584441C432956F3E
+5CDF15196926D06D3B4729A41CEE504F4599A193AC71194C17DBE38E6684A695
+C6EA3AEADC8ADEA55AA5E42147528E621D78ABBE5C48919BCDC02BC74AE7FF1F
+486B782A288C4F95639C05EE7A42ED92188863BD1475C7C54B8684F691AE0858
+B6B2C063C3A7D3DF6DCF007C2F3836026C31A2ABFFEFC053512F0DF165A11B8B
+EBC10B920152FE283BB8A984F2C63FD9D7596E29093570390F878368BF418B32
+649935B8E9296983A62D2F0C5D4F5F23D1F249A9F2C3FC1143468106FC6A1ED3
+7CC2AC98DD9784FBE00A972F36132FD489730913BBF1BF2B17BFE13B910112FE
+2C735843BFBFF1F9567DF38CAD16882CB769FBB505365BB9BA797CD743C34F26
+5DB16682D15DDB2C16DEC577C464520AF87FD33835579D7C067EE71529DBBBDE
+030BE21CE1E76233C038BBB9296473E5FC64E6C07F0DF7322C88E4014BC1BF29
+6A65E6D5E8EA12BCD9F53C4B3E0F8202E082E4ADC8604D59862EA62AEFE80F44
+E917E635D59A06D6F05BE53CA22058BC8BE3AE39FD965D6C622F0571BDB4E9AC
+C3987A5821D142E62ED17402E332430E92FE10B9DF8E3C0B17E78EF098BF4CC7
+88D7585BA61F5784143323AA813192C5BAB971956B5CDE027CE8BF56C8C8391C
+12719AC323DCCC8425A7A637957DCE2369B73B1089CE53430D341BA0EE8DB907
+C722B00404D43FDF76E93774896F8DA82BBA116051BC4BC2101B5655F76D76C7
+868CB3E452D1A9945CDC9A467C6A1D74966C01B8FA7C8A2E3AB73CC66910A771
+AA23E6F809CDFF8280042A97B0FBF3212CED3416A7E9E1CD33B39A491872CAB5
+1F73D7AC7A7D7ABC70DDA7C51ECBACAE9FD3A5EC9F51F68B149561C41BE5F059
+48FC70F61E1AD84CB2230FAF1E88114973F1A81732C73CD8CA14CCFEEACE7038
+14CE80A9CA48358917D78BCB14E925C2D858232163D0937190C9E138D5CBBC4E
+E6D682B3F596C6CA5E585BE658750587EF9D14116FDB48CB82182AAF32B5B0C9
+0DBF994BC19D887611EFE916FC6D162986CAE900B73C7333290DA365D8E5D7BB
+7BE61119741EBD884D1A5DF8CA8E7EB2F359DE8B3097F61BE2BA74003C1C499C
+B20A617275B4BE6D6FFE2FE00BE02FB72FCA427A366D1CB42719BA55D17DC2FB
+482223E5A69C9D3C5B6F651EB69D00F335A8882E650278A998A2392C0CC0E947
+8EF50B4C80B84047CF9A26BF669254BABC1AE1A6D09675DFA3D5BF9FCC4555CB
+32E446D28F2E5254B160B864F03B70067EB336E185F4E23E0A66DD752872BD3C
+2B1DEB68093E53E9727275091A697231E9D6807405FE5A6A13D881D13C080AED
+B600265E93F5F22DCD02DABE93FE8734C628E91B370812B88F4849CE0DDB7A1E
+0341803B29B510CF216F5DF0C4B5D74C323EBF8788FB492109F8047D224D8E22
+301933535D47D8F7100D27BAC50469D4AD7E34F77685F53ADE69E90877555B1E
+9A3F8FAD10B4215251F335FDE5A4C8F426DD86B3F91BD157AEC3B5C303B802E4
+5869FD1830217FDCF769405E36876E044084C124191EEEC6BE575B818344BADA
+9F51B0214CE7E7DF6891165B427F4DB1744030B6E15AEBE289392677A6C93994
+6F98539465E2B5C7FE0A8211C41DC19D43279E6638BEB06DC30ED8E82551635D
+F80221BBDF299E7B7D6781BF601B6877C7FDB78716BF6B0730F9498F848D3F5C
+0D24F91B767D634C67BC6D979DCD59E7393F284A1BD4E824B9C93BB659E6CB3E
+77F693BB2D1D3219502257D2628C63B79EB4BE2DBF1FB683CCEB7E639A87D599
+D6780961178D9236A086E743EF447A854FBE73C7B983C6BFF0E602AF9366AF00
+6B75763481607E1103693406381601E29CB57A7A66F300820BE79E018970C7E2
+4B7A15DCB7F1B7BF1797F239F3145A37EF67BAE0FC725E95177B0FA091DDAEA7
+AEBE6CEFCB1EC0C244EC7939D6EE1BB525C8902B0923B776350E6AAAF8B181FA
+5BB7809291C9F85FE67A32833EC6E226057D39EF8BB9C71FCF5B081AFFC496A4
+FA719E3B24E9EC9741483447AA8A823048984FFBF209E1609D0E3E2FB13A17A6
+B476E204886DDF9998A6B1BC3144EF6EB322928AB80D36269920465764A08628
+1DA8121E87DAA13CE4FBA818B88D72EEC0DCC5ABE99912905446B18C1703E3FB
+C190D814B34741D3B5A745DD8A445EA8334CC2F26CF2AFF782E924C90D91EAC3
+8EE8FD657C8EA154425FB6260F5B1EC55AC5E7A7F15C56504091C0B8C12F4AEC
+978E6D16ED42ADD83AD5BF66B2643AFB79B59B775BA8D88913CBA64D10185A7E
+A0CF32E350AE655AEA3A76462B7202886DB4F192F2C842852DEC3F3C430EB3E3
+A67983303039E332867D11BFE112CFAF3D4DA98C012DBF69FE4C25A9B8B8FD3A
+6A04F3675E73F202487188A7BAFA7F8DA9E9A2EECA64E7062FC69B95E2A715BA
+66623D40E2CF080DF61ABF9C656D1CE8C44FE31CEE80C0730113582B92D78F01
+B61BC6AB48C856592B57013C3A65CCBB9721F703F1D4560528C20EC19D721545
+BD3CF85A0617D2FAA302C9AF7010D9E16702002042EC5FCEAB97FCA98D6A9198
+8AA663C6DA902AEEF942D8FF037389CA52CDDC66C7044DD1BAAF8706FBD01E04
+2D232FE649E0D0E9F9ADFB8B49C4C0213C5AD1FCCD2F78B758B756ED2EE66D98
+7980D4548C51911E94BFC4F0A1B8C8B3BED0F88B761E745CB4426C0B588CE66B
+4349049897C6BC62F514CBB20B2B0D7F3076B64BF6C142550127374B8B00E0B8
+9DF62ABB9B1F9B6A6F77AC00D2FCF0114AC0C37EA54C1BE43257CD4C298903E5
+8DF8548E83D24843AB59B8D3C26003309DA04432BFB817DA2C197C51D9C9B340
+C74F849171CB3B868D4E0F69B1679FF5998D4A9F91BF3E07FE734C589157C10F
+A05B9902CCE7A17FD9B9FDB25804BB91AC72C746B3F93810CA001E58B07B53E2
+B5A4854624960F5874A2B3217733BAD60DC894ED947727135C6CE916369EB538
+208143B8BE5F0039F4AA35DCFB8FDEBF0D29B27044926B732649355A43CB41F5
+39C53E37B8CB3AD3C8CA248FE48E3FEA3B3A062BAE725C9A90759F26448457B9
+940F7EC7043259B64A8634520560B3F5914E6B2D81EEF2FA5130110CD4E24C2F
+909D8A71E3600C1152FBE85306E0E005D5A665B20AFA7E039C08F52DFED85926
+12E8AE9F17014CED627D19A23308F641A09C9DB5A3CB8C4EA818873D48AC4EE0
+90B0094F29AD39D719099EF49C4DAF61A3EAAB108563529A032CF9145ACD90AC
+6D79E73F6C93A9C6F86E4313732282CF1CD57B6C4A1EC0BE85B8829AE083834C
+049877A4729F0894764E07CBA8B842A83CA8D121065096B98AB299D768EA3FE0
+028089ED4EFEBD415F4F53E80B9C380FB3588176AB7A10452DAE926B00608E6E
+DB7A0EA1DFBA09EFC288E4C1E3702D304E3A49A8366367891600083C3E81CACF
+8B700CE9C04152ED9901BCC35A5F53AAFB97F375502A735EF9A390C0F2CF8946
+8291A94B863D38DEE3B61C998DC2C08DB844FC30F78916FC658A4EB91797E986
+A1D386172188D128F683CB64267A715522091438457CA9AFCFB476F46634D78D
+309AD3280848255EB1465975654ED124F86FBCA22C4CBAE006ECD27072A9E2F1
+2B03B5D312B47D17D0D9A6112BF0697BE5EB3DD040D0BC7D7CAA92F0849A0576
+4A634AF01B3816FB59EB4FD63E28086F4308CC2C2047473CE671FBF817CB6E89
+37BD749C9761921FCF96E10FDBDA6F4ECB0AFBC2B9E3FA77F3D12462EA6D2074
+8549634FCB16F304C1F204689E7C4F1AD1D8A34F20A073A2927974691DC6F248
+B5AFF93BAF96C8F24211502E861D11BC276FB30141D2358C0C3FE709837B2070
+FD7D3BD533EFA423F53E34374ED967BDAB1D9465BC53EDB8EB53764D21A49D65
+6BC45FB6F4C3E663BB93ECA9F3C66534418B4432B0349018EC8C503D7CD38384
+9683AFBC0D6E1FC4C51DF547F927404E475CAE960355B7F63B5C9617BEAABBEF
+061E35DCA59FBF1AA58803170DB43BA1D458F21C7549CF57601D451FACFC93BE
+CF72C626AC0E6EFF7C6C1265DED3ED04308CF0C139630799B7B710D39575AC97
+FF640552D4087E60F5DFED48DD998D29C6532005C8B648E51D4F85A072396E63
+A11CB388893B813213B4FBA4A500D8B8077ACF86845DCCFA3B139F8C86AFE069
+D497DB26E526424DDF6BB981E08D9CC1A5560754B95008CDCC199048EEE8E6C3
+AA3F255C4FE4C392AA947F614D422021A55C4CBF5D9399AFA2E715D31B2A9F95
+0977502A1F511219FAB7DD1D9CB67932C8D0504DB7B2864B2FC1C4CCF03C7FCE
+CD4C0985288172CF5D76EBACF180FDAD74456F832AE0A013EBFED26873DFB861
+A0F2F13D9AF8C90EA667B03956DAF47A7C1CD44DD9517238C1EC060158D55710
+77DF077BDF35E9F96D07FD114FDF30F09FA0480322336275E9B3AF676603DD10
+75D4E9AE727889BD3E313A3F86C6784469D653AFFCE950990DDD65879506E8D9
+A4BBAE3A41D6C269F3A35EFF60E4F0EEA6290C29B81F2BDBB0E33A7B094DAA0C
+EAC603058FA886F40CAEBEF24DA460D2DD891B7C12290235ABD082879EAADB6C
+58291BFF83500EDC255D3FEDDE3E7F1EA5A055EEBECC18679368B17D03053732
+710C58F086B66F254D3CF734A377BF1C8884CC483D42A49E353230DE9B496300
+E388E1C3020C8D70657897350074D51D491C23F69CA20990DB6DB24297CA072B
+1ED9AC18A9D2EBBE141937DA9148B49351B9225AA10B6A8941B5EC833FE9A457
+649EB68FC795C2929ACE8F3A566016EB4518B5BB55223C56908D00190B91C695
+FC183D9862573936A1BAEE758FC074C281C5E73045544E948250976ADCF97B0A
+34CDEB2C05E62B32618236B698CC94AC3A4A317418D71FC85EC79FB2509EB76F
+0E4A9E09EDF79ECD722B0E9033629DD7F976E768EDF05280665EF818709CD03E
+3D9E79AB45D942B9FEF5584B7BB192CF574D80B98A926B4F698A53729A2E9F48
+3192075771433B7C0242127F5359BFE356BFC6FFAE3F78B8847CCDF6FDF6441C
+49580453348C3757813E09D6447ACCA150D05B2517EEB2826767AF869E3EB7BD
+D5CD1BC4DA45209CEE3741077B867A4CC52A1BB8951BB838D25533CFCDB459D2
+80F5A7FEDE77636CB5C512B122351D66281E14E3B80BF84833670981EE2E73BB
+70F5788DC8A943B96ADDB8EB1B2114FEAD89B38A2C744A0D360F0AFD47FC5B23
+C55EE2DEECDEB212084475B5BDA5A6EBAB7EFDFB389FDCC9861FAB518DF6630A
+000522A93907CD055E275EA7284D7166FB93CAD9D90144E7C1BB169635891556
+5CD2BC172EDCAB3B4263CC42BF0F0F3DE6E35BBF0E7FC62FCA92A5E74115C74B
+9557D5319652129289AC3912140A010FF60E4F3891281267FC6D80E528A90D2B
+D843F19E40B054C6886A8801C723C436F833564C1BD4DC92AB40D6337272DF53
+3F40275C0501DEF779F89BBA03CCC31161385D86D27A2532520244087B056868
+2EBE0FA551BA338FCC1E16306C071BF1711D3C675C85E08AF64D3E1A6F633B9F
+44FBDC2E7209B2CCDFC5C7B61D13ED4186F3405999E2A840B22E21F97F410C09
+581A93B11B7C2D887EBBD65A45527D193977CA207CDFA88357F0BBE6DAC094C1
+081FC2E3C0FE8633AA852A913979718608E3AE200B999AB696CF21721E5D9BED
+C8C6C97F485556EF3B80A36F8BBF181B5D04475459C73A951D99890E6B33FE4A
+C93A20B15FF0A4F55A6C5E200BE986C823D331FAC69FA0EEA6888B325D934B6D
+6B55560E4B3D74BE72CAEE1D03A79A64973459D32AFDF167105655C6B17F0BA8
+298D4D1BC7D7918D142EFDC0657D48C426D06553C2232D9A51B635530692B973
+CB475B3DD96750CF7B0B593A50B2A3CD370C9A38C8A229C21BD86A0981E3D11D
+6E29164B01D2776DE681BD49D6EDF45C5D9D4B0D31E19383297331F146ECDC40
+DF77A89E1B3EF3A631595239A93D78F1FE0B0E04C9FE4EEE83E6AF5FA7D5CEDE
+0B9883ACD1F1CC0659770D6B31500D247D417D860927ED7416C414FB7418216D
+57E66624DB53FB344E1AC26100DACFDE01C026B84FA15B82CB77E9A0E37AF526
+A76D130C953928B764606B6C168A7BA484F904D46930A8273A61741F1C0EBB2F
+8FCBB549DE3953876E3C2FB45940F1A98E5195EEA4FAC35EA66BD06F8861FEF5
+D0DA9E93B48DE54CA18F851DB7890DBE364E1D93527E4ADC15716A976274A264
+37F008707D590E6755A56F2DD9BA242B171931AD5BB6F24648A38FF1A3ADCADF
+A156478D8C9DC9A1BFA553D707E94239252DF6E83FC3DB1D144F296FAFF4981B
+C3052DB8D75FD0F74448D936036846AAD5F34B7C385D55F39B8368F184463578
+207CCABA7556D9A43C972BAA26CAA3BF0A82E0877D4D530CB350AFF88D920160
+88D937E0040F69FAECB44060A4E7B151ACD3AD46A659B8AF23EECE07E9029D01
+F77E7BE0A2783281141A8B7A13E013AE5A6BA5D20FC6D6A49473DFBF6E51C952
+D88EBA809ABF4313CA76381CA315858BB7EC4FEEA9C2864EA769F786E15CE30B
+57E8DE5EBD70ABB189D5AB67310C9FFF2BB0D733014148A3084C2E4941AD1360
+0B5E23B6C4462BD69864844955619A25F540
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
2[17 34 31 19 28 34 27 34 30 9[63 3[34 5[58 37 2[23 48
1[39 40 47 2[46 9[31 31 31 31 31 31 31 2[17 33[34 12[{}41
54.5455 /CMBX12 rf /Fk 134[24 24 33 24 25 18 18 18 24
-25 23 25 38 13 2[13 25 23 14 20 25 20 1[23 3[13 1[13
-40[23 23 6[23 29[25 27 11[{}29 45.4545 /CMSL10 rf /Fl
+25 23 25 38 13 24 1[13 25 23 14 20 25 20 25 23 3[13 1[13
+40[23 23 6[23 29[25 27 11[{}31 45.4545 /CMSL10 rf /Fl
138[28 1[21 4[28 4[14 1[29 3[27 1[28 97[{}7 45.4545 /CMCSC10
rf /Fm 134[43 43 58 43 45 31 32 33 1[45 40 45 67 22 2[22
45 40 25 37 45 36 45 39 10[61 62 56 3[55 1[63 1[48 2[30
49 35 37 26 27 27 1[37 34 37 56 19 2[19 37 34 21 31 37
30 37 33 9[69 51 52 1[37 50 1[46 1[53 64 40 2[25 53 1[42
44 52 49 48 51 6[19 4[34 34 34 34 34 2[19 1[19 44[{}47
-59.7758 /CMBX12 rf /Fp 129[24 24 24 24 24 24 1[24 24
+59.7758 /CMBX12 rf /Fp 129[24 24 24 24 24 24 24 24 24
24 24 24 24 1[24 24 24 24 24 24 1[24 24 24 24 24 24 24
24 24 1[24 24 24 24 24 1[24 3[24 24 24 24 1[24 24 24
-1[24 2[24 24 24 24 24 24 1[24 24 1[24 24 24 24 24 24
-7[24 24 24 24 24 24 1[24 24 24 24 1[24 24 24 24 24 24
-33[{}71 45.4545 /CMTT10 rf /Fq 131[45 23 20 24 24 33
-24 25 18 18 18 24 25 23 25 38 13 24 14 13 25 23 14 20
-25 20 25 23 13 2[13 23 13 28 34 34 47 34 34 33 25 33
-35 31 35 34 42 28 35 23 16 34 36 30 31 35 33 32 34 5[13
-13 23 23 23 23 23 23 23 23 23 23 23 13 15 13 2[18 18
-13 4[23 19[38 25 25 27 11[{}82 45.4545 /CMR10 rf /Fr
+1[24 2[24 24 24 24 24 24 2[24 1[24 24 24 24 24 24 7[24
+24 24 24 24 24 1[24 24 24 24 24 24 24 24 24 24 24 33[{}72
+45.4545 /CMTT10 rf /Fq 131[45 23 20 24 24 33 24 25 18
+18 18 24 25 23 25 38 13 24 14 13 25 23 14 20 25 20 25
+23 13 2[13 23 13 28 34 34 47 34 34 33 25 33 35 31 35
+34 42 28 35 23 16 34 36 30 31 35 33 32 34 1[21 3[13 13
+23 23 23 23 23 23 23 23 23 23 23 13 15 13 2[18 18 13
+4[23 13 18[38 25 25 27 11[{}84 45.4545 /CMR10 rf /Fr
134[51 4[38 38 40 2[48 5[27 6[54 47 11[74 6[76 1[58 3[76
76 71[{}13 86.0772 /CMBX12 rf end
%%EndProlog
%%EndSetup
%%Page: 1 1
TeXDict begin 1 0 bop 75 659 a Fr(GNU)33 b(History)e(Library)p
-75 709 1800 17 v 960 757 a Fq(Edition)14 b(7.0,)g(for)h
-Fp(History)f(Library)g Fq(V)l(ersion)h(7.0.)1572 811
-y(Decem)o(b)q(er)h(2017)75 2463 y Fo(Chet)22 b(Ramey)-6
-b(,)23 b(Case)e(W)-6 b(estern)23 b(Reserv)n(e)f(Univ)n(ersit)n(y)75
+75 709 1800 17 v 960 757 a Fq(Edition)14 b(8.3,)g(for)h
+Fp(History)f(Library)g Fq(V)l(ersion)h(8.3.)1608 811
+y(Octob)q(er)h(2024)75 2463 y Fo(Chet)22 b(Ramey)-6 b(,)23
+b(Case)e(W)-6 b(estern)23 b(Reserv)n(e)f(Univ)n(ersit)n(y)75
2534 y(Brian)g(F)-6 b(o)n(x,)23 b(F)-6 b(ree)23 b(Soft)n(w)n(are)f(F)-6
b(oundation)p 75 2570 1800 9 v eop end
%%Page: 2 2
-TeXDict begin 2 1 bop 75 2207 a Fq(This)15 b(do)q(cumen)o(t)g(describ)q
-(es)h(the)g(GNU)f(History)f(library)g(\(v)o(ersion)g(7.0,)g(28)g(Decem)
-o(b)q(er)i(2017\),)d(a)i(pro-)75 2262 y(gramming)10 b(to)q(ol)g(that)g
-(pro)o(vides)h(a)g(consisten)o(t)f(user)i(in)o(terface)e(for)h
-(recalling)f(lines)g(of)h(previously)g(t)o(yp)q(ed)75
-2316 y(input.)75 2384 y(Cop)o(yrigh)o(t)301 2383 y(c)289
-2384 y Fn(\015)k Fq(1988{2016)e(F)l(ree)i(Soft)o(w)o(are)f(F)l
-(oundation,)g(Inc.)195 2451 y(P)o(ermission)9 b(is)h(gran)o(ted)f(to)h
-(cop)o(y)l(,)h(distribute)e(and/or)h(mo)q(dify)g(this)f(do)q(cumen)o(t)
-i(under)g(the)195 2506 y(terms)h(of)g(the)h(GNU)g(F)l(ree)f(Do)q(cumen)
-o(tation)g(License,)h(V)l(ersion)g(1.3)f(or)g(an)o(y)g(later)g(v)o
-(ersion)195 2560 y(published)23 b(b)o(y)f(the)h(F)l(ree)f(Soft)o(w)o
-(are)f(F)l(oundation;)k(with)c(no)i(In)o(v)m(arian)o(t)e(Sections,)j
-(no)195 2615 y(F)l(ron)o(t-Co)o(v)o(er)13 b(T)l(exts,)h(and)g(no)h(Bac)
-o(k-Co)o(v)o(er)e(T)l(exts.)20 b(A)14 b(cop)o(y)g(of)g(the)h(license)f
-(is)g(included)195 2670 y(in)h(the)g(section)g(en)o(titled)f(\\GNU)h(F)
-l(ree)g(Do)q(cumen)o(tation)g(License".)p eop end
+TeXDict begin 2 1 bop 75 2207 a Fq(This)17 b(do)q(cumen)o(t)i(describ)q
+(es)f(the)g(GNU)g(History)f(library)f(\(v)o(ersion)h(8.3,)g(10)g(Octob)
+q(er)i(2024\),)e(a)g(pro-)75 2262 y(gramming)10 b(to)q(ol)g(that)g(pro)
+o(vides)h(a)g(consisten)o(t)f(user)i(in)o(terface)e(for)h(recalling)f
+(lines)g(of)h(previously)g(t)o(yp)q(ed)75 2316 y(input.)75
+2384 y(Cop)o(yrigh)o(t)301 2383 y(c)289 2384 y Fn(\015)k
+Fq(1988{2024)e(F)l(ree)i(Soft)o(w)o(are)f(F)l(oundation,)g(Inc.)195
+2451 y(P)o(ermission)9 b(is)h(gran)o(ted)f(to)h(cop)o(y)l(,)h
+(distribute)e(and/or)h(mo)q(dify)g(this)f(do)q(cumen)o(t)i(under)g(the)
+195 2506 y(terms)h(of)g(the)h(GNU)g(F)l(ree)f(Do)q(cumen)o(tation)g
+(License,)h(V)l(ersion)g(1.3)f(or)g(an)o(y)g(later)g(v)o(ersion)195
+2560 y(published)23 b(b)o(y)f(the)h(F)l(ree)f(Soft)o(w)o(are)f(F)l
+(oundation;)k(with)c(no)i(In)o(v)m(arian)o(t)e(Sections,)j(no)195
+2615 y(F)l(ron)o(t-Co)o(v)o(er)13 b(T)l(exts,)h(and)g(no)h(Bac)o(k-Co)o
+(v)o(er)e(T)l(exts.)20 b(A)14 b(cop)o(y)g(of)g(the)h(license)f(is)g
+(included)195 2670 y(in)h(the)g(section)g(en)o(titled)f(\\GNU)h(F)l
+(ree)g(Do)q(cumen)o(tation)g(License".)p eop end
%%Page: -1 3
TeXDict begin -1 2 bop 1862 -58 a Fq(i)75 149 y Fm(T)-7
b(able)28 b(of)e(Con)n(ten)n(ts)p eop end
%%Page: 1 4
TeXDict begin 1 3 bop 1852 -58 a Fq(1)75 149 y Fm(1)41
-b(Using)27 b(History)h(In)n(teractiv)n(ely)75 275 y Fq(This)21
+b(Using)27 b(History)h(In)n(teractiv)n(ely)75 254 y Fq(This)21
b(c)o(hapter)g(describ)q(es)h(ho)o(w)f(to)f(use)i(the)f
Fl(gnu)g Fq(History)f(Library)h(in)o(teractiv)o(ely)l(,)g(from)f(a)h
-(user's)75 330 y(standp)q(oin)o(t.)37 b(It)21 b(should)g(b)q(e)h
+(user's)75 309 y(standp)q(oin)o(t.)37 b(It)21 b(should)g(b)q(e)h
(considered)f(a)g(user's)g(guide.)37 b(F)l(or)21 b(information)e(on)i
-(using)g(the)g Fl(gnu)75 384 y Fq(History)16 b(Library)h(in)h(y)o(our)f
+(using)g(the)g Fl(gnu)75 364 y Fq(History)16 b(Library)h(in)h(y)o(our)f
(o)o(wn)g(programs,)f(see)i(Chapter)f(2)h([Programming)d(with)i(GNU)g
-(History],)75 439 y(page)e(4.)75 564 y Fo(1.1)33 b(History)21
-b(Expansion)75 643 y Fq(The)i(History)e(library)h(pro)o(vides)g(a)g
+(History],)75 419 y(page)e(4.)75 534 y Fo(1.1)33 b(History)21
+b(Expansion)75 614 y Fq(The)i(History)e(library)h(pro)o(vides)g(a)g
(history)g(expansion)g(feature)g(that)g(is)h(similar)d(to)i(the)h
-(history)75 698 y(expansion)f(pro)o(vided)h(b)o(y)f Fp(csh)p
-Fq(.)41 b(This)22 b(section)g(describ)q(es)h(the)g(syn)o(tax)e(used)i
-(to)f(manipulate)g(the)75 753 y(history)14 b(information.)137
-823 y(History)g(expansions)h(in)o(tro)q(duce)h(w)o(ords)e(from)g(the)i
+(history)75 668 y(expansion)e(pro)o(vided)g(b)o(y)g Fp(csh)g
+Fq(\(also)f(referred)h(to)f(as)h(history)f(substitution)g(where)i
+(appropriate\).)75 723 y(This)15 b(section)g(describ)q(es)g(the)h(syn)o
+(tax)e(used)i(to)e(manipulate)h(the)g(history)f(information.)137
+788 y(History)g(expansions)h(in)o(tro)q(duce)h(w)o(ords)e(from)g(the)i
(history)e(list)g(in)o(to)g(the)i(input)f(stream,)f(making)75
-878 y(it)g(easy)h(to)g(rep)q(eat)g(commands,)g(insert)g(the)g(argumen)o
+843 y(it)g(easy)h(to)g(rep)q(eat)g(commands,)g(insert)g(the)g(argumen)o
(ts)f(to)h(a)g(previous)g(command)g(in)o(to)f(the)h(curren)o(t)75
-932 y(input)g(line,)g(or)f(\014x)i(errors)e(in)h(previous)g(commands)g
-(quic)o(kly)l(.)137 1002 y(History)i(expansion)i(tak)o(es)e(place)h(in)
-h(t)o(w)o(o)e(parts.)28 b(The)19 b(\014rst)f(is)f(to)h(determine)h
-(whic)o(h)f(line)g(from)75 1057 y(the)j(history)e(list)h(should)h(b)q
-(e)g(used)g(during)g(substitution.)35 b(The)21 b(second)g(is)f(to)g
-(select)h(p)q(ortions)e(of)75 1112 y(that)c(line)g(for)f(inclusion)h
-(in)o(to)f(the)i(curren)o(t)f(one.)20 b(The)c(line)e(selected)i(from)f
-(the)g(history)f(is)h(called)g(the)75 1167 y Fk(ev)o(en)o(t)p
-Fq(,)e(and)h(the)g(p)q(ortions)f(of)g(that)g(line)g(that)g(are)g(acted)
-h(up)q(on)g(are)f(called)h Fk(w)o(ords)p Fq(.)k(V)l(arious)13
-b Fk(mo)q(di\014ers)75 1222 y Fq(are)j(a)o(v)m(ailable)f(to)h
-(manipulate)g(the)g(selected)h(w)o(ords.)23 b(The)17
-b(line)f(is)g(brok)o(en)g(in)o(to)g(w)o(ords)f(in)i(the)f(same)75
-1276 y(fashion)11 b(that)f(Bash)i(do)q(es,)g(so)f(that)g(sev)o(eral)f
-(w)o(ords)h(surrounded)h(b)o(y)f(quotes)h(are)f(considered)g(one)h(w)o
-(ord.)75 1331 y(History)17 b(expansions)h(are)h(in)o(tro)q(duced)f(b)o
-(y)g(the)h(app)q(earance)g(of)f(the)g(history)g(expansion)g(c)o
-(haracter,)75 1386 y(whic)o(h)d(is)g(`)p Fp(!)p Fq(')f(b)o(y)h
-(default.)75 1488 y Fj(1.1.1)30 b(Ev)n(en)n(t)21 b(Designators)75
-1562 y Fq(An)c(ev)o(en)o(t)f(designator)f(is)h(a)g(reference)h(to)f(a)g
-(command)g(line)g(en)o(try)g(in)g(the)h(history)e(list.)23
-b(Unless)16 b(the)75 1617 y(reference)g(is)f(absolute,)f(ev)o(en)o(ts)h
-(are)g(relativ)o(e)e(to)i(the)g(curren)o(t)g(p)q(osition)f(in)h(the)h
-(history)e(list.)75 1700 y Fp(!)216 b Fq(Start)16 b(a)g(history)g
-(substitution,)f(except)j(when)f(follo)o(w)o(ed)e(b)o(y)h(a)h(space,)g
-(tab,)f(the)h(end)g(of)315 1755 y(the)e(line,)g(or)f(`)p
-Fp(=)p Fq('.)75 1838 y Fp(!)p Fi(n)192 b Fq(Refer)16
-b(to)e(command)h(line)g Fk(n)p Fq(.)75 1920 y Fp(!-)p
-Fi(n)168 b Fq(Refer)16 b(to)e(the)i(command)f Fk(n)g
-Fq(lines)g(bac)o(k.)75 2003 y Fp(!!)192 b Fq(Refer)16
-b(to)e(the)i(previous)e(command.)20 b(This)15 b(is)g(a)g(synon)o(ym)g
-(for)f(`)p Fp(!-1)p Fq('.)75 2085 y Fp(!)p Fi(string)72
+898 y(input)g(line,)g(or)f(\014x)i(errors)e(in)h(previous)g(commands)g
+(quic)o(kly)l(.)137 962 y(History)g(expansion)i(tak)o(es)e(place)h(in)g
+(t)o(w)o(o)f(parts.)23 b(The)16 b(\014rst)g(is)g(to)f(determine)i(whic)
+o(h)f(en)o(try)g(from)75 1017 y(the)f(history)e(list)g(should)i(b)q(e)g
+(used)g(during)f(substitution.)k(The)d(second)g(is)f(to)g(select)g(p)q
+(ortions)g(of)g(that)75 1072 y(en)o(try)h(to)f(include)i(in)o(to)e(the)
+h(curren)o(t)g(one.)137 1137 y(The)j(en)o(try)f(selected)g(from)g(the)g
+(history)g(is)g(called)g(the)g Fk(ev)o(en)o(t)p Fq(,)g(and)h(the)f(p)q
+(ortions)g(of)g(that)f(en)o(try)75 1192 y(that)f(are)h(acted)h(up)q(on)
+f(are)g Fk(w)o(ords)p Fq(.)22 b(V)l(arious)16 b Fk(mo)q(di\014ers)i
+Fq(are)e(a)o(v)m(ailable)f(to)g(manipulate)g(the)i(selected)75
+1246 y(w)o(ords.)h(The)13 b(en)o(try)f(is)f(split)h(in)o(to)f(w)o(ords)
+h(in)g(the)g(same)g(fashion)g(that)g(Bash)g(do)q(es)h(when)f(reading)g
+(input,)75 1301 y(so)i(that)g(sev)o(eral)g(w)o(ords)f(surrounded)j(b)o
+(y)e(quotes)g(are)h(considered)f(one)h(w)o(ord.)k(The)c
+Fk(ev)o(en)o(t)f(designator)75 1356 y Fq(selects)k(the)g(ev)o(en)o(t,)g
+(the)g(optional)e Fk(w)o(ord)h(designator)j Fq(selects)e(w)o(ords)f
+(from)g(the)h(ev)o(en)o(t,)g(and)g(v)m(arious)75 1411
+y(optional)c Fk(mo)q(di\014ers)j Fq(are)e(a)o(v)m(ailable)e(to)i
+(manipulate)f(the)i(selected)f(w)o(ords.)137 1476 y(History)d
+(expansions)g(are)h(in)o(tro)q(duced)g(b)o(y)f(the)h(app)q(earance)h
+(of)e(the)h(history)e(expansion)i(c)o(haracter,)75 1530
+y(whic)o(h)i(is)h(`)p Fp(!)p Fq(')e(b)o(y)i(default.)k(History)15
+b(expansions)g(ma)o(y)g(app)q(ear)h(an)o(ywhere)g(in)f(the)h(input,)f
+(but)h(do)f(not)75 1585 y(nest.)137 1650 y(History)d(expansion)h
+(implemen)o(ts)g(shell-lik)o(e)f(quoting)g(con)o(v)o(en)o(tions:)18
+b(a)12 b(bac)o(kslash)h(can)g(b)q(e)h(used)g(to)75 1705
+y(remo)o(v)o(e)d(the)h(sp)q(ecial)g(handling)g(for)f(the)i(next)f(c)o
+(haracter;)g(single)f(quotes)h(enclose)g(v)o(erbatim)f(sequences)75
+1760 y(of)j(c)o(haracters,)g(and)g(can)h(b)q(e)g(used)h(to)e(inhibit)f
+(history)h(expansion;)g(and)h(c)o(haracters)f(enclosed)h(within)75
+1814 y(double)h(quotes)f(ma)o(y)g(b)q(e)h(sub)s(ject)f(to)g(history)f
+(expansion,)h(since)h(bac)o(kslash)f(can)g(escap)q(e)h(the)g(history)75
+1869 y(expansion)f(c)o(haracter,)f(but)g(single)h(quotes)f(ma)o(y)g
+(not,)g(since)h(they)g(are)g(not)f(treated)h(sp)q(ecially)f(within)75
+1924 y(double)h(quotes.)137 1989 y(There)f(is)e(a)h(sp)q(ecial)g
+(abbreviation)e(for)i(substitution,)f(activ)o(e)g(when)h(the)g
+Fk(quic)o(k)g(substitution)f Fq(c)o(har-)75 2043 y(acter)h(\(default)h
+(`)p Fp(^)p Fq('\))e(is)i(the)g(\014rst)f(c)o(haracter)h(on)f(the)h
+(line.)20 b(It)14 b(selects)f(the)h(previous)g(history)f(list)f(en)o
+(try)l(,)75 2098 y(using)17 b(an)g(ev)o(en)o(t)g(designator)f(equiv)m
+(alen)o(t)g(to)h Fp(!!)p Fq(,)g(and)g(substitutes)f(one)i(string)e(for)
+g(another)h(in)g(that)75 2153 y(en)o(try)l(.)i(It)14
+b(is)e(describ)q(ed)j(b)q(elo)o(w)e(\(see)g(Section)g(1.1.1)f([Ev)o(en)
+o(t)h(Designators],)e(page)i(1\).)19 b(This)13 b(is)g(the)g(only)75
+2208 y(history)h(expansion)h(that)g(do)q(es)g(not)g(b)q(egin)h(with)e
+(the)h(history)g(expansion)g(c)o(haracter.)75 2303 y
+Fj(1.1.1)30 b(Ev)n(en)n(t)21 b(Designators)75 2376 y
+Fq(An)f(ev)o(en)o(t)g(designator)e(is)h(a)h(reference)g(to)f(an)h(en)o
+(try)f(in)h(the)g(history)e(list.)33 b(The)20 b(ev)o(en)o(t)f
+(designator)75 2431 y(consists)g(of)g(the)h(p)q(ortion)f(of)h(the)g(w)o
+(ord)f(b)q(eginning)h(with)f(the)g(history)g(expansion)h(c)o(haracter,)
+g(and)75 2486 y(ending)i(with)e(the)i(w)o(ord)e(designator)g(if)h(one)h
+(is)e(presen)o(t,)j(or)e(the)g(end)h(of)f(the)g(w)o(ord.)38
+b(Unless)21 b(the)75 2540 y(reference)16 b(is)f(absolute,)f(ev)o(en)o
+(ts)h(are)g(relativ)o(e)e(to)i(the)g(curren)o(t)g(p)q(osition)f(in)h
+(the)h(history)e(list.)75 2615 y Fp(!)216 b Fq(Start)16
+b(a)g(history)g(substitution,)f(except)j(when)f(follo)o(w)o(ed)e(b)o(y)
+h(a)h(space,)g(tab,)f(the)h(end)g(of)315 2670 y(the)e(line,)g(or)f(`)p
+Fp(=)p Fq('.)p eop end
+%%Page: 2 5
+TeXDict begin 2 4 bop 75 -58 a Fq(Chapter)15 b(1:)k(Using)c(History)f
+(In)o(teractiv)o(ely)1005 b(2)75 149 y Fp(!)p Fi(n)192
+b Fq(Refer)16 b(to)e(history)g(list)g(en)o(try)h Fk(n)p
+Fq(.)75 228 y Fp(!-)p Fi(n)168 b Fq(Refer)16 b(to)e(the)i(history)e(en)
+o(try)h(min)o(us)f Fk(n)p Fq(.)75 307 y Fp(!!)192 b Fq(Refer)16
+b(to)e(the)i(previous)e(en)o(try)l(.)20 b(This)15 b(is)g(a)g(synon)o
+(ym)f(for)h(`)p Fp(!-1)p Fq('.)75 387 y Fp(!)p Fi(string)72
b Fq(Refer)13 b(to)f(the)h(most)e(recen)o(t)i(command)f(preceding)h
(the)g(curren)o(t)f(p)q(osition)g(in)g(the)h(history)315
-2140 y(list)h(starting)g(with)g Fk(string)p Fq(.)75 2222
-y Fp(!?)p Fi(string)p Fp([?])315 2277 y Fq(Refer)f(to)f(the)h(most)e
+441 y(list)h(starting)g(with)g Fk(string)p Fq(.)75 520
+y Fp(!?)p Fi(string)p Fp([?])315 575 y Fq(Refer)f(to)f(the)h(most)e
(recen)o(t)i(command)f(preceding)h(the)g(curren)o(t)f(p)q(osition)g(in)
-g(the)h(history)315 2332 y(list)i(con)o(taining)f Fk(string)p
+g(the)h(history)315 630 y(list)i(con)o(taining)f Fk(string)p
Fq(.)21 b(The)c(trailing)c(`)p Fp(?)p Fq(')i(ma)o(y)h(b)q(e)g(omitted)f
-(if)g(the)h Fk(string)j Fq(is)d(follo)o(w)o(ed)315 2387
-y(immediately)e(b)o(y)h(a)g(newline.)75 2469 y Fp(^)p
-Fi(string1)p Fp(^)p Fi(string2)p Fp(^)315 2524 y Fq(Quic)o(k)h
-(Substitution.)21 b(Rep)q(eat)c(the)f(last)e(command,)i(replacing)f
-Fk(string1)j Fq(with)e Fk(string2)p Fq(.)315 2579 y(Equiv)m(alen)o(t)f
-(to)f Fp(!!:s/)p Fi(string1)p Fp(/)p Fi(string2)p Fp(/)p
-Fq(.)75 2661 y Fp(!#)192 b Fq(The)15 b(en)o(tire)g(command)g(line)g(t)o
-(yp)q(ed)h(so)e(far.)p eop end
-%%Page: 2 5
-TeXDict begin 2 4 bop 75 -58 a Fq(Chapter)15 b(1:)k(Using)c(History)f
-(In)o(teractiv)o(ely)1005 b(2)75 149 y Fj(1.1.2)30 b(W)-5
-b(ord)20 b(Designators)75 223 y Fq(W)l(ord)13 b(designators)g(are)g
-(used)h(to)f(select)g(desired)h(w)o(ords)f(from)g(the)g(ev)o(en)o(t.)19
-b(A)14 b(`)p Fp(:)p Fq(')f(separates)g(the)g(ev)o(en)o(t)75
-278 y(sp)q(eci\014cation)18 b(from)g(the)g(w)o(ord)g(designator.)29
-b(It)18 b(ma)o(y)g(b)q(e)h(omitted)e(if)h(the)h(w)o(ord)e(designator)h
-(b)q(egins)75 333 y(with)c(a)h(`)p Fp(^)p Fq(',)f(`)p
-Fp($)p Fq(',)f(`)p Fp(*)p Fq(',)h(`)p Fp(-)p Fq(',)g(or)g(`)p
-Fp(\045)p Fq('.)19 b(W)l(ords)14 b(are)h(n)o(um)o(b)q(ered)h(from)e
-(the)h(b)q(eginning)g(of)f(the)h(line,)g(with)f(the)75
-387 y(\014rst)g(w)o(ord)g(b)q(eing)h(denoted)g(b)o(y)g(0)f(\(zero\).)19
-b(W)l(ords)14 b(are)h(inserted)f(in)o(to)g(the)h(curren)o(t)f(line)h
-(separated)f(b)o(y)75 442 y(single)h(spaces.)137 513
-y(F)l(or)g(example,)75 599 y Fp(!!)192 b Fq(designates)17
+(if)g(the)h Fk(string)j Fq(is)d(follo)o(w)o(ed)315 685
+y(immediately)i(b)o(y)g(a)h(newline.)31 b(If)19 b Fk(string)j
+Fq(is)c(missing,)g(this)h(uses)g(the)g(string)f(from)g(the)315
+739 y(most)c(recen)o(t)i(searc)o(h;)e(it)h(is)f(an)i(error)e(if)h
+(there)g(is)g(no)g(previous)g(searc)o(h)g(string.)75
+819 y Fp(^)p Fi(string1)p Fp(^)p Fi(string2)p Fp(^)315
+873 y Fq(Quic)o(k)h(Substitution.)21 b(Rep)q(eat)c(the)f(last)e
+(command,)i(replacing)f Fk(string1)j Fq(with)e Fk(string2)p
+Fq(.)315 928 y(Equiv)m(alen)o(t)f(to)f Fp(!!:s^)p Fi(string1)p
+Fp(^)p Fi(string2)p Fp(^)p Fq(.)75 1007 y Fp(!#)192 b
+Fq(The)15 b(en)o(tire)g(command)g(line)g(t)o(yp)q(ed)h(so)e(far.)75
+1106 y Fj(1.1.2)30 b(W)-5 b(ord)20 b(Designators)75 1180
+y Fq(W)l(ord)14 b(designators)e(are)i(used)h(to)e(select)h(desired)g(w)
+o(ords)f(from)h(the)g(ev)o(en)o(t.)19 b(They)14 b(are)g(optional;)e(if)
+i(the)75 1234 y(w)o(ord)g(designator)g(isn't)g(supplied,)h(the)f
+(history)g(expansion)h(uses)g(the)g(en)o(tire)f(ev)o(en)o(t.)20
+b(A)15 b(`)p Fp(:)p Fq(')f(separates)75 1289 y(the)h(ev)o(en)o(t)f(sp)q
+(eci\014cation)g(from)g(the)h(w)o(ord)e(designator.)19
+b(It)14 b(ma)o(y)g(b)q(e)h(omitted)f(if)g(the)g(w)o(ord)g(designator)75
+1344 y(b)q(egins)j(with)g(a)f(`)p Fp(^)p Fq(',)h(`)p
+Fp($)p Fq(',)f(`)p Fp(*)p Fq(',)g(`)p Fp(-)p Fq(',)g(or)h(`)p
+Fp(\045)p Fq('.)24 b(W)l(ords)17 b(are)g(n)o(um)o(b)q(ered)g(from)g
+(the)g(b)q(eginning)g(of)g(the)g(line,)75 1399 y(with)i(the)h(\014rst)f
+(w)o(ord)h(b)q(eing)g(denoted)g(b)o(y)g(0)f(\(zero\).)33
+b(W)l(ords)20 b(are)f(inserted)h(in)o(to)f(the)h(curren)o(t)f(line)75
+1454 y(separated)c(b)o(y)g(single)g(spaces.)137 1520
+y(F)l(or)g(example,)75 1599 y Fp(!!)192 b Fq(designates)17
b(the)h(preceding)h(command.)28 b(When)18 b(y)o(ou)g(t)o(yp)q(e)g
-(this,)g(the)g(preceding)g(com-)315 653 y(mand)d(is)g(rep)q(eated)h(in)
-f(toto.)75 737 y Fp(!!:$)144 b Fq(designates)11 b(the)g(last)f(argumen)
-o(t)g(of)h(the)g(preceding)h(command.)19 b(This)10 b(ma)o(y)h(b)q(e)h
-(shortened)315 792 y(to)j Fp(!$)p Fq(.)75 875 y Fp(!fi:2)120
-b Fq(designates)14 b(the)h(second)g(argumen)o(t)f(of)g(the)h(most)f
-(recen)o(t)g(command)h(starting)e(with)h(the)315 930
-y(letters)g Fp(fi)p Fq(.)137 1015 y(Here)i(are)f(the)g(w)o(ord)f
-(designators:)75 1101 y Fp(0)h(\(zero\))57 b Fq(The)15
-b Fp(0)p Fq(th)g(w)o(ord.)20 b(F)l(or)14 b(man)o(y)h(applications,)e
-(this)i(is)g(the)g(command)g(w)o(ord.)75 1184 y Fi(n)216
-b Fq(The)15 b Fk(n)p Fq(th)h(w)o(ord.)75 1268 y Fp(^)216
-b Fq(The)15 b(\014rst)g(argumen)o(t;)f(that)h(is,)f(w)o(ord)h(1.)75
-1351 y Fp($)216 b Fq(The)15 b(last)g(argumen)o(t.)75
-1435 y Fp(\045)216 b Fq(The)15 b(w)o(ord)g(matc)o(hed)g(b)o(y)g(the)g
-(most)g(recen)o(t)g(`)p Fp(?)p Fi(string)p Fp(?)p Fq(')e(searc)o(h.)75
-1518 y Fi(x)p Fp(-)p Fi(y)168 b Fq(A)15 b(range)g(of)g(w)o(ords;)f(`)p
-Fp(-)p Fi(y)p Fq(')g(abbreviates)h(`)p Fp(0-)p Fi(y)p
-Fq('.)75 1602 y Fp(*)216 b Fq(All)13 b(of)h(the)f(w)o(ords,)g(except)i
-(the)f Fp(0)p Fq(th.)19 b(This)13 b(is)h(a)f(synon)o(ym)h(for)f(`)p
-Fp(1-$)p Fq('.)18 b(It)c(is)f(not)h(an)g(error)315 1657
-y(to)g(use)h(`)p Fp(*)p Fq(')f(if)h(there)f(is)h(just)f(one)h(w)o(ord)f
-(in)h(the)g(ev)o(en)o(t;)f(the)h(empt)o(y)g(string)f(is)g(returned)h
-(in)315 1712 y(that)f(case.)75 1795 y Fi(x)p Fp(*)192
-b Fq(Abbreviates)15 b(`)p Fi(x)p Fp(-$)p Fq(')75 1879
-y Fi(x)p Fp(-)192 b Fq(Abbreviates)15 b(`)p Fi(x)p Fp(-$)p
-Fq(')f(lik)o(e)g(`)p Fi(x)p Fp(*)p Fq(',)g(but)h(omits)f(the)i(last)e
-(w)o(ord.)137 1964 y(If)j(a)g(w)o(ord)f(designator)g(is)h(supplied)g
-(without)f(an)h(ev)o(en)o(t)f(sp)q(eci\014cation,)h(the)g(previous)g
-(command)75 2019 y(is)e(used)g(as)g(the)h(ev)o(en)o(t.)75
-2122 y Fj(1.1.3)30 b(Mo)r(di\014ers)75 2196 y Fq(After)14
-b(the)g(optional)f(w)o(ord)h(designator,)f(y)o(ou)h(can)g(add)h(a)f
-(sequence)h(of)f(one)g(or)g(more)g(of)g(the)g(follo)o(wing)75
-2250 y(mo)q(di\014ers,)h(eac)o(h)g(preceded)i(b)o(y)e(a)g(`)p
-Fp(:)p Fq('.)75 2336 y Fp(h)216 b Fq(Remo)o(v)o(e)15
-b(a)g(trailing)e(pathname)i(comp)q(onen)o(t,)g(lea)o(ving)f(only)h(the)
-g(head.)75 2419 y Fp(t)216 b Fq(Remo)o(v)o(e)15 b(all)f(leading)h
-(pathname)g(comp)q(onen)o(ts,)g(lea)o(ving)f(the)h(tail.)75
-2503 y Fp(r)216 b Fq(Remo)o(v)o(e)15 b(a)g(trailing)e(su\016x)i(of)g
-(the)g(form)g(`)p Fp(.)p Fi(suffix)p Fq(',)e(lea)o(ving)h(the)h
-(basename.)75 2586 y Fp(e)216 b Fq(Remo)o(v)o(e)15 b(all)f(but)i(the)f
-(trailing)e(su\016x.)75 2670 y Fp(p)216 b Fq(Prin)o(t)14
-b(the)h(new)h(command)f(but)g(do)g(not)g(execute)h(it.)p
-eop end
+(this,)g(the)g(preceding)g(com-)315 1654 y(mand)d(is)g(rep)q(eated)h
+(in)f(toto.)75 1733 y Fp(!!:$)144 b Fq(designates)11
+b(the)g(last)f(argumen)o(t)g(of)h(the)g(preceding)h(command.)19
+b(This)10 b(ma)o(y)h(b)q(e)h(shortened)315 1788 y(to)j
+Fp(!$)p Fq(.)75 1867 y Fp(!fi:2)120 b Fq(designates)14
+b(the)h(second)g(argumen)o(t)f(of)g(the)h(most)f(recen)o(t)g(command)h
+(starting)e(with)h(the)315 1922 y(letters)g Fp(fi)p Fq(.)137
+2001 y(Here)i(are)f(the)g(w)o(ord)f(designators:)75 2080
+y Fp(0)h(\(zero\))57 b Fq(The)12 b Fp(0)p Fq(th)g(w)o(ord.)19
+b(F)l(or)11 b(the)h(shell,)g(and)h(man)o(y)e(other,)h(applications,)f
+(this)h(is)g(the)g(command)315 2135 y(w)o(ord.)75 2214
+y Fi(n)216 b Fq(The)15 b Fk(n)p Fq(th)h(w)o(ord.)75 2293
+y Fp(^)216 b Fq(The)15 b(\014rst)g(argumen)o(t:)k(w)o(ord)c(1.)75
+2372 y Fp($)216 b Fq(The)14 b(last)f(w)o(ord.)18 b(This)13
+b(is)h(usually)f(the)g(last)g(argumen)o(t,)g(but)h(will)e(expand)i(to)f
+(the)h(zeroth)315 2427 y(w)o(ord)h(if)f(there)h(is)g(only)g(one)g(w)o
+(ord)g(in)g(the)g(line.)75 2506 y Fp(\045)216 b Fq(The)21
+b(\014rst)f(w)o(ord)g(matc)o(hed)g(b)o(y)g(the)h(most)e(recen)o(t)i(`)p
+Fp(?)p Fi(string)p Fp(?)p Fq(')d(searc)o(h,)k(if)e(the)g(searc)o(h)315
+2560 y(string)12 b(b)q(egins)h(with)f(a)g(c)o(haracter)g(that)g(is)g
+(part)h(of)f(a)g(w)o(ord.)19 b(By)13 b(default,)f(searc)o(hes)h(b)q
+(egin)315 2615 y(at)g(the)h(end)h(of)e(eac)o(h)h(line)g(and)g(pro)q
+(ceed)h(to)e(the)h(b)q(eginning,)g(so)f(the)h(\014rst)g(w)o(ord)f(matc)
+o(hed)315 2670 y(is)i(the)g(one)g(closest)g(to)f(the)i(end)f(of)g(the)h
+(line.)p eop end
%%Page: 3 6
TeXDict begin 3 5 bop 75 -58 a Fq(Chapter)15 b(1:)k(Using)c(History)f
-(In)o(teractiv)o(ely)1005 b(3)75 149 y Fp(s/)p Fi(old)p
-Fp(/)p Fi(new)p Fp(/)315 204 y Fq(Substitute)16 b Fk(new)k
-Fq(for)c(the)h(\014rst)e(o)q(ccurrence)j(of)e Fk(old)h
-Fq(in)f(the)h(ev)o(en)o(t)f(line.)23 b(An)o(y)16 b(delimiter)315
-259 y(ma)o(y)c(b)q(e)h(used)g(in)f(place)g(of)g(`)p Fp(/)p
-Fq('.)18 b(The)13 b(delimiter)e(ma)o(y)h(b)q(e)h(quoted)f(in)h
-Fk(old)g Fq(and)g Fk(new)k Fq(with)11 b(a)315 314 y(single)i(bac)o
-(kslash.)19 b(If)c(`)p Fp(&)p Fq(')e(app)q(ears)h(in)g
-Fk(new)p Fq(,)g(it)f(is)h(replaced)g(b)o(y)g Fk(old)p
-Fq(.)19 b(A)14 b(single)g(bac)o(kslash)315 369 y(will)i(quote)h(the)h
-(`)p Fp(&)p Fq('.)25 b(The)17 b(\014nal)h(delimiter)e(is)h(optional)f
-(if)g(it)h(is)g(the)g(last)f(c)o(haracter)h(on)315 423
-y(the)e(input)g(line.)75 503 y Fp(&)216 b Fq(Rep)q(eat)16
-b(the)f(previous)g(substitution.)75 583 y Fp(g)75 638
-y(a)216 b Fq(Cause)19 b(c)o(hanges)h(to)e(b)q(e)i(applied)f(o)o(v)o(er)
-g(the)g(en)o(tire)g(ev)o(en)o(t)g(line.)32 b(Used)20
-b(in)f(conjunction)315 692 y(with)c(`)p Fp(s)p Fq(',)e(as)i(in)g
-Fp(gs/)p Fi(old)p Fp(/)p Fi(new)p Fp(/)p Fq(,)f(or)g(with)h(`)p
-Fp(&)p Fq('.)75 772 y Fp(G)216 b Fq(Apply)15 b(the)h(follo)o(wing)d(`)p
-Fp(s)p Fq(')h(mo)q(di\014er)h(once)h(to)e(eac)o(h)h(w)o(ord)g(in)g(the)
-g(ev)o(en)o(t.)p eop end
+(In)o(teractiv)o(ely)1005 b(3)75 149 y Fi(x)p Fp(-)p
+Fi(y)168 b Fq(A)15 b(range)g(of)g(w)o(ords;)f(`)p Fp(-)p
+Fi(y)p Fq(')g(abbreviates)h(`)p Fp(0-)p Fi(y)p Fq('.)75
+229 y Fp(*)216 b Fq(All)13 b(of)h(the)f(w)o(ords,)g(except)i(the)f
+Fp(0)p Fq(th.)19 b(This)13 b(is)h(a)f(synon)o(ym)h(for)f(`)p
+Fp(1-$)p Fq('.)18 b(It)c(is)f(not)h(an)g(error)315 284
+y(to)h(use)g(`)p Fp(*)p Fq(')f(if)h(there)g(is)g(just)g(one)g(w)o(ord)g
+(in)g(the)g(ev)o(en)o(t;)g(it)f(expands)i(to)f(the)g(empt)o(y)g(string)
+315 339 y(in)g(that)g(case.)75 418 y Fi(x)p Fp(*)192
+b Fq(Abbreviates)15 b(`)p Fi(x)p Fp(-$)p Fq('.)75 498
+y Fi(x)p Fp(-)192 b Fq(Abbreviates)13 b(`)p Fi(x)p Fp(-$)p
+Fq(')f(lik)o(e)h(`)p Fi(x)p Fp(*)p Fq(',)g(but)g(omits)f(the)i(last)e
+(w)o(ord.)19 b(If)14 b(`)p Fp(x)p Fq(')e(is)h(missing,)g(it)f(defaults)
+315 553 y(to)j(0.)137 633 y(If)i(a)g(w)o(ord)f(designator)g(is)h
+(supplied)g(without)f(an)h(ev)o(en)o(t)f(sp)q(eci\014cation,)h(the)g
+(previous)g(command)75 687 y(is)e(used)g(as)g(the)h(ev)o(en)o(t,)e
+(equiv)m(alen)o(t)h(to)g Fp(!!)p Fq(.)75 787 y Fj(1.1.3)30
+b(Mo)r(di\014ers)75 861 y Fq(After)14 b(the)g(optional)f(w)o(ord)h
+(designator,)f(y)o(ou)h(can)g(add)h(a)f(sequence)h(of)f(one)g(or)g
+(more)g(of)g(the)g(follo)o(wing)75 915 y(mo)q(di\014ers,)j(eac)o(h)f
+(preceded)i(b)o(y)f(a)f(`)p Fp(:)p Fq('.)23 b(These)17
+b(mo)q(dify)l(,)g(or)f(edit,)g(the)h(w)o(ord)f(or)g(w)o(ords)g
+(selected)h(from)75 970 y(the)e(history)f(ev)o(en)o(t.)75
+1050 y Fp(h)216 b Fq(Remo)o(v)o(e)15 b(a)g(trailing)e(\014lename)i
+(comp)q(onen)o(t,)g(lea)o(ving)f(only)h(the)g(head.)75
+1130 y Fp(t)216 b Fq(Remo)o(v)o(e)15 b(all)f(leading)h(\014lename)g
+(comp)q(onen)o(ts,)g(lea)o(ving)f(the)h(tail.)75 1209
+y Fp(r)216 b Fq(Remo)o(v)o(e)15 b(a)g(trailing)e(su\016x)i(of)g(the)g
+(form)g(`)p Fp(.)p Fi(suffix)p Fq(',)e(lea)o(ving)h(the)h(basename.)75
+1289 y Fp(e)216 b Fq(Remo)o(v)o(e)15 b(all)f(but)i(the)f(trailing)e
+(su\016x.)75 1369 y Fp(p)216 b Fq(Prin)o(t)14 b(the)h(new)h(command)f
+(but)g(do)g(not)g(execute)h(it.)75 1448 y Fp(s/)p Fi(old)p
+Fp(/)p Fi(new)p Fp(/)315 1503 y Fq(Substitute)g Fk(new)k
+Fq(for)15 b(the)h(\014rst)f(o)q(ccurrence)i(of)f Fk(old)h
+Fq(in)f(the)g(ev)o(en)o(t)f(line.)22 b(An)o(y)16 b(c)o(haracter)315
+1558 y(ma)o(y)c(b)q(e)h(used)f(as)g(the)h(delimiter)e(in)h(place)g(of)g
+(`)p Fp(/)p Fq('.)18 b(The)12 b(delimiter)g(ma)o(y)f(b)q(e)i(quoted)f
+(in)h Fk(old)315 1613 y Fq(and)i Fk(new)20 b Fq(with)15
+b(a)g(single)f(bac)o(kslash.)20 b(If)15 b(`)p Fp(&)p
+Fq(')g(app)q(ears)g(in)g Fk(new)p Fq(,)g(it)g(is)g(replaced)g(with)g
+Fk(old)p Fq(.)315 1667 y(A)h(single)g(bac)o(kslash)g(will)f(quote)h
+(the)h(`)p Fp(&)p Fq(')e(in)h Fk(old)i Fq(and)f Fk(new)p
+Fq(.)24 b(If)16 b Fk(old)i Fq(is)e(n)o(ull,)g(it)f(is)h(set)h(to)315
+1722 y(the)e(last)e Fk(old)j Fq(substituted,)e(or,)g(if)g(no)h
+(previous)f(history)g(substitutions)g(to)q(ok)g(place,)g(the)315
+1777 y(last)f Fk(string)k Fq(in)d(a)g(!?)p Fk(string)t
+Fp([?])f Fq(searc)o(h.)19 b(If)c Fk(new)j Fq(is)c(n)o(ull,)f(eac)o(h)h
+(matc)o(hing)g Fk(old)h Fq(is)f(deleted.)315 1832 y(The)h(\014nal)g
+(delimiter)f(is)h(optional)f(if)h(it)f(is)h(the)g(last)f(c)o(haracter)h
+(on)g(the)g(input)g(line.)75 1912 y Fp(&)216 b Fq(Rep)q(eat)16
+b(the)f(previous)g(substitution.)75 1991 y Fp(g)75 2046
+y(a)216 b Fq(Cause)14 b(c)o(hanges)f(to)g(b)q(e)i(applied)e(o)o(v)o(er)
+g(the)h(en)o(tire)f(ev)o(en)o(t)h(line.)19 b(This)13
+b(is)g(used)i(in)e(conjunc-)315 2101 y(tion)h(with)h(`)p
+Fp(s)p Fq(',)f(as)h(in)g Fp(gs/)p Fi(old)p Fp(/)p Fi(new)p
+Fp(/)p Fq(,)e(or)i(with)f(`)p Fp(&)p Fq('.)75 2181 y
+Fp(G)216 b Fq(Apply)15 b(the)h(follo)o(wing)d(`)p Fp(s)p
+Fq(')h(or)h(`)p Fp(&)p Fq(')f(mo)q(di\014er)h(once)g(to)g(eac)o(h)g(w)o
+(ord)g(in)g(the)g(ev)o(en)o(t.)p eop end
%%Page: 4 7
TeXDict begin 4 6 bop 1852 -58 a Fq(4)75 149 y Fm(2)41
b(Programming)29 b(with)e(GNU)h(History)75 272 y Fq(This)21
(line)g(at)f(a)h(time.)k(The)d Fl(gnu)f Fq(History)f(library)g(is)g
(able)75 639 y(to)g(k)o(eep)g(trac)o(k)g(of)g(those)g(lines,)g(asso)q
(ciate)f(arbitrary)g(data)h(with)f(eac)o(h)i(line,)f(and)g(utilize)g
-(information)75 694 y(from)g(previous)h(lines)g(in)g(comp)q(osing)g
-(new)g(ones.)137 763 y(The)f(programmer)f(using)g(the)h(History)f
-(library)f(has)i(a)o(v)m(ailable)e(functions)i(for)f(remem)o(b)q(ering)
-g(lines)75 818 y(on)d(a)g(history)g(list,)f(asso)q(ciating)g(arbitrary)
-g(data)g(with)h(a)g(line,)h(remo)o(ving)e(lines)h(from)f(the)i(list,)f
-(searc)o(hing)75 873 y(through)17 b(the)h(list)e(for)h(a)h(line)f(con)o
-(taining)f(an)i(arbitrary)e(text)h(string,)g(and)h(referencing)g(an)o
-(y)f(line)g(in)75 928 y(the)e(list)g(directly)l(.)20
-b(In)c(addition,)e(a)h(history)f Fk(expansion)h Fq(function)h(is)e(a)o
-(v)m(ailable)g(whic)o(h)i(pro)o(vides)f(for)f(a)75 983
-y(consisten)o(t)g(user)i(in)o(terface)e(across)h(di\013eren)o(t)f
-(programs.)137 1052 y(The)g(user)h(using)e(programs)g(written)g(with)g
-(the)h(History)f(library)g(has)h(the)g(b)q(ene\014t)h(of)e(a)h
-(consisten)o(t)75 1106 y(user)20 b(in)o(terface)e(with)h(a)g(set)h(of)f
+(information)75 694 y(from)g(previous)h(lines)g(when)h(comp)q(osing)f
+(new)g(ones.)137 763 y(A)d(programmer)e(using)h(the)h(History)e
+(library)h(can)g(use)h(functions)f(to)g(sa)o(v)o(e)g(commands)g(on)h(a)
+f(history)75 818 y(list,)17 b(asso)q(ciate)f(arbitrary)g(data)h(with)g
+(history)g(list)g(en)o(tries,)g(remo)o(v)o(e)g(en)o(tries)g(from)g(the)
+g(list,)g(searc)o(h)75 873 y(through)h(the)h(list)f(for)g(a)h(line)f
+(con)o(taining)f(an)i(arbitrary)e(text)i(string,)f(reference)h(an)o(y)g
+(en)o(try)f(in)h(the)75 928 y(list)d(directly)l(,)h(and)h(read)f(and)h
+(write)e(the)i(history)e(list)h(from)f(and)i(to)f(a)g(\014le.)26
+b(In)18 b(addition,)f(a)g(history)75 983 y Fk(expansion)c
+Fq(function)f(is)g(a)o(v)m(ailable)g(whic)o(h)g(pro)o(vides)h(for)f(a)g
+(consisten)o(t)g(user)h(in)o(terface)f(across)g(di\013eren)o(t)75
+1037 y(programs.)137 1106 y(Someone)i(using)g(programs)f(written)g
+(with)g(the)h(History)e(library)h(has)h(the)g(b)q(ene\014t)h(of)e(a)h
+(consisten)o(t)75 1161 y(user)20 b(in)o(terface)e(with)h(a)g(set)h(of)f
(w)o(ell-kno)o(wn)f(commands)i(for)e(manipulating)h(the)g(text)g(of)g
-(previous)75 1161 y(lines)13 b(and)h(using)g(that)f(text)g(in)h(new)g
+(previous)75 1216 y(lines)13 b(and)h(using)g(that)f(text)g(in)h(new)g
(commands.)19 b(The)14 b(basic)g(history)e(manipulation)h(commands)g
-(are)75 1216 y(similar)g(to)i(the)g(history)f(substitution)g(pro)o
-(vided)h(b)o(y)h Fp(csh)p Fq(.)137 1285 y(If)f(the)g(programmer)f
-(desires,)g(he)h(can)g(use)g(the)g(Readline)g(library)l(,)f(whic)o(h)g
-(includes)i(some)e(history)75 1340 y(manipulation)g(b)o(y)h(default,)f
-(and)i(has)f(the)g(added)h(adv)m(an)o(tage)f(of)f(command)h(line)g
-(editing.)137 1409 y(Before)k(declaring)g(an)o(y)f(functions)h(using)g
-(an)o(y)g(functionalit)o(y)e(the)i(History)f(library)g(pro)o(vides)g
-(in)75 1464 y(other)c(co)q(de,)h(an)f(application)f(writer)g(should)i
-(include)f(the)h(\014le)f Fp(<readline/history.h>)e Fq(in)i(an)o(y)g
-(\014le)75 1519 y(that)d(uses)h(the)h(History)d(library's)h(features.)
-18 b(It)12 b(supplies)g(extern)g(declarations)f(for)g(all)g(of)h(the)g
-(library's)75 1573 y(public)j(functions)g(and)h(v)m(ariables,)e(and)h
-(declares)g(all)f(of)h(the)h(public)f(data)f(structures.)75
-1697 y Fo(2.2)33 b(History)21 b(Storage)75 1776 y Fq(The)15
+(are)75 1271 y(similar)g(to)i(the)g(history)f(substitution)g(pro)o
+(vided)h(b)o(y)h Fp(csh)p Fq(.)137 1340 y(The)g(programmer)e(can)h
+(also)f(use)i(the)f(Readline)h(library)l(,)d(whic)o(h)j(includes)f
+(some)g(history)f(manip-)75 1395 y(ulation)g(b)o(y)h(default,)g(and)g
+(has)g(the)g(added)h(adv)m(an)o(tage)f(of)g(command)g(line)f(editing.)
+137 1464 y(Before)19 b(declaring)g(an)o(y)f(functions)h(using)g(an)o(y)
+g(functionalit)o(y)e(the)i(History)f(library)g(pro)o(vides)g(in)75
+1519 y(other)c(co)q(de,)h(an)f(application)f(writer)g(should)i(include)
+f(the)h(\014le)f Fp(<readline/history.h>)e Fq(in)i(an)o(y)g(\014le)75
+1573 y(that)e(uses)g(the)g(History)f(library's)g(features.)19
+b(It)12 b(supplies)g(declarations)f(for)h(all)f(of)h(the)g(library's)f
+(public)75 1628 y(functions)k(and)g(v)m(ariables,)f(and)i(declares)f
+(all)f(of)h(the)g(public)h(data)e(structures.)75 1751
+y Fo(2.2)33 b(History)21 b(Storage)75 1831 y Fq(The)15
b(history)g(list)f(is)g(an)h(arra)o(y)f(of)h(history)f(en)o(tries.)20
b(A)15 b(history)f(en)o(try)h(is)f(declared)i(as)f(follo)o(ws:)195
-1846 y Fp(typedef)23 b(void)g(*histdata_t;)195 1955 y(typedef)g(struct)
-g(_hist_entry)f({)243 2010 y(char)h(*line;)243 2065 y(char)g
-(*timestamp;)243 2119 y(histdata_t)f(data;)195 2174 y(})i(HIST_ENTRY;)
-137 2243 y Fq(The)16 b(history)e(list)g(itself)g(migh)o(t)g(therefore)h
-(b)q(e)h(declared)f(as)195 2313 y Fp(HIST_ENTRY)22 b
-(**the_history_list;)137 2382 y Fq(The)16 b(state)e(of)h(the)g(History)
+1900 y Fp(typedef)23 b(void)g(*histdata_t;)195 2010 y(typedef)g(struct)
+g(_hist_entry)f({)243 2065 y(char)h(*line;)243 2119 y(char)g
+(*timestamp;)243 2174 y(histdata_t)f(data;)195 2229 y(})i(HIST_ENTRY;)
+137 2298 y Fq(The)16 b(history)e(list)g(itself)g(migh)o(t)g(therefore)h
+(b)q(e)h(declared)f(as)195 2367 y Fp(HIST_ENTRY)22 b
+(**the_history_list;)137 2436 y Fq(The)16 b(state)e(of)h(the)g(History)
f(library)g(is)h(encapsulated)g(in)o(to)f(a)h(single)g(structure:)195
-2451 y Fp(/*)219 2506 y(*)24 b(A)f(structure)g(used)g(to)h(pass)f
+2506 y Fp(/*)219 2560 y(*)24 b(A)f(structure)g(used)g(to)h(pass)f
(around)g(the)h(current)f(state)g(of)g(the)h(history.)219
-2560 y(*/)195 2615 y(typedef)f(struct)g(_hist_state)f({)243
-2670 y(HIST_ENTRY)g(**entries;)h(/*)g(Pointer)g(to)h(the)f(entries)g
-(themselves.)g(*/)p eop end
+2615 y(*/)195 2670 y(typedef)f(struct)g(_hist_state)f({)p
+eop end
%%Page: 5 8
TeXDict begin 5 7 bop 75 -58 a Fq(Chapter)15 b(2:)k(Programming)14
-b(with)g(GNU)h(History)888 b(5)243 149 y Fp(int)23 b(offset;)262
-b(/*)23 b(The)h(location)f(pointer)f(within)h(this)h(array.)f(*/)243
-204 y(int)g(length;)262 b(/*)23 b(Number)g(of)h(elements)f(within)g
-(this)g(array.)g(*/)243 259 y(int)g(size;)310 b(/*)23
-b(Number)g(of)h(slots)f(allocated)g(to)g(this)h(array.)f(*/)243
-314 y(int)g(flags;)195 369 y(})h(HISTORY_STATE;)137 445
-y Fq(If)16 b(the)f(\015ags)g(mem)o(b)q(er)g(includes)h
-Fp(HS_STIFLED)p Fq(,)d(the)i(history)g(has)g(b)q(een)h(sti\015ed.)75
-579 y Fo(2.3)33 b(History)21 b(F)-6 b(unctions)75 658
-y Fq(This)17 b(section)f(describ)q(es)i(the)f(calling)f(sequence)i(for)
-f(the)g(v)m(arious)g(functions)f(exp)q(orted)i(b)o(y)f(the)g
-Fl(gnu)75 713 y Fq(History)d(library)l(.)75 822 y Fj(2.3.1)30
-b(Initializing)20 b(History)h(and)f(State)g(Managemen)n(t)75
-895 y Fq(This)11 b(section)f(describ)q(es)i(functions)f(used)g(to)g
-(initialize)e(and)i(manage)f(the)i(state)e(of)g(the)h(History)f
-(library)75 950 y(when)16 b(y)o(ou)f(w)o(an)o(t)f(to)g(use)i(the)f
-(history)f(functions)h(in)g(y)o(our)g(program.)1675 1060
-y([F)l(unction])-1801 b Fh(void)27 b(using_history)d
-Fg(\()p Ff(v)o(oid)p Fg(\))195 1115 y Fq(Begin)c(a)g(session)f(in)h
-(whic)o(h)g(the)g(history)f(functions)g(migh)o(t)g(b)q(e)i(used.)34
-b(This)20 b(initializes)e(the)195 1170 y(in)o(teractiv)o(e)c(v)m
-(ariables.)1675 1280 y([F)l(unction])-1801 b Fh(HISTORY_STATE)28
-b(*)e(history_get_history_s)q(tate)g Fg(\()p Ff(v)o(oid)p
-Fg(\))195 1335 y Fq(Return)16 b(a)f(structure)g(describing)g(the)g
+b(with)g(GNU)h(History)888 b(5)243 149 y Fp(HIST_ENTRY)22
+b(**entries;)h(/*)g(Pointer)g(to)h(the)f(entries)g(themselves.)g(*/)243
+204 y(int)g(offset;)262 b(/*)23 b(The)h(location)f(pointer)f(within)h
+(this)h(array.)f(*/)243 259 y(int)g(length;)262 b(/*)23
+b(Number)g(of)h(elements)f(within)g(this)g(array.)g(*/)243
+314 y(int)g(size;)310 b(/*)23 b(Number)g(of)h(slots)f(allocated)g(to)g
+(this)h(array.)f(*/)243 369 y(int)g(flags;)195 423 y(})h
+(HISTORY_STATE;)137 489 y Fq(If)f(the)f(\015ags)f(mem)o(b)q(er)i
+(includes)f Fp(HS_STIFLED)p Fq(,)g(the)g(history)f(has)h(b)q(een)h
+(sti\015ed)f(\(limited)f(to)g(a)75 544 y(maxim)o(um)14
+b(n)o(um)o(b)q(er)i(of)e(en)o(tries\).)75 660 y Fo(2.3)33
+b(History)21 b(F)-6 b(unctions)75 740 y Fq(This)17 b(section)f(describ)
+q(es)i(the)f(calling)f(sequence)i(for)f(the)g(v)m(arious)g(functions)f
+(exp)q(orted)i(b)o(y)f(the)g Fl(gnu)75 795 y Fq(History)d(library)l(.)
+75 890 y Fj(2.3.1)30 b(Initializing)20 b(History)h(and)f(State)g
+(Managemen)n(t)75 964 y Fq(This)11 b(section)f(describ)q(es)i
+(functions)f(used)g(to)g(initialize)e(and)i(manage)f(the)i(state)e(of)g
+(the)h(History)f(library)75 1019 y(when)16 b(y)o(ou)f(w)o(an)o(t)f(to)g
+(use)i(the)f(history)f(functions)h(in)g(y)o(our)g(program.)1675
+1105 y([F)l(unction])-1801 b Fh(void)27 b(using_history)d
+Fg(\()p Ff(v)o(oid)p Fg(\))195 1160 y Fq(Begin)c(a)f(session)g(that)g
+(will)g(use)h(the)g(history)e(functions.)34 b(This)19
+b(initializes)f(the)i(in)o(teractiv)o(e)195 1215 y(v)m(ariables.)1675
+1301 y([F)l(unction])-1801 b Fh(HISTORY_STATE)28 b(*)e
+(history_get_history_s)q(tate)g Fg(\()p Ff(v)o(oid)p
+Fg(\))195 1356 y Fq(Return)16 b(a)f(structure)g(describing)g(the)g
(curren)o(t)g(state)f(of)h(the)g(input)h(history)l(.)1675
-1445 y([F)l(unction])-1801 b Fh(void)27 b(history_set_history_state)f
-Fg(\()p Ff(HISTOR)l(Y)p 1131 1445 15 3 v 21 w(ST)l(A)l(TE)17
-b(*state)p Fg(\))195 1500 y Fq(Set)e(the)h(state)e(of)h(the)g(history)f
-(list)g(according)h(to)f Fk(state)p Fq(.)75 1608 y Fj(2.3.2)30
-b(History)20 b(List)h(Managemen)n(t)75 1682 y Fq(These)16
+1443 y([F)l(unction])-1801 b Fh(void)27 b(history_set_history_state)f
+Fg(\()p Ff(HISTOR)l(Y)p 1131 1443 15 3 v 21 w(ST)l(A)l(TE)17
+b(*state)p Fg(\))195 1497 y Fq(Set)e(the)h(state)e(of)h(the)g(history)f
+(list)g(according)h(to)f Fk(state)p Fq(.)75 1593 y Fj(2.3.2)30
+b(History)20 b(List)h(Managemen)n(t)75 1667 y Fq(These)16
b(functions)g(manage)g(individual)f(en)o(tries)g(on)h(the)g(history)f
-(list,)g(or)g(set)h(parameters)f(managing)75 1736 y(the)g(list)f
-(itself.)1675 1847 y([F)l(unction])-1801 b Fh(void)27
+(list,)g(or)g(set)h(parameters)f(managing)75 1721 y(the)g(list)f
+(itself.)1675 1808 y([F)l(unction])-1801 b Fh(void)27
b(add_history)d Fg(\()p Ff(const)16 b(c)o(har)g(*string)p
-Fg(\))195 1901 y Fq(Place)i Fk(string)j Fq(at)c(the)h(end)h(of)f(the)g
-(history)f(list.)27 b(The)19 b(asso)q(ciated)e(data)h(\014eld)g(\(if)f
-(an)o(y\))h(is)f(set)195 1956 y(to)k Fp(NULL)p Fq(.)39
-b(If)22 b(the)g(maxim)o(um)f(n)o(um)o(b)q(er)h(of)f(history)g(en)o
-(tries)g(has)h(b)q(een)h(set)e(using)h Fp(stifle_)195
-2011 y(history\(\))p Fq(,)13 b(and)i(the)h(new)f(n)o(um)o(b)q(er)g(of)g
-(history)e(en)o(tries)i(w)o(ould)f(exceed)i(that)e(maxim)o(um,)g(the)
-195 2066 y(oldest)h(history)f(en)o(try)h(is)f(remo)o(v)o(ed.)1675
-2176 y([F)l(unction])-1801 b Fh(void)27 b(add_history_time)e
-Fg(\()p Ff(const)16 b(c)o(har)f(*string)p Fg(\))195 2231
+Fg(\))195 1863 y Fq(Add)j Fk(string)i Fq(to)d(the)g(end)h(of)f(the)h
+(history)e(list,)h(and)g(set)h(the)f(asso)q(ciated)g(data)f(\014eld)i
+(\(if)f(an)o(y\))195 1917 y(to)j Fp(NULL)p Fq(.)39 b(If)22
+b(the)g(maxim)o(um)f(n)o(um)o(b)q(er)h(of)f(history)g(en)o(tries)g(has)
+h(b)q(een)h(set)e(using)h Fp(stifle_)195 1972 y(history\(\))p
+Fq(,)13 b(and)h(the)g(new)g(n)o(um)o(b)q(er)h(of)e(history)g(en)o
+(tries)h(w)o(ould)f(exceed)i(that)f(maxim)o(um,)f(this)195
+2027 y(remo)o(v)o(es)h(the)i(oldest)e(history)g(en)o(try)l(.)1675
+2114 y([F)l(unction])-1801 b Fh(void)27 b(add_history_time)e
+Fg(\()p Ff(const)16 b(c)o(har)f(*string)p Fg(\))195 2168
y Fq(Change)g(the)g(time)g(stamp)g(asso)q(ciated)f(with)h(the)g(most)f
(recen)o(t)h(history)g(en)o(try)f(to)h Fk(string)p Fq(.)1675
-2341 y([F)l(unction])-1801 b Fh(HIST_ENTRY)28 b(*)e(remove_history)f
-Fg(\()p Ff(in)o(t)16 b(whic)o(h)p Fg(\))195 2395 y Fq(Remo)o(v)o(e)23
-b(history)e(en)o(try)i(at)f(o\013set)g Fk(whic)o(h)g
-Fq(from)g(the)h(history)l(.)42 b(The)23 b(remo)o(v)o(ed)f(elemen)o(t)g
-(is)195 2450 y(returned)16 b(so)e(y)o(ou)h(can)h(free)f(the)g(line,)g
-(data,)f(and)h(con)o(taining)f(structure.)1675 2560 y([F)l(unction])
--1801 b Fh(histdata_t)28 b(free_history_entry)d Fg(\()p
-Ff(HIST)p 996 2560 V 22 w(ENTR)l(Y)16 b(*histen)o(t)p
+2255 y([F)l(unction])-1801 b Fh(HIST_ENTRY)28 b(*)e(remove_history)f
+Fg(\()p Ff(in)o(t)16 b(whic)o(h)p Fg(\))195 2310 y Fq(Remo)o(v)o(e)22
+b(the)f(history)g(en)o(try)g(at)g(o\013set)g Fk(whic)o(h)g
+Fq(from)g(the)h(history)e(list.)38 b(This)21 b(returns)h(the)195
+2364 y(remo)o(v)o(ed)16 b(elemen)o(t)h(so)f(y)o(ou)g(can)h(free)g(the)f
+(line,)h(data,)f(and)g(con)o(taining)g(structure.)24
+b(Since)17 b(the)195 2419 y(data)c(is)h(priv)m(ate)g(to)f(y)o(our)h
+(application,)e(the)j(History)e(library)f(do)q(esn't)i(kno)o(w)g(ho)o
+(w)g(to)f(free)h(it,)f(if)195 2474 y(necessary)l(.)1675
+2560 y([F)l(unction])-1801 b Fh(histdata_t)28 b(free_history_entry)d
+Fg(\()p Ff(HIST)p 996 2560 V 22 w(ENTR)l(Y)16 b(*histen)o(t)p
Fg(\))195 2615 y Fq(F)l(ree)e(the)g(history)f(en)o(try)h
Fk(histen)o(t)g Fq(and)g(an)o(y)g(history)f(library)g(priv)m(ate)g
(data)h(asso)q(ciated)f(with)g(it.)195 2670 y(Returns)j(the)f
Fq(.)19 b(This)13 b(returns)h(the)g(old)f(en)o(try)195
314 y(so)18 b(the)h(caller)e(can)i(disp)q(ose)g(of)f(an)o(y)g
(application-sp)q(eci\014c)g(data.)30 b(In)19 b(the)g(case)f(of)g(an)h
-(in)o(v)m(alid)195 369 y Fk(whic)o(h)p Fq(,)c(a)g Fp(NULL)f
-Fq(p)q(oin)o(ter)h(is)g(returned.)1675 470 y([F)l(unction])-1801
-b Fh(void)27 b(clear_history)d Fg(\()p Ff(v)o(oid)p Fg(\))195
-525 y Fq(Clear)14 b(the)i(history)e(list)g(b)o(y)h(deleting)g(all)f
-(the)h(en)o(tries.)1675 627 y([F)l(unction])-1801 b Fh(void)27
+(in)o(v)m(alid)195 369 y Fk(whic)o(h)p Fq(,)c(this)f(returns)h
+Fp(NULL)p Fq(.)1675 476 y([F)l(unction])-1801 b Fh(void)27
+b(clear_history)d Fg(\()p Ff(v)o(oid)p Fg(\))195 530
+y Fq(Clear)14 b(the)i(history)e(list)g(b)o(y)h(deleting)g(all)f(the)h
+(en)o(tries.)1675 638 y([F)l(unction])-1801 b Fh(void)27
b(stifle_history)e Fg(\()p Ff(in)o(t)15 b(max)p Fg(\))195
-682 y Fq(Sti\015e)j(the)h(history)e(list,)g(remem)o(b)q(ering)h(only)g
+692 y Fq(Sti\015e)j(the)h(history)e(list,)g(remem)o(b)q(ering)h(only)g
(the)h(last)e Fk(max)k Fq(en)o(tries.)28 b(The)19 b(history)e(list)g
-(will)195 737 y(con)o(tain)d(only)h Fk(max)j Fq(en)o(tries)d(at)f(a)h
-(time.)1675 839 y([F)l(unction])-1801 b Fh(int)27 b(unstifle_history)e
-Fg(\()p Ff(v)o(oid)p Fg(\))195 893 y Fq(Stop)14 b(sti\015ing)e(the)i
+(will)195 747 y(con)o(tain)d(only)h Fk(max)j Fq(en)o(tries)d(at)f(a)h
+(time.)1675 854 y([F)l(unction])-1801 b Fh(int)27 b(unstifle_history)e
+Fg(\()p Ff(v)o(oid)p Fg(\))195 909 y Fq(Stop)14 b(sti\015ing)e(the)i
(history)l(.)19 b(This)13 b(returns)g(the)h(previously-set)f(maxim)o
-(um)g(n)o(um)o(b)q(er)h(of)f(history)195 948 y(en)o(tries)g(\(as)f(set)
+(um)g(n)o(um)o(b)q(er)h(of)f(history)195 964 y(en)o(tries)g(\(as)f(set)
i(b)o(y)f Fp(stifle_history\(\))p Fq(\).)k(The)c(v)m(alue)h(is)f(p)q
(ositiv)o(e)f(if)h(the)h(history)e(w)o(as)g(sti\015ed,)195
-1003 y(negativ)o(e)i(if)h(it)f(w)o(asn't.)1675 1105 y([F)l(unction])
+1019 y(negativ)o(e)i(if)h(it)f(w)o(asn't.)1675 1126 y([F)l(unction])
-1801 b Fh(int)27 b(history_is_stifled)e Fg(\()p Ff(v)o(oid)p
-Fg(\))195 1160 y Fq(Returns)16 b(non-zero)f(if)g(the)g(history)f(is)h
-(sti\015ed,)g(zero)g(if)f(it)h(is)g(not.)75 1264 y Fj(2.3.3)30
+Fg(\))195 1181 y Fq(Returns)16 b(non-zero)f(if)g(the)g(history)f(is)h
+(sti\015ed,)g(zero)g(if)f(it)h(is)g(not.)75 1288 y Fj(2.3.3)30
b(Information)19 b(Ab)r(out)i(the)f(History)h(List)75
-1338 y Fq(These)16 b(functions)f(return)g(information)e(ab)q(out)i(the)
+1361 y Fq(These)16 b(functions)f(return)g(information)e(ab)q(out)i(the)
g(en)o(tire)g(history)f(list)g(or)h(individual)f(list)g(en)o(tries.)
-1675 1439 y([F)l(unction])-1801 b Fh(HIST_ENTRY)28 b(**)e(history_list)
-f Fg(\()p Ff(v)o(oid)p Fg(\))195 1494 y Fq(Return)16
+1675 1468 y([F)l(unction])-1801 b Fh(HIST_ENTRY)28 b(**)e(history_list)
+f Fg(\()p Ff(v)o(oid)p Fg(\))195 1523 y Fq(Return)16
b(a)f Fp(NULL)f Fq(terminated)h(arra)o(y)f(of)h Fp(HIST_ENTRY)f(*)h
Fq(whic)o(h)g(is)f(the)i(curren)o(t)f(input)g(history)l(.)195
-1549 y(Elemen)o(t)g(0)g(of)f(this)h(list)f(is)h(the)g(b)q(eginning)g
-(of)g(time.)k(If)d(there)f(is)g(no)g(history)l(,)f(return)h
-Fp(NULL)p Fq(.)1675 1651 y([F)l(unction])-1801 b Fh(int)27
-b(where_history)d Fg(\()p Ff(v)o(oid)p Fg(\))195 1706
-y Fq(Returns)16 b(the)f(o\013set)f(of)h(the)g(curren)o(t)g(history)f
-(elemen)o(t.)1675 1808 y([F)l(unction])-1801 b Fh(HIST_ENTRY)28
-b(*)e(current_history)f Fg(\()p Ff(v)o(oid)p Fg(\))195
-1862 y Fq(Return)13 b(the)g(history)e(en)o(try)h(at)g(the)g(curren)o(t)
-h(p)q(osition,)e(as)h(determined)h(b)o(y)f Fp(where_history\(\))p
-Fq(.)195 1917 y(If)j(there)h(is)e(no)i(en)o(try)e(there,)h(return)g(a)g
-Fp(NULL)g Fq(p)q(oin)o(ter.)1675 2019 y([F)l(unction])-1801
-b Fh(HIST_ENTRY)28 b(*)e(history_get)e Fg(\()p Ff(in)o(t)16
-b(o\013set)p Fg(\))195 2074 y Fq(Return)g(the)g(history)f(en)o(try)g
-(at)h(p)q(osition)e Fk(o\013set)p Fq(.)21 b(The)16 b(range)f(of)h(v)m
-(alid)f(v)m(alues)h(of)f Fk(o\013set)h Fq(starts)195
-2129 y(at)f Fp(history_base)f Fq(and)i(ends)g(at)f Fk(history)p
-944 2129 14 2 v 19 w(length)g Fq(-)h(1)f(\(see)g(Section)h(2.4)f
-([History)f(V)l(ariables],)195 2183 y(page)f(9\).)18
-b(If)c(there)f(is)g(no)g(en)o(try)f(there,)i(or)e(if)h
-Fk(o\013set)g Fq(is)f(outside)h(the)g(v)m(alid)g(range,)g(return)g(a)g
-Fp(NULL)195 2238 y Fq(p)q(oin)o(ter.)1675 2340 y([F)l(unction])-1801
-b Fh(time_t)27 b(history_get_time)e Fg(\()p Ff(HIST)p
-839 2340 15 3 v 22 w(ENTR)l(Y)17 b(*en)o(try)p Fg(\))195
-2395 y Fq(Return)g(the)g(time)f(stamp)g(asso)q(ciated)g(with)f(the)i
-(history)f(en)o(try)g Fk(en)o(try)p Fq(.)24 b(If)16 b(the)h(timestamp)e
-(is)195 2450 y(missing)f(or)h(in)o(v)m(alid,)f(return)h(0.)1675
+1578 y(Elemen)o(t)g(0)g(of)f(this)h(list)f(is)h(the)g(b)q(eginning)g
+(of)g(time.)k(Return)d Fp(NULL)f Fq(if)f(there)i(is)e(no)h(history)l(.)
+1675 1685 y([F)l(unction])-1801 b Fh(int)27 b(where_history)d
+Fg(\()p Ff(v)o(oid)p Fg(\))195 1740 y Fq(Return)16 b(the)f(o\013set)f
+(of)h(the)g(curren)o(t)g(history)g(en)o(try)l(.)1675
+1847 y([F)l(unction])-1801 b Fh(HIST_ENTRY)28 b(*)e(current_history)f
+Fg(\()p Ff(v)o(oid)p Fg(\))195 1902 y Fq(Return)13 b(the)g(history)e
+(en)o(try)h(at)g(the)g(curren)o(t)h(p)q(osition,)e(as)h(determined)h(b)
+o(y)f Fp(where_history\(\))p Fq(.)195 1956 y(If)j(there)h(is)e(no)i(en)
+o(try)e(there,)h(return)g Fp(NULL)p Fq(.)1675 2063 y([F)l(unction])
+-1801 b Fh(HIST_ENTRY)28 b(*)e(history_get)e Fg(\()p
+Ff(in)o(t)16 b(o\013set)p Fg(\))195 2118 y Fq(Return)g(the)g(history)f
+(en)o(try)g(at)h(p)q(osition)e Fk(o\013set)p Fq(.)21
+b(The)16 b(range)f(of)h(v)m(alid)f(v)m(alues)h(of)f Fk(o\013set)h
+Fq(starts)195 2173 y(at)f Fp(history_base)f Fq(and)i(ends)g(at)f
+Fk(history)p 944 2173 14 2 v 19 w(length)g Fq(-)h(1)f(\(see)g(Section)h
+(2.4)f([History)f(V)l(ariables],)195 2228 y(page)g(9\).)19
+b(If)c(there)g(is)f(no)g(en)o(try)h(there,)f(or)g(if)g
+Fk(o\013set)g Fq(is)h(outside)f(the)g(v)m(alid)g(range,)g(return)h
+Fp(NULL)p Fq(.)1675 2335 y([F)l(unction])-1801 b Fh(time_t)27
+b(history_get_time)e Fg(\()p Ff(HIST)p 839 2335 15 3
+v 22 w(ENTR)l(Y)17 b(*en)o(try)p Fg(\))195 2390 y Fq(Return)g(the)g
+(time)f(stamp)g(asso)q(ciated)g(with)f(the)i(history)f(en)o(try)g
+Fk(en)o(try)p Fq(.)24 b(If)16 b(the)h(timestamp)e(is)195
+2444 y(missing)f(or)h(in)o(v)m(alid,)f(return)h(0.)1675
2552 y([F)l(unction])-1801 b Fh(int)27 b(history_total_bytes)e
Fg(\()p Ff(v)o(oid)p Fg(\))195 2606 y Fq(Return)14 b(the)g(n)o(um)o(b)q
(er)g(of)g(b)o(ytes)f(that)g(the)h(primary)f(history)g(en)o(tries)g
b(Around)f(the)h(History)g(List)75 223 y Fq(These)16
b(functions)f(allo)o(w)e(the)i(curren)o(t)g(index)h(in)o(to)e(the)h
(history)f(list)g(to)h(b)q(e)h(set)f(or)f(c)o(hanged.)1675
-312 y([F)l(unction])-1801 b Fh(int)27 b(history_set_pos)e
-Fg(\()p Ff(in)o(t)15 b(p)q(os)p Fg(\))195 367 y Fq(Set)j(the)h(curren)o
+306 y([F)l(unction])-1801 b Fh(int)27 b(history_set_pos)e
+Fg(\()p Ff(in)o(t)15 b(p)q(os)p Fg(\))195 360 y Fq(Set)j(the)h(curren)o
(t)f(history)f(o\013set)h(to)f Fk(p)q(os)p Fq(,)i(an)f(absolute)g
(index)h(in)o(to)e(the)h(list.)28 b(Returns)19 b(1)f(on)195
-422 y(success,)d(0)g(if)g Fk(p)q(os)i Fq(is)e(less)g(than)g(zero)g(or)g
+415 y(success,)d(0)g(if)g Fk(p)q(os)i Fq(is)e(less)g(than)g(zero)g(or)g
(greater)f(than)h(the)g(n)o(um)o(b)q(er)h(of)e(history)h(en)o(tries.)
-1675 511 y([F)l(unction])-1801 b Fh(HIST_ENTRY)28 b(*)e
-(previous_history)f Fg(\()p Ff(v)o(oid)p Fg(\))195 566
+1675 498 y([F)l(unction])-1801 b Fh(HIST_ENTRY)28 b(*)e
+(previous_history)f Fg(\()p Ff(v)o(oid)p Fg(\))195 553
y Fq(Bac)o(k)14 b(up)h(the)g(curren)o(t)f(history)f(o\013set)h(to)f
(the)i(previous)f(history)f(en)o(try)l(,)h(and)h(return)f(a)g(p)q(oin)o
-(ter)195 621 y(to)h(that)f(en)o(try)l(.)20 b(If)15 b(there)g(is)g(no)g
-(previous)g(en)o(try)l(,)g(return)g(a)g Fp(NULL)g Fq(p)q(oin)o(ter.)
-1675 710 y([F)l(unction])-1801 b Fh(HIST_ENTRY)28 b(*)e(next_history)f
-Fg(\()p Ff(v)o(oid)p Fg(\))195 765 y Fq(If)11 b(the)f(curren)o(t)g
+(ter)195 608 y(to)h(that)f(en)o(try)l(.)20 b(If)15 b(there)g(is)g(no)g
+(previous)g(en)o(try)l(,)g(return)g Fp(NULL)p Fq(.)1675
+690 y([F)l(unction])-1801 b Fh(HIST_ENTRY)28 b(*)e(next_history)f
+Fg(\()p Ff(v)o(oid)p Fg(\))195 745 y Fq(If)11 b(the)f(curren)o(t)g
(history)f(o\013set)h(refers)g(to)f(a)h(v)m(alid)g(history)g(en)o(try)l
-(,)g(incremen)o(t)g(the)h(curren)o(t)f(history)195 820
+(,)g(incremen)o(t)g(the)h(curren)o(t)f(history)195 800
y(o\013set.)18 b(If)c(the)g(p)q(ossibly-incremen)o(ted)g(history)e
(o\013set)h(refers)g(to)g(a)h(v)m(alid)f(history)g(en)o(try)l(,)g
-(return)195 874 y(a)i(p)q(oin)o(ter)g(to)f(that)h(en)o(try;)f
-(otherwise,)g(return)h(a)g Fp(BNULL)g Fq(p)q(oin)o(ter.)75
-972 y Fj(2.3.5)30 b(Searc)n(hing)21 b(the)f(History)h(List)75
-1046 y Fq(These)e(functions)e(allo)o(w)g(searc)o(hing)g(of)h(the)g
-(history)g(list)e(for)i(en)o(tries)g(con)o(taining)e(a)i(sp)q(eci\014c)
-h(string.)75 1100 y(Searc)o(hing)13 b(ma)o(y)h(b)q(e)g(p)q(erformed)g
-(b)q(oth)g(forw)o(ard)e(and)i(bac)o(kw)o(ard)f(from)g(the)h(curren)o(t)
-g(history)e(p)q(osition.)75 1155 y(The)k(searc)o(h)f(ma)o(y)g(b)q(e)i
-Fk(anc)o(hored)p Fq(,)e(meaning)g(that)g(the)h(string)f(m)o(ust)g(matc)
-o(h)g(at)g(the)h(b)q(eginning)g(of)f(the)75 1210 y(history)f(en)o(try)l
-(.)1675 1299 y([F)l(unction])-1801 b Fh(int)27 b(history_search)d
-Fg(\()p Ff(const)16 b(c)o(har)g(*string,)f(in)o(t)h(direction)p
-Fg(\))195 1354 y Fq(Searc)o(h)f(the)f(history)f(for)h
+(return)195 855 y(a)i(p)q(oin)o(ter)g(to)f(that)h(en)o(try;)f
+(otherwise,)g(return)h Fp(NULL)p Fq(.)75 948 y Fj(2.3.5)30
+b(Searc)n(hing)21 b(the)f(History)h(List)75 1022 y Fq(These)12
+b(functions)g(searc)o(h)g(the)f(history)g(list)g(for)g(en)o(tries)g
+(con)o(taining)g(a)h(sp)q(eci\014c)g(string.)18 b(Searc)o(hing)12
+b(ma)o(y)75 1076 y(b)q(e)19 b(p)q(erformed)h(b)q(oth)e(forw)o(ard)g
+(and)h(bac)o(kw)o(ard)f(from)g(the)h(curren)o(t)g(history)e(p)q
+(osition.)30 b(The)19 b(searc)o(h)75 1131 y(ma)o(y)13
+b(b)q(e)h Fk(anc)o(hored)p Fq(,)g(meaning)g(that)f(the)g(string)g(m)o
+(ust)g(matc)o(h)h(at)f(the)g(b)q(eginning)h(of)g(a)f(history)g(en)o
+(try)l(.)1675 1214 y([F)l(unction])-1801 b Fh(int)27
+b(history_search)d Fg(\()p Ff(const)16 b(c)o(har)g(*string,)f(in)o(t)h
+(direction)p Fg(\))195 1269 y Fq(Searc)o(h)f(the)f(history)f(for)h
Fk(string)p Fq(,)f(starting)g(at)h(the)h(curren)o(t)f(history)f
(o\013set.)19 b(If)c Fk(direction)e Fq(is)h(less)195
-1409 y(than)20 b(0,)g(then)h(the)f(searc)o(h)f(is)h(through)g(previous)
+1323 y(than)20 b(0,)g(then)h(the)f(searc)o(h)f(is)h(through)g(previous)
f(en)o(tries,)i(otherwise)e(through)g(subsequen)o(t)195
-1464 y(en)o(tries.)g(If)d Fk(string)i Fq(is)d(found,)g(then)g(the)h
+1378 y(en)o(tries.)g(If)d Fk(string)i Fq(is)d(found,)g(then)g(the)h
(curren)o(t)f(history)f(index)h(is)g(set)g(to)g(that)f(history)g(en)o
-(try)l(,)195 1519 y(and)j(the)g(v)m(alue)g(returned)g(is)f(the)h
-(o\013set)e(in)i(the)g(line)f(of)g(the)h(en)o(try)g(where)g
-Fk(string)i Fq(w)o(as)d(found.)195 1573 y(Otherwise,)f(nothing)f(is)h
-(c)o(hanged,)g(and)h(a)e(-1)h(is)g(returned.)1675 1663
-y([F)l(unction])-1801 b Fh(int)27 b(history_search_prefix)f
+(try)l(,)195 1433 y(and)d Fp(history_search)f Fq(returns)h(the)g
+(o\013set)f(in)h(the)g(line)g(of)g(the)g(en)o(try)g(where)h
+Fk(string)i Fq(w)o(as)c(found.)195 1488 y(Otherwise,)15
+b(nothing)f(is)h(c)o(hanged,)g(and)h(this)e(returns)h(-1.)1675
+1571 y([F)l(unction])-1801 b Fh(int)27 b(history_search_prefix)f
Fg(\()p Ff(const)16 b(c)o(har)f(*string,)g(in)o(t)h(direction)p
-Fg(\))195 1717 y Fq(Searc)o(h)k(the)h(history)e(for)h
+Fg(\))195 1625 y Fq(Searc)o(h)k(the)h(history)e(for)h
Fk(string)p Fq(,)g(starting)e(at)i(the)g(curren)o(t)h(history)e
-(o\013set.)34 b(The)20 b(searc)o(h)g(is)195 1772 y(anc)o(hored:)g(matc)
-o(hing)13 b(lines)i(m)o(ust)f(b)q(egin)h(with)f Fk(string)p
-Fq(.)19 b(If)c Fk(direction)f Fq(is)g(less)g(than)h(0,)f(then)h(the)195
-1827 y(searc)o(h)g(is)h(through)f(previous)g(en)o(tries,)g(otherwise)g
-(through)g(subsequen)o(t)h(en)o(tries.)21 b(If)16 b Fk(string)i
-Fq(is)195 1882 y(found,)f(then)g(the)f(curren)o(t)h(history)e(index)i
-(is)f(set)g(to)g(that)g(en)o(try)l(,)g(and)h(the)f(return)h(v)m(alue)g
-(is)f(0.)195 1937 y(Otherwise,)f(nothing)f(is)h(c)o(hanged,)g(and)h(a)e
-(-1)h(is)g(returned.)1675 2026 y([F)l(unction])-1801
-b Fh(int)27 b(history_search_pos)e Fg(\()p Ff(const)16
-b(c)o(har)g(*string,)f(in)o(t)h(direction,)f(in)o(t)i(p)q(os)p
-Fg(\))195 2081 y Fq(Searc)o(h)g(for)g Fk(string)j Fq(in)d(the)g
-(history)f(list,)g(starting)f(at)i Fk(p)q(os)p Fq(,)g(an)g(absolute)g
-(index)g(in)o(to)f(the)i(list.)195 2135 y(If)g Fk(direction)g
-Fq(is)f(negativ)o(e,)h(the)g(searc)o(h)g(pro)q(ceeds)g(bac)o(kw)o(ard)g
-(from)f Fk(p)q(os)p Fq(,)h(otherwise)g(forw)o(ard.)195
-2190 y(Returns)23 b(the)f(absolute)f(index)h(of)g(the)g(history)f
-(elemen)o(t)h(where)g Fk(string)j Fq(w)o(as)c(found,)j(or)d(-1)195
-2245 y(otherwise.)75 2343 y Fj(2.3.6)30 b(Managing)20
-b(the)g(History)h(File)75 2416 y Fq(The)14 b(History)e(library)g(can)h
-(read)g(the)h(history)e(from)h(and)g(write)f(it)h(to)g(a)g(\014le.)19
-b(This)13 b(section)g(do)q(cumen)o(ts)75 2471 y(the)i(functions)g(for)g
-(managing)f(a)h(history)f(\014le.)1675 2560 y([F)l(unction])-1801
+(o\013set.)34 b(The)20 b(searc)o(h)g(is)195 1680 y(anc)o(hored:)k(matc)
+o(hing)16 b(history)h(en)o(tries)f(m)o(ust)h(b)q(egin)h(with)e
+Fk(string)p Fq(.)25 b(If)18 b Fk(direction)e Fq(is)h(less)g(than)195
+1735 y(0,)e(then)h(the)f(searc)o(h)g(is)g(through)g(previous)h(en)o
+(tries,)e(otherwise)h(through)g(subsequen)o(t)h(en)o(tries.)195
+1790 y(If)g Fk(string)j Fq(is)c(found,)h(then)g(the)g(curren)o(t)g
+(history)f(index)h(is)f(set)h(to)f(that)h(en)o(try)l(,)f(and)h(the)g
+(return)195 1845 y(v)m(alue)f(is)g(0.)20 b(Otherwise,)14
+b(nothing)h(is)g(c)o(hanged,)g(and)g(this)g(returns)g(-1.)1675
+1927 y([F)l(unction])-1801 b Fh(int)27 b(history_search_pos)e
+Fg(\()p Ff(const)16 b(c)o(har)g(*string,)f(in)o(t)h(direction,)f(in)o
+(t)i(p)q(os)p Fg(\))195 1982 y Fq(Searc)o(h)g(for)g Fk(string)j
+Fq(in)d(the)g(history)f(list,)g(starting)f(at)i Fk(p)q(os)p
+Fq(,)g(an)g(absolute)g(index)g(in)o(to)f(the)i(list.)195
+2037 y(If)g Fk(direction)g Fq(is)f(negativ)o(e,)h(the)g(searc)o(h)g
+(pro)q(ceeds)g(bac)o(kw)o(ard)g(from)f Fk(p)q(os)p Fq(,)h(otherwise)g
+(forw)o(ard.)195 2092 y(Returns)f(the)g(index)f(in)h(the)f(history)g
+(list)f(of)h(the)h(history)e(elemen)o(t)h(where)h Fk(string)i
+Fq(w)o(as)d(found,)195 2146 y(or)f(-1)g(otherwise.)75
+2240 y Fj(2.3.6)30 b(Managing)20 b(the)g(History)h(File)75
+2313 y Fq(The)14 b(History)e(library)g(can)h(read)g(the)h(history)e
+(from)h(and)g(write)f(it)h(to)g(a)g(\014le.)19 b(This)13
+b(section)g(do)q(cumen)o(ts)75 2368 y(the)i(functions)g(for)g(managing)
+f(a)h(history)f(\014le.)1675 2451 y([F)l(unction])-1801
b Fh(int)27 b(read_history)d Fg(\()p Ff(const)16 b(c)o(har)g
-(*\014lename)p Fg(\))195 2615 y Fq(Add)f(the)g(con)o(ten)o(ts)f(of)h
-Fk(\014lename)i Fq(to)d(the)h(history)f(list,)f(a)i(line)f(at)h(a)f
-(time.)19 b(If)c Fk(\014lename)j Fq(is)c Fp(NULL)p Fq(,)195
-2670 y(then)i(read)f(from)f Fp(~/.history)p Fq(.)19 b(Returns)c(0)g(if)
-g(successful,)g(or)g Fp(errno)f Fq(if)h(not.)p eop end
+(*\014lename)p Fg(\))195 2506 y Fq(Add)i(the)f(con)o(ten)o(ts)g(of)g
+Fk(\014lename)j Fq(to)c(the)i(history)e(list,)g(one)i(en)o(try)f(at)f
+(a)h(time.)26 b(If)17 b Fk(\014lename)j Fq(is)195 2560
+y Fp(NULL)p Fq(,)c(this)g(reads)h(from)f Fp(~/.history)p
+Fq(,)f(if)h(it)g(exists.)24 b(This)16 b(attempts)g(to)g(determine)h
+(whether)195 2615 y(the)12 b(history)e(\014le)i(includes)g(timestamp)e
+(information,)g(and)i(assigns)f(timestamps)f(to)h(the)h(history)195
+2670 y(en)o(tries)j(it)f(reads)h(if)g(so.)k(Returns)d(0)f(if)g
+(successful,)g(or)f Fp(errno)h Fq(if)g(not.)p eop end
%%Page: 8 11
TeXDict begin 8 10 bop 75 -58 a Fq(Chapter)15 b(2:)k(Programming)14
b(with)g(GNU)h(History)888 b(8)1675 149 y([F)l(unction])-1801
Fq(and)h(end)h(at)f Fk(to)p Fq(.)18 b(If)c Fk(from)e
Fq(is)h(zero,)g(start)f(at)g(the)h(b)q(eginning.)20 b(If)13
b Fk(to)i Fq(is)d(less)h(than)g Fk(from)p Fq(,)195 314
-y(then)k(read)f(un)o(til)g(the)h(end)g(of)f(the)h(\014le.)24
-b(If)16 b Fk(\014lename)k Fq(is)c Fp(NULL)p Fq(,)g(then)g(read)h(from)f
-Fp(~/.history)p Fq(.)195 369 y(Returns)g(0)f(if)f(successful,)h(or)g
-Fp(errno)g Fq(if)f(not.)1675 449 y([F)l(unction])-1801
+y(this)j(reads)h(un)o(til)f(the)h(end)g(of)f(the)h(\014le.)25
+b(This)16 b(attempts)g(to)g(determine)h(whether)g(the)g(history)195
+369 y(\014le)e(includes)h(timestamp)e(information,)f(and)j(assigns)e
+(timestamps)g(to)h(the)h(history)e(en)o(tries)h(it)195
+423 y(reads)g(if)g(so.)k(If)d Fk(\014lename)i Fq(is)c
+Fp(NULL)p Fq(,)h(this)f(reads)h(from)g Fp(~/.history)p
+Fq(,)e(if)i(it)g(exists.)k(Returns)d(0)e(if)195 478 y(successful,)h(or)
+g Fp(errno)f Fq(if)h(not.)1675 578 y([F)l(unction])-1801
b Fh(int)27 b(write_history)d Fg(\()p Ff(const)16 b(c)o(har)g
-(*\014lename)p Fg(\))195 504 y Fq(W)l(rite)g(the)i(curren)o(t)f
-(history)f(to)h Fk(\014lename)p Fq(,)g(o)o(v)o(erwriting)e
-Fk(\014lename)20 b Fq(if)c(necessary)l(.)27 b(If)17 b
-Fk(\014lename)195 558 y Fq(is)c Fp(NULL)p Fq(,)g(then)h(write)f(the)g
-(history)g(list)f(to)h Fp(~/.history)p Fq(.)18 b(Returns)c(0)f(on)h
-(success,)g(or)f Fp(errno)g Fq(on)195 613 y(a)i(read)g(or)g(write)f
-(error.)1675 694 y([F)l(unction])-1801 b Fh(int)27 b(append_history)d
+(*\014lename)p Fg(\))195 633 y Fq(W)l(rite)g(the)g(curren)o(t)g
+(history)g(to)g Fk(\014lename)p Fq(,)g(o)o(v)o(erwriting)e
+Fk(\014lename)19 b Fq(if)d(necessary)l(.)24 b(This)16
+b(writes)195 687 y(timestamp)h(information)g(if)h(the)g
+Fp(history_write_timestamps)d Fq(v)m(ariable)j(is)g(set)g(to)g(a)g
+(non-)195 742 y(zero)d(v)m(alue.)21 b(If)15 b Fk(\014lename)j
+Fq(is)d Fp(NULL)p Fq(,)g(then)g(write)g(the)g(history)g(list)f(to)g
+Fp(~/.history)p Fq(.)19 b(Returns)d(0)195 797 y(on)f(success,)h(or)e
+Fp(errno)h Fq(on)g(a)g(read)g(or)g(write)f(error.)1675
+897 y([F)l(unction])-1801 b Fh(int)27 b(append_history)d
Fg(\()p Ff(in)o(t)16 b(nelemen)o(ts,)f(const)i(c)o(har)e(*\014lename)p
-Fg(\))195 748 y Fq(App)q(end)k(the)e(last)f Fk(nelemen)o(ts)k
-Fq(of)c(the)i(history)e(list)g(to)h Fk(\014lename)p Fq(.)26
-b(If)18 b Fk(\014lename)i Fq(is)d Fp(NULL)p Fq(,)g(then)195
-803 y(app)q(end)f(to)f Fp(~/.history)p Fq(.)j(Returns)e(0)f(on)g
-(success,)h(or)e Fp(errno)h Fq(on)g(a)g(read)g(or)g(write)f(error.)1675
-883 y([F)l(unction])-1801 b Fh(int)27 b(history_truncate_file)f
+Fg(\))195 951 y Fq(App)q(end)22 b(the)e(last)f Fk(nelemen)o(ts)j
+Fq(of)e(the)h(history)e(list)g(to)h Fk(\014lename)p Fq(.)35
+b(This)20 b(writes)f(timestamp)195 1006 y(information)13
+b(if)h(the)h Fp(history_write_timestamps)c Fq(v)m(ariable)j(is)h(set)f
+(to)g(a)h(non-zero)g(v)m(alue.)20 b(If)195 1061 y Fk(\014lename)f
+Fq(is)d Fp(NULL)p Fq(,)g(then)h(app)q(end)g(to)f Fp(~/.history)p
+Fq(.)23 b(Returns)17 b(0)f(on)g(success,)h(or)f Fp(errno)g
+Fq(on)g(a)195 1116 y(read)f(or)g(write)f(error.)1675
+1215 y([F)l(unction])-1801 b Fh(int)27 b(history_truncate_file)f
Fg(\()p Ff(const)16 b(c)o(har)f(*\014lename,)g(in)o(t)h(nlines)p
-Fg(\))195 938 y Fq(T)l(runcate)j(the)h(history)e(\014le)h
+Fg(\))195 1270 y Fq(T)l(runcate)j(the)h(history)e(\014le)h
Fk(\014lename)p Fq(,)h(lea)o(ving)e(only)h(the)g(last)f
Fk(nlines)j Fq(lines.)32 b(If)20 b Fk(\014lename)h Fq(is)195
-993 y Fp(NULL)p Fq(,)14 b(then)i Fp(~/.history)e Fq(is)g(truncated.)20
-b(Returns)c(0)f(on)g(success,)g(or)g Fp(errno)f Fq(on)i(failure.)75
-1085 y Fj(2.3.7)30 b(History)20 b(Expansion)75 1158 y
-Fq(These)c(functions)f(implemen)o(t)f(history)g(expansion.)1675
-1238 y([F)l(unction])-1801 b Fh(int)27 b(history_expand)d
-Fg(\()p Ff(c)o(har)16 b(*string,)f(c)o(har)g(**output)p
-Fg(\))195 1293 y Fq(Expand)j Fk(string)p Fq(,)e(placing)g(the)i(result)
+1325 y Fp(NULL)p Fq(,)14 b(this)h(truncates)g Fp(~/.history)p
+Fq(.)j(Returns)e(0)f(on)g(success,)g(or)g Fp(errno)g
+Fq(on)g(failure.)75 1428 y Fj(2.3.7)30 b(History)20 b(Expansion)75
+1502 y Fq(These)c(functions)f(implemen)o(t)f(history)g(expansion.)1675
+1601 y([F)l(unction])-1801 b Fh(int)27 b(history_expand)d
+Fg(\()p Ff(const)16 b(c)o(har)g(*string,)f(c)o(har)h(**output)p
+Fg(\))195 1656 y Fq(Expand)i Fk(string)p Fq(,)e(placing)g(the)i(result)
e(in)o(to)g Fk(output)p Fq(,)i(a)e(p)q(oin)o(ter)h(to)g(a)g(string)f
-(\(see)h(Section)g(1.1)195 1348 y([History)d(In)o(teraction],)f(page)i
-(1\).)20 b(Returns:)195 1420 y Fp(0)216 b Fq(If)19 b(no)g(expansions)f
+(\(see)h(Section)g(1.1)195 1711 y([History)d(In)o(teraction],)f(page)i
+(1\).)20 b(Returns:)195 1796 y Fp(0)216 b Fq(If)19 b(no)g(expansions)f
(to)q(ok)g(place)h(\(or,)f(if)h(the)f(only)h(c)o(hange)f(in)h(the)g
-(text)f(w)o(as)g(the)435 1475 y(remo)o(v)m(al)c(of)h(escap)q(e)h(c)o
+(text)f(w)o(as)g(the)435 1851 y(remo)o(v)m(al)c(of)h(escap)q(e)h(c)o
(haracters)e(preceding)h(the)g(history)f(expansion)h(c)o(haracter\);)
-195 1546 y Fp(1)216 b Fq(if)15 b(expansions)g(did)g(tak)o(e)f(place;)
-195 1618 y Fp(-1)192 b Fq(if)15 b(there)g(w)o(as)f(an)h(error)g(in)g
-(expansion;)195 1690 y Fp(2)216 b Fq(if)13 b(the)h(returned)g(line)g
+195 1935 y Fp(1)216 b Fq(if)15 b(expansions)g(did)g(tak)o(e)f(place;)
+195 2018 y Fp(-1)192 b Fq(if)15 b(there)g(w)o(as)f(an)h(error)g(in)g
+(expansion;)195 2101 y Fp(2)216 b Fq(if)13 b(the)h(returned)g(line)g
(should)g(b)q(e)g(displa)o(y)o(ed,)f(but)h(not)f(executed,)i(as)e(with)
-g(the)h Fp(:p)435 1745 y Fq(mo)q(di\014er)h(\(see)g(Section)g(1.1.3)f
-([Mo)q(di\014ers],)g(page)h(2\).)195 1816 y(If)g(an)h(error)e(o)q
-(ccurred)i(in)f(expansion,)g(then)g Fk(output)h Fq(con)o(tains)e(a)h
-(descriptiv)o(e)g(error)g(message.)1675 1897 y([F)l(unction])-1801
-b Fh(char)27 b(*)f(get_history_event)f Fg(\()p Ff(const)16
-b(c)o(har)g(*string,)f(in)o(t)h(*cindex,)g(in)o(t)283
-1951 y(qc)o(har)p Fg(\))195 2006 y Fq(Returns)23 b(the)g(text)f(of)h
-(the)f(history)g(ev)o(en)o(t)h(b)q(eginning)f(at)h Fk(string)i
-Fp(+)e Fk(*cindex)p Fq(.)42 b Fk(*cindex)26 b Fq(is)195
-2061 y(mo)q(di\014ed)15 b(to)f(p)q(oin)o(t)g(to)g(after)g(the)h(ev)o
-(en)o(t)f(sp)q(eci\014er.)21 b(A)o(t)14 b(function)g(en)o(try)l(,)h
-Fk(cindex)j Fq(p)q(oin)o(ts)c(to)g(the)195 2116 y(index)k(in)o(to)f
-Fk(string)k Fq(where)d(the)g(history)f(ev)o(en)o(t)h(sp)q
-(eci\014cation)f(b)q(egins.)29 b Fk(qc)o(har)21 b Fq(is)c(a)h(c)o
-(haracter)195 2171 y(that)13 b(is)g(allo)o(w)o(ed)f(to)g(end)i(the)g
-(ev)o(en)o(t)f(sp)q(eci\014cation)h(in)f(addition)f(to)h(the)h
-(\\normal")e(terminating)195 2225 y(c)o(haracters.)1675
-2306 y([F)l(unction])-1801 b Fh(char)27 b(**)f(history_tokenize)f
-Fg(\()p Ff(const)16 b(c)o(har)g(*string)p Fg(\))195 2360
-y Fq(Return)g(an)f(arra)o(y)g(of)g(tok)o(ens)g(parsed)g(out)g(of)g
-Fk(string)p Fq(,)f(m)o(uc)o(h)i(as)f(the)g(shell)g(migh)o(t.)20
-b(The)15 b(tok)o(ens)195 2415 y(are)g(split)f(on)i(the)f(c)o(haracters)
-f(in)h(the)h Fk(history)p 1004 2415 14 2 v 19 w(w)o(ord)p
-1121 2415 V 19 w(delimiters)g Fq(v)m(ariable,)e(and)i(shell)f(quoting)
-195 2470 y(con)o(v)o(en)o(tions)f(are)h(ob)q(ey)o(ed.)1675
-2550 y([F)l(unction])-1801 b Fh(char)27 b(*)f(history_arg_extract)g
-Fg(\()p Ff(in)o(t)15 b(\014rst,)h(in)o(t)g(last,)g(const)h(c)o(har)e
-(*string)p Fg(\))195 2605 y Fq(Extract)k(a)h(string)f(segmen)o(t)h
-(consisting)f(of)h(the)g Fk(\014rst)h Fq(through)f Fk(last)g
-Fq(argumen)o(ts)f(presen)o(t)h(in)195 2660 y Fk(string)p
-Fq(.)f(Argumen)o(ts)c(are)f(split)h(using)g Fp(history_tokenize)p
-Fq(.)p eop end
+g(the)h Fp(:p)435 2156 y Fq(mo)q(di\014er)h(\(see)g(Section)g(1.1.3)f
+([Mo)q(di\014ers],)g(page)h(3\).)195 2242 y(If)h(an)g(error)f(o)q
+(ccurred)h(during)g(expansion,)f(then)h Fk(output)g Fq(con)o(tains)f(a)
+h(descriptiv)o(e)f(error)g(mes-)195 2296 y(sage.)1675
+2396 y([F)l(unction])-1801 b Fh(char)27 b(*)f(get_history_event)f
+Fg(\()p Ff(const)16 b(c)o(har)g(*string,)f(in)o(t)h(*cindex,)g(in)o(t)
+283 2451 y(qc)o(har)p Fg(\))195 2506 y Fq(Returns)e(the)f(text)g(of)g
+(the)g(history)g(ev)o(en)o(t)g(b)q(eginning)g(at)g Fk(string)j
+Fp(+)d Fk(*cindex)p Fq(.)19 b(Mo)q(di\014es)14 b Fk(*cindex)195
+2560 y Fq(to)e(p)q(oin)o(t)g(to)g(after)g(the)h(ev)o(en)o(t)f(sp)q
+(eci\014er.)20 b(A)o(t)12 b(function)g(en)o(try)l(,)h
+Fk(cindex)j Fq(p)q(oin)o(ts)c(to)g(the)h(index)g(in)o(to)195
+2615 y Fk(string)h Fq(where)d(the)g(history)f(ev)o(en)o(t)g(sp)q
+(eci\014cation)h(b)q(egins.)19 b Fk(qc)o(har)14 b Fq(is)c(a)h(c)o
+(haracter)f(that)g(is)h(allo)o(w)o(ed)195 2670 y(to)k(end)g(the)h(ev)o
+(en)o(t)f(sp)q(eci\014cation)g(in)g(addition)f(to)h(the)g(\\normal")f
+(terminating)f(c)o(haracters.)p eop end
%%Page: 9 12
TeXDict begin 9 11 bop 75 -58 a Fq(Chapter)15 b(2:)k(Programming)14
-b(with)g(GNU)h(History)888 b(9)75 149 y Fo(2.4)33 b(History)21
-b(V)-6 b(ariables)75 229 y Fq(This)13 b(section)g(describ)q(es)h(the)g
-(externally-visible)e(v)m(ariables)g(exp)q(orted)i(b)o(y)f(the)h
-Fl(gnu)f Fq(History)g(Library)l(.)1685 330 y([V)l(ariable])-1801
-b Fh(int)27 b(history_base)195 385 y Fq(The)15 b(logical)f(o\013set)g
+b(with)g(GNU)h(History)888 b(9)1675 149 y([F)l(unction])-1801
+b Fh(char)27 b(**)f(history_tokenize)f Fg(\()p Ff(const)16
+b(c)o(har)g(*string)p Fg(\))195 204 y Fq(Return)g(an)f(arra)o(y)g(of)g
+(tok)o(ens)g(parsed)g(out)g(of)g Fk(string)p Fq(,)f(m)o(uc)o(h)i(as)f
+(the)g(shell)g(migh)o(t.)20 b(The)15 b(tok)o(ens)195
+259 y(are)g(split)f(on)i(the)f(c)o(haracters)f(in)h(the)h
+Fk(history)p 1004 259 14 2 v 19 w(w)o(ord)p 1121 259
+V 19 w(delimiters)g Fq(v)m(ariable,)e(and)i(shell)f(quoting)195
+314 y(con)o(v)o(en)o(tions)f(are)h(ob)q(ey)o(ed)h(as)f(describ)q(ed)h
+(b)q(elo)o(w.)1675 407 y([F)l(unction])-1801 b Fh(char)27
+b(*)f(history_arg_extract)g Fg(\()p Ff(in)o(t)15 b(\014rst,)h(in)o(t)g
+(last,)g(const)h(c)o(har)e(*string)p Fg(\))195 462 y
+Fq(Extract)k(a)h(string)f(segmen)o(t)h(consisting)f(of)h(the)g
+Fk(\014rst)h Fq(through)f Fk(last)g Fq(argumen)o(ts)f(presen)o(t)h(in)
+195 517 y Fk(string)p Fq(.)f(This)c(splits)f Fk(string)k
+Fq(in)o(to)c(argumen)o(ts)g(using)h Fp(history_tokenize)p
+Fq(.)75 639 y Fo(2.4)33 b(History)21 b(V)-6 b(ariables)75
+718 y Fq(This)13 b(section)g(describ)q(es)h(the)g(externally-visible)e
+(v)m(ariables)g(exp)q(orted)i(b)o(y)f(the)h Fl(gnu)f
+Fq(History)g(Library)l(.)1685 812 y([V)l(ariable])-1801
+b Fh(int)27 b(history_base)195 867 y Fq(The)15 b(logical)f(o\013set)g
(of)h(the)g(\014rst)g(en)o(try)g(in)g(the)g(history)f(list.)1685
-486 y([V)l(ariable])-1801 b Fh(int)27 b(history_length)195
-540 y Fq(The)15 b(n)o(um)o(b)q(er)h(of)f(en)o(tries)f(curren)o(tly)h
-(stored)g(in)g(the)g(history)f(list.)1685 641 y([V)l(ariable])-1801
-b Fh(int)27 b(history_max_entries)195 696 y Fq(The)c(maxim)o(um)f(n)o
+960 y([V)l(ariable])-1801 b Fh(int)27 b(history_length)195
+1015 y Fq(The)15 b(n)o(um)o(b)q(er)h(of)f(en)o(tries)f(curren)o(tly)h
+(stored)g(in)g(the)g(history)f(list.)1685 1109 y([V)l(ariable])-1801
+b Fh(int)27 b(history_max_entries)195 1164 y Fq(The)c(maxim)o(um)f(n)o
(um)o(b)q(er)h(of)g(history)f(en)o(tries.)42 b(This)23
b(m)o(ust)f(b)q(e)i(c)o(hanged)f(using)g Fp(stifle_)195
-751 y(history\(\))p Fq(.)1685 852 y([V)l(ariable])-1801
-b Fh(int)27 b(history_write_timestamps)195 906 y Fq(If)c(non-zero,)h
+1218 y(history\(\))p Fq(.)1685 1312 y([V)l(ariable])-1801
+b Fh(int)27 b(history_write_timestamps)195 1367 y Fq(If)c(non-zero,)h
(timestamps)d(are)h(written)f(to)h(the)g(history)f(\014le,)j(so)e(they)
-g(can)h(b)q(e)g(preserv)o(ed)195 961 y(b)q(et)o(w)o(een)16
+g(can)h(b)q(e)g(preserv)o(ed)195 1422 y(b)q(et)o(w)o(een)16
b(sessions.)j(The)c(default)g(v)m(alue)g(is)g(0,)g(meaning)g(that)f
-(timestamps)g(are)h(not)g(sa)o(v)o(ed.)195 1033 y(The)21
+(timestamps)g(are)h(not)g(sa)o(v)o(ed.)195 1490 y(The)21
b(curren)o(t)g(timestamp)e(format)h(uses)h(the)f(v)m(alue)h(of)g
-Fk(history)p 1350 1033 14 2 v 19 w(commen)o(t)p 1550
-1033 V 19 w(c)o(har)j Fq(to)c(delimit)195 1088 y(timestamp)g(en)o
-(tries)g(in)h(the)h(history)e(\014le.)38 b(If)21 b(that)f(v)m(ariable)h
-(do)q(es)g(not)g(ha)o(v)o(e)g(a)g(v)m(alue)g(\(the)195
-1142 y(default\),)14 b(timestamps)g(will)g(not)h(b)q(e)h(written.)1685
-1243 y([V)l(ariable])-1801 b Fh(char)27 b(history_expansion_char)195
-1298 y Fq(The)18 b(c)o(haracter)f(that)g(in)o(tro)q(duces)g(a)g
+Fk(history)p 1350 1490 V 19 w(commen)o(t)p 1550 1490
+V 19 w(c)o(har)j Fq(to)c(delimit)195 1544 y(timestamp)g(en)o(tries)g
+(in)h(the)h(history)e(\014le.)38 b(If)21 b(that)f(v)m(ariable)h(do)q
+(es)g(not)g(ha)o(v)o(e)g(a)g(v)m(alue)g(\(the)195 1599
+y(default\),)14 b(this)h(will)f(not)g(write)h(timestamps.)1685
+1693 y([V)l(ariable])-1801 b Fh(char)27 b(history_expansion_char)195
+1748 y Fq(The)18 b(c)o(haracter)f(that)g(in)o(tro)q(duces)g(a)g
(history)g(ev)o(en)o(t.)27 b(The)18 b(default)f(is)g(`)p
-Fp(!)p Fq('.)26 b(Setting)17 b(this)g(to)g(0)195 1353
-y(inhibits)d(history)h(expansion.)1685 1454 y([V)l(ariable])-1801
-b Fh(char)27 b(history_subst_char)195 1508 y Fq(The)21
+Fp(!)p Fq('.)26 b(Setting)17 b(this)g(to)g(0)195 1802
+y(inhibits)d(history)h(expansion.)1685 1896 y([V)l(ariable])-1801
+b Fh(char)27 b(history_subst_char)195 1951 y Fq(The)21
b(c)o(haracter)e(that)h(in)o(v)o(ok)o(es)f(w)o(ord)h(substitution)f(if)
h(found)g(at)g(the)h(start)e(of)h(a)g(line.)35 b(The)195
-1563 y(default)15 b(is)f(`)p Fp(^)p Fq('.)1685 1664 y([V)l(ariable])
--1801 b Fh(char)27 b(history_comment_char)195 1719 y
-Fq(During)18 b(tok)o(enization,)g(if)g(this)h(c)o(haracter)f(is)g(seen)
-i(as)e(the)h(\014rst)g(c)o(haracter)f(of)g(a)h(w)o(ord,)g(then)195
-1774 y(it)i(and)h(all)e(subsequen)o(t)j(c)o(haracters)d(up)j(to)e(a)g
-(newline)g(are)h(ignored,)g(suppressing)g(history)195
-1828 y(expansion)15 b(for)g(the)g(remainder)g(of)g(the)g(line.)k(This)c
-(is)g(disabled)g(b)o(y)g(default.)1685 1929 y([V)l(ariable])-1801
-b Fh(char)27 b(*)f(history_word_delimiters)195 1984 y
+2006 y(default)15 b(is)f(`)p Fp(^)p Fq('.)1685 2099 y([V)l(ariable])
+-1801 b Fh(char)27 b(history_comment_char)195 2154 y
+Fq(During)17 b(tok)o(enization,)f(if)h(this)f(c)o(haracter)h(app)q
+(ears)h(as)f(the)g(\014rst)g(c)o(haracter)g(of)g(a)g(w)o(ord,)g(then)
+195 2209 y(it)k(and)h(all)e(subsequen)o(t)j(c)o(haracters)d(up)j(to)e
+(a)g(newline)g(are)h(ignored,)g(suppressing)g(history)195
+2264 y(expansion)15 b(for)g(the)g(remainder)g(of)g(the)g(line.)k(This)c
+(is)g(disabled)g(b)o(y)g(default.)1685 2357 y([V)l(ariable])-1801
+b Fh(char)27 b(*)f(history_word_delimiters)195 2412 y
Fq(The)14 b(c)o(haracters)f(that)g(separate)g(tok)o(ens)h(for)f
Fp(history_tokenize\(\))p Fq(.)k(The)d(default)f(v)m(alue)h(is)f
-Fp(")195 2039 y(\\t\\n\(\)<>;&|")p Fq(.)1685 2140 y([V)l(ariable])-1801
+Fp(")195 2467 y(\\t\\n\(\)<>;&|")p Fq(.)1685 2560 y([V)l(ariable])-1801
b Fh(char)27 b(*)f(history_search_delimite)q(r_chars)195
-2194 y Fq(The)13 b(list)f(of)h(additional)e(c)o(haracters)h(whic)o(h)h
+2615 y Fq(The)13 b(list)f(of)h(additional)e(c)o(haracters)h(whic)o(h)h
(can)h(delimit)d(a)i(history)f(searc)o(h)h(string,)f(in)h(addition)195
-2249 y(to)i(space,)g(T)l(AB,)g(`)p Fp(:)p Fq(')f(and)h(`)p
+2670 y(to)i(space,)g(T)l(AB,)g(`)p Fp(:)p Fq(')f(and)h(`)p
Fp(?)p Fq(')g(in)g(the)g(case)g(of)g(a)g(substring)f(searc)o(h.)20
-b(The)c(default)e(is)h(empt)o(y)l(.)1685 2350 y([V)l(ariable])-1801
-b Fh(char)27 b(*)f(history_no_expand_chars)195 2405 y
-Fq(The)15 b(list)f(of)g(c)o(haracters)g(whic)o(h)h(inhibit)f(history)g
-(expansion)h(if)f(found)i(immediately)d(follo)o(wing)195
-2460 y Fk(history)p 337 2460 V 19 w(expansion)p 552 2460
-V 20 w(c)o(har)p Fq(.)20 b(The)15 b(default)g(is)f(space,)i(tab,)e
-(newline,)h(carriage)f(return,)g(and)i(`)p Fp(=)p Fq('.)1685
-2560 y([V)l(ariable])-1801 b Fh(int)27 b(history_quotes_inhibit_exp)q
-(ansion)195 2615 y Fq(If)14 b(non-zero,)g(double-quoted)h(w)o(ords)e
-(are)g(not)h(scanned)h(for)e(the)h(history)f(expansion)h(c)o(haracter)
-195 2670 y(or)h(the)g(history)f(commen)o(t)h(c)o(haracter.)k(The)c
-(default)g(v)m(alue)h(is)e(0.)p eop end
+b(The)c(default)e(is)h(empt)o(y)l(.)p eop end
%%Page: 10 13
TeXDict begin 10 12 bop 75 -58 a Fq(Chapter)15 b(2:)k(Programming)14
b(with)g(GNU)h(History)866 b(10)1685 149 y([V)l(ariable])-1801
+b Fh(char)27 b(*)f(history_no_expand_chars)195 204 y
+Fq(The)15 b(list)f(of)g(c)o(haracters)g(whic)o(h)h(inhibit)f(history)g
+(expansion)h(if)f(found)i(immediately)d(follo)o(wing)195
+259 y Fk(history)p 337 259 14 2 v 19 w(expansion)p 552
+259 V 20 w(c)o(har)p Fq(.)20 b(The)15 b(default)g(is)f(space,)i(tab,)e
+(newline,)h(carriage)f(return,)g(and)i(`)p Fp(=)p Fq('.)1685
+356 y([V)l(ariable])-1801 b Fh(int)27 b(history_quotes_inhibit_exp)q
+(ansion)195 411 y Fq(If)17 b(non-zero,)g(the)g(history)f(expansion)h
+(co)q(de)g(implemen)o(ts)f(shell-lik)o(e)g(quoting:)22
+b(single-quoted)195 466 y(w)o(ords)c(are)g(not)h(scanned)g(for)f(the)h
+(history)f(expansion)h(c)o(haracter)f(or)g(the)h(history)e(commen)o(t)
+195 520 y(c)o(haracter,)22 b(and)g(double-quoted)g(w)o(ords)e(ma)o(y)h
+(ha)o(v)o(e)g(history)g(expansion)g(p)q(erformed,)i(since)195
+575 y(single)15 b(quotes)f(are)h(not)g(sp)q(ecial)g(within)g(double)g
+(quotes.)20 b(The)15 b(default)g(v)m(alue)g(is)g(0.)1685
+672 y([V)l(ariable])-1801 b Fh(int)27 b(history_quoting_state)195
+727 y Fq(An)14 b(application)f(ma)o(y)g(set)h(this)f(v)m(ariable)g(to)h
+(indicate)f(that)g(the)h(curren)o(t)g(line)g(b)q(eing)g(expanded)195
+782 y(is)f(sub)s(ject)g(to)f(existing)g(quoting.)18 b(If)c(set)f(to)f
+(`)p Fp(')p Fq(',)g(the)h(history)f(expansion)h(function)g(will)f
+(assume)195 836 y(that)h(the)h(line)f(is)g(single-quoted)g(and)h
+(inhibit)f(expansion)g(un)o(til)g(it)g(reads)g(an)h(unquoted)g(closing)
+195 891 y(single)19 b(quote;)j(if)e(set)g(to)f(`)p Fp(")p
+Fq(',)h(history)f(expansion)h(will)f(assume)h(the)g(line)g(is)g(double)
+g(quoted)195 946 y(un)o(til)c(it)f(reads)i(an)f(unquoted)h(closing)f
+(double)h(quote.)24 b(If)16 b(set)h(to)e(0,)i(the)f(default,)g(the)h
+(history)195 1001 y(expansion)10 b(function)h(will)e(assume)i(the)f
+(line)g(is)g(not)h(quoted)f(and)h(treat)f(quote)g(c)o(haracters)g
+(within)195 1056 y(the)15 b(line)f(as)g(describ)q(ed)h(ab)q(o)o(v)o(e.)
+k(This)14 b(is)g(only)g(e\013ectiv)o(e)g(if)g Fk(history)p
+1364 1056 V 19 w(quotes)p 1511 1056 V 20 w(inhibit)p
+1663 1056 V 19 w(expansion)195 1110 y Fq(is)i(set.)23
+b(This)16 b(is)g(in)o(tended)h(for)f(use)h(b)o(y)f(applications)f(lik)o
+(e)h(Bash)h(whic)o(h)f(allo)o(w)f(quoted)h(strings)195
+1165 y(to)f(span)g(m)o(ultiple)f(lines.)1685 1262 y([V)l(ariable])-1801
b Fh(rl_linebuf_func_t)29 b(*)d(history_inhibit_expansi)q(on_func)q
-(tion)195 204 y Fq(This)16 b(should)h(b)q(e)g(set)g(to)f(the)g(address)
-h(of)f(a)h(function)f(that)g(tak)o(es)g(t)o(w)o(o)f(argumen)o(ts:)22
-b(a)17 b Fp(char)d(*)195 259 y Fq(\()p Fk(string)t Fq(\))d(and)j(an)f
-Fp(int)g Fq(index)h(in)o(to)e(that)g(string)h(\()p Fk(i)r
-Fq(\).)18 b(It)c(should)f(return)g(a)g(non-zero)h(v)m(alue)f(if)g(the)
-195 314 y(history)h(expansion)g(starting)f(at)h Fk(string[i])g
-Fq(should)h(not)f(b)q(e)h(p)q(erformed;)g(zero)f(if)g(the)h(expansion)
-195 369 y(should)h(b)q(e)h(done.)22 b(It)16 b(is)g(in)o(tended)g(for)f
-(use)i(b)o(y)f(applications)e(lik)o(e)h(Bash)h(that)g(use)g(the)g
-(history)195 423 y(expansion)f(c)o(haracter)g(for)f(additional)g(purp)q
-(oses.)20 b(By)c(default,)e(this)h(v)m(ariable)f(is)h(set)g(to)f
-Fp(NULL)p Fq(.)75 561 y Fo(2.5)33 b(History)21 b(Programming)h(Example)
-75 641 y Fq(The)15 b(follo)o(wing)e(program)h(demonstrates)h(simple)g
-(use)g(of)g(the)g Fl(gnu)g Fq(History)f(Library)l(.)195
-709 y Fe(#include)j(<stdio.h)o(>)195 752 y(#include)g(<readlin)o(e/h)o
-(is)o(tor)o(y.h)o(>)195 839 y(main)h(\(argc,)f(argv\))293
-883 y(int)i(argc;)293 927 y(char)f(**argv;)195 970 y({)234
-1014 y(char)g(line[1024])o(,)f(*t;)234 1057 y(int)i(len,)f(done)g(=)h
-(0;)234 1144 y(line[0])e(=)i(0;)234 1232 y(using_hist)o(ory)d(\(\);)234
-1275 y(while)i(\(!done\))273 1319 y({)313 1362 y(printf)f(\("history)o
-($)g("\);)313 1406 y(fflush)g(\(stdout\);)313 1450 y(t)i(=)g(fgets)f
-(\(line,)f(sizeof)g(\(line\))h(-)h(1,)g(stdin\);)313
-1493 y(if)g(\(t)f(&&)h(*t\))352 1537 y({)391 1580 y(len)g(=)g(strlen)e
-(\(t\);)391 1624 y(if)i(\(t[len)e(-)i(1])g(==)g('\\n'\))430
-1667 y(t[len)f(-)h(1])g(=)g('\\0';)352 1711 y(})313 1798
-y(if)g(\(!t\))352 1842 y(strcpy)e(\(line,)g("quit"\);)313
-1929 y(if)i(\(line[0])o(\))352 1973 y({)391 2016 y(char)f(*expansion)o
-(;)391 2060 y(int)h(result;)391 2147 y(result)e(=)j(history_e)o(xp)o
-(and)c(\(line,)h(&expansion)o(\);)391 2191 y(if)i(\(result\))430
-2234 y(fprintf)e(\(stderr,)g("\045s\\n",)g(expansion)o(\);)391
-2321 y(if)i(\(result)e(<)i(0)g(||)g(result)e(==)i(2\))430
-2365 y({)470 2408 y(free)f(\(expansio)o(n\))o(;)470 2452
-y(continue)o(;)430 2496 y(})391 2583 y(add_histor)o(y)e(\(expansion\))o
-(;)391 2626 y(strncpy)h(\(line,)g(expansion,)f(sizeof)h(\(line\))h(-)h
-(1\);)391 2670 y(free)f(\(expansion)o(\);)p eop end
+(tion)195 1317 y Fq(This)16 b(should)h(b)q(e)g(set)g(to)f(the)g
+(address)h(of)f(a)h(function)f(that)g(tak)o(es)g(t)o(w)o(o)f(argumen)o
+(ts:)22 b(a)17 b Fp(char)d(*)195 1372 y Fq(\()p Fk(string)t
+Fq(\))d(and)j(an)f Fp(int)g Fq(index)h(in)o(to)e(that)g(string)h(\()p
+Fk(i)r Fq(\).)18 b(It)c(should)f(return)g(a)g(non-zero)h(v)m(alue)f(if)
+g(the)195 1427 y(history)h(expansion)g(starting)f(at)h
+Fk(string[i])g Fq(should)h(not)f(b)q(e)h(p)q(erformed;)g(zero)f(if)g
+(the)h(expansion)195 1481 y(should)h(b)q(e)h(done.)22
+b(It)16 b(is)g(in)o(tended)g(for)f(use)i(b)o(y)f(applications)e(lik)o
+(e)h(Bash)h(that)g(use)g(the)g(history)195 1536 y(expansion)f(c)o
+(haracter)g(for)f(additional)g(purp)q(oses.)20 b(By)c(default,)e(this)h
+(v)m(ariable)f(is)h(set)g(to)f Fp(NULL)p Fq(.)75 1660
+y Fo(2.5)33 b(History)21 b(Programming)h(Example)75 1740
+y Fq(The)15 b(follo)o(wing)e(program)h(demonstrates)h(simple)g(use)g
+(of)g(the)g Fl(gnu)g Fq(History)f(Library)l(.)195 1798
+y Fe(#include)j(<stdio.h)o(>)195 1842 y(#include)g(<readlin)o(e/h)o(is)
+o(tor)o(y.h)o(>)195 1929 y(int)195 1973 y(main)h(\(int)g(argc,)g(char)g
+(**argv\))195 2016 y({)234 2060 y(char)g(line[1024])o(,)f(*t;)234
+2103 y(int)i(len,)f(done)g(=)h(0;)234 2191 y(line[0])e(=)i(0;)234
+2278 y(using_hist)o(ory)d(\(\);)234 2321 y(while)i(\(!done\))273
+2365 y({)313 2408 y(printf)f(\("history)o($)g("\);)313
+2452 y(fflush)g(\(stdout\);)313 2496 y(t)i(=)g(fgets)f(\(line,)f
+(sizeof)g(\(line\))h(-)h(1,)g(stdin\);)313 2539 y(if)g(\(t)f(&&)h(*t\))
+352 2583 y({)391 2626 y(len)g(=)g(strlen)e(\(t\);)391
+2670 y(if)i(\(t[len)e(-)i(1])g(==)g('\\n'\))p eop end
%%Page: 11 14
TeXDict begin 11 13 bop 75 -58 a Fq(Chapter)15 b(2:)k(Programming)14
-b(with)g(GNU)h(History)866 b(11)352 149 y Fe(})313 237
-y(if)19 b(\(strcmp)d(\(line,)i("quit"\))f(==)h(0\))352
-280 y(done)g(=)h(1;)313 324 y(else)f(if)h(\(strcmp)d(\(line,)i
-("save"\))f(==)i(0\))352 367 y(write_his)o(tor)o(y)d(\("history_f)o(il)
-o(e"\))o(;)313 411 y(else)i(if)h(\(strcmp)d(\(line,)i("read"\))f(==)i
-(0\))352 455 y(read_hist)o(ory)d(\("history)o(_fi)o(le)o("\);)313
-498 y(else)i(if)h(\(strcmp)d(\(line,)i("list"\))f(==)i(0\))352
-542 y({)391 585 y(register)e(HIST_ENTR)o(Y)f(**the_list;)391
-629 y(register)h(int)h(i;)391 716 y(the_list)f(=)i(history_l)o(ist)d
-(\(\);)391 760 y(if)j(\(the_list)o(\))430 803 y(for)g(\(i)g(=)g(0;)g
-(the_list[)o(i])o(;)e(i++\))470 847 y(printf)g(\("\045d:)h(\045s\\n",)f
-(i)i(+)g(history_ba)o(se,)d(the_list[)o(i]-)o(>li)o(ne)o(\);)352
-890 y(})313 934 y(else)i(if)h(\(strncmp)d(\(line,)h("delete",)g(6\))h
-(==)h(0\))352 978 y({)391 1021 y(int)g(which;)391 1065
+b(with)g(GNU)h(History)866 b(11)430 149 y Fe(t[len)18
+b(-)h(1])g(=)g('\\0';)352 193 y(})313 280 y(if)g(\(!t\))352
+324 y(strcpy)e(\(line,)g("quit"\);)313 411 y(if)i(\(line[0])o(\))352
+455 y({)391 498 y(char)f(*expansion)o(;)391 542 y(int)h(result;)391
+629 y(result)e(=)j(history_e)o(xp)o(and)c(\(line,)h(&expansion)o(\);)
+391 672 y(if)i(\(result\))430 716 y(fprintf)e(\(stderr,)g("\045s\\n",)g
+(expansion)o(\);)391 803 y(if)i(\(result)e(<)i(0)g(||)g(result)e(==)i
+(2\))430 847 y({)470 890 y(free)f(\(expansio)o(n\))o(;)470
+934 y(continue)o(;)430 978 y(})391 1065 y(add_histor)o(y)e
+(\(expansion\))o(;)391 1108 y(strncpy)h(\(line,)g(expansion,)f(sizeof)h
+(\(line\))h(-)h(1\);)391 1152 y(free)f(\(expansion)o(\);)352
+1196 y(})313 1283 y(if)h(\(strcmp)d(\(line,)i("quit"\))f(==)h(0\))352
+1326 y(done)g(=)h(1;)313 1370 y(else)f(if)h(\(strcmp)d(\(line,)i
+("save"\))f(==)i(0\))352 1413 y(write_his)o(tor)o(y)d(\("history_f)o
+(il)o(e"\))o(;)313 1457 y(else)i(if)h(\(strcmp)d(\(line,)i("read"\))f
+(==)i(0\))352 1501 y(read_hist)o(ory)d(\("history)o(_fi)o(le)o("\);)313
+1544 y(else)i(if)h(\(strcmp)d(\(line,)i("list"\))f(==)i(0\))352
+1588 y({)391 1631 y(register)e(HIST_ENTR)o(Y)f(**the_list;)391
+1675 y(register)h(int)h(i;)391 1762 y(the_list)f(=)i(history_l)o(ist)d
+(\(\);)391 1806 y(if)j(\(the_list)o(\))430 1849 y(for)g(\(i)g(=)g(0;)g
+(the_list[)o(i])o(;)e(i++\))470 1893 y(printf)g(\("\045d:)h(\045s\\n",)
+f(i)i(+)g(history_ba)o(se,)d(the_list[)o(i]-)o(>li)o(ne)o(\);)352
+1936 y(})313 1980 y(else)i(if)h(\(strncmp)d(\(line,)h("delete",)g(6\))h
+(==)h(0\))352 2024 y({)391 2067 y(int)g(which;)391 2111
y(if)g(\(\(sscanf)d(\(line)i(+)h(6,)g("\045d",)f(&which\)\))e(==)j(1\))
-430 1108 y({)470 1152 y(HIST_ENT)o(RY)d(*entry)i(=)h(remove_hi)o(sto)o
-(ry)d(\(which\);)470 1196 y(if)i(\(!entry\))509 1239
+430 2154 y({)470 2198 y(HIST_ENT)o(RY)d(*entry)i(=)h(remove_hi)o(sto)o
+(ry)d(\(which\);)470 2242 y(if)i(\(!entry\))509 2285
y(fprintf)f(\(stderr,)f("No)j(such)f(entry)f(\045d\\n",)h(which\);)470
-1283 y(else)509 1326 y({)548 1370 y(free)g(\(entry->li)o(ne)o(\);)548
-1413 y(free)g(\(entry\);)509 1457 y(})430 1501 y(})391
-1544 y(else)430 1588 y({)470 1631 y(fprintf)e(\(stderr,)h("non-numer)o
-(ic)f(arg)i(given)g(to)h(`delete'\\n)o("\))o(;)430 1675
-y(})352 1719 y(})273 1762 y(})195 1806 y(})p eop end
+2329 y(else)509 2372 y({)548 2416 y(free)g(\(entry->li)o(ne)o(\);)548
+2460 y(free)g(\(entry\);)509 2503 y(})430 2547 y(})391
+2590 y(else)430 2634 y({)p eop end
%%Page: 12 15
-TeXDict begin 12 14 bop 1830 -58 a Fq(12)75 149 y Fm(App)r(endix)26
+TeXDict begin 12 14 bop 75 -58 a Fq(Chapter)15 b(2:)k(Programming)14
+b(with)g(GNU)h(History)866 b(12)470 149 y Fe(fprintf)16
+b(\(stderr,)h("non-numer)o(ic)f(arg)i(given)g(to)h(`delete'\\n)o("\))o
+(;)430 193 y(})352 237 y(})273 280 y(})195 324 y(})p
+eop end
+%%Page: 13 16
+TeXDict begin 13 15 bop 1830 -58 a Fq(13)75 149 y Fm(App)r(endix)26
b(A)41 b(GNU)27 b(F)-7 b(ree)26 b(Do)r(cumen)n(tation)j(License)679
251 y Fq(V)l(ersion)15 b(1.3,)f(3)h(No)o(v)o(em)o(b)q(er)g(2008)195
318 y(Cop)o(yrigh)o(t)421 317 y(c)409 318 y Fn(\015)g
(are)i(designated,)f(as)165 2670 y(b)q(eing)i(those)f(of)g(In)o(v)m
(arian)o(t)f(Sections,)h(in)h(the)f(notice)g(that)f(sa)o(ys)h(that)g
(the)g(Do)q(cumen)o(t)g(is)g(released)p eop end
-%%Page: 13 16
-TeXDict begin 13 15 bop 75 -58 a Fq(App)q(endix)16 b(A:)f(GNU)g(F)l
-(ree)g(Do)q(cumen)o(tation)g(License)802 b(13)165 149
+%%Page: 14 17
+TeXDict begin 14 16 bop 75 -58 a Fq(App)q(endix)16 b(A:)f(GNU)g(F)l
+(ree)g(Do)q(cumen)o(tation)g(License)802 b(14)165 149
y(under)15 b(this)e(License.)20 b(If)14 b(a)g(section)f(do)q(es)h(not)g
(\014t)f(the)h(ab)q(o)o(v)o(e)g(de\014nition)g(of)f(Secondary)h(then)g
(it)f(is)165 204 y(not)j(allo)o(w)o(ed)e(to)h(b)q(e)i(designated)f(as)f
(and)h(has)f(no)165 2595 y(e\013ect)d(on)g(the)g(meaning)g(of)g(this)g
(License.)100 2670 y(2.)29 b(VERBA)l(TIM)16 b(COPYING)p
eop end
-%%Page: 14 17
-TeXDict begin 14 16 bop 75 -58 a Fq(App)q(endix)16 b(A:)f(GNU)g(F)l
-(ree)g(Do)q(cumen)o(tation)g(License)802 b(14)165 149
+%%Page: 15 18
+TeXDict begin 15 17 bop 75 -58 a Fq(App)q(endix)16 b(A:)f(GNU)g(F)l
+(ree)g(Do)q(cumen)o(tation)g(License)802 b(15)165 149
y(Y)l(ou)19 b(ma)o(y)g(cop)o(y)f(and)i(distribute)e(the)h(Do)q(cumen)o
(t)g(in)g(an)o(y)g(medium,)g(either)g(commercially)e(or)165
204 y(noncommercially)l(,)k(pro)o(vided)g(that)g(this)g(License,)i(the)
(distinct)h(from)f(that)h(of)g(the)255 2670 y(Do)q(cumen)o(t,)h(and)g
(from)f(those)h(of)f(previous)h(v)o(ersions)f(\(whic)o(h)g(should,)h
(if)g(there)g(w)o(ere)f(an)o(y)l(,)p eop end
-%%Page: 15 18
-TeXDict begin 15 17 bop 75 -58 a Fq(App)q(endix)16 b(A:)f(GNU)g(F)l
-(ree)g(Do)q(cumen)o(tation)g(License)802 b(15)255 149
+%%Page: 16 19
+TeXDict begin 16 18 bop 75 -58 a Fq(App)q(endix)16 b(A:)f(GNU)g(F)l
+(ree)g(Do)q(cumen)o(tation)g(License)802 b(16)255 149
y(b)q(e)16 b(listed)f(in)h(the)g(History)e(section)h(of)g(the)h(Do)q
(cumen)o(t\).)21 b(Y)l(ou)16 b(ma)o(y)f(use)h(the)g(same)f(title)f(as)
255 204 y(a)h(previous)g(v)o(ersion)f(if)h(the)g(original)e(publisher)j
f(ma)o(y)h(at)165 2670 y(y)o(our)i(option)f(designate)h(some)g(or)f
(all)g(of)h(these)h(sections)e(as)h(in)o(v)m(arian)o(t.)22
b(T)l(o)15 b(do)i(this,)e(add)h(their)p eop end
-%%Page: 16 19
-TeXDict begin 16 18 bop 75 -58 a Fq(App)q(endix)16 b(A:)f(GNU)g(F)l
-(ree)g(Do)q(cumen)o(tation)g(License)802 b(16)165 149
+%%Page: 17 20
+TeXDict begin 17 19 bop 75 -58 a Fq(App)q(endix)16 b(A:)f(GNU)g(F)l
+(ree)g(Do)q(cumen)o(tation)g(License)802 b(17)165 149
y(titles)16 b(to)h(the)h(list)f(of)g(In)o(v)m(arian)o(t)g(Sections)h
(in)f(the)h(Mo)q(di\014ed)g(V)l(ersion's)f(license)h(notice.)27
b(These)165 204 y(titles)14 b(m)o(ust)h(b)q(e)g(distinct)g(from)f(an)o
2615 y(do)q(cumen)o(t,)g(and)f(follo)o(w)e(this)i(License)h(in)f(all)g
(other)f(resp)q(ects)i(regarding)f(v)o(erbatim)f(cop)o(ying)g(of)165
2670 y(that)f(do)q(cumen)o(t.)p eop end
-%%Page: 17 20
-TeXDict begin 17 19 bop 75 -58 a Fq(App)q(endix)16 b(A:)f(GNU)g(F)l
-(ree)g(Do)q(cumen)o(tation)g(License)802 b(17)100 149
+%%Page: 18 21
+TeXDict begin 18 20 bop 75 -58 a Fq(App)q(endix)16 b(A:)f(GNU)g(F)l
+(ree)g(Do)q(cumen)o(tation)g(License)802 b(18)100 149
y(7.)29 b(A)o(GGREGA)l(TION)15 b(WITH)h(INDEPENDENT)e(W)o(ORKS)165
221 y(A)g(compilation)e(of)i(the)g(Do)q(cumen)o(t)g(or)f(its)h(deriv)m
(ativ)o(es)f(with)g(other)h(separate)f(and)i(indep)q(enden)o(t)165
(of)g(a)g(cop)o(y)g(of)f(some)h(or)f(all)g(of)h(the)165
2670 y(same)i(material)e(do)q(es)j(not)f(giv)o(e)f(y)o(ou)h(an)o(y)g
(righ)o(ts)f(to)g(use)i(it.)p eop end
-%%Page: 18 21
-TeXDict begin 18 20 bop 75 -58 a Fq(App)q(endix)16 b(A:)f(GNU)g(F)l
-(ree)g(Do)q(cumen)o(tation)g(License)802 b(18)77 149
+%%Page: 19 22
+TeXDict begin 19 21 bop 75 -58 a Fq(App)q(endix)16 b(A:)f(GNU)g(F)l
+(ree)g(Do)q(cumen)o(tation)g(License)802 b(19)77 149
y(10.)29 b(FUTURE)15 b(REVISIONS)j(OF)d(THIS)h(LICENSE)165
217 y(The)21 b(F)l(ree)g(Soft)o(w)o(are)e(F)l(oundation)h(ma)o(y)g
(publish)h(new,)h(revised)f(v)o(ersions)f(of)g(the)h(GNU)g(F)l(ree)165
1948 y(CC-BY-SA)d(on)f(the)g(same)g(site)f(at)h(an)o(y)f(time)h(b)q
(efore)g(August)g(1,)g(2009,)e(pro)o(vided)i(the)g(MMC)f(is)165
2002 y(eligible)g(for)h(relicensing.)p eop end
-%%Page: 19 22
-TeXDict begin 19 21 bop 75 -58 a Fq(App)q(endix)16 b(A:)f(GNU)g(F)l
-(ree)g(Do)q(cumen)o(tation)g(License)802 b(19)75 149
+%%Page: 20 23
+TeXDict begin 20 22 bop 75 -58 a Fq(App)q(endix)16 b(A:)f(GNU)g(F)l
+(ree)g(Do)q(cumen)o(tation)g(License)802 b(20)75 149
y Fo(ADDENDUM:)20 b(Ho)n(w)h(to)h(use)g(this)g(License)g(for)g(y)n(our)
h(do)r(cumen)n(ts)75 229 y Fq(T)l(o)17 b(use)h(this)e(License)i(in)g(a)
f(do)q(cumen)o(t)g(y)o(ou)g(ha)o(v)o(e)g(written,)g(include)g(a)g(cop)o
(suc)o(h)g(as)g(the)f(GNU)75 1166 y(General)15 b(Public)g(License,)g
(to)g(p)q(ermit)g(their)f(use)i(in)f(free)g(soft)o(w)o(are.)p
eop end
-%%Page: 20 23
-TeXDict begin 20 22 bop 75 -58 a Fq(App)q(endix)16 b(B:)f(Concept)h
-(Index)1197 b(20)75 50 y Fm(App)r(endix)26 b(B)41 b(Concept)27
+%%Page: 21 24
+TeXDict begin 21 23 bop 75 -58 a Fq(App)q(endix)16 b(B:)f(Concept)h
+(Index)1197 b(21)75 50 y Fm(App)r(endix)26 b(B)41 b(Concept)27
b(Index)73 217 y Fo(A)75 275 y Fb(anc)o(hored)14 b(searc)o(h)6
b Fa(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)13
(hing)8 b Fa(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)14
b Fb(7)p eop end
-%%Page: 21 24
-TeXDict begin 21 23 bop 75 -58 a Fq(App)q(endix)16 b(C:)f(F)l(unction)g
-(and)g(V)l(ariable)g(Index)918 b(21)75 50 y Fm(App)r(endix)26
+%%Page: 22 25
+TeXDict begin 22 24 bop 75 -58 a Fq(App)q(endix)16 b(C:)f(F)l(unction)g
+(and)g(V)l(ariable)g(Index)918 b(22)75 50 y Fm(App)r(endix)26
b(C)41 b(F)-7 b(unction)27 b(and)g(V)-7 b(ariable)28
b(Index)75 200 y Fe(history_ba)o(se)t Fa(:)s(:)6 b(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
b Fb(9)75 418 y Fe(history_ma)o(x_)o(ent)o(ri)o(es)t
Fa(:)s(:)6 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)11 b Fb(9)75
-461 y Fe(history_no)o(_e)o(xpa)o(nd)o(_ch)o(ars)c Fa(:)s(:)f(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)14
-b Fb(9)75 505 y Fe(history_qu)o(ot)o(es_)o(in)o(hib)o(it_)o(ex)o(pan)o
-(si)o(on)5 b Fa(:)s(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)12
-b Fb(9)75 549 y Fe(history_se)o(ar)o(ch_)o(de)o(lim)o(ite)o(r_)o(cha)o
-(rs)7 b Fa(:)s(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)14
-b Fb(9)75 592 y Fe(history_su)o(bs)o(t_c)o(ha)o(r)6 b
-Fa(:)s(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)12 b Fb(9)75
-636 y Fe(history_wo)o(rd)o(_de)o(li)o(mit)o(ers)7 b Fa(:)s(:)f(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-14 b Fb(9)75 679 y Fe(history_wr)o(it)o(e_t)o(im)o(est)o(amp)o(s)6
-b Fa(:)t(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)13 b Fb(9)p eop end
+461 y Fe(history_no)o(_e)o(xpa)o(nd)o(_ch)o(ars)6 b Fa(:)s(:)g(:)g(:)g
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)14
+b Fb(10)75 505 y Fe(history_qu)o(ot)o(es_)o(in)o(hib)o(it_)o(ex)o(pan)o
+(si)o(on)t Fa(:)s(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)11
+b Fb(10)75 549 y Fe(history_qu)o(ot)o(ing)o(_s)o(tat)o(e)6
+b Fa(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
+h(:)f(:)g(:)g(:)g(:)g(:)16 b Fb(10)75 592 y Fe(history_se)o(ar)o(ch_)o
+(de)o(lim)o(ite)o(r_)o(cha)o(rs)7 b Fa(:)s(:)f(:)g(:)g(:)g(:)g(:)h(:)f
+(:)g(:)g(:)g(:)g(:)g(:)14 b Fb(9)75 636 y Fe(history_su)o(bs)o(t_c)o
+(ha)o(r)6 b Fa(:)s(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)12
+b Fb(9)75 679 y Fe(history_wo)o(rd)o(_de)o(li)o(mit)o(ers)7
+b Fa(:)s(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
+g(:)g(:)g(:)g(:)h(:)14 b Fb(9)75 723 y Fe(history_wr)o(it)o(e_t)o(im)o
+(est)o(amp)o(s)6 b Fa(:)t(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
+(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)13 b Fb(9)p eop end
%%Trailer
userdict /end-hook known{end-hook}if
a programming tool that provides a consistent user interface for
recalling lines of previously typed input.
-Copyright @copyright{} 1988--2023 Free Software Foundation, Inc.
+Copyright @copyright{} 1988--2024 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
\entry{history_comment_char}{9}{\code {history_comment_char}}
\entry{history_word_delimiters}{9}{\code {history_word_delimiters}}
\entry{history_search_delimiter_chars}{9}{\code {history_search_delimiter_chars}}
-\entry{history_no_expand_chars}{9}{\code {history_no_expand_chars}}
-\entry{history_quotes_inhibit_expansion}{9}{\code {history_quotes_inhibit_expansion}}
+\entry{history_no_expand_chars}{10}{\code {history_no_expand_chars}}
+\entry{history_quotes_inhibit_expansion}{10}{\code {history_quotes_inhibit_expansion}}
+\entry{history_quoting_state}{10}{\code {history_quoting_state}}
\entry{history_inhibit_expansion_function}{10}{\code {history_inhibit_expansion_function}}
-\entry {\code {history_base}}{9}
-\entry {\code {history_comment_char}}{9}
-\entry {\code {history_expansion_char}}{9}
-\entry {\code {history_inhibit_expansion_function}}{10}
-\entry {\code {history_length}}{9}
-\entry {\code {history_max_entries}}{9}
-\entry {\code {history_no_expand_chars}}{9}
-\entry {\code {history_quotes_inhibit_expansion}}{9}
-\entry {\code {history_search_delimiter_chars}}{9}
-\entry {\code {history_subst_char}}{9}
-\entry {\code {history_word_delimiters}}{9}
-\entry {\code {history_write_timestamps}}{9}
+\entry{\code {history_base}}{9}
+\entry{\code {history_comment_char}}{9}
+\entry{\code {history_expansion_char}}{9}
+\entry{\code {history_inhibit_expansion_function}}{10}
+\entry{\code {history_length}}{9}
+\entry{\code {history_max_entries}}{9}
+\entry{\code {history_no_expand_chars}}{10}
+\entry{\code {history_quotes_inhibit_expansion}}{10}
+\entry{\code {history_quoting_state}}{10}
+\entry{\code {history_search_delimiter_chars}}{9}
+\entry{\code {history_subst_char}}{9}
+\entry{\code {history_word_delimiters}}{9}
+\entry{\code {history_write_timestamps}}{9}
@ignore
This file documents the user interface to the GNU History library.
-Copyright (C) 1988-2023 Free Software Foundation, Inc.
+Copyright (C) 1988-2024 Free Software Foundation, Inc.
Authored by Brian Fox and Chet Ramey.
Permission is granted to make and distribute verbatim copies of this manual
This chapter describes how to interface programs that you write
with the @sc{gnu} History Library.
It should be considered a technical guide.
-For information on the interactive use of @sc{gnu} History, @pxref{Using
-History Interactively}.
+For information on the interactive use of @sc{gnu} History,
+@pxref{Using History Interactively}.
@menu
* Introduction to History:: What is the GNU History library for?
@node Introduction to History
@section Introduction to History
-Many programs read input from the user a line at a time. The @sc{gnu}
-History library is able to keep track of those lines, associate arbitrary
-data with each line, and utilize information from previous lines in
-composing new ones.
-
-A programmer using the History library has available functions
-for remembering lines on a history list, associating arbitrary data
-with a line, removing lines from the list, searching through the list
-for a line containing an arbitrary text string, and referencing any line
-in the list directly. In addition, a history @dfn{expansion} function
+Many programs read input from the user a line at a time.
+The @sc{gnu} History library is able to keep track of those lines,
+associate arbitrary data with each line, and utilize information from
+previous lines when composing new ones.
+
+A programmer using the History library can use functions
+to save commands on a history list,
+associate arbitrary data with history list entries,
+remove entries from the list,
+search through the list for a line containing an arbitrary text string,
+reference any entry in the list directly,
+and read and write the history list from and to a file.
+In addition, a history @dfn{expansion} function
is available which provides for a consistent user interface across
different programs.
-The user using programs written with the History library has the
+Someone using programs written with the History library has the
benefit of a consistent user interface with a set of well-known
commands for manipulating the text of previous lines and using that text
-in new commands. The basic history manipulation commands are similar to
+in new commands.
+The basic history manipulation commands are similar to
the history substitution provided by @code{csh}.
The programmer can also use the Readline library, which
Before declaring any functions using any functionality the History
library provides in other code, an application writer should include
the file @code{<readline/history.h>} in any file that uses the
-History library's features. It supplies extern declarations for all
-of the library's public functions and variables, and declares all of
-the public data structures.
+History library's features.
+It supplies declarations for all of the library's
+public functions and variables,
+and declares all of the public data structures.
@node History Storage
@section History Storage
-The history list is an array of history entries. A history entry is
-declared as follows:
+The history list is an array of history entries.
+A history entry is declared as follows:
@example
typedef void *histdata_t;
@end example
If the flags member includes @code{HS_STIFLED}, the history has been
-stifled.
+stifled (limited to a maximum number of entries).
@node History Functions
@section History Functions
functions in your program.
@deftypefun void using_history (void)
-Begin a session in which the history functions might be used. This
-initializes the interactive variables.
+Begin a session that will use the history functions.
+This initializes the interactive variables.
@end deftypefun
@deftypefun {HISTORY_STATE *} history_get_history_state (void)
parameters managing the list itself.
@deftypefun void add_history (const char *string)
-Place @var{string} at the end of the history list. The associated data
-field (if any) is set to @code{NULL}.
+Add @var{string} to the end of the history list, and
+set the associated data field (if any) to @code{NULL}.
If the maximum number of history entries has been set using
-@code{stifle_history()}, and the new number of history entries would exceed
-that maximum, the oldest history entry is removed.
+@code{stifle_history()}, and the new number of history entries
+would exceed that maximum, this removes the oldest history entry.
@end deftypefun
@deftypefun void add_history_time (const char *string)
@end deftypefun
@deftypefun {HIST_ENTRY *} remove_history (int which)
-Remove history entry at offset @var{which} from the history. The
-removed element is returned so you can free the line, data,
+Remove the history entry at offset @var{which} from the history list.
+This returns the removed element so you can free the line, data,
and containing structure.
+Since the data is private to your application, the History library
+doesn't know how to free it, if necessary.
@end deftypefun
@deftypefun {histdata_t} free_history_entry (HIST_ENTRY *histent)
Free the history entry @var{histent} and any history library private
-data associated with it. Returns the application-specific data
+data associated with it.
+Returns the application-specific data
so the caller can dispose of it.
@end deftypefun
@deftypefun {HIST_ENTRY *} replace_history_entry (int which, const char *line, histdata_t data)
Make the history entry at offset @var{which} have @var{line} and @var{data}.
This returns the old entry so the caller can dispose of any
-application-specific data. In the case
-of an invalid @var{which}, a @code{NULL} pointer is returned.
+application-specific data.
+In the case of an invalid @var{which}, this returns @code{NULL}.
@end deftypefun
@deftypefun void clear_history (void)
@end deftypefun
@deftypefun int unstifle_history (void)
-Stop stifling the history. This returns the previously-set
-maximum number of history entries (as set by @code{stifle_history()}).
-The value is positive if the history was
-stifled, negative if it wasn't.
+Stop stifling the history.
+This returns the previously-set maximum number of history
+entries (as set by @code{stifle_history()}).
+The value is positive if the history was stifled, negative if it wasn't.
@end deftypefun
@deftypefun int history_is_stifled (void)
@deftypefun {HIST_ENTRY **} history_list (void)
Return a @code{NULL} terminated array of @code{HIST_ENTRY *} which is the
-current input history. Element 0 of this list is the beginning of time.
-If there is no history, return @code{NULL}.
+current input history.
+Element 0 of this list is the beginning of time.
+Return @code{NULL} if there is no history.
@end deftypefun
@deftypefun int where_history (void)
-Returns the offset of the current history element.
+Return the offset of the current history entry.
@end deftypefun
@deftypefun {HIST_ENTRY *} current_history (void)
Return the history entry at the current position, as determined by
-@code{where_history()}. If there is no entry there, return a @code{NULL}
-pointer.
+@code{where_history()}.
+If there is no entry there, return @code{NULL}.
@end deftypefun
@deftypefun {HIST_ENTRY *} history_get (int offset)
values of @var{offset} starts at @code{history_base} and ends at
@var{history_length} - 1 (@pxref{History Variables}).
If there is no entry there, or if @var{offset} is outside the valid
-range, return a @code{NULL} pointer.
+range, return @code{NULL}.
@end deftypefun
@deftypefun time_t history_get_time (HIST_ENTRY *entry)
@deftypefun {HIST_ENTRY *} previous_history (void)
Back up the current history offset to the previous history entry, and
-return a pointer to that entry. If there is no previous entry, return
-a @code{NULL} pointer.
+return a pointer to that entry.
+If there is no previous entry, return @code{NULL}.
@end deftypefun
@deftypefun {HIST_ENTRY *} next_history (void)
increment the current history offset.
If the possibly-incremented history offset refers to a valid history
entry, return a pointer to that entry;
-otherwise, return a @code{BNULL} pointer.
+otherwise, return @code{NULL}.
@end deftypefun
@node Searching the History List
@subsection Searching the History List
@cindex History Searching
-These functions allow searching of the history list for entries containing
-a specific string. Searching may be performed both forward and backward
-from the current history position. The search may be @dfn{anchored},
-meaning that the string must match at the beginning of the history entry.
+These functions search the history list for entries containing
+a specific string.
+Searching may be performed both forward and backward
+from the current history position.
+The search may be @dfn{anchored},
+meaning that the string must match at the beginning of a history entry.
@cindex anchored search
@deftypefun int history_search (const char *string, int direction)
Search the history for @var{string}, starting at the current history offset.
If @var{direction} is less than 0, then the search is through
previous entries, otherwise through subsequent entries.
-If @var{string} is found, then
-the current history index is set to that history entry, and the value
-returned is the offset in the line of the entry where
-@var{string} was found. Otherwise, nothing is changed, and a -1 is
-returned.
+If @var{string} is found, then the current history index is set to
+that history entry, and @code{history_search}
+returns the offset in the line of the entry where
+@var{string} was found.
+Otherwise, nothing is changed, and this returns -1.
@end deftypefun
@deftypefun int history_search_prefix (const char *string, int direction)
Search the history for @var{string}, starting at the current history
-offset. The search is anchored: matching lines must begin with
-@var{string}. If @var{direction} is less than 0, then the search is
+offset.
+The search is anchored: matching history entries must begin with @var{string}.
+If @var{direction} is less than 0, then the search is
through previous entries, otherwise through subsequent entries.
-If @var{string} is found, then the
-current history index is set to that entry, and the return value is 0.
-Otherwise, nothing is changed, and a -1 is returned.
+If @var{string} is found, then the current history index is set to
+that entry, and the return value is 0.
+Otherwise, nothing is changed, and this returns -1.
@end deftypefun
@deftypefun int history_search_pos (const char *string, int direction, int pos)
Search for @var{string} in the history list, starting at @var{pos}, an
-absolute index into the list. If @var{direction} is negative, the search
-proceeds backward from @var{pos}, otherwise forward. Returns the absolute
-index of the history element where @var{string} was found, or -1 otherwise.
+absolute index into the list.
+If @var{direction} is negative, the search
+proceeds backward from @var{pos}, otherwise forward.
+Returns the index in the history list
+of the history element where @var{string} was
+found, or -1 otherwise.
@end deftypefun
@node Managing the History File
This section documents the functions for managing a history file.
@deftypefun int read_history (const char *filename)
-Add the contents of @var{filename} to the history list, a line at a time.
-If @var{filename} is @code{NULL}, then read from @file{~/.history}.
+Add the contents of @var{filename} to the history list, one entry
+at a time.
+If @var{filename} is @code{NULL}, this reads from @file{~/.history},
+if it exists.
+This attempts to determine whether the history file includes timestamp
+information, and assigns timestamps to the history entries it reads
+if so.
Returns 0 if successful, or @code{errno} if not.
@end deftypefun
@deftypefun int read_history_range (const char *filename, int from, int to)
Read a range of lines from @var{filename}, adding them to the history list.
Start reading at line @var{from} and end at @var{to}.
-If @var{from} is zero, start at the beginning. If @var{to} is less than
-@var{from}, then read until the end of the file. If @var{filename} is
-@code{NULL}, then read from @file{~/.history}. Returns 0 if successful,
-or @code{errno} if not.
+If @var{from} is zero, start at the beginning.
+If @var{to} is less than @var{from}, this reads until the end of the file.
+This attempts to determine whether the history file includes timestamp
+information, and assigns timestamps to the history entries it reads
+if so.
+If @var{filename} is @code{NULL}, this reads from @file{~/.history},
+if it exists.
+Returns 0 if successful, or @code{errno} if not.
@end deftypefun
@deftypefun int write_history (const char *filename)
Write the current history to @var{filename}, overwriting @var{filename}
if necessary.
+This writes timestamp information if the
+@code{history_write_timestamps} variable is set to a non-zero value.
If @var{filename} is @code{NULL}, then write the history list to
@file{~/.history}.
Returns 0 on success, or @code{errno} on a read or write error.
@deftypefun int append_history (int nelements, const char *filename)
Append the last @var{nelements} of the history list to @var{filename}.
+This writes timestamp information if the
+@code{history_write_timestamps} variable is set to a non-zero value.
If @var{filename} is @code{NULL}, then append to @file{~/.history}.
Returns 0 on success, or @code{errno} on a read or write error.
@end deftypefun
@deftypefun int history_truncate_file (const char *filename, int nlines)
Truncate the history file @var{filename}, leaving only the last
@var{nlines} lines.
-If @var{filename} is @code{NULL}, then @file{~/.history} is truncated.
+If @var{filename} is @code{NULL}, this truncates @file{~/.history}.
Returns 0 on success, or @code{errno} on failure.
@end deftypefun
@deftypefun int history_expand (const char *string, char **output)
Expand @var{string}, placing the result into @var{output}, a pointer
-to a string (@pxref{History Interaction}). Returns:
+to a string (@pxref{History Interaction}).
+Returns:
@table @code
@item 0
If no expansions took place (or, if the only change in
as with the @code{:p} modifier (@pxref{Modifiers}).
@end table
-If an error occurred in expansion, then @var{output} contains a descriptive
-error message.
+If an error occurred during expansion,
+then @var{output} contains a descriptive error message.
@end deftypefun
@deftypefun {char *} get_history_event (const char *string, int *cindex, int qchar)
Returns the text of the history event beginning at @var{string} +
-@var{*cindex}. @var{*cindex} is modified to point to after the event
-specifier. At function entry, @var{cindex} points to the index into
-@var{string} where the history event specification begins. @var{qchar}
+@var{*cindex}.
+Modifies @var{*cindex} to point to after the event specifier.
+At function entry, @var{cindex} points to the index into @var{string}
+where the history event specification begins.
+@var{qchar}
is a character that is allowed to end the event specification in addition
to the ``normal'' terminating characters.
@end deftypefun
@deftypefun {char **} history_tokenize (const char *string)
Return an array of tokens parsed out of @var{string}, much as the
-shell might. The tokens are split on the characters in the
+shell might.
+The tokens are split on the characters in the
@var{history_word_delimiters} variable,
and shell quoting conventions are obeyed as described below.
@end deftypefun
@deftypefun {char *} history_arg_extract (int first, int last, const char *string)
Extract a string segment consisting of the @var{first} through @var{last}
-arguments present in @var{string}. Arguments are split using
-@code{history_tokenize}.
+arguments present in @var{string}.
+This splits @var{string} into arguments using @code{history_tokenize}.
@end deftypefun
@node History Variables
@end deftypevar
@deftypevar int history_max_entries
-The maximum number of history entries. This must be changed using
-@code{stifle_history()}.
+The maximum number of history entries.
+This must be changed using @code{stifle_history()}.
@end deftypevar
@deftypevar int history_write_timestamps
If non-zero, timestamps are written to the history file, so they can be
-preserved between sessions. The default value is 0, meaning that
-timestamps are not saved.
+preserved between sessions.
+The default value is 0, meaning that timestamps are not saved.
The current timestamp format uses the value of @var{history_comment_char}
-to delimit timestamp entries in the history file. If that variable does
-not have a value (the default), timestamps will not be written.
+to delimit timestamp entries in the history file.
+If that variable does not have a value (the default), this will not
+write timestamps.
@end deftypevar
@deftypevar char history_expansion_char
-The character that introduces a history event. The default is @samp{!}.
+The character that introduces a history event.
+The default is @samp{!}.
Setting this to 0 inhibits history expansion.
@end deftypevar
@deftypevar char history_subst_char
The character that invokes word substitution if found at the start of
-a line. The default is @samp{^}.
+a line.
+The default is @samp{^}.
@end deftypevar
@deftypevar char history_comment_char
-During tokenization, if this character is seen as the first character
+During tokenization, if this character appears as the first character
of a word, then it and all subsequent characters up to a newline are
ignored, suppressing history expansion for the remainder of the line.
This is disabled by default.
@deftypevar {char *} history_search_delimiter_chars
The list of additional characters which can delimit a history search
string, in addition to space, TAB, @samp{:} and @samp{?} in the case of
-a substring search. The default is empty.
+a substring search.
+The default is empty.
@end deftypevar
@deftypevar {char *} history_no_expand_chars
The list of characters which inhibit history expansion if found immediately
-following @var{history_expansion_char}. The default is space, tab, newline,
-carriage return, and @samp{=}.
+following @var{history_expansion_char}.
+The default is space, tab, newline, carriage return, and @samp{=}.
@end deftypevar
@deftypevar int history_quotes_inhibit_expansion
@deftypevar int history_quoting_state
An application may set this variable to indicate that the current line
-being expanded is subject to existing quoting. If set to @samp{'}, the
+being expanded is subject to existing quoting.
+If set to @samp{'}, the
history expansion function will assume that the line is single-quoted and
-inhibit expansion until it reads an unquoted closing single quote; if set
-to @samp{"}, history expansion will assume the line is double quoted until
-it reads an unquoted closing double quote. If set to zero, the default,
+inhibit expansion until it reads an unquoted closing single quote;
+if set to @samp{"}, history expansion will assume the line is
+double quoted until it reads an unquoted closing double quote.
+If set to 0, the default,
the history expansion function will assume the line is not quoted and
treat quote characters within the line as described above.
This is only effective if @var{history_quotes_inhibit_expansion} is set.
+This is intended for use by applications like Bash which allow
+quoted strings to span multiple lines.
@end deftypevar
@deftypevar {rl_linebuf_func_t *} history_inhibit_expansion_function
--- /dev/null
+_\bR_\bE_\bA_\bD_\bL_\bI_\bN_\bE(3) Library Functions Manual _\bR_\bE_\bA_\bD_\bL_\bI_\bN_\bE(3)
+
+N\bNA\bAM\bME\bE
+ readline - get a line from a user with editing
+
+S\bSY\bYN\bNO\bOP\bPS\bSI\bIS\bS
+ #\b#i\bin\bnc\bcl\blu\bud\bde\be <\b<s\bst\btd\bdi\bio\bo.\b.h\bh>\b>
+ #\b#i\bin\bnc\bcl\blu\bud\bde\be <\b<r\bre\bea\bad\bdl\bli\bin\bne\be/\b/r\bre\bea\bad\bdl\bli\bin\bne\be.\b.h\bh>\b>
+ #\b#i\bin\bnc\bcl\blu\bud\bde\be <\b<r\bre\bea\bad\bdl\bli\bin\bne\be/\b/h\bhi\bis\bst\bto\bor\bry\by.\b.h\bh>\b>
+
+ _\bc_\bh_\ba_\br _\b*
+ r\bre\bea\bad\bdl\bli\bin\bne\be (_\bc_\bo_\bn_\bs_\bt _\bc_\bh_\ba_\br _\b*_\bp_\br_\bo_\bm_\bp_\bt);
+
+C\bCO\bOP\bPY\bYR\bRI\bIG\bGH\bHT\bT
+ Readline is Copyright (C) 1989-2024 Free Software Foundation, Inc.
+
+D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
+ r\bre\bea\bad\bdl\bli\bin\bne\be will read a line from the terminal and return it, using p\bpr\bro\bom\bmp\bpt\bt
+ as a prompt. If p\bpr\bro\bom\bmp\bpt\bt is N\bNU\bUL\bLL\bL or the empty string, r\bre\bea\bad\bdl\bli\bin\bne\be does not
+ issue a prompt. The line returned is allocated with _\bm_\ba_\bl_\bl_\bo_\bc(3); the
+ caller must free it when finished. The line returned has the final
+ newline removed, so only the text of the line remains. Since it's pos-
+ sible to enter characters into the line while quoting them to disable
+ any r\bre\bea\bad\bdl\bli\bin\bne\be editing function they might normally have, this line may
+ include embedded newlines and other special characters.
+
+ r\bre\bea\bad\bdl\bli\bin\bne\be offers editing capabilities while the user is entering the
+ line. By default, the line editing commands are similar to those of
+ emacs. A vi-style line editing interface is also available.
+
+ This manual page describes only the most basic use of r\bre\bea\bad\bdl\bli\bin\bne\be. Much
+ more functionality is available; see _\bT_\bh_\be _\bG_\bN_\bU _\bR_\be_\ba_\bd_\bl_\bi_\bn_\be _\bL_\bi_\bb_\br_\ba_\br_\by and _\bT_\bh_\be
+ _\bG_\bN_\bU _\bH_\bi_\bs_\bt_\bo_\br_\by _\bL_\bi_\bb_\br_\ba_\br_\by for additional information.
+
+R\bRE\bET\bTU\bUR\bRN\bN V\bVA\bAL\bLU\bUE\bE
+ r\bre\bea\bad\bdl\bli\bin\bne\be returns the text of the line read. A blank line returns the
+ empty string. If E\bEO\bOF\bF is encountered while reading a line, and the line
+ is empty, r\bre\bea\bad\bdl\bli\bin\bne\be returns N\bNU\bUL\bLL\bL. If an E\bEO\bOF\bF is read with a non-empty
+ line, it is treated as a newline.
+
+N\bNO\bOT\bTA\bAT\bTI\bIO\bON\bN
+ This section uses an emacs-style notation to denote keystrokes. Con-
+ trol keys are denoted by C-_\bk_\be_\by, e.g., C-n means Control-N. Similarly,
+ _\bm_\be_\bt_\ba keys are denoted by M-_\bk_\be_\by, so M-x means Meta-X.
+
+ On keyboards without a _\bM_\be_\bt_\ba key, M-_\bx means ESC _\bx, i.e., press the Es-
+ cape key then the _\bx key. This makes ESC the _\bm_\be_\bt_\ba _\bp_\br_\be_\bf_\bi_\bx. The combina-
+ tion M-C-_\bx means ESC-Control-_\bx, or press the Escape key then hold the
+ Control key while pressing the _\bx key.
+
+ On some keyboards, the Meta key modifier produces meta characters with
+ the eighth bit (0200) set (you can use the e\ben\bna\bab\bbl\ble\be-\b-m\bme\bet\bta\ba-\b-k\bke\bey\by variable to
+ control whether or not it does this, if the keyboard allows it). On
+ many others, the terminal or terminal emulator converts the metafied
+ key to a key sequence beginning with ESC as described in the preceding
+ paragraph.
+
+ If your _\bM_\be_\bt_\ba key produces a key sequence with the ESC meta prefix, you
+ can make M-_\bk_\be_\by key bindings you specify (see R\bRe\bea\bad\bdl\bli\bin\bne\be K\bKe\bey\by B\bBi\bin\bnd\bdi\bin\bng\bgs\bs be-
+ low) do the same thing by setting the f\bfo\bor\brc\bce\be-\b-m\bme\bet\bta\ba-\b-p\bpr\bre\bef\bfi\bix\bx variable.
+
+ Readline commands may be given numeric _\ba_\br_\bg_\bu_\bm_\be_\bn_\bt_\bs, which normally act as
+ a repeat count. Sometimes, however, it is the sign of the argument
+ that is significant. Passing a negative argument to a command that
+ acts in the forward direction (e.g., k\bki\bil\bll\bl-\b-l\bli\bin\bne\be) makes that command act
+ in a backward direction. Commands whose behavior with arguments devi-
+ ates from this are noted below.
+
+ When a command is described as _\bk_\bi_\bl_\bl_\bi_\bn_\bg text, the text deleted is saved
+ for possible future retrieval (_\by_\ba_\bn_\bk_\bi_\bn_\bg). The killed text is saved in a
+ _\bk_\bi_\bl_\bl _\br_\bi_\bn_\bg. Consecutive kills accumulate the deleted text into one
+ unit, which can be yanked all at once. Commands which do not kill text
+ separate the chunks of text on the kill ring.
+
+I\bIN\bNI\bIT\bTI\bIA\bAL\bLI\bIZ\bZA\bAT\bTI\bIO\bON\bN F\bFI\bIL\bLE\bE
+ Readline is customized by putting commands in an initialization file
+ (the _\bi_\bn_\bp_\bu_\bt_\br_\bc file). The name of this file is taken from the value of
+ the I\bIN\bNP\bPU\bUT\bTR\bRC\bC environment variable. If that variable is unset, the de-
+ fault is _\b~_\b/_\b._\bi_\bn_\bp_\bu_\bt_\br_\bc. If that file does not exist or cannot be read,
+ readline looks for _\b/_\be_\bt_\bc_\b/_\bi_\bn_\bp_\bu_\bt_\br_\bc. When a program which uses the read-
+ line library starts up, r\bre\bea\bad\bdl\bli\bin\bne\be reads the initialization file and sets
+ the key bindings and variables found there, before reading any user in-
+ put.
+
+ There are only a few basic constructs allowed in the inputrc file.
+ Blank lines are ignored. Lines beginning with a #\b# are comments. Lines
+ beginning with a $\b$ indicate conditional constructs. Other lines denote
+ key bindings and variable settings.
+
+ The default key-bindings in this document may be changed using key
+ binding commands in the _\bi_\bn_\bp_\bu_\bt_\br_\bc file. Programs that use this library
+ may add their own commands and bindings.
+
+ For example, placing
+
+ M-Control-u: universal-argument
+ or
+ C-Meta-u: universal-argument
+
+ into the _\bi_\bn_\bp_\bu_\bt_\br_\bc would make M-C-u execute the readline command _\bu_\bn_\bi_\bv_\be_\br_\b-
+ _\bs_\ba_\bl_\b-_\ba_\br_\bg_\bu_\bm_\be_\bn_\bt.
+
+ Key bindings may contain the following symbolic character names: _\bD_\bE_\bL,
+ _\bE_\bS_\bC, _\bE_\bS_\bC_\bA_\bP_\bE, _\bL_\bF_\bD, _\bN_\bE_\bW_\bL_\bI_\bN_\bE, _\bR_\bE_\bT, _\bR_\bE_\bT_\bU_\bR_\bN, _\bR_\bU_\bB_\bO_\bU_\bT, _\bS_\bP_\bA_\bC_\bE, _\bS_\bP_\bC, and _\bT_\bA_\bB.
+
+ In addition to command names, readline allows keys to be bound to a
+ string that is inserted when the key is pressed (a _\bm_\ba_\bc_\br_\bo). The differ-
+ ence between a macro and a command is that a macro is enclosed in sin-
+ gle or double quotes.
+
+ K\bKe\bey\by B\bBi\bin\bnd\bdi\bin\bng\bgs\bs
+ The syntax for controlling key bindings in the _\bi_\bn_\bp_\bu_\bt_\br_\bc file is simple.
+ All that is required is the name of the command or the text of a macro
+ and a key sequence to which it should be bound. The key sequence may
+ be specified in one of two ways: as a symbolic key name, possibly with
+ _\bM_\be_\bt_\ba_\b- or _\bC_\bo_\bn_\bt_\br_\bo_\bl_\b- prefixes, or as a key sequence composed of one or
+ more characters enclosed in double quotes. The key sequence and name
+ are separated by a colon. There can be no whitespace between the name
+ and the colon.
+
+ When using the form k\bke\bey\byn\bna\bam\bme\be:_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b-_\bn_\ba_\bm_\be or _\bm_\ba_\bc_\br_\bo, _\bk_\be_\by_\bn_\ba_\bm_\be is the name
+ of a key spelled out in English. For example:
+
+ Control-u: universal-argument
+ Meta-Rubout: backward-kill-word
+ Control-o: "> output"
+
+ In the above example, _\bC_\b-_\bu is bound to the function u\bun\bni\biv\bve\ber\brs\bsa\bal\bl-\b-a\bar\brg\bgu\bum\bme\ben\bnt\bt,
+ _\bM_\b-_\bD_\bE_\bL is bound to the function b\bba\bac\bck\bkw\bwa\bar\brd\bd-\b-k\bki\bil\bll\bl-\b-w\bwo\bor\brd\bd, and _\bC_\b-_\bo is bound to
+ run the macro expressed on the right hand side (that is, to insert the
+ text "> output" into the line).
+
+ In the second form, "\b"k\bke\bey\bys\bse\beq\bq"\b":_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b-_\bn_\ba_\bm_\be or _\bm_\ba_\bc_\br_\bo, k\bke\bey\bys\bse\beq\bq differs
+ from k\bke\bey\byn\bna\bam\bme\be above in that strings denoting an entire key sequence may
+ be specified by placing the sequence within double quotes. Some GNU
+ Emacs style key escapes can be used, as in the following example, but
+ none of the symbolic character names are recognized.
+
+ "\C-u": universal-argument
+ "\C-x\C-r": re-read-init-file
+ "\e[11~": "Function Key 1"
+
+ In this example, _\bC_\b-_\bu is again bound to the function u\bun\bni\biv\bve\ber\brs\bsa\bal\bl-\b-a\bar\brg\bgu\bum\bme\ben\bnt\bt.
+ _\bC_\b-_\bx _\bC_\b-_\br is bound to the function r\bre\be-\b-r\bre\bea\bad\bd-\b-i\bin\bni\bit\bt-\b-f\bfi\bil\ble\be, and _\bE_\bS_\bC _\b[ _\b1 _\b1 _\b~ is
+ bound to insert the text "Function Key 1".
+
+ The full set of GNU Emacs style escape sequences available when speci-
+ fying key sequences is
+ \\b\C\bC-\b- A control prefix.
+ \\b\M\bM-\b- Adding the meta prefix or converting the following char-
+ acter to a meta character, as described below under
+ f\bfo\bor\brc\bce\be-\b-m\bme\bet\bta\ba-\b-p\bpr\bre\bef\bfi\bix\bx.
+ \\b\e\be An escape character.
+ \\b\\\b\ Backslash.
+ \\b\"\b" Literal ", a double quote.
+ \\b\'\b' Literal ', a single quote.
+
+ In addition to the GNU Emacs style escape sequences, a second set of
+ backslash escapes is available:
+ \\b\a\ba alert (bell)
+ \\b\b\bb backspace
+ \\b\d\bd delete
+ \\b\f\bf form feed
+ \\b\n\bn newline
+ \\b\r\br carriage return
+ \\b\t\bt horizontal tab
+ \\b\v\bv vertical tab
+ \\b\_\bn_\bn_\bn The eight-bit character whose value is the octal value
+ _\bn_\bn_\bn (one to three digits).
+ \\b\x\bx_\bH_\bH The eight-bit character whose value is the hexadecimal
+ value _\bH_\bH (one or two hex digits).
+
+ When entering the text of a macro, single or double quotes must be used
+ to indicate a macro definition. Unquoted text is assumed to be a func-
+ tion name. Tthe backslash escapes described above are expanded in the
+ macro body. Backslash will quote any other character in the macro
+ text, including " and '.
+
+ B\bBa\bas\bsh\bh will display or modify the current readline key bindings with the
+ b\bbi\bin\bnd\bd builtin command. The -\b-o\bo e\bem\bma\bac\bcs\bs or -\b-o\bo v\bvi\bi options to the s\bse\bet\bt builtin
+ will change the editing mode during interactive use. Other programs
+ using this library provide similar mechanisms. A user may always edit
+ the _\bi_\bn_\bp_\bu_\bt_\br_\bc file and have readline re-read it if a program does not
+ provide any other means to incorporate new bindings.
+
+ V\bVa\bar\bri\bia\bab\bbl\ble\bes\bs
+ Readline has variables that can be used to further customize its behav-
+ ior. A variable may be set in the _\bi_\bn_\bp_\bu_\bt_\br_\bc file with a statement of the
+ form
+
+ s\bse\bet\bt _\bv_\ba_\br_\bi_\ba_\bb_\bl_\be_\b-_\bn_\ba_\bm_\be _\bv_\ba_\bl_\bu_\be
+
+ Except where noted, readline variables can take the values O\bOn\bn or O\bOf\bff\bf
+ (without regard to case). Unrecognized variable names are ignored.
+ When readline reads a variable value, empty or null values, "on" (case-
+ insensitive), and "1" are equivalent to O\bOn\bn. All other values are
+ equivalent to O\bOf\bff\bf.
+
+ The variables and their default values are:
+
+ a\bac\bct\bti\biv\bve\be-\b-r\bre\beg\bgi\bio\bon\bn-\b-s\bst\bta\bar\brt\bt-\b-c\bco\bol\blo\bor\br
+ A string variable that controls the text color and background
+ when displaying the text in the active region (see the descrip-
+ tion of e\ben\bna\bab\bbl\ble\be-\b-a\bac\bct\bti\biv\bve\be-\b-r\bre\beg\bgi\bio\bon\bn below). This string must not take
+ up any physical character positions on the display, so it should
+ consist only of terminal escape sequences. It is output to the
+ terminal before displaying the text in the active region. This
+ variable is reset to the default value whenever the terminal
+ type changes. The default value is the string that puts the
+ terminal in standout mode, as obtained from the terminal's ter-
+ minfo description. A sample value might be "\e[01;33m".
+ a\bac\bct\bti\biv\bve\be-\b-r\bre\beg\bgi\bio\bon\bn-\b-e\ben\bnd\bd-\b-c\bco\bol\blo\bor\br
+ A string variable that "undoes" the effects of a\bac\bct\bti\biv\bve\be-\b-r\bre\be-\b-
+ g\bgi\bio\bon\bn-\b-s\bst\bta\bar\brt\bt-\b-c\bco\bol\blo\bor\br and restores "normal" terminal display appear-
+ ance after displaying text in the active region. This string
+ must not take up any physical character positions on the dis-
+ play, so it should consist only of terminal escape sequences.
+ It is output to the terminal after displaying the text in the
+ active region. This variable is reset to the default value
+ whenever the terminal type changes. The default value is the
+ string that restores the terminal from standout mode, as ob-
+ tained from the terminal's terminfo description. A sample value
+ might be "\e[0m".
+ b\bbe\bel\bll\bl-\b-s\bst\bty\byl\ble\be (\b(a\bau\bud\bdi\bib\bbl\ble\be)\b)
+ Controls what happens when readline wants to ring the terminal
+ bell. If set to n\bno\bon\bne\be, readline never rings the bell. If set to
+ v\bvi\bis\bsi\bib\bbl\ble\be, readline uses a visible bell if one is available. If
+ set to a\bau\bud\bdi\bib\bbl\ble\be, readline attempts to ring the terminal's bell.
+ b\bbi\bin\bnd\bd-\b-t\btt\bty\by-\b-s\bsp\bpe\bec\bci\bia\bal\bl-\b-c\bch\bha\bar\brs\bs (\b(O\bOn\bn)\b)
+ If set to O\bOn\bn, readline attempts to bind the control characters
+ that are treated specially by the kernel's terminal driver to
+ their readline equivalents. These override the default readline
+ bindings described here. Type "stty -a" at a b\bba\bas\bsh\bh prompt to see
+ your current terminal settings, including the special control
+ characters (usually c\bcc\bch\bha\bar\brs\bs).
+ b\bbl\bli\bin\bnk\bk-\b-m\bma\bat\btc\bch\bhi\bin\bng\bg-\b-p\bpa\bar\bre\ben\bn (\b(O\bOf\bff\bf)\b)
+ If set to O\bOn\bn, readline attempts to briefly move the cursor to an
+ opening parenthesis when a closing parenthesis is inserted.
+ c\bco\bol\blo\bor\bre\bed\bd-\b-c\bco\bom\bmp\bpl\ble\bet\bti\bio\bon\bn-\b-p\bpr\bre\bef\bfi\bix\bx (\b(O\bOf\bff\bf)\b)
+ If set to O\bOn\bn, when listing completions, readline displays the
+ common prefix of the set of possible completions using a differ-
+ ent color. The color definitions are taken from the value of
+ the L\bLS\bS_\b_C\bCO\bOL\bLO\bOR\bRS\bS environment variable. If there is a color defini-
+ tion in $\b$L\bLS\bS_\b_C\bCO\bOL\bLO\bOR\bRS\bS for the custom suffix "readline-colored-com-
+ pletion-prefix", readline uses this color for the common prefix
+ instead of its default.
+ c\bco\bol\blo\bor\bre\bed\bd-\b-s\bst\bta\bat\bts\bs (\b(O\bOf\bff\bf)\b)
+ If set to O\bOn\bn, readline displays possible completions using dif-
+ ferent colors to indicate their file type. The color defini-
+ tions are taken from the value of the L\bLS\bS_\b_C\bCO\bOL\bLO\bOR\bRS\bS environment
+ variable.
+ c\bco\bom\bmm\bme\ben\bnt\bt-\b-b\bbe\beg\bgi\bin\bn (\b("#\b#")\b)
+ The string that the readline i\bin\bns\bse\ber\brt\bt-\b-c\bco\bom\bmm\bme\ben\bnt\bt command inserts.
+ This command is bound to M\bM-\b-#\b# in emacs mode and to #\b# in vi com-
+ mand mode.
+ c\bco\bom\bmp\bpl\ble\bet\bti\bio\bon\bn-\b-d\bdi\bis\bsp\bpl\bla\bay\by-\b-w\bwi\bid\bdt\bth\bh (\b(-\b-1\b1)\b)
+ The number of screen columns used to display possible matches
+ when performing completion. The value is ignored if it is less
+ than 0 or greater than the terminal screen width. A value of 0
+ will cause matches to be displayed one per line. The default
+ value is -1.
+ c\bco\bom\bmp\bpl\ble\bet\bti\bio\bon\bn-\b-i\big\bgn\bno\bor\bre\be-\b-c\bca\bas\bse\be (\b(O\bOf\bff\bf)\b)
+ If set to O\bOn\bn, readline performs filename matching and completion
+ in a case-insensitive fashion.
+ c\bco\bom\bmp\bpl\ble\bet\bti\bio\bon\bn-\b-m\bma\bap\bp-\b-c\bca\bas\bse\be (\b(O\bOf\bff\bf)\b)
+ If set to O\bOn\bn, and c\bco\bom\bmp\bpl\ble\bet\bti\bio\bon\bn-\b-i\big\bgn\bno\bor\bre\be-\b-c\bca\bas\bse\be is enabled, readline
+ treats hyphens (_\b-) and underscores (_\b_) as equivalent when per-
+ forming case-insensitive filename matching and completion.
+ c\bco\bom\bmp\bpl\ble\bet\bti\bio\bon\bn-\b-p\bpr\bre\bef\bfi\bix\bx-\b-d\bdi\bis\bsp\bpl\bla\bay\by-\b-l\ble\ben\bng\bgt\bth\bh (\b(0\b0)\b)
+ The maximum length in characters of the common prefix of a list
+ of possible completions that is displayed without modification.
+ When set to a value greater than zero, readline replaces common
+ prefixes longer than this value with an ellipsis when displaying
+ possible completions.
+ c\bco\bom\bmp\bpl\ble\bet\bti\bio\bon\bn-\b-q\bqu\bue\ber\bry\by-\b-i\bit\bte\bem\bms\bs (\b(1\b10\b00\b0)\b)
+ This determines when the user is queried about viewing the num-
+ ber of possible completions generated by the p\bpo\bos\bss\bsi\bib\bbl\ble\be-\b-c\bco\bom\bmp\bpl\ble\be-\b-
+ t\bti\bio\bon\bns\bs command. It may be set to any integer value greater than
+ or equal to zero. If the number of possible completions is
+ greater than or equal to the value of this variable, readline
+ will ask whether or not the user wishes to view them; otherwise
+ readline simply lists them on the terminal. A zero value means
+ readline should never ask; negative values are treated as zero.
+ c\bco\bon\bnv\bve\ber\brt\bt-\b-m\bme\bet\bta\ba (\b(O\bOn\bn)\b)
+ If set to O\bOn\bn, readline will convert characters it reads that
+ have the eighth bit set to an ASCII key sequence by clearing the
+ eighth bit and prefixing it with an escape character (converting
+ the character to have the _\bm_\be_\bt_\ba _\bp_\br_\be_\bf_\bi_\bx). The default is _\bO_\bn, but
+ readline will set it to _\bO_\bf_\bf if the locale contains characters
+ whose encodings may include bytes with the eighth bit set. This
+ variable is dependent on the L\bLC\bC_\b_C\bCT\bTY\bYP\bPE\bE locale category, and may
+ change if the locale changes. This variable also affects key
+ bindings; see the description of f\bfo\bor\brc\bce\be-\b-m\bme\bet\bta\ba-\b-p\bpr\bre\bef\bfi\bix\bx below.
+ d\bdi\bis\bsa\bab\bbl\ble\be-\b-c\bco\bom\bmp\bpl\ble\bet\bti\bio\bon\bn (\b(O\bOf\bff\bf)\b)
+ If set to O\bOn\bn, readline will inhibit word completion. Completion
+ characters will be inserted into the line as if they had been
+ mapped to s\bse\bel\blf\bf-\b-i\bin\bns\bse\ber\brt\bt.
+ e\bec\bch\bho\bo-\b-c\bco\bon\bnt\btr\bro\bol\bl-\b-c\bch\bha\bar\bra\bac\bct\bte\ber\brs\bs (\b(O\bOn\bn)\b)
+ When set to O\bOn\bn, on operating systems that indicate they support
+ it, readline echoes a character corresponding to a signal gener-
+ ated from the keyboard.
+ e\bed\bdi\bit\bti\bin\bng\bg-\b-m\bmo\bod\bde\be (\b(e\bem\bma\bac\bcs\bs)\b)
+ Controls whether readline uses a set of key bindings similar to
+ _\bE_\bm_\ba_\bc_\bs or _\bv_\bi. e\bed\bdi\bit\bti\bin\bng\bg-\b-m\bmo\bod\bde\be can be set to either e\bem\bma\bac\bcs\bs or v\bvi\bi.
+ e\bem\bma\bac\bcs\bs-\b-m\bmo\bod\bde\be-\b-s\bst\btr\bri\bin\bng\bg (\b(@\b@)\b)
+ If the _\bs_\bh_\bo_\bw_\b-_\bm_\bo_\bd_\be_\b-_\bi_\bn_\b-_\bp_\br_\bo_\bm_\bp_\bt variable is enabled, this string is
+ displayed immediately before the last line of the primary prompt
+ when emacs editing mode is active. The value is expanded like a
+ key binding, so the standard set of meta- and control- prefixes
+ and backslash escape sequences is available. The \1 and \2 es-
+ capes begin and end sequences of non-printing characters, which
+ can be used to embed a terminal control sequence into the mode
+ string.
+ e\ben\bna\bab\bbl\ble\be-\b-a\bac\bct\bti\biv\bve\be-\b-r\bre\beg\bgi\bio\bon\bn (\b(O\bOn\bn)\b)
+ The _\bp_\bo_\bi_\bn_\bt is the current cursor position, and _\bm_\ba_\br_\bk refers to a
+ saved cursor position. The text between the point and mark is
+ referred to as the _\br_\be_\bg_\bi_\bo_\bn. When this variable is set to _\bO_\bn,
+ readline allows certain commands to designate the region as _\ba_\bc_\b-
+ _\bt_\bi_\bv_\be. When the region is active, readline highlights the text
+ in the region using the value of the a\bac\bct\bti\biv\bve\be-\b-r\bre\beg\bgi\bio\bon\bn-\b-s\bst\bta\bar\brt\bt-\b-c\bco\bol\blo\bor\br,
+ which defaults to the string that enables the terminal's stand-
+ out mode. The active region shows the text inserted by brack-
+ eted-paste and any matching text found by incremental and non-
+ incremental history searches.
+ e\ben\bna\bab\bbl\ble\be-\b-b\bbr\bra\bac\bck\bke\bet\bte\bed\bd-\b-p\bpa\bas\bst\bte\be (\b(O\bOn\bn)\b)
+ When set to O\bOn\bn, readline configures the terminal to insert each
+ paste into the editing buffer as a single string of characters,
+ instead of treating each character as if it had been read from
+ the keyboard. This is called _\bb_\br_\ba_\bc_\bk_\be_\bt_\be_\bd_\b-_\bp_\ba_\bs_\bt_\be _\bm_\bo_\bd_\be; it prevents
+ readline from executing any editing commands bound to key se-
+ quences appearing in the pasted text.
+ e\ben\bna\bab\bbl\ble\be-\b-k\bke\bey\byp\bpa\bad\bd (\b(O\bOf\bff\bf)\b)
+ When set to O\bOn\bn, readline will try to enable the application key-
+ pad when it is called. Some systems need this to enable the ar-
+ row keys.
+ e\ben\bna\bab\bbl\ble\be-\b-m\bme\bet\bta\ba-\b-k\bke\bey\by (\b(O\bOn\bn)\b)
+ When set to O\bOn\bn, readline will try to enable any meta modifier
+ key the terminal claims to support. On many terminals, the Meta
+ key is used to send eight-bit characters; this variable checks
+ for the terminal capability that indicates the terminal can en-
+ able and disable a mode that sets the eighth bit of a character
+ (0200) if the Meta key is held down when the character is typed
+ (a meta character).
+ e\bex\bxp\bpa\ban\bnd\bd-\b-t\bti\bil\bld\bde\be (\b(O\bOf\bff\bf)\b)
+ If set to O\bOn\bn, readline performs tilde expansion when it attempts
+ word completion.
+ f\bfo\bor\brc\bce\be-\b-m\bme\bet\bta\ba-\b-p\bpr\bre\bef\bfi\bix\bx (\b(O\bOf\bff\bf)\b)
+ If set to O\bOn\bn, readline modifies its behavior when binding key
+ sequences containing \M- or Meta- (see K\bKe\bey\by B\bBi\bin\bnd\bdi\bin\bng\bgs\bs above) by
+ converting a key sequence of the form \M-_\bC or Meta-_\bC to the two-
+ character sequence E\bES\bSC\bC_\bC (adding the _\bm_\be_\bt_\ba _\bp_\br_\be_\bf_\bi_\bx). If
+ f\bfo\bor\brc\bce\be-\b-m\bme\bet\bta\ba-\b-p\bpr\bre\bef\bfi\bix\bx is set to O\bOf\bff\bf (the default), readline uses the
+ value of the c\bco\bon\bnv\bve\ber\brt\bt-\b-m\bme\bet\bta\ba variable to determine whether to per-
+ form this conversion: if c\bco\bon\bnv\bve\ber\brt\bt-\b-m\bme\bet\bta\ba is O\bOn\bn, readline performs
+ the conversion described above; if it is O\bOf\bff\bf, readline converts
+ _\bC to a meta character by setting the eighth bit (0200).
+ h\bhi\bis\bst\bto\bor\bry\by-\b-p\bpr\bre\bes\bse\ber\brv\bve\be-\b-p\bpo\boi\bin\bnt\bt (\b(O\bOf\bff\bf)\b)
+ If set to O\bOn\bn, the history code attempts to place point at the
+ same location on each history line retrieved with p\bpr\bre\bev\bvi\bio\bou\bus\bs-\b-h\bhi\bis\bs-\b-
+ t\bto\bor\bry\by or n\bne\bex\bxt\bt-\b-h\bhi\bis\bst\bto\bor\bry\by.
+ h\bhi\bis\bst\bto\bor\bry\by-\b-s\bsi\biz\bze\be (\b(u\bun\bns\bse\bet\bt)\b)
+ Set the maximum number of history entries saved in the history
+ list. If set to zero, any existing history entries are deleted
+ and no new entries are saved. If set to a value less than zero,
+ the number of history entries is not limited. By default, the
+ number of history entries is not limited. Setting _\bh_\bi_\bs_\bt_\bo_\br_\by_\b-_\bs_\bi_\bz_\be
+ to a non-numeric value will set the maximum number of history
+ entries to 500.
+ h\bho\bor\bri\biz\bzo\bon\bnt\bta\bal\bl-\b-s\bsc\bcr\bro\bol\bll\bl-\b-m\bmo\bod\bde\be (\b(O\bOf\bff\bf)\b)
+ Setting this variable to O\bOn\bn makes readline use a single line for
+ display, scrolling the input horizontally on a single screen
+ line when it becomes longer than the screen width rather than
+ wrapping to a new line. This setting is automatically enabled
+ for terminals of height 1.
+ i\bin\bnp\bpu\but\bt-\b-m\bme\bet\bta\ba (\b(O\bOf\bff\bf)\b)
+ If set to O\bOn\bn, readline will enable eight-bit input (that is, it
+ will not clear the eighth bit in the characters it reads), re-
+ gardless of what the terminal claims it can support. The de-
+ fault is _\bO_\bf_\bf, but readline will set it to _\bO_\bn if the locale con-
+ tains characters whose encodings may include bytes with the
+ eighth bit set. This variable is dependent on the L\bLC\bC_\b_C\bCT\bTY\bYP\bPE\bE lo-
+ cale category, and its value may change if the locale changes.
+ The name m\bme\bet\bta\ba-\b-f\bfl\bla\bag\bg is a synonym for i\bin\bnp\bpu\but\bt-\b-m\bme\bet\bta\ba.
+ i\bis\bse\bea\bar\brc\bch\bh-\b-t\bte\ber\brm\bmi\bin\bna\bat\bto\bor\brs\bs (\b("C\bC-\b-[\b[C\bC-\b-J\bJ")\b)
+ The string of characters that should terminate an incremental
+ search without subsequently executing the character as a com-
+ mand. If this variable has not been given a value, the charac-
+ ters _\bE_\bS_\bC and _\bC_\b-_\bJ will terminate an incremental search.
+ k\bke\bey\bym\bma\bap\bp (\b(e\bem\bma\bac\bcs\bs)\b)
+ Set the current readline keymap. The set of valid keymap names
+ is _\be_\bm_\ba_\bc_\bs_\b, _\be_\bm_\ba_\bc_\bs_\b-_\bs_\bt_\ba_\bn_\bd_\ba_\br_\bd_\b, _\be_\bm_\ba_\bc_\bs_\b-_\bm_\be_\bt_\ba_\b, _\be_\bm_\ba_\bc_\bs_\b-_\bc_\bt_\bl_\bx_\b, _\bv_\bi_\b, _\bv_\bi_\b-_\bc_\bo_\bm_\b-
+ _\bm_\ba_\bn_\bd, and _\bv_\bi_\b-_\bi_\bn_\bs_\be_\br_\bt. _\bv_\bi is equivalent to _\bv_\bi_\b-_\bc_\bo_\bm_\bm_\ba_\bn_\bd; _\be_\bm_\ba_\bc_\bs is
+ equivalent to _\be_\bm_\ba_\bc_\bs_\b-_\bs_\bt_\ba_\bn_\bd_\ba_\br_\bd. The default value is _\be_\bm_\ba_\bc_\bs; the
+ value of e\bed\bdi\bit\bti\bin\bng\bg-\b-m\bmo\bod\bde\be also affects the default keymap.
+ k\bke\bey\bys\bse\beq\bq-\b-t\bti\bim\bme\beo\bou\but\bt (\b(5\b50\b00\b0)\b)
+ Specifies the duration _\br_\be_\ba_\bd_\bl_\bi_\bn_\be will wait for a character when
+ reading an ambiguous key sequence (one that can form a complete
+ key sequence using the input read so far, or can take additional
+ input to complete a longer key sequence). If readline does not
+ receive any input within the timeout, it will use the shorter
+ but complete key sequence. The value is specified in millisec-
+ onds, so a value of 1000 means that readline will wait one sec-
+ ond for additional input. If this variable is set to a value
+ less than or equal to zero, or to a non-numeric value, readline
+ will wait until another key is pressed to decide which key se-
+ quence to complete.
+ m\bma\bar\brk\bk-\b-d\bdi\bir\bre\bec\bct\bto\bor\bri\bie\bes\bs (\b(O\bOn\bn)\b)
+ If set to O\bOn\bn, completed directory names have a slash appended.
+ m\bma\bar\brk\bk-\b-m\bmo\bod\bdi\bif\bfi\bie\bed\bd-\b-l\bli\bin\bne\bes\bs (\b(O\bOf\bff\bf)\b)
+ If set to O\bOn\bn, readline displays history lines that have been
+ modified with a preceding asterisk (*\b*).
+ m\bma\bar\brk\bk-\b-s\bsy\bym\bml\bli\bin\bnk\bke\bed\bd-\b-d\bdi\bir\bre\bec\bct\bto\bor\bri\bie\bes\bs (\b(O\bOf\bff\bf)\b)
+ If set to O\bOn\bn, completed names which are symbolic links to direc-
+ tories have a slash appended, subject to the value of m\bma\bar\brk\bk-\b-d\bdi\bi-\b-
+ r\bre\bec\bct\bto\bor\bri\bie\bes\bs.
+ m\bma\bat\btc\bch\bh-\b-h\bhi\bid\bdd\bde\ben\bn-\b-f\bfi\bil\ble\bes\bs (\b(O\bOn\bn)\b)
+ This variable, when set to O\bOn\bn, forces readline to match files
+ whose names begin with a "." (hidden files) when performing
+ filename completion. If set to O\bOf\bff\bf, the user must include the
+ leading "." in the filename to be completed.
+ m\bme\ben\bnu\bu-\b-c\bco\bom\bmp\bpl\ble\bet\bte\be-\b-d\bdi\bis\bsp\bpl\bla\bay\by-\b-p\bpr\bre\bef\bfi\bix\bx (\b(O\bOf\bff\bf)\b)
+ If set to O\bOn\bn, menu completion displays the common prefix of the
+ list of possible completions (which may be empty) before cycling
+ through the list.
+ o\bou\but\btp\bpu\but\bt-\b-m\bme\bet\bta\ba (\b(O\bOf\bff\bf)\b)
+ If set to O\bOn\bn, readline will display characters with the eighth
+ bit set directly rather than as a meta-prefixed escape sequence.
+ The default is _\bO_\bf_\bf, but readline will set it to _\bO_\bn if the locale
+ contains characters whose encodings may include bytes with the
+ eighth bit set. This variable is dependent on the L\bLC\bC_\b_C\bCT\bTY\bYP\bPE\bE lo-
+ cale category, and its value may change if the locale changes.
+ p\bpa\bag\bge\be-\b-c\bco\bom\bmp\bpl\ble\bet\bti\bio\bon\bns\bs (\b(O\bOn\bn)\b)
+ If set to O\bOn\bn, readline uses an internal _\bm_\bo_\br_\be-like pager to dis-
+ play a screenful of possible completions at a time.
+ p\bpr\bre\bef\bfe\ber\br-\b-v\bvi\bis\bsi\bib\bbl\ble\be-\b-b\bbe\bel\bll\bl
+ See b\bbe\bel\bll\bl-\b-s\bst\bty\byl\ble\be.
+ p\bpr\bri\bin\bnt\bt-\b-c\bco\bom\bmp\bpl\ble\bet\bti\bio\bon\bns\bs-\b-h\bho\bor\bri\biz\bzo\bon\bnt\bta\bal\bll\bly\by (\b(O\bOf\bff\bf)\b)
+ If set to O\bOn\bn, readline will display completions with matches
+ sorted horizontally in alphabetical order, rather than down the
+ screen.
+ r\bre\bev\bve\ber\brt\bt-\b-a\bal\bll\bl-\b-a\bat\bt-\b-n\bne\bew\bwl\bli\bin\bne\be (\b(O\bOf\bff\bf)\b)
+ If set to O\bOn\bn, readline will undo all changes to history lines
+ before returning when executing a\bac\bcc\bce\bep\bpt\bt-\b-l\bli\bin\bne\be. By default, his-
+ tory lines may be modified and retain individual undo lists
+ across calls to r\bre\bea\bad\bdl\bli\bin\bne\be(\b()\b).
+ s\bse\bea\bar\brc\bch\bh-\b-i\big\bgn\bno\bor\bre\be-\b-c\bca\bas\bse\be (\b(O\bOf\bff\bf)\b)
+ If set to O\bOn\bn, readline performs incremental and non-incremental
+ history list searches in a case-insensitive fashion.
+ s\bsh\bho\bow\bw-\b-a\bal\bll\bl-\b-i\bif\bf-\b-a\bam\bmb\bbi\big\bgu\buo\bou\bus\bs (\b(O\bOf\bff\bf)\b)
+ This alters the default behavior of the completion functions.
+ If set to O\bOn\bn, words which have more than one possible completion
+ cause the matches to be listed immediately instead of ringing
+ the bell.
+ s\bsh\bho\bow\bw-\b-a\bal\bll\bl-\b-i\bif\bf-\b-u\bun\bnm\bmo\bod\bdi\bif\bfi\bie\bed\bd (\b(O\bOf\bff\bf)\b)
+ This alters the default behavior of the completion functions in
+ a fashion similar to s\bsh\bho\bow\bw-\b-a\bal\bll\bl-\b-i\bif\bf-\b-a\bam\bmb\bbi\big\bgu\buo\bou\bus\bs. If set to O\bOn\bn, words
+ which have more than one possible completion without any possi-
+ ble partial completion (the possible completions don't share a
+ common prefix) cause the matches to be listed immediately in-
+ stead of ringing the bell.
+ s\bsh\bho\bow\bw-\b-m\bmo\bod\bde\be-\b-i\bin\bn-\b-p\bpr\bro\bom\bmp\bpt\bt (\b(O\bOf\bff\bf)\b)
+ If set to O\bOn\bn, add a string to the beginning of the prompt indi-
+ cating the editing mode: emacs, vi command, or vi insertion.
+ The mode strings are user-settable (e.g., _\be_\bm_\ba_\bc_\bs_\b-_\bm_\bo_\bd_\be_\b-_\bs_\bt_\br_\bi_\bn_\bg).
+ s\bsk\bki\bip\bp-\b-c\bco\bom\bmp\bpl\ble\bet\bte\bed\bd-\b-t\bte\bex\bxt\bt (\b(O\bOf\bff\bf)\b)
+ If set to O\bOn\bn, this alters the default completion behavior when
+ inserting a single match into the line. It's only active when
+ performing completion in the middle of a word. If enabled,
+ readline does not insert characters from the completion that
+ match characters after point in the word being completed, so
+ portions of the word following the cursor are not duplicated.
+ v\bvi\bi-\b-c\bcm\bmd\bd-\b-m\bmo\bod\bde\be-\b-s\bst\btr\bri\bin\bng\bg (\b((\b(c\bcm\bmd\bd)\b))\b)
+ If the _\bs_\bh_\bo_\bw_\b-_\bm_\bo_\bd_\be_\b-_\bi_\bn_\b-_\bp_\br_\bo_\bm_\bp_\bt variable is enabled, this string is
+ displayed immediately before the last line of the primary prompt
+ when vi editing mode is active and in command mode. The value
+ is expanded like a key binding, so the standard set of meta- and
+ control- prefixes and backslash escape sequences is available.
+ The \1 and \2 escapes begin and end sequences of non-printing
+ characters, which can be used to embed a terminal control se-
+ quence into the mode string.
+ v\bvi\bi-\b-i\bin\bns\bs-\b-m\bmo\bod\bde\be-\b-s\bst\btr\bri\bin\bng\bg (\b((\b(i\bin\bns\bs)\b))\b)
+ If the _\bs_\bh_\bo_\bw_\b-_\bm_\bo_\bd_\be_\b-_\bi_\bn_\b-_\bp_\br_\bo_\bm_\bp_\bt variable is enabled, this string is
+ displayed immediately before the last line of the primary prompt
+ when vi editing mode is active and in insertion mode. The value
+ is expanded like a key binding, so the standard set of meta- and
+ control- prefixes and backslash escape sequences is available.
+ The \1 and \2 escapes begin and end sequences of non-printing
+ characters, which can be used to embed a terminal control se-
+ quence into the mode string.
+ v\bvi\bis\bsi\bib\bbl\ble\be-\b-s\bst\bta\bat\bts\bs (\b(O\bOf\bff\bf)\b)
+ If set to O\bOn\bn, a character denoting a file's type as reported by
+ _\bs_\bt_\ba_\bt(2) is appended to the filename when listing possible com-
+ pletions.
+
+ C\bCo\bon\bnd\bdi\bit\bti\bio\bon\bna\bal\bl C\bCo\bon\bns\bst\btr\bru\buc\bct\bts\bs
+ Readline implements a facility similar in spirit to the conditional
+ compilation features of the C preprocessor which allows key bindings
+ and variable settings to be performed as the result of tests. There
+ are four parser directives available.
+
+ $\b$i\bif\bf The $\b$i\bif\bf construct allows bindings to be made based on the edit-
+ ing mode, the terminal being used, or the application using
+ readline. The text of the test, after any comparison operator,
+ extends to the end of the line; unless otherwise noted, no char-
+ acters are required to isolate it.
+
+ m\bmo\bod\bde\be The m\bmo\bod\bde\be=\b= form of the $\b$i\bif\bf directive is used to test
+ whether readline is in emacs or vi mode. This may be
+ used in conjunction with the s\bse\bet\bt k\bke\bey\bym\bma\bap\bp command, for in-
+ stance, to set bindings in the _\be_\bm_\ba_\bc_\bs_\b-_\bs_\bt_\ba_\bn_\bd_\ba_\br_\bd and
+ _\be_\bm_\ba_\bc_\bs_\b-_\bc_\bt_\bl_\bx keymaps only if readline is starting out in
+ emacs mode.
+
+ t\bte\ber\brm\bm The t\bte\ber\brm\bm=\b= form may be used to include terminal-specific
+ key bindings, perhaps to bind the key sequences output by
+ the terminal's function keys. The word on the right side
+ of the =\b= is tested against both the full name of the ter-
+ minal and the portion of the terminal name before the
+ first -\b-. This allows _\bx_\bt_\be_\br_\bm to match both _\bx_\bt_\be_\br_\bm and
+ _\bx_\bt_\be_\br_\bm_\b-_\b2_\b5_\b6_\bc_\bo_\bl_\bo_\br, for instance.
+
+ v\bve\ber\brs\bsi\bio\bon\bn
+ The v\bve\ber\brs\bsi\bio\bon\bn test may be used to perform comparisons
+ against specific readline versions. The v\bve\ber\brs\bsi\bio\bon\bn expands
+ to the current readline version. The set of comparison
+ operators includes =\b=, (and =\b==\b=), !\b!=\b=, <\b<=\b=, >\b>=\b=, <\b<, and >\b>.
+ The version number supplied on the right side of the op-
+ erator consists of a major version number, an optional
+ decimal point, and an optional minor version (e.g., 7\b7.\b.1\b1).
+ If the minor version is omitted, it defaults to 0\b0. The
+ operator may be separated from the string v\bve\ber\brs\bsi\bio\bon\bn and
+ from the version number argument by whitespace.
+
+ _\ba_\bp_\bp_\bl_\bi_\bc_\ba_\bt_\bi_\bo_\bn
+ The _\ba_\bp_\bp_\bl_\bi_\bc_\ba_\bt_\bi_\bo_\bn construct is used to include application-
+ specific settings. Each program using the readline li-
+ brary sets the _\ba_\bp_\bp_\bl_\bi_\bc_\ba_\bt_\bi_\bo_\bn _\bn_\ba_\bm_\be, and an initialization
+ file can test for a particular value. This could be used
+ to bind key sequences to functions useful for a specific
+ program. For instance, the following command adds a key
+ sequence that quotes the current or previous word in
+ b\bba\bas\bsh\bh:
+
+ $\b$i\bif\bf Bash
+ # Quote the current or previous word
+ "\C-xq": "\eb\"\ef\""
+ $\b$e\ben\bnd\bdi\bif\bf
+
+ _\bv_\ba_\br_\bi_\ba_\bb_\bl_\be
+ The _\bv_\ba_\br_\bi_\ba_\bb_\bl_\be construct provides simple equality tests for
+ readline variables and values. The permitted comparison
+ operators are _\b=, _\b=_\b=, and _\b!_\b=. The variable name must be
+ separated from the comparison operator by whitespace; the
+ operator may be separated from the value on the right
+ hand side by whitespace. String and boolean variables
+ may be tested. Boolean variables must be tested against
+ the values _\bo_\bn and _\bo_\bf_\bf.
+
+ $\b$e\bel\bls\bse\be Commands in this branch of the $\b$i\bif\bf directive are executed if the
+ test fails.
+
+ $\b$e\ben\bnd\bdi\bif\bf This command, as seen in the previous example, terminates an $\b$i\bif\bf
+ command.
+
+ $\b$i\bin\bnc\bcl\blu\bud\bde\be
+ This directive takes a single filename as an argument and reads
+ commands and key bindings from that file. For example, the fol-
+ lowing directive would read _\b/_\be_\bt_\bc_\b/_\bi_\bn_\bp_\bu_\bt_\br_\bc:
+
+ $\b$i\bin\bnc\bcl\blu\bud\bde\be _\b/_\be_\bt_\bc_\b/_\bi_\bn_\bp_\bu_\bt_\br_\bc
+
+S\bSE\bEA\bAR\bRC\bCH\bHI\bIN\bNG\bG
+ Readline provides commands for searching through the command history
+ for lines containing a specified string. There are two search modes:
+ _\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt_\ba_\bl and _\bn_\bo_\bn_\b-_\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt_\ba_\bl.
+
+ Incremental searches begin before the user has finished typing the
+ search string. As each character of the search string is typed, read-
+ line displays the next entry from the history matching the string typed
+ so far. An incremental search requires only as many characters as
+ needed to find the desired history entry. When using emacs editing
+ mode, type C\bC-\b-r\br to search backward in the history for a particular
+ string. Typing C\bC-\b-s\bs searches forward through the history. The charac-
+ ters present in the value of the i\bis\bse\bea\bar\brc\bch\bh-\b-t\bte\ber\brm\bmi\bin\bna\bat\bto\bor\brs\bs variable are used
+ to terminate an incremental search. If that variable has not been as-
+ signed a value, _\bE_\bS_\bC and _\bC_\b-_\bJ will terminate an incremental search. _\bC_\b-_\bg
+ will abort an incremental search and restore the original line. When
+ the search is terminated, the history entry containing the search
+ string becomes the current line.
+
+ To find other matching entries in the history list, type C\bC-\b-r\br or C\bC-\b-s\bs as
+ appropriate. This will search backward or forward in the history for
+ the next entry matching the search string typed so far. Any other key
+ sequence bound to a readline command will terminate the search and exe-
+ cute that command. For instance, a newline will terminate the search
+ and accept the line, thereby executing the command from the history
+ list. A movement command will terminate the search, make the last line
+ found the current line, and begin editing.
+
+ Readline remembers the last incremental search string. If two C\bC-\b-r\brs are
+ typed without any intervening characters defining a new search string,
+ readline uses any remembered search string.
+
+ Non-incremental searches read the entire search string before starting
+ to search for matching history entries. The search string may be typed
+ by the user or be part of the contents of the current line.
+
+E\bED\bDI\bIT\bTI\bIN\bNG\bG C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS
+ The following is a list of the names of the commands and the default
+ key sequences to which they are bound. Command names without an accom-
+ panying key sequence are unbound by default.
+
+ In the following descriptions, _\bp_\bo_\bi_\bn_\bt refers to the current cursor posi-
+ tion, and _\bm_\ba_\br_\bk refers to a cursor position saved by the s\bse\bet\bt-\b-m\bma\bar\brk\bk com-
+ mand. The text between the point and mark is referred to as the _\br_\be_\b-
+ _\bg_\bi_\bo_\bn. Readline has the concept of an _\ba_\bc_\bt_\bi_\bv_\be _\br_\be_\bg_\bi_\bo_\bn: when the region is
+ active, readline redisplay uses the value of the a\bac\bct\bti\biv\bve\be-\b-r\bre\be-\b-
+ g\bgi\bio\bon\bn-\b-s\bst\bta\bar\brt\bt-\b-c\bco\bol\blo\bor\br v\bva\bar\bri\bia\bab\bbl\ble\be t\bto\bo d\bde\ben\bno\bot\bte\be t\bth\bhe\be r\bre\beg\bgi\bio\bon\bn.\b. S\bSe\bev\bve\ber\bra\bal\bl c\bco\bom\bmm\bma\ban\bnd\bds\bs s\bse\bet\bt
+ t\bth\bhe\be r\bre\beg\bgi\bio\bon\bn t\bto\bo a\bac\bct\bti\biv\bve\be;\b; t\bth\bho\bos\bse\be a\bar\bre\be n\bno\bot\bte\bed\bd b\bbe\bel\blo\bow\bw.\b.
+
+ C\bCo\bom\bmm\bma\ban\bnd\bds\bs f\bfo\bor\br M\bMo\bov\bvi\bin\bng\bg
+ b\bbe\beg\bgi\bin\bnn\bni\bin\bng\bg-\b-o\bof\bf-\b-l\bli\bin\bne\be (\b(C\bC-\b-a\ba)\b)
+ Move to the start of the current line. This may also be bound
+ to the Home key on some keyboards.
+ e\ben\bnd\bd-\b-o\bof\bf-\b-l\bli\bin\bne\be (\b(C\bC-\b-e\be)\b)
+ Move to the end of the line. This may also be bound to the End
+ key on some keyboards.
+ f\bfo\bor\brw\bwa\bar\brd\bd-\b-c\bch\bha\bar\br (\b(C\bC-\b-f\bf)\b)
+ Move forward a character.
+ b\bba\bac\bck\bkw\bwa\bar\brd\bd-\b-c\bch\bha\bar\br (\b(C\bC-\b-b\bb)\b)
+ Move back a character.
+ f\bfo\bor\brw\bwa\bar\brd\bd-\b-w\bwo\bor\brd\bd (\b(M\bM-\b-f\bf)\b)
+ Move forward to the end of the next word. Words are composed of
+ alphanumeric characters (letters and digits).
+ b\bba\bac\bck\bkw\bwa\bar\brd\bd-\b-w\bwo\bor\brd\bd (\b(M\bM-\b-b\bb)\b)
+ Move back to the start of the current or previous word. Words
+ are composed of alphanumeric characters (letters and digits).
+ p\bpr\bre\bev\bvi\bio\bou\bus\bs-\b-s\bsc\bcr\bre\bee\ben\bn-\b-l\bli\bin\bne\be
+ Attempt to move point to the same physical screen column on the
+ previous physical screen line. This will not have the desired
+ effect if the current readline line does not take up more than
+ one physical line or if point is not greater than the length of
+ the prompt plus the screen width.
+ n\bne\bex\bxt\bt-\b-s\bsc\bcr\bre\bee\ben\bn-\b-l\bli\bin\bne\be
+ Attempt to move point to the same physical screen column on the
+ next physical screen line. This will not have the desired ef-
+ fect if the current readline line does not take up more than one
+ physical line or if the length of the current readline line is
+ not greater than the length of the prompt plus the screen width.
+ c\bcl\ble\bea\bar\br-\b-d\bdi\bis\bsp\bpl\bla\bay\by (\b(M\bM-\b-C\bC-\b-l\bl)\b)
+ Clear the screen and, if possible, the terminal's scrollback
+ buffer, then redraw the current line, leaving the current line
+ at the top of the screen.
+ c\bcl\ble\bea\bar\br-\b-s\bsc\bcr\bre\bee\ben\bn (\b(C\bC-\b-l\bl)\b)
+ Clear the screen, then redraw the current line, leaving the cur-
+ rent line at the top of the screen. With an argument, refresh
+ the current line without clearing the screen.
+ r\bre\bed\bdr\bra\baw\bw-\b-c\bcu\bur\brr\bre\ben\bnt\bt-\b-l\bli\bin\bne\be
+ Refresh the current line.
+
+ C\bCo\bom\bmm\bma\ban\bnd\bds\bs f\bfo\bor\br M\bMa\ban\bni\bip\bpu\bul\bla\bat\bti\bin\bng\bg t\bth\bhe\be H\bHi\bis\bst\bto\bor\bry\by
+ a\bac\bcc\bce\bep\bpt\bt-\b-l\bli\bin\bne\be (\b(N\bNe\bew\bwl\bli\bin\bne\be,\b, R\bRe\bet\btu\bur\brn\bn)\b)
+ Accept the line regardless of where the cursor is. If this line
+ is non-empty, it may be added to the history list for future re-
+ call with a\bad\bdd\bd_\b_h\bhi\bis\bst\bto\bor\bry\by(\b()\b). If the line is a modified history
+ line, restore the history line to its original state.
+ p\bpr\bre\bev\bvi\bio\bou\bus\bs-\b-h\bhi\bis\bst\bto\bor\bry\by (\b(C\bC-\b-p\bp)\b)
+ Fetch the previous command from the history list, moving back in
+ the list.
+ n\bne\bex\bxt\bt-\b-h\bhi\bis\bst\bto\bor\bry\by (\b(C\bC-\b-n\bn)\b)
+ Fetch the next command from the history list, moving forward in
+ the list.
+ b\bbe\beg\bgi\bin\bnn\bni\bin\bng\bg-\b-o\bof\bf-\b-h\bhi\bis\bst\bto\bor\bry\by (\b(M\bM-\b-<\b<)\b)
+ Move to the first line in the history.
+ e\ben\bnd\bd-\b-o\bof\bf-\b-h\bhi\bis\bst\bto\bor\bry\by (\b(M\bM-\b->\b>)\b)
+ Move to the end of the input history, i.e., the line currently
+ being entered.
+ o\bop\bpe\ber\bra\bat\bte\be-\b-a\ban\bnd\bd-\b-g\bge\bet\bt-\b-n\bne\bex\bxt\bt (\b(C\bC-\b-o\bo)\b)
+ Accept the current line for return to the calling application as
+ if a newline had been entered, and fetch the next line relative
+ to the current line from the history for editing. A numeric ar-
+ gument, if supplied, specifies the history entry to use instead
+ of the current line.
+ f\bfe\bet\btc\bch\bh-\b-h\bhi\bis\bst\bto\bor\bry\by
+ With a numeric argument, fetch that entry from the history list
+ and make it the current line. Without an argument, move back to
+ the first entry in the history list.
+ r\bre\bev\bve\ber\brs\bse\be-\b-s\bse\bea\bar\brc\bch\bh-\b-h\bhi\bis\bst\bto\bor\bry\by (\b(C\bC-\b-r\br)\b)
+ Search backward starting at the current line and moving "up"
+ through the history as necessary. This is an incremental
+ search. This command sets the region to the matched text and
+ activates the region.
+ f\bfo\bor\brw\bwa\bar\brd\bd-\b-s\bse\bea\bar\brc\bch\bh-\b-h\bhi\bis\bst\bto\bor\bry\by (\b(C\bC-\b-s\bs)\b)
+ Search forward starting at the current line and moving "down"
+ through the history as necessary. This is an incremental
+ search. This command sets the region to the matched text and
+ activates the region.
+ n\bno\bon\bn-\b-i\bin\bnc\bcr\bre\bem\bme\ben\bnt\bta\bal\bl-\b-r\bre\bev\bve\ber\brs\bse\be-\b-s\bse\bea\bar\brc\bch\bh-\b-h\bhi\bis\bst\bto\bor\bry\by (\b(M\bM-\b-p\bp)\b)
+ Search backward through the history starting at the current line
+ using a non-incremental search for a string supplied by the
+ user. The search string may match anywhere in a history line.
+ n\bno\bon\bn-\b-i\bin\bnc\bcr\bre\bem\bme\ben\bnt\bta\bal\bl-\b-f\bfo\bor\brw\bwa\bar\brd\bd-\b-s\bse\bea\bar\brc\bch\bh-\b-h\bhi\bis\bst\bto\bor\bry\by (\b(M\bM-\b-n\bn)\b)
+ Search forward through the history using a non-incremental
+ search for a string supplied by the user. The search string may
+ match anywhere in a history line.
+ h\bhi\bis\bst\bto\bor\bry\by-\b-s\bse\bea\bar\brc\bch\bh-\b-b\bba\bac\bck\bkw\bwa\bar\brd\bd
+ Search backward through the history for the string of characters
+ between the start of the current line and the point. The search
+ string must match at the beginning of a history line. This is a
+ non-incremental search. This may be bound to the Page Up key on
+ some keyboards.
+ h\bhi\bis\bst\bto\bor\bry\by-\b-s\bse\bea\bar\brc\bch\bh-\b-f\bfo\bor\brw\bwa\bar\brd\bd
+ Search forward through the history for the string of characters
+ between the start of the current line and the point. The search
+ string must match at the beginning of a history line. This is a
+ non-incremental search. This may be bound to the Page Down key
+ on some keyboards.
+ h\bhi\bis\bst\bto\bor\bry\by-\b-s\bsu\bub\bbs\bst\btr\bri\bin\bng\bg-\b-s\bse\bea\bar\brc\bch\bh-\b-b\bba\bac\bck\bkw\bwa\bar\brd\bd
+ Search backward through the history for the string of characters
+ between the start of the current line and the point. The search
+ string may match anywhere in a history line. This is a non-in-
+ cremental search.
+ h\bhi\bis\bst\bto\bor\bry\by-\b-s\bsu\bub\bbs\bst\btr\bri\bin\bng\bg-\b-s\bse\bea\bar\brc\bch\bh-\b-f\bfo\bor\brw\bwa\bar\brd\bd
+ Search forward through the history for the string of characters
+ between the start of the current line and the point. The search
+ string may match anywhere in a history line. This is a non-in-
+ cremental search.
+ y\bya\ban\bnk\bk-\b-n\bnt\bth\bh-\b-a\bar\brg\bg (\b(M\bM-\b-C\bC-\b-y\by)\b)
+ Insert the first argument to the previous command (usually the
+ second word on the previous line) at point. With an argument _\bn,
+ insert the _\bnth word from the previous command (the words in the
+ previous command begin with word 0). A negative argument in-
+ serts the _\bnth word from the end of the previous command. Once
+ the argument _\bn is computed, this uses the history expansion fa-
+ cilities to extract the _\bnth word, as if the "!_\bn" history expan-
+ sion had been specified.
+ y\bya\ban\bnk\bk-\b-l\bla\bas\bst\bt-\b-a\bar\brg\bg (\b(M\bM-\b-.\b.,\b, M\bM-\b-_\b_)\b)
+ Insert the last argument to the previous command (the last word
+ of the previous history entry). With a numeric argument, behave
+ exactly like y\bya\ban\bnk\bk-\b-n\bnt\bth\bh-\b-a\bar\brg\bg. Successive calls to y\bya\ban\bnk\bk-\b-l\bla\bas\bst\bt-\b-a\bar\brg\bg
+ move back through the history list, inserting the last word (or
+ the word specified by the argument to the first call) of each
+ line in turn. Any numeric argument supplied to these successive
+ calls determines the direction to move through the history. A
+ negative argument switches the direction through the history
+ (back or forward). This uses the history expansion facilities
+ to extract the last word, as if the "!$" history expansion had
+ been specified.
+
+ C\bCo\bom\bmm\bma\ban\bnd\bds\bs f\bfo\bor\br C\bCh\bha\ban\bng\bgi\bin\bng\bg T\bTe\bex\bxt\bt
+ _\be_\bn_\bd_\b-_\bo_\bf_\b-_\bf_\bi_\bl_\be (\b(u\bus\bsu\bua\bal\bll\bly\by C\bC-\b-d\bd)\b)
+ The character indicating end-of-file as set, for example, by
+ _\bs_\bt_\bt_\by(1). If this character is read when there are no characters
+ on the line, and point is at the beginning of the line, readline
+ interprets it as the end of input and returns E\bEO\bOF\bF.
+ d\bde\bel\ble\bet\bte\be-\b-c\bch\bha\bar\br (\b(C\bC-\b-d\bd)\b)
+ Delete the character at point. If this function is bound to the
+ same character as the tty E\bEO\bOF\bF character, as C\bC-\b-d\bd commonly is, see
+ above for the effects.
+ b\bba\bac\bck\bkw\bwa\bar\brd\bd-\b-d\bde\bel\ble\bet\bte\be-\b-c\bch\bha\bar\br (\b(R\bRu\bub\bbo\bou\but\bt)\b)
+ Delete the character behind the cursor. When given a numeric
+ argument, save the deleted text on the kill ring.
+ f\bfo\bor\brw\bwa\bar\brd\bd-\b-b\bba\bac\bck\bkw\bwa\bar\brd\bd-\b-d\bde\bel\ble\bet\bte\be-\b-c\bch\bha\bar\br
+ Delete the character under the cursor, unless the cursor is at
+ the end of the line, in which case the character behind the cur-
+ sor is deleted.
+ q\bqu\buo\bot\bte\bed\bd-\b-i\bin\bns\bse\ber\brt\bt (\b(C\bC-\b-q\bq,\b, C\bC-\b-v\bv)\b)
+ Add the next character typed to the line verbatim. This is how
+ to insert characters like C\bC-\b-q\bq, for example.
+ t\bta\bab\bb-\b-i\bin\bns\bse\ber\brt\bt (\b(M\bM-\b-T\bTA\bAB\bB)\b)
+ Insert a tab character.
+ s\bse\bel\blf\bf-\b-i\bin\bns\bse\ber\brt\bt (\b(a\ba,\b, b\bb,\b, A\bA,\b, 1\b1,\b, !\b!,\b, ...)\b)
+ Insert the character typed.
+ b\bbr\bra\bac\bck\bke\bet\bte\bed\bd-\b-p\bpa\bas\bst\bte\be-\b-b\bbe\beg\bgi\bin\bn
+ This function is intended to be bound to the "bracketed paste"
+ escape sequence sent by some terminals, and such a binding is
+ assigned by default. It allows readline to insert the pasted
+ text as a single unit without treating each character as if it
+ had been read from the keyboard. The pasted characters are in-
+ serted as if each one was bound to s\bse\bel\blf\bf-\b-i\bin\bns\bse\ber\brt\bt instead of exe-
+ cuting any editing commands.
+ Bracketed paste sets the region to the inserted text and acti-
+ vates the region.
+ t\btr\bra\ban\bns\bsp\bpo\bos\bse\be-\b-c\bch\bha\bar\brs\bs (\b(C\bC-\b-t\bt)\b)
+ Drag the character before point forward over the character at
+ point, moving point forward as well. If point is at the end of
+ the line, then this transposes the two characters before point.
+ Negative arguments have no effect.
+ t\btr\bra\ban\bns\bsp\bpo\bos\bse\be-\b-w\bwo\bor\brd\bds\bs (\b(M\bM-\b-t\bt)\b)
+ Drag the word before point past the word after point, moving
+ point over that word as well. If point is at the end of the
+ line, this transposes the last two words on the line.
+ u\bup\bpc\bca\bas\bse\be-\b-w\bwo\bor\brd\bd (\b(M\bM-\b-u\bu)\b)
+ Uppercase the current (or following) word. With a negative ar-
+ gument, uppercase the previous word, but do not move point.
+ d\bdo\bow\bwn\bnc\bca\bas\bse\be-\b-w\bwo\bor\brd\bd (\b(M\bM-\b-l\bl)\b)
+ Lowercase the current (or following) word. With a negative ar-
+ gument, lowercase the previous word, but do not move point.
+ c\bca\bap\bpi\bit\bta\bal\bli\biz\bze\be-\b-w\bwo\bor\brd\bd (\b(M\bM-\b-c\bc)\b)
+ Capitalize the current (or following) word. With a negative ar-
+ gument, capitalize the previous word, but do not move point.
+ o\bov\bve\ber\brw\bwr\bri\bit\bte\be-\b-m\bmo\bod\bde\be
+ Toggle overwrite mode. With an explicit positive numeric argu-
+ ment, switches to overwrite mode. With an explicit non-positive
+ numeric argument, switches to insert mode. This command affects
+ only e\bem\bma\bac\bcs\bs mode; v\bvi\bi mode does overwrite differently. Each call
+ to _\br_\be_\ba_\bd_\bl_\bi_\bn_\be_\b(_\b) starts in insert mode.
+ In overwrite mode, characters bound to s\bse\bel\blf\bf-\b-i\bin\bns\bse\ber\brt\bt replace the
+ text at point rather than pushing the text to the right. Char-
+ acters bound to b\bba\bac\bck\bkw\bwa\bar\brd\bd-\b-d\bde\bel\ble\bet\bte\be-\b-c\bch\bha\bar\br replace the character be-
+ fore point with a space. By default, this command is unbound,
+ but may be bound to the Insert key on some keyboards.
+
+ K\bKi\bil\bll\bli\bin\bng\bg a\ban\bnd\bd Y\bYa\ban\bnk\bki\bin\bng\bg
+ k\bki\bil\bll\bl-\b-l\bli\bin\bne\be (\b(C\bC-\b-k\bk)\b)
+ Kill the text from point to the end of the current line. With a
+ negative numeric argument, kill backward from the cursor to the
+ beginning of the line.
+ b\bba\bac\bck\bkw\bwa\bar\brd\bd-\b-k\bki\bil\bll\bl-\b-l\bli\bin\bne\be (\b(C\bC-\b-x\bx R\bRu\bub\bbo\bou\but\bt)\b)
+ Kill backward to the beginning of the current line. With a neg-
+ ative numeric argument, kill forward from the cursor to the end
+ of the line.
+ u\bun\bni\bix\bx-\b-l\bli\bin\bne\be-\b-d\bdi\bis\bsc\bca\bar\brd\bd (\b(C\bC-\b-u\bu)\b)
+ Kill backward from point to the beginning of the line, saving
+ the killed text on the kill-ring.
+ k\bki\bil\bll\bl-\b-w\bwh\bho\bol\ble\be-\b-l\bli\bin\bne\be
+ Kill all characters on the current line, no matter where point
+ is.
+ k\bki\bil\bll\bl-\b-w\bwo\bor\brd\bd (\b(M\bM-\b-d\bd)\b)
+ Kill from point to the end of the current word, or if between
+ words, to the end of the next word. Word boundaries are the
+ same as those used by f\bfo\bor\brw\bwa\bar\brd\bd-\b-w\bwo\bor\brd\bd.
+ b\bba\bac\bck\bkw\bwa\bar\brd\bd-\b-k\bki\bil\bll\bl-\b-w\bwo\bor\brd\bd (\b(M\bM-\b-R\bRu\bub\bbo\bou\but\bt)\b)
+ Kill the word behind point. Word boundaries are the same as
+ those used by b\bba\bac\bck\bkw\bwa\bar\brd\bd-\b-w\bwo\bor\brd\bd.
+ u\bun\bni\bix\bx-\b-w\bwo\bor\brd\bd-\b-r\bru\bub\bbo\bou\but\bt (\b(C\bC-\b-w\bw)\b)
+ Kill the word behind point, using white space as a word bound-
+ ary, saving the killed text on the kill-ring.
+ u\bun\bni\bix\bx-\b-f\bfi\bil\ble\ben\bna\bam\bme\be-\b-r\bru\bub\bbo\bou\but\bt
+ Kill the word behind point, using white space and the slash
+ character as the word boundaries, saving the killed text on the
+ kill-ring.
+ d\bde\bel\ble\bet\bte\be-\b-h\bho\bor\bri\biz\bzo\bon\bnt\bta\bal\bl-\b-s\bsp\bpa\bac\bce\be (\b(M\bM-\b-\\b\)\b)
+ Delete all spaces and tabs around point.
+ k\bki\bil\bll\bl-\b-r\bre\beg\bgi\bio\bon\bn
+ Kill the text in the current region.
+ c\bco\bop\bpy\by-\b-r\bre\beg\bgi\bio\bon\bn-\b-a\bas\bs-\b-k\bki\bil\bll\bl
+ Copy the text in the region to the kill buffer, so it can be
+ yanked immediately.
+ c\bco\bop\bpy\by-\b-b\bba\bac\bck\bkw\bwa\bar\brd\bd-\b-w\bwo\bor\brd\bd
+ Copy the word before point to the kill buffer. The word bound-
+ aries are the same as b\bba\bac\bck\bkw\bwa\bar\brd\bd-\b-w\bwo\bor\brd\bd.
+ c\bco\bop\bpy\by-\b-f\bfo\bor\brw\bwa\bar\brd\bd-\b-w\bwo\bor\brd\bd
+ Copy the word following point to the kill buffer. The word
+ boundaries are the same as f\bfo\bor\brw\bwa\bar\brd\bd-\b-w\bwo\bor\brd\bd.
+ y\bya\ban\bnk\bk (\b(C\bC-\b-y\by)\b)
+ Yank the top of the kill ring into the buffer at point.
+ y\bya\ban\bnk\bk-\b-p\bpo\bop\bp (\b(M\bM-\b-y\by)\b)
+ Rotate the kill ring, and yank the new top. Only works follow-
+ ing y\bya\ban\bnk\bk or y\bya\ban\bnk\bk-\b-p\bpo\bop\bp.
+
+ N\bNu\bum\bme\ber\bri\bic\bc A\bAr\brg\bgu\bum\bme\ben\bnt\bts\bs
+ d\bdi\big\bgi\bit\bt-\b-a\bar\brg\bgu\bum\bme\ben\bnt\bt (\b(M\bM-\b-0\b0,\b, M\bM-\b-1\b1,\b, ...,\b, M\bM-\b--\b-)\b)
+ Add this digit to the argument already accumulating, or start a
+ new argument. M-- starts a negative argument.
+ u\bun\bni\biv\bve\ber\brs\bsa\bal\bl-\b-a\bar\brg\bgu\bum\bme\ben\bnt\bt
+ This is another way to specify an argument. If this command is
+ followed by one or more digits, optionally with a leading minus
+ sign, those digits define the argument. If the command is fol-
+ lowed by digits, executing u\bun\bni\biv\bve\ber\brs\bsa\bal\bl-\b-a\bar\brg\bgu\bum\bme\ben\bnt\bt again ends the nu-
+ meric argument, but is otherwise ignored. As a special case, if
+ this command is immediately followed by a character that is nei-
+ ther a digit nor minus sign, the argument count for the next
+ command is multiplied by four. The argument count is initially
+ one, so executing this function the first time makes the argu-
+ ment count four, a second time makes the argument count sixteen,
+ and so on.
+
+ C\bCo\bom\bmp\bpl\ble\bet\bti\bin\bng\bg
+ c\bco\bom\bmp\bpl\ble\bet\bte\be (\b(T\bTA\bAB\bB)\b)
+ Attempt to perform completion on the text before point. The ac-
+ tual completion performed is application-specific. B\bBa\bas\bsh\bh, for
+ instance, attempts programmable completion first, otherwise
+ treating the text as a variable (if the text begins with $\b$),
+ username (if the text begins with ~\b~), hostname (if the text be-
+ gins with @\b@), or command (including aliases, functions, and
+ builtins) in turn. If none of these produces a match, it falls
+ back to filename completion. G\bGd\bdb\bb, on the other hand, allows
+ completion of program functions and variables, and only attempts
+ filename completion under certain circumstances. The default
+ readline completion is filename completion.
+ p\bpo\bos\bss\bsi\bib\bbl\ble\be-\b-c\bco\bom\bmp\bpl\ble\bet\bti\bio\bon\bns\bs (\b(M\bM-\b-?\b?)\b)
+ List the possible completions of the text before point. When
+ displaying completions, readline sets the number of columns used
+ for display to the value of c\bco\bom\bmp\bpl\ble\bet\bti\bio\bon\bn-\b-d\bdi\bis\bsp\bpl\bla\bay\by-\b-w\bwi\bid\bdt\bth\bh, the value
+ of the environment variable C\bCO\bOL\bLU\bUM\bMN\bNS\bS, or the screen width, in
+ that order.
+ i\bin\bns\bse\ber\brt\bt-\b-c\bco\bom\bmp\bpl\ble\bet\bti\bio\bon\bns\bs (\b(M\bM-\b-*\b*)\b)
+ Insert all completions of the text before point that would have
+ been generated by p\bpo\bos\bss\bsi\bib\bbl\ble\be-\b-c\bco\bom\bmp\bpl\ble\bet\bti\bio\bon\bns\bs, separated by a space.
+ m\bme\ben\bnu\bu-\b-c\bco\bom\bmp\bpl\ble\bet\bte\be
+ Similar to c\bco\bom\bmp\bpl\ble\bet\bte\be, but replaces the word to be completed with
+ a single match from the list of possible completions. Repeat-
+ edly executing m\bme\ben\bnu\bu-\b-c\bco\bom\bmp\bpl\ble\bet\bte\be steps through the list of possible
+ completions, inserting each match in turn. At the end of the
+ list of completions, m\bme\ben\bnu\bu-\b-c\bco\bom\bmp\bpl\ble\bet\bte\be rings the bell (subject to
+ the setting of b\bbe\bel\bll\bl-\b-s\bst\bty\byl\ble\be) and restores the original text. An
+ argument of _\bn moves _\bn positions forward in the list of matches;
+ a negative argument moves backward through the list. This com-
+ mand is intended to be bound to T\bTA\bAB\bB, but is unbound by default.
+ m\bme\ben\bnu\bu-\b-c\bco\bom\bmp\bpl\ble\bet\bte\be-\b-b\bba\bac\bck\bkw\bwa\bar\brd\bd
+ Identical to m\bme\ben\bnu\bu-\b-c\bco\bom\bmp\bpl\ble\bet\bte\be, but moves backward through the list
+ of possible completions, as if m\bme\ben\bnu\bu-\b-c\bco\bom\bmp\bpl\ble\bet\bte\be had been given a
+ negative argument. This command is unbound by default.
+ d\bde\bel\ble\bet\bte\be-\b-c\bch\bha\bar\br-\b-o\bor\br-\b-l\bli\bis\bst\bt
+ Deletes the character under the cursor if not at the beginning
+ or end of the line (like d\bde\bel\ble\bet\bte\be-\b-c\bch\bha\bar\br). At the end of the line,
+ it behaves identically to p\bpo\bos\bss\bsi\bib\bbl\ble\be-\b-c\bco\bom\bmp\bpl\ble\bet\bti\bio\bon\bns\bs. This command is
+ unbound by default.
+
+ K\bKe\bey\byb\bbo\boa\bar\brd\bd M\bMa\bac\bcr\bro\bos\bs
+ s\bst\bta\bar\brt\bt-\b-k\bkb\bbd\bd-\b-m\bma\bac\bcr\bro\bo (\b(C\bC-\b-x\bx (\b()\b)
+ Begin saving the characters typed into the current keyboard
+ macro.
+ e\ben\bnd\bd-\b-k\bkb\bbd\bd-\b-m\bma\bac\bcr\bro\bo (\b(C\bC-\b-x\bx )\b))\b)
+ Stop saving the characters typed into the current keyboard macro
+ and store the definition.
+ c\bca\bal\bll\bl-\b-l\bla\bas\bst\bt-\b-k\bkb\bbd\bd-\b-m\bma\bac\bcr\bro\bo (\b(C\bC-\b-x\bx e\be)\b)
+ Re-execute the last keyboard macro defined, by making the char-
+ acters in the macro appear as if typed at the keyboard.
+ p\bpr\bri\bin\bnt\bt-\b-l\bla\bas\bst\bt-\b-k\bkb\bbd\bd-\b-m\bma\bac\bcr\bro\bo (\b()\b)
+ Print the last keyboard macro defined in a format suitable for
+ the _\bi_\bn_\bp_\bu_\bt_\br_\bc file.
+
+ M\bMi\bis\bsc\bce\bel\bll\bla\ban\bne\beo\bou\bus\bs
+ r\bre\be-\b-r\bre\bea\bad\bd-\b-i\bin\bni\bit\bt-\b-f\bfi\bil\ble\be (\b(C\bC-\b-x\bx C\bC-\b-r\br)\b)
+ Read in the contents of the _\bi_\bn_\bp_\bu_\bt_\br_\bc file, and incorporate any
+ bindings or variable assignments found there.
+ a\bab\bbo\bor\brt\bt (\b(C\bC-\b-g\bg)\b)
+ Abort the current editing command and ring the terminal's bell
+ (subject to the setting of b\bbe\bel\bll\bl-\b-s\bst\bty\byl\ble\be).
+ d\bdo\bo-\b-l\blo\bow\bwe\ber\brc\bca\bas\bse\be-\b-v\bve\ber\brs\bsi\bio\bon\bn (\b(M\bM-\b-A\bA,\b, M\bM-\b-B\bB,\b, M\bM-\b-_\bx,\b, ...)\b)
+ If the metafied character _\bx is uppercase, run the command that
+ is bound to the corresponding metafied lowercase character. The
+ behavior is undefined if _\bx is already lowercase.
+ p\bpr\bre\bef\bfi\bix\bx-\b-m\bme\bet\bta\ba (\b(E\bES\bSC\bC)\b)
+ Metafy the next character typed. E\bES\bSC\bC f\bf is equivalent to M\bMe\bet\bta\ba-\b-f\bf.
+ u\bun\bnd\bdo\bo (\b(C\bC-\b-_\b_,\b, C\bC-\b-x\bx C\bC-\b-u\bu)\b)
+ Incremental undo, separately remembered for each line.
+ r\bre\bev\bve\ber\brt\bt-\b-l\bli\bin\bne\be (\b(M\bM-\b-r\br)\b)
+ Undo all changes made to this line. This is like executing the
+ u\bun\bnd\bdo\bo command enough times to return the line to its initial
+ state.
+ t\bti\bil\bld\bde\be-\b-e\bex\bxp\bpa\ban\bnd\bd (\b(M\bM-\b-~\b~)\b)
+ Perform tilde expansion on the current word.
+ s\bse\bet\bt-\b-m\bma\bar\brk\bk (\b(C\bC-\b-@\b@,\b, M\bM-\b-<\b<s\bsp\bpa\bac\bce\be>\b>)\b)
+ Set the mark to the point. If a numeric argument is supplied,
+ set the mark to that position.
+ e\bex\bxc\bch\bha\ban\bng\bge\be-\b-p\bpo\boi\bin\bnt\bt-\b-a\ban\bnd\bd-\b-m\bma\bar\brk\bk (\b(C\bC-\b-x\bx C\bC-\b-x\bx)\b)
+ Swap the point with the mark. Set the current cursor position
+ to the saved position, then set the mark to the old cursor posi-
+ tion.
+ c\bch\bha\bar\bra\bac\bct\bte\ber\br-\b-s\bse\bea\bar\brc\bch\bh (\b(C\bC-\b-]\b])\b)
+ Read a character and move point to the next occurrence of that
+ character. A negative argument searches for previous occur-
+ rences.
+ c\bch\bha\bar\bra\bac\bct\bte\ber\br-\b-s\bse\bea\bar\brc\bch\bh-\b-b\bba\bac\bck\bkw\bwa\bar\brd\bd (\b(M\bM-\b-C\bC-\b-]\b])\b)
+ Read a character and move point to the previous occurrence of
+ that character. A negative argument searches for subsequent oc-
+ currences.
+ s\bsk\bki\bip\bp-\b-c\bcs\bsi\bi-\b-s\bse\beq\bqu\bue\ben\bnc\bce\be
+ Read enough characters to consume a multi-key sequence such as
+ those defined for keys like Home and End. CSI sequences begin
+ with a Control Sequence Indicator (CSI), usually ESC-[. If this
+ sequence is bound to "\e[", keys producing CSI sequences will
+ have no effect unless explicitly bound to a readline command,
+ instead of inserting stray characters into the editing buffer.
+ This is unbound by default, but usually bound to ESC-[.
+ i\bin\bns\bse\ber\brt\bt-\b-c\bco\bom\bmm\bme\ben\bnt\bt (\b(M\bM-\b-#\b#)\b)
+ Without a numeric argument, insert the value of the readline
+ c\bco\bom\bmm\bme\ben\bnt\bt-\b-b\bbe\beg\bgi\bin\bn variable at the beginning of the current line. If
+ a numeric argument is supplied, this command acts as a toggle:
+ if the characters at the beginning of the line do not match the
+ value of c\bco\bom\bmm\bme\ben\bnt\bt-\b-b\bbe\beg\bgi\bin\bn, insert the value; otherwise delete the
+ characters in c\bco\bom\bmm\bme\ben\bnt\bt-\b-b\bbe\beg\bgi\bin\bn from the beginning of the line. In
+ either case, the line is accepted as if a newline had been
+ typed. The default value of c\bco\bom\bmm\bme\ben\bnt\bt-\b-b\bbe\beg\bgi\bin\bn causes this command
+ to make the current line a shell comment. If a numeric argument
+ causes the comment character to be removed, the line will be ex-
+ ecuted by the shell.
+ d\bdu\bum\bmp\bp-\b-f\bfu\bun\bnc\bct\bti\bio\bon\bns\bs
+ Print all of the functions and their key bindings to the read-
+ line output stream. If a numeric argument is supplied, the out-
+ put is formatted in such a way that it can be made part of an
+ _\bi_\bn_\bp_\bu_\bt_\br_\bc file.
+ d\bdu\bum\bmp\bp-\b-v\bva\bar\bri\bia\bab\bbl\ble\bes\bs
+ Print all of the settable variables and their values to the
+ readline output stream. If a numeric argument is supplied, the
+ output is formatted in such a way that it can be made part of an
+ _\bi_\bn_\bp_\bu_\bt_\br_\bc file.
+ d\bdu\bum\bmp\bp-\b-m\bma\bac\bcr\bro\bos\bs
+ Print all of the readline key sequences bound to macros and the
+ strings they output to the readline output stream. If a numeric
+ argument is supplied, the output is formatted in such a way that
+ it can be made part of an _\bi_\bn_\bp_\bu_\bt_\br_\bc file.
+ e\bex\bxe\bec\bcu\but\bte\be-\b-n\bna\bam\bme\bed\bd-\b-c\bco\bom\bmm\bma\ban\bnd\bd (\b(M\bM-\b-x\bx)\b)
+ Read a bindable readline command name from the input and execute
+ the function to which it's bound, as if the key sequence to
+ which it was bound appeared in the input. If this function is
+ supplied with a numeric argument, it passes that argument to the
+ function it executes.
+ e\bem\bma\bac\bcs\bs-\b-e\bed\bdi\bit\bti\bin\bng\bg-\b-m\bmo\bod\bde\be (\b(C\bC-\b-e\be)\b)
+ When in v\bvi\bi command mode, this switches readline to e\bem\bma\bac\bcs\bs editing
+ mode.
+ v\bvi\bi-\b-e\bed\bdi\bit\bti\bin\bng\bg-\b-m\bmo\bod\bde\be (\b(M\bM-\b-C\bC-\b-j\bj)\b)
+ When in e\bem\bma\bac\bcs\bs editing mode, this switches to v\bvi\bi editing mode.
+
+D\bDE\bEF\bFA\bAU\bUL\bLT\bT K\bKE\bEY\bY B\bBI\bIN\bND\bDI\bIN\bNG\bGS\bS
+ The following is a list of the default emacs and vi bindings. Charac-
+ ters with the eighth bit set are written as M-<character>, and are re-
+ ferred to as _\bm_\be_\bt_\ba_\bf_\bi_\be_\bd characters. The printable ASCII characters not
+ mentioned in the list of emacs standard bindings are bound to the
+ s\bse\bel\blf\bf-\b-i\bin\bns\bse\ber\brt\bt function, which just inserts the given character into the
+ input line. In vi insertion mode, all characters not specifically men-
+ tioned are bound to s\bse\bel\blf\bf-\b-i\bin\bns\bse\ber\brt\bt. Characters assigned to signal genera-
+ tion by _\bs_\bt_\bt_\by(1) or the terminal driver, such as C-Z or C-C, retain that
+ function. Upper and lower case metafied characters are bound to the
+ same function in the emacs mode meta keymap. The remaining characters
+ are unbound, which causes readline to ring the bell (subject to the
+ setting of the b\bbe\bel\bll\bl-\b-s\bst\bty\byl\ble\be variable).
+
+ E\bEm\bma\bac\bcs\bs M\bMo\bod\bde\be
+ Emacs Standard bindings
+
+ "C-@" set-mark
+ "C-A" beginning-of-line
+ "C-B" backward-char
+ "C-D" delete-char
+ "C-E" end-of-line
+ "C-F" forward-char
+ "C-G" abort
+ "C-H" backward-delete-char
+ "C-I" complete
+ "C-J" accept-line
+ "C-K" kill-line
+ "C-L" clear-screen
+ "C-M" accept-line
+ "C-N" next-history
+ "C-P" previous-history
+ "C-Q" quoted-insert
+ "C-R" reverse-search-history
+ "C-S" forward-search-history
+ "C-T" transpose-chars
+ "C-U" unix-line-discard
+ "C-V" quoted-insert
+ "C-W" unix-word-rubout
+ "C-Y" yank
+ "C-]" character-search
+ "C-_" undo
+ " " to "/" self-insert
+ "0" to "9" self-insert
+ ":" to "~" self-insert
+ "C-?" backward-delete-char
+
+ Emacs Meta bindings
+
+ "M-C-G" abort
+ "M-C-H" backward-kill-word
+ "M-C-I" tab-insert
+ "M-C-J" vi-editing-mode
+ "M-C-L" clear-display
+ "M-C-M" vi-editing-mode
+ "M-C-R" revert-line
+ "M-C-Y" yank-nth-arg
+ "M-C-[" complete
+ "M-C-]" character-search-backward
+ "M-space" set-mark
+ "M-#" insert-comment
+ "M-&" tilde-expand
+ "M-*" insert-completions
+ "M--" digit-argument
+ "M-." yank-last-arg
+ "M-0" digit-argument
+ "M-1" digit-argument
+ "M-2" digit-argument
+ "M-3" digit-argument
+ "M-4" digit-argument
+ "M-5" digit-argument
+ "M-6" digit-argument
+ "M-7" digit-argument
+ "M-8" digit-argument
+ "M-9" digit-argument
+ "M-<" beginning-of-history
+ "M-=" possible-completions
+ "M->" end-of-history
+ "M-?" possible-completions
+ "M-B" backward-word
+ "M-C" capitalize-word
+ "M-D" kill-word
+ "M-F" forward-word
+ "M-L" downcase-word
+ "M-N" non-incremental-forward-search-history
+ "M-P" non-incremental-reverse-search-history
+ "M-R" revert-line
+ "M-T" transpose-words
+ "M-U" upcase-word
+ "M-X" execute-named-command
+ "M-Y" yank-pop
+ "M-\" delete-horizontal-space
+ "M-~" tilde-expand
+ "M-C-?" backward-kill-word
+ "M-_" yank-last-arg
+
+ Emacs Control-X bindings
+
+ "C-XC-G" abort
+ "C-XC-R" re-read-init-file
+ "C-XC-U" undo
+ "C-XC-X" exchange-point-and-mark
+ "C-X(" start-kbd-macro
+ "C-X)" end-kbd-macro
+ "C-XE" call-last-kbd-macro
+ "C-XC-?" backward-kill-line
+
+ V\bVI\bI M\bMo\bod\bde\be b\bbi\bin\bnd\bdi\bin\bng\bgs\bs
+ VI Insert Mode functions
+
+ "C-D" vi-eof-maybe
+ "C-H" backward-delete-char
+ "C-I" complete
+ "C-J" accept-line
+ "C-M" accept-line
+ "C-N" menu-complete
+ "C-P" menu-complete-backward
+ "C-R" reverse-search-history
+ "C-S" forward-search-history
+ "C-T" transpose-chars
+ "C-U" unix-line-discard
+ "C-V" quoted-insert
+ "C-W" vi-unix-word-rubout
+ "C-Y" yank
+ "C-[" vi-movement-mode
+ "C-_" vi-undo
+ " " to "~" self-insert
+ "C-?" backward-delete-char
+
+ VI Command Mode functions
+
+ "C-D" vi-eof-maybe
+ "C-E" emacs-editing-mode
+ "C-G" abort
+ "C-H" backward-char
+ "C-J" accept-line
+ "C-K" kill-line
+ "C-L" clear-screen
+ "C-M" accept-line
+ "C-N" next-history
+ "C-P" previous-history
+ "C-Q" quoted-insert
+ "C-R" reverse-search-history
+ "C-S" forward-search-history
+ "C-T" transpose-chars
+ "C-U" unix-line-discard
+ "C-V" quoted-insert
+ "C-W" vi-unix-word-rubout
+ "C-Y" yank
+ "C-_" vi-undo
+ " " forward-char
+ "#" insert-comment
+ "$" end-of-line
+ "%" vi-match
+ "&" vi-tilde-expand
+ "*" vi-complete
+ "+" next-history
+ "," vi-char-search
+ "-" previous-history
+ "." vi-redo
+ "/" vi-search
+ "0" beginning-of-line
+ "1" to "9" vi-arg-digit
+ ";" vi-char-search
+ "=" vi-complete
+ "?" vi-search
+ "A" vi-append-eol
+ "B" vi-prev-word
+ "C" vi-change-to
+ "D" vi-delete-to
+ "E" vi-end-word
+ "F" vi-char-search
+ "G" vi-fetch-history
+ "I" vi-insert-beg
+ "N" vi-search-again
+ "P" vi-put
+ "R" vi-replace
+ "S" vi-subst
+ "T" vi-char-search
+ "U" revert-line
+ "W" vi-next-word
+ "X" vi-rubout
+ "Y" vi-yank-to
+ "\" vi-complete
+ "^" vi-first-print
+ "_" vi-yank-arg
+ "`" vi-goto-mark
+ "a" vi-append-mode
+ "b" vi-prev-word
+ "c" vi-change-to
+ "d" vi-delete-to
+ "e" vi-end-word
+ "f" vi-char-search
+ "h" backward-char
+ "i" vi-insertion-mode
+ "j" next-history
+ "k" previous-history
+ "l" forward-char
+ "m" vi-set-mark
+ "n" vi-search-again
+ "p" vi-put
+ "r" vi-change-char
+ "s" vi-subst
+ "t" vi-char-search
+ "u" vi-undo
+ "w" vi-next-word
+ "x" vi-delete
+ "y" vi-yank-to
+ "|" vi-column
+ "~" vi-change-case
+
+S\bSE\bEE\bE A\bAL\bLS\bSO\bO
+ _\bT_\bh_\be _\bG_\bn_\bu _\bR_\be_\ba_\bd_\bl_\bi_\bn_\be _\bL_\bi_\bb_\br_\ba_\br_\by, Brian Fox and Chet Ramey
+ _\bT_\bh_\be _\bG_\bn_\bu _\bH_\bi_\bs_\bt_\bo_\br_\by _\bL_\bi_\bb_\br_\ba_\br_\by, Brian Fox and Chet Ramey
+ _\bb_\ba_\bs_\bh(1)
+
+F\bFI\bIL\bLE\bES\bS
+ _\b~_\b/_\b._\bi_\bn_\bp_\bu_\bt_\br_\bc
+ Individual r\bre\bea\bad\bdl\bli\bin\bne\be initialization file
+
+A\bAU\bUT\bTH\bHO\bOR\bRS\bS
+ Brian Fox, Free Software Foundation
+ bfox@gnu.org
+
+ Chet Ramey, Case Western Reserve University
+ chet.ramey@case.edu
+
+B\bBU\bUG\bG R\bRE\bEP\bPO\bOR\bRT\bTS\bS
+ If you find a bug in r\bre\bea\bad\bdl\bli\bin\bne\be,\b, you should report it. But first, you
+ should make sure that it really is a bug, and that it appears in the
+ latest version of the r\bre\bea\bad\bdl\bli\bin\bne\be library that you have.
+
+ Once you have determined that a bug actually exists, mail a bug report
+ to _\bb_\bu_\bg_\b-_\br_\be_\ba_\bd_\bl_\bi_\bn_\be@_\bg_\bn_\bu_\b._\bo_\br_\bg. If you have a fix, you are welcome to mail
+ that as well! Suggestions and `philosophical' bug reports may be
+ mailed to _\bb_\bu_\bg_\b-_\br_\be_\ba_\bd_\bl_\bi_\bn_\be@_\bg_\bn_\bu_\b._\bo_\br_\bg or posted to the Usenet newsgroup
+ g\bgn\bnu\bu.\b.b\bba\bas\bsh\bh.\b.b\bbu\bug\bg.
+
+ Comments and bug reports concerning this manual page should be directed
+ to _\bc_\bh_\be_\bt_\b._\br_\ba_\bm_\be_\by_\b@_\bc_\ba_\bs_\be_\b._\be_\bd_\bu.
+
+B\bBU\bUG\bGS\bS
+ It's too big and too slow.
+
+GNU Readline 8.3 2024 October 10 _\bR_\bE_\bA_\bD_\bL_\bI_\bN_\bE(3)
<HTML>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<!-- Created on January, 2 2018 by texi2html 1.64 -->
+<!-- Created on October, 11 2024 by texi2html 1.64 -->
<!--
Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
Karl Berry <karl@freefriends.org>
The text <KBD>M-k</KBD> is read as `Meta-K' and describes the character
produced when the Meta key (if you have one) is depressed, and the <KBD>k</KBD>
-key is pressed.
+key is pressed (a <EM>meta character</EM>).
The Meta key is labeled <KBD>ALT</KBD> on many keyboards.
On keyboards with two keys labeled <KBD>ALT</KBD> (usually to either side of
the space bar), the <KBD>ALT</KBD> on the left side is generally set to
Compose key for typing accented characters.
</P><P>
+On some keyboards, the Meta key modifier produces meta characters with
+the eighth bit (0200) set.
+You can use the <CODE>enable-meta-key</CODE> variable
+to control whether or not it does this, if the keyboard allows it.
+On many others, the terminal or terminal emulator converts the metafied
+key to a key sequence beginning with <KBD>ESC</KBD> as described in the
+next paragraph.
+</P><P>
+
If you do not have a Meta or <KBD>ALT</KBD> key, or another key working as
-a Meta key, the identical keystroke can be generated by typing <KBD>ESC</KBD>
+a Meta key, you can generally achieve the latter effect by typing <KBD>ESC</KBD>
<EM>first</EM>, and then typing <KBD>k</KBD>.
+The <KBD>ESC</KBD> character is known as the <EM>meta prefix</EM>).
+</P><P>
+
Either process is known as <EM>metafying</EM> the <KBD>k</KBD> key.
</P><P>
+If your Meta key produces a key sequence with the <KBD>ESC</KBD> meta prefix,
+you can make <KBD>M-key</KBD> key bindings you specify
+(see <CODE>Key Bindings</CODE> in <A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A>)
+do the same thing by setting the <CODE>force-meta-prefix</CODE> variable.
+</P><P>
+
The text <KBD>M-C-k</KBD> is read as `Meta-Control-k' and describes the
-character produced by <EM>metafying</EM> <KBD>C-k</KBD>.
+character produced by metafying <KBD>C-k</KBD>.
</P><P>
-In addition, several keys have their own names. Specifically,
+In addition, several keys have their own names.
+Specifically,
<KBD>DEL</KBD>, <KBD>ESC</KBD>, <KBD>LFD</KBD>, <KBD>SPC</KBD>, <KBD>RET</KBD>, and <KBD>TAB</KBD> all
stand for themselves when seen in this text, or in an init file
(see section <A HREF="readline.html#SEC9">1.3 Readline Init File</A>).
If your keyboard lacks a <KBD>LFD</KBD> key, typing <KBD>C-j</KBD> will
-produce the desired character.
+output the appropriate character.
The <KBD>RET</KBD> key may be labeled <KBD>Return</KBD> or <KBD>Enter</KBD> on
some keyboards.
</P><P>
<P>
Often during an interactive session you type in a long line of text,
-only to notice that the first word on the line is misspelled. The
-Readline library gives you a set of commands for manipulating the text
+only to notice that the first word on the line is misspelled.
+The Readline library gives you a set of commands for manipulating the text
as you type it in, allowing you to just fix your typo, and not forcing
-you to retype the majority of the line. Using these editing commands,
+you to retype the majority of the line.
+Using these editing commands,
you move the cursor to the place that needs correction, and delete or
-insert the text of the corrections. Then, when you are satisfied with
-the line, you simply press <KBD>RET</KBD>. You do not have to be at the
+insert the text of the corrections.
+Then, when you are satisfied with the line, you simply press <KBD>RET</KBD>.
+You do not have to be at the
end of the line to press <KBD>RET</KBD>; the entire line is accepted
regardless of the location of the cursor within the line.
</P><P>
<!--docid::SEC4::-->
<P>
-In order to enter characters into the line, simply type them. The typed
+In order to enter characters into the line, simply type them.
+The typed
character appears where the cursor was, and then the cursor moves one
-space to the right. If you mistype a character, you can use your
+space to the right.
+If you mistype a character, you can use your
erase character to back up and delete the mistyped character.
</P><P>
Sometimes you may mistype a character, and
-not notice the error until you have typed several other characters. In
-that case, you can type <KBD>C-b</KBD> to move the cursor to the left, and then
-correct your mistake. Afterwards, you can move the cursor to the right
-with <KBD>C-f</KBD>.
+not notice the error until you have typed several other characters.
+In that case, you can type <KBD>C-b</KBD> to move the cursor to the left,
+and then correct your mistake.
+Afterwards, you can move the cursor to the right with <KBD>C-f</KBD>.
</P><P>
When you add text in the middle of a line, you will notice that characters
to the right of the cursor are `pushed over' to make room for the text
-that you have inserted. Likewise, when you delete text behind the cursor,
+that you have inserted.
+Likewise, when you delete text behind the cursor,
characters to the right of the cursor are `pulled back' to fill in the
-blank space created by the removal of the text. A list of the bare
-essentials for editing the text of an input line follows.
+blank space created by the removal of the text.
+These are the bare
+essentials for editing the text of an input line:
</P><P>
<DL COMPACT>
<DT>Printing characters
<DD>Insert the character into the line at the cursor.
<DT><KBD>C-_</KBD> or <KBD>C-x C-u</KBD>
-<DD>Undo the last editing command. You can undo all the way back to an
-empty line.
+<DD>Undo the last editing command.
+You can undo all the way back to an empty line.
</DL>
<P>
-(Depending on your configuration, the <KBD>Backspace</KBD> key be set to
+Depending on your configuration, the <KBD>Backspace</KBD> key might be set to
delete the character to the left of the cursor and the <KBD>DEL</KBD> key set
to delete the character underneath the cursor, like <KBD>C-d</KBD>, rather
-than the character to the left of the cursor.)
+than the character to the left of the cursor.
</P><P>
<A NAME="Readline Movement Commands"></A>
<P>
The above table describes the most basic keystrokes that you need
-in order to do editing of the input line. For your convenience, many
-other commands have been added in addition to <KBD>C-b</KBD>, <KBD>C-f</KBD>,
-<KBD>C-d</KBD>, and <KBD>DEL</KBD>. Here are some commands for moving more rapidly
-about the line.
+in order to do editing of the input line.
+For your convenience, many other commands are available in
+addition to <KBD>C-b</KBD>, <KBD>C-f</KBD>, <KBD>C-d</KBD>, and <KBD>DEL</KBD>.
+Here are some commands for moving more rapidly within the line.
</P><P>
<DL COMPACT>
<P>
Notice how <KBD>C-f</KBD> moves forward a character, while <KBD>M-f</KBD> moves
-forward a word. It is a loose convention that control keystrokes
+forward a word.
+It is a loose convention that control keystrokes
operate on characters while meta keystrokes operate on words.
</P><P>
When you use a kill command, the text is saved in a <EM>kill-ring</EM>.
Any number of consecutive kills save all of the killed text together, so
-that when you yank it back, you get it all. The kill
-ring is not line specific; the text that you killed on a previously
+that when you yank it back, you get it all.
+The kill ring is not line specific; the text that you killed on a previously
typed line is available to be yanked back later, when you are typing
another line.
<A NAME="IDX3"></A>
<P>
<DT><KBD>M-<KBD>DEL</KBD></KBD>
-<DD>Kill from the cursor the start of the current word, or, if between
+<DD>Kill from the cursor to the start of the current word, or, if between
words, to the start of the previous word.
Word boundaries are the same as those used by <KBD>M-b</KBD>.
<P>
<DT><KBD>C-w</KBD>
-<DD>Kill from the cursor to the previous whitespace. This is different than
+<DD>Kill from the cursor to the previous whitespace.
+This is different than
<KBD>M-<KBD>DEL</KBD></KBD> because the word boundaries differ.
<P>
<P>
Here is how to <EM>yank</EM> the text back into the line. Yanking
-means to copy the most-recently-killed text from the kill buffer.
+means to copy the most-recently-killed text from the kill buffer
+into the line at the current cursor position.
</P><P>
<DL COMPACT>
<P>
<DT><KBD>M-y</KBD>
-<DD>Rotate the kill-ring, and yank the new top. You can only do this if
-the prior command is <KBD>C-y</KBD> or <KBD>M-y</KBD>.
+<DD>Rotate the kill-ring, and yank the new top.
+You can only do this if the prior command is <KBD>C-y</KBD> or <KBD>M-y</KBD>.
</DL>
<P>
<!--docid::SEC7::-->
<P>
-You can pass numeric arguments to Readline commands. Sometimes the
+You can pass numeric arguments to Readline commands.
+Sometimes the
argument acts as a repeat count, other times it is the <I>sign</I> of the
-argument that is significant. If you pass a negative argument to a
+argument that is significant.
+If you pass a negative argument to a
command which normally acts in a forward direction, that command will
-act in a backward direction. For example, to kill text back to the
+act in a backward direction.
+For example, to kill text back to the
start of the line, you might type <SAMP>`M-- C-k'</SAMP>.
</P><P>
The general way to pass numeric arguments to a command is to type meta
-digits before the command. If the first `digit' typed is a minus
-sign (<SAMP>`-'</SAMP>), then the sign of the argument will be negative. Once
-you have typed one meta digit to get the argument started, you can type
-the remainder of the digits, and then the command. For example, to give
+digits before the command.
+If the first `digit' typed is a minus
+sign (<SAMP>`-'</SAMP>), then the sign of the argument will be negative.
+Once you have typed one meta digit to get the argument started, you can
+type the remainder of the digits, and then the command.
+For example, to give
the <KBD>C-d</KBD> command an argument of 10, you could type <SAMP>`M-1 0 C-d'</SAMP>,
which will delete the next ten characters on the input line.
</P><P>
the next entry from the history matching the string typed so far.
An incremental search requires only as many characters as needed to
find the desired history entry.
-To search backward in the history for a particular string, type
-<KBD>C-r</KBD>. Typing <KBD>C-s</KBD> searches forward through the history.
+When using emacs editing mode, type <KBD>C-r</KBD>
+to search backward in the history for a particular string.
+Typing <KBD>C-s</KBD> searches forward through the history.
The characters present in the value of the <CODE>isearch-terminators</CODE> variable
are used to terminate an incremental search.
If that variable has not been assigned a value, the <KBD>ESC</KBD> and
the current line, and begin editing.
</P><P>
-Readline remembers the last incremental search string. If two
-<KBD>C-r</KBD>s are typed without any intervening characters defining a new
-search string, any remembered search string is used.
+Readline remembers the last incremental search string.
+If two <KBD>C-r</KBD>s are typed without any intervening characters defining
+a new search string, Readline uses any remembered search string.
</P><P>
Non-incremental searches read the entire search string before starting
-to search for matching history lines. The search string may be
-typed by the user or be part of the contents of the current line.
+to search for matching history entries.
+The search string may be typed by the user or be part of the contents of
+the current line.
</P><P>
<A NAME="Readline Init File"></A>
keybindings installed by default, it is possible to use a different set
of keybindings.
Any user can customize programs that use Readline by putting
-commands in an <EM>inputrc</EM> file, conventionally in his home directory.
-The name of this
-file is taken from the value of the environment variable <CODE>INPUTRC</CODE>. If
-that variable is unset, the default is <TT>`~/.inputrc'</TT>. If that
-file does not exist or cannot be read, the ultimate default is
+commands in an <EM>inputrc</EM> file, conventionally in their home directory.
+The name of this file is taken from the value of the
+environment variable <CODE>INPUTRC</CODE>.
+If that variable is unset, the default is <TT>`~/.inputrc'</TT>.
+If that file does not exist or cannot be read, readline looks for
<TT>`/etc/inputrc'</TT>.
</P><P>
-When a program which uses the Readline library starts up, the
-init file is read, and the key bindings are set.
+When a program which uses the Readline library starts up, Readline reads
+the init file and sets any variables and key bindings it contains.
</P><P>
In addition, the <CODE>C-x C-r</CODE> command re-reads this init file, thus
<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Syntax for the commands in the inputrc file.</TD></TR>
-</TABLE>
-
-<br>
-<TABLE BORDER=0 CELLSPACING=0>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC11">1.3.2 Conditional Init Constructs</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Conditional key bindings in the inputrc file.</TD></TR>
-</TABLE>
-
-<br>
-<TABLE BORDER=0 CELLSPACING=0>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC12">1.3.3 Sample Init File</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">An example inputrc file.</TD></TR>
</TABLE></BLOCKQUOTE>
<P>
<P>
There are only a few basic constructs allowed in the
-Readline init file. Blank lines are ignored.
+Readline init file.
+Blank lines are ignored.
Lines beginning with a <SAMP>`#'</SAMP> are comments.
Lines beginning with a <SAMP>`$'</SAMP> indicate conditional
-constructs (see section <A HREF="readline.html#SEC11">1.3.2 Conditional Init Constructs</A>). Other lines
-denote variable settings and key bindings.
+constructs (see section <A HREF="readline.html#SEC11">1.3.2 Conditional Init Constructs</A>).
+Other lines denote variable settings and key bindings.
</P><P>
<DL COMPACT>
<TABLE><tr><td> </td><td class=example><pre>set editing-mode vi
</pre></td></tr></table></P><P>
-Variable names and values, where appropriate, are recognized without regard
-to case. Unrecognized variable names are ignored.
+Variable names and values, where appropriate, are recognized without
+regard to case.
+Unrecognized variable names are ignored.
</P><P>
Boolean variables (those that can be set to on or off) are set to on if
-the value is null or empty, <VAR>on</VAR> (case-insensitive), or 1. Any other
-value results in the variable being set to off.
+the value is null or empty, <VAR>on</VAR> (case-insensitive), or 1.
+Any other value results in the variable being set to off.
</P><P>
A great deal of run-time behavior is changeable with the following
<A NAME="IDX4"></A>
<DL COMPACT>
-<DT><CODE>bell-style</CODE>
+<DT><CODE>active-region-start-color</CODE>
<DD><A NAME="IDX5"></A>
+A string variable that controls the text color and background when displaying
+the text in the active region (see the description of
+<CODE>enable-active-region</CODE> below).
+This string must not take up any physical character positions on the display,
+so it should consist only of terminal escape sequences.
+It is output to the terminal before displaying the text in the active region.
+This variable is reset to the default value whenever the terminal type changes.
+The default value is the string that puts the terminal in standout mode,
+as obtained from the terminal's terminfo description.
+A sample value might be <SAMP>`\e[01;33m'</SAMP>.
+<P>
+
+<DT><CODE>active-region-end-color</CODE>
+<DD><A NAME="IDX6"></A>
+A string variable that "undoes" the effects of <CODE>active-region-start-color</CODE>
+and restores "normal" terminal display appearance after displaying text
+in the active region.
+This string must not take up any physical character positions on the display,
+so it should consist only of terminal escape sequences.
+It is output to the terminal after displaying the text in the active region.
+This variable is reset to the default value whenever the terminal type changes.
+The default value is the string that restores the terminal from standout mode,
+as obtained from the terminal's terminfo description.
+A sample value might be <SAMP>`\e[0m'</SAMP>.
+<P>
+
+<DT><CODE>bell-style</CODE>
+<DD><A NAME="IDX7"></A>
Controls what happens when Readline wants to ring the terminal bell.
-If set to <SAMP>`none'</SAMP>, Readline never rings the bell. If set to
-<SAMP>`visible'</SAMP>, Readline uses a visible bell if one is available.
+If set to <SAMP>`none'</SAMP>, Readline never rings the bell.
+If set to <SAMP>`visible'</SAMP>, Readline uses a visible bell if one is available.
If set to <SAMP>`audible'</SAMP> (the default), Readline attempts to ring
the terminal's bell.
<P>
<DT><CODE>bind-tty-special-chars</CODE>
-<DD><A NAME="IDX6"></A>
+<DD><A NAME="IDX8"></A>
If set to <SAMP>`on'</SAMP> (the default), Readline attempts to bind the control
-characters treated specially by the kernel's terminal driver to their
+characters that are
+treated specially by the kernel's terminal driver to their
Readline equivalents.
+These override the default Readline bindings described here.
+Type <SAMP>`stty -a'</SAMP> at a Bash prompt to see your current terminal settings,
+including the special control characters (usually <CODE>cchars</CODE>).
<P>
<DT><CODE>blink-matching-paren</CODE>
-<DD><A NAME="IDX7"></A>
+<DD><A NAME="IDX9"></A>
If set to <SAMP>`on'</SAMP>, Readline attempts to briefly move the cursor to an
-opening parenthesis when a closing parenthesis is inserted. The default
-is <SAMP>`off'</SAMP>.
+opening parenthesis when a closing parenthesis is inserted.
+The default is <SAMP>`off'</SAMP>.
<P>
<DT><CODE>colored-completion-prefix</CODE>
-<DD><A NAME="IDX8"></A>
+<DD><A NAME="IDX10"></A>
If set to <SAMP>`on'</SAMP>, when listing completions, Readline displays the
common prefix of the set of possible completions using a different color.
The color definitions are taken from the value of the <CODE>LS_COLORS</CODE>
environment variable.
+If there is a color definition in <CODE>LS_COLORS</CODE> for the custom suffix
+<SAMP>`readline-colored-completion-prefix'</SAMP>, Readline uses this color for
+the common prefix instead of its default.
The default is <SAMP>`off'</SAMP>.
<P>
<DT><CODE>colored-stats</CODE>
-<DD><A NAME="IDX9"></A>
+<DD><A NAME="IDX11"></A>
If set to <SAMP>`on'</SAMP>, Readline displays possible completions using different
colors to indicate their file type.
The color definitions are taken from the value of the <CODE>LS_COLORS</CODE>
<P>
<DT><CODE>comment-begin</CODE>
-<DD><A NAME="IDX10"></A>
-The string to insert at the beginning of the line when the
-<CODE>insert-comment</CODE> command is executed. The default value
-is <CODE>"#"</CODE>.
+<DD><A NAME="IDX12"></A>
+The string to insert at the beginning of the line by the
+<CODE>insert-comment</CODE> command.
+The default value is <CODE>"#"</CODE>.
<P>
<DT><CODE>completion-display-width</CODE>
-<DD><A NAME="IDX11"></A>
+<DD><A NAME="IDX13"></A>
The number of screen columns used to display possible matches
when performing completion.
The value is ignored if it is less than 0 or greater than the terminal
<P>
<DT><CODE>completion-ignore-case</CODE>
-<DD><A NAME="IDX12"></A>
+<DD><A NAME="IDX14"></A>
If set to <SAMP>`on'</SAMP>, Readline performs filename matching and completion
in a case-insensitive fashion.
The default value is <SAMP>`off'</SAMP>.
<P>
<DT><CODE>completion-map-case</CODE>
-<DD><A NAME="IDX13"></A>
+<DD><A NAME="IDX15"></A>
If set to <SAMP>`on'</SAMP>, and <VAR>completion-ignore-case</VAR> is enabled, Readline
treats hyphens (<SAMP>`-'</SAMP>) and underscores (<SAMP>`_'</SAMP>) as equivalent when
performing case-insensitive filename matching and completion.
+The default value is <SAMP>`off'</SAMP>.
<P>
<DT><CODE>completion-prefix-display-length</CODE>
-<DD><A NAME="IDX14"></A>
-The length in characters of the common prefix of a list of possible
-completions that is displayed without modification. When set to a
-value greater than zero, common prefixes longer than this value are
-replaced with an ellipsis when displaying possible completions.
+<DD><A NAME="IDX16"></A>
+The maximum
+length in characters of the common prefix of a list of possible
+completions that is displayed without modification.
+When set to a value greater than zero, readline
+replaces common prefixes longer than this value
+with an ellipsis when displaying possible completions.
<P>
<DT><CODE>completion-query-items</CODE>
-<DD><A NAME="IDX15"></A>
-The number of possible completions that determines when the user is
-asked whether the list of possibilities should be displayed.
-If the number of possible completions is greater than this value,
-Readline will ask the user whether or not he wishes to view
-them; otherwise, they are simply listed.
-This variable must be set to an integer value greater than or equal to 0.
-A negative value means Readline should never ask.
+<DD><A NAME="IDX17"></A>
+The number of possible completions that determines when the user is asked
+whether the list of possibilities should be displayed.
+If the number of possible completions is greater than
+or equal to this value, Readline will ask whether or not
+the user wishes to view them;
+otherwise, Readline simply lists the completions.
+This variable must be set to an integer value greater than or equal to zero.
+A zero value means Readline should never ask; negative
+values are treated as zero.
The default limit is <CODE>100</CODE>.
<P>
<DT><CODE>convert-meta</CODE>
-<DD><A NAME="IDX16"></A>
-If set to <SAMP>`on'</SAMP>, Readline will convert characters with the
-eighth bit set to an ASCII key sequence by stripping the eighth
-bit and prefixing an <KBD>ESC</KBD> character, converting them to a
-meta-prefixed key sequence. The default value is <SAMP>`on'</SAMP>, but
-will be set to <SAMP>`off'</SAMP> if the locale is one that contains
-eight-bit characters.
+<DD><A NAME="IDX18"></A>
+If set to <SAMP>`on'</SAMP>, Readline will convert characters it reads
+that have the eighth bit set to an ASCII key sequence by
+clearing the eighth bit and prefixing an <KBD>ESC</KBD> character,
+converting them to a meta-prefixed key sequence.
+The default value is <SAMP>`on'</SAMP>, but Readline will set it to <SAMP>`off'</SAMP>
+if the locale contains
+characters whose encodings may include bytes with the eighth bit set.
+This variable is dependent on the <CODE>LC_CTYPE</CODE> locale category, and
+may change if the locale changes.
+This variable also affects key bindings;
+see the description of <CODE>force-meta-prefix</CODE> below.
<P>
<DT><CODE>disable-completion</CODE>
-<DD><A NAME="IDX17"></A>
+<DD><A NAME="IDX19"></A>
If set to <SAMP>`On'</SAMP>, Readline will inhibit word completion.
-Completion characters will be inserted into the line as if they had
-been mapped to <CODE>self-insert</CODE>. The default is <SAMP>`off'</SAMP>.
+Completion characters will be inserted into the line as if they
+had been mapped to <CODE>self-insert</CODE>.
+The default is <SAMP>`off'</SAMP>.
<P>
<DT><CODE>echo-control-characters</CODE>
-<DD><A NAME="IDX18"></A>
+<DD><A NAME="IDX20"></A>
When set to <SAMP>`on'</SAMP>, on operating systems that indicate they support it,
-readline echoes a character corresponding to a signal generated from the
-keyboard. The default is <SAMP>`on'</SAMP>.
+Readline echoes a character corresponding to a signal generated from the
+keyboard.
+The default is <SAMP>`on'</SAMP>.
<P>
<DT><CODE>editing-mode</CODE>
-<DD><A NAME="IDX19"></A>
-The <CODE>editing-mode</CODE> variable controls which default set of
-key bindings is used. By default, Readline starts up in Emacs editing
-mode, where the keystrokes are most similar to Emacs. This variable can be
-set to either <SAMP>`emacs'</SAMP> or <SAMP>`vi'</SAMP>.
+<DD><A NAME="IDX21"></A>
+The <CODE>editing-mode</CODE> variable controls the default set of
+key bindings.
+By default, Readline starts up in emacs editing mode, where
+the keystrokes are most similar to Emacs.
+This variable can be set to either <SAMP>`emacs'</SAMP> or <SAMP>`vi'</SAMP>.
<P>
<DT><CODE>emacs-mode-string</CODE>
-<DD><A NAME="IDX20"></A>
+<DD><A NAME="IDX22"></A>
If the <VAR>show-mode-in-prompt</VAR> variable is enabled,
this string is displayed immediately before the last line of the primary
-prompt when emacs editing mode is active. The value is expanded like a
-key binding, so the standard set of meta- and control prefixes and
+prompt when emacs editing mode is active.
+The value is expanded like a
+key binding, so the standard set of meta- and control- prefixes and
backslash escape sequences is available.
-Use the <SAMP>`\1'</SAMP> and <SAMP>`\2'</SAMP> escapes to begin and end sequences of
+The <SAMP>`\1'</SAMP> and <SAMP>`\2'</SAMP> escapes begin and end sequences of
non-printing characters, which can be used to embed a terminal control
sequence into the mode string.
The default is <SAMP>`@'</SAMP>.
<P>
+<DT><CODE>enable-active-region</CODE>
+<DD><A NAME="IDX23"></A>
+<EM>point</EM> is the current cursor position, and <EM>mark</EM> refers to a
+saved cursor position (see section <A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A>).
+The text between the point and mark is referred to as the <EM>region</EM>.
+When this variable is set to <SAMP>`On'</SAMP>, Readline allows certain commands
+to designate the region as <EM>active</EM>.
+When the region is active, Readline highlights the text in the region using
+the value of the <CODE>active-region-start-color</CODE>, which defaults to the
+string that enables the terminal's standout mode.
+The active region shows the text inserted by bracketed-paste and any
+matching text found by incremental and non-incremental history searches.
+The default is <SAMP>`On'</SAMP>.
+<P>
+
<DT><CODE>enable-bracketed-paste</CODE>
-<DD><A NAME="IDX21"></A>
-When set to <SAMP>`On'</SAMP>, Readline will configure the terminal in a way
-that will enable it to insert each paste into the editing buffer as a
-single string of characters, instead of treating each character as if
-it had been read from the keyboard. This can prevent pasted characters
-from being interpreted as editing commands. The default is <SAMP>`off'</SAMP>.
+<DD><A NAME="IDX24"></A>
+When set to <SAMP>`On'</SAMP>, Readline configures the terminal to insert each
+paste into the editing buffer as a single string of characters, instead
+of treating each character as if it had been read from the keyboard.
+This is called putting the terminal into <EM>bracketed paste mode</EM>;
+it prevents Readline from executing any editing commands bound
+to key sequences appearing in the pasted text.
+The default is <SAMP>`On'</SAMP>.
<P>
<DT><CODE>enable-keypad</CODE>
-<DD><A NAME="IDX22"></A>
+<DD><A NAME="IDX25"></A>
When set to <SAMP>`on'</SAMP>, Readline will try to enable the application
-keypad when it is called. Some systems need this to enable the
-arrow keys. The default is <SAMP>`off'</SAMP>.
+keypad when it is called.
+Some systems need this to enable the arrow keys.
+The default is <SAMP>`off'</SAMP>.
<P>
<DT><CODE>enable-meta-key</CODE>
-<DD>When set to <SAMP>`on'</SAMP>, Readline will try to enable any meta modifier
-key the terminal claims to support when it is called. On many terminals,
-the meta key is used to send eight-bit characters.
+<DD><A NAME="IDX26"></A>
+When set to <SAMP>`on'</SAMP>, Readline will try to enable any meta
+modifier key the terminal claims to support when it is called.
+On many terminals, the Meta key is used to send eight-bit characters;
+this variable checks for the terminal capability that indicates the
+terminal can enable and disable a mode that sets the eighth bit of a
+character (0200) if the Meta key is held down when the character is
+typed (a meta character).
The default is <SAMP>`on'</SAMP>.
<P>
<DT><CODE>expand-tilde</CODE>
-<DD><A NAME="IDX23"></A>
-If set to <SAMP>`on'</SAMP>, tilde expansion is performed when Readline
-attempts word completion. The default is <SAMP>`off'</SAMP>.
+<DD><A NAME="IDX27"></A>
+If set to <SAMP>`on'</SAMP>, Readline attempts tilde expansion when it
+attempts word completion.
+The default is <SAMP>`off'</SAMP>.
+<P>
+
+<DT><CODE>force-meta-prefix</CODE>
+<DD><A NAME="IDX28"></A>
+If set to <SAMP>`on'</SAMP>, Readline modifies its behavior when binding key
+sequences containing <KBD>\M-</KBD> or <CODE>Meta-</CODE>
+(see <CODE>Key Bindings</CODE> in <A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A>)
+by converting a key sequence of the form
+<KBD>\M-</KBD><VAR>C</VAR> or <CODE>Meta-</CODE><VAR>C</VAR> to the two-character sequence
+<KBD>ESC</KBD><VAR>C</VAR> (adding the meta prefix).
+If <CODE>force-meta-prefix</CODE> is set to <SAMP>`off'</SAMP> (the default),
+Readline uses the value of the <CODE>convert-meta</CODE> variable to determine
+whether to perform this conversion:
+if <CODE>convert-meta</CODE> is <SAMP>`on'</SAMP>,
+Readline performs the conversion described above;
+if it is <SAMP>`off'</SAMP>, Readline converts <VAR>C</VAR> to a meta character by
+setting the eighth bit (0200).
+The default is <SAMP>`off'</SAMP>.
<P>
<DT><CODE>history-preserve-point</CODE>
-<DD><A NAME="IDX24"></A>
+<DD><A NAME="IDX29"></A>
If set to <SAMP>`on'</SAMP>, the history code attempts to place the point (the
current cursor position) at the
same location on each history line retrieved with <CODE>previous-history</CODE>
-or <CODE>next-history</CODE>. The default is <SAMP>`off'</SAMP>.
+or <CODE>next-history</CODE>.
+The default is <SAMP>`off'</SAMP>.
<P>
<DT><CODE>history-size</CODE>
-<DD><A NAME="IDX25"></A>
+<DD><A NAME="IDX30"></A>
Set the maximum number of history entries saved in the history list.
If set to zero, any existing history entries are deleted and no new entries
are saved.
If set to a value less than zero, the number of history entries is not
limited.
By default, the number of history entries is not limited.
-If an attempt is made to set <VAR>history-size</VAR> to a non-numeric value,
+If you try to set <VAR>history-size</VAR> to a non-numeric value,
the maximum number of history entries will be set to 500.
<P>
<DT><CODE>horizontal-scroll-mode</CODE>
-<DD><A NAME="IDX26"></A>
-This variable can be set to either <SAMP>`on'</SAMP> or <SAMP>`off'</SAMP>. Setting it
-to <SAMP>`on'</SAMP> means that the text of the lines being edited will scroll
-horizontally on a single screen line when they are longer than the width
-of the screen, instead of wrapping onto a new screen line. By default,
-this variable is set to <SAMP>`off'</SAMP>.
+<DD><A NAME="IDX31"></A>
+Setting this variable to <SAMP>`on'</SAMP> means that the text of the lines
+being edited will scroll horizontally on a single screen line when
+the lines are longer than the width of the screen, instead of wrapping
+onto a new screen line.
+This variable is automatically set to <SAMP>`on'</SAMP> for terminals of height 1.
+By default, this variable is set to <SAMP>`off'</SAMP>.
<P>
<DT><CODE>input-meta</CODE>
-<DD><A NAME="IDX27"></A>
-<A NAME="IDX28"></A>
-If set to <SAMP>`on'</SAMP>, Readline will enable eight-bit input (it
+<DD><A NAME="IDX32"></A>
+<A NAME="IDX33"></A>
+If set to <SAMP>`on'</SAMP>, Readline will enable eight-bit input (that is, it
will not clear the eighth bit in the characters it reads),
-regardless of what the terminal claims it can support. The
-default value is <SAMP>`off'</SAMP>, but Readline will set it to <SAMP>`on'</SAMP> if the
-locale contains eight-bit characters.
-The name <CODE>meta-flag</CODE> is a synonym for this variable.
+regardless of what the terminal claims it can support.
+The default value is <SAMP>`off'</SAMP>, but Readline will set it to <SAMP>`on'</SAMP>
+if the locale contains characters whose encodings may include bytes
+with the eighth bit set.
+This variable is dependent on the <CODE>LC_CTYPE</CODE> locale category, and
+its value may change if the locale changes.
+The name <CODE>meta-flag</CODE> is a synonym for <CODE>input-meta</CODE>.
<P>
<DT><CODE>isearch-terminators</CODE>
-<DD><A NAME="IDX29"></A>
+<DD><A NAME="IDX34"></A>
The string of characters that should terminate an incremental search without
subsequently executing the character as a command (see section <A HREF="readline.html#SEC8">1.2.5 Searching for Commands in the History</A>).
If this variable has not been given a value, the characters <KBD>ESC</KBD> and
<P>
<DT><CODE>keymap</CODE>
-<DD><A NAME="IDX30"></A>
+<DD><A NAME="IDX35"></A>
Sets Readline's idea of the current keymap for key binding commands.
-Acceptable <CODE>keymap</CODE> names are
+Built-in <CODE>keymap</CODE> names are
<CODE>emacs</CODE>,
<CODE>emacs-standard</CODE>,
<CODE>emacs-meta</CODE>,
<CODE>vi-insert</CODE>.
<CODE>vi</CODE> is equivalent to <CODE>vi-command</CODE> (<CODE>vi-move</CODE> is also a
synonym); <CODE>emacs</CODE> is equivalent to <CODE>emacs-standard</CODE>.
-The default value is <CODE>emacs</CODE>.
-The value of the <CODE>editing-mode</CODE> variable also affects the
+Applications may add additional names.
+The default value is <CODE>emacs</CODE>;
+the value of the <CODE>editing-mode</CODE> variable also affects the
default keymap.
<P>
<DT><CODE>keyseq-timeout</CODE>
-<DD>Specifies the duration Readline will wait for a character when reading an
-ambiguous key sequence (one that can form a complete key sequence using
-the input read so far, or can take additional input to complete a longer
-key sequence).
-If no input is received within the timeout, Readline will use the shorter
-but complete key sequence.
+<DD>Specifies the duration Readline will wait for a character when
+reading an ambiguous key sequence
+(one that can form a complete key sequence using the input read so far,
+or can take additional input to complete a longer key sequence).
+If Readline doesn't receive any input within the timeout, it will use the
+shorter but complete key sequence.
Readline uses this value to determine whether or not input is
available on the current input source (<CODE>rl_instream</CODE> by default).
The value is specified in milliseconds, so a value of 1000 means that
<P>
<DT><CODE>mark-directories</CODE>
-<DD>If set to <SAMP>`on'</SAMP>, completed directory names have a slash
-appended. The default is <SAMP>`on'</SAMP>.
+<DD>If set to <SAMP>`on'</SAMP>, completed directory names have a slash appended.
+The default is <SAMP>`on'</SAMP>.
<P>
<DT><CODE>mark-modified-lines</CODE>
-<DD><A NAME="IDX31"></A>
-This variable, when set to <SAMP>`on'</SAMP>, causes Readline to display an
+<DD><A NAME="IDX36"></A>
+When this variable is set to <SAMP>`on'</SAMP>, Readline will to display an
asterisk (<SAMP>`*'</SAMP>) at the start of history lines which have been modified.
This variable is <SAMP>`off'</SAMP> by default.
<P>
<DT><CODE>mark-symlinked-directories</CODE>
-<DD><A NAME="IDX32"></A>
-If set to <SAMP>`on'</SAMP>, completed names which are symbolic links
-to directories have a slash appended (subject to the value of
-<CODE>mark-directories</CODE>).
+<DD><A NAME="IDX37"></A>
+If set to <SAMP>`on'</SAMP>, completed names which are symbolic links to directories
+have a slash appended, subject to the value of <CODE>mark-directories</CODE>.
The default is <SAMP>`off'</SAMP>.
<P>
<DT><CODE>match-hidden-files</CODE>
-<DD><A NAME="IDX33"></A>
-This variable, when set to <SAMP>`on'</SAMP>, causes Readline to match files whose
+<DD><A NAME="IDX38"></A>
+This variable, when set to <SAMP>`on'</SAMP>, forces Readline to match files whose
names begin with a <SAMP>`.'</SAMP> (hidden files) when performing filename
completion.
-If set to <SAMP>`off'</SAMP>, the leading <SAMP>`.'</SAMP> must be
-supplied by the user in the filename to be completed.
+If set to <SAMP>`off'</SAMP>, the user must include the leading <SAMP>`.'</SAMP>
+in the filename to be completed.
This variable is <SAMP>`on'</SAMP> by default.
<P>
<DT><CODE>menu-complete-display-prefix</CODE>
-<DD><A NAME="IDX34"></A>
+<DD><A NAME="IDX39"></A>
If set to <SAMP>`on'</SAMP>, menu completion displays the common prefix of the
list of possible completions (which may be empty) before cycling through
-the list. The default is <SAMP>`off'</SAMP>.
+the list.
+The default is <SAMP>`off'</SAMP>.
<P>
<DT><CODE>output-meta</CODE>
-<DD><A NAME="IDX35"></A>
+<DD><A NAME="IDX40"></A>
If set to <SAMP>`on'</SAMP>, Readline will display characters with the
eighth bit set directly rather than as a meta-prefixed escape
sequence.
-The default is <SAMP>`off'</SAMP>, but Readline will set it to <SAMP>`on'</SAMP> if the
-locale contains eight-bit characters.
+The default is <SAMP>`off'</SAMP>, but Readline will set it to <SAMP>`on'</SAMP>
+if the locale contains characters whose encodings may include
+bytes with the eighth bit set.
+This variable is dependent on the <CODE>LC_CTYPE</CODE> locale category, and
+its value may change if the locale changes.
<P>
<DT><CODE>page-completions</CODE>
-<DD><A NAME="IDX36"></A>
+<DD><A NAME="IDX41"></A>
If set to <SAMP>`on'</SAMP>, Readline uses an internal <CODE>more</CODE>-like pager
to display a screenful of possible completions at a time.
This variable is <SAMP>`on'</SAMP> by default.
<P>
+<DT><CODE>prefer-visible-bell</CODE>
+<DD>See <CODE>bell-style</CODE>.
+<P>
+
<DT><CODE>print-completions-horizontally</CODE>
<DD>If set to <SAMP>`on'</SAMP>, Readline will display completions with matches
sorted horizontally in alphabetical order, rather than down the screen.
<P>
<DT><CODE>revert-all-at-newline</CODE>
-<DD><A NAME="IDX37"></A>
+<DD><A NAME="IDX42"></A>
If set to <SAMP>`on'</SAMP>, Readline will undo all changes to history lines
-before returning when <CODE>accept-line</CODE> is executed. By default,
+before returning when executing <CODE>accept-line</CODE>.
+By default,
history lines may be modified and retain individual undo lists across
-calls to <CODE>readline</CODE>. The default is <SAMP>`off'</SAMP>.
+calls to <CODE>readline()</CODE>.
+The default is <SAMP>`off'</SAMP>.
+<P>
+
+<DT><CODE>search-ignore-case</CODE>
+<DD><A NAME="IDX43"></A>
+If set to <SAMP>`on'</SAMP>, Readline performs incremental and non-incremental
+history list searches in a case-insensitive fashion.
+The default value is <SAMP>`off'</SAMP>.
<P>
<DT><CODE>show-all-if-ambiguous</CODE>
-<DD><A NAME="IDX38"></A>
-This alters the default behavior of the completion functions. If
-set to <SAMP>`on'</SAMP>,
+<DD><A NAME="IDX44"></A>
+This alters the default behavior of the completion functions.
+If set to <SAMP>`on'</SAMP>,
words which have more than one possible completion cause the
matches to be listed immediately instead of ringing the bell.
The default value is <SAMP>`off'</SAMP>.
<P>
<DT><CODE>show-all-if-unmodified</CODE>
-<DD><A NAME="IDX39"></A>
+<DD><A NAME="IDX45"></A>
This alters the default behavior of the completion functions in
a fashion similar to <VAR>show-all-if-ambiguous</VAR>.
If set to <SAMP>`on'</SAMP>,
<P>
<DT><CODE>show-mode-in-prompt</CODE>
-<DD><A NAME="IDX40"></A>
+<DD><A NAME="IDX46"></A>
If set to <SAMP>`on'</SAMP>, add a string to the beginning of the prompt
indicating the editing mode: emacs, vi command, or vi insertion.
The mode strings are user-settable (e.g., <VAR>emacs-mode-string</VAR>).
<P>
<DT><CODE>skip-completed-text</CODE>
-<DD><A NAME="IDX41"></A>
+<DD><A NAME="IDX47"></A>
If set to <SAMP>`on'</SAMP>, this alters the default completion behavior when
-inserting a single match into the line. It's only active when
-performing completion in the middle of a word. If enabled, readline
-does not insert characters from the completion that match characters
-after point in the word being completed, so portions of the word
-following the cursor are not duplicated.
+inserting a single match into the line.
+It's only active when performing completion in the middle of a word.
+If enabled, readline does not insert characters from the completion
+that match characters after point in the word being completed,
+so portions of the word following the cursor are not duplicated.
For instance, if this is enabled, attempting completion when the cursor
-is after the <SAMP>`e'</SAMP> in <SAMP>`Makefile'</SAMP> will result in <SAMP>`Makefile'</SAMP>
-rather than <SAMP>`Makefilefile'</SAMP>, assuming there is a single possible
-completion.
+is after the first <SAMP>`e'</SAMP> in <SAMP>`Makefile'</SAMP> will result in
+<SAMP>`Makefile'</SAMP> rather than <SAMP>`Makefilefile'</SAMP>,
+assuming there is a single possible completion.
The default value is <SAMP>`off'</SAMP>.
<P>
<DT><CODE>vi-cmd-mode-string</CODE>
-<DD><A NAME="IDX42"></A>
+<DD><A NAME="IDX48"></A>
If the <VAR>show-mode-in-prompt</VAR> variable is enabled,
this string is displayed immediately before the last line of the primary
prompt when vi editing mode is active and in command mode.
-The value is expanded like a
-key binding, so the standard set of meta- and control prefixes and
-backslash escape sequences is available.
-Use the <SAMP>`\1'</SAMP> and <SAMP>`\2'</SAMP> escapes to begin and end sequences of
+The value is expanded like a key binding, so the standard set of
+meta- and control- prefixes and backslash escape sequences is available.
+The <SAMP>`\1'</SAMP> and <SAMP>`\2'</SAMP> escapes begin and end sequences of
non-printing characters, which can be used to embed a terminal control
sequence into the mode string.
The default is <SAMP>`(cmd)'</SAMP>.
<P>
<DT><CODE>vi-ins-mode-string</CODE>
-<DD><A NAME="IDX43"></A>
+<DD><A NAME="IDX49"></A>
If the <VAR>show-mode-in-prompt</VAR> variable is enabled,
this string is displayed immediately before the last line of the primary
prompt when vi editing mode is active and in insertion mode.
-The value is expanded like a
-key binding, so the standard set of meta- and control prefixes and
-backslash escape sequences is available.
-Use the <SAMP>`\1'</SAMP> and <SAMP>`\2'</SAMP> escapes to begin and end sequences of
+The value is expanded like a key binding, so the standard set of
+meta- and control- prefixes and backslash escape sequences is available.
+The <SAMP>`\1'</SAMP> and <SAMP>`\2'</SAMP> escapes begin and end sequences of
non-printing characters, which can be used to embed a terminal control
sequence into the mode string.
The default is <SAMP>`(ins)'</SAMP>.
<P>
<DT><CODE>visible-stats</CODE>
-<DD><A NAME="IDX44"></A>
+<DD><A NAME="IDX50"></A>
If set to <SAMP>`on'</SAMP>, a character denoting a file's type
is appended to the filename when listing possible
-completions. The default is <SAMP>`off'</SAMP>.
+completions.
+The default is <SAMP>`off'</SAMP>.
<P>
</DL>
<P>
<DT>Key Bindings
-<DD>The syntax for controlling key bindings in the init file is
-simple. First you need to find the name of the command that you
-want to change. The following sections contain tables of the command
+<DD>The syntax for controlling key bindings in the init file is simple.
+First you need to find the name of the command that you
+want to change.
+The following sections contain tables of the command
name, the default keybinding, if any, and a short description of what
the command does.
<P>
what you find most comfortable.
</P><P>
-In addition to command names, readline allows keys to be bound
+In addition to command names, Readline allows keys to be bound
to a string that is inserted when the key is pressed (a <VAR>macro</VAR>).
+The difference between a macro and a command is that a macro is
+enclosed in single or double quotes.
</P><P>
<DL COMPACT>
<DT><VAR>keyname</VAR>: <VAR>function-name</VAR> or <VAR>macro</VAR>
-<DD><VAR>keyname</VAR> is the name of a key spelled out in English. For example:
+<DD><VAR>keyname</VAR> is the name of a key spelled out in English.
+For example:
<TABLE><tr><td> </td><td class=example><pre>Control-u: universal-argument
Meta-Rubout: backward-kill-word
Control-o: "> output"
</pre></td></tr></table><P>
-In the above example, <KBD>C-u</KBD> is bound to the function
+In the example above, <KBD>C-u</KBD> is bound to the function
<CODE>universal-argument</CODE>,
<KBD>M-DEL</KBD> is bound to the function <CODE>backward-kill-word</CODE>, and
<KBD>C-o</KBD> is bound to run the macro
<SAMP>`> output'</SAMP> into the line).
</P><P>
-A number of symbolic character names are recognized while
-processing this key binding syntax:
+This key binding syntax recognizes a number of symbolic character names:
<VAR>DEL</VAR>,
<VAR>ESC</VAR>,
<VAR>ESCAPE</VAR>,
<DT>"<VAR>keyseq</VAR>": <VAR>function-name</VAR> or <VAR>macro</VAR>
<DD><VAR>keyseq</VAR> differs from <VAR>keyname</VAR> above in that strings
denoting an entire key sequence can be specified, by placing
-the key sequence in double quotes. Some GNU Emacs style key
-escapes can be used, as in the following example, but the
-special character names are not recognized.
+the key sequence in double quotes.
+Some GNU Emacs style key escapes can be used,
+as in the following example, but none of the
+special character names are recognized.
<P>
<TABLE><tr><td> </td><td class=example><pre>"\C-u": universal-argument
<DL COMPACT>
<DT><CODE><KBD>\C-</KBD></CODE>
-<DD>control prefix
+<DD>A control prefix.
<DT><CODE><KBD>\M-</KBD></CODE>
-<DD>meta prefix
+<DD>Adding the meta prefix or converting the following character to a meta
+character, as described above under <CODE>force-meta-prefix</CODE>
+(see <CODE>Variable Settings</CODE> in <A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A>).
<DT><CODE><KBD>\e</KBD></CODE>
-<DD>an escape character
+<DD>An escape character.
<DT><CODE><KBD>\\</KBD></CODE>
-<DD>backslash
+<DD>Backslash.
<DT><CODE><KBD>\"</KBD></CODE>
-<DD><KBD>"</KBD>, a double quotation mark
+<DD><KBD>"</KBD>, a double quotation mark.
<DT><CODE><KBD>\'</KBD></CODE>
-<DD><KBD>'</KBD>, a single quote or apostrophe
+<DD><KBD>'</KBD>, a single quote or apostrophe.
</DL>
<P>
<DT><CODE>\v</CODE>
<DD>vertical tab
<DT><CODE>\<VAR>nnn</VAR></CODE>
-<DD>the eight-bit character whose value is the octal value <VAR>nnn</VAR>
-(one to three digits)
+<DD>The eight-bit character whose value is the octal value <VAR>nnn</VAR>
+(one to three digits).
<DT><CODE>\x<VAR>HH</VAR></CODE>
-<DD>the eight-bit character whose value is the hexadecimal value <VAR>HH</VAR>
-(one or two hex digits)
+<DD>The eight-bit character whose value is the hexadecimal value <VAR>HH</VAR>
+(one or two hex digits).
</DL>
<P>
When entering the text of a macro, single or double quotes must
be used to indicate a macro definition.
Unquoted text is assumed to be a function name.
-In the macro body, the backslash escapes described above are expanded.
+Tthe backslash escapes described above are expanded
+in the macro body.
Backslash will quote any other character in the macro text,
including <SAMP>`"'</SAMP> and <SAMP>`''</SAMP>.
For example, the following binding will make <SAMP>`<KBD>C-x</KBD> \'</SAMP>
Readline implements a facility similar in spirit to the conditional
compilation features of the C preprocessor which allows key
bindings and variable settings to be performed as the result
-of tests. There are four parser directives used.
+of tests.
+There are four parser directives available.
</P><P>
<DL COMPACT>
<DT><CODE>$if</CODE>
<DD>The <CODE>$if</CODE> construct allows bindings to be made based on the
editing mode, the terminal being used, or the application using
-Readline. The text of the test, after any comparison operator,
+Readline.
+The text of the test, after any comparison operator,
extends to the end of the line;
unless otherwise noted, no characters are required to isolate it.
<P>
<DT><CODE>term</CODE>
<DD>The <CODE>term=</CODE> form may be used to include terminal-specific
key bindings, perhaps to bind the key sequences output by the
-terminal's function keys. The word on the right side of the
-<SAMP>`='</SAMP> is tested against both the full name of the terminal and
-the portion of the terminal name before the first <SAMP>`-'</SAMP>. This
-allows <CODE>sun</CODE> to match both <CODE>sun</CODE> and <CODE>sun-cmd</CODE>,
-for instance.
+terminal's function keys.
+The word on the right side of the
+<SAMP>`='</SAMP>
+is tested against both the full name of the terminal and the portion
+of the terminal name before the first <SAMP>`-'</SAMP>.
+This allows <CODE>xterm</CODE> to match both <CODE>xterm</CODE> and
+<CODE>xterm-256color</CODE>, for instance.
<P>
<DT><CODE>version</CODE>
and <SAMP>`>'</SAMP>.
The version number supplied on the right side of the operator consists
of a major version number, an optional decimal point, and an optional
-minor version (e.g., <SAMP>`7.1'</SAMP>). If the minor version is omitted, it
-is assumed to be <SAMP>`0'</SAMP>.
+minor version (e.g., <SAMP>`7.1'</SAMP>).
+If the minor version is omitted, it
+defaults to <SAMP>`0'</SAMP>.
The operator may be separated from the string <CODE>version</CODE> and
from the version number argument by whitespace.
The following example sets a variable if the Readline version being used
<DT><CODE>application</CODE>
<DD>The <VAR>application</VAR> construct is used to include
-application-specific settings. Each program using the Readline
+application-specific settings.
+Each program using the Readline
library sets the <VAR>application name</VAR>, and you can test for
a particular value.
This could be used to bind key sequences to functions useful for
-a specific program. For instance, the following command adds a
+a specific program.
+For instance, the following command adds a
key sequence that quotes the current or previous word in Bash:
<TABLE><tr><td> </td><td class=example><pre>$if Bash
# Quote the current or previous word
The variable name must be separated from the comparison operator by
whitespace; the operator may be separated from the value on the right hand
side by whitespace.
-Both string and boolean variables may be tested. Boolean variables must be
+String and boolean variables may be tested.
+Boolean variables must be
tested against the values <VAR>on</VAR> and <VAR>off</VAR>.
The following example is equivalent to the <CODE>mode=emacs</CODE> test described
above:
</pre></td></tr></table></DL>
<P>
-<DT><CODE>$endif</CODE>
-<DD>This command, as seen in the previous example, terminates an
-<CODE>$if</CODE> command.
-<P>
-
<DT><CODE>$else</CODE>
<DD>Commands in this branch of the <CODE>$if</CODE> directive are executed if
the test fails.
<P>
+<DT><CODE>$endif</CODE>
+<DD>This command, as seen in the previous example, terminates an
+<CODE>$if</CODE> command.
+<P>
+
<DT><CODE>$include</CODE>
<DD>This directive takes a single filename as an argument and reads commands
-and bindings from that file.
+and key bindings from that file.
For example, the following directive reads from <TT>`/etc/inputrc'</TT>:
<TABLE><tr><td> </td><td class=example><pre>$include /etc/inputrc
</pre></td></tr></table></DL>
# rather than as meta-prefixed characters
set output-meta on
-# if there are more than 150 possible completions for
-# a word, ask the user if he wants to see all of them
+# if there are 150 or more possible completions for a word,
+# ask whether or not the user wants to see all of them
set completion-query-items 150
# For FTP
position, and <EM>mark</EM> refers to a cursor position saved by the
<CODE>set-mark</CODE> command.
The text between the point and mark is referred to as the <EM>region</EM>.
+Readline has the concept of an <EM>active region</EM>:
+when the region is active, Readline redisplay uses the
+value of the <CODE>active-region-start-color</CODE> variable
+to denote the region.
+Several commands set the region to active; those are noted below.
</P><P>
<A NAME="Commands For Moving"></A>
<H3> 1.4.1 Commands For Moving </H3>
<!--docid::SEC14::-->
<DL COMPACT>
-<A NAME="IDX45"></A>
+<A NAME="IDX51"></A>
<DT><CODE>beginning-of-line (C-a)</CODE>
-<DD><A NAME="IDX46"></A>
+<DD><A NAME="IDX52"></A>
Move to the start of the current line.
+This may also be bound to the Home key on some keyboards.
<P>
-<A NAME="IDX47"></A>
+<A NAME="IDX53"></A>
<DT><CODE>end-of-line (C-e)</CODE>
-<DD><A NAME="IDX48"></A>
+<DD><A NAME="IDX54"></A>
Move to the end of the line.
+This may also be bound to the End key on some keyboards.
<P>
-<A NAME="IDX49"></A>
+<A NAME="IDX55"></A>
<DT><CODE>forward-char (C-f)</CODE>
-<DD><A NAME="IDX50"></A>
+<DD><A NAME="IDX56"></A>
Move forward a character.
<P>
-<A NAME="IDX51"></A>
+<A NAME="IDX57"></A>
<DT><CODE>backward-char (C-b)</CODE>
-<DD><A NAME="IDX52"></A>
+<DD><A NAME="IDX58"></A>
Move back a character.
<P>
-<A NAME="IDX53"></A>
+<A NAME="IDX59"></A>
<DT><CODE>forward-word (M-f)</CODE>
-<DD><A NAME="IDX54"></A>
+<DD><A NAME="IDX60"></A>
Move forward to the end of the next word.
Words are composed of letters and digits.
<P>
-<A NAME="IDX55"></A>
+<A NAME="IDX61"></A>
<DT><CODE>backward-word (M-b)</CODE>
-<DD><A NAME="IDX56"></A>
+<DD><A NAME="IDX62"></A>
Move back to the start of the current or previous word.
Words are composed of letters and digits.
<P>
-<A NAME="IDX57"></A>
+<A NAME="IDX63"></A>
<DT><CODE>previous-screen-line ()</CODE>
-<DD><A NAME="IDX58"></A>
+<DD><A NAME="IDX64"></A>
Attempt to move point to the same physical screen column on the previous
-physical screen line. This will not have the desired effect if the current
+physical screen line.
+This will not have the desired effect if the current
Readline line does not take up more than one physical line or if point is not
greater than the length of the prompt plus the screen width.
<P>
-<A NAME="IDX59"></A>
+<A NAME="IDX65"></A>
<DT><CODE>next-screen-line ()</CODE>
-<DD><A NAME="IDX60"></A>
+<DD><A NAME="IDX66"></A>
Attempt to move point to the same physical screen column on the next
-physical screen line. This will not have the desired effect if the current
+physical screen line.
+This will not have the desired effect if the current
Readline line does not take up more than one physical line or if the length
of the current Readline line is not greater than the length of the prompt
plus the screen width.
<P>
-<A NAME="IDX61"></A>
+<A NAME="IDX67"></A>
+<DT><CODE>clear-display (M-C-l)</CODE>
+<DD><A NAME="IDX68"></A>
+Clear the screen and, if possible, the terminal's scrollback buffer,
+then redraw the current line,
+leaving the current line at the top of the screen.
+<P>
+
+<A NAME="IDX69"></A>
<DT><CODE>clear-screen (C-l)</CODE>
-<DD><A NAME="IDX62"></A>
-Clear the screen and redraw the current line,
+<DD><A NAME="IDX70"></A>
+Clear the screen,
+then redraw the current line,
leaving the current line at the top of the screen.
<P>
-<A NAME="IDX63"></A>
+<A NAME="IDX71"></A>
<DT><CODE>redraw-current-line ()</CODE>
-<DD><A NAME="IDX64"></A>
+<DD><A NAME="IDX72"></A>
Refresh the current line. By default, this is unbound.
<P>
<P>
<DL COMPACT>
-<A NAME="IDX65"></A>
+<A NAME="IDX73"></A>
<DT><CODE>accept-line (Newline or Return)</CODE>
-<DD><A NAME="IDX66"></A>
+<DD><A NAME="IDX74"></A>
Accept the line regardless of where the cursor is.
-If this line is
-non-empty, it may be added to the history list for future recall with
+If this line is non-empty, you can add it to the history list using
<CODE>add_history()</CODE>.
-If this line is a modified history line, the history line is restored
+If this line is a modified history line, then restore the history line
to its original state.
<P>
-<A NAME="IDX67"></A>
+<A NAME="IDX75"></A>
<DT><CODE>previous-history (C-p)</CODE>
-<DD><A NAME="IDX68"></A>
+<DD><A NAME="IDX76"></A>
Move `back' through the history list, fetching the previous command.
<P>
-<A NAME="IDX69"></A>
+<A NAME="IDX77"></A>
<DT><CODE>next-history (C-n)</CODE>
-<DD><A NAME="IDX70"></A>
+<DD><A NAME="IDX78"></A>
Move `forward' through the history list, fetching the next command.
<P>
-<A NAME="IDX71"></A>
+<A NAME="IDX79"></A>
<DT><CODE>beginning-of-history (M-<)</CODE>
-<DD><A NAME="IDX72"></A>
+<DD><A NAME="IDX80"></A>
Move to the first line in the history.
<P>
-<A NAME="IDX73"></A>
+<A NAME="IDX81"></A>
<DT><CODE>end-of-history (M->)</CODE>
-<DD><A NAME="IDX74"></A>
+<DD><A NAME="IDX82"></A>
Move to the end of the input history, i.e., the line currently
being entered.
<P>
-<A NAME="IDX75"></A>
+<A NAME="IDX83"></A>
<DT><CODE>reverse-search-history (C-r)</CODE>
-<DD><A NAME="IDX76"></A>
+<DD><A NAME="IDX84"></A>
Search backward starting at the current line and moving `up' through
-the history as necessary. This is an incremental search.
+the history as necessary.
+This is an incremental search.
+This command sets the region to the matched text and activates the region.
<P>
-<A NAME="IDX77"></A>
+<A NAME="IDX85"></A>
<DT><CODE>forward-search-history (C-s)</CODE>
-<DD><A NAME="IDX78"></A>
+<DD><A NAME="IDX86"></A>
Search forward starting at the current line and moving `down' through
-the history as necessary. This is an incremental search.
+the history as necessary.
+This is an incremental search.
+This command sets the region to the matched text and activates the region.
<P>
-<A NAME="IDX79"></A>
+<A NAME="IDX87"></A>
<DT><CODE>non-incremental-reverse-search-history (M-p)</CODE>
-<DD><A NAME="IDX80"></A>
+<DD><A NAME="IDX88"></A>
Search backward starting at the current line and moving `up'
through the history as necessary using a non-incremental search
for a string supplied by the user.
The search string may match anywhere in a history line.
<P>
-<A NAME="IDX81"></A>
+<A NAME="IDX89"></A>
<DT><CODE>non-incremental-forward-search-history (M-n)</CODE>
-<DD><A NAME="IDX82"></A>
+<DD><A NAME="IDX90"></A>
Search forward starting at the current line and moving `down'
through the history as necessary using a non-incremental search
for a string supplied by the user.
The search string may match anywhere in a history line.
<P>
-<A NAME="IDX83"></A>
-<DT><CODE>history-search-forward ()</CODE>
-<DD><A NAME="IDX84"></A>
-Search forward through the history for the string of characters
+<A NAME="IDX91"></A>
+<DT><CODE>history-search-backward ()</CODE>
+<DD><A NAME="IDX92"></A>
+Search backward through the history for the string of characters
between the start of the current line and the point.
The search string must match at the beginning of a history line.
This is a non-incremental search.
-By default, this command is unbound.
+By default, this command is unbound, but may be bound to the Page Down
+key on some keyboards.
<P>
-<A NAME="IDX85"></A>
-<DT><CODE>history-search-backward ()</CODE>
-<DD><A NAME="IDX86"></A>
-Search backward through the history for the string of characters
+<A NAME="IDX93"></A>
+<DT><CODE>history-search-forward ()</CODE>
+<DD><A NAME="IDX94"></A>
+Search forward through the history for the string of characters
between the start of the current line and the point.
The search string must match at the beginning of a history line.
This is a non-incremental search.
-By default, this command is unbound.
+By default, this command is unbound, but may be bound to the Page Up
+key on some keyboards.
<P>
-<A NAME="IDX87"></A>
-<DT><CODE>history-substring-search-forward ()</CODE>
-<DD><A NAME="IDX88"></A>
-Search forward through the history for the string of characters
+<A NAME="IDX95"></A>
+<DT><CODE>history-substring-search-backward ()</CODE>
+<DD><A NAME="IDX96"></A>
+Search backward through the history for the string of characters
between the start of the current line and the point.
The search string may match anywhere in a history line.
This is a non-incremental search.
By default, this command is unbound.
<P>
-<A NAME="IDX89"></A>
-<DT><CODE>history-substring-search-backward ()</CODE>
-<DD><A NAME="IDX90"></A>
-Search backward through the history for the string of characters
+<A NAME="IDX97"></A>
+<DT><CODE>history-substring-search-forward ()</CODE>
+<DD><A NAME="IDX98"></A>
+Search forward through the history for the string of characters
between the start of the current line and the point.
The search string may match anywhere in a history line.
This is a non-incremental search.
By default, this command is unbound.
<P>
-<A NAME="IDX91"></A>
+<A NAME="IDX99"></A>
<DT><CODE>yank-nth-arg (M-C-y)</CODE>
-<DD><A NAME="IDX92"></A>
+<DD><A NAME="IDX100"></A>
Insert the first argument to the previous command (usually
the second word on the previous line) at point.
With an argument <VAR>n</VAR>,
insert the <VAR>n</VAR>th word from the previous command (the words
-in the previous command begin with word 0). A negative argument
-inserts the <VAR>n</VAR>th word from the end of the previous command.
-Once the argument <VAR>n</VAR> is computed, the argument is extracted
-as if the <SAMP>`!<VAR>n</VAR>'</SAMP> history expansion had been specified.
+in the previous command begin with word 0).
+A negative argument inserts the <VAR>n</VAR>th word from the end of
+the previous command.
+Once the argument <VAR>n</VAR> is computed,
+this uses the history expansion facilities to extract the
+<VAR>n</VAR>th word, as if the
+<SAMP>`!<VAR>n</VAR>'</SAMP> history expansion had been specified.
<P>
-<A NAME="IDX93"></A>
+<A NAME="IDX101"></A>
<DT><CODE>yank-last-arg (M-. or M-_)</CODE>
-<DD><A NAME="IDX94"></A>
+<DD><A NAME="IDX102"></A>
Insert last argument to the previous command (the last word of the
previous history entry).
With a numeric argument, behave exactly like <CODE>yank-nth-arg</CODE>.
list, inserting the last word (or the word specified by the argument to
the first call) of each line in turn.
Any numeric argument supplied to these successive calls determines
-the direction to move through the history. A negative argument switches
-the direction through the history (back or forward).
-The history expansion facilities are used to extract the last argument,
-as if the <SAMP>`!$'</SAMP> history expansion had been specified.
+the direction to move through the history.
+A negative argument switches the direction through the history
+(back or forward).
+This uses the history expansion facilities to extract the
+last word, as if the
+<SAMP>`!$'</SAMP> history expansion had been specified.
+<P>
+
+<A NAME="IDX103"></A>
+<DT><CODE>operate-and-get-next (C-o)</CODE>
+<DD><A NAME="IDX104"></A>
+Accept the current line for return to the calling application as if a
+newline had been entered,
+and fetch the next line relative to the current line from the history
+for editing.
+A numeric argument, if supplied, specifies the history entry
+to use instead of the current line.
+<P>
+
+<A NAME="IDX105"></A>
+<DT><CODE>fetch-history ()</CODE>
+<DD><A NAME="IDX106"></A>
+With a numeric argument, fetch that entry from the history list
+and make it the current line.
+Without an argument, move back to the first entry in the history list.
<P>
</DL>
<DL COMPACT>
-<A NAME="IDX95"></A>
+<A NAME="IDX107"></A>
<DT><CODE><I>end-of-file</I> (usually C-d)</CODE>
-<DD><A NAME="IDX96"></A>
+<DD><A NAME="IDX108"></A>
The character indicating end-of-file as set, for example, by
-<CODE>stty</CODE>. If this character is read when there are no characters
+<CODE>stty</CODE>.
+If this character is read when there are no characters
on the line, and point is at the beginning of the line, Readline
interprets it as the end of input and returns EOF.
<P>
-<A NAME="IDX97"></A>
+<A NAME="IDX109"></A>
<DT><CODE>delete-char (C-d)</CODE>
-<DD><A NAME="IDX98"></A>
-Delete the character at point. If this function is bound to the
+<DD><A NAME="IDX110"></A>
+Delete the character at point.
+If this function is bound to the
same character as the tty EOF character, as <KBD>C-d</KBD>
commonly is, see above for the effects.
<P>
-<A NAME="IDX99"></A>
+<A NAME="IDX111"></A>
<DT><CODE>backward-delete-char (Rubout)</CODE>
-<DD><A NAME="IDX100"></A>
-Delete the character behind the cursor. A numeric argument means
-to kill the characters instead of deleting them.
+<DD><A NAME="IDX112"></A>
+Delete the character behind the cursor.
+A numeric argument means
+to kill the characters, saving them on the kill ring,
+instead of deleting them.
<P>
-<A NAME="IDX101"></A>
+<A NAME="IDX113"></A>
<DT><CODE>forward-backward-delete-char ()</CODE>
-<DD><A NAME="IDX102"></A>
+<DD><A NAME="IDX114"></A>
Delete the character under the cursor, unless the cursor is at the
end of the line, in which case the character behind the cursor is
-deleted. By default, this is not bound to a key.
+deleted.
+By default, this is not bound to a key.
<P>
-<A NAME="IDX103"></A>
+<A NAME="IDX115"></A>
<DT><CODE>quoted-insert (C-q or C-v)</CODE>
-<DD><A NAME="IDX104"></A>
-Add the next character typed to the line verbatim. This is
-how to insert key sequences like <KBD>C-q</KBD>, for example.
+<DD><A NAME="IDX116"></A>
+Add the next character typed to the line verbatim.
+This is how to insert key sequences like <KBD>C-q</KBD>, for example.
<P>
-<A NAME="IDX105"></A>
+<A NAME="IDX117"></A>
<DT><CODE>tab-insert (M-<KBD>TAB</KBD>)</CODE>
-<DD><A NAME="IDX106"></A>
+<DD><A NAME="IDX118"></A>
Insert a tab character.
<P>
-<A NAME="IDX107"></A>
+<A NAME="IDX119"></A>
<DT><CODE>self-insert (a, b, A, 1, !, <small>...</small>)</CODE>
-<DD><A NAME="IDX108"></A>
-Insert yourself.
+<DD><A NAME="IDX120"></A>
+Insert the character typed.
<P>
-<A NAME="IDX109"></A>
+<A NAME="IDX121"></A>
<DT><CODE>bracketed-paste-begin ()</CODE>
-<DD><A NAME="IDX110"></A>
+<DD><A NAME="IDX122"></A>
This function is intended to be bound to the "bracketed paste" escape
sequence sent by some terminals, and such a binding is assigned by default.
It allows Readline to insert the pasted text as a single unit without treating
-each character as if it had been read from the keyboard. The characters
-are inserted as if each one was bound to <CODE>self-insert</CODE>) instead of
+each character as if it had been read from the keyboard.
+The characters
+are inserted as if each one was bound to <CODE>self-insert</CODE> instead of
executing any editing commands.
<P>
-<A NAME="IDX111"></A>
+Bracketed paste sets the region (the characters between point and the mark)
+to the inserted text.
+It sets the <EM>active region</EM>.
+</P><P>
+
+<A NAME="IDX123"></A>
<DT><CODE>transpose-chars (C-t)</CODE>
-<DD><A NAME="IDX112"></A>
+<DD><A NAME="IDX124"></A>
Drag the character before the cursor forward over
the character at the cursor, moving the
-cursor forward as well. If the insertion point
+cursor forward as well.
+If the insertion point
is at the end of the line, then this
transposes the last two characters of the line.
Negative arguments have no effect.
<P>
-<A NAME="IDX113"></A>
+<A NAME="IDX125"></A>
<DT><CODE>transpose-words (M-t)</CODE>
-<DD><A NAME="IDX114"></A>
+<DD><A NAME="IDX126"></A>
Drag the word before point past the word after point,
moving point past that word as well.
If the insertion point is at the end of the line, this transposes
the last two words on the line.
<P>
-<A NAME="IDX115"></A>
+<A NAME="IDX127"></A>
<DT><CODE>upcase-word (M-u)</CODE>
-<DD><A NAME="IDX116"></A>
-Uppercase the current (or following) word. With a negative argument,
+<DD><A NAME="IDX128"></A>
+Uppercase the current (or following) word.
+With a negative argument,
uppercase the previous word, but do not move the cursor.
<P>
-<A NAME="IDX117"></A>
+<A NAME="IDX129"></A>
<DT><CODE>downcase-word (M-l)</CODE>
-<DD><A NAME="IDX118"></A>
-Lowercase the current (or following) word. With a negative argument,
+<DD><A NAME="IDX130"></A>
+Lowercase the current (or following) word.
+With a negative argument,
lowercase the previous word, but do not move the cursor.
<P>
-<A NAME="IDX119"></A>
+<A NAME="IDX131"></A>
<DT><CODE>capitalize-word (M-c)</CODE>
-<DD><A NAME="IDX120"></A>
-Capitalize the current (or following) word. With a negative argument,
+<DD><A NAME="IDX132"></A>
+Capitalize the current (or following) word.
+With a negative argument,
capitalize the previous word, but do not move the cursor.
<P>
-<A NAME="IDX121"></A>
+<A NAME="IDX133"></A>
<DT><CODE>overwrite-mode ()</CODE>
-<DD><A NAME="IDX122"></A>
-Toggle overwrite mode. With an explicit positive numeric argument,
-switches to overwrite mode. With an explicit non-positive numeric
-argument, switches to insert mode. This command affects only
-<CODE>emacs</CODE> mode; <CODE>vi</CODE> mode does overwrite differently.
+<DD><A NAME="IDX134"></A>
+Toggle overwrite mode.
+With an explicit positive numeric argument, switches to overwrite mode.
+With an explicit non-positive numeric argument, switches to insert mode.
+This command affects only <CODE>emacs</CODE> mode;
+<CODE>vi</CODE> mode does overwrite differently.
Each call to <CODE>readline()</CODE> starts in insert mode.
<P>
before point with a space.
</P><P>
-By default, this command is unbound.
+By default, this command is unbound, but may be bound to the Insert
+key on some keyboards.
</P><P>
</DL>
<DL COMPACT>
-<A NAME="IDX123"></A>
+<A NAME="IDX135"></A>
<DT><CODE>kill-line (C-k)</CODE>
-<DD><A NAME="IDX124"></A>
-Kill the text from point to the end of the line.
+<DD><A NAME="IDX136"></A>
+Kill the text from point to the end of the current line.
+With a negative numeric argument, kill backward from the cursor to the
+beginning of the line.
<P>
-<A NAME="IDX125"></A>
+<A NAME="IDX137"></A>
<DT><CODE>backward-kill-line (C-x Rubout)</CODE>
-<DD><A NAME="IDX126"></A>
+<DD><A NAME="IDX138"></A>
Kill backward from the cursor to the beginning of the current line.
+With a negative numeric argument, kill forward from the cursor to the
+end of the line.
<P>
-<A NAME="IDX127"></A>
+<A NAME="IDX139"></A>
<DT><CODE>unix-line-discard (C-u)</CODE>
-<DD><A NAME="IDX128"></A>
+<DD><A NAME="IDX140"></A>
Kill backward from the cursor to the beginning of the current line.
<P>
-<A NAME="IDX129"></A>
+<A NAME="IDX141"></A>
<DT><CODE>kill-whole-line ()</CODE>
-<DD><A NAME="IDX130"></A>
+<DD><A NAME="IDX142"></A>
Kill all characters on the current line, no matter where point is.
By default, this is unbound.
<P>
-<A NAME="IDX131"></A>
+<A NAME="IDX143"></A>
<DT><CODE>kill-word (M-d)</CODE>
-<DD><A NAME="IDX132"></A>
+<DD><A NAME="IDX144"></A>
Kill from point to the end of the current word, or if between
words, to the end of the next word.
Word boundaries are the same as <CODE>forward-word</CODE>.
<P>
-<A NAME="IDX133"></A>
+<A NAME="IDX145"></A>
<DT><CODE>backward-kill-word (M-<KBD>DEL</KBD>)</CODE>
-<DD><A NAME="IDX134"></A>
+<DD><A NAME="IDX146"></A>
Kill the word behind point.
Word boundaries are the same as <CODE>backward-word</CODE>.
<P>
-<A NAME="IDX135"></A>
+<A NAME="IDX147"></A>
<DT><CODE>unix-word-rubout (C-w)</CODE>
-<DD><A NAME="IDX136"></A>
-Kill the word behind point, using white space as a word boundary.
-The killed text is saved on the kill-ring.
+<DD><A NAME="IDX148"></A>
+Kill the word behind point, using white space as a word boundary,
+saving the killed text on the kill-ring.
<P>
-<A NAME="IDX137"></A>
+<A NAME="IDX149"></A>
<DT><CODE>unix-filename-rubout ()</CODE>
-<DD><A NAME="IDX138"></A>
+<DD><A NAME="IDX150"></A>
Kill the word behind point, using white space and the slash character
-as the word boundaries.
-The killed text is saved on the kill-ring.
+as the word boundaries,
+saving the killed text on the kill-ring.
<P>
-<A NAME="IDX139"></A>
+<A NAME="IDX151"></A>
<DT><CODE>delete-horizontal-space ()</CODE>
-<DD><A NAME="IDX140"></A>
-Delete all spaces and tabs around point. By default, this is unbound.
+<DD><A NAME="IDX152"></A>
+Delete all spaces and tabs around point.
+By default, this is unbound.
<P>
-<A NAME="IDX141"></A>
+<A NAME="IDX153"></A>
<DT><CODE>kill-region ()</CODE>
-<DD><A NAME="IDX142"></A>
+<DD><A NAME="IDX154"></A>
Kill the text in the current region.
By default, this command is unbound.
<P>
-<A NAME="IDX143"></A>
+<A NAME="IDX155"></A>
<DT><CODE>copy-region-as-kill ()</CODE>
-<DD><A NAME="IDX144"></A>
+<DD><A NAME="IDX156"></A>
Copy the text in the region to the kill buffer, so it can be yanked
-right away. By default, this command is unbound.
+right away.
+By default, this command is unbound.
<P>
-<A NAME="IDX145"></A>
+<A NAME="IDX157"></A>
<DT><CODE>copy-backward-word ()</CODE>
-<DD><A NAME="IDX146"></A>
+<DD><A NAME="IDX158"></A>
Copy the word before point to the kill buffer.
The word boundaries are the same as <CODE>backward-word</CODE>.
By default, this command is unbound.
<P>
-<A NAME="IDX147"></A>
+<A NAME="IDX159"></A>
<DT><CODE>copy-forward-word ()</CODE>
-<DD><A NAME="IDX148"></A>
+<DD><A NAME="IDX160"></A>
Copy the word following point to the kill buffer.
The word boundaries are the same as <CODE>forward-word</CODE>.
By default, this command is unbound.
<P>
-<A NAME="IDX149"></A>
+<A NAME="IDX161"></A>
<DT><CODE>yank (C-y)</CODE>
-<DD><A NAME="IDX150"></A>
+<DD><A NAME="IDX162"></A>
Yank the top of the kill ring into the buffer at point.
<P>
-<A NAME="IDX151"></A>
+<A NAME="IDX163"></A>
<DT><CODE>yank-pop (M-y)</CODE>
-<DD><A NAME="IDX152"></A>
-Rotate the kill-ring, and yank the new top. You can only do this if
+<DD><A NAME="IDX164"></A>
+Rotate the kill-ring, and yank the new top.
+You can only do this if
the prior command is <CODE>yank</CODE> or <CODE>yank-pop</CODE>.
</DL>
<P>
<!--docid::SEC18::-->
<DL COMPACT>
-<A NAME="IDX153"></A>
+<A NAME="IDX165"></A>
<DT><CODE>digit-argument (<KBD>M-0</KBD>, <KBD>M-1</KBD>, <small>...</small> <KBD>M--</KBD>)</CODE>
-<DD><A NAME="IDX154"></A>
+<DD><A NAME="IDX166"></A>
Add this digit to the argument already accumulating, or start a new
-argument. <KBD>M--</KBD> starts a negative argument.
+argument.
+<KBD>M--</KBD> starts a negative argument.
<P>
-<A NAME="IDX155"></A>
+<A NAME="IDX167"></A>
<DT><CODE>universal-argument ()</CODE>
-<DD><A NAME="IDX156"></A>
+<DD><A NAME="IDX168"></A>
This is another way to specify an argument.
If this command is followed by one or more digits, optionally with a
leading minus sign, those digits define the argument.
<P>
<DL COMPACT>
-<A NAME="IDX157"></A>
+<A NAME="IDX169"></A>
<DT><CODE>complete (<KBD>TAB</KBD>)</CODE>
-<DD><A NAME="IDX158"></A>
+<DD><A NAME="IDX170"></A>
Attempt to perform completion on the text before point.
The actual completion performed is application-specific.
The default is filename completion.
<P>
-<A NAME="IDX159"></A>
+<A NAME="IDX171"></A>
<DT><CODE>possible-completions (M-?)</CODE>
-<DD><A NAME="IDX160"></A>
+<DD><A NAME="IDX172"></A>
List the possible completions of the text before point.
When displaying completions, Readline sets the number of columns used
for display to the value of <CODE>completion-display-width</CODE>, the value of
the environment variable <CODE>COLUMNS</CODE>, or the screen width, in that order.
<P>
-<A NAME="IDX161"></A>
+<A NAME="IDX173"></A>
<DT><CODE>insert-completions (M-*)</CODE>
-<DD><A NAME="IDX162"></A>
+<DD><A NAME="IDX174"></A>
Insert all completions of the text before point that would have
-been generated by <CODE>possible-completions</CODE>.
+been generated by <CODE>possible-completions</CODE>,
+separated by a space.
<P>
-<A NAME="IDX163"></A>
+<A NAME="IDX175"></A>
<DT><CODE>menu-complete ()</CODE>
-<DD><A NAME="IDX164"></A>
+<DD><A NAME="IDX176"></A>
Similar to <CODE>complete</CODE>, but replaces the word to be completed
with a single match from the list of possible completions.
-Repeated execution of <CODE>menu-complete</CODE> steps through the list
+Repeatedly executing <CODE>menu-complete</CODE> steps through the list
of possible completions, inserting each match in turn.
-At the end of the list of completions, the bell is rung
+At the end of the list of completions,
+<CODE>menu-complete</CODE> rings the bell
(subject to the setting of <CODE>bell-style</CODE>)
-and the original text is restored.
+and restores the original text.
An argument of <VAR>n</VAR> moves <VAR>n</VAR> positions forward in the list
-of matches; a negative argument may be used to move backward
-through the list.
+of matches; a negative argument moves backward through the list.
This command is intended to be bound to <KBD>TAB</KBD>, but is unbound
by default.
<P>
-<A NAME="IDX165"></A>
+<A NAME="IDX177"></A>
<DT><CODE>menu-complete-backward ()</CODE>
-<DD><A NAME="IDX166"></A>
+<DD><A NAME="IDX178"></A>
Identical to <CODE>menu-complete</CODE>, but moves backward through the list
of possible completions, as if <CODE>menu-complete</CODE> had been given a
negative argument.
+This command is unbound by default.
<P>
-<A NAME="IDX167"></A>
+<A NAME="IDX179"></A>
<DT><CODE>delete-char-or-list ()</CODE>
-<DD><A NAME="IDX168"></A>
+<DD><A NAME="IDX180"></A>
Deletes the character under the cursor if not at the beginning or
end of the line (like <CODE>delete-char</CODE>).
-If at the end of the line, behaves identically to
-<CODE>possible-completions</CODE>.
+At the end of the line, it behaves identically to <CODE>possible-completions</CODE>.
This command is unbound by default.
<P>
<!--docid::SEC20::-->
<DL COMPACT>
-<A NAME="IDX169"></A>
+<A NAME="IDX181"></A>
<DT><CODE>start-kbd-macro (C-x ()</CODE>
-<DD><A NAME="IDX170"></A>
+<DD><A NAME="IDX182"></A>
Begin saving the characters typed into the current keyboard macro.
<P>
-<A NAME="IDX171"></A>
+<A NAME="IDX183"></A>
<DT><CODE>end-kbd-macro (C-x ))</CODE>
-<DD><A NAME="IDX172"></A>
+<DD><A NAME="IDX184"></A>
Stop saving the characters typed into the current keyboard macro
and save the definition.
<P>
-<A NAME="IDX173"></A>
+<A NAME="IDX185"></A>
<DT><CODE>call-last-kbd-macro (C-x e)</CODE>
-<DD><A NAME="IDX174"></A>
+<DD><A NAME="IDX186"></A>
Re-execute the last keyboard macro defined, by making the characters
in the macro appear as if typed at the keyboard.
<P>
-<A NAME="IDX175"></A>
+<A NAME="IDX187"></A>
<DT><CODE>print-last-kbd-macro ()</CODE>
-<DD><A NAME="IDX176"></A>
-Print the last keboard macro defined in a format suitable for the
+<DD><A NAME="IDX188"></A>
+Print the last keyboard macro defined in a format suitable for the
<VAR>inputrc</VAR> file.
<P>
<!--docid::SEC21::-->
<DL COMPACT>
-<A NAME="IDX177"></A>
+<A NAME="IDX189"></A>
<DT><CODE>re-read-init-file (C-x C-r)</CODE>
-<DD><A NAME="IDX178"></A>
+<DD><A NAME="IDX190"></A>
Read in the contents of the <VAR>inputrc</VAR> file, and incorporate
any bindings or variable assignments found there.
<P>
-<A NAME="IDX179"></A>
+<A NAME="IDX191"></A>
<DT><CODE>abort (C-g)</CODE>
-<DD><A NAME="IDX180"></A>
+<DD><A NAME="IDX192"></A>
Abort the current editing command and
ring the terminal's bell (subject to the setting of
<CODE>bell-style</CODE>).
<P>
-<A NAME="IDX181"></A>
+<A NAME="IDX193"></A>
<DT><CODE>do-lowercase-version (M-A, M-B, M-<VAR>x</VAR>, <small>...</small>)</CODE>
-<DD><A NAME="IDX182"></A>
+<DD><A NAME="IDX194"></A>
If the metafied character <VAR>x</VAR> is upper case, run the command
that is bound to the corresponding metafied lower case character.
The behavior is undefined if <VAR>x</VAR> is already lower case.
<P>
-<A NAME="IDX183"></A>
+<A NAME="IDX195"></A>
<DT><CODE>prefix-meta (<KBD>ESC</KBD>)</CODE>
-<DD><A NAME="IDX184"></A>
-Metafy the next character typed. This is for keyboards
-without a meta key. Typing <SAMP>`<KBD>ESC</KBD> f'</SAMP> is equivalent to typing
-<KBD>M-f</KBD>.
+<DD><A NAME="IDX196"></A>
+Metafy the next character typed.
+Typing <SAMP>`<KBD>ESC</KBD> f'</SAMP> is equivalent to typing <KBD>M-f</KBD>.
<P>
-<A NAME="IDX185"></A>
+<A NAME="IDX197"></A>
<DT><CODE>undo (C-_ or C-x C-u)</CODE>
-<DD><A NAME="IDX186"></A>
+<DD><A NAME="IDX198"></A>
Incremental undo, separately remembered for each line.
<P>
-<A NAME="IDX187"></A>
+<A NAME="IDX199"></A>
<DT><CODE>revert-line (M-r)</CODE>
-<DD><A NAME="IDX188"></A>
-Undo all changes made to this line. This is like executing the <CODE>undo</CODE>
-command enough times to get back to the beginning.
+<DD><A NAME="IDX200"></A>
+Undo all changes made to this line.
+This is like executing the <CODE>undo</CODE>
+command enough times to get back to the initial state.
<P>
-<A NAME="IDX189"></A>
+<A NAME="IDX201"></A>
<DT><CODE>tilde-expand (M-~)</CODE>
-<DD><A NAME="IDX190"></A>
+<DD><A NAME="IDX202"></A>
Perform tilde expansion on the current word.
<P>
-<A NAME="IDX191"></A>
+<A NAME="IDX203"></A>
<DT><CODE>set-mark (C-@)</CODE>
-<DD><A NAME="IDX192"></A>
-Set the mark to the point. If a
-numeric argument is supplied, the mark is set to that position.
+<DD><A NAME="IDX204"></A>
+Set the mark to the point.
+If a numeric argument is supplied, set the mark to that position.
<P>
-<A NAME="IDX193"></A>
+<A NAME="IDX205"></A>
<DT><CODE>exchange-point-and-mark (C-x C-x)</CODE>
-<DD><A NAME="IDX194"></A>
-Swap the point with the mark. The current cursor position is set to
-the saved position, and the old cursor position is saved as the mark.
+<DD><A NAME="IDX206"></A>
+Swap the point with the mark.
+Set the current cursor position to the saved position,
+then set the mark to the old cursor position.
<P>
-<A NAME="IDX195"></A>
+<A NAME="IDX207"></A>
<DT><CODE>character-search (C-])</CODE>
-<DD><A NAME="IDX196"></A>
-A character is read and point is moved to the next occurrence of that
-character. A negative count searches for previous occurrences.
+<DD><A NAME="IDX208"></A>
+Read a character and move point to the next occurrence of that character.
+A negative argument searches for previous occurrences.
<P>
-<A NAME="IDX197"></A>
+<A NAME="IDX209"></A>
<DT><CODE>character-search-backward (M-C-])</CODE>
-<DD><A NAME="IDX198"></A>
-A character is read and point is moved to the previous occurrence
-of that character. A negative count searches for subsequent
-occurrences.
+<DD><A NAME="IDX210"></A>
+Read a character and move point to the previous occurrence of that character.
+A negative argument searches for subsequent occurrences.
<P>
-<A NAME="IDX199"></A>
+<A NAME="IDX211"></A>
<DT><CODE>skip-csi-sequence ()</CODE>
-<DD><A NAME="IDX200"></A>
+<DD><A NAME="IDX212"></A>
Read enough characters to consume a multi-key sequence such as those
-defined for keys like Home and End. Such sequences begin with a
-Control Sequence Indicator (CSI), usually ESC-[. If this sequence is
-bound to "\e[", keys producing such sequences will have no effect
-unless explicitly bound to a readline command, instead of inserting
-stray characters into the editing buffer. This is unbound by default,
-but usually bound to ESC-[.
+defined for keys like Home and End.
+CSI sequences begin with a Control Sequence Indicator (CSI), usually ESC-[.
+If this sequence is bound to "\e[",
+keys producing CSI sequences will have no effect
+unless explicitly bound to a Readline command, instead of inserting
+stray characters into the editing buffer.
+This is unbound by default, but usually bound to ESC-[.
<P>
-<A NAME="IDX201"></A>
+<A NAME="IDX213"></A>
<DT><CODE>insert-comment (M-#)</CODE>
-<DD><A NAME="IDX202"></A>
-Without a numeric argument, the value of the <CODE>comment-begin</CODE>
-variable is inserted at the beginning of the current line.
+<DD><A NAME="IDX214"></A>
+Without a numeric argument, insert the value of the <CODE>comment-begin</CODE>
+variable at the beginning of the current line.
If a numeric argument is supplied, this command acts as a toggle: if
the characters at the beginning of the line do not match the value
-of <CODE>comment-begin</CODE>, the value is inserted, otherwise
-the characters in <CODE>comment-begin</CODE> are deleted from the beginning of
-the line.
+of <CODE>comment-begin</CODE>, insert the value; otherwise delete
+the characters in <CODE>comment-begin</CODE> from the beginning of the line.
In either case, the line is accepted as if a newline had been typed.
<P>
-<A NAME="IDX203"></A>
+<A NAME="IDX215"></A>
<DT><CODE>dump-functions ()</CODE>
-<DD><A NAME="IDX204"></A>
-Print all of the functions and their key bindings to the
-Readline output stream. If a numeric argument is supplied,
+<DD><A NAME="IDX216"></A>
+Print all of the functions and their key bindings
+to the Readline output stream.
+If a numeric argument is supplied,
the output is formatted in such a way that it can be made part
-of an <VAR>inputrc</VAR> file. This command is unbound by default.
+of an <VAR>inputrc</VAR> file.
+This command is unbound by default.
<P>
-<A NAME="IDX205"></A>
+<A NAME="IDX217"></A>
<DT><CODE>dump-variables ()</CODE>
-<DD><A NAME="IDX206"></A>
-Print all of the settable variables and their values to the
-Readline output stream. If a numeric argument is supplied,
+<DD><A NAME="IDX218"></A>
+Print all of the settable variables and their values
+to the Readline output stream.
+If a numeric argument is supplied,
the output is formatted in such a way that it can be made part
-of an <VAR>inputrc</VAR> file. This command is unbound by default.
+of an <VAR>inputrc</VAR> file.
+This command is unbound by default.
<P>
-<A NAME="IDX207"></A>
+<A NAME="IDX219"></A>
<DT><CODE>dump-macros ()</CODE>
-<DD><A NAME="IDX208"></A>
+<DD><A NAME="IDX220"></A>
Print all of the Readline key sequences bound to macros and the
-strings they output. If a numeric argument is supplied,
+strings they output
+to the Readline output stream.
+If a numeric argument is supplied,
the output is formatted in such a way that it can be made part
-of an <VAR>inputrc</VAR> file. This command is unbound by default.
+of an <VAR>inputrc</VAR> file.
+This command is unbound by default.
+<P>
+
+<A NAME="IDX221"></A>
+<DT><CODE>execute-named-command (M-x)</CODE>
+<DD><A NAME="IDX222"></A>
+Read a bindable readline command name from the input and execute the
+function to which it's bound, as if the key sequence to which it was
+bound appeared in the input.
+If this function is supplied with a numeric argument, it passes that
+argument to the function it executes.
<P>
-<A NAME="IDX209"></A>
+<A NAME="IDX223"></A>
<DT><CODE>emacs-editing-mode (C-e)</CODE>
-<DD><A NAME="IDX210"></A>
+<DD><A NAME="IDX224"></A>
When in <CODE>vi</CODE> command mode, this causes a switch to <CODE>emacs</CODE>
editing mode.
<P>
-<A NAME="IDX211"></A>
+<A NAME="IDX225"></A>
<DT><CODE>vi-editing-mode (M-C-j)</CODE>
-<DD><A NAME="IDX212"></A>
+<DD><A NAME="IDX226"></A>
When in <CODE>emacs</CODE> editing mode, this causes a switch to <CODE>vi</CODE>
editing mode.
<P>
While the Readline library does not have a full set of <CODE>vi</CODE>
editing functions, it does contain enough to allow simple editing
-of the line. The Readline <CODE>vi</CODE> mode behaves as specified in
-the POSIX standard.
+of the line.
+The Readline <CODE>vi</CODE> mode behaves as specified in the
+<CODE>sh</CODE> description in the POSIX standard.
</P><P>
In order to switch interactively between <CODE>emacs</CODE> and <CODE>vi</CODE>
to provide a command line interface.
</P><P>
-Copyright (C) 1988--2016 Free Software Foundation, Inc.
+Copyright (C) 1988--2024 Free Software Foundation, Inc.
</P><P>
Permission is granted to make and distribute verbatim copies of
<P>
Many programs provide a command line interface, such as <CODE>mail</CODE>,
-<CODE>ftp</CODE>, and <CODE>sh</CODE>. For such programs, the default behaviour of
-Readline is sufficient. This section describes how to use Readline in
+<CODE>ftp</CODE>, and <CODE>sh</CODE>.
+For such programs, the default behaviour of Readline is sufficient.
+This section describes how to use Readline in
the simplest way possible, perhaps to replace calls in your code to
-<CODE>gets()</CODE> or <CODE>fgets()</CODE>.
+<CODE>fgets()</CODE>.
</P><P>
-<A NAME="IDX213"></A>
-<A NAME="IDX214"></A>
+<A NAME="IDX227"></A>
+<A NAME="IDX228"></A>
</P><P>
The function <CODE>readline()</CODE> prints a prompt <VAR>prompt</VAR>
and then reads and returns a single line of text from the user.
-If <VAR>prompt</VAR> is <CODE>NULL</CODE> or the empty string, no prompt is displayed.
+Since it's possible to enter characters into the line while quoting
+them to disable any Readline editing function they might normally have,
+this line may include embedded newlines and other special characters.
+If <VAR>prompt</VAR> is <CODE>NULL</CODE> or the empty string,
+<CODE>readline</CODE> does not display a prompt.
The line <CODE>readline</CODE> returns is allocated with <CODE>malloc()</CODE>;
the caller should <CODE>free()</CODE> the line when it has finished with it.
The declaration for <CODE>readline</CODE> in ANSI C is
</pre></td></tr></table>in order to read a line of text from the user.
The line returned has the final newline removed, so only the
text remains.
+This means that lines consisting of a newline return the empty string.
</P><P>
-If <CODE>readline</CODE> encounters an <CODE>EOF</CODE> while reading the line, and the
-line is empty at that point, then <CODE>(char *)NULL</CODE> is returned.
+If <CODE>readline</CODE> encounters an <CODE>EOF</CODE> while reading the line,
+and the line is empty at that point,
+then <CODE>readline</CODE> returns <CODE>(char *)NULL</CODE>.
Otherwise, the line is ended just as if a newline had been typed.
</P><P>
Readline performs some expansion on the <VAR>prompt</VAR> before it is
-displayed on the screen. See the description of <CODE>rl_expand_prompt</CODE>
+displayed on the screen.
+See the description of <CODE>rl_expand_prompt</CODE>
(see section <A HREF="readline.html#SEC35">2.4.6 Redisplay</A>) for additional details, especially if <VAR>prompt</VAR>
will contain characters that do not consume physical screen space when
displayed.
</P><P>
It is preferable to avoid saving empty lines on the history list, since
-users rarely have a burning need to reuse a blank line. Here is
-a function which usefully replaces the standard <CODE>gets()</CODE> library
+users rarely have a burning need to reuse a blank line.
+Here is a function which usefully replaces the standard <CODE>gets()</CODE> library
function, and has the advantage of no static buffer to overflow:
</P><P>
</pre></td></tr></table></P><P>
This function gives the user the default behaviour of <KBD>TAB</KBD>
-completion: completion on file names. If you do not want Readline to
-complete on filenames, you can change the binding of the <KBD>TAB</KBD> key
+completion: filename completion.
+If you do not want Readline to
+complete filenames, you can change the binding of the <KBD>TAB</KBD> key
with <CODE>rl_bind_key()</CODE>.
</P><P>
<CODE>rl_bind_key()</CODE> takes two arguments: <VAR>key</VAR> is the character that
you want to bind, and <VAR>function</VAR> is the address of the function to
-call when <VAR>key</VAR> is pressed. Binding <KBD>TAB</KBD> to <CODE>rl_insert()</CODE>
-makes <KBD>TAB</KBD> insert itself.
+call when <VAR>key</VAR> is pressed.
+Binding <KBD>TAB</KBD> to <CODE>rl_insert()</CODE> makes <KBD>TAB</KBD> insert itself.
<CODE>rl_bind_key()</CODE> returns non-zero if <VAR>key</VAR> is not a valid
ASCII character code (between 0 and 255).
</P><P>
Readline provides many functions for manipulating the text of
the line, but it isn't possible to anticipate the needs of all
-programs. This section describes the various functions and variables
-defined within the Readline library which allow a user program to add
+programs.
+This section describes the various functions and variables
+defined within the Readline library which allow a program to add
customized functionality to Readline.
</P><P>
Before declaring any functions that customize Readline's behavior, or
using any functionality Readline provides in other code, an
application writer should include the file <CODE><readline/readline.h></CODE>
-in any file that uses Readline's features. Since some of the definitions
-in <CODE>readline.h</CODE> use the <CODE>stdio</CODE> library, the file
-<CODE><stdio.h></CODE> should be included before <CODE>readline.h</CODE>.
+in any file that uses Readline's features.
+Since some of the definitions
+in <CODE>readline.h</CODE> use the <CODE>stdio</CODE> library, the program
+should include the file <CODE><stdio.h></CODE>
+before <CODE>readline.h</CODE>.
</P><P>
<CODE>readline.h</CODE> defines a C preprocessor variable that should
be treated as an integer, <CODE>RL_READLINE_VERSION</CODE>, which may
be used to conditionally compile application code depending on
-the installed Readline version. The value is a hexadecimal
+the installed Readline version.
+The value is a hexadecimal
encoding of the major and minor version numbers of the library,
of the form 0x<VAR>MMmm</VAR>. <VAR>MM</VAR> is the two-digit major
version number; <VAR>mm</VAR> is the two-digit minor version number.
<DT><CODE>typedef void rl_compdisp_func_t (char **, int, int);</CODE>
<DD><P>
+<DT><CODE>typedef void rl_macro_print_func_t (const char *, const char *, int, const char *);</CODE>
+<DD><P>
+
<DT><CODE>typedef int rl_hook_func_t (void);</CODE>
<DD><P>
</DL>
<P>
+The <TT>`rltypedefs.h'</TT> file has more documentation for these types.
+</P><P>
+
<A NAME="Function Writing"></A>
<HR SIZE="6">
<A NAME="SEC27"></A>
</P><P>
It is completely up to the function as to what should be done with the
-numeric argument. Some functions use it as a repeat count, some
+numeric argument.
+Some functions use it as a repeat count, some
as a flag, and others to choose alternate behavior (refreshing the current
-line as opposed to refreshing the screen, for example). Some choose to
-ignore it. In general, if a
+line as opposed to refreshing the screen, for example).
+Some choose to ignore it.
+In general, if a
function uses the numeric argument as a repeat count, it should be able
to do something useful with both negative and positive arguments.
At the very least, it should be aware that it can be passed a
A command function should return 0 if its action completes successfully,
and a value greater than zero if some error occurs.
-This is the convention obeyed by all of the builtin Readline bindable
-command functions.
+All of the builtin Readline bindable command functions
+obey this convention.
</P><P>
<A NAME="Readline Variables"></A>
These variables are available to function writers.
</P><P>
-<A NAME="IDX215"></A>
+<A NAME="IDX229"></A>
<DL>
<DT><U>Variable:</U> char * <B>rl_line_buffer</B>
-<DD>This is the line gathered so far. You are welcome to modify the
-contents of the line, but see <A HREF="readline.html#SEC34">2.4.5 Allowing Undoing</A>. The
-function <CODE>rl_extend_line_buffer</CODE> is available to increase
+<DD>This is the line gathered so far.
+You are welcome to modify the contents of the line,
+but see <A HREF="readline.html#SEC34">2.4.5 Allowing Undoing</A>.
+The function <CODE>rl_extend_line_buffer</CODE> will increase
the memory allocated to <CODE>rl_line_buffer</CODE>.
</DL>
</P><P>
-<A NAME="IDX216"></A>
+<A NAME="IDX230"></A>
<DL>
<DT><U>Variable:</U> int <B>rl_point</B>
<DD>The offset of the current cursor position in <CODE>rl_line_buffer</CODE>
</DL>
</P><P>
-<A NAME="IDX217"></A>
+<A NAME="IDX231"></A>
<DL>
<DT><U>Variable:</U> int <B>rl_end</B>
-<DD>The number of characters present in <CODE>rl_line_buffer</CODE>. When
-<CODE>rl_point</CODE> is at the end of the line, <CODE>rl_point</CODE> and
-<CODE>rl_end</CODE> are equal.
+<DD>The number of characters present in <CODE>rl_line_buffer</CODE>.
+When <CODE>rl_point</CODE> is at the end of the line,
+<CODE>rl_point</CODE> and <CODE>rl_end</CODE> are equal.
</DL>
</P><P>
-<A NAME="IDX218"></A>
+<A NAME="IDX232"></A>
<DL>
<DT><U>Variable:</U> int <B>rl_mark</B>
-<DD>The <VAR>mark</VAR> (saved position) in the current line. If set, the mark
-and point define a <EM>region</EM>.
+<DD>The <VAR>mark</VAR> (saved position) in the current line.
+If set, the mark and point define a <EM>region</EM>.
+Some Readline commands set the mark as part of operating;
+users can also set the mark explicitly.
</DL>
</P><P>
-<A NAME="IDX219"></A>
+<A NAME="IDX233"></A>
<DL>
<DT><U>Variable:</U> int <B>rl_done</B>
<DD>Setting this to a non-zero value causes Readline to return the current
line immediately.
+Readline will set this variable when it has read a key sequence bound
+to <CODE>accept-line</CODE> and is about to return the line to the caller.
+</DL>
+</P><P>
+
+<A NAME="IDX234"></A>
+<DL>
+<DT><U>Variable:</U> int <B>rl_eof_found</B>
+<DD>Readline will set this variable when it has read an EOF character
+(e.g., the stty <SAMP>`EOF'</SAMP> character) on an empty line
+or has encountered a read error or EOF and
+is about to return a NULL line to the caller.
</DL>
</P><P>
-<A NAME="IDX220"></A>
+<A NAME="IDX235"></A>
<DL>
<DT><U>Variable:</U> int <B>rl_num_chars_to_read</B>
<DD>Setting this to a positive value before calling <CODE>readline()</CODE> causes
</DL>
</P><P>
-<A NAME="IDX221"></A>
+<A NAME="IDX236"></A>
<DL>
<DT><U>Variable:</U> int <B>rl_pending_input</B>
-<DD>Setting this to a value makes it the next keystroke read. This is a
-way to stuff a single character into the input stream.
+<DD>Setting this to a value makes it the next keystroke read.
+This is a way to stuff a single character into the input stream.
</DL>
</P><P>
-<A NAME="IDX222"></A>
+<A NAME="IDX237"></A>
<DL>
<DT><U>Variable:</U> int <B>rl_dispatching</B>
<DD>Set to a non-zero value if a function is being called from a key binding;
-zero otherwise. Application functions can test this to discover whether
+zero otherwise.
+Application functions can test this to discover whether
they were called directly or by Readline's dispatching mechanism.
</DL>
</P><P>
-<A NAME="IDX223"></A>
+<A NAME="IDX238"></A>
<DL>
<DT><U>Variable:</U> int <B>rl_erase_empty_line</B>
<DD>Setting this to a non-zero value causes Readline to completely erase
the current line, including any prompt, any time a newline is typed as
-the only character on an otherwise-empty line. The cursor is moved to
-the beginning of the newly-blank line.
+the only character on an otherwise-empty line.
+This moves the cursor to the beginning of the newly-blank line.
</DL>
</P><P>
-<A NAME="IDX224"></A>
+<A NAME="IDX239"></A>
<DL>
<DT><U>Variable:</U> char * <B>rl_prompt</B>
-<DD>The prompt Readline uses. This is set from the argument to
+<DD>The prompt Readline uses.
+This is set from the argument to
<CODE>readline()</CODE>, and should not be assigned to directly.
The <CODE>rl_set_prompt()</CODE> function (see section <A HREF="readline.html#SEC35">2.4.6 Redisplay</A>) may
be used to modify the prompt string after calling <CODE>readline()</CODE>.
+Readline performs some prompt expansions and analyzes the prompt for
+line breaks, so <CODE>rl_set_prompt()</CODE> is preferred.
</DL>
</P><P>
-<A NAME="IDX225"></A>
+<A NAME="IDX240"></A>
<DL>
<DT><U>Variable:</U> char * <B>rl_display_prompt</B>
-<DD>The string displayed as the prompt. This is usually identical to
+<DD>The string displayed as the prompt.
+This is usually identical to
<VAR>rl_prompt</VAR>, but may be changed temporarily by functions that
use the prompt string as a message area, such as incremental search.
</DL>
</P><P>
-<A NAME="IDX226"></A>
+<A NAME="IDX241"></A>
<DL>
<DT><U>Variable:</U> int <B>rl_already_prompted</B>
<DD>If an application wishes to display the prompt itself, rather than have
</DL>
</P><P>
-<A NAME="IDX227"></A>
+<A NAME="IDX242"></A>
<DL>
<DT><U>Variable:</U> const char * <B>rl_library_version</B>
-<DD>The version number of this revision of the library.
+<DD>The version number of this revision of the Readline library, as a string
+(e.g., "4.2").
</DL>
</P><P>
-<A NAME="IDX228"></A>
+<A NAME="IDX243"></A>
<DL>
<DT><U>Variable:</U> int <B>rl_readline_version</B>
-<DD>An integer encoding the current version of the library. The encoding is
-of the form 0x<VAR>MMmm</VAR>, where <VAR>MM</VAR> is the two-digit major version
-number, and <VAR>mm</VAR> is the two-digit minor version number.
+<DD>An integer encoding the current version of the library.
+The encoding is of the form 0x<VAR>MMmm</VAR>,
+where <VAR>MM</VAR> is the two-digit major version number,
+and <VAR>mm</VAR> is the two-digit minor version number.
For example, for Readline-4.2, <CODE>rl_readline_version</CODE> would have the
value 0x0402.
</DL>
</P><P>
-<A NAME="IDX229"></A>
+<A NAME="IDX244"></A>
<DL>
<DT><U>Variable:</U> int <B>rl_gnu_readline_p</B>
-<DD>Always set to 1, denoting that this is GNU readline rather than some
+<DD>Always set to 1, denoting that this is GNU Readline rather than some
emulation.
</DL>
</P><P>
-<A NAME="IDX230"></A>
+<A NAME="IDX245"></A>
<DL>
<DT><U>Variable:</U> const char * <B>rl_terminal_name</B>
-<DD>The terminal type, used for initialization. If not set by the application,
+<DD>The terminal type, used for initialization.
+If not set by the application,
Readline sets this to the value of the <CODE>TERM</CODE> environment variable
the first time it is called.
+Readline uses this to look up the terminal capabilities it needs in
+the terminfo database.
</DL>
</P><P>
-<A NAME="IDX231"></A>
+<A NAME="IDX246"></A>
<DL>
<DT><U>Variable:</U> const char * <B>rl_readline_name</B>
<DD>This variable is set to a unique name by each application using Readline.
</DL>
</P><P>
-<A NAME="IDX232"></A>
+<A NAME="IDX247"></A>
<DL>
<DT><U>Variable:</U> FILE * <B>rl_instream</B>
<DD>The stdio stream from which Readline reads input.
</DL>
</P><P>
-<A NAME="IDX233"></A>
+<A NAME="IDX248"></A>
<DL>
<DT><U>Variable:</U> FILE * <B>rl_outstream</B>
<DD>The stdio stream to which Readline performs output.
</DL>
</P><P>
-<A NAME="IDX234"></A>
+<A NAME="IDX249"></A>
<DL>
<DT><U>Variable:</U> int <B>rl_prefer_env_winsize</B>
<DD>If non-zero, Readline gives values found in the <CODE>LINES</CODE> and
</DL>
</P><P>
-<A NAME="IDX235"></A>
+<A NAME="IDX250"></A>
<DL>
<DT><U>Variable:</U> rl_command_func_t * <B>rl_last_func</B>
-<DD>The address of the last command function Readline executed. May be used to
-test whether or not a function is being executed twice in succession, for
-example.
+<DD>The address of the last command function Readline executed.
+This may be used to test whether or not a function is being executed
+twice in succession, for example.
</DL>
</P><P>
-<A NAME="IDX236"></A>
+<A NAME="IDX251"></A>
<DL>
<DT><U>Variable:</U> rl_hook_func_t * <B>rl_startup_hook</B>
<DD>If non-zero, this is the address of a function to call just
</DL>
</P><P>
-<A NAME="IDX237"></A>
+<A NAME="IDX252"></A>
<DL>
<DT><U>Variable:</U> rl_hook_func_t * <B>rl_pre_input_hook</B>
<DD>If non-zero, this is the address of a function to call after
</DL>
</P><P>
-<A NAME="IDX238"></A>
+<A NAME="IDX253"></A>
<DL>
<DT><U>Variable:</U> rl_hook_func_t * <B>rl_event_hook</B>
<DD>If non-zero, this is the address of a function to call periodically
</DL>
</P><P>
-<A NAME="IDX239"></A>
+<A NAME="IDX254"></A>
<DL>
<DT><U>Variable:</U> rl_getc_func_t * <B>rl_getc_function</B>
<DD>If non-zero, Readline will call indirectly through this pointer
-to get a character from the input stream. By default, it is set to
-<CODE>rl_getc</CODE>, the default Readline character input function
-(see section <A HREF="readline.html#SEC37">2.4.8 Character Input</A>).
+to get a character from the input stream.
+By default, it is set to <CODE>rl_getc</CODE>, the Readline character
+input function (see section <A HREF="readline.html#SEC37">2.4.8 Character Input</A>).
In general, an application that sets <VAR>rl_getc_function</VAR> should consider
setting <VAR>rl_input_available_hook</VAR> as well.
</DL>
</P><P>
-<A NAME="IDX240"></A>
+<A NAME="IDX255"></A>
<DL>
<DT><U>Variable:</U> rl_hook_func_t * <B>rl_signal_event_hook</B>
<DD>If non-zero, this is the address of a function to call if a read system
-call is interrupted when Readline is reading terminal input.
+call is interrupted by a signal when Readline is reading terminal input.
</DL>
</P><P>
-<A NAME="IDX241"></A>
+<A NAME="IDX256"></A>
+<DL>
+<DT><U>Variable:</U> rl_hook_func_t * <B>rl_timeout_event_hook</B>
+<DD>If non-zero, this is the address of a function to call if Readline times
+out while reading input.
+</DL>
+</P><P>
+
+<A NAME="IDX257"></A>
<DL>
<DT><U>Variable:</U> rl_hook_func_t * <B>rl_input_available_hook</B>
<DD>If non-zero, Readline will use this function's return value when it needs
different input source, it should set the hook appropriately.
Readline queries for available input when implementing intra-key-sequence
timeouts during input and incremental searches.
+This function must return zero if there is no input available, and non-zero
+if input is available.
This may use an application-specific timeout before returning a value;
Readline uses the value passed to <CODE>rl_set_keyboard_input_timeout()</CODE>
or the value of the user-settable <VAR>keyseq-timeout</VAR> variable.
</DL>
</P><P>
-<A NAME="IDX242"></A>
+<A NAME="IDX258"></A>
<DL>
<DT><U>Variable:</U> rl_voidfunc_t * <B>rl_redisplay_function</B>
-<DD>If non-zero, Readline will call indirectly through this pointer
+<DD>Readline will call indirectly through this pointer
to update the display with the current contents of the editing buffer.
By default, it is set to <CODE>rl_redisplay</CODE>, the default Readline
redisplay function (see section <A HREF="readline.html#SEC35">2.4.6 Redisplay</A>).
</DL>
</P><P>
-<A NAME="IDX243"></A>
+<A NAME="IDX259"></A>
<DL>
<DT><U>Variable:</U> rl_vintfunc_t * <B>rl_prep_term_function</B>
<DD>If non-zero, Readline will call indirectly through this pointer
-to initialize the terminal. The function takes a single argument, an
+to initialize the terminal.
+The function takes a single argument, an
<CODE>int</CODE> flag that says whether or not to use eight-bit characters.
By default, this is set to <CODE>rl_prep_terminal</CODE>
(see section <A HREF="readline.html#SEC38">2.4.9 Terminal Management</A>).
</DL>
</P><P>
-<A NAME="IDX244"></A>
+<A NAME="IDX260"></A>
<DL>
<DT><U>Variable:</U> rl_voidfunc_t * <B>rl_deprep_term_function</B>
<DD>If non-zero, Readline will call indirectly through this pointer
-to reset the terminal. This function should undo the effects of
-<CODE>rl_prep_term_function</CODE>.
+to reset the terminal.
+This function should undo the effects of <CODE>rl_prep_term_function</CODE>.
By default, this is set to <CODE>rl_deprep_terminal</CODE>
(see section <A HREF="readline.html#SEC38">2.4.9 Terminal Management</A>).
</DL>
</P><P>
-<A NAME="IDX245"></A>
+<A NAME="IDX261"></A>
+<DL>
+<DT><U>Variable:</U> void <B>rl_macro_display_hook</B>
+<DD>If set, this points to a function that <CODE>rl_macro_dumper</CODE> will call to
+display a key sequence bound to a macro.
+It is called with the key sequence, the "untranslated" macro value (i.e.,
+with backslash escapes included, as when passed to <CODE>rl_macro_bind</CODE>),
+the <CODE>readable</CODE> argument passed to <CODE>rl_macro_dumper</CODE>, and any
+prefix to display before the key sequence.
+</DL>
+</P><P>
+
+<A NAME="IDX262"></A>
<DL>
<DT><U>Variable:</U> Keymap <B>rl_executing_keymap</B>
<DD>This variable is set to the keymap (see section <A HREF="readline.html#SEC31">2.4.2 Selecting a Keymap</A>) in which the
-currently executing readline function was found.
+currently executing Readline function was found.
</DL>
</P><P>
-<A NAME="IDX246"></A>
+<A NAME="IDX263"></A>
<DL>
<DT><U>Variable:</U> Keymap <B>rl_binding_keymap</B>
<DD>This variable is set to the keymap (see section <A HREF="readline.html#SEC31">2.4.2 Selecting a Keymap</A>) in which the
</DL>
</P><P>
-<A NAME="IDX247"></A>
+<A NAME="IDX264"></A>
<DL>
<DT><U>Variable:</U> char * <B>rl_executing_macro</B>
<DD>This variable is set to the text of any currently-executing macro.
</DL>
</P><P>
-<A NAME="IDX248"></A>
+<A NAME="IDX265"></A>
<DL>
<DT><U>Variable:</U> int <B>rl_executing_key</B>
<DD>The key that caused the dispatch to the currently-executing Readline function.
</DL>
</P><P>
-<A NAME="IDX249"></A>
+<A NAME="IDX266"></A>
<DL>
<DT><U>Variable:</U> char * <B>rl_executing_keyseq</B>
<DD>The full key sequence that caused the dispatch to the currently-executing
</DL>
</P><P>
-<A NAME="IDX250"></A>
+<A NAME="IDX267"></A>
<DL>
<DT><U>Variable:</U> int <B>rl_key_sequence_length</B>
<DD>The number of characters in <VAR>rl_executing_keyseq</VAR>.
</DL>
</P><P>
-<A NAME="IDX251"></A>
+<A NAME="IDX268"></A>
<DL>
<DT><U>Variable:</U> int <B>rl_readline_state</B>
<DD>A variable with bit values that encapsulate the current Readline state.
A bit is set with the <CODE>RL_SETSTATE</CODE> macro, and unset with the
-<CODE>RL_UNSETSTATE</CODE> macro. Use the <CODE>RL_ISSTATE</CODE> macro to test
-whether a particular state bit is set. Current state bits include:
+<CODE>RL_UNSETSTATE</CODE> macro.
+Use the <CODE>RL_ISSTATE</CODE> macro to test whether a particular state
+bit is set.
+Current state bits include:
</P><P>
<DL COMPACT>
<DT><CODE>RL_STATE_DONE</CODE>
<DD>Readline has read a key sequence bound to <CODE>accept-line</CODE>
and is about to return the line to the caller.
+<DT><CODE>RL_STATE_TIMEOUT</CODE>
+<DD>Readline has timed out (it did not receive a line or specified number of
+characters before the timeout duration specified by <CODE>rl_set_timeout</CODE>
+elapsed) and is returning that status to the caller.
+<DT><CODE>RL_STATE_EOF</CODE>
+<DD>Readline has read an EOF character (e.g., the stty <SAMP>`EOF'</SAMP> character)
+or encountered a read error or EOF
+and is about to return a NULL line to the caller.
</DL>
<P>
</DL>
</P><P>
-<A NAME="IDX252"></A>
+<A NAME="IDX269"></A>
<DL>
<DT><U>Variable:</U> int <B>rl_explicit_arg</B>
<DD>Set to a non-zero value if an explicit numeric argument was specified by
-the user. Only valid in a bindable command function.
+the user.
+It is only valid in a bindable command function.
</DL>
</P><P>
-<A NAME="IDX253"></A>
+<A NAME="IDX270"></A>
<DL>
<DT><U>Variable:</U> int <B>rl_numeric_arg</B>
<DD>Set to the value of any numeric argument explicitly specified by the user
-before executing the current Readline function. Only valid in a bindable
-command function.
+before executing the current Readline function.
+It is only valid in a bindable command function.
</DL>
</P><P>
-<A NAME="IDX254"></A>
+<A NAME="IDX271"></A>
<DL>
<DT><U>Variable:</U> int <B>rl_editing_mode</B>
-<DD>Set to a value denoting Readline's current editing mode. A value of
-<VAR>1</VAR> means Readline is currently in emacs mode; <VAR>0</VAR>
-means that vi mode is active.
+<DD>Set to a value denoting Readline's current editing mode.
+A value of <VAR>1</VAR> means Readline is currently in emacs mode;
+<VAR>0</VAR> means that vi mode is active.
+This determines the current keymap and key bindings.
</DL>
</P><P>
<!--docid::SEC30::-->
<P>
-The user can dynamically change the bindings of keys while using
-Readline. This is done by representing the function with a descriptive
-name. The user is able to type the descriptive name when referring to
-the function. Thus, in an init file, one might find
+Readline has a descriptive
+string name for every function a user can bind to a key sequence,
+so users can dynamically change the bindings associated with key
+sequences while using Readline,
+using the descriptive name when referring to the function.
+Thus, in an init file, one might find
</P><P>
<TABLE><tr><td> </td><td class=example><pre>Meta-Rubout: backward-kill-word
</pre></td></tr></table></P><P>
This binds the keystroke <KBD>Meta-Rubout</KBD> to the function
-<EM>descriptively</EM> named <CODE>backward-kill-word</CODE>. You, as the
-programmer, should bind the functions you write to descriptive names as
-well. Readline provides a function for doing that:
+<EM>descriptively</EM> named <CODE>backward-kill-word</CODE>.
+As the programmer, you
+should bind the functions you write to descriptive names as well.
+Readline provides a function for doing that:
</P><P>
-<A NAME="IDX255"></A>
+<A NAME="IDX272"></A>
<DL>
<DT><U>Function:</U> int <B>rl_add_defun</B> <I>(const char *name, rl_command_func_t *function, int key)</I>
-<DD>Add <VAR>name</VAR> to the list of named functions. Make <VAR>function</VAR> be
-the function that gets called. If <VAR>key</VAR> is not -1, then bind it to
+<DD>Add <VAR>name</VAR> to the list of named functions.
+Make <VAR>function</VAR> be the function that gets called by key sequences
+that bind to <VAR>name</VAR>.
+If <VAR>key</VAR> is not -1, then bind it to
<VAR>function</VAR> using <CODE>rl_bind_key()</CODE>.
</DL>
</P><P>
<!--docid::SEC31::-->
<P>
-Key bindings take place on a <EM>keymap</EM>. The keymap is the
-association between the keys that the user types and the functions that
-get run. You can make your own keymaps, copy existing keymaps, and tell
+Key bindings take place on a <EM>keymap</EM>.
+The keymap is the association between the keys that the user types and
+the functions that get run.
+You can make your own keymaps, copy existing keymaps, and tell
Readline which keymap to use.
</P><P>
-<A NAME="IDX256"></A>
+<A NAME="IDX273"></A>
<DL>
<DT><U>Function:</U> Keymap <B>rl_make_bare_keymap</B> <I>(void)</I>
-<DD>Returns a new, empty keymap. The space for the keymap is allocated with
+<DD>Returns a new, empty keymap.
+The space for the keymap is allocated with
<CODE>malloc()</CODE>; the caller should free it by calling
<CODE>rl_free_keymap()</CODE> when done.
</DL>
</P><P>
-<A NAME="IDX257"></A>
+<A NAME="IDX274"></A>
<DL>
<DT><U>Function:</U> Keymap <B>rl_copy_keymap</B> <I>(Keymap map)</I>
<DD>Return a new keymap which is a copy of <VAR>map</VAR>.
</DL>
</P><P>
-<A NAME="IDX258"></A>
+<A NAME="IDX275"></A>
<DL>
<DT><U>Function:</U> Keymap <B>rl_make_keymap</B> <I>(void)</I>
<DD>Return a new keymap with the printing characters bound to rl_insert,
</DL>
</P><P>
-<A NAME="IDX259"></A>
+<A NAME="IDX276"></A>
<DL>
<DT><U>Function:</U> void <B>rl_discard_keymap</B> <I>(Keymap keymap)</I>
<DD>Free the storage associated with the data in <VAR>keymap</VAR>.
</DL>
</P><P>
-<A NAME="IDX260"></A>
+<A NAME="IDX277"></A>
<DL>
<DT><U>Function:</U> void <B>rl_free_keymap</B> <I>(Keymap keymap)</I>
-<DD>Free all storage associated with <VAR>keymap</VAR>. This calls
-<CODE>rl_discard_keymap</CODE> to free subordindate keymaps and macros.
+<DD>Free all storage associated with <VAR>keymap</VAR>.
+This calls <CODE>rl_discard_keymap</CODE> to free subordindate
+keymaps and macros.
</DL>
</P><P>
-<A NAME="IDX261"></A>
+<A NAME="IDX278"></A>
<DL>
<DT><U>Function:</U> int <B>rl_empty_keymap</B> <I>(Keymap keymap)</I>
<DD>Return non-zero if there are no keys bound to functions in <VAR>keymap</VAR>;
</DL>
</P><P>
-Readline has several internal keymaps. These functions allow you to
-change which keymap is active.
+Readline has several internal keymaps.
+These functions allow you to change which keymap is active.
+This is one way to switch editing modes, for example.
</P><P>
-<A NAME="IDX262"></A>
+<A NAME="IDX279"></A>
<DL>
<DT><U>Function:</U> Keymap <B>rl_get_keymap</B> <I>(void)</I>
<DD>Returns the currently active keymap.
</DL>
</P><P>
-<A NAME="IDX263"></A>
+<A NAME="IDX280"></A>
<DL>
<DT><U>Function:</U> void <B>rl_set_keymap</B> <I>(Keymap keymap)</I>
<DD>Makes <VAR>keymap</VAR> the currently active keymap.
</DL>
</P><P>
-<A NAME="IDX264"></A>
+<A NAME="IDX281"></A>
<DL>
<DT><U>Function:</U> Keymap <B>rl_get_keymap_by_name</B> <I>(const char *name)</I>
-<DD>Return the keymap matching <VAR>name</VAR>. <VAR>name</VAR> is one which would
-be supplied in a <CODE>set keymap</CODE> inputrc line (see section <A HREF="readline.html#SEC9">1.3 Readline Init File</A>).
+<DD>Return the keymap matching <VAR>name</VAR>.
+<VAR>name</VAR> is one which would be supplied in a
+<CODE>set keymap</CODE> inputrc line (see section <A HREF="readline.html#SEC9">1.3 Readline Init File</A>).
</DL>
</P><P>
-<A NAME="IDX265"></A>
+<A NAME="IDX282"></A>
<DL>
<DT><U>Function:</U> char * <B>rl_get_keymap_name</B> <I>(Keymap keymap)</I>
-<DD>Return the name matching <VAR>keymap</VAR>. <VAR>name</VAR> is one which would
-be supplied in a <CODE>set keymap</CODE> inputrc line (see section <A HREF="readline.html#SEC9">1.3 Readline Init File</A>).
+<DD>Return the name matching <VAR>keymap</VAR>.
+<VAR>name</VAR> is one which would be supplied in a
+<CODE>set keymap</CODE> inputrc line (see section <A HREF="readline.html#SEC9">1.3 Readline Init File</A>).
+</DL>
+</P><P>
+
+<A NAME="IDX283"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_set_keymap_name</B> <I>(const char *name, Keymap keymap)</I>
+<DD>Set the name of <VAR>keymap</VAR>.
+This name will then be "registered" and
+available for use in a <CODE>set keymap</CODE> inputrc directive
+see section <A HREF="readline.html#SEC9">1.3 Readline Init File</A>).
+The <VAR>name</VAR> may not be one of Readline's builtin keymap names;
+you may not add a different name for one of Readline's builtin keymaps.
+You may replace the name associated with a given keymap by calling this
+function more than once with the same <VAR>keymap</VAR> argument.
+You may associate a registered <VAR>name</VAR> with a new keymap by calling this
+function more than once with the same <VAR>name</VAR> argument.
+There is no way to remove a named keymap once the name has been
+registered.
+Readline will make a copy of <VAR>name</VAR>.
+The return value is greater than zero unless <VAR>name</VAR> is one of
+Readline's builtin keymap names or <VAR>keymap</VAR> is one of Readline's
+builtin keymaps.
</DL>
</P><P>
<!--docid::SEC32::-->
<P>
-Key sequences are associate with functions through the keymap.
+Key sequences are associated with functions through the keymap.
Readline has several internal keymaps: <CODE>emacs_standard_keymap</CODE>,
<CODE>emacs_meta_keymap</CODE>, <CODE>emacs_ctlx_keymap</CODE>,
<CODE>vi_movement_keymap</CODE>, and <CODE>vi_insertion_keymap</CODE>.
Since <CODE>readline()</CODE> installs a set of default key bindings the first
time it is called, there is always the danger that a custom binding
installed before the first call to <CODE>readline()</CODE> will be overridden.
-An alternate mechanism is to install custom key bindings in an
+An alternate mechanism that can avoid this
+is to install custom key bindings in an
initialization function assigned to the <CODE>rl_startup_hook</CODE> variable
(see section <A HREF="readline.html#SEC28">2.3 Readline Variables</A>).
</P><P>
These functions manage key bindings.
</P><P>
-<A NAME="IDX266"></A>
+<A NAME="IDX284"></A>
<DL>
<DT><U>Function:</U> int <B>rl_bind_key</B> <I>(int key, rl_command_func_t *function)</I>
<DD>Binds <VAR>key</VAR> to <VAR>function</VAR> in the currently active keymap.
</DL>
</P><P>
-<A NAME="IDX267"></A>
+<A NAME="IDX285"></A>
<DL>
<DT><U>Function:</U> int <B>rl_bind_key_in_map</B> <I>(int key, rl_command_func_t *function, Keymap map)</I>
<DD>Bind <VAR>key</VAR> to <VAR>function</VAR> in <VAR>map</VAR>.
</DL>
</P><P>
-<A NAME="IDX268"></A>
+<A NAME="IDX286"></A>
<DL>
<DT><U>Function:</U> int <B>rl_bind_key_if_unbound</B> <I>(int key, rl_command_func_t *function)</I>
<DD>Binds <VAR>key</VAR> to <VAR>function</VAR> if it is not already bound in the
</DL>
</P><P>
-<A NAME="IDX269"></A>
+<A NAME="IDX287"></A>
<DL>
<DT><U>Function:</U> int <B>rl_bind_key_if_unbound_in_map</B> <I>(int key, rl_command_func_t *function, Keymap map)</I>
<DD>Binds <VAR>key</VAR> to <VAR>function</VAR> if it is not already bound in <VAR>map</VAR>.
</DL>
</P><P>
-<A NAME="IDX270"></A>
+<A NAME="IDX288"></A>
<DL>
<DT><U>Function:</U> int <B>rl_unbind_key</B> <I>(int key)</I>
<DD>Bind <VAR>key</VAR> to the null function in the currently active keymap.
+This is not the same as binding it to <CODE>self-insert</CODE>.
Returns non-zero in case of error.
</DL>
</P><P>
-<A NAME="IDX271"></A>
+<A NAME="IDX289"></A>
<DL>
<DT><U>Function:</U> int <B>rl_unbind_key_in_map</B> <I>(int key, Keymap map)</I>
<DD>Bind <VAR>key</VAR> to the null function in <VAR>map</VAR>.
+This is not the same as binding it to <CODE>self-insert</CODE>.
Returns non-zero in case of error.
</DL>
</P><P>
-<A NAME="IDX272"></A>
+<A NAME="IDX290"></A>
<DL>
<DT><U>Function:</U> int <B>rl_unbind_function_in_map</B> <I>(rl_command_func_t *function, Keymap map)</I>
<DD>Unbind all keys that execute <VAR>function</VAR> in <VAR>map</VAR>.
</DL>
</P><P>
-<A NAME="IDX273"></A>
+<A NAME="IDX291"></A>
<DL>
<DT><U>Function:</U> int <B>rl_unbind_command_in_map</B> <I>(const char *command, Keymap map)</I>
<DD>Unbind all keys that are bound to <VAR>command</VAR> in <VAR>map</VAR>.
</DL>
</P><P>
-<A NAME="IDX274"></A>
+<A NAME="IDX292"></A>
<DL>
<DT><U>Function:</U> int <B>rl_bind_keyseq</B> <I>(const char *keyseq, rl_command_func_t *function)</I>
<DD>Bind the key sequence represented by the string <VAR>keyseq</VAR> to the function
</DL>
</P><P>
-<A NAME="IDX275"></A>
+<A NAME="IDX293"></A>
<DL>
<DT><U>Function:</U> int <B>rl_bind_keyseq_in_map</B> <I>(const char *keyseq, rl_command_func_t *function, Keymap map)</I>
<DD>Bind the key sequence represented by the string <VAR>keyseq</VAR> to the function
-<VAR>function</VAR>. This makes new keymaps as necessary.
+<VAR>function</VAR> in <VAR>map</VAR>.
+This makes new keymaps as necessary.
Initial bindings are performed in <VAR>map</VAR>.
The return value is non-zero if <VAR>keyseq</VAR> is invalid.
</DL>
</P><P>
-<A NAME="IDX276"></A>
+<A NAME="IDX294"></A>
<DL>
<DT><U>Function:</U> int <B>rl_set_key</B> <I>(const char *keyseq, rl_command_func_t *function, Keymap map)</I>
<DD>Equivalent to <CODE>rl_bind_keyseq_in_map</CODE>.
</DL>
</P><P>
-<A NAME="IDX277"></A>
+<A NAME="IDX295"></A>
<DL>
<DT><U>Function:</U> int <B>rl_bind_keyseq_if_unbound</B> <I>(const char *keyseq, rl_command_func_t *function)</I>
<DD>Binds <VAR>keyseq</VAR> to <VAR>function</VAR> if it is not already bound in the
</DL>
</P><P>
-<A NAME="IDX278"></A>
+<A NAME="IDX296"></A>
<DL>
<DT><U>Function:</U> int <B>rl_bind_keyseq_if_unbound_in_map</B> <I>(const char *keyseq, rl_command_func_t *function, Keymap map)</I>
<DD>Binds <VAR>keyseq</VAR> to <VAR>function</VAR> if it is not already bound in <VAR>map</VAR>.
</DL>
</P><P>
-<A NAME="IDX279"></A>
+<A NAME="IDX297"></A>
<DL>
<DT><U>Function:</U> int <B>rl_generic_bind</B> <I>(int type, const char *keyseq, char *data, Keymap map)</I>
<DD>Bind the key sequence represented by the string <VAR>keyseq</VAR> to the arbitrary
-pointer <VAR>data</VAR>. <VAR>type</VAR> says what kind of data is pointed to by
-<VAR>data</VAR>; this can be a function (<CODE>ISFUNC</CODE>), a macro
-(<CODE>ISMACR</CODE>), or a keymap (<CODE>ISKMAP</CODE>). This makes new keymaps as
-necessary. The initial keymap in which to do bindings is <VAR>map</VAR>.
+pointer <VAR>data</VAR>.
+<VAR>type</VAR> says what kind of data is pointed to by <VAR>data</VAR>; this can be
+a function (<CODE>ISFUNC</CODE>),
+a macro (<CODE>ISMACR</CODE>),
+or a keymap (<CODE>ISKMAP</CODE>).
+This makes new keymaps as necessary.
+The initial keymap in which to do bindings is <VAR>map</VAR>.
+Returns non-zero in the case of an invalid <VAR>keyseq</VAR>, zero otherwise.
</DL>
</P><P>
-<A NAME="IDX280"></A>
+<A NAME="IDX298"></A>
<DL>
<DT><U>Function:</U> int <B>rl_parse_and_bind</B> <I>(char *line)</I>
<DD>Parse <VAR>line</VAR> as if it had been read from the <CODE>inputrc</CODE> file and
</DL>
</P><P>
-<A NAME="IDX281"></A>
+<A NAME="IDX299"></A>
<DL>
<DT><U>Function:</U> int <B>rl_read_init_file</B> <I>(const char *filename)</I>
<DD>Read keybindings and variable assignments from <VAR>filename</VAR>
<P>
These functions allow you to find out what keys invoke named functions
-and the functions invoked by a particular key sequence. You may also
-associate a new function name with an arbitrary function.
+and the functions invoked by a particular key sequence.
+You may also associate a new function name with an arbitrary function.
</P><P>
-<A NAME="IDX282"></A>
+<A NAME="IDX300"></A>
<DL>
<DT><U>Function:</U> rl_command_func_t * <B>rl_named_function</B> <I>(const char *name)</I>
<DD>Return the function with name <VAR>name</VAR>.
+<VAR>name</VAR> is a descriptive name users might use in a key binding.
</DL>
</P><P>
-<A NAME="IDX283"></A>
+<A NAME="IDX301"></A>
<DL>
<DT><U>Function:</U> rl_command_func_t * <B>rl_function_of_keyseq</B> <I>(const char *keyseq, Keymap map, int *type)</I>
<DD>Return the function invoked by <VAR>keyseq</VAR> in keymap <VAR>map</VAR>.
-If <VAR>map</VAR> is <CODE>NULL</CODE>, the current keymap is used. If <VAR>type</VAR> is
-not <CODE>NULL</CODE>, the type of the object is returned in the <CODE>int</CODE> variable
-it points to (one of <CODE>ISFUNC</CODE>, <CODE>ISKMAP</CODE>, or <CODE>ISMACR</CODE>).
+If <VAR>map</VAR> is <CODE>NULL</CODE>, this uses the current keymap.
+If <VAR>type</VAR> is not <CODE>NULL</CODE>, this returns the type of the object
+in the <CODE>int</CODE> variable it points to
+(one of <CODE>ISFUNC</CODE>, <CODE>ISKMAP</CODE>, or <CODE>ISMACR</CODE>).
+It takes a "translated" key sequence and should not be used
+if the key sequence can include NUL.
</DL>
</P><P>
-<A NAME="IDX284"></A>
+<A NAME="IDX302"></A>
+<DL>
+<DT><U>Function:</U> rl_command_func_t * <B>rl_function_of_keyseq_len</B> <I>(const char *keyseq, size_t len, Keymap map, int *type)</I>
+<DD>Return the function invoked by <VAR>keyseq</VAR> of length <VAR>len</VAR>
+in keymap <VAR>map</VAR>.
+Equivalent to <CODE>rl_function_of_keyseq</CODE> with the addition
+of the <VAR>len</VAR> parameter.
+It takes a "translated" key sequence and should be used
+if the key sequence can include NUL.
+</DL>
+</P><P>
+
+<A NAME="IDX303"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_trim_arg_from_keyseq</B> <I>(const char *keyseq, size_t len, Keymap map)</I>
+<DD>If there is a numeric argument at the beginning of <VAR>keyseq</VAR>, possibly
+including digits, return the index of the first character in <VAR>keyseq</VAR>
+following the numeric argument.
+This can be used to skip over the numeric argument (which is available as
+<CODE>rl_numeric_arg</CODE>) while traversing the key sequence that invoked the
+current command.
+</DL>
+</P><P>
+
+<A NAME="IDX304"></A>
<DL>
<DT><U>Function:</U> char ** <B>rl_invoking_keyseqs</B> <I>(rl_command_func_t *function)</I>
<DD>Return an array of strings representing the key sequences used to
</DL>
</P><P>
-<A NAME="IDX285"></A>
+<A NAME="IDX305"></A>
<DL>
<DT><U>Function:</U> char ** <B>rl_invoking_keyseqs_in_map</B> <I>(rl_command_func_t *function, Keymap map)</I>
<DD>Return an array of strings representing the key sequences used to
</DL>
</P><P>
-<A NAME="IDX286"></A>
+<A NAME="IDX306"></A>
+<DL>
+<DT><U>Function:</U> void <B>rl_print_keybinding</B> <I>(const char *name, Keymap map, int readable)</I>
+<DD>Print key sequences bound to Readline function name <VAR>name</VAR> in
+keymap <VAR>map</VAR>.
+If <VAR>map</VAR> is NULL, this uses the current keymap.
+If <VAR>readable</VAR> is non-zero,
+the list is formatted in such a way that it can be made part of an
+<CODE>inputrc</CODE> file and re-read to recreate the key binding.
+</DL>
+</P><P>
+
+<A NAME="IDX307"></A>
<DL>
<DT><U>Function:</U> void <B>rl_function_dumper</B> <I>(int readable)</I>
-<DD>Print the readline function names and the key sequences currently
-bound to them to <CODE>rl_outstream</CODE>. If <VAR>readable</VAR> is non-zero,
+<DD>Print the Readline function names and the key sequences currently
+bound to them to <CODE>rl_outstream</CODE>.
+If <VAR>readable</VAR> is non-zero,
the list is formatted in such a way that it can be made part of an
<CODE>inputrc</CODE> file and re-read.
</DL>
</P><P>
-<A NAME="IDX287"></A>
+<A NAME="IDX308"></A>
<DL>
<DT><U>Function:</U> void <B>rl_list_funmap_names</B> <I>(void)</I>
<DD>Print the names of all bindable Readline functions to <CODE>rl_outstream</CODE>.
</DL>
</P><P>
-<A NAME="IDX288"></A>
+<A NAME="IDX309"></A>
<DL>
<DT><U>Function:</U> const char ** <B>rl_funmap_names</B> <I>(void)</I>
-<DD>Return a NULL terminated array of known function names. The array is
-sorted. The array itself is allocated, but not the strings inside. You
-should free the array, but not the pointers, using <CODE>free</CODE> or
-<CODE>rl_free</CODE> when you are done.
+<DD>Return a NULL terminated array of known function names.
+The array is sorted.
+The array itself is allocated, but not the strings inside.
+You should free the array, but not the pointers, using <CODE>free</CODE>
+or <CODE>rl_free</CODE> when you are done.
</DL>
</P><P>
-<A NAME="IDX289"></A>
+<A NAME="IDX310"></A>
<DL>
<DT><U>Function:</U> int <B>rl_add_funmap_entry</B> <I>(const char *name, rl_command_func_t *function)</I>
<DD>Add <VAR>name</VAR> to the list of bindable Readline command names, and make
<VAR>function</VAR> the function to be called when <VAR>name</VAR> is invoked.
+This returns the index of the newly-added <VAR>name</VAR> in the array of
+function names.
</DL>
</P><P>
<P>
Supporting the undo command is a painless thing, and makes your
-functions much more useful. It is certainly easy to try
-something if you know you can undo it.
+functions much more useful.
+It is certainly easier to try something if you know you can undo it.
</P><P>
-If your function simply inserts text once, or deletes text once, and
-uses <CODE>rl_insert_text()</CODE> or <CODE>rl_delete_text()</CODE> to do it, then
-undoing is already done for you automatically.
+If your function simply inserts text once, or deletes text once,
+and uses <CODE>rl_insert_text()</CODE> or <CODE>rl_delete_text()</CODE> to do it,
+then Readline does the undoing for you automatically.
</P><P>
If you do multiple insertions or multiple deletions, or any combination
<CODE>rl_end_undo_group()</CODE>.
</P><P>
-The types of events that can be undone are:
+The types of events Readline can undo are:
</P><P>
<TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre>enum undo_code { UNDO_DELETE, UNDO_INSERT, UNDO_BEGIN, UNDO_END };
</FONT></pre></td></tr></table></P><P>
Notice that <CODE>UNDO_DELETE</CODE> means to insert some text, and
-<CODE>UNDO_INSERT</CODE> means to delete some text. That is, the undo code
-tells what to undo, not how to undo it. <CODE>UNDO_BEGIN</CODE> and
-<CODE>UNDO_END</CODE> are tags added by <CODE>rl_begin_undo_group()</CODE> and
-<CODE>rl_end_undo_group()</CODE>.
+<CODE>UNDO_INSERT</CODE> means to delete some text.
+That is, the undo code tells what to undo, not how to undo it.
+<CODE>UNDO_BEGIN</CODE> and <CODE>UNDO_END</CODE> are tags
+added by <CODE>rl_begin_undo_group()</CODE> and <CODE>rl_end_undo_group()</CODE>;
+they are how Readline delimits groups of commands that should be
+undone together.
</P><P>
-<A NAME="IDX290"></A>
+<A NAME="IDX311"></A>
<DL>
<DT><U>Function:</U> int <B>rl_begin_undo_group</B> <I>(void)</I>
-<DD>Begins saving undo information in a group construct. The undo
-information usually comes from calls to <CODE>rl_insert_text()</CODE> and
-<CODE>rl_delete_text()</CODE>, but could be the result of calls to
+<DD>Begins saving undo information in a group construct.
+The undo information usually comes from calls to <CODE>rl_insert_text()</CODE>
+and <CODE>rl_delete_text()</CODE>, but could be the result of calls to
<CODE>rl_add_undo()</CODE>.
</DL>
</P><P>
-<A NAME="IDX291"></A>
+<A NAME="IDX312"></A>
<DL>
<DT><U>Function:</U> int <B>rl_end_undo_group</B> <I>(void)</I>
-<DD>Closes the current undo group started with <CODE>rl_begin_undo_group
-()</CODE>. There should be one call to <CODE>rl_end_undo_group()</CODE>
+<DD>Closes the current undo group started with <CODE>rl_begin_undo_group()</CODE>.
+There should be one call to <CODE>rl_end_undo_group()</CODE>
for each call to <CODE>rl_begin_undo_group()</CODE>.
</DL>
</P><P>
-<A NAME="IDX292"></A>
+<A NAME="IDX313"></A>
<DL>
<DT><U>Function:</U> void <B>rl_add_undo</B> <I>(enum undo_code what, int start, int end, char *text)</I>
-<DD>Remember how to undo an event (according to <VAR>what</VAR>). The affected
-text runs from <VAR>start</VAR> to <VAR>end</VAR>, and encompasses <VAR>text</VAR>.
+<DD>Remember how to undo an event (according to <VAR>what</VAR>).
+The affected text runs from <VAR>start</VAR> to <VAR>end</VAR>,
+and encompasses <VAR>text</VAR>.
</DL>
</P><P>
-<A NAME="IDX293"></A>
+<A NAME="IDX314"></A>
<DL>
<DT><U>Function:</U> void <B>rl_free_undo_list</B> <I>(void)</I>
<DD>Free the existing undo list.
</DL>
</P><P>
-<A NAME="IDX294"></A>
+<A NAME="IDX315"></A>
<DL>
<DT><U>Function:</U> int <B>rl_do_undo</B> <I>(void)</I>
-<DD>Undo the first thing on the undo list. Returns <CODE>0</CODE> if there was
-nothing to undo, non-zero if something was undone.
+<DD>Undo the first thing on the undo list.
+Returns <CODE>0</CODE> if there was nothing to undo,
+non-zero if something was undone.
</DL>
</P><P>
Finally, if you neither insert nor delete text, but directly modify the
existing text (e.g., change its case), call <CODE>rl_modifying()</CODE>
-once, just before you modify the text. You must supply the indices of
-the text range that you are going to modify.
+once, just before you modify the text.
+You must supply the indices of the text range that you are going to modify.
+Readline will create an undo group for you.
</P><P>
-<A NAME="IDX295"></A>
+<A NAME="IDX316"></A>
<DL>
<DT><U>Function:</U> int <B>rl_modifying</B> <I>(int start, int end)</I>
<DD>Tell Readline to save the text between <VAR>start</VAR> and <VAR>end</VAR> as a
-single undo unit. It is assumed that you will subsequently modify
-that text.
+single undo unit.
+It is assumed that you will subsequently modify that text.
</DL>
</P><P>
<!--docid::SEC35::-->
<P>
-<A NAME="IDX296"></A>
+<A NAME="IDX317"></A>
<DL>
<DT><U>Function:</U> void <B>rl_redisplay</B> <I>(void)</I>
<DD>Change what's displayed on the screen to reflect the current contents
</DL>
</P><P>
-<A NAME="IDX297"></A>
+<A NAME="IDX318"></A>
<DL>
<DT><U>Function:</U> int <B>rl_forced_update_display</B> <I>(void)</I>
<DD>Force the line to be updated and redisplayed, whether or not
</DL>
</P><P>
-<A NAME="IDX298"></A>
+<A NAME="IDX319"></A>
<DL>
<DT><U>Function:</U> int <B>rl_on_new_line</B> <I>(void)</I>
<DD>Tell the update functions that we have moved onto a new (empty) line,
</DL>
</P><P>
-<A NAME="IDX299"></A>
+<A NAME="IDX320"></A>
<DL>
<DT><U>Function:</U> int <B>rl_on_new_line_with_prompt</B> <I>(void)</I>
<DD>Tell the update functions that we have moved onto a new line, with
</DL>
</P><P>
-<A NAME="IDX300"></A>
+<A NAME="IDX321"></A>
<DL>
<DT><U>Function:</U> int <B>rl_clear_visible_line</B> <I>(void)</I>
<DD>Clear the screen lines corresponding to the current line's contents.
</DL>
</P><P>
-<A NAME="IDX301"></A>
+<A NAME="IDX322"></A>
<DL>
<DT><U>Function:</U> int <B>rl_reset_line_state</B> <I>(void)</I>
<DD>Reset the display state to a clean state and redisplay the current line
</DL>
</P><P>
-<A NAME="IDX302"></A>
+<A NAME="IDX323"></A>
<DL>
<DT><U>Function:</U> int <B>rl_crlf</B> <I>(void)</I>
<DD>Move the cursor to the start of the next screen line.
</DL>
</P><P>
-<A NAME="IDX303"></A>
+<A NAME="IDX324"></A>
<DL>
<DT><U>Function:</U> int <B>rl_show_char</B> <I>(int c)</I>
<DD>Display character <VAR>c</VAR> on <CODE>rl_outstream</CODE>.
</DL>
</P><P>
-<A NAME="IDX304"></A>
+<A NAME="IDX325"></A>
<DL>
<DT><U>Function:</U> int <B>rl_message</B> <I>(const char *, <small>...</small>)</I>
<DD>The arguments are a format string as would be supplied to <CODE>printf</CODE>,
possibly containing conversion specifications such as <SAMP>`%d'</SAMP>, and
any additional arguments necessary to satisfy the conversion specifications.
-The resulting string is displayed in the <EM>echo area</EM>. The echo area
-is also used to display numeric arguments and search strings.
+The resulting string is displayed in the <EM>echo area</EM>.
+The echo area is also used to display numeric arguments and search strings.
You should call <CODE>rl_save_prompt</CODE> to save the prompt information
before calling this function.
</DL>
</P><P>
-<A NAME="IDX305"></A>
+<A NAME="IDX326"></A>
<DL>
<DT><U>Function:</U> int <B>rl_clear_message</B> <I>(void)</I>
-<DD>Clear the message in the echo area. If the prompt was saved with a call to
+<DD>Clear the message in the echo area.
+If the prompt was saved with a call to
<CODE>rl_save_prompt</CODE> before the last call to <CODE>rl_message</CODE>,
-call <CODE>rl_restore_prompt</CODE> before calling this function.
+you must call <CODE>rl_restore_prompt</CODE> before calling this function.
</DL>
</P><P>
-<A NAME="IDX306"></A>
+<A NAME="IDX327"></A>
<DL>
<DT><U>Function:</U> void <B>rl_save_prompt</B> <I>(void)</I>
<DD>Save the local Readline prompt display state in preparation for
</DL>
</P><P>
-<A NAME="IDX307"></A>
+<A NAME="IDX328"></A>
<DL>
<DT><U>Function:</U> void <B>rl_restore_prompt</B> <I>(void)</I>
<DD>Restore the local Readline prompt display state saved by the most
recent call to <CODE>rl_save_prompt</CODE>.
-if <CODE>rl_save_prompt</CODE> was called to save the prompt before a call
-to <CODE>rl_message</CODE>, this function should be called before the
+if you called <CODE>rl_save_prompt</CODE> to save the prompt before a call
+to <CODE>rl_message</CODE>, you should call this function before the
corresponding call to <CODE>rl_clear_message</CODE>.
</DL>
</P><P>
-<A NAME="IDX308"></A>
+<A NAME="IDX329"></A>
<DL>
<DT><U>Function:</U> int <B>rl_expand_prompt</B> <I>(char *prompt)</I>
<DD>Expand any special character sequences in <VAR>prompt</VAR> and set up the
local Readline prompt redisplay variables.
-This function is called by <CODE>readline()</CODE>. It may also be called to
-expand the primary prompt if the <CODE>rl_on_new_line_with_prompt()</CODE>
-function or <CODE>rl_already_prompted</CODE> variable is used.
+This function is called by <CODE>readline()</CODE>.
+It may also be called to
+expand the primary prompt if the application uses the
+<CODE>rl_on_new_line_with_prompt()</CODE> function or
+<CODE>rl_already_prompted</CODE> variable.
It returns the number of visible characters on the last line of the
(possibly multi-line) prompt.
Applications may indicate that the prompt contains characters that take
up no physical screen space when displayed by bracketing a sequence of
such characters with the special markers <CODE>RL_PROMPT_START_IGNORE</CODE>
-and <CODE>RL_PROMPT_END_IGNORE</CODE> (declared in <TT>`readline.h'</TT>). This may
-be used to embed terminal-specific escape sequences in prompts.
+and <CODE>RL_PROMPT_END_IGNORE</CODE> (declared in <TT>`readline.h'</TT> as
+<SAMP>`\001'</SAMP> and <SAMP>`\002'</SAMP>, respectively).
+This may be used to embed terminal-specific escape sequences in prompts.
+If you don't use these indicators, redisplay will likely produce screen
+contents that don't match the line buffer.
</DL>
</P><P>
-<A NAME="IDX309"></A>
+<A NAME="IDX330"></A>
<DL>
<DT><U>Function:</U> int <B>rl_set_prompt</B> <I>(const char *prompt)</I>
-<DD>Make Readline use <VAR>prompt</VAR> for subsequent redisplay. This calls
-<CODE>rl_expand_prompt()</CODE> to expand the prompt and sets <CODE>rl_prompt</CODE>
-to the result.
+<DD>Make Readline use <VAR>prompt</VAR> for subsequent redisplay.
+This calls <CODE>rl_expand_prompt()</CODE> to expand the prompt
+and sets <CODE>rl_prompt</CODE> to the result.
</DL>
</P><P>
<!--docid::SEC36::-->
<P>
-<A NAME="IDX310"></A>
+<A NAME="IDX331"></A>
<DL>
<DT><U>Function:</U> int <B>rl_insert_text</B> <I>(const char *text)</I>
<DD>Insert <VAR>text</VAR> into the line at the current cursor position.
</DL>
</P><P>
-<A NAME="IDX311"></A>
+<A NAME="IDX332"></A>
<DL>
<DT><U>Function:</U> int <B>rl_delete_text</B> <I>(int start, int end)</I>
<DD>Delete the text between <VAR>start</VAR> and <VAR>end</VAR> in the current line.
</DL>
</P><P>
-<A NAME="IDX312"></A>
+<A NAME="IDX333"></A>
<DL>
<DT><U>Function:</U> char * <B>rl_copy_text</B> <I>(int start, int end)</I>
<DD>Return a copy of the text between <VAR>start</VAR> and <VAR>end</VAR> in
</DL>
</P><P>
-<A NAME="IDX313"></A>
+<A NAME="IDX334"></A>
<DL>
<DT><U>Function:</U> int <B>rl_kill_text</B> <I>(int start, int end)</I>
<DD>Copy the text between <VAR>start</VAR> and <VAR>end</VAR> in the current line
to the kill ring, appending or prepending to the last kill if the
-last command was a kill command. The text is deleted.
-If <VAR>start</VAR> is less than <VAR>end</VAR>,
-the text is appended, otherwise prepended. If the last command was
-not a kill, a new kill ring slot is used.
+last command was a kill command.
+This deletes the text from the line.
+If <VAR>start</VAR> is less than <VAR>end</VAR>, the text is appended,
+otherwise it is prepended.
+If the last command was not a kill, this uses a new kill ring slot.
</DL>
</P><P>
-<A NAME="IDX314"></A>
+<A NAME="IDX335"></A>
+<DL>
+<DT><U>Function:</U> void <B>rl_replace_line</B> <I>(const char *text, int clear_undo)</I>
+<DD>Replace the contents of <CODE>rl_line_buffer</CODE> with <VAR>text</VAR>.
+This preserves the point and mark, if possible.
+If <VAR>clear_undo</VAR> is non-zero, this clears the undo list associated
+with the current line.
+</DL>
+</P><P>
+
+<A NAME="IDX336"></A>
<DL>
<DT><U>Function:</U> int <B>rl_push_macro_input</B> <I>(char *macro)</I>
-<DD>Cause <VAR>macro</VAR> to be inserted into the line, as if it had been invoked
-by a key bound to a macro. Not especially useful; use
-<CODE>rl_insert_text()</CODE> instead.
+<DD>Insert <VAR>macro</VAR> into the line, as if it had been invoked
+by a key bound to a macro.
+Not especially useful; use <CODE>rl_insert_text()</CODE> instead.
</DL>
</P><P>
<!--docid::SEC37::-->
<P>
-<A NAME="IDX315"></A>
+<A NAME="IDX337"></A>
<DL>
<DT><U>Function:</U> int <B>rl_read_key</B> <I>(void)</I>
<DD>Return the next character available from Readline's current input stream.
</DL>
</P><P>
-<A NAME="IDX316"></A>
+<A NAME="IDX338"></A>
<DL>
<DT><U>Function:</U> int <B>rl_getc</B> <I>(FILE *stream)</I>
<DD>Return the next character available from <VAR>stream</VAR>, which is assumed to
</DL>
</P><P>
-<A NAME="IDX317"></A>
+<A NAME="IDX339"></A>
<DL>
<DT><U>Function:</U> int <B>rl_stuff_char</B> <I>(int c)</I>
-<DD>Insert <VAR>c</VAR> into the Readline input stream. It will be "read"
-before Readline attempts to read characters from the terminal with
-<CODE>rl_read_key()</CODE>. Up to 512 characters may be pushed back.
+<DD>Insert <VAR>c</VAR> into the Readline input stream.
+It will be "read" before Readline attempts to read characters
+from the terminal with <CODE>rl_read_key()</CODE>.
+Applications can push back up to 512 characters.
<CODE>rl_stuff_char</CODE> returns 1 if the character was successfully inserted;
0 otherwise.
</DL>
</P><P>
-<A NAME="IDX318"></A>
+<A NAME="IDX340"></A>
<DL>
<DT><U>Function:</U> int <B>rl_execute_next</B> <I>(int c)</I>
<DD>Make <VAR>c</VAR> be the next command to be executed when <CODE>rl_read_key()</CODE>
-is called. This sets <VAR>rl_pending_input</VAR>.
+is called.
+This sets <VAR>rl_pending_input</VAR>.
</DL>
</P><P>
-<A NAME="IDX319"></A>
+<A NAME="IDX341"></A>
<DL>
<DT><U>Function:</U> int <B>rl_clear_pending_input</B> <I>(void)</I>
<DD>Unset <VAR>rl_pending_input</VAR>, effectively negating the effect of any
-previous call to <CODE>rl_execute_next()</CODE>. This works only if the
-pending input has not already been read with <CODE>rl_read_key()</CODE>.
+previous call to <CODE>rl_execute_next()</CODE>.
+This works only if the pending input has not already been read
+with <CODE>rl_read_key()</CODE>.
</DL>
</P><P>
-<A NAME="IDX320"></A>
+<A NAME="IDX342"></A>
<DL>
<DT><U>Function:</U> int <B>rl_set_keyboard_input_timeout</B> <I>(int u)</I>
<DD>While waiting for keyboard input in <CODE>rl_read_key()</CODE>, Readline will
wait for <VAR>u</VAR> microseconds for input before calling any function
-assigned to <CODE>rl_event_hook</CODE>. <VAR>u</VAR> must be greater than or equal
+assigned to <CODE>rl_event_hook</CODE>.
+<VAR>u</VAR> must be greater than or equal
to zero (a zero-length timeout is equivalent to a poll).
The default waiting period is one-tenth of a second.
Returns the old timeout value.
</DL>
</P><P>
+<A NAME="IDX343"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_set_timeout</B> <I>(unsigned int secs, unsigned int usecs)</I>
+<DD>Set a timeout for subsequent calls to <CODE>readline()</CODE>.
+If Readline does not read a complete line, or the number of characters
+specified by <CODE>rl_num_chars_to_read</CODE>,
+before the duration specified by <VAR>secs</VAR> (in seconds)
+and <VAR>usecs</VAR> (microseconds), it returns and sets
+<CODE>RL_STATE_TIMEOUT</CODE> in <CODE>rl_readline_state</CODE>.
+Passing 0 for <CODE>secs</CODE> and <CODE>usecs</CODE> cancels any previously set
+timeout; the convenience macro <CODE>rl_clear_timeout()</CODE> is shorthand
+for this.
+Returns 0 if the timeout is set successfully.
+</DL>
+</P><P>
+
+<A NAME="IDX344"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_timeout_remaining</B> <I>(unsigned int *secs, unsigned int *usecs)</I>
+<DD>Return the number of seconds and microseconds remaining in the current
+timeout duration in <VAR>*secs</VAR> and <VAR>*usecs</VAR>, respectively.
+Both <VAR>*secs</VAR> and <VAR>*usecs</VAR> must be non-NULL to return any values.
+The return value is -1 on error or when there is no timeout set,
+0 when the timeout has expired (leaving <VAR>*secs</VAR> and <VAR>*usecs</VAR>
+unchanged),
+and 1 if the timeout has not expired.
+If either of <VAR>secs</VAR> and <VAR>usecs</VAR> is <CODE>NULL</CODE>,
+the return value indicates whether the timeout has expired.
+</DL>
+</P><P>
+
<A NAME="Terminal Management"></A>
<HR SIZE="6">
<A NAME="SEC38"></A>
<!--docid::SEC38::-->
<P>
-<A NAME="IDX321"></A>
+<A NAME="IDX345"></A>
<DL>
<DT><U>Function:</U> void <B>rl_prep_terminal</B> <I>(int meta_flag)</I>
<DD>Modify the terminal settings for Readline's use, so <CODE>readline()</CODE>
-can read a single character at a time from the keyboard.
+can read a single character at a time from the keyboard
+and perform redisplay.
The <VAR>meta_flag</VAR> argument should be non-zero if Readline should
read eight-bit input.
</DL>
</P><P>
-<A NAME="IDX322"></A>
+<A NAME="IDX346"></A>
<DL>
<DT><U>Function:</U> void <B>rl_deprep_terminal</B> <I>(void)</I>
<DD>Undo the effects of <CODE>rl_prep_terminal()</CODE>, leaving the terminal in
</DL>
</P><P>
-<A NAME="IDX323"></A>
+<A NAME="IDX347"></A>
<DL>
<DT><U>Function:</U> void <B>rl_tty_set_default_bindings</B> <I>(Keymap kmap)</I>
<DD>Read the operating system's terminal editing characters (as would be
</DL>
</P><P>
-<A NAME="IDX324"></A>
+<A NAME="IDX348"></A>
<DL>
<DT><U>Function:</U> void <B>rl_tty_unset_default_bindings</B> <I>(Keymap kmap)</I>
<DD>Reset the bindings manipulated by <CODE>rl_tty_set_default_bindings</CODE> so
</DL>
</P><P>
-<A NAME="IDX325"></A>
+<A NAME="IDX349"></A>
<DL>
<DT><U>Function:</U> int <B>rl_tty_set_echoing</B> <I>(int value)</I>
-<DD>Set Readline's idea of whether or not it is echoing output to its output
-stream (<VAR>rl_outstream</VAR>). If <VAR>value</VAR> is 0, Readline does not display
-output to <VAR>rl_outstream</VAR>; any other value enables output. The initial
-value is set when Readline initializes the terminal settings.
+<DD>Set Readline's idea of whether or not it is
+echoing output to its output stream (<VAR>rl_outstream</VAR>).
+If <VAR>value</VAR> is 0,
+Readline does not display output to <VAR>rl_outstream</VAR>; any other
+value enables output.
+The initial value is set when Readline initializes the terminal settings.
This function returns the previous value.
</DL>
</P><P>
-<A NAME="IDX326"></A>
+<A NAME="IDX350"></A>
<DL>
<DT><U>Function:</U> int <B>rl_reset_terminal</B> <I>(const char *terminal_name)</I>
<DD>Reinitialize Readline's idea of the terminal settings using
-<VAR>terminal_name</VAR> as the terminal type (e.g., <CODE>vt100</CODE>).
-If <VAR>terminal_name</VAR> is <CODE>NULL</CODE>, the value of the <CODE>TERM</CODE>
-environment variable is used.
+<VAR>terminal_name</VAR> as the terminal type (e.g., <CODE>xterm</CODE>).
+If <VAR>terminal_name</VAR> is <CODE>NULL</CODE>, Readline uses the value of the
+<CODE>TERM</CODE> environment variable.
</DL>
</P><P>
<!--docid::SEC39::-->
<P>
-<A NAME="IDX327"></A>
+<A NAME="IDX351"></A>
<DL>
<DT><U>Function:</U> int <B>rl_save_state</B> <I>(struct readline_state *sp)</I>
<DD>Save a snapshot of Readline's internal state to <VAR>sp</VAR>.
-The contents of the <VAR>readline_state</VAR> structure are documented
-in <TT>`readline.h'</TT>.
+The contents of the <VAR>readline_state</VAR> structure are
+documented in <TT>`readline.h'</TT>.
The caller is responsible for allocating the structure.
</DL>
</P><P>
-<A NAME="IDX328"></A>
+<A NAME="IDX352"></A>
<DL>
<DT><U>Function:</U> int <B>rl_restore_state</B> <I>(struct readline_state *sp)</I>
-<DD>Restore Readline's internal state to that stored in <VAR>sp</VAR>, which must
-have been saved by a call to <CODE>rl_save_state</CODE>.
-The contents of the <VAR>readline_state</VAR> structure are documented
-in <TT>`readline.h'</TT>.
-The caller is responsible for freeing the structure.
+<DD>Restore Readline's internal state to that stored in <VAR>sp</VAR>,
+which must have been saved by a call to <CODE>rl_save_state</CODE>.
+The contents of the <VAR>readline_state</VAR> structure are documented in
+<TT>`readline.h'</TT>.
+The caller is responsible for freeing the structure.
</DL>
</P><P>
-<A NAME="IDX329"></A>
+<A NAME="IDX353"></A>
<DL>
<DT><U>Function:</U> void <B>rl_free</B> <I>(void *mem)</I>
-<DD>Deallocate the memory pointed to by <VAR>mem</VAR>. <VAR>mem</VAR> must have been
-allocated by <CODE>malloc</CODE>.
-</DL>
-</P><P>
-
-<A NAME="IDX330"></A>
-<DL>
-<DT><U>Function:</U> void <B>rl_replace_line</B> <I>(const char *text, int clear_undo)</I>
-<DD>Replace the contents of <CODE>rl_line_buffer</CODE> with <VAR>text</VAR>.
-The point and mark are preserved, if possible.
-If <VAR>clear_undo</VAR> is non-zero, the undo list associated with the
-current line is cleared.
+<DD>Deallocate the memory pointed to by <VAR>mem</VAR>.
+<VAR>mem</VAR> must have been allocated by <CODE>malloc</CODE>.
</DL>
</P><P>
-<A NAME="IDX331"></A>
+<A NAME="IDX354"></A>
<DL>
<DT><U>Function:</U> void <B>rl_extend_line_buffer</B> <I>(int len)</I>
<DD>Ensure that <CODE>rl_line_buffer</CODE> has enough space to hold <VAR>len</VAR>
-characters, possibly reallocating it if necessary.
+characters, reallocating it if necessary.
</DL>
</P><P>
-<A NAME="IDX332"></A>
+<A NAME="IDX355"></A>
<DL>
<DT><U>Function:</U> int <B>rl_initialize</B> <I>(void)</I>
<DD>Initialize or re-initialize Readline's internal state.
-It's not strictly necessary to call this; <CODE>readline()</CODE> calls it before
-reading any input.
+It's not strictly necessary to call this;
+<CODE>readline()</CODE> calls it before reading any input.
</DL>
</P><P>
-<A NAME="IDX333"></A>
+<A NAME="IDX356"></A>
<DL>
<DT><U>Function:</U> int <B>rl_ding</B> <I>(void)</I>
<DD>Ring the terminal bell, obeying the setting of <CODE>bell-style</CODE>.
</DL>
</P><P>
-<A NAME="IDX334"></A>
+<A NAME="IDX357"></A>
<DL>
<DT><U>Function:</U> int <B>rl_alphabetic</B> <I>(int c)</I>
<DD>Return 1 if <VAR>c</VAR> is an alphabetic character.
</DL>
</P><P>
-<A NAME="IDX335"></A>
+<A NAME="IDX358"></A>
<DL>
<DT><U>Function:</U> void <B>rl_display_match_list</B> <I>(char **matches, int len, int max)</I>
<DD>A convenience function for displaying a list of strings in
-columnar format on Readline's output stream. <CODE>matches</CODE> is the list
-of strings, in argv format, such as a list of completion matches.
+columnar format on Readline's output stream.
+<CODE>matches</CODE> is the list of strings, in argv format,
+such as a list of completion matches.
<CODE>len</CODE> is the number of strings in <CODE>matches</CODE>, and <CODE>max</CODE>
-is the length of the longest string in <CODE>matches</CODE>. This function uses
-the setting of <CODE>print-completions-horizontally</CODE> to select how the
-matches are displayed (see section <A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A>).
+is the length of the longest string in <CODE>matches</CODE>.
+This function uses the setting of <CODE>print-completions-horizontally</CODE>
+to select how the matches are displayed (see section <A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A>).
When displaying completions, this function sets the number of columns used
for display to the value of <CODE>completion-display-width</CODE>, the value of
the environment variable <CODE>COLUMNS</CODE>, or the screen width, in that order.
Applications should refrain from using them.
</P><P>
-<A NAME="IDX336"></A>
+<A NAME="IDX359"></A>
<DL>
<DT><U>Function:</U> int <B>_rl_uppercase_p</B> <I>(int c)</I>
<DD>Return 1 if <VAR>c</VAR> is an uppercase alphabetic character.
</DL>
</P><P>
-<A NAME="IDX337"></A>
+<A NAME="IDX360"></A>
<DL>
<DT><U>Function:</U> int <B>_rl_lowercase_p</B> <I>(int c)</I>
<DD>Return 1 if <VAR>c</VAR> is a lowercase alphabetic character.
</DL>
</P><P>
-<A NAME="IDX338"></A>
+<A NAME="IDX361"></A>
<DL>
<DT><U>Function:</U> int <B>_rl_digit_p</B> <I>(int c)</I>
<DD>Return 1 if <VAR>c</VAR> is a numeric character.
</DL>
</P><P>
-<A NAME="IDX339"></A>
+<A NAME="IDX362"></A>
<DL>
<DT><U>Function:</U> int <B>_rl_to_upper</B> <I>(int c)</I>
<DD>If <VAR>c</VAR> is a lowercase alphabetic character, return the corresponding
</DL>
</P><P>
-<A NAME="IDX340"></A>
+<A NAME="IDX363"></A>
<DL>
<DT><U>Function:</U> int <B>_rl_to_lower</B> <I>(int c)</I>
<DD>If <VAR>c</VAR> is an uppercase alphabetic character, return the corresponding
</DL>
</P><P>
-<A NAME="IDX341"></A>
+<A NAME="IDX364"></A>
<DL>
<DT><U>Function:</U> int <B>_rl_digit_value</B> <I>(int c)</I>
<DD>If <VAR>c</VAR> is a number, return the value it represents.
<!--docid::SEC40::-->
<P>
-<A NAME="IDX342"></A>
+<A NAME="IDX365"></A>
<DL>
<DT><U>Function:</U> int <B>rl_macro_bind</B> <I>(const char *keyseq, const char *macro, Keymap map)</I>
<DD>Bind the key sequence <VAR>keyseq</VAR> to invoke the macro <VAR>macro</VAR>.
-The binding is performed in <VAR>map</VAR>. When <VAR>keyseq</VAR> is invoked, the
-<VAR>macro</VAR> will be inserted into the line. This function is deprecated;
-use <CODE>rl_generic_bind()</CODE> instead.
+The binding is performed in <VAR>map</VAR>.
+When <VAR>keyseq</VAR> is invoked, the <VAR>macro</VAR> will be inserted into the line.
+This function is deprecated; use <CODE>rl_generic_bind</CODE> instead.
</DL>
</P><P>
-<A NAME="IDX343"></A>
+<A NAME="IDX366"></A>
<DL>
<DT><U>Function:</U> void <B>rl_macro_dumper</B> <I>(int readable)</I>
<DD>Print the key sequences bound to macros and their values, using
the current keymap, to <CODE>rl_outstream</CODE>.
-If <VAR>readable</VAR> is non-zero, the list is formatted in such a way
+If the application has assigned a value to <CODE>rl_macro_display_hook</CODE>,
+<CODE>rl_macro_dumper</CODE> calls it instead of printing anything.
+If <VAR>readable</VAR> is greater than zero, the list is formatted in such a way
that it can be made part of an <CODE>inputrc</CODE> file and re-read.
</DL>
</P><P>
-<A NAME="IDX344"></A>
+<A NAME="IDX367"></A>
<DL>
<DT><U>Function:</U> int <B>rl_variable_bind</B> <I>(const char *variable, const char *value)</I>
<DD>Make the Readline variable <VAR>variable</VAR> have <VAR>value</VAR>.
-This behaves as if the readline command
+This behaves as if the Readline command
<SAMP>`set <VAR>variable</VAR> <VAR>value</VAR>'</SAMP> had been executed in an <CODE>inputrc</CODE>
-file (see section <A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A>).
+file (see section <A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A>)
+or by <CODE>rl_parse_and_bind</CODE>.
</DL>
</P><P>
-<A NAME="IDX345"></A>
+<A NAME="IDX368"></A>
<DL>
<DT><U>Function:</U> char * <B>rl_variable_value</B> <I>(const char *variable)</I>
<DD>Return a string representing the value of the Readline variable <VAR>variable</VAR>.
</DL>
</P><P>
-<A NAME="IDX346"></A>
+<A NAME="IDX369"></A>
<DL>
<DT><U>Function:</U> void <B>rl_variable_dumper</B> <I>(int readable)</I>
-<DD>Print the readline variable names and their current values
+<DD>Print the Readline variable names and their current values
to <CODE>rl_outstream</CODE>.
If <VAR>readable</VAR> is non-zero, the list is formatted in such a way
that it can be made part of an <CODE>inputrc</CODE> file and re-read.
</DL>
</P><P>
-<A NAME="IDX347"></A>
+<A NAME="IDX370"></A>
<DL>
<DT><U>Function:</U> int <B>rl_set_paren_blink_timeout</B> <I>(int u)</I>
<DD>Set the time interval (in microseconds) that Readline waits when showing
</DL>
</P><P>
-<A NAME="IDX348"></A>
+<A NAME="IDX371"></A>
<DL>
<DT><U>Function:</U> char * <B>rl_get_termcap</B> <I>(const char *cap)</I>
<DD>Retrieve the string value of the termcap capability <VAR>cap</VAR>.
Readline fetches the termcap entry for the current terminal name and
uses those capabilities to move around the screen line and perform other
-terminal-specific operations, like erasing a line. Readline does not
-use all of a terminal's capabilities, and this function will return
-values for only those capabilities Readline uses.
+terminal-specific operations, like erasing a line.
+Readline does not fetch or use all of a terminal's capabilities,
+and this function will return
+values for only those capabilities Readline fetches.
</DL>
</P><P>
-<A NAME="IDX349"></A>
+<A NAME="IDX372"></A>
+<DL>
+<DT><U>Function:</U> void <B>rl_reparse_colors</B> <I>(void)</I>
+<DD>Read or re-read color definitions from <CODE>LS_COLORS</CODE>.
+</DL>
+</P><P>
+
+<A NAME="IDX373"></A>
<DL>
<DT><U>Function:</U> void <B>rl_clear_history</B> <I>(void)</I>
<DD>Clear the history list by deleting all of the entries, in the same manner
</DL>
</P><P>
+<A NAME="IDX374"></A>
+<DL>
+<DT><U>Function:</U> void <B>rl_activate_mark</B> <I>(void)</I>
+<DD>Enable an <EM>active</EM> region.
+When this is enabled, the text between point and mark (the <VAR>region</VAR>) is
+displayed using the color specified by the value of the
+<CODE>active-region-start-color</CODE> variable (a <VAR>face</VAR>).
+The default face is the terminal's standout mode.
+This is called by various Readline functions that set the mark and insert
+text, and is available for applications to call.
+</DL>
+</P><P>
+
+<A NAME="IDX375"></A>
+<DL>
+<DT><U>Function:</U> void <B>rl_deactivate_mark</B> <I>(void)</I>
+<DD>Turn off the active region.
+</DL>
+</P><P>
+
+<A NAME="IDX376"></A>
+<DL>
+<DT><U>Function:</U> void <B>rl_keep_mark_active</B> <I>(void)</I>
+<DD>Indicate that the mark should remain active when the current Readline
+function completes and after redisplay occurs.
+In most cases, the mark remains active for only the duration of a single
+bindable Readline function.
+</DL>
+</P><P>
+
+<A NAME="IDX377"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_mark_active_p</B> <I>(void)</I>
+<DD>Return a non-zero value if the mark is currently active; zero otherwise.
+</DL>
+</P><P>
+
<A NAME="Alternate Interface"></A>
<HR SIZE="6">
<A NAME="SEC41"></A>
<!--docid::SEC41::-->
<P>
-An alternate interface is available to plain <CODE>readline()</CODE>. Some
-applications need to interleave keyboard I/O with file, device, or
-window system I/O, typically by using a main loop to <CODE>select()</CODE>
-on various file descriptors. To accommodate this need, readline can
-also be invoked as a `callback' function from an event loop. There
-are functions available to make this easy.
+For applications that need more granular control than
+plain <CODE>readline()</CODE> provides, there is
+an alternate interface.
+Some applications need to interleave keyboard I/O with file, device,
+or window system I/O, typically by using a main loop to <CODE>select()</CODE>
+on various file descriptors.
+To accommodate this use case, Readline can
+also be invoked as a `callback' function from an event loop.
+There are functions available to make this easy.
</P><P>
-<A NAME="IDX350"></A>
+<A NAME="IDX378"></A>
<DL>
-<DT><U>Function:</U> void <B>rl_callback_handler_install</B> <I>(const char *prompt, rl_vcpfunc_t *lhandler)</I>
-<DD>Set up the terminal for readline I/O and display the initial
-expanded value of <VAR>prompt</VAR>. Save the value of <VAR>lhandler</VAR> to
+<DT><U>Function:</U> void <B>rl_callback_handler_install</B> <I>(const char *prompt, rl_vcpfunc_t *line_handler)</I>
+<DD>Set up the terminal for Readline I/O and display the initial
+expanded value of <VAR>prompt</VAR>.
+Save the value of <VAR>line_handler</VAR> to
use as a handler function to call when a complete line of input has been
entered.
The handler function receives the text of the line as an argument.
</DL>
</P><P>
-<A NAME="IDX351"></A>
+<A NAME="IDX379"></A>
<DL>
<DT><U>Function:</U> void <B>rl_callback_read_char</B> <I>(void)</I>
<DD>Whenever an application determines that keyboard input is available, it
should call <CODE>rl_callback_read_char()</CODE>, which will read the next
character from the current input source.
If that character completes the line, <CODE>rl_callback_read_char</CODE> will
-invoke the <VAR>lhandler</VAR> function installed by
+invoke the <VAR>line_handler</VAR> function installed by
<CODE>rl_callback_handler_install</CODE> to process the line.
-Before calling the <VAR>lhandler</VAR> function, the terminal settings are
-reset to the values they had before calling
+Before calling the <VAR>line_handler</VAR> function, Readline resets
+the terminal settings to the values they had before calling
<CODE>rl_callback_handler_install</CODE>.
-If the <VAR>lhandler</VAR> function returns,
+If the <VAR>line_handler</VAR> function returns,
and the line handler remains installed,
-the terminal settings are modified for Readline's use again.
-<CODE>EOF</CODE> is indicated by calling <VAR>lhandler</VAR> with a
+Readline modifies the terminal settings for its use again.
+<CODE>EOF</CODE> is indicated by calling <VAR>line_handler</VAR> with a
<CODE>NULL</CODE> line.
</DL>
</P><P>
-<A NAME="IDX352"></A>
+<A NAME="IDX380"></A>
<DL>
<DT><U>Function:</U> void <B>rl_callback_sigcleanup</B> <I>(void)</I>
<DD>Clean up any internal state the callback interface uses to maintain state
between calls to rl_callback_read_char (e.g., the state of any active
-incremental searches). This is intended to be used by applications that
-wish to perform their own signal handling; Readline's internal signal handler
-calls this when appropriate.
+incremental searches).
+This is intended to be used by applications that
+wish to perform their own signal handling;
+Readline's internal signal handler calls this when appropriate.
</DL>
</P><P>
-<A NAME="IDX353"></A>
+<A NAME="IDX381"></A>
<DL>
<DT><U>Function:</U> void <B>rl_callback_handler_remove</B> <I>(void)</I>
<DD>Restore the terminal to its initial state and remove the line handler.
You may call this function from within a callback as well as independently.
-If the <VAR>lhandler</VAR> installed by <CODE>rl_callback_handler_install</CODE>
-does not exit the program, either this function or the function referred
-to by the value of <CODE>rl_deprep_term_function</CODE> should be called before
-the program exits to reset the terminal settings.
+If the <VAR>line_handler</VAR> installed by <CODE>rl_callback_handler_install</CODE>
+does not exit the program, your program should call
+either this function or the function referred
+to by the value of <CODE>rl_deprep_term_function</CODE>
+before the program exits to reset the terminal settings.
</DL>
</P><P>
<P>
Here is a function which changes lowercase characters to their uppercase
-equivalents, and uppercase characters to lowercase. If
-this function was bound to <SAMP>`M-c'</SAMP>, then typing <SAMP>`M-c'</SAMP> would
-change the case of the character under point. Typing <SAMP>`M-1 0 M-c'</SAMP>
-would change the case of the following 10 characters, leaving the cursor on
+equivalents, and uppercase characters to lowercase.
+If this function was bound to <SAMP>`M-c'</SAMP>, then typing <SAMP>`M-c'</SAMP> would
+change the case of the character under point.
+Typing <SAMP>`M-1 0 M-c'</SAMP> would change the case
+of the following 10 characters, leaving the cursor on
the last character changed.
</P><P>
invert_case_line (count, key)
int count, key;
{
- register int start, end, i;
+ int start, end, i;
start = rl_point;
if (rl_point >= rl_end)
return (0);
- if (count < 0)
- {
- direction = -1;
- count = -count;
- }
- else
- direction = 1;
-
/* Find the end of the range to modify. */
- end = start + (count * direction);
+ end = start + count;
/* Force it to be within range. */
if (end > rl_end)
if (start == end)
return (0);
+ /* For positive arguments, put point after the last changed character. For
+ negative arguments, put point before the last changed character. */
+ rl_point = end;
+
+ /* Swap start and end if we are moving backwards */
if (start > end)
{
int temp = start;
else if (_rl_lowercase_p (rl_line_buffer[i]))
rl_line_buffer[i] = _rl_to_upper (rl_line_buffer[i]);
}
- /* Move point to on top of the last character changed. */
- rl_point = (direction == 1) ? end - 1 : start;
+
return (0);
}
</pre></td></tr></table></P><P>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
-#include <locale.h>
/* Used for select(2) */
#include <sys/types.h>
#include <signal.h>
+#include <errno.h>
#include <stdio.h>
+#include <locale.h>
+
/* Standard readline include files. */
#include <readline/readline.h>
#include <readline/history.h>
+#if !defined (errno)
+extern int errno;
+#endif
+
static void cb_linehandler (char *);
static void sighandler (int);
while (running)
{
FD_ZERO (&fds);
- FD_SET (fileno (rl_instream), &fds);
+ FD_SET (fileno (rl_instream), &fds);
r = select (FD_SETSIZE, &fds, NULL, NULL, NULL);
if (r < 0 && errno != EINTR)
<P>
Signals are asynchronous events sent to a process by the Unix kernel,
-sometimes on behalf of another process. They are intended to indicate
-exceptional events, like a user pressing the interrupt key on his terminal,
-or a network connection being broken. There is a class of signals that can
-be sent to the process currently reading input from the keyboard. Since
-Readline changes the terminal attributes when it is called, it needs to
-perform special processing when such a signal is received in order to
-restore the terminal to a sane state, or provide application writers with
-functions to do so manually.
+sometimes on behalf of another process.
+They are intended to indicate exceptional events,
+like a user pressing the terminal's interrupt key,
+or a network connection being broken.
+There is a class of signals that can
+be sent to the process currently reading input from the keyboard.
+Since Readline changes the terminal attributes when it is called, it needs
+to perform special processing when such a signal is received in order to
+restore the terminal to a sane state, or provide applications using
+Readline with functions to do so manually.
</P><P>
Readline contains an internal signal handler that is installed for a
number of signals (<CODE>SIGINT</CODE>, <CODE>SIGQUIT</CODE>, <CODE>SIGTERM</CODE>,
<CODE>SIGHUP</CODE>,
<CODE>SIGALRM</CODE>, <CODE>SIGTSTP</CODE>, <CODE>SIGTTIN</CODE>, and <CODE>SIGTTOU</CODE>).
-When one of these signals is received, the signal handler
+When Readline receives one of these signals, the signal handler
will reset the terminal attributes to those that were in effect before
<CODE>readline()</CODE> was called, reset the signal handling to what it was
before <CODE>readline()</CODE> was called, and resend the signal to the calling
There is an additional Readline signal handler, for <CODE>SIGWINCH</CODE>, which
the kernel sends to a process whenever the terminal's size changes (for
-example, if a user resizes an <CODE>xterm</CODE>). The Readline <CODE>SIGWINCH</CODE>
-handler updates Readline's internal screen size information, and then calls
-any <CODE>SIGWINCH</CODE> signal handler the calling application has installed.
+example, if a user resizes an <CODE>xterm</CODE>).
+The Readline <CODE>SIGWINCH</CODE> handler updates
+Readline's internal screen size information, and then calls any
+<CODE>SIGWINCH</CODE> signal handler the calling application has installed.
Readline calls the application's <CODE>SIGWINCH</CODE> signal handler without
-resetting the terminal to its original state. If the application's signal
-handler does more than update its idea of the terminal size and return (for
-example, a <CODE>longjmp</CODE> back to a main processing loop), it <EM>must</EM>
-call <CODE>rl_cleanup_after_signal()</CODE> (described below), to restore the
-terminal state.
+resetting the terminal to its original state.
+If the application's signal
+handler does more than update its idea of the terminal size and return
+(for example, a <CODE>longjmp</CODE> back to a main processing loop),
+it <EM>must</EM> call <CODE>rl_cleanup_after_signal()</CODE> (described below),
+to restore the terminal state.
</P><P>
When an application is using the callback interface
(see section <A HREF="readline.html#SEC41">2.4.12 Alternate Interface</A>), Readline installs signal handlers only for
-the duration of the call to <CODE>rl_callback_read_char</CODE>. Applications
-using the callback interface should be prepared to clean up Readline's
-state if they wish to handle the signal before the line handler completes
-and restores the terminal state.
+the duration of the call to <CODE>rl_callback_read_char</CODE>.
+Applications using the callback interface should be prepared
+to clean up Readline's state if they wish to handle the signal
+before the line handler completes and restores the terminal state.
</P><P>
If an application using the callback interface wishes to have Readline
Readline catches to Readline.
Applications should use this variable with care; it can result in Readline
catching signals and not acting on them (or allowing the application to react
-to them) until the application calls <CODE>rl_callback_read_char</CODE>. This
-can result in an application becoming less responsive to keyboard signals
-like SIGINT.
+to them) until the application calls <CODE>rl_callback_read_char</CODE>.
+This can result in an application becoming less responsive to keyboard
+signals like SIGINT.
If an application does not want or need to perform any signal handling, or
-does not need to do any processing between calls to <CODE>rl_callback_read_char</CODE>,
-setting this variable may be desirable.
+does not need to do any processing
+between calls to <CODE>rl_callback_read_char</CODE>,
+setting this variable may be appropriate.
</P><P>
Readline provides two variables that allow application writers to
control whether or not it will catch certain signals and act on them
-when they are received. It is important that applications change the
-values of these variables only when calling <CODE>readline()</CODE>, not in
-a signal handler, so Readline's internal signal state is not corrupted.
+when they are received.
+It is important that applications change the
+values of these variables only when calling <CODE>readline()</CODE>,
+not in a signal handler, so Readline's internal signal state
+is not corrupted.
</P><P>
-<A NAME="IDX354"></A>
+<A NAME="IDX382"></A>
<DL>
<DT><U>Variable:</U> int <B>rl_catch_signals</B>
<DD>If this variable is non-zero, Readline will install signal handlers for
</DL>
</P><P>
-<A NAME="IDX355"></A>
+<A NAME="IDX383"></A>
<DL>
<DT><U>Variable:</U> int <B>rl_catch_sigwinch</B>
<DD>If this variable is set to a non-zero value,
</DL>
</P><P>
-<A NAME="IDX356"></A>
+<A NAME="IDX384"></A>
<DL>
<DT><U>Variable:</U> int <B>rl_persistent_signal_handlers</B>
<DD>If an application using the callback interface wishes Readline's signal
</DL>
</P><P>
-<A NAME="IDX357"></A>
+<A NAME="IDX385"></A>
<DL>
<DT><U>Variable:</U> int <B>rl_change_environment</B>
<DD>If this variable is set to a non-zero value,
and Readline is handling <CODE>SIGWINCH</CODE>, Readline will modify the
<VAR>LINES</VAR> and <VAR>COLUMNS</VAR> environment variables upon receipt of a
-<CODE>SIGWINCH</CODE>
+<CODE>SIGWINCH</CODE>.
</P><P>
The default value of <CODE>rl_change_environment</CODE> is 1.
and internal state cleanup upon receipt of a signal.
</P><P>
-<A NAME="IDX358"></A>
+<A NAME="IDX386"></A>
<DL>
<DT><U>Function:</U> int <B>rl_pending_signal</B> <I>(void)</I>
<DD>Return the signal number of the most recent signal Readline received but
</DL>
</P><P>
-<A NAME="IDX359"></A>
+<A NAME="IDX387"></A>
<DL>
<DT><U>Function:</U> void <B>rl_cleanup_after_signal</B> <I>(void)</I>
<DD>This function will reset the state of the terminal to what it was before
</DL>
</P><P>
-<A NAME="IDX360"></A>
+<A NAME="IDX388"></A>
<DL>
<DT><U>Function:</U> void <B>rl_free_line_state</B> <I>(void)</I>
<DD>This will free any partial state associated with the current input line
(undo information, any partial history entry, any partially-entered
-keyboard macro, and any partially-entered numeric argument). This
-should be called before <CODE>rl_cleanup_after_signal()</CODE>. The
-Readline signal handler for <CODE>SIGINT</CODE> calls this to abort the
-current input line.
+keyboard macro, and any partially-entered numeric argument).
+This should be called before <CODE>rl_cleanup_after_signal()</CODE>.
+The Readline signal handler for <CODE>SIGINT</CODE> calls this to abort
+the current input line.
</DL>
</P><P>
-<A NAME="IDX361"></A>
+<A NAME="IDX389"></A>
<DL>
<DT><U>Function:</U> void <B>rl_reset_after_signal</B> <I>(void)</I>
<DD>This will reinitialize the terminal and reinstall any Readline signal
If an application wants to force Readline to handle any signals that
have arrived while it has been executing, <CODE>rl_check_signals()</CODE>
will call Readline's internal signal handler if there are any pending
-signals. This is primarily intended for those applications that use
+signals.
+This is primarily intended for those applications that use
a custom <CODE>rl_getc_function</CODE> (see section <A HREF="readline.html#SEC28">2.3 Readline Variables</A>) and wish
to handle signals received while waiting for input.
</P><P>
-<A NAME="IDX362"></A>
+<A NAME="IDX390"></A>
<DL>
<DT><U>Function:</U> void <B>rl_check_signals</B> <I>(void)</I>
-<DD>If there are any pending signals, call Readline's internal signal handling
-functions to process them. <CODE>rl_pending_signal()</CODE> can be used independently
+<DD>If there are any pending signals, call Readline's internal signal
+handling functions to process them.
+<CODE>rl_pending_signal()</CODE> can be used independently
to determine whether or not there are any pending signals.
</DL>
</P><P>
-If an application does not wish Readline to catch <CODE>SIGWINCH</CODE>, it may
-call <CODE>rl_resize_terminal()</CODE> or <CODE>rl_set_screen_size()</CODE> to force
-Readline to update its idea of the terminal size when a <CODE>SIGWINCH</CODE>
-is received.
+If an application does not wish Readline to catch <CODE>SIGWINCH</CODE>,
+it may call <CODE>rl_resize_terminal()</CODE> or <CODE>rl_set_screen_size()</CODE>
+to force Readline to update its idea of the terminal size when it receives
+a <CODE>SIGWINCH</CODE>.
</P><P>
-<A NAME="IDX363"></A>
+<A NAME="IDX391"></A>
<DL>
<DT><U>Function:</U> void <B>rl_echo_signal_char</B> <I>(int sig)</I>
<DD>If an application wishes to install its own signal handlers, but still
-have readline display characters that generate signals, calling this
+have Readline display characters that generate signals, calling this
function with <VAR>sig</VAR> set to <CODE>SIGINT</CODE>, <CODE>SIGQUIT</CODE>, or
<CODE>SIGTSTP</CODE> will display the character generating that signal.
</DL>
</P><P>
-<A NAME="IDX364"></A>
+<A NAME="IDX392"></A>
<DL>
<DT><U>Function:</U> void <B>rl_resize_terminal</B> <I>(void)</I>
<DD>Update Readline's internal screen size by reading values from the kernel.
</DL>
</P><P>
-<A NAME="IDX365"></A>
+<A NAME="IDX393"></A>
<DL>
<DT><U>Function:</U> void <B>rl_set_screen_size</B> <I>(int rows, int cols)</I>
<DD>Set Readline's idea of the terminal size to <VAR>rows</VAR> rows and
-<VAR>cols</VAR> columns. If either <VAR>rows</VAR> or <VAR>columns</VAR> is less than
-or equal to 0, Readline's idea of that terminal dimension is unchanged.
+<VAR>cols</VAR> columns.
+If either <VAR>rows</VAR> or <VAR>columns</VAR> is less than or equal to 0,
+Readline doesn't change that terminal dimension.
+This is intended to tell Readline the physical dimensions of the terminal,
+and is used internally to calculate the maximum number of characters that
+may appear on a single line and on the screen.
</DL>
</P><P>
If an application does not want to install a <CODE>SIGWINCH</CODE> handler, but
-is still interested in the screen dimensions, Readline's idea of the screen
-size may be queried.
+is still interested in the screen dimensions, it may query Readline's idea
+of the screen size.
</P><P>
-<A NAME="IDX366"></A>
+<A NAME="IDX394"></A>
<DL>
<DT><U>Function:</U> void <B>rl_get_screen_size</B> <I>(int *rows, int *cols)</I>
<DD>Return Readline's idea of the terminal's size in the
</DL>
</P><P>
-<A NAME="IDX367"></A>
+<A NAME="IDX395"></A>
<DL>
<DT><U>Function:</U> void <B>rl_reset_screen_size</B> <I>(void)</I>
<DD>Cause Readline to reobtain the screen size and recalculate its dimensions.
The following functions install and remove Readline's signal handlers.
</P><P>
-<A NAME="IDX368"></A>
+<A NAME="IDX396"></A>
<DL>
<DT><U>Function:</U> int <B>rl_set_signals</B> <I>(void)</I>
<DD>Install Readline's signal handler for <CODE>SIGINT</CODE>, <CODE>SIGQUIT</CODE>,
</DL>
</P><P>
-<A NAME="IDX369"></A>
+<A NAME="IDX397"></A>
<DL>
<DT><U>Function:</U> int <B>rl_clear_signals</B> <I>(void)</I>
<DD>Remove all of the Readline signal handlers installed by
<P>
Typically, a program that reads commands from the user has a way of
-disambiguating commands and data. If your program is one of these, then
+disambiguating commands and data.
+If your program is one of these, then
it can provide completion for commands, data, or both.
The following sections describe how your program and Readline
cooperate to provide this service.
<P>
In order to complete some text, the full list of possible completions
-must be available. That is, it is not possible to accurately
+must be available.
+That is, it is not possible to accurately
expand a partial word without knowing all of the possible words
-which make sense in that context. The Readline library provides
+which make sense in that context.
+The Readline library provides
the user interface to completion, and two of the most common
-completion functions: filename and username. For completing other types
-of text, you must write your own completion function. This section
+completion functions: filename and username.
+For completing other types
+of text, you must write your own completion function.
+This section
describes exactly what such functions must do, and provides an example.
</P><P>
<OL>
<LI>
-The user-interface function <CODE>rl_complete()</CODE>. This function is
-called with the same arguments as other bindable Readline functions:
-<VAR>count</VAR> and <VAR>invoking_key</VAR>.
+The user-interface function <CODE>rl_complete()</CODE>.
+This function is called with the same arguments as other bindable
+Readline functions: <VAR>count</VAR> and <VAR>invoking_key</VAR>.
It isolates the word to be completed and calls
<CODE>rl_completion_matches()</CODE> to generate a list of possible completions.
It then either lists the possible completions, inserts the possible
<LI>
The generator function is called repeatedly from
-<CODE>rl_completion_matches()</CODE>, returning a string each time. The
-arguments to the generator function are <VAR>text</VAR> and <VAR>state</VAR>.
-<VAR>text</VAR> is the partial word to be completed. <VAR>state</VAR> is zero the
-first time the function is called, allowing the generator to perform
-any necessary initialization, and a positive non-zero integer for
-each subsequent call. The generator function returns
+<CODE>rl_completion_matches()</CODE>, returning a string each time.
+The arguments to the generator function are <VAR>text</VAR> and <VAR>state</VAR>.
+<VAR>text</VAR> is the partial word to be completed.
+<VAR>state</VAR> is zero the first time the function is called,
+allowing the generator to perform any necessary initialization,
+and a positive integer for each subsequent call.
+The generator function returns
<CODE>(char *)NULL</CODE> to inform <CODE>rl_completion_matches()</CODE> that there are
-no more possibilities left. Usually the generator function computes the
+no more possibilities left.
+Usually the generator function computes the
list of possible completions when <VAR>state</VAR> is zero, and returns them
-one at a time on subsequent calls. Each string the generator function
+one at a time on subsequent calls.
+Each string the generator function
returns as a match must be allocated with <CODE>malloc()</CODE>; Readline
frees the strings when it has finished with them.
Such a generator function is referred to as an
</OL>
<P>
-<A NAME="IDX370"></A>
+<A NAME="IDX398"></A>
<DL>
<DT><U>Function:</U> int <B>rl_complete</B> <I>(int ignore, int invoking_key)</I>
-<DD>Complete the word at or before point. You have supplied the function
-that does the initial simple matching selection algorithm (see
-<CODE>rl_completion_matches()</CODE>). The default is to do filename completion.
+<DD>Complete the word at or before point.
+You have supplied the function that does the initial simple matching
+selection algorithm (see <CODE>rl_completion_matches()</CODE>).
+The default is to do filename completion.
</DL>
</P><P>
-<A NAME="IDX371"></A>
+<A NAME="IDX399"></A>
<DL>
<DT><U>Variable:</U> rl_compentry_func_t * <B>rl_completion_entry_function</B>
<DD>This is a pointer to the generator function for
<CODE>rl_completion_matches()</CODE>.
If the value of <CODE>rl_completion_entry_function</CODE> is
-<CODE>NULL</CODE> then the default filename generator
-function, <CODE>rl_filename_completion_function()</CODE>, is used.
+<CODE>NULL</CODE> then Readline uses the default filename generator
+function, <CODE>rl_filename_completion_function()</CODE>.
An <EM>application-specific completion function</EM> is a function whose
address is assigned to <CODE>rl_completion_entry_function</CODE> and whose
-return values are used to generate possible completions.
+return values are used to generate possible completions.
</DL>
</P><P>
Readline.
</P><P>
-<A NAME="IDX372"></A>
+<A NAME="IDX400"></A>
<DL>
<DT><U>Function:</U> int <B>rl_complete_internal</B> <I>(int what_to_do)</I>
-<DD>Complete the word at or before point. <VAR>what_to_do</VAR> says what to do
-with the completion. A value of <SAMP>`?'</SAMP> means list the possible
-completions. <SAMP>`TAB'</SAMP> means do standard completion. <SAMP>`*'</SAMP> means
-insert all of the possible completions. <SAMP>`!'</SAMP> means to display
-all of the possible completions, if there is more than one, as well as
-performing partial completion. <SAMP>`@'</SAMP> is similar to <SAMP>`!'</SAMP>, but
-possible completions are not listed if the possible completions share
-a common prefix.
+<DD>Complete the word at or before point.
+<VAR>what_to_do</VAR> says what to do with the completion.
+A value of <SAMP>`?'</SAMP> means list the possible completions.
+<SAMP>`TAB'</SAMP> means do standard completion.
+<SAMP>`*'</SAMP> means insert all of the possible completions.
+<SAMP>`!'</SAMP> means to display all of the possible completions,
+if there is more than one, as well as performing partial completion.
+<SAMP>`@'</SAMP> is similar to <SAMP>`!'</SAMP>, but does not list possible completions
+if the possible completions share a common prefix.
</DL>
</P><P>
-<A NAME="IDX373"></A>
+<A NAME="IDX401"></A>
<DL>
<DT><U>Function:</U> int <B>rl_complete</B> <I>(int ignore, int invoking_key)</I>
-<DD>Complete the word at or before point. You have supplied the function
-that does the initial simple matching selection algorithm (see
-<CODE>rl_completion_matches()</CODE> and <CODE>rl_completion_entry_function</CODE>).
-The default is to do filename
-completion. This calls <CODE>rl_complete_internal()</CODE> with an
+<DD>Complete the word at or before point.
+You have supplied the function that does the initial simple
+matching selection algorithm (see <CODE>rl_completion_matches()</CODE> and
+<CODE>rl_completion_entry_function</CODE>).
+The default is to do filename completion.
+This calls <CODE>rl_complete_internal()</CODE> with an
argument depending on <VAR>invoking_key</VAR>.
</DL>
</P><P>
-<A NAME="IDX374"></A>
+<A NAME="IDX402"></A>
<DL>
<DT><U>Function:</U> int <B>rl_possible_completions</B> <I>(int count, int invoking_key)</I>
-<DD>List the possible completions. See description of <CODE>rl_complete
-()</CODE>. This calls <CODE>rl_complete_internal()</CODE> with an argument of
-<SAMP>`?'</SAMP>.
+<DD>List the possible completions.
+See description of <CODE>rl_complete()</CODE>.
+This calls <CODE>rl_complete_internal()</CODE> with an argument of <SAMP>`?'</SAMP>.
</DL>
</P><P>
-<A NAME="IDX375"></A>
+<A NAME="IDX403"></A>
<DL>
<DT><U>Function:</U> int <B>rl_insert_completions</B> <I>(int count, int invoking_key)</I>
<DD>Insert the list of possible completions into the line, deleting the
-partially-completed word. See description of <CODE>rl_complete()</CODE>.
+partially-completed word.
+See description of <CODE>rl_complete()</CODE>.
This calls <CODE>rl_complete_internal()</CODE> with an argument of <SAMP>`*'</SAMP>.
</DL>
</P><P>
-<A NAME="IDX376"></A>
+<A NAME="IDX404"></A>
<DL>
<DT><U>Function:</U> int <B>rl_completion_mode</B> <I>(rl_command_func_t *cfunc)</I>
<DD>Returns the appropriate value to pass to <CODE>rl_complete_internal()</CODE>
</DL>
</P><P>
-<A NAME="IDX377"></A>
+<A NAME="IDX405"></A>
<DL>
<DT><U>Function:</U> char ** <B>rl_completion_matches</B> <I>(const char *text, rl_compentry_func_t *entry_func)</I>
-<DD>Returns an array of strings which is a list of completions for
-<VAR>text</VAR>. If there are no completions, returns <CODE>NULL</CODE>.
+<DD>Returns an array of strings which is a list of completions for <VAR>text</VAR>.
+If there are no completions, returns <CODE>NULL</CODE>.
The first entry in the returned array is the substitution for <VAR>text</VAR>.
-The remaining entries are the possible completions. The array is
-terminated with a <CODE>NULL</CODE> pointer.
+The remaining entries are the possible completions.
+The array is terminated with a <CODE>NULL</CODE> pointer.
</P><P>
-<VAR>entry_func</VAR> is a function of two args, and returns a
-<CODE>char *</CODE>. The first argument is <VAR>text</VAR>. The second is a
-state argument; it is zero on the first call, and non-zero on subsequent
-calls. <VAR>entry_func</VAR> returns a <CODE>NULL</CODE> pointer to the caller
+<VAR>entry_func</VAR> is a function of two args, and returns a <CODE>char *</CODE>.
+The first argument is <VAR>text</VAR>.
+The second is a state argument;
+it is zero on the first call, and non-zero on subsequent calls.
+<VAR>entry_func</VAR> returns a <CODE>NULL</CODE> pointer to the caller
when there are no more matches.
</DL>
</P><P>
-<A NAME="IDX378"></A>
+<A NAME="IDX406"></A>
<DL>
<DT><U>Function:</U> char * <B>rl_filename_completion_function</B> <I>(const char *text, int state)</I>
<DD>A generator function for filename completion in the general case.
</DL>
</P><P>
-<A NAME="IDX379"></A>
+<A NAME="IDX407"></A>
<DL>
<DT><U>Function:</U> char * <B>rl_username_completion_function</B> <I>(const char *text, int state)</I>
-<DD>A completion generator for usernames. <VAR>text</VAR> contains a partial
-username preceded by a random character (usually <SAMP>`~'</SAMP>). As with all
-completion generators, <VAR>state</VAR> is zero on the first call and non-zero
-for subsequent calls.
+<DD>A completion generator for usernames.
+<VAR>text</VAR> contains a partial username preceded by a
+random character (usually <SAMP>`~'</SAMP>).
+As with all completion generators,
+<VAR>state</VAR> is zero on the first call and non-zero for subsequent calls.
</DL>
</P><P>
<!--docid::SEC48::-->
<P>
-<A NAME="IDX380"></A>
+<A NAME="IDX408"></A>
<DL>
<DT><U>Variable:</U> rl_compentry_func_t * <B>rl_completion_entry_function</B>
<DD>A pointer to the generator function for <CODE>rl_completion_matches()</CODE>.
</DL>
</P><P>
-<A NAME="IDX381"></A>
+<A NAME="IDX409"></A>
<DL>
<DT><U>Variable:</U> rl_completion_func_t * <B>rl_attempted_completion_function</B>
<DD>A pointer to an alternative function to create matches.
the boundaries of <VAR>text</VAR>, which is a character string.
If this function exists and returns <CODE>NULL</CODE>, or if this variable is
set to <CODE>NULL</CODE>, then <CODE>rl_complete()</CODE> will call the value of
-<CODE>rl_completion_entry_function</CODE> to generate matches, otherwise the
-array of strings returned will be used.
+<CODE>rl_completion_entry_function</CODE> to generate matches, otherwise
+completion will use the array of strings this function returns.
If this function sets the <CODE>rl_attempted_completion_over</CODE>
variable to a non-zero value, Readline will not perform its default
completion even if this function returns no matches.
</DL>
</P><P>
-<A NAME="IDX382"></A>
+<A NAME="IDX410"></A>
<DL>
<DT><U>Variable:</U> rl_quote_func_t * <B>rl_filename_quoting_function</B>
<DD>A pointer to a function that will quote a filename in an
-application-specific fashion. This is called if filename completion is being
-attempted and one of the characters in <CODE>rl_filename_quote_characters</CODE>
-appears in a completed filename. The function is called with
-<VAR>text</VAR>, <VAR>match_type</VAR>, and <VAR>quote_pointer</VAR>. The <VAR>text</VAR>
-is the filename to be quoted. The <VAR>match_type</VAR> is either
-<CODE>SINGLE_MATCH</CODE>, if there is only one completion match, or
-<CODE>MULT_MATCH</CODE>. Some functions use this to decide whether or not to
-insert a closing quote character. The <VAR>quote_pointer</VAR> is a pointer
-to any opening quote character the user typed. Some functions choose
-to reset this character.
+application-specific fashion.
+Readline calls this function during filename completion
+if one of the characters in <CODE>rl_filename_quote_characters</CODE>
+appears in a completed filename.
+The function is called with
+<VAR>text</VAR>, <VAR>match_type</VAR>, and <VAR>quote_pointer</VAR>.
+The <VAR>text</VAR> is the filename to be quoted.
+The <VAR>match_type</VAR> is either <CODE>SINGLE_MATCH</CODE>,
+if there is only one completion match, or <CODE>MULT_MATCH</CODE>.
+Some functions use this to decide whether or not to
+insert a closing quote character.
+The <VAR>quote_pointer</VAR> is a pointer
+to any opening quote character the user typed.
+Some functions choose to reset this character if they decide to quote
+the filename in a different style.
+It's preferable to preserve the user's quoting as much as possible --
+it's less disruptive.
</DL>
</P><P>
-<A NAME="IDX383"></A>
+<A NAME="IDX411"></A>
<DL>
<DT><U>Variable:</U> rl_dequote_func_t * <B>rl_filename_dequoting_function</B>
<DD>A pointer to a function that will remove application-specific quoting
-characters from a filename before completion is attempted, so those
-characters do not interfere with matching the text against names in
-the filesystem. It is called with <VAR>text</VAR>, the text of the word
+characters from a filename before attempting completion,
+so those characters do not interfere with matching the text against
+names in the filesystem.
+It is called with <VAR>text</VAR>, the text of the word
to be dequoted, and <VAR>quote_char</VAR>, which is the quoting character
-that delimits the filename (usually <SAMP>`''</SAMP> or <SAMP>`"'</SAMP>). If
-<VAR>quote_char</VAR> is zero, the filename was not in an embedded string.
+that delimits the filename (usually <SAMP>`''</SAMP> or <SAMP>`"'</SAMP>).
+If <VAR>quote_char</VAR> is zero, the filename was not in a quoted string.
</DL>
</P><P>
-<A NAME="IDX384"></A>
+<A NAME="IDX412"></A>
<DL>
<DT><U>Variable:</U> rl_linebuf_func_t * <B>rl_char_is_quoted_p</B>
<DD>A pointer to a function to call that determines whether or not a specific
character in the line buffer is quoted, according to whatever quoting
-mechanism the program calling Readline uses. The function is called with
-two arguments: <VAR>text</VAR>, the text of the line, and <VAR>index</VAR>, the
-index of the character in the line. It is used to decide whether a
-character found in <CODE>rl_completer_word_break_characters</CODE> should be
+mechanism the application uses.
+The function is called with two arguments:
+<VAR>text</VAR>, the text of the line,
+and <VAR>index</VAR>, the index of the character in the line.
+It is used to decide whether a character found in
+<CODE>rl_completer_word_break_characters</CODE> should be
used to break words for the completer.
</DL>
</P><P>
-<A NAME="IDX385"></A>
+<A NAME="IDX413"></A>
<DL>
<DT><U>Variable:</U> rl_compignore_func_t * <B>rl_ignore_some_completions_function</B>
-<DD>This function, if defined, is called by the completer when real filename
+<DD>Readline calls this function, if defined, when filename
completion is done, after all the matching names have been generated.
It is passed a <CODE>NULL</CODE> terminated array of matches.
-The first element (<CODE>matches[0]</CODE>) is the
-maximal substring common to all matches. This function can
-re-arrange the list of matches as required, but each element deleted
-from the array must be freed.
+The first element (<CODE>matches[0]</CODE>) is the maximal substring
+common to all matches.
+This function can re-arrange the list of matches as required, but
+must free each element it deletes from the array.
</DL>
</P><P>
-<A NAME="IDX386"></A>
+<A NAME="IDX414"></A>
<DL>
<DT><U>Variable:</U> rl_icppfunc_t * <B>rl_directory_completion_hook</B>
<DD>This function, if defined, is allowed to modify the directory portion
-of filenames Readline completes.
+of filenames during completion.
It could be used to expand symbolic links or shell variables in pathnames.
It is called with the address of a string (the current directory name) as an
argument, and may modify that string.
-If the string is replaced with a new string, the old value should be freed.
+If the function replaces the string with a new string, it
+should free the old value.
Any modified directory name should have a trailing slash.
The modified value will be used as part of the completion, replacing
the directory portion of the pathname the user typed.
</DL>
</P><P>
-<A NAME="IDX387"></A>
+<A NAME="IDX415"></A>
<DL>
<DT><U>Variable:</U> rl_icppfunc_t * <B>rl_directory_rewrite_hook;</B>
<DD>If non-zero, this is the address of a function to call when completing
-a directory name. This function takes the address of the directory name
-to be modified as an argument. Unlike <CODE>rl_directory_completion_hook</CODE>,
-it only modifies the directory name used in <CODE>opendir</CODE>, not what is
-displayed when the possible completions are printed or inserted. It is
-called before rl_directory_completion_hook.
+a directory name.
+This function takes the address of the directory name
+to be modified as an argument.
+Unlike <CODE>rl_directory_completion_hook</CODE>,
+it only modifies the directory name used in <CODE>opendir()</CODE>,
+not what Readline displays when it prints or inserts
+the possible completions.
+Readline calls this before rl_directory_completion_hook.
At the least, even if no other expansion is performed, this function should
remove any quote characters from the directory name, because its result will
be passed directly to <CODE>opendir()</CODE>.
</P><P>
The directory rewrite hook returns an integer that should be non-zero if
-the function modfies its directory argument.
+the function modifies its directory argument.
The function should not modify the directory argument if it returns 0.
</DL>
</P><P>
-<A NAME="IDX388"></A>
+<A NAME="IDX416"></A>
<DL>
<DT><U>Variable:</U> rl_icppfunc_t * <B>rl_filename_stat_hook</B>
<DD>If non-zero, this is the address of a function for the completer to
call before deciding which character to append to a completed name.
-This function modifies its filename name argument, and the modified value
-is passed to <CODE>stat()</CODE> to determine the file's type and characteristics.
+This function modifies its filename name argument, and Readline passes
+the modified value to <CODE>stat()</CODE>
+to determine the file's type and characteristics.
This function does not need to remove quote characters from the filename.
</P><P>
The stat hook returns an integer that should be non-zero if
-the function modfies its directory argument.
+the function modifies its directory argument.
The function should not modify the directory argument if it returns 0.
</DL>
</P><P>
-<A NAME="IDX389"></A>
+<A NAME="IDX417"></A>
<DL>
<DT><U>Variable:</U> rl_dequote_func_t * <B>rl_filename_rewrite_hook</B>
-<DD>If non-zero, this is the address of a function called when reading
+<DD>If non-zero, this is the address of a function
+for Readline to call when reading
directory entries from the filesystem for completion and comparing
-them to the partial word to be completed. The function should
-perform any necessary application or system-specific conversion on
-the filename, such as converting between character sets or converting
-from a filesystem format to a character input format.
-The function takes two arguments: <VAR>fname</VAR>, the filename to be converted,
+them to the filename portion of the partial word being completed.
+It modifies the filesystem entries,
+as opposed to <CODE>rl_completion_rewrite_hook</CODE>,
+which modifies the word being completed.
+The function takes two arguments:
+<VAR>fname</VAR>, the filename to be converted,
+and <VAR>fnlen</VAR>, its length in bytes.
+It must either return its first argument (if no conversion takes place)
+or the converted filename in newly-allocated memory.
+The function should perform any necessary application or system-specific
+conversion on the filename, such as converting between character sets
+or converting from a filesystem format to a character input format.
+Readline compares the converted form against the word to be completed,
+and, if it matches, adds it to the list of matches.
+Readline will free the allocated string.
+</DL>
+</P><P>
+
+<A NAME="IDX418"></A>
+<DL>
+<DT><U>Variable:</U> rl_dequote_func_t * <B>rl_completion_rewrite_hook</B>
+<DD>If non-zero, this is the address of a function
+for Readline to call before
+comparing the filename portion of a word to be completed with directory
+entries from the filesystem.
+It modifies the word being completed,
+as opposed to <CODE>rl_filename_rewrite_hook</CODE>,
+which modifies filesystem entries.
+The function takes two arguments:
+<VAR>fname</VAR>, the word to be converted,
+after any <CODE>rl_filename_dequoting_function</CODE> has been applied,
and <VAR>fnlen</VAR>, its length in bytes.
It must either return its first argument (if no conversion takes place)
-or the converted filename in newly-allocated memory. The converted
-form is used to compare against the word to be completed, and, if it
-matches, is added to the list of matches. Readline will free the
-allocated string.
+or the converted filename in newly-allocated memory.
+The function should perform any necessary application or system-specific
+conversion on the filename, such as converting between character sets or
+converting from a character input format to some other format.
+Readline compares the converted form against directory entries, after
+their potential modification by <CODE>rl_filename_rewrite_hook</CODE>,
+and adds any matches to the list of matches.
+Readline will free the allocated string.
</DL>
</P><P>
-<A NAME="IDX390"></A>
+<A NAME="IDX419"></A>
<DL>
<DT><U>Variable:</U> rl_compdisp_func_t * <B>rl_completion_display_matches_hook</B>
<DD>If non-zero, then this is the address of a function to call when
completing a word would normally display the list of possible matches.
-This function is called in lieu of Readline displaying the list.
+Readline calls this function instead of displaying the list itself.
It takes three arguments:
(<CODE>char **</CODE><VAR>matches</VAR>, <CODE>int</CODE> <VAR>num_matches</VAR>, <CODE>int</CODE> <VAR>max_length</VAR>)
where <VAR>matches</VAR> is the array of matching strings,
</DL>
</P><P>
-<A NAME="IDX391"></A>
+<A NAME="IDX420"></A>
<DL>
<DT><U>Variable:</U> const char * <B>rl_basic_word_break_characters</B>
<DD>The basic list of characters that signal a break between words for the
-completer routine. The default value of this variable is the characters
+completer routine.
+The default value of this variable is the characters
which break words for completion in Bash:
<CODE>" \t\n\"\\'`@$><=;|&{("</CODE>.
</DL>
</P><P>
-<A NAME="IDX392"></A>
+<A NAME="IDX421"></A>
<DL>
<DT><U>Variable:</U> const char * <B>rl_basic_quote_characters</B>
<DD>A list of quote characters which can cause a word break.
+The default value includes single and double quotes.
</DL>
</P><P>
-<A NAME="IDX393"></A>
+<A NAME="IDX422"></A>
<DL>
<DT><U>Variable:</U> const char * <B>rl_completer_word_break_characters</B>
<DD>The list of characters that signal a break between words for
-<CODE>rl_complete_internal()</CODE>. The default list is the value of
+<CODE>rl_complete_internal()</CODE>.
+These characters determine how Readline decides what to complete.
+The default list is the value of
<CODE>rl_basic_word_break_characters</CODE>.
</DL>
</P><P>
-<A NAME="IDX394"></A>
+<A NAME="IDX423"></A>
<DL>
<DT><U>Variable:</U> rl_cpvfunc_t * <B>rl_completion_word_break_hook</B>
<DD>If non-zero, this is the address of a function to call when Readline is
-deciding where to separate words for word completion. It should return
-a character string like <CODE>rl_completer_word_break_characters</CODE> to be
-used to perform the current completion. The function may choose to set
-<CODE>rl_completer_word_break_characters</CODE> itself. If the function
-returns <CODE>NULL</CODE>, <CODE>rl_completer_word_break_characters</CODE> is used.
+deciding where to separate words for word completion.
+It should return a character string like
+<CODE>rl_completer_word_break_characters</CODE> to be
+used to perform the current completion.
+The function may choose to set
+<CODE>rl_completer_word_break_characters</CODE> itself.
+If the function returns <CODE>NULL</CODE>, Readline uses
+<CODE>rl_completer_word_break_characters</CODE>.
</DL>
</P><P>
-<A NAME="IDX395"></A>
+<A NAME="IDX424"></A>
<DL>
<DT><U>Variable:</U> const char * <B>rl_completer_quote_characters</B>
<DD>A list of characters which can be used to quote a substring of the line.
-Completion occurs on the entire substring, and within the substring
+Completion occurs on the entire substring, and within the substring,
<CODE>rl_completer_word_break_characters</CODE> are treated as any other character,
unless they also appear within this list.
</DL>
</P><P>
-<A NAME="IDX396"></A>
+<A NAME="IDX425"></A>
<DL>
<DT><U>Variable:</U> const char * <B>rl_filename_quote_characters</B>
-<DD>A list of characters that cause a filename to be quoted by the completer
-when they appear in a completed filename. The default is the null string.
+<DD>A list of characters that cause Readline to quote a filename
+when they appear in a completed filename.
+The default is the null string.
</DL>
</P><P>
-<A NAME="IDX397"></A>
+<A NAME="IDX426"></A>
<DL>
<DT><U>Variable:</U> const char * <B>rl_special_prefixes</B>
<DD>The list of characters that are word break characters, but should be
</DL>
</P><P>
-<A NAME="IDX398"></A>
+<A NAME="IDX427"></A>
<DL>
<DT><U>Variable:</U> int <B>rl_completion_query_items</B>
-<DD>Up to this many items will be displayed in response to a
-possible-completions call. After that, readline asks the user if she is sure
-she wants to see them all. The default value is 100. A negative value
-indicates that Readline should never ask the user.
+<DD>This determines the maximum number of items
+that possible-completions will display unconditionally.
+If there are more possible completions than this,
+Readline asks the user for confirmation before displaying them.
+The default value is 100.
+A negative value
+indicates that Readline should never ask for confirmation.
</DL>
</P><P>
-<A NAME="IDX399"></A>
+<A NAME="IDX428"></A>
<DL>
<DT><U>Variable:</U> int <B>rl_completion_append_character</B>
<DD>When a single completion alternative matches at the end of the command
-line, this character is appended to the inserted completion text. The
-default is a space character (<SAMP>` '</SAMP>). Setting this to the null
+line, Readline appends this character to the inserted completion text.
+The default is a space character (<SAMP>` '</SAMP>).
+Setting this to the null
character (<SAMP>`\0'</SAMP>) prevents anything being appended automatically.
This can be changed in application-specific completion functions to
provide the "most sensible word separator character" according to
an application-specific command line syntax specification.
+It is set to the default before calling any application-specific completion
+function, and may only be changed within such a function.
</DL>
</P><P>
-<A NAME="IDX400"></A>
+<A NAME="IDX429"></A>
<DL>
<DT><U>Variable:</U> int <B>rl_completion_suppress_append</B>
-<DD>If non-zero, <VAR>rl_completion_append_character</VAR> is not appended to
+<DD>If non-zero, Readline will not append the
+<VAR>rl_completion_append_character</VAR> to
matches at the end of the command line, as described above.
-It is set to 0 before any application-specific completion function
-is called, and may only be changed within such a function.
-</DL>
-</P><P>
-
-<A NAME="IDX401"></A>
-<DL>
-<DT><U>Variable:</U> int <B>rl_completion_quote_character</B>
-<DD>When Readline is completing quoted text, as delimited by one of the
-characters in <VAR>rl_completer_quote_characters</VAR>, it sets this variable
-to the quoting character found.
-This is set before any application-specific completion function is called.
+It is set to 0 before calling any application-specific completion function,
+and may only be changed within such a function.
</DL>
</P><P>
-<A NAME="IDX402"></A>
+<A NAME="IDX430"></A>
<DL>
<DT><U>Variable:</U> int <B>rl_completion_suppress_quote</B>
<DD>If non-zero, Readline does not append a matching quote character when
performing completion on a quoted string.
-It is set to 0 before any application-specific completion function
-is called, and may only be changed within such a function.
+It is set to 0 before calling any application-specific completion function,
+and may only be changed within such a function.
</DL>
</P><P>
-<A NAME="IDX403"></A>
+<A NAME="IDX431"></A>
<DL>
<DT><U>Variable:</U> int <B>rl_completion_found_quote</B>
<DD>When Readline is completing quoted text, it sets this variable
to a non-zero value if the word being completed contains or is delimited
by any quoting characters, including backslashes.
-This is set before any application-specific completion function is called.
+This is set before calling any application-specific completion function.
</DL>
</P><P>
-<A NAME="IDX404"></A>
+<A NAME="IDX432"></A>
+<DL>
+<DT><U>Variable:</U> int <B>rl_completion_quote_character</B>
+<DD>When Readline is completing quoted text, as delimited by one of the
+characters in <VAR>rl_completer_quote_characters</VAR>, it sets this variable
+to the quoting character it found.
+This is set before calling any application-specific completion function.
+</DL>
+</P><P>
+
+<A NAME="IDX433"></A>
<DL>
<DT><U>Variable:</U> int <B>rl_completion_mark_symlink_dirs</B>
-<DD>If non-zero, a slash will be appended to completed filenames that are
+<DD>If non-zero, Readline appends a slash to completed filenames that are
symbolic links to directory names, subject to the value of the
user-settable <VAR>mark-directories</VAR> variable.
This variable exists so that application-specific completion functions
can override the user's global preference (set via the
<VAR>mark-symlinked-directories</VAR> Readline variable) if appropriate.
-This variable is set to the user's preference before any
-application-specific completion function is called, so unless that
-function modifies the value, the user's preferences are honored.
+This variable is set to the user's preference before calling any
+application-specific completion function,
+so unless that function modifies the value,
+Readline will honor the user's preferences.
</DL>
</P><P>
-<A NAME="IDX405"></A>
+<A NAME="IDX434"></A>
<DL>
<DT><U>Variable:</U> int <B>rl_ignore_completion_duplicates</B>
-<DD>If non-zero, then duplicates in the matches are removed.
+<DD>If non-zero, then Readline removes duplicates in the set of possible
+completions.
The default is 1.
</DL>
</P><P>
-<A NAME="IDX406"></A>
+<A NAME="IDX435"></A>
<DL>
<DT><U>Variable:</U> int <B>rl_filename_completion_desired</B>
-<DD>Non-zero means that the results of the matches are to be treated as
-filenames. This is <EM>always</EM> zero when completion is attempted,
+<DD>A non-zero value means that Readline should treat the results of the
+matches as filenames.
+This is <EM>always</EM> zero when completion is attempted,
and can only be changed
-within an application-specific completion function. If it is set to a
-non-zero value by such a function, directory names have a slash appended
-and Readline attempts to quote completed filenames if they contain any
+within an application-specific completion function.
+If it is set to a
+non-zero value by such a function, Readline
+appends a slash to directory names
+and attempts to quote completed filenames if they contain any
characters in <CODE>rl_filename_quote_characters</CODE> and
<CODE>rl_filename_quoting_desired</CODE> is set to a non-zero value.
</DL>
</P><P>
-<A NAME="IDX407"></A>
+<A NAME="IDX436"></A>
<DL>
<DT><U>Variable:</U> int <B>rl_filename_quoting_desired</B>
-<DD>Non-zero means that the results of the matches are to be quoted using
-double quotes (or an application-specific quoting mechanism) if the
-completed filename contains any characters in
-<CODE>rl_filename_quote_chars</CODE>. This is <EM>always</EM> non-zero
-when completion is attempted, and can only be changed within an
+<DD>A non-zero value means that Readline should quote the results of the
+matches using double quotes (or an application-specific quoting mechanism)
+if the completed filename contains any characters in
+<CODE>rl_filename_quote_chars</CODE>.
+This is <EM>always</EM> non-zero when completion is attempted,
+and can only be changed within an
application-specific completion function.
-The quoting is effected via a call to the function pointed to
+The quoting is performed via a call to the function pointed to
by <CODE>rl_filename_quoting_function</CODE>.
</DL>
</P><P>
-<A NAME="IDX408"></A>
+<A NAME="IDX437"></A>
+<DL>
+<DT><U>Variable:</U> int <B>rl_full_quoting_desired</B>
+<DD>A non-zero value means that Readline should apply filename-style quoting,
+including any application-specified quoting mechanism,
+to all completion matches even if it is not otherwise treating the
+matches as filenames.
+This is <EM>always</EM> zero when completion is attempted,
+and can only be changed within an
+application-specific completion function.
+The quoting is performed via a call to the function pointed to
+by <CODE>rl_filename_quoting_function</CODE>.
+</DL>
+</P><P>
+
+<A NAME="IDX438"></A>
<DL>
<DT><U>Variable:</U> int <B>rl_attempted_completion_over</B>
<DD>If an application-specific completion function assigned to
</DL>
</P><P>
-<A NAME="IDX409"></A>
+<A NAME="IDX439"></A>
<DL>
<DT><U>Variable:</U> int <B>rl_sort_completion_matches</B>
<DD>If an application sets this variable to 0, Readline will not sort the
list of completions (which implies that it cannot remove any duplicate
-completions). The default value is 1, which means that Readline will
+completions).
+The default value is 1, which means that Readline will
sort the completions and, depending on the value of
-<CODE>rl_ignore_completion_duplicates</CODE>, will attempt to remove duplicate
-matches.
+<CODE>rl_ignore_completion_duplicates</CODE>, will attempt to remove
+duplicate matches.
</DL>
</P><P>
-<A NAME="IDX410"></A>
+<A NAME="IDX440"></A>
<DL>
<DT><U>Variable:</U> int <B>rl_completion_type</B>
<DD>Set to a character describing the type of completion Readline is currently
attempting; see the description of <CODE>rl_complete_internal()</CODE>
(see section <A HREF="readline.html#SEC47">2.6.2 Completion Functions</A>) for the list of characters.
-This is set to the appropriate value before any application-specific
-completion function is called, allowing such functions to present
+This is set to the appropriate value before calling
+any application-specific completion function,
+so these functions can present
the same interface as <CODE>rl_complete()</CODE>.
</DL>
</P><P>
-<A NAME="IDX411"></A>
+<A NAME="IDX441"></A>
<DL>
<DT><U>Variable:</U> int <B>rl_completion_invoking_key</B>
<DD>Set to the final character in the key sequence that invoked one of the
-completion functions that call <CODE>rl_complete_internal()</CODE>. This is
-set to the appropriate value before any application-specific completion
-function is called.
+completion functions that call <CODE>rl_complete_internal()</CODE>.
+This is set to the appropriate value before calling
+any application-specific completion function.
</DL>
</P><P>
-<A NAME="IDX412"></A>
+<A NAME="IDX442"></A>
<DL>
<DT><U>Variable:</U> int <B>rl_inhibit_completion</B>
-<DD>If this variable is non-zero, completion is inhibited. The completion
-character will be inserted as any other bound to <CODE>self-insert</CODE>.
+<DD>If this variable is non-zero, Readline does not perform completion,
+even if a key binding indicates it should.
+The completion character
+is inserted as if it were bound to <CODE>self-insert</CODE>.
</DL>
</P><P>
<P>
Here is a small application demonstrating the use of the GNU Readline
-library. It is called <CODE>fileman</CODE>, and the source code resides in
-<TT>`examples/fileman.c'</TT>. This sample application provides
-completion of command names, line editing features, and access to the
-history list.
+library.
+It is called <CODE>fileman</CODE>, and the source code resides in
+<TT>`examples/fileman.c'</TT>.
+This sample application provides
+command name completion, line editing features,
+and access to the history list.
</P><P>
<TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre>/* fileman.c -- A tiny application which demonstrates how to use the
#include <fcntl.h>
#include <stdio.h>
#include <errno.h>
+#include <locale.h>
#if defined (HAVE_STRING_H)
# include <string.h>
};
/* Forward declarations. */
-char *stripwhite ();
-COMMAND *find_command ();
+char *stripwhite (char *);
+COMMAND *find_command (char *);
/* The name of this program, as taken from argv[0]. */
char *progname;
int done;
char *
-dupstr (s)
- char *s;
+dupstr (char *s)
{
char *r;
return (r);
}
-main (argc, argv)
- int argc;
- char **argv;
+int
+main (int argc, char **argv)
{
char *line, *s;
+ setlocale (LC_ALL, "");
+
progname = argv[0];
initialize_readline (); /* Bind our completer. */
/* Execute a command line. */
int
-execute_line (line)
- char *line;
+execute_line (char *line)
{
register int i;
COMMAND *command;
/* Look up NAME as the name of a command, and return a pointer to that
command. Return a NULL pointer if NAME isn't a command name. */
COMMAND *
-find_command (name)
- char *name;
+find_command (char *name)
{
register int i;
/* Strip whitespace from the start and end of STRING. Return a pointer
into STRING. */
char *
-stripwhite (string)
- char *string;
+stripwhite (char *string)
{
register char *s, *t;
/* */
/* **************************************************************** */
-char *command_generator PARAMS((const char *, int));
-char **fileman_completion PARAMS((const char *, int, int));
+char *command_generator (const char *, int);
+char **fileman_completion (const char *, int, int);
/* Tell the GNU Readline library how to complete. We want to try to complete
on command names if this is the first word in the line, or on filenames
if not. */
-initialize_readline ()
+void
+initialize_readline (void)
{
/* Allow conditional parsing of the ~/.inputrc file. */
rl_readline_name = "FileMan";
in case we want to do some simple parsing. Return the array of matches,
or NULL if there aren't any. */
char **
-fileman_completion (text, start, end)
- const char *text;
- int start, end;
+fileman_completion (const char *text, int start, int end)
{
char **matches;
to start from scratch; without any state (i.e. STATE == 0), then we
start at the top of the list. */
char *
-command_generator (text, state)
- const char *text;
- int state;
+command_generator (const char *text, int state)
{
static int list_index, len;
char *name;
static char syscom[1024];
/* List the file(s) named in arg. */
-com_list (arg)
- char *arg;
+int
+com_list (char *arg)
{
if (!arg)
arg = "";
- sprintf (syscom, "ls -FClg %s", arg);
+ snprintf (syscom, sizeof (syscom), "ls -FClg %s", arg);
return (system (syscom));
}
-com_view (arg)
- char *arg;
+int
+com_view (char *arg)
{
if (!valid_argument ("view", arg))
return 1;
#if defined (__MSDOS__)
/* more.com doesn't grok slashes in pathnames */
- sprintf (syscom, "less %s", arg);
+ snprintf (syscom, sizeof (syscom), "less %s", arg);
#else
- sprintf (syscom, "more %s", arg);
+ snprintf (syscom, sizeof (syscom), "more %s", arg);
#endif
return (system (syscom));
}
-com_rename (arg)
- char *arg;
+int
+com_rename (char *arg)
{
too_dangerous ("rename");
return (1);
}
-com_stat (arg)
- char *arg;
+int
+com_stat (char *arg)
{
struct stat finfo;
return (0);
}
-com_delete (arg)
- char *arg;
+int
+com_delete (char *arg)
{
too_dangerous ("delete");
return (1);
/* Print out help for ARG, or for all of the commands if ARG is
not present. */
-com_help (arg)
- char *arg;
+int
+com_help (char *arg)
{
register int i;
int printed = 0;
if (!printed)
{
- printf ("No commands match `%s'. Possibilties are:\n", arg);
+ printf ("No commands match `%s'. Possibilities are:\n", arg);
for (i = 0; commands[i].name; i++)
{
}
/* Change to the directory ARG. */
-com_cd (arg)
- char *arg;
+int
+com_cd (char *arg)
{
if (chdir (arg) == -1)
{
}
/* Print out the current working directory. */
-com_pwd (ignore)
- char *ignore;
+int
+com_pwd (char *ignore)
{
char dir[1024], *s;
}
/* The user wishes to quit using this program. Just set DONE non-zero. */
-com_quit (arg)
- char *arg;
+int
+com_quit (char *arg)
{
done = 1;
return (0);
}
/* Function which tells you that you can't do this. */
-too_dangerous (caller)
- char *caller;
+void
+too_dangerous (char *caller)
{
fprintf (stderr,
"%s: Too dangerous for me to distribute. Write it yourself.\n",
/* Return non-zero if ARG is a valid argument for CALLER, else print
an error message and return zero. */
int
-valid_argument (caller, arg)
- char *caller, *arg;
+valid_argument (char *caller, char *arg)
{
if (!arg || !*arg)
{
<TR><TD></TD><TH ALIGN=LEFT>Index Entry</TH><TH ALIGN=LEFT> Section</TH></TR>
<TR><TD COLSPAN=3> <HR></TD></TR>
<TR><TH><A NAME="cp_A"></A>A</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#SEC45">application-specific completion functions</A></TD><TD valign=top><A HREF="rlman.html#SEC45">2.6 Custom Completers</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#SEC45">application-specific completion functions</A></TD><TD valign=top><A HREF="readline.html#SEC45">2.6 Custom Completers</A></TD></TR>
<TR><TD COLSPAN=3> <HR></TD></TR>
<TR><TH><A NAME="cp_C"></A>C</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#SEC4">command editing</A></TD><TD valign=top><A HREF="rlman.html#SEC4">1.2.1 Readline Bare Essentials</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#SEC4">command editing</A></TD><TD valign=top><A HREF="readline.html#SEC4">1.2.1 Readline Bare Essentials</A></TD></TR>
<TR><TD COLSPAN=3> <HR></TD></TR>
<TR><TH><A NAME="cp_E"></A>E</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#SEC4">editing command lines</A></TD><TD valign=top><A HREF="rlman.html#SEC4">1.2.1 Readline Bare Essentials</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#SEC4">editing command lines</A></TD><TD valign=top><A HREF="readline.html#SEC4">1.2.1 Readline Bare Essentials</A></TD></TR>
<TR><TD COLSPAN=3> <HR></TD></TR>
<TR><TH><A NAME="cp_I"></A>I</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#SEC9">initialization file, readline</A></TD><TD valign=top><A HREF="rlman.html#SEC9">1.3 Readline Init File</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#SEC3">interaction, readline</A></TD><TD valign=top><A HREF="rlman.html#SEC3">1.2 Readline Interaction</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#SEC9">initialization file, readline</A></TD><TD valign=top><A HREF="readline.html#SEC9">1.3 Readline Init File</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#SEC3">interaction, readline</A></TD><TD valign=top><A HREF="readline.html#SEC3">1.2 Readline Interaction</A></TD></TR>
<TR><TD COLSPAN=3> <HR></TD></TR>
<TR><TH><A NAME="cp_K"></A>K</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX3">kill ring</A></TD><TD valign=top><A HREF="rlman.html#SEC6">1.2.3 Readline Killing Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX1">killing text</A></TD><TD valign=top><A HREF="rlman.html#SEC6">1.2.3 Readline Killing Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX3">kill ring</A></TD><TD valign=top><A HREF="readline.html#SEC6">1.2.3 Readline Killing Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX1">killing text</A></TD><TD valign=top><A HREF="readline.html#SEC6">1.2.3 Readline Killing Commands</A></TD></TR>
<TR><TD COLSPAN=3> <HR></TD></TR>
<TR><TH><A NAME="cp_N"></A>N</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#SEC4">notation, readline</A></TD><TD valign=top><A HREF="rlman.html#SEC4">1.2.1 Readline Bare Essentials</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#SEC4">notation, readline</A></TD><TD valign=top><A HREF="readline.html#SEC4">1.2.1 Readline Bare Essentials</A></TD></TR>
<TR><TD COLSPAN=3> <HR></TD></TR>
<TR><TH><A NAME="cp_R"></A>R</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX214">readline, function</A></TD><TD valign=top><A HREF="rlman.html#SEC24">2.1 Basic Behavior</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX228">readline, function</A></TD><TD valign=top><A HREF="readline.html#SEC24">2.1 Basic Behavior</A></TD></TR>
<TR><TD COLSPAN=3> <HR></TD></TR>
<TR><TH><A NAME="cp_V"></A>V</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX4">variables, readline</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX4">variables, readline</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
<TR><TD COLSPAN=3> <HR></TD></TR>
<TR><TH><A NAME="cp_Y"></A>Y</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX2">yanking text</A></TD><TD valign=top><A HREF="rlman.html#SEC6">1.2.3 Readline Killing Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX2">yanking text</A></TD><TD valign=top><A HREF="readline.html#SEC6">1.2.3 Readline Killing Commands</A></TD></TR>
<TR><TD COLSPAN=3> <HR></TD></TR>
</TABLE><P></P><table><tr><th valign=top>Jump to: </th><td><A HREF="readline.html#cp_A" style="text-decoration:none"><b>A</b></A>
<TR><TD></TD><TH ALIGN=LEFT>Index Entry</TH><TH ALIGN=LEFT> Section</TH></TR>
<TR><TD COLSPAN=3> <HR></TD></TR>
<TR><TH><A NAME="fn__"></A>_</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX338"><CODE>_rl_digit_p</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX341"><CODE>_rl_digit_value</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX337"><CODE>_rl_lowercase_p</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX340"><CODE>_rl_to_lower</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX339"><CODE>_rl_to_upper</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX336"><CODE>_rl_uppercase_p</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX361"><CODE>_rl_digit_p</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX364"><CODE>_rl_digit_value</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX360"><CODE>_rl_lowercase_p</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX363"><CODE>_rl_to_lower</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX362"><CODE>_rl_to_upper</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX359"><CODE>_rl_uppercase_p</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
<TR><TD COLSPAN=3> <HR></TD></TR>
<TR><TH><A NAME="fn_A"></A>A</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX179"><CODE>abort (C-g)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX180"><CODE>abort (C-g)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX65"><CODE>accept-line (Newline or Return)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX66"><CODE>accept-line (Newline or Return)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX191"><CODE>abort (C-g)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX192"><CODE>abort (C-g)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX73"><CODE>accept-line (Newline or Return)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX74"><CODE>accept-line (Newline or Return)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX6">active-region-end-color</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX5">active-region-start-color</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
<TR><TD COLSPAN=3> <HR></TD></TR>
<TR><TH><A NAME="fn_B"></A>B</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX51"><CODE>backward-char (C-b)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX52"><CODE>backward-char (C-b)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX99"><CODE>backward-delete-char (Rubout)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX100"><CODE>backward-delete-char (Rubout)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX125"><CODE>backward-kill-line (C-x Rubout)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX126"><CODE>backward-kill-line (C-x Rubout)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX133"><CODE>backward-kill-word (M-<KBD>DEL</KBD>)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX134"><CODE>backward-kill-word (M-<KBD>DEL</KBD>)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX55"><CODE>backward-word (M-b)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX56"><CODE>backward-word (M-b)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX71"><CODE>beginning-of-history (M-&#60;)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX72"><CODE>beginning-of-history (M-&#60;)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX45"><CODE>beginning-of-line (C-a)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX46"><CODE>beginning-of-line (C-a)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX5">bell-style</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX6">bind-tty-special-chars</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX7">blink-matching-paren</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX109"><CODE>bracketed-paste-begin ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX110"><CODE>bracketed-paste-begin ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX57"><CODE>backward-char (C-b)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX58"><CODE>backward-char (C-b)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX111"><CODE>backward-delete-char (Rubout)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX112"><CODE>backward-delete-char (Rubout)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX137"><CODE>backward-kill-line (C-x Rubout)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX138"><CODE>backward-kill-line (C-x Rubout)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX145"><CODE>backward-kill-word (M-<KBD>DEL</KBD>)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX146"><CODE>backward-kill-word (M-<KBD>DEL</KBD>)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX61"><CODE>backward-word (M-b)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX62"><CODE>backward-word (M-b)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX79"><CODE>beginning-of-history (M-&#60;)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX80"><CODE>beginning-of-history (M-&#60;)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX51"><CODE>beginning-of-line (C-a)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX52"><CODE>beginning-of-line (C-a)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX7">bell-style</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX8">bind-tty-special-chars</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX9">blink-matching-paren</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX121"><CODE>bracketed-paste-begin ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX122"><CODE>bracketed-paste-begin ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
<TR><TD COLSPAN=3> <HR></TD></TR>
<TR><TH><A NAME="fn_C"></A>C</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX173"><CODE>call-last-kbd-macro (C-x e)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC20">1.4.7 Keyboard Macros</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX174"><CODE>call-last-kbd-macro (C-x e)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC20">1.4.7 Keyboard Macros</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX119"><CODE>capitalize-word (M-c)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX120"><CODE>capitalize-word (M-c)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX195"><CODE>character-search (C-])</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX196"><CODE>character-search (C-])</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX197"><CODE>character-search-backward (M-C-])</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX198"><CODE>character-search-backward (M-C-])</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX61"><CODE>clear-screen (C-l)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX62"><CODE>clear-screen (C-l)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX8">colored-completion-prefix</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX9">colored-stats</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX10">comment-begin</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX157"><CODE>complete (<KBD>TAB</KBD>)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX158"><CODE>complete (<KBD>TAB</KBD>)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX11">completion-display-width</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX12">completion-ignore-case</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX13">completion-map-case</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX14">completion-prefix-display-length</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX15">completion-query-items</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX16">convert-meta</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX145"><CODE>copy-backward-word ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX146"><CODE>copy-backward-word ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX147"><CODE>copy-forward-word ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX148"><CODE>copy-forward-word ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX143"><CODE>copy-region-as-kill ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX144"><CODE>copy-region-as-kill ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX185"><CODE>call-last-kbd-macro (C-x e)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC20">1.4.7 Keyboard Macros</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX186"><CODE>call-last-kbd-macro (C-x e)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC20">1.4.7 Keyboard Macros</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX131"><CODE>capitalize-word (M-c)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX132"><CODE>capitalize-word (M-c)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX207"><CODE>character-search (C-])</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX208"><CODE>character-search (C-])</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX209"><CODE>character-search-backward (M-C-])</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX210"><CODE>character-search-backward (M-C-])</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX67"><CODE>clear-display (M-C-l)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX68"><CODE>clear-display (M-C-l)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX69"><CODE>clear-screen (C-l)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX70"><CODE>clear-screen (C-l)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX10">colored-completion-prefix</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX11">colored-stats</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX12">comment-begin</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX169"><CODE>complete (<KBD>TAB</KBD>)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX170"><CODE>complete (<KBD>TAB</KBD>)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX13">completion-display-width</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX14">completion-ignore-case</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX15">completion-map-case</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX16">completion-prefix-display-length</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX17">completion-query-items</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX18">convert-meta</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX157"><CODE>copy-backward-word ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX158"><CODE>copy-backward-word ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX159"><CODE>copy-forward-word ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX160"><CODE>copy-forward-word ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX155"><CODE>copy-region-as-kill ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX156"><CODE>copy-region-as-kill ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
<TR><TD COLSPAN=3> <HR></TD></TR>
<TR><TH><A NAME="fn_D"></A>D</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX97"><CODE>delete-char (C-d)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX98"><CODE>delete-char (C-d)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX167"><CODE>delete-char-or-list ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX168"><CODE>delete-char-or-list ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX139"><CODE>delete-horizontal-space ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX140"><CODE>delete-horizontal-space ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX153"><CODE>digit-argument (<KBD>M-0</KBD>, <KBD>M-1</KBD>, <small>...</small> <KBD>M--</KBD>)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC18">1.4.5 Specifying Numeric Arguments</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX154"><CODE>digit-argument (<KBD>M-0</KBD>, <KBD>M-1</KBD>, <small>...</small> <KBD>M--</KBD>)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC18">1.4.5 Specifying Numeric Arguments</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX17">disable-completion</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX181"><CODE>do-lowercase-version (M-A, M-B, M-<VAR>x</VAR>, <small>...</small>)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX182"><CODE>do-lowercase-version (M-A, M-B, M-<VAR>x</VAR>, <small>...</small>)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX117"><CODE>downcase-word (M-l)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX118"><CODE>downcase-word (M-l)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX203"><CODE>dump-functions ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX204"><CODE>dump-functions ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX207"><CODE>dump-macros ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX208"><CODE>dump-macros ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX205"><CODE>dump-variables ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX206"><CODE>dump-variables ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX109"><CODE>delete-char (C-d)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX110"><CODE>delete-char (C-d)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX179"><CODE>delete-char-or-list ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX180"><CODE>delete-char-or-list ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX151"><CODE>delete-horizontal-space ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX152"><CODE>delete-horizontal-space ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX165"><CODE>digit-argument (<KBD>M-0</KBD>, <KBD>M-1</KBD>, <small>...</small> <KBD>M--</KBD>)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC18">1.4.5 Specifying Numeric Arguments</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX166"><CODE>digit-argument (<KBD>M-0</KBD>, <KBD>M-1</KBD>, <small>...</small> <KBD>M--</KBD>)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC18">1.4.5 Specifying Numeric Arguments</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX19">disable-completion</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX193"><CODE>do-lowercase-version (M-A, M-B, M-<VAR>x</VAR>, <small>...</small>)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX194"><CODE>do-lowercase-version (M-A, M-B, M-<VAR>x</VAR>, <small>...</small>)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX129"><CODE>downcase-word (M-l)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX130"><CODE>downcase-word (M-l)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX215"><CODE>dump-functions ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX216"><CODE>dump-functions ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX219"><CODE>dump-macros ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX220"><CODE>dump-macros ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX217"><CODE>dump-variables ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX218"><CODE>dump-variables ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
<TR><TD COLSPAN=3> <HR></TD></TR>
<TR><TH><A NAME="fn_E"></A>E</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX18">echo-control-characters</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX19">editing-mode</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX209"><CODE>emacs-editing-mode (C-e)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX210"><CODE>emacs-editing-mode (C-e)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX20">emacs-mode-string</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX21">enable-bracketed-paste</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX22">enable-keypad</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX171"><CODE>end-kbd-macro (C-x ))</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC20">1.4.7 Keyboard Macros</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX172"><CODE>end-kbd-macro (C-x ))</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC20">1.4.7 Keyboard Macros</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX95"><CODE><I>end-of-file</I> (usually C-d)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX96"><CODE><I>end-of-file</I> (usually C-d)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX73"><CODE>end-of-history (M-&#62;)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX74"><CODE>end-of-history (M-&#62;)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX47"><CODE>end-of-line (C-e)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX48"><CODE>end-of-line (C-e)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX193"><CODE>exchange-point-and-mark (C-x C-x)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX194"><CODE>exchange-point-and-mark (C-x C-x)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX23">expand-tilde</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX20">echo-control-characters</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX21">editing-mode</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX223"><CODE>emacs-editing-mode (C-e)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX224"><CODE>emacs-editing-mode (C-e)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX22">emacs-mode-string</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX23">enable-active-region The</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX24">enable-bracketed-paste</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX25">enable-keypad</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX26">enable-meta-key</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX183"><CODE>end-kbd-macro (C-x ))</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC20">1.4.7 Keyboard Macros</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX184"><CODE>end-kbd-macro (C-x ))</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC20">1.4.7 Keyboard Macros</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX107"><CODE><I>end-of-file</I> (usually C-d)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX108"><CODE><I>end-of-file</I> (usually C-d)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX81"><CODE>end-of-history (M-&#62;)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX82"><CODE>end-of-history (M-&#62;)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX53"><CODE>end-of-line (C-e)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX54"><CODE>end-of-line (C-e)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX205"><CODE>exchange-point-and-mark (C-x C-x)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX206"><CODE>exchange-point-and-mark (C-x C-x)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX221"><CODE>execute-named-command (M-x)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX222"><CODE>execute-named-command (M-x)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX27">expand-tilde</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
<TR><TD COLSPAN=3> <HR></TD></TR>
<TR><TH><A NAME="fn_F"></A>F</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX101"><CODE>forward-backward-delete-char ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX102"><CODE>forward-backward-delete-char ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX49"><CODE>forward-char (C-f)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX50"><CODE>forward-char (C-f)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX77"><CODE>forward-search-history (C-s)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX78"><CODE>forward-search-history (C-s)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX53"><CODE>forward-word (M-f)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX54"><CODE>forward-word (M-f)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX105"><CODE>fetch-history ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX106"><CODE>fetch-history ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX28">force-meta-prefix</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX113"><CODE>forward-backward-delete-char ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX114"><CODE>forward-backward-delete-char ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX55"><CODE>forward-char (C-f)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX56"><CODE>forward-char (C-f)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX85"><CODE>forward-search-history (C-s)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX86"><CODE>forward-search-history (C-s)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX59"><CODE>forward-word (M-f)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX60"><CODE>forward-word (M-f)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
<TR><TD COLSPAN=3> <HR></TD></TR>
<TR><TH><A NAME="fn_H"></A>H</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX24">history-preserve-point</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX85"><CODE>history-search-backward ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX86"><CODE>history-search-backward ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX83"><CODE>history-search-forward ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX84"><CODE>history-search-forward ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX25">history-size</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX89"><CODE>history-substring-search-backward ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX90"><CODE>history-substring-search-backward ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX87"><CODE>history-substring-search-forward ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX88"><CODE>history-substring-search-forward ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX26">horizontal-scroll-mode</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX29">history-preserve-point</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX91"><CODE>history-search-backward ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX92"><CODE>history-search-backward ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX93"><CODE>history-search-forward ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX94"><CODE>history-search-forward ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX30">history-size</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX95"><CODE>history-substring-search-backward ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX96"><CODE>history-substring-search-backward ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX97"><CODE>history-substring-search-forward ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX98"><CODE>history-substring-search-forward ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX31">horizontal-scroll-mode</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
<TR><TD COLSPAN=3> <HR></TD></TR>
<TR><TH><A NAME="fn_I"></A>I</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX27">input-meta</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX201"><CODE>insert-comment (M-#)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX202"><CODE>insert-comment (M-#)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX161"><CODE>insert-completions (M-*)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX162"><CODE>insert-completions (M-*)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX29">isearch-terminators</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX32">input-meta</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX213"><CODE>insert-comment (M-#)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX214"><CODE>insert-comment (M-#)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX173"><CODE>insert-completions (M-*)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX174"><CODE>insert-completions (M-*)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX34">isearch-terminators</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
<TR><TD COLSPAN=3> <HR></TD></TR>
<TR><TH><A NAME="fn_K"></A>K</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX30">keymap</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX123"><CODE>kill-line (C-k)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX124"><CODE>kill-line (C-k)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX141"><CODE>kill-region ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX142"><CODE>kill-region ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX129"><CODE>kill-whole-line ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX130"><CODE>kill-whole-line ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX131"><CODE>kill-word (M-d)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX132"><CODE>kill-word (M-d)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX35">keymap</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX135"><CODE>kill-line (C-k)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX136"><CODE>kill-line (C-k)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX153"><CODE>kill-region ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX154"><CODE>kill-region ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX141"><CODE>kill-whole-line ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX142"><CODE>kill-whole-line ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX143"><CODE>kill-word (M-d)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX144"><CODE>kill-word (M-d)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
<TR><TD COLSPAN=3> <HR></TD></TR>
<TR><TH><A NAME="fn_M"></A>M</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX31">mark-modified-lines</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX32">mark-symlinked-directories</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX33">match-hidden-files</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX163"><CODE>menu-complete ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX164"><CODE>menu-complete ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX165"><CODE>menu-complete-backward ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX166"><CODE>menu-complete-backward ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX34">menu-complete-display-prefix</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX28">meta-flag</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX36">mark-modified-lines</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX37">mark-symlinked-directories</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX38">match-hidden-files</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX175"><CODE>menu-complete ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX176"><CODE>menu-complete ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX177"><CODE>menu-complete-backward ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX178"><CODE>menu-complete-backward ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX39">menu-complete-display-prefix</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX33">meta-flag</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
<TR><TD COLSPAN=3> <HR></TD></TR>
<TR><TH><A NAME="fn_N"></A>N</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX69"><CODE>next-history (C-n)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX70"><CODE>next-history (C-n)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX59"><CODE>next-screen-line ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX60"><CODE>next-screen-line ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX81"><CODE>non-incremental-forward-search-history (M-n)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX82"><CODE>non-incremental-forward-search-history (M-n)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX79"><CODE>non-incremental-reverse-search-history (M-p)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX80"><CODE>non-incremental-reverse-search-history (M-p)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX77"><CODE>next-history (C-n)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX78"><CODE>next-history (C-n)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX65"><CODE>next-screen-line ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX66"><CODE>next-screen-line ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX89"><CODE>non-incremental-forward-search-history (M-n)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX90"><CODE>non-incremental-forward-search-history (M-n)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX87"><CODE>non-incremental-reverse-search-history (M-p)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX88"><CODE>non-incremental-reverse-search-history (M-p)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
<TR><TD COLSPAN=3> <HR></TD></TR>
<TR><TH><A NAME="fn_O"></A>O</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX35">output-meta</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX121"><CODE>overwrite-mode ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX122"><CODE>overwrite-mode ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX103"><CODE>operate-and-get-next (C-o)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX104"><CODE>operate-and-get-next (C-o)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX40">output-meta</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX133"><CODE>overwrite-mode ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX134"><CODE>overwrite-mode ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
<TR><TD COLSPAN=3> <HR></TD></TR>
<TR><TH><A NAME="fn_P"></A>P</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX36">page-completions</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX159"><CODE>possible-completions (M-?)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX160"><CODE>possible-completions (M-?)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX183"><CODE>prefix-meta (<KBD>ESC</KBD>)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX184"><CODE>prefix-meta (<KBD>ESC</KBD>)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX67"><CODE>previous-history (C-p)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX68"><CODE>previous-history (C-p)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX57"><CODE>previous-screen-line ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX58"><CODE>previous-screen-line ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX175"><CODE>print-last-kbd-macro ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC20">1.4.7 Keyboard Macros</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX176"><CODE>print-last-kbd-macro ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC20">1.4.7 Keyboard Macros</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX41">page-completions</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX171"><CODE>possible-completions (M-?)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX172"><CODE>possible-completions (M-?)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX195"><CODE>prefix-meta (<KBD>ESC</KBD>)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX196"><CODE>prefix-meta (<KBD>ESC</KBD>)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX75"><CODE>previous-history (C-p)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX76"><CODE>previous-history (C-p)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX63"><CODE>previous-screen-line ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX64"><CODE>previous-screen-line ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX187"><CODE>print-last-kbd-macro ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC20">1.4.7 Keyboard Macros</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX188"><CODE>print-last-kbd-macro ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC20">1.4.7 Keyboard Macros</A></TD></TR>
<TR><TD COLSPAN=3> <HR></TD></TR>
<TR><TH><A NAME="fn_Q"></A>Q</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX103"><CODE>quoted-insert (C-q or C-v)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX104"><CODE>quoted-insert (C-q or C-v)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX115"><CODE>quoted-insert (C-q or C-v)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX116"><CODE>quoted-insert (C-q or C-v)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
<TR><TD COLSPAN=3> <HR></TD></TR>
<TR><TH><A NAME="fn_R"></A>R</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX177"><CODE>re-read-init-file (C-x C-r)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX178"><CODE>re-read-init-file (C-x C-r)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX213"><CODE>readline</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC24">2.1 Basic Behavior</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX63"><CODE>redraw-current-line ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX64"><CODE>redraw-current-line ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX75"><CODE>reverse-search-history (C-r)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX76"><CODE>reverse-search-history (C-r)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX37">revert-all-at-newline</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX187"><CODE>revert-line (M-r)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX188"><CODE>revert-line (M-r)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX255"><CODE>rl_add_defun</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC30">2.4.1 Naming a Function</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX289"><CODE>rl_add_funmap_entry</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX292"><CODE>rl_add_undo</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC34">2.4.5 Allowing Undoing</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX334"><CODE>rl_alphabetic</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX226">rl_already_prompted</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX381">rl_attempted_completion_function</A></TD><TD valign=top><A HREF="rlman.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX408">rl_attempted_completion_over</A></TD><TD valign=top><A HREF="rlman.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX392">rl_basic_quote_characters</A></TD><TD valign=top><A HREF="rlman.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX391">rl_basic_word_break_characters</A></TD><TD valign=top><A HREF="rlman.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX290"><CODE>rl_begin_undo_group</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC34">2.4.5 Allowing Undoing</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX266"><CODE>rl_bind_key</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX268"><CODE>rl_bind_key_if_unbound</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX269"><CODE>rl_bind_key_if_unbound_in_map</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX267"><CODE>rl_bind_key_in_map</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX274"><CODE>rl_bind_keyseq</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX277"><CODE>rl_bind_keyseq_if_unbound</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX278"><CODE>rl_bind_keyseq_if_unbound_in_map</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX275"><CODE>rl_bind_keyseq_in_map</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX246">rl_binding_keymap</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX350"><CODE>rl_callback_handler_install</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC41">2.4.12 Alternate Interface</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX353"><CODE>rl_callback_handler_remove</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC41">2.4.12 Alternate Interface</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX351"><CODE>rl_callback_read_char</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC41">2.4.12 Alternate Interface</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX352"><CODE>rl_callback_sigcleanup</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC41">2.4.12 Alternate Interface</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX354">rl_catch_signals</A></TD><TD valign=top><A HREF="rlman.html#SEC44">2.5 Readline Signal Handling</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX355">rl_catch_sigwinch</A></TD><TD valign=top><A HREF="rlman.html#SEC44">2.5 Readline Signal Handling</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX357">rl_change_environment</A></TD><TD valign=top><A HREF="rlman.html#SEC44">2.5 Readline Signal Handling</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX384">rl_char_is_quoted_p</A></TD><TD valign=top><A HREF="rlman.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX362"><CODE>rl_check_signals</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC44">2.5 Readline Signal Handling</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX359"><CODE>rl_cleanup_after_signal</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC44">2.5 Readline Signal Handling</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX349"><CODE>rl_clear_history</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC40">2.4.11 Miscellaneous Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX305"><CODE>rl_clear_message</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC35">2.4.6 Redisplay</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX319"><CODE>rl_clear_pending_input</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC37">2.4.8 Character Input</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX369"><CODE>rl_clear_signals</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC44">2.5 Readline Signal Handling</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX300"><CODE>rl_clear_visible_line</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC35">2.4.6 Redisplay</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX370"><CODE>rl_complete</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC46">2.6.1 How Completing Works</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX373"><CODE>rl_complete</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC47">2.6.2 Completion Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX372"><CODE>rl_complete_internal</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC47">2.6.2 Completion Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX395">rl_completer_quote_characters</A></TD><TD valign=top><A HREF="rlman.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX393">rl_completer_word_break_characters</A></TD><TD valign=top><A HREF="rlman.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX399">rl_completion_append_character</A></TD><TD valign=top><A HREF="rlman.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX390">rl_completion_display_matches_hook</A></TD><TD valign=top><A HREF="rlman.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX371">rl_completion_entry_function</A></TD><TD valign=top><A HREF="rlman.html#SEC46">2.6.1 How Completing Works</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX380">rl_completion_entry_function</A></TD><TD valign=top><A HREF="rlman.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX403">rl_completion_found_quote</A></TD><TD valign=top><A HREF="rlman.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX411">rl_completion_invoking_key</A></TD><TD valign=top><A HREF="rlman.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX404">rl_completion_mark_symlink_dirs</A></TD><TD valign=top><A HREF="rlman.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX377"><CODE>rl_completion_matches</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC47">2.6.2 Completion Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX376"><CODE>rl_completion_mode</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC47">2.6.2 Completion Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX398">rl_completion_query_items</A></TD><TD valign=top><A HREF="rlman.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX401">rl_completion_quote_character</A></TD><TD valign=top><A HREF="rlman.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX400">rl_completion_suppress_append</A></TD><TD valign=top><A HREF="rlman.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX402">rl_completion_suppress_quote</A></TD><TD valign=top><A HREF="rlman.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX410">rl_completion_type</A></TD><TD valign=top><A HREF="rlman.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX394">rl_completion_word_break_hook</A></TD><TD valign=top><A HREF="rlman.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX257"><CODE>rl_copy_keymap</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX312"><CODE>rl_copy_text</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC36">2.4.7 Modifying Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX302"><CODE>rl_crlf</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC35">2.4.6 Redisplay</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX311"><CODE>rl_delete_text</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC36">2.4.7 Modifying Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX244">rl_deprep_term_function</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX322"><CODE>rl_deprep_terminal</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC38">2.4.9 Terminal Management</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX333"><CODE>rl_ding</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX386">rl_directory_completion_hook</A></TD><TD valign=top><A HREF="rlman.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX387">rl_directory_rewrite_hook;</A></TD><TD valign=top><A HREF="rlman.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX259"><CODE>rl_discard_keymap</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX222">rl_dispatching</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX335"><CODE>rl_display_match_list</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX225">rl_display_prompt</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX294"><CODE>rl_do_undo</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC34">2.4.5 Allowing Undoing</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX219">rl_done</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX363"><CODE>rl_echo_signal_char</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC44">2.5 Readline Signal Handling</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX254">rl_editing_mode</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX261"><CODE>rl_empty_keymap</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX217">rl_end</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX291"><CODE>rl_end_undo_group</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC34">2.4.5 Allowing Undoing</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX223">rl_erase_empty_line</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX238">rl_event_hook</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX318"><CODE>rl_execute_next</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC37">2.4.8 Character Input</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX248">rl_executing_key</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX245">rl_executing_keymap</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX249">rl_executing_keyseq</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX247">rl_executing_macro</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX308"><CODE>rl_expand_prompt</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC35">2.4.6 Redisplay</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX252">rl_explicit_arg</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX331"><CODE>rl_extend_line_buffer</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX406">rl_filename_completion_desired</A></TD><TD valign=top><A HREF="rlman.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX378"><CODE>rl_filename_completion_function</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC47">2.6.2 Completion Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX383">rl_filename_dequoting_function</A></TD><TD valign=top><A HREF="rlman.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX396">rl_filename_quote_characters</A></TD><TD valign=top><A HREF="rlman.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX407">rl_filename_quoting_desired</A></TD><TD valign=top><A HREF="rlman.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX382">rl_filename_quoting_function</A></TD><TD valign=top><A HREF="rlman.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX389">rl_filename_rewrite_hook</A></TD><TD valign=top><A HREF="rlman.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX388">rl_filename_stat_hook</A></TD><TD valign=top><A HREF="rlman.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX297"><CODE>rl_forced_update_display</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC35">2.4.6 Redisplay</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX329"><CODE>rl_free</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX260"><CODE>rl_free_keymap</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX360"><CODE>rl_free_line_state</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC44">2.5 Readline Signal Handling</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX293"><CODE>rl_free_undo_list</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC34">2.4.5 Allowing Undoing</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX286"><CODE>rl_function_dumper</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX283"><CODE>rl_function_of_keyseq</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX288"><CODE>rl_funmap_names</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX279"><CODE>rl_generic_bind</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX262"><CODE>rl_get_keymap</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX264"><CODE>rl_get_keymap_by_name</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX265"><CODE>rl_get_keymap_name</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX366"><CODE>rl_get_screen_size</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC44">2.5 Readline Signal Handling</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX348"><CODE>rl_get_termcap</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC40">2.4.11 Miscellaneous Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX316"><CODE>rl_getc</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC37">2.4.8 Character Input</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX239">rl_getc_function</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX229">rl_gnu_readline_p</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX405">rl_ignore_completion_duplicates</A></TD><TD valign=top><A HREF="rlman.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX385">rl_ignore_some_completions_function</A></TD><TD valign=top><A HREF="rlman.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX412">rl_inhibit_completion</A></TD><TD valign=top><A HREF="rlman.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX332"><CODE>rl_initialize</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX241">rl_input_available_hook</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX375"><CODE>rl_insert_completions</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC47">2.6.2 Completion Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX310"><CODE>rl_insert_text</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC36">2.4.7 Modifying Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX232">rl_instream</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX284"><CODE>rl_invoking_keyseqs</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX285"><CODE>rl_invoking_keyseqs_in_map</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX250">rl_key_sequence_length</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX313"><CODE>rl_kill_text</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC36">2.4.7 Modifying Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX235">rl_last_func</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX227">rl_library_version</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX215">rl_line_buffer</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX287"><CODE>rl_list_funmap_names</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX342"><CODE>rl_macro_bind</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC40">2.4.11 Miscellaneous Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX343"><CODE>rl_macro_dumper</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC40">2.4.11 Miscellaneous Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX256"><CODE>rl_make_bare_keymap</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX258"><CODE>rl_make_keymap</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX218">rl_mark</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX304"><CODE>rl_message</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC35">2.4.6 Redisplay</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX295"><CODE>rl_modifying</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC34">2.4.5 Allowing Undoing</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX282"><CODE>rl_named_function</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX220">rl_num_chars_to_read</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX253">rl_numeric_arg</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX298"><CODE>rl_on_new_line</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC35">2.4.6 Redisplay</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX299"><CODE>rl_on_new_line_with_prompt</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC35">2.4.6 Redisplay</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX233">rl_outstream</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX280"><CODE>rl_parse_and_bind</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX221">rl_pending_input</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX358"><CODE>rl_pending_signal</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC44">2.5 Readline Signal Handling</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX356">rl_persistent_signal_handlers</A></TD><TD valign=top><A HREF="rlman.html#SEC44">2.5 Readline Signal Handling</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX216">rl_point</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX374"><CODE>rl_possible_completions</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC47">2.6.2 Completion Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX237">rl_pre_input_hook</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX234">rl_prefer_env_winsize</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX243">rl_prep_term_function</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX321"><CODE>rl_prep_terminal</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC38">2.4.9 Terminal Management</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX224">rl_prompt</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX314"><CODE>rl_push_macro_input</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC36">2.4.7 Modifying Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX281"><CODE>rl_read_init_file</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX315"><CODE>rl_read_key</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC37">2.4.8 Character Input</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX231">rl_readline_name</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX251">rl_readline_state</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX228">rl_readline_version</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX296"><CODE>rl_redisplay</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC35">2.4.6 Redisplay</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX242">rl_redisplay_function</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX330"><CODE>rl_replace_line</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX361"><CODE>rl_reset_after_signal</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC44">2.5 Readline Signal Handling</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX301"><CODE>rl_reset_line_state</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC35">2.4.6 Redisplay</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX367"><CODE>rl_reset_screen_size</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC44">2.5 Readline Signal Handling</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX326"><CODE>rl_reset_terminal</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC38">2.4.9 Terminal Management</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX364"><CODE>rl_resize_terminal</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC44">2.5 Readline Signal Handling</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX307"><CODE>rl_restore_prompt</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC35">2.4.6 Redisplay</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX328"><CODE>rl_restore_state</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX306"><CODE>rl_save_prompt</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC35">2.4.6 Redisplay</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX327"><CODE>rl_save_state</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX276"><CODE>rl_set_key</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX320"><CODE>rl_set_keyboard_input_timeout</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC37">2.4.8 Character Input</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX263"><CODE>rl_set_keymap</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX347"><CODE>rl_set_paren_blink_timeout</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC40">2.4.11 Miscellaneous Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX309"><CODE>rl_set_prompt</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC35">2.4.6 Redisplay</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX365"><CODE>rl_set_screen_size</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC44">2.5 Readline Signal Handling</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX368"><CODE>rl_set_signals</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC44">2.5 Readline Signal Handling</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX303"><CODE>rl_show_char</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC35">2.4.6 Redisplay</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX240">rl_signal_event_hook</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX409">rl_sort_completion_matches</A></TD><TD valign=top><A HREF="rlman.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX397">rl_special_prefixes</A></TD><TD valign=top><A HREF="rlman.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX236">rl_startup_hook</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX317"><CODE>rl_stuff_char</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC37">2.4.8 Character Input</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX230">rl_terminal_name</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX323"><CODE>rl_tty_set_default_bindings</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC38">2.4.9 Terminal Management</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX325"><CODE>rl_tty_set_echoing</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC38">2.4.9 Terminal Management</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX324"><CODE>rl_tty_unset_default_bindings</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC38">2.4.9 Terminal Management</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX273"><CODE>rl_unbind_command_in_map</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX272"><CODE>rl_unbind_function_in_map</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX270"><CODE>rl_unbind_key</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX271"><CODE>rl_unbind_key_in_map</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX379"><CODE>rl_username_completion_function</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC47">2.6.2 Completion Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX344"><CODE>rl_variable_bind</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC40">2.4.11 Miscellaneous Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX346"><CODE>rl_variable_dumper</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC40">2.4.11 Miscellaneous Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX345"><CODE>rl_variable_value</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC40">2.4.11 Miscellaneous Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX189"><CODE>re-read-init-file (C-x C-r)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX190"><CODE>re-read-init-file (C-x C-r)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX227"><CODE>readline</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC24">2.1 Basic Behavior</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX71"><CODE>redraw-current-line ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX72"><CODE>redraw-current-line ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX83"><CODE>reverse-search-history (C-r)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX84"><CODE>reverse-search-history (C-r)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX42">revert-all-at-newline</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX199"><CODE>revert-line (M-r)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX200"><CODE>revert-line (M-r)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX374"><CODE>rl_activate_mark</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC40">2.4.11 Miscellaneous Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX272"><CODE>rl_add_defun</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC30">2.4.1 Naming a Function</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX310"><CODE>rl_add_funmap_entry</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX313"><CODE>rl_add_undo</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC34">2.4.5 Allowing Undoing</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX357"><CODE>rl_alphabetic</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX241">rl_already_prompted</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX409">rl_attempted_completion_function</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX438">rl_attempted_completion_over</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX421">rl_basic_quote_characters</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX420">rl_basic_word_break_characters</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX311"><CODE>rl_begin_undo_group</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC34">2.4.5 Allowing Undoing</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX284"><CODE>rl_bind_key</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX286"><CODE>rl_bind_key_if_unbound</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX287"><CODE>rl_bind_key_if_unbound_in_map</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX285"><CODE>rl_bind_key_in_map</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX292"><CODE>rl_bind_keyseq</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX295"><CODE>rl_bind_keyseq_if_unbound</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX296"><CODE>rl_bind_keyseq_if_unbound_in_map</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX293"><CODE>rl_bind_keyseq_in_map</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX263">rl_binding_keymap</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX378"><CODE>rl_callback_handler_install</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC41">2.4.12 Alternate Interface</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX381"><CODE>rl_callback_handler_remove</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC41">2.4.12 Alternate Interface</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX379"><CODE>rl_callback_read_char</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC41">2.4.12 Alternate Interface</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX380"><CODE>rl_callback_sigcleanup</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC41">2.4.12 Alternate Interface</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX382">rl_catch_signals</A></TD><TD valign=top><A HREF="readline.html#SEC44">2.5 Readline Signal Handling</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX383">rl_catch_sigwinch</A></TD><TD valign=top><A HREF="readline.html#SEC44">2.5 Readline Signal Handling</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX385">rl_change_environment</A></TD><TD valign=top><A HREF="readline.html#SEC44">2.5 Readline Signal Handling</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX412">rl_char_is_quoted_p</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX390"><CODE>rl_check_signals</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC44">2.5 Readline Signal Handling</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX387"><CODE>rl_cleanup_after_signal</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC44">2.5 Readline Signal Handling</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX373"><CODE>rl_clear_history</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC40">2.4.11 Miscellaneous Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX326"><CODE>rl_clear_message</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX341"><CODE>rl_clear_pending_input</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC37">2.4.8 Character Input</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX397"><CODE>rl_clear_signals</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC44">2.5 Readline Signal Handling</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX321"><CODE>rl_clear_visible_line</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX398"><CODE>rl_complete</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC46">2.6.1 How Completing Works</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX401"><CODE>rl_complete</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.2 Completion Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX400"><CODE>rl_complete_internal</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.2 Completion Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX424">rl_completer_quote_characters</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX422">rl_completer_word_break_characters</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX428">rl_completion_append_character</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX419">rl_completion_display_matches_hook</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX399">rl_completion_entry_function</A></TD><TD valign=top><A HREF="readline.html#SEC46">2.6.1 How Completing Works</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX408">rl_completion_entry_function</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX431">rl_completion_found_quote</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX441">rl_completion_invoking_key</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX433">rl_completion_mark_symlink_dirs</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX405"><CODE>rl_completion_matches</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.2 Completion Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX404"><CODE>rl_completion_mode</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.2 Completion Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX427">rl_completion_query_items</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX432">rl_completion_quote_character</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX418">rl_completion_rewrite_hook</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX429">rl_completion_suppress_append</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX430">rl_completion_suppress_quote</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX440">rl_completion_type</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX423">rl_completion_word_break_hook</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX274"><CODE>rl_copy_keymap</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX333"><CODE>rl_copy_text</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC36">2.4.7 Modifying Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX323"><CODE>rl_crlf</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX375"><CODE>rl_deactivate_mark</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC40">2.4.11 Miscellaneous Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX332"><CODE>rl_delete_text</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC36">2.4.7 Modifying Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX260">rl_deprep_term_function</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX346"><CODE>rl_deprep_terminal</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC38">2.4.9 Terminal Management</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX356"><CODE>rl_ding</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX414">rl_directory_completion_hook</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX415">rl_directory_rewrite_hook;</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX276"><CODE>rl_discard_keymap</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX237">rl_dispatching</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX358"><CODE>rl_display_match_list</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX240">rl_display_prompt</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX315"><CODE>rl_do_undo</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC34">2.4.5 Allowing Undoing</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX233">rl_done</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX391"><CODE>rl_echo_signal_char</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC44">2.5 Readline Signal Handling</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX271">rl_editing_mode</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX278"><CODE>rl_empty_keymap</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX231">rl_end</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX312"><CODE>rl_end_undo_group</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC34">2.4.5 Allowing Undoing</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX234">rl_eof_found</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX238">rl_erase_empty_line</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX253">rl_event_hook</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX340"><CODE>rl_execute_next</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC37">2.4.8 Character Input</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX265">rl_executing_key</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX262">rl_executing_keymap</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX266">rl_executing_keyseq</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX264">rl_executing_macro</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX329"><CODE>rl_expand_prompt</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX269">rl_explicit_arg</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX354"><CODE>rl_extend_line_buffer</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX435">rl_filename_completion_desired</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX406"><CODE>rl_filename_completion_function</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.2 Completion Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX411">rl_filename_dequoting_function</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX425">rl_filename_quote_characters</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX436">rl_filename_quoting_desired</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX410">rl_filename_quoting_function</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX417">rl_filename_rewrite_hook</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX416">rl_filename_stat_hook</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX318"><CODE>rl_forced_update_display</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX353"><CODE>rl_free</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX277"><CODE>rl_free_keymap</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX388"><CODE>rl_free_line_state</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC44">2.5 Readline Signal Handling</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX314"><CODE>rl_free_undo_list</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC34">2.4.5 Allowing Undoing</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX437">rl_full_quoting_desired</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX307"><CODE>rl_function_dumper</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX301"><CODE>rl_function_of_keyseq</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX302"><CODE>rl_function_of_keyseq_len</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX309"><CODE>rl_funmap_names</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX297"><CODE>rl_generic_bind</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX279"><CODE>rl_get_keymap</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX281"><CODE>rl_get_keymap_by_name</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX282"><CODE>rl_get_keymap_name</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX394"><CODE>rl_get_screen_size</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC44">2.5 Readline Signal Handling</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX371"><CODE>rl_get_termcap</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC40">2.4.11 Miscellaneous Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX338"><CODE>rl_getc</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC37">2.4.8 Character Input</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX254">rl_getc_function</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX244">rl_gnu_readline_p</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX434">rl_ignore_completion_duplicates</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX413">rl_ignore_some_completions_function</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX442">rl_inhibit_completion</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX355"><CODE>rl_initialize</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX257">rl_input_available_hook</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX403"><CODE>rl_insert_completions</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.2 Completion Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX331"><CODE>rl_insert_text</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC36">2.4.7 Modifying Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX247">rl_instream</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX304"><CODE>rl_invoking_keyseqs</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX305"><CODE>rl_invoking_keyseqs_in_map</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX376"><CODE>rl_keep_mark_active</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC40">2.4.11 Miscellaneous Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX267">rl_key_sequence_length</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX334"><CODE>rl_kill_text</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC36">2.4.7 Modifying Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX250">rl_last_func</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX242">rl_library_version</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX229">rl_line_buffer</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX308"><CODE>rl_list_funmap_names</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX365"><CODE>rl_macro_bind</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC40">2.4.11 Miscellaneous Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX261">rl_macro_display_hook</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX366"><CODE>rl_macro_dumper</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC40">2.4.11 Miscellaneous Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX273"><CODE>rl_make_bare_keymap</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX275"><CODE>rl_make_keymap</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX232">rl_mark</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX377"><CODE>rl_mark_active_p</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC40">2.4.11 Miscellaneous Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX325"><CODE>rl_message</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX316"><CODE>rl_modifying</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC34">2.4.5 Allowing Undoing</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX300"><CODE>rl_named_function</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX235">rl_num_chars_to_read</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX270">rl_numeric_arg</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX319"><CODE>rl_on_new_line</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX320"><CODE>rl_on_new_line_with_prompt</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX248">rl_outstream</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX298"><CODE>rl_parse_and_bind</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX236">rl_pending_input</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX386"><CODE>rl_pending_signal</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC44">2.5 Readline Signal Handling</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX384">rl_persistent_signal_handlers</A></TD><TD valign=top><A HREF="readline.html#SEC44">2.5 Readline Signal Handling</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX230">rl_point</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX402"><CODE>rl_possible_completions</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.2 Completion Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX252">rl_pre_input_hook</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX249">rl_prefer_env_winsize</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX259">rl_prep_term_function</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX345"><CODE>rl_prep_terminal</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC38">2.4.9 Terminal Management</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX306"><CODE>rl_print_keybinding</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX239">rl_prompt</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX336"><CODE>rl_push_macro_input</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC36">2.4.7 Modifying Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX299"><CODE>rl_read_init_file</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX337"><CODE>rl_read_key</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC37">2.4.8 Character Input</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX246">rl_readline_name</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX268">rl_readline_state</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX243">rl_readline_version</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX317"><CODE>rl_redisplay</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX258">rl_redisplay_function</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX372"><CODE>rl_reparse_colors</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC40">2.4.11 Miscellaneous Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX335"><CODE>rl_replace_line</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC36">2.4.7 Modifying Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX389"><CODE>rl_reset_after_signal</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC44">2.5 Readline Signal Handling</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX322"><CODE>rl_reset_line_state</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX395"><CODE>rl_reset_screen_size</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC44">2.5 Readline Signal Handling</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX350"><CODE>rl_reset_terminal</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC38">2.4.9 Terminal Management</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX392"><CODE>rl_resize_terminal</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC44">2.5 Readline Signal Handling</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX328"><CODE>rl_restore_prompt</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX352"><CODE>rl_restore_state</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX327"><CODE>rl_save_prompt</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX351"><CODE>rl_save_state</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX294"><CODE>rl_set_key</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX342"><CODE>rl_set_keyboard_input_timeout</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC37">2.4.8 Character Input</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX280"><CODE>rl_set_keymap</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX283"><CODE>rl_set_keymap_name</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX370"><CODE>rl_set_paren_blink_timeout</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC40">2.4.11 Miscellaneous Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX330"><CODE>rl_set_prompt</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX393"><CODE>rl_set_screen_size</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC44">2.5 Readline Signal Handling</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX396"><CODE>rl_set_signals</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC44">2.5 Readline Signal Handling</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX343"><CODE>rl_set_timeout</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC37">2.4.8 Character Input</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX324"><CODE>rl_show_char</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX255">rl_signal_event_hook</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX439">rl_sort_completion_matches</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX426">rl_special_prefixes</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX251">rl_startup_hook</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX339"><CODE>rl_stuff_char</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC37">2.4.8 Character Input</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX245">rl_terminal_name</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX256">rl_timeout_event_hook</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX344"><CODE>rl_timeout_remaining</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC37">2.4.8 Character Input</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX303"><CODE>rl_trim_arg_from_keyseq</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX347"><CODE>rl_tty_set_default_bindings</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC38">2.4.9 Terminal Management</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX349"><CODE>rl_tty_set_echoing</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC38">2.4.9 Terminal Management</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX348"><CODE>rl_tty_unset_default_bindings</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC38">2.4.9 Terminal Management</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX291"><CODE>rl_unbind_command_in_map</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX290"><CODE>rl_unbind_function_in_map</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX288"><CODE>rl_unbind_key</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX289"><CODE>rl_unbind_key_in_map</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX407"><CODE>rl_username_completion_function</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.2 Completion Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX367"><CODE>rl_variable_bind</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC40">2.4.11 Miscellaneous Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX369"><CODE>rl_variable_dumper</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC40">2.4.11 Miscellaneous Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX368"><CODE>rl_variable_value</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC40">2.4.11 Miscellaneous Functions</A></TD></TR>
<TR><TD COLSPAN=3> <HR></TD></TR>
<TR><TH><A NAME="fn_S"></A>S</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX107"><CODE>self-insert (a, b, A, 1, !, <small>...</small>)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX108"><CODE>self-insert (a, b, A, 1, !, <small>...</small>)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX191"><CODE>set-mark (C-@)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX192"><CODE>set-mark (C-@)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX38">show-all-if-ambiguous</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX39">show-all-if-unmodified</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX40">show-mode-in-prompt</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX41">skip-completed-text</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX199"><CODE>skip-csi-sequence ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX200"><CODE>skip-csi-sequence ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX169"><CODE>start-kbd-macro (C-x ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC20">1.4.7 Keyboard Macros</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX170"><CODE>start-kbd-macro (C-x ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC20">1.4.7 Keyboard Macros</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX43">search-ignore-case</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX119"><CODE>self-insert (a, b, A, 1, !, <small>...</small>)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX120"><CODE>self-insert (a, b, A, 1, !, <small>...</small>)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX203"><CODE>set-mark (C-@)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX204"><CODE>set-mark (C-@)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX44">show-all-if-ambiguous</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX45">show-all-if-unmodified</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX46">show-mode-in-prompt</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX47">skip-completed-text</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX211"><CODE>skip-csi-sequence ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX212"><CODE>skip-csi-sequence ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX181"><CODE>start-kbd-macro (C-x ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC20">1.4.7 Keyboard Macros</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX182"><CODE>start-kbd-macro (C-x ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC20">1.4.7 Keyboard Macros</A></TD></TR>
<TR><TD COLSPAN=3> <HR></TD></TR>
<TR><TH><A NAME="fn_T"></A>T</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX105"><CODE>tab-insert (M-<KBD>TAB</KBD>)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX106"><CODE>tab-insert (M-<KBD>TAB</KBD>)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX189"><CODE>tilde-expand (M-~)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX190"><CODE>tilde-expand (M-~)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX111"><CODE>transpose-chars (C-t)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX112"><CODE>transpose-chars (C-t)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX113"><CODE>transpose-words (M-t)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX114"><CODE>transpose-words (M-t)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX117"><CODE>tab-insert (M-<KBD>TAB</KBD>)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX118"><CODE>tab-insert (M-<KBD>TAB</KBD>)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX201"><CODE>tilde-expand (M-~)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX202"><CODE>tilde-expand (M-~)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX123"><CODE>transpose-chars (C-t)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX124"><CODE>transpose-chars (C-t)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX125"><CODE>transpose-words (M-t)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX126"><CODE>transpose-words (M-t)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
<TR><TD COLSPAN=3> <HR></TD></TR>
<TR><TH><A NAME="fn_U"></A>U</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX185"><CODE>undo (C-_ or C-x C-u)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX186"><CODE>undo (C-_ or C-x C-u)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX155"><CODE>universal-argument ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC18">1.4.5 Specifying Numeric Arguments</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX156"><CODE>universal-argument ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC18">1.4.5 Specifying Numeric Arguments</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX137"><CODE>unix-filename-rubout ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX138"><CODE>unix-filename-rubout ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX127"><CODE>unix-line-discard (C-u)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX128"><CODE>unix-line-discard (C-u)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX135"><CODE>unix-word-rubout (C-w)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX136"><CODE>unix-word-rubout (C-w)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX115"><CODE>upcase-word (M-u)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX116"><CODE>upcase-word (M-u)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX197"><CODE>undo (C-_ or C-x C-u)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX198"><CODE>undo (C-_ or C-x C-u)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX167"><CODE>universal-argument ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC18">1.4.5 Specifying Numeric Arguments</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX168"><CODE>universal-argument ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC18">1.4.5 Specifying Numeric Arguments</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX149"><CODE>unix-filename-rubout ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX150"><CODE>unix-filename-rubout ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX139"><CODE>unix-line-discard (C-u)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX140"><CODE>unix-line-discard (C-u)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX147"><CODE>unix-word-rubout (C-w)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX148"><CODE>unix-word-rubout (C-w)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX127"><CODE>upcase-word (M-u)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX128"><CODE>upcase-word (M-u)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
<TR><TD COLSPAN=3> <HR></TD></TR>
<TR><TH><A NAME="fn_V"></A>V</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX42">vi-cmd-mode-string</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX211"><CODE>vi-editing-mode (M-C-j)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX212"><CODE>vi-editing-mode (M-C-j)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX43">vi-ins-mode-string</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX44">visible-stats</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX48">vi-cmd-mode-string</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX225"><CODE>vi-editing-mode (M-C-j)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX226"><CODE>vi-editing-mode (M-C-j)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX49">vi-ins-mode-string</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX50">visible-stats</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
<TR><TD COLSPAN=3> <HR></TD></TR>
<TR><TH><A NAME="fn_Y"></A>Y</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX149"><CODE>yank (C-y)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX150"><CODE>yank (C-y)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX93"><CODE>yank-last-arg (M-. or M-_)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX94"><CODE>yank-last-arg (M-. or M-_)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX91"><CODE>yank-nth-arg (M-C-y)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX92"><CODE>yank-nth-arg (M-C-y)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX151"><CODE>yank-pop (M-y)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX152"><CODE>yank-pop (M-y)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX161"><CODE>yank (C-y)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX162"><CODE>yank (C-y)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX101"><CODE>yank-last-arg (M-. or M-_)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX102"><CODE>yank-last-arg (M-. or M-_)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX99"><CODE>yank-nth-arg (M-C-y)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX100"><CODE>yank-nth-arg (M-C-y)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX163"><CODE>yank-pop (M-y)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX164"><CODE>yank-pop (M-y)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
<TR><TD COLSPAN=3> <HR></TD></TR>
</TABLE><P></P><table><tr><th valign=top>Jump to: </th><td><A HREF="readline.html#fn__" style="text-decoration:none"><b>_</b></A>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H1>About this document</H1>
-This document was generated by <I>Chet Ramey</I> on <I>January, 2 2018</I>
+This document was generated by <I>Chet Ramey</I> on <I>October, 11 2024</I>
using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html
"><I>texi2html</I></A>
<P></P>
<BR>
<FONT SIZE="-1">
This document was generated
-by <I>Chet Ramey</I> on <I>January, 2 2018</I>
+by <I>Chet Ramey</I> on <I>October, 11 2024</I>
using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html
"><I>texi2html</I></A>
-This is readline.info, produced by makeinfo version 6.5 from rlman.texi.
+This is readline.info, produced by makeinfo version 7.1 from rlman.texi.
-This manual describes the GNU Readline Library (version 7.0, 28 December
-2017), a library which aids in the consistency of user interface across
+This manual describes the GNU Readline Library (version 8.3, 10 October
+2024), a library which aids in the consistency of user interface across
discrete programs which provide a command line interface.
- Copyright (C) 1988-2016 Free Software Foundation, Inc.
+ Copyright © 1988-2024 Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License,
The following paragraphs describe the notation used to represent
keystrokes.
- The text 'C-k' is read as 'Control-K' and describes the character
+ The text ‘C-k’ is read as 'Control-K' and describes the character
produced when the <k> key is pressed while the Control key is depressed.
- The text 'M-k' is read as 'Meta-K' and describes the character
+ The text ‘M-k’ is read as 'Meta-K' and describes the character
produced when the Meta key (if you have one) is depressed, and the <k>
-key is pressed. The Meta key is labeled <ALT> on many keyboards. On
-keyboards with two keys labeled <ALT> (usually to either side of the
-space bar), the <ALT> on the left side is generally set to work as a
-Meta key. The <ALT> key on the right may also be configured to work as
-a Meta key or may be configured as some other modifier, such as a
-Compose key for typing accented characters.
+key is pressed (a “meta character”). The Meta key is labeled <ALT> on
+many keyboards. On keyboards with two keys labeled <ALT> (usually to
+either side of the space bar), the <ALT> on the left side is generally
+set to work as a Meta key. The <ALT> key on the right may also be
+configured to work as a Meta key or may be configured as some other
+modifier, such as a Compose key for typing accented characters.
+
+ On some keyboards, the Meta key modifier produces meta characters
+with the eighth bit (0200) set. You can use the ‘enable-meta-key’
+variable to control whether or not it does this, if the keyboard allows
+it. On many others, the terminal or terminal emulator converts the
+metafied key to a key sequence beginning with <ESC> as described in the
+next paragraph.
If you do not have a Meta or <ALT> key, or another key working as a
-Meta key, the identical keystroke can be generated by typing <ESC>
-_first_, and then typing <k>. Either process is known as "metafying"
-the <k> key.
+Meta key, you can generally achieve the latter effect by typing <ESC>
+_first_, and then typing <k>. The <ESC> character is known as the “meta
+prefix”).
- The text 'M-C-k' is read as 'Meta-Control-k' and describes the
-character produced by "metafying" 'C-k'.
+ Either process is known as “metafying” the <k> key.
+
+ If your Meta key produces a key sequence with the <ESC> meta prefix,
+you can make ‘M-key’ key bindings you specify (see ‘Key Bindings’ in
+*note Readline Init File Syntax::) do the same thing by setting the
+‘force-meta-prefix’ variable.
+
+ The text ‘M-C-k’ is read as 'Meta-Control-k' and describes the
+character produced by metafying ‘C-k’.
In addition, several keys have their own names. Specifically, <DEL>,
<ESC>, <LFD>, <SPC>, <RET>, and <TAB> all stand for themselves when seen
in this text, or in an init file (*note Readline Init File::). If your
-keyboard lacks a <LFD> key, typing <C-j> will produce the desired
+keyboard lacks a <LFD> key, typing <C-j> will output the appropriate
character. The <RET> key may be labeled <Return> or <Enter> on some
keyboards.
Sometimes you may mistype a character, and not notice the error until
you have typed several other characters. In that case, you can type
-'C-b' to move the cursor to the left, and then correct your mistake.
-Afterwards, you can move the cursor to the right with 'C-f'.
+‘C-b’ to move the cursor to the left, and then correct your mistake.
+Afterwards, you can move the cursor to the right with ‘C-f’.
When you add text in the middle of a line, you will notice that
characters to the right of the cursor are 'pushed over' to make room for
the text that you have inserted. Likewise, when you delete text behind
the cursor, characters to the right of the cursor are 'pulled back' to
-fill in the blank space created by the removal of the text. A list of
-the bare essentials for editing the text of an input line follows.
+fill in the blank space created by the removal of the text. These are
+the bare essentials for editing the text of an input line:
-'C-b'
+‘C-b’
Move back one character.
-'C-f'
+‘C-f’
Move forward one character.
<DEL> or <Backspace>
Delete the character to the left of the cursor.
-'C-d'
+‘C-d’
Delete the character underneath the cursor.
Printing characters
Insert the character into the line at the cursor.
-'C-_' or 'C-x C-u'
+‘C-_’ or ‘C-x C-u’
Undo the last editing command. You can undo all the way back to an
empty line.
-(Depending on your configuration, the <Backspace> key be set to delete
-the character to the left of the cursor and the <DEL> key set to delete
-the character underneath the cursor, like 'C-d', rather than the
-character to the left of the cursor.)
+Depending on your configuration, the <Backspace> key might be set to
+delete the character to the left of the cursor and the <DEL> key set to
+delete the character underneath the cursor, like ‘C-d’, rather than the
+character to the left of the cursor.
\1f
File: readline.info, Node: Readline Movement Commands, Next: Readline Killing Commands, Prev: Readline Bare Essentials, Up: Readline Interaction
The above table describes the most basic keystrokes that you need in
order to do editing of the input line. For your convenience, many other
-commands have been added in addition to 'C-b', 'C-f', 'C-d', and <DEL>.
-Here are some commands for moving more rapidly about the line.
+commands are available in addition to ‘C-b’, ‘C-f’, ‘C-d’, and <DEL>.
+Here are some commands for moving more rapidly within the line.
-'C-a'
+‘C-a’
Move to the start of the line.
-'C-e'
+‘C-e’
Move to the end of the line.
-'M-f'
+‘M-f’
Move forward a word, where a word is composed of letters and
digits.
-'M-b'
+‘M-b’
Move backward a word.
-'C-l'
+‘C-l’
Clear the screen, reprinting the current line at the top.
- Notice how 'C-f' moves forward a character, while 'M-f' moves forward
+ Notice how ‘C-f’ moves forward a character, while ‘M-f’ moves forward
a word. It is a loose convention that control keystrokes operate on
characters while meta keystrokes operate on words.
1.2.3 Readline Killing Commands
-------------------------------
-"Killing" text means to delete the text from the line, but to save it
-away for later use, usually by "yanking" (re-inserting) it back into the
+“Killing” text means to delete the text from the line, but to save it
+away for later use, usually by “yanking” (re-inserting) it back into the
line. ('Cut' and 'paste' are more recent jargon for 'kill' and 'yank'.)
If the description for a command says that it 'kills' text, then you
can be sure that you can get the text back in a different (or the same)
place later.
- When you use a kill command, the text is saved in a "kill-ring". Any
+ When you use a kill command, the text is saved in a “kill-ring”. Any
number of consecutive kills save all of the killed text together, so
that when you yank it back, you get it all. The kill ring is not line
specific; the text that you killed on a previously typed line is
Here is the list of commands for killing text.
-'C-k'
+‘C-k’
Kill the text from the current cursor position to the end of the
line.
-'M-d'
+‘M-d’
Kill from the cursor to the end of the current word, or, if between
words, to the end of the next word. Word boundaries are the same
- as those used by 'M-f'.
+ as those used by ‘M-f’.
-'M-<DEL>'
- Kill from the cursor the start of the current word, or, if between
- words, to the start of the previous word. Word boundaries are the
- same as those used by 'M-b'.
+‘M-<DEL>’
+ Kill from the cursor to the start of the current word, or, if
+ between words, to the start of the previous word. Word boundaries
+ are the same as those used by ‘M-b’.
-'C-w'
+‘C-w’
Kill from the cursor to the previous whitespace. This is different
- than 'M-<DEL>' because the word boundaries differ.
+ than ‘M-<DEL>’ because the word boundaries differ.
- Here is how to "yank" the text back into the line. Yanking means to
-copy the most-recently-killed text from the kill buffer.
+ Here is how to “yank” the text back into the line. Yanking means to
+copy the most-recently-killed text from the kill buffer into the line at
+the current cursor position.
-'C-y'
+‘C-y’
Yank the most recently killed text back into the buffer at the
cursor.
-'M-y'
+‘M-y’
Rotate the kill-ring, and yank the new top. You can only do this
- if the prior command is 'C-y' or 'M-y'.
+ if the prior command is ‘C-y’ or ‘M-y’.
\1f
File: readline.info, Node: Readline Arguments, Next: Searching, Prev: Readline Killing Commands, Up: Readline Interaction
argument that is significant. If you pass a negative argument to a
command which normally acts in a forward direction, that command will
act in a backward direction. For example, to kill text back to the
-start of the line, you might type 'M-- C-k'.
+start of the line, you might type ‘M-- C-k’.
The general way to pass numeric arguments to a command is to type
meta digits before the command. If the first 'digit' typed is a minus
-sign ('-'), then the sign of the argument will be negative. Once you
+sign (‘-’), then the sign of the argument will be negative. Once you
have typed one meta digit to get the argument started, you can type the
remainder of the digits, and then the command. For example, to give the
-'C-d' command an argument of 10, you could type 'M-1 0 C-d', which will
+‘C-d’ command an argument of 10, you could type ‘M-1 0 C-d’, which will
delete the next ten characters on the input line.
\1f
Readline provides commands for searching through the command history for
lines containing a specified string. There are two search modes:
-"incremental" and "non-incremental".
+“incremental” and “non-incremental”.
Incremental searches begin before the user has finished typing the
search string. As each character of the search string is typed,
Readline displays the next entry from the history matching the string
typed so far. An incremental search requires only as many characters as
-needed to find the desired history entry. To search backward in the
-history for a particular string, type 'C-r'. Typing 'C-s' searches
-forward through the history. The characters present in the value of the
-'isearch-terminators' variable are used to terminate an incremental
-search. If that variable has not been assigned a value, the <ESC> and
-'C-J' characters will terminate an incremental search. 'C-g' will abort
-an incremental search and restore the original line. When the search is
-terminated, the history entry containing the search string becomes the
-current line.
-
- To find other matching entries in the history list, type 'C-r' or
-'C-s' as appropriate. This will search backward or forward in the
+needed to find the desired history entry. When using emacs editing
+mode, type ‘C-r’ to search backward in the history for a particular
+string. Typing ‘C-s’ searches forward through the history. The
+characters present in the value of the ‘isearch-terminators’ variable
+are used to terminate an incremental search. If that variable has not
+been assigned a value, the <ESC> and ‘C-J’ characters will terminate an
+incremental search. ‘C-g’ will abort an incremental search and restore
+the original line. When the search is terminated, the history entry
+containing the search string becomes the current line.
+
+ To find other matching entries in the history list, type ‘C-r’ or
+‘C-s’ as appropriate. This will search backward or forward in the
history for the next entry matching the search string typed so far. Any
other key sequence bound to a Readline command will terminate the search
and execute that command. For instance, a <RET> will terminate the
history list. A movement command will terminate the search, make the
last line found the current line, and begin editing.
- Readline remembers the last incremental search string. If two 'C-r's
+ Readline remembers the last incremental search string. If two ‘C-r’s
are typed without any intervening characters defining a new search
-string, any remembered search string is used.
+string, Readline uses any remembered search string.
Non-incremental searches read the entire search string before
-starting to search for matching history lines. The search string may be
-typed by the user or be part of the contents of the current line.
+starting to search for matching history entries. The search string may
+be typed by the user or be part of the contents of the current line.
\1f
File: readline.info, Node: Readline Init File, Next: Bindable Readline Commands, Prev: Readline Interaction, Up: Command Line Editing
Although the Readline library comes with a set of Emacs-like keybindings
installed by default, it is possible to use a different set of
keybindings. Any user can customize programs that use Readline by
-putting commands in an "inputrc" file, conventionally in his home
+putting commands in an “inputrc” file, conventionally in their home
directory. The name of this file is taken from the value of the
-environment variable 'INPUTRC'. If that variable is unset, the default
-is '~/.inputrc'. If that file does not exist or cannot be read, the
-ultimate default is '/etc/inputrc'.
+environment variable ‘INPUTRC’. If that variable is unset, the default
+is ‘~/.inputrc’. If that file does not exist or cannot be read,
+readline looks for ‘/etc/inputrc’.
- When a program which uses the Readline library starts up, the init
-file is read, and the key bindings are set.
+ When a program which uses the Readline library starts up, Readline
+reads the init file and sets any variables and key bindings it contains.
- In addition, the 'C-x C-r' command re-reads this init file, thus
+ In addition, the ‘C-x C-r’ command re-reads this init file, thus
incorporating any changes that you might have made to it.
* Menu:
* Readline Init File Syntax:: Syntax for the commands in the inputrc file.
-
* Conditional Init Constructs:: Conditional key bindings in the inputrc file.
-
* Sample Init File:: An example inputrc file.
\1f
-------------------------------
There are only a few basic constructs allowed in the Readline init file.
-Blank lines are ignored. Lines beginning with a '#' are comments.
-Lines beginning with a '$' indicate conditional constructs (*note
+Blank lines are ignored. Lines beginning with a ‘#’ are comments.
+Lines beginning with a ‘$’ indicate conditional constructs (*note
Conditional Init Constructs::). Other lines denote variable settings
and key bindings.
Variable Settings
You can modify the run-time behavior of Readline by altering the
- values of variables in Readline using the 'set' command within the
+ values of variables in Readline using the ‘set’ command within the
init file. The syntax is simple:
set VARIABLE VALUE
Here, for example, is how to change from the default Emacs-like key
- binding to use 'vi' line editing commands:
+ binding to use ‘vi’ line editing commands:
set editing-mode vi
A great deal of run-time behavior is changeable with the following
variables.
- 'bell-style'
+ ‘active-region-start-color’
+ A string variable that controls the text color and background
+ when displaying the text in the active region (see the
+ description of ‘enable-active-region’ below). This string
+ must not take up any physical character positions on the
+ display, so it should consist only of terminal escape
+ sequences. It is output to the terminal before displaying the
+ text in the active region. This variable is reset to the
+ default value whenever the terminal type changes. The default
+ value is the string that puts the terminal in standout mode,
+ as obtained from the terminal's terminfo description. A
+ sample value might be ‘\e[01;33m’.
+
+ ‘active-region-end-color’
+ A string variable that "undoes" the effects of
+ ‘active-region-start-color’ and restores "normal" terminal
+ display appearance after displaying text in the active region.
+ This string must not take up any physical character positions
+ on the display, so it should consist only of terminal escape
+ sequences. It is output to the terminal after displaying the
+ text in the active region. This variable is reset to the
+ default value whenever the terminal type changes. The default
+ value is the string that restores the terminal from standout
+ mode, as obtained from the terminal's terminfo description. A
+ sample value might be ‘\e[0m’.
+
+ ‘bell-style’
Controls what happens when Readline wants to ring the terminal
- bell. If set to 'none', Readline never rings the bell. If
- set to 'visible', Readline uses a visible bell if one is
- available. If set to 'audible' (the default), Readline
+ bell. If set to ‘none’, Readline never rings the bell. If
+ set to ‘visible’, Readline uses a visible bell if one is
+ available. If set to ‘audible’ (the default), Readline
attempts to ring the terminal's bell.
- 'bind-tty-special-chars'
- If set to 'on' (the default), Readline attempts to bind the
- control characters treated specially by the kernel's terminal
- driver to their Readline equivalents.
+ ‘bind-tty-special-chars’
+ If set to ‘on’ (the default), Readline attempts to bind the
+ control characters that are treated specially by the kernel's
+ terminal driver to their Readline equivalents. These override
+ the default Readline bindings described here. Type ‘stty -a’
+ at a Bash prompt to see your current terminal settings,
+ including the special control characters (usually ‘cchars’).
- 'blink-matching-paren'
- If set to 'on', Readline attempts to briefly move the cursor
+ ‘blink-matching-paren’
+ If set to ‘on’, Readline attempts to briefly move the cursor
to an opening parenthesis when a closing parenthesis is
- inserted. The default is 'off'.
+ inserted. The default is ‘off’.
- 'colored-completion-prefix'
- If set to 'on', when listing completions, Readline displays
+ ‘colored-completion-prefix’
+ If set to ‘on’, when listing completions, Readline displays
the common prefix of the set of possible completions using a
different color. The color definitions are taken from the
- value of the 'LS_COLORS' environment variable. The default is
- 'off'.
-
- 'colored-stats'
- If set to 'on', Readline displays possible completions using
+ value of the ‘LS_COLORS’ environment variable. If there is a
+ color definition in ‘LS_COLORS’ for the custom suffix
+ ‘readline-colored-completion-prefix’, Readline uses this color
+ for the common prefix instead of its default. The default is
+ ‘off’.
+
+ ‘colored-stats’
+ If set to ‘on’, Readline displays possible completions using
different colors to indicate their file type. The color
- definitions are taken from the value of the 'LS_COLORS'
- environment variable. The default is 'off'.
+ definitions are taken from the value of the ‘LS_COLORS’
+ environment variable. The default is ‘off’.
- 'comment-begin'
- The string to insert at the beginning of the line when the
- 'insert-comment' command is executed. The default value is
- '"#"'.
+ ‘comment-begin’
+ The string to insert at the beginning of the line by the
+ ‘insert-comment’ command. The default value is ‘"#"’.
- 'completion-display-width'
+ ‘completion-display-width’
The number of screen columns used to display possible matches
when performing completion. The value is ignored if it is
less than 0 or greater than the terminal screen width. A
value of 0 will cause matches to be displayed one per line.
The default value is -1.
- 'completion-ignore-case'
- If set to 'on', Readline performs filename matching and
+ ‘completion-ignore-case’
+ If set to ‘on’, Readline performs filename matching and
completion in a case-insensitive fashion. The default value
- is 'off'.
+ is ‘off’.
- 'completion-map-case'
- If set to 'on', and COMPLETION-IGNORE-CASE is enabled,
- Readline treats hyphens ('-') and underscores ('_') as
+ ‘completion-map-case’
+ If set to ‘on’, and COMPLETION-IGNORE-CASE is enabled,
+ Readline treats hyphens (‘-’) and underscores (‘_’) as
equivalent when performing case-insensitive filename matching
- and completion.
+ and completion. The default value is ‘off’.
- 'completion-prefix-display-length'
- The length in characters of the common prefix of a list of
- possible completions that is displayed without modification.
- When set to a value greater than zero, common prefixes longer
- than this value are replaced with an ellipsis when displaying
- possible completions.
+ ‘completion-prefix-display-length’
+ The maximum length in characters of the common prefix of a
+ list of possible completions that is displayed without
+ modification. When set to a value greater than zero, readline
+ replaces common prefixes longer than this value with an
+ ellipsis when displaying possible completions.
- 'completion-query-items'
+ ‘completion-query-items’
The number of possible completions that determines when the
user is asked whether the list of possibilities should be
displayed. If the number of possible completions is greater
- than this value, Readline will ask the user whether or not he
- wishes to view them; otherwise, they are simply listed. This
- variable must be set to an integer value greater than or equal
- to 0. A negative value means Readline should never ask. The
- default limit is '100'.
-
- 'convert-meta'
- If set to 'on', Readline will convert characters with the
- eighth bit set to an ASCII key sequence by stripping the
- eighth bit and prefixing an <ESC> character, converting them
- to a meta-prefixed key sequence. The default value is 'on',
- but will be set to 'off' if the locale is one that contains
- eight-bit characters.
-
- 'disable-completion'
- If set to 'On', Readline will inhibit word completion.
+ than or equal to this value, Readline will ask whether or not
+ the user wishes to view them; otherwise, Readline simply lists
+ the completions. This variable must be set to an integer
+ value greater than or equal to zero. A zero value means
+ Readline should never ask; negative values are treated as
+ zero. The default limit is ‘100’.
+
+ ‘convert-meta’
+ If set to ‘on’, Readline will convert characters it reads that
+ have the eighth bit set to an ASCII key sequence by clearing
+ the eighth bit and prefixing an <ESC> character, converting
+ them to a meta-prefixed key sequence. The default value is
+ ‘on’, but Readline will set it to ‘off’ if the locale contains
+ characters whose encodings may include bytes with the eighth
+ bit set. This variable is dependent on the ‘LC_CTYPE’ locale
+ category, and may change if the locale changes. This variable
+ also affects key bindings; see the description of
+ ‘force-meta-prefix’ below.
+
+ ‘disable-completion’
+ If set to ‘On’, Readline will inhibit word completion.
Completion characters will be inserted into the line as if
- they had been mapped to 'self-insert'. The default is 'off'.
+ they had been mapped to ‘self-insert’. The default is ‘off’.
- 'echo-control-characters'
- When set to 'on', on operating systems that indicate they
- support it, readline echoes a character corresponding to a
- signal generated from the keyboard. The default is 'on'.
+ ‘echo-control-characters’
+ When set to ‘on’, on operating systems that indicate they
+ support it, Readline echoes a character corresponding to a
+ signal generated from the keyboard. The default is ‘on’.
- 'editing-mode'
- The 'editing-mode' variable controls which default set of key
- bindings is used. By default, Readline starts up in Emacs
- editing mode, where the keystrokes are most similar to Emacs.
- This variable can be set to either 'emacs' or 'vi'.
+ ‘editing-mode’
+ The ‘editing-mode’ variable controls the default set of key
+ bindings. By default, Readline starts up in emacs editing
+ mode, where the keystrokes are most similar to Emacs. This
+ variable can be set to either ‘emacs’ or ‘vi’.
- 'emacs-mode-string'
+ ‘emacs-mode-string’
If the SHOW-MODE-IN-PROMPT variable is enabled, this string is
displayed immediately before the last line of the primary
prompt when emacs editing mode is active. The value is
expanded like a key binding, so the standard set of meta- and
- control prefixes and backslash escape sequences is available.
- Use the '\1' and '\2' escapes to begin and end sequences of
+ control- prefixes and backslash escape sequences is available.
+ The ‘\1’ and ‘\2’ escapes begin and end sequences of
non-printing characters, which can be used to embed a terminal
- control sequence into the mode string. The default is '@'.
-
- 'enable-bracketed-paste'
- When set to 'On', Readline will configure the terminal in a
- way that will enable it to insert each paste into the editing
- buffer as a single string of characters, instead of treating
- each character as if it had been read from the keyboard. This
- can prevent pasted characters from being interpreted as
- editing commands. The default is 'off'.
-
- 'enable-keypad'
- When set to 'on', Readline will try to enable the application
+ control sequence into the mode string. The default is ‘@’.
+
+ ‘enable-active-region’
+ “point” is the current cursor position, and “mark” refers to a
+ saved cursor position (*note Commands For Moving::). The text
+ between the point and mark is referred to as the “region”.
+ When this variable is set to ‘On’, Readline allows certain
+ commands to designate the region as “active”. When the region
+ is active, Readline highlights the text in the region using
+ the value of the ‘active-region-start-color’, which defaults
+ to the string that enables the terminal's standout mode. The
+ active region shows the text inserted by bracketed-paste and
+ any matching text found by incremental and non-incremental
+ history searches. The default is ‘On’.
+
+ ‘enable-bracketed-paste’
+ When set to ‘On’, Readline configures the terminal to insert
+ each paste into the editing buffer as a single string of
+ characters, instead of treating each character as if it had
+ been read from the keyboard. This is called putting the
+ terminal into “bracketed paste mode”; it prevents Readline
+ from executing any editing commands bound to key sequences
+ appearing in the pasted text. The default is ‘On’.
+
+ ‘enable-keypad’
+ When set to ‘on’, Readline will try to enable the application
keypad when it is called. Some systems need this to enable
- the arrow keys. The default is 'off'.
+ the arrow keys. The default is ‘off’.
- 'enable-meta-key'
- When set to 'on', Readline will try to enable any meta
+ ‘enable-meta-key’
+ When set to ‘on’, Readline will try to enable any meta
modifier key the terminal claims to support when it is called.
- On many terminals, the meta key is used to send eight-bit
- characters. The default is 'on'.
-
- 'expand-tilde'
- If set to 'on', tilde expansion is performed when Readline
- attempts word completion. The default is 'off'.
-
- 'history-preserve-point'
- If set to 'on', the history code attempts to place the point
+ On many terminals, the Meta key is used to send eight-bit
+ characters; this variable checks for the terminal capability
+ that indicates the terminal can enable and disable a mode that
+ sets the eighth bit of a character (0200) if the Meta key is
+ held down when the character is typed (a meta character). The
+ default is ‘on’.
+
+ ‘expand-tilde’
+ If set to ‘on’, Readline attempts tilde expansion when it
+ attempts word completion. The default is ‘off’.
+
+ ‘force-meta-prefix’
+ If set to ‘on’, Readline modifies its behavior when binding
+ key sequences containing ‘\M-’ or ‘Meta-’ (see ‘Key Bindings’
+ in *note Readline Init File Syntax::) by converting a key
+ sequence of the form ‘\M-’C or ‘Meta-’C to the two-character
+ sequence ‘ESC’C (adding the meta prefix). If
+ ‘force-meta-prefix’ is set to ‘off’ (the default), Readline
+ uses the value of the ‘convert-meta’ variable to determine
+ whether to perform this conversion: if ‘convert-meta’ is ‘on’,
+ Readline performs the conversion described above; if it is
+ ‘off’, Readline converts C to a meta character by setting the
+ eighth bit (0200). The default is ‘off’.
+
+ ‘history-preserve-point’
+ If set to ‘on’, the history code attempts to place the point
(the current cursor position) at the same location on each
- history line retrieved with 'previous-history' or
- 'next-history'. The default is 'off'.
+ history line retrieved with ‘previous-history’ or
+ ‘next-history’. The default is ‘off’.
- 'history-size'
+ ‘history-size’
Set the maximum number of history entries saved in the history
list. If set to zero, any existing history entries are
deleted and no new entries are saved. If set to a value less
than zero, the number of history entries is not limited. By
- default, the number of history entries is not limited. If an
- attempt is made to set HISTORY-SIZE to a non-numeric value,
- the maximum number of history entries will be set to 500.
-
- 'horizontal-scroll-mode'
- This variable can be set to either 'on' or 'off'. Setting it
- to 'on' means that the text of the lines being edited will
- scroll horizontally on a single screen line when they are
- longer than the width of the screen, instead of wrapping onto
- a new screen line. By default, this variable is set to 'off'.
-
- 'input-meta'
- If set to 'on', Readline will enable eight-bit input (it will
- not clear the eighth bit in the characters it reads),
+ default, the number of history entries is not limited. If you
+ try to set HISTORY-SIZE to a non-numeric value, the maximum
+ number of history entries will be set to 500.
+
+ ‘horizontal-scroll-mode’
+ Setting this variable to ‘on’ means that the text of the lines
+ being edited will scroll horizontally on a single screen line
+ when the lines are longer than the width of the screen,
+ instead of wrapping onto a new screen line. This variable is
+ automatically set to ‘on’ for terminals of height 1. By
+ default, this variable is set to ‘off’.
+
+ ‘input-meta’
+ If set to ‘on’, Readline will enable eight-bit input (that is,
+ it will not clear the eighth bit in the characters it reads),
regardless of what the terminal claims it can support. The
- default value is 'off', but Readline will set it to 'on' if
- the locale contains eight-bit characters. The name
- 'meta-flag' is a synonym for this variable.
-
- 'isearch-terminators'
+ default value is ‘off’, but Readline will set it to ‘on’ if
+ the locale contains characters whose encodings may include
+ bytes with the eighth bit set. This variable is dependent on
+ the ‘LC_CTYPE’ locale category, and its value may change if
+ the locale changes. The name ‘meta-flag’ is a synonym for
+ ‘input-meta’.
+
+ ‘isearch-terminators’
The string of characters that should terminate an incremental
search without subsequently executing the character as a
command (*note Searching::). If this variable has not been
- given a value, the characters <ESC> and 'C-J' will terminate
+ given a value, the characters <ESC> and ‘C-J’ will terminate
an incremental search.
- 'keymap'
+ ‘keymap’
Sets Readline's idea of the current keymap for key binding
- commands. Acceptable 'keymap' names are 'emacs',
- 'emacs-standard', 'emacs-meta', 'emacs-ctlx', 'vi', 'vi-move',
- 'vi-command', and 'vi-insert'. 'vi' is equivalent to
- 'vi-command' ('vi-move' is also a synonym); 'emacs' is
- equivalent to 'emacs-standard'. The default value is 'emacs'.
- The value of the 'editing-mode' variable also affects the
- default keymap.
-
- 'keyseq-timeout'
+ commands. Built-in ‘keymap’ names are ‘emacs’,
+ ‘emacs-standard’, ‘emacs-meta’, ‘emacs-ctlx’, ‘vi’, ‘vi-move’,
+ ‘vi-command’, and ‘vi-insert’. ‘vi’ is equivalent to
+ ‘vi-command’ (‘vi-move’ is also a synonym); ‘emacs’ is
+ equivalent to ‘emacs-standard’. Applications may add
+ additional names. The default value is ‘emacs’; the value of
+ the ‘editing-mode’ variable also affects the default keymap.
+
+ ‘keyseq-timeout’
Specifies the duration Readline will wait for a character when
reading an ambiguous key sequence (one that can form a
complete key sequence using the input read so far, or can take
- additional input to complete a longer key sequence). If no
- input is received within the timeout, Readline will use the
- shorter but complete key sequence. Readline uses this value
- to determine whether or not input is available on the current
- input source ('rl_instream' by default). The value is
+ additional input to complete a longer key sequence). If
+ Readline doesn't receive any input within the timeout, it will
+ use the shorter but complete key sequence. Readline uses this
+ value to determine whether or not input is available on the
+ current input source (‘rl_instream’ by default). The value is
specified in milliseconds, so a value of 1000 means that
Readline will wait one second for additional input. If this
variable is set to a value less than or equal to zero, or to a
non-numeric value, Readline will wait until another key is
pressed to decide which key sequence to complete. The default
- value is '500'.
-
- 'mark-directories'
- If set to 'on', completed directory names have a slash
- appended. The default is 'on'.
-
- 'mark-modified-lines'
- This variable, when set to 'on', causes Readline to display an
- asterisk ('*') at the start of history lines which have been
- modified. This variable is 'off' by default.
-
- 'mark-symlinked-directories'
- If set to 'on', completed names which are symbolic links to
- directories have a slash appended (subject to the value of
- 'mark-directories'). The default is 'off'.
-
- 'match-hidden-files'
- This variable, when set to 'on', causes Readline to match
- files whose names begin with a '.' (hidden files) when
- performing filename completion. If set to 'off', the leading
- '.' must be supplied by the user in the filename to be
- completed. This variable is 'on' by default.
-
- 'menu-complete-display-prefix'
- If set to 'on', menu completion displays the common prefix of
+ value is ‘500’.
+
+ ‘mark-directories’
+ If set to ‘on’, completed directory names have a slash
+ appended. The default is ‘on’.
+
+ ‘mark-modified-lines’
+ When this variable is set to ‘on’, Readline will to display an
+ asterisk (‘*’) at the start of history lines which have been
+ modified. This variable is ‘off’ by default.
+
+ ‘mark-symlinked-directories’
+ If set to ‘on’, completed names which are symbolic links to
+ directories have a slash appended, subject to the value of
+ ‘mark-directories’. The default is ‘off’.
+
+ ‘match-hidden-files’
+ This variable, when set to ‘on’, forces Readline to match
+ files whose names begin with a ‘.’ (hidden files) when
+ performing filename completion. If set to ‘off’, the user
+ must include the leading ‘.’ in the filename to be completed.
+ This variable is ‘on’ by default.
+
+ ‘menu-complete-display-prefix’
+ If set to ‘on’, menu completion displays the common prefix of
the list of possible completions (which may be empty) before
- cycling through the list. The default is 'off'.
+ cycling through the list. The default is ‘off’.
- 'output-meta'
- If set to 'on', Readline will display characters with the
+ ‘output-meta’
+ If set to ‘on’, Readline will display characters with the
eighth bit set directly rather than as a meta-prefixed escape
- sequence. The default is 'off', but Readline will set it to
- 'on' if the locale contains eight-bit characters.
-
- 'page-completions'
- If set to 'on', Readline uses an internal 'more'-like pager to
+ sequence. The default is ‘off’, but Readline will set it to
+ ‘on’ if the locale contains characters whose encodings may
+ include bytes with the eighth bit set. This variable is
+ dependent on the ‘LC_CTYPE’ locale category, and its value may
+ change if the locale changes.
+
+ ‘page-completions’
+ If set to ‘on’, Readline uses an internal ‘more’-like pager to
display a screenful of possible completions at a time. This
- variable is 'on' by default.
+ variable is ‘on’ by default.
- 'print-completions-horizontally'
- If set to 'on', Readline will display completions with matches
+ ‘prefer-visible-bell’
+ See ‘bell-style’.
+
+ ‘print-completions-horizontally’
+ If set to ‘on’, Readline will display completions with matches
sorted horizontally in alphabetical order, rather than down
- the screen. The default is 'off'.
+ the screen. The default is ‘off’.
- 'revert-all-at-newline'
- If set to 'on', Readline will undo all changes to history
- lines before returning when 'accept-line' is executed. By
+ ‘revert-all-at-newline’
+ If set to ‘on’, Readline will undo all changes to history
+ lines before returning when executing ‘accept-line’. By
default, history lines may be modified and retain individual
- undo lists across calls to 'readline'. The default is 'off'.
+ undo lists across calls to ‘readline()’. The default is
+ ‘off’.
+
+ ‘search-ignore-case’
+ If set to ‘on’, Readline performs incremental and
+ non-incremental history list searches in a case-insensitive
+ fashion. The default value is ‘off’.
- 'show-all-if-ambiguous'
+ ‘show-all-if-ambiguous’
This alters the default behavior of the completion functions.
- If set to 'on', words which have more than one possible
+ If set to ‘on’, words which have more than one possible
completion cause the matches to be listed immediately instead
- of ringing the bell. The default value is 'off'.
+ of ringing the bell. The default value is ‘off’.
- 'show-all-if-unmodified'
+ ‘show-all-if-unmodified’
This alters the default behavior of the completion functions
in a fashion similar to SHOW-ALL-IF-AMBIGUOUS. If set to
- 'on', words which have more than one possible completion
+ ‘on’, words which have more than one possible completion
without any possible partial completion (the possible
completions don't share a common prefix) cause the matches to
be listed immediately instead of ringing the bell. The
- default value is 'off'.
+ default value is ‘off’.
- 'show-mode-in-prompt'
- If set to 'on', add a string to the beginning of the prompt
+ ‘show-mode-in-prompt’
+ If set to ‘on’, add a string to the beginning of the prompt
indicating the editing mode: emacs, vi command, or vi
insertion. The mode strings are user-settable (e.g.,
- EMACS-MODE-STRING). The default value is 'off'.
+ EMACS-MODE-STRING). The default value is ‘off’.
- 'skip-completed-text'
- If set to 'on', this alters the default completion behavior
+ ‘skip-completed-text’
+ If set to ‘on’, this alters the default completion behavior
when inserting a single match into the line. It's only active
when performing completion in the middle of a word. If
enabled, readline does not insert characters from the
completion that match characters after point in the word being
completed, so portions of the word following the cursor are
not duplicated. For instance, if this is enabled, attempting
- completion when the cursor is after the 'e' in 'Makefile' will
- result in 'Makefile' rather than 'Makefilefile', assuming
- there is a single possible completion. The default value is
- 'off'.
+ completion when the cursor is after the first ‘e’ in
+ ‘Makefile’ will result in ‘Makefile’ rather than
+ ‘Makefilefile’, assuming there is a single possible
+ completion. The default value is ‘off’.
- 'vi-cmd-mode-string'
+ ‘vi-cmd-mode-string’
If the SHOW-MODE-IN-PROMPT variable is enabled, this string is
displayed immediately before the last line of the primary
prompt when vi editing mode is active and in command mode.
The value is expanded like a key binding, so the standard set
- of meta- and control prefixes and backslash escape sequences
- is available. Use the '\1' and '\2' escapes to begin and end
+ of meta- and control- prefixes and backslash escape sequences
+ is available. The ‘\1’ and ‘\2’ escapes begin and end
sequences of non-printing characters, which can be used to
embed a terminal control sequence into the mode string. The
- default is '(cmd)'.
+ default is ‘(cmd)’.
- 'vi-ins-mode-string'
+ ‘vi-ins-mode-string’
If the SHOW-MODE-IN-PROMPT variable is enabled, this string is
displayed immediately before the last line of the primary
prompt when vi editing mode is active and in insertion mode.
The value is expanded like a key binding, so the standard set
- of meta- and control prefixes and backslash escape sequences
- is available. Use the '\1' and '\2' escapes to begin and end
+ of meta- and control- prefixes and backslash escape sequences
+ is available. The ‘\1’ and ‘\2’ escapes begin and end
sequences of non-printing characters, which can be used to
embed a terminal control sequence into the mode string. The
- default is '(ins)'.
+ default is ‘(ins)’.
- 'visible-stats'
- If set to 'on', a character denoting a file's type is appended
+ ‘visible-stats’
+ If set to ‘on’, a character denoting a file's type is appended
to the filename when listing possible completions. The
- default is 'off'.
+ default is ‘off’.
Key Bindings
The syntax for controlling key bindings in the init file is simple.
part of the key name. The name of the key can be expressed in
different ways, depending on what you find most comfortable.
- In addition to command names, readline allows keys to be bound to a
- string that is inserted when the key is pressed (a MACRO).
+ In addition to command names, Readline allows keys to be bound to a
+ string that is inserted when the key is pressed (a MACRO). The
+ difference between a macro and a command is that a macro is
+ enclosed in single or double quotes.
KEYNAME: FUNCTION-NAME or MACRO
KEYNAME is the name of a key spelled out in English. For
Meta-Rubout: backward-kill-word
Control-o: "> output"
- In the above example, 'C-u' is bound to the function
- 'universal-argument', 'M-DEL' is bound to the function
- 'backward-kill-word', and 'C-o' is bound to run the macro
+ In the example above, ‘C-u’ is bound to the function
+ ‘universal-argument’, ‘M-DEL’ is bound to the function
+ ‘backward-kill-word’, and ‘C-o’ is bound to run the macro
expressed on the right hand side (that is, to insert the text
- '> output' into the line).
+ ‘> output’ into the line).
- A number of symbolic character names are recognized while
- processing this key binding syntax: DEL, ESC, ESCAPE, LFD,
- NEWLINE, RET, RETURN, RUBOUT, SPACE, SPC, and TAB.
+ This key binding syntax recognizes a number of symbolic
+ character names: DEL, ESC, ESCAPE, LFD, NEWLINE, RET, RETURN,
+ RUBOUT, SPACE, SPC, and TAB.
"KEYSEQ": FUNCTION-NAME or MACRO
KEYSEQ differs from KEYNAME above in that strings denoting an
entire key sequence can be specified, by placing the key
sequence in double quotes. Some GNU Emacs style key escapes
- can be used, as in the following example, but the special
- character names are not recognized.
+ can be used, as in the following example, but none of the
+ special character names are recognized.
"\C-u": universal-argument
"\C-x\C-r": re-read-init-file
"\e[11~": "Function Key 1"
- In the above example, 'C-u' is again bound to the function
- 'universal-argument' (just as it was in the first example),
- ''C-x' 'C-r'' is bound to the function 're-read-init-file',
- and '<ESC> <[> <1> <1> <~>' is bound to insert the text
- 'Function Key 1'.
+ In the above example, ‘C-u’ is again bound to the function
+ ‘universal-argument’ (just as it was in the first example),
+ ‘‘C-x’ ‘C-r’’ is bound to the function ‘re-read-init-file’,
+ and ‘<ESC> <[> <1> <1> <~>’ is bound to insert the text
+ ‘Function Key 1’.
The following GNU Emacs style escape sequences are available when
specifying key sequences:
- '\C-'
- control prefix
- '\M-'
- meta prefix
- '\e'
- an escape character
- '\\'
- backslash
- '\"'
- <">, a double quotation mark
- '\''
- <'>, a single quote or apostrophe
+ ‘\C-’
+ A control prefix.
+ ‘\M-’
+ Adding the meta prefix or converting the following character
+ to a meta character, as described above under
+ ‘force-meta-prefix’ (see ‘Variable Settings’ in *note Readline
+ Init File Syntax::).
+ ‘\e’
+ An escape character.
+ ‘\\’
+ Backslash.
+ ‘\"’
+ <">, a double quotation mark.
+ ‘\'’
+ <'>, a single quote or apostrophe.
In addition to the GNU Emacs style escape sequences, a second set
of backslash escapes is available:
- '\a'
+ ‘\a’
alert (bell)
- '\b'
+ ‘\b’
backspace
- '\d'
+ ‘\d’
delete
- '\f'
+ ‘\f’
form feed
- '\n'
+ ‘\n’
newline
- '\r'
+ ‘\r’
carriage return
- '\t'
+ ‘\t’
horizontal tab
- '\v'
+ ‘\v’
vertical tab
- '\NNN'
- the eight-bit character whose value is the octal value NNN
- (one to three digits)
- '\xHH'
- the eight-bit character whose value is the hexadecimal value
- HH (one or two hex digits)
+ ‘\NNN’
+ The eight-bit character whose value is the octal value NNN
+ (one to three digits).
+ ‘\xHH’
+ The eight-bit character whose value is the hexadecimal value
+ HH (one or two hex digits).
When entering the text of a macro, single or double quotes must be
used to indicate a macro definition. Unquoted text is assumed to
- be a function name. In the macro body, the backslash escapes
- described above are expanded. Backslash will quote any other
- character in the macro text, including '"' and '''. For example,
- the following binding will make ''C-x' \' insert a single '\' into
+ be a function name. Tthe backslash escapes described above are
+ expanded in the macro body. Backslash will quote any other
+ character in the macro text, including ‘"’ and ‘'’. For example,
+ the following binding will make ‘‘C-x’ \’ insert a single ‘\’ into
the line:
"\C-x\\": "\\"
Readline implements a facility similar in spirit to the conditional
compilation features of the C preprocessor which allows key bindings and
variable settings to be performed as the result of tests. There are
-four parser directives used.
+four parser directives available.
-'$if'
- The '$if' construct allows bindings to be made based on the editing
+‘$if’
+ The ‘$if’ construct allows bindings to be made based on the editing
mode, the terminal being used, or the application using Readline.
The text of the test, after any comparison operator, extends to the
end of the line; unless otherwise noted, no characters are required
to isolate it.
- 'mode'
- The 'mode=' form of the '$if' directive is used to test
- whether Readline is in 'emacs' or 'vi' mode. This may be used
- in conjunction with the 'set keymap' command, for instance, to
- set bindings in the 'emacs-standard' and 'emacs-ctlx' keymaps
- only if Readline is starting out in 'emacs' mode.
+ ‘mode’
+ The ‘mode=’ form of the ‘$if’ directive is used to test
+ whether Readline is in ‘emacs’ or ‘vi’ mode. This may be used
+ in conjunction with the ‘set keymap’ command, for instance, to
+ set bindings in the ‘emacs-standard’ and ‘emacs-ctlx’ keymaps
+ only if Readline is starting out in ‘emacs’ mode.
- 'term'
- The 'term=' form may be used to include terminal-specific key
+ ‘term’
+ The ‘term=’ form may be used to include terminal-specific key
bindings, perhaps to bind the key sequences output by the
terminal's function keys. The word on the right side of the
- '=' is tested against both the full name of the terminal and
- the portion of the terminal name before the first '-'. This
- allows 'sun' to match both 'sun' and 'sun-cmd', for instance.
-
- 'version'
- The 'version' test may be used to perform comparisons against
- specific Readline versions. The 'version' expands to the
+ ‘=’ is tested against both the full name of the terminal and
+ the portion of the terminal name before the first ‘-’. This
+ allows ‘xterm’ to match both ‘xterm’ and ‘xterm-256color’, for
+ instance.
+
+ ‘version’
+ The ‘version’ test may be used to perform comparisons against
+ specific Readline versions. The ‘version’ expands to the
current Readline version. The set of comparison operators
- includes '=' (and '=='), '!=', '<=', '>=', '<', and '>'. The
+ includes ‘=’ (and ‘==’), ‘!=’, ‘<=’, ‘>=’, ‘<’, and ‘>’. The
version number supplied on the right side of the operator
consists of a major version number, an optional decimal point,
- and an optional minor version (e.g., '7.1'). If the minor
- version is omitted, it is assumed to be '0'. The operator may
- be separated from the string 'version' and from the version
+ and an optional minor version (e.g., ‘7.1’). If the minor
+ version is omitted, it defaults to ‘0’. The operator may be
+ separated from the string ‘version’ and from the version
number argument by whitespace. The following example sets a
variable if the Readline version being used is 7.0 or newer:
$if version >= 7.0
set show-mode-in-prompt on
$endif
- 'application'
+ ‘application’
The APPLICATION construct is used to include
application-specific settings. Each program using the
Readline library sets the APPLICATION NAME, and you can test
"\C-xq": "\eb\"\ef\""
$endif
- 'variable'
+ ‘variable’
The VARIABLE construct provides simple equality tests for
Readline variables and values. The permitted comparison
- operators are '=', '==', and '!='. The variable name must be
+ operators are ‘=’, ‘==’, and ‘!=’. The variable name must be
separated from the comparison operator by whitespace; the
operator may be separated from the value on the right hand
- side by whitespace. Both string and boolean variables may be
+ side by whitespace. String and boolean variables may be
tested. Boolean variables must be tested against the values
ON and OFF. The following example is equivalent to the
- 'mode=emacs' test described above:
+ ‘mode=emacs’ test described above:
$if editing-mode == emacs
set show-mode-in-prompt on
$endif
-'$endif'
- This command, as seen in the previous example, terminates an '$if'
- command.
-
-'$else'
- Commands in this branch of the '$if' directive are executed if the
+‘$else’
+ Commands in this branch of the ‘$if’ directive are executed if the
test fails.
-'$include'
+‘$endif’
+ This command, as seen in the previous example, terminates an ‘$if’
+ command.
+
+‘$include’
This directive takes a single filename as an argument and reads
- commands and bindings from that file. For example, the following
- directive reads from '/etc/inputrc':
+ commands and key bindings from that file. For example, the
+ following directive reads from ‘/etc/inputrc’:
$include /etc/inputrc
\1f
# rather than as meta-prefixed characters
set output-meta on
- # if there are more than 150 possible completions for
- # a word, ask the user if he wants to see all of them
+ # if there are 150 or more possible completions for a word,
+ # ask whether or not the user wants to see all of them
set completion-query-items 150
# For FTP
sequences. Command names without an accompanying key sequence are
unbound by default.
- In the following descriptions, "point" refers to the current cursor
-position, and "mark" refers to a cursor position saved by the 'set-mark'
+ In the following descriptions, “point” refers to the current cursor
+position, and “mark” refers to a cursor position saved by the ‘set-mark’
command. The text between the point and mark is referred to as the
-"region".
+“region”. Readline has the concept of an _active region_: when the
+region is active, Readline redisplay uses the value of the
+‘active-region-start-color’ variable to denote the region. Several
+commands set the region to active; those are noted below.
\1f
File: readline.info, Node: Commands For Moving, Next: Commands For History, Up: Bindable Readline Commands
1.4.1 Commands For Moving
-------------------------
-'beginning-of-line (C-a)'
- Move to the start of the current line.
+‘beginning-of-line (C-a)’
+ Move to the start of the current line. This may also be bound to
+ the Home key on some keyboards.
-'end-of-line (C-e)'
- Move to the end of the line.
+‘end-of-line (C-e)’
+ Move to the end of the line. This may also be bound to the End key
+ on some keyboards.
-'forward-char (C-f)'
+‘forward-char (C-f)’
Move forward a character.
-'backward-char (C-b)'
+‘backward-char (C-b)’
Move back a character.
-'forward-word (M-f)'
+‘forward-word (M-f)’
Move forward to the end of the next word. Words are composed of
letters and digits.
-'backward-word (M-b)'
+‘backward-word (M-b)’
Move back to the start of the current or previous word. Words are
composed of letters and digits.
-'previous-screen-line ()'
+‘previous-screen-line ()’
Attempt to move point to the same physical screen column on the
previous physical screen line. This will not have the desired
effect if the current Readline line does not take up more than one
physical line or if point is not greater than the length of the
prompt plus the screen width.
-'next-screen-line ()'
+‘next-screen-line ()’
Attempt to move point to the same physical screen column on the
next physical screen line. This will not have the desired effect
if the current Readline line does not take up more than one
physical line or if the length of the current Readline line is not
greater than the length of the prompt plus the screen width.
-'clear-screen (C-l)'
- Clear the screen and redraw the current line, leaving the current
+‘clear-display (M-C-l)’
+ Clear the screen and, if possible, the terminal's scrollback
+ buffer, then redraw the current line, leaving the current line at
+ the top of the screen.
+
+‘clear-screen (C-l)’
+ Clear the screen, then redraw the current line, leaving the current
line at the top of the screen.
-'redraw-current-line ()'
+‘redraw-current-line ()’
Refresh the current line. By default, this is unbound.
\1f
1.4.2 Commands For Manipulating The History
-------------------------------------------
-'accept-line (Newline or Return)'
+‘accept-line (Newline or Return)’
Accept the line regardless of where the cursor is. If this line is
- non-empty, it may be added to the history list for future recall
- with 'add_history()'. If this line is a modified history line, the
- history line is restored to its original state.
+ non-empty, you can add it to the history list using
+ ‘add_history()’. If this line is a modified history line, then
+ restore the history line to its original state.
-'previous-history (C-p)'
+‘previous-history (C-p)’
Move 'back' through the history list, fetching the previous
command.
-'next-history (C-n)'
+‘next-history (C-n)’
Move 'forward' through the history list, fetching the next command.
-'beginning-of-history (M-<)'
+‘beginning-of-history (M-<)’
Move to the first line in the history.
-'end-of-history (M->)'
+‘end-of-history (M->)’
Move to the end of the input history, i.e., the line currently
being entered.
-'reverse-search-history (C-r)'
+‘reverse-search-history (C-r)’
Search backward starting at the current line and moving 'up'
through the history as necessary. This is an incremental search.
+ This command sets the region to the matched text and activates the
+ region.
-'forward-search-history (C-s)'
+‘forward-search-history (C-s)’
Search forward starting at the current line and moving 'down'
through the history as necessary. This is an incremental search.
+ This command sets the region to the matched text and activates the
+ region.
-'non-incremental-reverse-search-history (M-p)'
+‘non-incremental-reverse-search-history (M-p)’
Search backward starting at the current line and moving 'up'
through the history as necessary using a non-incremental search for
a string supplied by the user. The search string may match
anywhere in a history line.
-'non-incremental-forward-search-history (M-n)'
+‘non-incremental-forward-search-history (M-n)’
Search forward starting at the current line and moving 'down'
through the history as necessary using a non-incremental search for
a string supplied by the user. The search string may match
anywhere in a history line.
-'history-search-forward ()'
- Search forward through the history for the string of characters
+‘history-search-backward ()’
+ Search backward through the history for the string of characters
between the start of the current line and the point. The search
string must match at the beginning of a history line. This is a
- non-incremental search. By default, this command is unbound.
+ non-incremental search. By default, this command is unbound, but
+ may be bound to the Page Down key on some keyboards.
-'history-search-backward ()'
- Search backward through the history for the string of characters
+‘history-search-forward ()’
+ Search forward through the history for the string of characters
between the start of the current line and the point. The search
string must match at the beginning of a history line. This is a
- non-incremental search. By default, this command is unbound.
+ non-incremental search. By default, this command is unbound, but
+ may be bound to the Page Up key on some keyboards.
-'history-substring-search-forward ()'
- Search forward through the history for the string of characters
+‘history-substring-search-backward ()’
+ Search backward through the history for the string of characters
between the start of the current line and the point. The search
string may match anywhere in a history line. This is a
non-incremental search. By default, this command is unbound.
-'history-substring-search-backward ()'
- Search backward through the history for the string of characters
+‘history-substring-search-forward ()’
+ Search forward through the history for the string of characters
between the start of the current line and the point. The search
string may match anywhere in a history line. This is a
non-incremental search. By default, this command is unbound.
-'yank-nth-arg (M-C-y)'
+‘yank-nth-arg (M-C-y)’
Insert the first argument to the previous command (usually the
second word on the previous line) at point. With an argument N,
insert the Nth word from the previous command (the words in the
previous command begin with word 0). A negative argument inserts
the Nth word from the end of the previous command. Once the
- argument N is computed, the argument is extracted as if the '!N'
- history expansion had been specified.
+ argument N is computed, this uses the history expansion facilities
+ to extract the Nth word, as if the ‘!N’ history expansion had been
+ specified.
-'yank-last-arg (M-. or M-_)'
+‘yank-last-arg (M-. or M-_)’
Insert last argument to the previous command (the last word of the
previous history entry). With a numeric argument, behave exactly
- like 'yank-nth-arg'. Successive calls to 'yank-last-arg' move back
+ like ‘yank-nth-arg’. Successive calls to ‘yank-last-arg’ move back
through the history list, inserting the last word (or the word
specified by the argument to the first call) of each line in turn.
Any numeric argument supplied to these successive calls determines
the direction to move through the history. A negative argument
- switches the direction through the history (back or forward). The
- history expansion facilities are used to extract the last argument,
- as if the '!$' history expansion had been specified.
+ switches the direction through the history (back or forward). This
+ uses the history expansion facilities to extract the last word, as
+ if the ‘!$’ history expansion had been specified.
+
+‘operate-and-get-next (C-o)’
+ Accept the current line for return to the calling application as if
+ a newline had been entered, and fetch the next line relative to the
+ current line from the history for editing. A numeric argument, if
+ supplied, specifies the history entry to use instead of the current
+ line.
+
+‘fetch-history ()’
+ With a numeric argument, fetch that entry from the history list and
+ make it the current line. Without an argument, move back to the
+ first entry in the history list.
\1f
File: readline.info, Node: Commands For Text, Next: Commands For Killing, Prev: Commands For History, Up: Bindable Readline Commands
1.4.3 Commands For Changing Text
--------------------------------
-'end-of-file (usually C-d)'
+‘end-of-file (usually C-d)’
The character indicating end-of-file as set, for example, by
- 'stty'. If this character is read when there are no characters on
+ ‘stty’. If this character is read when there are no characters on
the line, and point is at the beginning of the line, Readline
interprets it as the end of input and returns EOF.
-'delete-char (C-d)'
+‘delete-char (C-d)’
Delete the character at point. If this function is bound to the
- same character as the tty EOF character, as 'C-d' commonly is, see
+ same character as the tty EOF character, as ‘C-d’ commonly is, see
above for the effects.
-'backward-delete-char (Rubout)'
+‘backward-delete-char (Rubout)’
Delete the character behind the cursor. A numeric argument means
- to kill the characters instead of deleting them.
+ to kill the characters, saving them on the kill ring, instead of
+ deleting them.
-'forward-backward-delete-char ()'
+‘forward-backward-delete-char ()’
Delete the character under the cursor, unless the cursor is at the
end of the line, in which case the character behind the cursor is
deleted. By default, this is not bound to a key.
-'quoted-insert (C-q or C-v)'
+‘quoted-insert (C-q or C-v)’
Add the next character typed to the line verbatim. This is how to
- insert key sequences like 'C-q', for example.
+ insert key sequences like ‘C-q’, for example.
-'tab-insert (M-<TAB>)'
+‘tab-insert (M-<TAB>)’
Insert a tab character.
-'self-insert (a, b, A, 1, !, ...)'
- Insert yourself.
+‘self-insert (a, b, A, 1, !, ...)’
+ Insert the character typed.
-'bracketed-paste-begin ()'
+‘bracketed-paste-begin ()’
This function is intended to be bound to the "bracketed paste"
escape sequence sent by some terminals, and such a binding is
assigned by default. It allows Readline to insert the pasted text
as a single unit without treating each character as if it had been
read from the keyboard. The characters are inserted as if each one
- was bound to 'self-insert') instead of executing any editing
+ was bound to ‘self-insert’ instead of executing any editing
commands.
-'transpose-chars (C-t)'
+ Bracketed paste sets the region (the characters between point and
+ the mark) to the inserted text. It sets the _active region_.
+
+‘transpose-chars (C-t)’
Drag the character before the cursor forward over the character at
the cursor, moving the cursor forward as well. If the insertion
point is at the end of the line, then this transposes the last two
characters of the line. Negative arguments have no effect.
-'transpose-words (M-t)'
+‘transpose-words (M-t)’
Drag the word before point past the word after point, moving point
past that word as well. If the insertion point is at the end of
the line, this transposes the last two words on the line.
-'upcase-word (M-u)'
+‘upcase-word (M-u)’
Uppercase the current (or following) word. With a negative
argument, uppercase the previous word, but do not move the cursor.
-'downcase-word (M-l)'
+‘downcase-word (M-l)’
Lowercase the current (or following) word. With a negative
argument, lowercase the previous word, but do not move the cursor.
-'capitalize-word (M-c)'
+‘capitalize-word (M-c)’
Capitalize the current (or following) word. With a negative
argument, capitalize the previous word, but do not move the cursor.
-'overwrite-mode ()'
+‘overwrite-mode ()’
Toggle overwrite mode. With an explicit positive numeric argument,
switches to overwrite mode. With an explicit non-positive numeric
argument, switches to insert mode. This command affects only
- 'emacs' mode; 'vi' mode does overwrite differently. Each call to
- 'readline()' starts in insert mode.
+ ‘emacs’ mode; ‘vi’ mode does overwrite differently. Each call to
+ ‘readline()’ starts in insert mode.
- In overwrite mode, characters bound to 'self-insert' replace the
+ In overwrite mode, characters bound to ‘self-insert’ replace the
text at point rather than pushing the text to the right.
- Characters bound to 'backward-delete-char' replace the character
+ Characters bound to ‘backward-delete-char’ replace the character
before point with a space.
- By default, this command is unbound.
+ By default, this command is unbound, but may be bound to the Insert
+ key on some keyboards.
\1f
File: readline.info, Node: Commands For Killing, Next: Numeric Arguments, Prev: Commands For Text, Up: Bindable Readline Commands
1.4.4 Killing And Yanking
-------------------------
-'kill-line (C-k)'
- Kill the text from point to the end of the line.
+‘kill-line (C-k)’
+ Kill the text from point to the end of the current line. With a
+ negative numeric argument, kill backward from the cursor to the
+ beginning of the line.
-'backward-kill-line (C-x Rubout)'
+‘backward-kill-line (C-x Rubout)’
Kill backward from the cursor to the beginning of the current line.
+ With a negative numeric argument, kill forward from the cursor to
+ the end of the line.
-'unix-line-discard (C-u)'
+‘unix-line-discard (C-u)’
Kill backward from the cursor to the beginning of the current line.
-'kill-whole-line ()'
+‘kill-whole-line ()’
Kill all characters on the current line, no matter where point is.
By default, this is unbound.
-'kill-word (M-d)'
+‘kill-word (M-d)’
Kill from point to the end of the current word, or if between
words, to the end of the next word. Word boundaries are the same
- as 'forward-word'.
+ as ‘forward-word’.
-'backward-kill-word (M-<DEL>)'
+‘backward-kill-word (M-<DEL>)’
Kill the word behind point. Word boundaries are the same as
- 'backward-word'.
+ ‘backward-word’.
-'unix-word-rubout (C-w)'
- Kill the word behind point, using white space as a word boundary.
- The killed text is saved on the kill-ring.
+‘unix-word-rubout (C-w)’
+ Kill the word behind point, using white space as a word boundary,
+ saving the killed text on the kill-ring.
-'unix-filename-rubout ()'
+‘unix-filename-rubout ()’
Kill the word behind point, using white space and the slash
- character as the word boundaries. The killed text is saved on the
+ character as the word boundaries, saving the killed text on the
kill-ring.
-'delete-horizontal-space ()'
+‘delete-horizontal-space ()’
Delete all spaces and tabs around point. By default, this is
unbound.
-'kill-region ()'
+‘kill-region ()’
Kill the text in the current region. By default, this command is
unbound.
-'copy-region-as-kill ()'
+‘copy-region-as-kill ()’
Copy the text in the region to the kill buffer, so it can be yanked
right away. By default, this command is unbound.
-'copy-backward-word ()'
+‘copy-backward-word ()’
Copy the word before point to the kill buffer. The word boundaries
- are the same as 'backward-word'. By default, this command is
+ are the same as ‘backward-word’. By default, this command is
unbound.
-'copy-forward-word ()'
+‘copy-forward-word ()’
Copy the word following point to the kill buffer. The word
- boundaries are the same as 'forward-word'. By default, this
+ boundaries are the same as ‘forward-word’. By default, this
command is unbound.
-'yank (C-y)'
+‘yank (C-y)’
Yank the top of the kill ring into the buffer at point.
-'yank-pop (M-y)'
+‘yank-pop (M-y)’
Rotate the kill-ring, and yank the new top. You can only do this
- if the prior command is 'yank' or 'yank-pop'.
+ if the prior command is ‘yank’ or ‘yank-pop’.
\1f
File: readline.info, Node: Numeric Arguments, Next: Commands For Completion, Prev: Commands For Killing, Up: Bindable Readline Commands
1.4.5 Specifying Numeric Arguments
----------------------------------
-'digit-argument (M-0, M-1, ... M--)'
+‘digit-argument (M-0, M-1, ... M--)’
Add this digit to the argument already accumulating, or start a new
- argument. 'M--' starts a negative argument.
+ argument. ‘M--’ starts a negative argument.
-'universal-argument ()'
+‘universal-argument ()’
This is another way to specify an argument. If this command is
followed by one or more digits, optionally with a leading minus
sign, those digits define the argument. If the command is followed
- by digits, executing 'universal-argument' again ends the numeric
+ by digits, executing ‘universal-argument’ again ends the numeric
argument, but is otherwise ignored. As a special case, if this
command is immediately followed by a character that is neither a
digit nor minus sign, the argument count for the next command is
1.4.6 Letting Readline Type For You
-----------------------------------
-'complete (<TAB>)'
+‘complete (<TAB>)’
Attempt to perform completion on the text before point. The actual
completion performed is application-specific. The default is
filename completion.
-'possible-completions (M-?)'
+‘possible-completions (M-?)’
List the possible completions of the text before point. When
displaying completions, Readline sets the number of columns used
- for display to the value of 'completion-display-width', the value
- of the environment variable 'COLUMNS', or the screen width, in that
+ for display to the value of ‘completion-display-width’, the value
+ of the environment variable ‘COLUMNS’, or the screen width, in that
order.
-'insert-completions (M-*)'
+‘insert-completions (M-*)’
Insert all completions of the text before point that would have
- been generated by 'possible-completions'.
+ been generated by ‘possible-completions’, separated by a space.
-'menu-complete ()'
- Similar to 'complete', but replaces the word to be completed with a
- single match from the list of possible completions. Repeated
- execution of 'menu-complete' steps through the list of possible
+‘menu-complete ()’
+ Similar to ‘complete’, but replaces the word to be completed with a
+ single match from the list of possible completions. Repeatedly
+ executing ‘menu-complete’ steps through the list of possible
completions, inserting each match in turn. At the end of the list
- of completions, the bell is rung (subject to the setting of
- 'bell-style') and the original text is restored. An argument of N
- moves N positions forward in the list of matches; a negative
- argument may be used to move backward through the list. This
- command is intended to be bound to <TAB>, but is unbound by
- default.
-
-'menu-complete-backward ()'
- Identical to 'menu-complete', but moves backward through the list
- of possible completions, as if 'menu-complete' had been given a
- negative argument.
-
-'delete-char-or-list ()'
+ of completions, ‘menu-complete’ rings the bell (subject to the
+ setting of ‘bell-style’) and restores the original text. An
+ argument of N moves N positions forward in the list of matches; a
+ negative argument moves backward through the list. This command is
+ intended to be bound to <TAB>, but is unbound by default.
+
+‘menu-complete-backward ()’
+ Identical to ‘menu-complete’, but moves backward through the list
+ of possible completions, as if ‘menu-complete’ had been given a
+ negative argument. This command is unbound by default.
+
+‘delete-char-or-list ()’
Deletes the character under the cursor if not at the beginning or
- end of the line (like 'delete-char'). If at the end of the line,
- behaves identically to 'possible-completions'. This command is
+ end of the line (like ‘delete-char’). At the end of the line, it
+ behaves identically to ‘possible-completions’. This command is
unbound by default.
\1f
1.4.7 Keyboard Macros
---------------------
-'start-kbd-macro (C-x ()'
+‘start-kbd-macro (C-x ()’
Begin saving the characters typed into the current keyboard macro.
-'end-kbd-macro (C-x ))'
+‘end-kbd-macro (C-x ))’
Stop saving the characters typed into the current keyboard macro
and save the definition.
-'call-last-kbd-macro (C-x e)'
+‘call-last-kbd-macro (C-x e)’
Re-execute the last keyboard macro defined, by making the
characters in the macro appear as if typed at the keyboard.
-'print-last-kbd-macro ()'
- Print the last keboard macro defined in a format suitable for the
+‘print-last-kbd-macro ()’
+ Print the last keyboard macro defined in a format suitable for the
INPUTRC file.
\1f
1.4.8 Some Miscellaneous Commands
---------------------------------
-'re-read-init-file (C-x C-r)'
+‘re-read-init-file (C-x C-r)’
Read in the contents of the INPUTRC file, and incorporate any
bindings or variable assignments found there.
-'abort (C-g)'
+‘abort (C-g)’
Abort the current editing command and ring the terminal's bell
- (subject to the setting of 'bell-style').
+ (subject to the setting of ‘bell-style’).
-'do-lowercase-version (M-A, M-B, M-X, ...)'
+‘do-lowercase-version (M-A, M-B, M-X, ...)’
If the metafied character X is upper case, run the command that is
bound to the corresponding metafied lower case character. The
behavior is undefined if X is already lower case.
-'prefix-meta (<ESC>)'
- Metafy the next character typed. This is for keyboards without a
- meta key. Typing '<ESC> f' is equivalent to typing 'M-f'.
+‘prefix-meta (<ESC>)’
+ Metafy the next character typed. Typing ‘<ESC> f’ is equivalent to
+ typing ‘M-f’.
-'undo (C-_ or C-x C-u)'
+‘undo (C-_ or C-x C-u)’
Incremental undo, separately remembered for each line.
-'revert-line (M-r)'
+‘revert-line (M-r)’
Undo all changes made to this line. This is like executing the
- 'undo' command enough times to get back to the beginning.
+ ‘undo’ command enough times to get back to the initial state.
-'tilde-expand (M-~)'
+‘tilde-expand (M-~)’
Perform tilde expansion on the current word.
-'set-mark (C-@)'
- Set the mark to the point. If a numeric argument is supplied, the
- mark is set to that position.
+‘set-mark (C-@)’
+ Set the mark to the point. If a numeric argument is supplied, set
+ the mark to that position.
-'exchange-point-and-mark (C-x C-x)'
- Swap the point with the mark. The current cursor position is set
- to the saved position, and the old cursor position is saved as the
- mark.
+‘exchange-point-and-mark (C-x C-x)’
+ Swap the point with the mark. Set the current cursor position to
+ the saved position, then set the mark to the old cursor position.
-'character-search (C-])'
- A character is read and point is moved to the next occurrence of
- that character. A negative count searches for previous
- occurrences.
+‘character-search (C-])’
+ Read a character and move point to the next occurrence of that
+ character. A negative argument searches for previous occurrences.
-'character-search-backward (M-C-])'
- A character is read and point is moved to the previous occurrence
- of that character. A negative count searches for subsequent
+‘character-search-backward (M-C-])’
+ Read a character and move point to the previous occurrence of that
+ character. A negative argument searches for subsequent
occurrences.
-'skip-csi-sequence ()'
+‘skip-csi-sequence ()’
Read enough characters to consume a multi-key sequence such as
- those defined for keys like Home and End. Such sequences begin
- with a Control Sequence Indicator (CSI), usually ESC-[. If this
- sequence is bound to "\e[", keys producing such sequences will have
- no effect unless explicitly bound to a readline command, instead of
+ those defined for keys like Home and End. CSI sequences begin with
+ a Control Sequence Indicator (CSI), usually ESC-[. If this
+ sequence is bound to "\e[", keys producing CSI sequences will have
+ no effect unless explicitly bound to a Readline command, instead of
inserting stray characters into the editing buffer. This is
unbound by default, but usually bound to ESC-[.
-'insert-comment (M-#)'
- Without a numeric argument, the value of the 'comment-begin'
- variable is inserted at the beginning of the current line. If a
- numeric argument is supplied, this command acts as a toggle: if the
+‘insert-comment (M-#)’
+ Without a numeric argument, insert the value of the ‘comment-begin’
+ variable at the beginning of the current line. If a numeric
+ argument is supplied, this command acts as a toggle: if the
characters at the beginning of the line do not match the value of
- 'comment-begin', the value is inserted, otherwise the characters in
- 'comment-begin' are deleted from the beginning of the line. In
- either case, the line is accepted as if a newline had been typed.
+ ‘comment-begin’, insert the value; otherwise delete the characters
+ in ‘comment-begin’ from the beginning of the line. In either case,
+ the line is accepted as if a newline had been typed.
-'dump-functions ()'
+‘dump-functions ()’
Print all of the functions and their key bindings to the Readline
output stream. If a numeric argument is supplied, the output is
formatted in such a way that it can be made part of an INPUTRC
file. This command is unbound by default.
-'dump-variables ()'
+‘dump-variables ()’
Print all of the settable variables and their values to the
Readline output stream. If a numeric argument is supplied, the
output is formatted in such a way that it can be made part of an
INPUTRC file. This command is unbound by default.
-'dump-macros ()'
+‘dump-macros ()’
Print all of the Readline key sequences bound to macros and the
- strings they output. If a numeric argument is supplied, the output
- is formatted in such a way that it can be made part of an INPUTRC
- file. This command is unbound by default.
+ strings they output to the Readline output stream. If a numeric
+ argument is supplied, the output is formatted in such a way that it
+ can be made part of an INPUTRC file. This command is unbound by
+ default.
-'emacs-editing-mode (C-e)'
- When in 'vi' command mode, this causes a switch to 'emacs' editing
+‘execute-named-command (M-x)’
+ Read a bindable readline command name from the input and execute
+ the function to which it's bound, as if the key sequence to which
+ it was bound appeared in the input. If this function is supplied
+ with a numeric argument, it passes that argument to the function it
+ executes.
+
+‘emacs-editing-mode (C-e)’
+ When in ‘vi’ command mode, this causes a switch to ‘emacs’ editing
mode.
-'vi-editing-mode (M-C-j)'
- When in 'emacs' editing mode, this causes a switch to 'vi' editing
+‘vi-editing-mode (M-C-j)’
+ When in ‘emacs’ editing mode, this causes a switch to ‘vi’ editing
mode.
\1f
1.5 Readline vi Mode
====================
-While the Readline library does not have a full set of 'vi' editing
+While the Readline library does not have a full set of ‘vi’ editing
functions, it does contain enough to allow simple editing of the line.
-The Readline 'vi' mode behaves as specified in the POSIX standard.
+The Readline ‘vi’ mode behaves as specified in the ‘sh’ description in
+the POSIX standard.
- In order to switch interactively between 'emacs' and 'vi' editing
-modes, use the command 'M-C-j' (bound to emacs-editing-mode when in 'vi'
-mode and to vi-editing-mode in 'emacs' mode). The Readline default is
-'emacs' mode.
+ In order to switch interactively between ‘emacs’ and ‘vi’ editing
+modes, use the command ‘M-C-j’ (bound to emacs-editing-mode when in ‘vi’
+mode and to vi-editing-mode in ‘emacs’ mode). The Readline default is
+‘emacs’ mode.
- When you enter a line in 'vi' mode, you are already placed in
-'insertion' mode, as if you had typed an 'i'. Pressing <ESC> switches
+ When you enter a line in ‘vi’ mode, you are already placed in
+'insertion' mode, as if you had typed an ‘i’. Pressing <ESC> switches
you into 'command' mode, where you can edit the text of the line with
-the standard 'vi' movement keys, move to previous history lines with 'k'
-and subsequent lines with 'j', and so forth.
+the standard ‘vi’ movement keys, move to previous history lines with ‘k’
+and subsequent lines with ‘j’, and so forth.
This document describes the GNU Readline Library, a utility for
aiding in the consistency of user interface across discrete programs
that need to provide a command line interface.
- Copyright (C) 1988-2016 Free Software Foundation, Inc.
+ Copyright (C) 1988-2024 Free Software Foundation, Inc.
Permission is granted to make and distribute verbatim copies of this
manual provided the copyright notice and this permission notice pare
2.1 Basic Behavior
==================
-Many programs provide a command line interface, such as 'mail', 'ftp',
-and 'sh'. For such programs, the default behaviour of Readline is
+Many programs provide a command line interface, such as ‘mail’, ‘ftp’,
+and ‘sh’. For such programs, the default behaviour of Readline is
sufficient. This section describes how to use Readline in the simplest
-way possible, perhaps to replace calls in your code to 'gets()' or
-'fgets()'.
-
- The function 'readline()' prints a prompt PROMPT and then reads and
-returns a single line of text from the user. If PROMPT is 'NULL' or the
-empty string, no prompt is displayed. The line 'readline' returns is
-allocated with 'malloc()'; the caller should 'free()' the line when it
-has finished with it. The declaration for 'readline' in ANSI C is
+way possible, perhaps to replace calls in your code to ‘fgets()’.
+
+ The function ‘readline()’ prints a prompt PROMPT and then reads and
+returns a single line of text from the user. Since it's possible to
+enter characters into the line while quoting them to disable any
+Readline editing function they might normally have, this line may
+include embedded newlines and other special characters. If PROMPT is
+‘NULL’ or the empty string, ‘readline’ does not display a prompt. The
+line ‘readline’ returns is allocated with ‘malloc()’; the caller should
+‘free()’ the line when it has finished with it. The declaration for
+‘readline’ in ANSI C is
char *readline (const char *PROMPT);
So, one might say
char *line = readline ("Enter a line: ");
in order to read a line of text from the user. The line returned has
-the final newline removed, so only the text remains.
+the final newline removed, so only the text remains. This means that
+lines consisting of a newline return the empty string.
- If 'readline' encounters an 'EOF' while reading the line, and the
-line is empty at that point, then '(char *)NULL' is returned.
+ If ‘readline’ encounters an ‘EOF’ while reading the line, and the
+line is empty at that point, then ‘readline’ returns ‘(char *)NULL’.
Otherwise, the line is ended just as if a newline had been typed.
Readline performs some expansion on the PROMPT before it is displayed
-on the screen. See the description of 'rl_expand_prompt' (*note
+on the screen. See the description of ‘rl_expand_prompt’ (*note
Redisplay::) for additional details, especially if PROMPT will contain
characters that do not consume physical screen space when displayed.
If you want the user to be able to get at the line later, (with <C-p>
-for example), you must call 'add_history()' to save the line away in a
-"history" list of such lines.
+for example), you must call ‘add_history()’ to save the line away in a
+“history” list of such lines.
add_history (line);
It is preferable to avoid saving empty lines on the history list,
since users rarely have a burning need to reuse a blank line. Here is a
-function which usefully replaces the standard 'gets()' library function,
+function which usefully replaces the standard ‘gets()’ library function,
and has the advantage of no static buffer to overflow:
/* A static variable for holding the line. */
}
This function gives the user the default behaviour of <TAB>
-completion: completion on file names. If you do not want Readline to
-complete on filenames, you can change the binding of the <TAB> key with
-'rl_bind_key()'.
+completion: filename completion. If you do not want Readline to
+complete filenames, you can change the binding of the <TAB> key with
+‘rl_bind_key()’.
int rl_bind_key (int KEY, rl_command_func_t *FUNCTION);
- 'rl_bind_key()' takes two arguments: KEY is the character that you
+ ‘rl_bind_key()’ takes two arguments: KEY is the character that you
want to bind, and FUNCTION is the address of the function to call when
-KEY is pressed. Binding <TAB> to 'rl_insert()' makes <TAB> insert
-itself. 'rl_bind_key()' returns non-zero if KEY is not a valid ASCII
+KEY is pressed. Binding <TAB> to ‘rl_insert()’ makes <TAB> insert
+itself. ‘rl_bind_key()’ returns non-zero if KEY is not a valid ASCII
character code (between 0 and 255).
Thus, to disable the default <TAB> behavior, the following suffices:
rl_bind_key ('\t', rl_insert);
This code should be executed once at the start of your program; you
-might write a function called 'initialize_readline()' which performs
+might write a function called ‘initialize_readline()’ which performs
this and other desired initializations, such as installing custom
completers (*note Custom Completers::).
Readline provides many functions for manipulating the text of the line,
but it isn't possible to anticipate the needs of all programs. This
section describes the various functions and variables defined within the
-Readline library which allow a user program to add customized
-functionality to Readline.
+Readline library which allow a program to add customized functionality
+to Readline.
Before declaring any functions that customize Readline's behavior, or
using any functionality Readline provides in other code, an application
-writer should include the file '<readline/readline.h>' in any file that
-uses Readline's features. Since some of the definitions in 'readline.h'
-use the 'stdio' library, the file '<stdio.h>' should be included before
-'readline.h'.
+writer should include the file ‘<readline/readline.h>’ in any file that
+uses Readline's features. Since some of the definitions in ‘readline.h’
+use the ‘stdio’ library, the program should include the file ‘<stdio.h>’
+before ‘readline.h’.
- 'readline.h' defines a C preprocessor variable that should be treated
-as an integer, 'RL_READLINE_VERSION', which may be used to conditionally
+ ‘readline.h’ defines a C preprocessor variable that should be treated
+as an integer, ‘RL_READLINE_VERSION’, which may be used to conditionally
compile application code depending on the installed Readline version.
The value is a hexadecimal encoding of the major and minor version
numbers of the library, of the form 0xMMMM. MM is the two-digit major
version number; MM is the two-digit minor version number. For Readline
-4.2, for example, the value of 'RL_READLINE_VERSION' would be '0x0402'.
+4.2, for example, the value of ‘RL_READLINE_VERSION’ would be ‘0x0402’.
* Menu:
prototyped arguments and return values.
For instance, say we want to declare a variable FUNC as a pointer to
-a function which takes two 'int' arguments and returns an 'int' (this is
+a function which takes two ‘int’ arguments and returns an ‘int’ (this is
the type of all of the Readline bindable functions). Instead of the
classic C declaration
- 'int (*func)();'
+ ‘int (*func)();’
or the ANSI-C style declaration
- 'int (*func)(int, int);'
+ ‘int (*func)(int, int);’
we may write
- 'rl_command_func_t *func;'
+ ‘rl_command_func_t *func;’
The full list of function pointer types available is
-'typedef int rl_command_func_t (int, int);'
+‘typedef int rl_command_func_t (int, int);’
-'typedef char *rl_compentry_func_t (const char *, int);'
+‘typedef char *rl_compentry_func_t (const char *, int);’
-'typedef char **rl_completion_func_t (const char *, int, int);'
+‘typedef char **rl_completion_func_t (const char *, int, int);’
-'typedef char *rl_quote_func_t (char *, int, char *);'
+‘typedef char *rl_quote_func_t (char *, int, char *);’
-'typedef char *rl_dequote_func_t (char *, int);'
+‘typedef char *rl_dequote_func_t (char *, int);’
-'typedef int rl_compignore_func_t (char **);'
+‘typedef int rl_compignore_func_t (char **);’
-'typedef void rl_compdisp_func_t (char **, int, int);'
+‘typedef void rl_compdisp_func_t (char **, int, int);’
-'typedef int rl_hook_func_t (void);'
+‘typedef void rl_macro_print_func_t (const char *, const char *, int, const char *);’
-'typedef int rl_getc_func_t (FILE *);'
+‘typedef int rl_hook_func_t (void);’
-'typedef int rl_linebuf_func_t (char *, int);'
+‘typedef int rl_getc_func_t (FILE *);’
-'typedef int rl_intfunc_t (int);'
-'#define rl_ivoidfunc_t rl_hook_func_t'
-'typedef int rl_icpfunc_t (char *);'
-'typedef int rl_icppfunc_t (char **);'
+‘typedef int rl_linebuf_func_t (char *, int);’
-'typedef void rl_voidfunc_t (void);'
-'typedef void rl_vintfunc_t (int);'
-'typedef void rl_vcpfunc_t (char *);'
-'typedef void rl_vcppfunc_t (char **);'
+‘typedef int rl_intfunc_t (int);’
+‘#define rl_ivoidfunc_t rl_hook_func_t’
+‘typedef int rl_icpfunc_t (char *);’
+‘typedef int rl_icppfunc_t (char **);’
+
+‘typedef void rl_voidfunc_t (void);’
+‘typedef void rl_vintfunc_t (int);’
+‘typedef void rl_vcpfunc_t (char *);’
+‘typedef void rl_vcppfunc_t (char **);’
+
+The ‘rltypedefs.h’ file has more documentation for these types.
\1f
File: readline.info, Node: Function Writing, Prev: Readline Typedefs, Up: Custom Functions
calling conventions for keyboard-invoked functions, and the names of the
variables that describe the current state of the line read so far.
- The calling sequence for a command 'foo' looks like
+ The calling sequence for a command ‘foo’ looks like
int foo (int count, int key)
that it can be passed a negative argument.
A command function should return 0 if its action completes
-successfully, and a value greater than zero if some error occurs. This
-is the convention obeyed by all of the builtin Readline bindable command
-functions.
+successfully, and a value greater than zero if some error occurs. All
+of the builtin Readline bindable command functions obey this convention.
\1f
File: readline.info, Node: Readline Variables, Next: Readline Convenience Functions, Prev: Custom Functions, Up: Programming with GNU Readline
-- Variable: char * rl_line_buffer
This is the line gathered so far. You are welcome to modify the
contents of the line, but see *note Allowing Undoing::. The
- function 'rl_extend_line_buffer' is available to increase the
- memory allocated to 'rl_line_buffer'.
+ function ‘rl_extend_line_buffer’ will increase the memory allocated
+ to ‘rl_line_buffer’.
-- Variable: int rl_point
- The offset of the current cursor position in 'rl_line_buffer' (the
+ The offset of the current cursor position in ‘rl_line_buffer’ (the
_point_).
-- Variable: int rl_end
- The number of characters present in 'rl_line_buffer'. When
- 'rl_point' is at the end of the line, 'rl_point' and 'rl_end' are
+ The number of characters present in ‘rl_line_buffer’. When
+ ‘rl_point’ is at the end of the line, ‘rl_point’ and ‘rl_end’ are
equal.
-- Variable: int rl_mark
The MARK (saved position) in the current line. If set, the mark
- and point define a _region_.
+ and point define a _region_. Some Readline commands set the mark
+ as part of operating; users can also set the mark explicitly.
-- Variable: int rl_done
Setting this to a non-zero value causes Readline to return the
- current line immediately.
+ current line immediately. Readline will set this variable when it
+ has read a key sequence bound to ‘accept-line’ and is about to
+ return the line to the caller.
+
+ -- Variable: int rl_eof_found
+ Readline will set this variable when it has read an EOF character
+ (e.g., the stty ‘EOF’ character) on an empty line or has
+ encountered a read error or EOF and is about to return a NULL line
+ to the caller.
-- Variable: int rl_num_chars_to_read
- Setting this to a positive value before calling 'readline()' causes
+ Setting this to a positive value before calling ‘readline()’ causes
Readline to return after accepting that many characters, rather
- than reading up to a character bound to 'accept-line'.
+ than reading up to a character bound to ‘accept-line’.
-- Variable: int rl_pending_input
Setting this to a value makes it the next keystroke read. This is
-- Variable: int rl_erase_empty_line
Setting this to a non-zero value causes Readline to completely
erase the current line, including any prompt, any time a newline is
- typed as the only character on an otherwise-empty line. The cursor
- is moved to the beginning of the newly-blank line.
+ typed as the only character on an otherwise-empty line. This moves
+ the cursor to the beginning of the newly-blank line.
-- Variable: char * rl_prompt
The prompt Readline uses. This is set from the argument to
- 'readline()', and should not be assigned to directly. The
- 'rl_set_prompt()' function (*note Redisplay::) may be used to
- modify the prompt string after calling 'readline()'.
+ ‘readline()’, and should not be assigned to directly. The
+ ‘rl_set_prompt()’ function (*note Redisplay::) may be used to
+ modify the prompt string after calling ‘readline()’. Readline
+ performs some prompt expansions and analyzes the prompt for line
+ breaks, so ‘rl_set_prompt()’ is preferred.
-- Variable: char * rl_display_prompt
The string displayed as the prompt. This is usually identical to
-- Variable: int rl_already_prompted
If an application wishes to display the prompt itself, rather than
- have Readline do it the first time 'readline()' is called, it
+ have Readline do it the first time ‘readline()’ is called, it
should set this variable to a non-zero value after displaying the
prompt. The prompt must also be passed as the argument to
- 'readline()' so the redisplay functions can update the display
+ ‘readline()’ so the redisplay functions can update the display
properly. The calling application is responsible for managing the
value; Readline never sets it.
-- Variable: const char * rl_library_version
- The version number of this revision of the library.
+ The version number of this revision of the Readline library, as a
+ string (e.g., "4.2").
-- Variable: int rl_readline_version
An integer encoding the current version of the library. The
encoding is of the form 0xMMMM, where MM is the two-digit major
version number, and MM is the two-digit minor version number. For
- example, for Readline-4.2, 'rl_readline_version' would have the
+ example, for Readline-4.2, ‘rl_readline_version’ would have the
value 0x0402.
-- Variable: int rl_gnu_readline_p
- Always set to 1, denoting that this is GNU readline rather than
+ Always set to 1, denoting that this is GNU Readline rather than
some emulation.
-- Variable: const char * rl_terminal_name
The terminal type, used for initialization. If not set by the
- application, Readline sets this to the value of the 'TERM'
- environment variable the first time it is called.
+ application, Readline sets this to the value of the ‘TERM’
+ environment variable the first time it is called. Readline uses
+ this to look up the terminal capabilities it needs in the terminfo
+ database.
-- Variable: const char * rl_readline_name
This variable is set to a unique name by each application using
(*note Conditional Init Constructs::).
-- Variable: FILE * rl_instream
- The stdio stream from which Readline reads input. If 'NULL',
+ The stdio stream from which Readline reads input. If ‘NULL’,
Readline defaults to STDIN.
-- Variable: FILE * rl_outstream
- The stdio stream to which Readline performs output. If 'NULL',
+ The stdio stream to which Readline performs output. If ‘NULL’,
Readline defaults to STDOUT.
-- Variable: int rl_prefer_env_winsize
- If non-zero, Readline gives values found in the 'LINES' and
- 'COLUMNS' environment variables greater precedence than values
+ If non-zero, Readline gives values found in the ‘LINES’ and
+ ‘COLUMNS’ environment variables greater precedence than values
fetched from the kernel when computing the screen dimensions.
-- Variable: rl_command_func_t * rl_last_func
- The address of the last command function Readline executed. May be
- used to test whether or not a function is being executed twice in
- succession, for example.
+ The address of the last command function Readline executed. This
+ may be used to test whether or not a function is being executed
+ twice in succession, for example.
-- Variable: rl_hook_func_t * rl_startup_hook
If non-zero, this is the address of a function to call just before
- 'readline' prints the first prompt.
+ ‘readline’ prints the first prompt.
-- Variable: rl_hook_func_t * rl_pre_input_hook
If non-zero, this is the address of a function to call after the
- first prompt has been printed and just before 'readline' starts
+ first prompt has been printed and just before ‘readline’ starts
reading input characters.
-- Variable: rl_hook_func_t * rl_event_hook
-- Variable: rl_getc_func_t * rl_getc_function
If non-zero, Readline will call indirectly through this pointer to
get a character from the input stream. By default, it is set to
- 'rl_getc', the default Readline character input function (*note
- Character Input::). In general, an application that sets
- RL_GETC_FUNCTION should consider setting RL_INPUT_AVAILABLE_HOOK as
- well.
+ ‘rl_getc’, the Readline character input function (*note Character
+ Input::). In general, an application that sets RL_GETC_FUNCTION
+ should consider setting RL_INPUT_AVAILABLE_HOOK as well.
-- Variable: rl_hook_func_t * rl_signal_event_hook
If non-zero, this is the address of a function to call if a read
- system call is interrupted when Readline is reading terminal input.
+ system call is interrupted by a signal when Readline is reading
+ terminal input.
+
+ -- Variable: rl_hook_func_t * rl_timeout_event_hook
+ If non-zero, this is the address of a function to call if Readline
+ times out while reading input.
-- Variable: rl_hook_func_t * rl_input_available_hook
If non-zero, Readline will use this function's return value when it
needs to determine whether or not there is available input on the
- current input source. The default hook checks 'rl_instream'; if an
+ current input source. The default hook checks ‘rl_instream’; if an
application is using a different input source, it should set the
hook appropriately. Readline queries for available input when
implementing intra-key-sequence timeouts during input and
- incremental searches. This may use an application-specific timeout
- before returning a value; Readline uses the value passed to
- 'rl_set_keyboard_input_timeout()' or the value of the user-settable
- KEYSEQ-TIMEOUT variable. This is designed for use by applications
- using Readline's callback interface (*note Alternate Interface::),
- which may not use the traditional 'read(2)' and file descriptor
- interface, or other applications using a different input mechanism.
- If an application uses an input mechanism or hook that can
- potentially exceed the value of KEYSEQ-TIMEOUT, it should increase
- the timeout or set this hook appropriately even when not using the
- callback interface. In general, an application that sets
- RL_GETC_FUNCTION should consider setting RL_INPUT_AVAILABLE_HOOK as
- well.
+ incremental searches. This function must return zero if there is
+ no input available, and non-zero if input is available. This may
+ use an application-specific timeout before returning a value;
+ Readline uses the value passed to ‘rl_set_keyboard_input_timeout()’
+ or the value of the user-settable KEYSEQ-TIMEOUT variable. This is
+ designed for use by applications using Readline's callback
+ interface (*note Alternate Interface::), which may not use the
+ traditional ‘read(2)’ and file descriptor interface, or other
+ applications using a different input mechanism. If an application
+ uses an input mechanism or hook that can potentially exceed the
+ value of KEYSEQ-TIMEOUT, it should increase the timeout or set this
+ hook appropriately even when not using the callback interface. In
+ general, an application that sets RL_GETC_FUNCTION should consider
+ setting RL_INPUT_AVAILABLE_HOOK as well.
-- Variable: rl_voidfunc_t * rl_redisplay_function
- If non-zero, Readline will call indirectly through this pointer to
- update the display with the current contents of the editing buffer.
- By default, it is set to 'rl_redisplay', the default Readline
+ Readline will call indirectly through this pointer to update the
+ display with the current contents of the editing buffer. By
+ default, it is set to ‘rl_redisplay’, the default Readline
redisplay function (*note Redisplay::).
-- Variable: rl_vintfunc_t * rl_prep_term_function
If non-zero, Readline will call indirectly through this pointer to
initialize the terminal. The function takes a single argument, an
- 'int' flag that says whether or not to use eight-bit characters.
- By default, this is set to 'rl_prep_terminal' (*note Terminal
+ ‘int’ flag that says whether or not to use eight-bit characters.
+ By default, this is set to ‘rl_prep_terminal’ (*note Terminal
Management::).
-- Variable: rl_voidfunc_t * rl_deprep_term_function
If non-zero, Readline will call indirectly through this pointer to
reset the terminal. This function should undo the effects of
- 'rl_prep_term_function'. By default, this is set to
- 'rl_deprep_terminal' (*note Terminal Management::).
+ ‘rl_prep_term_function’. By default, this is set to
+ ‘rl_deprep_terminal’ (*note Terminal Management::).
+
+ -- Variable: void rl_macro_display_hook
+ If set, this points to a function that ‘rl_macro_dumper’ will call
+ to display a key sequence bound to a macro. It is called with the
+ key sequence, the "untranslated" macro value (i.e., with backslash
+ escapes included, as when passed to ‘rl_macro_bind’), the
+ ‘readable’ argument passed to ‘rl_macro_dumper’, and any prefix to
+ display before the key sequence.
-- Variable: Keymap rl_executing_keymap
This variable is set to the keymap (*note Keymaps::) in which the
- currently executing readline function was found.
+ currently executing Readline function was found.
-- Variable: Keymap rl_binding_keymap
This variable is set to the keymap (*note Keymaps::) in which the
-- Variable: int rl_readline_state
A variable with bit values that encapsulate the current Readline
- state. A bit is set with the 'RL_SETSTATE' macro, and unset with
- the 'RL_UNSETSTATE' macro. Use the 'RL_ISSTATE' macro to test
+ state. A bit is set with the ‘RL_SETSTATE’ macro, and unset with
+ the ‘RL_UNSETSTATE’ macro. Use the ‘RL_ISSTATE’ macro to test
whether a particular state bit is set. Current state bits include:
- 'RL_STATE_NONE'
+ ‘RL_STATE_NONE’
Readline has not yet been called, nor has it begun to
initialize.
- 'RL_STATE_INITIALIZING'
+ ‘RL_STATE_INITIALIZING’
Readline is initializing its internal data structures.
- 'RL_STATE_INITIALIZED'
+ ‘RL_STATE_INITIALIZED’
Readline has completed its initialization.
- 'RL_STATE_TERMPREPPED'
+ ‘RL_STATE_TERMPREPPED’
Readline has modified the terminal modes to do its own input
and redisplay.
- 'RL_STATE_READCMD'
+ ‘RL_STATE_READCMD’
Readline is reading a command from the keyboard.
- 'RL_STATE_METANEXT'
+ ‘RL_STATE_METANEXT’
Readline is reading more input after reading the meta-prefix
character.
- 'RL_STATE_DISPATCHING'
+ ‘RL_STATE_DISPATCHING’
Readline is dispatching to a command.
- 'RL_STATE_MOREINPUT'
+ ‘RL_STATE_MOREINPUT’
Readline is reading more input while executing an editing
command.
- 'RL_STATE_ISEARCH'
+ ‘RL_STATE_ISEARCH’
Readline is performing an incremental history search.
- 'RL_STATE_NSEARCH'
+ ‘RL_STATE_NSEARCH’
Readline is performing a non-incremental history search.
- 'RL_STATE_SEARCH'
+ ‘RL_STATE_SEARCH’
Readline is searching backward or forward through the history
for a string.
- 'RL_STATE_NUMERICARG'
+ ‘RL_STATE_NUMERICARG’
Readline is reading a numeric argument.
- 'RL_STATE_MACROINPUT'
+ ‘RL_STATE_MACROINPUT’
Readline is currently getting its input from a
previously-defined keyboard macro.
- 'RL_STATE_MACRODEF'
+ ‘RL_STATE_MACRODEF’
Readline is currently reading characters defining a keyboard
macro.
- 'RL_STATE_OVERWRITE'
+ ‘RL_STATE_OVERWRITE’
Readline is in overwrite mode.
- 'RL_STATE_COMPLETING'
+ ‘RL_STATE_COMPLETING’
Readline is performing word completion.
- 'RL_STATE_SIGHANDLER'
+ ‘RL_STATE_SIGHANDLER’
Readline is currently executing the readline signal handler.
- 'RL_STATE_UNDOING'
+ ‘RL_STATE_UNDOING’
Readline is performing an undo.
- 'RL_STATE_INPUTPENDING'
+ ‘RL_STATE_INPUTPENDING’
Readline has input pending due to a call to
- 'rl_execute_next()'.
- 'RL_STATE_TTYCSAVED'
+ ‘rl_execute_next()’.
+ ‘RL_STATE_TTYCSAVED’
Readline has saved the values of the terminal's special
characters.
- 'RL_STATE_CALLBACK'
+ ‘RL_STATE_CALLBACK’
Readline is currently using the alternate (callback) interface
(*note Alternate Interface::).
- 'RL_STATE_VIMOTION'
+ ‘RL_STATE_VIMOTION’
Readline is reading the argument to a vi-mode "motion"
command.
- 'RL_STATE_MULTIKEY'
+ ‘RL_STATE_MULTIKEY’
Readline is reading a multiple-keystroke command.
- 'RL_STATE_VICMDONCE'
+ ‘RL_STATE_VICMDONCE’
Readline has entered vi command (movement) mode at least one
- time during the current call to 'readline()'.
- 'RL_STATE_DONE'
- Readline has read a key sequence bound to 'accept-line' and is
+ time during the current call to ‘readline()’.
+ ‘RL_STATE_DONE’
+ Readline has read a key sequence bound to ‘accept-line’ and is
about to return the line to the caller.
+ ‘RL_STATE_TIMEOUT’
+ Readline has timed out (it did not receive a line or specified
+ number of characters before the timeout duration specified by
+ ‘rl_set_timeout’ elapsed) and is returning that status to the
+ caller.
+ ‘RL_STATE_EOF’
+ Readline has read an EOF character (e.g., the stty ‘EOF’
+ character) or encountered a read error or EOF and is about to
+ return a NULL line to the caller.
-- Variable: int rl_explicit_arg
Set to a non-zero value if an explicit numeric argument was
- specified by the user. Only valid in a bindable command function.
+ specified by the user. It is only valid in a bindable command
+ function.
-- Variable: int rl_numeric_arg
Set to the value of any numeric argument explicitly specified by
- the user before executing the current Readline function. Only
- valid in a bindable command function.
+ the user before executing the current Readline function. It is
+ only valid in a bindable command function.
-- Variable: int rl_editing_mode
Set to a value denoting Readline's current editing mode. A value
of 1 means Readline is currently in emacs mode; 0 means that vi
- mode is active.
+ mode is active. This determines the current keymap and key
+ bindings.
\1f
File: readline.info, Node: Readline Convenience Functions, Next: Readline Signal Handling, Prev: Readline Variables, Up: Programming with GNU Readline
key sequences.
* Allowing Undoing:: How to make your functions undoable.
* Redisplay:: Functions to control line display.
-* Modifying Text:: Functions to modify 'rl_line_buffer'.
+* Modifying Text:: Functions to modify ‘rl_line_buffer’.
* Character Input:: Functions to read keyboard input.
* Terminal Management:: Functions to manage terminal settings.
* Utility Functions:: Generally useful functions and hooks.
2.4.1 Naming a Function
-----------------------
-The user can dynamically change the bindings of keys while using
-Readline. This is done by representing the function with a descriptive
-name. The user is able to type the descriptive name when referring to
-the function. Thus, in an init file, one might find
+Readline has a descriptive string name for every function a user can
+bind to a key sequence, so users can dynamically change the bindings
+associated with key sequences while using Readline, using the
+descriptive name when referring to the function. Thus, in an init file,
+one might find
Meta-Rubout: backward-kill-word
This binds the keystroke <Meta-Rubout> to the function
-_descriptively_ named 'backward-kill-word'. You, as the programmer,
+_descriptively_ named ‘backward-kill-word’. As the programmer, you
should bind the functions you write to descriptive names as well.
Readline provides a function for doing that:
-- Function: int rl_add_defun (const char *name, rl_command_func_t
*function, int key)
Add NAME to the list of named functions. Make FUNCTION be the
- function that gets called. If KEY is not -1, then bind it to
- FUNCTION using 'rl_bind_key()'.
+ function that gets called by key sequences that bind to NAME. If
+ KEY is not -1, then bind it to FUNCTION using ‘rl_bind_key()’.
Using this function alone is sufficient for most applications. It is
the recommended way to add a few functions to the default functions that
2.4.2 Selecting a Keymap
------------------------
-Key bindings take place on a "keymap". The keymap is the association
+Key bindings take place on a “keymap”. The keymap is the association
between the keys that the user types and the functions that get run.
You can make your own keymaps, copy existing keymaps, and tell Readline
which keymap to use.
-- Function: Keymap rl_make_bare_keymap (void)
Returns a new, empty keymap. The space for the keymap is allocated
- with 'malloc()'; the caller should free it by calling
- 'rl_free_keymap()' when done.
+ with ‘malloc()’; the caller should free it by calling
+ ‘rl_free_keymap()’ when done.
-- Function: Keymap rl_copy_keymap (Keymap map)
Return a new keymap which is a copy of MAP.
-- Function: void rl_free_keymap (Keymap keymap)
Free all storage associated with KEYMAP. This calls
- 'rl_discard_keymap' to free subordindate keymaps and macros.
+ ‘rl_discard_keymap’ to free subordindate keymaps and macros.
-- Function: int rl_empty_keymap (Keymap keymap)
Return non-zero if there are no keys bound to functions in KEYMAP;
zero if there are any keys bound.
Readline has several internal keymaps. These functions allow you to
-change which keymap is active.
+change which keymap is active. This is one way to switch editing modes,
+for example.
-- Function: Keymap rl_get_keymap (void)
Returns the currently active keymap.
-- Function: Keymap rl_get_keymap_by_name (const char *name)
Return the keymap matching NAME. NAME is one which would be
- supplied in a 'set keymap' inputrc line (*note Readline Init
+ supplied in a ‘set keymap’ inputrc line (*note Readline Init
File::).
-- Function: char * rl_get_keymap_name (Keymap keymap)
Return the name matching KEYMAP. NAME is one which would be
- supplied in a 'set keymap' inputrc line (*note Readline Init
+ supplied in a ‘set keymap’ inputrc line (*note Readline Init
File::).
+ -- Function: int rl_set_keymap_name (const char *name, Keymap keymap)
+ Set the name of KEYMAP. This name will then be "registered" and
+ available for use in a ‘set keymap’ inputrc directive *note
+ Readline Init File::). The NAME may not be one of Readline's
+ builtin keymap names; you may not add a different name for one of
+ Readline's builtin keymaps. You may replace the name associated
+ with a given keymap by calling this function more than once with
+ the same KEYMAP argument. You may associate a registered NAME with
+ a new keymap by calling this function more than once with the same
+ NAME argument. There is no way to remove a named keymap once the
+ name has been registered. Readline will make a copy of NAME. The
+ return value is greater than zero unless NAME is one of Readline's
+ builtin keymap names or KEYMAP is one of Readline's builtin
+ keymaps.
+
\1f
File: readline.info, Node: Binding Keys, Next: Associating Function Names and Bindings, Prev: Keymaps, Up: Readline Convenience Functions
2.4.3 Binding Keys
------------------
-Key sequences are associate with functions through the keymap. Readline
-has several internal keymaps: 'emacs_standard_keymap',
-'emacs_meta_keymap', 'emacs_ctlx_keymap', 'vi_movement_keymap', and
-'vi_insertion_keymap'. 'emacs_standard_keymap' is the default, and the
+Key sequences are associated with functions through the keymap.
+Readline has several internal keymaps: ‘emacs_standard_keymap’,
+‘emacs_meta_keymap’, ‘emacs_ctlx_keymap’, ‘vi_movement_keymap’, and
+‘vi_insertion_keymap’. ‘emacs_standard_keymap’ is the default, and the
examples in this manual assume that.
- Since 'readline()' installs a set of default key bindings the first
+ Since ‘readline()’ installs a set of default key bindings the first
time it is called, there is always the danger that a custom binding
-installed before the first call to 'readline()' will be overridden. An
-alternate mechanism is to install custom key bindings in an
-initialization function assigned to the 'rl_startup_hook' variable
-(*note Readline Variables::).
+installed before the first call to ‘readline()’ will be overridden. An
+alternate mechanism that can avoid this is to install custom key
+bindings in an initialization function assigned to the ‘rl_startup_hook’
+variable (*note Readline Variables::).
These functions manage key bindings.
non-zero in the case of an invalid KEY or if KEY is already bound.
-- Function: int rl_unbind_key (int key)
- Bind KEY to the null function in the currently active keymap.
- Returns non-zero in case of error.
+ Bind KEY to the null function in the currently active keymap. This
+ is not the same as binding it to ‘self-insert’. Returns non-zero
+ in case of error.
-- Function: int rl_unbind_key_in_map (int key, Keymap map)
- Bind KEY to the null function in MAP. Returns non-zero in case of
- error.
+ Bind KEY to the null function in MAP. This is not the same as
+ binding it to ‘self-insert’. Returns non-zero in case of error.
-- Function: int rl_unbind_function_in_map (rl_command_func_t
*function, Keymap map)
-- Function: int rl_bind_keyseq_in_map (const char *keyseq,
rl_command_func_t *function, Keymap map)
Bind the key sequence represented by the string KEYSEQ to the
- function FUNCTION. This makes new keymaps as necessary. Initial
- bindings are performed in MAP. The return value is non-zero if
- KEYSEQ is invalid.
+ function FUNCTION in MAP. This makes new keymaps as necessary.
+ Initial bindings are performed in MAP. The return value is
+ non-zero if KEYSEQ is invalid.
-- Function: int rl_set_key (const char *keyseq, rl_command_func_t
*function, Keymap map)
- Equivalent to 'rl_bind_keyseq_in_map'.
+ Equivalent to ‘rl_bind_keyseq_in_map’.
-- Function: int rl_bind_keyseq_if_unbound (const char *keyseq,
rl_command_func_t *function)
*data, Keymap map)
Bind the key sequence represented by the string KEYSEQ to the
arbitrary pointer DATA. TYPE says what kind of data is pointed to
- by DATA; this can be a function ('ISFUNC'), a macro ('ISMACR'), or
- a keymap ('ISKMAP'). This makes new keymaps as necessary. The
- initial keymap in which to do bindings is MAP.
+ by DATA; this can be a function (‘ISFUNC’), a macro (‘ISMACR’), or
+ a keymap (‘ISKMAP’). This makes new keymaps as necessary. The
+ initial keymap in which to do bindings is MAP. Returns non-zero in
+ the case of an invalid KEYSEQ, zero otherwise.
-- Function: int rl_parse_and_bind (char *line)
- Parse LINE as if it had been read from the 'inputrc' file and
+ Parse LINE as if it had been read from the ‘inputrc’ file and
perform any key bindings and variable assignments found (*note
Readline Init File::).
associate a new function name with an arbitrary function.
-- Function: rl_command_func_t * rl_named_function (const char *name)
- Return the function with name NAME.
+ Return the function with name NAME. NAME is a descriptive name
+ users might use in a key binding.
-- Function: rl_command_func_t * rl_function_of_keyseq (const char
*keyseq, Keymap map, int *type)
Return the function invoked by KEYSEQ in keymap MAP. If MAP is
- 'NULL', the current keymap is used. If TYPE is not 'NULL', the
- type of the object is returned in the 'int' variable it points to
- (one of 'ISFUNC', 'ISKMAP', or 'ISMACR').
+ ‘NULL’, this uses the current keymap. If TYPE is not ‘NULL’, this
+ returns the type of the object in the ‘int’ variable it points to
+ (one of ‘ISFUNC’, ‘ISKMAP’, or ‘ISMACR’). It takes a "translated"
+ key sequence and should not be used if the key sequence can include
+ NUL.
+
+ -- Function: rl_command_func_t * rl_function_of_keyseq_len (const char
+ *keyseq, size_t len, Keymap map, int *type)
+ Return the function invoked by KEYSEQ of length LEN in keymap MAP.
+ Equivalent to ‘rl_function_of_keyseq’ with the addition of the LEN
+ parameter. It takes a "translated" key sequence and should be used
+ if the key sequence can include NUL.
+
+ -- Function: int rl_trim_arg_from_keyseq (const char *keyseq, size_t
+ len, Keymap map)
+ If there is a numeric argument at the beginning of KEYSEQ, possibly
+ including digits, return the index of the first character in KEYSEQ
+ following the numeric argument. This can be used to skip over the
+ numeric argument (which is available as ‘rl_numeric_arg’) while
+ traversing the key sequence that invoked the current command.
-- Function: char ** rl_invoking_keyseqs (rl_command_func_t *function)
Return an array of strings representing the key sequences used to
Return an array of strings representing the key sequences used to
invoke FUNCTION in the keymap MAP.
+ -- Function: void rl_print_keybinding (const char *name, Keymap map,
+ int readable)
+ Print key sequences bound to Readline function name NAME in keymap
+ MAP. If MAP is NULL, this uses the current keymap. If READABLE is
+ non-zero, the list is formatted in such a way that it can be made
+ part of an ‘inputrc’ file and re-read to recreate the key binding.
+
-- Function: void rl_function_dumper (int readable)
- Print the readline function names and the key sequences currently
- bound to them to 'rl_outstream'. If READABLE is non-zero, the list
- is formatted in such a way that it can be made part of an 'inputrc'
+ Print the Readline function names and the key sequences currently
+ bound to them to ‘rl_outstream’. If READABLE is non-zero, the list
+ is formatted in such a way that it can be made part of an ‘inputrc’
file and re-read.
-- Function: void rl_list_funmap_names (void)
Print the names of all bindable Readline functions to
- 'rl_outstream'.
+ ‘rl_outstream’.
-- Function: const char ** rl_funmap_names (void)
Return a NULL terminated array of known function names. The array
is sorted. The array itself is allocated, but not the strings
inside. You should free the array, but not the pointers, using
- 'free' or 'rl_free' when you are done.
+ ‘free’ or ‘rl_free’ when you are done.
-- Function: int rl_add_funmap_entry (const char *name,
rl_command_func_t *function)
Add NAME to the list of bindable Readline command names, and make
- FUNCTION the function to be called when NAME is invoked.
+ FUNCTION the function to be called when NAME is invoked. This
+ returns the index of the newly-added NAME in the array of function
+ names.
\1f
File: readline.info, Node: Allowing Undoing, Next: Redisplay, Prev: Associating Function Names and Bindings, Up: Readline Convenience Functions
----------------------
Supporting the undo command is a painless thing, and makes your
-functions much more useful. It is certainly easy to try something if
+functions much more useful. It is certainly easier to try something if
you know you can undo it.
If your function simply inserts text once, or deletes text once, and
-uses 'rl_insert_text()' or 'rl_delete_text()' to do it, then undoing is
-already done for you automatically.
+uses ‘rl_insert_text()’ or ‘rl_delete_text()’ to do it, then Readline
+does the undoing for you automatically.
If you do multiple insertions or multiple deletions, or any
combination of these operations, you should group them together into one
-operation. This is done with 'rl_begin_undo_group()' and
-'rl_end_undo_group()'.
+operation. This is done with ‘rl_begin_undo_group()’ and
+‘rl_end_undo_group()’.
- The types of events that can be undone are:
+ The types of events Readline can undo are:
enum undo_code { UNDO_DELETE, UNDO_INSERT, UNDO_BEGIN, UNDO_END };
- Notice that 'UNDO_DELETE' means to insert some text, and
-'UNDO_INSERT' means to delete some text. That is, the undo code tells
-what to undo, not how to undo it. 'UNDO_BEGIN' and 'UNDO_END' are tags
-added by 'rl_begin_undo_group()' and 'rl_end_undo_group()'.
+ Notice that ‘UNDO_DELETE’ means to insert some text, and
+‘UNDO_INSERT’ means to delete some text. That is, the undo code tells
+what to undo, not how to undo it. ‘UNDO_BEGIN’ and ‘UNDO_END’ are tags
+added by ‘rl_begin_undo_group()’ and ‘rl_end_undo_group()’; they are how
+Readline delimits groups of commands that should be undone together.
-- Function: int rl_begin_undo_group (void)
Begins saving undo information in a group construct. The undo
- information usually comes from calls to 'rl_insert_text()' and
- 'rl_delete_text()', but could be the result of calls to
- 'rl_add_undo()'.
+ information usually comes from calls to ‘rl_insert_text()’ and
+ ‘rl_delete_text()’, but could be the result of calls to
+ ‘rl_add_undo()’.
-- Function: int rl_end_undo_group (void)
- Closes the current undo group started with 'rl_begin_undo_group
- ()'. There should be one call to 'rl_end_undo_group()' for each
- call to 'rl_begin_undo_group()'.
+ Closes the current undo group started with ‘rl_begin_undo_group()’.
+ There should be one call to ‘rl_end_undo_group()’ for each call to
+ ‘rl_begin_undo_group()’.
-- Function: void rl_add_undo (enum undo_code what, int start, int end,
char *text)
Free the existing undo list.
-- Function: int rl_do_undo (void)
- Undo the first thing on the undo list. Returns '0' if there was
+ Undo the first thing on the undo list. Returns ‘0’ if there was
nothing to undo, non-zero if something was undone.
Finally, if you neither insert nor delete text, but directly modify
-the existing text (e.g., change its case), call 'rl_modifying()' once,
+the existing text (e.g., change its case), call ‘rl_modifying()’ once,
just before you modify the text. You must supply the indices of the
-text range that you are going to modify.
+text range that you are going to modify. Readline will create an undo
+group for you.
-- Function: int rl_modifying (int start, int end)
Tell Readline to save the text between START and END as a single
-- Function: void rl_redisplay (void)
Change what's displayed on the screen to reflect the current
- contents of 'rl_line_buffer'.
+ contents of ‘rl_line_buffer’.
-- Function: int rl_forced_update_display (void)
Force the line to be updated and redisplayed, whether or not
Move the cursor to the start of the next screen line.
-- Function: int rl_show_char (int c)
- Display character C on 'rl_outstream'. If Readline has not been
+ Display character C on ‘rl_outstream’. If Readline has not been
set to display meta characters directly, this will convert meta
characters to a meta-prefixed key sequence. This is intended for
use by applications which wish to do their own redisplay.
-- Function: int rl_message (const char *, ...)
- The arguments are a format string as would be supplied to 'printf',
- possibly containing conversion specifications such as '%d', and any
+ The arguments are a format string as would be supplied to ‘printf’,
+ possibly containing conversion specifications such as ‘%d’, and any
additional arguments necessary to satisfy the conversion
- specifications. The resulting string is displayed in the "echo
- area". The echo area is also used to display numeric arguments and
- search strings. You should call 'rl_save_prompt' to save the
+ specifications. The resulting string is displayed in the “echo
+ area”. The echo area is also used to display numeric arguments and
+ search strings. You should call ‘rl_save_prompt’ to save the
prompt information before calling this function.
-- Function: int rl_clear_message (void)
Clear the message in the echo area. If the prompt was saved with a
- call to 'rl_save_prompt' before the last call to 'rl_message', call
- 'rl_restore_prompt' before calling this function.
+ call to ‘rl_save_prompt’ before the last call to ‘rl_message’, you
+ must call ‘rl_restore_prompt’ before calling this function.
-- Function: void rl_save_prompt (void)
Save the local Readline prompt display state in preparation for
- displaying a new message in the message area with 'rl_message()'.
+ displaying a new message in the message area with ‘rl_message()’.
-- Function: void rl_restore_prompt (void)
Restore the local Readline prompt display state saved by the most
- recent call to 'rl_save_prompt'. if 'rl_save_prompt' was called to
- save the prompt before a call to 'rl_message', this function should
- be called before the corresponding call to 'rl_clear_message'.
+ recent call to ‘rl_save_prompt’. if you called ‘rl_save_prompt’ to
+ save the prompt before a call to ‘rl_message’, you should call this
+ function before the corresponding call to ‘rl_clear_message’.
-- Function: int rl_expand_prompt (char *prompt)
Expand any special character sequences in PROMPT and set up the
local Readline prompt redisplay variables. This function is called
- by 'readline()'. It may also be called to expand the primary
- prompt if the 'rl_on_new_line_with_prompt()' function or
- 'rl_already_prompted' variable is used. It returns the number of
- visible characters on the last line of the (possibly multi-line)
+ by ‘readline()’. It may also be called to expand the primary
+ prompt if the application uses the ‘rl_on_new_line_with_prompt()’
+ function or ‘rl_already_prompted’ variable. It returns the number
+ of visible characters on the last line of the (possibly multi-line)
prompt. Applications may indicate that the prompt contains
characters that take up no physical screen space when displayed by
bracketing a sequence of such characters with the special markers
- 'RL_PROMPT_START_IGNORE' and 'RL_PROMPT_END_IGNORE' (declared in
- 'readline.h'). This may be used to embed terminal-specific escape
- sequences in prompts.
+ ‘RL_PROMPT_START_IGNORE’ and ‘RL_PROMPT_END_IGNORE’ (declared in
+ ‘readline.h’ as ‘\001’ and ‘\002’, respectively). This may be used
+ to embed terminal-specific escape sequences in prompts. If you
+ don't use these indicators, redisplay will likely produce screen
+ contents that don't match the line buffer.
-- Function: int rl_set_prompt (const char *prompt)
Make Readline use PROMPT for subsequent redisplay. This calls
- 'rl_expand_prompt()' to expand the prompt and sets 'rl_prompt' to
+ ‘rl_expand_prompt()’ to expand the prompt and sets ‘rl_prompt’ to
the result.
\1f
-- Function: int rl_kill_text (int start, int end)
Copy the text between START and END in the current line to the kill
ring, appending or prepending to the last kill if the last command
- was a kill command. The text is deleted. If START is less than
- END, the text is appended, otherwise prepended. If the last
- command was not a kill, a new kill ring slot is used.
+ was a kill command. This deletes the text from the line. If START
+ is less than END, the text is appended, otherwise it is prepended.
+ If the last command was not a kill, this uses a new kill ring slot.
+
+ -- Function: void rl_replace_line (const char *text, int clear_undo)
+ Replace the contents of ‘rl_line_buffer’ with TEXT. This preserves
+ the point and mark, if possible. If CLEAR_UNDO is non-zero, this
+ clears the undo list associated with the current line.
-- Function: int rl_push_macro_input (char *macro)
- Cause MACRO to be inserted into the line, as if it had been invoked
- by a key bound to a macro. Not especially useful; use
- 'rl_insert_text()' instead.
+ Insert MACRO into the line, as if it had been invoked by a key
+ bound to a macro. Not especially useful; use ‘rl_insert_text()’
+ instead.
\1f
File: readline.info, Node: Character Input, Next: Terminal Management, Prev: Modifying Text, Up: Readline Convenience Functions
Return the next character available from Readline's current input
stream. This handles input inserted into the input stream via
RL_PENDING_INPUT (*note Readline Variables::) and
- 'rl_stuff_char()', macros, and characters read from the keyboard.
+ ‘rl_stuff_char()’, macros, and characters read from the keyboard.
While waiting for input, this function will call any function
- assigned to the 'rl_event_hook' variable.
+ assigned to the ‘rl_event_hook’ variable.
-- Function: int rl_getc (FILE *stream)
Return the next character available from STREAM, which is assumed
-- Function: int rl_stuff_char (int c)
Insert C into the Readline input stream. It will be "read" before
Readline attempts to read characters from the terminal with
- 'rl_read_key()'. Up to 512 characters may be pushed back.
- 'rl_stuff_char' returns 1 if the character was successfully
+ ‘rl_read_key()’. Applications can push back up to 512 characters.
+ ‘rl_stuff_char’ returns 1 if the character was successfully
inserted; 0 otherwise.
-- Function: int rl_execute_next (int c)
- Make C be the next command to be executed when 'rl_read_key()' is
+ Make C be the next command to be executed when ‘rl_read_key()’ is
called. This sets RL_PENDING_INPUT.
-- Function: int rl_clear_pending_input (void)
Unset RL_PENDING_INPUT, effectively negating the effect of any
- previous call to 'rl_execute_next()'. This works only if the
- pending input has not already been read with 'rl_read_key()'.
+ previous call to ‘rl_execute_next()’. This works only if the
+ pending input has not already been read with ‘rl_read_key()’.
-- Function: int rl_set_keyboard_input_timeout (int u)
- While waiting for keyboard input in 'rl_read_key()', Readline will
+ While waiting for keyboard input in ‘rl_read_key()’, Readline will
wait for U microseconds for input before calling any function
- assigned to 'rl_event_hook'. U must be greater than or equal to
+ assigned to ‘rl_event_hook’. U must be greater than or equal to
zero (a zero-length timeout is equivalent to a poll). The default
waiting period is one-tenth of a second. Returns the old timeout
value.
+ -- Function: int rl_set_timeout (unsigned int secs, unsigned int usecs)
+ Set a timeout for subsequent calls to ‘readline()’. If Readline
+ does not read a complete line, or the number of characters
+ specified by ‘rl_num_chars_to_read’, before the duration specified
+ by SECS (in seconds) and USECS (microseconds), it returns and sets
+ ‘RL_STATE_TIMEOUT’ in ‘rl_readline_state’. Passing 0 for ‘secs’
+ and ‘usecs’ cancels any previously set timeout; the convenience
+ macro ‘rl_clear_timeout()’ is shorthand for this. Returns 0 if the
+ timeout is set successfully.
+
+ -- Function: int rl_timeout_remaining (unsigned int *secs, unsigned int
+ *usecs)
+ Return the number of seconds and microseconds remaining in the
+ current timeout duration in *SECS and *USECS, respectively. Both
+ *SECS and *USECS must be non-NULL to return any values. The return
+ value is -1 on error or when there is no timeout set, 0 when the
+ timeout has expired (leaving *SECS and *USECS unchanged), and 1 if
+ the timeout has not expired. If either of SECS and USECS is
+ ‘NULL’, the return value indicates whether the timeout has expired.
+
\1f
File: readline.info, Node: Terminal Management, Next: Utility Functions, Prev: Character Input, Up: Readline Convenience Functions
-------------------------
-- Function: void rl_prep_terminal (int meta_flag)
- Modify the terminal settings for Readline's use, so 'readline()'
- can read a single character at a time from the keyboard. The
- META_FLAG argument should be non-zero if Readline should read
- eight-bit input.
+ Modify the terminal settings for Readline's use, so ‘readline()’
+ can read a single character at a time from the keyboard and perform
+ redisplay. The META_FLAG argument should be non-zero if Readline
+ should read eight-bit input.
-- Function: void rl_deprep_terminal (void)
- Undo the effects of 'rl_prep_terminal()', leaving the terminal in
+ Undo the effects of ‘rl_prep_terminal()’, leaving the terminal in
the state in which it was before the most recent call to
- 'rl_prep_terminal()'.
+ ‘rl_prep_terminal()’.
-- Function: void rl_tty_set_default_bindings (Keymap kmap)
Read the operating system's terminal editing characters (as would
- be displayed by 'stty') to their Readline equivalents. The
+ be displayed by ‘stty’) to their Readline equivalents. The
bindings are performed in KMAP.
-- Function: void rl_tty_unset_default_bindings (Keymap kmap)
- Reset the bindings manipulated by 'rl_tty_set_default_bindings' so
- that the terminal editing characters are bound to 'rl_insert'. The
+ Reset the bindings manipulated by ‘rl_tty_set_default_bindings’ so
+ that the terminal editing characters are bound to ‘rl_insert’. The
bindings are performed in KMAP.
-- Function: int rl_tty_set_echoing (int value)
-- Function: int rl_reset_terminal (const char *terminal_name)
Reinitialize Readline's idea of the terminal settings using
- TERMINAL_NAME as the terminal type (e.g., 'vt100'). If
- TERMINAL_NAME is 'NULL', the value of the 'TERM' environment
- variable is used.
+ TERMINAL_NAME as the terminal type (e.g., ‘xterm’). If
+ TERMINAL_NAME is ‘NULL’, Readline uses the value of the ‘TERM’
+ environment variable.
\1f
File: readline.info, Node: Utility Functions, Next: Miscellaneous Functions, Prev: Terminal Management, Up: Readline Convenience Functions
-- Function: int rl_save_state (struct readline_state *sp)
Save a snapshot of Readline's internal state to SP. The contents
- of the READLINE_STATE structure are documented in 'readline.h'.
+ of the READLINE_STATE structure are documented in ‘readline.h’.
The caller is responsible for allocating the structure.
-- Function: int rl_restore_state (struct readline_state *sp)
Restore Readline's internal state to that stored in SP, which must
- have been saved by a call to 'rl_save_state'. The contents of the
- READLINE_STATE structure are documented in 'readline.h'. The
+ have been saved by a call to ‘rl_save_state’. The contents of the
+ READLINE_STATE structure are documented in ‘readline.h’. The
caller is responsible for freeing the structure.
-- Function: void rl_free (void *mem)
Deallocate the memory pointed to by MEM. MEM must have been
- allocated by 'malloc'.
-
- -- Function: void rl_replace_line (const char *text, int clear_undo)
- Replace the contents of 'rl_line_buffer' with TEXT. The point and
- mark are preserved, if possible. If CLEAR_UNDO is non-zero, the
- undo list associated with the current line is cleared.
+ allocated by ‘malloc’.
-- Function: void rl_extend_line_buffer (int len)
- Ensure that 'rl_line_buffer' has enough space to hold LEN
- characters, possibly reallocating it if necessary.
+ Ensure that ‘rl_line_buffer’ has enough space to hold LEN
+ characters, reallocating it if necessary.
-- Function: int rl_initialize (void)
Initialize or re-initialize Readline's internal state. It's not
- strictly necessary to call this; 'readline()' calls it before
+ strictly necessary to call this; ‘readline()’ calls it before
reading any input.
-- Function: int rl_ding (void)
- Ring the terminal bell, obeying the setting of 'bell-style'.
+ Ring the terminal bell, obeying the setting of ‘bell-style’.
-- Function: int rl_alphabetic (int c)
Return 1 if C is an alphabetic character.
-- Function: void rl_display_match_list (char **matches, int len, int
max)
A convenience function for displaying a list of strings in columnar
- format on Readline's output stream. 'matches' is the list of
+ format on Readline's output stream. ‘matches’ is the list of
strings, in argv format, such as a list of completion matches.
- 'len' is the number of strings in 'matches', and 'max' is the
- length of the longest string in 'matches'. This function uses the
- setting of 'print-completions-horizontally' to select how the
+ ‘len’ is the number of strings in ‘matches’, and ‘max’ is the
+ length of the longest string in ‘matches’. This function uses the
+ setting of ‘print-completions-horizontally’ to select how the
matches are displayed (*note Readline Init File Syntax::). When
displaying completions, this function sets the number of columns
- used for display to the value of 'completion-display-width', the
- value of the environment variable 'COLUMNS', or the screen width,
+ used for display to the value of ‘completion-display-width’, the
+ value of the environment variable ‘COLUMNS’, or the screen width,
in that order.
- The following are implemented as macros, defined in 'chardefs.h'.
+ The following are implemented as macros, defined in ‘chardefs.h’.
Applications should refrain from using them.
-- Function: int _rl_uppercase_p (int c)
Bind the key sequence KEYSEQ to invoke the macro MACRO. The
binding is performed in MAP. When KEYSEQ is invoked, the MACRO
will be inserted into the line. This function is deprecated; use
- 'rl_generic_bind()' instead.
+ ‘rl_generic_bind’ instead.
-- Function: void rl_macro_dumper (int readable)
Print the key sequences bound to macros and their values, using the
- current keymap, to 'rl_outstream'. If READABLE is non-zero, the
- list is formatted in such a way that it can be made part of an
- 'inputrc' file and re-read.
+ current keymap, to ‘rl_outstream’. If the application has assigned
+ a value to ‘rl_macro_display_hook’, ‘rl_macro_dumper’ calls it
+ instead of printing anything. If READABLE is greater than zero,
+ the list is formatted in such a way that it can be made part of an
+ ‘inputrc’ file and re-read.
-- Function: int rl_variable_bind (const char *variable, const char
*value)
Make the Readline variable VARIABLE have VALUE. This behaves as if
- the readline command 'set VARIABLE VALUE' had been executed in an
- 'inputrc' file (*note Readline Init File Syntax::).
+ the Readline command ‘set VARIABLE VALUE’ had been executed in an
+ ‘inputrc’ file (*note Readline Init File Syntax::) or by
+ ‘rl_parse_and_bind’.
-- Function: char * rl_variable_value (const char *variable)
Return a string representing the value of the Readline variable
- VARIABLE. For boolean variables, this string is either 'on' or
- 'off'.
+ VARIABLE. For boolean variables, this string is either ‘on’ or
+ ‘off’.
-- Function: void rl_variable_dumper (int readable)
- Print the readline variable names and their current values to
- 'rl_outstream'. If READABLE is non-zero, the list is formatted in
- such a way that it can be made part of an 'inputrc' file and
+ Print the Readline variable names and their current values to
+ ‘rl_outstream’. If READABLE is non-zero, the list is formatted in
+ such a way that it can be made part of an ‘inputrc’ file and
re-read.
-- Function: int rl_set_paren_blink_timeout (int u)
Set the time interval (in microseconds) that Readline waits when
- showing a balancing character when 'blink-matching-paren' has been
+ showing a balancing character when ‘blink-matching-paren’ has been
enabled.
-- Function: char * rl_get_termcap (const char *cap)
fetches the termcap entry for the current terminal name and uses
those capabilities to move around the screen line and perform other
terminal-specific operations, like erasing a line. Readline does
- not use all of a terminal's capabilities, and this function will
- return values for only those capabilities Readline uses.
+ not fetch or use all of a terminal's capabilities, and this
+ function will return values for only those capabilities Readline
+ fetches.
+
+ -- Function: void rl_reparse_colors (void)
+ Read or re-read color definitions from ‘LS_COLORS’.
-- Function: void rl_clear_history (void)
Clear the history list by deleting all of the entries, in the same
- manner as the History library's 'clear_history()' function. This
- differs from 'clear_history' because it frees private data Readline
+ manner as the History library's ‘clear_history()’ function. This
+ differs from ‘clear_history’ because it frees private data Readline
saves in the history list.
+ -- Function: void rl_activate_mark (void)
+ Enable an _active_ region. When this is enabled, the text between
+ point and mark (the REGION) is displayed using the color specified
+ by the value of the ‘active-region-start-color’ variable (a FACE).
+ The default face is the terminal's standout mode. This is called
+ by various Readline functions that set the mark and insert text,
+ and is available for applications to call.
+
+ -- Function: void rl_deactivate_mark (void)
+ Turn off the active region.
+
+ -- Function: void rl_keep_mark_active (void)
+ Indicate that the mark should remain active when the current
+ Readline function completes and after redisplay occurs. In most
+ cases, the mark remains active for only the duration of a single
+ bindable Readline function.
+
+ -- Function: int rl_mark_active_p (void)
+ Return a non-zero value if the mark is currently active; zero
+ otherwise.
+
\1f
File: readline.info, Node: Alternate Interface, Next: A Readline Example, Prev: Miscellaneous Functions, Up: Readline Convenience Functions
2.4.12 Alternate Interface
--------------------------
-An alternate interface is available to plain 'readline()'. Some
-applications need to interleave keyboard I/O with file, device, or
-window system I/O, typically by using a main loop to 'select()' on
-various file descriptors. To accommodate this need, readline can also
-be invoked as a 'callback' function from an event loop. There are
-functions available to make this easy.
+For applications that need more granular control than plain ‘readline()’
+provides, there is an alternate interface. Some applications need to
+interleave keyboard I/O with file, device, or window system I/O,
+typically by using a main loop to ‘select()’ on various file
+descriptors. To accommodate this use case, Readline can also be invoked
+as a 'callback' function from an event loop. There are functions
+available to make this easy.
-- Function: void rl_callback_handler_install (const char *prompt,
- rl_vcpfunc_t *lhandler)
- Set up the terminal for readline I/O and display the initial
- expanded value of PROMPT. Save the value of LHANDLER to use as a
- handler function to call when a complete line of input has been
+ rl_vcpfunc_t *line_handler)
+ Set up the terminal for Readline I/O and display the initial
+ expanded value of PROMPT. Save the value of LINE_HANDLER to use as
+ a handler function to call when a complete line of input has been
entered. The handler function receives the text of the line as an
- argument. As with 'readline()', the handler function should 'free'
+ argument. As with ‘readline()’, the handler function should ‘free’
the line when it it finished with it.
-- Function: void rl_callback_read_char (void)
Whenever an application determines that keyboard input is
- available, it should call 'rl_callback_read_char()', which will
+ available, it should call ‘rl_callback_read_char()’, which will
read the next character from the current input source. If that
- character completes the line, 'rl_callback_read_char' will invoke
- the LHANDLER function installed by 'rl_callback_handler_install' to
- process the line. Before calling the LHANDLER function, the
- terminal settings are reset to the values they had before calling
- 'rl_callback_handler_install'. If the LHANDLER function returns,
- and the line handler remains installed, the terminal settings are
- modified for Readline's use again. 'EOF' is indicated by calling
- LHANDLER with a 'NULL' line.
+ character completes the line, ‘rl_callback_read_char’ will invoke
+ the LINE_HANDLER function installed by
+ ‘rl_callback_handler_install’ to process the line. Before calling
+ the LINE_HANDLER function, Readline resets the terminal settings to
+ the values they had before calling ‘rl_callback_handler_install’.
+ If the LINE_HANDLER function returns, and the line handler remains
+ installed, Readline modifies the terminal settings for its use
+ again. ‘EOF’ is indicated by calling LINE_HANDLER with a ‘NULL’
+ line.
-- Function: void rl_callback_sigcleanup (void)
Clean up any internal state the callback interface uses to maintain
-- Function: void rl_callback_handler_remove (void)
Restore the terminal to its initial state and remove the line
handler. You may call this function from within a callback as well
- as independently. If the LHANDLER installed by
- 'rl_callback_handler_install' does not exit the program, either
- this function or the function referred to by the value of
- 'rl_deprep_term_function' should be called before the program exits
- to reset the terminal settings.
+ as independently. If the LINE_HANDLER installed by
+ ‘rl_callback_handler_install’ does not exit the program, your
+ program should call either this function or the function referred
+ to by the value of ‘rl_deprep_term_function’ before the program
+ exits to reset the terminal settings.
\1f
File: readline.info, Node: A Readline Example, Next: Alternate Interface Example, Prev: Alternate Interface, Up: Readline Convenience Functions
Here is a function which changes lowercase characters to their uppercase
equivalents, and uppercase characters to lowercase. If this function
-was bound to 'M-c', then typing 'M-c' would change the case of the
-character under point. Typing 'M-1 0 M-c' would change the case of the
+was bound to ‘M-c’, then typing ‘M-c’ would change the case of the
+character under point. Typing ‘M-1 0 M-c’ would change the case of the
following 10 characters, leaving the cursor on the last character
changed.
invert_case_line (count, key)
int count, key;
{
- register int start, end, i;
+ int start, end, i;
start = rl_point;
if (rl_point >= rl_end)
return (0);
- if (count < 0)
- {
- direction = -1;
- count = -count;
- }
- else
- direction = 1;
-
/* Find the end of the range to modify. */
- end = start + (count * direction);
+ end = start + count;
/* Force it to be within range. */
if (end > rl_end)
if (start == end)
return (0);
+ /* For positive arguments, put point after the last changed character. For
+ negative arguments, put point before the last changed character. */
+ rl_point = end;
+
+ /* Swap start and end if we are moving backwards */
if (start > end)
{
int temp = start;
else if (_rl_lowercase_p (rl_line_buffer[i]))
rl_line_buffer[i] = _rl_to_upper (rl_line_buffer[i]);
}
- /* Move point to on top of the last character changed. */
- rl_point = (direction == 1) ? end - 1 : start;
+
return (0);
}
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
- #include <locale.h>
/* Used for select(2) */
#include <sys/types.h>
#include <signal.h>
+ #include <errno.h>
#include <stdio.h>
+ #include <locale.h>
+
/* Standard readline include files. */
#include <readline/readline.h>
#include <readline/history.h>
+ #if !defined (errno)
+ extern int errno;
+ #endif
+
static void cb_linehandler (char *);
static void sighandler (int);
Signals are asynchronous events sent to a process by the Unix kernel,
sometimes on behalf of another process. They are intended to indicate
-exceptional events, like a user pressing the interrupt key on his
-terminal, or a network connection being broken. There is a class of
-signals that can be sent to the process currently reading input from the
-keyboard. Since Readline changes the terminal attributes when it is
-called, it needs to perform special processing when such a signal is
-received in order to restore the terminal to a sane state, or provide
-application writers with functions to do so manually.
+exceptional events, like a user pressing the terminal's interrupt key,
+or a network connection being broken. There is a class of signals that
+can be sent to the process currently reading input from the keyboard.
+Since Readline changes the terminal attributes when it is called, it
+needs to perform special processing when such a signal is received in
+order to restore the terminal to a sane state, or provide applications
+using Readline with functions to do so manually.
Readline contains an internal signal handler that is installed for a
-number of signals ('SIGINT', 'SIGQUIT', 'SIGTERM', 'SIGHUP', 'SIGALRM',
-'SIGTSTP', 'SIGTTIN', and 'SIGTTOU'). When one of these signals is
-received, the signal handler will reset the terminal attributes to those
-that were in effect before 'readline()' was called, reset the signal
-handling to what it was before 'readline()' was called, and resend the
-signal to the calling application. If and when the calling
+number of signals (‘SIGINT’, ‘SIGQUIT’, ‘SIGTERM’, ‘SIGHUP’, ‘SIGALRM’,
+‘SIGTSTP’, ‘SIGTTIN’, and ‘SIGTTOU’). When Readline receives one of
+these signals, the signal handler will reset the terminal attributes to
+those that were in effect before ‘readline()’ was called, reset the
+signal handling to what it was before ‘readline()’ was called, and
+resend the signal to the calling application. If and when the calling
application's signal handler returns, Readline will reinitialize the
-terminal and continue to accept input. When a 'SIGINT' is received, the
+terminal and continue to accept input. When a ‘SIGINT’ is received, the
Readline signal handler performs some additional work, which will cause
any partially-entered line to be aborted (see the description of
-'rl_free_line_state()' below).
+‘rl_free_line_state()’ below).
- There is an additional Readline signal handler, for 'SIGWINCH', which
+ There is an additional Readline signal handler, for ‘SIGWINCH’, which
the kernel sends to a process whenever the terminal's size changes (for
-example, if a user resizes an 'xterm'). The Readline 'SIGWINCH' handler
+example, if a user resizes an ‘xterm’). The Readline ‘SIGWINCH’ handler
updates Readline's internal screen size information, and then calls any
-'SIGWINCH' signal handler the calling application has installed.
-Readline calls the application's 'SIGWINCH' signal handler without
+‘SIGWINCH’ signal handler the calling application has installed.
+Readline calls the application's ‘SIGWINCH’ signal handler without
resetting the terminal to its original state. If the application's
signal handler does more than update its idea of the terminal size and
-return (for example, a 'longjmp' back to a main processing loop), it
-_must_ call 'rl_cleanup_after_signal()' (described below), to restore
+return (for example, a ‘longjmp’ back to a main processing loop), it
+_must_ call ‘rl_cleanup_after_signal()’ (described below), to restore
the terminal state.
When an application is using the callback interface (*note Alternate
Interface::), Readline installs signal handlers only for the duration of
-the call to 'rl_callback_read_char'. Applications using the callback
+the call to ‘rl_callback_read_char’. Applications using the callback
interface should be prepared to clean up Readline's state if they wish
to handle the signal before the line handler completes and restores the
terminal state.
If an application using the callback interface wishes to have
Readline install its signal handlers at the time the application calls
-'rl_callback_handler_install' and remove them only when a complete line
+‘rl_callback_handler_install’ and remove them only when a complete line
of input has been read, it should set the
-'rl_persistent_signal_handlers' variable to a non-zero value. This
+‘rl_persistent_signal_handlers’ variable to a non-zero value. This
allows an application to defer all of the handling of the signals
Readline catches to Readline. Applications should use this variable
with care; it can result in Readline catching signals and not acting on
them (or allowing the application to react to them) until the
-application calls 'rl_callback_read_char'. This can result in an
+application calls ‘rl_callback_read_char’. This can result in an
application becoming less responsive to keyboard signals like SIGINT. If
an application does not want or need to perform any signal handling, or
does not need to do any processing between calls to
-'rl_callback_read_char', setting this variable may be desirable.
+‘rl_callback_read_char’, setting this variable may be appropriate.
Readline provides two variables that allow application writers to
control whether or not it will catch certain signals and act on them
when they are received. It is important that applications change the
-values of these variables only when calling 'readline()', not in a
+values of these variables only when calling ‘readline()’, not in a
signal handler, so Readline's internal signal state is not corrupted.
-- Variable: int rl_catch_signals
If this variable is non-zero, Readline will install signal handlers
- for 'SIGINT', 'SIGQUIT', 'SIGTERM', 'SIGHUP', 'SIGALRM', 'SIGTSTP',
- 'SIGTTIN', and 'SIGTTOU'.
+ for ‘SIGINT’, ‘SIGQUIT’, ‘SIGTERM’, ‘SIGHUP’, ‘SIGALRM’, ‘SIGTSTP’,
+ ‘SIGTTIN’, and ‘SIGTTOU’.
- The default value of 'rl_catch_signals' is 1.
+ The default value of ‘rl_catch_signals’ is 1.
-- Variable: int rl_catch_sigwinch
If this variable is set to a non-zero value, Readline will install
- a signal handler for 'SIGWINCH'.
+ a signal handler for ‘SIGWINCH’.
- The default value of 'rl_catch_sigwinch' is 1.
+ The default value of ‘rl_catch_sigwinch’ is 1.
-- Variable: int rl_persistent_signal_handlers
If an application using the callback interface wishes Readline's
signal handlers to be installed and active during the set of calls
- to 'rl_callback_read_char' that constitutes an entire single line,
+ to ‘rl_callback_read_char’ that constitutes an entire single line,
it should set this variable to a non-zero value.
- The default value of 'rl_persistent_signal_handlers' is 0.
+ The default value of ‘rl_persistent_signal_handlers’ is 0.
-- Variable: int rl_change_environment
If this variable is set to a non-zero value, and Readline is
- handling 'SIGWINCH', Readline will modify the LINES and COLUMNS
- environment variables upon receipt of a 'SIGWINCH'
+ handling ‘SIGWINCH’, Readline will modify the LINES and COLUMNS
+ environment variables upon receipt of a ‘SIGWINCH’.
- The default value of 'rl_change_environment' is 1.
+ The default value of ‘rl_change_environment’ is 1.
If an application does not wish to have Readline catch any signals,
-or to handle signals other than those Readline catches ('SIGHUP', for
+or to handle signals other than those Readline catches (‘SIGHUP’, for
example), Readline provides convenience functions to do the necessary
terminal and internal state cleanup upon receipt of a signal.
-- Function: void rl_cleanup_after_signal (void)
This function will reset the state of the terminal to what it was
- before 'readline()' was called, and remove the Readline signal
+ before ‘readline()’ was called, and remove the Readline signal
handlers for all signals, depending on the values of
- 'rl_catch_signals' and 'rl_catch_sigwinch'.
+ ‘rl_catch_signals’ and ‘rl_catch_sigwinch’.
-- Function: void rl_free_line_state (void)
This will free any partial state associated with the current input
line (undo information, any partial history entry, any
partially-entered keyboard macro, and any partially-entered numeric
argument). This should be called before
- 'rl_cleanup_after_signal()'. The Readline signal handler for
- 'SIGINT' calls this to abort the current input line.
+ ‘rl_cleanup_after_signal()’. The Readline signal handler for
+ ‘SIGINT’ calls this to abort the current input line.
-- Function: void rl_reset_after_signal (void)
This will reinitialize the terminal and reinstall any Readline
- signal handlers, depending on the values of 'rl_catch_signals' and
- 'rl_catch_sigwinch'.
+ signal handlers, depending on the values of ‘rl_catch_signals’ and
+ ‘rl_catch_sigwinch’.
If an application wants to force Readline to handle any signals that
-have arrived while it has been executing, 'rl_check_signals()' will call
+have arrived while it has been executing, ‘rl_check_signals()’ will call
Readline's internal signal handler if there are any pending signals.
This is primarily intended for those applications that use a custom
-'rl_getc_function' (*note Readline Variables::) and wish to handle
+‘rl_getc_function’ (*note Readline Variables::) and wish to handle
signals received while waiting for input.
-- Function: void rl_check_signals (void)
If there are any pending signals, call Readline's internal signal
- handling functions to process them. 'rl_pending_signal()' can be
+ handling functions to process them. ‘rl_pending_signal()’ can be
used independently to determine whether or not there are any
pending signals.
- If an application does not wish Readline to catch 'SIGWINCH', it may
-call 'rl_resize_terminal()' or 'rl_set_screen_size()' to force Readline
-to update its idea of the terminal size when a 'SIGWINCH' is received.
+ If an application does not wish Readline to catch ‘SIGWINCH’, it may
+call ‘rl_resize_terminal()’ or ‘rl_set_screen_size()’ to force Readline
+to update its idea of the terminal size when it receives a ‘SIGWINCH’.
-- Function: void rl_echo_signal_char (int sig)
If an application wishes to install its own signal handlers, but
- still have readline display characters that generate signals,
- calling this function with SIG set to 'SIGINT', 'SIGQUIT', or
- 'SIGTSTP' will display the character generating that signal.
+ still have Readline display characters that generate signals,
+ calling this function with SIG set to ‘SIGINT’, ‘SIGQUIT’, or
+ ‘SIGTSTP’ will display the character generating that signal.
-- Function: void rl_resize_terminal (void)
Update Readline's internal screen size by reading values from the
-- Function: void rl_set_screen_size (int rows, int cols)
Set Readline's idea of the terminal size to ROWS rows and COLS
columns. If either ROWS or COLUMNS is less than or equal to 0,
- Readline's idea of that terminal dimension is unchanged.
+ Readline doesn't change that terminal dimension. This is intended
+ to tell Readline the physical dimensions of the terminal, and is
+ used internally to calculate the maximum number of characters that
+ may appear on a single line and on the screen.
- If an application does not want to install a 'SIGWINCH' handler, but
-is still interested in the screen dimensions, Readline's idea of the
-screen size may be queried.
+ If an application does not want to install a ‘SIGWINCH’ handler, but
+is still interested in the screen dimensions, it may query Readline's
+idea of the screen size.
-- Function: void rl_get_screen_size (int *rows, int *cols)
Return Readline's idea of the terminal's size in the variables
handlers.
-- Function: int rl_set_signals (void)
- Install Readline's signal handler for 'SIGINT', 'SIGQUIT',
- 'SIGTERM', 'SIGHUP', 'SIGALRM', 'SIGTSTP', 'SIGTTIN', 'SIGTTOU',
- and 'SIGWINCH', depending on the values of 'rl_catch_signals' and
- 'rl_catch_sigwinch'.
+ Install Readline's signal handler for ‘SIGINT’, ‘SIGQUIT’,
+ ‘SIGTERM’, ‘SIGHUP’, ‘SIGALRM’, ‘SIGTSTP’, ‘SIGTTIN’, ‘SIGTTOU’,
+ and ‘SIGWINCH’, depending on the values of ‘rl_catch_signals’ and
+ ‘rl_catch_sigwinch’.
-- Function: int rl_clear_signals (void)
Remove all of the Readline signal handlers installed by
- 'rl_set_signals()'.
+ ‘rl_set_signals()’.
\1f
File: readline.info, Node: Custom Completers, Prev: Readline Signal Handling, Up: Programming with GNU Readline
There are three major functions used to perform completion:
- 1. The user-interface function 'rl_complete()'. This function is
+ 1. The user-interface function ‘rl_complete()’. This function is
called with the same arguments as other bindable Readline
functions: COUNT and INVOKING_KEY. It isolates the word to be
- completed and calls 'rl_completion_matches()' to generate a list of
+ completed and calls ‘rl_completion_matches()’ to generate a list of
possible completions. It then either lists the possible
completions, inserts the possible completions, or actually performs
the completion, depending on which behavior is desired.
- 2. The internal function 'rl_completion_matches()' uses an
- application-supplied "generator" function to generate the list of
+ 2. The internal function ‘rl_completion_matches()’ uses an
+ application-supplied “generator” function to generate the list of
possible matches, and then returns the array of these matches. The
caller should place the address of its generator function in
- 'rl_completion_entry_function'.
+ ‘rl_completion_entry_function’.
3. The generator function is called repeatedly from
- 'rl_completion_matches()', returning a string each time. The
+ ‘rl_completion_matches()’, returning a string each time. The
arguments to the generator function are TEXT and STATE. TEXT is
the partial word to be completed. STATE is zero the first time the
function is called, allowing the generator to perform any necessary
- initialization, and a positive non-zero integer for each subsequent
- call. The generator function returns '(char *)NULL' to inform
- 'rl_completion_matches()' that there are no more possibilities
+ initialization, and a positive integer for each subsequent call.
+ The generator function returns ‘(char *)NULL’ to inform
+ ‘rl_completion_matches()’ that there are no more possibilities
left. Usually the generator function computes the list of possible
completions when STATE is zero, and returns them one at a time on
subsequent calls. Each string the generator function returns as a
- match must be allocated with 'malloc()'; Readline frees the strings
+ match must be allocated with ‘malloc()’; Readline frees the strings
when it has finished with them. Such a generator function is
- referred to as an "application-specific completion function".
+ referred to as an “application-specific completion function”.
-- Function: int rl_complete (int ignore, int invoking_key)
Complete the word at or before point. You have supplied the
function that does the initial simple matching selection algorithm
- (see 'rl_completion_matches()'). The default is to do filename
+ (see ‘rl_completion_matches()’). The default is to do filename
completion.
-- Variable: rl_compentry_func_t * rl_completion_entry_function
This is a pointer to the generator function for
- 'rl_completion_matches()'. If the value of
- 'rl_completion_entry_function' is 'NULL' then the default filename
- generator function, 'rl_filename_completion_function()', is used.
- An "application-specific completion function" is a function whose
- address is assigned to 'rl_completion_entry_function' and whose
- return values are used to generate possible completions.
+ ‘rl_completion_matches()’. If the value of
+ ‘rl_completion_entry_function’ is ‘NULL’ then Readline uses the
+ default filename generator function,
+ ‘rl_filename_completion_function()’. An “application-specific
+ completion function” is a function whose address is assigned to
+ ‘rl_completion_entry_function’ and whose return values are used to
+ generate possible completions.
\1f
File: readline.info, Node: Completion Functions, Next: Completion Variables, Prev: How Completing Works, Up: Custom Completers
-- Function: int rl_complete_internal (int what_to_do)
Complete the word at or before point. WHAT_TO_DO says what to do
- with the completion. A value of '?' means list the possible
- completions. 'TAB' means do standard completion. '*' means insert
- all of the possible completions. '!' means to display all of the
+ with the completion. A value of ‘?’ means list the possible
+ completions. ‘TAB’ means do standard completion. ‘*’ means insert
+ all of the possible completions. ‘!’ means to display all of the
possible completions, if there is more than one, as well as
- performing partial completion. '@' is similar to '!', but possible
- completions are not listed if the possible completions share a
+ performing partial completion. ‘@’ is similar to ‘!’, but does not
+ list possible completions if the possible completions share a
common prefix.
-- Function: int rl_complete (int ignore, int invoking_key)
Complete the word at or before point. You have supplied the
function that does the initial simple matching selection algorithm
- (see 'rl_completion_matches()' and 'rl_completion_entry_function').
+ (see ‘rl_completion_matches()’ and ‘rl_completion_entry_function’).
The default is to do filename completion. This calls
- 'rl_complete_internal()' with an argument depending on
+ ‘rl_complete_internal()’ with an argument depending on
INVOKING_KEY.
-- Function: int rl_possible_completions (int count, int invoking_key)
- List the possible completions. See description of 'rl_complete
- ()'. This calls 'rl_complete_internal()' with an argument of '?'.
+ List the possible completions. See description of ‘rl_complete()’.
+ This calls ‘rl_complete_internal()’ with an argument of ‘?’.
-- Function: int rl_insert_completions (int count, int invoking_key)
Insert the list of possible completions into the line, deleting the
- partially-completed word. See description of 'rl_complete()'.
- This calls 'rl_complete_internal()' with an argument of '*'.
+ partially-completed word. See description of ‘rl_complete()’.
+ This calls ‘rl_complete_internal()’ with an argument of ‘*’.
-- Function: int rl_completion_mode (rl_command_func_t *cfunc)
- Returns the appropriate value to pass to 'rl_complete_internal()'
+ Returns the appropriate value to pass to ‘rl_complete_internal()’
depending on whether CFUNC was called twice in succession and the
- values of the 'show-all-if-ambiguous' and 'show-all-if-unmodified'
+ values of the ‘show-all-if-ambiguous’ and ‘show-all-if-unmodified’
variables. Application-specific completion functions may use this
- function to present the same interface as 'rl_complete()'.
+ function to present the same interface as ‘rl_complete()’.
-- Function: char ** rl_completion_matches (const char *text,
rl_compentry_func_t *entry_func)
Returns an array of strings which is a list of completions for
- TEXT. If there are no completions, returns 'NULL'. The first
+ TEXT. If there are no completions, returns ‘NULL’. The first
entry in the returned array is the substitution for TEXT. The
remaining entries are the possible completions. The array is
- terminated with a 'NULL' pointer.
+ terminated with a ‘NULL’ pointer.
- ENTRY_FUNC is a function of two args, and returns a 'char *'. The
+ ENTRY_FUNC is a function of two args, and returns a ‘char *’. The
first argument is TEXT. The second is a state argument; it is zero
on the first call, and non-zero on subsequent calls. ENTRY_FUNC
- returns a 'NULL' pointer to the caller when there are no more
+ returns a ‘NULL’ pointer to the caller when there are no more
matches.
-- Function: char * rl_filename_completion_function (const char *text,
-- Function: char * rl_username_completion_function (const char *text,
int state)
A completion generator for usernames. TEXT contains a partial
- username preceded by a random character (usually '~'). As with all
+ username preceded by a random character (usually ‘~’). As with all
completion generators, STATE is zero on the first call and non-zero
for subsequent calls.
--------------------------
-- Variable: rl_compentry_func_t * rl_completion_entry_function
- A pointer to the generator function for 'rl_completion_matches()'.
- 'NULL' means to use 'rl_filename_completion_function()', the
+ A pointer to the generator function for ‘rl_completion_matches()’.
+ ‘NULL’ means to use ‘rl_filename_completion_function()’, the
default filename completer.
-- Variable: rl_completion_func_t * rl_attempted_completion_function
A pointer to an alternative function to create matches. The
function is called with TEXT, START, and END. START and END are
- indices in 'rl_line_buffer' defining the boundaries of TEXT, which
- is a character string. If this function exists and returns 'NULL',
- or if this variable is set to 'NULL', then 'rl_complete()' will
- call the value of 'rl_completion_entry_function' to generate
- matches, otherwise the array of strings returned will be used. If
- this function sets the 'rl_attempted_completion_over' variable to a
- non-zero value, Readline will not perform its default completion
- even if this function returns no matches.
+ indices in ‘rl_line_buffer’ defining the boundaries of TEXT, which
+ is a character string. If this function exists and returns ‘NULL’,
+ or if this variable is set to ‘NULL’, then ‘rl_complete()’ will
+ call the value of ‘rl_completion_entry_function’ to generate
+ matches, otherwise completion will use the array of strings this
+ function returns. If this function sets the
+ ‘rl_attempted_completion_over’ variable to a non-zero value,
+ Readline will not perform its default completion even if this
+ function returns no matches.
-- Variable: rl_quote_func_t * rl_filename_quoting_function
A pointer to a function that will quote a filename in an
- application-specific fashion. This is called if filename
- completion is being attempted and one of the characters in
- 'rl_filename_quote_characters' appears in a completed filename.
+ application-specific fashion. Readline calls this function during
+ filename completion if one of the characters in
+ ‘rl_filename_quote_characters’ appears in a completed filename.
The function is called with TEXT, MATCH_TYPE, and QUOTE_POINTER.
The TEXT is the filename to be quoted. The MATCH_TYPE is either
- 'SINGLE_MATCH', if there is only one completion match, or
- 'MULT_MATCH'. Some functions use this to decide whether or not to
+ ‘SINGLE_MATCH’, if there is only one completion match, or
+ ‘MULT_MATCH’. Some functions use this to decide whether or not to
insert a closing quote character. The QUOTE_POINTER is a pointer
to any opening quote character the user typed. Some functions
- choose to reset this character.
+ choose to reset this character if they decide to quote the filename
+ in a different style. It's preferable to preserve the user's
+ quoting as much as possible - it's less disruptive.
-- Variable: rl_dequote_func_t * rl_filename_dequoting_function
A pointer to a function that will remove application-specific
- quoting characters from a filename before completion is attempted,
- so those characters do not interfere with matching the text against
+ quoting characters from a filename before attempting completion, so
+ those characters do not interfere with matching the text against
names in the filesystem. It is called with TEXT, the text of the
word to be dequoted, and QUOTE_CHAR, which is the quoting character
- that delimits the filename (usually ''' or '"'). If QUOTE_CHAR is
- zero, the filename was not in an embedded string.
+ that delimits the filename (usually ‘'’ or ‘"’). If QUOTE_CHAR is
+ zero, the filename was not in a quoted string.
-- Variable: rl_linebuf_func_t * rl_char_is_quoted_p
A pointer to a function to call that determines whether or not a
specific character in the line buffer is quoted, according to
- whatever quoting mechanism the program calling Readline uses. The
- function is called with two arguments: TEXT, the text of the line,
- and INDEX, the index of the character in the line. It is used to
- decide whether a character found in
- 'rl_completer_word_break_characters' should be used to break words
- for the completer.
+ whatever quoting mechanism the application uses. The function is
+ called with two arguments: TEXT, the text of the line, and INDEX,
+ the index of the character in the line. It is used to decide
+ whether a character found in ‘rl_completer_word_break_characters’
+ should be used to break words for the completer.
-- Variable: rl_compignore_func_t * rl_ignore_some_completions_function
- This function, if defined, is called by the completer when real
- filename completion is done, after all the matching names have been
- generated. It is passed a 'NULL' terminated array of matches. The
- first element ('matches[0]') is the maximal substring common to all
- matches. This function can re-arrange the list of matches as
- required, but each element deleted from the array must be freed.
+ Readline calls this function, if defined, when filename completion
+ is done, after all the matching names have been generated. It is
+ passed a ‘NULL’ terminated array of matches. The first element
+ (‘matches[0]’) is the maximal substring common to all matches.
+ This function can re-arrange the list of matches as required, but
+ must free each element it deletes from the array.
-- Variable: rl_icppfunc_t * rl_directory_completion_hook
This function, if defined, is allowed to modify the directory
- portion of filenames Readline completes. It could be used to
- expand symbolic links or shell variables in pathnames. It is
- called with the address of a string (the current directory name) as
- an argument, and may modify that string. If the string is replaced
- with a new string, the old value should be freed. Any modified
- directory name should have a trailing slash. The modified value
- will be used as part of the completion, replacing the directory
- portion of the pathname the user typed. At the least, even if no
- other expansion is performed, this function should remove any quote
- characters from the directory name, because its result will be
- passed directly to 'opendir()'.
+ portion of filenames during completion. It could be used to expand
+ symbolic links or shell variables in pathnames. It is called with
+ the address of a string (the current directory name) as an
+ argument, and may modify that string. If the function replaces the
+ string with a new string, it should free the old value. Any
+ modified directory name should have a trailing slash. The modified
+ value will be used as part of the completion, replacing the
+ directory portion of the pathname the user typed. At the least,
+ even if no other expansion is performed, this function should
+ remove any quote characters from the directory name, because its
+ result will be passed directly to ‘opendir()’.
The directory completion hook returns an integer that should be
non-zero if the function modifies its directory argument. The
If non-zero, this is the address of a function to call when
completing a directory name. This function takes the address of
the directory name to be modified as an argument. Unlike
- 'rl_directory_completion_hook', it only modifies the directory name
- used in 'opendir', not what is displayed when the possible
- completions are printed or inserted. It is called before
+ ‘rl_directory_completion_hook’, it only modifies the directory name
+ used in ‘opendir()’, not what Readline displays when it prints or
+ inserts the possible completions. Readline calls this before
rl_directory_completion_hook. At the least, even if no other
expansion is performed, this function should remove any quote
characters from the directory name, because its result will be
- passed directly to 'opendir()'.
+ passed directly to ‘opendir()’.
The directory rewrite hook returns an integer that should be
- non-zero if the function modfies its directory argument. The
+ non-zero if the function modifies its directory argument. The
function should not modify the directory argument if it returns 0.
-- Variable: rl_icppfunc_t * rl_filename_stat_hook
If non-zero, this is the address of a function for the completer to
call before deciding which character to append to a completed name.
- This function modifies its filename name argument, and the modified
- value is passed to 'stat()' to determine the file's type and
- characteristics. This function does not need to remove quote
+ This function modifies its filename name argument, and Readline
+ passes the modified value to ‘stat()’ to determine the file's type
+ and characteristics. This function does not need to remove quote
characters from the filename.
The stat hook returns an integer that should be non-zero if the
- function modfies its directory argument. The function should not
+ function modifies its directory argument. The function should not
modify the directory argument if it returns 0.
-- Variable: rl_dequote_func_t * rl_filename_rewrite_hook
- If non-zero, this is the address of a function called when reading
- directory entries from the filesystem for completion and comparing
- them to the partial word to be completed. The function should
+ If non-zero, this is the address of a function for Readline to call
+ when reading directory entries from the filesystem for completion
+ and comparing them to the filename portion of the partial word
+ being completed. It modifies the filesystem entries, as opposed to
+ ‘rl_completion_rewrite_hook’, which modifies the word being
+ completed. The function takes two arguments: FNAME, the filename
+ to be converted, and FNLEN, its length in bytes. It must either
+ return its first argument (if no conversion takes place) or the
+ converted filename in newly-allocated memory. The function should
perform any necessary application or system-specific conversion on
the filename, such as converting between character sets or
converting from a filesystem format to a character input format.
- The function takes two arguments: FNAME, the filename to be
- converted, and FNLEN, its length in bytes. It must either return
- its first argument (if no conversion takes place) or the converted
- filename in newly-allocated memory. The converted form is used to
- compare against the word to be completed, and, if it matches, is
- added to the list of matches. Readline will free the allocated
- string.
+ Readline compares the converted form against the word to be
+ completed, and, if it matches, adds it to the list of matches.
+ Readline will free the allocated string.
+
+ -- Variable: rl_dequote_func_t * rl_completion_rewrite_hook
+ If non-zero, this is the address of a function for Readline to call
+ before comparing the filename portion of a word to be completed
+ with directory entries from the filesystem. It modifies the word
+ being completed, as opposed to ‘rl_filename_rewrite_hook’, which
+ modifies filesystem entries. The function takes two arguments:
+ FNAME, the word to be converted, after any
+ ‘rl_filename_dequoting_function’ has been applied, and FNLEN, its
+ length in bytes. It must either return its first argument (if no
+ conversion takes place) or the converted filename in
+ newly-allocated memory. The function should perform any necessary
+ application or system-specific conversion on the filename, such as
+ converting between character sets or converting from a character
+ input format to some other format. Readline compares the converted
+ form against directory entries, after their potential modification
+ by ‘rl_filename_rewrite_hook’, and adds any matches to the list of
+ matches. Readline will free the allocated string.
-- Variable: rl_compdisp_func_t * rl_completion_display_matches_hook
If non-zero, then this is the address of a function to call when
completing a word would normally display the list of possible
- matches. This function is called in lieu of Readline displaying
- the list. It takes three arguments: ('char **'MATCHES, 'int'
- NUM_MATCHES, 'int' MAX_LENGTH) where MATCHES is the array of
+ matches. Readline calls this function instead of displaying the
+ list itself. It takes three arguments: (‘char **’MATCHES, ‘int’
+ NUM_MATCHES, ‘int’ MAX_LENGTH) where MATCHES is the array of
matching strings, NUM_MATCHES is the number of strings in that
array, and MAX_LENGTH is the length of the longest string in that
array. Readline provides a convenience function,
- 'rl_display_match_list', that takes care of doing the display to
+ ‘rl_display_match_list’, that takes care of doing the display to
Readline's output stream. You may call that function from this
hook.
-- Variable: const char * rl_basic_word_break_characters
The basic list of characters that signal a break between words for
the completer routine. The default value of this variable is the
- characters which break words for completion in Bash: '"
- \t\n\"\\'`@$><=;|&{("'.
+ characters which break words for completion in Bash: ‘"
+ \t\n\"\\'`@$><=;|&{("’.
-- Variable: const char * rl_basic_quote_characters
- A list of quote characters which can cause a word break.
+ A list of quote characters which can cause a word break. The
+ default value includes single and double quotes.
-- Variable: const char * rl_completer_word_break_characters
The list of characters that signal a break between words for
- 'rl_complete_internal()'. The default list is the value of
- 'rl_basic_word_break_characters'.
+ ‘rl_complete_internal()’. These characters determine how Readline
+ decides what to complete. The default list is the value of
+ ‘rl_basic_word_break_characters’.
-- Variable: rl_cpvfunc_t * rl_completion_word_break_hook
If non-zero, this is the address of a function to call when
Readline is deciding where to separate words for word completion.
It should return a character string like
- 'rl_completer_word_break_characters' to be used to perform the
+ ‘rl_completer_word_break_characters’ to be used to perform the
current completion. The function may choose to set
- 'rl_completer_word_break_characters' itself. If the function
- returns 'NULL', 'rl_completer_word_break_characters' is used.
+ ‘rl_completer_word_break_characters’ itself. If the function
+ returns ‘NULL’, Readline uses ‘rl_completer_word_break_characters’.
-- Variable: const char * rl_completer_quote_characters
A list of characters which can be used to quote a substring of the
line. Completion occurs on the entire substring, and within the
- substring 'rl_completer_word_break_characters' are treated as any
+ substring, ‘rl_completer_word_break_characters’ are treated as any
other character, unless they also appear within this list.
-- Variable: const char * rl_filename_quote_characters
- A list of characters that cause a filename to be quoted by the
- completer when they appear in a completed filename. The default is
- the null string.
+ A list of characters that cause Readline to quote a filename when
+ they appear in a completed filename. The default is the null
+ string.
-- Variable: const char * rl_special_prefixes
The list of characters that are word break characters, but should
complete shell variables and hostnames.
-- Variable: int rl_completion_query_items
- Up to this many items will be displayed in response to a
- possible-completions call. After that, readline asks the user if
- she is sure she wants to see them all. The default value is 100.
- A negative value indicates that Readline should never ask the user.
+ This determines the maximum number of items that
+ possible-completions will display unconditionally. If there are
+ more possible completions than this, Readline asks the user for
+ confirmation before displaying them. The default value is 100. A
+ negative value indicates that Readline should never ask for
+ confirmation.
-- Variable: int rl_completion_append_character
When a single completion alternative matches at the end of the
- command line, this character is appended to the inserted completion
- text. The default is a space character (' '). Setting this to the
- null character ('\0') prevents anything being appended
+ command line, Readline appends this character to the inserted
+ completion text. The default is a space character (‘ ’). Setting
+ this to the null character (‘\0’) prevents anything being appended
automatically. This can be changed in application-specific
completion functions to provide the "most sensible word separator
character" according to an application-specific command line syntax
- specification.
+ specification. It is set to the default before calling any
+ application-specific completion function, and may only be changed
+ within such a function.
-- Variable: int rl_completion_suppress_append
- If non-zero, RL_COMPLETION_APPEND_CHARACTER is not appended to
- matches at the end of the command line, as described above. It is
- set to 0 before any application-specific completion function is
- called, and may only be changed within such a function.
-
- -- Variable: int rl_completion_quote_character
- When Readline is completing quoted text, as delimited by one of the
- characters in RL_COMPLETER_QUOTE_CHARACTERS, it sets this variable
- to the quoting character found. This is set before any
- application-specific completion function is called.
+ If non-zero, Readline will not append the
+ RL_COMPLETION_APPEND_CHARACTER to matches at the end of the command
+ line, as described above. It is set to 0 before calling any
+ application-specific completion function, and may only be changed
+ within such a function.
-- Variable: int rl_completion_suppress_quote
If non-zero, Readline does not append a matching quote character
when performing completion on a quoted string. It is set to 0
- before any application-specific completion function is called, and
+ before calling any application-specific completion function, and
may only be changed within such a function.
-- Variable: int rl_completion_found_quote
When Readline is completing quoted text, it sets this variable to a
non-zero value if the word being completed contains or is delimited
by any quoting characters, including backslashes. This is set
- before any application-specific completion function is called.
+ before calling any application-specific completion function.
+
+ -- Variable: int rl_completion_quote_character
+ When Readline is completing quoted text, as delimited by one of the
+ characters in RL_COMPLETER_QUOTE_CHARACTERS, it sets this variable
+ to the quoting character it found. This is set before calling any
+ application-specific completion function.
-- Variable: int rl_completion_mark_symlink_dirs
- If non-zero, a slash will be appended to completed filenames that
+ If non-zero, Readline appends a slash to completed filenames that
are symbolic links to directory names, subject to the value of the
user-settable MARK-DIRECTORIES variable. This variable exists so
that application-specific completion functions can override the
user's global preference (set via the MARK-SYMLINKED-DIRECTORIES
Readline variable) if appropriate. This variable is set to the
- user's preference before any application-specific completion
- function is called, so unless that function modifies the value, the
- user's preferences are honored.
+ user's preference before calling any application-specific
+ completion function, so unless that function modifies the value,
+ Readline will honor the user's preferences.
-- Variable: int rl_ignore_completion_duplicates
- If non-zero, then duplicates in the matches are removed. The
- default is 1.
+ If non-zero, then Readline removes duplicates in the set of
+ possible completions. The default is 1.
-- Variable: int rl_filename_completion_desired
- Non-zero means that the results of the matches are to be treated as
- filenames. This is _always_ zero when completion is attempted, and
- can only be changed within an application-specific completion
- function. If it is set to a non-zero value by such a function,
- directory names have a slash appended and Readline attempts to
- quote completed filenames if they contain any characters in
- 'rl_filename_quote_characters' and 'rl_filename_quoting_desired' is
+ A non-zero value means that Readline should treat the results of
+ the matches as filenames. This is _always_ zero when completion is
+ attempted, and can only be changed within an application-specific
+ completion function. If it is set to a non-zero value by such a
+ function, Readline appends a slash to directory names and attempts
+ to quote completed filenames if they contain any characters in
+ ‘rl_filename_quote_characters’ and ‘rl_filename_quoting_desired’ is
set to a non-zero value.
-- Variable: int rl_filename_quoting_desired
- Non-zero means that the results of the matches are to be quoted
- using double quotes (or an application-specific quoting mechanism)
- if the completed filename contains any characters in
- 'rl_filename_quote_chars'. This is _always_ non-zero when
+ A non-zero value means that Readline should quote the results of
+ the matches using double quotes (or an application-specific quoting
+ mechanism) if the completed filename contains any characters in
+ ‘rl_filename_quote_chars’. This is _always_ non-zero when
completion is attempted, and can only be changed within an
- application-specific completion function. The quoting is effected
+ application-specific completion function. The quoting is performed
via a call to the function pointed to by
- 'rl_filename_quoting_function'.
+ ‘rl_filename_quoting_function’.
+
+ -- Variable: int rl_full_quoting_desired
+ A non-zero value means that Readline should apply filename-style
+ quoting, including any application-specified quoting mechanism, to
+ all completion matches even if it is not otherwise treating the
+ matches as filenames. This is _always_ zero when completion is
+ attempted, and can only be changed within an application-specific
+ completion function. The quoting is performed via a call to the
+ function pointed to by ‘rl_filename_quoting_function’.
-- Variable: int rl_attempted_completion_over
If an application-specific completion function assigned to
- 'rl_attempted_completion_function' sets this variable to a non-zero
+ ‘rl_attempted_completion_function’ sets this variable to a non-zero
value, Readline will not perform its default filename completion
even if the application's completion function returns no matches.
It should be set only by an application's completion function.
the list of completions (which implies that it cannot remove any
duplicate completions). The default value is 1, which means that
Readline will sort the completions and, depending on the value of
- 'rl_ignore_completion_duplicates', will attempt to remove duplicate
+ ‘rl_ignore_completion_duplicates’, will attempt to remove duplicate
matches.
-- Variable: int rl_completion_type
Set to a character describing the type of completion Readline is
currently attempting; see the description of
- 'rl_complete_internal()' (*note Completion Functions::) for the
+ ‘rl_complete_internal()’ (*note Completion Functions::) for the
list of characters. This is set to the appropriate value before
- any application-specific completion function is called, allowing
- such functions to present the same interface as 'rl_complete()'.
+ calling any application-specific completion function, so these
+ functions can present the same interface as ‘rl_complete()’.
-- Variable: int rl_completion_invoking_key
Set to the final character in the key sequence that invoked one of
- the completion functions that call 'rl_complete_internal()'. This
- is set to the appropriate value before any application-specific
- completion function is called.
+ the completion functions that call ‘rl_complete_internal()’. This
+ is set to the appropriate value before calling any
+ application-specific completion function.
-- Variable: int rl_inhibit_completion
- If this variable is non-zero, completion is inhibited. The
- completion character will be inserted as any other bound to
- 'self-insert'.
+ If this variable is non-zero, Readline does not perform completion,
+ even if a key binding indicates it should. The completion
+ character is inserted as if it were bound to ‘self-insert’.
\1f
File: readline.info, Node: A Short Completion Example, Prev: Completion Variables, Up: Custom Completers
--------------------------------
Here is a small application demonstrating the use of the GNU Readline
-library. It is called 'fileman', and the source code resides in
-'examples/fileman.c'. This sample application provides completion of
-command names, line editing features, and access to the history list.
+library. It is called ‘fileman’, and the source code resides in
+‘examples/fileman.c’. This sample application provides command name
+completion, line editing features, and access to the history list.
/* fileman.c -- A tiny application which demonstrates how to use the
GNU Readline library. This application interactively allows users
#include <fcntl.h>
#include <stdio.h>
#include <errno.h>
+ #include <locale.h>
#if defined (HAVE_STRING_H)
# include <string.h>
};
/* Forward declarations. */
- char *stripwhite ();
- COMMAND *find_command ();
+ char *stripwhite (char *);
+ COMMAND *find_command (char *);
/* The name of this program, as taken from argv[0]. */
char *progname;
int done;
char *
- dupstr (s)
- char *s;
+ dupstr (char *s)
{
char *r;
return (r);
}
- main (argc, argv)
- int argc;
- char **argv;
+ int
+ main (int argc, char **argv)
{
char *line, *s;
+ setlocale (LC_ALL, "");
+
progname = argv[0];
initialize_readline (); /* Bind our completer. */
/* Execute a command line. */
int
- execute_line (line)
- char *line;
+ execute_line (char *line)
{
register int i;
COMMAND *command;
/* Look up NAME as the name of a command, and return a pointer to that
command. Return a NULL pointer if NAME isn't a command name. */
COMMAND *
- find_command (name)
- char *name;
+ find_command (char *name)
{
register int i;
/* Strip whitespace from the start and end of STRING. Return a pointer
into STRING. */
char *
- stripwhite (string)
- char *string;
+ stripwhite (char *string)
{
register char *s, *t;
/* */
/* **************************************************************** */
- char *command_generator PARAMS((const char *, int));
- char **fileman_completion PARAMS((const char *, int, int));
+ char *command_generator (const char *, int);
+ char **fileman_completion (const char *, int, int);
/* Tell the GNU Readline library how to complete. We want to try to complete
on command names if this is the first word in the line, or on filenames
if not. */
- initialize_readline ()
+ void
+ initialize_readline (void)
{
/* Allow conditional parsing of the ~/.inputrc file. */
rl_readline_name = "FileMan";
in case we want to do some simple parsing. Return the array of matches,
or NULL if there aren't any. */
char **
- fileman_completion (text, start, end)
- const char *text;
- int start, end;
+ fileman_completion (const char *text, int start, int end)
{
char **matches;
to start from scratch; without any state (i.e. STATE == 0), then we
start at the top of the list. */
char *
- command_generator (text, state)
- const char *text;
- int state;
+ command_generator (const char *text, int state)
{
static int list_index, len;
char *name;
static char syscom[1024];
/* List the file(s) named in arg. */
- com_list (arg)
- char *arg;
+ int
+ com_list (char *arg)
{
if (!arg)
arg = "";
- sprintf (syscom, "ls -FClg %s", arg);
+ snprintf (syscom, sizeof (syscom), "ls -FClg %s", arg);
return (system (syscom));
}
- com_view (arg)
- char *arg;
+ int
+ com_view (char *arg)
{
if (!valid_argument ("view", arg))
return 1;
#if defined (__MSDOS__)
/* more.com doesn't grok slashes in pathnames */
- sprintf (syscom, "less %s", arg);
+ snprintf (syscom, sizeof (syscom), "less %s", arg);
#else
- sprintf (syscom, "more %s", arg);
+ snprintf (syscom, sizeof (syscom), "more %s", arg);
#endif
return (system (syscom));
}
- com_rename (arg)
- char *arg;
+ int
+ com_rename (char *arg)
{
too_dangerous ("rename");
return (1);
}
- com_stat (arg)
- char *arg;
+ int
+ com_stat (char *arg)
{
struct stat finfo;
return (0);
}
- com_delete (arg)
- char *arg;
+ int
+ com_delete (char *arg)
{
too_dangerous ("delete");
return (1);
/* Print out help for ARG, or for all of the commands if ARG is
not present. */
- com_help (arg)
- char *arg;
+ int
+ com_help (char *arg)
{
register int i;
int printed = 0;
if (!printed)
{
- printf ("No commands match `%s'. Possibilties are:\n", arg);
+ printf ("No commands match `%s'. Possibilities are:\n", arg);
for (i = 0; commands[i].name; i++)
{
}
/* Change to the directory ARG. */
- com_cd (arg)
- char *arg;
+ int
+ com_cd (char *arg)
{
if (chdir (arg) == -1)
{
}
/* Print out the current working directory. */
- com_pwd (ignore)
- char *ignore;
+ int
+ com_pwd (char *ignore)
{
char dir[1024], *s;
}
/* The user wishes to quit using this program. Just set DONE non-zero. */
- com_quit (arg)
- char *arg;
+ int
+ com_quit (char *arg)
{
done = 1;
return (0);
}
/* Function which tells you that you can't do this. */
- too_dangerous (caller)
- char *caller;
+ void
+ too_dangerous (char *caller)
{
fprintf (stderr,
"%s: Too dangerous for me to distribute. Write it yourself.\n",
/* Return non-zero if ARG is a valid argument for CALLER, else print
an error message and return zero. */
int
- valid_argument (caller, arg)
- char *caller, *arg;
+ valid_argument (char *caller, char *arg)
{
if (!arg || !*arg)
{
Version 1.3, 3 November 2008
- Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
+ Copyright © 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
<http://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
0. PREAMBLE
The purpose of this License is to make a manual, textbook, or other
- functional and useful document "free" in the sense of freedom: to
+ functional and useful document “free” in the sense of freedom: to
assure everyone the effective freedom to copy and redistribute it,
with or without modifying it, either commercially or
noncommercially. Secondarily, this License preserves for the
(line 6)
* notation, readline: Readline Bare Essentials.
(line 6)
-* readline, function: Basic Behavior. (line 12)
+* readline, function: Basic Behavior. (line 11)
* variables, readline: Readline Init File Syntax.
(line 34)
* yanking text: Readline Killing Commands.
\0\b[index\0\b]
* Menu:
-* _rl_digit_p: Utility Functions. (line 64)
-* _rl_digit_value: Utility Functions. (line 75)
-* _rl_lowercase_p: Utility Functions. (line 61)
-* _rl_to_lower: Utility Functions. (line 71)
-* _rl_to_upper: Utility Functions. (line 67)
-* _rl_uppercase_p: Utility Functions. (line 58)
+* _rl_digit_p: Utility Functions. (line 59)
+* _rl_digit_value: Utility Functions. (line 70)
+* _rl_lowercase_p: Utility Functions. (line 56)
+* _rl_to_lower: Utility Functions. (line 66)
+* _rl_to_upper: Utility Functions. (line 62)
+* _rl_uppercase_p: Utility Functions. (line 53)
* abort (C-g): Miscellaneous Commands.
(line 10)
* accept-line (Newline or Return): Commands For History.
(line 6)
-* backward-char (C-b): Commands For Moving. (line 15)
+* active-region-end-color: Readline Init File Syntax.
+ (line 48)
+* active-region-start-color: Readline Init File Syntax.
+ (line 35)
+* backward-char (C-b): Commands For Moving. (line 17)
* backward-delete-char (Rubout): Commands For Text. (line 17)
* backward-kill-line (C-x Rubout): Commands For Killing.
- (line 9)
+ (line 11)
* backward-kill-word (M-<DEL>): Commands For Killing.
- (line 24)
-* backward-word (M-b): Commands For Moving. (line 22)
+ (line 28)
+* backward-word (M-b): Commands For Moving. (line 24)
* beginning-of-history (M-<): Commands For History.
(line 19)
* beginning-of-line (C-a): Commands For Moving. (line 6)
* bell-style: Readline Init File Syntax.
- (line 35)
+ (line 61)
* bind-tty-special-chars: Readline Init File Syntax.
- (line 42)
+ (line 68)
* blink-matching-paren: Readline Init File Syntax.
- (line 47)
-* bracketed-paste-begin (): Commands For Text. (line 36)
+ (line 76)
+* bracketed-paste-begin (): Commands For Text. (line 37)
* call-last-kbd-macro (C-x e): Keyboard Macros. (line 13)
-* capitalize-word (M-c): Commands For Text. (line 64)
+* capitalize-word (M-c): Commands For Text. (line 68)
* character-search (C-]): Miscellaneous Commands.
- (line 42)
+ (line 41)
* character-search-backward (M-C-]): Miscellaneous Commands.
- (line 47)
-* clear-screen (C-l): Commands For Moving. (line 40)
+ (line 45)
+* clear-display (M-C-l): Commands For Moving. (line 42)
+* clear-screen (C-l): Commands For Moving. (line 47)
* colored-completion-prefix: Readline Init File Syntax.
- (line 52)
+ (line 81)
* colored-stats: Readline Init File Syntax.
- (line 59)
+ (line 91)
* comment-begin: Readline Init File Syntax.
- (line 65)
+ (line 97)
* complete (<TAB>): Commands For Completion.
(line 6)
* completion-display-width: Readline Init File Syntax.
- (line 70)
+ (line 101)
* completion-ignore-case: Readline Init File Syntax.
- (line 77)
+ (line 108)
* completion-map-case: Readline Init File Syntax.
- (line 82)
+ (line 113)
* completion-prefix-display-length: Readline Init File Syntax.
- (line 88)
+ (line 119)
* completion-query-items: Readline Init File Syntax.
- (line 95)
+ (line 126)
* convert-meta: Readline Init File Syntax.
- (line 105)
+ (line 137)
* copy-backward-word (): Commands For Killing.
- (line 49)
+ (line 53)
* copy-forward-word (): Commands For Killing.
- (line 54)
+ (line 58)
* copy-region-as-kill (): Commands For Killing.
- (line 45)
+ (line 49)
* delete-char (C-d): Commands For Text. (line 12)
* delete-char-or-list (): Commands For Completion.
- (line 39)
+ (line 38)
* delete-horizontal-space (): Commands For Killing.
- (line 37)
+ (line 41)
* digit-argument (M-0, M-1, ... M--): Numeric Arguments. (line 6)
* disable-completion: Readline Init File Syntax.
- (line 113)
+ (line 149)
* do-lowercase-version (M-A, M-B, M-X, ...): Miscellaneous Commands.
(line 14)
-* downcase-word (M-l): Commands For Text. (line 60)
+* downcase-word (M-l): Commands For Text. (line 64)
* dump-functions (): Miscellaneous Commands.
- (line 70)
+ (line 68)
* dump-macros (): Miscellaneous Commands.
- (line 82)
+ (line 80)
* dump-variables (): Miscellaneous Commands.
- (line 76)
+ (line 74)
* echo-control-characters: Readline Init File Syntax.
- (line 118)
+ (line 154)
* editing-mode: Readline Init File Syntax.
- (line 123)
+ (line 159)
* emacs-editing-mode (C-e): Miscellaneous Commands.
- (line 88)
+ (line 94)
* emacs-mode-string: Readline Init File Syntax.
- (line 129)
+ (line 165)
+* enable-active-region The: Readline Init File Syntax.
+ (line 175)
* enable-bracketed-paste: Readline Init File Syntax.
- (line 139)
+ (line 188)
* enable-keypad: Readline Init File Syntax.
- (line 147)
+ (line 197)
+* enable-meta-key: Readline Init File Syntax.
+ (line 202)
* end-kbd-macro (C-x )): Keyboard Macros. (line 9)
* end-of-file (usually C-d): Commands For Text. (line 6)
* end-of-history (M->): Commands For History.
(line 22)
-* end-of-line (C-e): Commands For Moving. (line 9)
+* end-of-line (C-e): Commands For Moving. (line 10)
* exchange-point-and-mark (C-x C-x): Miscellaneous Commands.
(line 37)
+* execute-named-command (M-x): Miscellaneous Commands.
+ (line 87)
* expand-tilde: Readline Init File Syntax.
- (line 158)
-* forward-backward-delete-char (): Commands For Text. (line 21)
-* forward-char (C-f): Commands For Moving. (line 12)
+ (line 212)
+* fetch-history (): Commands For History.
+ (line 105)
+* force-meta-prefix: Readline Init File Syntax.
+ (line 216)
+* forward-backward-delete-char (): Commands For Text. (line 22)
+* forward-char (C-f): Commands For Moving. (line 14)
* forward-search-history (C-s): Commands For History.
- (line 30)
-* forward-word (M-f): Commands For Moving. (line 18)
+ (line 32)
+* forward-word (M-f): Commands For Moving. (line 20)
* history-preserve-point: Readline Init File Syntax.
- (line 162)
+ (line 229)
* history-search-backward (): Commands For History.
- (line 52)
+ (line 50)
* history-search-forward (): Commands For History.
- (line 46)
+ (line 57)
* history-size: Readline Init File Syntax.
- (line 168)
+ (line 235)
* history-substring-search-backward (): Commands For History.
(line 64)
* history-substring-search-forward (): Commands For History.
- (line 58)
+ (line 70)
* horizontal-scroll-mode: Readline Init File Syntax.
- (line 177)
+ (line 244)
* input-meta: Readline Init File Syntax.
- (line 184)
+ (line 252)
* insert-comment (M-#): Miscellaneous Commands.
- (line 61)
+ (line 59)
* insert-completions (M-*): Commands For Completion.
(line 18)
* isearch-terminators: Readline Init File Syntax.
- (line 192)
+ (line 263)
* keymap: Readline Init File Syntax.
- (line 199)
+ (line 270)
* kill-line (C-k): Commands For Killing.
(line 6)
* kill-region (): Commands For Killing.
- (line 41)
+ (line 45)
* kill-whole-line (): Commands For Killing.
- (line 15)
-* kill-word (M-d): Commands For Killing.
(line 19)
+* kill-word (M-d): Commands For Killing.
+ (line 23)
* mark-modified-lines: Readline Init File Syntax.
- (line 229)
+ (line 300)
* mark-symlinked-directories: Readline Init File Syntax.
- (line 234)
+ (line 305)
* match-hidden-files: Readline Init File Syntax.
- (line 239)
+ (line 310)
* menu-complete (): Commands For Completion.
(line 22)
* menu-complete-backward (): Commands For Completion.
- (line 34)
+ (line 33)
* menu-complete-display-prefix: Readline Init File Syntax.
- (line 246)
+ (line 317)
* meta-flag: Readline Init File Syntax.
- (line 184)
+ (line 252)
* next-history (C-n): Commands For History.
(line 16)
-* next-screen-line (): Commands For Moving. (line 33)
+* next-screen-line (): Commands For Moving. (line 35)
* non-incremental-forward-search-history (M-n): Commands For History.
- (line 40)
+ (line 44)
* non-incremental-reverse-search-history (M-p): Commands For History.
- (line 34)
+ (line 38)
+* operate-and-get-next (C-o): Commands For History.
+ (line 98)
* output-meta: Readline Init File Syntax.
- (line 251)
-* overwrite-mode (): Commands For Text. (line 68)
+ (line 322)
+* overwrite-mode (): Commands For Text. (line 72)
* page-completions: Readline Init File Syntax.
- (line 257)
+ (line 331)
* possible-completions (M-?): Commands For Completion.
(line 11)
* prefix-meta (<ESC>): Miscellaneous Commands.
(line 19)
* previous-history (C-p): Commands For History.
(line 12)
-* previous-screen-line (): Commands For Moving. (line 26)
+* previous-screen-line (): Commands For Moving. (line 28)
* print-last-kbd-macro (): Keyboard Macros. (line 17)
-* quoted-insert (C-q or C-v): Commands For Text. (line 26)
+* quoted-insert (C-q or C-v): Commands For Text. (line 27)
* re-read-init-file (C-x C-r): Miscellaneous Commands.
(line 6)
-* readline: Basic Behavior. (line 12)
-* redraw-current-line (): Commands For Moving. (line 44)
+* readline: Basic Behavior. (line 11)
+* redraw-current-line (): Commands For Moving. (line 51)
* reverse-search-history (C-r): Commands For History.
(line 26)
* revert-all-at-newline: Readline Init File Syntax.
- (line 267)
+ (line 344)
* revert-line (M-r): Miscellaneous Commands.
(line 26)
-* rl_add_defun: Function Naming. (line 18)
+* rl_activate_mark: Miscellaneous Functions.
+ (line 62)
+* rl_add_defun: Function Naming. (line 19)
* rl_add_funmap_entry: Associating Function Names and Bindings.
- (line 45)
-* rl_add_undo: Allowing Undoing. (line 39)
-* rl_alphabetic: Utility Functions. (line 38)
-* rl_already_prompted: Readline Variables. (line 63)
+ (line 70)
+* rl_add_undo: Allowing Undoing. (line 40)
+* rl_alphabetic: Utility Functions. (line 33)
+* rl_already_prompted: Readline Variables. (line 74)
* rl_attempted_completion_function: Completion Variables.
(line 11)
* rl_attempted_completion_over: Completion Variables.
- (line 253)
+ (line 291)
* rl_basic_quote_characters: Completion Variables.
- (line 143)
+ (line 165)
* rl_basic_word_break_characters: Completion Variables.
- (line 137)
-* rl_begin_undo_group: Allowing Undoing. (line 28)
-* rl_binding_keymap: Readline Variables. (line 184)
+ (line 159)
+* rl_begin_undo_group: Allowing Undoing. (line 29)
* rl_bind_key: Binding Keys. (line 21)
-* rl_bind_keyseq: Binding Keys. (line 57)
-* rl_bind_keyseq_if_unbound: Binding Keys. (line 75)
-* rl_bind_keyseq_if_unbound_in_map: Binding Keys. (line 81)
-* rl_bind_keyseq_in_map: Binding Keys. (line 64)
* rl_bind_key_if_unbound: Binding Keys. (line 30)
* rl_bind_key_if_unbound_in_map: Binding Keys. (line 36)
* rl_bind_key_in_map: Binding Keys. (line 25)
-* rl_callback_handler_install: Alternate Interface. (line 13)
-* rl_callback_handler_remove: Alternate Interface. (line 42)
-* rl_callback_read_char: Alternate Interface. (line 22)
-* rl_callback_sigcleanup: Alternate Interface. (line 35)
+* rl_bind_keyseq: Binding Keys. (line 58)
+* rl_bind_keyseq_if_unbound: Binding Keys. (line 76)
+* rl_bind_keyseq_if_unbound_in_map: Binding Keys. (line 82)
+* rl_bind_keyseq_in_map: Binding Keys. (line 65)
+* rl_binding_keymap: Readline Variables. (line 211)
+* rl_callback_handler_install: Alternate Interface. (line 14)
+* rl_callback_handler_remove: Alternate Interface. (line 44)
+* rl_callback_read_char: Alternate Interface. (line 23)
+* rl_callback_sigcleanup: Alternate Interface. (line 37)
* rl_catch_signals: Readline Signal Handling.
(line 69)
* rl_catch_sigwinch: Readline Signal Handling.
* rl_change_environment: Readline Signal Handling.
(line 90)
* rl_char_is_quoted_p: Completion Variables.
- (line 45)
+ (line 48)
* rl_check_signals: Readline Signal Handling.
(line 133)
* rl_cleanup_after_signal: Readline Signal Handling.
(line 107)
* rl_clear_history: Miscellaneous Functions.
- (line 49)
+ (line 56)
* rl_clear_message: Redisplay. (line 51)
* rl_clear_pending_input: Character Input. (line 29)
* rl_clear_signals: Readline Signal Handling.
- (line 179)
+ (line 182)
* rl_clear_visible_line: Redisplay. (line 25)
* rl_complete: How Completing Works.
(line 46)
* rl_complete <1>: Completion Functions.
(line 19)
-* rl_completer_quote_characters: Completion Variables.
- (line 160)
-* rl_completer_word_break_characters: Completion Variables.
- (line 146)
* rl_complete_internal: Completion Functions.
(line 9)
-* rl_completion_append_character: Completion Variables.
+* rl_completer_quote_characters: Completion Variables.
(line 184)
+* rl_completer_word_break_characters: Completion Variables.
+ (line 169)
+* rl_completion_append_character: Completion Variables.
+ (line 210)
* rl_completion_display_matches_hook: Completion Variables.
- (line 124)
+ (line 146)
* rl_completion_entry_function: How Completing Works.
(line 52)
* rl_completion_entry_function <1>: Completion Variables.
(line 6)
* rl_completion_found_quote: Completion Variables.
- (line 212)
+ (line 235)
* rl_completion_invoking_key: Completion Variables.
- (line 276)
+ (line 314)
* rl_completion_mark_symlink_dirs: Completion Variables.
- (line 218)
+ (line 247)
* rl_completion_matches: Completion Functions.
(line 43)
* rl_completion_mode: Completion Functions.
(line 36)
* rl_completion_query_items: Completion Variables.
- (line 178)
+ (line 202)
* rl_completion_quote_character: Completion Variables.
- (line 200)
+ (line 241)
+* rl_completion_rewrite_hook: Completion Variables.
+ (line 128)
* rl_completion_suppress_append: Completion Variables.
- (line 194)
+ (line 222)
* rl_completion_suppress_quote: Completion Variables.
- (line 206)
+ (line 229)
* rl_completion_type: Completion Variables.
- (line 268)
+ (line 306)
* rl_completion_word_break_hook: Completion Variables.
- (line 151)
+ (line 175)
* rl_copy_keymap: Keymaps. (line 16)
* rl_copy_text: Modifying Text. (line 14)
* rl_crlf: Redisplay. (line 33)
+* rl_deactivate_mark: Miscellaneous Functions.
+ (line 70)
* rl_delete_text: Modifying Text. (line 10)
+* rl_deprep_term_function: Readline Variables. (line 193)
* rl_deprep_terminal: Terminal Management. (line 12)
-* rl_deprep_term_function: Readline Variables. (line 174)
-* rl_ding: Utility Functions. (line 35)
+* rl_ding: Utility Functions. (line 30)
* rl_directory_completion_hook: Completion Variables.
- (line 63)
+ (line 65)
* rl_directory_rewrite_hook;: Completion Variables.
- (line 81)
+ (line 83)
* rl_discard_keymap: Keymaps. (line 25)
-* rl_dispatching: Readline Variables. (line 40)
-* rl_display_match_list: Utility Functions. (line 41)
-* rl_display_prompt: Readline Variables. (line 58)
-* rl_done: Readline Variables. (line 27)
-* rl_do_undo: Allowing Undoing. (line 47)
+* rl_dispatching: Readline Variables. (line 49)
+* rl_display_match_list: Utility Functions. (line 36)
+* rl_display_prompt: Readline Variables. (line 69)
+* rl_do_undo: Allowing Undoing. (line 48)
+* rl_done: Readline Variables. (line 28)
* rl_echo_signal_char: Readline Signal Handling.
(line 143)
-* rl_editing_mode: Readline Variables. (line 281)
+* rl_editing_mode: Readline Variables. (line 318)
* rl_empty_keymap: Keymaps. (line 33)
* rl_end: Readline Variables. (line 18)
-* rl_end_undo_group: Allowing Undoing. (line 34)
-* rl_erase_empty_line: Readline Variables. (line 46)
-* rl_event_hook: Readline Variables. (line 123)
+* rl_end_undo_group: Allowing Undoing. (line 35)
+* rl_eof_found: Readline Variables. (line 34)
+* rl_erase_empty_line: Readline Variables. (line 55)
+* rl_event_hook: Readline Variables. (line 137)
* rl_execute_next: Character Input. (line 25)
-* rl_executing_key: Readline Variables. (line 191)
-* rl_executing_keymap: Readline Variables. (line 180)
-* rl_executing_keyseq: Readline Variables. (line 195)
-* rl_executing_macro: Readline Variables. (line 188)
+* rl_executing_key: Readline Variables. (line 218)
+* rl_executing_keymap: Readline Variables. (line 207)
+* rl_executing_keyseq: Readline Variables. (line 222)
+* rl_executing_macro: Readline Variables. (line 215)
* rl_expand_prompt: Redisplay. (line 66)
-* rl_explicit_arg: Readline Variables. (line 272)
-* rl_extend_line_buffer: Utility Functions. (line 26)
+* rl_explicit_arg: Readline Variables. (line 308)
+* rl_extend_line_buffer: Utility Functions. (line 21)
* rl_filename_completion_desired: Completion Variables.
- (line 233)
+ (line 262)
* rl_filename_completion_function: Completion Functions.
(line 57)
* rl_filename_dequoting_function: Completion Variables.
- (line 36)
+ (line 39)
* rl_filename_quote_characters: Completion Variables.
- (line 166)
+ (line 190)
* rl_filename_quoting_desired: Completion Variables.
- (line 243)
+ (line 272)
* rl_filename_quoting_function: Completion Variables.
- (line 23)
+ (line 24)
* rl_filename_rewrite_hook: Completion Variables.
- (line 109)
+ (line 111)
* rl_filename_stat_hook: Completion Variables.
- (line 97)
+ (line 99)
* rl_forced_update_display: Redisplay. (line 10)
* rl_free: Utility Functions. (line 17)
* rl_free_keymap: Keymaps. (line 29)
* rl_free_line_state: Readline Signal Handling.
(line 113)
-* rl_free_undo_list: Allowing Undoing. (line 44)
+* rl_free_undo_list: Allowing Undoing. (line 45)
+* rl_full_quoting_desired: Completion Variables.
+ (line 282)
* rl_function_dumper: Associating Function Names and Bindings.
- (line 29)
+ (line 54)
* rl_function_of_keyseq: Associating Function Names and Bindings.
- (line 13)
+ (line 14)
+* rl_function_of_keyseq_len: Associating Function Names and Bindings.
+ (line 23)
* rl_funmap_names: Associating Function Names and Bindings.
- (line 39)
-* rl_generic_bind: Binding Keys. (line 87)
-* rl_getc: Character Input. (line 14)
-* rl_getc_function: Readline Variables. (line 128)
-* rl_get_keymap: Keymaps. (line 40)
-* rl_get_keymap_by_name: Keymaps. (line 46)
-* rl_get_keymap_name: Keymaps. (line 51)
+ (line 64)
+* rl_generic_bind: Binding Keys. (line 88)
+* rl_get_keymap: Keymaps. (line 41)
+* rl_get_keymap_by_name: Keymaps. (line 47)
+* rl_get_keymap_name: Keymaps. (line 52)
* rl_get_screen_size: Readline Signal Handling.
- (line 162)
+ (line 165)
* rl_get_termcap: Miscellaneous Functions.
- (line 41)
-* rl_gnu_readline_p: Readline Variables. (line 82)
+ (line 44)
+* rl_getc: Character Input. (line 14)
+* rl_getc_function: Readline Variables. (line 142)
+* rl_gnu_readline_p: Readline Variables. (line 94)
* rl_ignore_completion_duplicates: Completion Variables.
- (line 229)
+ (line 258)
* rl_ignore_some_completions_function: Completion Variables.
- (line 55)
+ (line 57)
* rl_inhibit_completion: Completion Variables.
- (line 282)
-* rl_initialize: Utility Functions. (line 30)
-* rl_input_available_hook: Readline Variables. (line 140)
+ (line 320)
+* rl_initialize: Utility Functions. (line 25)
+* rl_input_available_hook: Readline Variables. (line 158)
* rl_insert_completions: Completion Functions.
(line 31)
* rl_insert_text: Modifying Text. (line 6)
-* rl_instream: Readline Variables. (line 96)
+* rl_instream: Readline Variables. (line 110)
* rl_invoking_keyseqs: Associating Function Names and Bindings.
- (line 20)
+ (line 38)
* rl_invoking_keyseqs_in_map: Associating Function Names and Bindings.
- (line 24)
-* rl_key_sequence_length: Readline Variables. (line 199)
+ (line 42)
+* rl_keep_mark_active: Miscellaneous Functions.
+ (line 73)
+* rl_key_sequence_length: Readline Variables. (line 226)
* rl_kill_text: Modifying Text. (line 18)
-* rl_last_func: Readline Variables. (line 109)
-* rl_library_version: Readline Variables. (line 72)
+* rl_last_func: Readline Variables. (line 123)
+* rl_library_version: Readline Variables. (line 83)
* rl_line_buffer: Readline Variables. (line 8)
* rl_list_funmap_names: Associating Function Names and Bindings.
- (line 35)
+ (line 60)
* rl_macro_bind: Miscellaneous Functions.
(line 6)
+* rl_macro_display_hook: Readline Variables. (line 199)
* rl_macro_dumper: Miscellaneous Functions.
(line 13)
* rl_make_bare_keymap: Keymaps. (line 11)
* rl_make_keymap: Keymaps. (line 19)
* rl_mark: Readline Variables. (line 23)
+* rl_mark_active_p: Miscellaneous Functions.
+ (line 79)
* rl_message: Redisplay. (line 42)
-* rl_modifying: Allowing Undoing. (line 56)
+* rl_modifying: Allowing Undoing. (line 58)
* rl_named_function: Associating Function Names and Bindings.
(line 10)
-* rl_numeric_arg: Readline Variables. (line 276)
-* rl_num_chars_to_read: Readline Variables. (line 31)
+* rl_num_chars_to_read: Readline Variables. (line 40)
+* rl_numeric_arg: Readline Variables. (line 313)
* rl_on_new_line: Redisplay. (line 14)
* rl_on_new_line_with_prompt: Redisplay. (line 18)
-* rl_outstream: Readline Variables. (line 100)
-* rl_parse_and_bind: Binding Keys. (line 95)
-* rl_pending_input: Readline Variables. (line 36)
+* rl_outstream: Readline Variables. (line 114)
+* rl_parse_and_bind: Binding Keys. (line 97)
+* rl_pending_input: Readline Variables. (line 45)
* rl_pending_signal: Readline Signal Handling.
(line 102)
* rl_persistent_signal_handlers: Readline Signal Handling.
* rl_point: Readline Variables. (line 14)
* rl_possible_completions: Completion Functions.
(line 27)
-* rl_prefer_env_winsize: Readline Variables. (line 104)
+* rl_pre_input_hook: Readline Variables. (line 132)
+* rl_prefer_env_winsize: Readline Variables. (line 118)
+* rl_prep_term_function: Readline Variables. (line 186)
* rl_prep_terminal: Terminal Management. (line 6)
-* rl_prep_term_function: Readline Variables. (line 167)
-* rl_pre_input_hook: Readline Variables. (line 118)
-* rl_prompt: Readline Variables. (line 52)
-* rl_push_macro_input: Modifying Text. (line 25)
-* rl_readline_name: Readline Variables. (line 91)
-* rl_readline_state: Readline Variables. (line 202)
-* rl_readline_version: Readline Variables. (line 75)
-* rl_read_init_file: Binding Keys. (line 100)
+* rl_print_keybinding: Associating Function Names and Bindings.
+ (line 47)
+* rl_prompt: Readline Variables. (line 61)
+* rl_push_macro_input: Modifying Text. (line 30)
+* rl_read_init_file: Binding Keys. (line 102)
* rl_read_key: Character Input. (line 6)
+* rl_readline_name: Readline Variables. (line 105)
+* rl_readline_state: Readline Variables. (line 229)
+* rl_readline_version: Readline Variables. (line 87)
* rl_redisplay: Redisplay. (line 6)
-* rl_redisplay_function: Readline Variables. (line 161)
-* rl_replace_line: Utility Functions. (line 21)
+* rl_redisplay_function: Readline Variables. (line 180)
+* rl_reparse_colors: Miscellaneous Functions.
+ (line 53)
+* rl_replace_line: Modifying Text. (line 25)
* rl_reset_after_signal: Readline Signal Handling.
(line 121)
* rl_reset_line_state: Redisplay. (line 29)
* rl_reset_screen_size: Readline Signal Handling.
- (line 166)
+ (line 169)
* rl_reset_terminal: Terminal Management. (line 34)
* rl_resize_terminal: Readline Signal Handling.
(line 149)
* rl_restore_state: Utility Functions. (line 11)
* rl_save_prompt: Redisplay. (line 56)
* rl_save_state: Utility Functions. (line 6)
-* rl_set_key: Binding Keys. (line 71)
+* rl_set_key: Binding Keys. (line 72)
* rl_set_keyboard_input_timeout: Character Input. (line 34)
-* rl_set_keymap: Keymaps. (line 43)
+* rl_set_keymap: Keymaps. (line 44)
+* rl_set_keymap_name: Keymaps. (line 57)
* rl_set_paren_blink_timeout: Miscellaneous Functions.
- (line 36)
-* rl_set_prompt: Redisplay. (line 80)
+ (line 39)
+* rl_set_prompt: Redisplay. (line 82)
* rl_set_screen_size: Readline Signal Handling.
(line 153)
* rl_set_signals: Readline Signal Handling.
- (line 173)
+ (line 176)
+* rl_set_timeout: Character Input. (line 42)
* rl_show_char: Redisplay. (line 36)
-* rl_signal_event_hook: Readline Variables. (line 136)
+* rl_signal_event_hook: Readline Variables. (line 149)
* rl_sort_completion_matches: Completion Variables.
- (line 260)
+ (line 298)
* rl_special_prefixes: Completion Variables.
- (line 171)
-* rl_startup_hook: Readline Variables. (line 114)
+ (line 195)
+* rl_startup_hook: Readline Variables. (line 128)
* rl_stuff_char: Character Input. (line 18)
-* rl_terminal_name: Readline Variables. (line 86)
+* rl_terminal_name: Readline Variables. (line 98)
+* rl_timeout_event_hook: Readline Variables. (line 154)
+* rl_timeout_remaining: Character Input. (line 52)
+* rl_trim_arg_from_keyseq: Associating Function Names and Bindings.
+ (line 30)
* rl_tty_set_default_bindings: Terminal Management. (line 17)
* rl_tty_set_echoing: Terminal Management. (line 27)
* rl_tty_unset_default_bindings: Terminal Management. (line 22)
-* rl_unbind_command_in_map: Binding Keys. (line 53)
-* rl_unbind_function_in_map: Binding Keys. (line 49)
+* rl_unbind_command_in_map: Binding Keys. (line 54)
+* rl_unbind_function_in_map: Binding Keys. (line 50)
* rl_unbind_key: Binding Keys. (line 41)
-* rl_unbind_key_in_map: Binding Keys. (line 45)
+* rl_unbind_key_in_map: Binding Keys. (line 46)
* rl_username_completion_function: Completion Functions.
(line 64)
* rl_variable_bind: Miscellaneous Functions.
- (line 19)
+ (line 21)
* rl_variable_dumper: Miscellaneous Functions.
- (line 30)
+ (line 33)
* rl_variable_value: Miscellaneous Functions.
- (line 25)
-* self-insert (a, b, A, 1, !, ...): Commands For Text. (line 33)
+ (line 28)
+* search-ignore-case: Readline Init File Syntax.
+ (line 351)
+* self-insert (a, b, A, 1, !, ...): Commands For Text. (line 34)
* set-mark (C-@): Miscellaneous Commands.
(line 33)
* show-all-if-ambiguous: Readline Init File Syntax.
- (line 273)
+ (line 356)
* show-all-if-unmodified: Readline Init File Syntax.
- (line 279)
+ (line 362)
* show-mode-in-prompt: Readline Init File Syntax.
- (line 288)
+ (line 371)
* skip-completed-text: Readline Init File Syntax.
- (line 294)
+ (line 377)
* skip-csi-sequence (): Miscellaneous Commands.
- (line 52)
+ (line 50)
* start-kbd-macro (C-x (): Keyboard Macros. (line 6)
-* tab-insert (M-<TAB>): Commands For Text. (line 30)
+* tab-insert (M-<TAB>): Commands For Text. (line 31)
* tilde-expand (M-~): Miscellaneous Commands.
(line 30)
-* transpose-chars (C-t): Commands For Text. (line 45)
-* transpose-words (M-t): Commands For Text. (line 51)
+* transpose-chars (C-t): Commands For Text. (line 49)
+* transpose-words (M-t): Commands For Text. (line 55)
* undo (C-_ or C-x C-u): Miscellaneous Commands.
(line 23)
* universal-argument (): Numeric Arguments. (line 10)
* unix-filename-rubout (): Commands For Killing.
- (line 32)
+ (line 36)
* unix-line-discard (C-u): Commands For Killing.
- (line 12)
+ (line 16)
* unix-word-rubout (C-w): Commands For Killing.
- (line 28)
-* upcase-word (M-u): Commands For Text. (line 56)
+ (line 32)
+* upcase-word (M-u): Commands For Text. (line 60)
* vi-cmd-mode-string: Readline Init File Syntax.
- (line 307)
+ (line 390)
* vi-editing-mode (M-C-j): Miscellaneous Commands.
- (line 92)
+ (line 98)
* vi-ins-mode-string: Readline Init File Syntax.
- (line 318)
+ (line 401)
* visible-stats: Readline Init File Syntax.
- (line 329)
+ (line 412)
* yank (C-y): Commands For Killing.
- (line 59)
+ (line 63)
* yank-last-arg (M-. or M-_): Commands For History.
- (line 79)
+ (line 86)
* yank-nth-arg (M-C-y): Commands For History.
- (line 70)
+ (line 76)
* yank-pop (M-y): Commands For Killing.
- (line 62)
+ (line 66)
\1f
Tag Table:
-Node: Top\7f865
-Node: Command Line Editing\7f1590
-Node: Introduction and Notation\7f2242
-Node: Readline Interaction\7f3866
-Node: Readline Bare Essentials\7f5058
-Node: Readline Movement Commands\7f6842
-Node: Readline Killing Commands\7f7803
-Node: Readline Arguments\7f9722
-Node: Searching\7f10767
-Node: Readline Init File\7f12920
-Node: Readline Init File Syntax\7f14074
-Node: Conditional Init Constructs\7f34165
-Node: Sample Init File\7f38362
-Node: Bindable Readline Commands\7f41480
-Node: Commands For Moving\7f42535
-Node: Commands For History\7f44102
-Node: Commands For Text\7f48367
-Node: Commands For Killing\7f51810
-Node: Numeric Arguments\7f53977
-Node: Commands For Completion\7f55117
-Node: Keyboard Macros\7f57086
-Node: Miscellaneous Commands\7f57774
-Node: Readline vi Mode\7f61696
-Node: Programming with GNU Readline\7f63513
-Node: Basic Behavior\7f64499
-Node: Custom Functions\7f68182
-Node: Readline Typedefs\7f69665
-Node: Function Writing\7f71299
-Node: Readline Variables\7f72613
-Node: Readline Convenience Functions\7f85285
-Node: Function Naming\7f86357
-Node: Keymaps\7f87619
-Node: Binding Keys\7f89774
-Node: Associating Function Names and Bindings\7f94322
-Node: Allowing Undoing\7f96607
-Node: Redisplay\7f99157
-Node: Modifying Text\7f103181
-Node: Character Input\7f104428
-Node: Terminal Management\7f106326
-Node: Utility Functions\7f108149
-Node: Miscellaneous Functions\7f111477
-Node: Alternate Interface\7f114066
-Node: A Readline Example\7f116808
-Node: Alternate Interface Example\7f118747
-Node: Readline Signal Handling\7f122279
-Node: Custom Completers\7f131328
-Node: How Completing Works\7f132048
-Node: Completion Functions\7f135355
-Node: Completion Variables\7f138929
-Node: A Short Completion Example\7f154573
-Node: GNU Free Documentation License\7f167352
-Node: Concept Index\7f192526
-Node: Function and Variable Index\7f194047
+Node: Top\7f863
+Node: Command Line Editing\7f1588
+Node: Introduction and Notation\7f2240
+Node: Readline Interaction\7f4594
+Node: Readline Bare Essentials\7f5786
+Node: Readline Movement Commands\7f7598
+Node: Readline Killing Commands\7f8598
+Node: Readline Arguments\7f10625
+Node: Searching\7f11686
+Node: Readline Init File\7f13917
+Node: Readline Init File Syntax\7f15115
+Node: Conditional Init Constructs\7f41480
+Node: Sample Init File\7f45869
+Node: Bindable Readline Commands\7f48994
+Node: Commands For Moving\7f50312
+Node: Commands For History\7f52242
+Node: Commands For Text\7f57447
+Node: Commands For Killing\7f61226
+Node: Numeric Arguments\7f63682
+Node: Commands For Completion\7f64838
+Node: Keyboard Macros\7f66925
+Node: Miscellaneous Commands\7f67630
+Node: Readline vi Mode\7f71954
+Node: Programming with GNU Readline\7f73851
+Node: Basic Behavior\7f74837
+Node: Custom Functions\7f78900
+Node: Readline Typedefs\7f80422
+Node: Function Writing\7f82308
+Node: Readline Variables\7f83614
+Node: Readline Convenience Functions\7f98580
+Node: Function Naming\7f99656
+Node: Keymaps\7f100987
+Node: Binding Keys\7f104149
+Node: Associating Function Names and Bindings\7f108974
+Node: Allowing Undoing\7f112804
+Node: Redisplay\7f115554
+Node: Modifying Text\7f119856
+Node: Character Input\7f121395
+Node: Terminal Management\7f124552
+Node: Utility Functions\7f126439
+Node: Miscellaneous Functions\7f129549
+Node: Alternate Interface\7f133439
+Node: A Readline Example\7f136334
+Node: Alternate Interface Example\7f138252
+Node: Readline Signal Handling\7f141871
+Node: Custom Completers\7f151421
+Node: How Completing Works\7f152141
+Node: Completion Functions\7f155517
+Node: Completion Variables\7f159184
+Node: A Short Completion Example\7f177502
+Node: GNU Free Documentation License\7f190171
+Node: Concept Index\7f215348
+Node: Function and Variable Index\7f216869
\1f
End Tag Table
+
+\1f
+Local Variables:
+coding: utf-8
+End:
%!PS-Adobe-2.0
-%%Creator: dvips(k) 5.997 Copyright 2017 Radical Eye Software
+%%Creator: dvips(k) 2024.1 (TeX Live 2024) Copyright 2024 Radical Eye Software
%%Title: readline.dvi
-%%CreationDate: Tue Jan 2 15:55:39 2018
-%%Pages: 80
+%%CreationDate: Fri Oct 11 20:53:43 2024
+%%Pages: 88
%%PageOrder: Ascend
%%BoundingBox: 0 0 596 842
%%DocumentFonts: CMBX12 CMR10 CMTT10 CMSY10 CMMI12 CMMI10 CMCSC10
-%%+ CMSLTT10 CMTI10 CMSL10 CMSS10 CMTT9 CMR9 CMMI9
+%%+ CMSLTT10 CMSL10 CMTI10 CMSS10 CMTT9 CMR9 CMMI9
%%DocumentPaperSizes: a4
%%EndComments
%DVIPSWebPage: (www.radicaleye.com)
%DVIPSCommandLine: dvips -D 300 -o readline.ps readline.dvi
%DVIPSParameters: dpi=300
-%DVIPSSource: TeX output 2018.01.02:1055
+%DVIPSSource: TeX output 2024.10.11:1652
%%BeginProcSet: tex.pro 0 0
%!
/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
dup 55 /seven put
dup 56 /eight put
dup 57 /nine put
+dup 84 /T put
dup 97 /a put
dup 98 /b put
dup 99 /c put
C1CEE50DA12BF2F08521A17641A2F5541EC84195149392FB34E900EE8C130A72
A06E8D5C1C3012486BCBE6F82A8570054C243ADAB55F1BD0A2AC1D73029F6E0A
91230FC5BD62E7C8179271886FE2A3D0A4D55D26A953064E16B99189D714CE51
-6C1ED25B47BBBF5494E1C788038B82BFD0D6CE9DB60E49EAF500DF9ED431BE3B
-5C5E93A14078C7962DCCF2A34966BC16EC17989C10D2C74FE0DC9306CEB61DF8
-A42FB761999A3EB75E31431F568CDEB0A3CC8C5FB6B76B8768086F20D284D302
-A144E5CDDB303676D612FE7D749FAF7E0EEBA5D5FF48E3CBBE5046131A8A00DB
-21F4A2C8788781CC2D3ED96148B7C77CAA7278CC32284B2BC83BBF542172F186
-677F635F73216E1D41D2CA802498C469234B79AF35BE521DF9E633293B1BAFDD
-3A0B043626E3CB0EE9072FE09F90B8ABAB28F60C42CD3F2323B7BA4E4F9FF6C9
-BEB3D0E12B74799E2321A65B88840470446AFB66E7B9FD92638947923F8942B8
-B9182715510969377DE1362216F2EF6B96D4622ABE65EBBC5F7FC397B50DF682
-07EEB73A649383B86EB255B9145916EE2E8C326052ECDE0EB367DCB62F7F88B3
-6F9F23853CF377EDF5F4B1F0A6DF99EF29F21452D2628A40F589BBA831118DA9
-DDF19BB85E5AF7D79F5DB4015D90F3AF189E7D5E9E3585B9D444218B889366E5
-7B4B8EB34F4106ED4E54EF08F08581EB40A5B49E214A86251FEB131BCB071406
-B322E962F9B14AEBD38747B44F976B30B184AD7667EB5AE3EBA6744D6C8422D8
-F4CB40C3216799F46067651DD21F6F763A59E93B9A67484E6CF9EEE3913B6687
-BFE8E68087D287651AA7666BA83B0D271A422E3F0FE0C2942AFA64F71B8237F5
-31C7F7D6E5D4903D3CA32C77781BD8C959FD6DD1BE80C113B59B39F1941E8770
-BF7F8B7139ADF77E2CCADFD99E2A87A5C10802D2D6CE3D9A3830378BE37D8903
-B87B38EF25C49FE93C797FEF7114D4BE3A58555F701CE4D8BC2605CEA9725E08
-B2460459E5A4CE44793FDF3C212A6B5909B49A4ECA55F53AA3B9AF63A2DDD339
-9023D61FF6C29721EF2B49C89320372059FA33F25CF6BC7F64E3B4EC7D7527F9
-62A8FE056259BFC788F24506F8F6E9777B693AA26F646A22F3ABA85A6FEE1B41
-373D90C3CB55A474A2E5EF80A129F5628CD064B590DEEE7935DE9AF5D68C622C
-814452DB304B52DEF5C9490B1366BA1834AC5B27DFF17CAA5722CF783AC8283D
-B84A3DD19587B204EF584499E78DB2222DCCD50847959B4820CCDC092F88693E
-50B9DA33FFEE72C235520F58332A3725BF62BEB005D36FD3CD1B2310B2982A34
-A095ACF013BB5C340A21B4537A7BDCD5161377A4818CC44D8A15BE7CACC03D33
-11CDF7811E0CF02F6F3213D3B598713F2EDE54E6857A526879C920D085A01997
-8DA06915850E5402A4444AABCB08881EDCA2DD068E1455BF9A155C54EF315FAA
-279D726F57FC86300BC4D9DFCD4D44EDFDDD4B00DE34948028C7A9255B931CC2
-77A0FF40F7ABEC709B67C6EADAD9D24B014DEB4C342E5F37E1CA26A1999CFDAF
-50D8E76F1715FA8EF095B88D9A8DF4325572B26753F763F264DA8887E4E5845E
-2A01F86149EBDD9CFC21CF2852CE95386DBB1E4DAA2113AA1E0C53746A3AA5F5
-78570500FB89E376549E282E2AE990E72C0E77F701FCC977868ED3FBB7C9CCCF
-CD28795A80AE8787EF1D0C374297819A324504623E12688B08E4782B18F05C75
-2E2CD594D0E6C10B002AD61CE491D4B95244E83DB861E36D293C0F556B295FBB
-8F045711CD606D024F0F03603629F3BD495183E821D0A1ACD83F3376B62D278A
-FFD084EF020A119836EB60D0F8A059BAD8D8CCE26A37182E7C89CFC2AB80C724
-275E921332ACC5A6991B36A2C7828B632DDDAF04780086F84E1A122461719992
-061E3F597C8E6DD8ECE708251DE0DED5DAF913AD4130ED89DD271B17C556F466
-A2587876F7954A9888751460B468313DDD88F267BE6C5FEA492A6CF1365AB8B0
-D8E872A625799B9BE1859AEFAD98B6F41AE33D0CC069BD36333819995FD9B510
-715BC8AC70443A107EB2E34809771DF24D3AC09D47768D3202D809B023FABA7D
-C6B8CACBEEC4B47082177995C3C00D08446DA56D527D8857E5D3342EC3C42DFA
-7E35C992B8C2A50E7374FE57092086613D5A3B4567A9DA3758F48E6817CA3C2D
-BC552BF4A17E92DFB106E74A2C53DBEA13481DFB9EB64422F5CE073512B67018
-46E902A52D5AC8A943C93B1921ACBA76D6DD2DE9077C280E1E6E43ABB9DD11AF
-E065D8EB102BB53A37F6B491EE341CC8D4D3AE311F122A28F7FC5481CC80E119
-EC3E67AEAC772AB31D41151AD51B88122325456163D1E84EFBC5CB9A55BC4C15
-7A2D56ABC55E61A49311ECB2C3267F7EAA3C284A0135985EB5E2D4113BDB8433
-123A4A4109F6926D9C38D502B5659AF97969C3160BA5E6E32B95AD5D6855D307
-89BDDE727683B2F05D6D9E74813CAF8038C03C574183CA79025D33FEBD68811E
-1A3B42236EE1CF60614237538CB2C9567612DE1DAB1C864828B9604A5D4A52DF
-D5012F80352DB0AF93758E8DD4ACEC077160D74FC723F6878B2556690E9ACC91
-5B552329E06B87A06E733270BE98C16A30CAE3A798CA80E7A9C3B8733A9428DE
-0F4DAFA656E6D01470FA746BB58E686846C29933F9A48932E6AD3A20C7A0FA91
-AA45745AF05ABC50D77498AF81E72D0DBF7D6FAF97E5538673C57A6EE39776EE
-06BFD30F67A57AC796036A5394DC9A8C75556144497637C28F3C56DBFB21595A
-D2A46D6C4A0B63508A238B97ACB24499AB5540851B86E273B7B2DED24B458DB1
-5280B3F9040C08672F7DFDC4B69C54B92EE3555902BF55D64CFC95A9DD143C18
-FEEDB1BEA96762AECDA9DEE705AF2DD54C619328B9A26D019984DEC1EE34F30E
-CA4EBD5A4AB2C8547C0EB264D47943AF93E281A9E346B6346B809363CD7D67D9
-9A8D6A2B1C109C8F226BE11C405F18E0197A47E44B57C1CBC8CAB957A2F60771
-CF8DAD0E361FF6891CACF5672997B0357F9A5D16D424F2B32A0256210106B3B8
-160B3CF0FB7D28A84FA861B0210F383466B6E69DA79B59D95AA05D608DAE9D56
-7A05E3CBBDFA558C8F3A5D5AD9F70AD60FF059AD26041DE8819EDB2746DAB76A
-6600D7C708F08D266FE22609BA7462A9378E691E175230E4D4CF6F1FB40BBCE0
-31E34EE09023FB7BEB557267986637DD5D9C70E38C14E485BB6CDFE0826F9DFF
-F5094AABB6719C11474BD877358C603FE16B3A26B8C3CA026E6B29B1868F2AD6
-2960CF99DE7E16B18D3480F52585F39D0B45574D4A0008BCD49C3F2B27930B25
-3117251BB7116A23C586F7B0706F7F2BB00611C4FA705CC11783E6A1D868E1E4
-5685B46356200BACD8C9851AC613169CDF40BBF1B400E21137D00EBA1E782E97
-BD6972E405ECD84202049433393B3C283D44AF4C3BDB3D1B700F43AB576B4C7A
-195500FEE676D1DE97C32859987267428884E4E58C2D8FB367810741B0FB7D37
-4F185ECAE1AF834069503E8014FA13225152CBEDD5A1CB8895DE03E1B1704892
-23D2C13F5EE53AD95EBE5C0AE07FE2DD36209897001FF645DB1276FDA49951B2
-D319D63FB045B477BE528C3667F0CCB6853E0D31C77ACFBED46251BFD60C1321
-D0FD450193208958E91C05E9518F3E2FB9D4B6AFD5084ED2C13DC3E59F85C853
-10AB3B7706863D6056954E6E89A23D22FF9D3A868C7A47FAA92C95A5BCAAD7DA
-0D145FDAEC7EF719C077D8FFB191CFE21E87736A98965A4A4AB2447B607D02AE
-8995550F0BCEFA8BAB7A197C053F69BBA12CB7C01976219DFC6D2A49D415EFFA
-66F17762549A09F43FFEC19B4A6CEE65A6903702F1750B263C342E5CD8D26F9B
-363D9AF452BBB2B0D5551D412872AC8F781630B293FA0B96FF49893200BDC53E
-32CAEA43D4AC2D01FB9212277ADB59C864CED023A8C30665A2BFD059A1031D86
-6410CF5A2716F0927A8F9213C73681278B8EC121E0AC73D46A704D6B28D7B003
-FD075F4455CABF65FE19A91768983B2B3FCD40AA0194EDEF3C94C06D2787F469
-BB045AF387183D001E980E05859D316821023CBC205C505B11DA011D784B7F3A
-C47E20AD8F87E499D7D77EF84C75093BC67969E7CA8714F55D7945F799D6A640
-E6F00FCFE28DE659F36F947324DFF4E79AEFB61EF14ACB3FC078873A17FCB5E1
-D3C40C11B5A4327CF96E07F5CA9D62127553EE94BF3C148D9EB83353E9DBFDFD
-FF9FACBDC8AED20340D2FCA6F3866DF72EE9CC880E4069DAAA2BA5A845DE7FB6
-CF7E686BC5CE9A4B6D37890D902CB7641033A7C1B7F974828F4FC8AF251F7985
-E576958972852E144094C10EDA802DEE259F7437CD26A1C9094F87ED0697D713
-94BF9E15347EF558B9D40243DDD348C7FDC96A1FB6D362BD9D955BAE3F6A2353
-84D89A27BB4DABE3CB58A9334971E39215DE41B4DA77FFD32B088EDE2E23A26B
-59273A7DC587D70CCDF43BC64BC3CB11B6EF90042B8193C0C4E66D9C7BC7F459
-F8FFA1D733503659A2C2BA42C0A1E262D15E97A55E97D746455266507B4B2913
-EAB47632D372206F3F1CA23939A281F2CDF5E2DFF06B94560879BE2080E2CBE7
-DC93A7869391B1F44A4466B38B2A4A8A8F8774D76B8F2449435B525F2651791D
-890D1078533B845F34713FC87A34153D1175B40B7A46F2C228C6405E4652E635
-D9DC320111AB934184B34B30A946D74D30894AA99769BCD213FA3494F8C998D9
-BE4501663B8CA4441C8A7A0314BE23D451D19E1ED15831DBB29180E023A989ED
-4A4C4C92C65637A9DEB914179A4D3735CABEC726E9F431367994E32CA1C83541
-ECCB0D463DB8A0316213A3356D7C654F9F5A4C57260485D0FE8ACFB6FA759A74
-BC1C53F32A147A9F0B2264AA8CAC642D6D932E462D76F113ED2BE639DC67F8E9
-7CEDAC5FC2ED44E4AF3ABB083F3D103378B784E9B0D88DDC98160629B0731AFD
-1502AA443FFF69071A8C6E6EA0A309893DF57E550C270B7BA271234BC69DB3DE
-7D7A87D9A8450596960F05942E390BD546A9C10501057B96009548EAA8FA3DD9
-DE5BACF5AEDAEABC2998F34BB48497E022CF71C4260537F19A7D38679558E405
-EEB015B7BDB6092553644D28857CF4FA28E18040C3E6B8DB88289CFB10FD86E1
-99D4DAF86714EFA28E61FBB3010CCFB8EFD7C9B6E2B759F276616DDA9F90335A
-388DDAC61C577A057434F28CCFB339902BE256D21F4D52DCD450AA5B747D7471
-8098E4B634907BE1DAAA43FFAB7E4AA8705E76E9ED086CAF7D73375E7EC6626C
-FCAE8CE2AB754C256B795BE48428076BF67D614F3FB28AF32DFCD73F17B13E2B
-B127E86C5726769BA5A5D2045B839E4FB5D382E93851E839D2C0FF5824B72C84
-D1C96EE48AFC44DBE54E1844BF709BD50C0E1D456EF920662D905C823C912A13
-018EC340C0F4B508F7D8AEAF895AC0CEE8B15A2620DEAF8B4CDCCDCBF40D626E
-43CB4C280366C106F7951D505973018D307D9858D32E7360183E68C226060B32
-A342BF4CFFDE1AD9B5111CB80734C1E625343148FF2870D1D87DC70E9264E9E9
-BA20D962DA30CB7A2755B510F86899FE1430E46E76672E30A1CED0AAAD9E983D
-4E3911BB537D48A168F7B3BD46592FD4B07B9CE043BE9DE2148BE10BF8C30C68
-76B76138AB34805C6D8B6454E3D5A830407A51B9E1A71DB17668E7A94BB150E7
-BEAC13AE7363DEE94E696FEC3627958DC530490FEE0DBDA1ADA7F00848D3C3EA
-683757DCB8AFEEA2C95B7B27D8EEC5956AF8E26BC8CFF14DD8A2E6A638C5D6CF
-E128C7F8BB3A3F27EC922041E857CB68CA824DE6DBC56F68CBD131AAEBD6B0BF
-4189A1AFA1108BC42C2697B3C24AD8587EFF5C8B46A995CD881ED98523FC98CA
-6A123D37FC9D79F0E9A6E6D9E783D8826A0A07A9EFCD563286710FA3CA4EF170
-1B42B440BEF8ABA94FCCF86F0BA118F36F80F6BFFEA5D13CE0FF328CF428D437
-EA9076A01A151C0D6CA5A7B8410815A88DD92BBD2A27EF160F39CAA7E0A27549
-EE8E1B301374028A8C30504461A0CE8CF9D1AF3BC27182E4FCADBE153FC3BDCE
-04B9EF6B6C383FCEEA6DD9D51CFC360A9DDA8F18F28175B3AC453E4387D9CF90
-28B44827AEB043F2971C0E6C852882734C9B790DF14ADD37A55E807068431ACE
-0BC67F4D03FBB3C611004D0C1E1B9D5CA572191A13820DE990F029E1EC07866B
-9307D5B77304C9AA9D987D8E2CB1C302F4EBE5AE1A18EBE36901C6D94A3B4D48
-F31301459C87955B6C24F48A98BE883BFBF526DB1DBFAD1D6B23F29E6C32B3C0
-CC56550FB658455B8E3F2A76BCF1EBC9F6AAA1200C428465A22FC1C748CA45D2
-7427F87D506B90D3C676AD753DDAE196464C9672614D1FC43F0DB91DD9A00B4E
-9D8E31DFADEF3AB6518EA1C7BD9BE20AC8C66D0B1CE9737C338E02794640F7F4
-F1F2E04CA39971AEBC9FB699ECA8F07569C8AD9833E69DD9EBAF42376BEA1961
-9D3312A8620A66BC68607C0B7D723DEF61764B7CA43EBA27ABA5B0F518F40B01
-E713AED7BA6E23BA5D866E10638DA78B9BFA68757921C9E766603F884C18E76F
-848CE800A1A1E6FADA9E1BC717AF098446AF80924915D0AB86F4A3615D4FD49A
-A5A844530155E047DF9A6F878677C12391DC8FEE91C90709E3D06F31D10952A6
-5B0D30556D0AA5F59DA5637BB280842DF8720816D67F465B48A063BD606B536D
-760A402075ABBD70940DFB7EDA04B55B5E36D2B512A6D01E7E97FC90D708EAB6
-0F9A77ADCAD63063C5837DDDF800A4D407601B15895E83B58359821426E93994
-019B73A5FD9661550718CC3B2F79E9A6A0E7C4984EC1426C0B8EB86DDEAB3FCD
-D1B467FF32005EDABE59166D2E0564CCD1AF482301D2BFAF138F88E2FEC6AC7F
-060555D402304EDECAD793EF9F779F6AC52B1AF86D714F5CDF3C574592E8C742
-23204EC2C4C226968B8633554349A2C0A987E2812B8CA402A0A1BC7A16D452A5
-76083FA380D36F227828DF913C468AC69C435B2341A590AEE61A44B1A00D5409
-B836D6BD6670D5C02A614241941EFF04BB09366E4CCE644F8A3D2CAD5BF9E445
-BA296EF46392ECA30976FC566CCD4354D124DA25D9708578214DA5582122D8F6
-8EACCEA4CA8F63F15CAB59FDF29AEA5B4480023D6A61878B43B0F9CF1F4C6792
-C9B0726B1D5162E665CE4F89BD724CA7B957DDF865F6833BDA3736310595F2A8
-58182EFCF9911455FC934CEBD36C3D6E258D948AB4E28D225BAE6C73D7F96E9B
-EE7BB7FB24CFE23558DB7050113CF8FAAF62E6DF1B05064FA99C2016537F4A60
-0C80147EBBB95DBFD8A03B125C464E5917AE0F11D293CB75C8FF18322D788FF9
-61593E2CF4FFBDD2A1169A37CD3483C3125A9669231592B85D80FFC5FAABBB79
-3E7F46EA5B3F67B0B5802642CC139D752C8A9FC6687CD6380192BBE2864AD792
-F84A826F9052A4970DE4725B125874C162F00453A685A329867D237E3FF253B4
-0B05384E0452602C3F021E47F5B2D680A5D120B7A7F4E261B1598DA4B55B3AA3
-BE47D2C7FB46780153B3A7E124BEEBF25BA598021BF943DDDC3CAC5CC661FCD7
-F78EAB069BDD1531684BADB59CB3DAA544A7F38429104399FFD147B2973E02BA
-5D7C964A69650D9C5B1C3806A9B0F33478B9B2D8CB730D4E28BDF9C35A0E015E
-AEE3110714E6E09D51A47EBE4DD5C1A4A7E608B0C5233B85426B1696C88E4A1C
-56210C41D7B778DFDAC0708EEEA185E37CEFDE917728E9E2BC9ACE85CEBFF12F
-702AE7B7D0288FD933ADDC3AC849D7352613C41BA4A7988A08D24DDF178E3C48
-1C7D348E7F5D67A764FDFBF5FB9A20195F4C806ACB59A47F334CE16B5CE3B8AC
-FC951D49170D29B662A7A6EBEC46EBA01C96E85F8A4559CBC60D675EB6E1D7B3
-84C917104B318B9AD8CBAF12CFA478590690265DDB43198C7B7C1C6D5A23DB30
-11C1D6AE610ABB2985CB9D00B91860963C316BC83B9F2747AA99CF8EC08CF47C
-D599CCA471FBD4C2059F8EF134050CC6247E9E56FD480E9B93DC083B0F16D673
-7E0A1096C30E9B8B0501BB25516B18471413428F50217BC2EDFD22EC1135D121
-DA739DCD4AB3AFDE2AB9407887D1F23CC5778C90D5C32BAA41A094968BB78F81
-FE42DB18820C03641895AF1D998B2A0C5C1543FDF91D6562A7D63C136C47AD42
-C1B04F7A70393CE6D13D313B63967BBA42F356AFDC81851BA94ACEA54ECAF0AD
-8B6D4BC392CD8B4C71CBCD1B31A4FFC431970C88ED7D003EA9964F8829FA69C8
-D7BB49B7AE6571ACC901BAECF22D72CF86CE1AC1D831FC5FB5E6FBAF959CDC2D
-900A773752D320C730E4A8D8612CDABAB22B6FE49DCA590A05861E2421541766
-3230671D0722C743024A8D143E3CA1DC3658F10B9779F4BB5859BBA03E03EA43
-68F9B65C04CD618BF61F0110EFF9DAC63DD889230010AFB6EADC13371A34D3A7
-CF3879D64242EB295ACFE2A2A7AA7D5919EBA50C38462BD9AC72160A24CAAA4D
-F467AF4A4102D2C291E4B80543BC7D72AAF725BE15A1CD8499ECF99B73105E15
-53F2E4FCBFE1200A418A2207BF2F9D9BCDDDB62500F8394AA90E615D06A805EF
-BA1006E2C3638FF8AF1D67D3A02F3E5185394D4D83A8E0502759A14F38DB9523
-1059BF230DFA29CF3020F2380406A8DBCABC40B50833E5E5253B524E2A4DE292
-49117835FBA70CC6B1A7E662B1FF2A5C96AA9CBCBBA454A623CBD4FB0FE35578
-3DC8B468AB579AA8D154035EB6F30F961412B5AFE7074F18AB9019AD2E600DCE
-5C8376340B88DDFADCB4B1C46D4F63BBFA3631E11BA5DF550A4381B3DD1F1D11
-F47DF28562E706A080E38B2E61E03603694816D50D9AE19079228882B70AB605
-D5D4836F29B382A61683318A3442770BB18BC376EBC07BBDE01ECA8677702913
-2688777C8CB4E87B6692E5E86A54A220F927C3CBF885A78960D307B572F57650
-8D817DFB1124BDF3803A828D64EEE5EDC69D3568EF04D2D8C0285568817FA562
-08FDB68E1C0B822668CB706C3700BF0C30D72D048B943D50B00889A33003B446
-DD7F3E4B35F257B0537E91ED175FB3A32895457989C018A71A1023E096B539FF
-1B09C66F77EF13F874F16E6F7D5BFD6EFF37202730AE5231A29B4F91B868C93B
-CB3D9F38159EB9CCA2E1B3CBF296E27005DF9884F71C733BD4EE3F144D37E20A
-65262030DA75AF8151F141693F97E380C5733B92A5615351E506925301308872
-09EAC5535D6185652AED2621F4E0D3224128620FB6D9D0B99C3D31B3E20F980A
-A43A22BDCF8A2779BE4744B76E908354589E1D69A7691884319FDF889A288E89
-696E5FEFA1350410F0411CC4B1FA2E4A767A662606978716754FD44FD7161DD6
-7CAEA2734F499316BAF6E665DD6C85980CEC818542DC7460B336097E25C47AAB
-F26FC408465B034EC7173FC10CC7FCE36A9D74786BF2007D0EA403D3F8E90FB9
-852B4D1400ED16A4B945C3426617EF47A8118551D0CF6B5E95C525FB8A896FF7
-FD7FABA141B597D27499B7D7D97712248CF0DF7976BED02A5D564D59B23F4B18
-9F13FB0DC17334A496FE3C2C84F4CFEEC9F89B14A7482AB324DFB201B6B72295
-98EFBE2C8A5A58FB4EEF33F4888773533A9D5D73732662192B72A1D5102E2F5E
-247C9282EAF1705B5E96C9EDC36111AD5FC2E1FCC606DB766775AF00834B2631
-AB76888E6FF3CD6BA444C804770463EF3F5014DB69D860EE563CBA238F8DC2ED
-3B5948A27A0D02033850B4B49E15EFD202B0B3ECE75C407F0843FD84D070344E
-01D1462A8F7CD73954D75D7CFE22A8F4B69185A3B3081C1D113D9B2FDA91AB0A
-5D3FADD335B480F61C6A5C25496F3FAD35449A156A23CCC9C3D5BFF5F1C1D243
-607E05B2F81999337A57A673026E7716ABD0395134BE23DC11484F898D9DC7E9
-68CBA68E60DD836462767ADBCAB8F3353778FA7B976E01458064B51B5D2F2B53
-4E26AA1EB608D072089F858B1C7A7E1C217C8872E44CC5AABC5DE83E10C3986F
-E5A484B2EF6D8B05F70C499BAF6054C05C10C1D45C8FEF8D493968F065EC4161
-B8B04F8588F208C4902D37520724B2CB0299D8120D11B836F8B301229BC57CE8
-3DE15D7DD8D829BA7A7F3E39885771A4469E5E4390A60C295926AB828CD91058
-93832AC0A6BDC8A6B7
+6C1ED25B47BBBF5494E1C788038B82BFD0D6CFABD31E031B0E89A86A7FCE15DC
+EBF89A9CB702B4200FC4E3230E9EFF203361CFCB76FE1878EC5F060F9B419C1B
+7A995DEE4EB8B2ACC2214FCC5F0EC7ACBA26EDB3C06F7FA3976B02C9943A4B8F
+4E93F0DBA201BD8DD41F05517436F9E4BD559D318C4B42BB7B3E50187696738A
+438F514945AB3AEC4834E7780A2FECBA98DB87334AC11E72968E9646705B0B32
+962CEF559615B3CFCE15FC611D0008D349299ADE9338AA641800202F9E61063F
+5C75E8A8D2A11C46C9CEC1F81403ABB69E9DED0B0F2CE1E0947E9768C632988D
+520FB70326196BE3680D21F92889B889CF6F0ACBCC10F2D2F2CA50CFC7F71AD3
+7C2C43F7DD797EA44C602210BD5A379FA36E436AD501A25CF3A28F425A827A76
+2FCD4209893E9C48E8C1FC5EE04EC1B80E3C2316677D54493657C4F4DE07DF1B
+C231921E94A90C4B6C064A73E47FE160FFCF9CA9DF8C195418B78DC2B2B67352
+1E0CA7E7E68F21FB9EC4642EA6E7AEE8DEEFC5CA0DE9942D3786912755856A44
+CF4B0A08E4194DBE4E45C2FAD9C9710A25D46ED40F494696553150C81BAD25C6
+473F20A66A8186E449B5962A62FD1140097C1F5ECD7C688A70D8FE3B09A2EF6B
+7A6CA06D74B4C6981E7F9A306033B93407F8770FED2E1245C8844F4AAE0E7BDD
+85890F581D681A4346CBB2D455FC11303699AFF4DC543A1C3E82C2A929873BCA
+991125189D71EF5B85B26A8BA06C03800FDF06B37E9C021FDAFE3A13A9B2335A
+21AC4EE580A496B1EE810547262A766803BECC49BB3F7847FEDDB3B66F695553
+B3B79C2AC434D602DCEC4E8BB9F570E771C67FE32D7C5EF3CD5D16E898CDB057
+05D999E9F465A01953565C7B08934EE20DA86B801186315B894723028E05295B
+F92439A9007126E865B0ACB4DC2E2F45B5A15F56E5FCDDD61206C134FEEBBB55
+3CE3874702EE51D1E32E8814F75B66134125A966B6957629A29C05126BBE8DD3
+E6A3328D8C5D78C6EBC3F7CAD003D419C4BA429A80B0A62131020E7113C5E0B6
+A2762FD041C5DDFEA829AAB91329EA218E908DC362FFA1FDB4AB1E28BBC21A82
+68BD1579E1561B54AC912A1850F6AD268F72AAA9882D639354C14E9A1DE379BB
+5F836198672676795FB5C9587AA479FFEDE2C7105F60211409D7DAB7E8AE5F11
+7156516457D86E0E4C62BFF030176277AA7D706CC894CCC8F847B9FD54A13459
+9F519D35C719EB07CBA5963E6D2DB49E9D7904D64C917CFD091B6ECDF9918D86
+C0850A737413FB2BD5B5C29082C48B0633A5DDF28258C1F288DBBB6E0AC3C1F3
+E62CA587052CA04BC81F791FA3BE95F0700D546197CDDCBE0E1E7C31B1E3CF65
+74636CF038D418478F930503538524282FF8984A7C35E22068C503A364BD6616
+55B9BED36C0D728C79A7D92DE7022E37D8964948EBA56AAC380250C6B11F9E1D
+24EC3DD93CB4C09BDEAF7E9CA1CB4318839D2112D5D20120BBBCAB46D7599C70
+E05FD890026E75AB76807C56A3D7420DA2B8037027F0B56BE252E2BDF88F9EB6
+16910EFA200BCA52BE6B9406CE8D30F51DF38DB372411F68150BAB0D5B5D634D
+4D311EEFAD8222B18B63D494778456364DCC36231E820A9B0FC59C39E173D0AB
+3810C11B16A47A77634E599C0E4CD454CB736C1577C2A6C9537186FE3080213F
+4358FA1FBE0D02E96B6CD4DF0A9359DE73F14BE05FFB4636F51FA9063A250AC8
+1A6EF7AE5A224EFC3C8EF672F4ABEE860FF4CF11C49B69F9E357DD6E8F1F8C4B
+E6F68965AB6AB3A6A9DD1878C86B6118E3EAB82ED0E4AB1BA98282269C01C790
+EF92B48474CC4E2F35BD2BB8EEF2A8BF1DD136E2084248698285B210FA3348B9
+F273CCA07CCFAA52B93DF9AA0197A30ACD045ADDE553CC204C39E6B424BC7FAC
+948BC52A3A0F5DD1F6C5D51AB84E809A899C709F106DE3AE22843B192F5E7675
+A6961ADB9BCB58695D4C5400D23E1F1E476BD2B24F9F0213DDDBF6F1B5B485F0
+AF0C82B64329FFDF4A108CE45B274F9AF149DFE987DAAEC62DA159A9568AC82E
+40D115213545D7EB212C676FDD6E136CC9B69AF8BFB3B6C193F8F555CB8F58C0
+39C438669554A229B686DFF12770B6037EA2D03FAC4FECC5F7C8D3FAA599F6C8
+49385F88DCF20753363A6210FC0758128AE263E4258A5FAAD81AB2E064368E9A
+C01FFADC01CE37A6BF968DCC6914718AD0B1819E139ACA1A4B9EEE57AA6376E0
+90527C700F67A3BCD8B3D0DC246FDED06E5AF06C3D56DEB493032AE9E05288A4
+14D606E8EC03F50CB47345EA3AF400F776C31B9114613A13B965D2D602AAEDF7
+0092A0C866B90029B4EC9CD639522BF8E5FB4531330EBFDB83E7D2B24C5DD7DA
+6516363E1337E3997F86CA85722F9082C9240659113B22886DF2FEA5B831D43F
+16A19A94A6A3E1C490B7D98CD12504E00C0A69DE900C9602730FF1B08016D760
+5DFBEB93EAA27F14CAF56249E3A8EE27F8800B6C0B596366BD47F1223850AA5C
+7CB0E862170846A3C0542269F53EF1797893E73D5795C772CF6C2092226F73DD
+5E3462CF3791B3C2A8349A5CE4FEA0E4D63583F039CC2DA114FCBA79671A8772
+2307DD44593575E7D5D453205676379736330819ABFD69F92D5413BD96AECFA5
+42CC41CCFB8A0519E3BA49FA181B83C7ED6D05DA11E23D63D03663D8A28B5A3B
+D2BA082672A56A9FF2D3AA9B13956AE707300218932B473C75FCC7CC2C6EE593
+9AE32BA23456D679B52938D31138BC5769C9B72B1386D84A4B34F46433CAC90E
+0BB0133EDD3C7B4B31831FE61506FAF4A1EEAE32C17E800F4EBE3B0783E68B2A
+FC48B5BBEF6921DC82ADF29645432FE2B61B7281B55FAF6D2C4E6142CE37511F
+C822F1B986644101E6033C4D76128E2ABB5846A94C3F20FE5721EFD8E28D7D9F
+46C1A2F1F20900EA5065666B2A8D1A310ACBFB0319D94635E4ED5D711DF4D746
+C4924DB269469644F0FCB7B4AE63707DC35B2B5980AB7335EEE256BB25BAEE68
+DDE0F4389CB3F51218932332CE872D1E31D9D57639444DD56B53C116D57AE44F
+43CB5A8CEA86064EBE70C67FFA8BD1F7D0DD4ED3F6130A27F44BA86ABF96245A
+8154F25CFB46BE37407162B3BA84016B543E207DC7F00FAF9DEA61C8F43409F7
+C58573646A916900AE32C787EECF842A21177EE126CF5EBC3F1DB3B6A1EFF132
+A041AE404974C8B3365825003BAFDA9E58A3BC8B5777B84D158B579098D96E2C
+56D9721F24886CD4EF6CA0FB92180C6F8DF7F93895186F338319648B5272AE90
+F6BA474CF484CEFC76B4D34073E9757142E81198684EF73D6AD66914313C2B94
+29956A4AB10DE1EA676E2D51F2893881F53AB6908F0F1A343E9064C28ED086C0
+FFF7964C20F82235E279C9A9C2636C4E719DE02DAE6DC834FF2524D85E044604
+6CD17BDC6AF9A85DB4331450950D39B5A6DD450E8534445904A738DAA18B1ED2
+F8E2DA1EB7427993F8F52DC137CBA0AE6D468579E06CCBDFED72781BD4F04973
+AD3B197EB19D5AE5A3EEC05A39576398ADE63EBA5D791FB978FB3D95375FA630
+A9C1A779C2390D0A9FB8D0B82AC5F58E3B9666AA4AA1043A2BF92E591F10231A
+6D6D29F594EDF1915F0523DDB54E438A112FF494C75446E77275C73D2ADDBA8A
+764AB2D3C9152A8E3975D3114E32D1EF3D7987DCA543945960BA1FEFCF9FA663
+B5754771FC881B054EDB6064DD6C5AEAD699CFE97D41F9C5DCED967A06C5CD16
+4480DCDD039A1FD503E1259002A13F117BEFAB4E9176803683612F505F56065A
+54FECD9E14CBB337648036CFD0CDCD8E3F44C16507FC64A75B40695920431C0A
+867F2B053F2392E46D0A140ED318CA638D887AC72FE0707314A6B6B27D7351A2
+C1FA20D330926AB6B5A2B22B960857B32E59C9929F19EF9272966B590579EB89
+AA725F84757CA11233A368C6C008CD41DA5048BE6614887BC08B94009BCF4708
+B8F43A532BC31B2439ECBFCE32981D856230254DED062A47220366FA2E3A18A1
+65C13866512952605E2A75430F9B81CC4001B1B2EBFF23304023DF63EEFCEEF3
+0FCF13BD1EF8F3163CF98D624C2CF3A1FC68787EA1CBE4C90DE785EC5A36FA2E
+4884F0F507F6E5FF01DEB3DD62134CFDF798DAFE507B72E76E601BE90E179777
+1EB092EBBE51A793C815A9E9497EF68516E09ACBE94C4D9855AB6B4DC3A89DB7
+87C68419C491E78926D8F4EA68B402D613BD5305121DDE0F39135E53137D0328
+03655B13A61E593973F2F5104C9BE1214D9757F1E0E06E9AD91D32AD11FC03FE
+4501486A6EBEA13F0BDE1A96AA7C29C14B5504022E31A6667C6D497EB09A9630
+A0065C73F0D58F0D6C7BA257699A232D06E5B30936F15FAB4065636D47266EF0
+0EB5D9ED5D6135DCDCAE56406BB76034C80309E712E5D153B9A8CF5A930417BE
+305E472545E06BB377D99316FE6381B15A4A0264B2F0007FC5662290986CEFFD
+3D6DDAA1B4092AEFF567410DFAE78CE84B7976ED53E8F627DC379263780164C5
+A1F030379C6FFA37260436458FE67A07FFE492E51C8B887331A889668BED04A1
+221F2CAFCF2C36EC632C6CB08E3D54D10AE79ADED2F3AD9BABBE03051868D832
+13E48204403C315F20D3A69EDAE58A497DCC91FAC1AC37A810BE6A709C7A169C
+B50EBE936CBD9994ADE5110513AEFF586DB21B980027363F86233F659E40E191
+41E5797F84DDF5AD5BE4EFBCBEC76318AACB8AEE5B7A1C477E8B1F09E476682F
+356D5E1974837B4D05F3AB9FE13CC77E11AA5CF3301FE23E272FD43D9092421D
+9FF00D5CC9C85A2A129ACD5474A52CB848AEACEC9FAD1B72FFE722E17B32C561
+AEAD79F4878A3A3A907D4687B167513B029973AF8E76E1C321423596A749D87A
+CF1557D978ABB7A21647AF85E983BCBF573B8E6602F32B23F174852E4E11613D
+35D0652888FB4F4936BF6FAEA43166758B9060C1849E16DE5FD3597D76CC3430
+D2FC7BF579A538D83E52DE9D9D4EB88D5F9BA57E3227665750F831E54144A73E
+A91EFE52B16DE2D8679C5BE332E9D8D20C6A0B62FF6898CFA6D553B0273869FB
+2EFA3474EB88B7B1D731CD9F2FED700CE240AF757A17E181193DAF8A05006BF9
+14F5CE48907DABD5226932DB9AAE21047A737338FB3CEE9F499E338CAAADF490
+1B9AD4B4AC8F01EAF249E2D00B9FBCF1D4E141D8613957F26EC53D39CB4211EE
+BEFB842F2C6D1CD05A55CC0CF08A6AD977CF4C477C9A21DF2D86AE78BAF04EDA
+6F132923A29822986A1C68A2D396FF312D4F70B9DE50303A9B1DFB532DC330EB
+84C12F96DBE1A790C3A499EE738ABCA2205D5BF03BDDD9298E4741A57AC86E9B
+81847AEC4D6B6B2FAD501453CB0CD79B448CE42EABAE26CC94EE3FCDFCFA84B1
+63C81EB6124C8E847F4A8A3B37BE1524418D18F970179E758296EBEFDF6BE72B
+B9BD84771199CB163783E3580AD6943F91AC5F3822A16E1D495AAAACFBA1E436
+5EC08CD521596C706CE7D1136224688BC5BB109154A78C0396EA010B6827328C
+153504926AA52FEC6F684105F459862E7DDDACEA2F4FCDFDEEDE74F077299545
+B6C7E5BA9FE3F55DD9A2DBCFC092AAAB81CAEA5D6C6ABE667AD5052F9EC5B021
+CF164CB3397C539C91F3FD1AFB8E976D161CADEC402B77BE69D008A2C126E98B
+10AC8D7814D1495F4900A6F96D4A390AED7A453D0A031FEF9FD44CAC2FBD25CB
+C2F740E3671F30928BCD9B574F1B4387E41C51B50D38D6B39F3C0B387B74D18A
+AAF3E14CAEACF98AC83EE560EB65B51FEB90F487F3B42C2F2D8341B9493EE0CB
+C712877C4381634F610ACCB0F12229541A0902AAC38012A35A0D46DF8ECD7CEC
+BE5326DDCDF6382C43B08C569E326D2EAEC5D3579A09DD98CF344F70299873E3
+693017848878E250D844CD759BA8492DF7109BE0F1764A0C11EF72A64BE353AF
+058FFD4B738E2F56C48F5EF4DC935262D1C30CB2C9FCB0690900ED333F530EF1
+117A0065CC87EFB75994D2A52848630F9B809C71C946EB77EDF17D1C3352544B
+781BDA5CE3B951B00E7FEB4572AFBEF56F259B5B8BD2FFD8F645B0F4DBC60B79
+35F867C7C75F8113A72D96D144947BBCD7219CC4B8A5D4BEB119EFF6AF6C0E79
+982836B969ED562FCCC833442E447DBAAD1F507291CE09F5073D3E6A5E485F32
+A01F8487932A162C699B706EB439AB6105A4B270FFD580F203B277CD2A96750F
+F5129201F8673B57E0F64346574827B1A96FAE97A18AAA5AEE5A2A17C7CC7ABD
+33DE297B18374134672947FBE770D2E0EACF065BBEAD4A9C8E5BCA380365FC3E
+1B28526DDE6E70598F9B2B5A4CD3C7B3165CF1D3F8919B9939F98A7DC1CA3EC1
+322782A4A68A2C7F5371E97E5D8A091E71BE54E37E90FA02DA599A1F42B8FF3C
+DB6A3F26F2ADDCE5C70C376B1BB4D62F4087BB4B573E612239CD67654F0B753F
+B2DE3C9578CB618727E4F1C34124BE86FBFA1AA14508BFBA93DF1DB3956833A7
+734B997CA9CE44BEC6A4FF9E6D4BA6F85907013C3666129655AA54C7136BB403
+9EC7452CB6B0129547CE1A11D344DE05502B4AE58E7D255A41500045B4E8111A
+6116B899C4C69118A06F4AC6D819088D50C6C5823DF9225C1EAD06568170AEA6
+CBCD5BD77B328D1D1187D9726E4EE5CD1E24214C01E87D8BAFD3A869E3A8E8C9
+EF9080678B740EBCB649CD3BE25D624CB61595C6570CE1C58B0F9FB28A3F8A80
+114932D85162C10DC19F5A964EE38BCF49BF76C752C6A62EA227DBD6139431C1
+218CF49884B47271DFA6A8868DCA70C98E5068D4CF47BC98FE627A89875DBB93
+664887D1A2329332D6DFDD03A08591599C74A4673641B23260E82ECFEEDDF129
+2BC29BAAF0E11FCEF4DB2F577A214CDACE15D99C4790B47BF42F60D53A6C2EB0
+393A82D0F40CB2AB5999373B816AC43F2DD75D9A23A54768C6FD9C1BE3FE834A
+3412C3E8DA389992F0D608624CBDFE533616329BC1F83F4AB9E4495A52B3A6A5
+CA400197E003CF1FE9242447CFCBC85E128224966482B3FD5FC8A46DC37114CE
+DE5E4FD0B5F1265A3884AF083922C490B3F00ABF1E7F2985C05F1C023BEC3CE2
+BC3E02750BA9A5686944CD08CF32D0ABB37E882ABE579B32DFEABD76946211DD
+0113B49B8C3CF494B2A34FF1E267F5AE95E35379329665C6D4E69F0096C07BBE
+EC5AEC2BBAEBE174F2F5F1BDE92E0E573B4EBD2627EAF77B9F2592BF374E3ECA
+98FC0541A4B608CF2B60EFEBCF9905274D7000889FC4854032F89D970FAA56E5
+0F0814A0F165EF3D441DA13412B2B7C3F6A5CFD71D3290810EDCFA1DC6F6128E
+ECA561A89E4CFC448DB195DC67E5C4FEE96C8D4DF87F56860B2BF511CF16A81A
+86CF4FD58FA15DE127003CDC98D60FA2526FE6B19C2B3A942F6AEA8BAC163D6A
+2F4077633E55E7835B3F243321CBE7D54AAB6510F4F5DAD47F4C08C89D530A4C
+208F1903721CEEA92AED07A2943395F092B2307C6543F15F070D776E5A51A693
+42029EDDFFA3A758B620A7D8038D79FF6584655BB33168A78A70F051333E389F
+3F3B739D941FC6AF5A5DF5F95A76FB21D6F8C415D4B5A449079E9FDBF158523A
+4FD60F4A12976872F5393A0FAE984B071D5C2DCF85AF530820B7D60B34C5A416
+B37353F6F6106BE4C0EBCD6F3F1082E2E2118384C504DB8AC14D42C78CFC4FDC
+6F0ED07729789760F061BF6066D9A88FAE6A8B0BEABC39B31E2D566D89BEA2D3
+07965B48FE774D35EFB7F7903BFCDCA5929C8AFCA1DF612681BF917519B83CEA
+20120F249FAC32132BEBE9FB89A70F5E9EDD4E2A01A5DEFA3C815F4EF44DD5BA
+5E8D84CE5054DAB66874BD67598214066B89CC52BC795964D20C76343A5A0D2C
+A6044CF00392FF2CB07BADF65126D444B3505661CA9E519C6105711007F73F45
+6415D72F3896E090E339FE5C2B36F0EE59AE224746F3F7BE85935B7FFE957B93
+0DC6FA7B70E7A6723C015F58D49AE0317B3CB70E5831969AEC18F08724CBA213
+2049A2D72D2F0BB9018BC9A5E732D92929E466683D1DA2DD80683B5B1B60B134
+AF26B3B9078106D3B3BB6B2FE5966C224CD5CF9D1BAFFCAD0B4AFBBF88D08CE0
+1C59112E61875F9CD4C8CDC57A0BBC9081B8DC747944395CBCC7D5D8E03A069F
+4D50D46AC6F98C3773872C3A9212BEEF715466395D45E1A135E448BAB6F027BE
+02DC41F323519251D7D3DCBA6C92531ED68B09E5AD04E9C4D658751B9DCB7CB7
+713788FE3701589F5E4D6B5ADBE9C5032A6D6E1EA1EB1943367CC7365E7AFEFB
+34C30F7F77B0D8E0C8EFEECDA5137EF51E50F0150EF243362DE3724052466537
+1064FAFC473ED29949351A94891B392FB5231A401F51EE19A006E6A3102C7771
+94EAE7C1FBC46A2D851D8089A5DF7BF3E848331292F87E0D31EEF9F6B017AB3F
+7C800A15CBA34DF50BAFAFEA5DCB51B82ACAC2598293EC06774B7B506BF3A266
+DFFAB2F5FC0D193F766E3AF47515643E1A53612997253B4740A9E15B1B9DB88E
+7074E9C2A06420449456EF2EE9960071A735463D769A1529DA8FE6400A113B2C
+011B98B86BF78D202BE34BDE99459602C2724758ED8EDCF869892B13FB673E51
+F3479C0926075E9523899A6A9274E034063CE15BE966F3E688612BFF1A69BD8E
+137328BEDE5587D611C890968614A23D536D0C8BB6C7A7B675A9713520E34C23
+728ED3B261E47A91E5EA33991B1A04DD6F7B87DE1D47A2D2096E3FB4DD6310CD
+106F8702C8A84CD16C2A9EAEBE38F67A5028874EBC19AF2094BEC68FDC25E68C
+9E2EF7770EBD6C69D2C1A452EC4EC0F49F346CCD9B4023332181505F194E1F13
+33C063F714895D1EDA793AB71D0D566BF3527A65630B0E8F2353FBBB2676F6FA
+C0F372E90FDD6E480386BDABB2145DB695BE5769E2A3CC667FBA352C9278B035
+20CF30BD1D84AE91BC84942821B4035FB4B7377B1B4B71D4AD9A00903100F160
+F6647C7F74D79C5A8175758F61A296E1B1A68CFF11CD1C0D79AF89198FA9F29E
+CE0D4FB0962550238976852BBA20AAEB7C1A0B12C5D83D157D176D78A1DC8A56
+47B07ABD669D59A7C53EF95B888B1982C405FDB4E0AB18F33DFBB128F01F89D8
+D0B76A5E8C5171654C7401941D003317F5C256156E482C3ADEE87D61E02F45CF
+BB98D291292FB3BBDD811062372E20C3ECF00136A85A14C5790289021012EAA1
+ED7BF6BA71D177CFCDA1BB22E2E6EBFD768F6AA641C8B1356CDBD7C2AE8F21F2
+9DBCD546341F860CC9E36FF51AB09472A25C87ABEA9744F1BBD80BEB8F45906F
+62AFAEFEA8E3E3FE6EB1A3A98A30996A6B65F240B2ADB7C95DFA477B37B48D64
+D24C109664E2E630A2FA577054F07C70698A4FA02A77FAC43D63A45CB60AB620
+244453807B6390DA4DD2F3E3D47A691545BC208C2836AB794C059ECCEC7F2A9B
+D04A21562F025AC6948005DCA269F2C926C540B7E252AA7F7C707B8293866468
+E51F5213ADED3680D08627E7201B6076CB971BFA7B7B4098AF63AC2A84800089
+B04FAF2088200AF13EE125E79AF702341AAE559D60B7C4A04E6670BC98BD77C4
+2D64EDFE41A627152A7DD2003505DE4C76D7B8C81A3026E997E813DFF174DE46
+3D25BD6E0B16AA31925ADD94C833D97840E6769F89A78C17ACEE219A53E43178
+C0DE73E2E788ABEE172D57263E82F3D410B0C8379CFCB8C8B9221112FD0105D7
+1BDF413E9BFDCD9663D25EFABC209F08D3CF23F02E5A5A59DEC8CA302DC74EC2
+EB8E0BFCEF3ED01F780BC0014EADB19082BE83A0950764B2FBE500ADD51CADFE
+1CE5841B7B50ADF05395066BEC82ADD6BC011F6A6307212D32B34E6B18C777B8
+0E69B1E080A0CD32BEC890506FFB3EC595E5CA6998459702E6D63583D2C19BD5
+014BB715322469B59BC9CB4401B99D3CBB92E68702A96130575FEFADF62F4D5A
+D8C72A46DDAD10095F11559DC2A57A959BD8FF401A02178431C47EF1A7AB7C01
+ABFE023D54E3AB9B5F70337A4EDE49966F112015149114134BFB10D16E065F61
+F5392B90D1FD76B52A5B5B6A285DA39E233BD42A5513E9B7A5E598CCA1722533
+99E56D52B3954F0F377CB7732285239E91E97CD4B28E3C5836FC9514F50E859B
+E72325E42531B8751ED54E39FD40054C8CE0264F469D1B37C74FEA9CC89B6D0A
+1AEEBE18F040F59A076C2884CADB8A6D51CD184583A257A5E86A17AB9760D621
+9CFEA0B0F38A8FB1BF339187ED5E3048CD9E2BF3AB681954CC9C479F8F304C36
+5EE4E9281B615D749784EA16A04CF83AFFCB2B1F90BEF2C4
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
dup 74 /J put
dup 76 /L put
dup 77 /M put
+dup 83 /S put
dup 92 /backslash put
dup 95 /underscore put
dup 97 /a put
50578464845B950140ADD91D72D28470A5A5FB134EC52F4DBBB9C50A7523592B
C5BAA056E46F8C004062298BEA010C1CF9F49DEAB58C4D2012E04E630F54C985
328DB2B6FEAC584308D71A9F5FD945A37EA13F3DEB1748320870057A362E70CD
-50C269D32993CE9CD1E8CB35BC6F69E7574F37032219C6E1C960F3693CB8D1F4
-7E3376495E6CDA3BD280DEA744D382D720935D605E1E2464A31B86E831A1DB1B
-BA9185DC43D32993D3B5900F9D5B45EE9D2C607172A670530780EEA08AECBBF7
-5F59F645CF7A86ED8CFFAAAE50BEC460C07B11BEAB82765FD18D152AD476B7B6
-2D08A8C7B5D8F7B6400C8435E6F08CCDE4234D981D056E7F1B361F478759FFEA
-468FDA9D4EE5B8BF0B83506B39C1FD36B16D14D5005202EEA3D9BF656BA60548
-A94BAE6159A75BAA549ECB9D5272C475CFF6BC373C60723049295392D4BCA477
-3FF6270B7658362D0014743F1686ECB611912E6B82670BCBA93832C4EC9CDD22
-BB2FD9FF321840A882A1E2BE9B354E69C9F4C6210564C02DBD96D4BC181B4876
-49818380D9DD9424E30DA3E8E3BE7682CE0CDF6CB3F7554ACDAE1812AD3B8AAF
-F0990BA00B058A1C5CC83A60491B7875821799B231BD9BF1D568ACFAE9E5FE2A
-7558D3820A67A6158EA037FDBE8A6EADD8C934380101327B8F1736D996F9699D
-D64AF938C999C6C93C9DDC7A8F4497FE81DBB787F24EA08ACF82B3C7620088E1
-8002FC529C8FAF40A519878DCB79EB5C7C34DD5D6F911D9DA790DAB33E7A8968
-A266E95AA808AEC8FD854D1326778821DAAD03ADC0863C83E5D0FE70ABB35619
-AB31554DED6142E2E1E26481377AE95C9F32D0EA3DE07F78C6A30FEB98B15F69
-296FC94E6DAB5829F1B59672C6A87EE4E2CD3F0D9894D6DC8D7A514B6BABF018
-B199CC3A4478821649A7389ED46DBB9AFB7D4FF7696F8DB586830D7F74F0FABD
-4BB32F787DFF04CE1E7349704FB5D3154D1BE3CEA0B476C2B787C6E534061EA3
-E28F7D8F65EB1FBD8177AA013A6FFC03BAE514112214F67C7957583FA78FA805
-29C0AD1C6FF9750CA24D3505C889502833CB71EEAC21B8F2F4D3415372E0FD82
-33A937D50F4BC55D381E2E2C831D2CBE4F960978BF7041FBB69C6C9C9246F8DF
-FA2D5C5875200AE8F9BE1C44F839F446C23E630B74B823FFFC88DC30B931769A
-3D5D444376B7138972BE07E5D8215B79288401B0E9E76831250304635714B64B
-2BAFC31E2583F26B15B38400125BE793931E7887175D98A1CE1505AD21BD08BA
-16BFACB350DB1BB37E647D7A00A48130CA4F7B6FC5CA17FBA73F7737366E906B
-AA3335A2E51D65DFC79B1D87F109E9CF3F420408BFFC2C399CA6844A3C5D50C2
-2B3673FD3A796F654D2624FE5B1E02C1720B91A00B4998F825D9C1EB29885A11
-D100A98620A7C186BFAEEC214F0E63A21A28E076D0CFC7DF62A016A21AF198C7
-28E5C374A93D0683E91F06858358E1AEFCCAAAF2CDBC382B1C999D489D06AB82
-60D4C548B9AA7B011F0382324737A74EF18AE7D5402DB1B8FB15AC162E6E1D2D
-371BB20E1F78C962F032B7647A301F771D496B14B11DD63965897BEA60DF1B75
-EAED63791A62BA912A8ED5EFD66340D07FD2DD8A9EAA1A98957F8D4B9F0C7142
-024FF2918E971B73F5BECDC098C7D011335077F059697C9429CA2E13B03886CA
-5D07C7178C2368B4DBA1BE17A074A1565A9DFDEB90F96163829C4F2BE8D537D4
-606E7CF1BB667190AEE95B4D68422B7EB84B054D41F6677D840ADA7BED269A8E
-8ECEFA88484CDFD6F999D9F51F4431057929706105172AE2635764B326446A07
-1BCB5A2277441E0C0C8A6CEDD2D886D794D3495F7CE828E1E9F65C3CB47C2634
-1E3BA769EA7DD098296E5CC981916608DC33279BDF53510C8BBA06A0A0E9203C
-EA569B24DB5EC1DA6254156276944ECB2338CC5679558DFF053863B3E6FDCC2C
-FAA0D336E9ECA4236917455D8DFA46EAE6ABE8C942E087ADD33E3CE49C2A8C5E
-9E4BF0A357D1B9DAD6B2C01D64D65A99EC728DADC5DA83FC279CD60A08971941
-638CE3A7E1A298FB9832804EB4752758EE1ED81FA96B60A6AA1004D79AEE456F
-C3AF0687AD5AA5062DF7F0C8FE7AB78DC6122BD2894DBC59B4126A0D85F34C8D
-A748048087E7D9E12CF55AA2786E595EF5BEEABD86563204CFD5B1FCE181B2D0
-5410E3836E394D0843984362F65D4A55D26C805E15EBF488AEACA766DB081C3E
-51267E8BC8B7E4373183CC054B68A4839F842DB22341130D4A1D312DB573060A
-7E73FCF514617C3D486651D2C8075E02331EFF65A2CE8B9AB7E35CD969550C2A
-89DCE554802F08D5C6163A09E669B7F5C6754138D778CBC5458F40B4B51C9A93
-5DD23BEDF12182BD5F1E42B2BFE76F421FD8128DA78F195038907F9EB52268A8
-324B1A134148226CD0B235B8A6DBAA8508A7209720E892B910056D55AD5797D4
-26ADBC7FC9E6A41F2EFA145DE8707D8AB76970B46D2F2CA4CE11DFB46B9D156A
-E75210C6F9A2B31DFFB3670CA8E52F322AAD31EB71D3E0C99CA791797650E5F5
-FE5EDC86B5B19433B9363A388FBD4C8ECDBDD8281A81AC935371FEAA2B841C98
-3E54FCA6C6445C89374981ADF8A974F5D5CACE8E158AAE572AFB2D282E73B1F6
-C7150271CDE9FA5E5BB94244F04B0CB671EB2391BB35EC2FFBFC522237F54168
-2A4AD8B48C84C4FEAA2602AF9483A1A07570F8E84434F1FD3942A13D3A30C1CA
-BD7901D49659C85ABFC78124215386C475AA0E229E98A9A2A47E32B46F09AAAD
-6C8F0D5FE2E4D4D4BB3B3C3B23EDDAED65004BD410BA829EFFC414DE349F8852
-75D4C9567FC887F173EA3E5AB863903C728D65DEAF592F400C803317FF9859E3
-1BCB658A0458AA355CE3671C35047760ECFE8AC3A01C3B975F01A02CA21E4CF6
-697A9B828DF3FD28BDD625D8502133E85586A0F66386AD428C1E65AF78A65106
-188721680B04E7EB756C564859E4F8E16B9DE6B7231F8F8AEC8064CDD8C923AF
-7B0888ACFC86AD6E03D83A37C52DFD5BAC714A09727B53ABA05461DA406D894B
-81B4B43D3F737939EBB7CEF3C4CA965705411B1EFA1FB6385A6556913A6D32F0
-3CDFDC04F88F214763B7E989D288C6B8861504CF5E8A6C67D16FAEE5E6962F6E
-0935372016194115F205519805A8FE8EE76676EA3CC75CEF7C7326810BD3BE34
-2EC114C3BD2508ABA9206401315D75C4AB6401E9AF3AABA580E47776C6A7D7AA
-B576D209AF4EF84F37608B2CE84D98008988331C5DEA082E8523E06A7BB59004
-CB8C7F4F39B4E83C926CC519163C17FE4CF47F1B66CB444842F494B5C8C1A386
-2DD05BED6BF59227A5757410F63CD8BB77AD0AB848E4B8FC85186E222208740C
-09B0E47BCCBAC26EDCB9029727EB96521F17A7B32E719001E59C483237D8B9BD
-6695799A0C3B80ED9C7D64DC153CBBCEFC22B4B25524BF5B301431F192BC6933
-A6DA377691670958B04AA1F7491379CB60C87F3110CF2BEDE95D6611C2A9604E
-083B721D51F513E47499871C0E3E504E8EE620CD2E0F450E3035CBCA94242BCB
-E42CB0E8408A3CCC5575C261F2325EAA2B06D91A65AEC162268D751CBBE9D5DB
-469592065418BAFB50E658E286933DC0EDFB9E9F7D82AF9851E71AE9DC4A9DD0
-8E01F2533F5C8F83DE9C0D0A49DFC375BA4F32C2BCA5774B702066CAE2647B9F
-AB7541FEC25269D28A7AB4F1F60F3EEEB5D2EE23408BCC84AE471EB6540A5438
-DA807B936F6C27FDC536D2D8471EBE9967B9133A1A5641BE80E64632E61E5E8A
-7700465D087E89BFD1C6197B8BA8A41CF2159A0817B5F95351E02E654CAA7978
-1FA6571CE47EDE08B7E66A2D0C8EB88AD6E4F287B9809EE5485A94EFFE85A73C
-454BF8BAB70BA2000F2B56BB3E0255892C3E4480C147CA11D4C3AB71744BC536
-CD21B6DC302B5895BCA9E72285744E93E85D33A86688758A060304E3EF024281
-590A765C943980884EAC5298497E7D2460C55EE1BD234C407FC63B9B3029C018
-6C86BBBCA5BDCD4300359A40D1281A0211B09B2DF2941EA893F5DB95BDFDD018
-6D674A37A25F63722AD62597314CABEC1F3A2460F51E00451D3095DAE1071ABB
-17A8DB8BA0E224D420D4A0EFF9EA17FFC7801D36BABADACC27A0AF1879C56628
-573059FD22294243357928DB4A835F02B3807067DC963CDE81CF4F69669421B4
-88A159B3502CA9619F5B30CD992F3F94EF3868CC695F52C5E0619E88A750D6F4
-90DF0CD32D6642A3D19549C733B89391041D0FC126AADC04D882188D9769CAB5
-21BCEB131BC5283CE6E9E6F650246B1D59A7A559EB45AADD9A669FC39EDE6CAD
-FCA20CFE0922C8730D56962F4AD00DDDEE28B1A7C2FA02CC7C59932AC31BD59F
-E0C837740EA82EE6C804114DE18CA35D8EBDE3F0C16565C2F51A14083F5CDDED
-C5B7796F9E6717A6A3E963F3DCF7E76DD7F896716193C975F4EA5CC73F6E8C95
-C987260A3653AA099EAE36068B7FD793154050D9868D9D30F4E4603AEF7B591E
-DFD9F478EB30D16AD0496965F5702DCA4BF33541778EA2FAB83C25313F8E694B
-43FAD86D47D5E84B51309B3E7991B29E9922E80A34AA1A5B895765ACE2329F92
-8A04E9A68A0D9C008EA9E52A114B3F09144C30A00A6E010BEDECB7B955AD1B06
-467F156EF79E4AEE257AC357EE49724730D9DE4942E84ECBBFEC6CC7C85CA2B4
-3BAE1CBA5ECFEACAA7ADFA4508F1DB7E6C37405439138ED4BF236C1589A319CD
-3A5DD32D848C22F07732BCE84FD15F86AF8373AAC85252A8F8EB7F3915B52558
-EF02270FFE20521F0347386B3A253A69D9510900F7052A95DE26B29D48D662A9
-20A437B9944E0AB22AB623E7C766A752D89A57AE7BA6A64FD96FA05A5FDE6C8E
-C6084C44FF6732B5B95A844FFBE2BBB234A3A247D4D89B0FECCA87C986912A90
-4791231605EE8EFAA7BC7F2FA5551991706DD4A677639A69EC231CEE3B0B05DE
-AD7C4A221B7B74349DEF428680366F1947D0103D5E4D72AF8579FF824DF89949
-6904BD33856ED29B9AB43113DB038902A9DFB2DF3036B99E5508156522E76539
-440A83884F8C08F8D8449DE3EBF2E6A775090536040BCB299FDCB7E9AB6AE453
-3AD36E109C46221C82265DFA576029157FB1EB3236F1A84FCA1B9B68EA2AE583
-6BCFC2D127B1A169A7392AC1AC251A14C32D643D21C5756BB6E39AD478160069
-A11B985D9F69B800D339BB0242A9A7199E996B02467F6A1F220A8FC245BF2F45
-5AED4D104C5513D3206D57C6DCD93B9428F82CD9938EF6468A165B5A53CF556A
-68E702C0A9796DDFC79DFAEB0ED0267BD57D099D407AF32F8F84EECC9C84C57E
-C34339DD87991056EA0246914D3E2096517B7C0CD1F674CEE593B92129F0BEBC
-2ED3DBAF4AA2EC0217DDA3A7265148B433CDBFF63A68C4A33BA2780E99BF8744
-D3ECA386BA3872EDA1B99A6191EAA8FE477301A84DDFF5BCA00551286CF62477
-10EDF4D58FB980707E202C9C337663C9B16F9283D36D540C75DDCFBD525473BB
-027BBA7FD75E952C2ED012B5455FFE95DA7E04C20F8A7D5C11813646516968E4
-36259B6A91966E87664978BEA76C2B2E093B2A65591D0EF3D501D91FE135C2BE
-E97A446B0586BE37201363A10C2F73026DDF0F0B6FCB331272BE349027410D4D
-958EC50B66EB7A45A1E818B67ED9A5DCC638D66164772ECEE06A80765C0B259D
-1B01A13FA9208182644F5853A8B8C3EBFF7F25C575761E9A49C5275E66B16FC6
-625D7E73A657F9B23EF1CECED93FEE2DC83EEF7D695D76D19BA87F83642F6676
-C460692CD64AA6FB768DA6008FC1C79E22055261A9A62DD1950F4899A7F6A2E9
-21D800038C30183019E084C951394B9F6AA87646410623B996B310E86858BE3E
-8C6DA85FEA3D6BCF62D2C3B154104E7CB5FDD42B54F52F8DBBC12087570F4C6E
-8173A04835CEA36D2280C5C42B880A498E30C7A77940F28397DD279907693979
-077CA5D28515A04B4EFAC1F0C948D69FF108320BF3B5C3C7D642AA0122A49ABA
-735B8D950535460E0B2C17475404D8E85DDA4BB68E888250500363648828A193
-AEBA46DF8C644FF81A998C5A7E4F9F9435C4F202C3DAF498484A012D4088C4D3
-AA9E813A9161BE6F9844167AEB52F29013BFFF51928E5DB7B48BD20D86F317AD
-63EDEC755F5A85B2B07C5B0E0A1B7A006D547744462AB0DDDFA9BC20C95DC57A
-61D44CB4A45558C68E36DD3F680605C9987B6B6959DE24DD65C874E46D5AE7B0
-C54608ACA7D5C7A88FFA06D9F6366E623F036EAF7A9914B0B549747AD58CC031
-97036EA1D54D01A736BD6CD796600E5884E90DB6BC5E2CECD68B995D06B26FC5
-2B6EBCE4279DA0E33317071FA1801279FB48563890C888BF6F2C1057F9728A95
-59D07684FD8997DC446EB635E9A5171C14E2A357C00C30886EF1DFFD229A82B6
-42912D02E3AF236F5C773456BDE13F60E8C674B21BD59D4E6444371E28956C23
-FCB55999382C3347777CA0CE8BC002CB3DAABC58D52FE542A115FDD96D19061E
-1A1DDD098498C9A8E713AFCAF355D2765DAE775FE6F9EA4DE42A066DEE306432
-065E7DC31F144697EBD270671A77E6096C0E191C96449F7E94419C752B920EC3
-034686DABF9FE674DB5E0744D44A82DE6B3933193F2E91D7A74BD17CA9FCA7AE
-CF9E5650355DA885806A24A9993F3041038DBB0DA23D74F12B86A329DFAB87CE
-C06B3F1C7A0D84DEBB870E64E15E251253E82ACEE05186D3ACC88E838F276B99
-0729AC02CE325EDFA5BC3F5DA079E55CA302824AD2DA70964AEE86504BBADCAC
-44B9244CC456CBEA44517185285515DF5AE0BDD7D98AC8928EAACE6AAE7D93AC
-E256992BD972DD6E33EF98DE9D9EB30B6D0569DB0B0BB23A1D0F9A6AC788F6AF
-AF81260D25B767AF16D5F060960E11146384A241CC05185408FE265CFA941DA6
-86AC510021788D2767FF5B384A17E60EF2A664207D6344302CA491D7D292D7C5
-A6DF93AF2ACDAC6970A16A5D3C78991931163509561A0CF10E7375F7E91F331F
-B84E8405E9A1881DD4103B575E80F36F7203522282CB5E899DDC42C781963830
-BA1051F49DAF440F28847188237492149C74E4A99C3323635BC051B8000986D4
-1629B1B7038C98D182481E182D4CA4F1554902D6D88ADEE755E9155861C0D772
-CB414808198E4686B722786911914585F81D84501B40684E279C5E6B0B0C2FCA
-F3538806C4A410EA894CEC8218DE6D2489C6239BA36233871B0F449B4AE9DDC7
-F00502EC6E7247BA3A829795C9351B50D312455F1486DECC64D2F159B0003FED
-E201B29443F8127878BDD436CF7873F22B3FD597EB81F1D630811BE93A51D340
-FAB3D607EFF2A65A74E78C792896CCEA1C2F1C36D43F1950453C79A9F0767B08
-DA6247B44B703157FDDE2F431089FAA9AF23C786737E921D76BAA2D68C3BC8DB
-DED8E756624970C823E97C598DEC658E28AE00CB901213CBA0110E625AF40618
-D9EA9369F124D089C2CAC832A145474AE476AD16BA5BA3FD9C28122229C3380F
-AFA46693D5E9A6254C055DAF47FE051751FE7F9284EF39A36C5D25FE6FACB838
-17F86520B8F143F8A7DE0615FFE77078603F5CD60DD0DDA9B84F44CA3BDBF2EA
-10F6CF79CA3E66EEF95C8E8DF98951933358360BE4A9CA23EDB5F5CD794974F7
-1A6708F418D34E6BE5BE645C266229A960C947877EA14415CEA2B238C8191387
-100FC1D6A879B129AD2CF7D50EA7FB9E8BF2C80E6609809A0E8CE2A70F2DC54F
-3F958E45E63AAF577AC7023F097A77C8412A48A3E608B36F96C39AD6067C60D1
-CC7A2E00BEAA799FD75F1F694928003FEB29A8E6EE075C57C789781D3E983115
-68AC3B16695D5FF9E2416277288367B040DC47D40D5EE565ED73DC18D23B8EC4
-DEC6790571546F0ABCD004B3A6C2360D7BECAD494888E737FD41C0FF1D277891
-7DAC83316800F786A16959022C9729ABA334E45E077A69D02EA82FA23086DDC5
-BD96F41FE176A7F491EB87181FE64F647980DBA6F210F3260CEAB4E076918F99
-D8246512F1BAD74D3C15EC69ED19346B60E59D8A9DC26D00B47741F103DCAE31
-A2CB69D1BF659C091044AE0E2796F13C9FB5CEDC3527F90D035EF785A0655296
-0C979C70AF9637D7C6E3DDAB3A9E17594FAC3DEA75
+50C269D32993CE9CD1E8CB35BC6F69E7574F37032219C6E1C960F36E3D4BFE89
+EA9151128893D08EEB495E3BFB9FDFE176817158868C28E471DE8A603B1C326A
+DD5E583885C494586217E38734C9166D1C6792904CCF4D90B6068A5235A9B8EA
+8537D75596F8551E87FFAFD948F6C5937A557163E9208FCA594AE4A8B09196D0
+D34C41EFF62EF84AF7702B7BE20742536EAED1E84533AC03251BBB97104BDB89
+7FFCB60E0BA994E77AB8565456F7A1A78C455C560DD52DE1C0C4AA269A99055C
+449318C2D9E1516360976AC9F397BFF8BA60CC6EF5BCAF22714CD44A04CE292B
+B1790C8D2181B1BA8C3E5CCF9CD1F41E67DB703E07F145C3C03880B88508AD6F
+98350765543BF98A6654A9E7CCC0A8F5D4DE2B5FB279B1CE895FB5E8D4A524F3
+EB2957168A57C2CC42612BFF5077F7BE0A085790C3E4A811461906D11240AEB1
+4DCFE203F3A7DBB81AF6ED9D592DDBB0421B542763E15C6330243E84B2C1A883
+B5F1D9B3C944CC875F71BC6CEBEFE88625A283349BC9A000A27D21DA187C34F5
+A172011DE22076893C3180AB6F73C138B571558DA02F9805E5CA8DD7BEC4B688
+818D1432CB7CFC5DA10B7854D5E66FF1F467C08795E67F166EE0323CA9B4E4AB
+C8FBEAFAEC0617E1EFF064B4F6C8276D9B9C318A590B1168AAB43249ADF44A2A
+135F24D931C4AD6AFD61E6EB083C531F3A259B819A43EC662BA16C881EBD5878
+A8B7D9C6E17C773CB7DF3500F26BACE35474D82CDED33574EDE3564B68360508
+1627DDCDCA31F72D9DDAC4203BA4C5AD459BD2B16CBEA1850E90C7648F48316E
+832078A8E4308715374BCFE000A0ABE41BABF6AAB417FAFE546AB11409A15C57
+B4935C834F272846FE93FD8AC9506FD3007746738D75EC93187B443E61832243
+6208249EC4F8C2ABA6D41B5A3FA2C9F35786800694A9C000AD97BB1C874C8661
+9B977588A5C233664C061F169FE9AC6579670C90DA4D606BF5B1B98E14B1CCE4
+3D3036F87778DA8864DF6F17A0F90BB687DB1E10E95B95FFE086DBCB95B90C6B
+EFAC61453A611E474693EA00219670EDDCAA7F52FA41BC05CB3BA2190153A91F
+7FA13B0519BCF5DA1F7928AFC32BA91D79AC02E3DBA3C220BA0F323DB6E7069C
+282091BBDD25E93A324D3587C8E0DD516E88A1DD5D690382BBF1B92C091275E8
+ADDFCEE798A2DAE549FE01454DD9B24DEA444A5BA1A889A8CBD93D04F5FCC896
+EBDBC5712EA43049829A31A2B0D03E4D83260B350F89A7F3C505AEF37F9AF745
+61741A8158F9D28C2C0F3A74006A8819947016C307B4F6CE6387ABCCA2D0ED16
+7059798EEAA62ED336CE8A08782D88C85415181E19B187C1621A9FE8F4BF2BC6
+63BC50D249580DDE8BFA1CC5E1F003B30FD323F536A836A92304F7812080B30B
+D64036CC285DBF1797211E99211D9372CCD56C4EBEA86DFF83984E65B641224F
+2B39A7EE18E22992D6E4E6BFF82C7F4633B9EAB9C2E2F1CCA68B8A6CE9ABFCEB
+4C5110F6941B31011F6AB3972215CAE054FBFCEBD2C51B97A874285FAB6500D6
+E0D252012D7B654DEE6CFEE7B1802E0DCADCD0B96586E6E5F7781D434BF3ABDD
+D82093062FB8C568B025014DF449551DE6EA90E99AD986D6847AC06989CCA843
+5A61F955C046287886990CC2C39392E58361F03F5512031202D82BA5229E9F8D
+238F415CFB4447BBBB227D380649C4103CD64FF97DF63E1930BBA186F78D77A0
+70CD84F31652F7827FCEEF7E6186A3E3AC31361C31167C7EB24B8E5C7A7C9C32
+7152ED127379BA6E62B3EDA72679E4FAD650CBD2134D19A295E56AD0CF51E5EF
+62CAAE638112D77BF814AB4D0117290BCC7C639DF4E8176E462CD2B5BDAFFB24
+FCCF0434FFFE8EAB587EB15686AE140C5167694D5C2C179D3278712A5C0D7A54
+6152AF2975B753B14B5E641EFBEFD3136BAEB1EEA42141F7D456F3A2628256EA
+8DDEBBCE288E454243B88EE930D0F1FD96F096AA2D3B3D89DBBE2D246E114A32
+943B6ADC29DA20560E047928C5E2CF51F4CFA3DFF1863CA9F4F8A1236F175C68
+6848F983570E42646BB725306985584CB1C04EA91AED19A4BDEA7A0392D1A027
+01CD2B6E67F7EC359C3D366295B5428F468FA96FB3AD6AC55575E6AEEA3DBC3E
+0C87E738D2202228F386BCC1001E2C6ED2EF0C09ED9AE6D8915C6324A83673BF
+338CB40AA0716736918ACF34EFCB1D74858F06C717AF928C6385804D431ABFEE
+8EFA4948AFE9C8FFF18C42A9254720965B87642C74E4732A7BA2EF445480E471
+09991E6FB264446B6BCD3D45117E4241F1BCA5A7B190D9F6D22B8C8E1EDC6AC9
+E49429A72BDC06E9C381975408F1514467932C99B33B1E56D22E650A30A139A2
+9C30A7989935E5843FF97615AE53EA35414E3A89BE68EC96241382B6F1B06527
+BF325F57C91BA6613ADDC1ECCC515ADD7C5045B4C15C99F94CBB55FCA7617FDB
+1224D534059A85308F3AB3A49BAE5F36B6EDC5F4BEE21ED342AF6E5F7D6F4965
+7F87D9B4C1348C53E7178BBCB54AEFE197EA8AD41500DBF96A3B5669AB5346D1
+1DC8FC2F7E1CEDDEB84CB35152B3A8DD0298CB048910F3D70211D74988668225
+82CF8C5231705A1488ECF6AD9FAD6FB27CF846764277844A7DC46DFC69EBA6B1
+35D62458B2B54DB84F8809DFACC8DD910ACD07F577DBA983FA6E088CE237DB8E
+756B7AC10CD3C15E78357A1C767C04C346297320827F1B60E445B43BCED332F3
+6E8D02B3D98162C97DC577839177BA3F9324303116AE756C8A81595EB759BDBE
+83AFCBE7AA5A674E9F3211FD8B7A0BCBBC27F5EC64DCC49D26F07EE47EBD361E
+CDFD954183AC21BD10093673CF3F977BE7928E3851C0E44149610CA704337A94
+21C66665FCB6CA8A5A93DF2D0DB85E4FE6A76DE7D563ADCAED3A268C5AE46095
+37F51DF0E3E44E32041581954EEE3804C0CD227D687F73E9867CE8FFBE5379F9
+0F9926EDDDA61336D7133AD9F0E6726A00798E211724D8265200F2638E1D101B
+389B320CFEDC67C140A5D5478D82FD19BE881FF57FE4712530E4F2AC7BC9A051
+D2EB22C8C4B24D134159B03F5433FAC223752C2C6AADC6372E707CA91F905A50
+FE3DB39A3F42FF420696CFF77E81F47E6DEEA39085AEAE15162C50BABDC74B83
+0B683E66EC322121D44A17EF9A65303C646A1C6F822BCF22BF05188D9B8C670C
+F9C84C251F474BEF51F2C8F1D2007B3BADEACE0BE12F318FF2A7EEDD334F532F
+7947A483562C92D3093DF49405F10DAB9EB22076B004345A0AB054B7D6C30F77
+387819F781A1E9AE3450AC60E2CFA7D4304F7BCCE86DB8195DA132DC63E2ED23
+DFB3A92138A70002868B7A62FE45CB2AE476E28A2EB331D6886CD3F7422E22E0
+1A38DC4DBEFEA74ECF361B813C79B261400EC863D47EB0BFDF315FE06FAC834A
+BFEEC1053C904E34CF0DEE66A90D81DDE978FCDB6572482BD913736E5E028A3F
+271896F4DAE568FB682966AAF003B53C0D3EC294E8CDEA651C7C01940368DF71
+CAC09852EE8C6904DCAA722C23BD25F1D15F37B3FF2D7CBA7E840CCEE9E389F5
+ABE741DFA20159C327ECE4F16C85CC863B48A28B3BA2B247078FD5E215A530E0
+5CCAF3554EE41ACD2D922974A54DF2E19D68A1B631F06294B4530070EAF23A49
+A41FF9A610F38D43AB46365E9F4FD354F9CAFE3D2EA8A8A8A6D165569C6810BF
+39CADED26AA59493EF64871E0A39187D356902A1D528D32804CF267B6A8BDFA1
+61F559DF2F2AD592F8D6E717C1286014D6E3F9BAFF19CB3C7FF6D1AF35C15B9B
+CB603ED93A342D84C2FE7F67602C0815961B0093FF88524D1558D75A0AA392F9
+AA473A2777D454985D1DED29E1B73EC05F4468BA880187E11A4D312E54C7B8F2
+85828A57C0A23D0CE79C0525BAC2E28223B5DDC792AEEBACCD16D50FB857387B
+19CA13386D542079B24E3FD28929A5A51A65D7BC8378BB64A949CD2F87804FBA
+62B91F345BEEB85FA9BAFC4A6CF70A054CC2D6D1B28066BB6BE94A56B94F3D72
+FBE1984956A3C84B15A4C2B4B835EBD0484FEEC040CB21795F3841B10B51BA83
+48F1764EF9599A3A1EA9DE8AD5D2573147B307BFD28560F53DC7BB3C878D03D1
+A3931862663E9BE0CC7C911B7E092F0AF67E0710F0930ACB40D4E2BE96C54FB4
+6F126497BBC244788DC93139A942C62CD674B542C403A2D080DA0CD80D8DF77C
+CE123CDECBD4FF7057322BAB2DE448F738D8D0847A6220978093FD7DF53C46AD
+091474D7CB706945905EDEE41CCF0CF88CB3C416601E917F10FBFDCEFE280660
+5853E664F5A19DAF5176CC78E4C11E66A5F861AD062FD08A763661392B09019D
+DB92E6ECD7ED6385C11A7B06F958DE1DC58128E54FE087AC2FCB75142B2280EB
+2F303D6D89EF803FFBF51CEC3748C1C7CBB6B68D1A2D58F0C9FA4F11D6187EFF
+AF7066F115D3A92791A9B5A565D35B0C05E68E1C0CF5D3E7CF17071AD469BF24
+9776D3DD38B8E3B5EF61917345EBC145328500EA7FA7D1529172BD449154F45E
+994FC486629AB73A7C037C40756F01998F45B0C7DCDE495D6BC46F8C74A3301D
+3E67CCA6C76601B955D22419C196BCB6A364DA013D19CB3CC7C96FE623D4C297
+E40A62C9EAC215EDA4CB775D5D2E01C5DE404B41FF1AE8745DA180D347B9DC6A
+30E13E9131F01B7145B8A836352EBCACA6DCD8C5FC678B05A10FC87B99B0BE1A
+7CDF3F74F04B6311741A0CE36B0059F134DE5A4FF8BD78C0B672233A199D719C
+9FF5024147EF593B34ED944B9392CC729C14BC396F80DF850FA4FAF0DE983F50
+7B5067621AF7815C100EA9C9DCC87145B9C3C3C5CEA0E1ED48F7D5B523F29AF9
+CFE490F866987B8F7ED706E9941EED5AF5E1D5F5ECD093649398A598CDA48EF2
+1A0EEC40E73835157A7A7B30CA0657BB1B9E68E8E3A57FE6FCEC9511E579A452
+ECF2FD8A346E66CFAB96089ED734AE90988DDC478D07B188B50D245B4A4C99F7
+07902307DB82A0FF206CAC813CE35D858554034DC4AFBD6C4F9D927BA7EDE10A
+4624A888E4C2FC0D14A80B52FA76B55FB8E3FA3E42F80EECE0505316370FA477
+0F75F610C8BF4700EE5CAFD0065B63263CDB2443D7B0A6E5D746207D62AA285E
+A4F7CF22EC4A0113669B88C4FE4CB265906ADC628A2F2135B5B151878824084B
+C15A66E04D970714B40F2162A877B20D7F73F204510904B82C565098533B655B
+4BE90AFB9F680FE412058A56B7B0F26AC23C411610BF3E4594AD1D2E37DC816D
+C6D560A32EA3B7CFE827A0C866E91748A7A442CE322728ED49B31DB75590086A
+862E589797EAD60B21A267304E1D16CA28A1D3C6C32472A13A7C483D46CEFE30
+140595AA2848E963FB3B630213C82CB56A27E5CCBEC0929052EE1F131EDB4895
+230B441274D4BC7E436424919CE3E3CB117813BE96A0D7A7AE51F8257E4E1741
+F1E27E8ABA8CD17EEF372F8224A2E4FB888F33A2B2EFBB3DA4D51B8D1BCFC276
+AECBFB4273E6C087BC4EBDF8B3CB32DA1391F01886EE2C3CBE5D471E95BA6138
+0A1827806771364CC604446AE0C848FF72EE047141AF62ED1F4A1279B78BFFFF
+9808B7C82284BBED1D4EF4C9CBCB9C5628607BE65130CDDFECB6B4D392070997
+FEFDBE4F8F9ED172021B44392CD5CBA929B2CD916888B857B49AA892213F34AC
+AEA9A944D571662C599DD96CBB5A8344E4FE30334B11C91B773B1732B7004647
+EA87CB846AF8B657A6C5A4A5FF22A804B152206FE5A79AA48A9E1E2ECF3178CE
+AED5565523DED75DA94D595AD6E1F899F55F083D07AF133B5FAC44173A673A94
+CB3E232489F04A396F8D9041B26923FE100DE91CFFC05E320A9CB82A33E1508C
+EC32DB3B802D3D7C94D7D42B18A88765375723984FB80B1714335EBC38B33C3D
+CD2A23792F7FC844D682812ACF89F2C34BC30EB82747C47F18DC8568113E4E34
+A9C83F67DFAF6434BF54741FFAA0AEC52E242808E943DF5D232F418299AA2C9C
+C9AADCE9C16D9A799F19611B2859CF300F03B69F5E5F2B96F7DBE514597A5457
+C5B15FE3CB61AD13EC7D3A7A21B20361522202BDC5134215B7B0DE0F6EEB6EE0
+6784F968CD2A7B2001605D87324AC2AEF841A374C9ACF7E71468888D7086D9E2
+4CAE51380438C7955FC1984ECB01E100C99D16E827FE8ACF0A694D597EF3B303
+25553DC521AABE26B1FEDA811043CA4C9D7BDABA45288692705EE3480381DE24
+0F0699C39B1937310C0FD253DC3EEF19347B69A296CF554598DC46B86751295A
+43C055B00AD7C4017E373D2C425C911B553A00394B8E3F72DFFFBE639372145B
+135DC938E489463128CBDDBA7B84CDA85E7844F40FD2CFF0CF0DF5C666C522B5
+79BFA3B1ED50482EAB607510DDB8B1E91E12E989D39CB618514EB7B3D9865DD1
+554CEF820248E44B595B5B6269B0F5FBB0FE271CF12CAF65D167B5EE0647C8F3
+1CACC8CEAE9D5459CCF9C2E0BB95C465EFF1BAF18DC268D3CC09F7B944F4C12A
+97D95CC49A623BE263768CECCABF8C325A421A62C9467B967F420059ED04A06F
+391F3B2FBB0B63EEAA7C6BC035E3CB59B955750352FE3D941C2F597A7730816D
+CABBE5A0B549E8E017FF14F106EDD7A6E9A869FCB46F29EF7D33CBC5E05A9814
+47329E7D2A3C6AD3C9A497AD9D7AB4A6FE269009B9869F6268217F2A650B744B
+8CEEB535939B05E1985C5AEAB24FBE531010BEF0BC2B17EBB6D8F5AD961C1B3F
+990876DEC67BBCA281B7AE917B1B13188E75F0FE86C5B6B1D05FE0E3353F9BB4
+AD7AF46367AE6BF1E8C17C70AB365AC4CC11534D2590664FBDDC6FE2896679A1
+C396F4AE2DD96FCB15C6CF985F3B389F212D0204A7A37E2EA1773B32B1604833
+3A0C65721E8828BD41D8CF7B29A43955AF0A874B8608CCDB8248B0020493420E
+78FBDDB074A4BA0AC5A3172CE48B9B1EF6EF5FEC90C6100BFA807319305A0E79
+3ADA1DB52AB0A87DBB6EA98DBAF2D1FA96148E0108341C870ECC27F1364E4F99
+F5A4EFFDF0C96969A257BB7172E970A6A9D77F4430E02EA4E73C8B2D2BF989D7
+79C39B0964F2CD77185905AA1324EB0E0E604573492C4CBC309387582E616C6D
+55DE254F6D0117EF20DAFA3E1E3A7421403406797DE8905939A7B28BEBC8317B
+5DD7C98187F91758E60C765D72DEC2243F06CDF14E54484FC10E935936E140A7
+C5F47D16222F5EBEA918F59639EBFDAF63EE0E670EF4E266226DE4363DE6DF03
+DCDAAB957F81A38124F716D5D1DF20503F4B470C6E22056475519E205047CFF6
+0B268C967C3FF890DB39C5BA142568C2E15A3E857969B47977E8B23A5D6C67F1
+CBB0B132D6DEB27FBC80BD4E8967BD72E58000486DC1A0BB18DE4560BBA710F2
+165C8E63F101F5D8B52E8DF775E5212505AA4652C1332C890F8BE7939789C2C7
+C35DB69E8A53A9250269B6AC54D93F05357FA5353E7A25C230511E4F7D1DE728
+A2450A7532336A2B7F42B6FF494326A2158D8874041A3E655771AFD6F5AF345F
+235DD65C78BDC59B6B3836849F4B7621668B84A8FF131B9387D7854220820F69
+1B6F758301783B20BE04CB8B72414187E95E1DC46AE44E50AF0947580A2CC9BA
+4D760558EDAEB21BB9F6ACA87501EA5AE7353499BB9BDA2CA93C6D9260DA7E43
+6222A005996D808F690E330864336A82D329937264128E0C460D863762E8B615
+4EEF1829146F5A4C8D9E5DA499C1B5983784212008F4067A0F803AD0F155C90F
+D4FEB342E8F7DC641D3C6ACA537C2D290BA426521CF51BAD0124C1C936FDEC1B
+908B77D12C64F34FA8F9AAF179F0B9F1275BD0F3C28AA61CB5D4E7A1BD3C8250
+3F199427CF252DD24E5A69523664C2DAFC57C73457BF0008767B50D1257FD312
+50E211A636ACF39DAA659AA1384EA676B072F0134EC330EF9E57B96862A968C0
+75C246A61C63542C27FB038FF2E4B68A2020CB21AA4A8E9A5F4261ED1472384C
+C18F4030A84BB60740B3828F9044347BD9EAF2198CEED44F10504B85C03352D3
+AFDCD10AF5A20B64B2CBD6A7E5F15FDA3FE03F018605EB989F0F0466BD913DC7
+AB26BC728189D0A63DD86E6F2773DCAD12EB845AAA64A29616927DC7578862AB
+F121289CB7CAF6124EDC953BA6CBDF78F6BA5D17009DD83E95520B33CB9ECC46
+436104E264E8C5D849A074B3227B9CE2EFC4CC3A5AF227EF2556EA5DFFFA7A8F
+63574461D0F846D0D560BE25DFEA89352B6BF0D82B2ACE270064FE4151869EFE
+BC880D3B7B636BD9558E10DF49F2BE605760F7F1D3A35BDB5956F92D11807F8C
+1502375CEE05441147585AFAB3E1B069CBADA561394C5B548186AF41B218D72A
+95BA3E29C322BE7F5CA00AD443D7AB4EAD53
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
dup 51 /three put
dup 52 /four put
dup 53 /five put
+dup 54 /six put
dup 55 /seven put
dup 56 /eight put
dup 58 /colon put
57176CBE8C802A97B0542A5CFD6D5E6D7EC848B923012E45D9F065BFFA0D03E6
788B68BA4DE51DA37994948F859D41C28BA939C3A82BFDB44DA585AE80B8CD7B
A6EEA79B70BFB4864E06F06A9751BD2D2A209D150D7135E0A25D67263EDD2A7C
-C63B5B76ADB05A2BF747D5699036377F1A645372E5CF6497D8D4465492780B56
-0D7A64F4AACF00DD611A0D4AA2A1B4ABBCE41B0BF87A7351F26E125166E2E07E
-2E64639C4DC21B996EB744C784A145F80D07676331178ECAA4967195803AE02D
-1A6A04B38D721323251A1B1F656498F5FF255E4F1632DEE1A8C2B197CD7BD5FE
-3819B1998273EA5EF8EE032E0638F6DCE419852021D098A19CBA9A2B675BEDDA
-B6513BFA1F239FFC92CEC9ECC612072E87FBEF1ABEDF6804E605AC8979E970E1
-3EB524894E3949BF090C1BB477C45FC0054DFB6B6816C5B0312BB9FA09EA87A0
-9A18B9B5E0DA687BAB199267EC6668094D1FA853632DE7124CEAB78BC994D6BF
-FD8BB4B920B89A68DC0D60BB73AFED84D38925B4E8C4D4E239080FB47F44979B
-7660A9C57F1CBCE1AD69AE3E7782796EE69BC910251DF8406ACF78CDED5224AA
-B13F1E17BB454BD4B5AAAF0143570E5FB2236DD096A2607B8D24EE238110486A
-0759B4AA276E3B5AE6BCCD2299EF7EC5C0ADB9E3A838DF0A0541FC56F62684E2
-F165BDE1EEC719A7DD44D7251B0D28C63304BA3758C76B1FACD54A4E73C9B32E
-A49366083906EF8927B6463215012B3927CB643C0292688601AF2348D62292CD
-5E20110FDD05739D7EC6A3BD1B166DCC421ABA7901FB926025EF88A54B0E695C
-38E9C894A2EF7F33E5D0304268849FC3D2F972148ED6C631EA375D67DEA1F8C3
-C44173E5FAD943C81B72D818D7202AB20B77EA0299D4FF7FBCFCD7BDB0C9655A
-B02646E5BA32F6A7033BEA306BE69EDF532347B24DC7E6BA226C6005EBF841E4
-16430F8B4405B2ED05003F10080C12CC74EB07708FDBADB821BFE0DE6C8A3278
-C2349EB88B977D15639695B35C35235E00862E70D7E9BF6632E0F2E342FCEE2F
-16880A993EA9BF5FE7C0220D844C5920A2C334ED030FE2D062F8549508589F66
-66B2E4F66E249A01BE6CC56E73AB21117213B7502DAE7A2CDC2D8788C24F8F40
-74B96C17464510BE4F2543E536BB32E943522E9113DFBB56096A34BCF507E7A1
-B17451E6AF90ECD2A3E0234FF01F93BF0BF1300FAC48AFAA064419428256019A
-A55C94130C7A4AF9ED17AF615FFC9C10517B0D210C464C8C0E2B344B31D33886
-5264577F17CD7137CCED2612E1B01DBC93A98CDCC6C83A858307703AE11DF924
-BABC5FDE240C80CB0B4DE1672AD86C9BC4773E95182C70A6E809D336B71E25E5
-17C60BC4C8182FC222EFE5419EEAAB8CB1C04750631F7B4846D75651244286A3
-3F87AC81C3DE5937D4545937DF166D02B0505EEF1F744A2A955DBA5AE1FD8453
-8E3AC7E38B333C7A741A58472B543C870CD2885E812FC88DC0E3A56D3340144C
-B6EF013F04707315145E4B41142BB00A2BE5F6D17EDD30DFCBEA3F099010C431
-E2D5BD261DCE594B5E0FF7F1E836E88494B7489BABC9A230A7324E122F40DA62
-08922179B7EDF55176E4D11F985E6F3CE8B6695BBCCFF8AD96CCE92C0CE3E8D9
-C27F103747346DE482B3A922A19BFC5E18C3556B48BF53EDCE941744C43EF096
-E36866CF42D145087DE6A41F205D04A802E2E26EBA56BE4BE182B460E8A7DF98
-8C160EEF6FFA866EE54AA2541B1595F5B1D0104BCB313E5C886A0519311E2413
-CC40CF96EF3E05CCAF796A3FD36BEE034878238A40C77C6205904A9ABC8CCC9C
-7E1AA1FEAE4732BE0FCB9BFF9044486A232D39745885AF66470F281F7CD076F3
-B11CEB70BC1215D944D65357D0967F83E13EBBABB3576B89AB755A14A4A8D292
-5FAE31DDBE3999E4EAE54E5892C6087C4B6436DEE581FAFD1F33A8DB8000B5F0
-F644C655674DEF2BAB3105EA12B5550286FC001F5BA1A63F46E30A2EE663C24C
-F5390CF05D72727D7AF09433ED15A112E199447E0C516C8D2E535D38F5EFF96C
-763F51F7A8656D90DA6AD7199EC102AFC5D65DFC505E51E7EEA199D39C2CDF80
-B2CE3E35B688B79D566F1737C588D9CBBAD02F9782C7DB3439DD85BEAD21C70C
-5628EA55B38F9D2BEFA897974E09C2413E9C51A2400BB2364D650BF71637E7E2
-99DF9E4BC127FB7367DD9F74FEC16E339B19FB70A20A4A2E4874E110880294CA
-C90712CF08AD98C8532E3B730962F63C8F8D3DA209A0E23FA25DD02421B4D4B1
-DFAF5D3548FE36B0A1637ADE5CCD1672FBD40A3D1CDBB9499B4C660A27F619AB
-C06F37FD8EBE08C838060031735E43E74F649456956B785270C84C96EFA7C5FE
-2404D77480F5FEE892AF6534497C7AF401A5C9AD95B4B4D186076AB0A32315E4
-E6D7185675405E6E483571A3CBA6EF76403567F282B2AA8FFE99D988D612DEBF
-7ABD96797B6404CB5CD95D39464213DF90944C3ED33778F3EE4FCBB1A5F961E7
-9714553A81472BFF2052561C22720C0C8493D1B2FE75019255AA8014F437FFBF
-380BD498D02D7FA6904B4BC147C8D75C4863DCEAD5EA7E6FF41C609583BB7E99
-03ECAE65264FD63E13191FBC5B26E034651B737000E6B894C373B58DF4002F04
-E2F7ED898A9B029B671A19934263D92A0B8E3F7594FC90F62F937842E614689A
-238062D2BFB7C44482AF7C1556760125086F34A76C83B27717F322D190D30308
-EBD2A7BAC65B74105193942208DD78056DD569B2BA9FD4066A78DFB0316C1DDF
-C1B960A6AE6BFD9F7136870100916A9F8598C1647E1A9F86A26A83111433584C
-D0F4804BA5C3754AA9C93A9054C4591D38CC05AD1433EE5318458AEBD77ACA20
-5B1FC97F62B5A90E3B75C7A15FBF4EA4B0A8D1134E117D38C82781A68A3EE04B
-80DB2BE38196EFB1CFD47A5DC9874A15F21D156A23DAF2C7D31147D76599F8FD
-4A575532AD29F7203964BE4C153AC914516D33A54F97B9BA83562DB89D40DBF3
-4AA7BE547EEF84D1917B9620FCE9E5FC8771BA045C6BA72DC3CEA88BC85FCE2C
-BD04E17AE45A9D871930CC49F4F93447F43312888794162962428B915A6DF5EE
-0758D1D24AEB9792A9AED3489EA635140874BA43FD7FCD56103FECC4F4306C09
-8F06A031F5C639184AFB5C97A5ED69D6A974D6BA2144B4ADCE8F1285ECE7AA41
-BE46EB5473C5E6327ED45E1BD5D2721856E2751E85112A44A04F54556B41DBBC
-224A1C1C434FC53BFE371231544C64E64BEF27AC008BD468B51708C46ADA959D
-68C73A16515F09230DEAA0408245960D54D12C1E3AA868E5DDD8ABCAC5363927
-4C6EBFAE8F7B31C89BB7E1196C4C9FC9AF846006E838F7245B134766D83698D0
-85E95121BFAF5669E54B918FB792E8F7EAD1FD1EFAEB2AC98A1144F4A2081500
-2FE1E7CD3E1FFF00BD79CCEBC18EB0552EA5776E6A52E1AA30E3CA1FCBEF057D
-EFE38381A5E9A53B3ED386008C162188E393E81EEFCE3D59300CB1E5845150C9
-35D129A662146D504FC1DC23DB26E958D628DD312A2682654356C3F3221269FA
-A8725F1D52B5CFD7ED9FCBD8F4D2CF53CD7FF2BF435E75732BD9868155B6A9FD
-4511BEB18944423CAF5B2FE4EE6AB1CCE21927537FF3ACFE2D3344A471FEFB32
-D3E944E0DF6115BA76E5FD1C6141FE96C397B59F7D3270A605727DCAF2BC0D4A
-AE8D84FDEA284931A6DD9AFF9CA3AF16D21187533B45F77515F6FA432FCF53C7
-DCFE593148D2286D448A5922B774F0200EE756E982B3B4F8050D93E031488398
-8BF46569A6B233A0B2AC6DF78385C9A649DE07BE3CCF13DF7DDFE5F163D523AE
-46077B52147BC1C7BA80BA33607004F0B289CAB47DCADC7466F743973A546CEC
-939AB3A938BB362C529C4F71232FB9341EFF9A7CDDFB740BEB573F009E19E9AB
-79AFECE39A6D28F0A70937175399A045C2C1AB3DCA0ECB1F7167D07440F53910
-B8123E6C1E5EF4F5A1FDDF00D1AADBBA2182D35624A8170D346E40B117781931
-C79988553558F7696EFF44C0A4FBE8058D7A94F0E7C8C8B584E6790D59CDAEBA
-5B634EBB57DEF241E9823194818E6DE24985F2AE341E878C9665827155CC918D
-7C3CF4E508303382907BAE5DBFF39C75A49103AC5E604FF20C2649C30A70BC1A
-63B54D38C541D76E7616B6132C94D9366ABECB27D33CEE252FD573BE533721BB
-4311CB5557376E17EC4952692396BA291A5E593396441707B48037A84F515C13
-C58D372418B8DA762B731A8B15BA74837F2A6A1A1446289B247E7A6F05081B32
-E928FA2A972826D39C4A2CBB68274054BD284EC26411D07CE7BC2D06D64E2690
-C724C07CD5BC7F2DE4859F83F548DC0CCA56B9FE4E1DDC62E4B943B9F395508F
-F98E980279D2E7C13DE18A22A76CFF59814F2FFCE93978552A0F4E01D78B3C01
-B45A9CF8FDEB42A166A0E7678201526CF4773259EAED7B4099865DB5AB295C98
-FCBB1521D8624B87EE1CAC6B9B460E76D4B4E4D0A4BD69CA06A02D9AE0DC14D5
-55C47B7FA78A0BC299545C89FCD1A5449D45FAC62E38A42319DC318AC386563E
-4CFA1E3E137ABEF3EA7D9DCBC7BCE914902EC7D7B1AE6C9E19E739EBF1BCBDB9
-983829702832E22044F9A5B475718374F1A60FA48508D815F6810008C1299759
-EC776C0E70ACE3F719FE1E9DD554CABCE3937F54F38D5CC3C1392070A07964F4
-26B7CB30915F7586B31C04BAA3CA5EF956DA352C6A8A2A1356924727A8EB829A
-48C9A8894D29C2C196C0B731B6724BBBD84FBB94AC9B9DC80C435C5387D625AB
-6538076BECB3C21D19FAB3551075687E1C43CDD9BE49CC506D3423B5C2A6754D
-87CA10D3686A4FCA91AE60466045A328F996EDDD3918E2F56C029D1992A2A1A2
-78B2E95B99C822822F3630378ABECE2C2318010BDD2A492E112602BA2E092693
-54DBFD0367AF9552B11E043BB544644B079ACEA1BA6123CAB40F9E7B2ABF6969
-A8BFED3FA9C3CD76CE6DA595C63956DD27A87F256A7801330F603F21DC8195DE
-04BE9EA43F308B2888F5EC1D51DD43C6B44363FD277DB689FA2FED1D4B587210
-3F2B7305713987C9FB5B6992F23646F5AA9DFC71C0B3B411CBF369315255C1DC
-BE9357E76156A356902148517DC6EEE64AABAFBF106ECF4E55485756C801AD0E
-81961033CFA0B2DE0B96B88B38DB562AC046F65F058682E139C0F882CD795096
-9557336AC81FB537E37CDBBEC64975FF3BFA899236778283770D540257D3524F
-8B5ABC38B9DD4A240502ED8AF2A7496295A793CA1D6CBA7C2C50E60880B73E96
-84E0E5C85B07EDA8DD48A8249D6EE25273D3510333287C71DD0ED8032EE04848
-0410C1E0785B071430F4053AEB3042D5B9C3E34E4B854D42EE5044DE5941DFE1
-AB6DE585C02B5FEC52F0C565E6A5635C377AA57607723A9D246639CF06A2F4EC
-90CEE93C2EA2C419F3AD9CAFEAA6B2ED3F2D4F9F6330FAC9972903786AC09B7B
-DD51932A1378BED9BD5434078442B9C13CF156FCB4060CF81F98D5EB8011DDBC
-049806FAEC29F3841CF0BAD050713FF0CA75F4058F86C388E179710300A21312
-72915D0C9DAE32B1D6C092A9E5990178E8A11C6A2B525E0D9E006C135D1BF185
-FC7A58576F23CDE582A0512E54798B634B2E5A06F4A107D2685EC1578583515D
-19230589279FB9BA66E6DFE827387C5FB1E491CE19739A4532C5CBE869174A29
-F1E27164210F9D924B835E9CFD9356643C3DFEFDD21D733DEAADE25DDF15EF88
-17A9360BB2281613734FF66126A90DB9AE008F6DAFAF9DCA23A882A38A0F478A
-E6465F8391002417637A87303A9168632C68A031EE4DEAB32D7E6FCA721FA484
-3D01D2877B2CE55A8F3665388FD2791200FE69D692EE6C266DCD65014A9BB1E9
-27C1F5E6857D5923F56D3AA916E50802FFBD561FB9894C1A75022818A6CD8EC7
-06DA976DD2609CF7023B0D2258311F321E064D956CB8D55C1A4CEE12254DD6EC
-68680A52FCD777EF99456BA60807741E0845C47E4F8A93E11F4CDBA611DC4B50
-3B5F83C5475663090CF0450893E076132C6D25147C260D4D731A03C715BB80DF
-727864AEA432A5C95E688313C1C62C95E154E00E5F00713D2B27E2F64F7200F2
-C52B3C95376242DB2233B50B988214FD47A88F3C4F15001EBBF541BE75CDC0E0
-D4087F5DCF70B0814207C43690D2D9A2AF382423515B7277E4D3A990D4CD0F25
-9BDBB2350A8ECDE52D641B901E94E524E9FE6612037EB6EAD9C3A887B45F3B02
-2F60C45F88E147512CD1D4A967AD6FFE126F3C4E92FE3117E38FB2A662D90B1E
-12C80B32C9C547C7EB719063E25157F726885481D0B2EC9472A0108693BE337C
-2D7EFFD1285B4F507316529357529D3245AE2D18A4DDAE37225D682D8D20574B
-0DAA73817D1B70CD37B2501CFD087C0DBD704C544DEDFE282788DE15703E9D81
-F5A1AE011E6DDAE53728D2FAF938EAB8ACAC0D07F32CE8E8C8E8C0262A76D9DE
-B533DA266E44B2A36DB0E19710EC9B9E99E9C1DB500D0D8A293EEC71628E9842
-A8CA8C99F9CC5B6B26E4C96F7D840C84D827299489D0F9C7E952A91F78EDFFDB
-83554679AD863C2C64DC49A33E74AA4F58DDEBC9807A92372E227EC0CACCA61C
-629C34C083A21F278CBD8747BBD7D00AFC2BB546FEE02DE9892EF88FAC0EADD0
-4EE10387D6386E77C462864180AC2F655ACA5903C751F060835DBC1F72AACF0B
-F4F48B83FC85E9A3EC662222907A796938C8CBB946801696FFD8630E897170A4
-759BC269834173D8EBDC70CB16EC918CC68DBC61D8A53EC5F6F63732FD4D7EC6
-234CFC1408CEE045CD2739C71BBD175368731CDF9CC19DB87B7B974FEE39BC9A
-80948277A9676968840537A4DAA22EA9D970FC096ADB6172577DC54FD7B57BA8
-7925FADBA77E5707C51B8EC45FE227B13966B45C39DCF0F315EB7A6149134803
-E18FB6CB61F252E09A7720804C6941615CD2B01FC5F8B8E12D3DD1D4984D0E16
-0E4E3342253C6CCF6EF407DF245C19FB550CAABF4A4F6B0E251D2EF04F18BFAB
-A10FFF86ED39BDDC366595AA6D4B1DABA39FBAD8620E7638FBF54E34A26487D6
-2EA281D9D2251055C510A401023A14F3B97193C2B038FFD1C728AD75A186721D
-23CE5865389B0E47DB6F3DCA265B878950B567895A10EDB5A6B3F3FCD30FAB63
-C6D09D90D2FB1C05D8839D0B4EC950006F996447840C8DC888EA71794A23C27D
-D77453DD43121B9B78FE67913896A0B65033060072CBE1992DCA145C1C88A88B
-B516B239797B9B709045266E742BF9907803FD36953C9299BF788D3BF01E9134
-9FEAE5F30EE1A8E7449093FDB9992D74493DAB0BA265D3974992F5D4ED79D6BF
-99EAAA95DFC89ECB4799BAEFC10012A5610194CA9DDDCDB009BD6436BF30B1B4
-401B2E4B6FC0EDF60FB188878A822073165F0E0399ACBC7E72770F960AC46061
-F89852A0205A8A7813450A60A16014AD433C45388A3166C15D900597B37DB638
-9DB6D76BFC3395CE83ABE084B5DF3E616D5E13CA29C7BC6C19737C4CFA04B514
-7727C2383D4DC36CFF04142A1425D1A420DAD27EC6A779FE4FA9E8E44B0A71AA
-2DB0DD4C5A4AD2EA39F0FCDBC0CFA81644CD6F86683FDB5D97E7FB3B4C5C9BF0
-C3F0E49BB2031EFCC6770FF520FC24631DF7DB8D2B5A7E672F6352ED95C3EF41
-80B53CB4780B779A2C870E935E1F774C2B83299A9FDD5447EE674A157B7B51A9
-DB721193CA4545B4EF0D312DF015F1491AAF251B16872B689C2938053BD3843C
-9E4B4DA7B1A9ED3DE85A2D848C5DD26F4B3D6CD96835915EE86169803C6ABA5D
-BC878F9502190EED465E574E5730EDCCA3B4D5FE7B1BFE3F5AF5FBB466475A0D
-E6D2724FB9C11AC63B3424F422DFFD3B72A168522CD943D7EF214A36B19F3C1F
-8FCD50591ACD2E4525078561EA379982D47A010D6B7C325E8566BB370E6188F9
-40F7934B2DCA11D58A5EA2A42FA79F8F5A69E4C8313E2ED201C6AA5E7FD5BA87
-3F819A807799AC8084E2FAE69516236284A571A5A3CEB8CD0A73AB1D67EDE888
-1A69184D68842D02BACC239C898DC171A8EA05B8D2811A865BFE2AFB428AB6FD
-012B295903DE73A0D3A393E0D9D766FF470401C335AD8623A5EDB7B0F35332AF
-CAD6E222B741973EB894361A862317BE692CD4B855E4042F7228A83C14CA28DB
-926EC8CC9BFFE3BF98AE8923E6B6BCB248663774FC2DA52C5FDD448A5B85BD76
-6493998AE13C84B4D8C1CA3FF66982244E7197928E8CB91C71D60CCF1F6BFF74
-1FBE8FC9E0285ED3AB5610393B7D11301D8945C71B3AD01F1E7F97E9BB9D8737
-C4D113FF9B84E8D84CF3D04C01AD7E9F586FCF5B20FC9662A5D6440478134FAC
-BC580FF2FDBCF7A494AD744A9289B8358D2A14F6DC4ADC0A343D857D2EDB65F3
-4D97B49CC92601B90D63C5650F895A2485A18617B7BC02EA2A9FF1E0D777F393
-D7A6DD6AE36E73BFCB74560E398583E0B716650B24FF5F54AA73346A01D76967
-97E8E1C8B6DB6B4BCB511EFF3237A40960F3EE230EA142EAED3F73CD0B13F23D
-A1D51F490DB90D37ECCEE52B9EC135E26F36E509535752FF6F9135A1DAC1AC81
-3701EE34956ED7BAD6C8CF1D70B9CAEE2644F94B10935F9DD1B03C5D356AC0AD
-0B6F327DA139D31FF65498675D193540EAEFC3FB8A119ADC74536C152DA82D2C
-0B523263DDC88E048ACC64DB32B259989488476CB0D351243A09A2BA6697D0B0
-6C8D52A51C0F631E9EEFEF3A2042A2EEBE5046FB670C75B4157F7B5AB507FD34
-6F52BCBA13FCDF4C923DDF9908ABBB26521FE2A7F9A0BAEB7EF7E82830E596BD
-6CB249A0F61C0FAAECEEBCF556846411E352F468F7F6B404B3BD3B92712D362C
-4A84545661FEE4B5FA52A7A7C461B9F7ACC3E8321B30068F609DA42857078152
-1A00EC0B51CDC27C8B505B00E49BD1439EF1C861173182EA5BC4CBEE7CF73255
-57E6AD9AEE58B43D54F6E22DB3B8F5F9D58EEB756B672547B521CB7D82E78B26
-32C27B3F93E5122482F87852C2F357E666AEEDDC369BB5DEA3E02EF8CC69DC4E
-31F677ADE63DE168D6A500055E06FF746F5FE59864319FB3E49DE62F5E2D7005
-596F22D88796164AD412D3B254E8D5F7E7CAE3EF1D35D67733BA291BADDE92CF
-70BADEBB6169228447DB4A99473D865A7E105DC43421491AB8563C62C215EBF1
-564E27BB8C008B2617DB934E0665D7208C441321AB5EFE9FF1743C357A9C2E5C
-4AF4039F16367C6B9837A08924300E6ABD2AB033C146DE6B2821DD9172E5D7F1
-53785578BB227092E8ED1BBB8E0CB70C2E23E640AF20828C09FDC2421ADA6DC8
-2D117F0E3DF208E70F00C9C410E8F77FB1221D1C07F6C25C1930D0F2DC601025
-EE0B877941CC9F82621D4712CB9DE0BAFFCCA38DB1CE1896D6A5FB876CE944CE
-97A297BF3468B264B32B7C8BDF5777F197F64EE9BD2C6676BA50752CFB9F5051
-3C14D6D0658F7D4841B9F3C47B9522E1696F32838ADB3E877FDF5339F6721A8C
-7F39D070D9912AAE0A69B6E1E27F4727513D78AD9F1128079E3100D0B559B179
-FBF88885A0681A7847F26D70D8F7A3286E4958DD615CED53147A5A50D06D55F6
-45808222273C6F6A972D49873290654057517F1E067197C5A863324BAE696A25
-F250DC419B5428EA0655E118F77B1545494C94EFA32D34434C0916BD6C62F9C1
-2506EC7CEE3456B012DEF7C87D19DCD3F197047F3C57B2391A238839884A3F19
-CC0B1814255F4DD8977E61513F7FADF4BB98315C72F84B4792243022B827DDA7
-FEF9E1434C631FBBD0CE34CCCF4CFC655D0F9BF1E22B91FA21D95C6AD6B0C098
-E987D92C862954B2CFD8E8CC0132432A40ADC155F8A0F97FC03B38B9738B4317
-CBDBB8E7B4BB929F6D39338AA69A5A11BE27316BE370800C82706772CE33E367
-29A80B24D41F520D993098C4B04F0F62F9C74679BC076706F0969545AD65D6B0
-44900379A36E940359B6BCDD0F3F5FB0A8F30BD5456EED4DF5CE72F7A7B93858
-14BE51729E4F8AA97DD6D134279E88C3EF28D61D7937837DF831BC8A314F2D3C
-1353E96806AE841A57EFAD644C8D884758880415F91E7683A88CA150493EC28D
-6C7272E3465DFC48645B2F722ABFC1943CEA4B5ABCF8D76C3D032F1B3264E7E5
-06690EFDEBE83EBF967085035A199297BBF94EB3D884AD4C0DFB476B85E6BFBF
-F69BCB9E57ED6753285C36AB62CB8C98E676D4D23C44416DFDA957CB93EF7E78
-8379C6328FD6711EB9B45D10681B56591EA22DB43DDEAFA65FFCFDA65075C6F1
-FF96A492130ECBCF265425FABDE849C62767F6B36895CCB19CF177B8BA4C7163
-D9DF847A42072F60B3911D8DA23A30D63C7FEE986F939CB35F7C47298D6596F8
-9BD7354FC35915C0CA8CF2A60F2DE21F355C74E605DBECE35A70FA12BDD3D915
-729B3D75FC8CEB2BF67DAC531BFD24A2E975375F85D7AC7CACCFBC62FE51F11F
-F877377CAA80F8FD8DEB1B1FA7C1ABC73B88D4ADEF4D045708657864418FB434
-7DAEE52F2E2AD61680B4E5E229C12EEAFCEF8184B3B03D16BCCFF6E0EACDE3D8
-CDC8D9185DC2672784EABC5E55C8F45AE77BD18C9FDC3189D24E3C93CA20A916
-1750AFEEB67F95016FCEE6BF60016FE2097AB01CA18B0EE0CEB254976858635D
-13D51A80F202A59A66B54E81972AB98BF9BC188EB653F43FD0EE5E7740487B5A
-6102C31D939943905FCCB91C95F54E69CEBB4F4A66027B2D03AE23F09D91B676
-4EAF654BBCB61F084EB153BFB0839D882ECDA35D1AC2C1863A3C5F0523FFB7A1
-A707C2D48E8B2F421A192E898960D888212D488816628740CD9F9FB6EE1DC21B
-82725168913244FE38347B234317F127026147CDB4BBF8BA9274C987193DBA07
-0DE6596DE26FAB1618D77E552AC34F71D0B77AD262314963C69EC171C1EA0706
-905BD2BAE70C9806CC263DC44FEFD2E7742538B2C62D782D6FE9AFB6464BD9F7
-7C537D1CB46E93F998D0AC153BFF65D71F72DD0FBC30E427C94BEA08A51FEDD0
-E9BC9C656715B761EED9E0DF6F1430BBC2F5FD6F2D5A31FEA89F7D3B8ACB3524
-56D36998729CB9EB6C464A709387869BB5D9062A5798B9C3F6906CA8E9C1A53C
-BAB4CFB6D6CBAFB766754CA2D15E927872427EDD9E73BD16C3BF4DCC479B7550
-1623FB8E04B11986EF4A3916248BA3328BBC2DF30E994B20ACD597FF14B91032
-274884EFFF7E94BDE8963D41E9CE9F192C84AA7B2FD2F6242B9828F54759ADBA
-352CECEE86152B06D785DF2781CB339BB1B1571FB31D18C3CC831B15736FB91B
-3C95834BF98DC3B42C9D32804F0E1B0418C30E944E103B1B381FA9B54CC41994
-78B4BFFE0445D1499C19B4577513B2324B7A3A752047C36449C2EAB3506DD87A
-A5A7FAE639C0A70E71A32DB71FF4D8C741A8FCA4A26C886DBB89AB5ED74F7B53
-025F00F3E5832CAD54696CEA99BF7D37950143F74A1A31B139374778438D0DCB
-75D125317E14B837147FAE2B7DC6BBDE62AEA6D74C7D8B2EACDEFFB5A61763E8
-5CD01EAB644B4FE0CE573B681C201BE621EF353ACB26BBC14DB249CFB079F488
-1ADF1C4E19CF04159792E40A5E63EB9DCFECFF901DE04D02604C195C315AC187
-34DB4F6C850E9BD424D3971CC3091A41D5B8F5020B3C79E72B99A1CAE66C959F
-55E4C6C1C1C34DCEB68E8806967C638D01E8103A6E886609E5276FC013ADB053
-AE2806AFD0E6CDAFF0D97E75AFF72A027F2817FEB32964ACD45FEA9534996A50
-53ABD80249F5890C69BA0D650BB7F0AEC076CC809EDA4BCD8265F334DB581361
-329C2530144ED7073D99EE1959AB477C6149B3A6547F024AF983BE69BDB9BF4D
-827728F2423F648185B1FC0AC9C7ACC727AD43FDB6B0D433C8172EB74B8B8AB1
-8C0C2C0357458E197A842358705883EC22E7162967172C0519820D5994DF9D7F
-D50B52AAE696F603985E3504742D31C0B69D77552E9396F18C71DEDA17BFFE67
-E1415DD4BD373819A33CBE990992973DA11CEFBE7B81DC910273B315B82B8861
-63B2E66BFC29A213D5526427B723B4856DFCF3559FD701F77857812B0C6C0FDC
-4AFFAC54B1CDF29E882BC2E2E9BA0319BB084DA04A82539AEABE7FB793B7AB28
-E755B8B1CB2F0EA0329B29816B127EEAB2E16B99B9FB1BCDC5ED2A5322F3A271
-99A1981B3212711FE1DCB32D0638EF932D00B3C04F896BF7DC7F67EF8F3DB82B
-0536D186F24BF7ED544AE148F24F6CD5D81059F55AB8E24128F755991F89CBFE
-75DB53CAD6129E392EDF60FAB2C90396568683A0C996C46358975676C6A8E3CE
-131C90FA98570DB4E576B4F669CDE352F19DF7652C97F2357C4C8F0716E5C290
-1354DBE5105A874C105F541DBFD7E6A63B1231BDB998EDC392678D1EF93183FB
-0815568798BDF68665F37205546A6528225B3B91B3A80C0F433C8888B45BFF9E
-A972D7C29B2647DF29806C4113613512C117061E7DE70F763D097A7CF236F371
-4BB3BFDE60B73EC884BDAD2E7864F24BED01210DA9F229F7A87D3CC0B3AEF75D
-D8B763EF2B7591B8D2CC201A635C82B771BFDB42FA533E321B587735AECDB3DB
-071FAEBC9ECB06F06A0EB364ED723D12EB6E7BB479AB013624ABD11060CFFFF3
-5FE5CC50E86F9224466913EC8167158FDFD81438BC1522685CDE8A038F0C8A35
-8AA1FA8E38ACEB99E18B55075D594DF39FF874DE7E7E6C95C677F35B2DF0F203
-B78369144DD99484A35F26414874463458FE0F6D2C63481260398F5FD319DED2
-19C9DE91CE63155DF12CE842E67B8DF8E61149FC4563C4ADC280E564505F0F80
-2B6CD6BCDEC7AC194C372BE1A4FBB457739A8AFC4A7727E37E2D3E5AA30E7461
-FD43AA99CF8EC08CF47CD67B820899D75935C6DFD775619CA2D52E4FE3A5B0E5
-3D1231BC641544611EB461A1991FC02E040C574272D428419F6D0AEF4285DD7E
-4731CBF498243B66ED76F66CE3F33DC996BD10334741D351DE2294D268EF045E
-CB360B89A5E9690FF21C91E396E686C67B5570A1FE2182A5E78DA735C70162F8
-E978C1E449853FA9B6494F2C38F5FF2A27F8E9DA96EFC069145C844402B0223C
-CAC1AAF9E74C8576E524A2E5F072DA0297AF5AE4F1B0F1E3BF24989DD836C057
-D18E755B8296E8402CEDD8F34A258ACC0D34D341ECA9889F4B2A06FB778D591B
-157DDC8D7F54A289F918E980C367E46575F05CB8C847000C6CFCC939867C78AF
-8A0980B0352250C063F3960D06E88A86694879A6DB159C2C5CF831ABD393A174
-C9BAB470B7EF87F10A5C3EBA5716279D525D51323BA98E262B1EAEC96A61163A
-44F84EEBD3CDE74822FC6ED53FA7C30A4167B1BF8BB9D3347665A33DCA967641
-E4739C8A7ADC90369E7C236D812BD03144A282176D5E906B55D1274AD6B5ED2D
-CBC01CAC7B92D8D919D25D80F0E0CD744B33F303C43E0D9F1F0E778056C43E1B
-5A300D823B0070C69DDC9CEF534DA19FFEA924A6D20D50D3CEAB46949288EA59
-8428450CE0960400BA1EF843C4D538C6A2087D3E1DB7AD847898602ED66F9366
-3F8E07233BE8331D36C159E8602B8193A5534030BEB136E24B24886D063694C6
-4A86C6F0B74CBAD19B83C2637AE35A07221F79860B87754A8042CB7489B0648F
-50BD0B93ABE34188C91AE0846406F063DE6FC2FF17D3E39B758A9182F258E2F2
-8FAD163152FFDBBC23B122523A2BC4421B025B0D8E876F80F12977AD02F2C393
-F8DBA9B7DE3D98B21C2FD1BFC42AFB3A6B0C303E94EDEE21B704737CA349ED48
-8332A075AB14489FBA412E4950BAC4F79BA0DC7EB6AFD1D43311E04F7047C851
-02612F1BDF9549A1C5A4E096C7946749A9E6FD356FAEEEE03C196042B6689913
-2912AF6EAE06BDA5E9F7A85CC503E22008CDFDB0F51DAB9C7821BDB79D1E7477
-16E244E95AAA34AD1B2084506F7C22CE2EC64C2EA5E2E2424E265173B01CAC83
-5A14B1FA3CA554535FB71CFD640E6F04917771589AFD81CDF19B80F2338A462C
-A7931133B7609357EBBCD05DC82B6909139C5D9ECC63511CC7FF28601260C7E9
-B3253E2B8655135DF5AC5EA5F037233C61495895D1499C5A00B13A90B8B3A886
-42F3F12F7A902F5520AE4F8E5AD9380EB5063BB93D98476969FA47F2BF6EB1A3
-94D15CB620277C1D586661CE897F3526DC5B52C447FAEB44FD3377DCD023293C
-CD7A75809CE202165BBDD0311E1E793B9E44C747FBCF9AB319C9F3BCA0F65881
-D85A2549005C27CD2A477C5DEBE1BCA541DFD153BD6357215CB195A53CB1AA0A
-636FA25E28420EDCB036BDC3AE3D522E912C00EA6061E8EFC7176DB1D106BCC9
-F7420AA98E67899D2AB3B63A14B966D06BB785067DE6EDFAEA7567367DF1B9AB
-24C2194360006894B979EC31B09E92440945036AFB89155DA483FD44C1F9515B
-4B576CD51A079C22C668B72EA35E21930B701E7AEC08100BFCE2891AEC0CAFD4
-A71401645287CE15CE5C4A94409B207D1A8B13DC9D1CE2CF6E09696E7793BC1D
-8766A4FEFD11FB4A3B13B32A5E994D010370A0890D85A500FAB60F60D8EC607D
-CD3B7657B32A4B99C89BCDB0162BDAEE9CCEF0B52C54C8EB5CF320DCD9803405
-10B060667538413E9BB43F15C72510A68AB688C9512FE05E87AF5CD4C2717FBF
-F0B5E605CE4360D89C7BA422C2A867710CF0668BB684E83FCD47888C92216068
-B03655C718AB989492A6D432275B1F64005849A85ED0D167C121134A59996BB3
-8029B44938C401192B96DFECFC6C7EA90EEC009AE79F2D94926581B2073B81F1
-E995224D452AA32115134F7C8B0AFCBAFAD316F2DED91212E5E2715A9A0F59BA
-787C811A7CE37859B9BFD4B6648010C449AB624401ABBAD5D22623A05B127FD5
-F6C3FDE7966A3AFEB0BB98B38E8DAA05643EF7A9242F48837F2552AA6E449594
-9BE7E93EAA719FEB29077A5B86C14B5F47B1B86D9F1EE50A9BEF6F6FB2DCC4C7
-D3EDA4FA1744310A2C5BD39E8EFF9831D2E91698BCE0D2E9769525F934D7F08A
-FB4DF1732A46D4CD48BF73322E25BDDA632CBCD9F0571779CA52A60775ECAAF0
-04A6ED054E9527CC85F67D2C480D6BA074A3D73D5386C7D3B06AFA386C931512
-AA015585BFE18F6B5B79140570B655295A0C56F6D3FFB790185D4F1A10F0AD18
-C143DE30A7FAAF80239CAFA2DF1CEB743341B05E8FE1D90FE3C0F75398B6FB76
-28FDF55AF051AAD341AF59A6FDAE8B1BC878A52E5FC2B504D4C113979D7E7524
-F44C86A5C12F5546024D792A0E4FF98AC19EC3850D88DBE34B4C2BBBBDD77E62
-67219B59243B4DDDBB88AB7AFEEE234F08DCA63F51508BEB43BDC3B00A3A6F9A
-B4EB5EBB12D928D2E1901A0D9799F82676F6E158A6E521D11EADC606176809CB
-82687208E6F491C6B92901015A67A67508A68FD8F910A41FCE333AC61A17F772
-13FBB7DDCA5C17263946D38738E019B016BBC294F89083A2E8AA6A9433272CEA
-42C8A243DF05FE3AB837F0793AE36FB9B1378B7DF1D50CB48DAE3F9CECEFEE6B
-7E372802B2A19C7C1BBB14D3B061C5DC6FB29EAAC558386C58D87E1CBBA07AE8
-B66DE0AC1AAD4D714C00B528E0A10D54AD7D99A3F5459BCBD196C0A86DA69508
-C4C780D2000407BCF22ECA07C1FA37DA0E05CD0D1A78AA64AA9F4682F2F2F05F
-0D219E2D4A1B55D836B36397586C46E54F7E7B56B969EEF401B7BA9AB3B71491
-0B33E2694C3B10AE3702DFA3EBA9A42888E2FA495B521FB5B860EBECD878EE73
-720ACF8DB674DB5C4A3418E5C4B1B93E8BD5FD6FCB334BF3C93D6825201A02F8
-A8BD1F64CEF4D6E8BC96948226D8E0C34A7C65978BC66563B39BB41098EA4DBD
-DA6D7CB34A411B9A789775C2559A9F90B7F643551156FDA8B8C3B368E666A546
-0D9458F1BF0649BBAFCB8A2B0B35633A873D5F9B0E55A1A1EBA070DB4636B725
-BAD1250138E0A08B59DDC3BAC64DBA14313B8937275F8E8A506F6D6EA691FA5A
-D37453B2619C027CC5E6DEDF6C6EB248F182A7349A21CE744152BED4F91508AF
-AEC8563F1894734EC9BEEE05A1CA429BA1A134CFB7D7D533595CEBEA887EFE8E
-8D41BB1711FD033A6D6707CDCD2F1F3D02DDAAB98311AD5BA5DA9EDF971FBDD4
-BB4EF7EB3641CDEF6CC694948ADB8D94D39106C7D4E8E788627991A6AE33D7DA
-81FF3259C745D3C3F53FF8CC0FDE715D61801FE115F534FF3FB04CF5324979D7
-2AE393F01B9B84992F16390825059AE1560CA637AE72CA56D3CA686CE9514E1F
-CE1859CFCEABB3DF9FBD8F0E3A1E8B1ECF291081A63A86128BDF2DB251287810
-DEE008FD4F5ED49D0BAB3E7638B975CF6C8528B9B8BBF490F9632F83A060AF42
-1469997731E304C44B80503B391B9632C15D209556CD5FB94EC7CF4C98B51C7F
-284ABF771FB70ED5F1CCBF4AA789AA9CF8C9EAF42F9C9725D87820C10282679C
-DA104A08E1AE5F01DD4399211C62C5F3370C9D159923447D15C2056A0F840203
-62903BE8B5B1994C9D7C6052077E5446D54444628AE19229209F815677ECC5D6
-45E6E1CDC2FF1AC81EFB1D73ABAEEFE54E185E3A817C0506CD754393CAA3D30A
-B2F401490D83B72BD07B4BF1D1ACE8AE0AF145A3CEA0E05439EA8EDE1C4597AE
-B5E866BFC94E30C9E8D8884DC900862E23767B9F8781F5623B4F5F74592F11E2
-DD253253D176019798665BE833997D2ED432380DDB144EAB37C7756C6F729B0B
-D13D8D02951BF2C016DA02873E4B589EDA8021397BDE47000E0BBDD2AD8D5160
-C7E9F69831FAEF84C27C7342C8CE4092278F767ABD3C7220870D40EF9AC505AC
-FB5F3E1BD3F0905F71AE8751C4E6BE02B392874356C7F25B37B16D7E8848A9C5
-08FDC51948C71D3031BA695B44891D7C56F5A06113C1DF9E7A5B2306053AB76C
-18B3BFED61C8E196494FCB0408DCA9389D6DE9611CB19B793D286011E9AD6E78
-CFD74396029C4ABF7075143A71D14EF93B2053A0E8C8789E176D500DA7945DD4
-B7F805169681F4033DA8A2941F8BAB7E4A1A0971E017FECCD8738DA3186B0DB8
-8C63476272C63364DF6C3CA5D9847A6D81736F0BE388AF95A7F9B5663F55E3DF
-1C740E4358B349DE17A63CA2282B03065A66D9FE3D6BDCEF932193E5F2E2D150
-47984A57B31A7AEB54A101DF328A74040317529842B4A5A20E3448077C331626
-9A5EA78E5EBFB81778BD4C9B392186E3C811EE82CFDD6A57E050DA15478791A9
-65CAAEE28B55362594BB58EDC4D01FD54CA7EC5C4D2A3FBC6F399D5F35EC2256
-EA0B1472A99F3349DD62F3931F193C322608E6452472E00EC22BC13E2E17949F
-9F00E979D5D5E38CE6C6EB9CFD7B05E724CB49EFCBB211953A36EBB3A3E18498
-8CC2B96F8FDE18C678282C0A707ACF03CC41F735E5A4173B45A9312944D69B2D
-4D448C4914D987DE531C6D3EADE9C94F9E6F978AF50F6C25CF8586185FB7CAA8
-5C428C606709C5FA5ED63CE6C0456664A552BD6B6AC8A321A97807279CCDD27A
-EA484CFEAE6FC10413A373A9E041D3CC05B48BDDE5DC89F1B9D140F95C9370F7
-1126CAF6256DDC8081BB304F294398A5B5994800684B097444BB35D4D293E782
-F61C8EA1AB2886CB6911B260127D8A2D116C3AB62F07920E37E0405F516F47D4
-C4E865E9606301B86A9013E5244E1C145D515251089F62C780C17B1C2A605DA6
-4E8F113081631041C38512469AAFFBA750A16A4921C2B809CAFD80F17DEE5BBC
-6A00C67E59A4C3B1C34DA41EF7D4CC836CBA67ACD86822FBCD160ADC54D10A5C
-CD5A1C1D01AABBB900776AFF0BE76CCC484037C34D348A7BE0B15109BB114DD6
-F0EACCA18800AEA8692D875F761C574B90F586ECB60183D3DD81C3B1C0EF1822
-3FA0688E244FAD05F5AA4490DC6E0F515E174DFC2F26821E9C4B189830EE8D14
-56BD9EE6BE690E62E2688D180B231704148F643873BAEF2466099D01E98D0A22
-8CAD70DF0140C21585651CF257F62248FE2418DE3087907355F88886BE1DAD3F
-043C30DF1CAA28F327A71B8EDFB5470F64298B899596DD2236B23058E3339E8B
-82A8B27BD3ED46D1B5F2CBC333B4AB6C8314B26320134D8B8479F2824DD9AF44
-D5F10F431F64B832D1881F59E8832C8935765E9C1ED9768EB864E3847F4F4928
-71D2CBB138BCA7085D5E619C17BD6513F53293A9F419A74077EE0F97BDFFE479
-CD960D5603C2CF26A3B4B3A6372F954041FEB600A528FEC76BF86420CB8FE902
-C978E8D7A3D317683FAA98F299611F900FC0C38E267B9D2295AB317A0C65CDEE
-214DE4298121B7385D9AC35D23ED48BC980D8BDF0ED1B3DF469E74B2FEB07B5C
-F26F8C6A61D4B1EF1F95EC93F618CACF0674C625BD9E960299A92E12BA082080
-7DDB8D06817185AE7FB28174B530DD2EE84660606AABF27A171C33BD15173A09
-69DDAAAE380C89FBB4FDDF271D3FB5CD0A2D62A1F1BF8EEF00A9FE22FDEA08B5
-32E6995008D17A9B885BFCBB80E9AE1E3A4E75A8820AE2A7845D366F29CAE72A
-9D41A40B32DB7F477E218C646A28FFDA6E58EA290AF7E19DCB764FFFFF8248E5
-179AED3D8F1B91480B3729C79B3C96B3AEF105E11E370AC65F47F58917FC5EEF
-68C5F518D1079ED2182CA6B149F76312133A4BAABC1E1862CBAE7AF59AADF2C8
-FE748103948695737AD7BEBC52DF8C4BEE11C346D0E9B07338A1E82B86B8AF42
-88A49CA23BA88579F911319AA8B7DEA4CCA6387BA33B217D02D121FD38FBD51B
-C100B95B21D41606B40B9A11CC731F10A8F4B86C572FD9AADCAB4CAF8F27353A
-C05EE5A9F372B1FD74B71522A6F9248F838630A8DE2429CFC5B34161E83B0B38
-9713AFB911C246E5ECC6AB86CFC463B46D0358841EC85787E055ED7C5513B0E7
-960D05F0BDCD5DEF56CDB808B755396E2F16F43B6D58BD13DB0A6B9FCA646521
-5B114C3DE7253500A6D89A0DAC7F9EBD1E14D7EEBF8EAC1ADC5EA574781EC870
-7C820F1ACBA1986CC55F78DB10F9F76E9392FC9265F3B370988CC56BAA379B46
-E5DBF4FC5C1A5EBFC1DEE04AD79977B8B9213DB98649B6F9AC0F99F53A449CA9
-FA33BED4F5EDE8D1B53EEDCACB0A883976C98DD719BE5C2A0A948535BE0B324D
-4CD123FD9E346FB8E5C5AB593049CD5330D34DEB46C4AD0D21BF6E5D715B8A62
-40E0BDA591D2727E4245B29089FCE0A2238B7AB0798FED91B6F8CDD6C2FCA085
-3993743912D66BC8049C30643F9362D510575CE4926D53858A1BD2B8309CA46F
-F93B3941D0822B182AE4DCDAAEF090AB4DCDBF403E4BED69B62ED62530AC3A6C
-EDCCE216FFD057C8A388145720BED9D31A89D149E9A26AA4DDFE8EE93924FEB7
-97A0DCDEFC84F9266A86D2B88495F4A9B1D33248BB0861BC4D38825D1EE3C930
-11077737AC6E307B12ECEE27F82B554F40053CA24D2520DDAC7F547407A77196
-41E85341D1D1C10411003E66708BC4FF4F31AF6E689321788C59D63DF263FE23
-71FF6C27BA99A5D9C16E08CECE622CDB8517D14644BD03A5E7DFA8DF8AED725B
-F6AB8971EC1AD359AA0290B31A2DC818DD2BF80EDB07EB81F7787965ACBDEEFC
-05337DFFABD0786D1C71B192B04618A00E90E0BB3BB704D1AA86E1FE5AE09B9B
-256B82ABFCE181CC45745A0B2E51B1B780A91FB2387EFF75ACDAA8AC13B1F44B
-81AB96DF1D9CF587DC8B9F926D02F81C8BABA56DFC79E25883453E84E22CADAA
-ADB64593275CCFFF770B53ED4F4F1B0A76DF0D5AD96FEA25AC42B8C350061A2D
-1C97513C9F7F921ED913F321CFF95EF57FA1E19A9D3F3C927568888E1E7DFAA2
-D12525815F2C65B72737B4AD9BD64F922526C3527693B552ADFA10C281F99A79
-26513709301215BEEA51BAB631ADD6DB698BD96006913FBE8AAF394A051ABA45
-D4C7F093DAC9707CF64509D64A39EFA0207910A575932F928CE105E6A2745088
-4D23F6EBEBDD583037106433728693D9D24462F3E75DAB68059ABCB05B2B5633
-D46ECEB9E1A9CD67317F5D1197DED31050A102F739792CE307D6928681542F39
-954589A5187E9FF713B1D0A3E5515C5C0F935B7921E4B37E12F0638352EA1447
-7C5BB21D4CB3181B1C056A3B4D98396DF351BA384FF61A170C1FABB51B025E1A
-206FB57FCA26D929BB232A9CC3249C1A0400FC039D3EBB543812C5918D6219D0
-882DD96CFA770A03BE1D0494C090D5F5EECEB305435FFD740824EB85E59CCCB4
-AA411710DC67EA2489430D8C08423F00C499323ED1BAA4EB1B5089424F898D86
-BDF5CE56C028B107B8972433EDA77EE397A193B1793BE61F8DCC0273A0FCED9F
-8A98FE8D1A49469C3A4ADEF38888A1199DBAB63DE30E56B82E55C6B31D70FB4C
-5F9514DF02B648CD3FD6860E426DB1D853910F1F96EA328759229347ABF6C503
-A7B6A63D729001711890C1AC5997F2F352F3130C760F49D0510DEC22B51A7FB9
-F2A7EC4939171B82F24440AA058C5522681A0A97BDE06B15B88DB1F1246A095A
-E89230E74BB7B404806FD2FE9F698C167954184129B40CFCD711D69D7C1B4F8A
-7D2A8D496A7EA0FDA901AD9D79D067614D868290F804649280671903D1085A1C
-E2E3C0ECEC635D975D66CDC5312568AC5C85F87804BE7E60EF787F5B97DB71C9
-4DB5F1AB7069B1B411319D3D70E1554D56120E2E5C9D474DAA7C93D5371A9DF6
-10A823F3105FF629CB8A2D564545638B9203283F6D70E4CD
+C63B5B76ADB05D44BD5BC0BB3EBCE2E74E1AE5F7DE07A59D90C932DAA2553505
+27F2AFC05F7CEB39E1C7E54F69FB0BBB069959F2FBD11709F8E81F6E7CA06DBA
+1CBDD8E7A78487462596DA288B50B295E46F4C3D9BA862688C68859734B232A7
+4B371D2BD786924F186524765E789EEAA30B20C069322D42C893A30BF1BD2C46
+F8F3732DDFE80B8FC1789239345944D8B457824FD80D11184E73FBA30EB80A9F
+2FD466826D4E6175E9B3AF676603DD8C5F5B037022B38CB7DEA203B11D993027
+884012CDC35C4B36242F8D77D188AFE30F09D5D4B9E13A466FB208B9C3B3D269
+A12EBE66EF7F6ABFBFC024B72BC06828FA7AEF04633B1A7C93B778D17B0AA1C6
+721295869CDDB94DE898C26F40B1E3E93B68B06A63719C44432BDB45C3FDE04E
+7EE718BABB4A57C7709D3C41E6A3C997C0E7BFD60854EB52A73DAD8E02F6E43C
+4EC19A0D6311293BB240782BA1DBDDC0F65287E6061FD3333718D7CFCDAC4715
+589A5ECAD2762C643C0A7B2750C7038F6B8F275D9423DBE3F3A442F625747D58
+A26B03775F1EDB35BFAD9ED9C2C341F89804D41A9445EB2BDAFB2043F674EA73
+4962020D8641448B253F4C108BB1244279064765CA38869A7EB73377A168E596
+1B1E7F573D8C09649963F67CB13DA10D55938E6321008B54FAEEE7AF48EF153B
+520A8E750230D50631819EEECB35B69369C888AAB9103BF3A60A7CF6F357E20D
+EED0F3DD636D920AB08797A37577156E3C56B37604C8DB2744DBE77CCFFF9E9C
+150CB37173CC122C366366EDB5847053A74ACDE3AC86A253EF7BF3B90C59647C
+A265D5F3F9D60352A41DBE682C3091F64C3298369C71197245000C81B17A69BE
+E8F7AF9BEE7AD5DD407E9C262D52603B16C5B0A87BC7ED85E10FA988DB688A92
+470100856BE028C6A8ED4630A58A2C716E79E4AA1C59E99D1B38E65AA30B7BC3
+B4FC020B003DBCF97082521BCDDC572969864809C35F0C817B839CC44AADE6DF
+32EAF154D732FCE1D3397A6F40B0784CA30EDBA4FFC52AB385EA99E84060EE8A
+E94D43BF6CE43C9140AADF1DB4335DC5815F18DFE8D74D266F1D31A99865B233
+EB79DC69A1F60946E67300238B4EDC669BE369A26C4B1969EBEA2ED487D9A864
+972043DFB6E2D9C8C41FCF68538918E653351C87CB83A65571ABC8D40D5F4E3D
+52D09ADBDFA6391FC647A934784EEA0C4887D955B77BA4B0F2F6FF97B83343A8
+92266A5729F08C8BADDD647CB38A246330B44C809D263EDD2A7CC63B5B70F520
+61DD6BBF5B9EB427971B6DC92242018AC546542E49F3088E2E41AB81B2FF479F
+B4FDFFC81473C35CAAA5DA82088F2191103A5AD900E932945BBD14D2F2F5527F
+9418200879449AA859A9754CAD9EDF87DB3B3CC28EE10BE6610B78834D29628E
+0E8AB01AA7734FC22AB16365AB21D487412AF60E0C54B18B7D052CCE37667D0B
+D6C070914CF1D522123E9288D4ACB89ACE8CA541A4439278653B0DA04B2DB9CD
+59E964BEAAE74109B47B0F8F4DF4798125270FC1CEA674D566373409CB16766E
+CE23E1DD4D132CAEB590DE89001BB2008E75C2E7FC4D80566D9C912ACDB47A6C
+758AA0E2381823460A6B60AB67F4C9ADD38034D8F34EBA9F6CFC3781169F7301
+CF3C4BBF00AC325352490DA5E9EDA067E5CC402595E708DF189CCAC92D86370D
+5B58F2337CB6C552479B1E51C7BFF336C4DCCCABBC62C7D13B1E4E9719720302
+010956C520A7F73D4C3428AA078DC8AAB00146D59C041A70AB494452E69BCE93
+4FC0E5EE45B8586CB87E1F0CB447DD3A66792ADA50A6FA842125B699288E02F8
+8C4A7DE5762C0AF7F2A3781F73EF785037A4B6194FC7FA3371C8C6325F046069
+0B66D8BDE4516EF67E493A136F0E3964E4CC144B9C069FBDB4D26AE552A03F14
+9D89BE9574F5A7301DE22A0A6F24E231C57B9503A7BBF67DFB9B5AFA38B0132B
+3A32C7B1D38819E09EAC434EBC3CA1DDE3A41F0A8C788F0D1E3572D8E5C6D966
+478C522E18EBD2F0021AE13DDC40D378D9CBD0ED6BA7E7759B6C73AE59BFFED3
+0016CD48D74F17037CDFA5ADBD41A10AC97D20283B863A6EB616BCF796912E8F
+822040DEAF6F8195DE058F3FAE9DDA4237F99F750210DC8998AC0E556F165BE6
+1DC471610E9C75B41479B58011E7FFA927B9976CC897417FC260F4E87542DA5F
+9F33C126ACE7E1CDFE3FA21432A7D0BCF7BD5441C434296DDEF61EBCBBEF17DB
+9CED994238C395BF3528E6437C4E217B4BAC049BC3C7AB1ED5F8C72AD8DED033
+55D9659D16DFE9901520D00949545B444D8AA54B1800266A44AF137AE01EFD74
+8994A653E8668043F8279A423942A5F738827FB67665E694557012A7C545348F
+325F3E455317804F110BA28026D15411CD48CC9FED0E1D6D453CEF144563317D
+96FE06BC63C0F4441BFAC2160444078C9A2ED39DF9D177EFD9DAF9E5C1F42C81
+156A6FF8404CCB64CA6120644628C2EE7CF44332196AED0DDFA568EAF23D16A4
+8B5E335A3E0F3980CE8CADDADE7281B2A1C11117895A399D3BBE29036F1F76CD
+440B4CFBAB7901FA7027BFD2D7A74045EA1843CF6255346E60B6DEF6EAA5C228
+7BC0EC2EEFEA168EDA969C2F7DE8AC84DC85038CF61296E4C1EAF96CECB8F445
+8EFEE32F8812DE84389A164CB4DC953DEFC2204AA0F0E10432CB09DCCF5C28CC
+0857961882146706942098ED1EE76430FEDC26640DDCB96107925C40BA4E5524
+7E32E5CCC57383EDD9B991C64FED77D42AFB898CCF051B7100BC2D940F4171D9
+767ADECB58F81873EB98F3EA3C9D5D4269E2126A1EFFD05F020BF0C27F175DE9
+2A8AF0DFABC8C2F5F43DC2EEF39E793998D08445C044FABF7AFE1AB07CD7EDAA
+60D02C8E1C2DAB56438F1E8C3AC1F13C85932525DED921CA60F3DCF528A0CBDE
+C098F98D96ACC29A5BCFC99040F73253F7B4C8E511C95D4B67981C21BF687F1E
+923F97ECDCD654AA8C6B46A98B1E1AE51578D625BD1352D892C739E34E391414
+012C3693BA2F82BC2F99F6F88E057F03E35E511B81BE4EF4B3C04D01A3DAFAF2
+09FAD88CE2814E253058D22E418FE226133EAFB343C618E5D0602106237A9F56
+4A80D075F8D601F8DF2AABA5801E3FC87971E62DE87D28BA1144E5682C563872
+7628D27CAC66BD105E8446D22EE6F24CF031398E268CEAFCEEB17A4640836E53
+A028D5F2A1AD6307505E063790EDD07E0DE9A056ED5177A25EDD681CCDEFB3E4
+C0DF2C720390A047A95CE8F23BA97F2756443746B4008D8513595B5A7BFE2B47
+1E587BFFAD1D2EF282B44A0146A6896AFB7E512BEC548D612B6070CEEE95CDA7
+779C7A788F929AC1A8CF4B17B8D625A8F7F182A11C3D8FFD8C658CC538512856
+F322ADA05825004A3BA48208CE74E7F5513B3F0CFD191F759906A3619176E0C1
+B529B541CD162BAF117512827D74300A3C0714F650D4D05475B87CA30C20B4AA
+0E6383F1E474D53B8976953FB03F547EC6E2333E19E921A09FF157BB924B1701
+DDDD24C6141B4FDD565CB1DC59FB9EB89E06AE69B76740468CCD14527FA39712
+618892D891317E993DF0C43DABAEAFB9C4B524B778A799058D043D46F81B7616
+2C34F6C76216DBD451DE00C13FECCABCBBB78FE0054B8506AA3B21F54A4D733F
+2799D2032389B89CCBC591DCCF9C1E974C3C18274025D984E00852D3CB124E63
+186E4E2F93B117C44A819B44EB1A40FB3DEF219FADA70FC900CF6A3027DB9015
+E178E2EA706CF0E6278786D4DA944B3D039DA4AF931C32DD57B970CCCF655476
+4E8C3A5A947076BBEA7F199D5859C29ECE61392066252DF5FBA94C75395BD7E6
+871DF357AD403A2791A517B26B88D8E522E7A934C5E61A1C5B38CA5E920AC57E
+857C13D6498ACBCEB5FD77C6F6512D208B2193E0E5BD184C8B5F51D7F7BFBD6D
+FEF302A13225750D433A86210F4EC4DD258308AD645719C3CC8DDB140F8C1393
+C66B8774B8936CB09AAEC856DBD865033816D6BB0CB3B1104F6127DB2869517E
+7EB71F5918EA7270A2D037EAE4FC1D5A91FED030EDD6E42A335066806BFE6CCB
+370EDC372F8E488826E42C1370D4412173B32E0508B209D68817F50C0FAE098C
+52934DE551A32221EBD40CDB3A9F307B0EC48145CBF3B44BA9FDDD8C71A61045
+5CE53B6167F4C6774EE535FB4AEE3768FD096573108B748821DA236353A85B5E
+1BB86CD61CE50C7FFB6A5FB432CD25E45A75BA7115A80AA5463AFD450361CE22
+4A36305B867202E0C5AEC63DF8A3EDC5147FBEC15C6888C4F290153AFEB9CE94
+A93ED08BCD3BCAAD9980D7F16B757DE78ACDB28ACE64AC1959F0BCF4A5D254DE
+CFC1AE691FAF5516D1B52DC3A4A766D201F40C324CFFB95F1CC59F48D8A5A33E
+B6EB1A1FF7C1B4626919484D7803FFC09257E5BDBE89F2592D9A04B8894C008F
+E6A448A99D5F71949B4AFCD83F9949F1674E9069D28A1709C589E6C3C12DE33B
+EEA32E202B8DF4320B3D7DA16FE101224CA5D40020DF712E3A1DD8C7EF5D222A
+CFD1D9B8F9F35EF7E27BC81F5C5575D5D7BF3BC92EA36AC06BE8CC1F41ECED46
+F0D41FEB81158EDA8464D3950ADF9D3C7D9F6E6C0B56B0D3FE9DBCA67ECC3DEE
+A93649E6ACCF9169788427DCE8EC72EFC931B66B4B110900010673CD6F8A8AD6
+E22B4F2A1D859FF2B55B2E2E727AB10AF9CA3FADD60B6613B413CE5DC3811671
+E363DFE0B799D28EE23102465C508BBED55441D33262CCBF52B47181B6760558
+439BC87284B079D08C5C1703900C5F80CB4B767660B60014535B90F8145F7405
+23AC8CBABF042A6A150CF41BFFE5ECB0441F944737E25D68635134DF10E0C6D5
+CD215228388703BF1B1992DF5F2EABC775E40AA07B780E798EF412A965B821E8
+DC9471E8479D9A9D9AB02343209A70E969028E74E4E737CEDA8F07417660191D
+26EF1B9B3F8C9FE39E62BD85839380D43BF18939B28C0A8D519A7CFC7B15545B
+750B21774B1F0505F2492A8B1278C45C3CDA34D43010D36C90E45CF8E21848C2
+36AA3C655CF4F7D7166B262B091D0B6B84E3858E36D0D8F3C8D2C557AB55D04F
+7C9E34819284AC9D8CFF9874389400D8413F0F5E9EDD4E3818E6E7DED76DFED9
+84C038FD0868FBCAFC4DE9C341A96A783C1BDF9C3F57482BE93488717BD97A18
+0921B771F9F2A869666C69EE16F072E646C6A3D4CD7580DFA30176F5338E4127
+54E38969879ABFCEB5383B16A5DCE8691A73BE8C63D238BCEF334EA225B26FF1
+BE890EEDDC90D9CEFB20601D0DFE8222EA611F5D3E72A357154CA0DA2091C72D
+D0A73B120C84E9C11F9FCB6C8C97900330877D3F80D103F1F37FAFDBEFE8CDB9
+80235226C46F8E973AC7867284892BCBD22BCDEF6ECDFAC857511D26FE98C66E
+177E17C104A07760EF54ECE619B73AA5421089D26780B78AD3654742EC3FEA86
+D310C5ADAF4D7A5E1022245D9390E913179D2EC9D0D62565364C87572E48FDBC
+73930A3BA1A7806B7870F317B78BF67555F36F8636D654678A05006BF91FDBC5
+4E3A14E3252A980DF37882B2B50265827F1FF783C43762B34E788650860EB628
+5C1A836835262FAC702B736467EA82A378D8E463C3DA2E67BDFAFDEEDB18E820
+991E3E8D8D891F6ED057CA6F4DD881A35D4ACE747F9E8F07A4B3B963C3E0FBE9
+4B1C4A778B7DA050FE8513E568F06B2D42D0B3B4C63CC15D18D7099FDA35E0E6
+8734070BF82CE461093F59F08D172DE59EE4448071CC92AC45A17E2039D49C6B
+ACA5A3065BA970BDAEBFC938D07FC7C596425E04FE5784A41BF5A90B600AB689
+1A039C5FDDFF50B531E98E1832BB015118F4C9D0A93F32A83F5A248B16F3D553
+396222F5013820917AB79A91CC00878516EB1E80CBEEB1BC7FCF901E782D0F96
+60B2CDB57999721D60BB4216B1483BF8657FD7290F6931B38D9F72F0FDFEA1A2
+B834828740C278548DE4390EAA8A18FC2A73AB5C4C35848CA2424761C7D123CF
+9283C5F7F483204E2F54252943E538C59A496F56E2C4D158921A614B03132744
+EF1CA8FF611C4ACBC24A559139B40C9E3BD4B9E2A21A898FECC3DEDEB39A1AA6
+5636771D46B6A0AA66D132B480C407A7E735B651A1C66E9542064735D94F70E0
+E1E7C2373177B043E88715DB231ECEAADEE1828A2B4A106A05DA9B01D1ADEFB4
+7FA4BAA22728B86306284569465BF9432344C7C6BA17F2916232A07FB67AF788
+FDFF37ACDE12B7C5D7B6BCA11F964D42D7E31D26DEBED0278182CAAD15BAACFC
+FBC49B58B9ED365ADD30912E418057CE0A2799D2A0EDC9E080781E03E9FC7354
+BF6E99F98C49737B6D5F75996D964C8AAC3F1D1551DD70E1651A1DFD02C13F2E
+17CC19EDA2D46B085229B8DFD35EA2C8DEC555208E81F0A168834E61773E475E
+A36E2B36827C626871D48CA053B47F78162F06BEC6A0D728C8EEB75353C36CFE
+FECCF73761254F95B5C9CAF9D51C6F4BD80FB15459D15096C0BEF8DF178411A6
+EF194293D32117C41E8BA833ADB5419B955C47136367B8C7DDFB8968542003F3
+AF1185387916CD6444F5CDA08962112295815FE0970EA5958FB5E472FB2222EA
+1585375D76E4549E8D3EE110619E4198ED7FF4A7842D8B183670371FB333C97C
+397C06C20AE16D7C7ECBBF75028A089875EC2F43EE20C44470BA5BFECD08513F
+AFD05CAFD6A85A31F2A6071FC1BA10F75AB8B4C135525D2F7925C0FF34D42DD2
+60283163607CB57DDD32BE430440373DF180A3F94FC54DDC6FC459676B09F807
+6113E00272BC57B96B5B149C9496EF296CDF5159A3BEB492AA1965F583AE7EA8
+1FB3C63176522AE53D5D334E85EAE17A60A7792281157BE60C14510FE984DF43
+913282B40BF7FE4019611CC6C6580BAB49698FBBDCFE66AFC692C698EDED3D79
+E70AC5091B099405D0A0669BC368AF4C96E32DFAE1DB7F5369E3CE38CBFB5B86
+9DB92A490528E9EF1B187353BBF1E88B1BA6FAA9DBA84DEB266BE572F60A9754
+9897B4A01B908F13E1BC59374150A8D60B1E3EF2CCA84E01266BF1B7C392A626
+D841C8599269DF5D454F7BD0AB5543FBEDC6251C23B2567F289298A69F793D83
+721A30B78D5EB0551E5FEB9DFFFF0429390FB884D5599D8255A8294BCB09DC86
+BCA27F2DEA9CA58DDE1283525B8F29FCAA3950F8D5F998693FA3805C49DDF464
+7817F2F0F37064B88726250789B363AAB0CE53B32EFCF0F15AADD84C26127D3D
+B2307CE658DD4884C5B57721EAC0A0DCE270644A36A2E61C36A304C3855A7A4B
+7B5C938568A36C7170D7E566363F4C60EB7BBB1B867B7B8E0381AA46687B45F3
+3E8987686BFF9E5C691CC518281D1B2620EEFD7A7FAB092CC880A57EF1D31369
+F6396A0D9703FBDDA8E60C250095E5B7ECACC1CE20D50DA7F5A05F262E48E11B
+8977B40D3EB03050C5B0D47D2073FD2370A3E59B5D5BC0983B603F89533C7F1C
+F1A2DC75E140D449C63C28D42E1AC9F904538CCCD7FA92FBD6AD623B413D3D86
+E05CAD9BDD3DFC7CFC68C8B775EE8D312C96EBA4A7C3C21E322AE67E7B078DEF
+3592DEA9A4579E72D078265EFF81E0AFCECF28578C60C64A125EB4E6F546E1BF
+C0EBF94E2326B7B44391FBD477963BD43EB1537F3E0B6DEA6349D906731E93F6
+FBAF9B7628B14688AC8134274857EEE8F778FE54F21514413BD027E4516307D8
+2E0533280B68D96928D6E5BFECF2E6103B28F19299A91F83ED9865D15869EEB8
+584D6AC888FD02308B923A01C1325E0623465A92780015BD77EDFB96FCBEE527
+E93DE3131CFB94FCE07B5B843F16B24A73B71DE5564A687682311E1F884EACF4
+EBC38876695DC91E8F8C564C91D01FEAB15CC70C5EA2D7F89860068E8B180E13
+3092A8EF79050934F3828D10A28ACF3246FA1269EF780D25E7772A6142F5D16A
+110DC5C87FFC30C57CBF60E68E541F969497D87F96987727A29207DFD59183B3
+2B42AA8569FDA8B8AE227DD665E1E97585A4DF5F2C68DBE5302C20F25B54B0E3
+CB04DD959EC0727CAA404601BF0BDDEC40169382C3822EFDD88439823BE75BF3
+2EE872271550CFEF5E37A6398EED5729F766503F0301DCBC89AF21641BE38F37
+2F4C0C7C9515596E16583072AA3DCF843EB6C8878707C2A534911DE283E7AC3A
+663341F5AEA977765166E8EA729A1AFB651DDCE2ED995A89BB9B30AE83A92748
+E7262AC8F3CB47FEA898F3033578381214D1F0E407272285B96066BB23502315
+79E8E2118BA712696027AB9C7C0A3A4575D4C043BA3BA55E36D81D92E0B45541
+AA5192441A5E091C8C303A5CE6BF8135FE4D72687675ED6D4715B647BEBC934E
+4E9C9FBC32F5EEEBB63F20E9687C48EDAD3EA6493877935D47456E6484A2276D
+D7E5ED9E4BF3CF462937268E61623AA82E7460078EE57FB81329DDDF14E43E4B
+6EF073518BB2A74D395D4FCA17384B04733FBCA40EC77143C7D621B0495C5F5C
+D5DD79250E2AE4C860D2E0F96C57E0A97B7F15895282C5A47DE418257E379D85
+201577B5F862B1EACDD8CE3CBFB761F6FDDEF1C6375776604B86FE0147CCC04B
+A4EFA8C7649DB028B708C01494CF0FA886E8519B581F4644738177179AFF5D5B
+74B80DB79116F4A60139BD7D720D768770D5FD1CE84626D169FBB033527F92F8
+1DE84D3A52741091EFE416E616CBAB16E4164B466DE3004662828BACDFD872D5
+F509BC12511ABB28B88B2872E9F43068BF9FA36302E685EB0CA413B2AD3EB01F
+1EB4E23B823ED1B3C52C426442952357AA65247488026E7693AB8EF834306856
+F1124503EE25151EDFD832E50E320272616A936C33974F0312ACD160FACDD89A
+943A7A4B86E363E2119B933155B252EE6DE91DF5749764F76C6FBF2F7C3F6BF7
+5A149ED9C7083DB96ADBE069FCAF71FA4F8D4793954AC9E789AD9B2481C4C6C4
+6A41EF0728E814868142EEE4CB04F05D9B8D68E57D984EA0D8DAC5C7D27B8BFF
+A395784B953428E7A26F60661414FBB91B950DAB02B632D372FB8962C1642F91
+A7511867710CC803FC96E4063FB23B0C139D77636D458A26516CCDA31E49D81F
+AB530C694B849568C1A25E12F6B97E051402C1403730888B8802DFAA06A847C6
+945ED4B8724BA8FC090AC6B9ED21979CDF27E4CEEEEDC275A5DE955288FCE786
+E0D28741FB83F30EBEC22B696C28B1DE4BD480323B3C0858A156A19C8A404E56
+482C21FAD35AFE777E6484A2276DE5FAD8C9172073481EAB5035A7C73AD935AE
+094FC63974DC36C98229CF2736F122A799753961B40C355D5A1A9D26C915912D
+6EA7A5AEF50D1F14BFE49AAC9FD367DCDCAEBF0760C07FFEF893A08CD0B2C75A
+E85362010D931DFD4D6E98833E26F1BFA085E975DA40FAABD12BA601D9620AE8
+FF4E7D56091FE9D738FD3D1B40CE16E110FF9E247F5D44E45A9F67ED46D6BC97
+591A97A66B2E9B937B8533B276D514AD21A502C2CE2475E904910FC823CF0098
+6AE200E5CB51CCEAF6A3B3555CEC7E72C90E2CC671C051D2FC6370F8B204F9F8
+4E8A9FF8404192B840360688D90B7684E0B3EE2B1D4085E9AF6E4B562F5CC94A
+853CC5A2E3CFE1587A98CA67C381CF46987CAF37CC7390AFEB6F7F9E63A7D0D1
+B445EBC74C478C9DEABEA8900156C25DDCFEA84B0B0BB785D0A6F24E9F482D22
+30B92B4C86A2AC438C89F924AE80EC1D5F28D9CD934145AC919933DD998133D1
+3A64057A456DE084AAD122166EC4D99AB43D23735B55878D067A01B4784EFAC0
+3388D619358C5DE128FA5CBE7719C0EE00D8CE6BA961838B489D82406DEADEA7
+5AAA879CD224BD2B3BD42B3D519FB5AE649AB025801CA1AABFA7BCD97B3BCBCC
+F18DF402942B803FCE5BC77BFBD2876DD25CABC38436315BBA4B72F6F9E1512C
+E8111F9D1A57FE83C471E0270B17DBA5DDD54563328B77AC6A00D0BD10A2DF3F
+B26B98A50591EA0ADC7681EAF7885E5DFE8DE1F086DE6C278089884D8DAC5C75
+C21330EFEA2A2F84409B1DD1BF3D904EE2DD451BBD2EA6CB6868AB239B55DA7F
+59E9F2D47487728C3CE72106292B5712A814D11CEBE4F489D5DC812B7ADEB0E1
+99C040F70332DDEC4F14DB4C911AEB5213053CADDB4345EC1AA058D0735FD1CB
+66036B334CC6B28C436606A7CB6D9BAE111EE9A13226C9A9D38EC76F1FF7EA77
+813FE06C5551A9ADE94EF93E10B83CBEC05F8C18DB6B46408FD34DE31312B305
+027040C19921B382DF21F1C82A42A307FF02152287FA4D49A92FDCC7F8E91224
+500D4E89F4CD9B76E32CF4E4E630173272863AD846C11ECC1CCE87E7E845B583
+745E6B485DFCB4B8047C3C7A9E34687848D669EE0DF746E79FB16E49153A35D4
+77D18526A1227A91A9F5FC442790E6A0D1BDEBF80930B4893E5C966DF0DD9431
+154F3DF420626CB5A2711BF3552142A8F0C0AB1CD0E5CFA7F85BA2C7320D8DB7
+4F2F00744CBC92926AFD482A908154F282555A34169B9D000A3D41E2D63CFF1E
+68CDF42175E1B97B73C4CC539295B531FC4DBA01FAC90F87D2B271E95AD01817
+E3D7E9F4AC068E78B6C65F7DFA2ACC2416C5C91A74ED005E9A680DC3D5F57799
+03BB48D3FE3B0CF54CB0F9D08481C467949BC5A46EA9B028AA480C586C7894FB
+A1499E8F0A96493ECF1275DD0B4A80A23D6C11D15E1E085DE366121AE503E2A0
+B06F184DC80C3D41FD89FF2C6585364D9803D8225EDD6D88212E02807B154423
+6C42C380556B9545F0B3CC6945326E83D9790915FCD0CDE28E2A8F50BE9023C1
+82AFF8EB7DAE4849E428E2A55A6C4C88E01ABD286B4BBD5FA4FCD4E651713FE8
+09510CE23751B91A81C055F097AF936ECCAF15366CA610025C8503BFADFA38D8
+FA8B9B5831A6AC7F4333959528982792995C4184DB90C1536AAC0AA61C15F46F
+D36A7179DD8BDC35611D0C13DFEF2BA36574313E4F7502A12D2CD14FEB3AB42F
+4CC0ACC472A7BFB82A9DE77B5B5DE47C2C318E3BD15BAEAA5084F5A47BFCBB0A
+8ECFE645597DF43FD37AF7D439240354DA7DADD977B5383633BAACB90E73FB03
+DF6C58EC25D5A887E882315994E7704F25F26A091C1BEA72A4EAB6D4CAA13378
+810F57B7FBF6C849AFFD018A8DD429F437C856AE63161C286DCB8A0890C754B5
+2DF5ACC07888B836AA731AB1B774A537EE86036E71F2B1E923992BC395212874
+B8EF03DE1DAF80DE48314EFF19EC845D04A8D4F01C9C384CF2741DBCDC0B46EA
+D985104A94B323D3F067E10ECBD39D199846098FF2B2029E9081F0E5A7D8FCE7
+512B69B5C31C69C9A731986DA0B1828BCCCD17148DA19D7AAAD8F12A278AB897
+DD6E2C5C233959E322921D76D972093C9235A30863408FA5B390B9A4913DAB5D
+AB84F1D370B3611D00BA7AE997C967D40951616FDCC6F1139E7FD42B5EEB6E3A
+FD5879939837B67FE65A1EB3CEA381FDB132A281D474D78A290CFF972BEB7CB3
+282CDA6047AE3A12E9FFACFF8E7F621E939F1B18817D695D04CC63B880022CD9
+AE900F539A45CCE6EE8552BAE293717A666B3F886DDC483718032F2ADA08F8CB
+49142929720FC5142AF5CEAA1825B6356BA42F4B0F1F553D30D41CCC1C750789
+460587EA589A9CEB85A305543C943815A07680AF0C943F95393F5048B0431A37
+5238AD4BC7D6E5E0652ED9C0981AA035CC0CB72F164223729CD6549F274F6620
+FCC173A5383463B07CC84421890C0518371912A25EB93C29EEAEB6CEC65F3871
+B0468434BB0AE1C5545B1187FFE42209A64C8C289B4AE9E5B7E780F9B957CE43
+9DE2509F89EB6C31D38518C97B6CFE8397640D92289FB906D85BD4C180909698
+D450ACD02EB66C08077B84F54F83E1D710803DFFA745A853955DCEED63CED1E4
+24B333F33C5FBC3A62FD5A6B4565ECB973DA53FF4D90ACFC81464B5D1895AB52
+6D51A46754C18D09944AE5889219F87B338D846980F164FF401916EDAAF3AAD8
+D529092C6C02E01E84ABECEE2BA60A8EBAEA08072BF488CDC36EC52266A959BD
+B33E5227FF2AE9D67F86532F88DD6ABC20BD51321C007093BE2A8B70541A8D8E
+35F9DCDBFBE06BD2FB44BF08E9D95DF36DC056E8B78512FF084D9931CF33991A
+50D832F434DA67B8F61FDDF09DFC785EA49E8888C99E4F5D54FAA0B2C895CCE6
+FDC044C115ACD23F8BD84EC03C19041A0A5921B03B90A3BD4256B7E56091E322
+BD02645A686DAA78F8A71F8736385DD6A0D8779EBFB75B4FFDFE34B2B471F78D
+DCE9FEF170797EAFE64C607CDF5FF158677BF62956FAE25782C9FB79463CB66F
+6E4D516793FFF84313F0EBE63217B9823809F0C0F223856729AA9EAADCED083F
+55A2CB8C24B2E1E3972DAC8A6E7806B17DD250C6B97C6344F4A4A65CA8693AD0
+E06D6984B99D38DF9FF10F2BFC3D9455DFC7C1995D79B36654F7AE88B94EB881
+B63BE817158A7288212F7FB737B5090E03F216E2009FFE57F67FAE8D28A21449
+09928A2050F7E5244614CD91C79F93F5D95FD0A3130D4292EE2DB2D6F85EAF6F
+A19BD9E8732815A1B082E2F691E6288B3F2EADC062C31403C6B1076384595EE6
+E8B8E2294C39286CF689314C9388A7D547F8AD629E319FD27AC8ED5EFA8B72D8
+C1330B585F908C9D995939B85DCB2DAEB73E9834E89D40B41377C62D78E983C5
+AE72EE1B89BEAE181D23ACE6E92D955C7D483C2A338650684D9ED3FCAAD0D1C7
+E5C4B34854C4726734E7872C6E7D583F9CB415CEFCB12F8313B7B784E4F6C818
+BD28677C16F6F64797E00C7733B6C58302E73AE7B15D8F95431289ED3719A06A
+8A02EFBB2E2D673C3FC9B8E5FBFDBBF6BAFFE546C02CB5B6D5F0BE5B6B6DA10B
+EDAD55DE9976D34B91D348ACBED821A1B79D27D4B1B55A6B15D23C9ECFF7D11D
+F92E777B963CD47D03415AE05852CF0F88943A5D20C4D45B9CB6F942D99D519C
+C9A9C7E3B07979DD508E5C151687901E871517CADFC0B71A537815A1AB6F6C5A
+EE4A3188FA75FDB357559C2F9F77E1D6006B542E0346D61CDE15957DEF0D162F
+CB9F579D54D823E05BB8C56145FF46ABD2C0F243BACDB5F73AA6A939A2D431DD
+093B4B6CB1F9EDBFBFA779AA6EF3595E1CE7CDCEE753A4653783F50477B5AC0A
+55366860129F256034B518F3A5C48C966467FD4F4E2F3363B1AAE19D27276319
+98577BCB402B5C2F6C6CB4245159C9696D938BA38EBFDD76F670DC9F83BA8672
+2B1DACB69BF5C370BDC189C5D49BF1481BF9A18F1100DC157DF5C4E06FA96A02
+6BF8CC2D302292C77AB9626B18E4BF52ABEE0CA1C4BB1334CDBF7366D72FC83B
+A7D3F8F2E417294792309835D0D4BC24676558939B0BAACE303796DEB7842131
+B017B43D3FEC15ADDCAF053F0B73716EF8262FC3C655B1A957CC117727FF22C3
+CE6BA9FEB49E1CA7091BC9A2DFADC745E644C0F4E5D3B1DAD8CF3DC2BB4C7267
+13875288A2FC55DA62301FC451084CC9341E5C08AB271FA4622C98DADE631737
+BB46D6731A2B010CDD505F26896EB191F8E34F91D1A83E26197B535FCDB951EF
+BC02DBF2D0FADFCE5BB153F67204F79BFBC8A5C61575D1241DDDA5FDA97A75F7
+6C110CF61F1C6929DDF50A666ECADB37C0A4F4A444F6D62218A002A2F1D57EAB
+6FF91FBD4341D305E6B47E4B43AE9E085441AA17859AA43AAB51C32BCEA0321C
+CB78609CB377C53DCFB99145182EB17E55A2BD179F104C27D1C9CFB958080457
+5E0BB47FE6E86B676A6B6FAF18A0C0C3C39A533F570D8502811A606E566BE0D1
+6A24A12649A842C239C050B00F6E12CA60F0069E0B4DCFFB0BC63880D78C5C8F
+24ACF262A3FF84B534C5169054B90E8285376431CEAE202C9CEBF0A12D53C448
+F87C6E7C31CE71B3C1939037E8E2CF272F6C52FE3F0981390FA0F9291375720A
+4C0C55B065AF816610F9B2431666262BE27AB18FD1C4280C562CBE23D0744C89
+39729D2481ACE3D773F56AA6CBB41BCEFE83813B4A668082799CC47C667CA917
+300AFBE211CD281EEBE74E7A1D47BAC8E88447529CB137ED648CF3F67B2EF34E
+873B37CBD5840DAFA45E090694972FC7CBCC421C338104FD26660B509728C3F2
+1990E21A910244F2C6AE0AB116802DD3C899117F2D5261C813098BE9B29F3D36
+C8159BB5EE6C5B1EBB0C9BB4674B51FD18841C97CAFB705D6ED688700626A8CC
+E1BA105166421B51CBDC4CADB08638040D276DE3D0D12955FB4D37D03499F721
+7AB395A7DB8FEB2FE7DF87EFE458B6D4CA78AA8FD2381C08A1649ABC34AEF570
+5E23EB44246585B499A79B13A94F873AC2915B0B6C437DA474AAC43A68173C60
+998A4B977021720C27834570C10B3643333B3A8752D41F0CD644AB97B354D3AF
+F148FC818C8A9A8FDEE058A288B6B1C6FD91EDAEC908DD41182A148123FDD644
+BF1ED4AB0486C2D2B7BAF00863871493D78A3C092C5814435E5CD5507A853CF3
+5EA2688BB258CF46775A16074B535649C0B307A086E05016B5D50107D5EC855B
+1C8D4AC6B243736153223C9EA4AC700AB3C0D7FE3156978AD8D1B87561C9DEB9
+FC75DC928DE1A9645E3C08AA8703C35678B886A476E7638A1C9E2FAF251BEF61
+04D76978B921AAF101D0CA4F976B04FEC152DCA8EDA36EFB9464FE05C613E959
+E458381D04A84D3303CAF3B15C211A814990E1003FA9D69CA4151641689113E2
+232C4F5B602D4662635B91D70AF8DB6218F831F10681CD0CA6C20E1DE5277AD2
+F8D2226CF7694BE3A014555DD37049D7EDF4B3DFBFD35FB4A1E47229C2A03C23
+A7D86CEF4B51FF8BD093B04E0076E52C0D10C0C61C4AF9391026D75CE7A1E061
+D2E0A83E6703DC4E892A5F4C9C7AD37677BE2B2B2346AA50C2F51AEF2F7EAE65
+95DB3170F173DC14AD27F4562B3605C7DBD29BA9B4A8605C52F13F98AAE1A9D7
+8498A6B161600D82A8CEE326F26BB682FE26B3851C04569A3F43A08196B71524
+45C1BC1389BFF61A06A8EF9F6922F78F431D48942347E5B0E266F40B909B0A38
+8EEAFC0994DB4C1882D228B93263DE9049BE9FF7C8FD76BAB953D2DDE97EA12B
+49582D24360AF645285395708B060BBD026DEC910D127A9E9A607C998A4C1D77
+350142AA37E27621B6FA853D36F4BB5A910A9C4BF7AB68564BACEA384F8F1D3C
+E20A813552A43C1C808D1C33E17AE9565160895C349B0F6F270E6FD8A46ECD59
+1BB16DEDAA6188F99E2D2FDDECD31719F32EF723E754BFFDF7B7E821921BE5B4
+2FA8882A53F5F3A11D4533381F250C6D46A8C13DF6F417CCED5DE54A2AF7D8D9
+397CDDE67DB5ABBC2EBDCB41B129AFA137EC50623E8A382B7C07A5DB46687801
+3C808F9DCB26A112A5D7AF4F4112CA0619B812BEBD57CFB2D1980646D207F055
+540555E99666BEC665C65374F67D0D6ED07357C12B63C80A2643DA3D32E927A0
+1AD02B806D3F30B1554163F641678DCAAC40A1B0743FB194710FB8F3B9BC4495
+5857400A1C5BF8B49FEE35F4D3CDCC5AA8CC2252A9526342478D25BE086369DB
+D8FA9A0CFC2D8685896CF5EA97C1EBE34DD6E583C38C0B90FF492147E21EB6F6
+32D68C5A694035DE31BC911C75191DAE4E6EA5C2DE86028E507FC697FC6B28E6
+0AB57AE85476169D5EE04F234BC59D891422CC64642983C625575DFDFEF35CBF
+8DA5E815999C4BE060CC6C9EB49A24D5805D865F918745611A221DCBCCF993AC
+26C5741E28B9B2F2962813500B27CCFD1C64ABC42209A16A3B77245538E1E160
+C79A21A17DE831B49050AAF2D649A54C64427A36F553C7DD3D65EBA89CA9FA9C
+B3C5516CFB743E7045E320ECF7EFADEB309421039D350B5D0DF80D7E80727F0F
+20975ECC4DC1EDBA5E66D339BE957B40B2A4C63C41EF5603F8C767B3EECD0E0A
+732B877EA2DED6BC6F4270EFA61EF143655132C4682401433DCF9385D59FEDE5
+1D05FA41BCF6B182D037FF8498B7B41E64BF72FF427CEB175C0DC67D4F6910C9
+19E9FF9D5C8921841876C51E0E32A3DCDB6DDF0C38889DE018E62FFD68B9B007
+78842AF46D41DCA0206D3C8233CA653E73EA75D8459F9185B8F18897A6889AD2
+51F09AD4061F09AD5DC34C546E5E430C18FB159B7D6F7B29F42EDE943E6A9D37
+14D9D59AB02264502D9002D902654D7E0CE0931C599E53B24466886FFDAF7B48
+CDBD7325C6D2FAFD28A971EDD436A3AD11D3BF9AD6D563CD94B9AF1971DA0A4F
+F7B49E6C8BBC52CCBF8DD88CCBD1F4258425482BC33DD02F7A26377DED907CC3
+35462724B7E97745DF03FDF781167A64173307261CADEC3A4EAADE3C58F0E9C9
+4BC5876F66939F76217C153D24DCDCD919CF7E573501733FFCD7B7071A1714B6
+318729F987C4BC953F2DE2C31F44C8E2DB02BB9DAF1292C01DB31D30F318FDC7
+7DE05443B32A7984A1AE32500A4BBDA3920447681950A31F12A45DC6A679FDB1
+CEADCF324A085EDEE5C658E1B2983AB7CD521C9DA2BEDBA8FFCD018658F4A90E
+CA1D88F143822204D08F595A4FB005410FD681E99C7A283524C2553B0E6F4A85
+CD47DB0EC5AFFBD58A786F92DF8D3A011EC5372B6B27F1434846427485A6F53D
+A6C520766169401828690B85D5726B43C9AD23231AA7F4062DA23B55FB842DF4
+E1D98FE7322CEA740AEAB62B8E89A58D6C45225931C102F27D08BAF955C700C5
+48D93B4FFE9A44135BBCAD25AC4B526EC0A4126FB1F636B0409CB0DD0279D0FC
+83FB8CBB42A762DF7AACCBF2814DB08B180AD91F6A4040B830B2E6B778FADC69
+B5309626DB03244237C92B31D159B59BBFE2F21C546B41C4FBDF769EB5302DBD
+A10E07FD7CD2D9DD118C7943CBCE8F87087E492C0A2DA05F8B3B5A29B4F33FCB
+FB1A6D4CBADF99E88F9C08A4CA17C6F479D389C8696218112A278F0FBC612E74
+094BAD9D119B011D581D3BDAC4C7F1CE0F235C7088A910A93CA68639ACCD634C
+4E31423BC5861F5667F21A23937FE76D4104800566BC9E2DDE5DDE4F70CE1336
+F3714BB387F784630B10BCD386D19E8E25BA6BDC9AA69CBF11BF78957AEA4EE4
+BA15BD2F604A6692F1CB6C6A4B9AAD724C2ED99BAADF68683923A46D2EC667B7
+A55EB925ED7862B5354D4110C9A32C76410C9AA3B02A97072D440EA19D8B9A5D
+C12078ECF342B92F71193D204C9D334A16AFB4A1150804208F5D9ABD0C0C1936
+0D8F7D6470B46B5D6D6B90C2E8986DDE7802D9C8E1C5EC63659FA66719CEC409
+67AEF24688F55274BB12D24C32246B29D4D785045B0914B142D53E0BDF59D41D
+5E233FD0040FFEE21E95EEF423FA2747F1D36AF926798EF958794EC5D2F1D5CA
+601A7C71D89B005525695F033D4F3D0D8888ED06BC7CC518498564FB3521A733
+15BC620B4E050A94131F2D908B897B7366168D264BEE7E26977C51E549AA808F
+152B6D4E11ABFAF2919FA24C49B2066E726CD9EE7954095107111FD4AEA2DBA4
+F5B86805CD0F2A7CE285796F336D229441513D19E10AF1EB72E28121659C7F2A
+C4BB0C032771A8D49903B7A8E7FA1C3F83841D0390CB0415867689D4EC37FC9A
+191C419C520DF485FA9431AC2B8D21657E1F6B3EA95590A96ED25E986EF94774
+EB5EB04117BEA22ABC896BF1A47B112225D6BD1C2CA79CAD7FC0531D30E1B878
+14F7F2115E43589B6D31D5EDED57F4715803A3B5512504D0D1FCB627AE735064
+5EDCC1C4A5A7B7B9D58D067476D0EE1B8EFD38800170F052018F578D3BA9FFA4
+F0255F7FB35C37FAA2519B9CFCB133A43B383A5E09A7D4D6CAA615E9154E4C6A
+7A1E1AA2B039CDD1D6E6B9C4D891DB6E4D5B8BD026E099A1BD877B5790831573
+926216F62742856383E128E1B7AACE644F28DCD53F584EB24E6AE6B451CCF10A
+9D058CDFE1E017565DEE7A926853397EF7787C774D96CE9CE781B33BAD9CD796
+AA7B1B75F6E091B47A7FBCC903C076C9945091AA2F8CDA5FDA6D779B65415004
+1D8F5A4B376A317AB559A42C5C961A4DCC7975E55DA14644A1492A578298440B
+C7F4CE1AF5CDB3D3399C8661720005E95E32BDD0C05C49F1E4C2AE55EDB6101C
+E045F4CFAD6AB1C9960BAA2A965BF407E61AFDECE5EC4BED58CC01E5086C662C
+27BA31D6D61293255EA3F4454876864C2C6A503A09A2EE0D069ED5D30E22C136
+BBB1AA135ED6E11FD00743FEDE36937AD76B720B51FA2EF2FB30F24AB4677464
+E94408A9017A1073C6CC56EE4F2EC74BFD8DCCE8D59712BEE48EDE7BFAD3F3D8
+FD3EE0C8F1FA1C460D82C64FF38028BFC06C91E1D2C97F9B8BA4E729992FE8EF
+A7108DC0EFC5BAF250E05B31510F4C2006644CC97507F5D688826028AD90E833
+F39724B6501619E8A94313552717DDEF3B09E67DB8F8F49BD911CACEE035785C
+F9936661D9B9FFB82F99AD8D7043ED2379B1FC5E5EA694C72C17F53C22C80C18
+1A45CFC137F479E64E598F72A9DE4E21C0399D7E2F900503D4AEB123AA4A0295
+95D66DDDBA469A0CCDEB73A2457F721617984588C9D85B62561DA910541D836E
+5D6AA94CDB61C409056A8272F12F8CD496F8687872BF7ACE26B9595B08C1183D
+C10EBDA3A6996FBDA4BFDCA7007A733D3F4A209184C753C13CF5D750FC866AEC
+5E6C751CC9EC6F409F99812FB35A64BF1882157DD97FA1F676B3AABBDDD97154
+0997472D6663614878DCBAC0698192CF2616451A276D94DDE64CAD75160A7101
+DA2BBB40866BC98B99D5F48E7B4EC8807C1D444A570973622069458A641F1986
+01F19A0005222649135F580932533F055A496CEE3F1163EC133457CB7759ABCC
+1F2E175E176CE0F8D804051971DF0A5D33F4681A67E9106DA2901921785681D8
+6957CC2BF04AF951DECCF9BCF527BD5F73C6046E2B3213595AE850778D7A16DD
+1462A45EF40173AF0D9A97C8960B76DDCD619A87D35B577B7381C33AF3DF5E04
+8D75F2218A59980548289C8F2B92C298DF2EC770C6A3EB9B7A1F23D206D58732
+4508118E41C18BBF67D422D149698624C4EEA26B8CC9AA7D07CCD498AFF19F35
+2AE3828DF14565C7EBC3A01938F5F461C4F47A71E1C533EC94041CB2A2556DDC
+E294DC2AD58C35FF4270DD2892145F364A4D92A3CEA2F6C2E8CEA2CA248E0178
+14D6A68288D89FD32E960DE2CF2E3C0CDA7FAC26EFBD8B05FD9F77AEB0E88835
+3C3C3B40D17F8110551F98DA68DAC7A864CFA3A39D47E7D94DA3F44654DD0E7C
+99D3B259C6A07DCC2E19E9BBEE7D5DD72CFCB52D586E3038C9CDE325EFBD2EA5
+F5BE0E3EB493F8F009633954CE0F1ED18BAE461628EC39856C853D3C3B98CD78
+E086E0744EB0D1314D4A264BE16F3093CB456EF9DD32C02BEE4BCEB510532647
+2EBE604306BB88EA37780E0A931A5011FCECD19E48C48A7481C556063BEDC189
+9BB3199B31F30D71B8B837A98A5C495AD55F9D5524159546D94C5461964726B6
+3B54AE3795F7C299638409852C612999192BB05EC6ECCEA1D10282FD71CE6B64
+8DC6B80FB109B52030D90A795A155B3F917A4AFA241CE4761F4F0BB86BD70907
+C8BFC8EE289829F7FC6244502EE3D6951441976B555ABFC293DA0BAE65258647
+DBDA261556761AC2181A21C26E96C79DC1405A9DD8524AF10E198A8BA0B72DD4
+D47F64A9A7AA41A277FFD62509810B876BE1713075010D364446C49D8225E28E
+FD02FA65FF887E67085C3175193C7586EB5A6A30BBC50741DF9F302ED2227437
+6204E2A943A794B267563C5C927D876A187DCB28670C817FF764DC4F10C0295E
+F66C81F753E72EC9C84D72819EAD449EB622A48496ED54F930FA5DF683196474
+AFB46B27DB7E1730C8857FD7321DE268ED7106E26D29D3D7DCF57A1F31E7556B
+BE48F874C6EC21A615B6CA4954FABDD2FC56A12ADADCE422045F45A358A706D4
+EA65F98609EC4AF9E1D819163533973EBEAB55ABC87DD0A97F0E4661F2698BBD
+BDBCFE3EA3244CDA279C615118F3B837F88CF43D290A2CB2094DC1446DEF7B66
+A4E9E100DDD3805F9B8F528E6E76610991EC2F0E419C30306C916EE2281DD55B
+D79E40ACC81E367912990BBA06063493A6080D45AC00264C9F6E7C9417F1CD89
+DDDBE2BEC6981539819AA399FF95CA9FEF38028AC6591553FFA2F132104D96C0
+7C163B3D52BC47F8ADD52934383D74A48D465815C2AFD310B1D76DCE5D2BC189
+C20658F721886C7C5A9A69B5BA4B57A7A0F6CAA28625CF91B4EF22A4BC8CCB94
+497AD3858B28CA586EEEAE46CAE80DA0F5314B9E14E2C435D11ABA5B06C82FCA
+447AF359F7D4DDF7B69F14B30BD357AD584CAAFE03887EBBFBC5BD7F34324686
+0CB8ABD16D469A20CE3D04FD6A143C33E3FA06EFD2DA9FEF0794829FA2EB0433
+04FB03C20A1C003CB1D321BC097D2D853EFDF8B6D44E8E726563AEBD522C1DFC
+08DCD87F3A4363A1A6AE54ACC206DC00F5B5457C74004E093D0BC25B213B6895
+BEAFAAB1CD4F2A172D61D1288D7BDD593165E8F570213E486C14AE27D098C46E
+5D4BC3210F98F384E35E57847CE38C0EDC22306A35F3F401CB73812F0AE20045
+B28F8C3DF8249B3EA83E5B9B573C0F455E8D2B09836A775995178F785A0E73AF
+258C9F6DC8A7BE490FBF2F61E03B8950345504D6D79177EFB6648D0E9FDA4C5A
+AF9D7A72DDFBCDBCCDD3085B9C89A8013879544E3D7A642A63F8C2861578FA8C
+997997EA7FE06A14C806230EDA20A69862816E48C5805F80109ACE297B4B20D3
+0C52F08052EB5C62A20A6D088BEBDC7FB3F8513DB08A5CA11E3D0B12022A3AF9
+5831913982CE4E359671F8BF22DE1D7A01DB25AA3F153EA280E84AF07A76B425
+D3F02E1DF7C3C833701143DF12059CA9E17E08D4253C99759C2B89987581258F
+83E0BD78776157B26B64C467AF64BE40D858468AEFCB9FCCD49E8208773F2E64
+F8A88BD964A4C58A5EE38082928EEAD6C3D4D25B738CBFA63D5EAB45253C0CA5
+328193432D
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
TeXDict begin 39158280 55380996 1000 300 300 (readline.dvi)
@start /Fa 197[11 58[{}1 37.3599 /CMMI9 rf /Fb 133[17
20 20 28 20 21 15 15 15 20 21 19 21 32 11 20 1[11 21
-19 12 17 21 17 21 19 39[19 19 19 19 19 19 19 19 19 19
-2[13 11 30[21 21 12[{}39 37.3599 /CMR9 rf /Fc 134[20
+19 12 17 21 17 21 19 12[28 26[19 19 19 19 19 19 19 19
+19 19 2[13 11 30[21 21 12[{}40 37.3599 /CMR9 rf /Fc 134[20
20 2[20 20 20 20 2[20 20 20 20 2[20 20 1[20 20 20 2[20
19[20 27[20 20 2[20 45[{}20 37.3599 /CMSLTT10 rf /Fd
167[31 3[30 23 2[28 1[31 38 26 1[21 1[31 33 27 1[32 30
20 20 20 20 20 20 20 1[20 20 20 20 20 20 20 20 20 20
20 20 20 20 20 20 20 3[20 1[20 20 20 20 20 20 20 20 20
20 20 20 20 20 20 20 1[20 20 20 33[{}86 37.3599 /CMTT9
-rf /Ff 134[26 26 36 26 28 19 20 20 26 28 25 28 42 14
-26 1[14 28 25 15 22 28 22 28 25 20[31 39 1[18 2[33 34
-22[14 1[14 1[25 28[28 28 12[{}34 49.8132 /CMSL10 rf /Fg
-214[18 18 40[{}2 45.4545 /CMSS10 rf /Fh 133[26 26 26
-26 26 26 26 26 26 26 26 26 26 26 26 26 1[26 26 26 26
-26 26 26 26 26 1[26 18[26 26 1[26 2[26 26 9[26 16[26
+rf /Ff 133[22 26 26 36 26 28 19 20 20 26 28 25 28 42
+14 26 1[14 28 25 15 22 28 22 28 25 20[31 39 1[18 2[33
+34 22[14 1[14 1[25 28[28 28 12[{}35 49.8132 /CMSL10 rf
+/Fg 214[18 18 40[{}2 45.4545 /CMSS10 rf /Fh 133[26 26
+26 26 26 26 26 26 26 26 26 26 26 26 26 26 1[26 26 26
+26 26 26 26 26 26 1[26 18[26 26 1[26 2[26 26 9[26 16[26
42[{}33 49.8132 /CMTT10 rf /Fi 134[32 32 44 32 34 24
24 25 1[34 31 34 51 17 32 1[17 34 31 19 28 34 27 34 30
7[46 1[63 46 47 43 34 46 3[48 58 37 48 1[23 48 1[39 40
1[44 44 46 7[31 31 31 31 31 31 31 31 31 31 1[17 46[{}52
-54.5455 /CMBX12 rf /Fj 133[20 24 24 33 24 25 18 18 18
-24 25 23 25 38 13 24 1[13 25 23 14 20 25 20 25 23 9[47
-1[34 33 25 33 1[31 35 34 42 28 35 1[16 34 1[30 31 35
-33 32 34 15[23 23 2[15 31[25 25 27 11[{}50 45.4545 /CMSL10
-rf /Fk 134[22 1[30 21 24 15 19 19 1[23 23 26 37 12 2[14
-1[21 1[21 23 21 1[23 84[26 12[{}19 45.4545 /CMTI10 rf
-/Fl 134[24 24 24 24 24 24 24 24 24 24 24 24 24 24 24
-24 24 1[24 24 24 24 24 24 24 1[24 2[24 14[24 24 1[24
-1[24 2[24 24 24 17[24 24 2[24 5[24 39[{}37 45.4545 /CMSLTT10
-rf /Fm 135[28 2[28 1[21 2[25 29 28 4[14 1[29 24 25 1[27
-1[28 97[{}12 45.4545 /CMCSC10 rf /Fn 197[13 58[{}1 45.4545
-/CMMI10 rf /Fo 197[16 58[{}1 59.7758 /CMMI12 rf /Fp 135[43
-58 1[45 31 32 33 1[45 40 45 67 22 2[22 45 40 25 37 45
-36 45 39 10[61 62 56 1[60 1[55 1[63 1[48 2[30 1[63 51
-53 62 58 1[61 14[40 40 49[{}36 71.731 /CMBX12 rf /Fq
-242[45 13[{}1 45.4545 /CMSY10 rf /Fr 134[35 35 49 35
-37 26 27 27 1[37 34 37 56 19 2[19 37 34 21 31 37 30 37
-33 7[51 1[69 51 52 47 37 50 51 46 51 53 64 40 53 1[25
-53 53 42 44 52 49 48 51 6[19 2[34 34 34 34 34 34 34 2[19
-1[19 44[{}55 59.7758 /CMBX12 rf /Fs 129[24 24 24 24 24
+54.5455 /CMBX12 rf /Fj 134[22 1[30 21 24 15 19 19 1[23
+23 26 37 12 2[14 1[21 1[21 23 21 1[23 84[26 12[{}19 45.4545
+/CMTI10 rf /Fk 133[20 24 24 33 24 25 18 18 18 24 25 23
+25 38 13 24 1[13 25 23 14 20 25 20 25 23 9[47 1[34 33
+25 33 1[31 35 34 42 28 35 1[16 34 1[30 31 35 33 32 34
+15[23 23 2[15 2[23 28[25 25 27 11[{}51 45.4545 /CMSL10
+rf /Fl 134[24 24 24 24 24 24 24 24 24 24 24 24 24 24
+24 24 24 1[24 24 24 24 24 24 24 1[24 2[24 8[24 5[24 24
+1[24 1[24 2[24 24 24 17[24 24 2[24 5[24 39[{}38 45.4545
+/CMSLTT10 rf /Fm 135[28 2[28 1[21 2[25 29 28 4[14 1[29
+24 25 1[27 1[28 97[{}12 45.4545 /CMCSC10 rf /Fn 197[13
+58[{}1 45.4545 /CMMI10 rf /Fo 197[16 58[{}1 59.7758 /CMMI12
+rf /Fp 135[43 58 1[45 31 32 33 1[45 40 45 67 22 2[22
+45 40 25 37 45 36 45 39 10[61 62 56 1[60 1[55 1[63 1[48
+2[30 1[63 51 53 62 58 1[61 14[40 40 49[{}36 71.731 /CMBX12
+rf /Fq 242[45 13[{}1 45.4545 /CMSY10 rf /Fr 134[35 35
+49 35 37 26 27 27 1[37 34 37 56 19 2[19 37 34 21 31 37
+30 37 33 7[51 1[69 51 52 47 37 50 51 46 51 53 64 40 53
+1[25 53 53 42 44 52 49 48 51 6[19 1[34 34 34 34 34 34
+34 34 34 1[19 1[19 44[{}57 59.7758 /CMBX12 rf /Fs 129[24
+24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24
24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24
+24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 1[24 24
+24 24 24 24 24 24 24 24 24 24 24 24 24 24 1[24 24 24
24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24
-24 24 24 24 24 24 24 24 24 24 24 1[24 24 24 24 24 24
-24 24 24 24 24 24 24 24 24 24 1[24 24 1[24 24 24 24 24
-24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 33[{}91
-45.4545 /CMTT10 rf /Ft 131[45 23 20 24 24 33 24 25 18
-18 18 24 25 23 25 38 13 24 14 13 25 23 14 20 25 20 25
-23 13 2[13 23 13 28 34 34 47 34 34 33 25 33 35 31 35
-34 42 28 35 23 16 34 36 30 31 35 33 32 34 35 4[13 13
-23 23 23 23 23 23 23 23 23 23 23 13 15 13 2[18 18 13
-2[23 1[23 19[38 25 25 27 11[{}84 45.4545 /CMR10 rf /Fu
-134[51 6[40 3[54 1[27 2[27 3[44 54 1[54 47 11[74 2[72
-3[76 1[58 4[76 71[{}14 86.0772 /CMBX12 rf end
+24 24 24 33[{}92 45.4545 /CMTT10 rf /Ft 131[45 23 20
+24 24 33 24 25 18 18 18 24 25 23 25 38 13 24 14 13 25
+23 14 20 25 20 25 23 13 2[13 23 13 28 34 34 47 34 34
+33 25 33 35 31 35 34 42 28 35 23 16 34 36 30 31 35 33
+32 34 35 4[13 13 23 23 23 23 23 23 23 23 23 23 23 13
+15 13 2[18 18 13 2[23 1[23 19[38 25 25 27 11[{}84 45.4545
+/CMR10 rf /Fu 134[51 6[40 3[54 1[27 2[27 3[44 54 1[54
+47 11[74 2[72 3[76 1[58 4[76 71[{}14 86.0772 /CMBX12
+rf end
%%EndProlog
%%BeginSetup
%%Feature: *Resolution 300dpi
%%EndSetup
%%Page: 1 1
TeXDict begin 1 0 bop 75 659 a Fu(GNU)33 b(Readline)f(Library)p
-75 709 1800 17 v 936 757 a Ft(Edition)15 b(7.0,)e(for)i
-Fs(Readline)f(Library)g Ft(V)l(ersion)h(7.0.)1572 811
-y(Decem)o(b)q(er)h(2017)75 2463 y Fr(Chet)22 b(Ramey)-6
-b(,)23 b(Case)e(W)-6 b(estern)23 b(Reserv)n(e)f(Univ)n(ersit)n(y)75
+75 709 1800 17 v 936 757 a Ft(Edition)15 b(8.3,)e(for)i
+Fs(Readline)f(Library)g Ft(V)l(ersion)h(8.3.)1608 811
+y(Octob)q(er)h(2024)75 2463 y Fr(Chet)22 b(Ramey)-6 b(,)23
+b(Case)e(W)-6 b(estern)23 b(Reserv)n(e)f(Univ)n(ersit)n(y)75
2534 y(Brian)g(F)-6 b(o)n(x,)23 b(F)-6 b(ree)23 b(Soft)n(w)n(are)f(F)-6
b(oundation)p 75 2570 1800 9 v eop end
%%Page: 2 2
-TeXDict begin 2 1 bop 75 2207 a Ft(This)11 b(man)o(ual)g(describ)q(es)i
-(the)e(GNU)h(Readline)g(Library)f(\(v)o(ersion)g(7.0,)g(28)g(Decem)o(b)
-q(er)h(2017\),)f(a)g(library)75 2262 y(whic)o(h)19 b(aids)h(in)f(the)h
+TeXDict begin 2 1 bop 75 2207 a Ft(This)14 b(man)o(ual)g(describ)q(es)h
+(the)g(GNU)f(Readline)h(Library)f(\(v)o(ersion)g(8.3,)f(10)h(Octob)q
+(er)h(2024\),)e(a)h(library)75 2262 y(whic)o(h)19 b(aids)h(in)f(the)h
(consistency)f(of)g(user)h(in)o(terface)f(across)g(discrete)g(programs)
g(whic)o(h)g(pro)o(vide)g(a)75 2316 y(command)c(line)g(in)o(terface.)75
2384 y(Cop)o(yrigh)o(t)301 2383 y(c)289 2384 y Fq(\015)g
-Ft(1988{2016)e(F)l(ree)i(Soft)o(w)o(are)f(F)l(oundation,)g(Inc.)195
+Ft(1988{2024)e(F)l(ree)i(Soft)o(w)o(are)f(F)l(oundation,)g(Inc.)195
2451 y(P)o(ermission)9 b(is)h(gran)o(ted)f(to)h(cop)o(y)l(,)h
(distribute)e(and/or)h(mo)q(dify)g(this)f(do)q(cumen)o(t)i(under)g(the)
195 2506 y(terms)h(of)g(the)h(GNU)g(F)l(ree)f(Do)q(cumen)o(tation)g
b Ft(1)200 503 y(1.2.1)43 b(Readline)16 b(Bare)f(Essen)o(tials)9
b Fn(:)d(:)h(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)
g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)15 b Ft(1)200 557 y(1.2.2)43 b(Readline)16 b(Mo)o(v)o(emen)o(t)e
+(:)15 b Ft(2)200 557 y(1.2.2)43 b(Readline)16 b(Mo)o(v)o(emen)o(t)e
(Commands)9 b Fn(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)15
b Ft(2)200 612 y(1.2.3)43 b(Readline)16 b(Killing)e(Commands)5
b Fn(:)h(:)i(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)k
-Ft(2)200 667 y(1.2.4)43 b(Readline)16 b(Argumen)o(ts)11
+Ft(3)200 667 y(1.2.4)43 b(Readline)16 b(Argumen)o(ts)11
b Fn(:)c(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)
g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)17 b Ft(3)200 722 y(1.2.5)43 b(Searc)o(hing)15
b Ft(4)200 886 y(1.3.2)43 b(Conditional)14 b(Init)h(Constructs)8
b Fn(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)
f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)15
-b Ft(12)200 941 y(1.3.3)43 b(Sample)16 b(Init)f(File)c
+b Ft(14)200 941 y(1.3.3)43 b(Sample)16 b(Init)f(File)c
Fn(:)6 b(:)h(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)18 b Ft(13)137 996 y(1.4)45
+(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)18 b Ft(15)137 996 y(1.4)45
b(Bindable)15 b(Readline)h(Commands)11 b Fn(:)6 b(:)h(:)h(:)f(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)17 b Ft(16)200 1051
+g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)17 b Ft(18)200 1051
y(1.4.1)43 b(Commands)15 b(F)l(or)g(Mo)o(ving)9 b Fn(:)d(:)h(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)16
-b Ft(16)200 1105 y(1.4.2)43 b(Commands)15 b(F)l(or)g(Manipulating)e
+b Ft(18)200 1105 y(1.4.2)43 b(Commands)15 b(F)l(or)g(Manipulating)e
(The)j(History)c Fn(:)c(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)h(:)20 b Ft(17)200 1160 y(1.4.3)43 b(Commands)15
+(:)g(:)h(:)20 b Ft(19)200 1160 y(1.4.3)43 b(Commands)15
b(F)l(or)g(Changing)f(T)l(ext)6 b Fn(:)h(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)
f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)h(:)k Ft(18)200 1215 y(1.4.4)43 b(Killing)14 b(And)i(Y)l(anking)7
+(:)h(:)k Ft(21)200 1215 y(1.4.4)43 b(Killing)14 b(And)i(Y)l(anking)7
b Fn(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)
g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)h(:)f(:)g(:)13 b Ft(19)200 1270 y(1.4.5)43 b(Sp)q(ecifying)16
+(:)h(:)f(:)g(:)13 b Ft(22)200 1270 y(1.4.5)43 b(Sp)q(ecifying)16
b(Numeric)f(Argumen)o(ts)e Fn(:)8 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)20
-b Ft(20)200 1325 y(1.4.6)43 b(Letting)15 b(Readline)h(T)o(yp)q(e)f(F)l
+b Ft(23)200 1325 y(1.4.6)43 b(Letting)15 b(Readline)h(T)o(yp)q(e)f(F)l
(or)g(Y)l(ou)c Fn(:)c(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)18
-b Ft(21)200 1379 y(1.4.7)43 b(Keyb)q(oard)16 b(Macros)6
+b Ft(23)200 1379 y(1.4.7)43 b(Keyb)q(oard)16 b(Macros)6
b Fn(:)g(:)h(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)h(:)f(:)12 b Ft(21)200 1434 y(1.4.8)43
+(:)f(:)g(:)g(:)g(:)h(:)f(:)12 b Ft(24)200 1434 y(1.4.8)43
b(Some)16 b(Miscellaneous)e(Commands)8 b Fn(:)e(:)i(:)f(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)h(:)14 b Ft(22)137 1489 y(1.5)45 b(Readline)15 b(vi)g(Mo)q(de)5
+g(:)h(:)14 b Ft(24)137 1489 y(1.5)45 b(Readline)15 b(vi)g(Mo)q(de)5
b Fn(:)j(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)
f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)12 b Ft(23)75
+(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)12 b Ft(26)75
1614 y Fr(2)67 b(Programming)22 b(with)g(GNU)g(Readline)16
b Fo(:)11 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)24
-b Fr(24)137 1683 y Ft(2.1)45 b(Basic)15 b(Beha)o(vior)d
+b Fr(27)137 1683 y Ft(2.1)45 b(Basic)15 b(Beha)o(vior)d
Fn(:)6 b(:)h(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)
f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)18
-b Ft(24)137 1738 y(2.2)45 b(Custom)14 b(F)l(unctions)9
+b Ft(27)137 1738 y(2.2)45 b(Custom)14 b(F)l(unctions)9
b Fn(:)f(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)
f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)16 b Ft(25)200
+(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)16 b Ft(28)200
1792 y(2.2.1)43 b(Readline)16 b(T)o(yp)q(edefs)9 b Fn(:)e(:)g(:)h(:)f
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g
-(:)15 b Ft(26)200 1847 y(2.2.2)43 b(W)l(riting)14 b(a)h(New)g(F)l
+(:)15 b Ft(29)200 1847 y(2.2.2)43 b(W)l(riting)14 b(a)h(New)g(F)l
(unction)d Fn(:)7 b(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-h(:)f(:)18 b Ft(26)137 1902 y(2.3)45 b(Readline)15 b(V)l(ariables)6
+h(:)f(:)18 b Ft(30)137 1902 y(2.3)45 b(Readline)15 b(V)l(ariables)6
b Fn(:)g(:)h(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)12 b Ft(27)137
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)12 b Ft(30)137
1957 y(2.4)45 b(Readline)15 b(Con)o(v)o(enience)h(F)l(unctions)11
b Fn(:)c(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)
f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)17
-b Ft(32)200 2012 y(2.4.1)43 b(Naming)15 b(a)g(F)l(unction)c
+b Ft(36)200 2012 y(2.4.1)43 b(Naming)15 b(a)g(F)l(unction)c
Fn(:)6 b(:)i(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)h(:)f(:)g(:)17 b Ft(32)200 2066 y(2.4.2)43 b(Selecting)15
+(:)g(:)h(:)f(:)g(:)17 b Ft(36)200 2066 y(2.4.2)43 b(Selecting)15
b(a)g(Keymap)5 b Fn(:)i(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)k Ft(33)200 2121 y(2.4.3)43
+g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)k Ft(36)200 2121 y(2.4.3)43
b(Binding)16 b(Keys)7 b Fn(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)14
-b Ft(33)200 2176 y(2.4.4)43 b(Asso)q(ciating)14 b(F)l(unction)h(Names)g
+b Ft(37)200 2176 y(2.4.4)43 b(Asso)q(ciating)14 b(F)l(unction)h(Names)g
(and)h(Bindings)d Fn(:)7 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)h(:)19 b Ft(35)200 2231 y(2.4.5)43 b(Allo)o(wing)14
+(:)g(:)g(:)h(:)19 b Ft(39)200 2231 y(2.4.5)43 b(Allo)o(wing)14
b(Undoing)f Fn(:)7 b(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)
g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)20 b Ft(36)200 2286
+(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)20 b Ft(40)200 2286
y(2.4.6)43 b(Redispla)o(y)5 b Fn(:)i(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)
g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)h(:)f(:)k Ft(37)200 2340 y(2.4.7)43 b(Mo)q(difying)15
+g(:)g(:)h(:)f(:)k Ft(41)200 2340 y(2.4.7)43 b(Mo)q(difying)15
b(T)l(ext)8 b Fn(:)e(:)i(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)14 b Ft(38)200
+(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)14 b Ft(43)200
2395 y(2.4.8)43 b(Character)15 b(Input)c Fn(:)d(:)f(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)17
-b Ft(39)200 2450 y(2.4.9)43 b(T)l(erminal)15 b(Managemen)o(t)8
+b Ft(43)200 2450 y(2.4.9)43 b(T)l(erminal)15 b(Managemen)o(t)8
b Fn(:)e(:)i(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)15 b Ft(39)200 2505 y(2.4.10)43 b(Utilit)o(y)13
+(:)g(:)15 b Ft(44)200 2505 y(2.4.10)43 b(Utilit)o(y)13
b(F)l(unctions)f Fn(:)7 b(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)18 b Ft(40)200
+g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)18 b Ft(45)200
2560 y(2.4.11)43 b(Miscellaneous)14 b(F)l(unctions)d
Fn(:)d(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)18
-b Ft(41)200 2614 y(2.4.12)43 b(Alternate)15 b(In)o(terface)d
+b Ft(46)200 2614 y(2.4.12)43 b(Alternate)15 b(In)o(terface)d
Fn(:)c(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)h(:)f(:)19 b Ft(42)200 2669 y(2.4.13)43 b(A)15 b(Readline)h
+g(:)h(:)f(:)19 b Ft(47)200 2669 y(2.4.13)43 b(A)15 b(Readline)h
(Example)6 b Fn(:)h(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)h(:)k Ft(43)p eop end
+f(:)g(:)g(:)g(:)h(:)k Ft(48)p eop end
%%Page: -2 4
TeXDict begin -2 3 bop 1850 -58 a Ft(ii)200 42 y(2.4.14)43
b(Alternate)15 b(In)o(terface)g(Example)9 b Fn(:)e(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)16 b Ft(44)137 96 y(2.5)45 b(Readline)15
+g(:)h(:)f(:)g(:)g(:)16 b Ft(50)137 96 y(2.5)45 b(Readline)15
b(Signal)g(Handling)9 b Fn(:)d(:)i(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)15 b Ft(47)137 151
+g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)15 b Ft(52)137 151
y(2.6)45 b(Custom)14 b(Completers)f Fn(:)7 b(:)g(:)g(:)h(:)f(:)g(:)g(:)
g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-20 b Ft(49)200 206 y(2.6.1)43 b(Ho)o(w)15 b(Completing)f(W)l(orks)6
+20 b Ft(55)200 206 y(2.6.1)43 b(Ho)o(w)15 b(Completing)f(W)l(orks)6
b Fn(:)g(:)h(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f
-(:)12 b Ft(50)200 261 y(2.6.2)43 b(Completion)14 b(F)l(unctions)g
+(:)12 b Ft(55)200 261 y(2.6.2)43 b(Completion)14 b(F)l(unctions)g
Fn(:)7 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h
-(:)f(:)20 b Ft(50)200 315 y(2.6.3)43 b(Completion)14
+(:)f(:)20 b Ft(56)200 315 y(2.6.3)43 b(Completion)14
b(V)l(ariables)9 b Fn(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)h(:)15 b Ft(52)200 370 y(2.6.4)43
+g(:)h(:)f(:)g(:)g(:)g(:)h(:)15 b Ft(57)200 370 y(2.6.4)43
b(A)16 b(Short)f(Completion)e(Example)7 b Fn(:)h(:)f(:)g(:)g(:)g(:)h(:)
f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)14 b Ft(56)75 496 y Fr(App)r(endix)23
+(:)h(:)f(:)g(:)g(:)14 b Ft(63)75 496 y Fr(App)r(endix)23
b(A)60 b(GNU)18 b(F)-6 b(ree)20 b(Do)r(cumen)n(tation)e(License)12
-b Fo(:)e(:)17 b Fr(65)75 635 y(Concept)22 b(Index)d Fo(:)10
+b Fo(:)e(:)17 b Fr(72)75 635 y(Concept)22 b(Index)d Fo(:)10
b(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)
-g(:)25 b Fr(73)75 774 y(F)-6 b(unction)24 b(and)e(V)-6
+g(:)25 b Fr(80)75 774 y(F)-6 b(unction)24 b(and)e(V)-6
b(ariable)22 b(Index)10 b Fo(:)h(:)g(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)17 b Fr(74)p
+h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)17 b Fr(81)p
eop end
%%Page: 1 5
TeXDict begin 1 4 bop 1852 -58 a Ft(1)75 149 y Fp(1)41
-b(Command)28 b(Line)f(Editing)75 264 y Ft(This)15 b(c)o(hapter)g
+b(Command)28 b(Line)f(Editing)75 299 y Ft(This)15 b(c)o(hapter)g
(describ)q(es)h(the)f(basic)g(features)g(of)f(the)i Fm(gnu)f
-Ft(command)g(line)g(editing)f(in)o(terface.)75 383 y
+Ft(command)g(line)g(editing)f(in)o(terface.)75 435 y
Fr(1.1)33 b(In)n(tro)r(duction)23 b(to)f(Line)h(Editing)75
-463 y Ft(The)15 b(follo)o(wing)e(paragraphs)i(describ)q(e)h(the)f
+515 y Ft(The)15 b(follo)o(wing)e(paragraphs)i(describ)q(e)h(the)f
(notation)f(used)h(to)g(represen)o(t)g(k)o(eystrok)o(es.)137
-529 y(The)k(text)e Fl(C-k)h Ft(is)f(read)i(as)e(`Con)o(trol-K')f(and)j
+593 y(The)k(text)e Fl(C-k)h Ft(is)f(read)i(as)e(`Con)o(trol-K')f(and)j
(describ)q(es)f(the)h(c)o(haracter)e(pro)q(duced)i(when)g(the)f
-Fs(k)75 584 y Ft(k)o(ey)d(is)g(pressed)h(while)e(the)h(Con)o(trol)f(k)o
-(ey)h(is)g(depressed.)137 651 y(The)h(text)g Fl(M-k)f
+Fs(k)75 648 y Ft(k)o(ey)d(is)g(pressed)h(while)e(the)h(Con)o(trol)f(k)o
+(ey)h(is)g(depressed.)137 726 y(The)h(text)g Fl(M-k)f
Ft(is)h(read)g(as)f(`Meta-K')g(and)h(describ)q(es)h(the)f(c)o(haracter)
-f(pro)q(duced)i(when)g(the)f(Meta)75 705 y(k)o(ey)g(\(if)g(y)o(ou)g(ha)
-o(v)o(e)g(one\))h(is)f(depressed,)h(and)g(the)g Fs(k)f
-Ft(k)o(ey)g(is)g(pressed.)25 b(The)17 b(Meta)e(k)o(ey)i(is)f(lab)q
-(eled)g Fs(ALT)75 760 y Ft(on)f(man)o(y)f(k)o(eyb)q(oards.)20
-b(On)15 b(k)o(eyb)q(oards)g(with)f(t)o(w)o(o)f(k)o(eys)i(lab)q(eled)g
-Fs(ALT)f Ft(\(usually)g(to)g(either)h(side)f(of)h(the)75
-815 y(space)g(bar\),)f(the)h Fs(ALT)g Ft(on)g(the)g(left)f(side)h(is)g
-(generally)f(set)h(to)f(w)o(ork)g(as)h(a)f(Meta)g(k)o(ey)l(.)20
-b(The)c Fs(ALT)e Ft(k)o(ey)h(on)75 870 y(the)f(righ)o(t)e(ma)o(y)h
-(also)g(b)q(e)h(con\014gured)g(to)f(w)o(ork)g(as)g(a)g(Meta)g(k)o(ey)g
-(or)g(ma)o(y)g(b)q(e)i(con\014gured)f(as)f(some)g(other)75
-925 y(mo)q(di\014er,)i(suc)o(h)g(as)g(a)g(Comp)q(ose)g(k)o(ey)g(for)g
-(t)o(yping)f(accen)o(ted)i(c)o(haracters.)137 991 y(If)d(y)o(ou)f(do)g
-(not)g(ha)o(v)o(e)f(a)h(Meta)g(or)f Fs(ALT)h Ft(k)o(ey)l(,)h(or)e
-(another)h(k)o(ey)g(w)o(orking)f(as)h(a)g(Meta)f(k)o(ey)l(,)i(the)f
-(iden)o(tical)75 1046 y(k)o(eystrok)o(e)h(can)i(b)q(e)f(generated)h(b)o
-(y)f(t)o(yping)f Fs(ESC)h Fk(\014rst)p Ft(,)f(and)i(then)f(t)o(yping)g
-Fs(k)p Ft(.)19 b(Either)14 b(pro)q(cess)g(is)g(kno)o(wn)75
-1101 y(as)h Fj(metafying)j Ft(the)d Fs(k)g Ft(k)o(ey)l(.)137
-1168 y(The)21 b(text)e Fl(M-C-k)h Ft(is)g(read)g(as)f(`Meta-Con)o
-(trol-k')f(and)i(describ)q(es)h(the)f(c)o(haracter)g(pro)q(duced)h(b)o
-(y)75 1222 y Fj(metafying)d Fl(C-k)p Ft(.)137 1289 y(In)h(addition,)e
-(sev)o(eral)h(k)o(eys)f(ha)o(v)o(e)h(their)g(o)o(wn)f(names.)28
-b(Sp)q(eci\014cally)l(,)19 b Fs(DEL)p Ft(,)f Fs(ESC)p
-Ft(,)g Fs(LFD)p Ft(,)g Fs(SPC)p Ft(,)g Fs(RET)p Ft(,)75
-1344 y(and)f Fs(TAB)g Ft(all)f(stand)h(for)g(themselv)o(es)g(when)h
-(seen)f(in)g(this)g(text,)g(or)g(in)g(an)g(init)f(\014le)i(\(see)f
-(Section)g(1.3)75 1399 y([Readline)e(Init)g(File],)e(page)h(4\).)20
-b(If)15 b(y)o(our)f(k)o(eyb)q(oard)h(lac)o(ks)f(a)g Fs(LFD)h
-Ft(k)o(ey)l(,)f(t)o(yping)g Fs(C-j)h Ft(will)e(pro)q(duce)j(the)75
-1453 y(desired)f(c)o(haracter.)20 b(The)15 b Fs(RET)g
+f(pro)q(duced)i(when)g(the)f(Meta)75 780 y(k)o(ey)f(\(if)g(y)o(ou)h(ha)
+o(v)o(e)f(one\))g(is)g(depressed,)i(and)f(the)f Fs(k)h
+Ft(k)o(ey)f(is)g(pressed)h(\(a)f Fk(meta)g(c)o(haracter)s
+Ft(\).)21 b(The)16 b(Meta)75 835 y(k)o(ey)h(is)g(lab)q(eled)g
+Fs(ALT)f Ft(on)h(man)o(y)g(k)o(eyb)q(oards.)25 b(On)18
+b(k)o(eyb)q(oards)f(with)f(t)o(w)o(o)g(k)o(eys)h(lab)q(eled)g
+Fs(ALT)g Ft(\(usually)75 890 y(to)e(either)h(side)f(of)h(the)g(space)g
+(bar\),)f(the)g Fs(ALT)h Ft(on)f(the)h(left)f(side)h(is)g(generally)e
+(set)i(to)f(w)o(ork)g(as)g(a)h(Meta)75 945 y(k)o(ey)l(.)28
+b(The)18 b Fs(ALT)g Ft(k)o(ey)g(on)g(the)g(righ)o(t)f(ma)o(y)g(also)g
+(b)q(e)h(con\014gured)h(to)e(w)o(ork)g(as)h(a)g(Meta)f(k)o(ey)h(or)f
+(ma)o(y)g(b)q(e)75 1000 y(con\014gured)f(as)f(some)g(other)f(mo)q
+(di\014er,)h(suc)o(h)h(as)e(a)h(Comp)q(ose)g(k)o(ey)g(for)g(t)o(yping)f
+(accen)o(ted)i(c)o(haracters.)137 1078 y(On)j(some)f(k)o(eyb)q(oards,)h
+(the)f(Meta)g(k)o(ey)g(mo)q(di\014er)h(pro)q(duces)g(meta)f(c)o
+(haracters)f(with)h(the)h(eigh)o(th)75 1132 y(bit)13
+b(\(0200\))e(set.)19 b(Y)l(ou)13 b(can)g(use)h(the)f
+Fs(enable-meta-key)e Ft(v)m(ariable)h(to)h(con)o(trol)f(whether)h(or)g
+(not)f(it)h(do)q(es)75 1187 y(this,)g(if)g(the)h(k)o(eyb)q(oard)g(allo)
+o(ws)e(it.)19 b(On)14 b(man)o(y)g(others,)f(the)h(terminal)e(or)i
+(terminal)e(em)o(ulator)h(con)o(v)o(erts)75 1242 y(the)h(meta\014ed)h
+(k)o(ey)f(to)g(a)g(k)o(ey)g(sequence)i(b)q(eginning)e(with)g
+Fs(ESC)g Ft(as)g(describ)q(ed)h(in)f(the)h(next)f(paragraph.)137
+1320 y(If)k(y)o(ou)e(do)h(not)g(ha)o(v)o(e)g(a)f(Meta)h(or)f
+Fs(ALT)h Ft(k)o(ey)l(,)g(or)g(another)f(k)o(ey)h(w)o(orking)f(as)h(a)g
+(Meta)f(k)o(ey)l(,)h(y)o(ou)g(can)75 1375 y(generally)c(ac)o(hiev)o(e)g
+(the)g(latter)f(e\013ect)i(b)o(y)f(t)o(yping)g Fs(ESC)g
+Fj(\014rst)p Ft(,)g(and)g(then)h(t)o(yping)f Fs(k)p Ft(.)19
+b(The)14 b Fs(ESC)f Ft(c)o(haracter)75 1430 y(is)i(kno)o(wn)g(as)f(the)
+i Fk(meta)e(pre\014x)s Ft(\).)137 1508 y(Either)h(pro)q(cess)g(is)g
+(kno)o(wn)g(as)g Fk(metafying)j Ft(the)d Fs(k)g Ft(k)o(ey)l(.)137
+1586 y(If)e(y)o(our)f(Meta)g(k)o(ey)h(pro)q(duces)g(a)g(k)o(ey)f
+(sequence)i(with)e(the)h Fs(ESC)f Ft(meta)g(pre\014x,)h(y)o(ou)g(can)g
+(mak)o(e)f Fl(M-key)75 1640 y Ft(k)o(ey)20 b(bindings)f(y)o(ou)h(sp)q
+(ecify)g(\(see)f Fs(Key)c(Bindings)k Ft(in)g(Section)h(1.3.1)e
+([Readline)i(Init)f(File)g(Syn)o(tax],)75 1695 y(page)c(4\))g(do)g(the)
+g(same)g(thing)g(b)o(y)g(setting)f(the)h Fs(force-meta-prefix)e
+Ft(v)m(ariable.)137 1773 y(The)21 b(text)e Fl(M-C-k)h
+Ft(is)g(read)g(as)f(`Meta-Con)o(trol-k')f(and)i(describ)q(es)h(the)f(c)
+o(haracter)g(pro)q(duced)h(b)o(y)75 1828 y(metafying)14
+b Fl(C-k)p Ft(.)137 1906 y(In)19 b(addition,)e(sev)o(eral)h(k)o(eys)f
+(ha)o(v)o(e)h(their)g(o)o(wn)f(names.)28 b(Sp)q(eci\014cally)l(,)19
+b Fs(DEL)p Ft(,)f Fs(ESC)p Ft(,)g Fs(LFD)p Ft(,)g Fs(SPC)p
+Ft(,)g Fs(RET)p Ft(,)75 1961 y(and)f Fs(TAB)g Ft(all)f(stand)h(for)g
+(themselv)o(es)g(when)h(seen)f(in)g(this)g(text,)g(or)g(in)g(an)g(init)
+f(\014le)i(\(see)f(Section)g(1.3)75 2015 y([Readline)f(Init)g(File],)f
+(page)h(4\).)22 b(If)17 b(y)o(our)f(k)o(eyb)q(oard)g(lac)o(ks)f(a)h
+Fs(LFD)g Ft(k)o(ey)l(,)g(t)o(yping)f Fs(C-j)h Ft(will)f(output)h(the)75
+2070 y(appropriate)e(c)o(haracter.)19 b(The)d Fs(RET)f
Ft(k)o(ey)g(ma)o(y)f(b)q(e)i(lab)q(eled)f Fs(Return)g
Ft(or)f Fs(Enter)h Ft(on)g(some)g(k)o(eyb)q(oards.)75
-1573 y Fr(1.2)33 b(Readline)21 b(In)n(teraction)75 1652
+2207 y Fr(1.2)33 b(Readline)21 b(In)n(teraction)75 2286
y Ft(Often)c(during)f(an)g(in)o(teractiv)o(e)f(session)g(y)o(ou)h(t)o
(yp)q(e)h(in)f(a)g(long)f(line)h(of)g(text,)g(only)g(to)f(notice)h
-(that)g(the)75 1707 y(\014rst)g(w)o(ord)f(on)h(the)h(line)f(is)f(missp)
+(that)g(the)75 2341 y(\014rst)g(w)o(ord)f(on)h(the)h(line)f(is)f(missp)
q(elled.)23 b(The)16 b(Readline)h(library)e(giv)o(es)g(y)o(ou)h(a)g
-(set)g(of)g(commands)g(for)75 1762 y(manipulating)d(the)i(text)g(as)f
+(set)g(of)g(commands)g(for)75 2396 y(manipulating)d(the)i(text)g(as)f
(y)o(ou)h(t)o(yp)q(e)g(it)f(in,)g(allo)o(wing)f(y)o(ou)i(to)f(just)h
(\014x)g(y)o(our)f(t)o(yp)q(o,)g(and)h(not)g(forcing)75
-1817 y(y)o(ou)f(to)f(ret)o(yp)q(e)h(the)g(ma)s(jorit)o(y)e(of)i(the)g
+2451 y(y)o(ou)f(to)f(ret)o(yp)q(e)h(the)g(ma)s(jorit)o(y)e(of)i(the)g
(line.)19 b(Using)14 b(these)g(editing)f(commands,)h(y)o(ou)g(mo)o(v)o
-(e)f(the)h(cursor)75 1872 y(to)i(the)i(place)f(that)f(needs)i
+(e)f(the)h(cursor)75 2506 y(to)i(the)i(place)f(that)f(needs)i
(correction,)f(and)g(delete)g(or)g(insert)f(the)i(text)e(of)h(the)g
-(corrections.)25 b(Then,)75 1926 y(when)13 b(y)o(ou)f(are)g
+(corrections.)25 b(Then,)75 2560 y(when)13 b(y)o(ou)f(are)g
(satis\014ed)g(with)g(the)h(line,)f(y)o(ou)g(simply)g(press)g
Fs(RET)p Ft(.)19 b(Y)l(ou)12 b(do)h(not)f(ha)o(v)o(e)g(to)g(b)q(e)h(at)
-f(the)g(end)75 1981 y(of)k(the)h(line)f(to)g(press)h
+f(the)g(end)75 2615 y(of)k(the)h(line)f(to)g(press)h
Fs(RET)p Ft(;)g(the)f(en)o(tire)g(line)h(is)f(accepted)h(regardless)f
-(of)g(the)h(lo)q(cation)e(of)i(the)f(cursor)75 2036 y(within)e(the)i
-(line.)75 2134 y Fi(1.2.1)30 b(Readline)20 b(Bare)g(Essen)n(tials)75
-2208 y Ft(In)d(order)e(to)h(en)o(ter)g(c)o(haracters)f(in)o(to)g(the)h
-(line,)g(simply)f(t)o(yp)q(e)h(them.)23 b(The)16 b(t)o(yp)q(ed)g(c)o
-(haracter)g(app)q(ears)75 2263 y(where)g(the)h(cursor)f(w)o(as,)f(and)h
-(then)h(the)f(cursor)g(mo)o(v)o(es)g(one)g(space)g(to)g(the)g(righ)o
-(t.)22 b(If)17 b(y)o(ou)f(mist)o(yp)q(e)f(a)75 2317 y(c)o(haracter,)f
-(y)o(ou)h(can)g(use)h(y)o(our)f(erase)g(c)o(haracter)f(to)h(bac)o(k)g
-(up)g(and)h(delete)f(the)g(mist)o(yp)q(ed)g(c)o(haracter.)137
-2384 y(Sometimes)g(y)o(ou)g(ma)o(y)g(mist)o(yp)q(e)g(a)g(c)o(haracter,)
-f(and)i(not)f(notice)g(the)g(error)g(un)o(til)g(y)o(ou)g(ha)o(v)o(e)g
-(t)o(yp)q(ed)75 2439 y(sev)o(eral)f(other)g(c)o(haracters.)19
+(of)g(the)h(lo)q(cation)e(of)i(the)f(cursor)75 2670 y(within)e(the)i
+(line.)p eop end
+%%Page: 2 6
+TeXDict begin 2 5 bop 75 -58 a Ft(Chapter)15 b(1:)k(Command)c(Line)h
+(Editing)1075 b(2)75 149 y Fi(1.2.1)30 b(Readline)20
+b(Bare)g(Essen)n(tials)75 223 y Ft(In)d(order)e(to)h(en)o(ter)g(c)o
+(haracters)f(in)o(to)g(the)h(line,)g(simply)f(t)o(yp)q(e)h(them.)23
+b(The)16 b(t)o(yp)q(ed)g(c)o(haracter)g(app)q(ears)75
+278 y(where)g(the)h(cursor)f(w)o(as,)f(and)h(then)h(the)f(cursor)g(mo)o
+(v)o(es)g(one)g(space)g(to)g(the)g(righ)o(t.)22 b(If)17
+b(y)o(ou)f(mist)o(yp)q(e)f(a)75 333 y(c)o(haracter,)f(y)o(ou)h(can)g
+(use)h(y)o(our)f(erase)g(c)o(haracter)f(to)h(bac)o(k)g(up)g(and)h
+(delete)f(the)g(mist)o(yp)q(ed)g(c)o(haracter.)137 406
+y(Sometimes)g(y)o(ou)g(ma)o(y)g(mist)o(yp)q(e)g(a)g(c)o(haracter,)f
+(and)i(not)f(notice)g(the)g(error)g(un)o(til)g(y)o(ou)g(ha)o(v)o(e)g(t)
+o(yp)q(ed)75 461 y(sev)o(eral)f(other)g(c)o(haracters.)19
b(In)c(that)e(case,)i(y)o(ou)f(can)g(t)o(yp)q(e)h Fl(C-b)f
Ft(to)g(mo)o(v)o(e)f(the)i(cursor)f(to)g(the)g(left,)g(and)75
-2494 y(then)i(correct)e(y)o(our)h(mistak)o(e.)k(Afterw)o(ards,)13
+516 y(then)i(correct)e(y)o(our)h(mistak)o(e.)k(Afterw)o(ards,)13
b(y)o(ou)i(can)g(mo)o(v)o(e)g(the)g(cursor)g(to)g(the)g(righ)o(t)f
-(with)g Fl(C-f)p Ft(.)137 2560 y(When)j(y)o(ou)f(add)g(text)g(in)g(the)
-h(middle)f(of)g(a)f(line,)h(y)o(ou)g(will)f(notice)h(that)g(c)o
-(haracters)f(to)h(the)g(righ)o(t)75 2615 y(of)e(the)g(cursor)g(are)g
+(with)g Fl(C-f)p Ft(.)137 590 y(When)j(y)o(ou)f(add)g(text)g(in)g(the)h
+(middle)f(of)g(a)f(line,)h(y)o(ou)g(will)f(notice)h(that)g(c)o
+(haracters)f(to)h(the)g(righ)o(t)75 644 y(of)e(the)g(cursor)g(are)g
(`pushed)h(o)o(v)o(er')f(to)f(mak)o(e)h(ro)q(om)g(for)f(the)i(text)f
(that)f(y)o(ou)h(ha)o(v)o(e)g(inserted.)20 b(Lik)o(ewise,)75
-2670 y(when)f(y)o(ou)g(delete)g(text)f(b)q(ehind)i(the)f(cursor,)g(c)o
-(haracters)f(to)g(the)h(righ)o(t)e(of)h(the)h(cursor)g(are)f(`pulled)p
-eop end
-%%Page: 2 6
-TeXDict begin 2 5 bop 75 -58 a Ft(Chapter)15 b(1:)k(Command)c(Line)h
-(Editing)1075 b(2)75 149 y(bac)o(k')11 b(to)g(\014ll)f(in)i(the)f
-(blank)g(space)h(created)f(b)o(y)h(the)f(remo)o(v)m(al)f(of)h(the)h
-(text.)18 b(A)11 b(list)f(of)h(the)h(bare)f(essen)o(tials)75
-204 y(for)k(editing)f(the)h(text)g(of)g(an)g(input)g(line)g(follo)o
-(ws.)75 285 y Fl(C-b)168 b Ft(Mo)o(v)o(e)14 b(bac)o(k)h(one)h(c)o
-(haracter.)75 366 y Fl(C-f)168 b Ft(Mo)o(v)o(e)14 b(forw)o(ard)g(one)h
-(c)o(haracter.)75 447 y Fs(DEL)g Ft(or)f Fs(Backspace)315
-501 y Ft(Delete)h(the)g(c)o(haracter)g(to)f(the)h(left)g(of)g(the)g
-(cursor.)75 582 y Fl(C-d)168 b Ft(Delete)15 b(the)g(c)o(haracter)g
-(underneath)h(the)f(cursor.)75 663 y(Prin)o(ting)f(c)o(haracters)315
-717 y(Insert)h(the)h(c)o(haracter)e(in)o(to)g(the)i(line)f(at)f(the)h
-(cursor.)75 798 y Fl(C-_)g Ft(or)f Fl(C-x)h(C-u)315 853
-y Ft(Undo)i(the)g(last)e(editing)h(command.)25 b(Y)l(ou)17
+699 y(when)f(y)o(ou)g(delete)g(text)f(b)q(ehind)i(the)f(cursor,)g(c)o
+(haracters)f(to)g(the)h(righ)o(t)e(of)h(the)h(cursor)g(are)f(`pulled)75
+754 y(bac)o(k')i(to)g(\014ll)f(in)i(the)f(blank)g(space)h(created)f(b)o
+(y)h(the)f(remo)o(v)m(al)f(of)h(the)h(text.)35 b(These)21
+b(are)f(the)g(bare)75 809 y(essen)o(tials)14 b(for)h(editing)f(the)h
+(text)g(of)g(an)g(input)g(line:)75 898 y Fl(C-b)168 b
+Ft(Mo)o(v)o(e)14 b(bac)o(k)h(one)h(c)o(haracter.)75 984
+y Fl(C-f)168 b Ft(Mo)o(v)o(e)14 b(forw)o(ard)g(one)h(c)o(haracter.)75
+1071 y Fs(DEL)g Ft(or)f Fs(Backspace)315 1125 y Ft(Delete)h(the)g(c)o
+(haracter)g(to)f(the)h(left)g(of)g(the)g(cursor.)75 1212
+y Fl(C-d)168 b Ft(Delete)15 b(the)g(c)o(haracter)g(underneath)h(the)f
+(cursor.)75 1298 y(Prin)o(ting)f(c)o(haracters)315 1353
+y(Insert)h(the)h(c)o(haracter)e(in)o(to)g(the)i(line)f(at)f(the)h
+(cursor.)75 1439 y Fl(C-_)g Ft(or)f Fl(C-x)h(C-u)315
+1494 y Ft(Undo)i(the)g(last)e(editing)h(command.)25 b(Y)l(ou)17
b(can)g(undo)g(all)e(the)i(w)o(a)o(y)f(bac)o(k)h(to)f(an)g(empt)o(y)315
-908 y(line.)75 989 y(\(Dep)q(ending)f(on)g(y)o(our)f(con\014guration,)g
-(the)h Fs(Backspace)e Ft(k)o(ey)i(b)q(e)g(set)g(to)f(delete)h(the)g(c)o
-(haracter)f(to)g(the)75 1043 y(left)j(of)h(the)g(cursor)g(and)g(the)h
-Fs(DEL)e Ft(k)o(ey)h(set)g(to)g(delete)g(the)g(c)o(haracter)g
-(underneath)g(the)h(cursor,)f(lik)o(e)75 1098 y Fl(C-d)p
-Ft(,)c(rather)h(than)g(the)g(c)o(haracter)g(to)f(the)i(left)e(of)h(the)
-g(cursor.\))75 1199 y Fi(1.2.2)30 b(Readline)20 b(Mo)n(v)n(emen)n(t)i
-(Commands)75 1272 y Ft(The)14 b(ab)q(o)o(v)o(e)g(table)f(describ)q(es)h
-(the)g(most)f(basic)h(k)o(eystrok)o(es)f(that)g(y)o(ou)g(need)i(in)f
-(order)f(to)g(do)h(editing)f(of)75 1327 y(the)k(input)f(line.)23
-b(F)l(or)16 b(y)o(our)g(con)o(v)o(enience,)h(man)o(y)f(other)g
-(commands)h(ha)o(v)o(e)f(b)q(een)h(added)h(in)e(addition)75
-1382 y(to)h Fl(C-b)p Ft(,)g Fl(C-f)p Ft(,)g Fl(C-d)p
-Ft(,)g(and)h Fs(DEL)p Ft(.)26 b(Here)18 b(are)f(some)g(commands)h(for)e
-(mo)o(ving)h(more)g(rapidly)g(ab)q(out)g(the)75 1437
-y(line.)75 1518 y Fl(C-a)168 b Ft(Mo)o(v)o(e)14 b(to)h(the)g(start)f
-(of)h(the)g(line.)75 1598 y Fl(C-e)168 b Ft(Mo)o(v)o(e)14
-b(to)h(the)g(end)h(of)f(the)g(line.)75 1679 y Fl(M-f)168
-b Ft(Mo)o(v)o(e)14 b(forw)o(ard)g(a)h(w)o(ord,)f(where)i(a)e(w)o(ord)h
-(is)g(comp)q(osed)g(of)g(letters)f(and)i(digits.)75 1760
-y Fl(M-b)168 b Ft(Mo)o(v)o(e)14 b(bac)o(kw)o(ard)h(a)g(w)o(ord.)75
-1840 y Fl(C-l)168 b Ft(Clear)14 b(the)i(screen,)f(reprin)o(ting)f(the)h
-(curren)o(t)g(line)g(at)g(the)g(top.)137 1921 y(Notice)d(ho)o(w)g
+1548 y(line.)75 1638 y(Dep)q(ending)h(on)f(y)o(our)g(con\014guration,)g
+(the)g Fs(Backspace)f Ft(k)o(ey)i(migh)o(t)e(b)q(e)i(set)f(to)g(delete)
+g(the)h(c)o(haracter)75 1693 y(to)d(the)h(left)g(of)f(the)i(cursor)e
+(and)h(the)h Fs(DEL)e Ft(k)o(ey)h(set)g(to)f(delete)h(the)g(c)o
+(haracter)g(underneath)h(the)f(cursor,)75 1747 y(lik)o(e)f
+Fl(C-d)p Ft(,)h(rather)f(than)h(the)h(c)o(haracter)e(to)h(the)g(left)g
+(of)f(the)i(cursor.)75 1854 y Fi(1.2.2)30 b(Readline)20
+b(Mo)n(v)n(emen)n(t)i(Commands)75 1927 y Ft(The)17 b(ab)q(o)o(v)o(e)g
+(table)g(describ)q(es)h(the)f(most)f(basic)h(k)o(eystrok)o(es)f(that)h
+(y)o(ou)g(need)h(in)f(order)g(to)f(do)i(editing)75 1982
+y(of)c(the)h(input)g(line.)20 b(F)l(or)14 b(y)o(our)g(con)o(v)o
+(enience,)h(man)o(y)g(other)f(commands)h(are)f(a)o(v)m(ailable)g(in)h
+(addition)f(to)75 2037 y Fl(C-b)p Ft(,)g Fl(C-f)p Ft(,)f
+Fl(C-d)p Ft(,)h(and)g Fs(DEL)p Ft(.)19 b(Here)c(are)e(some)h(commands)g
+(for)g(mo)o(ving)f(more)h(rapidly)f(within)g(the)i(line.)75
+2126 y Fl(C-a)168 b Ft(Mo)o(v)o(e)14 b(to)h(the)g(start)f(of)h(the)g
+(line.)75 2212 y Fl(C-e)168 b Ft(Mo)o(v)o(e)14 b(to)h(the)g(end)h(of)f
+(the)g(line.)75 2299 y Fl(M-f)168 b Ft(Mo)o(v)o(e)14
+b(forw)o(ard)g(a)h(w)o(ord,)f(where)i(a)e(w)o(ord)h(is)g(comp)q(osed)g
+(of)g(letters)f(and)i(digits.)75 2385 y Fl(M-b)168 b
+Ft(Mo)o(v)o(e)14 b(bac)o(kw)o(ard)h(a)g(w)o(ord.)75 2471
+y Fl(C-l)168 b Ft(Clear)14 b(the)i(screen,)f(reprin)o(ting)f(the)h
+(curren)o(t)g(line)g(at)g(the)g(top.)137 2560 y(Notice)d(ho)o(w)g
Fl(C-f)g Ft(mo)o(v)o(es)f(forw)o(ard)g(a)h(c)o(haracter,)g(while)g
Fl(M-f)g Ft(mo)o(v)o(es)f(forw)o(ard)g(a)h(w)o(ord.)18
-b(It)13 b(is)f(a)g(lo)q(ose)75 1976 y(con)o(v)o(en)o(tion)i(that)g(con)
+b(It)13 b(is)f(a)g(lo)q(ose)75 2615 y(con)o(v)o(en)o(tion)i(that)g(con)
o(trol)g(k)o(eystrok)o(es)g(op)q(erate)h(on)f(c)o(haracters)h(while)f
-(meta)g(k)o(eystrok)o(es)g(op)q(erate)h(on)75 2031 y(w)o(ords.)75
-2131 y Fi(1.2.3)30 b(Readline)20 b(Killing)h(Commands)75
-2205 y Fj(Killing)16 b Ft(text)d(means)g(to)g(delete)g(the)g(text)g
-(from)g(the)g(line,)g(but)h(to)e(sa)o(v)o(e)h(it)f(a)o(w)o(a)o(y)g(for)
-h(later)f(use,)i(usually)75 2260 y(b)o(y)f Fj(y)o(anking)k
-Ft(\(re-inserting\))12 b(it)h(bac)o(k)g(in)o(to)g(the)g(line.)19
-b(\(`Cut')12 b(and)i(`paste')e(are)h(more)h(recen)o(t)f(jargon)g(for)75
-2314 y(`kill')g(and)j(`y)o(ank'.\))137 2383 y(If)g(the)f(description)f
-(for)h(a)g(command)g(sa)o(ys)f(that)h(it)f(`kills')f(text,)h(then)i(y)o
-(ou)f(can)g(b)q(e)h(sure)f(that)f(y)o(ou)75 2437 y(can)h(get)g(the)g
-(text)g(bac)o(k)g(in)g(a)g(di\013eren)o(t)f(\(or)h(the)g(same\))g
-(place)g(later.)137 2506 y(When)d(y)o(ou)g(use)g(a)f(kill)f(command,)i
-(the)g(text)f(is)g(sa)o(v)o(ed)g(in)h(a)f Fj(kill-ring)p
-Ft(.)17 b(An)o(y)12 b(n)o(um)o(b)q(er)g(of)f(consecutiv)o(e)75
-2560 y(kills)j(sa)o(v)o(e)h(all)f(of)h(the)h(killed)f(text)g(together,)
-f(so)h(that)g(when)h(y)o(ou)f(y)o(ank)g(it)g(bac)o(k,)g(y)o(ou)g(get)g
-(it)g(all.)20 b(The)75 2615 y(kill)15 b(ring)h(is)f(not)h(line)g(sp)q
-(eci\014c;)h(the)f(text)g(that)f(y)o(ou)h(killed)g(on)g(a)g(previously)
-f(t)o(yp)q(ed)i(line)f(is)f(a)o(v)m(ailable)75 2670 y(to)g(b)q(e)g(y)o
-(ank)o(ed)g(bac)o(k)h(later,)d(when)j(y)o(ou)f(are)g(t)o(yping)f
-(another)h(line.)p eop end
+(meta)g(k)o(eystrok)o(es)g(op)q(erate)h(on)75 2670 y(w)o(ords.)p
+eop end
%%Page: 3 7
TeXDict begin 3 6 bop 75 -58 a Ft(Chapter)15 b(1:)k(Command)c(Line)h
-(Editing)1075 b(3)137 149 y(Here)16 b(is)e(the)i(list)e(of)g(commands)h
-(for)g(killing)f(text.)75 228 y Fl(C-k)168 b Ft(Kill)14
-b(the)i(text)e(from)h(the)g(curren)o(t)g(cursor)g(p)q(osition)f(to)h
-(the)g(end)h(of)f(the)g(line.)75 307 y Fl(M-d)168 b Ft(Kill)12
-b(from)h(the)g(cursor)g(to)f(the)i(end)g(of)e(the)i(curren)o(t)f(w)o
-(ord,)f(or,)h(if)f(b)q(et)o(w)o(een)i(w)o(ords,)e(to)h(the)315
-362 y(end)j(of)f(the)g(next)g(w)o(ord.)k(W)l(ord)c(b)q(oundaries)h(are)
-f(the)g(same)g(as)g(those)f(used)i(b)o(y)f Fl(M-f)p Ft(.)75
-440 y Fl(M-DEL)120 b Ft(Kill)14 b(from)h(the)g(cursor)g(the)h(start)e
-(of)h(the)g(curren)o(t)g(w)o(ord,)f(or,)h(if)f(b)q(et)o(w)o(een)i(w)o
-(ords,)e(to)h(the)315 495 y(start)j(of)h(the)g(previous)g(w)o(ord.)31
-b(W)l(ord)19 b(b)q(oundaries)g(are)g(the)h(same)e(as)h(those)g(used)h
-(b)o(y)315 550 y Fl(M-b)p Ft(.)75 629 y Fl(C-w)168 b
-Ft(Kill)17 b(from)f(the)i(cursor)f(to)g(the)h(previous)f(whitespace.)27
-b(This)17 b(is)g(di\013eren)o(t)f(than)i Fl(M-DEL)315
-684 y Ft(b)q(ecause)e(the)f(w)o(ord)g(b)q(oundaries)g(di\013er.)137
-762 y(Here)21 b(is)g(ho)o(w)f(to)g Fj(y)o(ank)j Ft(the)e(text)f(bac)o
-(k)h(in)o(to)f(the)g(line.)37 b(Y)l(anking)20 b(means)h(to)f(cop)o(y)h
-(the)g(most-)75 817 y(recen)o(tly-killed)14 b(text)h(from)f(the)i(kill)
-e(bu\013er.)75 896 y Fl(C-y)168 b Ft(Y)l(ank)15 b(the)h(most)e(recen)o
-(tly)h(killed)f(text)h(bac)o(k)g(in)o(to)f(the)i(bu\013er)f(at)f(the)i
-(cursor.)75 975 y Fl(M-y)168 b Ft(Rotate)17 b(the)g(kill-ring,)f(and)h
+(Editing)1075 b(3)75 149 y Fi(1.2.3)30 b(Readline)20
+b(Killing)h(Commands)75 223 y Fk(Killing)16 b Ft(text)d(means)g(to)g
+(delete)g(the)g(text)g(from)g(the)g(line,)g(but)h(to)e(sa)o(v)o(e)h(it)
+f(a)o(w)o(a)o(y)g(for)h(later)f(use,)i(usually)75 278
+y(b)o(y)f Fk(y)o(anking)k Ft(\(re-inserting\))12 b(it)h(bac)o(k)g(in)o
+(to)g(the)g(line.)19 b(\(`Cut')12 b(and)i(`paste')e(are)h(more)h(recen)
+o(t)f(jargon)g(for)75 333 y(`kill')g(and)j(`y)o(ank'.\))137
+397 y(If)g(the)f(description)f(for)h(a)g(command)g(sa)o(ys)f(that)h(it)
+f(`kills')f(text,)h(then)i(y)o(ou)f(can)g(b)q(e)h(sure)f(that)f(y)o(ou)
+75 452 y(can)h(get)g(the)g(text)g(bac)o(k)g(in)g(a)g(di\013eren)o(t)f
+(\(or)h(the)g(same\))g(place)g(later.)137 517 y(When)d(y)o(ou)g(use)g
+(a)f(kill)f(command,)i(the)g(text)f(is)g(sa)o(v)o(ed)g(in)h(a)f
+Fk(kill-ring)p Ft(.)17 b(An)o(y)12 b(n)o(um)o(b)q(er)g(of)f(consecutiv)
+o(e)75 572 y(kills)j(sa)o(v)o(e)h(all)f(of)h(the)h(killed)f(text)g
+(together,)f(so)h(that)g(when)h(y)o(ou)f(y)o(ank)g(it)g(bac)o(k,)g(y)o
+(ou)g(get)g(it)g(all.)20 b(The)75 627 y(kill)15 b(ring)h(is)f(not)h
+(line)g(sp)q(eci\014c;)h(the)f(text)g(that)f(y)o(ou)h(killed)g(on)g(a)g
+(previously)f(t)o(yp)q(ed)i(line)f(is)f(a)o(v)m(ailable)75
+682 y(to)g(b)q(e)g(y)o(ank)o(ed)g(bac)o(k)h(later,)d(when)j(y)o(ou)f
+(are)g(t)o(yping)f(another)h(line.)137 746 y(Here)h(is)e(the)i(list)e
+(of)g(commands)h(for)g(killing)f(text.)75 821 y Fl(C-k)168
+b Ft(Kill)14 b(the)i(text)e(from)h(the)g(curren)o(t)g(cursor)g(p)q
+(osition)f(to)h(the)g(end)h(of)f(the)g(line.)75 897 y
+Fl(M-d)168 b Ft(Kill)12 b(from)h(the)g(cursor)g(to)f(the)i(end)g(of)e
+(the)i(curren)o(t)f(w)o(ord,)f(or,)h(if)f(b)q(et)o(w)o(een)i(w)o(ords,)
+e(to)h(the)315 951 y(end)j(of)f(the)g(next)g(w)o(ord.)k(W)l(ord)c(b)q
+(oundaries)h(are)f(the)g(same)g(as)g(those)f(used)i(b)o(y)f
+Fl(M-f)p Ft(.)75 1026 y Fl(M-DEL)120 b Ft(Kill)16 b(from)g(the)h
+(cursor)f(to)g(the)h(start)e(of)i(the)g(curren)o(t)f(w)o(ord,)g(or,)g
+(if)h(b)q(et)o(w)o(een)g(w)o(ords,)f(to)315 1081 y(the)e(start)f(of)g
+(the)h(previous)f(w)o(ord.)19 b(W)l(ord)14 b(b)q(oundaries)g(are)f(the)
+h(same)g(as)f(those)h(used)g(b)o(y)315 1136 y Fl(M-b)p
+Ft(.)75 1211 y Fl(C-w)168 b Ft(Kill)17 b(from)f(the)i(cursor)f(to)g
+(the)h(previous)f(whitespace.)27 b(This)17 b(is)g(di\013eren)o(t)f
+(than)i Fl(M-DEL)315 1266 y Ft(b)q(ecause)e(the)f(w)o(ord)g(b)q
+(oundaries)g(di\013er.)137 1341 y(Here)21 b(is)g(ho)o(w)f(to)g
+Fk(y)o(ank)j Ft(the)e(text)f(bac)o(k)h(in)o(to)f(the)g(line.)37
+b(Y)l(anking)20 b(means)h(to)f(cop)o(y)h(the)g(most-)75
+1396 y(recen)o(tly-killed)14 b(text)h(from)f(the)i(kill)e(bu\013er)h
+(in)o(to)f(the)h(line)g(at)g(the)g(curren)o(t)g(cursor)g(p)q(osition.)
+75 1471 y Fl(C-y)168 b Ft(Y)l(ank)15 b(the)h(most)e(recen)o(tly)h
+(killed)f(text)h(bac)o(k)g(in)o(to)f(the)i(bu\013er)f(at)f(the)i
+(cursor.)75 1546 y Fl(M-y)168 b Ft(Rotate)17 b(the)g(kill-ring,)f(and)h
(y)o(ank)g(the)h(new)f(top.)26 b(Y)l(ou)17 b(can)h(only)f(do)g(this)g
-(if)f(the)i(prior)315 1029 y(command)d(is)g Fl(C-y)g
-Ft(or)f Fl(M-y)p Ft(.)75 1128 y Fi(1.2.4)30 b(Readline)20
-b(Argumen)n(ts)75 1202 y Ft(Y)l(ou)g(can)f(pass)h(n)o(umeric)f(argumen)
+(if)f(the)i(prior)315 1601 y(command)d(is)g Fl(C-y)g
+Ft(or)f Fl(M-y)p Ft(.)75 1695 y Fi(1.2.4)30 b(Readline)20
+b(Argumen)n(ts)75 1769 y Ft(Y)l(ou)g(can)f(pass)h(n)o(umeric)f(argumen)
o(ts)g(to)g(Readline)h(commands.)32 b(Sometimes)19 b(the)h(argumen)o(t)
-e(acts)75 1256 y(as)i(a)f(rep)q(eat)i(coun)o(t,)f(other)g(times)f(it)h
-(is)f(the)h Fk(sign)j Ft(of)c(the)h(argumen)o(t)g(that)f(is)h
-(signi\014can)o(t.)33 b(If)20 b(y)o(ou)75 1311 y(pass)d(a)f(negativ)o
+e(acts)75 1824 y(as)i(a)f(rep)q(eat)i(coun)o(t,)f(other)g(times)f(it)h
+(is)f(the)h Fj(sign)j Ft(of)c(the)h(argumen)o(t)g(that)f(is)h
+(signi\014can)o(t.)33 b(If)20 b(y)o(ou)75 1879 y(pass)d(a)f(negativ)o
(e)g(argumen)o(t)g(to)g(a)g(command)h(whic)o(h)g(normally)e(acts)h(in)h
-(a)f(forw)o(ard)g(direction,)g(that)75 1366 y(command)i(will)e(act)h
+(a)f(forw)o(ard)g(direction,)g(that)75 1933 y(command)i(will)e(act)h
(in)h(a)f(bac)o(kw)o(ard)g(direction.)26 b(F)l(or)17
b(example,)h(to)f(kill)g(text)g(bac)o(k)g(to)g(the)h(start)e(of)75
-1421 y(the)f(line,)g(y)o(ou)g(migh)o(t)f(t)o(yp)q(e)h(`)p
-Fs(M--)f(C-k)p Ft('.)137 1488 y(The)h(general)e(w)o(a)o(y)g(to)h(pass)g
+1988 y(the)f(line,)g(y)o(ou)g(migh)o(t)f(t)o(yp)q(e)h(`)p
+Fs(M--)f(C-k)p Ft('.)137 2053 y(The)h(general)e(w)o(a)o(y)g(to)h(pass)g
(n)o(umeric)g(argumen)o(ts)f(to)g(a)h(command)g(is)g(to)f(t)o(yp)q(e)h
-(meta)g(digits)f(b)q(efore)75 1542 y(the)j(command.)k(If)c(the)f
+(meta)g(digits)f(b)q(efore)75 2108 y(the)j(command.)k(If)c(the)f
(\014rst)g(`digit')f(t)o(yp)q(ed)h(is)g(a)h(min)o(us)f(sign)g(\(`)p
Fs(-)p Ft('\),)e(then)j(the)f(sign)g(of)g(the)h(argumen)o(t)75
-1597 y(will)i(b)q(e)i(negativ)o(e.)30 b(Once)20 b(y)o(ou)f(ha)o(v)o(e)g
+2163 y(will)i(b)q(e)i(negativ)o(e.)30 b(Once)20 b(y)o(ou)f(ha)o(v)o(e)g
(t)o(yp)q(ed)g(one)g(meta)g(digit)f(to)g(get)h(the)g(argumen)o(t)f
-(started,)h(y)o(ou)75 1652 y(can)c(t)o(yp)q(e)f(the)h(remainder)f(of)g
+(started,)h(y)o(ou)75 2217 y(can)c(t)o(yp)q(e)f(the)h(remainder)f(of)g
(the)g(digits,)f(and)i(then)g(the)f(command.)20 b(F)l(or)13
-b(example,)h(to)g(giv)o(e)g(the)g Fl(C-d)75 1707 y Ft(command)19
+b(example,)h(to)g(giv)o(e)g(the)g Fl(C-d)75 2272 y Ft(command)19
b(an)f(argumen)o(t)g(of)g(10,)h(y)o(ou)f(could)h(t)o(yp)q(e)g(`)p
Fs(M-1)14 b(0)h(C-d)p Ft(',)k(whic)o(h)f(will)f(delete)i(the)g(next)g
-(ten)75 1762 y(c)o(haracters)14 b(on)i(the)f(input)g(line.)75
-1860 y Fi(1.2.5)30 b(Searc)n(hing)21 b(for)f(Commands)h(in)f(the)h
-(History)75 1934 y Ft(Readline)11 b(pro)o(vides)f(commands)h(for)f
+(ten)75 2327 y(c)o(haracters)14 b(on)i(the)f(input)g(line.)75
+2422 y Fi(1.2.5)30 b(Searc)n(hing)21 b(for)f(Commands)h(in)f(the)h
+(History)75 2495 y Ft(Readline)11 b(pro)o(vides)f(commands)h(for)f
(searc)o(hing)g(through)g(the)h(command)f(history)g(for)g(lines)g(con)o
-(taining)75 1988 y(a)15 b(sp)q(eci\014ed)h(string.)j(There)c(are)g(t)o
-(w)o(o)f(searc)o(h)h(mo)q(des:)20 b Fj(incremen)o(tal)c
-Ft(and)g Fj(non-incremen)o(tal)p Ft(.)137 2055 y(Incremen)o(tal)d
+(taining)75 2550 y(a)15 b(sp)q(eci\014ed)h(string.)j(There)c(are)g(t)o
+(w)o(o)f(searc)o(h)h(mo)q(des:)20 b Fk(incremen)o(tal)c
+Ft(and)g Fk(non-incremen)o(tal)p Ft(.)137 2615 y(Incremen)o(tal)d
(searc)o(hes)g(b)q(egin)g(b)q(efore)g(the)g(user)g(has)g(\014nished)g
(t)o(yping)f(the)h(searc)o(h)g(string.)18 b(As)13 b(eac)o(h)75
-2110 y(c)o(haracter)k(of)g(the)h(searc)o(h)g(string)e(is)h(t)o(yp)q
+2670 y(c)o(haracter)k(of)g(the)h(searc)o(h)g(string)e(is)h(t)o(yp)q
(ed,)i(Readline)f(displa)o(ys)e(the)i(next)g(en)o(try)f(from)g(the)h
-(history)75 2165 y(matc)o(hing)11 b(the)h(string)f(t)o(yp)q(ed)h(so)g
-(far.)18 b(An)13 b(incremen)o(tal)e(searc)o(h)h(requires)f(only)h(as)g
-(man)o(y)f(c)o(haracters)g(as)75 2220 y(needed)16 b(to)d(\014nd)j(the)e
-(desired)h(history)e(en)o(try)l(.)19 b(T)l(o)c(searc)o(h)f(bac)o(kw)o
-(ard)f(in)i(the)f(history)f(for)h(a)g(particular)75 2274
-y(string,)f(t)o(yp)q(e)i Fl(C-r)p Ft(.)k(T)o(yping)c
-Fl(C-s)f Ft(searc)o(hes)h(forw)o(ard)e(through)h(the)h(history)l(.)k
-(The)c(c)o(haracters)f(presen)o(t)75 2329 y(in)19 b(the)g(v)m(alue)g
-(of)g(the)g Fs(isearch-terminators)d Ft(v)m(ariable)i(are)h(used)h(to)e
-(terminate)g(an)h(incremen)o(tal)75 2384 y(searc)o(h.)35
-b(If)20 b(that)f(v)m(ariable)h(has)g(not)g(b)q(een)h(assigned)f(a)g(v)m
-(alue,)h(the)f Fs(ESC)g Ft(and)g Fl(C-J)g Ft(c)o(haracters)f(will)75
-2439 y(terminate)h(an)h(incremen)o(tal)g(searc)o(h.)37
-b Fl(C-g)21 b Ft(will)f(ab)q(ort)h(an)g(incremen)o(tal)f(searc)o(h)h
-(and)g(restore)g(the)75 2494 y(original)13 b(line.)19
-b(When)c(the)f(searc)o(h)g(is)g(terminated,)g(the)g(history)g(en)o(try)
-g(con)o(taining)f(the)i(searc)o(h)f(string)75 2548 y(b)q(ecomes)i(the)f
-(curren)o(t)g(line.)137 2615 y(T)l(o)g(\014nd)i(other)e(matc)o(hing)f
-(en)o(tries)h(in)h(the)f(history)g(list,)f(t)o(yp)q(e)h
-Fl(C-r)g Ft(or)g Fl(C-s)g Ft(as)h(appropriate.)j(This)75
-2670 y(will)12 b(searc)o(h)h(bac)o(kw)o(ard)f(or)g(forw)o(ard)g(in)h
-(the)g(history)f(for)h(the)g(next)g(en)o(try)g(matc)o(hing)f(the)h
-(searc)o(h)g(string)p eop end
+(history)p eop end
%%Page: 4 8
TeXDict begin 4 7 bop 75 -58 a Ft(Chapter)15 b(1:)k(Command)c(Line)h
-(Editing)1075 b(4)75 149 y(t)o(yp)q(ed)19 b(so)g(far.)30
+(Editing)1075 b(4)75 149 y(matc)o(hing)15 b(the)h(string)f(t)o(yp)q(ed)
+i(so)e(far.)22 b(An)17 b(incremen)o(tal)e(searc)o(h)h(requires)g(only)f
+(as)h(man)o(y)g(c)o(haracters)75 204 y(as)g(needed)i(to)e(\014nd)i(the)
+f(desired)g(history)e(en)o(try)l(.)24 b(When)18 b(using)e(emacs)h
+(editing)f(mo)q(de,)h(t)o(yp)q(e)f Fl(C-r)h Ft(to)75
+259 y(searc)o(h)12 b(bac)o(kw)o(ard)g(in)g(the)h(history)e(for)h(a)h
+(particular)e(string.)18 b(T)o(yping)12 b Fl(C-s)g Ft(searc)o(hes)g
+(forw)o(ard)f(through)75 314 y(the)16 b(history)l(.)21
+b(The)16 b(c)o(haracters)f(presen)o(t)g(in)h(the)g(v)m(alue)g(of)f(the)
+h Fs(isearch-terminators)d Ft(v)m(ariable)i(are)75 369
+y(used)f(to)f(terminate)f(an)h(incremen)o(tal)g(searc)o(h.)19
+b(If)13 b(that)g(v)m(ariable)g(has)g(not)g(b)q(een)h(assigned)f(a)g(v)m
+(alue,)h(the)75 423 y Fs(ESC)f Ft(and)g Fl(C-J)g Ft(c)o(haracters)f
+(will)g(terminate)g(an)h(incremen)o(tal)f(searc)o(h.)19
+b Fl(C-g)13 b Ft(will)e(ab)q(ort)i(an)g(incremen)o(tal)75
+478 y(searc)o(h)22 b(and)g(restore)f(the)h(original)e(line.)40
+b(When)22 b(the)h(searc)o(h)e(is)h(terminated,)g(the)g(history)f(en)o
+(try)75 533 y(con)o(taining)14 b(the)h(searc)o(h)g(string)f(b)q(ecomes)
+i(the)g(curren)o(t)f(line.)137 608 y(T)l(o)g(\014nd)i(other)e(matc)o
+(hing)f(en)o(tries)h(in)h(the)f(history)g(list,)f(t)o(yp)q(e)h
+Fl(C-r)g Ft(or)g Fl(C-s)g Ft(as)h(appropriate.)j(This)75
+663 y(will)12 b(searc)o(h)h(bac)o(kw)o(ard)f(or)g(forw)o(ard)g(in)h
+(the)g(history)f(for)h(the)g(next)g(en)o(try)g(matc)o(hing)f(the)h
+(searc)o(h)g(string)75 718 y(t)o(yp)q(ed)19 b(so)g(far.)30
b(An)o(y)19 b(other)f(k)o(ey)h(sequence)h(b)q(ound)g(to)e(a)h(Readline)
-g(command)f(will)g(terminate)g(the)75 204 y(searc)o(h)13
+g(command)f(will)g(terminate)g(the)75 773 y(searc)o(h)13
b(and)f(execute)i(that)e(command.)19 b(F)l(or)12 b(instance,)h(a)f
Fs(RET)g Ft(will)g(terminate)f(the)i(searc)o(h)g(and)g(accept)75
-259 y(the)i(line,)f(thereb)o(y)h(executing)f(the)h(command)g(from)f
+827 y(the)i(line,)f(thereb)o(y)h(executing)f(the)h(command)g(from)f
(the)g(history)g(list.)k(A)d(mo)o(v)o(emen)o(t)f(command)g(will)75
-314 y(terminate)g(the)h(searc)o(h,)g(mak)o(e)g(the)g(last)f(line)h
+882 y(terminate)g(the)h(searc)o(h,)g(mak)o(e)g(the)g(last)f(line)h
(found)h(the)f(curren)o(t)g(line,)f(and)i(b)q(egin)f(editing.)137
-388 y(Readline)j(remem)o(b)q(ers)f(the)h(last)e(incremen)o(tal)h(searc)
+957 y(Readline)j(remem)o(b)q(ers)f(the)h(last)e(incremen)o(tal)h(searc)
o(h)g(string.)26 b(If)17 b(t)o(w)o(o)f Fl(C-r)p Ft(s)h(are)g(t)o(yp)q
-(ed)h(without)75 443 y(an)o(y)g(in)o(terv)o(ening)f(c)o(haracters)h
-(de\014ning)g(a)g(new)h(searc)o(h)f(string,)f(an)o(y)h(remem)o(b)q
-(ered)h(searc)o(h)f(string)f(is)75 498 y(used.)137 572
-y(Non-incremen)o(tal)23 b(searc)o(hes)g(read)h(the)f(en)o(tire)g(searc)
-o(h)g(string)f(b)q(efore)i(starting)e(to)g(searc)o(h)i(for)75
-627 y(matc)o(hing)c(history)h(lines.)37 b(The)22 b(searc)o(h)f(string)f
-(ma)o(y)h(b)q(e)h(t)o(yp)q(ed)f(b)o(y)h(the)f(user)h(or)e(b)q(e)i(part)
-f(of)g(the)75 682 y(con)o(ten)o(ts)15 b(of)f(the)i(curren)o(t)f(line.)
-75 813 y Fr(1.3)33 b(Readline)21 b(Init)i(File)75 893
-y Ft(Although)e(the)h(Readline)h(library)d(comes)i(with)f(a)h(set)f(of)
-h(Emacs-lik)o(e)f(k)o(eybindings)g(installed)g(b)o(y)75
-948 y(default,)12 b(it)g(is)g(p)q(ossible)g(to)g(use)g(a)g(di\013eren)o
-(t)g(set)g(of)g(k)o(eybindings.)19 b(An)o(y)12 b(user)h(can)f
-(customize)g(programs)75 1003 y(that)21 b(use)i(Readline)f(b)o(y)h
-(putting)e(commands)h(in)g(an)g Fj(inputrc)j Ft(\014le,)f(con)o(v)o(en)
-o(tionally)c(in)i(his)g(home)75 1057 y(directory)l(.)c(The)12
-b(name)g(of)f(this)g(\014le)h(is)f(tak)o(en)g(from)g(the)h(v)m(alue)g
-(of)f(the)h(en)o(vironmen)o(t)f(v)m(ariable)g Fs(INPUTRC)p
-Ft(.)75 1112 y(If)k(that)g(v)m(ariable)f(is)h(unset,)g(the)g(default)g
-(is)f Fs(~/.inputrc)p Ft(.)19 b(If)c(that)f(\014le)h(do)q(es)h(not)e
-(exist)h(or)f(cannot)h(b)q(e)75 1167 y(read,)g(the)g(ultimate)f
-(default)h(is)f Fs(/etc/inputrc)p Ft(.)137 1242 y(When)h(a)g(program)f
-(whic)o(h)g(uses)h(the)g(Readline)g(library)f(starts)f(up,)i(the)g
-(init)f(\014le)h(is)f(read,)h(and)g(the)75 1296 y(k)o(ey)g(bindings)g
-(are)g(set.)137 1371 y(In)f(addition,)f(the)g Fs(C-x)i(C-r)e
-Ft(command)g(re-reads)h(this)f(init)f(\014le,)i(th)o(us)f(incorp)q
-(orating)f(an)o(y)h(c)o(hanges)75 1426 y(that)h(y)o(ou)h(migh)o(t)f(ha)
-o(v)o(e)h(made)g(to)g(it.)75 1533 y Fi(1.3.1)30 b(Readline)20
-b(Init)g(File)h(Syn)n(tax)75 1606 y Ft(There)g(are)f(only)g(a)g(few)h
-(basic)f(constructs)g(allo)o(w)o(ed)f(in)h(the)h(Readline)f(init)g
-(\014le.)36 b(Blank)20 b(lines)g(are)75 1661 y(ignored.)35
-b(Lines)21 b(b)q(eginning)g(with)e(a)i(`)p Fs(#)p Ft(')e(are)h(commen)o
-(ts.)35 b(Lines)21 b(b)q(eginning)g(with)f(a)g(`)p Fs($)p
-Ft(')f(indicate)75 1716 y(conditional)g(constructs)i(\(see)f(Section)h
-(1.3.2)e([Conditional)g(Init)h(Constructs],)h(page)f(12\).)36
-b(Other)75 1770 y(lines)15 b(denote)g(v)m(ariable)g(settings)f(and)h(k)
-o(ey)g(bindings.)75 1861 y(V)l(ariable)f(Settings)315
-1916 y(Y)l(ou)20 b(can)h(mo)q(dify)f(the)g(run-time)g(b)q(eha)o(vior)g
+(ed)h(without)75 1012 y(an)o(y)j(in)o(terv)o(ening)f(c)o(haracters)g
+(de\014ning)i(a)f(new)g(searc)o(h)g(string,)g(Readline)g(uses)h(an)o(y)
+e(remem)o(b)q(ered)75 1067 y(searc)o(h)15 b(string.)137
+1142 y(Non-incremen)o(tal)23 b(searc)o(hes)g(read)h(the)f(en)o(tire)g
+(searc)o(h)g(string)f(b)q(efore)i(starting)e(to)g(searc)o(h)i(for)75
+1197 y(matc)o(hing)18 b(history)g(en)o(tries.)31 b(The)19
+b(searc)o(h)g(string)e(ma)o(y)i(b)q(e)g(t)o(yp)q(ed)h(b)o(y)f(the)g
+(user)g(or)f(b)q(e)i(part)e(of)h(the)75 1252 y(con)o(ten)o(ts)c(of)f
+(the)i(curren)o(t)f(line.)75 1384 y Fr(1.3)33 b(Readline)21
+b(Init)i(File)75 1464 y Ft(Although)e(the)h(Readline)h(library)d(comes)
+i(with)f(a)h(set)f(of)h(Emacs-lik)o(e)f(k)o(eybindings)g(installed)g(b)
+o(y)75 1518 y(default,)12 b(it)g(is)g(p)q(ossible)g(to)g(use)g(a)g
+(di\013eren)o(t)g(set)g(of)g(k)o(eybindings.)19 b(An)o(y)12
+b(user)h(can)f(customize)g(programs)75 1573 y(that)19
+b(use)g(Readline)h(b)o(y)f(putting)g(commands)g(in)g(an)g
+Fk(inputrc)k Ft(\014le,)d(con)o(v)o(en)o(tionally)d(in)i(their)g(home)
+75 1628 y(directory)l(.)f(The)12 b(name)g(of)f(this)g(\014le)h(is)f
+(tak)o(en)g(from)g(the)h(v)m(alue)g(of)f(the)h(en)o(vironmen)o(t)f(v)m
+(ariable)g Fs(INPUTRC)p Ft(.)75 1683 y(If)k(that)g(v)m(ariable)f(is)h
+(unset,)g(the)g(default)g(is)f Fs(~/.inputrc)p Ft(.)19
+b(If)c(that)f(\014le)h(do)q(es)h(not)e(exist)h(or)f(cannot)h(b)q(e)75
+1738 y(read,)g(readline)g(lo)q(oks)f(for)h Fs(/etc/inputrc)p
+Ft(.)137 1813 y(When)i(a)f(program)f(whic)o(h)h(uses)g(the)g(Readline)h
+(library)e(starts)f(up,)j(Readline)f(reads)g(the)h(init)e(\014le)75
+1867 y(and)g(sets)g(an)o(y)g(v)m(ariables)g(and)g(k)o(ey)g(bindings)g
+(it)g(con)o(tains.)137 1943 y(In)f(addition,)f(the)g
+Fs(C-x)i(C-r)e Ft(command)g(re-reads)h(this)f(init)f(\014le,)i(th)o(us)
+f(incorp)q(orating)f(an)o(y)h(c)o(hanges)75 1997 y(that)h(y)o(ou)h
+(migh)o(t)f(ha)o(v)o(e)h(made)g(to)g(it.)75 2105 y Fi(1.3.1)30
+b(Readline)20 b(Init)g(File)h(Syn)n(tax)75 2178 y Ft(There)g(are)f
+(only)g(a)g(few)h(basic)f(constructs)g(allo)o(w)o(ed)f(in)h(the)h
+(Readline)f(init)g(\014le.)36 b(Blank)20 b(lines)g(are)75
+2233 y(ignored.)35 b(Lines)21 b(b)q(eginning)g(with)e(a)i(`)p
+Fs(#)p Ft(')e(are)h(commen)o(ts.)35 b(Lines)21 b(b)q(eginning)g(with)f
+(a)g(`)p Fs($)p Ft(')f(indicate)75 2288 y(conditional)g(constructs)i
+(\(see)f(Section)h(1.3.2)e([Conditional)g(Init)h(Constructs],)h(page)f
+(14\).)36 b(Other)75 2343 y(lines)15 b(denote)g(v)m(ariable)g(settings)
+f(and)h(k)o(ey)g(bindings.)75 2434 y(V)l(ariable)f(Settings)315
+2489 y(Y)l(ou)20 b(can)h(mo)q(dify)f(the)g(run-time)g(b)q(eha)o(vior)g
(of)f(Readline)i(b)o(y)f(altering)f(the)h(v)m(alues)g(of)315
-1971 y(v)m(ariables)c(in)h(Readline)g(using)f(the)h Fs(set)g
+2544 y(v)m(ariables)c(in)h(Readline)g(using)f(the)h Fs(set)g
Ft(command)f(within)g(the)h(init)f(\014le.)25 b(The)17
-b(syn)o(tax)315 2025 y(is)e(simple:)435 2096 y Fs(set)23
-b Fl(variable)g(value)315 2167 y Ft(Here,)14 b(for)f(example,)g(is)g
-(ho)o(w)g(to)g(c)o(hange)h(from)f(the)h(default)f(Emacs-lik)o(e)g(k)o
-(ey)g(binding)h(to)315 2222 y(use)i Fs(vi)e Ft(line)h(editing)g
-(commands:)435 2293 y Fs(set)23 b(editing-mode)g(vi)315
-2364 y Ft(V)l(ariable)17 b(names)g(and)h(v)m(alues,)g(where)f
-(appropriate,)g(are)g(recognized)h(without)e(regard)315
-2419 y(to)f(case.)k(Unrecognized)d(v)m(ariable)f(names)g(are)g
-(ignored.)315 2490 y(Bo)q(olean)d(v)m(ariables)g(\(those)g(that)g(can)g
-(b)q(e)i(set)e(to)g(on)g(or)g(o\013)t(\))f(are)h(set)h(to)f(on)g(if)g
-(the)h(v)m(alue)f(is)315 2544 y(n)o(ull)g(or)f(empt)o(y)l(,)h
-Fj(on)h Ft(\(case-insensitiv)o(e\),)d(or)i(1.)19 b(An)o(y)12
-b(other)g(v)m(alue)g(results)f(in)h(the)h(v)m(ariable)315
-2599 y(b)q(eing)i(set)g(to)g(o\013.)315 2670 y(A)g(great)g(deal)f(of)h
-(run-time)g(b)q(eha)o(vior)g(is)g(c)o(hangeable)g(with)f(the)i(follo)o
-(wing)c(v)m(ariables.)p eop end
+b(syn)o(tax)315 2599 y(is)e(simple:)435 2670 y Fs(set)23
+b Fl(variable)g(value)p eop end
%%Page: 5 9
TeXDict begin 5 8 bop 75 -58 a Ft(Chapter)15 b(1:)k(Command)c(Line)h
-(Editing)1075 b(5)315 149 y Fs(bell-style)555 204 y Ft(Con)o(trols)20
-b(what)i(happ)q(ens)h(when)f(Readline)g(w)o(an)o(ts)f(to)g(ring)h(the)g
-(termi-)555 259 y(nal)c(b)q(ell.)30 b(If)19 b(set)f(to)g(`)p
-Fs(none)p Ft(',)g(Readline)h(nev)o(er)g(rings)f(the)g(b)q(ell.)30
-b(If)19 b(set)g(to)555 314 y(`)p Fs(visible)p Ft(',)c(Readline)h(uses)h
-(a)f(visible)g(b)q(ell)h(if)f(one)g(is)g(a)o(v)m(ailable.)23
-b(If)16 b(set)h(to)555 369 y(`)p Fs(audible)p Ft(')g(\(the)h
-(default\),)h(Readline)g(attempts)f(to)g(ring)g(the)h(terminal's)555
-423 y(b)q(ell.)315 496 y Fs(bind-tty-special-chars)555
-551 y Ft(If)f(set)f(to)g(`)p Fs(on)p Ft(')f(\(the)i(default\),)f
-(Readline)g(attempts)g(to)g(bind)h(the)f(con)o(trol)555
-606 y(c)o(haracters)d(treated)g(sp)q(ecially)g(b)o(y)g(the)h(k)o
-(ernel's)e(terminal)h(driv)o(er)g(to)f(their)555 661
-y(Readline)j(equiv)m(alen)o(ts.)315 734 y Fs(blink-matching-paren)555
-789 y Ft(If)i(set)g(to)g(`)p Fs(on)p Ft(',)f(Readline)i(attempts)e(to)g
-(brie\015y)h(mo)o(v)o(e)g(the)g(cursor)g(to)f(an)555
-844 y(op)q(ening)k(paren)o(thesis)f(when)i(a)e(closing)g(paren)o
-(thesis)h(is)f(inserted.)37 b(The)555 898 y(default)15
-b(is)f(`)p Fs(off)p Ft('.)315 971 y Fs(colored-completion-prefix)555
-1026 y Ft(If)h(set)f(to)g(`)p Fs(on)p Ft(',)g(when)h(listing)e
+(Editing)1075 b(5)315 149 y(Here,)14 b(for)f(example,)g(is)g(ho)o(w)g
+(to)g(c)o(hange)h(from)f(the)h(default)f(Emacs-lik)o(e)g(k)o(ey)g
+(binding)h(to)315 204 y(use)i Fs(vi)e Ft(line)h(editing)g(commands:)435
+273 y Fs(set)23 b(editing-mode)g(vi)315 341 y Ft(V)l(ariable)17
+b(names)g(and)h(v)m(alues,)g(where)f(appropriate,)g(are)g(recognized)h
+(without)e(regard)315 396 y(to)f(case.)k(Unrecognized)d(v)m(ariable)f
+(names)g(are)g(ignored.)315 465 y(Bo)q(olean)d(v)m(ariables)g(\(those)g
+(that)g(can)g(b)q(e)i(set)e(to)g(on)g(or)g(o\013)t(\))f(are)h(set)h(to)
+f(on)g(if)g(the)h(v)m(alue)f(is)315 519 y(n)o(ull)g(or)f(empt)o(y)l(,)h
+Fk(on)h Ft(\(case-insensitiv)o(e\),)d(or)i(1.)19 b(An)o(y)12
+b(other)g(v)m(alue)g(results)f(in)h(the)h(v)m(ariable)315
+574 y(b)q(eing)i(set)g(to)g(o\013.)315 643 y(A)g(great)g(deal)f(of)h
+(run-time)g(b)q(eha)o(vior)g(is)g(c)o(hangeable)g(with)f(the)i(follo)o
+(wing)c(v)m(ariables.)315 725 y Fs(active-region-start-color)555
+780 y Ft(A)h(string)g(v)m(ariable)f(that)h(con)o(trols)f(the)h(text)g
+(color)f(and)h(bac)o(kground)g(when)555 834 y(displa)o(ying)23
+b(the)i(text)f(in)h(the)f(activ)o(e)g(region)g(\(see)h(the)f
+(description)g(of)555 889 y Fs(enable-active-region)13
+b Ft(b)q(elo)o(w\).)19 b(This)c(string)g(m)o(ust)g(not)g(tak)o(e)f(up)i
+(an)o(y)555 944 y(ph)o(ysical)c(c)o(haracter)f(p)q(ositions)h(on)g(the)
+g(displa)o(y)l(,)g(so)g(it)f(should)i(consist)e(only)555
+999 y(of)18 b(terminal)f(escap)q(e)i(sequences.)31 b(It)18
+b(is)g(output)g(to)g(the)h(terminal)e(b)q(efore)555 1054
+y(displa)o(ying)g(the)i(text)f(in)h(the)g(activ)o(e)f(region.)29
+b(This)19 b(v)m(ariable)f(is)g(reset)h(to)555 1108 y(the)14
+b(default)g(v)m(alue)h(whenev)o(er)f(the)h(terminal)e(t)o(yp)q(e)h(c)o
+(hanges.)20 b(The)14 b(default)555 1163 y(v)m(alue)h(is)f(the)h(string)
+e(that)h(puts)h(the)f(terminal)g(in)g(standout)g(mo)q(de,)h(as)f(ob-)
+555 1218 y(tained)19 b(from)h(the)f(terminal's)g(terminfo)f
+(description.)34 b(A)19 b(sample)h(v)m(alue)555 1273
+y(migh)o(t)14 b(b)q(e)i(`)p Fs(\\e[01;33m)p Ft('.)315
+1355 y Fs(active-region-end-color)555 1410 y Ft(A)24
+b(string)f(v)m(ariable)g(that)g Fs(")p Ft(undo)q(es)p
+Fs(")i Ft(the)f(e\013ects)f(of)h Fs(active-region-)555
+1465 y(start-color)18 b Ft(and)h(restores)g Fs(")p Ft(normal)p
+Fs(")f Ft(terminal)g(displa)o(y)g(app)q(earance)555 1519
+y(after)12 b(displa)o(ying)g(text)g(in)h(the)g(activ)o(e)f(region.)18
+b(This)13 b(string)f(m)o(ust)g(not)h(tak)o(e)555 1574
+y(up)g(an)o(y)f(ph)o(ysical)g(c)o(haracter)g(p)q(ositions)f(on)i(the)f
+(displa)o(y)l(,)g(so)g(it)g(should)h(con-)555 1629 y(sist)h(only)g(of)g
+(terminal)f(escap)q(e)j(sequences.)k(It)15 b(is)f(output)h(to)f(the)g
+(terminal)555 1684 y(after)j(displa)o(ying)g(the)h(text)f(in)h(the)g
+(activ)o(e)f(region.)27 b(This)17 b(v)m(ariable)g(is)h(re-)555
+1738 y(set)f(to)f(the)g(default)h(v)m(alue)g(whenev)o(er)g(the)g
+(terminal)e(t)o(yp)q(e)i(c)o(hanges.)25 b(The)555 1793
+y(default)19 b(v)m(alue)g(is)g(the)g(string)f(that)g(restores)h(the)g
+(terminal)f(from)g(stand-)555 1848 y(out)c(mo)q(de,)h(as)f(obtained)g
+(from)g(the)h(terminal's)e(terminfo)h(description.)19
+b(A)555 1903 y(sample)c(v)m(alue)g(migh)o(t)f(b)q(e)i(`)p
+Fs(\\e[0m)p Ft('.)315 1985 y Fs(bell-style)555 2040 y
+Ft(Con)o(trols)k(what)i(happ)q(ens)h(when)f(Readline)g(w)o(an)o(ts)f
+(to)g(ring)h(the)g(termi-)555 2095 y(nal)c(b)q(ell.)30
+b(If)19 b(set)f(to)g(`)p Fs(none)p Ft(',)g(Readline)h(nev)o(er)g(rings)
+f(the)g(b)q(ell.)30 b(If)19 b(set)g(to)555 2149 y(`)p
+Fs(visible)p Ft(',)c(Readline)h(uses)h(a)f(visible)g(b)q(ell)h(if)f
+(one)g(is)g(a)o(v)m(ailable.)23 b(If)16 b(set)h(to)555
+2204 y(`)p Fs(audible)p Ft(')g(\(the)h(default\),)h(Readline)g
+(attempts)f(to)g(ring)g(the)h(terminal's)555 2259 y(b)q(ell.)315
+2341 y Fs(bind-tty-special-chars)555 2396 y Ft(If)f(set)f(to)g(`)p
+Fs(on)p Ft(')f(\(the)i(default\),)f(Readline)g(attempts)g(to)g(bind)h
+(the)f(con)o(trol)555 2451 y(c)o(haracters)c(that)f(are)h(treated)g(sp)
+q(ecially)g(b)o(y)g(the)h(k)o(ernel's)e(terminal)h(driv)o(er)555
+2506 y(to)i(their)h(Readline)g(equiv)m(alen)o(ts.)22
+b(These)17 b(o)o(v)o(erride)e(the)h(default)g(Readline)555
+2560 y(bindings)h(describ)q(ed)h(here.)26 b(T)o(yp)q(e)17
+b(`)p Fs(stty)d(-a)p Ft(')j(at)f(a)h(Bash)g(prompt)f(to)h(see)555
+2615 y(y)o(our)g(curren)o(t)h(terminal)e(settings,)h(including)h(the)f
+(sp)q(ecial)h(con)o(trol)e(c)o(har-)555 2670 y(acters)f(\(usually)f
+Fs(cchars)p Ft(\).)p eop end
+%%Page: 6 10
+TeXDict begin 6 9 bop 75 -58 a Ft(Chapter)15 b(1:)k(Command)c(Line)h
+(Editing)1075 b(6)315 149 y Fs(blink-matching-paren)555
+204 y Ft(If)18 b(set)g(to)g(`)p Fs(on)p Ft(',)f(Readline)i(attempts)e
+(to)g(brie\015y)h(mo)o(v)o(e)g(the)g(cursor)g(to)f(an)555
+259 y(op)q(ening)k(paren)o(thesis)f(when)i(a)e(closing)g(paren)o
+(thesis)h(is)f(inserted.)37 b(The)555 314 y(default)15
+b(is)f(`)p Fs(off)p Ft('.)315 396 y Fs(colored-completion-prefix)555
+451 y Ft(If)h(set)f(to)g(`)p Fs(on)p Ft(',)g(when)h(listing)e
(completions,)h(Readline)h(displa)o(ys)e(the)i(com-)555
-1081 y(mon)e(pre\014x)g(of)f(the)h(set)f(of)g(p)q(ossible)h
-(completions)f(using)g(a)g(di\013eren)o(t)g(color.)555
-1136 y(The)20 b(color)f(de\014nitions)h(are)g(tak)o(en)f(from)g(the)h
-(v)m(alue)h(of)e(the)h Fs(LS_COLORS)555 1191 y Ft(en)o(vironmen)o(t)14
-b(v)m(ariable.)20 b(The)15 b(default)g(is)g(`)p Fs(off)p
-Ft('.)315 1264 y Fs(colored-stats)555 1318 y Ft(If)f(set)f(to)f(`)p
-Fs(on)p Ft(',)g(Readline)i(displa)o(ys)e(p)q(ossible)h(completions)g
-(using)g(di\013eren)o(t)555 1373 y(colors)19 b(to)f(indicate)i(their)f
-(\014le)g(t)o(yp)q(e.)33 b(The)20 b(color)f(de\014nitions)g(are)g(tak)o
-(en)555 1428 y(from)12 b(the)g(v)m(alue)h(of)e(the)i
-Fs(LS_COLORS)e Ft(en)o(vironmen)o(t)h(v)m(ariable.)18
-b(The)12 b(default)555 1483 y(is)j(`)p Fs(off)p Ft('.)315
-1556 y Fs(comment-begin)555 1611 y Ft(The)31 b(string)f(to)h(insert)g
-(at)f(the)h(b)q(eginning)h(of)e(the)h(line)g(when)h(the)555
-1665 y Fs(insert-comment)13 b Ft(command)i(is)g(executed.)21
-b(The)15 b(default)g(v)m(alue)g(is)g Fs("#")p Ft(.)315
-1738 y Fs(completion-display-width)555 1793 y Ft(The)21
+506 y(mon)e(pre\014x)g(of)f(the)h(set)f(of)g(p)q(ossible)h(completions)
+f(using)g(a)g(di\013eren)o(t)g(color.)555 560 y(The)h(color)f
+(de\014nitions)g(are)g(tak)o(en)h(from)e(the)i(v)m(alue)g(of)f(the)h
+Fs(LS_COLORS)e Ft(en-)555 615 y(vironmen)o(t)16 b(v)m(ariable.)24
+b(If)17 b(there)g(is)f(a)g(color)g(de\014nition)h(in)f
+Fs(LS_COLORS)g Ft(for)555 670 y(the)11 b(custom)f(su\016x)h(`)p
+Fs(readline-colored-completio)o(n-prefi)o(x)p Ft(',)d(Read-)555
+725 y(line)j(uses)h(this)f(color)g(for)g(the)h(common)f(pre\014x)h
+(instead)f(of)h(its)e(default.)19 b(The)555 780 y(default)c(is)f(`)p
+Fs(off)p Ft('.)315 862 y Fs(colored-stats)555 917 y Ft(If)g(set)f(to)f
+(`)p Fs(on)p Ft(',)g(Readline)i(displa)o(ys)e(p)q(ossible)h
+(completions)g(using)g(di\013eren)o(t)555 971 y(colors)19
+b(to)f(indicate)i(their)f(\014le)g(t)o(yp)q(e.)33 b(The)20
+b(color)f(de\014nitions)g(are)g(tak)o(en)555 1026 y(from)12
+b(the)g(v)m(alue)h(of)e(the)i Fs(LS_COLORS)e Ft(en)o(vironmen)o(t)h(v)m
+(ariable.)18 b(The)12 b(default)555 1081 y(is)j(`)p Fs(off)p
+Ft('.)315 1163 y Fs(comment-begin)555 1218 y Ft(The)36
+b(string)g(to)f(insert)h(at)f(the)i(b)q(eginning)f(of)g(the)g(line)g(b)
+o(y)g(the)555 1273 y Fs(insert-comment)13 b Ft(command.)20
+b(The)15 b(default)g(v)m(alue)h(is)e Fs("#")p Ft(.)315
+1355 y Fs(completion-display-width)555 1410 y Ft(The)21
b(n)o(um)o(b)q(er)g(of)g(screen)g(columns)f(used)i(to)e(displa)o(y)g(p)
-q(ossible)g(matc)o(hes)555 1848 y(when)15 b(p)q(erforming)f
+q(ossible)g(matc)o(hes)555 1465 y(when)15 b(p)q(erforming)f
(completion.)19 b(The)14 b(v)m(alue)h(is)f(ignored)g(if)g(it)g(is)g
-(less)g(than)555 1903 y(0)f(or)f(greater)h(than)g(the)g(terminal)f
+(less)g(than)555 1519 y(0)f(or)f(greater)h(than)g(the)g(terminal)f
(screen)h(width.)19 b(A)13 b(v)m(alue)g(of)g(0)g(will)f(cause)555
-1958 y(matc)o(hes)j(to)f(b)q(e)i(displa)o(y)o(ed)f(one)g(p)q(er)h
-(line.)j(The)d(default)e(v)m(alue)i(is)f(-1.)315 2031
-y Fs(completion-ignore-case)555 2086 y Ft(If)f(set)f(to)g(`)p
+1574 y(matc)o(hes)j(to)f(b)q(e)i(displa)o(y)o(ed)f(one)g(p)q(er)h
+(line.)j(The)d(default)e(v)m(alue)i(is)f(-1.)315 1656
+y Fs(completion-ignore-case)555 1711 y Ft(If)f(set)f(to)g(`)p
Fs(on)p Ft(',)g(Readline)h(p)q(erforms)f(\014lename)h(matc)o(hing)f
-(and)h(completion)555 2140 y(in)h(a)g(case-insensitiv)o(e)f(fashion.)20
+(and)h(completion)555 1766 y(in)h(a)g(case-insensitiv)o(e)f(fashion.)20
b(The)15 b(default)g(v)m(alue)g(is)g(`)p Fs(off)p Ft('.)315
-2213 y Fs(completion-map-case)555 2268 y Ft(If)c(set)g(to)g(`)p
-Fs(on)p Ft(',)f(and)h Fj(completion-ignore-case)i Ft(is)e(enabled,)h
-(Readline)f(treats)555 2323 y(h)o(yphens)16 b(\(`)p Fs(-)p
+1848 y Fs(completion-map-case)555 1903 y Ft(If)c(set)g(to)g(`)p
+Fs(on)p Ft(',)f(and)h Fk(completion-ignore-case)i Ft(is)e(enabled,)h
+(Readline)f(treats)555 1958 y(h)o(yphens)16 b(\(`)p Fs(-)p
Ft('\))e(and)i(underscores)g(\(`)p Fs(_)p Ft('\))d(as)j(equiv)m(alen)o
-(t)f(when)h(p)q(erforming)555 2378 y(case-insensitiv)o(e)e(\014lename)i
-(matc)o(hing)e(and)h(completion.)315 2451 y Fs
-(completion-prefix-display-)o(length)555 2506 y Ft(The)h(length)f(in)h
-(c)o(haracters)f(of)g(the)h(common)f(pre\014x)h(of)f(a)h(list)e(of)h(p)
-q(ossible)555 2560 y(completions)f(that)g(is)g(displa)o(y)o(ed)g
-(without)g(mo)q(di\014cation.)19 b(When)c(set)g(to)f(a)555
-2615 y(v)m(alue)f(greater)f(than)h(zero,)f(common)h(pre\014xes)g
-(longer)f(than)h(this)f(v)m(alue)h(are)555 2670 y(replaced)i(with)g(an)
-g(ellipsis)f(when)i(displa)o(ying)e(p)q(ossible)h(completions.)p
+(t)f(when)h(p)q(erforming)555 2012 y(case-insensitiv)o(e)21
+b(\014lename)i(matc)o(hing)e(and)i(completion.)40 b(The)22
+b(default)555 2067 y(v)m(alue)15 b(is)g(`)p Fs(off)p
+Ft('.)315 2149 y Fs(completion-prefix-display-)o(length)555
+2204 y Ft(The)d(maxim)o(um)g(length)g(in)g(c)o(haracters)f(of)h(the)g
+(common)g(pre\014x)h(of)e(a)h(list)f(of)555 2259 y(p)q(ossible)i
+(completions)g(that)g(is)g(displa)o(y)o(ed)g(without)g(mo)q
+(di\014cation.)19 b(When)555 2314 y(set)14 b(to)g(a)g(v)m(alue)h
+(greater)e(than)i(zero,)f(readline)g(replaces)g(common)g(pre\014xes)555
+2369 y(longer)22 b(than)h(this)f(v)m(alue)h(with)f(an)h(ellipsis)e
+(when)j(displa)o(ying)d(p)q(ossible)555 2423 y(completions.)315
+2506 y Fs(completion-query-items)555 2560 y Ft(The)13
+b(n)o(um)o(b)q(er)h(of)e(p)q(ossible)h(completions)g(that)f(determines)
+h(when)h(the)f(user)555 2615 y(is)21 b(ask)o(ed)g(whether)g(the)h(list)
+e(of)h(p)q(ossibilities)e(should)i(b)q(e)h(displa)o(y)o(ed.)38
+b(If)555 2670 y(the)15 b(n)o(um)o(b)q(er)f(of)h(p)q(ossible)f
+(completions)f(is)h(greater)g(than)g(or)g(equal)h(to)f(this)p
eop end
-%%Page: 6 10
-TeXDict begin 6 9 bop 75 -58 a Ft(Chapter)15 b(1:)k(Command)c(Line)h
-(Editing)1075 b(6)315 149 y Fs(completion-query-items)555
-204 y Ft(The)13 b(n)o(um)o(b)q(er)h(of)e(p)q(ossible)h(completions)g
-(that)f(determines)h(when)h(the)f(user)555 259 y(is)h(ask)o(ed)h
-(whether)g(the)f(list)g(of)g(p)q(ossibilities)f(should)i(b)q(e)g
-(displa)o(y)o(ed.)k(If)c(the)555 314 y(n)o(um)o(b)q(er)f(of)f(p)q
-(ossible)g(completions)f(is)h(greater)g(than)g(this)g(v)m(alue,)h
-(Readline)555 369 y(will)e(ask)h(the)g(user)h(whether)f(or)g(not)g(he)g
-(wishes)g(to)g(view)g(them;)g(otherwise,)555 423 y(they)f(are)g(simply)
-g(listed.)18 b(This)12 b(v)m(ariable)f(m)o(ust)h(b)q(e)h(set)f(to)f(an)
-h(in)o(teger)g(v)m(alue)555 478 y(greater)g(than)g(or)g(equal)g(to)g
-(0.)18 b(A)13 b(negativ)o(e)e(v)m(alue)i(means)f(Readline)h(should)555
-533 y(nev)o(er)i(ask.)20 b(The)15 b(default)g(limit)f(is)g
-Fs(100)p Ft(.)315 633 y Fs(convert-meta)555 688 y Ft(If)d(set)g(to)g(`)
-p Fs(on)p Ft(',)f(Readline)h(will)f(con)o(v)o(ert)g(c)o(haracters)h
-(with)f(the)h(eigh)o(th)g(bit)f(set)555 743 y(to)15 b(an)h
-Fm(asci)q(i)f Ft(k)o(ey)h(sequence)h(b)o(y)f(stripping)f(the)h(eigh)o
-(th)f(bit)h(and)g(pre\014xing)555 798 y(an)c Fs(ESC)g
-Ft(c)o(haracter,)g(con)o(v)o(erting)f(them)h(to)f(a)h(meta-pre\014xed)h
-(k)o(ey)f(sequence.)555 853 y(The)i(default)f(v)m(alue)h(is)g(`)p
-Fs(on)p Ft(',)e(but)i(will)f(b)q(e)h(set)g(to)f(`)p Fs(off)p
-Ft(')f(if)i(the)f(lo)q(cale)h(is)f(one)555 907 y(that)h(con)o(tains)h
-(eigh)o(t-bit)f(c)o(haracters.)315 1008 y Fs(disable-completion)555
-1063 y Ft(If)19 b(set)f(to)f(`)p Fs(On)p Ft(',)h(Readline)h(will)e
-(inhibit)g(w)o(ord)h(completion.)28 b(Completion)555
-1117 y(c)o(haracters)12 b(will)g(b)q(e)i(inserted)f(in)o(to)f(the)h
-(line)f(as)h(if)g(they)g(had)g(b)q(een)h(mapp)q(ed)555
-1172 y(to)h Fs(self-insert)p Ft(.)j(The)d(default)g(is)g(`)p
+%%Page: 7 11
+TeXDict begin 7 10 bop 75 -58 a Ft(Chapter)15 b(1:)k(Command)c(Line)h
+(Editing)1075 b(7)555 149 y(v)m(alue,)22 b(Readline)f(will)f(ask)g
+(whether)i(or)e(not)g(the)h(user)g(wishes)g(to)f(view)555
+204 y(them;)c(otherwise,)f(Readline)i(simply)e(lists)g(the)h
+(completions.)22 b(This)15 b(v)m(ari-)555 259 y(able)g(m)o(ust)h(b)q(e)
+g(set)g(to)f(an)g(in)o(teger)g(v)m(alue)h(greater)f(than)h(or)f(equal)g
+(to)g(zero.)555 314 y(A)g(zero)g(v)m(alue)g(means)g(Readline)g(should)g
+(nev)o(er)g(ask;)f(negativ)o(e)g(v)m(alues)h(are)555
+369 y(treated)g(as)g(zero.)k(The)d(default)e(limit)g(is)h
+Fs(100)p Ft(.)315 451 y Fs(convert-meta)555 506 y Ft(If)e(set)f(to)f(`)
+p Fs(on)p Ft(',)h(Readline)g(will)f(con)o(v)o(ert)h(c)o(haracters)g(it)
+f(reads)h(that)g(ha)o(v)o(e)g(the)555 560 y(eigh)o(th)e(bit)g(set)g(to)
+g(an)h Fm(asci)q(i)f Ft(k)o(ey)g(sequence)i(b)o(y)e(clearing)g(the)h
+(eigh)o(th)f(bit)g(and)555 615 y(pre\014xing)k(an)f Fs(ESC)h
+Ft(c)o(haracter,)e(con)o(v)o(erting)h(them)h(to)f(a)g(meta-pre\014xed)h
+(k)o(ey)555 670 y(sequence.)20 b(The)14 b(default)f(v)m(alue)g(is)g(`)p
+Fs(on)p Ft(',)f(but)i(Readline)f(will)f(set)h(it)g(to)f(`)p
+Fs(off)p Ft(')555 725 y(if)g(the)h(lo)q(cale)f(con)o(tains)f(c)o
+(haracters)h(whose)g(enco)q(dings)h(ma)o(y)f(include)h(b)o(ytes)555
+780 y(with)f(the)g(eigh)o(th)f(bit)h(set.)19 b(This)12
+b(v)m(ariable)f(is)h(dep)q(enden)o(t)i(on)e(the)g Fs(LC_CTYPE)555
+834 y Ft(lo)q(cale)f(category)l(,)h(and)g(ma)o(y)f(c)o(hange)h(if)g
+(the)g(lo)q(cale)f(c)o(hanges.)19 b(This)12 b(v)m(ariable)555
+889 y(also)e(a\013ects)h(k)o(ey)g(bindings;)h(see)f(the)h(description)f
+(of)f Fs(force-meta-prefix)555 944 y Ft(b)q(elo)o(w.)315
+1026 y Fs(disable-completion)555 1081 y Ft(If)19 b(set)f(to)f(`)p
+Fs(On)p Ft(',)h(Readline)h(will)e(inhibit)g(w)o(ord)h(completion.)28
+b(Completion)555 1136 y(c)o(haracters)12 b(will)g(b)q(e)i(inserted)f
+(in)o(to)f(the)h(line)f(as)h(if)g(they)g(had)g(b)q(een)h(mapp)q(ed)555
+1191 y(to)h Fs(self-insert)p Ft(.)j(The)d(default)g(is)g(`)p
Fs(off)p Ft('.)315 1273 y Fs(echo-control-characters)555
1328 y Ft(When)h(set)e(to)h(`)p Fs(on)p Ft(',)f(on)h(op)q(erating)f
(systems)h(that)f(indicate)h(they)g(supp)q(ort)555 1382
-y(it,)g(readline)g(ec)o(ho)q(es)h(a)g(c)o(haracter)f(corresp)q(onding)h
-(to)f(a)g(signal)g(generated)555 1437 y(from)f(the)i(k)o(eyb)q(oard.)k
-(The)15 b(default)g(is)f(`)p Fs(on)p Ft('.)315 1538 y
-Fs(editing-mode)555 1592 y Ft(The)h Fs(editing-mode)d
-Ft(v)m(ariable)i(con)o(trols)f(whic)o(h)h(default)g(set)g(of)g(k)o(ey)g
-(bind-)555 1647 y(ings)e(is)g(used.)20 b(By)12 b(default,)h(Readline)f
-(starts)g(up)h(in)f(Emacs)g(editing)g(mo)q(de,)555 1702
-y(where)j(the)f(k)o(eystrok)o(es)g(are)g(most)g(similar)f(to)g(Emacs.)
-20 b(This)14 b(v)m(ariable)g(can)555 1757 y(b)q(e)i(set)f(to)f(either)h
-(`)p Fs(emacs)p Ft(')f(or)h(`)p Fs(vi)p Ft('.)315 1857
-y Fs(emacs-mode-string)555 1912 y Ft(If)i(the)g Fj(sho)o(w-mo)q
-(de-in-prompt)h Ft(v)m(ariable)e(is)g(enabled,)i(this)e(string)g(is)g
-(dis-)555 1967 y(pla)o(y)o(ed)11 b(immediately)f(b)q(efore)i(the)g
-(last)e(line)h(of)g(the)h(primary)e(prompt)h(when)555
-2022 y(emacs)g(editing)f(mo)q(de)h(is)f(activ)o(e.)18
-b(The)11 b(v)m(alue)g(is)f(expanded)i(lik)o(e)e(a)h(k)o(ey)f(bind-)555
-2076 y(ing,)i(so)h(the)g(standard)f(set)g(of)h(meta-)f(and)h(con)o
-(trol)e(pre\014xes)j(and)f(bac)o(kslash)555 2131 y(escap)q(e)g
-(sequences)g(is)e(a)o(v)m(ailable.)18 b(Use)12 b(the)g(`)p
-Fs(\\1)p Ft(')f(and)h(`)p Fs(\\2)p Ft(')f(escap)q(es)h(to)g(b)q(egin)
-555 2186 y(and)19 b(end)g(sequences)h(of)f(non-prin)o(ting)f(c)o
-(haracters,)g(whic)o(h)h(can)g(b)q(e)g(used)555 2241
-y(to)f(em)o(b)q(ed)h(a)g(terminal)e(con)o(trol)g(sequence)j(in)o(to)e
-(the)h(mo)q(de)g(string.)29 b(The)555 2296 y(default)15
-b(is)f(`)p Fs(@)p Ft('.)315 2396 y Fs(enable-bracketed-paste)555
-2451 y Ft(When)f(set)f(to)f(`)p Fs(On)p Ft(',)h(Readline)g(will)f
-(con\014gure)i(the)f(terminal)f(in)h(a)g(w)o(a)o(y)g(that)555
-2506 y(will)h(enable)h(it)g(to)f(insert)h(eac)o(h)g(paste)g(in)o(to)f
-(the)h(editing)g(bu\013er)g(as)g(a)g(single)555 2560
-y(string)h(of)h(c)o(haracters,)g(instead)g(of)f(treating)g(eac)o(h)i(c)
-o(haracter)e(as)h(if)g(it)g(had)555 2615 y(b)q(een)i(read)e(from)g(the)
-h(k)o(eyb)q(oard.)24 b(This)16 b(can)h(prev)o(en)o(t)f(pasted)h(c)o
-(haracters)555 2670 y(from)d(b)q(eing)i(in)o(terpreted)f(as)g(editing)f
-(commands.)20 b(The)15 b(default)g(is)g(`)p Fs(off)p
-Ft('.)p eop end
-%%Page: 7 11
-TeXDict begin 7 10 bop 75 -58 a Ft(Chapter)15 b(1:)k(Command)c(Line)h
-(Editing)1075 b(7)315 149 y Fs(enable-keypad)555 204
-y Ft(When)12 b(set)f(to)h(`)p Fs(on)p Ft(',)e(Readline)i(will)f(try)g
-(to)g(enable)h(the)g(application)e(k)o(eypad)555 259
-y(when)k(it)e(is)h(called.)19 b(Some)13 b(systems)g(need)h(this)f(to)g
-(enable)g(the)h(arro)o(w)e(k)o(eys.)555 314 y(The)j(default)g(is)g(`)p
-Fs(off)p Ft('.)315 400 y Fs(enable-meta-key)555 455 y
-Ft(When)20 b(set)g(to)f(`)p Fs(on)p Ft(',)h(Readline)g(will)e(try)i(to)
-f(enable)h(an)o(y)g(meta)f(mo)q(di\014er)555 510 y(k)o(ey)i(the)g
-(terminal)e(claims)h(to)g(supp)q(ort)h(when)h(it)e(is)g(called.)37
-b(On)21 b(man)o(y)555 564 y(terminals,)16 b(the)i(meta)f(k)o(ey)h(is)f
-(used)h(to)f(send)h(eigh)o(t-bit)e(c)o(haracters.)27
-b(The)555 619 y(default)15 b(is)f(`)p Fs(on)p Ft('.)315
-705 y Fs(expand-tilde)555 760 y Ft(If)g(set)g(to)f(`)p
-Fs(on)p Ft(',)f(tilde)i(expansion)f(is)h(p)q(erformed)g(when)g
-(Readline)g(attempts)555 815 y(w)o(ord)h(completion.)k(The)c(default)g
-(is)f(`)p Fs(off)p Ft('.)315 901 y Fs(history-preserve-point)555
-956 y Ft(If)21 b(set)g(to)f(`)p Fs(on)p Ft(',)h(the)g(history)f(co)q
+y(it,)e(Readline)h(ec)o(ho)q(es)h(a)f(c)o(haracter)f(corresp)q(onding)h
+(to)f(a)h(signal)f(generated)555 1437 y(from)h(the)i(k)o(eyb)q(oard.)k
+(The)15 b(default)g(is)f(`)p Fs(on)p Ft('.)315 1519 y
+Fs(editing-mode)555 1574 y Ft(The)e Fs(editing-mode)e
+Ft(v)m(ariable)h(con)o(trols)f(the)i(default)f(set)h(of)f(k)o(ey)g
+(bindings.)555 1629 y(By)19 b(default,)f(Readline)h(starts)e(up)i(in)g
+(emacs)f(editing)g(mo)q(de,)h(where)g(the)555 1684 y(k)o(eystrok)o(es)c
+(are)h(most)g(similar)e(to)i(Emacs.)23 b(This)16 b(v)m(ariable)g(can)g
+(b)q(e)h(set)g(to)555 1738 y(either)e(`)p Fs(emacs)p
+Ft(')f(or)g(`)p Fs(vi)p Ft('.)315 1821 y Fs(emacs-mode-string)555
+1875 y Ft(If)j(the)g Fk(sho)o(w-mo)q(de-in-prompt)h Ft(v)m(ariable)e
+(is)g(enabled,)i(this)e(string)g(is)g(dis-)555 1930 y(pla)o(y)o(ed)11
+b(immediately)f(b)q(efore)i(the)g(last)e(line)h(of)g(the)h(primary)e
+(prompt)h(when)555 1985 y(emacs)g(editing)f(mo)q(de)h(is)f(activ)o(e.)
+18 b(The)11 b(v)m(alue)g(is)f(expanded)i(lik)o(e)e(a)h(k)o(ey)f(bind-)
+555 2040 y(ing,)h(so)g(the)h(standard)f(set)g(of)g(meta-)f(and)i(con)o
+(trol-)e(pre\014xes)i(and)g(bac)o(kslash)555 2095 y(escap)q(e)k
+(sequences)h(is)e(a)o(v)m(ailable.)20 b(The)c(`)p Fs(\\1)p
+Ft(')f(and)h(`)p Fs(\\2)p Ft(')e(escap)q(es)j(b)q(egin)f(and)555
+2149 y(end)e(sequences)g(of)e(non-prin)o(ting)g(c)o(haracters,)h(whic)o
+(h)f(can)h(b)q(e)h(used)f(to)g(em-)555 2204 y(b)q(ed)j(a)f(terminal)f
+(con)o(trol)g(sequence)j(in)o(to)d(the)h(mo)q(de)h(string.)j(The)c
+(default)555 2259 y(is)g(`)p Fs(@)p Ft('.)315 2341 y
+Fs(enable-active-region)555 2396 y Fk(p)q(oin)o(t)e Ft(is)f(the)h
+(curren)o(t)f(cursor)h(p)q(osition,)e(and)i Fk(mark)i
+Ft(refers)d(to)g(a)g(sa)o(v)o(ed)h(cur-)555 2451 y(sor)j(p)q(osition)g
+(\(see)g(Section)h(1.4.1)d([Commands)i(F)l(or)g(Mo)o(ving],)f(page)h
+(18\).)555 2506 y(The)23 b(text)g(b)q(et)o(w)o(een)h(the)f(p)q(oin)o(t)
+g(and)g(mark)g(is)g(referred)g(to)g(as)g(the)g Fk(re-)555
+2560 y(gion)p Ft(.)39 b(When)22 b(this)f(v)m(ariable)g(is)g(set)h(to)f
+(`)p Fs(On)p Ft(',)h(Readline)g(allo)o(ws)e(certain)555
+2615 y(commands)f(to)f(designate)g(the)h(region)f(as)g
+Fk(activ)o(e)p Ft(.)30 b(When)19 b(the)f(region)g(is)555
+2670 y(activ)o(e,)h(Readline)g(highligh)o(ts)f(the)h(text)f(in)h(the)g
+(region)g(using)g(the)g(v)m(alue)p eop end
+%%Page: 8 12
+TeXDict begin 8 11 bop 75 -58 a Ft(Chapter)15 b(1:)k(Command)c(Line)h
+(Editing)1075 b(8)555 149 y(of)17 b(the)h Fs(active-region-start-colo)o
+(r)p Ft(,)d(whic)o(h)i(defaults)g(to)g(the)h(string)555
+204 y(that)10 b(enables)h(the)g(terminal's)f(standout)g(mo)q(de.)19
+b(The)11 b(activ)o(e)f(region)h(sho)o(ws)555 259 y(the)16
+b(text)g(inserted)g(b)o(y)f(brac)o(k)o(eted-paste)h(and)g(an)o(y)g
+(matc)o(hing)f(text)h(found)555 314 y(b)o(y)g(incremen)o(tal)g(and)g
+(non-incremen)o(tal)g(history)f(searc)o(hes.)23 b(The)16
+b(default)555 369 y(is)f(`)p Fs(On)p Ft('.)315 460 y
+Fs(enable-bracketed-paste)555 515 y Ft(When)k(set)f(to)f(`)p
+Fs(On)p Ft(',)h(Readline)g(con\014gures)h(the)f(terminal)f(to)g(insert)
+h(eac)o(h)555 570 y(paste)13 b(in)o(to)f(the)h(editing)f(bu\013er)h(as)
+g(a)g(single)f(string)g(of)h(c)o(haracters,)f(instead)555
+624 y(of)h(treating)f(eac)o(h)h(c)o(haracter)f(as)h(if)g(it)f(had)h(b)q
+(een)i(read)e(from)f(the)h(k)o(eyb)q(oard.)555 679 y(This)18
+b(is)g(called)g(putting)g(the)h(terminal)e(in)o(to)h
+Fk(brac)o(k)o(eted)g(paste)g(mo)q(de)s Ft(;)i(it)555
+734 y(prev)o(en)o(ts)15 b(Readline)g(from)f(executing)h(an)o(y)g
+(editing)f(commands)h(b)q(ound)h(to)555 789 y(k)o(ey)f(sequences)h(app)
+q(earing)f(in)g(the)h(pasted)f(text.)k(The)d(default)e(is)h(`)p
+Fs(On)p Ft('.)315 880 y Fs(enable-keypad)555 935 y Ft(When)d(set)f(to)h
+(`)p Fs(on)p Ft(',)e(Readline)i(will)f(try)g(to)g(enable)h(the)g
+(application)e(k)o(eypad)555 990 y(when)k(it)e(is)h(called.)19
+b(Some)13 b(systems)g(need)h(this)f(to)g(enable)g(the)h(arro)o(w)e(k)o
+(eys.)555 1044 y(The)j(default)g(is)g(`)p Fs(off)p Ft('.)315
+1136 y Fs(enable-meta-key)555 1191 y Ft(When)e(set)g(to)f(`)p
+Fs(on)p Ft(',)f(Readline)i(will)f(try)g(to)g(enable)h(an)o(y)f(meta)g
+(mo)q(di\014er)h(k)o(ey)555 1245 y(the)k(terminal)e(claims)h(to)g(supp)
+q(ort)h(when)g(it)f(is)g(called.)24 b(On)17 b(man)o(y)g(termi-)555
+1300 y(nals,)12 b(the)h(Meta)e(k)o(ey)i(is)e(used)i(to)f(send)h(eigh)o
+(t-bit)f(c)o(haracters;)g(this)g(v)m(ariable)555 1355
+y(c)o(hec)o(ks)18 b(for)f(the)h(terminal)f(capabilit)o(y)f(that)h
+(indicates)g(the)h(terminal)f(can)555 1410 y(enable)h(and)g(disable)f
+(a)h(mo)q(de)g(that)f(sets)g(the)h(eigh)o(th)g(bit)f(of)g(a)h(c)o
+(haracter)555 1465 y(\(0200\))12 b(if)i(the)g(Meta)f(k)o(ey)h(is)g
+(held)g(do)o(wn)g(when)h(the)f(c)o(haracter)g(is)f(t)o(yp)q(ed)i(\(a)
+555 1519 y(meta)g(c)o(haracter\).)j(The)e(default)f(is)f(`)p
+Fs(on)p Ft('.)315 1611 y Fs(expand-tilde)555 1665 y Ft(If)j(set)f(to)f
+(`)p Fs(on)p Ft(',)h(Readline)g(attempts)g(tilde)f(expansion)i(when)f
+(it)g(attempts)555 1720 y(w)o(ord)f(completion.)k(The)c(default)g(is)f
+(`)p Fs(off)p Ft('.)315 1812 y Fs(force-meta-prefix)555
+1866 y Ft(If)j(set)f(to)g(`)p Fs(on)p Ft(',)f(Readline)i(mo)q(di\014es)
+f(its)g(b)q(eha)o(vior)g(when)h(binding)f(k)o(ey)h(se-)555
+1921 y(quences)12 b(con)o(taining)e Fl(\\M-)h Ft(or)g
+Fs(Meta-)f Ft(\(see)h Fs(Key)k(Bindings)10 b Ft(in)h(Section)h(1.3.1)
+555 1976 y([Readline)18 b(Init)f(File)g(Syn)o(tax],)g(page)h(4\))f(b)o
+(y)g(con)o(v)o(erting)g(a)g(k)o(ey)h(sequence)555 2031
+y(of)e(the)h(form)g Fl(\\M-)p Fk(C)j Ft(or)c Fs(Meta-)p
+Fk(C)k Ft(to)c(the)h(t)o(w)o(o-c)o(haracter)f(sequence)i
+Fl(ESC)p Fk(C)555 2086 y Ft(\(adding)11 b(the)h(meta)f(pre\014x\).)19
+b(If)12 b Fs(force-meta-prefix)d Ft(is)i(set)h(to)f(`)p
+Fs(off)p Ft(')f(\(the)555 2140 y(default\),)16 b(Readline)h(uses)g(the)
+g(v)m(alue)g(of)f(the)h Fs(convert-meta)e Ft(v)m(ariable)i(to)555
+2195 y(determine)f(whether)g(to)f(p)q(erform)g(this)g(con)o(v)o
+(ersion:)20 b(if)15 b Fs(convert-meta)f Ft(is)555 2250
+y(`)p Fs(on)p Ft(',)c(Readline)h(p)q(erforms)g(the)f(con)o(v)o(ersion)g
+(describ)q(ed)i(ab)q(o)o(v)o(e;)f(if)f(it)g(is)h(`)p
+Fs(off)p Ft(',)555 2305 y(Readline)17 b(con)o(v)o(erts)e
+Fk(C)20 b Ft(to)c(a)g(meta)g(c)o(haracter)g(b)o(y)g(setting)f(the)i
+(eigh)o(th)e(bit)555 2359 y(\(0200\).)j(The)e(default)e(is)h(`)p
+Fs(off)p Ft('.)315 2451 y Fs(history-preserve-point)555
+2506 y Ft(If)21 b(set)g(to)f(`)p Fs(on)p Ft(',)h(the)g(history)f(co)q
(de)h(attempts)f(to)g(place)h(the)g(p)q(oin)o(t)f(\(the)555
-1010 y(curren)o(t)d(cursor)h(p)q(osition\))e(at)h(the)h(same)f(lo)q
-(cation)f(on)i(eac)o(h)g(history)e(line)555 1065 y(retriev)o(ed)i(with)
+2560 y(curren)o(t)d(cursor)h(p)q(osition\))e(at)h(the)h(same)f(lo)q
+(cation)f(on)i(eac)o(h)g(history)e(line)555 2615 y(retriev)o(ed)i(with)
f Fs(previous-history)f Ft(or)i Fs(next-history)p Ft(.)27
-b(The)18 b(default)555 1120 y(is)d(`)p Fs(off)p Ft('.)315
-1206 y Fs(history-size)555 1261 y Ft(Set)20 b(the)f(maxim)o(um)g(n)o
-(um)o(b)q(er)h(of)f(history)f(en)o(tries)h(sa)o(v)o(ed)g(in)g(the)h
-(history)555 1316 y(list.)k(If)17 b(set)g(to)f(zero,)h(an)o(y)f
-(existing)g(history)g(en)o(tries)g(are)h(deleted)g(and)g(no)555
-1371 y(new)f(en)o(tries)f(are)h(sa)o(v)o(ed.)21 b(If)16
-b(set)g(to)f(a)h(v)m(alue)g(less)f(than)h(zero,)g(the)g(n)o(um)o(b)q
-(er)555 1425 y(of)f(history)f(en)o(tries)h(is)f(not)h(limited.)k(By)d
-(default,)e(the)i(n)o(um)o(b)q(er)f(of)g(history)555
-1480 y(en)o(tries)h(is)g(not)g(limited.)22 b(If)17 b(an)g(attempt)e(is)
-h(made)g(to)g(set)h Fj(history-size)h Ft(to)555 1535
-y(a)e(non-n)o(umeric)h(v)m(alue,)g(the)g(maxim)o(um)e(n)o(um)o(b)q(er)i
-(of)g(history)e(en)o(tries)h(will)555 1590 y(b)q(e)g(set)f(to)f(500.)
-315 1676 y Fs(horizontal-scroll-mode)555 1731 y Ft(This)k(v)m(ariable)f
-(can)h(b)q(e)g(set)g(to)f(either)h(`)p Fs(on)p Ft(')f(or)g(`)p
-Fs(off)p Ft('.)27 b(Setting)18 b(it)f(to)g(`)p Fs(on)p
-Ft(')555 1785 y(means)c(that)f(the)i(text)e(of)h(the)g(lines)g(b)q
-(eing)g(edited)g(will)f(scroll)g(horizon)o(tally)555
-1840 y(on)k(a)f(single)g(screen)i(line)e(when)i(they)f(are)f(longer)g
-(than)h(the)g(width)f(of)h(the)555 1895 y(screen,)e(instead)e(of)h
-(wrapping)f(on)o(to)g(a)h(new)g(screen)h(line.)19 b(By)13
-b(default,)g(this)555 1950 y(v)m(ariable)i(is)f(set)h(to)g(`)p
-Fs(off)p Ft('.)315 2036 y Fs(input-meta)555 2091 y Ft(If)h(set)f(to)g
-(`)p Fs(on)p Ft(',)f(Readline)i(will)f(enable)g(eigh)o(t-bit)g(input)g
-(\(it)g(will)f(not)h(clear)555 2146 y(the)20 b(eigh)o(th)f(bit)g(in)h
-(the)g(c)o(haracters)f(it)g(reads\),)h(regardless)f(of)h(what)f(the)555
-2200 y(terminal)i(claims)f(it)i(can)g(supp)q(ort.)40
-b(The)22 b(default)f(v)m(alue)h(is)g(`)p Fs(off)p Ft(',)g(but)555
-2255 y(Readline)12 b(will)f(set)g(it)h(to)f(`)p Fs(on)p
-Ft(')g(if)g(the)h(lo)q(cale)f(con)o(tains)g(eigh)o(t-bit)g(c)o
-(haracters.)555 2310 y(The)k(name)h Fs(meta-flag)e Ft(is)g(a)h(synon)o
-(ym)g(for)g(this)f(v)m(ariable.)315 2396 y Fs(isearch-terminators)555
-2451 y Ft(The)26 b(string)f(of)g(c)o(haracters)g(that)g(should)h
-(terminate)f(an)h(incremen)o(tal)555 2506 y(searc)o(h)12
+b(The)18 b(default)555 2670 y(is)d(`)p Fs(off)p Ft('.)p
+eop end
+%%Page: 9 13
+TeXDict begin 9 12 bop 75 -58 a Ft(Chapter)15 b(1:)k(Command)c(Line)h
+(Editing)1075 b(9)315 149 y Fs(history-size)555 204 y
+Ft(Set)20 b(the)f(maxim)o(um)g(n)o(um)o(b)q(er)h(of)f(history)f(en)o
+(tries)h(sa)o(v)o(ed)g(in)g(the)h(history)555 259 y(list.)k(If)17
+b(set)g(to)f(zero,)h(an)o(y)f(existing)g(history)g(en)o(tries)g(are)h
+(deleted)g(and)g(no)555 314 y(new)f(en)o(tries)f(are)h(sa)o(v)o(ed.)21
+b(If)16 b(set)g(to)f(a)h(v)m(alue)g(less)f(than)h(zero,)g(the)g(n)o(um)
+o(b)q(er)555 369 y(of)f(history)f(en)o(tries)h(is)f(not)h(limited.)k
+(By)d(default,)e(the)i(n)o(um)o(b)q(er)f(of)g(history)555
+423 y(en)o(tries)c(is)h(not)f(limited.)18 b(If)12 b(y)o(ou)f(try)h(to)f
+(set)g Fk(history-size)j Ft(to)d(a)h(non-n)o(umeric)555
+478 y(v)m(alue,)j(the)g(maxim)o(um)f(n)o(um)o(b)q(er)i(of)f(history)f
+(en)o(tries)g(will)g(b)q(e)i(set)f(to)g(500.)315 555
+y Fs(horizontal-scroll-mode)555 610 y Ft(Setting)g(this)h(v)m(ariable)f
+(to)g(`)p Fs(on)p Ft(')g(means)h(that)f(the)h(text)g(of)f(the)h(lines)g
+(b)q(eing)555 665 y(edited)f(will)e(scroll)g(horizon)o(tally)g(on)h(a)h
+(single)e(screen)i(line)g(when)g(the)f(lines)555 719
+y(are)j(longer)f(than)h(the)g(width)f(of)h(the)g(screen,)g(instead)g
+(of)g(wrapping)f(on)o(to)555 774 y(a)k(new)h(screen)h(line.)36
+b(This)20 b(v)m(ariable)h(is)f(automatically)e(set)j(to)f(`)p
+Fs(on)p Ft(')g(for)555 829 y(terminals)14 b(of)h(heigh)o(t)f(1.)20
+b(By)15 b(default,)g(this)f(v)m(ariable)h(is)f(set)h(to)g(`)p
+Fs(off)p Ft('.)315 906 y Fs(input-meta)555 960 y Ft(If)d(set)g(to)f(`)p
+Fs(on)p Ft(',)g(Readline)h(will)e(enable)i(eigh)o(t-bit)f(input)h
+(\(that)e(is,)i(it)f(will)f(not)555 1015 y(clear)17 b(the)g(eigh)o(th)f
+(bit)h(in)g(the)g(c)o(haracters)f(it)h(reads\),)g(regardless)f(of)h
+(what)555 1070 y(the)f(terminal)e(claims)g(it)h(can)h(supp)q(ort.)k
+(The)c(default)f(v)m(alue)h(is)f(`)p Fs(off)p Ft(',)f(but)555
+1125 y(Readline)k(will)e(set)h(it)g(to)g(`)p Fs(on)p
+Ft(')f(if)h(the)h(lo)q(cale)f(con)o(tains)f(c)o(haracters)h(whose)555
+1180 y(enco)q(dings)f(ma)o(y)e(include)h(b)o(ytes)g(with)g(the)g(eigh)o
+(th)g(bit)f(set.)20 b(This)15 b(v)m(ariable)555 1234
+y(is)j(dep)q(enden)o(t)i(on)f(the)f Fs(LC_CTYPE)g Ft(lo)q(cale)g
+(category)l(,)g(and)h(its)f(v)m(alue)h(ma)o(y)555 1289
+y(c)o(hange)f(if)f(the)h(lo)q(cale)g(c)o(hanges.)28 b(The)18
+b(name)g Fs(meta-flag)e Ft(is)i(a)f(synon)o(ym)555 1344
+y(for)e Fs(input-meta)p Ft(.)315 1421 y Fs(isearch-terminators)555
+1475 y Ft(The)26 b(string)f(of)g(c)o(haracters)g(that)g(should)h
+(terminate)f(an)h(incremen)o(tal)555 1530 y(searc)o(h)12
b(without)g(subsequen)o(tly)g(executing)h(the)f(c)o(haracter)g(as)g(a)g
-(command)555 2560 y(\(see)22 b(Section)g(1.2.5)f([Searc)o(hing],)i
+(command)555 1585 y(\(see)22 b(Section)g(1.2.5)f([Searc)o(hing],)i
(page)f(3\).)40 b(If)23 b(this)f(v)m(ariable)f(has)h(not)555
-2615 y(b)q(een)d(giv)o(en)e(a)g(v)m(alue,)i(the)f(c)o(haracters)e
+1640 y(b)q(een)d(giv)o(en)e(a)g(v)m(alue,)i(the)f(c)o(haracters)e
Fs(ESC)i Ft(and)g Fl(C-J)f Ft(will)f(terminate)h(an)555
-2670 y(incremen)o(tal)d(searc)o(h.)p eop end
-%%Page: 8 12
-TeXDict begin 8 11 bop 75 -58 a Ft(Chapter)15 b(1:)k(Command)c(Line)h
-(Editing)1075 b(8)315 149 y Fs(keymap)96 b Ft(Sets)19
-b(Readline's)h(idea)f(of)g(the)g(curren)o(t)h(k)o(eymap)f(for)f(k)o(ey)
-i(binding)f(com-)555 204 y(mands.)41 b(Acceptable)22
-b Fs(keymap)g Ft(names)g(are)f Fs(emacs)p Ft(,)i Fs(emacs-standard)p
-Ft(,)555 259 y Fs(emacs-meta)p Ft(,)49 b Fs(emacs-ctlx)p
+1695 y(incremen)o(tal)d(searc)o(h.)315 1771 y Fs(keymap)96
+b Ft(Sets)32 b(Readline's)g(idea)g(of)g(the)g(curren)o(t)g(k)o(eymap)g
+(for)g(k)o(ey)g(binding)555 1826 y(commands.)j(Built-in)19
+b Fs(keymap)h Ft(names)g(are)g Fs(emacs)p Ft(,)g Fs(emacs-standard)p
+Ft(,)555 1881 y Fs(emacs-meta)p Ft(,)49 b Fs(emacs-ctlx)p
Ft(,)g Fs(vi)p Ft(,)h Fs(vi-move)p Ft(,)f Fs(vi-command)p
-Ft(,)g(and)555 314 y Fs(vi-insert)p Ft(.)40 b Fs(vi)22
+Ft(,)g(and)555 1936 y Fs(vi-insert)p Ft(.)40 b Fs(vi)22
b Ft(is)g(equiv)m(alen)o(t)g(to)g Fs(vi-command)f Ft(\()p
-Fs(vi-move)g Ft(is)h(also)f(a)555 369 y(synon)o(ym\);)h
-Fs(emacs)e Ft(is)g(equiv)m(alen)o(t)g(to)f Fs(emacs-standard)p
-Ft(.)34 b(The)20 b(default)555 423 y(v)m(alue)26 b(is)f
-Fs(emacs)p Ft(.)51 b(The)26 b(v)m(alue)g(of)f(the)h Fs(editing-mode)e
-Ft(v)m(ariable)h(also)555 478 y(a\013ects)14 b(the)i(default)e(k)o
-(eymap.)315 556 y Fs(keyseq-timeout)555 611 y Ft(Sp)q(eci\014es)g(the)f
-(duration)f(Readline)h(will)e(w)o(ait)g(for)h(a)h(c)o(haracter)f(when)h
-(read-)555 666 y(ing)i(an)f(am)o(biguous)g(k)o(ey)h(sequence)h(\(one)f
-(that)f(can)i(form)e(a)g(complete)h(k)o(ey)555 721 y(sequence)j(using)e
-(the)h(input)f(read)h(so)f(far,)g(or)g(can)h(tak)o(e)f(additional)f
-(input)555 776 y(to)h(complete)g(a)g(longer)g(k)o(ey)g(sequence\).)25
-b(If)16 b(no)h(input)f(is)g(receiv)o(ed)h(within)555
-830 y(the)22 b(timeout,)f(Readline)h(will)e(use)i(the)g(shorter)e(but)i
-(complete)f(k)o(ey)h(se-)555 885 y(quence.)e(Readline)13
-b(uses)g(this)f(v)m(alue)h(to)g(determine)f(whether)h(or)g(not)f(input)
-555 940 y(is)j(a)o(v)m(ailable)f(on)h(the)g(curren)o(t)h(input)f
-(source)g(\()p Fs(rl_instream)f Ft(b)o(y)h(default\).)555
-995 y(The)e(v)m(alue)g(is)f(sp)q(eci\014ed)i(in)e(milliseconds,)g(so)g
-(a)g(v)m(alue)h(of)g(1000)e(means)i(that)555 1050 y(Readline)e(will)f
-(w)o(ait)g(one)h(second)h(for)f(additional)e(input.)19
-b(If)11 b(this)g(v)m(ariable)f(is)555 1104 y(set)k(to)f(a)h(v)m(alue)g
-(less)f(than)h(or)g(equal)f(to)h(zero,)f(or)h(to)f(a)h(non-n)o(umeric)g
-(v)m(alue,)555 1159 y(Readline)h(will)e(w)o(ait)g(un)o(til)h(another)g
-(k)o(ey)h(is)f(pressed)h(to)f(decide)i(whic)o(h)e(k)o(ey)555
-1214 y(sequence)i(to)f(complete.)20 b(The)15 b(default)g(v)m(alue)g(is)
-g Fs(500)p Ft(.)315 1292 y Fs(mark-directories)555 1347
-y Ft(If)k(set)g(to)g(`)p Fs(on)p Ft(',)f(completed)h(directory)g(names)
-g(ha)o(v)o(e)f(a)h(slash)g(app)q(ended.)555 1402 y(The)c(default)g(is)g
-(`)p Fs(on)p Ft('.)315 1480 y Fs(mark-modified-lines)555
-1535 y Ft(This)j(v)m(ariable,)f(when)i(set)e(to)h(`)p
-Fs(on)p Ft(',)f(causes)h(Readline)g(to)f(displa)o(y)g(an)h(as-)555
-1590 y(terisk)e(\(`)p Fs(*)p Ft('\))f(at)i(the)f(start)g(of)h(history)e
-(lines)i(whic)o(h)f(ha)o(v)o(e)h(b)q(een)h(mo)q(di\014ed.)555
-1645 y(This)d(v)m(ariable)f(is)h(`)p Fs(off)p Ft(')f(b)o(y)h(default.)
-315 1723 y Fs(mark-symlinked-directories)555 1778 y Ft(If)30
-b(set)f(to)g(`)p Fs(on)p Ft(',)j(completed)e(names)g(whic)o(h)f(are)h
-(sym)o(b)q(olic)f(links)g(to)555 1832 y(directories)34
-b(ha)o(v)o(e)g(a)h(slash)f(app)q(ended)i(\(sub)s(ject)e(to)h(the)f(v)m
-(alue)h(of)555 1887 y Fs(mark-directories)p Ft(\).)17
-b(The)f(default)f(is)f(`)p Fs(off)p Ft('.)315 1965 y
-Fs(match-hidden-files)555 2020 y Ft(This)d(v)m(ariable,)g(when)g(set)g
-(to)g(`)p Fs(on)p Ft(',)f(causes)h(Readline)h(to)e(matc)o(h)h(\014les)g
-(whose)555 2075 y(names)22 b(b)q(egin)g(with)g(a)f(`)p
-Fs(.)p Ft(')h(\(hidden)g(\014les\))g(when)g(p)q(erforming)g(\014lename)
-555 2130 y(completion.)35 b(If)21 b(set)g(to)f(`)p Fs(off)p
-Ft(',)g(the)h(leading)f(`)p Fs(.)p Ft(')g(m)o(ust)g(b)q(e)h(supplied)g
-(b)o(y)555 2185 y(the)c(user)g(in)g(the)g(\014lename)h(to)e(b)q(e)i
-(completed.)25 b(This)17 b(v)m(ariable)f(is)h(`)p Fs(on)p
-Ft(')f(b)o(y)555 2239 y(default.)315 2318 y Fs
-(menu-complete-display-pref)o(ix)555 2373 y Ft(If)h(set)g(to)f(`)p
-Fs(on)p Ft(',)f(men)o(u)i(completion)f(displa)o(ys)g(the)h(common)f
-(pre\014x)i(of)e(the)555 2427 y(list)i(of)g(p)q(ossible)g(completions)g
-(\(whic)o(h)h(ma)o(y)f(b)q(e)h(empt)o(y\))f(b)q(efore)h(cycling)555
-2482 y(through)c(the)g(list.)k(The)c(default)g(is)g(`)p
-Fs(off)p Ft('.)315 2560 y Fs(output-meta)555 2615 y Ft(If)j(set)f(to)g
-(`)p Fs(on)p Ft(',)g(Readline)h(will)f(displa)o(y)g(c)o(haracters)f
-(with)i(the)f(eigh)o(th)g(bit)555 2670 y(set)h(directly)g(rather)f
-(than)h(as)g(a)g(meta-pre\014xed)h(escap)q(e)g(sequence.)30
-b(The)p eop end
-%%Page: 9 13
-TeXDict begin 9 12 bop 75 -58 a Ft(Chapter)15 b(1:)k(Command)c(Line)h
-(Editing)1075 b(9)555 149 y(default)12 b(is)h(`)p Fs(off)p
-Ft(',)e(but)i(Readline)h(will)d(set)i(it)f(to)g(`)p Fs(on)p
-Ft(')g(if)g(the)h(lo)q(cale)f(con)o(tains)555 204 y(eigh)o(t-bit)i(c)o
-(haracters.)315 290 y Fs(page-completions)555 345 y Ft(If)j(set)g(to)f
-(`)p Fs(on)p Ft(',)g(Readline)h(uses)h(an)e(in)o(ternal)g
-Fs(more)p Ft(-lik)o(e)g(pager)h(to)f(displa)o(y)555 400
+Fs(vi-move)g Ft(is)h(also)f(a)555 1991 y(synon)o(ym\);)f
+Fs(emacs)e Ft(is)g(equiv)m(alen)o(t)h(to)f Fs(emacs-standard)p
+Ft(.)29 b(Applications)555 2045 y(ma)o(y)16 b(add)i(additional)d
+(names.)26 b(The)18 b(default)e(v)m(alue)i(is)e Fs(emacs)p
+Ft(;)h(the)h(v)m(alue)555 2100 y(of)d(the)g Fs(editing-mode)f
+Ft(v)m(ariable)g(also)g(a\013ects)h(the)g(default)g(k)o(eymap.)315
+2177 y Fs(keyseq-timeout)555 2232 y Ft(Sp)q(eci\014es)f(the)f(duration)
+f(Readline)h(will)e(w)o(ait)g(for)h(a)h(c)o(haracter)f(when)h(read-)555
+2286 y(ing)i(an)f(am)o(biguous)g(k)o(ey)h(sequence)h(\(one)f(that)f
+(can)i(form)e(a)g(complete)h(k)o(ey)555 2341 y(sequence)j(using)e(the)h
+(input)f(read)h(so)f(far,)g(or)g(can)h(tak)o(e)f(additional)f(input)555
+2396 y(to)21 b(complete)g(a)g(longer)f(k)o(ey)i(sequence\).)39
+b(If)21 b(Readline)h(do)q(esn't)f(receiv)o(e)555 2451
+y(an)o(y)16 b(input)g(within)f(the)h(timeout,)f(it)g(will)f(use)j(the)f
+(shorter)f(but)h(complete)555 2506 y(k)o(ey)k(sequence.)38
+b(Readline)21 b(uses)f(this)g(v)m(alue)h(to)f(determine)h(whether)f(or)
+555 2560 y(not)13 b(input)g(is)g(a)o(v)m(ailable)f(on)i(the)f(curren)o
+(t)h(input)f(source)g(\()p Fs(rl_instream)f Ft(b)o(y)555
+2615 y(default\).)24 b(The)16 b(v)m(alue)h(is)g(sp)q(eci\014ed)g(in)g
+(milliseconds,)e(so)i(a)f(v)m(alue)h(of)f(1000)555 2670
+y(means)h(that)g(Readline)h(will)e(w)o(ait)f(one)j(second)g(for)f
+(additional)e(input.)27 b(If)p eop end
+%%Page: 10 14
+TeXDict begin 10 13 bop 75 -58 a Ft(Chapter)15 b(1:)k(Command)c(Line)h
+(Editing)1053 b(10)555 149 y(this)19 b(v)m(ariable)g(is)h(set)f(to)g(a)
+h(v)m(alue)g(less)f(than)h(or)f(equal)g(to)h(zero,)g(or)f(to)g(a)555
+204 y(non-n)o(umeric)d(v)m(alue,)h(Readline)f(will)f(w)o(ait)g(un)o
+(til)g(another)h(k)o(ey)g(is)f(pressed)555 259 y(to)c(decide)i(whic)o
+(h)f(k)o(ey)g(sequence)h(to)e(complete.)18 b(The)13 b(default)e(v)m
+(alue)h(is)g Fs(500)p Ft(.)315 336 y Fs(mark-directories)555
+391 y Ft(If)19 b(set)g(to)g(`)p Fs(on)p Ft(',)f(completed)h(directory)g
+(names)g(ha)o(v)o(e)f(a)h(slash)g(app)q(ended.)555 445
+y(The)c(default)g(is)g(`)p Fs(on)p Ft('.)315 522 y Fs
+(mark-modified-lines)555 577 y Ft(When)d(this)f(v)m(ariable)g(is)g(set)
+h(to)f(`)p Fs(on)p Ft(',)g(Readline)h(will)e(to)h(displa)o(y)g(an)g
+(asterisk)555 632 y(\(`)p Fs(*)p Ft('\))16 b(at)i(the)f(start)g(of)h
+(history)e(lines)i(whic)o(h)g(ha)o(v)o(e)f(b)q(een)i(mo)q(di\014ed.)28
+b(This)555 686 y(v)m(ariable)15 b(is)f(`)p Fs(off)p Ft(')g(b)o(y)h
+(default.)315 763 y Fs(mark-symlinked-directories)555
+818 y Ft(If)30 b(set)f(to)g(`)p Fs(on)p Ft(',)j(completed)e(names)g
+(whic)o(h)f(are)h(sym)o(b)q(olic)f(links)g(to)555 873
+y(directories)34 b(ha)o(v)o(e)g(a)h(slash)f(app)q(ended,)41
+b(sub)s(ject)34 b(to)h(the)f(v)m(alue)h(of)555 928 y
+Fs(mark-directories)p Ft(.)18 b(The)d(default)g(is)g(`)p
+Fs(off)p Ft('.)315 1004 y Fs(match-hidden-files)555 1059
+y Ft(This)d(v)m(ariable,)g(when)g(set)g(to)g(`)p Fs(on)p
+Ft(',)f(forces)h(Readline)h(to)e(matc)o(h)h(\014les)g(whose)555
+1114 y(names)22 b(b)q(egin)g(with)g(a)f(`)p Fs(.)p Ft(')h(\(hidden)g
+(\014les\))g(when)g(p)q(erforming)g(\014lename)555 1169
+y(completion.)d(If)c(set)f(to)g(`)p Fs(off)p Ft(',)f(the)h(user)h(m)o
+(ust)f(include)h(the)g(leading)f(`)p Fs(.)p Ft(')f(in)555
+1223 y(the)i(\014lename)h(to)e(b)q(e)i(completed.)k(This)15
+b(v)m(ariable)f(is)h(`)p Fs(on)p Ft(')f(b)o(y)h(default.)315
+1300 y Fs(menu-complete-display-pref)o(ix)555 1355 y
+Ft(If)i(set)g(to)f(`)p Fs(on)p Ft(',)f(men)o(u)i(completion)f(displa)o
+(ys)g(the)h(common)f(pre\014x)i(of)e(the)555 1410 y(list)i(of)g(p)q
+(ossible)g(completions)g(\(whic)o(h)h(ma)o(y)f(b)q(e)h(empt)o(y\))f(b)q
+(efore)h(cycling)555 1465 y(through)c(the)g(list.)k(The)c(default)g(is)
+g(`)p Fs(off)p Ft('.)315 1541 y Fs(output-meta)555 1596
+y Ft(If)j(set)f(to)g(`)p Fs(on)p Ft(',)g(Readline)h(will)f(displa)o(y)g
+(c)o(haracters)f(with)i(the)f(eigh)o(th)g(bit)555 1651
+y(set)h(directly)g(rather)f(than)h(as)g(a)g(meta-pre\014xed)h(escap)q
+(e)g(sequence.)30 b(The)555 1706 y(default)12 b(is)h(`)p
+Fs(off)p Ft(',)e(but)i(Readline)h(will)d(set)i(it)f(to)g(`)p
+Fs(on)p Ft(')g(if)g(the)h(lo)q(cale)f(con)o(tains)555
+1760 y(c)o(haracters)k(whose)g(enco)q(dings)h(ma)o(y)f(include)h(b)o
+(ytes)f(with)g(the)g(eigh)o(th)g(bit)555 1815 y(set.)30
+b(This)19 b(v)m(ariable)f(is)g(dep)q(enden)o(t)j(on)d(the)h
+Fs(LC_CTYPE)f Ft(lo)q(cale)g(category)l(,)555 1870 y(and)d(its)g(v)m
+(alue)g(ma)o(y)g(c)o(hange)g(if)g(the)g(lo)q(cale)f(c)o(hanges.)315
+1947 y Fs(page-completions)555 2001 y Ft(If)j(set)g(to)f(`)p
+Fs(on)p Ft(',)g(Readline)h(uses)h(an)e(in)o(ternal)g
+Fs(more)p Ft(-lik)o(e)g(pager)h(to)f(displa)o(y)555 2056
y(a)g(screenful)g(of)g(p)q(ossible)g(completions)f(at)h(a)g(time.)22
-b(This)16 b(v)m(ariable)f(is)h(`)p Fs(on)p Ft(')555 455
-y(b)o(y)f(default.)315 541 y Fs(print-completions-horizont)o(ally)555
-596 y Ft(If)d(set)g(to)f(`)p Fs(on)p Ft(',)h(Readline)g(will)e(displa)o
-(y)i(completions)f(with)g(matc)o(hes)g(sorted)555 650
-y(horizon)o(tally)20 b(in)h(alphab)q(etical)g(order,)i(rather)e(than)g
-(do)o(wn)h(the)g(screen.)555 705 y(The)15 b(default)g(is)g(`)p
-Fs(off)p Ft('.)315 791 y Fs(revert-all-at-newline)555
-846 y Ft(If)g(set)g(to)f(`)p Fs(on)p Ft(',)f(Readline)i(will)f(undo)h
-(all)f(c)o(hanges)g(to)h(history)e(lines)i(b)q(efore)555
-901 y(returning)f(when)h Fs(accept-line)e Ft(is)g(executed.)21
-b(By)14 b(default,)g(history)f(lines)555 956 y(ma)o(y)20
-b(b)q(e)i(mo)q(di\014ed)f(and)g(retain)f(individual)g(undo)i(lists)d
-(across)i(calls)f(to)555 1010 y Fs(readline)p Ft(.)f(The)c(default)g
-(is)g(`)p Fs(off)p Ft('.)315 1097 y Fs(show-all-if-ambiguous)555
-1151 y Ft(This)g(alters)e(the)j(default)e(b)q(eha)o(vior)h(of)f(the)h
-(completion)f(functions.)20 b(If)15 b(set)555 1206 y(to)e(`)p
-Fs(on)p Ft(',)g(w)o(ords)g(whic)o(h)g(ha)o(v)o(e)h(more)f(than)g(one)h
-(p)q(ossible)g(completion)f(cause)555 1261 y(the)20 b(matc)o(hes)f(to)f
-(b)q(e)j(listed)d(immediately)g(instead)h(of)g(ringing)g(the)g(b)q
-(ell.)555 1316 y(The)c(default)g(v)m(alue)h(is)e(`)p
-Fs(off)p Ft('.)315 1402 y Fs(show-all-if-unmodified)555
-1457 y Ft(This)19 b(alters)f(the)i(default)e(b)q(eha)o(vior)h(of)g(the)
-h(completion)e(functions)h(in)g(a)555 1511 y(fashion)12
-b(similar)f(to)h Fj(sho)o(w-all-if-am)o(biguous)p Ft(.)17
+b(This)16 b(v)m(ariable)f(is)h(`)p Fs(on)p Ft(')555 2111
+y(b)o(y)f(default.)315 2188 y Fs(prefer-visible-bell)555
+2243 y Ft(See)h Fs(bell-style)p Ft(.)315 2319 y Fs
+(print-completions-horizont)o(ally)555 2374 y Ft(If)c(set)g(to)f(`)p
+Fs(on)p Ft(',)h(Readline)g(will)e(displa)o(y)i(completions)f(with)g
+(matc)o(hes)g(sorted)555 2429 y(horizon)o(tally)20 b(in)h(alphab)q
+(etical)g(order,)i(rather)e(than)g(do)o(wn)h(the)g(screen.)555
+2484 y(The)15 b(default)g(is)g(`)p Fs(off)p Ft('.)315
+2560 y Fs(revert-all-at-newline)555 2615 y Ft(If)g(set)g(to)f(`)p
+Fs(on)p Ft(',)f(Readline)i(will)f(undo)h(all)f(c)o(hanges)g(to)h
+(history)e(lines)i(b)q(efore)555 2670 y(returning)i(when)i(executing)f
+Fs(accept-line)p Ft(.)26 b(By)18 b(default,)g(history)e(lines)p
+eop end
+%%Page: 11 15
+TeXDict begin 11 14 bop 75 -58 a Ft(Chapter)15 b(1:)k(Command)c(Line)h
+(Editing)1053 b(11)555 149 y(ma)o(y)20 b(b)q(e)i(mo)q(di\014ed)f(and)g
+(retain)f(individual)g(undo)i(lists)d(across)i(calls)f(to)555
+204 y Fs(readline\(\))p Ft(.)e(The)e(default)f(is)f(`)p
+Fs(off)p Ft('.)315 296 y Fs(search-ignore-case)555 350
+y Ft(If)j(set)g(to)g(`)p Fs(on)p Ft(',)f(Readline)h(p)q(erforms)g
+(incremen)o(tal)f(and)h(non-incremen)o(tal)555 405 y(history)12
+b(list)h(searc)o(hes)g(in)g(a)h(case-insensitiv)o(e)e(fashion.)19
+b(The)14 b(default)f(v)m(alue)555 460 y(is)i(`)p Fs(off)p
+Ft('.)315 551 y Fs(show-all-if-ambiguous)555 606 y Ft(This)g(alters)e
+(the)j(default)e(b)q(eha)o(vior)h(of)f(the)h(completion)f(functions.)20
+b(If)15 b(set)555 661 y(to)e(`)p Fs(on)p Ft(',)g(w)o(ords)g(whic)o(h)g
+(ha)o(v)o(e)h(more)f(than)g(one)h(p)q(ossible)g(completion)f(cause)555
+716 y(the)20 b(matc)o(hes)f(to)f(b)q(e)j(listed)d(immediately)g
+(instead)h(of)g(ringing)g(the)g(b)q(ell.)555 770 y(The)c(default)g(v)m
+(alue)h(is)e(`)p Fs(off)p Ft('.)315 862 y Fs(show-all-if-unmodified)555
+917 y Ft(This)19 b(alters)f(the)i(default)e(b)q(eha)o(vior)h(of)g(the)h
+(completion)e(functions)h(in)g(a)555 971 y(fashion)12
+b(similar)f(to)h Fk(sho)o(w-all-if-am)o(biguous)p Ft(.)17
b(If)c(set)f(to)g(`)p Fs(on)p Ft(',)g(w)o(ords)g(whic)o(h)555
-1566 y(ha)o(v)o(e)j(more)g(than)g(one)h(p)q(ossible)f(completion)f
-(without)h(an)o(y)g(p)q(ossible)g(par-)555 1621 y(tial)20
+1026 y(ha)o(v)o(e)j(more)g(than)g(one)h(p)q(ossible)f(completion)f
+(without)h(an)o(y)g(p)q(ossible)g(par-)555 1081 y(tial)20
b(completion)g(\(the)h(p)q(ossible)g(completions)f(don't)h(share)g(a)f
-(common)555 1676 y(pre\014x\))15 b(cause)h(the)f(matc)o(hes)g(to)f(b)q
+(common)555 1136 y(pre\014x\))15 b(cause)h(the)f(matc)o(hes)g(to)f(b)q
(e)i(listed)e(immediately)g(instead)h(of)f(ring-)555
-1731 y(ing)h(the)g(b)q(ell.)20 b(The)15 b(default)g(v)m(alue)g(is)g(`)p
-Fs(off)p Ft('.)315 1817 y Fs(show-mode-in-prompt)555
-1872 y Ft(If)d(set)g(to)g(`)p Fs(on)p Ft(',)f(add)h(a)g(string)f(to)h
+1191 y(ing)h(the)g(b)q(ell.)20 b(The)15 b(default)g(v)m(alue)g(is)g(`)p
+Fs(off)p Ft('.)315 1282 y Fs(show-mode-in-prompt)555
+1337 y Ft(If)d(set)g(to)g(`)p Fs(on)p Ft(',)f(add)h(a)g(string)f(to)h
(the)g(b)q(eginning)g(of)g(the)g(prompt)g(indicating)555
-1926 y(the)17 b(editing)f(mo)q(de:)23 b(emacs,)16 b(vi)g(command,)h(or)
-f(vi)g(insertion.)23 b(The)17 b(mo)q(de)555 1981 y(strings)22
-b(are)g(user-settable)g(\(e.g.,)h Fj(emacs-mo)q(de-string)t
-Ft(\).)41 b(The)23 b(default)555 2036 y(v)m(alue)15 b(is)g(`)p
-Fs(off)p Ft('.)315 2122 y Fs(skip-completed-text)555
-2177 y Ft(If)i(set)f(to)g(`)p Fs(on)p Ft(',)f(this)h(alters)f(the)i
+1391 y(the)17 b(editing)f(mo)q(de:)23 b(emacs,)16 b(vi)g(command,)h(or)
+f(vi)g(insertion.)23 b(The)17 b(mo)q(de)555 1446 y(strings)22
+b(are)g(user-settable)g(\(e.g.,)h Fk(emacs-mo)q(de-string)t
+Ft(\).)41 b(The)23 b(default)555 1501 y(v)m(alue)15 b(is)g(`)p
+Fs(off)p Ft('.)315 1592 y Fs(skip-completed-text)555
+1647 y Ft(If)i(set)f(to)g(`)p Fs(on)p Ft(',)f(this)h(alters)f(the)i
(default)f(completion)f(b)q(eha)o(vior)h(when)h(in-)555
-2232 y(serting)d(a)g(single)g(matc)o(h)g(in)o(to)f(the)i(line.)k(It's)
-14 b(only)g(activ)o(e)g(when)h(p)q(erform-)555 2286 y(ing)i(completion)
+1702 y(serting)d(a)g(single)g(matc)o(h)g(in)o(to)f(the)i(line.)k(It's)
+14 b(only)g(activ)o(e)g(when)h(p)q(erform-)555 1757 y(ing)i(completion)
f(in)h(the)h(middle)f(of)g(a)g(w)o(ord.)25 b(If)18 b(enabled,)g
-(readline)f(do)q(es)555 2341 y(not)j(insert)g(c)o(haracters)f(from)h
+(readline)f(do)q(es)555 1812 y(not)j(insert)g(c)o(haracters)f(from)h
(the)g(completion)f(that)h(matc)o(h)g(c)o(haracters)555
-2396 y(after)e(p)q(oin)o(t)g(in)g(the)g(w)o(ord)g(b)q(eing)h
+1866 y(after)e(p)q(oin)o(t)g(in)g(the)g(w)o(ord)g(b)q(eing)h
(completed,)g(so)f(p)q(ortions)f(of)h(the)h(w)o(ord)555
-2451 y(follo)o(wing)14 b(the)h(cursor)h(are)g(not)f(duplicated.)22
-b(F)l(or)15 b(instance,)g(if)h(this)f(is)g(en-)555 2506
-y(abled,)21 b(attempting)e(completion)g(when)i(the)f(cursor)g(is)g
-(after)g(the)g(`)p Fs(e)p Ft(')f(in)555 2560 y(`)p Fs(Makefile)p
-Ft(')e(will)g(result)h(in)h(`)p Fs(Makefile)p Ft(')e(rather)h(than)h(`)
-p Fs(Makefilefile)p Ft(',)555 2615 y(assuming)e(there)h(is)f(a)g
-(single)g(p)q(ossible)g(completion.)27 b(The)18 b(default)f(v)m(alue)
-555 2670 y(is)e(`)p Fs(off)p Ft('.)p eop end
-%%Page: 10 14
-TeXDict begin 10 13 bop 75 -58 a Ft(Chapter)15 b(1:)k(Command)c(Line)h
-(Editing)1053 b(10)315 149 y Fs(vi-cmd-mode-string)555
-204 y Ft(If)17 b(the)g Fj(sho)o(w-mo)q(de-in-prompt)h
+1921 y(follo)o(wing)14 b(the)h(cursor)h(are)g(not)f(duplicated.)22
+b(F)l(or)15 b(instance,)g(if)h(this)f(is)g(en-)555 1976
+y(abled,)h(attempting)f(completion)g(when)i(the)g(cursor)e(is)h(after)g
+(the)g(\014rst)g(`)p Fs(e)p Ft(')555 2031 y(in)c(`)p
+Fs(Makefile)p Ft(')d(will)i(result)g(in)g(`)p Fs(Makefile)p
+Ft(')f(rather)h(than)h(`)p Fs(Makefilefile)p Ft(',)555
+2086 y(assuming)17 b(there)h(is)f(a)g(single)g(p)q(ossible)g
+(completion.)27 b(The)18 b(default)f(v)m(alue)555 2140
+y(is)e(`)p Fs(off)p Ft('.)315 2232 y Fs(vi-cmd-mode-string)555
+2286 y Ft(If)i(the)g Fk(sho)o(w-mo)q(de-in-prompt)h Ft(v)m(ariable)e
+(is)g(enabled,)i(this)e(string)g(is)g(dis-)555 2341 y(pla)o(y)o(ed)11
+b(immediately)f(b)q(efore)i(the)g(last)e(line)h(of)g(the)h(primary)e
+(prompt)h(when)555 2396 y(vi)16 b(editing)f(mo)q(de)h(is)g(activ)o(e)f
+(and)i(in)f(command)g(mo)q(de.)22 b(The)17 b(v)m(alue)f(is)g(ex-)555
+2451 y(panded)d(lik)o(e)e(a)h(k)o(ey)g(binding,)h(so)e(the)i(standard)e
+(set)h(of)g(meta-)g(and)g(con)o(trol-)555 2506 y(pre\014xes)17
+b(and)f(bac)o(kslash)f(escap)q(e)i(sequences)g(is)f(a)o(v)m(ailable.)21
+b(The)16 b(`)p Fs(\\1)p Ft(')f(and)555 2560 y(`)p Fs(\\2)p
+Ft(')k(escap)q(es)i(b)q(egin)g(and)f(end)h(sequences)h(of)e(non-prin)o
+(ting)f(c)o(haracters,)555 2615 y(whic)o(h)e(can)h(b)q(e)g(used)g(to)f
+(em)o(b)q(ed)h(a)f(terminal)g(con)o(trol)f(sequence)i(in)o(to)f(the)555
+2670 y(mo)q(de)e(string.)k(The)d(default)f(is)f(`)p Fs(\(cmd\))p
+Ft('.)p eop end
+%%Page: 12 16
+TeXDict begin 12 15 bop 75 -58 a Ft(Chapter)15 b(1:)k(Command)c(Line)h
+(Editing)1053 b(12)315 149 y Fs(vi-ins-mode-string)555
+204 y Ft(If)17 b(the)g Fk(sho)o(w-mo)q(de-in-prompt)h
Ft(v)m(ariable)e(is)g(enabled,)i(this)e(string)g(is)g(dis-)555
259 y(pla)o(y)o(ed)11 b(immediately)f(b)q(efore)i(the)g(last)e(line)h
-(of)g(the)h(primary)e(prompt)h(when)555 314 y(vi)16 b(editing)f(mo)q
-(de)h(is)g(activ)o(e)f(and)i(in)f(command)g(mo)q(de.)22
-b(The)17 b(v)m(alue)f(is)g(ex-)555 369 y(panded)e(lik)o(e)f(a)g(k)o(ey)
-g(binding,)h(so)f(the)g(standard)g(set)h(of)f(meta-)g(and)g(con)o(trol)
-555 423 y(pre\014xes)18 b(and)g(bac)o(kslash)f(escap)q(e)h(sequences)g
-(is)f(a)o(v)m(ailable.)26 b(Use)17 b(the)h(`)p Fs(\\1)p
-Ft(')555 478 y(and)12 b(`)p Fs(\\2)p Ft(')f(escap)q(es)i(to)e(b)q(egin)
-h(and)h(end)f(sequences)h(of)f(non-prin)o(ting)f(c)o(harac-)555
-533 y(ters,)k(whic)o(h)g(can)g(b)q(e)h(used)g(to)f(em)o(b)q(ed)h(a)f
-(terminal)f(con)o(trol)g(sequence)j(in)o(to)555 588 y(the)e(mo)q(de)h
-(string.)j(The)c(default)g(is)g(`)p Fs(\(cmd\))p Ft('.)315
-670 y Fs(vi-ins-mode-string)555 725 y Ft(If)i(the)g Fj(sho)o(w-mo)q
-(de-in-prompt)h Ft(v)m(ariable)e(is)g(enabled,)i(this)e(string)g(is)g
-(dis-)555 780 y(pla)o(y)o(ed)11 b(immediately)f(b)q(efore)i(the)g(last)
-e(line)h(of)g(the)h(primary)e(prompt)h(when)555 834 y(vi)17
-b(editing)g(mo)q(de)h(is)f(activ)o(e)f(and)i(in)f(insertion)g(mo)q(de.)
-27 b(The)18 b(v)m(alue)g(is)f(ex-)555 889 y(panded)d(lik)o(e)f(a)g(k)o
-(ey)g(binding,)h(so)f(the)g(standard)g(set)h(of)f(meta-)g(and)g(con)o
-(trol)555 944 y(pre\014xes)18 b(and)g(bac)o(kslash)f(escap)q(e)h
-(sequences)g(is)f(a)o(v)m(ailable.)26 b(Use)17 b(the)h(`)p
-Fs(\\1)p Ft(')555 999 y(and)12 b(`)p Fs(\\2)p Ft(')f(escap)q(es)i(to)e
-(b)q(egin)h(and)h(end)f(sequences)h(of)f(non-prin)o(ting)f(c)o(harac-)
-555 1054 y(ters,)k(whic)o(h)g(can)g(b)q(e)h(used)g(to)f(em)o(b)q(ed)h
-(a)f(terminal)f(con)o(trol)g(sequence)j(in)o(to)555 1108
-y(the)e(mo)q(de)h(string.)j(The)c(default)g(is)g(`)p
-Fs(\(ins\))p Ft('.)315 1191 y Fs(visible-stats)555 1245
-y Ft(If)h(set)g(to)f(`)p Fs(on)p Ft(',)g(a)h(c)o(haracter)f(denoting)g
-(a)h(\014le's)g(t)o(yp)q(e)g(is)f(app)q(ended)j(to)d(the)555
-1300 y(\014lename)g(when)h(listing)e(p)q(ossible)h(completions.)j(The)e
-(default)f(is)f(`)p Fs(off)p Ft('.)75 1382 y(Key)i(Bindings)315
-1437 y(The)21 b(syn)o(tax)f(for)h(con)o(trolling)e(k)o(ey)i(bindings)f
-(in)h(the)g(init)f(\014le)h(is)g(simple.)37 b(First)19
-b(y)o(ou)315 1492 y(need)c(to)e(\014nd)h(the)g(name)g(of)g(the)f
-(command)h(that)f(y)o(ou)h(w)o(an)o(t)f(to)g(c)o(hange.)19
-b(The)14 b(follo)o(wing)315 1547 y(sections)j(con)o(tain)h(tables)f(of)
-g(the)h(command)g(name,)g(the)g(default)g(k)o(eybinding,)g(if)f(an)o(y)
-l(,)315 1601 y(and)e(a)g(short)g(description)g(of)f(what)h(the)g
-(command)g(do)q(es.)315 1670 y(Once)k(y)o(ou)f(kno)o(w)f(the)h(name)g
-(of)g(the)g(command,)g(simply)f(place)h(on)g(a)f(line)h(in)g(the)g
-(init)315 1725 y(\014le)f(the)g(name)g(of)f(the)h(k)o(ey)g(y)o(ou)f
-(wish)h(to)f(bind)h(the)g(command)g(to,)f(a)g(colon,)h(and)g(then)315
-1780 y(the)f(name)g(of)g(the)g(command.)22 b(There)17
+(of)g(the)h(primary)e(prompt)h(when)555 314 y(vi)17 b(editing)g(mo)q
+(de)h(is)f(activ)o(e)f(and)i(in)f(insertion)g(mo)q(de.)27
+b(The)18 b(v)m(alue)g(is)f(ex-)555 369 y(panded)c(lik)o(e)e(a)h(k)o(ey)
+g(binding,)h(so)e(the)i(standard)e(set)h(of)g(meta-)g(and)g(con)o
+(trol-)555 423 y(pre\014xes)17 b(and)f(bac)o(kslash)f(escap)q(e)i
+(sequences)g(is)f(a)o(v)m(ailable.)21 b(The)16 b(`)p
+Fs(\\1)p Ft(')f(and)555 478 y(`)p Fs(\\2)p Ft(')k(escap)q(es)i(b)q
+(egin)g(and)f(end)h(sequences)h(of)e(non-prin)o(ting)f(c)o(haracters,)
+555 533 y(whic)o(h)e(can)h(b)q(e)g(used)g(to)f(em)o(b)q(ed)h(a)f
+(terminal)g(con)o(trol)f(sequence)i(in)o(to)f(the)555
+588 y(mo)q(de)e(string.)k(The)d(default)f(is)f(`)p Fs(\(ins\))p
+Ft('.)315 676 y Fs(visible-stats)555 731 y Ft(If)i(set)g(to)f(`)p
+Fs(on)p Ft(',)g(a)h(c)o(haracter)f(denoting)g(a)h(\014le's)g(t)o(yp)q
+(e)g(is)f(app)q(ended)j(to)d(the)555 786 y(\014lename)g(when)h(listing)
+e(p)q(ossible)h(completions.)j(The)e(default)f(is)f(`)p
+Fs(off)p Ft('.)75 874 y(Key)i(Bindings)315 929 y(The)21
+b(syn)o(tax)f(for)h(con)o(trolling)e(k)o(ey)i(bindings)f(in)h(the)g
+(init)f(\014le)h(is)g(simple.)37 b(First)19 b(y)o(ou)315
+984 y(need)c(to)e(\014nd)h(the)g(name)g(of)g(the)f(command)h(that)f(y)o
+(ou)h(w)o(an)o(t)f(to)g(c)o(hange.)19 b(The)14 b(follo)o(wing)315
+1039 y(sections)j(con)o(tain)h(tables)f(of)g(the)h(command)g(name,)g
+(the)g(default)g(k)o(eybinding,)g(if)f(an)o(y)l(,)315
+1094 y(and)e(a)g(short)g(description)g(of)f(what)h(the)g(command)g(do)q
+(es.)315 1165 y(Once)k(y)o(ou)f(kno)o(w)f(the)h(name)g(of)g(the)g
+(command,)g(simply)f(place)h(on)g(a)f(line)h(in)g(the)g(init)315
+1220 y(\014le)f(the)g(name)g(of)f(the)h(k)o(ey)g(y)o(ou)f(wish)h(to)f
+(bind)h(the)g(command)g(to,)f(a)g(colon,)h(and)g(then)315
+1275 y(the)f(name)g(of)g(the)g(command.)22 b(There)17
b(can)f(b)q(e)h(no)f(space)g(b)q(et)o(w)o(een)h(the)f(k)o(ey)g(name)g
-(and)315 1834 y(the)k(colon)g({)g(that)g(will)f(b)q(e)i(in)o(terpreted)
+(and)315 1330 y(the)k(colon)g({)g(that)g(will)f(b)q(e)i(in)o(terpreted)
f(as)g(part)g(of)g(the)h(k)o(ey)f(name.)35 b(The)21 b(name)f(of)315
-1889 y(the)d(k)o(ey)g(can)h(b)q(e)g(expressed)g(in)f(di\013eren)o(t)f
+1384 y(the)d(k)o(ey)g(can)h(b)q(e)g(expressed)g(in)f(di\013eren)o(t)f
(w)o(a)o(ys,)h(dep)q(ending)h(on)f(what)g(y)o(ou)g(\014nd)h(most)315
-1944 y(comfortable.)315 2012 y(In)h(addition)e(to)g(command)h(names,)g
-(readline)g(allo)o(ws)e(k)o(eys)i(to)f(b)q(e)i(b)q(ound)g(to)e(a)h
-(string)315 2067 y(that)c(is)h(inserted)g(when)h(the)f(k)o(ey)g(is)g
-(pressed)h(\(a)e Fj(macro)r Ft(\).)315 2149 y Fj(k)o(eyname)s
-Ft(:)19 b Fj(function-name)f Ft(or)d Fj(macro)555 2204
-y(k)o(eyname)i Ft(is)d(the)g(name)h(of)f(a)g(k)o(ey)g(sp)q(elled)h(out)
-f(in)g(English.)19 b(F)l(or)13 b(example:)675 2273 y
-Fs(Control-u:)22 b(universal-argument)675 2328 y(Meta-Rubout:)g
-(backward-kill-word)675 2382 y(Control-o:)g(">)i(output")555
-2451 y Ft(In)48 b(the)f(ab)q(o)o(v)o(e)g(example,)55
+1439 y(comfortable.)315 1511 y(In)f(addition)f(to)h(command)f(names,)h
+(Readline)g(allo)o(ws)e(k)o(eys)i(to)f(b)q(e)i(b)q(ound)f(to)f(a)h
+(string)315 1566 y(that)g(is)g(inserted)g(when)h(the)g(k)o(ey)f(is)g
+(pressed)h(\(a)f Fk(macro)r Ft(\).)26 b(The)18 b(di\013erence)f(b)q(et)
+o(w)o(een)h(a)315 1620 y(macro)c(and)i(a)f(command)g(is)g(that)f(a)h
+(macro)f(is)h(enclosed)h(in)f(single)f(or)h(double)g(quotes.)315
+1709 y Fk(k)o(eyname)s Ft(:)k Fk(function-name)f Ft(or)d
+Fk(macro)555 1764 y(k)o(eyname)i Ft(is)d(the)g(name)h(of)f(a)g(k)o(ey)g
+(sp)q(elled)h(out)f(in)g(English.)19 b(F)l(or)13 b(example:)675
+1835 y Fs(Control-u:)22 b(universal-argument)675 1890
+y(Meta-Rubout:)g(backward-kill-word)675 1945 y(Control-o:)g(">)i
+(output")555 2017 y Ft(In)48 b(the)f(example)g(ab)q(o)o(v)o(e,)55
b Fl(C-u)46 b Ft(is)h(b)q(ound)h(to)f(the)g(function)555
-2506 y Fs(universal-argument)p Ft(,)61 b Fl(M-DEL)54
-b Ft(is)g(b)q(ound)i(to)e(the)g(function)555 2560 y Fs
+2071 y Fs(universal-argument)p Ft(,)61 b Fl(M-DEL)54
+b Ft(is)g(b)q(ound)i(to)e(the)g(function)555 2126 y Fs
(backward-kill-word)p Ft(,)37 b(and)e Fl(C-o)g Ft(is)f(b)q(ound)i(to)e
-(run)i(the)f(macro)555 2615 y(expressed)24 b(on)e(the)h(righ)o(t)f
+(run)i(the)f(macro)555 2181 y(expressed)24 b(on)e(the)h(righ)o(t)f
(hand)h(side)g(\(that)f(is,)i(to)e(insert)g(the)h(text)g(`)p
-Fs(>)555 2670 y(output)p Ft(')14 b(in)o(to)g(the)h(line\).)p
+Fs(>)555 2236 y(output)p Ft(')14 b(in)o(to)g(the)h(line\).)555
+2308 y(This)e(k)o(ey)g(binding)g(syn)o(tax)g(recognizes)g(a)g(n)o(um)o
+(b)q(er)g(of)g(sym)o(b)q(olic)g(c)o(haracter)555 2362
+y(names:)21 b Fk(DEL)p Ft(,)15 b Fk(ESC)p Ft(,)h Fk(ESCAPE)p
+Ft(,)f Fk(LFD)p Ft(,)h Fk(NEWLINE)p Ft(,)g Fk(RET)p Ft(,)g
+Fk(RETURN)p Ft(,)555 2417 y Fk(R)o(UBOUT)p Ft(,)g Fk(SP)l(A)o(CE)p
+Ft(,)e Fk(SPC)p Ft(,)h(and)g Fk(T)l(AB)p Ft(.)315 2506
+y Fs(")p Fk(k)o(eyseq)q Fs(")p Ft(:)20 b Fk(function-name)d
+Ft(or)e Fk(macro)555 2560 y(k)o(eyseq)c Ft(di\013ers)f(from)g
+Fk(k)o(eyname)i Ft(ab)q(o)o(v)o(e)e(in)g(that)g(strings)f(denoting)h
+(an)g(en)o(tire)555 2615 y(k)o(ey)h(sequence)h(can)f(b)q(e)h(sp)q
+(eci\014ed,)h(b)o(y)e(placing)f(the)i(k)o(ey)e(sequence)j(in)e(double)
+555 2670 y(quotes.)22 b(Some)16 b Fm(gnu)g Ft(Emacs)f(st)o(yle)g(k)o
+(ey)h(escap)q(es)h(can)f(b)q(e)g(used,)h(as)e(in)h(the)p
eop end
-%%Page: 11 15
-TeXDict begin 11 14 bop 75 -58 a Ft(Chapter)15 b(1:)k(Command)c(Line)h
-(Editing)1053 b(11)555 149 y(A)31 b(n)o(um)o(b)q(er)g(of)g(sym)o(b)q
-(olic)f(c)o(haracter)g(names)h(are)f(recognized)h(while)555
-204 y(pro)q(cessing)20 b(this)f(k)o(ey)h(binding)g(syn)o(tax:)28
-b Fj(DEL)p Ft(,)21 b Fj(ESC)p Ft(,)g Fj(ESCAPE)p Ft(,)g
-Fj(LFD)p Ft(,)555 259 y Fj(NEWLINE)p Ft(,)15 b Fj(RET)p
-Ft(,)g Fj(RETURN)p Ft(,)h Fj(R)o(UBOUT)p Ft(,)g Fj(SP)l(A)o(CE)p
-Ft(,)e Fj(SPC)p Ft(,)h(and)g Fj(T)l(AB)p Ft(.)315 338
-y Fs(")p Fj(k)o(eyseq)q Fs(")p Ft(:)20 b Fj(function-name)d
-Ft(or)e Fj(macro)555 393 y(k)o(eyseq)i Ft(di\013ers)d(from)h
-Fj(k)o(eyname)j Ft(ab)q(o)o(v)o(e)d(in)h(that)e(strings)h(denoting)g
-(an)g(en-)555 448 y(tire)h(k)o(ey)h(sequence)h(can)f(b)q(e)g(sp)q
-(eci\014ed,)h(b)o(y)f(placing)f(the)h(k)o(ey)g(sequence)h(in)555
-503 y(double)d(quotes.)k(Some)c Fm(gnu)g Ft(Emacs)f(st)o(yle)g(k)o(ey)h
-(escap)q(es)g(can)g(b)q(e)g(used,)g(as)555 558 y(in)i(the)g(follo)o
-(wing)d(example,)j(but)g(the)g(sp)q(ecial)g(c)o(haracter)f(names)h(are)
-f(not)555 612 y(recognized.)675 680 y Fs("\\C-u":)23
-b(universal-argument)675 734 y("\\C-x\\C-r":)f(re-read-init-file)675
-789 y("\\e[11~":)h("Function)f(Key)i(1")555 856 y Ft(In)33
-b(the)f(ab)q(o)o(v)o(e)g(example,)k Fl(C-u)c Ft(is)g(again)f(b)q(ound)i
-(to)f(the)g(function)555 911 y Fs(universal-argument)19
-b Ft(\(just)j(as)f(it)g(w)o(as)g(in)h(the)g(\014rst)f(example\),)i(`)p
-Fl(C-x)555 966 y(C-r)p Ft(')14 b(is)h(b)q(ound)h(to)f(the)g(function)g
-Fs(re-read-init-file)p Ft(,)d(and)k(`)p Fs(ESC)e([)h(1)g(1)555
-1021 y(~)p Ft(')g(is)f(b)q(ound)j(to)d(insert)h(the)g(text)g(`)p
-Fs(Function)e(Key)i(1)p Ft('.)315 1100 y(The)g(follo)o(wing)e
-Fm(gnu)h Ft(Emacs)h(st)o(yle)f(escap)q(e)i(sequences)g(are)e(a)o(v)m
-(ailable)g(when)h(sp)q(ecifying)315 1155 y(k)o(ey)g(sequences:)315
-1234 y Fl(\\C-)168 b Ft(con)o(trol)14 b(pre\014x)315
-1314 y Fl(\\M-)168 b Ft(meta)15 b(pre\014x)315 1393 y
-Fl(\\e)192 b Ft(an)15 b(escap)q(e)h(c)o(haracter)315
-1473 y Fl(\\\\)192 b Ft(bac)o(kslash)315 1552 y Fl(\\)p
-Fs(")g(")p Ft(,)15 b(a)g(double)g(quotation)f(mark)315
-1632 y Fl(\\')192 b Fs(')p Ft(,)15 b(a)g(single)f(quote)h(or)g(ap)q
-(ostrophe)315 1711 y(In)f(addition)f(to)h(the)f Fm(gnu)h
+%%Page: 13 17
+TeXDict begin 13 16 bop 75 -58 a Ft(Chapter)15 b(1:)k(Command)c(Line)h
+(Editing)1053 b(13)555 149 y(follo)o(wing)20 b(example,)k(but)f(none)g
+(of)f(the)h(sp)q(ecial)g(c)o(haracter)f(names)g(are)555
+204 y(recognized.)675 271 y Fs("\\C-u":)h(universal-argument)675
+326 y("\\C-x\\C-r":)f(re-read-init-file)675 381 y("\\e[11~":)h
+("Function)f(Key)i(1")555 448 y Ft(In)33 b(the)f(ab)q(o)o(v)o(e)g
+(example,)k Fl(C-u)c Ft(is)g(again)f(b)q(ound)i(to)f(the)g(function)555
+503 y Fs(universal-argument)19 b Ft(\(just)j(as)f(it)g(w)o(as)g(in)h
+(the)g(\014rst)f(example\),)i(`)p Fl(C-x)555 558 y(C-r)p
+Ft(')14 b(is)h(b)q(ound)h(to)f(the)g(function)g Fs(re-read-init-file)p
+Ft(,)d(and)k(`)p Fs(ESC)e([)h(1)g(1)555 612 y(~)p Ft(')g(is)f(b)q(ound)
+j(to)d(insert)h(the)g(text)g(`)p Fs(Function)e(Key)i(1)p
+Ft('.)315 692 y(The)g(follo)o(wing)e Fm(gnu)h Ft(Emacs)h(st)o(yle)f
+(escap)q(e)i(sequences)g(are)e(a)o(v)m(ailable)g(when)h(sp)q(ecifying)
+315 747 y(k)o(ey)g(sequences:)315 826 y Fl(\\C-)168 b
+Ft(A)15 b(con)o(trol)f(pre\014x.)315 906 y Fl(\\M-)168
+b Ft(Adding)17 b(the)g(meta)f(pre\014x)h(or)g(con)o(v)o(erting)e(the)i
+(follo)o(wing)e(c)o(haracter)h(to)g(a)555 960 y(meta)c(c)o(haracter,)g
+(as)h(describ)q(ed)h(ab)q(o)o(v)o(e)e(under)i Fs(force-meta-prefix)c
+Ft(\(see)555 1015 y Fs(Variable)k(Settings)21 b Ft(in)h(Section)f
+(1.3.1)g([Readline)g(Init)h(File)f(Syn)o(tax],)555 1070
+y(page)15 b(4\).)315 1149 y Fl(\\e)192 b Ft(An)15 b(escap)q(e)h(c)o
+(haracter.)315 1229 y Fl(\\\\)192 b Ft(Bac)o(kslash.)315
+1308 y Fl(\\)p Fs(")g(")p Ft(,)15 b(a)g(double)g(quotation)f(mark.)315
+1388 y Fl(\\')192 b Fs(')p Ft(,)15 b(a)g(single)f(quote)h(or)g(ap)q
+(ostrophe.)315 1467 y(In)f(addition)f(to)h(the)f Fm(gnu)h
Ft(Emacs)g(st)o(yle)e(escap)q(e)j(sequences,)g(a)e(second)i(set)e(of)h
-(bac)o(kslash)315 1766 y(escap)q(es)i(is)f(a)o(v)m(ailable:)315
-1845 y Fs(\\a)192 b Ft(alert)14 b(\(b)q(ell\))315 1925
-y Fs(\\b)192 b Ft(bac)o(kspace)315 2004 y Fs(\\d)g Ft(delete)315
-2084 y Fs(\\f)g Ft(form)14 b(feed)315 2163 y Fs(\\n)192
-b Ft(newline)315 2243 y Fs(\\r)g Ft(carriage)14 b(return)315
-2322 y Fs(\\t)192 b Ft(horizon)o(tal)14 b(tab)315 2401
-y Fs(\\v)192 b Ft(v)o(ertical)14 b(tab)315 2481 y Fs(\\)p
-Fl(nnn)144 b Ft(the)17 b(eigh)o(t-bit)f(c)o(haracter)h(whose)g(v)m
-(alue)h(is)e(the)i(o)q(ctal)e(v)m(alue)i Fj(nnn)g Ft(\(one)f(to)555
-2536 y(three)e(digits\))315 2615 y Fs(\\x)p Fl(HH)144
-b Ft(the)19 b(eigh)o(t-bit)f(c)o(haracter)h(whose)g(v)m(alue)g(is)g
-(the)g(hexadecimal)g(v)m(alue)g Fj(HH)555 2670 y Ft(\(one)c(or)g(t)o(w)
-o(o)f(hex)h(digits\))p eop end
-%%Page: 12 16
-TeXDict begin 12 15 bop 75 -58 a Ft(Chapter)15 b(1:)k(Command)c(Line)h
-(Editing)1053 b(12)315 149 y(When)19 b(en)o(tering)f(the)h(text)f(of)g
+(bac)o(kslash)315 1522 y(escap)q(es)i(is)f(a)o(v)m(ailable:)315
+1601 y Fs(\\a)192 b Ft(alert)14 b(\(b)q(ell\))315 1681
+y Fs(\\b)192 b Ft(bac)o(kspace)315 1760 y Fs(\\d)g Ft(delete)315
+1840 y Fs(\\f)g Ft(form)14 b(feed)315 1919 y Fs(\\n)192
+b Ft(newline)315 1999 y Fs(\\r)g Ft(carriage)14 b(return)315
+2078 y Fs(\\t)192 b Ft(horizon)o(tal)14 b(tab)315 2158
+y Fs(\\v)192 b Ft(v)o(ertical)14 b(tab)315 2237 y Fs(\\)p
+Fl(nnn)144 b Ft(The)16 b(eigh)o(t-bit)f(c)o(haracter)g(whose)h(v)m
+(alue)g(is)f(the)h(o)q(ctal)f(v)m(alue)h Fk(nnn)h Ft(\(one)f(to)555
+2292 y(three)f(digits\).)315 2371 y Fs(\\x)p Fl(HH)144
+b Ft(The)18 b(eigh)o(t-bit)e(c)o(haracter)h(whose)g(v)m(alue)h(is)f
+(the)g(hexadecimal)g(v)m(alue)h Fk(HH)555 2426 y Ft(\(one)d(or)g(t)o(w)
+o(o)f(hex)h(digits\).)315 2506 y(When)k(en)o(tering)f(the)h(text)f(of)g
(a)h(macro,)f(single)g(or)g(double)h(quotes)g(m)o(ust)f(b)q(e)h(used)h
-(to)315 204 y(indicate)10 b(a)h(macro)f(de\014nition.)18
-b(Unquoted)11 b(text)f(is)h(assumed)f(to)h(b)q(e)g(a)f(function)h
-(name.)18 b(In)315 259 y(the)11 b(macro)f(b)q(o)q(dy)l(,)i(the)f(bac)o
-(kslash)f(escap)q(es)h(describ)q(ed)h(ab)q(o)o(v)o(e)e(are)g(expanded.)
-20 b(Bac)o(kslash)315 314 y(will)f(quote)g(an)o(y)h(other)g(c)o
-(haracter)f(in)h(the)g(macro)f(text,)h(including)g(`)p
-Fs(")p Ft(')f(and)h(`)p Fs(')p Ft('.)34 b(F)l(or)315
-369 y(example,)13 b(the)g(follo)o(wing)d(binding)j(will)f(mak)o(e)g(`)p
-Fl(C-x)i Fs(\\)p Ft(')f(insert)f(a)h(single)f(`)p Fs(\\)p
-Ft(')g(in)o(to)g(the)h(line:)435 436 y Fs("\\C-x\\\\":)23
-b("\\\\")75 537 y Fi(1.3.2)30 b(Conditional)20 b(Init)g(Constructs)75
-610 y Ft(Readline)f(implemen)o(ts)e(a)h(facilit)o(y)f(similar)f(in)i
-(spirit)g(to)f(the)i(conditional)e(compilation)f(features)i(of)75
-665 y(the)d(C)h(prepro)q(cessor)f(whic)o(h)g(allo)o(ws)f(k)o(ey)h
-(bindings)g(and)h(v)m(ariable)e(settings)h(to)f(b)q(e)i(p)q(erformed)g
-(as)f(the)75 720 y(result)g(of)f(tests.)20 b(There)15
-b(are)g(four)g(parser)g(directiv)o(es)f(used.)75 801
-y Fs($if)168 b Ft(The)16 b Fs($if)f Ft(construct)g(allo)o(ws)f
-(bindings)i(to)f(b)q(e)h(made)g(based)g(on)f(the)h(editing)f(mo)q(de,)h
-(the)315 856 y(terminal)h(b)q(eing)h(used,)h(or)f(the)g(application)f
-(using)h(Readline.)29 b(The)18 b(text)g(of)g(the)g(test,)315
-910 y(after)c(an)o(y)g(comparison)g(op)q(erator,)g(extends)h(to)f(the)h
-(end)g(of)g(the)g(line;)f(unless)h(otherwise)315 965
+(to)315 2560 y(indicate)15 b(a)h(macro)f(de\014nition.)22
+b(Unquoted)16 b(text)g(is)f(assumed)h(to)f(b)q(e)i(a)f(function)f
+(name.)315 2615 y(Tthe)d(bac)o(kslash)f(escap)q(es)i(describ)q(ed)g(ab)
+q(o)o(v)o(e)e(are)h(expanded)h(in)f(the)g(macro)f(b)q(o)q(dy)l(.)20
+b(Bac)o(k-)315 2670 y(slash)e(will)g(quote)g(an)o(y)h(other)f(c)o
+(haracter)g(in)h(the)g(macro)f(text,)h(including)f(`)p
+Fs(")p Ft(')g(and)h(`)p Fs(')p Ft('.)p eop end
+%%Page: 14 18
+TeXDict begin 14 17 bop 75 -58 a Ft(Chapter)15 b(1:)k(Command)c(Line)h
+(Editing)1053 b(14)315 149 y(F)l(or)14 b(example,)f(the)i(follo)o(wing)
+d(binding)i(will)f(mak)o(e)g(`)p Fl(C-x)i Fs(\\)p Ft(')e(insert)h(a)g
+(single)f(`)p Fs(\\)p Ft(')h(in)o(to)f(the)315 204 y(line:)435
+271 y Fs("\\C-x\\\\":)23 b("\\\\")75 370 y Fi(1.3.2)30
+b(Conditional)20 b(Init)g(Constructs)75 443 y Ft(Readline)f(implemen)o
+(ts)e(a)h(facilit)o(y)f(similar)f(in)i(spirit)g(to)f(the)i(conditional)
+e(compilation)f(features)i(of)75 498 y(the)d(C)h(prepro)q(cessor)f
+(whic)o(h)g(allo)o(ws)f(k)o(ey)h(bindings)g(and)h(v)m(ariable)e
+(settings)h(to)f(b)q(e)i(p)q(erformed)g(as)f(the)75 553
+y(result)g(of)f(tests.)20 b(There)15 b(are)g(four)g(parser)g(directiv)o
+(es)f(a)o(v)m(ailable.)75 632 y Fs($if)168 b Ft(The)16
+b Fs($if)f Ft(construct)g(allo)o(ws)f(bindings)i(to)f(b)q(e)h(made)g
+(based)g(on)f(the)h(editing)f(mo)q(de,)h(the)315 687
+y(terminal)h(b)q(eing)h(used,)h(or)f(the)g(application)f(using)h
+(Readline.)29 b(The)18 b(text)g(of)g(the)g(test,)315
+741 y(after)c(an)o(y)g(comparison)g(op)q(erator,)g(extends)h(to)f(the)h
+(end)g(of)g(the)g(line;)f(unless)h(otherwise)315 796
y(noted,)g(no)g(c)o(haracters)f(are)h(required)h(to)e(isolate)g(it.)315
-1046 y Fs(mode)144 b Ft(The)15 b Fs(mode=)g Ft(form)f(of)h(the)g
+875 y Fs(mode)144 b Ft(The)15 b Fs(mode=)g Ft(form)f(of)h(the)g
Fs($if)f Ft(directiv)o(e)h(is)f(used)i(to)e(test)h(whether)g(Read-)555
-1100 y(line)21 b(is)g(in)h Fs(emacs)f Ft(or)g Fs(vi)g
+930 y(line)21 b(is)g(in)h Fs(emacs)f Ft(or)g Fs(vi)g
Ft(mo)q(de.)40 b(This)21 b(ma)o(y)g(b)q(e)h(used)g(in)g(conjunction)555
-1155 y(with)d(the)h(`)p Fs(set)14 b(keymap)p Ft(')19
-b(command,)h(for)f(instance,)h(to)f(set)h(bindings)f(in)555
-1210 y(the)d Fs(emacs-standard)e Ft(and)i Fs(emacs-ctlx)e
-Ft(k)o(eymaps)i(only)f(if)g(Readline)h(is)555 1265 y(starting)e(out)g
-(in)h Fs(emacs)g Ft(mo)q(de.)315 1345 y Fs(term)144 b
-Ft(The)14 b Fs(term=)e Ft(form)h(ma)o(y)g(b)q(e)h(used)g(to)f(include)h
-(terminal-sp)q(eci\014c)f(k)o(ey)g(bind-)555 1400 y(ings,)18
-b(p)q(erhaps)h(to)e(bind)h(the)h(k)o(ey)e(sequences)j(output)e(b)o(y)g
-(the)g(terminal's)555 1455 y(function)12 b(k)o(eys.)18
-b(The)13 b(w)o(ord)e(on)h(the)g(righ)o(t)f(side)g(of)h(the)g(`)p
-Fs(=)p Ft(')f(is)g(tested)h(against)555 1510 y(b)q(oth)j(the)g(full)g
-(name)g(of)f(the)h(terminal)f(and)h(the)g(p)q(ortion)g(of)f(the)h
-(terminal)555 1565 y(name)i(b)q(efore)g(the)g(\014rst)f(`)p
-Fs(-)p Ft('.)24 b(This)16 b(allo)o(ws)f Fs(sun)h Ft(to)g(matc)o(h)h(b)q
-(oth)f Fs(sun)h Ft(and)555 1619 y Fs(sun-cmd)p Ft(,)d(for)g(instance.)
-315 1700 y Fs(version)72 b Ft(The)23 b Fs(version)e Ft(test)h(ma)o(y)f
-(b)q(e)i(used)g(to)f(p)q(erform)g(comparisons)f(against)555
-1755 y(sp)q(eci\014c)h(Readline)f(v)o(ersions.)36 b(The)21
+985 y(with)d(the)h(`)p Fs(set)14 b(keymap)p Ft(')19 b(command,)h(for)f
+(instance,)h(to)f(set)h(bindings)f(in)555 1039 y(the)d
+Fs(emacs-standard)e Ft(and)i Fs(emacs-ctlx)e Ft(k)o(eymaps)i(only)f(if)
+g(Readline)h(is)555 1094 y(starting)e(out)g(in)h Fs(emacs)g
+Ft(mo)q(de.)315 1173 y Fs(term)144 b Ft(The)14 b Fs(term=)e
+Ft(form)h(ma)o(y)g(b)q(e)h(used)g(to)f(include)h(terminal-sp)q
+(eci\014c)f(k)o(ey)g(bind-)555 1228 y(ings,)18 b(p)q(erhaps)h(to)e
+(bind)h(the)h(k)o(ey)e(sequences)j(output)e(b)o(y)g(the)g(terminal's)
+555 1283 y(function)12 b(k)o(eys.)18 b(The)13 b(w)o(ord)e(on)h(the)g
+(righ)o(t)f(side)g(of)h(the)g(`)p Fs(=)p Ft(')f(is)g(tested)h(against)
+555 1337 y(b)q(oth)j(the)g(full)g(name)g(of)f(the)h(terminal)f(and)h
+(the)g(p)q(ortion)g(of)f(the)h(terminal)555 1392 y(name)h(b)q(efore)h
+(the)f(\014rst)g(`)p Fs(-)p Ft('.)23 b(This)16 b(allo)o(ws)e
+Fs(xterm)i Ft(to)f(matc)o(h)h(b)q(oth)h Fs(xterm)555
+1447 y Ft(and)e Fs(xterm-256color)p Ft(,)e(for)i(instance.)315
+1526 y Fs(version)72 b Ft(The)23 b Fs(version)e Ft(test)h(ma)o(y)f(b)q
+(e)i(used)g(to)f(p)q(erform)g(comparisons)f(against)555
+1581 y(sp)q(eci\014c)h(Readline)f(v)o(ersions.)36 b(The)21
b Fs(version)f Ft(expands)h(to)f(the)h(curren)o(t)555
-1809 y(Readline)12 b(v)o(ersion.)18 b(The)12 b(set)g(of)g(comparison)f
+1636 y(Readline)12 b(v)o(ersion.)18 b(The)12 b(set)g(of)g(comparison)f
(op)q(erators)g(includes)h(`)p Fs(=)p Ft(')f(\(and)555
-1864 y(`)p Fs(==)p Ft('\),)j(`)p Fs(!=)p Ft(',)h(`)p
+1690 y(`)p Fs(==)p Ft('\),)j(`)p Fs(!=)p Ft(',)h(`)p
Fs(<=)p Ft(',)g(`)p Fs(>=)p Ft(',)g(`)p Fs(<)p Ft(',)f(and)j(`)p
Fs(>)p Ft('.)k(The)16 b(v)o(ersion)f(n)o(um)o(b)q(er)i(supplied)f(on)
-555 1919 y(the)h(righ)o(t)f(side)h(of)f(the)i(op)q(erator)e(consists)g
-(of)h(a)f(ma)s(jor)g(v)o(ersion)g(n)o(um)o(b)q(er,)555
-1974 y(an)23 b(optional)e(decimal)h(p)q(oin)o(t,)i(and)f(an)f(optional)
-g(minor)g(v)o(ersion)g(\(e.g.,)555 2029 y(`)p Fs(7.1)p
-Ft('\).)c(If)c(the)g(minor)f(v)o(ersion)g(is)g(omitted,)g(it)g(is)h
-(assumed)g(to)f(b)q(e)h(`)p Fs(0)p Ft('.)19 b(The)555
-2083 y(op)q(erator)d(ma)o(y)g(b)q(e)h(separated)g(from)f(the)h(string)e
-Fs(version)h Ft(and)h(from)f(the)555 2138 y(v)o(ersion)j(n)o(um)o(b)q
-(er)g(argumen)o(t)g(b)o(y)g(whitespace.)32 b(The)20 b(follo)o(wing)d
-(example)555 2193 y(sets)e(a)g(v)m(ariable)f(if)h(the)g(Readline)h(v)o
-(ersion)e(b)q(eing)i(used)f(is)g(7.0)f(or)h(new)o(er:)675
-2261 y Fs($if)23 b(version)g(>=)h(7.0)675 2315 y(set)f
-(show-mode-in-prompt)f(on)675 2370 y($endif)315 2451
-y(application)555 2506 y Ft(The)11 b Fj(application)f
+555 1745 y(the)c(righ)o(t)e(side)h(of)h(the)f(op)q(erator)g(consists)g
+(of)g(a)g(ma)s(jor)f(v)o(ersion)h(n)o(um)o(b)q(er,)h(an)555
+1800 y(optional)h(decimal)g(p)q(oin)o(t,)h(and)g(an)g(optional)f(minor)
+g(v)o(ersion)g(\(e.g.,)g(`)p Fs(7.1)p Ft('\).)555 1855
+y(If)g(the)f(minor)g(v)o(ersion)g(is)f(omitted,)h(it)g(defaults)g(to)f
+(`)p Fs(0)p Ft('.)18 b(The)13 b(op)q(erator)f(ma)o(y)555
+1910 y(b)q(e)i(separated)e(from)g(the)h(string)f Fs(version)g
+Ft(and)h(from)f(the)h(v)o(ersion)g(n)o(um)o(b)q(er)555
+1964 y(argumen)o(t)j(b)o(y)h(whitespace.)25 b(The)17
+b(follo)o(wing)d(example)j(sets)g(a)f(v)m(ariable)g(if)555
+2019 y(the)f(Readline)h(v)o(ersion)e(b)q(eing)i(used)f(is)g(7.0)f(or)h
+(new)o(er:)675 2086 y Fs($if)23 b(version)g(>=)h(7.0)675
+2141 y(set)f(show-mode-in-prompt)f(on)675 2196 y($endif)315
+2274 y(application)555 2329 y Ft(The)11 b Fk(application)f
Ft(construct)h(is)f(used)i(to)e(include)h(application-sp)q(eci\014c)g
-(set-)555 2560 y(tings.)18 b(Eac)o(h)12 b(program)f(using)i(the)f
-(Readline)h(library)e(sets)h(the)g Fj(application)555
-2615 y(name)p Ft(,)g(and)g(y)o(ou)f(can)h(test)f(for)g(a)g(particular)f
+(set-)555 2384 y(tings.)18 b(Eac)o(h)12 b(program)f(using)i(the)f
+(Readline)h(library)e(sets)h(the)g Fk(application)555
+2439 y(name)p Ft(,)g(and)g(y)o(ou)f(can)h(test)f(for)g(a)g(particular)f
(v)m(alue.)19 b(This)11 b(could)h(b)q(e)g(used)h(to)555
-2670 y(bind)k(k)o(ey)f(sequences)i(to)d(functions)i(useful)f(for)g(a)g
-(sp)q(eci\014c)h(program.)23 b(F)l(or)p eop end
-%%Page: 13 17
-TeXDict begin 13 16 bop 75 -58 a Ft(Chapter)15 b(1:)k(Command)c(Line)h
-(Editing)1053 b(13)555 149 y(instance,)16 b(the)h(follo)o(wing)d
-(command)j(adds)f(a)g(k)o(ey)h(sequence)g(that)f(quotes)555
-204 y(the)f(curren)o(t)g(or)g(previous)g(w)o(ord)f(in)i(Bash:)675
-271 y Fs($if)23 b(Bash)675 326 y(#)h(Quote)f(the)g(current)g(or)h
-(previous)f(word)675 381 y("\\C-xq":)g("\\eb\\"\\ef\\"")675
-436 y($endif)315 516 y(variable)48 b Ft(The)17 b Fj(v)m(ariable)h
+2494 y(bind)k(k)o(ey)f(sequences)i(to)d(functions)i(useful)f(for)g(a)g
+(sp)q(eci\014c)h(program.)23 b(F)l(or)555 2548 y(instance,)16
+b(the)h(follo)o(wing)d(command)j(adds)f(a)g(k)o(ey)h(sequence)g(that)f
+(quotes)555 2603 y(the)f(curren)o(t)g(or)g(previous)g(w)o(ord)f(in)i
+(Bash:)675 2670 y Fs($if)23 b(Bash)p eop end
+%%Page: 15 19
+TeXDict begin 15 18 bop 75 -58 a Ft(Chapter)15 b(1:)k(Command)c(Line)h
+(Editing)1053 b(15)675 149 y Fs(#)24 b(Quote)f(the)g(current)g(or)h
+(previous)f(word)675 204 y("\\C-xq":)g("\\eb\\"\\ef\\"")675
+259 y($endif)315 339 y(variable)48 b Ft(The)17 b Fk(v)m(ariable)h
Ft(construct)e(pro)o(vides)g(simple)h(equalit)o(y)e(tests)h(for)g
-(Readline)555 570 y(v)m(ariables)f(and)h(v)m(alues.)22
+(Readline)555 394 y(v)m(ariables)f(and)h(v)m(alues.)22
b(The)16 b(p)q(ermitted)g(comparison)f(op)q(erators)g(are)g(`)p
-Fs(=)p Ft(',)555 625 y(`)p Fs(==)p Ft(',)23 b(and)g(`)p
+Fs(=)p Ft(',)555 448 y(`)p Fs(==)p Ft(',)23 b(and)g(`)p
Fs(!=)p Ft('.)40 b(The)23 b(v)m(ariable)f(name)h(m)o(ust)f(b)q(e)h
-(separated)f(from)g(the)555 680 y(comparison)12 b(op)q(erator)f(b)o(y)h
+(separated)f(from)g(the)555 503 y(comparison)12 b(op)q(erator)f(b)o(y)h
(whitespace;)h(the)g(op)q(erator)e(ma)o(y)h(b)q(e)h(separated)555
-735 y(from)j(the)h(v)m(alue)g(on)g(the)g(righ)o(t)f(hand)h(side)g(b)o
-(y)g(whitespace.)25 b(Both)17 b(string)555 790 y(and)i(b)q(o)q(olean)g
-(v)m(ariables)f(ma)o(y)g(b)q(e)h(tested.)31 b(Bo)q(olean)18
-b(v)m(ariables)g(m)o(ust)g(b)q(e)555 844 y(tested)k(against)g(the)g(v)m
-(alues)h Fj(on)f Ft(and)h Fj(o\013)p Ft(.)41 b(The)23
-b(follo)o(wing)d(example)i(is)555 899 y(equiv)m(alen)o(t)15
-b(to)f(the)i Fs(mode=emacs)e Ft(test)g(describ)q(ed)i(ab)q(o)o(v)o(e:)
-675 966 y Fs($if)23 b(editing-mode)g(==)g(emacs)675 1021
-y(set)g(show-mode-in-prompt)f(on)675 1076 y($endif)75
-1156 y($endif)96 b Ft(This)15 b(command,)f(as)h(seen)h(in)f(the)g
+558 y(from)18 b(the)g(v)m(alue)g(on)h(the)f(righ)o(t)f(hand)i(side)f(b)
+o(y)g(whitespace.)29 b(String)18 b(and)555 613 y(b)q(o)q(olean)c(v)m
+(ariables)g(ma)o(y)g(b)q(e)h(tested.)k(Bo)q(olean)14
+b(v)m(ariables)g(m)o(ust)g(b)q(e)h(tested)555 667 y(against)f(the)i(v)m
+(alues)g Fk(on)g Ft(and)g Fk(o\013)p Ft(.)k(The)c(follo)o(wing)d
+(example)j(is)f(equiv)m(alen)o(t)555 722 y(to)g(the)g
+Fs(mode=emacs)f Ft(test)g(describ)q(ed)i(ab)q(o)o(v)o(e:)675
+790 y Fs($if)23 b(editing-mode)g(==)g(emacs)675 844 y(set)g
+(show-mode-in-prompt)f(on)675 899 y($endif)75 979 y($else)120
+b Ft(Commands)15 b(in)g(this)f(branc)o(h)i(of)e(the)i
+Fs($if)e Ft(directiv)o(e)h(are)g(executed)h(if)f(the)g(test)g(fails.)75
+1059 y Fs($endif)96 b Ft(This)15 b(command,)f(as)h(seen)h(in)f(the)g
(previous)g(example,)g(terminates)f(an)h Fs($if)f Ft(command.)75
-1235 y Fs($else)120 b Ft(Commands)15 b(in)g(this)f(branc)o(h)i(of)e
-(the)i Fs($if)e Ft(directiv)o(e)h(are)g(executed)h(if)f(the)g(test)g
-(fails.)75 1315 y Fs($include)48 b Ft(This)21 b(directiv)o(e)g(tak)o
-(es)g(a)h(single)f(\014lename)h(as)f(an)h(argumen)o(t)f(and)h(reads)f
-(commands)315 1370 y(and)e(bindings)h(from)e(that)h(\014le.)32
-b(F)l(or)19 b(example,)h(the)f(follo)o(wing)e(directiv)o(e)i(reads)g
-(from)315 1425 y Fs(/etc/inputrc)p Ft(:)435 1492 y Fs($include)k
-(/etc/inputrc)75 1592 y Fi(1.3.3)30 b(Sample)20 b(Init)h(File)75
-1665 y Ft(Here)13 b(is)g(an)g(example)g(of)g(an)g Fj(inputrc)j
+1138 y Fs($include)48 b Ft(This)13 b(directiv)o(e)h(tak)o(es)f(a)g
+(single)g(\014lename)h(as)g(an)f(argumen)o(t)g(and)h(reads)g(commands)g
+(and)315 1193 y(k)o(ey)20 b(bindings)f(from)g(that)g(\014le.)34
+b(F)l(or)19 b(example,)i(the)e(follo)o(wing)f(directiv)o(e)h(reads)h
+(from)315 1248 y Fs(/etc/inputrc)p Ft(:)435 1315 y Fs($include)j
+(/etc/inputrc)75 1415 y Fi(1.3.3)30 b(Sample)20 b(Init)h(File)75
+1488 y Ft(Here)13 b(is)g(an)g(example)g(of)g(an)g Fk(inputrc)j
Ft(\014le.)k(This)12 b(illustrates)g(k)o(ey)h(binding,)g(v)m(ariable)g
-(assignmen)o(t,)f(and)75 1720 y(conditional)i(syn)o(tax.)p
+(assignmen)o(t,)f(and)75 1543 y(conditional)i(syn)o(tax.)p
eop end
-%%Page: 14 18
-TeXDict begin 14 17 bop 75 -58 a Ft(Chapter)15 b(1:)k(Command)c(Line)h
-(Editing)1053 b(14)195 204 y Fs(#)24 b(This)f(file)g(controls)g(the)h
+%%Page: 16 20
+TeXDict begin 16 19 bop 75 -58 a Ft(Chapter)15 b(1:)k(Command)c(Line)h
+(Editing)1053 b(16)195 204 y Fs(#)24 b(This)f(file)g(controls)g(the)h
(behaviour)e(of)i(line)f(input)g(editing)g(for)195 259
y(#)h(programs)e(that)i(use)f(the)h(GNU)f(Readline)g(library.)47
b(Existing)195 314 y(#)24 b(programs)e(include)h(FTP,)h(Bash,)f(and)g
2451 y(#)195 2506 y(#)24 b(Arrow)f(keys)g(in)h(8)g(bit)f(ANSI)g(mode)
195 2560 y(#)195 2615 y(#"\\M-\\C-[D":)165 b(backward-char)195
2670 y(#"\\M-\\C-[C":)g(forward-char)p eop end
-%%Page: 15 19
-TeXDict begin 15 18 bop 75 -58 a Ft(Chapter)15 b(1:)k(Command)c(Line)h
-(Editing)1053 b(15)195 149 y Fs(#"\\M-\\C-[A":)165 b(previous-history)
+%%Page: 17 21
+TeXDict begin 17 20 bop 75 -58 a Ft(Chapter)15 b(1:)k(Command)c(Line)h
+(Editing)1053 b(17)195 149 y Fs(#"\\M-\\C-[A":)165 b(previous-history)
195 204 y(#"\\M-\\C-[B":)g(next-history)195 314 y(C-q:)23
b(quoted-insert)195 423 y($endif)195 533 y(#)h(An)f(old-style)g
(binding.)47 b(This)23 b(happens)g(to)g(be)h(the)f(default.)195
2286 y(#)h(display)f(characters)f(with)h(the)h(eighth)f(bit)g(set)h
(directly)195 2341 y(#)g(rather)f(than)g(as)h(meta-prefixed)e
(characters)195 2396 y(set)h(output-meta)g(on)195 2506
-y(#)h(if)f(there)g(are)h(more)f(than)h(150)f(possible)g(completions)f
-(for)195 2560 y(#)i(a)f(word,)h(ask)f(the)h(user)f(if)g(he)h(wants)f
-(to)h(see)f(all)h(of)f(them)195 2615 y(set)g(completion-query-items)e
-(150)p eop end
-%%Page: 16 20
-TeXDict begin 16 19 bop 75 -58 a Ft(Chapter)15 b(1:)k(Command)c(Line)h
-(Editing)1053 b(16)195 149 y Fs(#)24 b(For)f(FTP)195
+y(#)h(if)f(there)g(are)h(150)f(or)h(more)f(possible)g(completions)f
+(for)i(a)g(word,)195 2560 y(#)g(ask)f(whether)g(or)h(not)f(the)h(user)f
+(wants)g(to)h(see)f(all)h(of)f(them)195 2615 y(set)g
+(completion-query-items)e(150)p eop end
+%%Page: 18 22
+TeXDict begin 18 21 bop 75 -58 a Ft(Chapter)15 b(1:)k(Command)c(Line)h
+(Editing)1053 b(18)195 149 y Fs(#)24 b(For)f(FTP)195
204 y($if)g(Ftp)195 259 y("\\C-xg":)g("get)g(\\M-?")195
314 y("\\C-xt":)g("put)g(\\M-?")195 369 y("\\M-.":)g(yank-last-arg)195
-423 y($endif)75 544 y Fr(1.4)33 b(Bindable)22 b(Readline)f(Commands)75
-624 y Ft(This)12 b(section)h(describ)q(es)g(Readline)g(commands)g(that)
+423 y($endif)75 541 y Fr(1.4)33 b(Bindable)22 b(Readline)f(Commands)75
+621 y Ft(This)12 b(section)h(describ)q(es)g(Readline)g(commands)g(that)
f(ma)o(y)g(b)q(e)i(b)q(ound)f(to)g(k)o(ey)f(sequences.)20
-b(Command)75 679 y(names)15 b(without)f(an)h(accompan)o(ying)g(k)o(ey)g
+b(Command)75 676 y(names)15 b(without)f(an)h(accompan)o(ying)g(k)o(ey)g
(sequence)h(are)f(un)o(b)q(ound)i(b)o(y)e(default.)137
-747 y(In)f(the)f(follo)o(wing)e(descriptions,)i Fj(p)q(oin)o(t)g
+742 y(In)f(the)f(follo)o(wing)e(descriptions,)i Fk(p)q(oin)o(t)g
Ft(refers)g(to)g(the)g(curren)o(t)g(cursor)f(p)q(osition,)h(and)g
-Fj(mark)i Ft(refers)75 801 y(to)k(a)g(cursor)g(p)q(osition)f(sa)o(v)o
-(ed)h(b)o(y)h(the)f Fs(set-mark)g Ft(command.)32 b(The)20
-b(text)f(b)q(et)o(w)o(een)g(the)h(p)q(oin)o(t)f(and)75
-856 y(mark)c(is)f(referred)i(to)e(as)h(the)g Fj(region)p
-Ft(.)75 956 y Fi(1.4.1)30 b(Commands)21 b(F)-5 b(or)19
-b(Mo)n(ving)75 1042 y Fs(beginning-of-line)13 b(\(C-a\))315
-1097 y Ft(Mo)o(v)o(e)h(to)h(the)g(start)f(of)h(the)g(curren)o(t)g
-(line.)75 1177 y Fs(end-of-line)f(\(C-e\))315 1232 y
-Ft(Mo)o(v)o(e)g(to)h(the)g(end)h(of)f(the)g(line.)75
-1312 y Fs(forward-char)f(\(C-f\))315 1367 y Ft(Mo)o(v)o(e)g(forw)o(ard)
-g(a)h(c)o(haracter.)75 1447 y Fs(backward-char)e(\(C-b\))315
-1502 y Ft(Mo)o(v)o(e)h(bac)o(k)h(a)g(c)o(haracter.)75
-1582 y Fs(forward-word)f(\(M-f\))315 1637 y Ft(Mo)o(v)o(e)g(forw)o(ard)
-g(to)g(the)i(end)g(of)e(the)h(next)h(w)o(ord.)j(W)l(ords)c(are)f(comp)q
-(osed)i(of)f(letters)f(and)315 1692 y(digits.)75 1772
-y Fs(backward-word)f(\(M-b\))315 1827 y Ft(Mo)o(v)o(e)j(bac)o(k)g(to)h
-(the)f(start)g(of)g(the)h(curren)o(t)g(or)f(previous)h(w)o(ord.)24
-b(W)l(ords)16 b(are)h(comp)q(osed)315 1882 y(of)e(letters)f(and)h
-(digits.)75 1962 y Fs(previous-screen-line)d(\(\))315
-2017 y Ft(A)o(ttempt)19 b(to)h(mo)o(v)o(e)f(p)q(oin)o(t)h(to)f(the)h
-(same)g(ph)o(ysical)f(screen)i(column)f(on)g(the)g(previous)315
-2071 y(ph)o(ysical)12 b(screen)h(line.)19 b(This)12 b(will)f(not)h(ha)o
+Fk(mark)i Ft(refers)75 797 y(to)c(a)g(cursor)h(p)q(osition)f(sa)o(v)o
+(ed)g(b)o(y)h(the)f Fs(set-mark)g Ft(command.)18 b(The)12
+b(text)g(b)q(et)o(w)o(een)g(the)f(p)q(oin)o(t)h(and)g(mark)75
+851 y(is)j(referred)h(to)f(as)g(the)h Fk(region)p Ft(.)21
+b(Readline)16 b(has)f(the)h(concept)g(of)f(an)h Fj(active)g(r)n(e)n
+(gion)s Ft(:)21 b(when)16 b(the)g(region)75 906 y(is)d(activ)o(e,)g
+(Readline)h(redispla)o(y)f(uses)i(the)e(v)m(alue)i(of)e(the)h
+Fs(active-region-start-color)c Ft(v)m(ariable)k(to)75
+961 y(denote)h(the)h(region.)j(Sev)o(eral)c(commands)g(set)g(the)g
+(region)f(to)h(activ)o(e;)f(those)h(are)g(noted)g(b)q(elo)o(w.)75
+1058 y Fi(1.4.1)30 b(Commands)21 b(F)-5 b(or)19 b(Mo)n(ving)75
+1143 y Fs(beginning-of-line)13 b(\(C-a\))315 1198 y Ft(Mo)o(v)o(e)g(to)
+g(the)h(start)e(of)i(the)f(curren)o(t)h(line.)19 b(This)14
+b(ma)o(y)f(also)f(b)q(e)j(b)q(ound)f(to)g(the)f(Home)h(k)o(ey)315
+1253 y(on)h(some)g(k)o(eyb)q(oards.)75 1330 y Fs(end-of-line)f(\(C-e\))
+315 1385 y Ft(Mo)o(v)o(e)h(to)g(the)i(end)f(of)g(the)g(line.)22
+b(This)16 b(ma)o(y)f(also)g(b)q(e)i(b)q(ound)g(to)e(the)h(End)g(k)o(ey)
+g(on)g(some)315 1439 y(k)o(eyb)q(oards.)75 1517 y Fs(forward-char)e
+(\(C-f\))315 1571 y Ft(Mo)o(v)o(e)g(forw)o(ard)g(a)h(c)o(haracter.)75
+1649 y Fs(backward-char)e(\(C-b\))315 1703 y Ft(Mo)o(v)o(e)h(bac)o(k)h
+(a)g(c)o(haracter.)75 1781 y Fs(forward-word)f(\(M-f\))315
+1835 y Ft(Mo)o(v)o(e)g(forw)o(ard)g(to)g(the)i(end)g(of)e(the)h(next)h
+(w)o(ord.)j(W)l(ords)c(are)f(comp)q(osed)i(of)f(letters)f(and)315
+1890 y(digits.)75 1968 y Fs(backward-word)f(\(M-b\))315
+2022 y Ft(Mo)o(v)o(e)j(bac)o(k)g(to)h(the)f(start)g(of)g(the)h(curren)o
+(t)g(or)f(previous)h(w)o(ord.)24 b(W)l(ords)16 b(are)h(comp)q(osed)315
+2077 y(of)e(letters)f(and)h(digits.)75 2154 y Fs(previous-screen-line)d
+(\(\))315 2209 y Ft(A)o(ttempt)19 b(to)h(mo)o(v)o(e)f(p)q(oin)o(t)h(to)
+f(the)h(same)g(ph)o(ysical)f(screen)i(column)f(on)g(the)g(previous)315
+2264 y(ph)o(ysical)12 b(screen)h(line.)19 b(This)12 b(will)f(not)h(ha)o
(v)o(e)g(the)h(desired)f(e\013ect)h(if)f(the)g(curren)o(t)h(Readline)
-315 2126 y(line)g(do)q(es)h(not)g(tak)o(e)f(up)h(more)f(than)g(one)h
+315 2319 y(line)g(do)q(es)h(not)g(tak)o(e)f(up)h(more)f(than)g(one)h
(ph)o(ysical)f(line)g(or)h(if)f(p)q(oin)o(t)g(is)g(not)g(greater)g
-(than)315 2181 y(the)i(length)g(of)g(the)g(prompt)g(plus)g(the)g
-(screen)h(width.)75 2261 y Fs(next-screen-line)d(\(\))315
-2316 y Ft(A)o(ttempt)e(to)h(mo)o(v)o(e)g(p)q(oin)o(t)g(to)f(the)i(same)
+(than)315 2374 y(the)i(length)g(of)g(the)g(prompt)g(plus)g(the)g
+(screen)h(width.)75 2451 y Fs(next-screen-line)d(\(\))315
+2506 y Ft(A)o(ttempt)e(to)h(mo)o(v)o(e)g(p)q(oin)o(t)g(to)f(the)i(same)
f(ph)o(ysical)f(screen)i(column)g(on)f(the)g(next)h(ph)o(ysical)315
-2371 y(screen)f(line.)19 b(This)11 b(will)f(not)h(ha)o(v)o(e)h(the)g
+2560 y(screen)f(line.)19 b(This)11 b(will)f(not)h(ha)o(v)o(e)h(the)g
(desired)f(e\013ect)h(if)f(the)h(curren)o(t)f(Readline)h(line)g(do)q
-(es)315 2425 y(not)h(tak)o(e)g(up)h(more)f(than)h(one)g(ph)o(ysical)f
+(es)315 2615 y(not)h(tak)o(e)g(up)h(more)f(than)h(one)g(ph)o(ysical)f
(line)g(or)g(if)g(the)h(length)f(of)g(the)h(curren)o(t)g(Readline)315
-2480 y(line)h(is)g(not)f(greater)h(than)g(the)g(length)g(of)g(the)g
-(prompt)g(plus)g(the)g(screen)h(width.)75 2560 y Fs(clear-screen)e
-(\(C-l\))315 2615 y Ft(Clear)e(the)i(screen)g(and)f(redra)o(w)g(the)g
-(curren)o(t)g(line,)g(lea)o(ving)g(the)g(curren)o(t)g(line)g(at)g(the)g
-(top)315 2670 y(of)i(the)g(screen.)p eop end
-%%Page: 17 21
-TeXDict begin 17 20 bop 75 -58 a Ft(Chapter)15 b(1:)k(Command)c(Line)h
-(Editing)1053 b(17)75 149 y Fs(redraw-current-line)13
-b(\(\))315 204 y Ft(Refresh)j(the)f(curren)o(t)g(line.)20
-b(By)15 b(default,)g(this)f(is)h(un)o(b)q(ound.)75 298
+2670 y(line)h(is)g(not)f(greater)h(than)g(the)g(length)g(of)g(the)g
+(prompt)g(plus)g(the)g(screen)h(width.)p eop end
+%%Page: 19 23
+TeXDict begin 19 22 bop 75 -58 a Ft(Chapter)15 b(1:)k(Command)c(Line)h
+(Editing)1053 b(19)75 149 y Fs(clear-display)13 b(\(M-C-l\))315
+204 y Ft(Clear)j(the)g(screen)h(and,)g(if)f(p)q(ossible,)g(the)g
+(terminal's)f(scrollbac)o(k)g(bu\013er,)i(then)g(redra)o(w)315
+259 y(the)e(curren)o(t)g(line,)g(lea)o(ving)f(the)h(curren)o(t)g(line)g
+(at)g(the)g(top)g(of)g(the)g(screen.)75 337 y Fs(clear-screen)f
+(\(C-l\))315 392 y Ft(Clear)i(the)i(screen,)g(then)f(redra)o(w)g(the)g
+(curren)o(t)g(line,)g(lea)o(ving)f(the)h(curren)o(t)g(line)g(at)g(the)
+315 447 y(top)e(of)g(the)g(screen.)75 525 y Fs(redraw-current-line)e
+(\(\))315 579 y Ft(Refresh)j(the)f(curren)o(t)g(line.)20
+b(By)15 b(default,)g(this)f(is)h(un)o(b)q(ound.)75 677
y Fi(1.4.2)30 b(Commands)21 b(F)-5 b(or)19 b(Manipulating)i(The)f
-(History)75 381 y Fs(accept-line)14 b(\(Newline)g(or)h(Return\))315
-435 y Ft(Accept)j(the)g(line)f(regardless)g(of)g(where)h(the)g(cursor)f
-(is.)26 b(If)18 b(this)f(line)g(is)h(non-empt)o(y)l(,)g(it)315
-490 y(ma)o(y)d(b)q(e)i(added)f(to)g(the)g(history)f(list)f(for)i
-(future)g(recall)f(with)g Fs(add_history\(\))p Ft(.)20
-b(If)d(this)315 545 y(line)e(is)g(a)f(mo)q(di\014ed)i(history)e(line,)h
-(the)g(history)f(line)h(is)g(restored)f(to)h(its)f(original)g(state.)75
-619 y Fs(previous-history)f(\(C-p\))315 673 y Ft(Mo)o(v)o(e)h(`bac)o
-(k')h(through)f(the)i(history)e(list,)f(fetc)o(hing)i(the)g(previous)g
-(command.)75 747 y Fs(next-history)f(\(C-n\))315 802
-y Ft(Mo)o(v)o(e)g(`forw)o(ard')f(through)i(the)h(history)e(list,)f
-(fetc)o(hing)i(the)g(next)h(command.)75 876 y Fs(beginning-of-history)c
-(\(M-<\))315 930 y Ft(Mo)o(v)o(e)i(to)h(the)g(\014rst)g(line)g(in)g
-(the)g(history)l(.)75 1004 y Fs(end-of-history)e(\(M->\))315
-1059 y Ft(Mo)o(v)o(e)h(to)h(the)g(end)h(of)f(the)g(input)g(history)l(,)
-f(i.e.,)g(the)h(line)g(curren)o(tly)g(b)q(eing)g(en)o(tered.)75
-1132 y Fs(reverse-search-history)d(\(C-r\))315 1187 y
-Ft(Searc)o(h)k(bac)o(kw)o(ard)e(starting)g(at)h(the)h(curren)o(t)f
-(line)h(and)f(mo)o(ving)g(`up')g(through)g(the)h(his-)315
-1242 y(tory)e(as)h(necessary)l(.)20 b(This)15 b(is)g(an)g(incremen)o
-(tal)f(searc)o(h.)75 1316 y Fs(forward-search-history)e(\(C-s\))315
-1370 y Ft(Searc)o(h)22 b(forw)o(ard)e(starting)h(at)g(the)h(curren)o(t)
-f(line)h(and)g(mo)o(ving)f(`do)o(wn')f(through)i(the)315
-1425 y(history)14 b(as)h(necessary)l(.)20 b(This)15 b(is)g(an)g
-(incremen)o(tal)f(searc)o(h.)75 1499 y Fs(non-incremental-reverse-se)o
-(arch-hi)o(story)e(\(M-p\))315 1554 y Ft(Searc)o(h)k(bac)o(kw)o(ard)e
-(starting)g(at)h(the)h(curren)o(t)f(line)h(and)f(mo)o(ving)g(`up')g
-(through)g(the)h(his-)315 1608 y(tory)h(as)h(necessary)g(using)g(a)f
-(non-incremen)o(tal)h(searc)o(h)g(for)f(a)h(string)f(supplied)h(b)o(y)g
-(the)315 1663 y(user.)i(The)15 b(searc)o(h)g(string)g(ma)o(y)f(matc)o
-(h)h(an)o(ywhere)g(in)g(a)g(history)f(line.)75 1737 y
-Fs(non-incremental-forward-se)o(arch-hi)o(story)e(\(M-n\))315
-1792 y Ft(Searc)o(h)22 b(forw)o(ard)e(starting)h(at)g(the)h(curren)o(t)
+(History)75 762 y Fs(accept-line)14 b(\(Newline)g(or)h(Return\))315
+817 y Ft(Accept)h(the)f(line)g(regardless)f(of)g(where)i(the)f(cursor)g
+(is.)k(If)c(this)g(line)g(is)f(non-empt)o(y)l(,)h(y)o(ou)315
+872 y(can)j(add)g(it)f(to)h(the)g(history)f(list)f(using)i
+Fs(add_history\(\))p Ft(.)26 b(If)19 b(this)e(line)g(is)h(a)g(mo)q
+(di\014ed)315 927 y(history)c(line,)h(then)g(restore)g(the)g(history)f
+(line)h(to)g(its)f(original)f(state.)75 1005 y Fs(previous-history)g
+(\(C-p\))315 1060 y Ft(Mo)o(v)o(e)h(`bac)o(k')h(through)f(the)i
+(history)e(list,)f(fetc)o(hing)i(the)g(previous)g(command.)75
+1138 y Fs(next-history)f(\(C-n\))315 1192 y Ft(Mo)o(v)o(e)g(`forw)o
+(ard')f(through)i(the)h(history)e(list,)f(fetc)o(hing)i(the)g(next)h
+(command.)75 1270 y Fs(beginning-of-history)c(\(M-<\))315
+1325 y Ft(Mo)o(v)o(e)i(to)h(the)g(\014rst)g(line)g(in)g(the)g(history)l
+(.)75 1403 y Fs(end-of-history)e(\(M->\))315 1458 y Ft(Mo)o(v)o(e)h(to)
+h(the)g(end)h(of)f(the)g(input)g(history)l(,)f(i.e.,)g(the)h(line)g
+(curren)o(tly)g(b)q(eing)g(en)o(tered.)75 1536 y Fs
+(reverse-search-history)d(\(C-r\))315 1591 y Ft(Searc)o(h)k(bac)o(kw)o
+(ard)e(starting)g(at)h(the)h(curren)o(t)f(line)h(and)f(mo)o(ving)g
+(`up')g(through)g(the)h(his-)315 1646 y(tory)c(as)h(necessary)l(.)20
+b(This)12 b(is)h(an)g(incremen)o(tal)f(searc)o(h.)19
+b(This)13 b(command)g(sets)f(the)i(region)315 1700 y(to)h(the)g(matc)o
+(hed)g(text)g(and)g(activ)m(ates)f(the)i(region.)75 1778
+y Fs(forward-search-history)c(\(C-s\))315 1833 y Ft(Searc)o(h)22
+b(forw)o(ard)e(starting)h(at)g(the)h(curren)o(t)f(line)h(and)g(mo)o
+(ving)f(`do)o(wn')f(through)i(the)315 1888 y(history)c(as)h(necessary)l
+(.)32 b(This)18 b(is)h(an)g(incremen)o(tal)f(searc)o(h.)31
+b(This)19 b(command)g(sets)g(the)315 1943 y(region)14
+b(to)h(the)g(matc)o(hed)g(text)g(and)g(activ)m(ates)g(the)g(region.)75
+2021 y Fs(non-incremental-reverse-se)o(arch-hi)o(story)d(\(M-p\))315
+2076 y Ft(Searc)o(h)k(bac)o(kw)o(ard)e(starting)g(at)h(the)h(curren)o
+(t)f(line)h(and)f(mo)o(ving)g(`up')g(through)g(the)h(his-)315
+2130 y(tory)h(as)h(necessary)g(using)g(a)f(non-incremen)o(tal)h(searc)o
+(h)g(for)f(a)h(string)f(supplied)h(b)o(y)g(the)315 2185
+y(user.)i(The)15 b(searc)o(h)g(string)g(ma)o(y)f(matc)o(h)h(an)o
+(ywhere)g(in)g(a)g(history)f(line.)75 2263 y Fs
+(non-incremental-forward-se)o(arch-hi)o(story)e(\(M-n\))315
+2318 y Ft(Searc)o(h)22 b(forw)o(ard)e(starting)h(at)g(the)h(curren)o(t)
f(line)h(and)g(mo)o(ving)f(`do)o(wn')f(through)i(the)315
-1846 y(history)12 b(as)h(necessary)h(using)f(a)g(non-incremen)o(tal)g
+2373 y(history)12 b(as)h(necessary)h(using)f(a)g(non-incremen)o(tal)g
(searc)o(h)g(for)g(a)g(string)f(supplied)i(b)o(y)f(the)315
-1901 y(user.)20 b(The)15 b(searc)o(h)g(string)g(ma)o(y)f(matc)o(h)h(an)
-o(ywhere)g(in)g(a)g(history)f(line.)75 1975 y Fs
-(history-search-forward)e(\(\))315 2030 y Ft(Searc)o(h)21
-b(forw)o(ard)e(through)i(the)f(history)g(for)g(the)h(string)f(of)g(c)o
-(haracters)g(b)q(et)o(w)o(een)h(the)315 2084 y(start)c(of)g(the)h
-(curren)o(t)g(line)g(and)g(the)g(p)q(oin)o(t.)28 b(The)18
-b(searc)o(h)g(string)f(m)o(ust)g(matc)o(h)h(at)f(the)315
-2139 y(b)q(eginning)f(of)g(a)g(history)f(line.)23 b(This)16
-b(is)g(a)g(non-incremen)o(tal)f(searc)o(h.)23 b(By)17
-b(default,)f(this)315 2194 y(command)f(is)g(un)o(b)q(ound.)75
-2268 y Fs(history-search-backward)d(\(\))315 2322 y Ft(Searc)o(h)18
+2428 y(user.)20 b(The)15 b(searc)o(h)g(string)g(ma)o(y)f(matc)o(h)h(an)
+o(ywhere)g(in)g(a)g(history)f(line.)75 2506 y Fs
+(history-search-backward)e(\(\))315 2560 y Ft(Searc)o(h)18
b(bac)o(kw)o(ard)e(through)h(the)h(history)e(for)h(the)g(string)g(of)g
-(c)o(haracters)f(b)q(et)o(w)o(een)i(the)315 2377 y(start)f(of)g(the)h
+(c)o(haracters)f(b)q(et)o(w)o(een)i(the)315 2615 y(start)f(of)g(the)h
(curren)o(t)g(line)g(and)g(the)g(p)q(oin)o(t.)28 b(The)18
b(searc)o(h)g(string)f(m)o(ust)g(matc)o(h)h(at)f(the)315
-2432 y(b)q(eginning)f(of)g(a)g(history)f(line.)23 b(This)16
+2670 y(b)q(eginning)22 b(of)g(a)g(history)f(line.)41
+b(This)22 b(is)g(a)g(non-incremen)o(tal)f(searc)o(h.)41
+b(By)23 b(default,)p eop end
+%%Page: 20 24
+TeXDict begin 20 23 bop 75 -58 a Ft(Chapter)15 b(1:)k(Command)c(Line)h
+(Editing)1053 b(20)315 149 y(this)16 b(command)g(is)g(un)o(b)q(ound,)h
+(but)f(ma)o(y)g(b)q(e)h(b)q(ound)g(to)f(the)g(P)o(age)f(Do)o(wn)h(k)o
+(ey)g(on)g(some)315 204 y(k)o(eyb)q(oards.)75 290 y Fs
+(history-search-forward)c(\(\))315 345 y Ft(Searc)o(h)f(forw)o(ard)f
+(through)h(the)g(history)f(for)h(the)g(string)f(of)h(c)o(haracters)f(b)
+q(et)o(w)o(een)i(the)f(start)315 400 y(of)g(the)g(curren)o(t)g(line)g
+(and)g(the)g(p)q(oin)o(t.)18 b(The)11 b(searc)o(h)g(string)f(m)o(ust)h
+(matc)o(h)f(at)h(the)g(b)q(eginning)315 455 y(of)16 b(a)g(history)f
+(line.)23 b(This)16 b(is)g(a)g(non-incremen)o(tal)g(searc)o(h.)23
+b(By)16 b(default,)g(this)g(command)315 510 y(is)f(un)o(b)q(ound,)h
+(but)f(ma)o(y)g(b)q(e)g(b)q(ound)i(to)d(the)h(P)o(age)g(Up)g(k)o(ey)g
+(on)h(some)e(k)o(eyb)q(oards.)75 596 y Fs(history-substring-search-b)o
+(ackward)e(\(\))315 650 y Ft(Searc)o(h)18 b(bac)o(kw)o(ard)e(through)h
+(the)h(history)e(for)h(the)g(string)g(of)g(c)o(haracters)f(b)q(et)o(w)o
+(een)i(the)315 705 y(start)13 b(of)h(the)h(curren)o(t)f(line)g(and)h
+(the)f(p)q(oin)o(t.)19 b(The)c(searc)o(h)f(string)f(ma)o(y)h(matc)o(h)g
+(an)o(ywhere)315 760 y(in)i(a)g(history)f(line.)23 b(This)16
b(is)g(a)g(non-incremen)o(tal)f(searc)o(h.)23 b(By)17
-b(default,)f(this)315 2487 y(command)f(is)g(un)o(b)q(ound.)75
-2560 y Fs(history-substring-search-f)o(orward)d(\(\))315
-2615 y Ft(Searc)o(h)21 b(forw)o(ard)e(through)i(the)f(history)g(for)g
+b(default,)e(this)h(command)315 815 y(is)f(un)o(b)q(ound.)75
+901 y Fs(history-substring-search-f)o(orward)d(\(\))315
+956 y Ft(Searc)o(h)21 b(forw)o(ard)e(through)i(the)f(history)g(for)g
(the)h(string)f(of)g(c)o(haracters)g(b)q(et)o(w)o(een)h(the)315
-2670 y(start)13 b(of)h(the)h(curren)o(t)f(line)g(and)h(the)f(p)q(oin)o
-(t.)19 b(The)c(searc)o(h)f(string)f(ma)o(y)h(matc)o(h)g(an)o(ywhere)p
-eop end
-%%Page: 18 22
-TeXDict begin 18 21 bop 75 -58 a Ft(Chapter)15 b(1:)k(Command)c(Line)h
-(Editing)1053 b(18)315 149 y(in)16 b(a)g(history)f(line.)23
-b(This)16 b(is)g(a)g(non-incremen)o(tal)f(searc)o(h.)23
-b(By)17 b(default,)e(this)h(command)315 204 y(is)f(un)o(b)q(ound.)75
-287 y Fs(history-substring-search-b)o(ackward)d(\(\))315
-342 y Ft(Searc)o(h)18 b(bac)o(kw)o(ard)e(through)h(the)h(history)e(for)
-h(the)g(string)g(of)g(c)o(haracters)f(b)q(et)o(w)o(een)i(the)315
-396 y(start)13 b(of)h(the)h(curren)o(t)f(line)g(and)h(the)f(p)q(oin)o
+1010 y(start)13 b(of)h(the)h(curren)o(t)f(line)g(and)h(the)f(p)q(oin)o
(t.)19 b(The)c(searc)o(h)f(string)f(ma)o(y)h(matc)o(h)g(an)o(ywhere)315
-451 y(in)i(a)g(history)f(line.)23 b(This)16 b(is)g(a)g(non-incremen)o
+1065 y(in)i(a)g(history)f(line.)23 b(This)16 b(is)g(a)g(non-incremen)o
(tal)f(searc)o(h.)23 b(By)17 b(default,)e(this)h(command)315
-506 y(is)f(un)o(b)q(ound.)75 588 y Fs(yank-nth-arg)f(\(M-C-y\))315
-643 y Ft(Insert)19 b(the)f(\014rst)h(argumen)o(t)e(to)h(the)h(previous)
-f(command)g(\(usually)g(the)h(second)g(w)o(ord)315 698
-y(on)d(the)g(previous)g(line\))f(at)g(p)q(oin)o(t.)22
-b(With)15 b(an)h(argumen)o(t)f Fj(n)p Ft(,)h(insert)f(the)h
-Fj(n)p Ft(th)g(w)o(ord)g(from)315 753 y(the)i(previous)f(command)g
-(\(the)g(w)o(ords)g(in)g(the)h(previous)f(command)g(b)q(egin)h(with)f
-(w)o(ord)315 808 y(0\).)33 b(A)20 b(negativ)o(e)f(argumen)o(t)g
-(inserts)g(the)h Fj(n)p Ft(th)g(w)o(ord)f(from)g(the)h(end)g(of)f(the)h
-(previous)315 862 y(command.)k(Once)17 b(the)g(argumen)o(t)e
-Fj(n)i Ft(is)f(computed,)h(the)f(argumen)o(t)g(is)g(extracted)g(as)g
-(if)315 917 y(the)f(`)p Fs(!)p Fl(n)p Ft(')f(history)h(expansion)g(had)
-g(b)q(een)h(sp)q(eci\014ed.)75 1000 y Fs(yank-last-arg)d(\(M-.)i(or)g
-(M-_\))315 1054 y Ft(Insert)j(last)e(argumen)o(t)h(to)g(the)g(previous)
+1120 y(is)f(un)o(b)q(ound.)75 1206 y Fs(yank-nth-arg)f(\(M-C-y\))315
+1261 y Ft(Insert)f(the)g(\014rst)g(argumen)o(t)f(to)g(the)i(previous)e
+(command)h(\(usually)f(the)h(second)h(w)o(ord)e(on)315
+1316 y(the)j(previous)g(line\))f(at)g(p)q(oin)o(t.)20
+b(With)14 b(an)h(argumen)o(t)f Fk(n)p Ft(,)h(insert)f(the)h
+Fk(n)p Ft(th)g(w)o(ord)g(from)f(the)315 1371 y(previous)f(command)h
+(\(the)f(w)o(ords)f(in)i(the)f(previous)h(command)f(b)q(egin)h(with)e
+(w)o(ord)h(0\).)19 b(A)315 1425 y(negativ)o(e)12 b(argumen)o(t)g
+(inserts)g(the)h Fk(n)p Ft(th)g(w)o(ord)f(from)g(the)h(end)h(of)e(the)h
+(previous)f(command.)315 1480 y(Once)17 b(the)f(argumen)o(t)f
+Fk(n)h Ft(is)f(computed,)h(this)f(uses)h(the)g(history)f(expansion)h
+(facilities)e(to)315 1535 y(extract)g(the)i Fk(n)p Ft(th)f(w)o(ord,)f
+(as)h(if)g(the)g(`)p Fs(!)p Fl(n)p Ft(')f(history)g(expansion)h(had)h
+(b)q(een)g(sp)q(eci\014ed.)75 1621 y Fs(yank-last-arg)d(\(M-.)i(or)g
+(M-_\))315 1676 y Ft(Insert)j(last)e(argumen)o(t)h(to)g(the)g(previous)
h(command)f(\(the)g(last)g(w)o(ord)g(of)g(the)g(previous)315
-1109 y(history)f(en)o(try\).)24 b(With)16 b(a)g(n)o(umeric)h(argumen)o
+1731 y(history)f(en)o(try\).)24 b(With)16 b(a)g(n)o(umeric)h(argumen)o
(t,)f(b)q(eha)o(v)o(e)h(exactly)f(lik)o(e)g Fs(yank-nth-arg)p
-Ft(.)315 1164 y(Successiv)o(e)d(calls)e(to)h Fs(yank-last-arg)f
+Ft(.)315 1785 y(Successiv)o(e)d(calls)e(to)h Fs(yank-last-arg)f
Ft(mo)o(v)o(e)g(bac)o(k)i(through)f(the)g(history)g(list,)f(inserting)
-315 1219 y(the)g(last)g(w)o(ord)f(\(or)h(the)g(w)o(ord)g(sp)q
+315 1840 y(the)g(last)g(w)o(ord)f(\(or)h(the)g(w)o(ord)g(sp)q
(eci\014ed)h(b)o(y)f(the)h(argumen)o(t)e(to)h(the)g(\014rst)g(call\))f
-(of)h(eac)o(h)g(line)315 1274 y(in)18 b(turn.)29 b(An)o(y)18
+(of)h(eac)o(h)g(line)315 1895 y(in)18 b(turn.)29 b(An)o(y)18
b(n)o(umeric)g(argumen)o(t)g(supplied)g(to)g(these)g(successiv)o(e)h
-(calls)e(determines)315 1328 y(the)g(direction)g(to)g(mo)o(v)o(e)g
+(calls)e(determines)315 1950 y(the)g(direction)g(to)g(mo)o(v)o(e)g
(through)g(the)g(history)l(.)26 b(A)17 b(negativ)o(e)g(argumen)o(t)f
-(switc)o(hes)h(the)315 1383 y(direction)11 b(through)g(the)g(history)g
-(\(bac)o(k)g(or)g(forw)o(ard\).)17 b(The)11 b(history)g(expansion)g
-(facilities)315 1438 y(are)i(used)i(to)e(extract)g(the)h(last)e
-(argumen)o(t,)h(as)h(if)f(the)h(`)p Fs(!$)p Ft(')e(history)h(expansion)
-h(had)g(b)q(een)315 1493 y(sp)q(eci\014ed.)75 1595 y
-Fi(1.4.3)30 b(Commands)21 b(F)-5 b(or)19 b(Changing)i(T)-5
-b(ext)75 1683 y Fl(end-of-file)14 b Fs(\(usually)g(C-d\))315
-1737 y Ft(The)f(c)o(haracter)g(indicating)f(end-of-\014le)i(as)e(set,)h
-(for)g(example,)g(b)o(y)g Fs(stty)p Ft(.)18 b(If)c(this)e(c)o(harac-)
-315 1792 y(ter)f(is)f(read)h(when)g(there)g(are)g(no)g(c)o(haracters)f
-(on)h(the)g(line,)g(and)g(p)q(oin)o(t)f(is)h(at)f(the)h(b)q(eginning)
-315 1847 y(of)k(the)g(line,)g(Readline)g(in)o(terprets)f(it)h(as)g(the)
-g(end)h(of)f(input)g(and)g(returns)g Fm(eof)p Ft(.)75
-1929 y Fs(delete-char)f(\(C-d\))315 1984 y Ft(Delete)i(the)h(c)o
-(haracter)f(at)g(p)q(oin)o(t.)23 b(If)17 b(this)f(function)h(is)f(b)q
-(ound)i(to)e(the)g(same)h(c)o(haracter)315 2039 y(as)e(the)g(tt)o(y)f
-Fm(eof)i Ft(c)o(haracter,)e(as)h Fl(C-d)g Ft(commonly)f(is,)g(see)i(ab)
-q(o)o(v)o(e)f(for)f(the)i(e\013ects.)75 2121 y Fs(backward-delete-char)
-c(\(Rubout\))315 2176 y Ft(Delete)j(the)g(c)o(haracter)f(b)q(ehind)i
-(the)g(cursor.)j(A)c(n)o(umeric)g(argumen)o(t)f(means)i(to)e(kill)g
-(the)315 2231 y(c)o(haracters)g(instead)h(of)g(deleting)g(them.)75
-2314 y Fs(forward-backward-delete-ch)o(ar)d(\(\))315
-2368 y Ft(Delete)19 b(the)g(c)o(haracter)f(under)i(the)f(cursor,)h
-(unless)f(the)g(cursor)g(is)g(at)f(the)h(end)h(of)f(the)315
-2423 y(line,)c(in)h(whic)o(h)g(case)f(the)h(c)o(haracter)g(b)q(ehind)g
-(the)g(cursor)g(is)f(deleted.)22 b(By)16 b(default,)g(this)315
-2478 y(is)f(not)g(b)q(ound)h(to)e(a)h(k)o(ey)l(.)75 2560
-y Fs(quoted-insert)e(\(C-q)i(or)g(C-v\))315 2615 y Ft(Add)j(the)f(next)
-g(c)o(haracter)g(t)o(yp)q(ed)g(to)f(the)i(line)e(v)o(erbatim.)25
-b(This)17 b(is)f(ho)o(w)h(to)g(insert)f(k)o(ey)315 2670
-y(sequences)g(lik)o(e)f Fl(C-q)p Ft(,)f(for)h(example.)p
+(switc)o(hes)h(the)315 2005 y(direction)10 b(through)h(the)g(history)f
+(\(bac)o(k)h(or)g(forw)o(ard\).)17 b(This)10 b(uses)i(the)f(history)f
+(expansion)315 2059 y(facilities)19 b(to)h(extract)g(the)g(last)g(w)o
+(ord,)h(as)f(if)g(the)h(`)p Fs(!$)p Ft(')f(history)f(expansion)i(had)g
+(b)q(een)315 2114 y(sp)q(eci\014ed.)75 2200 y Fs(operate-and-get-next)
+12 b(\(C-o\))315 2255 y Ft(Accept)j(the)g(curren)o(t)f(line)g(for)g
+(return)h(to)f(the)g(calling)g(application)f(as)h(if)g(a)g(newline)h
+(had)315 2310 y(b)q(een)e(en)o(tered,)f(and)g(fetc)o(h)f(the)h(next)g
+(line)f(relativ)o(e)f(to)h(the)h(curren)o(t)f(line)g(from)g(the)h
+(history)315 2365 y(for)j(editing.)20 b(A)15 b(n)o(umeric)h(argumen)o
+(t,)e(if)h(supplied,)g(sp)q(eci\014es)i(the)e(history)g(en)o(try)g(to)g
+(use)315 2419 y(instead)g(of)g(the)g(curren)o(t)g(line.)75
+2506 y Fs(fetch-history)e(\(\))315 2560 y Ft(With)e(a)h(n)o(umeric)g
+(argumen)o(t,)f(fetc)o(h)h(that)g(en)o(try)f(from)h(the)g(history)f
+(list)g(and)h(mak)o(e)g(it)f(the)315 2615 y(curren)o(t)k(line.)k
+(Without)14 b(an)h(argumen)o(t,)f(mo)o(v)o(e)g(bac)o(k)h(to)f(the)h
+(\014rst)g(en)o(try)f(in)h(the)g(history)315 2670 y(list.)p
eop end
-%%Page: 19 23
-TeXDict begin 19 22 bop 75 -58 a Ft(Chapter)15 b(1:)k(Command)c(Line)h
-(Editing)1053 b(19)75 149 y Fs(tab-insert)14 b(\(M-TAB\))315
-204 y Ft(Insert)h(a)g(tab)g(c)o(haracter.)75 287 y Fs(self-insert)f
-(\(a,)g(b,)h(A,)g(1,)g(!,)g(...)o(\))315 341 y Ft(Insert)g(y)o
-(ourself.)75 424 y Fs(bracketed-paste-begin)d(\(\))315
-479 y Ft(This)g(function)g(is)g(in)o(tended)h(to)f(b)q(e)h(b)q(ound)g
-(to)f(the)h Fs(")p Ft(brac)o(k)o(eted)f(paste)p Fs(")g
-Ft(escap)q(e)h(sequence)315 533 y(sen)o(t)18 b(b)o(y)h(some)g
-(terminals,)f(and)g(suc)o(h)i(a)e(binding)h(is)f(assigned)g(b)o(y)h
-(default.)30 b(It)19 b(allo)o(ws)315 588 y(Readline)e(to)e(insert)h
-(the)g(pasted)g(text)g(as)g(a)g(single)g(unit)g(without)f(treating)g
-(eac)o(h)h(c)o(har-)315 643 y(acter)j(as)g(if)g(it)g(had)g(b)q(een)i
-(read)e(from)g(the)g(k)o(eyb)q(oard.)33 b(The)19 b(c)o(haracters)g(are)
-g(inserted)315 698 y(as)h(if)g(eac)o(h)h(one)g(w)o(as)e(b)q(ound)j(to)e
-Fs(self-insert)p Ft(\))e(instead)j(of)f(executing)g(an)o(y)h(editing)
-315 753 y(commands.)75 835 y Fs(transpose-chars)13 b(\(C-t\))315
-890 y Ft(Drag)i(the)h(c)o(haracter)f(b)q(efore)h(the)h(cursor)e(forw)o
-(ard)g(o)o(v)o(er)g(the)h(c)o(haracter)f(at)h(the)g(cursor,)315
-945 y(mo)o(ving)h(the)g(cursor)h(forw)o(ard)e(as)i(w)o(ell.)26
-b(If)18 b(the)g(insertion)f(p)q(oin)o(t)g(is)g(at)g(the)h(end)h(of)e
-(the)315 999 y(line,)11 b(then)g(this)g(transp)q(oses)f(the)h(last)f(t)
-o(w)o(o)g(c)o(haracters)g(of)h(the)g(line.)18 b(Negativ)o(e)10
-b(argumen)o(ts)315 1054 y(ha)o(v)o(e)15 b(no)g(e\013ect.)75
-1137 y Fs(transpose-words)e(\(M-t\))315 1191 y Ft(Drag)i(the)h(w)o(ord)
-g(b)q(efore)g(p)q(oin)o(t)g(past)g(the)g(w)o(ord)f(after)h(p)q(oin)o
-(t,)f(mo)o(ving)g(p)q(oin)o(t)h(past)g(that)315 1246
-y(w)o(ord)d(as)h(w)o(ell.)19 b(If)14 b(the)g(insertion)g(p)q(oin)o(t)f
-(is)h(at)g(the)g(end)h(of)e(the)i(line,)e(this)h(transp)q(oses)g(the)
-315 1301 y(last)g(t)o(w)o(o)g(w)o(ords)g(on)i(the)f(line.)75
-1384 y Fs(upcase-word)f(\(M-u\))315 1438 y Ft(Upp)q(ercase)j(the)f
+%%Page: 21 25
+TeXDict begin 21 24 bop 75 -58 a Ft(Chapter)15 b(1:)k(Command)c(Line)h
+(Editing)1053 b(21)75 149 y Fi(1.4.3)30 b(Commands)21
+b(F)-5 b(or)19 b(Changing)i(T)-5 b(ext)75 232 y Fl(end-of-file)14
+b Fs(\(usually)g(C-d\))315 287 y Ft(The)f(c)o(haracter)g(indicating)f
+(end-of-\014le)i(as)e(set,)h(for)g(example,)g(b)o(y)g
+Fs(stty)p Ft(.)18 b(If)c(this)e(c)o(harac-)315 342 y(ter)f(is)f(read)h
+(when)g(there)g(are)g(no)g(c)o(haracters)f(on)h(the)g(line,)g(and)g(p)q
+(oin)o(t)f(is)h(at)f(the)h(b)q(eginning)315 396 y(of)k(the)g(line,)g
+(Readline)g(in)o(terprets)f(it)h(as)g(the)g(end)h(of)f(input)g(and)g
+(returns)g Fm(eof)p Ft(.)75 469 y Fs(delete-char)f(\(C-d\))315
+524 y Ft(Delete)i(the)h(c)o(haracter)f(at)g(p)q(oin)o(t.)23
+b(If)17 b(this)f(function)h(is)f(b)q(ound)i(to)e(the)g(same)h(c)o
+(haracter)315 579 y(as)e(the)g(tt)o(y)f Fm(eof)i Ft(c)o(haracter,)e(as)
+h Fl(C-d)g Ft(commonly)f(is,)g(see)i(ab)q(o)o(v)o(e)f(for)f(the)i
+(e\013ects.)75 652 y Fs(backward-delete-char)c(\(Rubout\))315
+707 y Ft(Delete)j(the)g(c)o(haracter)f(b)q(ehind)i(the)g(cursor.)j(A)c
+(n)o(umeric)g(argumen)o(t)f(means)i(to)e(kill)g(the)315
+762 y(c)o(haracters,)g(sa)o(ving)g(them)h(on)g(the)h(kill)e(ring,)g
+(instead)h(of)g(deleting)f(them.)75 835 y Fs
+(forward-backward-delete-ch)o(ar)e(\(\))315 889 y Ft(Delete)19
+b(the)g(c)o(haracter)f(under)i(the)f(cursor,)h(unless)f(the)g(cursor)g
+(is)g(at)f(the)h(end)h(of)f(the)315 944 y(line,)c(in)h(whic)o(h)g(case)
+f(the)h(c)o(haracter)g(b)q(ehind)g(the)g(cursor)g(is)f(deleted.)22
+b(By)16 b(default,)g(this)315 999 y(is)f(not)g(b)q(ound)h(to)e(a)h(k)o
+(ey)l(.)75 1072 y Fs(quoted-insert)e(\(C-q)i(or)g(C-v\))315
+1127 y Ft(Add)j(the)f(next)g(c)o(haracter)g(t)o(yp)q(ed)g(to)f(the)i
+(line)e(v)o(erbatim.)25 b(This)17 b(is)f(ho)o(w)h(to)g(insert)f(k)o(ey)
+315 1182 y(sequences)g(lik)o(e)f Fl(C-q)p Ft(,)f(for)h(example.)75
+1255 y Fs(tab-insert)f(\(M-TAB\))315 1309 y Ft(Insert)h(a)g(tab)g(c)o
+(haracter.)75 1382 y Fs(self-insert)f(\(a,)g(b,)h(A,)g(1,)g(!,)g(...)o
+(\))315 1437 y Ft(Insert)g(the)h(c)o(haracter)e(t)o(yp)q(ed.)75
+1510 y Fs(bracketed-paste-begin)e(\(\))315 1565 y Ft(This)g(function)g
+(is)g(in)o(tended)h(to)f(b)q(e)h(b)q(ound)g(to)f(the)h
+Fs(")p Ft(brac)o(k)o(eted)f(paste)p Fs(")g Ft(escap)q(e)h(sequence)315
+1620 y(sen)o(t)18 b(b)o(y)h(some)g(terminals,)f(and)g(suc)o(h)i(a)e
+(binding)h(is)f(assigned)g(b)o(y)h(default.)30 b(It)19
+b(allo)o(ws)315 1675 y(Readline)e(to)e(insert)h(the)g(pasted)g(text)g
+(as)g(a)g(single)g(unit)g(without)f(treating)g(eac)o(h)h(c)o(har-)315
+1729 y(acter)j(as)g(if)g(it)g(had)g(b)q(een)i(read)e(from)g(the)g(k)o
+(eyb)q(oard.)33 b(The)19 b(c)o(haracters)g(are)g(inserted)315
+1784 y(as)j(if)f(eac)o(h)h(one)g(w)o(as)g(b)q(ound)h(to)e
+Fs(self-insert)g Ft(instead)g(of)h(executing)g(an)o(y)g(editing)315
+1839 y(commands.)315 1903 y(Brac)o(k)o(eted)c(paste)f(sets)h(the)g
+(region)g(\(the)f(c)o(haracters)h(b)q(et)o(w)o(een)g(p)q(oin)o(t)g(and)
+g(the)g(mark\))315 1958 y(to)d(the)g(inserted)g(text.)k(It)d(sets)e
+(the)i Fj(active)g(r)n(e)n(gion)p Ft(.)75 2031 y Fs(transpose-chars)d
+(\(C-t\))315 2086 y Ft(Drag)i(the)h(c)o(haracter)f(b)q(efore)h(the)h
+(cursor)e(forw)o(ard)g(o)o(v)o(er)g(the)h(c)o(haracter)f(at)h(the)g
+(cursor,)315 2140 y(mo)o(ving)h(the)g(cursor)h(forw)o(ard)e(as)i(w)o
+(ell.)26 b(If)18 b(the)g(insertion)f(p)q(oin)o(t)g(is)g(at)g(the)h(end)
+h(of)e(the)315 2195 y(line,)11 b(then)g(this)g(transp)q(oses)f(the)h
+(last)f(t)o(w)o(o)g(c)o(haracters)g(of)h(the)g(line.)18
+b(Negativ)o(e)10 b(argumen)o(ts)315 2250 y(ha)o(v)o(e)15
+b(no)g(e\013ect.)75 2323 y Fs(transpose-words)e(\(M-t\))315
+2378 y Ft(Drag)i(the)h(w)o(ord)g(b)q(efore)g(p)q(oin)o(t)g(past)g(the)g
+(w)o(ord)f(after)h(p)q(oin)o(t,)f(mo)o(ving)g(p)q(oin)o(t)h(past)g
+(that)315 2433 y(w)o(ord)d(as)h(w)o(ell.)19 b(If)14 b(the)g(insertion)g
+(p)q(oin)o(t)f(is)h(at)g(the)g(end)h(of)e(the)i(line,)e(this)h(transp)q
+(oses)g(the)315 2487 y(last)g(t)o(w)o(o)g(w)o(ords)g(on)i(the)f(line.)
+75 2560 y Fs(upcase-word)f(\(M-u\))315 2615 y Ft(Upp)q(ercase)j(the)f
(curren)o(t)g(\(or)f(follo)o(wing\))e(w)o(ord.)22 b(With)15
-b(a)h(negativ)o(e)f(argumen)o(t,)g(upp)q(er-)315 1493
+b(a)h(negativ)o(e)f(argumen)o(t,)g(upp)q(er-)315 2670
y(case)g(the)g(previous)g(w)o(ord,)g(but)g(do)g(not)g(mo)o(v)o(e)f(the)
-i(cursor.)75 1576 y Fs(downcase-word)d(\(M-l\))315 1630
-y Ft(Lo)o(w)o(ercase)d(the)h(curren)o(t)g(\(or)f(follo)o(wing\))e(w)o
-(ord.)17 b(With)10 b(a)h(negativ)o(e)f(argumen)o(t,)g(lo)o(w)o(ercase)
-315 1685 y(the)15 b(previous)g(w)o(ord,)f(but)i(do)f(not)g(mo)o(v)o(e)f
-(the)h(cursor.)75 1768 y Fs(capitalize-word)e(\(M-c\))315
-1822 y Ft(Capitalize)c(the)i(curren)o(t)f(\(or)g(follo)o(wing\))e(w)o
+i(cursor.)p eop end
+%%Page: 22 26
+TeXDict begin 22 25 bop 75 -58 a Ft(Chapter)15 b(1:)k(Command)c(Line)h
+(Editing)1053 b(22)75 149 y Fs(downcase-word)13 b(\(M-l\))315
+204 y Ft(Lo)o(w)o(ercase)d(the)h(curren)o(t)g(\(or)f(follo)o(wing\))e
+(w)o(ord.)17 b(With)10 b(a)h(negativ)o(e)f(argumen)o(t,)g(lo)o(w)o
+(ercase)315 259 y(the)15 b(previous)g(w)o(ord,)f(but)i(do)f(not)g(mo)o
+(v)o(e)f(the)h(cursor.)75 337 y Fs(capitalize-word)e(\(M-c\))315
+392 y Ft(Capitalize)c(the)i(curren)o(t)f(\(or)g(follo)o(wing\))e(w)o
(ord.)18 b(With)10 b(a)g(negativ)o(e)g(argumen)o(t,)g(capitalize)315
-1877 y(the)15 b(previous)g(w)o(ord,)f(but)i(do)f(not)g(mo)o(v)o(e)f
-(the)h(cursor.)75 1960 y Fs(overwrite-mode)e(\(\))315
-2014 y Ft(T)l(oggle)i(o)o(v)o(erwrite)g(mo)q(de.)24 b(With)16
+447 y(the)15 b(previous)g(w)o(ord,)f(but)i(do)f(not)g(mo)o(v)o(e)f(the)
+h(cursor.)75 525 y Fs(overwrite-mode)e(\(\))315 579 y
+Ft(T)l(oggle)i(o)o(v)o(erwrite)g(mo)q(de.)24 b(With)16
b(an)g(explicit)g(p)q(ositiv)o(e)g(n)o(umeric)g(argumen)o(t,)g(switc)o
-(hes)315 2069 y(to)10 b(o)o(v)o(erwrite)f(mo)q(de.)19
+(hes)315 634 y(to)10 b(o)o(v)o(erwrite)f(mo)q(de.)19
b(With)10 b(an)h(explicit)f(non-p)q(ositiv)o(e)g(n)o(umeric)h(argumen)o
-(t,)f(switc)o(hes)h(to)315 2124 y(insert)k(mo)q(de.)20
+(t,)f(switc)o(hes)h(to)315 689 y(insert)k(mo)q(de.)20
b(This)15 b(command)g(a\013ects)g(only)g Fs(emacs)f Ft(mo)q(de;)h
-Fs(vi)g Ft(mo)q(de)h(do)q(es)g(o)o(v)o(erwrite)315 2179
+Fs(vi)g Ft(mo)q(de)h(do)q(es)g(o)o(v)o(erwrite)315 744
y(di\013eren)o(tly)l(.)j(Eac)o(h)c(call)f(to)h Fs(readline\(\))f
-Ft(starts)f(in)j(insert)e(mo)q(de.)315 2247 y(In)27 b(o)o(v)o(erwrite)d
+Ft(starts)f(in)j(insert)e(mo)q(de.)315 810 y(In)27 b(o)o(v)o(erwrite)d
(mo)q(de,)29 b(c)o(haracters)c(b)q(ound)i(to)f Fs(self-insert)f
-Ft(replace)h(the)g(text)g(at)315 2302 y(p)q(oin)o(t)j(rather)g(than)g
+Ft(replace)h(the)g(text)g(at)315 865 y(p)q(oin)o(t)j(rather)g(than)g
(pushing)g(the)h(text)f(to)f(the)i(righ)o(t.)61 b(Characters)28
-b(b)q(ound)j(to)315 2357 y Fs(backward-delete-char)12
+b(b)q(ound)j(to)315 920 y Fs(backward-delete-char)12
b Ft(replace)k(the)f(c)o(haracter)f(b)q(efore)i(p)q(oin)o(t)f(with)f(a)
-h(space.)315 2426 y(By)g(default,)g(this)f(command)h(is)g(un)o(b)q
-(ound.)75 2528 y Fi(1.4.4)30 b(Killing)20 b(And)h(Y)-5
-b(anking)75 2615 y Fs(kill-line)14 b(\(C-k\))315 2670
-y Ft(Kill)g(the)i(text)e(from)h(p)q(oin)o(t)g(to)f(the)h(end)h(of)f
-(the)g(line.)p eop end
-%%Page: 20 24
-TeXDict begin 20 23 bop 75 -58 a Ft(Chapter)15 b(1:)k(Command)c(Line)h
-(Editing)1053 b(20)75 149 y Fs(backward-kill-line)13
-b(\(C-x)h(Rubout\))315 204 y Ft(Kill)g(bac)o(kw)o(ard)h(from)f(the)i
-(cursor)e(to)h(the)g(b)q(eginning)h(of)e(the)i(curren)o(t)f(line.)75
-283 y Fs(unix-line-discard)e(\(C-u\))315 338 y Ft(Kill)h(bac)o(kw)o
-(ard)h(from)f(the)i(cursor)e(to)h(the)g(b)q(eginning)h(of)e(the)i
-(curren)o(t)f(line.)75 416 y Fs(kill-whole-line)e(\(\))315
-471 y Ft(Kill)k(all)h(c)o(haracters)f(on)h(the)h(curren)o(t)f(line,)g
+h(space.)315 986 y(By)g(default,)g(this)g(command)g(is)g(un)o(b)q
+(ound,)h(but)f(ma)o(y)g(b)q(e)h(b)q(ound)g(to)f(the)g(Insert)h(k)o(ey)f
+(on)315 1041 y(some)g(k)o(eyb)q(oards.)75 1139 y Fi(1.4.4)30
+b(Killing)20 b(And)h(Y)-5 b(anking)75 1224 y Fs(kill-line)14
+b(\(C-k\))315 1279 y Ft(Kill)e(the)h(text)g(from)f(p)q(oin)o(t)h(to)f
+(the)h(end)h(of)e(the)h(curren)o(t)g(line.)19 b(With)12
+b(a)h(negativ)o(e)f(n)o(umeric)315 1334 y(argumen)o(t,)i(kill)g(bac)o
+(kw)o(ard)g(from)h(the)g(cursor)g(to)g(the)g(b)q(eginning)g(of)g(the)g
+(line.)75 1412 y Fs(backward-kill-line)e(\(C-x)h(Rubout\))315
+1466 y Ft(Kill)19 b(bac)o(kw)o(ard)g(from)h(the)g(cursor)f(to)h(the)g
+(b)q(eginning)g(of)f(the)h(curren)o(t)g(line.)34 b(With)19
+b(a)315 1521 y(negativ)o(e)14 b(n)o(umeric)g(argumen)o(t,)g(kill)f
+(forw)o(ard)g(from)h(the)h(cursor)f(to)g(the)h(end)g(of)f(the)h(line.)
+75 1599 y Fs(unix-line-discard)e(\(C-u\))315 1654 y Ft(Kill)h(bac)o(kw)
+o(ard)h(from)f(the)i(cursor)e(to)h(the)g(b)q(eginning)h(of)e(the)i
+(curren)o(t)f(line.)75 1732 y Fs(kill-whole-line)e(\(\))315
+1787 y Ft(Kill)k(all)h(c)o(haracters)f(on)h(the)h(curren)o(t)f(line,)g
(no)g(matter)g(where)g(p)q(oin)o(t)g(is.)28 b(By)19 b(default,)315
-526 y(this)c(is)f(un)o(b)q(ound.)75 604 y Fs(kill-word)g(\(M-d\))315
-659 y Ft(Kill)g(from)g(p)q(oin)o(t)g(to)g(the)h(end)g(of)f(the)h
+1842 y(this)c(is)f(un)o(b)q(ound.)75 1920 y Fs(kill-word)g(\(M-d\))315
+1974 y Ft(Kill)g(from)g(p)q(oin)o(t)g(to)g(the)h(end)g(of)f(the)h
(curren)o(t)g(w)o(ord,)e(or)i(if)f(b)q(et)o(w)o(een)h(w)o(ords,)e(to)i
-(the)f(end)315 714 y(of)h(the)g(next)g(w)o(ord.)20 b(W)l(ord)14
+(the)f(end)315 2029 y(of)h(the)g(next)g(w)o(ord.)20 b(W)l(ord)14
b(b)q(oundaries)i(are)f(the)g(same)g(as)g Fs(forward-word)p
-Ft(.)75 793 y Fs(backward-kill-word)e(\(M-DEL\))315 847
-y Ft(Kill)h(the)g(w)o(ord)g(b)q(ehind)h(p)q(oin)o(t.)20
+Ft(.)75 2107 y Fs(backward-kill-word)e(\(M-DEL\))315
+2162 y Ft(Kill)h(the)g(w)o(ord)g(b)q(ehind)h(p)q(oin)o(t.)20
b(W)l(ord)14 b(b)q(oundaries)g(are)g(the)h(same)f(as)g
-Fs(backward-word)p Ft(.)75 926 y Fs(unix-word-rubout)f(\(C-w\))315
-981 y Ft(Kill)i(the)h(w)o(ord)f(b)q(ehind)i(p)q(oin)o(t,)e(using)h
-(white)f(space)h(as)g(a)f(w)o(ord)g(b)q(oundary)l(.)23
-b(The)16 b(killed)315 1036 y(text)f(is)f(sa)o(v)o(ed)h(on)g(the)h
-(kill-ring.)75 1114 y Fs(unix-filename-rubout)c(\(\))315
-1169 y Ft(Kill)17 b(the)i(w)o(ord)e(b)q(ehind)i(p)q(oin)o(t,)f(using)g
-(white)g(space)g(and)h(the)f(slash)g(c)o(haracter)f(as)h(the)315
-1224 y(w)o(ord)d(b)q(oundaries.)20 b(The)15 b(killed)g(text)f(is)h(sa)o
-(v)o(ed)g(on)g(the)g(kill-ring.)75 1302 y Fs(delete-horizontal-space)d
-(\(\))315 1357 y Ft(Delete)j(all)f(spaces)h(and)h(tabs)e(around)i(p)q
-(oin)o(t.)j(By)c(default,)g(this)f(is)h(un)o(b)q(ound.)75
-1436 y Fs(kill-region)f(\(\))315 1490 y Ft(Kill)g(the)i(text)e(in)h
-(the)h(curren)o(t)f(region.)k(By)c(default,)g(this)f(command)h(is)g(un)
-o(b)q(ound.)75 1569 y Fs(copy-region-as-kill)e(\(\))315
-1624 y Ft(Cop)o(y)j(the)i(text)e(in)h(the)g(region)f(to)h(the)g(kill)e
-(bu\013er,)i(so)g(it)f(can)h(b)q(e)h(y)o(ank)o(ed)f(righ)o(t)f(a)o(w)o
-(a)o(y)l(.)315 1679 y(By)f(default,)g(this)f(command)h(is)g(un)o(b)q
-(ound.)75 1757 y Fs(copy-backward-word)e(\(\))315 1812
-y Ft(Cop)o(y)19 b(the)g(w)o(ord)g(b)q(efore)g(p)q(oin)o(t)g(to)f(the)i
-(kill)e(bu\013er.)32 b(The)19 b(w)o(ord)g(b)q(oundaries)g(are)g(the)315
-1867 y(same)c(as)g Fs(backward-word)p Ft(.)j(By)d(default,)f(this)h
-(command)g(is)g(un)o(b)q(ound.)75 1945 y Fs(copy-forward-word)e(\(\))
-315 2000 y Ft(Cop)o(y)i(the)h(w)o(ord)e(follo)o(wing)g(p)q(oin)o(t)h
-(to)g(the)g(kill)g(bu\013er.)20 b(The)c(w)o(ord)f(b)q(oundaries)h(are)f
-(the)315 2055 y(same)g(as)g Fs(forward-word)p Ft(.)j(By)d(default,)g
-(this)f(command)h(is)g(un)o(b)q(ound.)75 2134 y Fs(yank)g(\(C-y\))315
-2188 y Ft(Y)l(ank)g(the)h(top)f(of)f(the)i(kill)e(ring)g(in)o(to)g(the)
-i(bu\013er)f(at)f(p)q(oin)o(t.)75 2267 y Fs(yank-pop)g(\(M-y\))315
-2322 y Ft(Rotate)j(the)g(kill-ring,)f(and)h(y)o(ank)g(the)h(new)f(top.)
+Fs(backward-word)p Ft(.)75 2240 y Fs(unix-word-rubout)f(\(C-w\))315
+2295 y Ft(Kill)i(the)i(w)o(ord)e(b)q(ehind)i(p)q(oin)o(t,)f(using)g
+(white)f(space)i(as)f(a)g(w)o(ord)f(b)q(oundary)l(,)i(sa)o(ving)e(the)
+315 2350 y(killed)f(text)h(on)g(the)h(kill-ring.)75 2428
+y Fs(unix-filename-rubout)c(\(\))315 2482 y Ft(Kill)17
+b(the)i(w)o(ord)e(b)q(ehind)i(p)q(oin)o(t,)f(using)g(white)g(space)g
+(and)h(the)f(slash)g(c)o(haracter)f(as)h(the)315 2537
+y(w)o(ord)d(b)q(oundaries,)g(sa)o(ving)f(the)h(killed)f(text)h(on)g
+(the)h(kill-ring.)75 2615 y Fs(delete-horizontal-space)c(\(\))315
+2670 y Ft(Delete)j(all)f(spaces)h(and)h(tabs)e(around)i(p)q(oin)o(t.)j
+(By)c(default,)g(this)f(is)h(un)o(b)q(ound.)p eop end
+%%Page: 23 27
+TeXDict begin 23 26 bop 75 -58 a Ft(Chapter)15 b(1:)k(Command)c(Line)h
+(Editing)1053 b(23)75 149 y Fs(kill-region)14 b(\(\))315
+204 y Ft(Kill)g(the)i(text)e(in)h(the)h(curren)o(t)f(region.)k(By)c
+(default,)g(this)f(command)h(is)g(un)o(b)q(ound.)75 277
+y Fs(copy-region-as-kill)e(\(\))315 332 y Ft(Cop)o(y)j(the)i(text)e(in)
+h(the)g(region)f(to)h(the)g(kill)e(bu\013er,)i(so)g(it)f(can)h(b)q(e)h
+(y)o(ank)o(ed)f(righ)o(t)f(a)o(w)o(a)o(y)l(.)315 387
+y(By)f(default,)g(this)f(command)h(is)g(un)o(b)q(ound.)75
+459 y Fs(copy-backward-word)e(\(\))315 514 y Ft(Cop)o(y)19
+b(the)g(w)o(ord)g(b)q(efore)g(p)q(oin)o(t)g(to)f(the)i(kill)e
+(bu\013er.)32 b(The)19 b(w)o(ord)g(b)q(oundaries)g(are)g(the)315
+569 y(same)c(as)g Fs(backward-word)p Ft(.)j(By)d(default,)f(this)h
+(command)g(is)g(un)o(b)q(ound.)75 641 y Fs(copy-forward-word)e(\(\))315
+696 y Ft(Cop)o(y)i(the)h(w)o(ord)e(follo)o(wing)g(p)q(oin)o(t)h(to)g
+(the)g(kill)g(bu\013er.)20 b(The)c(w)o(ord)f(b)q(oundaries)h(are)f(the)
+315 751 y(same)g(as)g Fs(forward-word)p Ft(.)j(By)d(default,)g(this)f
+(command)h(is)g(un)o(b)q(ound.)75 824 y Fs(yank)g(\(C-y\))315
+879 y Ft(Y)l(ank)g(the)h(top)f(of)f(the)i(kill)e(ring)g(in)o(to)g(the)i
+(bu\013er)f(at)f(p)q(oin)o(t.)75 951 y Fs(yank-pop)g(\(M-y\))315
+1006 y Ft(Rotate)j(the)g(kill-ring,)f(and)h(y)o(ank)g(the)h(new)f(top.)
26 b(Y)l(ou)17 b(can)h(only)f(do)g(this)g(if)f(the)i(prior)315
-2377 y(command)d(is)g Fs(yank)f Ft(or)h Fs(yank-pop)p
-Ft(.)75 2475 y Fi(1.4.5)30 b(Sp)r(ecifying)20 b(Numeric)h(Argumen)n(ts)
-75 2560 y Fs(digit-argument)13 b(\()p Fl(M-0)p Fs(,)i
-Fl(M-1)p Fs(,)f(...)h Fl(M--)p Fs(\))315 2615 y Ft(Add)f(this)f(digit)f
+1061 y(command)d(is)g Fs(yank)f Ft(or)h Fs(yank-pop)p
+Ft(.)75 1153 y Fi(1.4.5)30 b(Sp)r(ecifying)20 b(Numeric)h(Argumen)n(ts)
+75 1236 y Fs(digit-argument)13 b(\()p Fl(M-0)p Fs(,)i
+Fl(M-1)p Fs(,)f(...)h Fl(M--)p Fs(\))315 1291 y Ft(Add)f(this)f(digit)f
(to)h(the)h(argumen)o(t)e(already)h(accum)o(ulating,)f(or)h(start)f(a)h
-(new)h(argumen)o(t.)315 2670 y Fl(M--)h Ft(starts)f(a)h(negativ)o(e)f
-(argumen)o(t.)p eop end
-%%Page: 21 25
-TeXDict begin 21 24 bop 75 -58 a Ft(Chapter)15 b(1:)k(Command)c(Line)h
-(Editing)1053 b(21)75 149 y Fs(universal-argument)13
-b(\(\))315 204 y Ft(This)f(is)h(another)f(w)o(a)o(y)g(to)g(sp)q(ecify)h
-(an)g(argumen)o(t.)18 b(If)13 b(this)f(command)h(is)f(follo)o(w)o(ed)f
-(b)o(y)i(one)315 259 y(or)h(more)h(digits,)e(optionally)g(with)h(a)h
+(new)h(argumen)o(t.)315 1345 y Fl(M--)h Ft(starts)f(a)h(negativ)o(e)f
+(argumen)o(t.)75 1418 y Fs(universal-argument)f(\(\))315
+1473 y Ft(This)f(is)h(another)f(w)o(a)o(y)g(to)g(sp)q(ecify)h(an)g
+(argumen)o(t.)18 b(If)13 b(this)f(command)h(is)f(follo)o(w)o(ed)f(b)o
+(y)i(one)315 1528 y(or)h(more)h(digits,)e(optionally)g(with)h(a)h
(leading)f(min)o(us)g(sign,)g(those)h(digits)e(de\014ne)j(the)f(ar-)315
-314 y(gumen)o(t.)k(If)c(the)g(command)f(is)g(follo)o(w)o(ed)f(b)o(y)i
-(digits,)e(executing)h Fs(universal-argument)315 369
+1582 y(gumen)o(t.)k(If)c(the)g(command)f(is)g(follo)o(w)o(ed)f(b)o(y)i
+(digits,)e(executing)h Fs(universal-argument)315 1637
y Ft(again)h(ends)h(the)g(n)o(umeric)g(argumen)o(t,)f(but)h(is)g
(otherwise)f(ignored.)21 b(As)16 b(a)g(sp)q(ecial)f(case,)315
-423 y(if)h(this)g(command)g(is)g(immediately)f(follo)o(w)o(ed)g(b)o(y)h
-(a)g(c)o(haracter)g(that)g(is)g(neither)g(a)g(digit)315
-478 y(nor)k(min)o(us)h(sign,)g(the)f(argumen)o(t)g(coun)o(t)h(for)f
+1692 y(if)h(this)g(command)g(is)g(immediately)f(follo)o(w)o(ed)g(b)o(y)
+h(a)g(c)o(haracter)g(that)g(is)g(neither)g(a)g(digit)315
+1747 y(nor)k(min)o(us)h(sign,)g(the)f(argumen)o(t)g(coun)o(t)h(for)f
(the)g(next)h(command)g(is)f(m)o(ultiplied)f(b)o(y)315
-533 y(four.)27 b(The)17 b(argumen)o(t)g(coun)o(t)g(is)g(initially)f
+1802 y(four.)27 b(The)17 b(argumen)o(t)g(coun)o(t)g(is)g(initially)f
(one,)i(so)f(executing)g(this)g(function)h(the)f(\014rst)315
-588 y(time)d(mak)o(es)f(the)i(argumen)o(t)e(coun)o(t)h(four,)g(a)g
+1856 y(time)d(mak)o(es)f(the)i(argumen)o(t)e(coun)o(t)h(four,)g(a)g
(second)h(time)f(mak)o(es)f(the)i(argumen)o(t)e(coun)o(t)315
-643 y(sixteen,)i(and)g(so)g(on.)20 b(By)15 b(default,)f(this)h(is)g
-(not)g(b)q(ound)h(to)e(a)h(k)o(ey)l(.)75 749 y Fi(1.4.6)30
+1911 y(sixteen,)i(and)g(so)g(on.)20 b(By)15 b(default,)f(this)h(is)g
+(not)g(b)q(ound)h(to)e(a)h(k)o(ey)l(.)75 2004 y Fi(1.4.6)30
b(Letting)20 b(Readline)g(T)n(yp)r(e)h(F)-5 b(or)19 b(Y)-5
-b(ou)75 838 y Fs(complete)14 b(\(TAB\))315 893 y Ft(A)o(ttempt)c(to)h
+b(ou)75 2086 y Fs(complete)14 b(\(TAB\))315 2141 y Ft(A)o(ttempt)c(to)h
(p)q(erform)g(completion)g(on)g(the)g(text)g(b)q(efore)h(p)q(oin)o(t.)
-18 b(The)11 b(actual)g(completion)315 948 y(p)q(erformed)k(is)g
+18 b(The)11 b(actual)g(completion)315 2196 y(p)q(erformed)k(is)g
(application-sp)q(eci\014c.)20 b(The)15 b(default)g(is)g(\014lename)g
-(completion.)75 1034 y Fs(possible-completions)d(\(M-?\))315
-1089 y Ft(List)17 b(the)g(p)q(ossible)g(completions)g(of)g(the)g(text)g
+(completion.)75 2269 y Fs(possible-completions)d(\(M-?\))315
+2323 y Ft(List)17 b(the)g(p)q(ossible)g(completions)g(of)g(the)g(text)g
(b)q(efore)h(p)q(oin)o(t.)25 b(When)18 b(displa)o(ying)e(com-)315
-1143 y(pletions,)f(Readline)i(sets)f(the)g(n)o(um)o(b)q(er)h(of)e
+2378 y(pletions,)f(Readline)i(sets)f(the)g(n)o(um)o(b)q(er)h(of)e
(columns)h(used)h(for)f(displa)o(y)f(to)h(the)g(v)m(alue)g(of)315
-1198 y Fs(completion-display-width)p Ft(,)f(the)k(v)m(alue)f(of)g(the)g
+2433 y Fs(completion-display-width)p Ft(,)f(the)k(v)m(alue)f(of)g(the)g
(en)o(vironmen)o(t)g(v)m(ariable)f Fs(COLUMNS)p Ft(,)315
-1253 y(or)e(the)g(screen)h(width,)e(in)h(that)g(order.)75
-1339 y Fs(insert-completions)e(\(M-*\))315 1394 y Ft(Insert)j(all)e
+2488 y(or)e(the)g(screen)h(width,)e(in)h(that)g(order.)75
+2560 y Fs(insert-completions)e(\(M-*\))315 2615 y Ft(Insert)j(all)e
(completions)g(of)h(the)g(text)g(b)q(efore)h(p)q(oin)o(t)e(that)h(w)o
-(ould)g(ha)o(v)o(e)g(b)q(een)h(generated)315 1449 y(b)o(y)f
-Fs(possible-completions)p Ft(.)75 1535 y Fs(menu-complete)e(\(\))315
-1590 y Ft(Similar)d(to)i Fs(complete)p Ft(,)f(but)h(replaces)g(the)g(w)
-o(ord)f(to)g(b)q(e)i(completed)e(with)h(a)f(single)h(matc)o(h)315
-1645 y(from)18 b(the)h(list)f(of)g(p)q(ossible)h(completions.)30
-b(Rep)q(eated)20 b(execution)f(of)g Fs(menu-complete)315
-1699 y Ft(steps)h(through)g(the)g(list)f(of)h(p)q(ossible)g
-(completions,)g(inserting)f(eac)o(h)h(matc)o(h)f(in)h(turn.)315
-1754 y(A)o(t)e(the)g(end)h(of)f(the)h(list)e(of)h(completions,)g(the)g
-(b)q(ell)h(is)e(rung)i(\(sub)s(ject)f(to)f(the)i(setting)315
-1809 y(of)f Fs(bell-style)p Ft(\))e(and)i(the)g(original)e(text)i(is)f
-(restored.)28 b(An)19 b(argumen)o(t)e(of)g Fj(n)i Ft(mo)o(v)o(es)e
-Fj(n)315 1864 y Ft(p)q(ositions)f(forw)o(ard)g(in)i(the)f(list)f(of)h
-(matc)o(hes;)h(a)f(negativ)o(e)f(argumen)o(t)h(ma)o(y)g(b)q(e)h(used)g
-(to)315 1919 y(mo)o(v)o(e)g(bac)o(kw)o(ard)h(through)g(the)g(list.)30
-b(This)19 b(command)g(is)g(in)o(tended)g(to)g(b)q(e)h(b)q(ound)g(to)315
-1973 y Fs(TAB)p Ft(,)14 b(but)i(is)e(un)o(b)q(ound)j(b)o(y)e(default.)
-75 2060 y Fs(menu-complete-backward)d(\(\))315 2114 y
-Ft(Iden)o(tical)17 b(to)g Fs(menu-complete)p Ft(,)f(but)i(mo)o(v)o(es)e
-(bac)o(kw)o(ard)h(through)g(the)h(list)e(of)h(p)q(ossible)315
-2169 y(completions,)d(as)h(if)f Fs(menu-complete)g Ft(had)h(b)q(een)h
-(giv)o(en)f(a)g(negativ)o(e)f(argumen)o(t.)75 2255 y
-Fs(delete-char-or-list)f(\(\))315 2310 y Ft(Deletes)19
-b(the)g(c)o(haracter)g(under)h(the)g(cursor)f(if)g(not)g(at)g(the)g(b)q
-(eginning)h(or)f(end)h(of)f(the)315 2365 y(line)24 b(\(lik)o(e)g
-Fs(delete-char)p Ft(\).)47 b(If)25 b(at)f(the)h(end)g(of)g(the)g(line,)
-h(b)q(eha)o(v)o(es)f(iden)o(tically)f(to)315 2420 y Fs
-(possible-completions)p Ft(.)17 b(This)e(command)g(is)g(un)o(b)q(ound)h
-(b)o(y)f(default.)75 2526 y Fi(1.4.7)30 b(Keyb)r(oard)20
-b(Macros)75 2615 y Fs(start-kbd-macro)13 b(\(C-x)i(\(\))315
-2670 y Ft(Begin)g(sa)o(ving)f(the)i(c)o(haracters)e(t)o(yp)q(ed)i(in)o
-(to)e(the)h(curren)o(t)g(k)o(eyb)q(oard)g(macro.)p eop
-end
-%%Page: 22 26
-TeXDict begin 22 25 bop 75 -58 a Ft(Chapter)15 b(1:)k(Command)c(Line)h
-(Editing)1053 b(22)75 149 y Fs(end-kbd-macro)13 b(\(C-x)i(\)\))315
-204 y Ft(Stop)f(sa)o(ving)e(the)i(c)o(haracters)f(t)o(yp)q(ed)h(in)o
+(ould)g(ha)o(v)o(e)g(b)q(een)h(generated)315 2670 y(b)o(y)f
+Fs(possible-completions)p Ft(,)d(separated)j(b)o(y)g(a)g(space.)p
+eop end
+%%Page: 24 28
+TeXDict begin 24 27 bop 75 -58 a Ft(Chapter)15 b(1:)k(Command)c(Line)h
+(Editing)1053 b(24)75 149 y Fs(menu-complete)13 b(\(\))315
+204 y Ft(Similar)d(to)i Fs(complete)p Ft(,)f(but)h(replaces)g(the)g(w)o
+(ord)f(to)g(b)q(e)i(completed)e(with)h(a)f(single)h(matc)o(h)315
+259 y(from)20 b(the)h(list)f(of)g(p)q(ossible)h(completions.)35
+b(Rep)q(eatedly)22 b(executing)f Fs(menu-complete)315
+314 y Ft(steps)14 b(through)f(the)h(list)f(of)g(p)q(ossible)h
+(completions,)e(inserting)h(eac)o(h)h(matc)o(h)f(in)h(turn.)19
+b(A)o(t)315 369 y(the)h(end)g(of)g(the)g(list)e(of)i(completions,)f
+Fs(menu-complete)f Ft(rings)i(the)f(b)q(ell)h(\(sub)s(ject)g(to)315
+423 y(the)e(setting)g(of)g Fs(bell-style)p Ft(\))e(and)j(restores)e
+(the)i(original)d(text.)29 b(An)18 b(argumen)o(t)g(of)g
+Fk(n)315 478 y Ft(mo)o(v)o(es)f Fk(n)i Ft(p)q(ositions)e(forw)o(ard)g
+(in)h(the)g(list)f(of)h(matc)o(hes;)h(a)f(negativ)o(e)f(argumen)o(t)h
+(mo)o(v)o(es)315 533 y(bac)o(kw)o(ard)c(through)g(the)g(list.)k(This)c
+(command)h(is)f(in)o(tended)g(to)g(b)q(e)h(b)q(ound)g(to)f
+Fs(TAB)p Ft(,)g(but)315 588 y(is)h(un)o(b)q(ound)h(b)o(y)f(default.)75
+665 y Fs(menu-complete-backward)d(\(\))315 720 y Ft(Iden)o(tical)17
+b(to)g Fs(menu-complete)p Ft(,)f(but)i(mo)o(v)o(es)e(bac)o(kw)o(ard)h
+(through)g(the)h(list)e(of)h(p)q(ossible)315 775 y(completions,)g(as)h
+(if)f Fs(menu-complete)f Ft(had)i(b)q(een)h(giv)o(en)f(a)f(negativ)o(e)
+g(argumen)o(t.)27 b(This)315 830 y(command)15 b(is)g(un)o(b)q(ound)h(b)
+o(y)f(default.)75 908 y Fs(delete-char-or-list)e(\(\))315
+962 y Ft(Deletes)19 b(the)g(c)o(haracter)g(under)h(the)g(cursor)f(if)g
+(not)g(at)g(the)g(b)q(eginning)h(or)f(end)h(of)f(the)315
+1017 y(line)24 b(\(lik)o(e)f Fs(delete-char)p Ft(\).)44
+b(A)o(t)24 b(the)g(end)h(of)f(the)g(line,)h(it)f(b)q(eha)o(v)o(es)g
+(iden)o(tically)f(to)315 1072 y Fs(possible-completions)p
+Ft(.)17 b(This)e(command)g(is)g(un)o(b)q(ound)h(b)o(y)f(default.)75
+1169 y Fi(1.4.7)30 b(Keyb)r(oard)20 b(Macros)75 1254
+y Fs(start-kbd-macro)13 b(\(C-x)i(\(\))315 1309 y Ft(Begin)g(sa)o(ving)
+f(the)i(c)o(haracters)e(t)o(yp)q(ed)i(in)o(to)e(the)h(curren)o(t)g(k)o
+(eyb)q(oard)g(macro.)75 1387 y Fs(end-kbd-macro)e(\(C-x)i(\)\))315
+1442 y Ft(Stop)f(sa)o(ving)e(the)i(c)o(haracters)f(t)o(yp)q(ed)h(in)o
(to)e(the)i(curren)o(t)g(k)o(eyb)q(oard)f(macro)g(and)h(sa)o(v)o(e)f
-(the)315 259 y(de\014nition.)75 335 y Fs(call-last-kbd-macro)g(\(C-x)h
-(e\))315 390 y Ft(Re-execute)19 b(the)f(last)e(k)o(eyb)q(oard)i(macro)f
-(de\014ned,)i(b)o(y)e(making)g(the)h(c)o(haracters)e(in)i(the)315
-445 y(macro)c(app)q(ear)i(as)f(if)f(t)o(yp)q(ed)i(at)e(the)i(k)o(eyb)q
-(oard.)75 521 y Fs(print-last-kbd-macro)c(\(\))315 576
-y Ft(Prin)o(t)i(the)h(last)g(k)o(eb)q(oard)g(macro)f(de\014ned)j(in)e
-(a)g(format)f(suitable)g(for)h(the)g Fj(inputrc)j Ft(\014le.)75
-672 y Fi(1.4.8)30 b(Some)20 b(Miscellaneous)h(Commands)75
-756 y Fs(re-read-init-file)13 b(\(C-x)h(C-r\))315 811
-y Ft(Read)e(in)e(the)h(con)o(ten)o(ts)g(of)f(the)h Fj(inputrc)j
-Ft(\014le,)d(and)h(incorp)q(orate)e(an)o(y)g(bindings)h(or)g(v)m
-(ariable)315 866 y(assignmen)o(ts)j(found)i(there.)75
-942 y Fs(abort)e(\(C-g\))315 997 y Ft(Ab)q(ort)f(the)g(curren)o(t)h
+(the)315 1496 y(de\014nition.)75 1574 y Fs(call-last-kbd-macro)g(\(C-x)
+h(e\))315 1629 y Ft(Re-execute)19 b(the)f(last)e(k)o(eyb)q(oard)i
+(macro)f(de\014ned,)i(b)o(y)e(making)g(the)h(c)o(haracters)e(in)i(the)
+315 1684 y(macro)c(app)q(ear)i(as)f(if)f(t)o(yp)q(ed)i(at)e(the)i(k)o
+(eyb)q(oard.)75 1761 y Fs(print-last-kbd-macro)c(\(\))315
+1816 y Ft(Prin)o(t)i(the)h(last)f(k)o(eyb)q(oard)h(macro)g(de\014ned)h
+(in)f(a)g(format)e(suitable)i(for)f(the)h Fk(inputrc)j
+Ft(\014le.)75 1914 y Fi(1.4.8)30 b(Some)20 b(Miscellaneous)h(Commands)
+75 1999 y Fs(re-read-init-file)13 b(\(C-x)h(C-r\))315
+2053 y Ft(Read)e(in)e(the)h(con)o(ten)o(ts)g(of)f(the)h
+Fk(inputrc)j Ft(\014le,)d(and)h(incorp)q(orate)e(an)o(y)g(bindings)h
+(or)g(v)m(ariable)315 2108 y(assignmen)o(ts)j(found)i(there.)75
+2186 y Fs(abort)e(\(C-g\))315 2241 y Ft(Ab)q(ort)f(the)g(curren)o(t)h
(editing)e(command)h(and)h(ring)e(the)i(terminal's)d(b)q(ell)i(\(sub)s
-(ject)g(to)g(the)315 1052 y(setting)h(of)h Fs(bell-style)p
-Ft(\).)75 1128 y Fs(do-lowercase-version)d(\(M-A,)j(M-B,)f(M-)p
-Fl(x)p Fs(,)h(...\))315 1183 y Ft(If)j(the)f(meta\014ed)h(c)o(haracter)
-f Fj(x)j Ft(is)d(upp)q(er)i(case,)f(run)f(the)h(command)f(that)g(is)g
-(b)q(ound)i(to)315 1238 y(the)e(corresp)q(onding)f(meta\014ed)h(lo)o(w)
+(ject)g(to)g(the)315 2295 y(setting)h(of)h Fs(bell-style)p
+Ft(\).)75 2373 y Fs(do-lowercase-version)d(\(M-A,)j(M-B,)f(M-)p
+Fl(x)p Fs(,)h(...\))315 2428 y Ft(If)j(the)f(meta\014ed)h(c)o(haracter)
+f Fk(x)j Ft(is)d(upp)q(er)i(case,)f(run)f(the)h(command)f(that)g(is)g
+(b)q(ound)i(to)315 2483 y(the)e(corresp)q(onding)f(meta\014ed)h(lo)o(w)
o(er)e(case)h(c)o(haracter.)23 b(The)17 b(b)q(eha)o(vior)f(is)g
-(unde\014ned)i(if)315 1293 y Fj(x)g Ft(is)d(already)f(lo)o(w)o(er)g
-(case.)75 1369 y Fs(prefix-meta)g(\(ESC\))315 1424 y
-Ft(Metafy)k(the)h(next)g(c)o(haracter)f(t)o(yp)q(ed.)30
-b(This)19 b(is)f(for)g(k)o(eyb)q(oards)h(without)f(a)g(meta)g(k)o(ey)l
-(.)315 1478 y(T)o(yping)d(`)p Fs(ESC)f(f)p Ft(')h(is)f(equiv)m(alen)o
-(t)h(to)g(t)o(yping)f Fl(M-f)p Ft(.)75 1555 y Fs(undo)h(\(C-_)f(or)h
-(C-x)g(C-u\))315 1610 y Ft(Incremen)o(tal)g(undo,)g(separately)g(remem)
-o(b)q(ered)h(for)e(eac)o(h)h(line.)75 1686 y Fs(revert-line)f(\(M-r\))
-315 1741 y Ft(Undo)j(all)e(c)o(hanges)i(made)f(to)g(this)g(line.)24
+(unde\014ned)i(if)315 2538 y Fk(x)g Ft(is)d(already)f(lo)o(w)o(er)g
+(case.)75 2615 y Fs(prefix-meta)g(\(ESC\))315 2670 y
+Ft(Metafy)g(the)i(next)f(c)o(haracter)f(t)o(yp)q(ed.)21
+b(T)o(yping)14 b(`)p Fs(ESC)g(f)p Ft(')h(is)g(equiv)m(alen)o(t)g(to)f
+(t)o(yping)h Fl(M-f)p Ft(.)p eop end
+%%Page: 25 29
+TeXDict begin 25 28 bop 75 -58 a Ft(Chapter)15 b(1:)k(Command)c(Line)h
+(Editing)1053 b(25)75 149 y Fs(undo)15 b(\(C-_)f(or)h(C-x)g(C-u\))315
+204 y Ft(Incremen)o(tal)g(undo,)g(separately)g(remem)o(b)q(ered)h(for)e
+(eac)o(h)h(line.)75 292 y Fs(revert-line)f(\(M-r\))315
+347 y Ft(Undo)j(all)e(c)o(hanges)i(made)f(to)g(this)g(line.)24
b(This)16 b(is)g(lik)o(e)g(executing)g(the)h Fs(undo)f
-Ft(command)315 1795 y(enough)g(times)e(to)h(get)f(bac)o(k)h(to)g(the)g
-(b)q(eginning.)75 1872 y Fs(tilde-expand)f(\(M-~\))315
-1926 y Ft(P)o(erform)g(tilde)h(expansion)g(on)g(the)g(curren)o(t)g(w)o
-(ord.)75 2003 y Fs(set-mark)f(\(C-@\))315 2058 y Ft(Set)i(the)h(mark)f
-(to)f(the)i(p)q(oin)o(t.)23 b(If)17 b(a)f(n)o(umeric)g(argumen)o(t)g
-(is)f(supplied,)i(the)g(mark)e(is)h(set)315 2112 y(to)f(that)f(p)q
-(osition.)75 2189 y Fs(exchange-point-and-mark)e(\(C-x)j(C-x\))315
-2243 y Ft(Sw)o(ap)g(the)h(p)q(oin)o(t)f(with)g(the)h(mark.)k(The)c
-(curren)o(t)f(cursor)h(p)q(osition)e(is)h(set)h(to)f(the)g(sa)o(v)o(ed)
-315 2298 y(p)q(osition,)f(and)h(the)h(old)e(cursor)h(p)q(osition)f(is)h
-(sa)o(v)o(ed)g(as)g(the)g(mark.)75 2375 y Fs(character-search)e
-(\(C-]\))315 2429 y Ft(A)f(c)o(haracter)g(is)g(read)h(and)f(p)q(oin)o
-(t)g(is)g(mo)o(v)o(ed)g(to)g(the)g(next)h(o)q(ccurrence)g(of)f(that)g
-(c)o(haracter.)315 2484 y(A)j(negativ)o(e)g(coun)o(t)g(searc)o(hes)g
-(for)f(previous)h(o)q(ccurrences.)75 2560 y Fs
-(character-search-backward)d(\(M-C-]\))315 2615 y Ft(A)22
-b(c)o(haracter)g(is)g(read)g(and)h(p)q(oin)o(t)f(is)g(mo)o(v)o(ed)g(to)
-g(the)g(previous)g(o)q(ccurrence)i(of)e(that)315 2670
-y(c)o(haracter.)d(A)c(negativ)o(e)g(coun)o(t)g(searc)o(hes)g(for)f
-(subsequen)o(t)i(o)q(ccurrences.)p eop end
-%%Page: 23 27
-TeXDict begin 23 26 bop 75 -58 a Ft(Chapter)15 b(1:)k(Command)c(Line)h
-(Editing)1053 b(23)75 149 y Fs(skip-csi-sequence)13 b(\(\))315
-204 y Ft(Read)h(enough)g(c)o(haracters)f(to)g(consume)h(a)g(m)o(ulti-k)
-o(ey)e(sequence)j(suc)o(h)f(as)f(those)h(de\014ned)315
-259 y(for)k(k)o(eys)g(lik)o(e)g(Home)h(and)g(End.)30
-b(Suc)o(h)19 b(sequences)h(b)q(egin)f(with)f(a)g(Con)o(trol)f(Sequence)
-315 314 y(Indicator)h(\(CSI\),)g(usually)f(ESC-[.)29
-b(If)19 b(this)f(sequence)h(is)f(b)q(ound)h(to)f Fs("\\)p
-Ft(e[)p Fs(")p Ft(,)g(k)o(eys)g(pro-)315 369 y(ducing)e(suc)o(h)h
-(sequences)g(will)d(ha)o(v)o(e)i(no)g(e\013ect)g(unless)g(explicitly)e
-(b)q(ound)j(to)f(a)f(readline)315 423 y(command,)h(instead)f(of)h
-(inserting)f(stra)o(y)f(c)o(haracters)i(in)o(to)f(the)h(editing)f
-(bu\013er.)22 b(This)15 b(is)315 478 y(un)o(b)q(ound)h(b)o(y)g
-(default,)e(but)h(usually)g(b)q(ound)h(to)f(ESC-[.)75
-558 y Fs(insert-comment)e(\(M-#\))315 613 y Ft(Without)k(a)g(n)o
-(umeric)h(argumen)o(t,)f(the)h(v)m(alue)g(of)g(the)f
-Fs(comment-begin)f Ft(v)m(ariable)i(is)f(in-)315 667
-y(serted)f(at)f(the)h(b)q(eginning)g(of)f(the)h(curren)o(t)g(line.)21
-b(If)16 b(a)g(n)o(umeric)g(argumen)o(t)f(is)g(supplied,)315
-722 y(this)j(command)g(acts)g(as)f(a)h(toggle:)25 b(if)18
-b(the)g(c)o(haracters)g(at)f(the)i(b)q(eginning)f(of)g(the)g(line)315
-777 y(do)d(not)g(matc)o(h)g(the)g(v)m(alue)h(of)f Fs(comment-begin)p
-Ft(,)e(the)i(v)m(alue)h(is)f(inserted,)f(otherwise)h(the)315
-832 y(c)o(haracters)k(in)h Fs(comment-begin)e Ft(are)i(deleted)h(from)e
-(the)h(b)q(eginning)g(of)g(the)g(line.)34 b(In)315 887
-y(either)15 b(case,)g(the)g(line)g(is)g(accepted)g(as)g(if)g(a)g
-(newline)g(had)g(b)q(een)i(t)o(yp)q(ed.)75 966 y Fs(dump-functions)c
-(\(\))315 1021 y Ft(Prin)o(t)f(all)g(of)h(the)g(functions)g(and)h
+Ft(command)315 401 y(enough)g(times)e(to)h(get)f(bac)o(k)h(to)g(the)g
+(initial)f(state.)75 489 y Fs(tilde-expand)g(\(M-~\))315
+544 y Ft(P)o(erform)g(tilde)h(expansion)g(on)g(the)g(curren)o(t)g(w)o
+(ord.)75 632 y Fs(set-mark)f(\(C-@\))315 686 y Ft(Set)i(the)g(mark)f
+(to)g(the)h(p)q(oin)o(t.)21 b(If)16 b(a)g(n)o(umeric)g(argumen)o(t)f
+(is)g(supplied,)h(set)g(the)f(mark)h(to)315 741 y(that)e(p)q(osition.)
+75 829 y Fs(exchange-point-and-mark)e(\(C-x)j(C-x\))315
+884 y Ft(Sw)o(ap)k(the)g(p)q(oin)o(t)g(with)f(the)i(mark.)31
+b(Set)19 b(the)g(curren)o(t)h(cursor)e(p)q(osition)h(to)f(the)h(sa)o(v)
+o(ed)315 938 y(p)q(osition,)14 b(then)h(set)g(the)h(mark)e(to)h(the)g
+(old)g(cursor)g(p)q(osition.)75 1026 y Fs(character-search)e(\(C-]\))
+315 1081 y Ft(Read)k(a)f(c)o(haracter)g(and)h(mo)o(v)o(e)e(p)q(oin)o(t)
+h(to)g(the)h(next)f(o)q(ccurrence)i(of)e(that)g(c)o(haracter.)23
+b(A)315 1136 y(negativ)o(e)14 b(argumen)o(t)h(searc)o(hes)g(for)f
+(previous)h(o)q(ccurrences.)75 1223 y Fs(character-search-backward)d
+(\(M-C-]\))315 1278 y Ft(Read)j(a)g(c)o(haracter)f(and)h(mo)o(v)o(e)f
+(p)q(oin)o(t)g(to)g(the)h(previous)g(o)q(ccurrence)h(of)e(that)g(c)o
+(haracter.)315 1333 y(A)h(negativ)o(e)g(argumen)o(t)f(searc)o(hes)h
+(for)g(subsequen)o(t)g(o)q(ccurrences.)75 1421 y Fs(skip-csi-sequence)e
+(\(\))315 1475 y Ft(Read)h(enough)g(c)o(haracters)f(to)g(consume)h(a)g
+(m)o(ulti-k)o(ey)e(sequence)j(suc)o(h)f(as)f(those)h(de\014ned)315
+1530 y(for)19 b(k)o(eys)h(lik)o(e)g(Home)g(and)g(End.)35
+b(CSI)20 b(sequences)h(b)q(egin)g(with)e(a)h(Con)o(trol)e(Sequence)315
+1585 y(Indicator)g(\(CSI\),)g(usually)f(ESC-[.)29 b(If)19
+b(this)f(sequence)h(is)f(b)q(ound)h(to)f Fs("\\)p Ft(e[)p
+Fs(")p Ft(,)g(k)o(eys)g(pro-)315 1640 y(ducing)e(CSI)g(sequences)h
+(will)d(ha)o(v)o(e)i(no)g(e\013ect)f(unless)h(explicitly)e(b)q(ound)j
+(to)e(a)h(Readline)315 1695 y(command,)g(instead)f(of)h(inserting)f
+(stra)o(y)f(c)o(haracters)i(in)o(to)f(the)h(editing)f(bu\013er.)22
+b(This)15 b(is)315 1749 y(un)o(b)q(ound)h(b)o(y)g(default,)e(but)h
+(usually)g(b)q(ound)h(to)f(ESC-[.)75 1837 y Fs(insert-comment)e
+(\(M-#\))315 1892 y Ft(Without)j(a)g(n)o(umeric)h(argumen)o(t,)f
+(insert)g(the)h(v)m(alue)g(of)g(the)g Fs(comment-begin)e
+Ft(v)m(ariable)315 1947 y(at)j(the)h(b)q(eginning)g(of)f(the)h(curren)o
+(t)g(line.)30 b(If)19 b(a)g(n)o(umeric)g(argumen)o(t)f(is)g(supplied,)i
+(this)315 2001 y(command)g(acts)f(as)h(a)g(toggle:)28
+b(if)19 b(the)h(c)o(haracters)f(at)h(the)g(b)q(eginning)g(of)f(the)h
+(line)g(do)315 2056 y(not)d(matc)o(h)g(the)g(v)m(alue)g(of)g
+Fs(comment-begin)p Ft(,)f(insert)h(the)g(v)m(alue;)h(otherwise)e
+(delete)i(the)315 2111 y(c)o(haracters)13 b(in)g Fs(comment-begin)e
+Ft(from)i(the)g(b)q(eginning)h(of)f(the)g(line.)19 b(In)14
+b(either)f(case,)h(the)315 2166 y(line)h(is)g(accepted)g(as)g(if)g(a)g
+(newline)g(had)g(b)q(een)i(t)o(yp)q(ed.)75 2254 y Fs(dump-functions)c
+(\(\))315 2308 y Ft(Prin)o(t)f(all)g(of)h(the)g(functions)g(and)h
(their)f(k)o(ey)g(bindings)g(to)f(the)i(Readline)f(output)g(stream.)315
-1076 y(If)j(a)g(n)o(umeric)f(argumen)o(t)g(is)h(supplied,)g(the)g
+2363 y(If)j(a)g(n)o(umeric)f(argumen)o(t)g(is)h(supplied,)g(the)g
(output)f(is)h(formatted)e(in)i(suc)o(h)g(a)g(w)o(a)o(y)f(that)315
-1131 y(it)f(can)i(b)q(e)g(made)f(part)f(of)h(an)g Fj(inputrc)j
+2418 y(it)f(can)i(b)q(e)g(made)f(part)f(of)h(an)g Fk(inputrc)j
Ft(\014le.)i(This)15 b(command)g(is)g(un)o(b)q(ound)h(b)o(y)f(default.)
-75 1210 y Fs(dump-variables)e(\(\))315 1265 y Ft(Prin)o(t)d(all)f(of)h
+75 2506 y Fs(dump-variables)e(\(\))315 2560 y Ft(Prin)o(t)d(all)f(of)h
(the)h(settable)f(v)m(ariables)g(and)h(their)f(v)m(alues)h(to)f(the)h
-(Readline)g(output)f(stream.)315 1320 y(If)16 b(a)g(n)o(umeric)f
+(Readline)g(output)f(stream.)315 2615 y(If)16 b(a)g(n)o(umeric)f
(argumen)o(t)g(is)h(supplied,)g(the)g(output)f(is)h(formatted)e(in)i
-(suc)o(h)g(a)g(w)o(a)o(y)f(that)315 1374 y(it)f(can)i(b)q(e)g(made)f
-(part)f(of)h(an)g Fj(inputrc)j Ft(\014le.)i(This)15 b(command)g(is)g
-(un)o(b)q(ound)h(b)o(y)f(default.)75 1454 y Fs(dump-macros)f(\(\))315
-1509 y Ft(Prin)o(t)i(all)g(of)g(the)h(Readline)g(k)o(ey)g(sequences)h
-(b)q(ound)g(to)e(macros)g(and)h(the)g(strings)f(they)315
-1564 y(output.)26 b(If)18 b(a)f(n)o(umeric)g(argumen)o(t)g(is)g
-(supplied,)h(the)f(output)g(is)g(formatted)f(in)i(suc)o(h)f(a)315
-1618 y(w)o(a)o(y)d(that)g(it)h(can)g(b)q(e)g(made)g(part)g(of)f(an)h
-Fj(inputrc)j Ft(\014le.)i(This)14 b(command)h(is)g(un)o(b)q(ound)h(b)o
-(y)315 1673 y(default.)75 1753 y Fs(emacs-editing-mode)d(\(C-e\))315
-1808 y Ft(When)j(in)f Fs(vi)f Ft(command)i(mo)q(de,)f(this)f(causes)i
-(a)f(switc)o(h)f(to)h Fs(emacs)f Ft(editing)h(mo)q(de.)75
-1887 y Fs(vi-editing-mode)e(\(M-C-j\))315 1942 y Ft(When)j(in)f
+(suc)o(h)g(a)g(w)o(a)o(y)f(that)315 2670 y(it)f(can)i(b)q(e)g(made)f
+(part)f(of)h(an)g Fk(inputrc)j Ft(\014le.)i(This)15 b(command)g(is)g
+(un)o(b)q(ound)h(b)o(y)f(default.)p eop end
+%%Page: 26 30
+TeXDict begin 26 29 bop 75 -58 a Ft(Chapter)15 b(1:)k(Command)c(Line)h
+(Editing)1053 b(26)75 149 y Fs(dump-macros)14 b(\(\))315
+204 y Ft(Prin)o(t)i(all)g(of)g(the)h(Readline)g(k)o(ey)g(sequences)h(b)
+q(ound)g(to)e(macros)g(and)h(the)g(strings)f(they)315
+259 y(output)g(to)f(the)i(Readline)f(output)g(stream.)22
+b(If)16 b(a)g(n)o(umeric)g(argumen)o(t)f(is)h(supplied,)g(the)315
+314 y(output)g(is)f(formatted)g(in)h(suc)o(h)g(a)g(w)o(a)o(y)f(that)g
+(it)g(can)h(b)q(e)h(made)f(part)f(of)h(an)g Fk(inputrc)i
+Ft(\014le.)315 369 y(This)d(command)g(is)g(un)o(b)q(ound)h(b)o(y)f
+(default.)75 448 y Fs(execute-named-command)d(\(M-x\))315
+503 y Ft(Read)j(a)e(bindable)h(readline)g(command)g(name)f(from)h(the)g
+(input)g(and)g(execute)g(the)g(func-)315 558 y(tion)e(to)g(whic)o(h)h
+(it's)f(b)q(ound,)i(as)f(if)f(the)h(k)o(ey)g(sequence)h(to)e(whic)o(h)h
+(it)f(w)o(as)g(b)q(ound)i(app)q(eared)315 613 y(in)19
+b(the)f(input.)31 b(If)19 b(this)f(function)h(is)f(supplied)h(with)f(a)
+h(n)o(umeric)g(argumen)o(t,)f(it)g(passes)315 667 y(that)c(argumen)o(t)
+h(to)f(the)i(function)f(it)f(executes.)75 747 y Fs(emacs-editing-mode)f
+(\(C-e\))315 802 y Ft(When)j(in)f Fs(vi)f Ft(command)i(mo)q(de,)f(this)
+f(causes)i(a)f(switc)o(h)f(to)h Fs(emacs)f Ft(editing)h(mo)q(de.)75
+882 y Fs(vi-editing-mode)e(\(M-C-j\))315 936 y Ft(When)j(in)f
Fs(emacs)f Ft(editing)h(mo)q(de,)g(this)f(causes)i(a)f(switc)o(h)f(to)h
-Fs(vi)f Ft(editing)h(mo)q(de.)75 2062 y Fr(1.5)33 b(Readline)21
-b(vi)i(Mo)r(de)75 2142 y Ft(While)15 b(the)h(Readline)g(library)f(do)q
+Fs(vi)f Ft(editing)h(mo)q(de.)75 1057 y Fr(1.5)33 b(Readline)21
+b(vi)i(Mo)r(de)75 1137 y Ft(While)15 b(the)h(Readline)g(library)f(do)q
(es)h(not)f(ha)o(v)o(e)g(a)h(full)f(set)h(of)f Fs(vi)g
Ft(editing)g(functions,)h(it)f(do)q(es)h(con)o(tain)75
-2197 y(enough)h(to)g(allo)o(w)e(simple)h(editing)h(of)f(the)i(line.)25
+1191 y(enough)h(to)g(allo)o(w)e(simple)h(editing)h(of)f(the)i(line.)25
b(The)17 b(Readline)g Fs(vi)g Ft(mo)q(de)g(b)q(eha)o(v)o(es)g(as)g(sp)q
-(eci\014ed)h(in)75 2252 y(the)d Fm(posix)g Ft(standard.)137
-2319 y(In)g(order)g(to)f(switc)o(h)f(in)o(teractiv)o(ely)g(b)q(et)o(w)o
-(een)i Fs(emacs)e Ft(and)i Fs(vi)f Ft(editing)g(mo)q(des,)h(use)f(the)h
-(command)75 2374 y Fl(M-C-j)j Ft(\(b)q(ound)i(to)e(emacs-editing-mo)q
-(de)h(when)g(in)g Fs(vi)g Ft(mo)q(de)g(and)g(to)f(vi-editing-mo)q(de)h
-(in)g Fs(emacs)75 2428 y Ft(mo)q(de\).)h(The)15 b(Readline)h(default)f
-(is)f Fs(emacs)h Ft(mo)q(de.)137 2496 y(When)h(y)o(ou)e(en)o(ter)h(a)g
-(line)g(in)f Fs(vi)h Ft(mo)q(de,)g(y)o(ou)g(are)f(already)h(placed)g
-(in)g(`insertion')e(mo)q(de,)i(as)g(if)f(y)o(ou)75 2550
-y(had)h(t)o(yp)q(ed)g(an)g(`)p Fs(i)p Ft('.)j(Pressing)c
-Fs(ESC)h Ft(switc)o(hes)f(y)o(ou)g(in)o(to)g(`command')g(mo)q(de,)g
-(where)h(y)o(ou)g(can)f(edit)h(the)75 2605 y(text)h(of)h(the)g(line)f
-(with)h(the)g(standard)f Fs(vi)h Ft(mo)o(v)o(emen)o(t)f(k)o(eys,)g(mo)o
-(v)o(e)g(to)h(previous)f(history)g(lines)h(with)75 2660
-y(`)p Fs(k)p Ft(')d(and)i(subsequen)o(t)f(lines)g(with)g(`)p
-Fs(j)p Ft(',)f(and)h(so)g(forth.)p eop end
-%%Page: 24 28
-TeXDict begin 24 27 bop 1830 -58 a Ft(24)75 149 y Fp(2)41
+(eci\014ed)h(in)75 1246 y(the)d Fs(sh)g Ft(description)g(in)g(the)g
+Fm(posix)g Ft(standard.)137 1313 y(In)g(order)g(to)f(switc)o(h)f(in)o
+(teractiv)o(ely)g(b)q(et)o(w)o(een)i Fs(emacs)e Ft(and)i
+Fs(vi)f Ft(editing)g(mo)q(des,)h(use)f(the)h(command)75
+1368 y Fl(M-C-j)j Ft(\(b)q(ound)i(to)e(emacs-editing-mo)q(de)h(when)g
+(in)g Fs(vi)g Ft(mo)q(de)g(and)g(to)f(vi-editing-mo)q(de)h(in)g
+Fs(emacs)75 1423 y Ft(mo)q(de\).)h(The)15 b(Readline)h(default)f(is)f
+Fs(emacs)h Ft(mo)q(de.)137 1490 y(When)h(y)o(ou)e(en)o(ter)h(a)g(line)g
+(in)f Fs(vi)h Ft(mo)q(de,)g(y)o(ou)g(are)f(already)h(placed)g(in)g
+(`insertion')e(mo)q(de,)i(as)g(if)f(y)o(ou)75 1545 y(had)h(t)o(yp)q(ed)
+g(an)g(`)p Fs(i)p Ft('.)j(Pressing)c Fs(ESC)h Ft(switc)o(hes)f(y)o(ou)g
+(in)o(to)g(`command')g(mo)q(de,)g(where)h(y)o(ou)g(can)f(edit)h(the)75
+1600 y(text)h(of)h(the)g(line)f(with)h(the)g(standard)f
+Fs(vi)h Ft(mo)o(v)o(emen)o(t)f(k)o(eys,)g(mo)o(v)o(e)g(to)h(previous)f
+(history)g(lines)h(with)75 1655 y(`)p Fs(k)p Ft(')d(and)i(subsequen)o
+(t)f(lines)g(with)g(`)p Fs(j)p Ft(',)f(and)h(so)g(forth.)p
+eop end
+%%Page: 27 31
+TeXDict begin 27 30 bop 1830 -58 a Ft(27)75 149 y Fp(2)41
b(Programming)29 b(with)e(GNU)h(Readline)75 271 y Ft(This)12
b(c)o(hapter)g(describ)q(es)h(the)g(in)o(terface)f(b)q(et)o(w)o(een)g
(the)h Fm(gnu)f Ft(Readline)h(Library)f(and)g(other)h(programs.)75
Fs(mail)p Ft(,)g Fs(ftp)p Ft(,)g(and)g Fs(sh)p Ft(.)31
b(F)l(or)19 b(suc)o(h)75 693 y(programs,)13 b(the)h(default)g(b)q(eha)o
(viour)g(of)g(Readline)h(is)e(su\016cien)o(t.)20 b(This)13
-b(section)h(describ)q(es)h(ho)o(w)f(to)g(use)75 748 y(Readline)j(in)h
-(the)f(simplest)f(w)o(a)o(y)g(p)q(ossible,)h(p)q(erhaps)h(to)f(replace)
-g(calls)f(in)h(y)o(our)g(co)q(de)h(to)e Fs(gets\(\))g
-Ft(or)75 803 y Fs(fgets\(\))p Ft(.)137 871 y(The)h(function)f
-Fs(readline\(\))f Ft(prin)o(ts)g(a)h(prompt)g Fj(prompt)h
-Ft(and)f(then)h(reads)f(and)h(returns)f(a)g(single)75
-926 y(line)g(of)g(text)g(from)f(the)i(user.)23 b(If)17
-b Fj(prompt)g Ft(is)f Fs(NULL)f Ft(or)h(the)h(empt)o(y)f(string,)f(no)h
-(prompt)g(is)g(displa)o(y)o(ed.)75 981 y(The)j(line)f
-Fs(readline)f Ft(returns)i(is)f(allo)q(cated)f(with)h
-Fs(malloc\(\))p Ft(;)h(the)g(caller)e(should)i Fs(free\(\))f
-Ft(the)g(line)75 1036 y(when)e(it)e(has)h(\014nished)h(with)f(it.)k
-(The)c(declaration)f(for)h Fs(readline)f Ft(in)h(ANSI)h(C)f(is)195
-1105 y Fs(char)23 b(*readline)g(\(const)g(char)g(*)p
-Fl(prompt)p Fs(\);)75 1174 y Ft(So,)15 b(one)g(migh)o(t)f(sa)o(y)195
-1242 y Fs(char)23 b(*line)g(=)h(readline)f(\("Enter)g(a)h(line:)f("\);)
-75 1311 y Ft(in)11 b(order)g(to)g(read)h(a)f(line)g(of)g(text)g(from)f
-(the)i(user.)19 b(The)11 b(line)h(returned)f(has)h(the)f(\014nal)g
-(newline)h(remo)o(v)o(ed,)75 1366 y(so)j(only)g(the)g(text)g(remains.)
-137 1435 y(If)21 b Fs(readline)e Ft(encoun)o(ters)h(an)g
-Fs(EOF)g Ft(while)g(reading)g(the)g(line,)h(and)f(the)h(line)e(is)h
-(empt)o(y)g(at)g(that)75 1490 y(p)q(oin)o(t,)14 b(then)h
-Fs(\(char)f(*\)NULL)g Ft(is)g(returned.)21 b(Otherwise,)14
-b(the)h(line)f(is)g(ended)i(just)e(as)h(if)f(a)g(newline)h(had)75
-1545 y(b)q(een)h(t)o(yp)q(ed.)137 1613 y(Readline)c(p)q(erforms)e(some)
-h(expansion)g(on)g(the)g Fj(prompt)g Ft(b)q(efore)g(it)g(is)f(displa)o
-(y)o(ed)g(on)h(the)g(screen.)19 b(See)75 1668 y(the)14
-b(description)f(of)g Fs(rl_expand_prompt)e Ft(\(see)j(Section)f(2.4.6)f
-([Redispla)o(y],)h(page)g(37\))g(for)g(additional)75
-1723 y(details,)19 b(esp)q(ecially)f(if)h Fj(prompt)h
-Ft(will)e(con)o(tain)g(c)o(haracters)g(that)h(do)g(not)f(consume)i(ph)o
-(ysical)e(screen)75 1778 y(space)d(when)h(displa)o(y)o(ed.)137
-1847 y(If)e(y)o(ou)f(w)o(an)o(t)g(the)g(user)h(to)f(b)q(e)h(able)f(to)g
-(get)g(at)g(the)g(line)h(later,)e(\(with)g Fs(C-p)i Ft(for)e
-(example\),)h(y)o(ou)h(m)o(ust)75 1901 y(call)g Fs(add_history\(\))g
-Ft(to)g(sa)o(v)o(e)h(the)g(line)g(a)o(w)o(a)o(y)f(in)h(a)f
-Fj(history)k Ft(list)c(of)h(suc)o(h)h(lines.)195 1970
-y Fs(add_history)22 b(\(line\);)75 2039 y Ft(F)l(or)15
+b(section)h(describ)q(es)h(ho)o(w)f(to)g(use)75 748 y(Readline)i(in)f
+(the)g(simplest)f(w)o(a)o(y)g(p)q(ossible,)h(p)q(erhaps)h(to)e(replace)
+h(calls)g(in)g(y)o(our)f(co)q(de)i(to)f Fs(fgets\(\))p
+Ft(.)137 817 y(The)i(function)f Fs(readline\(\))f Ft(prin)o(ts)g(a)h
+(prompt)g Fk(prompt)h Ft(and)f(then)h(reads)f(and)h(returns)f(a)g
+(single)75 871 y(line)e(of)g(text)g(from)g(the)h(user.)20
+b(Since)15 b(it's)e(p)q(ossible)h(to)g(en)o(ter)h(c)o(haracters)e(in)o
+(to)h(the)h(line)f(while)g(quoting)75 926 y(them)21 b(to)f(disable)h
+(an)o(y)f(Readline)h(editing)f(function)h(they)g(migh)o(t)f(normally)f
+(ha)o(v)o(e,)j(this)e(line)h(ma)o(y)75 981 y(include)d(em)o(b)q(edded)h
+(newlines)e(and)h(other)f(sp)q(ecial)h(c)o(haracters.)26
+b(If)18 b Fk(prompt)g Ft(is)f Fs(NULL)g Ft(or)g(the)g(empt)o(y)75
+1036 y(string,)f Fs(readline)g Ft(do)q(es)h(not)g(displa)o(y)f(a)h
+(prompt.)24 b(The)18 b(line)e Fs(readline)g Ft(returns)h(is)g(allo)q
+(cated)f(with)75 1091 y Fs(malloc\(\))p Ft(;)g(the)g(caller)g(should)h
+Fs(free\(\))e Ft(the)i(line)f(when)h(it)f(has)h(\014nished)g(with)f
+(it.)23 b(The)17 b(declaration)75 1145 y(for)e Fs(readline)f
+Ft(in)h(ANSI)h(C)f(is)195 1214 y Fs(char)23 b(*readline)g(\(const)g
+(char)g(*)p Fl(prompt)p Fs(\);)75 1283 y Ft(So,)15 b(one)g(migh)o(t)f
+(sa)o(y)195 1352 y Fs(char)23 b(*line)g(=)h(readline)f(\("Enter)g(a)h
+(line:)f("\);)75 1421 y Ft(in)11 b(order)g(to)g(read)h(a)f(line)g(of)g
+(text)g(from)f(the)i(user.)19 b(The)11 b(line)h(returned)f(has)h(the)f
+(\014nal)g(newline)h(remo)o(v)o(ed,)75 1476 y(so)17 b(only)g(the)g
+(text)g(remains.)25 b(This)17 b(means)g(that)f(lines)h(consisting)f(of)
+h(a)g(newline)g(return)g(the)g(empt)o(y)75 1530 y(string.)137
+1599 y(If)12 b Fs(readline)f Ft(encoun)o(ters)h(an)f
+Fs(EOF)h Ft(while)f(reading)g(the)h(line,)g(and)g(the)g(line)f(is)g
+(empt)o(y)h(at)f(that)g(p)q(oin)o(t,)75 1654 y(then)k
+Fs(readline)e Ft(returns)i Fs(\(char)f(*\)NULL)p Ft(.)19
+b(Otherwise,)14 b(the)h(line)f(is)g(ended)i(just)e(as)g(if)g(a)g
+(newline)h(had)75 1709 y(b)q(een)h(t)o(yp)q(ed.)137 1778
+y(Readline)c(p)q(erforms)e(some)h(expansion)g(on)g(the)g
+Fk(prompt)g Ft(b)q(efore)g(it)g(is)f(displa)o(y)o(ed)g(on)h(the)g
+(screen.)19 b(See)75 1833 y(the)14 b(description)f(of)g
+Fs(rl_expand_prompt)e Ft(\(see)j(Section)f(2.4.6)f([Redispla)o(y],)h
+(page)g(41\))g(for)g(additional)75 1887 y(details,)19
+b(esp)q(ecially)f(if)h Fk(prompt)h Ft(will)e(con)o(tain)g(c)o
+(haracters)g(that)h(do)g(not)f(consume)i(ph)o(ysical)e(screen)75
+1942 y(space)d(when)h(displa)o(y)o(ed.)137 2011 y(If)e(y)o(ou)f(w)o(an)
+o(t)g(the)g(user)h(to)f(b)q(e)h(able)f(to)g(get)g(at)g(the)g(line)h
+(later,)e(\(with)g Fs(C-p)i Ft(for)e(example\),)h(y)o(ou)h(m)o(ust)75
+2066 y(call)g Fs(add_history\(\))g Ft(to)g(sa)o(v)o(e)h(the)g(line)g(a)
+o(w)o(a)o(y)f(in)h(a)f Fk(history)k Ft(list)c(of)h(suc)o(h)h(lines.)195
+2135 y Fs(add_history)22 b(\(line\);)75 2204 y Ft(F)l(or)15
b(full)f(details)g(on)h(the)h(GNU)f(History)f(Library)l(,)g(see)i(the)f
-(asso)q(ciated)f(man)o(ual.)137 2108 y(It)i(is)f(preferable)h(to)f(a)o
+(asso)q(ciated)f(man)o(ual.)137 2272 y(It)i(is)f(preferable)h(to)f(a)o
(v)o(oid)f(sa)o(ving)h(empt)o(y)g(lines)g(on)h(the)g(history)e(list,)h
-(since)g(users)h(rarely)f(ha)o(v)o(e)g(a)75 2163 y(burning)g(need)h(to)
+(since)g(users)h(rarely)f(ha)o(v)o(e)g(a)75 2327 y(burning)g(need)h(to)
e(reuse)h(a)g(blank)f(line.)20 b(Here)15 b(is)f(a)h(function)f(whic)o
-(h)h(usefully)g(replaces)f(the)h(standard)75 2218 y Fs(gets\(\))f
+(h)h(usefully)g(replaces)f(the)h(standard)75 2382 y Fs(gets\(\))f
Ft(library)g(function,)h(and)g(has)g(the)h(adv)m(an)o(tage)e(of)h(no)g
-(static)f(bu\013er)h(to)g(o)o(v)o(er\015o)o(w:)195 2286
+(static)f(bu\013er)h(to)g(o)o(v)o(er\015o)o(w:)195 2451
y Fs(/*)24 b(A)f(static)g(variable)g(for)h(holding)e(the)i(line.)f(*/)
-195 2341 y(static)g(char)g(*line_read)g(=)h(\(char)f(*\)NULL;)195
-2451 y(/*)h(Read)f(a)h(string,)f(and)g(return)g(a)h(pointer)f(to)g(it.)
-267 2506 y(Returns)f(NULL)i(on)f(EOF.)h(*/)195 2560 y(char)f(*)195
-2615 y(rl_gets)g(\(\))195 2670 y({)p eop end
-%%Page: 25 29
-TeXDict begin 25 28 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)14
-b(with)g(GNU)h(Readline)842 b(25)243 149 y Fs(/*)23 b(If)h(the)f
-(buffer)g(has)h(already)f(been)g(allocated,)314 204 y(return)g(the)h
-(memory)f(to)g(the)h(free)f(pool.)g(*/)243 259 y(if)g(\(line_read\))290
-314 y({)338 369 y(free)g(\(line_read\);)338 423 y(line_read)g(=)h
-(\(char)f(*\)NULL;)290 478 y(})243 588 y(/*)g(Get)h(a)f(line)h(from)f
-(the)h(user.)f(*/)243 643 y(line_read)f(=)i(readline)f(\(""\);)243
-752 y(/*)g(If)h(the)f(line)h(has)f(any)h(text)f(in)g(it,)314
-807 y(save)h(it)f(on)h(the)f(history.)g(*/)243 862 y(if)g(\(line_read)g
-(&&)g(*line_read\))290 917 y(add_history)g(\(line_read\);)243
-1026 y(return)g(\(line_read\);)195 1081 y(})137 1151
-y Ft(This)14 b(function)g(giv)o(es)f(the)h(user)g(the)h(default)e(b)q
-(eha)o(viour)h(of)g Fs(TAB)f Ft(completion:)19 b(completion)13
-b(on)h(\014le)75 1206 y(names.)20 b(If)c(y)o(ou)f(do)g(not)g(w)o(an)o
-(t)f(Readline)i(to)e(complete)i(on)f(\014lenames,)g(y)o(ou)g(can)g(c)o
-(hange)h(the)f(binding)75 1261 y(of)g(the)g Fs(TAB)g
-Ft(k)o(ey)g(with)f Fs(rl_bind_key\(\))p Ft(.)195 1331
-y Fs(int)23 b(rl_bind_key)g(\(int)g Fl(key)p Fs(,)g(rl_command_func_t)f
-(*)p Fl(function)p Fs(\);)137 1401 y(rl_bind_key\(\))15
-b Ft(tak)o(es)h(t)o(w)o(o)g(argumen)o(ts:)22 b Fj(k)o(ey)e
-Ft(is)d(the)f(c)o(haracter)g(that)g(y)o(ou)h(w)o(an)o(t)f(to)g(bind,)h
-(and)75 1456 y Fj(function)i Ft(is)g(the)h(address)f(of)g(the)h
-(function)f(to)g(call)f(when)i Fj(k)o(ey)j Ft(is)c(pressed.)33
-b(Binding)20 b Fs(TAB)f Ft(to)f Fs(rl_)75 1511 y(insert\(\))g
-Ft(mak)o(es)h Fs(TAB)g Ft(insert)g(itself.)31 b Fs(rl_bind_key\(\))18
-b Ft(returns)h(non-zero)g(if)g Fj(k)o(ey)k Ft(is)c(not)g(a)g(v)m(alid)
-75 1566 y(ASCI)q(I)d(c)o(haracter)f(co)q(de)h(\(b)q(et)o(w)o(een)f(0)g
-(and)g(255\).)137 1636 y(Th)o(us,)g(to)g(disable)f(the)i(default)e
+195 2506 y(static)g(char)g(*line_read)g(=)h(\(char)f(*\)NULL;)195
+2615 y(/*)h(Read)f(a)h(string,)f(and)g(return)g(a)h(pointer)f(to)g(it.)
+267 2670 y(Returns)f(NULL)i(on)f(EOF.)h(*/)p eop end
+%%Page: 28 32
+TeXDict begin 28 31 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)14
+b(with)g(GNU)h(Readline)842 b(28)195 149 y Fs(char)23
+b(*)195 204 y(rl_gets)g(\(\))195 259 y({)243 314 y(/*)g(If)h(the)f
+(buffer)g(has)h(already)f(been)g(allocated,)314 369 y(return)g(the)h
+(memory)f(to)g(the)h(free)f(pool.)g(*/)243 423 y(if)g(\(line_read\))290
+478 y({)338 533 y(free)g(\(line_read\);)338 588 y(line_read)g(=)h
+(\(char)f(*\)NULL;)290 643 y(})243 752 y(/*)g(Get)h(a)f(line)h(from)f
+(the)h(user.)f(*/)243 807 y(line_read)f(=)i(readline)f(\(""\);)243
+917 y(/*)g(If)h(the)f(line)h(has)f(any)h(text)f(in)g(it,)314
+971 y(save)h(it)f(on)h(the)f(history.)g(*/)243 1026 y(if)g(\(line_read)
+g(&&)g(*line_read\))290 1081 y(add_history)g(\(line_read\);)243
+1191 y(return)g(\(line_read\);)195 1245 y(})137 1311
+y Ft(This)16 b(function)f(giv)o(es)g(the)h(user)f(the)h(default)f(b)q
+(eha)o(viour)h(of)f Fs(TAB)g Ft(completion:)20 b(\014lename)c(comple-)
+75 1366 y(tion.)j(If)14 b(y)o(ou)f(do)h(not)g(w)o(an)o(t)f(Readline)h
+(to)f(complete)h(\014lenames,)g(y)o(ou)f(can)h(c)o(hange)g(the)g
+(binding)g(of)g(the)75 1421 y Fs(TAB)h Ft(k)o(ey)g(with)f
+Fs(rl_bind_key\(\))p Ft(.)195 1486 y Fs(int)23 b(rl_bind_key)g(\(int)g
+Fl(key)p Fs(,)g(rl_command_func_t)f(*)p Fl(function)p
+Fs(\);)137 1552 y(rl_bind_key\(\))15 b Ft(tak)o(es)h(t)o(w)o(o)g
+(argumen)o(ts:)22 b Fk(k)o(ey)e Ft(is)d(the)f(c)o(haracter)g(that)g(y)o
+(ou)h(w)o(an)o(t)f(to)g(bind,)h(and)75 1607 y Fk(function)i
+Ft(is)g(the)h(address)f(of)g(the)h(function)f(to)g(call)f(when)i
+Fk(k)o(ey)j Ft(is)c(pressed.)33 b(Binding)20 b Fs(TAB)f
+Ft(to)f Fs(rl_)75 1662 y(insert\(\))g Ft(mak)o(es)h Fs(TAB)g
+Ft(insert)g(itself.)31 b Fs(rl_bind_key\(\))18 b Ft(returns)h(non-zero)
+g(if)g Fk(k)o(ey)k Ft(is)c(not)g(a)g(v)m(alid)75 1717
+y(ASCI)q(I)d(c)o(haracter)f(co)q(de)h(\(b)q(et)o(w)o(een)f(0)g(and)g
+(255\).)137 1782 y(Th)o(us,)g(to)g(disable)f(the)i(default)e
Fs(TAB)h Ft(b)q(eha)o(vior,)g(the)g(follo)o(wing)e(su\016ces:)195
-1706 y Fs(rl_bind_key)22 b(\('\\t',)h(rl_insert\);)137
-1777 y Ft(This)13 b(co)q(de)h(should)f(b)q(e)h(executed)g(once)g(at)e
+1848 y Fs(rl_bind_key)22 b(\('\\t',)h(rl_insert\);)137
+1914 y Ft(This)13 b(co)q(de)h(should)f(b)q(e)h(executed)g(once)g(at)e
(the)h(start)f(of)h(y)o(our)g(program;)f(y)o(ou)h(migh)o(t)f(write)g(a)
-h(func-)75 1832 y(tion)j(called)g Fs(initialize_readline\(\))d
+h(func-)75 1969 y(tion)j(called)g Fs(initialize_readline\(\))d
Ft(whic)o(h)j(p)q(erforms)g(this)g(and)h(other)f(desired)g
-(initializations,)75 1886 y(suc)o(h)g(as)e(installing)g(custom)g
+(initializations,)75 2024 y(suc)o(h)g(as)e(installing)g(custom)g
(completers)h(\(see)g(Section)g(2.6)g([Custom)f(Completers],)f(page)i
-(49\).)75 2011 y Fr(2.2)33 b(Custom)21 b(F)-6 b(unctions)75
-2091 y Ft(Readline)14 b(pro)o(vides)f(man)o(y)g(functions)h(for)f
+(55\).)75 2141 y Fr(2.2)33 b(Custom)21 b(F)-6 b(unctions)75
+2221 y Ft(Readline)14 b(pro)o(vides)f(man)o(y)g(functions)h(for)f
(manipulating)f(the)i(text)f(of)g(the)h(line,)f(but)h(it)e(isn't)h(p)q
-(ossible)75 2146 y(to)18 b(an)o(ticipate)f(the)h(needs)h(of)f(all)f
+(ossible)75 2275 y(to)18 b(an)o(ticipate)f(the)h(needs)h(of)f(all)f
(programs.)28 b(This)18 b(section)g(describ)q(es)h(the)f(v)m(arious)g
-(functions)g(and)75 2201 y(v)m(ariables)12 b(de\014ned)j(within)d(the)h
-(Readline)h(library)d(whic)o(h)i(allo)o(w)f(a)g(user)h(program)f(to)h
-(add)g(customized)75 2255 y(functionalit)o(y)g(to)i(Readline.)137
-2326 y(Before)j(declaring)g(an)o(y)g(functions)g(that)g(customize)f
+(functions)g(and)75 2330 y(v)m(ariables)i(de\014ned)i(within)f(the)g
+(Readline)g(library)e(whic)o(h)i(allo)o(w)e(a)i(program)f(to)g(add)h
+(customized)75 2385 y(functionalit)o(y)13 b(to)i(Readline.)137
+2451 y(Before)j(declaring)g(an)o(y)g(functions)g(that)g(customize)f
(Readline's)h(b)q(eha)o(vior,)h(or)e(using)h(an)o(y)g(func-)75
-2381 y(tionalit)o(y)i(Readline)j(pro)o(vides)g(in)f(other)h(co)q(de,)h
+2506 y(tionalit)o(y)i(Readline)j(pro)o(vides)g(in)f(other)h(co)q(de,)h
(an)f(application)f(writer)f(should)i(include)g(the)g(\014le)75
-2435 y Fs(<readline/readline.h>)14 b Ft(in)i(an)o(y)h(\014le)g(that)f
-(uses)h(Readline's)f(features.)24 b(Since)18 b(some)e(of)g(the)h
-(de\014-)75 2490 y(nitions)e(in)g Fs(readline.h)f Ft(use)i(the)g
-Fs(stdio)f Ft(library)l(,)f(the)i(\014le)f Fs(<stdio.h>)g
-Ft(should)g(b)q(e)h(included)h(b)q(efore)75 2545 y Fs(readline.h)p
-Ft(.)137 2615 y Fs(readline.h)d Ft(de\014nes)i(a)f(C)h(prepro)q(cessor)
-f(v)m(ariable)g(that)f(should)h(b)q(e)h(treated)f(as)g(an)g(in)o
-(teger,)f Fs(RL_)75 2670 y(READLINE_VERSION)p Ft(,)9
-b(whic)o(h)i(ma)o(y)g(b)q(e)g(used)h(to)e(conditionally)g(compile)g
-(application)g(co)q(de)i(dep)q(ending)p eop end
-%%Page: 26 30
-TeXDict begin 26 29 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)14
-b(with)g(GNU)h(Readline)842 b(26)75 149 y(on)17 b(the)h(installed)e
-(Readline)i(v)o(ersion.)26 b(The)18 b(v)m(alue)g(is)f(a)g(hexadecimal)g
-(enco)q(ding)h(of)f(the)h(ma)s(jor)e(and)75 204 y(minor)g(v)o(ersion)h
-(n)o(um)o(b)q(ers)g(of)g(the)g(library)l(,)f(of)h(the)g(form)f(0x)p
-Fj(MMmm)p Ft(.)25 b Fj(MM)c Ft(is)16 b(the)i(t)o(w)o(o-digit)c(ma)s
-(jor)75 259 y(v)o(ersion)g(n)o(um)o(b)q(er;)g Fj(mm)h
-Ft(is)f(the)g(t)o(w)o(o-digit)e(minor)i(v)o(ersion)g(n)o(um)o(b)q(er.)
-20 b(F)l(or)14 b(Readline)g(4.2,)g(for)f(example,)75
-314 y(the)i(v)m(alue)h(of)e Fs(RL_READLINE_VERSION)f
-Ft(w)o(ould)i(b)q(e)g Fs(0x0402)p Ft(.)75 418 y Fi(2.2.1)30
-b(Readline)20 b(T)n(yp)r(edefs)75 492 y Ft(F)l(or)15
-b(readabilit)o(y)l(,)e(w)o(e)i(declare)g(a)g(n)o(um)o(b)q(er)g(of)g
-(new)h(ob)s(ject)e(t)o(yp)q(es,)h(all)f(p)q(oin)o(ters)h(to)f
-(functions.)137 564 y(The)k(reason)g(for)f(declaring)g(these)h(new)g(t)
-o(yp)q(es)g(is)g(to)f(mak)o(e)g(it)g(easier)h(to)f(write)g(co)q(de)h
-(describing)75 619 y(p)q(oin)o(ters)d(to)f(C)h(functions)g(with)g
+2560 y Fs(<readline/readline.h>)11 b Ft(in)i(an)o(y)h(\014le)g(that)f
+(uses)h(Readline's)f(features.)19 b(Since)c(some)e(of)g(the)h
+(de\014ni-)75 2615 y(tions)h(in)g Fs(readline.h)g Ft(use)h(the)f
+Fs(stdio)g Ft(library)l(,)g(the)h(program)e(should)i(include)g(the)g
+(\014le)f Fs(<stdio.h>)75 2670 y Ft(b)q(efore)g Fs(readline.h)p
+Ft(.)p eop end
+%%Page: 29 33
+TeXDict begin 29 32 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)14
+b(with)g(GNU)h(Readline)842 b(29)137 149 y Fs(readline.h)14
+b Ft(de\014nes)i(a)f(C)h(prepro)q(cessor)f(v)m(ariable)g(that)f(should)
+h(b)q(e)h(treated)f(as)g(an)g(in)o(teger,)f Fs(RL_)75
+204 y(READLINE_VERSION)p Ft(,)9 b(whic)o(h)i(ma)o(y)g(b)q(e)g(used)h
+(to)e(conditionally)g(compile)g(application)g(co)q(de)i(dep)q(ending)75
+259 y(on)17 b(the)h(installed)e(Readline)i(v)o(ersion.)26
+b(The)18 b(v)m(alue)g(is)f(a)g(hexadecimal)g(enco)q(ding)h(of)f(the)h
+(ma)s(jor)e(and)75 314 y(minor)g(v)o(ersion)h(n)o(um)o(b)q(ers)g(of)g
+(the)g(library)l(,)f(of)h(the)g(form)f(0x)p Fk(MMmm)p
+Ft(.)25 b Fk(MM)c Ft(is)16 b(the)i(t)o(w)o(o-digit)c(ma)s(jor)75
+369 y(v)o(ersion)g(n)o(um)o(b)q(er;)g Fk(mm)h Ft(is)f(the)g(t)o(w)o
+(o-digit)e(minor)i(v)o(ersion)g(n)o(um)o(b)q(er.)20 b(F)l(or)14
+b(Readline)g(4.2,)g(for)f(example,)75 423 y(the)i(v)m(alue)h(of)e
+Fs(RL_READLINE_VERSION)f Ft(w)o(ould)i(b)q(e)g Fs(0x0402)p
+Ft(.)75 539 y Fi(2.2.1)30 b(Readline)20 b(T)n(yp)r(edefs)75
+612 y Ft(F)l(or)15 b(readabilit)o(y)l(,)e(w)o(e)i(declare)g(a)g(n)o(um)
+o(b)q(er)g(of)g(new)h(ob)s(ject)e(t)o(yp)q(es,)h(all)f(p)q(oin)o(ters)h
+(to)f(functions.)137 696 y(The)k(reason)g(for)f(declaring)g(these)h
+(new)g(t)o(yp)q(es)g(is)g(to)f(mak)o(e)g(it)g(easier)h(to)f(write)g(co)
+q(de)h(describing)75 750 y(p)q(oin)o(ters)d(to)f(C)h(functions)g(with)g
(appropriately)e(protot)o(yp)q(ed)i(argumen)o(ts)g(and)g(return)g(v)m
-(alues.)137 691 y(F)l(or)j(instance,)h(sa)o(y)f(w)o(e)g(w)o(an)o(t)f
-(to)h(declare)g(a)g(v)m(ariable)g Fj(func)k Ft(as)c(a)g(p)q(oin)o(ter)g
-(to)g(a)g(function)g(whic)o(h)75 746 y(tak)o(es)12 b(t)o(w)o(o)g
+(alues.)137 834 y(F)l(or)j(instance,)h(sa)o(y)f(w)o(e)g(w)o(an)o(t)f
+(to)h(declare)g(a)g(v)m(ariable)g Fk(func)k Ft(as)c(a)g(p)q(oin)o(ter)g
+(to)g(a)g(function)g(whic)o(h)75 888 y(tak)o(es)12 b(t)o(w)o(o)g
Fs(int)g Ft(argumen)o(ts)g(and)h(returns)g(an)g Fs(int)f
Ft(\(this)g(is)g(the)h(t)o(yp)q(e)g(of)g(all)e(of)i(the)g(Readline)g
-(bindable)75 801 y(functions\).)19 b(Instead)d(of)f(the)g(classic)f(C)h
-(declaration)137 873 y Fs(int)g(\(*func\)\(\);)75 945
-y Ft(or)g(the)g(ANSI-C)h(st)o(yle)e(declaration)137 1017
-y Fs(int)h(\(*func\)\(int,)f(int\);)75 1090 y Ft(w)o(e)h(ma)o(y)f
-(write)137 1162 y Fs(rl_command_func_t)f(*func;)137 1234
+(bindable)75 943 y(functions\).)19 b(Instead)d(of)f(the)g(classic)f(C)h
+(declaration)137 1026 y Fs(int)g(\(*func\)\(\);)75 1109
+y Ft(or)g(the)g(ANSI-C)h(st)o(yle)e(declaration)137 1193
+y Fs(int)h(\(*func\)\(int,)f(int\);)75 1276 y Ft(w)o(e)h(ma)o(y)f
+(write)137 1359 y Fs(rl_command_func_t)f(*func;)137 1442
y Ft(The)j(full)e(list)g(of)h(function)g(p)q(oin)o(ter)g(t)o(yp)q(es)g
-(a)o(v)m(ailable)f(is)75 1321 y Fs(typedef)g(int)h(rl_command_func_t)e
-(\(int,)h(int\);)75 1376 y(typedef)g(char)h(*rl_compentry_func_t)d
-(\(const)j(char)f(*,)h(int\);)75 1431 y(typedef)f(char)h
+(a)o(v)m(ailable)f(is)75 1546 y Fs(typedef)g(int)h(rl_command_func_t)e
+(\(int,)h(int\);)75 1601 y(typedef)g(char)h(*rl_compentry_func_t)d
+(\(const)j(char)f(*,)h(int\);)75 1655 y(typedef)f(char)h
(**rl_completion_func_t)d(\(const)i(char)h(*,)g(int,)f(int\);)75
-1486 y(typedef)g(char)h(*rl_quote_func_t)e(\(char)h(*,)h(int,)g(char)f
-(*\);)75 1540 y(typedef)g(char)h(*rl_dequote_func_t)d(\(char)j(*,)g
-(int\);)75 1595 y(typedef)f(int)h(rl_compignore_func_t)d(\(char)j
-(**\);)75 1650 y(typedef)f(void)h(rl_compdisp_func_t)d(\(char)j(**,)g
-(int,)f(int\);)75 1705 y(typedef)g(int)h(rl_hook_func_t)e(\(void\);)75
-1760 y(typedef)h(int)h(rl_getc_func_t)e(\(FILE)i(*\);)75
-1814 y(typedef)f(int)h(rl_linebuf_func_t)e(\(char)h(*,)h(int\);)75
-1869 y(typedef)f(int)h(rl_intfunc_t)e(\(int\);)75 1924
-y(#define)h(rl_ivoidfunc_t)f(rl_hook_func_t)75 1979 y(typedef)h(int)h
-(rl_icpfunc_t)e(\(char)i(*\);)75 2034 y(typedef)f(int)h(rl_icppfunc_t)e
-(\(char)i(**\);)75 2088 y(typedef)f(void)h(rl_voidfunc_t)e(\(void\);)75
-2143 y(typedef)h(void)h(rl_vintfunc_t)e(\(int\);)75 2198
-y(typedef)h(void)h(rl_vcpfunc_t)e(\(char)i(*\);)75 2253
+1710 y(typedef)g(char)h(*rl_quote_func_t)e(\(char)h(*,)h(int,)g(char)f
+(*\);)75 1765 y(typedef)g(char)h(*rl_dequote_func_t)d(\(char)j(*,)g
+(int\);)75 1820 y(typedef)f(int)h(rl_compignore_func_t)d(\(char)j
+(**\);)75 1874 y(typedef)f(void)h(rl_compdisp_func_t)d(\(char)j(**,)g
+(int,)f(int\);)75 1929 y(typedef)g(void)h(rl_macro_print_func_t)d
+(\(const)i(char)h(*,)g(const)f(char)h(*,)g(int,)f(const)h(char)75
+1984 y(*\);)75 2039 y(typedef)f(int)h(rl_hook_func_t)e(\(void\);)75
+2094 y(typedef)h(int)h(rl_getc_func_t)e(\(FILE)i(*\);)75
+2148 y(typedef)f(int)h(rl_linebuf_func_t)e(\(char)h(*,)h(int\);)75
+2203 y(typedef)f(int)h(rl_intfunc_t)e(\(int\);)75 2258
+y(#define)h(rl_ivoidfunc_t)f(rl_hook_func_t)75 2313 y(typedef)h(int)h
+(rl_icpfunc_t)e(\(char)i(*\);)75 2368 y(typedef)f(int)h(rl_icppfunc_t)e
+(\(char)i(**\);)75 2422 y(typedef)f(void)h(rl_voidfunc_t)e(\(void\);)75
+2477 y(typedef)h(void)h(rl_vintfunc_t)e(\(int\);)75 2532
+y(typedef)h(void)h(rl_vcpfunc_t)e(\(char)i(*\);)75 2587
y(typedef)f(void)h(rl_vcppfunc_t)e(\(char)i(**\);)75
-2342 y Fi(2.2.2)30 b(W)-5 b(riting)20 b(a)h(New)f(F)-5
-b(unction)75 2416 y Ft(In)16 b(order)f(to)g(write)g(new)h(functions)f
-(for)g(Readline,)h(y)o(ou)f(need)h(to)f(kno)o(w)g(the)h(calling)e(con)o
-(v)o(en)o(tions)h(for)75 2471 y(k)o(eyb)q(oard-in)o(v)o(ok)o(ed)f
-(functions,)h(and)g(the)g(names)g(of)f(the)i(v)m(ariables)e(that)g
-(describ)q(e)i(the)f(curren)o(t)g(state)75 2526 y(of)g(the)g(line)g
-(read)g(so)g(far.)137 2598 y(The)h(calling)e(sequence)i(for)f(a)f
-(command)i Fs(foo)e Ft(lo)q(oks)h(lik)o(e)195 2670 y
-Fs(int)23 b(foo)h(\(int)f(count,)g(int)h(key\))p eop
-end
-%%Page: 27 31
-TeXDict begin 27 30 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)14
-b(with)g(GNU)h(Readline)842 b(27)75 149 y(where)18 b
-Fj(coun)o(t)h Ft(is)e(the)h(n)o(umeric)g(argumen)o(t)f(\(or)h(1)f(if)h
-(defaulted\))f(and)h Fj(k)o(ey)k Ft(is)c(the)g(k)o(ey)g(that)f(in)o(v)o
-(ok)o(ed)75 204 y(this)e(function.)137 276 y(It)d(is)f(completely)g(up)
-h(to)f(the)g(function)h(as)f(to)g(what)g(should)g(b)q(e)h(done)g(with)f
-(the)h(n)o(umeric)f(argumen)o(t.)75 330 y(Some)20 b(functions)g(use)g
-(it)f(as)h(a)g(rep)q(eat)g(coun)o(t,)g(some)g(as)g(a)f(\015ag,)i(and)f
-(others)g(to)f(c)o(ho)q(ose)h(alternate)75 385 y(b)q(eha)o(vior)h
-(\(refreshing)g(the)h(curren)o(t)f(line)h(as)f(opp)q(osed)h(to)f
-(refreshing)h(the)f(screen,)j(for)d(example\).)75 440
-y(Some)c(c)o(ho)q(ose)f(to)g(ignore)g(it.)23 b(In)18
-b(general,)e(if)g(a)g(function)g(uses)h(the)g(n)o(umeric)g(argumen)o(t)
-e(as)i(a)f(rep)q(eat)75 495 y(coun)o(t,)e(it)f(should)h(b)q(e)g(able)g
-(to)f(do)h(something)g(useful)g(with)f(b)q(oth)h(negativ)o(e)f(and)h(p)
-q(ositiv)o(e)f(argumen)o(ts.)75 549 y(A)o(t)i(the)g(v)o(ery)g(least,)f
-(it)g(should)h(b)q(e)h(a)o(w)o(are)e(that)h(it)f(can)h(b)q(e)h(passed)g
-(a)f(negativ)o(e)f(argumen)o(t.)137 621 y(A)19 b(command)g(function)g
-(should)g(return)g(0)g(if)f(its)g(action)g(completes)h(successfully)l
-(,)h(and)f(a)g(v)m(alue)75 676 y(greater)d(than)g(zero)g(if)g(some)g
-(error)g(o)q(ccurs.)24 b(This)16 b(is)g(the)h(con)o(v)o(en)o(tion)e(ob)
-q(ey)o(ed)i(b)o(y)g(all)e(of)h(the)h(builtin)75 730 y(Readline)f
-(bindable)f(command)g(functions.)75 857 y Fr(2.3)33 b(Readline)21
-b(V)-6 b(ariables)75 937 y Ft(These)16 b(v)m(ariables)e(are)h(a)o(v)m
-(ailable)f(to)g(function)h(writers.)1685 1037 y([V)l(ariable])-1801
-b Fh(char)27 b(*)f(rl_line_buffer)195 1092 y Ft(This)15
-b(is)g(the)h(line)f(gathered)h(so)f(far.)20 b(Y)l(ou)c(are)f(w)o
-(elcome)g(to)g(mo)q(dify)g(the)h(con)o(ten)o(ts)f(of)g(the)h(line,)195
-1146 y(but)i(see)g(Section)g(2.4.5)e([Allo)o(wing)f(Undoing],)j(page)f
-(36.)27 b(The)18 b(function)g Fs(rl_extend_line_)195
-1201 y(buffer)c Ft(is)h(a)o(v)m(ailable)f(to)g(increase)i(the)f(memory)
-f(allo)q(cated)h(to)f Fs(rl_line_buffer)p Ft(.)1685 1301
-y([V)l(ariable])-1801 b Fh(int)27 b(rl_point)195 1356
-y Ft(The)15 b(o\013set)g(of)f(the)i(curren)o(t)f(cursor)g(p)q(osition)f
-(in)h Fs(rl_line_buffer)e Ft(\(the)i Fk(p)n(oint)t Ft(\).)1685
-1456 y([V)l(ariable])-1801 b Fh(int)27 b(rl_end)195 1511
-y Ft(The)14 b(n)o(um)o(b)q(er)g(of)g(c)o(haracters)f(presen)o(t)h(in)g
-Fs(rl_line_buffer)p Ft(.)j(When)e Fs(rl_point)e Ft(is)g(at)g(the)h(end)
-195 1566 y(of)h(the)g(line,)g Fs(rl_point)f Ft(and)h
-Fs(rl_end)f Ft(are)h(equal.)1685 1666 y([V)l(ariable])-1801
-b Fh(int)27 b(rl_mark)195 1721 y Ft(The)19 b Fj(mark)h
-Ft(\(sa)o(v)o(ed)e(p)q(osition\))f(in)h(the)h(curren)o(t)f(line.)29
-b(If)19 b(set,)g(the)f(mark)g(and)h(p)q(oin)o(t)f(de\014ne)h(a)195
-1776 y Fk(r)n(e)n(gion)p Ft(.)1685 1876 y([V)l(ariable])-1801
-b Fh(int)27 b(rl_done)195 1931 y Ft(Setting)10 b(this)g(to)h(a)f
-(non-zero)h(v)m(alue)g(causes)g(Readline)g(to)g(return)f(the)h(curren)o
-(t)g(line)f(immediately)l(.)1685 2031 y([V)l(ariable])-1801
-b Fh(int)27 b(rl_num_chars_to_read)195 2086 y Ft(Setting)16
+2670 y Ft(The)g Fs(rltypedefs.h)f Ft(\014le)h(has)g(more)g(do)q(cumen)o
+(tation)g(for)f(these)i(t)o(yp)q(es.)p eop end
+%%Page: 30 34
+TeXDict begin 30 33 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)14
+b(with)g(GNU)h(Readline)842 b(30)75 149 y Fi(2.2.2)30
+b(W)-5 b(riting)20 b(a)h(New)f(F)-5 b(unction)75 223
+y Ft(In)16 b(order)f(to)g(write)g(new)h(functions)f(for)g(Readline,)h
+(y)o(ou)f(need)h(to)f(kno)o(w)g(the)h(calling)e(con)o(v)o(en)o(tions)h
+(for)75 278 y(k)o(eyb)q(oard-in)o(v)o(ok)o(ed)f(functions,)h(and)g(the)
+g(names)g(of)f(the)i(v)m(ariables)e(that)g(describ)q(e)i(the)f(curren)o
+(t)g(state)75 333 y(of)g(the)g(line)g(read)g(so)g(far.)137
+399 y(The)h(calling)e(sequence)i(for)f(a)f(command)i
+Fs(foo)e Ft(lo)q(oks)h(lik)o(e)195 466 y Fs(int)23 b(foo)h(\(int)f
+(count,)g(int)h(key\))75 533 y Ft(where)18 b Fk(coun)o(t)h
+Ft(is)e(the)h(n)o(umeric)g(argumen)o(t)f(\(or)h(1)f(if)h(defaulted\))f
+(and)h Fk(k)o(ey)k Ft(is)c(the)g(k)o(ey)g(that)f(in)o(v)o(ok)o(ed)75
+588 y(this)e(function.)137 654 y(It)d(is)f(completely)g(up)h(to)f(the)g
+(function)h(as)f(to)g(what)g(should)g(b)q(e)h(done)g(with)f(the)h(n)o
+(umeric)f(argumen)o(t.)75 709 y(Some)20 b(functions)g(use)g(it)f(as)h
+(a)g(rep)q(eat)g(coun)o(t,)g(some)g(as)g(a)f(\015ag,)i(and)f(others)g
+(to)f(c)o(ho)q(ose)h(alternate)75 764 y(b)q(eha)o(vior)h(\(refreshing)g
+(the)h(curren)o(t)f(line)h(as)f(opp)q(osed)h(to)f(refreshing)h(the)f
+(screen,)j(for)d(example\).)75 819 y(Some)c(c)o(ho)q(ose)f(to)g(ignore)
+g(it.)23 b(In)18 b(general,)e(if)g(a)g(function)g(uses)h(the)g(n)o
+(umeric)g(argumen)o(t)e(as)i(a)f(rep)q(eat)75 874 y(coun)o(t,)e(it)f
+(should)h(b)q(e)g(able)g(to)f(do)h(something)g(useful)g(with)f(b)q(oth)
+h(negativ)o(e)f(and)h(p)q(ositiv)o(e)f(argumen)o(ts.)75
+928 y(A)o(t)i(the)g(v)o(ery)g(least,)f(it)g(should)h(b)q(e)h(a)o(w)o
+(are)e(that)h(it)f(can)h(b)q(e)h(passed)g(a)f(negativ)o(e)f(argumen)o
+(t.)137 995 y(A)19 b(command)g(function)g(should)g(return)g(0)g(if)f
+(its)g(action)g(completes)h(successfully)l(,)h(and)f(a)g(v)m(alue)75
+1050 y(greater)i(than)h(zero)g(if)g(some)g(error)f(o)q(ccurs.)41
+b(All)21 b(of)h(the)g(builtin)f(Readline)i(bindable)f(command)75
+1105 y(functions)15 b(ob)q(ey)h(this)e(con)o(v)o(en)o(tion.)75
+1224 y Fr(2.3)33 b(Readline)21 b(V)-6 b(ariables)75 1304
+y Ft(These)16 b(v)m(ariables)e(are)h(a)o(v)m(ailable)f(to)g(function)h
+(writers.)1685 1395 y([V)l(ariable])-1801 b Fh(char)27
+b(*)f(rl_line_buffer)195 1449 y Ft(This)15 b(is)g(the)h(line)f
+(gathered)h(so)f(far.)20 b(Y)l(ou)c(are)f(w)o(elcome)g(to)g(mo)q(dify)g
+(the)h(con)o(ten)o(ts)f(of)g(the)h(line,)195 1504 y(but)i(see)g
+(Section)g(2.4.5)e([Allo)o(wing)f(Undoing],)j(page)f(40.)27
+b(The)18 b(function)g Fs(rl_extend_line_)195 1559 y(buffer)c
+Ft(will)g(increase)h(the)h(memory)e(allo)q(cated)g(to)h
+Fs(rl_line_buffer)p Ft(.)1685 1650 y([V)l(ariable])-1801
+b Fh(int)27 b(rl_point)195 1704 y Ft(The)15 b(o\013set)g(of)f(the)i
+(curren)o(t)f(cursor)g(p)q(osition)f(in)h Fs(rl_line_buffer)e
+Ft(\(the)i Fj(p)n(oint)t Ft(\).)1685 1795 y([V)l(ariable])-1801
+b Fh(int)27 b(rl_end)195 1850 y Ft(The)14 b(n)o(um)o(b)q(er)g(of)g(c)o
+(haracters)f(presen)o(t)h(in)g Fs(rl_line_buffer)p Ft(.)j(When)e
+Fs(rl_point)e Ft(is)g(at)g(the)h(end)195 1905 y(of)h(the)g(line,)g
+Fs(rl_point)f Ft(and)h Fs(rl_end)f Ft(are)h(equal.)1685
+1995 y([V)l(ariable])-1801 b Fh(int)27 b(rl_mark)195
+2050 y Ft(The)19 b Fk(mark)h Ft(\(sa)o(v)o(ed)e(p)q(osition\))f(in)h
+(the)h(curren)o(t)f(line.)29 b(If)19 b(set,)g(the)f(mark)g(and)h(p)q
+(oin)o(t)f(de\014ne)h(a)195 2105 y Fj(r)n(e)n(gion)p
+Ft(.)25 b(Some)17 b(Readline)h(commands)f(set)g(the)g(mark)g(as)g(part)
+f(of)h(op)q(erating;)g(users)h(can)f(also)195 2160 y(set)e(the)g(mark)g
+(explicitly)l(.)1685 2251 y([V)l(ariable])-1801 b Fh(int)27
+b(rl_done)195 2305 y Ft(Setting)10 b(this)g(to)h(a)f(non-zero)h(v)m
+(alue)g(causes)g(Readline)g(to)g(return)f(the)h(curren)o(t)g(line)f
+(immediately)l(.)195 2360 y(Readline)j(will)e(set)i(this)f(v)m(ariable)
+g(when)h(it)e(has)i(read)f(a)h(k)o(ey)f(sequence)i(b)q(ound)g(to)e
+Fs(accept-line)195 2415 y Ft(and)j(is)g(ab)q(out)g(to)g(return)g(the)g
+(line)g(to)g(the)g(caller.)1685 2506 y([V)l(ariable])-1801
+b Fh(int)27 b(rl_eof_found)195 2560 y Ft(Readline)14
+b(will)e(set)i(this)f(v)m(ariable)g(when)h(it)f(has)h(read)f(an)h(EOF)f
+(c)o(haracter)g(\(e.g.,)g(the)h(stt)o(y)e(`)p Fs(EOF)p
+Ft(')195 2615 y(c)o(haracter\))i(on)h(an)g(empt)o(y)g(line)g(or)g(has)g
+(encoun)o(tered)h(a)f(read)g(error)g(or)f(EOF)h(and)h(is)f(ab)q(out)g
+(to)195 2670 y(return)g(a)g(NULL)h(line)f(to)g(the)g(caller.)p
+eop end
+%%Page: 31 35
+TeXDict begin 31 34 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)14
+b(with)g(GNU)h(Readline)842 b(31)1685 149 y([V)l(ariable])-1801
+b Fh(int)27 b(rl_num_chars_to_read)195 204 y Ft(Setting)16
b(this)g(to)g(a)g(p)q(ositiv)o(e)f(v)m(alue)i(b)q(efore)g(calling)e
Fs(readline\(\))g Ft(causes)h(Readline)h(to)f(return)195
-2141 y(after)h(accepting)h(that)f(man)o(y)g(c)o(haracters,)h(rather)f
+259 y(after)h(accepting)h(that)f(man)o(y)g(c)o(haracters,)h(rather)f
(than)h(reading)f(up)h(to)f(a)h(c)o(haracter)f(b)q(ound)195
-2196 y(to)e Fs(accept-line)p Ft(.)1685 2296 y([V)l(ariable])-1801
-b Fh(int)27 b(rl_pending_input)195 2351 y Ft(Setting)12
+314 y(to)e Fs(accept-line)p Ft(.)1685 405 y([V)l(ariable])-1801
+b Fh(int)27 b(rl_pending_input)195 460 y Ft(Setting)12
b(this)g(to)g(a)g(v)m(alue)h(mak)o(es)f(it)g(the)g(next)h(k)o(eystrok)o
(e)f(read.)19 b(This)12 b(is)g(a)g(w)o(a)o(y)g(to)f(stu\013)h(a)h
-(single)195 2405 y(c)o(haracter)h(in)o(to)h(the)g(input)g(stream.)1685
-2506 y([V)l(ariable])-1801 b Fh(int)27 b(rl_dispatching)195
-2560 y Ft(Set)12 b(to)g(a)f(non-zero)i(v)m(alue)f(if)g(a)g(function)g
+(single)195 515 y(c)o(haracter)h(in)o(to)h(the)g(input)g(stream.)1685
+606 y([V)l(ariable])-1801 b Fh(int)27 b(rl_dispatching)195
+661 y Ft(Set)12 b(to)g(a)f(non-zero)i(v)m(alue)f(if)g(a)g(function)g
(is)f(b)q(eing)i(called)e(from)h(a)f(k)o(ey)h(binding;)h(zero)f
-(otherwise.)195 2615 y(Application)17 b(functions)g(can)h(test)g(this)f
+(otherwise.)195 716 y(Application)17 b(functions)g(can)h(test)g(this)f
(to)g(disco)o(v)o(er)g(whether)h(they)g(w)o(ere)g(called)f(directly)g
-(or)195 2670 y(b)o(y)e(Readline's)g(dispatc)o(hing)g(mec)o(hanism.)p
+(or)195 770 y(b)o(y)e(Readline's)g(dispatc)o(hing)g(mec)o(hanism.)1685
+862 y([V)l(ariable])-1801 b Fh(int)27 b(rl_erase_empty_line)195
+917 y Ft(Setting)22 b(this)h(to)f(a)h(non-zero)g(v)m(alue)g(causes)g
+(Readline)h(to)e(completely)g(erase)h(the)g(curren)o(t)195
+971 y(line,)e(including)g(an)o(y)f(prompt,)h(an)o(y)g(time)f(a)g
+(newline)h(is)f(t)o(yp)q(ed)h(as)f(the)h(only)f(c)o(haracter)g(on)195
+1026 y(an)c(otherwise-empt)o(y)e(line.)21 b(This)15 b(mo)o(v)o(es)g
+(the)h(cursor)f(to)g(the)h(b)q(eginning)f(of)g(the)h(newly-blank)195
+1081 y(line.)1685 1172 y([V)l(ariable])-1801 b Fh(char)27
+b(*)f(rl_prompt)195 1227 y Ft(The)13 b(prompt)g(Readline)g(uses.)20
+b(This)12 b(is)h(set)g(from)f(the)h(argumen)o(t)g(to)f
+Fs(readline\(\))p Ft(,)g(and)h(should)195 1282 y(not)g(b)q(e)h
+(assigned)f(to)g(directly)l(.)19 b(The)14 b Fs(rl_set_prompt\(\))d
+Ft(function)i(\(see)h(Section)f(2.4.6)f([Redis-)195 1337
+y(pla)o(y],)k(page)h(41\))g(ma)o(y)f(b)q(e)i(used)g(to)f(mo)q(dify)g
+(the)g(prompt)g(string)f(after)h(calling)f Fs(readline\(\))p
+Ft(.)195 1391 y(Readline)f(p)q(erforms)f(some)g(prompt)g(expansions)h
+(and)g(analyzes)f(the)g(prompt)g(for)g(line)g(breaks,)195
+1446 y(so)h Fs(rl_set_prompt\(\))e Ft(is)i(preferred.)1685
+1538 y([V)l(ariable])-1801 b Fh(char)27 b(*)f(rl_display_prompt)195
+1592 y Ft(The)16 b(string)f(displa)o(y)o(ed)g(as)h(the)g(prompt.)21
+b(This)15 b(is)h(usually)f(iden)o(tical)g(to)g Fk(rl)p
+1516 1592 14 2 v 19 w(prompt)p Ft(,)h(but)g(ma)o(y)195
+1647 y(b)q(e)i(c)o(hanged)f(temp)q(orarily)f(b)o(y)h(functions)g(that)f
+(use)i(the)f(prompt)g(string)f(as)g(a)h(message)g(area,)195
+1702 y(suc)o(h)f(as)e(incremen)o(tal)h(searc)o(h.)1685
+1793 y([V)l(ariable])-1801 b Fh(int)27 b(rl_already_prompted)195
+1848 y Ft(If)18 b(an)g(application)f(wishes)h(to)g(displa)o(y)f(the)h
+(prompt)g(itself,)f(rather)h(than)g(ha)o(v)o(e)g(Readline)g(do)195
+1903 y(it)e(the)g(\014rst)g(time)g Fs(readline\(\))f
+Ft(is)h(called,)g(it)f(should)i(set)f(this)g(v)m(ariable)f(to)h(a)g
+(non-zero)h(v)m(alue)195 1958 y(after)h(displa)o(ying)g(the)h(prompt.)
+31 b(The)19 b(prompt)g(m)o(ust)f(also)g(b)q(e)i(passed)f(as)f(the)h
+(argumen)o(t)g(to)195 2012 y Fs(readline\(\))c Ft(so)h(the)h(redispla)o
+(y)e(functions)i(can)f(up)q(date)h(the)g(displa)o(y)f(prop)q(erly)l(.)
+23 b(The)17 b(calling)195 2067 y(application)d(is)h(resp)q(onsible)g
+(for)f(managing)g(the)i(v)m(alue;)f(Readline)g(nev)o(er)h(sets)e(it.)
+1685 2159 y([V)l(ariable])-1801 b Fh(const)27 b(char)g(*)f
+(rl_library_version)195 2213 y Ft(The)15 b(v)o(ersion)g(n)o(um)o(b)q
+(er)g(of)g(this)g(revision)f(of)h(the)g(Readline)h(library)l(,)d(as)i
+(a)g(string)f(\(e.g.,)g Fs(")p Ft(4.2)p Fs(")p Ft(\).)1685
+2305 y([V)l(ariable])-1801 b Fh(int)27 b(rl_readline_version)195
+2359 y Ft(An)17 b(in)o(teger)g(enco)q(ding)g(the)g(curren)o(t)g(v)o
+(ersion)f(of)h(the)g(library)l(.)25 b(The)17 b(enco)q(ding)g(is)g(of)g
+(the)g(form)195 2414 y(0x)p Fk(MMmm)p Ft(,)g(where)i
+Fk(MM)j Ft(is)c(the)g(t)o(w)o(o-digit)e(ma)s(jor)h(v)o(ersion)h(n)o(um)
+o(b)q(er,)h(and)f Fk(mm)g Ft(is)g(the)g(t)o(w)o(o-)195
+2469 y(digit)g(minor)f(v)o(ersion)h(n)o(um)o(b)q(er.)31
+b(F)l(or)18 b(example,)h(for)f(Readline-4.2,)h Fs(rl_readline_version)
+195 2524 y Ft(w)o(ould)c(ha)o(v)o(e)f(the)i(v)m(alue)f(0x0402.)1685
+2615 y([V)l(ariable])-1801 b Fh(int)27 b(rl_gnu_readline_p)195
+2670 y Ft(Alw)o(a)o(ys)14 b(set)h(to)f(1,)h(denoting)g(that)f(this)h
+(is)g Fm(gnu)g Ft(Readline)g(rather)g(than)g(some)g(em)o(ulation.)p
eop end
-%%Page: 28 32
-TeXDict begin 28 31 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)14
-b(with)g(GNU)h(Readline)842 b(28)1685 149 y([V)l(ariable])-1801
-b Fh(int)27 b(rl_erase_empty_line)195 204 y Ft(Setting)22
-b(this)h(to)f(a)h(non-zero)g(v)m(alue)g(causes)g(Readline)h(to)e
-(completely)g(erase)h(the)g(curren)o(t)195 259 y(line,)e(including)g
-(an)o(y)f(prompt,)h(an)o(y)g(time)f(a)g(newline)h(is)f(t)o(yp)q(ed)h
-(as)f(the)h(only)f(c)o(haracter)g(on)195 314 y(an)e(otherwise-empt)o(y)
-f(line.)29 b(The)18 b(cursor)g(is)g(mo)o(v)o(ed)f(to)h(the)g(b)q
-(eginning)g(of)g(the)g(newly-blank)195 369 y(line.)1685
-456 y([V)l(ariable])-1801 b Fh(char)27 b(*)f(rl_prompt)195
-511 y Ft(The)13 b(prompt)g(Readline)g(uses.)20 b(This)12
-b(is)h(set)g(from)f(the)h(argumen)o(t)g(to)f Fs(readline\(\))p
-Ft(,)g(and)h(should)195 566 y(not)g(b)q(e)h(assigned)f(to)g(directly)l
-(.)19 b(The)14 b Fs(rl_set_prompt\(\))d Ft(function)i(\(see)h(Section)f
-(2.4.6)f([Redis-)195 621 y(pla)o(y],)i(page)h(37\))f(ma)o(y)h(b)q(e)g
-(used)h(to)f(mo)q(dify)g(the)g(prompt)g(string)f(after)g(calling)g
-Fs(readline\(\))p Ft(.)1685 708 y([V)l(ariable])-1801
-b Fh(char)27 b(*)f(rl_display_prompt)195 763 y Ft(The)16
-b(string)f(displa)o(y)o(ed)g(as)h(the)g(prompt.)21 b(This)15
-b(is)h(usually)f(iden)o(tical)g(to)g Fj(rl)p 1516 763
-14 2 v 19 w(prompt)p Ft(,)h(but)g(ma)o(y)195 818 y(b)q(e)i(c)o(hanged)f
-(temp)q(orarily)f(b)o(y)h(functions)g(that)f(use)i(the)f(prompt)g
-(string)f(as)g(a)h(message)g(area,)195 873 y(suc)o(h)f(as)e(incremen)o
-(tal)h(searc)o(h.)1685 960 y([V)l(ariable])-1801 b Fh(int)27
-b(rl_already_prompted)195 1015 y Ft(If)18 b(an)g(application)f(wishes)h
-(to)g(displa)o(y)f(the)h(prompt)g(itself,)f(rather)h(than)g(ha)o(v)o(e)
-g(Readline)g(do)195 1070 y(it)e(the)g(\014rst)g(time)g
-Fs(readline\(\))f Ft(is)h(called,)g(it)f(should)i(set)f(this)g(v)m
-(ariable)f(to)h(a)g(non-zero)h(v)m(alue)195 1125 y(after)h(displa)o
-(ying)g(the)h(prompt.)31 b(The)19 b(prompt)g(m)o(ust)f(also)g(b)q(e)i
-(passed)f(as)f(the)h(argumen)o(t)g(to)195 1180 y Fs(readline\(\))c
-Ft(so)h(the)h(redispla)o(y)e(functions)i(can)f(up)q(date)h(the)g
-(displa)o(y)f(prop)q(erly)l(.)23 b(The)17 b(calling)195
-1234 y(application)d(is)h(resp)q(onsible)g(for)f(managing)g(the)i(v)m
-(alue;)f(Readline)g(nev)o(er)h(sets)e(it.)1685 1322 y([V)l(ariable])
--1801 b Fh(const)27 b(char)g(*)f(rl_library_version)195
-1377 y Ft(The)15 b(v)o(ersion)g(n)o(um)o(b)q(er)g(of)g(this)g(revision)
-f(of)h(the)g(library)l(.)1685 1465 y([V)l(ariable])-1801
-b Fh(int)27 b(rl_readline_version)195 1519 y Ft(An)17
-b(in)o(teger)g(enco)q(ding)g(the)g(curren)o(t)g(v)o(ersion)f(of)h(the)g
-(library)l(.)25 b(The)17 b(enco)q(ding)g(is)g(of)g(the)g(form)195
-1574 y(0x)p Fj(MMmm)p Ft(,)g(where)i Fj(MM)j Ft(is)c(the)g(t)o(w)o
-(o-digit)e(ma)s(jor)h(v)o(ersion)h(n)o(um)o(b)q(er,)h(and)f
-Fj(mm)g Ft(is)g(the)g(t)o(w)o(o-)195 1629 y(digit)g(minor)f(v)o(ersion)
-h(n)o(um)o(b)q(er.)31 b(F)l(or)18 b(example,)h(for)f(Readline-4.2,)h
-Fs(rl_readline_version)195 1684 y Ft(w)o(ould)c(ha)o(v)o(e)f(the)i(v)m
-(alue)f(0x0402.)1685 1771 y([V)l(ariable])-1801 b Fh(int)27
-b(rl_gnu_readline_p)195 1826 y Ft(Alw)o(a)o(ys)14 b(set)h(to)f(1,)h
-(denoting)g(that)f(this)h(is)g Fm(gnu)g Ft(readline)f(rather)h(than)g
-(some)g(em)o(ulation.)1685 1914 y([V)l(ariable])-1801
-b Fh(const)27 b(char)g(*)f(rl_terminal_name)195 1969
-y Ft(The)14 b(terminal)f(t)o(yp)q(e,)h(used)h(for)e(initialization.)k
-(If)d(not)f(set)h(b)o(y)g(the)g(application,)f(Readline)h(sets)195
-2023 y(this)h(to)f(the)h(v)m(alue)h(of)f(the)g Fs(TERM)g
-Ft(en)o(vironmen)o(t)f(v)m(ariable)h(the)g(\014rst)g(time)f(it)h(is)f
-(called.)1685 2111 y([V)l(ariable])-1801 b Fh(const)27
-b(char)g(*)f(rl_readline_name)195 2166 y Ft(This)15 b(v)m(ariable)g(is)
-g(set)h(to)f(a)g(unique)h(name)g(b)o(y)f(eac)o(h)h(application)e(using)
-h(Readline.)22 b(The)16 b(v)m(alue)195 2221 y(allo)o(ws)c(conditional)h
+%%Page: 32 36
+TeXDict begin 32 35 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)14
+b(with)g(GNU)h(Readline)842 b(32)1685 149 y([V)l(ariable])-1801
+b Fh(const)27 b(char)g(*)f(rl_terminal_name)195 204 y
+Ft(The)14 b(terminal)f(t)o(yp)q(e,)h(used)h(for)e(initialization.)k(If)
+d(not)f(set)h(b)o(y)g(the)g(application,)f(Readline)h(sets)195
+259 y(this)f(to)h(the)g(v)m(alue)g(of)f(the)h Fs(TERM)g
+Ft(en)o(vironmen)o(t)f(v)m(ariable)g(the)h(\014rst)g(time)f(it)g(is)h
+(called.)19 b(Readline)195 314 y(uses)c(this)g(to)g(lo)q(ok)f(up)i(the)
+f(terminal)f(capabilities)g(it)g(needs)i(in)f(the)g(terminfo)g
+(database.)1685 412 y([V)l(ariable])-1801 b Fh(const)27
+b(char)g(*)f(rl_readline_name)195 467 y Ft(This)15 b(v)m(ariable)g(is)g
+(set)h(to)f(a)g(unique)h(name)g(b)o(y)f(eac)o(h)h(application)e(using)h
+(Readline.)22 b(The)16 b(v)m(alue)195 522 y(allo)o(ws)c(conditional)h
(parsing)g(of)h(the)g(inputrc)g(\014le)g(\(see)g(Section)g(1.3.2)e
-([Conditional)g(Init)i(Con-)195 2275 y(structs],)g(page)h(12\).)1685
-2363 y([V)l(ariable])-1801 b Fh(FILE)27 b(*)f(rl_instream)195
-2418 y Ft(The)21 b(stdio)e(stream)h(from)g(whic)o(h)g(Readline)h(reads)
-f(input.)36 b(If)21 b Fs(NULL)p Ft(,)g(Readline)g(defaults)f(to)195
-2473 y Fj(stdin)p Ft(.)1685 2560 y([V)l(ariable])-1801
-b Fh(FILE)27 b(*)f(rl_outstream)195 2615 y Ft(The)17
-b(stdio)g(stream)f(to)h(whic)o(h)g(Readline)g(p)q(erforms)g(output.)26
+([Conditional)g(Init)i(Con-)195 577 y(structs],)g(page)h(14\).)1685
+675 y([V)l(ariable])-1801 b Fh(FILE)27 b(*)f(rl_instream)195
+730 y Ft(The)21 b(stdio)e(stream)h(from)g(whic)o(h)g(Readline)h(reads)f
+(input.)36 b(If)21 b Fs(NULL)p Ft(,)g(Readline)g(defaults)f(to)195
+785 y Fk(stdin)p Ft(.)1685 884 y([V)l(ariable])-1801
+b Fh(FILE)27 b(*)f(rl_outstream)195 938 y Ft(The)17 b(stdio)g(stream)f
+(to)h(whic)o(h)g(Readline)g(p)q(erforms)g(output.)26
b(If)18 b Fs(NULL)p Ft(,)e(Readline)i(defaults)f(to)195
-2670 y Fj(stdout)p Ft(.)p eop end
-%%Page: 29 33
-TeXDict begin 29 32 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)14
-b(with)g(GNU)h(Readline)842 b(29)1685 149 y([V)l(ariable])-1801
-b Fh(int)27 b(rl_prefer_env_winsize)195 204 y Ft(If)14
+993 y Fk(stdout)p Ft(.)1685 1092 y([V)l(ariable])-1801
+b Fh(int)27 b(rl_prefer_env_winsize)195 1147 y Ft(If)14
b(non-zero,)h(Readline)f(giv)o(es)g(v)m(alues)g(found)g(in)g(the)h
Fs(LINES)e Ft(and)i Fs(COLUMNS)e Ft(en)o(vironmen)o(t)g(v)m(ari-)195
-259 y(ables)20 b(greater)g(precedence)i(than)e(v)m(alues)h(fetc)o(hed)g
-(from)e(the)i(k)o(ernel)f(when)h(computing)f(the)195
-314 y(screen)c(dimensions.)1685 423 y([V)l(ariable])-1801
-b Fh(rl_command_func_t)29 b(*)d(rl_last_func)195 478
-y Ft(The)18 b(address)f(of)g(the)g(last)g(command)g(function)g
-(Readline)h(executed.)27 b(Ma)o(y)17 b(b)q(e)h(used)g(to)f(test)195
-533 y(whether)e(or)g(not)g(a)g(function)g(is)f(b)q(eing)i(executed)g(t)
-o(wice)f(in)g(succession,)g(for)f(example.)1685 643 y([V)l(ariable])
--1801 b Fh(rl_hook_func_t)28 b(*)f(rl_startup_hook)195
-697 y Ft(If)17 b(non-zero,)h(this)f(is)f(the)i(address)f(of)f(a)h
-(function)g(to)g(call)f(just)h(b)q(efore)g Fs(readline)f
-Ft(prin)o(ts)h(the)195 752 y(\014rst)e(prompt.)1685 862
-y([V)l(ariable])-1801 b Fh(rl_hook_func_t)28 b(*)f(rl_pre_input_hook)
-195 917 y Ft(If)18 b(non-zero,)g(this)f(is)h(the)g(address)f(of)h(a)f
-(function)h(to)f(call)g(after)g(the)h(\014rst)f(prompt)g(has)h(b)q(een)
-195 971 y(prin)o(ted)d(and)g(just)g(b)q(efore)h Fs(readline)e
-Ft(starts)g(reading)g(input)i(c)o(haracters.)1685 1081
-y([V)l(ariable])-1801 b Fh(rl_hook_func_t)28 b(*)f(rl_event_hook)195
-1136 y Ft(If)21 b(non-zero,)g(this)f(is)g(the)g(address)g(of)g(a)g
+1201 y(ables)20 b(greater)g(precedence)i(than)e(v)m(alues)h(fetc)o(hed)
+g(from)e(the)i(k)o(ernel)f(when)h(computing)f(the)195
+1256 y(screen)c(dimensions.)1685 1355 y([V)l(ariable])-1801
+b Fh(rl_command_func_t)29 b(*)d(rl_last_func)195 1410
+y Ft(The)17 b(address)g(of)f(the)g(last)g(command)g(function)h
+(Readline)g(executed.)25 b(This)16 b(ma)o(y)g(b)q(e)h(used)h(to)195
+1465 y(test)d(whether)g(or)g(not)f(a)h(function)g(is)g(b)q(eing)h
+(executed)g(t)o(wice)e(in)h(succession,)g(for)g(example.)1685
+1563 y([V)l(ariable])-1801 b Fh(rl_hook_func_t)28 b(*)f
+(rl_startup_hook)195 1618 y Ft(If)17 b(non-zero,)h(this)f(is)f(the)i
+(address)f(of)f(a)h(function)g(to)g(call)f(just)h(b)q(efore)g
+Fs(readline)f Ft(prin)o(ts)h(the)195 1673 y(\014rst)e(prompt.)1685
+1771 y([V)l(ariable])-1801 b Fh(rl_hook_func_t)28 b(*)f
+(rl_pre_input_hook)195 1826 y Ft(If)18 b(non-zero,)g(this)f(is)h(the)g
+(address)f(of)h(a)f(function)h(to)f(call)g(after)g(the)h(\014rst)f
+(prompt)g(has)h(b)q(een)195 1881 y(prin)o(ted)d(and)g(just)g(b)q(efore)
+h Fs(readline)e Ft(starts)g(reading)g(input)i(c)o(haracters.)1685
+1980 y([V)l(ariable])-1801 b Fh(rl_hook_func_t)28 b(*)f(rl_event_hook)
+195 2034 y Ft(If)21 b(non-zero,)g(this)f(is)g(the)g(address)g(of)g(a)g
(function)g(to)g(call)g(p)q(erio)q(dically)f(when)i(Readline)f(is)195
-1191 y(w)o(aiting)13 b(for)h(terminal)f(input.)20 b(By)14
+2089 y(w)o(aiting)13 b(for)h(terminal)f(input.)20 b(By)14
b(default,)g(this)g(will)g(b)q(e)h(called)f(at)g(most)g(ten)g(times)g
-(a)g(second)195 1245 y(if)h(there)g(is)g(no)g(k)o(eyb)q(oard)g(input.)
-1685 1355 y([V)l(ariable])-1801 b Fh(rl_getc_func_t)28
-b(*)f(rl_getc_function)195 1410 y Ft(If)15 b(non-zero,)h(Readline)f
+(a)g(second)195 2144 y(if)h(there)g(is)g(no)g(k)o(eyb)q(oard)g(input.)
+1685 2243 y([V)l(ariable])-1801 b Fh(rl_getc_func_t)28
+b(*)f(rl_getc_function)195 2297 y Ft(If)15 b(non-zero,)h(Readline)f
(will)f(call)g(indirectly)h(through)g(this)f(p)q(oin)o(ter)h(to)g(get)f
-(a)h(c)o(haracter)g(from)195 1465 y(the)c(input)f(stream.)18
-b(By)11 b(default,)f(it)g(is)h(set)f(to)g Fs(rl_getc)p
-Ft(,)g(the)h(default)f(Readline)h(c)o(haracter)f(input)195
-1519 y(function)h(\(see)h(Section)f(2.4.8)f([Character)g(Input],)i
-(page)f(39\).)18 b(In)12 b(general,)f(an)h(application)e(that)195
-1574 y(sets)15 b Fj(rl)p 318 1574 14 2 v 19 w(getc)p
-418 1574 V 20 w(function)g Ft(should)g(consider)g(setting)g
-Fj(rl)p 1118 1574 V 19 w(input)p 1243 1574 V 20 w(a)o(v)m(ailable)p
-1436 1574 V 19 w(ho)q(ok)j Ft(as)d(w)o(ell.)1685 1684
+(a)h(c)o(haracter)g(from)195 2352 y(the)21 b(input)h(stream.)37
+b(By)21 b(default,)h(it)f(is)f(set)h(to)g Fs(rl_getc)p
+Ft(,)g(the)h(Readline)f(c)o(haracter)g(input)195 2407
+y(function)e(\(see)h(Section)f(2.4.8)f([Character)g(Input],)i(page)g
+(43\).)31 b(In)20 b(general,)g(an)f(application)195 2462
+y(that)14 b(sets)h Fk(rl)p 416 2462 14 2 v 20 w(getc)p
+517 2462 V 20 w(function)g Ft(should)g(consider)g(setting)f
+Fk(rl)p 1216 2462 V 20 w(input)p 1342 2462 V 20 w(a)o(v)m(ailable)p
+1535 2462 V 18 w(ho)q(ok)k Ft(as)d(w)o(ell.)1685 2560
y([V)l(ariable])-1801 b Fh(rl_hook_func_t)28 b(*)f
-(rl_signal_event_hook)195 1738 y Ft(If)14 b(non-zero,)g(this)e(is)i
+(rl_signal_event_hook)195 2615 y Ft(If)14 b(non-zero,)g(this)e(is)i
(the)f(address)h(of)f(a)g(function)g(to)g(call)g(if)g(a)g(read)h
-(system)f(call)f(is)h(in)o(terrupted)195 1793 y(when)j(Readline)f(is)g
-(reading)g(terminal)f(input.)1685 1903 y([V)l(ariable])-1801
-b Fh(rl_hook_func_t)28 b(*)f(rl_input_available_hook)195
-1958 y Ft(If)15 b(non-zero,)f(Readline)h(will)e(use)i(this)f
-(function's)g(return)g(v)m(alue)h(when)g(it)f(needs)h(to)f(determine)
-195 2012 y(whether)21 b(or)g(not)g(there)g(is)g(a)o(v)m(ailable)f
-(input)h(on)g(the)h(curren)o(t)f(input)g(source.)38 b(The)21
-b(default)195 2067 y(ho)q(ok)13 b(c)o(hec)o(ks)g Fs(rl_instream)p
-Ft(;)e(if)h(an)h(application)e(is)i(using)f(a)g(di\013eren)o(t)g(input)
-h(source,)g(it)f(should)195 2122 y(set)k(the)h(ho)q(ok)g(appropriately)
-l(.)23 b(Readline)17 b(queries)g(for)f(a)o(v)m(ailable)f(input)i(when)g
-(implemen)o(ting)195 2177 y(in)o(tra-k)o(ey-sequence)d(timeouts)f
-(during)h(input)g(and)h(incremen)o(tal)e(searc)o(hes.)19
-b(This)14 b(ma)o(y)g(use)g(an)195 2232 y(application-sp)q(eci\014c)c
-(timeout)g(b)q(efore)g(returning)g(a)g(v)m(alue;)i(Readline)f(uses)g
-(the)f(v)m(alue)h(passed)g(to)195 2286 y Fs(rl_set_keyboard_input_time)
-o(out\(\))e Ft(or)i(the)i(v)m(alue)f(of)g(the)g(user-settable)g
-Fj(k)o(eyseq-timeout)195 2341 y Ft(v)m(ariable.)22 b(This)16
-b(is)g(designed)g(for)g(use)h(b)o(y)f(applications)e(using)i
-(Readline's)g(callbac)o(k)g(in)o(terface)195 2396 y(\(see)f(Section)g
-(2.4.12)e([Alternate)g(In)o(terface],)h(page)h(42\),)f(whic)o(h)h(ma)o
-(y)f(not)g(use)h(the)g(traditional)195 2451 y Fs(read\(2\))k
-Ft(and)i(\014le)f(descriptor)g(in)o(terface,)g(or)g(other)g
-(applications)f(using)h(a)f(di\013eren)o(t)h(input)195
-2506 y(mec)o(hanism.)h(If)16 b(an)g(application)f(uses)h(an)f(input)h
-(mec)o(hanism)g(or)f(ho)q(ok)h(that)f(can)h(p)q(oten)o(tially)195
-2560 y(exceed)j(the)g(v)m(alue)f(of)g Fj(k)o(eyseq-timeout)p
-Ft(,)g(it)f(should)i(increase)f(the)g(timeout)g(or)f(set)h(this)g(ho)q
-(ok)195 2615 y(appropriately)d(ev)o(en)h(when)h(not)f(using)g(the)g
-(callbac)o(k)f(in)o(terface.)22 b(In)17 b(general,)e(an)h(application)
-195 2670 y(that)e(sets)h Fj(rl)p 416 2670 V 20 w(getc)p
-517 2670 V 20 w(function)g Ft(should)g(consider)g(setting)f
-Fj(rl)p 1216 2670 V 20 w(input)p 1342 2670 V 20 w(a)o(v)m(ailable)p
-1535 2670 V 18 w(ho)q(ok)k Ft(as)d(w)o(ell.)p eop end
-%%Page: 30 34
-TeXDict begin 30 33 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)14
-b(with)g(GNU)h(Readline)842 b(30)1685 149 y([V)l(ariable])-1801
-b Fh(rl_voidfunc_t)28 b(*)e(rl_redisplay_function)195
-204 y Ft(If)18 b(non-zero,)h(Readline)f(will)f(call)g(indirectly)g
-(through)h(this)f(p)q(oin)o(ter)h(to)f(up)q(date)i(the)f(displa)o(y)195
-259 y(with)13 b(the)g(curren)o(t)h(con)o(ten)o(ts)f(of)g(the)g(editing)
-g(bu\013er.)19 b(By)14 b(default,)f(it)g(is)g(set)g(to)g
-Fs(rl_redisplay)p Ft(,)195 314 y(the)i(default)g(Readline)h(redispla)o
-(y)e(function)h(\(see)g(Section)g(2.4.6)f([Redispla)o(y],)g(page)h
-(37\).)1685 409 y([V)l(ariable])-1801 b Fh(rl_vintfunc_t)28
-b(*)e(rl_prep_term_function)195 463 y Ft(If)12 b(non-zero,)h(Readline)f
-(will)f(call)g(indirectly)g(through)h(this)f(p)q(oin)o(ter)h(to)f
-(initialize)f(the)j(terminal.)195 518 y(The)19 b(function)f(tak)o(es)g
-(a)g(single)g(argumen)o(t,)g(an)h Fs(int)f Ft(\015ag)g(that)g(sa)o(ys)g
-(whether)g(or)h(not)f(to)g(use)195 573 y(eigh)o(t-bit)e(c)o(haracters.)
-25 b(By)17 b(default,)g(this)f(is)h(set)f(to)h Fs(rl_prep_terminal)e
-Ft(\(see)i(Section)g(2.4.9)195 628 y([T)l(erminal)d(Managemen)o(t],)f
-(page)i(39\).)1685 722 y([V)l(ariable])-1801 b Fh(rl_voidfunc_t)28
-b(*)e(rl_deprep_term_functi)q(on)195 777 y Ft(If)19 b(non-zero,)g
-(Readline)f(will)f(call)h(indirectly)f(through)h(this)g(p)q(oin)o(ter)f
-(to)h(reset)g(the)h(terminal.)195 832 y(This)e(function)g(should)h
-(undo)g(the)f(e\013ects)h(of)f Fs(rl_prep_term_function)p
-Ft(.)24 b(By)17 b(default,)h(this)195 887 y(is)d(set)g(to)f
+(system)f(call)f(is)h(in)o(terrupted)195 2670 y(b)o(y)i(a)g(signal)f
+(when)i(Readline)f(is)g(reading)g(terminal)f(input.)p
+eop end
+%%Page: 33 37
+TeXDict begin 33 36 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)14
+b(with)g(GNU)h(Readline)842 b(33)1685 149 y([V)l(ariable])-1801
+b Fh(rl_hook_func_t)28 b(*)f(rl_timeout_event_hook)195
+204 y Ft(If)13 b(non-zero,)g(this)f(is)g(the)h(address)f(of)h(a)f
+(function)g(to)g(call)g(if)g(Readline)h(times)f(out)g(while)g(reading)
+195 259 y(input.)1685 359 y([V)l(ariable])-1801 b Fh(rl_hook_func_t)28
+b(*)f(rl_input_available_hook)195 414 y Ft(If)15 b(non-zero,)f
+(Readline)h(will)e(use)i(this)f(function's)g(return)g(v)m(alue)h(when)g
+(it)f(needs)h(to)f(determine)195 469 y(whether)21 b(or)g(not)g(there)g
+(is)g(a)o(v)m(ailable)f(input)h(on)g(the)h(curren)o(t)f(input)g
+(source.)38 b(The)21 b(default)195 524 y(ho)q(ok)13 b(c)o(hec)o(ks)g
+Fs(rl_instream)p Ft(;)e(if)h(an)h(application)e(is)i(using)f(a)g
+(di\013eren)o(t)g(input)h(source,)g(it)f(should)195 579
+y(set)k(the)h(ho)q(ok)g(appropriately)l(.)23 b(Readline)17
+b(queries)g(for)f(a)o(v)m(ailable)f(input)i(when)g(implemen)o(ting)195
+633 y(in)o(tra-k)o(ey-sequence)k(timeouts)e(during)h(input)h(and)f
+(incremen)o(tal)g(searc)o(hes.)35 b(This)20 b(function)195
+688 y(m)o(ust)13 b(return)g(zero)f(if)h(there)g(is)g(no)g(input)g(a)o
+(v)m(ailable,)f(and)h(non-zero)g(if)g(input)g(is)g(a)o(v)m(ailable.)k
+(This)195 743 y(ma)o(y)g(use)h(an)f(application-sp)q(eci\014c)g
+(timeout)g(b)q(efore)h(returning)f(a)g(v)m(alue;)h(Readline)g(uses)g
+(the)195 798 y(v)m(alue)13 b(passed)f(to)g Fs
+(rl_set_keyboard_input_timeou)o(t\(\))d Ft(or)j(the)h(v)m(alue)g(of)f
+(the)g(user-settable)195 853 y Fk(k)o(eyseq-timeout)20
+b Ft(v)m(ariable.)34 b(This)19 b(is)h(designed)g(for)g(use)g(b)o(y)g
+(applications)e(using)i(Readline's)195 907 y(callbac)o(k)c(in)o
+(terface)g(\(see)h(Section)g(2.4.12)e([Alternate)g(In)o(terface],)i
+(page)g(47\),)f(whic)o(h)g(ma)o(y)g(not)195 962 y(use)h(the)f
+(traditional)e Fs(read\(2\))i Ft(and)g(\014le)h(descriptor)f(in)o
+(terface,)f(or)h(other)g(applications)f(using)195 1017
+y(a)e(di\013eren)o(t)g(input)h(mec)o(hanism.)19 b(If)14
+b(an)g(application)e(uses)i(an)g(input)f(mec)o(hanism)h(or)f(ho)q(ok)h
+(that)195 1072 y(can)h(p)q(oten)o(tially)f(exceed)i(the)f(v)m(alue)h
+(of)e Fk(k)o(eyseq-timeout)p Ft(,)g(it)h(should)g(increase)g(the)g
+(timeout)f(or)195 1127 y(set)f(this)g(ho)q(ok)g(appropriately)f(ev)o
+(en)h(when)h(not)f(using)g(the)h(callbac)o(k)e(in)o(terface.)18
+b(In)c(general,)f(an)195 1181 y(application)g(that)g(sets)g
+Fk(rl)p 647 1181 14 2 v 20 w(getc)p 748 1181 V 20 w(function)g
+Ft(should)h(consider)g(setting)f Fk(rl)p 1442 1181 V
+20 w(input)p 1568 1181 V 20 w(a)o(v)m(ailable)p 1761
+1181 V 18 w(ho)q(ok)195 1236 y Ft(as)i(w)o(ell.)1685
+1337 y([V)l(ariable])-1801 b Fh(rl_voidfunc_t)28 b(*)e
+(rl_redisplay_function)195 1391 y Ft(Readline)11 b(will)e(call)g
+(indirectly)h(through)g(this)g(p)q(oin)o(ter)f(to)h(up)q(date)h(the)f
+(displa)o(y)g(with)g(the)g(curren)o(t)195 1446 y(con)o(ten)o(ts)20
+b(of)g(the)h(editing)f(bu\013er.)37 b(By)21 b(default,)g(it)f(is)h(set)
+f(to)g Fs(rl_redisplay)p Ft(,)h(the)f(default)195 1501
+y(Readline)15 b(redispla)o(y)g(function)g(\(see)g(Section)g(2.4.6)f
+([Redispla)o(y],)f(page)j(41\).)1685 1601 y([V)l(ariable])-1801
+b Fh(rl_vintfunc_t)28 b(*)e(rl_prep_term_function)195
+1656 y Ft(If)12 b(non-zero,)h(Readline)f(will)f(call)g(indirectly)g
+(through)h(this)f(p)q(oin)o(ter)h(to)f(initialize)f(the)j(terminal.)195
+1711 y(The)19 b(function)f(tak)o(es)g(a)g(single)g(argumen)o(t,)g(an)h
+Fs(int)f Ft(\015ag)g(that)g(sa)o(ys)g(whether)g(or)h(not)f(to)g(use)195
+1766 y(eigh)o(t-bit)e(c)o(haracters.)25 b(By)17 b(default,)g(this)f(is)
+h(set)f(to)h Fs(rl_prep_terminal)e Ft(\(see)i(Section)g(2.4.9)195
+1821 y([T)l(erminal)d(Managemen)o(t],)f(page)i(44\).)1685
+1921 y([V)l(ariable])-1801 b Fh(rl_voidfunc_t)28 b(*)e
+(rl_deprep_term_functi)q(on)195 1976 y Ft(If)19 b(non-zero,)g(Readline)
+f(will)f(call)h(indirectly)f(through)h(this)g(p)q(oin)o(ter)f(to)h
+(reset)g(the)h(terminal.)195 2031 y(This)e(function)g(should)h(undo)g
+(the)f(e\013ects)h(of)f Fs(rl_prep_term_function)p Ft(.)24
+b(By)17 b(default,)h(this)195 2086 y(is)d(set)g(to)f
Fs(rl_deprep_terminal)f Ft(\(see)i(Section)g(2.4.9)f([T)l(erminal)g
-(Managemen)o(t],)f(page)i(39\).)1685 981 y([V)l(ariable])-1801
-b Fh(Keymap)27 b(rl_executing_keymap)195 1036 y Ft(This)18
+(Managemen)o(t],)f(page)i(44\).)1685 2186 y([V)l(ariable])-1801
+b Fh(void)27 b(rl_macro_display_hook)195 2241 y Ft(If)22
+b(set,)i(this)d(p)q(oin)o(ts)h(to)f(a)h(function)g(that)f
+Fs(rl_macro_dumper)f Ft(will)h(call)h(to)f(displa)o(y)g(a)h(k)o(ey)195
+2296 y(sequence)d(b)q(ound)g(to)e(a)g(macro.)28 b(It)17
+b(is)h(called)f(with)g(the)h(k)o(ey)g(sequence,)h(the)f
+Fs(")p Ft(un)o(translated)p Fs(")195 2350 y Ft(macro)j(v)m(alue)g
+(\(i.e.,)h(with)f(bac)o(kslash)f(escap)q(es)i(included,)i(as)d(when)h
+(passed)f(to)g Fs(rl_macro_)195 2405 y(bind)p Ft(\),)12
+b(the)g Fs(readable)f Ft(argumen)o(t)h(passed)g(to)g
+Fs(rl_macro_dumper)p Ft(,)e(and)j(an)o(y)e(pre\014x)i(to)f(displa)o(y)
+195 2460 y(b)q(efore)j(the)h(k)o(ey)f(sequence.)1685
+2560 y([V)l(ariable])-1801 b Fh(Keymap)27 b(rl_executing_keymap)195
+2615 y Ft(This)18 b(v)m(ariable)f(is)g(set)h(to)g(the)g(k)o(eymap)f
+(\(see)h(Section)g(2.4.2)f([Keymaps],)g(page)h(36\))f(in)h(whic)o(h)195
+2670 y(the)d(curren)o(tly)g(executing)g(Readline)h(function)f(w)o(as)f
+(found.)p eop end
+%%Page: 34 38
+TeXDict begin 34 37 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)14
+b(with)g(GNU)h(Readline)842 b(34)1685 149 y([V)l(ariable])-1801
+b Fh(Keymap)27 b(rl_binding_keymap)195 204 y Ft(This)18
b(v)m(ariable)f(is)g(set)h(to)g(the)g(k)o(eymap)f(\(see)h(Section)g
-(2.4.2)f([Keymaps],)g(page)h(33\))f(in)h(whic)o(h)195
-1091 y(the)d(curren)o(tly)g(executing)g(readline)g(function)g(w)o(as)g
-(found.)1685 1186 y([V)l(ariable])-1801 b Fh(Keymap)27
-b(rl_binding_keymap)195 1241 y Ft(This)18 b(v)m(ariable)f(is)g(set)h
-(to)g(the)g(k)o(eymap)f(\(see)h(Section)g(2.4.2)f([Keymaps],)g(page)h
-(33\))f(in)h(whic)o(h)195 1295 y(the)d(last)f(k)o(ey)h(binding)h(o)q
-(ccurred.)1685 1390 y([V)l(ariable])-1801 b Fh(char)27
-b(*)f(rl_executing_macro)195 1445 y Ft(This)15 b(v)m(ariable)f(is)h
-(set)g(to)g(the)g(text)g(of)f(an)o(y)h(curren)o(tly-executing)g(macro.)
-1685 1540 y([V)l(ariable])-1801 b Fh(int)27 b(rl_executing_key)195
-1594 y Ft(The)15 b(k)o(ey)h(that)e(caused)i(the)f(dispatc)o(h)g(to)f
-(the)i(curren)o(tly-executing)f(Readline)g(function.)1685
-1689 y([V)l(ariable])-1801 b Fh(char)27 b(*)f(rl_executing_keyseq)195
-1744 y Ft(The)18 b(full)f(k)o(ey)h(sequence)h(that)e(caused)h(the)g
-(dispatc)o(h)f(to)g(the)h(curren)o(tly-executing)g(Readline)195
-1799 y(function.)1685 1893 y([V)l(ariable])-1801 b Fh(int)27
-b(rl_key_sequence_length)195 1948 y Ft(The)15 b(n)o(um)o(b)q(er)h(of)f
-(c)o(haracters)f(in)h Fj(rl)p 809 1948 14 2 v 20 w(executing)p
-1017 1948 V 20 w(k)o(eyseq)p Ft(.)1685 2043 y([V)l(ariable])-1801
-b Fh(int)27 b(rl_readline_state)195 2098 y Ft(A)17 b(v)m(ariable)g
-(with)f(bit)h(v)m(alues)h(that)e(encapsulate)h(the)h(curren)o(t)f
-(Readline)g(state.)25 b(A)18 b(bit)e(is)h(set)195 2152
-y(with)h(the)h Fs(RL_SETSTATE)f Ft(macro,)h(and)g(unset)g(with)f(the)h
-Fs(RL_UNSETSTATE)e Ft(macro.)31 b(Use)19 b(the)195 2207
+(2.4.2)f([Keymaps],)g(page)h(36\))f(in)h(whic)o(h)195
+259 y(the)d(last)f(k)o(ey)h(binding)h(o)q(ccurred.)1685
+357 y([V)l(ariable])-1801 b Fh(char)27 b(*)f(rl_executing_macro)195
+412 y Ft(This)15 b(v)m(ariable)f(is)h(set)g(to)g(the)g(text)g(of)f(an)o
+(y)h(curren)o(tly-executing)g(macro.)1685 509 y([V)l(ariable])-1801
+b Fh(int)27 b(rl_executing_key)195 564 y Ft(The)15 b(k)o(ey)h(that)e
+(caused)i(the)f(dispatc)o(h)g(to)f(the)i(curren)o(tly-executing)f
+(Readline)g(function.)1685 662 y([V)l(ariable])-1801
+b Fh(char)27 b(*)f(rl_executing_keyseq)195 717 y Ft(The)18
+b(full)f(k)o(ey)h(sequence)h(that)e(caused)h(the)g(dispatc)o(h)f(to)g
+(the)h(curren)o(tly-executing)g(Readline)195 771 y(function.)1685
+869 y([V)l(ariable])-1801 b Fh(int)27 b(rl_key_sequence_length)195
+924 y Ft(The)15 b(n)o(um)o(b)q(er)h(of)f(c)o(haracters)f(in)h
+Fk(rl)p 809 924 14 2 v 20 w(executing)p 1017 924 V 20
+w(k)o(eyseq)p Ft(.)1685 1022 y([V)l(ariable])-1801 b
+Fh(int)27 b(rl_readline_state)195 1077 y Ft(A)17 b(v)m(ariable)g(with)f
+(bit)h(v)m(alues)h(that)e(encapsulate)h(the)h(curren)o(t)f(Readline)g
+(state.)25 b(A)18 b(bit)e(is)h(set)195 1131 y(with)h(the)h
+Fs(RL_SETSTATE)f Ft(macro,)h(and)g(unset)g(with)f(the)h
+Fs(RL_UNSETSTATE)e Ft(macro.)31 b(Use)19 b(the)195 1186
y Fs(RL_ISSTATE)e Ft(macro)h(to)g(test)g(whether)h(a)f(particular)g
(state)f(bit)i(is)f(set.)30 b(Curren)o(t)18 b(state)g(bits)195
-2262 y(include:)195 2344 y Fs(RL_STATE_NONE)435 2398
+1241 y(include:)195 1325 y Fs(RL_STATE_NONE)435 1380
y Ft(Readline)d(has)h(not)e(y)o(et)h(b)q(een)h(called,)f(nor)g(has)g
-(it)f(b)q(egun)i(to)f(initialize.)195 2479 y Fs(RL_STATE_INITIALIZING)
-435 2534 y Ft(Readline)g(is)g(initializing)e(its)h(in)o(ternal)g(data)h
-(structures.)195 2615 y Fs(RL_STATE_INITIALIZED)435 2670
-y Ft(Readline)g(has)h(completed)f(its)f(initialization.)p
-eop end
-%%Page: 31 35
-TeXDict begin 31 34 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)14
-b(with)g(GNU)h(Readline)842 b(31)195 149 y Fs(RL_STATE_TERMPREPPED)435
-204 y Ft(Readline)15 b(has)f(mo)q(di\014ed)h(the)f(terminal)f(mo)q(des)
-i(to)e(do)i(its)e(o)o(wn)h(input)g(and)h(redis-)435 259
-y(pla)o(y)l(.)195 340 y Fs(RL_STATE_READCMD)435 394 y
-Ft(Readline)g(is)g(reading)g(a)g(command)g(from)f(the)i(k)o(eyb)q
-(oard.)195 475 y Fs(RL_STATE_METANEXT)435 530 y Ft(Readline)f(is)g
-(reading)g(more)g(input)g(after)f(reading)h(the)g(meta-pre\014x)h(c)o
-(haracter.)195 610 y Fs(RL_STATE_DISPATCHING)435 665
-y Ft(Readline)f(is)g(dispatc)o(hing)g(to)f(a)h(command.)195
-746 y Fs(RL_STATE_MOREINPUT)435 801 y Ft(Readline)g(is)g(reading)g
+(it)f(b)q(egun)i(to)f(initialize.)195 1462 y Fs(RL_STATE_INITIALIZING)
+435 1517 y Ft(Readline)g(is)g(initializing)e(its)h(in)o(ternal)g(data)h
+(structures.)195 1599 y Fs(RL_STATE_INITIALIZED)435 1654
+y Ft(Readline)g(has)h(completed)f(its)f(initialization.)195
+1737 y Fs(RL_STATE_TERMPREPPED)435 1791 y Ft(Readline)h(has)f(mo)q
+(di\014ed)h(the)f(terminal)f(mo)q(des)i(to)e(do)i(its)e(o)o(wn)h(input)
+g(and)h(redis-)435 1846 y(pla)o(y)l(.)195 1929 y Fs(RL_STATE_READCMD)
+435 1984 y Ft(Readline)g(is)g(reading)g(a)g(command)g(from)f(the)i(k)o
+(eyb)q(oard.)195 2066 y Fs(RL_STATE_METANEXT)435 2121
+y Ft(Readline)f(is)g(reading)g(more)g(input)g(after)f(reading)h(the)g
+(meta-pre\014x)h(c)o(haracter.)195 2203 y Fs(RL_STATE_DISPATCHING)435
+2258 y Ft(Readline)f(is)g(dispatc)o(hing)g(to)f(a)h(command.)195
+2341 y Fs(RL_STATE_MOREINPUT)435 2395 y Ft(Readline)g(is)g(reading)g
(more)g(input)g(while)g(executing)g(an)g(editing)g(command.)195
-881 y Fs(RL_STATE_ISEARCH)435 936 y Ft(Readline)g(is)g(p)q(erforming)g
-(an)g(incremen)o(tal)f(history)g(searc)o(h.)195 1016
-y Fs(RL_STATE_NSEARCH)435 1071 y Ft(Readline)h(is)g(p)q(erforming)g(a)g
-(non-incremen)o(tal)f(history)h(searc)o(h.)195 1152 y
-Fs(RL_STATE_SEARCH)435 1207 y Ft(Readline)10 b(is)g(searc)o(hing)g(bac)
-o(kw)o(ard)f(or)h(forw)o(ard)f(through)h(the)g(history)f(for)g(a)h
-(string.)195 1287 y Fs(RL_STATE_NUMERICARG)435 1342 y
-Ft(Readline)15 b(is)g(reading)g(a)g(n)o(umeric)g(argumen)o(t.)195
-1423 y Fs(RL_STATE_MACROINPUT)435 1477 y Ft(Readline)d(is)g(curren)o
-(tly)g(getting)f(its)g(input)h(from)f(a)h(previously-de\014ned)h(k)o
-(eyb)q(oard)435 1532 y(macro.)195 1613 y Fs(RL_STATE_MACRODEF)435
-1668 y Ft(Readline)i(is)g(curren)o(tly)g(reading)g(c)o(haracters)f
-(de\014ning)i(a)f(k)o(eyb)q(oard)g(macro.)195 1748 y
-Fs(RL_STATE_OVERWRITE)435 1803 y Ft(Readline)g(is)g(in)g(o)o(v)o
-(erwrite)f(mo)q(de.)195 1884 y Fs(RL_STATE_COMPLETING)435
-1938 y Ft(Readline)h(is)g(p)q(erforming)g(w)o(ord)f(completion.)195
-2019 y Fs(RL_STATE_SIGHANDLER)435 2074 y Ft(Readline)h(is)g(curren)o
+2478 y Fs(RL_STATE_ISEARCH)435 2533 y Ft(Readline)g(is)g(p)q(erforming)
+g(an)g(incremen)o(tal)f(history)g(searc)o(h.)195 2615
+y Fs(RL_STATE_NSEARCH)435 2670 y Ft(Readline)h(is)g(p)q(erforming)g(a)g
+(non-incremen)o(tal)f(history)h(searc)o(h.)p eop end
+%%Page: 35 39
+TeXDict begin 35 38 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)14
+b(with)g(GNU)h(Readline)842 b(35)195 149 y Fs(RL_STATE_SEARCH)435
+204 y Ft(Readline)10 b(is)g(searc)o(hing)g(bac)o(kw)o(ard)f(or)h(forw)o
+(ard)f(through)h(the)g(history)f(for)g(a)h(string.)195
+276 y Fs(RL_STATE_NUMERICARG)435 331 y Ft(Readline)15
+b(is)g(reading)g(a)g(n)o(umeric)g(argumen)o(t.)195 403
+y Fs(RL_STATE_MACROINPUT)435 458 y Ft(Readline)d(is)g(curren)o(tly)g
+(getting)f(its)g(input)h(from)f(a)h(previously-de\014ned)h(k)o(eyb)q
+(oard)435 512 y(macro.)195 584 y Fs(RL_STATE_MACRODEF)435
+639 y Ft(Readline)i(is)g(curren)o(tly)g(reading)g(c)o(haracters)f
+(de\014ning)i(a)f(k)o(eyb)q(oard)g(macro.)195 711 y Fs
+(RL_STATE_OVERWRITE)435 766 y Ft(Readline)g(is)g(in)g(o)o(v)o(erwrite)f
+(mo)q(de.)195 838 y Fs(RL_STATE_COMPLETING)435 893 y
+Ft(Readline)h(is)g(p)q(erforming)g(w)o(ord)f(completion.)195
+965 y Fs(RL_STATE_SIGHANDLER)435 1019 y Ft(Readline)h(is)g(curren)o
(tly)g(executing)g(the)g(readline)g(signal)f(handler.)195
-2154 y Fs(RL_STATE_UNDOING)435 2209 y Ft(Readline)h(is)g(p)q(erforming)
-g(an)g(undo.)195 2290 y Fs(RL_STATE_INPUTPENDING)435
-2344 y Ft(Readline)g(has)h(input)f(p)q(ending)h(due)g(to)e(a)h(call)f
-(to)h Fs(rl_execute_next\(\))p Ft(.)195 2425 y Fs(RL_STATE_TTYCSAVED)
-435 2480 y Ft(Readline)g(has)h(sa)o(v)o(ed)e(the)i(v)m(alues)f(of)g
-(the)g(terminal's)e(sp)q(ecial)i(c)o(haracters.)195 2560
-y Fs(RL_STATE_CALLBACK)435 2615 y Ft(Readline)22 b(is)f(curren)o(tly)g
+1091 y Fs(RL_STATE_UNDOING)435 1146 y Ft(Readline)h(is)g(p)q(erforming)
+g(an)g(undo.)195 1218 y Fs(RL_STATE_INPUTPENDING)435
+1273 y Ft(Readline)g(has)h(input)f(p)q(ending)h(due)g(to)e(a)h(call)f
+(to)h Fs(rl_execute_next\(\))p Ft(.)195 1345 y Fs(RL_STATE_TTYCSAVED)
+435 1399 y Ft(Readline)g(has)h(sa)o(v)o(ed)e(the)i(v)m(alues)f(of)g
+(the)g(terminal's)e(sp)q(ecial)i(c)o(haracters.)195 1471
+y Fs(RL_STATE_CALLBACK)435 1526 y Ft(Readline)22 b(is)f(curren)o(tly)g
(using)g(the)h(alternate)e(\(callbac)o(k\))g(in)o(terface)h(\(see)g
-(Sec-)435 2670 y(tion)14 b(2.4.12)g([Alternate)g(In)o(terface],)g(page)
-h(42\).)p eop end
-%%Page: 32 36
-TeXDict begin 32 35 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)14
-b(with)g(GNU)h(Readline)842 b(32)195 149 y Fs(RL_STATE_VIMOTION)435
-204 y Ft(Readline)15 b(is)g(reading)g(the)g(argumen)o(t)g(to)f(a)h
-(vi-mo)q(de)g Fs(")p Ft(motion)p Fs(")f Ft(command.)195
-295 y Fs(RL_STATE_MULTIKEY)435 349 y Ft(Readline)h(is)g(reading)g(a)g
-(m)o(ultiple-k)o(eystrok)o(e)e(command.)195 440 y Fs
-(RL_STATE_VICMDONCE)435 494 y Ft(Readline)20 b(has)f(en)o(tered)h(vi)f
-(command)h(\(mo)o(v)o(emen)o(t\))e(mo)q(de)h(at)g(least)g(one)h(time)
-435 549 y(during)15 b(the)g(curren)o(t)g(call)g(to)f
-Fs(readline\(\))p Ft(.)195 639 y Fs(RL_STATE_DONE)435
-694 y Ft(Readline)g(has)g(read)g(a)f(k)o(ey)h(sequence)h(b)q(ound)g(to)
-e Fs(accept-line)f Ft(and)i(is)g(ab)q(out)g(to)435 749
-y(return)h(the)g(line)g(to)g(the)g(caller.)1685 862 y([V)l(ariable])
--1801 b Fh(int)27 b(rl_explicit_arg)195 917 y Ft(Set)19
-b(to)g(a)g(non-zero)h(v)m(alue)g(if)e(an)i(explicit)e(n)o(umeric)i
-(argumen)o(t)e(w)o(as)h(sp)q(eci\014ed)h(b)o(y)g(the)f(user.)195
-972 y(Only)c(v)m(alid)g(in)g(a)g(bindable)g(command)h(function.)1685
-1085 y([V)l(ariable])-1801 b Fh(int)27 b(rl_numeric_arg)195
-1140 y Ft(Set)c(to)f(the)g(v)m(alue)h(of)g(an)o(y)f(n)o(umeric)g
+(Sec-)435 1581 y(tion)14 b(2.4.12)g([Alternate)g(In)o(terface],)g(page)
+h(47\).)195 1653 y Fs(RL_STATE_VIMOTION)435 1708 y Ft(Readline)g(is)g
+(reading)g(the)g(argumen)o(t)g(to)f(a)h(vi-mo)q(de)g
+Fs(")p Ft(motion)p Fs(")f Ft(command.)195 1780 y Fs(RL_STATE_MULTIKEY)
+435 1834 y Ft(Readline)h(is)g(reading)g(a)g(m)o(ultiple-k)o(eystrok)o
+(e)e(command.)195 1906 y Fs(RL_STATE_VICMDONCE)435 1961
+y Ft(Readline)20 b(has)f(en)o(tered)h(vi)f(command)h(\(mo)o(v)o(emen)o
+(t\))e(mo)q(de)h(at)g(least)g(one)h(time)435 2016 y(during)15
+b(the)g(curren)o(t)g(call)g(to)f Fs(readline\(\))p Ft(.)195
+2088 y Fs(RL_STATE_DONE)435 2143 y Ft(Readline)g(has)g(read)g(a)f(k)o
+(ey)h(sequence)h(b)q(ound)g(to)e Fs(accept-line)f Ft(and)i(is)g(ab)q
+(out)g(to)435 2197 y(return)h(the)g(line)g(to)g(the)g(caller.)195
+2269 y Fs(RL_STATE_TIMEOUT)435 2324 y Ft(Readline)22
+b(has)f(timed)h(out)f(\(it)g(did)g(not)h(receiv)o(e)f(a)g(line)h(or)f
+(sp)q(eci\014ed)i(n)o(um)o(b)q(er)435 2379 y(of)18 b(c)o(haracters)f(b)
+q(efore)h(the)g(timeout)f(duration)h(sp)q(eci\014ed)h(b)o(y)f
+Fs(rl_set_timeout)435 2434 y Ft(elapsed\))d(and)g(is)g(returning)g
+(that)f(status)h(to)f(the)i(caller.)195 2506 y Fs(RL_STATE_EOF)435
+2560 y Ft(Readline)k(has)f(read)g(an)g(EOF)g(c)o(haracter)g(\(e.g.,)g
+(the)g(stt)o(y)f(`)p Fs(EOF)p Ft(')g(c)o(haracter\))g(or)435
+2615 y(encoun)o(tered)e(a)g(read)f(error)g(or)g(EOF)h(and)f(is)h(ab)q
+(out)f(to)g(return)g(a)h(NULL)g(line)g(to)435 2670 y(the)f(caller.)p
+eop end
+%%Page: 36 40
+TeXDict begin 36 39 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)14
+b(with)g(GNU)h(Readline)842 b(36)1685 149 y([V)l(ariable])-1801
+b Fh(int)27 b(rl_explicit_arg)195 204 y Ft(Set)16 b(to)e(a)i(non-zero)f
+(v)m(alue)h(if)f(an)g(explicit)g(n)o(umeric)g(argumen)o(t)g(w)o(as)g
+(sp)q(eci\014ed)h(b)o(y)g(the)f(user.)21 b(It)195 259
+y(is)15 b(only)f(v)m(alid)h(in)g(a)g(bindable)h(command)f(function.)
+1685 349 y([V)l(ariable])-1801 b Fh(int)27 b(rl_numeric_arg)195
+404 y Ft(Set)c(to)f(the)g(v)m(alue)h(of)g(an)o(y)f(n)o(umeric)g
(argumen)o(t)g(explicitly)g(sp)q(eci\014ed)i(b)o(y)e(the)h(user)g(b)q
-(efore)195 1195 y(executing)13 b(the)g(curren)o(t)g(Readline)g
-(function.)19 b(Only)13 b(v)m(alid)g(in)g(a)g(bindable)g(command)f
-(function.)1685 1308 y([V)l(ariable])-1801 b Fh(int)27
-b(rl_editing_mode)195 1363 y Ft(Set)13 b(to)f(a)g(v)m(alue)h(denoting)f
+(efore)195 459 y(executing)e(the)h(curren)o(t)f(Readline)h(function.)38
+b(It)21 b(is)g(only)g(v)m(alid)g(in)g(a)g(bindable)g(command)195
+514 y(function.)1685 604 y([V)l(ariable])-1801 b Fh(int)27
+b(rl_editing_mode)195 659 y Ft(Set)13 b(to)f(a)g(v)m(alue)h(denoting)f
(Readline's)g(curren)o(t)h(editing)f(mo)q(de.)19 b(A)12
-b(v)m(alue)h(of)f Fj(1)k Ft(means)d(Readline)195 1418
-y(is)i(curren)o(tly)f(in)h(emacs)h(mo)q(de;)f Fj(0)j
-Ft(means)d(that)g(vi)g(mo)q(de)g(is)g(activ)o(e.)75 1554
-y Fr(2.4)33 b(Readline)21 b(Con)n(v)n(enience)h(F)-6
-b(unctions)75 1666 y Fi(2.4.1)30 b(Naming)20 b(a)g(F)-5
-b(unction)75 1740 y Ft(The)13 b(user)f(can)h(dynamically)e(c)o(hange)i
-(the)f(bindings)h(of)f(k)o(eys)g(while)g(using)g(Readline.)19
-b(This)12 b(is)g(done)h(b)o(y)75 1794 y(represen)o(ting)i(the)g
-(function)g(with)f(a)h(descriptiv)o(e)g(name.)20 b(The)15
-b(user)g(is)g(able)g(to)f(t)o(yp)q(e)h(the)g(descriptiv)o(e)75
-1849 y(name)g(when)h(referring)e(to)h(the)g(function.)20
-b(Th)o(us,)15 b(in)g(an)g(init)f(\014le,)h(one)g(migh)o(t)f(\014nd)195
-1927 y Fs(Meta-Rubout:)46 b(backward-kill-word)137 2005
+b(v)m(alue)h(of)f Fk(1)k Ft(means)d(Readline)195 714
+y(is)19 b(curren)o(tly)g(in)h(emacs)f(mo)q(de;)j Fk(0)h
+Ft(means)c(that)g(vi)g(mo)q(de)h(is)f(activ)o(e.)32 b(This)19
+b(determines)h(the)195 768 y(curren)o(t)15 b(k)o(eymap)g(and)g(k)o(ey)g
+(bindings.)75 887 y Fr(2.4)33 b(Readline)21 b(Con)n(v)n(enience)h(F)-6
+b(unctions)75 999 y Fi(2.4.1)30 b(Naming)20 b(a)g(F)-5
+b(unction)75 1072 y Ft(Readline)13 b(has)g(a)g(descriptiv)o(e)f(string)
+g(name)h(for)g(ev)o(ery)g(function)g(a)f(user)i(can)f(bind)g(to)g(a)f
+(k)o(ey)h(sequence,)75 1127 y(so)19 b(users)g(can)h(dynamically)e(c)o
+(hange)i(the)f(bindings)g(asso)q(ciated)g(with)g(k)o(ey)g(sequences)h
+(while)f(using)75 1182 y(Readline,)e(using)f(the)h(descriptiv)o(e)f
+(name)h(when)g(referring)f(to)g(the)h(function.)24 b(Th)o(us,)16
+b(in)h(an)f(init)g(\014le,)75 1237 y(one)f(migh)o(t)f(\014nd)195
+1303 y Fs(Meta-Rubout:)46 b(backward-kill-word)137 1370
y Ft(This)d(binds)g(the)g(k)o(eystrok)o(e)e Fs(Meta-Rubout)h
-Ft(to)g(the)h(function)f Fk(descriptively)47 b Ft(named)75
-2060 y Fs(backward-kill-word)p Ft(.)31 b(Y)l(ou,)21 b(as)e(the)h
-(programmer,)g(should)g(bind)g(the)g(functions)f(y)o(ou)h(write)f(to)75
-2115 y(descriptiv)o(e)c(names)g(as)g(w)o(ell.)j(Readline)e(pro)o(vides)
-f(a)g(function)g(for)f(doing)h(that:)1675 2228 y([F)l(unction])-1801
-b Fh(int)27 b(rl_add_defun)d Fg(\()p Ff(const)16 b(c)o(har)f(*name,)h
-(rl)p 982 2228 15 3 v 21 w(command)p 1215 2228 V 20 w(func)p
-1328 2228 V 22 w(t)h(*function,)283 2283 y(in)o(t)f(k)o(ey)p
-Fg(\))195 2337 y Ft(Add)i Fj(name)i Ft(to)d(the)h(list)f(of)g(named)h
-(functions.)27 b(Mak)o(e)17 b Fj(function)g Ft(b)q(e)h(the)g(function)g
-(that)e(gets)195 2392 y(called.)j(If)d Fj(k)o(ey)j Ft(is)c(not)f(-1,)h
-(then)h(bind)f(it)g(to)f Fj(function)h Ft(using)g Fs(rl_bind_key\(\))p
-Ft(.)137 2506 y(Using)g(this)f(function)h(alone)g(is)f(su\016cien)o(t)h
-(for)g(most)f(applications.)k(It)d(is)g(the)g(recommended)h(w)o(a)o(y)
-75 2560 y(to)d(add)h(a)f(few)g(functions)g(to)g(the)h(default)f
-(functions)g(that)g(Readline)h(has)f(built)g(in.)19 b(If)14
-b(y)o(ou)f(need)h(to)f(do)75 2615 y(something)j(other)h(than)f(adding)h
-(a)f(function)h(to)f(Readline,)h(y)o(ou)g(ma)o(y)f(need)i(to)e(use)h
-(the)g(underlying)75 2670 y(functions)e(describ)q(ed)h(b)q(elo)o(w.)p
-eop end
-%%Page: 33 37
-TeXDict begin 33 36 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)14
-b(with)g(GNU)h(Readline)842 b(33)75 149 y Fi(2.4.2)30
-b(Selecting)20 b(a)h(Keymap)75 223 y Ft(Key)f(bindings)f(tak)o(e)g
-(place)g(on)g(a)g Fj(k)o(eymap)p Ft(.)32 b(The)20 b(k)o(eymap)f(is)g
-(the)g(asso)q(ciation)f(b)q(et)o(w)o(een)i(the)f(k)o(eys)75
-278 y(that)14 b(the)g(user)g(t)o(yp)q(es)g(and)h(the)f(functions)g
-(that)g(get)g(run.)19 b(Y)l(ou)c(can)f(mak)o(e)g(y)o(our)g(o)o(wn)f(k)o
-(eymaps,)h(cop)o(y)75 333 y(existing)g(k)o(eymaps,)h(and)g(tell)f
-(Readline)i(whic)o(h)f(k)o(eymap)g(to)f(use.)1675 425
-y([F)l(unction])-1801 b Fh(Keymap)27 b(rl_make_bare_keymap)f
-Fg(\()p Ff(v)o(oid)p Fg(\))195 479 y Ft(Returns)13 b(a)e(new,)i(empt)o
+Ft(to)g(the)h(function)f Fj(descriptively)47 b Ft(named)75
+1425 y Fs(backward-kill-word)p Ft(.)33 b(As)21 b(the)g(programmer,)f(y)
+o(ou)g(should)h(bind)g(the)f(functions)h(y)o(ou)f(write)g(to)75
+1480 y(descriptiv)o(e)15 b(names)g(as)g(w)o(ell.)j(Readline)e(pro)o
+(vides)f(a)g(function)g(for)f(doing)h(that:)1675 1570
+y([F)l(unction])-1801 b Fh(int)27 b(rl_add_defun)d Fg(\()p
+Ff(const)16 b(c)o(har)f(*name,)h(rl)p 982 1570 15 3 v
+21 w(command)p 1215 1570 V 20 w(func)p 1328 1570 V 22
+w(t)h(*function,)283 1625 y(in)o(t)f(k)o(ey)p Fg(\))195
+1679 y Ft(Add)i Fk(name)i Ft(to)d(the)h(list)f(of)g(named)h(functions.)
+27 b(Mak)o(e)17 b Fk(function)g Ft(b)q(e)h(the)g(function)g(that)e
+(gets)195 1734 y(called)f(b)o(y)h(k)o(ey)f(sequences)i(that)e(bind)h
+(to)f Fk(name)p Ft(.)21 b(If)16 b Fk(k)o(ey)k Ft(is)15
+b(not)g(-1,)g(then)h(bind)g(it)f(to)g Fk(function)195
+1789 y Ft(using)g Fs(rl_bind_key\(\))p Ft(.)137 1879
+y(Using)g(this)f(function)h(alone)g(is)f(su\016cien)o(t)h(for)g(most)f
+(applications.)k(It)d(is)g(the)g(recommended)h(w)o(a)o(y)75
+1934 y(to)d(add)h(a)f(few)g(functions)g(to)g(the)h(default)f(functions)
+g(that)g(Readline)h(has)f(built)g(in.)19 b(If)14 b(y)o(ou)f(need)h(to)f
+(do)75 1989 y(something)j(other)h(than)f(adding)h(a)f(function)h(to)f
+(Readline,)h(y)o(ou)g(ma)o(y)f(need)i(to)e(use)h(the)g(underlying)75
+2044 y(functions)e(describ)q(ed)h(b)q(elo)o(w.)75 2142
+y Fi(2.4.2)30 b(Selecting)20 b(a)h(Keymap)75 2215 y Ft(Key)f(bindings)f
+(tak)o(e)g(place)g(on)g(a)g Fk(k)o(eymap)p Ft(.)32 b(The)20
+b(k)o(eymap)f(is)g(the)g(asso)q(ciation)f(b)q(et)o(w)o(een)i(the)f(k)o
+(eys)75 2270 y(that)14 b(the)g(user)g(t)o(yp)q(es)g(and)h(the)f
+(functions)g(that)g(get)g(run.)19 b(Y)l(ou)c(can)f(mak)o(e)g(y)o(our)g
+(o)o(wn)f(k)o(eymaps,)h(cop)o(y)75 2325 y(existing)g(k)o(eymaps,)h(and)
+g(tell)f(Readline)i(whic)o(h)f(k)o(eymap)g(to)f(use.)1675
+2415 y([F)l(unction])-1801 b Fh(Keymap)27 b(rl_make_bare_keymap)f
+Fg(\()p Ff(v)o(oid)p Fg(\))195 2470 y Ft(Returns)13 b(a)e(new,)i(empt)o
(y)f(k)o(eymap.)18 b(The)13 b(space)f(for)f(the)i(k)o(eymap)e(is)h
-(allo)q(cated)f(with)g Fs(malloc\(\))p Ft(;)195 534 y(the)k(caller)g
-(should)g(free)g(it)g(b)o(y)g(calling)f Fs(rl_free_keymap\(\))f
-Ft(when)i(done.)1675 626 y([F)l(unction])-1801 b Fh(Keymap)27
-b(rl_copy_keymap)e Fg(\()p Ff(Keymap)15 b(map)p Fg(\))195
-681 y Ft(Return)h(a)f(new)g(k)o(eymap)g(whic)o(h)g(is)g(a)g(cop)o(y)g
-(of)g Fj(map)p Ft(.)1675 773 y([F)l(unction])-1801 b
-Fh(Keymap)27 b(rl_make_keymap)e Fg(\()p Ff(v)o(oid)p
-Fg(\))195 828 y Ft(Return)16 b(a)g(new)g(k)o(eymap)f(with)g(the)h(prin)
-o(ting)f(c)o(haracters)f(b)q(ound)j(to)e(rl)p 1455 828
-14 2 v 20 w(insert,)f(the)i(lo)o(w)o(ercase)195 883 y(Meta)11
+(allo)q(cated)f(with)g Fs(malloc\(\))p Ft(;)195 2525
+y(the)k(caller)g(should)g(free)g(it)g(b)o(y)g(calling)f
+Fs(rl_free_keymap\(\))f Ft(when)i(done.)1675 2615 y([F)l(unction])-1801
+b Fh(Keymap)27 b(rl_copy_keymap)e Fg(\()p Ff(Keymap)15
+b(map)p Fg(\))195 2670 y Ft(Return)h(a)f(new)g(k)o(eymap)g(whic)o(h)g
+(is)g(a)g(cop)o(y)g(of)g Fk(map)p Ft(.)p eop end
+%%Page: 37 41
+TeXDict begin 37 40 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)14
+b(with)g(GNU)h(Readline)842 b(37)1675 149 y([F)l(unction])-1801
+b Fh(Keymap)27 b(rl_make_keymap)e Fg(\()p Ff(v)o(oid)p
+Fg(\))195 204 y Ft(Return)16 b(a)g(new)g(k)o(eymap)f(with)g(the)h(prin)
+o(ting)f(c)o(haracters)f(b)q(ound)j(to)e(rl)p 1455 204
+14 2 v 20 w(insert,)f(the)i(lo)o(w)o(ercase)195 259 y(Meta)11
b(c)o(haracters)f(b)q(ound)i(to)f(run)h(their)e(equiv)m(alen)o(ts,)i
(and)f(the)h(Meta)e(digits)g(b)q(ound)i(to)f(pro)q(duce)195
-938 y(n)o(umeric)k(argumen)o(ts.)1675 1030 y([F)l(unction])-1801
+314 y(n)o(umeric)k(argumen)o(ts.)1675 404 y([F)l(unction])-1801
b Fh(void)27 b(rl_discard_keymap)e Fg(\()p Ff(Keymap)16
-b(k)o(eymap)p Fg(\))195 1085 y Ft(F)l(ree)f(the)f(storage)g(asso)q
-(ciated)g(with)g(the)h(data)f(in)g Fj(k)o(eymap)p Ft(.)19
-b(The)c(caller)f(should)h(free)g Fj(k)o(eymap)p Ft(.)1675
-1177 y([F)l(unction])-1801 b Fh(void)27 b(rl_free_keymap)e
-Fg(\()p Ff(Keymap)15 b(k)o(eymap)p Fg(\))195 1232 y Ft(F)l(ree)g(all)g
-(storage)f(asso)q(ciated)h(with)f Fj(k)o(eymap)p Ft(.)21
+b(k)o(eymap)p Fg(\))195 459 y Ft(F)l(ree)f(the)f(storage)g(asso)q
+(ciated)g(with)g(the)h(data)f(in)g Fk(k)o(eymap)p Ft(.)19
+b(The)c(caller)f(should)h(free)g Fk(k)o(eymap)p Ft(.)1675
+550 y([F)l(unction])-1801 b Fh(void)27 b(rl_free_keymap)e
+Fg(\()p Ff(Keymap)15 b(k)o(eymap)p Fg(\))195 604 y Ft(F)l(ree)g(all)g
+(storage)f(asso)q(ciated)h(with)f Fk(k)o(eymap)p Ft(.)21
b(This)15 b(calls)f Fs(rl_discard_keymap)f Ft(to)i(free)g(sub-)195
-1286 y(ordindate)g(k)o(eymaps)g(and)g(macros.)1675 1379
+659 y(ordindate)g(k)o(eymaps)g(and)g(macros.)1675 750
y([F)l(unction])-1801 b Fh(int)27 b(rl_empty_keymap)e
-Fg(\()p Ff(Keymap)15 b(k)o(eymap)p Fg(\))195 1433 y Ft(Return)h
+Fg(\()p Ff(Keymap)15 b(k)o(eymap)p Fg(\))195 804 y Ft(Return)h
(non-zero)g(if)e(there)i(are)f(no)g(k)o(eys)g(b)q(ound)i(to)d
-(functions)h(in)h Fj(k)o(eymap)q Ft(;)f(zero)g(if)g(there)g(are)195
-1488 y(an)o(y)g(k)o(eys)g(b)q(ound.)137 1580 y(Readline)23
+(functions)h(in)h Fk(k)o(eymap)q Ft(;)f(zero)g(if)g(there)g(are)195
+859 y(an)o(y)g(k)o(eys)g(b)q(ound.)137 950 y(Readline)23
b(has)g(sev)o(eral)f(in)o(ternal)f(k)o(eymaps.)42 b(These)23
b(functions)f(allo)o(w)f(y)o(ou)h(to)g(c)o(hange)h(whic)o(h)75
-1635 y(k)o(eymap)15 b(is)g(activ)o(e.)1675 1727 y([F)l(unction])-1801
-b Fh(Keymap)27 b(rl_get_keymap)e Fg(\()p Ff(v)o(oid)p
-Fg(\))195 1782 y Ft(Returns)16 b(the)f(curren)o(tly)g(activ)o(e)f(k)o
-(eymap.)1675 1874 y([F)l(unction])-1801 b Fh(void)27
-b(rl_set_keymap)d Fg(\()p Ff(Keymap)16 b(k)o(eymap)p
-Fg(\))195 1929 y Ft(Mak)o(es)e Fj(k)o(eymap)j Ft(the)e(curren)o(tly)g
-(activ)o(e)f(k)o(eymap.)1675 2021 y([F)l(unction])-1801
+1005 y(k)o(eymap)15 b(is)g(activ)o(e.)k(This)14 b(is)h(one)g(w)o(a)o(y)
+g(to)f(switc)o(h)h(editing)f(mo)q(des,)h(for)g(example.)1675
+1095 y([F)l(unction])-1801 b Fh(Keymap)27 b(rl_get_keymap)e
+Fg(\()p Ff(v)o(oid)p Fg(\))195 1150 y Ft(Returns)16 b(the)f(curren)o
+(tly)g(activ)o(e)f(k)o(eymap.)1675 1240 y([F)l(unction])-1801
+b Fh(void)27 b(rl_set_keymap)d Fg(\()p Ff(Keymap)16 b(k)o(eymap)p
+Fg(\))195 1295 y Ft(Mak)o(es)e Fk(k)o(eymap)j Ft(the)e(curren)o(tly)g
+(activ)o(e)f(k)o(eymap.)1675 1386 y([F)l(unction])-1801
b Fh(Keymap)27 b(rl_get_keymap_by_name)f Fg(\()p Ff(const)16
-b(c)o(har)f(*name)p Fg(\))195 2076 y Ft(Return)i(the)g(k)o(eymap)f
-(matc)o(hing)g Fj(name)p Ft(.)24 b Fj(name)19 b Ft(is)d(one)h(whic)o(h)
-f(w)o(ould)g(b)q(e)i(supplied)f(in)f(a)g Fs(set)195 2131
+b(c)o(har)f(*name)p Fg(\))195 1440 y Ft(Return)i(the)g(k)o(eymap)f
+(matc)o(hing)g Fk(name)p Ft(.)24 b Fk(name)19 b Ft(is)d(one)h(whic)o(h)
+f(w)o(ould)g(b)q(e)i(supplied)f(in)f(a)g Fs(set)195 1495
y(keymap)e Ft(inputrc)i(line)e(\(see)i(Section)f(1.3)f([Readline)h
-(Init)g(File],)f(page)h(4\).)1675 2223 y([F)l(unction])-1801
+(Init)g(File],)f(page)h(4\).)1675 1586 y([F)l(unction])-1801
b Fh(char)27 b(*)f(rl_get_keymap_name)g Fg(\()p Ff(Keymap)15
-b(k)o(eymap)p Fg(\))195 2278 y Ft(Return)i(the)g(name)g(matc)o(hing)e
-Fj(k)o(eymap)p Ft(.)24 b Fj(name)19 b Ft(is)d(one)h(whic)o(h)f(w)o
-(ould)g(b)q(e)i(supplied)f(in)f(a)g Fs(set)195 2333 y(keymap)e
+b(k)o(eymap)p Fg(\))195 1640 y Ft(Return)i(the)g(name)g(matc)o(hing)e
+Fk(k)o(eymap)p Ft(.)24 b Fk(name)19 b Ft(is)d(one)h(whic)o(h)f(w)o
+(ould)g(b)q(e)i(supplied)f(in)f(a)g Fs(set)195 1695 y(keymap)e
Ft(inputrc)i(line)e(\(see)i(Section)f(1.3)f([Readline)h(Init)g(File],)f
-(page)h(4\).)75 2432 y Fi(2.4.3)30 b(Binding)20 b(Keys)75
-2506 y Ft(Key)e(sequences)g(are)e(asso)q(ciate)g(with)h(functions)g
-(through)f(the)h(k)o(eymap.)26 b(Readline)17 b(has)g(sev)o(eral)f(in-)
-75 2560 y(ternal)e(k)o(eymaps:)19 b Fs(emacs_standard_keymap)p
-Ft(,)11 b Fs(emacs_meta_keymap)p Ft(,)h Fs(emacs_ctlx_keymap)p
-Ft(,)g Fs(vi_)75 2615 y(movement_keymap)p Ft(,)20 b(and)i
-Fs(vi_insertion_keymap)p Ft(.)35 b Fs(emacs_standard_keymap)18
-b Ft(is)j(the)g(default,)75 2670 y(and)15 b(the)h(examples)f(in)g(this)
-f(man)o(ual)h(assume)g(that.)p eop end
-%%Page: 34 38
-TeXDict begin 34 37 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)14
-b(with)g(GNU)h(Readline)842 b(34)137 149 y(Since)15 b
+(page)h(4\).)1675 1786 y([F)l(unction])-1801 b Fh(int)27
+b(rl_set_keymap_name)e Fg(\()p Ff(const)16 b(c)o(har)g(*name,)f(Keymap)
+h(k)o(eymap)p Fg(\))195 1840 y Ft(Set)h(the)g(name)f(of)h
+Fk(k)o(eymap)p Ft(.)24 b(This)16 b(name)h(will)f(then)h(b)q(e)g
+Fs(")p Ft(registered)p Fs(")f Ft(and)h(a)o(v)m(ailable)e(for)i(use)195
+1895 y(in)g(a)g Fs(set)e(keymap)i Ft(inputrc)g(directiv)o(e)g(see)h
+(Section)f(1.3)f([Readline)i(Init)f(File],)f(page)i(4\).)26
+b(The)195 1950 y Fk(name)14 b Ft(ma)o(y)c(not)h(b)q(e)h(one)f(of)g
+(Readline's)f(builtin)h(k)o(eymap)g(names;)h(y)o(ou)f(ma)o(y)f(not)h
+(add)g(a)g(di\013eren)o(t)195 2005 y(name)18 b(for)f(one)i(of)e
+(Readline's)h(builtin)f(k)o(eymaps.)28 b(Y)l(ou)18 b(ma)o(y)g(replace)g
+(the)g(name)g(asso)q(ciated)195 2060 y(with)d(a)g(giv)o(en)g(k)o(eymap)
+g(b)o(y)h(calling)e(this)h(function)h(more)f(than)g(once)h(with)f(the)h
+(same)f Fk(k)o(eymap)195 2114 y Ft(argumen)o(t.)24 b(Y)l(ou)17
+b(ma)o(y)f(asso)q(ciate)f(a)i(registered)f Fk(name)j
+Ft(with)d(a)h(new)g(k)o(eymap)f(b)o(y)h(calling)f(this)195
+2169 y(function)g(more)f(than)h(once)g(with)f(the)h(same)f
+Fk(name)k Ft(argumen)o(t.)i(There)16 b(is)f(no)h(w)o(a)o(y)f(to)g(remo)
+o(v)o(e)195 2224 y(a)i(named)h(k)o(eymap)f(once)h(the)g(name)g(has)f(b)
+q(een)i(registered.)26 b(Readline)18 b(will)f(mak)o(e)g(a)g(cop)o(y)g
+(of)195 2279 y Fk(name)p Ft(.)j(The)15 b(return)h(v)m(alue)f(is)g
+(greater)f(than)h(zero)g(unless)h Fk(name)i Ft(is)c(one)i(of)f
+(Readline's)g(builtin)195 2334 y(k)o(eymap)g(names)g(or)g
+Fk(k)o(eymap)h Ft(is)f(one)g(of)g(Readline's)g(builtin)f(k)o(eymaps.)75
+2432 y Fi(2.4.3)30 b(Binding)20 b(Keys)75 2506 y Ft(Key)c(sequences)g
+(are)f(asso)q(ciated)f(with)h(functions)g(through)g(the)g(k)o(eymap.)20
+b(Readline)15 b(has)h(sev)o(eral)e(in-)75 2560 y(ternal)g(k)o(eymaps:)
+19 b Fs(emacs_standard_keymap)p Ft(,)11 b Fs(emacs_meta_keymap)p
+Ft(,)h Fs(emacs_ctlx_keymap)p Ft(,)g Fs(vi_)75 2615 y(movement_keymap)p
+Ft(,)20 b(and)i Fs(vi_insertion_keymap)p Ft(.)35 b Fs
+(emacs_standard_keymap)18 b Ft(is)j(the)g(default,)75
+2670 y(and)15 b(the)h(examples)f(in)g(this)f(man)o(ual)h(assume)g
+(that.)p eop end
+%%Page: 38 42
+TeXDict begin 38 41 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)14
+b(with)g(GNU)h(Readline)842 b(38)137 149 y(Since)15 b
Fs(readline\(\))d Ft(installs)g(a)i(set)f(of)h(default)f(k)o(ey)h
(bindings)f(the)h(\014rst)g(time)f(it)g(is)g(called,)h(there)f(is)75
-204 y(alw)o(a)o(ys)i(the)h(danger)g(that)g(a)g(custom)g(binding)g
-(installed)f(b)q(efore)i(the)f(\014rst)g(call)g(to)f
-Fs(readline\(\))g Ft(will)75 259 y(b)q(e)f(o)o(v)o(erridden.)k(An)13
-b(alternate)f(mec)o(hanism)h(is)f(to)g(install)f(custom)i(k)o(ey)g
-(bindings)f(in)h(an)g(initialization)75 314 y(function)18
-b(assigned)h(to)e(the)i Fs(rl_startup_hook)e Ft(v)m(ariable)h(\(see)g
-(Section)g(2.3)g([Readline)h(V)l(ariables],)75 369 y(page)c(27\).)137
-434 y(These)h(functions)f(manage)f(k)o(ey)i(bindings.)1675
-521 y([F)l(unction])-1801 b Fh(int)27 b(rl_bind_key)d
-Fg(\()p Ff(in)o(t)16 b(k)o(ey)l(,)g(rl)p 720 521 15 3
-v 22 w(command)p 954 521 V 20 w(func)p 1067 521 V 22
-w(t)h(*function)p Fg(\))195 575 y Ft(Binds)g Fj(k)o(ey)j
-Ft(to)c Fj(function)g Ft(in)h(the)f(curren)o(tly)g(activ)o(e)g(k)o
+204 y(alw)o(a)o(ys)d(the)j(danger)f(that)f(a)h(custom)g(binding)g
+(installed)f(b)q(efore)h(the)g(\014rst)g(call)f(to)h
+Fs(readline\(\))e Ft(will)h(b)q(e)75 259 y(o)o(v)o(erridden.)24
+b(An)17 b(alternate)f(mec)o(hanism)g(that)h(can)f(a)o(v)o(oid)g(this)g
+(is)h(to)f(install)f(custom)h(k)o(ey)h(bindings)75 314
+y(in)22 b(an)g(initialization)d(function)j(assigned)f(to)h(the)g
+Fs(rl_startup_hook)e Ft(v)m(ariable)h(\(see)h(Section)g(2.3)75
+369 y([Readline)15 b(V)l(ariables],)f(page)h(30\).)137
+432 y(These)h(functions)f(manage)f(k)o(ey)i(bindings.)1675
+514 y([F)l(unction])-1801 b Fh(int)27 b(rl_bind_key)d
+Fg(\()p Ff(in)o(t)16 b(k)o(ey)l(,)g(rl)p 720 514 15 3
+v 22 w(command)p 954 514 V 20 w(func)p 1067 514 V 22
+w(t)h(*function)p Fg(\))195 568 y Ft(Binds)g Fk(k)o(ey)j
+Ft(to)c Fk(function)g Ft(in)h(the)f(curren)o(tly)g(activ)o(e)g(k)o
(eymap.)23 b(Returns)17 b(non-zero)g(in)f(the)h(case)195
-630 y(of)e(an)g(in)o(v)m(alid)f Fj(k)o(ey)p Ft(.)1675
-717 y([F)l(unction])-1801 b Fh(int)27 b(rl_bind_key_in_map)e
-Fg(\()p Ff(in)o(t)16 b(k)o(ey)l(,)g(rl)p 903 717 V 22
-w(command)p 1137 717 V 20 w(func)p 1250 717 V 22 w(t)h(*function,)283
-772 y(Keymap)e(map)p Fg(\))195 826 y Ft(Bind)g Fj(k)o(ey)k
-Ft(to)c Fj(function)g Ft(in)g Fj(map)p Ft(.)20 b(Returns)15
+623 y(of)e(an)g(in)o(v)m(alid)f Fk(k)o(ey)p Ft(.)1675
+704 y([F)l(unction])-1801 b Fh(int)27 b(rl_bind_key_in_map)e
+Fg(\()p Ff(in)o(t)16 b(k)o(ey)l(,)g(rl)p 903 704 V 22
+w(command)p 1137 704 V 20 w(func)p 1250 704 V 22 w(t)h(*function,)283
+759 y(Keymap)e(map)p Fg(\))195 814 y Ft(Bind)g Fk(k)o(ey)k
+Ft(to)c Fk(function)g Ft(in)g Fk(map)p Ft(.)20 b(Returns)15
b(non-zero)h(in)f(the)g(case)g(of)g(an)g(in)o(v)m(alid)g
-Fj(k)o(ey)p Ft(.)1675 913 y([F)l(unction])-1801 b Fh(int)27
+Fk(k)o(ey)p Ft(.)1675 895 y([F)l(unction])-1801 b Fh(int)27
b(rl_bind_key_if_unbound)f Fg(\()p Ff(in)o(t)15 b(k)o(ey)l(,)i(rl)p
-1008 913 V 21 w(command)p 1241 913 V 21 w(func)p 1355
-913 V 21 w(t)283 968 y(*function)p Fg(\))195 1023 y Ft(Binds)22
-b Fj(k)o(ey)k Ft(to)21 b Fj(function)h Ft(if)g(it)f(is)g(not)h(already)
+1008 895 V 21 w(command)p 1241 895 V 21 w(func)p 1355
+895 V 21 w(t)283 950 y(*function)p Fg(\))195 1005 y Ft(Binds)22
+b Fk(k)o(ey)k Ft(to)21 b Fk(function)h Ft(if)g(it)f(is)g(not)h(already)
f(b)q(ound)i(in)f(the)g(curren)o(tly)f(activ)o(e)h(k)o(eymap.)195
-1077 y(Returns)16 b(non-zero)f(in)g(the)h(case)f(of)f(an)i(in)o(v)m
-(alid)e Fj(k)o(ey)19 b Ft(or)c(if)f Fj(k)o(ey)19 b Ft(is)c(already)g(b)
-q(ound.)1675 1164 y([F)l(unction])-1801 b Fh(int)27 b
+1060 y(Returns)16 b(non-zero)f(in)g(the)h(case)f(of)f(an)i(in)o(v)m
+(alid)e Fk(k)o(ey)19 b Ft(or)c(if)f Fk(k)o(ey)19 b Ft(is)c(already)g(b)
+q(ound.)1675 1141 y([F)l(unction])-1801 b Fh(int)27 b
(rl_bind_key_if_unbound_in_)q(map)f Fg(\()p Ff(in)o(t)16
-b(k)o(ey)l(,)g(rl)p 1191 1164 V 21 w(command)p 1424 1164
-V 21 w(func)p 1538 1164 V 21 w(t)283 1219 y(*function,)f(Keymap)h(map)p
-Fg(\))195 1274 y Ft(Binds)e Fj(k)o(ey)j Ft(to)c Fj(function)h
-Ft(if)f(it)g(is)g(not)g(already)g(b)q(ound)i(in)e Fj(map)p
+b(k)o(ey)l(,)g(rl)p 1191 1141 V 21 w(command)p 1424 1141
+V 21 w(func)p 1538 1141 V 21 w(t)283 1196 y(*function,)f(Keymap)h(map)p
+Fg(\))195 1251 y Ft(Binds)e Fk(k)o(ey)j Ft(to)c Fk(function)h
+Ft(if)f(it)g(is)g(not)g(already)g(b)q(ound)i(in)e Fk(map)p
Ft(.)20 b(Returns)14 b(non-zero)g(in)f(the)h(case)195
-1328 y(of)h(an)g(in)o(v)m(alid)f Fj(k)o(ey)19 b Ft(or)c(if)g
-Fj(k)o(ey)k Ft(is)14 b(already)h(b)q(ound.)1675 1415
+1305 y(of)h(an)g(in)o(v)m(alid)f Fk(k)o(ey)19 b Ft(or)c(if)g
+Fk(k)o(ey)k Ft(is)14 b(already)h(b)q(ound.)1675 1387
y([F)l(unction])-1801 b Fh(int)27 b(rl_unbind_key)d Fg(\()p
-Ff(in)o(t)16 b(k)o(ey)p Fg(\))195 1470 y Ft(Bind)i Fj(k)o(ey)k
-Ft(to)c(the)g(n)o(ull)g(function)g(in)g(the)g(curren)o(tly)f(activ)o(e)
-h(k)o(eymap.)28 b(Returns)19 b(non-zero)f(in)195 1525
-y(case)d(of)g(error.)1675 1611 y([F)l(unction])-1801
+Ff(in)o(t)16 b(k)o(ey)p Fg(\))195 1442 y Ft(Bind)h Fk(k)o(ey)k
+Ft(to)c(the)g(n)o(ull)f(function)h(in)g(the)g(curren)o(tly)g(activ)o(e)
+f(k)o(eymap.)25 b(This)17 b(is)f(not)h(the)g(same)195
+1496 y(as)e(binding)g(it)f(to)h Fs(self-insert)p Ft(.)j(Returns)e
+(non-zero)f(in)h(case)f(of)f(error.)1675 1578 y([F)l(unction])-1801
b Fh(int)27 b(rl_unbind_key_in_map)e Fg(\()p Ff(in)o(t)16
-b(k)o(ey)l(,)h(Keymap)f(map)p Fg(\))195 1666 y Ft(Bind)f
-Fj(k)o(ey)k Ft(to)c(the)g(n)o(ull)g(function)g(in)g Fj(map)p
-Ft(.)20 b(Returns)15 b(non-zero)h(in)f(case)g(of)g(error.)1675
-1753 y([F)l(unction])-1801 b Fh(int)27 b(rl_unbind_function_in_map)f
-Fg(\()p Ff(rl)p 911 1753 V 21 w(command)p 1144 1753 V
-20 w(func)p 1257 1753 V 22 w(t)17 b(*function,)283 1807
-y(Keymap)e(map)p Fg(\))195 1862 y Ft(Un)o(bind)h(all)e(k)o(eys)h(that)f
-(execute)i Fj(function)f Ft(in)g Fj(map)p Ft(.)1675 1949
-y([F)l(unction])-1801 b Fh(int)27 b(rl_unbind_command_in_map)f
-Fg(\()p Ff(const)16 b(c)o(har)f(*command,)g(Keymap)283
-2004 y(map)p Fg(\))195 2058 y Ft(Un)o(bind)h(all)e(k)o(eys)h(that)f
-(are)h(b)q(ound)h(to)f Fj(command)i Ft(in)e Fj(map)p
-Ft(.)1675 2145 y([F)l(unction])-1801 b Fh(int)27 b(rl_bind_keyseq)d
-Fg(\()p Ff(const)16 b(c)o(har)g(*k)o(eyseq,)h(rl)p 1060
-2145 V 21 w(command)p 1293 2145 V 20 w(func)p 1406 2145
-V 22 w(t)283 2200 y(*function)p Fg(\))195 2255 y Ft(Bind)22
-b(the)f(k)o(ey)h(sequence)h(represen)o(ted)f(b)o(y)f(the)h(string)e
-Fj(k)o(eyseq)j Ft(to)e(the)g(function)g Fj(function)p
-Ft(,)195 2309 y(b)q(eginning)14 b(in)g(the)g(curren)o(t)g(k)o(eymap.)20
-b(This)13 b(mak)o(es)h(new)g(k)o(eymaps)g(as)g(necessary)l(.)20
-b(The)14 b(return)195 2364 y(v)m(alue)h(is)g(non-zero)h(if)e
-Fj(k)o(eyseq)j Ft(is)d(in)o(v)m(alid.)1675 2451 y([F)l(unction])-1801
-b Fh(int)27 b(rl_bind_keyseq_in_map)f Fg(\()p Ff(const)16
-b(c)o(har)f(*k)o(eyseq,)283 2506 y(rl)p 320 2506 V 21
-w(command)p 553 2506 V 20 w(func)p 666 2506 V 22 w(t)i(*function,)f
-(Keymap)f(map)p Fg(\))195 2560 y Ft(Bind)e(the)f(k)o(ey)h(sequence)h
-(represen)o(ted)f(b)o(y)f(the)h(string)e Fj(k)o(eyseq)j
-Ft(to)e(the)g(function)h Fj(function)p Ft(.)18 b(This)195
-2615 y(mak)o(es)c(new)h(k)o(eymaps)f(as)g(necessary)l(.)20
-b(Initial)14 b(bindings)g(are)h(p)q(erformed)f(in)h Fj(map)p
-Ft(.)k(The)c(return)195 2670 y(v)m(alue)g(is)g(non-zero)h(if)e
-Fj(k)o(eyseq)j Ft(is)d(in)o(v)m(alid.)p eop end
-%%Page: 35 39
-TeXDict begin 35 38 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)14
-b(with)g(GNU)h(Readline)842 b(35)1675 149 y([F)l(unction])-1801
+b(k)o(ey)l(,)h(Keymap)f(map)p Fg(\))195 1632 y Ft(Bind)26
+b Fk(k)o(ey)j Ft(to)24 b(the)i(n)o(ull)e(function)i(in)f
+Fk(map)p Ft(.)50 b(This)25 b(is)g(not)f(the)i(same)f(as)g(binding)g(it)
+g(to)195 1687 y Fs(self-insert)p Ft(.)18 b(Returns)e(non-zero)g(in)f
+(case)g(of)g(error.)1675 1769 y([F)l(unction])-1801 b
+Fh(int)27 b(rl_unbind_function_in_map)f Fg(\()p Ff(rl)p
+911 1769 V 21 w(command)p 1144 1769 V 20 w(func)p 1257
+1769 V 22 w(t)17 b(*function,)283 1823 y(Keymap)e(map)p
+Fg(\))195 1878 y Ft(Un)o(bind)h(all)e(k)o(eys)h(that)f(execute)i
+Fk(function)f Ft(in)g Fk(map)p Ft(.)1675 1959 y([F)l(unction])-1801
+b Fh(int)27 b(rl_unbind_command_in_map)f Fg(\()p Ff(const)16
+b(c)o(har)f(*command,)g(Keymap)283 2014 y(map)p Fg(\))195
+2069 y Ft(Un)o(bind)h(all)e(k)o(eys)h(that)f(are)h(b)q(ound)h(to)f
+Fk(command)i Ft(in)e Fk(map)p Ft(.)1675 2150 y([F)l(unction])-1801
+b Fh(int)27 b(rl_bind_keyseq)d Fg(\()p Ff(const)16 b(c)o(har)g(*k)o
+(eyseq,)h(rl)p 1060 2150 V 21 w(command)p 1293 2150 V
+20 w(func)p 1406 2150 V 22 w(t)283 2205 y(*function)p
+Fg(\))195 2260 y Ft(Bind)22 b(the)f(k)o(ey)h(sequence)h(represen)o(ted)
+f(b)o(y)f(the)h(string)e Fk(k)o(eyseq)j Ft(to)e(the)g(function)g
+Fk(function)p Ft(,)195 2315 y(b)q(eginning)14 b(in)g(the)g(curren)o(t)g
+(k)o(eymap.)20 b(This)13 b(mak)o(es)h(new)g(k)o(eymaps)g(as)g
+(necessary)l(.)20 b(The)14 b(return)195 2370 y(v)m(alue)h(is)g
+(non-zero)h(if)e Fk(k)o(eyseq)j Ft(is)d(in)o(v)m(alid.)1675
+2451 y([F)l(unction])-1801 b Fh(int)27 b(rl_bind_keyseq_in_map)f
+Fg(\()p Ff(const)16 b(c)o(har)f(*k)o(eyseq,)283 2506
+y(rl)p 320 2506 V 21 w(command)p 553 2506 V 20 w(func)p
+666 2506 V 22 w(t)i(*function,)f(Keymap)f(map)p Fg(\))195
+2560 y Ft(Bind)j(the)g(k)o(ey)g(sequence)h(represen)o(ted)g(b)o(y)e
+(the)h(string)f Fk(k)o(eyseq)i Ft(to)f(the)g(function)f
+Fk(function)h Ft(in)195 2615 y Fk(map)p Ft(.)j(This)16
+b(mak)o(es)f(new)h(k)o(eymaps)f(as)g(necessary)l(.)22
+b(Initial)15 b(bindings)h(are)f(p)q(erformed)h(in)g Fk(map)p
+Ft(.)195 2670 y(The)f(return)h(v)m(alue)f(is)g(non-zero)g(if)g
+Fk(k)o(eyseq)h Ft(is)f(in)o(v)m(alid.)p eop end
+%%Page: 39 43
+TeXDict begin 39 42 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)14
+b(with)g(GNU)h(Readline)842 b(39)1675 149 y([F)l(unction])-1801
b Fh(int)27 b(rl_set_key)d Fg(\()p Ff(const)16 b(c)o(har)f(*k)o(eyseq,)
i(rl)p 955 149 15 3 v 21 w(command)p 1188 149 V 21 w(func)p
1302 149 V 21 w(t)g(*function,)283 204 y(Keymap)e(map)p
Fg(\))195 259 y Ft(Equiv)m(alen)o(t)g(to)f Fs(rl_bind_keyseq_in_map)p
-Ft(.)1675 344 y([F)l(unction])-1801 b Fh(int)27 b
+Ft(.)1675 341 y([F)l(unction])-1801 b Fh(int)27 b
(rl_bind_keyseq_if_unbound)f Fg(\()p Ff(const)16 b(c)o(har)g(*k)o
-(eyseq,)283 399 y(rl)p 320 399 V 21 w(command)p 553 399
-V 20 w(func)p 666 399 V 22 w(t)h(*function)p Fg(\))195
-453 y Ft(Binds)h Fj(k)o(eyseq)h Ft(to)e Fj(function)g
+(eyseq,)283 396 y(rl)p 320 396 V 21 w(command)p 553 396
+V 20 w(func)p 666 396 V 22 w(t)h(*function)p Fg(\))195
+451 y Ft(Binds)h Fk(k)o(eyseq)h Ft(to)e Fk(function)g
Ft(if)h(it)f(is)g(not)g(already)g(b)q(ound)i(in)f(the)f(curren)o(tly)h
-(activ)o(e)f(k)o(eymap.)195 508 y(Returns)f(non-zero)f(in)g(the)h(case)
-f(of)f(an)i(in)o(v)m(alid)e Fj(k)o(eyseq)i Ft(or)f(if)g
-Fj(k)o(eyseq)h Ft(is)f(already)f(b)q(ound.)1675 593 y([F)l(unction])
+(activ)o(e)f(k)o(eymap.)195 505 y(Returns)f(non-zero)f(in)g(the)h(case)
+f(of)f(an)i(in)o(v)m(alid)e Fk(k)o(eyseq)i Ft(or)f(if)g
+Fk(k)o(eyseq)h Ft(is)f(already)f(b)q(ound.)1675 587 y([F)l(unction])
-1801 b Fh(int)27 b(rl_bind_keyseq_if_unbound_)q(in_map)f
-Fg(\()p Ff(const)16 b(c)o(har)g(*k)o(eyseq,)283 648 y(rl)p
-320 648 V 21 w(command)p 553 648 V 20 w(func)p 666 648
-V 22 w(t)h(*function,)f(Keymap)f(map)p Fg(\))195 703
-y Ft(Binds)h Fj(k)o(eyseq)h Ft(to)f Fj(function)f Ft(if)h(it)f(is)h
-(not)f(already)g(b)q(ound)i(in)f Fj(map)p Ft(.)22 b(Returns)17
-b(non-zero)f(in)g(the)195 757 y(case)f(of)g(an)g(in)o(v)m(alid)g
-Fj(k)o(eyseq)h Ft(or)f(if)f Fj(k)o(eyseq)i Ft(is)f(already)g(b)q(ound.)
-1675 842 y([F)l(unction])-1801 b Fh(int)27 b(rl_generic_bind)e
+Fg(\()p Ff(const)16 b(c)o(har)g(*k)o(eyseq,)283 642 y(rl)p
+320 642 V 21 w(command)p 553 642 V 20 w(func)p 666 642
+V 22 w(t)h(*function,)f(Keymap)f(map)p Fg(\))195 697
+y Ft(Binds)h Fk(k)o(eyseq)h Ft(to)f Fk(function)f Ft(if)h(it)f(is)h
+(not)f(already)g(b)q(ound)i(in)f Fk(map)p Ft(.)22 b(Returns)17
+b(non-zero)f(in)g(the)195 752 y(case)f(of)g(an)g(in)o(v)m(alid)g
+Fk(k)o(eyseq)h Ft(or)f(if)f Fk(k)o(eyseq)i Ft(is)f(already)g(b)q(ound.)
+1675 834 y([F)l(unction])-1801 b Fh(int)27 b(rl_generic_bind)e
Fg(\()p Ff(in)o(t)15 b(t)o(yp)q(e,)i(const)g(c)o(har)e(*k)o(eyseq,)i(c)
-o(har)e(*data,)283 897 y(Keymap)g(map)p Fg(\))195 952
+o(har)e(*data,)283 888 y(Keymap)g(map)p Fg(\))195 943
y Ft(Bind)f(the)f(k)o(ey)h(sequence)h(represen)o(ted)e(b)o(y)h(the)g
-(string)e Fj(k)o(eyseq)j Ft(to)d(the)i(arbitrary)e(p)q(oin)o(ter)h
-Fj(data)p Ft(.)195 1007 y Fj(t)o(yp)q(e)k Ft(sa)o(ys)c(what)h(kind)g
-(of)g(data)g(is)f(p)q(oin)o(ted)i(to)e(b)o(y)h Fj(data)p
+(string)e Fk(k)o(eyseq)j Ft(to)d(the)i(arbitrary)e(p)q(oin)o(ter)h
+Fk(data)p Ft(.)195 998 y Fk(t)o(yp)q(e)k Ft(sa)o(ys)c(what)h(kind)g(of)
+g(data)g(is)f(p)q(oin)o(ted)i(to)e(b)o(y)h Fk(data)p
Ft(;)g(this)g(can)g(b)q(e)h(a)f(function)g(\()p Fs(ISFUNC)p
-Ft(\),)e(a)195 1061 y(macro)i(\()p Fs(ISMACR)p Ft(\),)f(or)h(a)h(k)o
+Ft(\),)e(a)195 1053 y(macro)i(\()p Fs(ISMACR)p Ft(\),)f(or)h(a)h(k)o
(eymap)f(\()p Fs(ISKMAP)p Ft(\).)k(This)d(mak)o(es)f(new)h(k)o(eymaps)f
-(as)h(necessary)l(.)20 b(The)195 1116 y(initial)13 b(k)o(eymap)i(in)g
-(whic)o(h)g(to)g(do)g(bindings)g(is)g Fj(map)p Ft(.)1675
-1201 y([F)l(unction])-1801 b Fh(int)27 b(rl_parse_and_bind)e
-Fg(\()p Ff(c)o(har)15 b(*line)p Fg(\))195 1256 y Ft(P)o(arse)f
-Fj(line)j Ft(as)d(if)g(it)g(had)h(b)q(een)h(read)f(from)f(the)g
+(as)h(necessary)l(.)20 b(The)195 1108 y(initial)c(k)o(eymap)i(in)g
+(whic)o(h)g(to)f(do)h(bindings)g(is)f Fk(map)p Ft(.)29
+b(Returns)18 b(non-zero)g(in)g(the)g(case)g(of)g(an)195
+1162 y(in)o(v)m(alid)c Fk(k)o(eyseq)p Ft(,)h(zero)g(otherwise.)1675
+1244 y([F)l(unction])-1801 b Fh(int)27 b(rl_parse_and_bind)e
+Fg(\()p Ff(c)o(har)15 b(*line)p Fg(\))195 1299 y Ft(P)o(arse)f
+Fk(line)j Ft(as)d(if)g(it)g(had)h(b)q(een)h(read)f(from)f(the)g
Fs(inputrc)g Ft(\014le)h(and)g(p)q(erform)f(an)o(y)h(k)o(ey)f(bindings)
-195 1311 y(and)h(v)m(ariable)g(assignmen)o(ts)f(found)i(\(see)f
+195 1354 y(and)h(v)m(ariable)g(assignmen)o(ts)f(found)i(\(see)f
(Section)g(1.3)f([Readline)h(Init)g(File],)f(page)h(4\).)1675
-1395 y([F)l(unction])-1801 b Fh(int)27 b(rl_read_init_file)e
+1436 y([F)l(unction])-1801 b Fh(int)27 b(rl_read_init_file)e
Fg(\()p Ff(const)16 b(c)o(har)f(*\014lename)p Fg(\))195
-1450 y Ft(Read)h(k)o(eybindings)g(and)g(v)m(ariable)f(assignmen)o(ts)g
-(from)g Fj(\014lename)j Ft(\(see)e(Section)f(1.3)g([Readline)195
-1505 y(Init)g(File],)f(page)h(4\).)75 1600 y Fi(2.4.4)30
+1491 y Ft(Read)h(k)o(eybindings)g(and)g(v)m(ariable)f(assignmen)o(ts)g
+(from)g Fk(\014lename)j Ft(\(see)e(Section)f(1.3)g([Readline)195
+1546 y(Init)g(File],)f(page)h(4\).)75 1638 y Fi(2.4.4)30
b(Asso)r(ciating)20 b(F)-5 b(unction)20 b(Names)h(and)f(Bindings)75
-1673 y Ft(These)15 b(functions)g(allo)o(w)f(y)o(ou)g(to)h(\014nd)h(out)
+1712 y Ft(These)15 b(functions)g(allo)o(w)f(y)o(ou)g(to)h(\014nd)h(out)
e(what)h(k)o(eys)g(in)o(v)o(ok)o(e)f(named)h(functions)g(and)g(the)g
-(functions)75 1728 y(in)o(v)o(ok)o(ed)e(b)o(y)h(a)f(particular)f(k)o
+(functions)75 1767 y(in)o(v)o(ok)o(ed)e(b)o(y)h(a)f(particular)f(k)o
(ey)i(sequence.)21 b(Y)l(ou)14 b(ma)o(y)f(also)f(asso)q(ciate)h(a)h
-(new)g(function)f(name)h(with)f(an)75 1783 y(arbitrary)h(function.)1675
-1868 y([F)l(unction])-1801 b Fh(rl_command_func_t)29
+(new)g(function)f(name)h(with)f(an)75 1821 y(arbitrary)h(function.)1675
+1903 y([F)l(unction])-1801 b Fh(rl_command_func_t)29
b(*)d(rl_named_function)f Fg(\()p Ff(const)16 b(c)o(har)g(*name)p
-Fg(\))195 1922 y Ft(Return)g(the)f(function)g(with)g(name)g
-Fj(name)p Ft(.)1675 2007 y([F)l(unction])-1801 b Fh(rl_command_func_t)
-29 b(*)d(rl_function_of_keyseq)g Fg(\()p Ff(const)16
-b(c)o(har)283 2062 y(*k)o(eyseq,)g(Keymap)g(map,)g(in)o(t)g(*t)o(yp)q
-(e)p Fg(\))195 2117 y Ft(Return)h(the)f(function)g(in)o(v)o(ok)o(ed)g
-(b)o(y)g Fj(k)o(eyseq)h Ft(in)f(k)o(eymap)g Fj(map)p
-Ft(.)23 b(If)17 b Fj(map)g Ft(is)f Fs(NULL)p Ft(,)g(the)g(curren)o(t)
-195 2172 y(k)o(eymap)i(is)g(used.)31 b(If)18 b Fj(t)o(yp)q(e)j
-Ft(is)d(not)h Fs(NULL)p Ft(,)f(the)g(t)o(yp)q(e)h(of)f(the)h(ob)s(ject)
-f(is)g(returned)h(in)f(the)g Fs(int)195 2226 y Ft(v)m(ariable)d(it)f(p)
-q(oin)o(ts)h(to)f(\(one)h(of)g Fs(ISFUNC)p Ft(,)f Fs(ISKMAP)p
-Ft(,)g(or)h Fs(ISMACR)p Ft(\).)1675 2311 y([F)l(unction])-1801
-b Fh(char)27 b(**)f(rl_invoking_keyseqs)g Fg(\()p Ff(rl)p
-859 2311 V 21 w(command)p 1092 2311 V 20 w(func)p 1205
-2311 V 22 w(t)17 b(*function)p Fg(\))195 2366 y Ft(Return)f(an)g(arra)o
-(y)e(of)h(strings)g(represen)o(ting)g(the)h(k)o(ey)f(sequences)i(used)f
-(to)f(in)o(v)o(ok)o(e)g Fj(function)g Ft(in)195 2421
-y(the)g(curren)o(t)g(k)o(eymap.)1675 2506 y([F)l(unction])-1801
-b Fh(char)27 b(**)f(rl_invoking_keyseqs_in)q(_map)g Fg(\()p
-Ff(rl)p 1042 2506 V 21 w(command)p 1275 2506 V 20 w(func)p
-1388 2506 V 22 w(t)283 2560 y(*function,)15 b(Keymap)h(map)p
-Fg(\))195 2615 y Ft(Return)g(an)g(arra)o(y)e(of)h(strings)g(represen)o
-(ting)g(the)h(k)o(ey)f(sequences)i(used)f(to)f(in)o(v)o(ok)o(e)g
-Fj(function)g Ft(in)195 2670 y(the)g(k)o(eymap)g Fj(map)p
-Ft(.)p eop end
-%%Page: 36 40
-TeXDict begin 36 39 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)14
-b(with)g(GNU)h(Readline)842 b(36)1675 149 y([F)l(unction])-1801
-b Fh(void)27 b(rl_function_dumper)e Fg(\()p Ff(in)o(t)16
-b(readable)p Fg(\))195 204 y Ft(Prin)o(t)e(the)g(readline)h(function)f
-(names)h(and)f(the)h(k)o(ey)g(sequences)g(curren)o(tly)f(b)q(ound)i(to)
-e(them)h(to)195 259 y Fs(rl_outstream)p Ft(.)j(If)c Fj(readable)i
-Ft(is)d(non-zero,)h(the)g(list)e(is)i(formatted)e(in)i(suc)o(h)g(a)f(w)
-o(a)o(y)g(that)g(it)g(can)195 314 y(b)q(e)j(made)f(part)g(of)f(an)i
-Fs(inputrc)e Ft(\014le)h(and)g(re-read.)1675 407 y([F)l(unction])-1801
+Fg(\))195 1958 y Ft(Return)f(the)f(function)g(with)g(name)g
+Fk(name)p Ft(.)20 b Fk(name)d Ft(is)d(a)g(descriptiv)o(e)g(name)g
+(users)g(migh)o(t)f(use)i(in)195 2013 y(a)g(k)o(ey)g(binding.)1675
+2095 y([F)l(unction])-1801 b Fh(rl_command_func_t)29
+b(*)d(rl_function_of_keyseq)g Fg(\()p Ff(const)16 b(c)o(har)283
+2150 y(*k)o(eyseq,)g(Keymap)g(map,)g(in)o(t)g(*t)o(yp)q(e)p
+Fg(\))195 2204 y Ft(Return)f(the)g(function)f(in)o(v)o(ok)o(ed)g(b)o(y)
+g Fk(k)o(eyseq)i Ft(in)e(k)o(eymap)g Fk(map)p Ft(.)20
+b(If)15 b Fk(map)g Ft(is)f Fs(NULL)p Ft(,)g(this)g(uses)h(the)195
+2259 y(curren)o(t)i(k)o(eymap.)26 b(If)18 b Fk(t)o(yp)q(e)i
+Ft(is)d(not)g Fs(NULL)p Ft(,)g(this)f(returns)i(the)f(t)o(yp)q(e)h(of)f
+(the)g(ob)s(ject)g(in)g(the)g Fs(int)195 2314 y Ft(v)m(ariable)d(it)g
+(p)q(oin)o(ts)g(to)h(\(one)f(of)g Fs(ISFUNC)p Ft(,)g
+Fs(ISKMAP)p Ft(,)g(or)g Fs(ISMACR)p Ft(\).)k(It)d(tak)o(es)f(a)h
+Fs(")p Ft(translated)p Fs(")e Ft(k)o(ey)195 2369 y(sequence)j(and)g
+(should)f(not)g(b)q(e)h(used)f(if)g(the)g(k)o(ey)g(sequence)i(can)e
+(include)h(NUL.)1675 2451 y([F)l(unction])-1801 b Fh(rl_command_func_t)
+29 b(*)d(rl_function_of_keyseq_l)q(en)g Fg(\()p Ff(const)16
+b(c)o(har)283 2506 y(*k)o(eyseq,)g(size)p 560 2506 V
+22 w(t)h(len,)f(Keymap)g(map,)f(in)o(t)i(*t)o(yp)q(e)p
+Fg(\))195 2560 y Ft(Return)11 b(the)g(function)f(in)o(v)o(ok)o(ed)g(b)o
+(y)g Fk(k)o(eyseq)i Ft(of)e(length)g Fk(len)h Ft(in)f(k)o(eymap)g
+Fk(map)p Ft(.)19 b(Equiv)m(alen)o(t)10 b(to)f Fs(rl_)195
+2615 y(function_of_keyseq)i Ft(with)i(the)h(addition)f(of)g(the)h
+Fk(len)g Ft(parameter.)k(It)c(tak)o(es)f(a)g Fs(")p Ft(translated)p
+Fs(")195 2670 y Ft(k)o(ey)i(sequence)h(and)g(should)f(b)q(e)h(used)g
+(if)e(the)i(k)o(ey)f(sequence)h(can)f(include)h(NUL.)p
+eop end
+%%Page: 40 44
+TeXDict begin 40 43 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)14
+b(with)g(GNU)h(Readline)842 b(40)1675 149 y([F)l(unction])-1801
+b Fh(int)27 b(rl_trim_arg_from_keyseq)f Fg(\()p Ff(const)16
+b(c)o(har)f(*k)o(eyseq,)i(size)p 1339 149 15 3 v 22 w(t)g(len,)283
+204 y(Keymap)e(map)p Fg(\))195 259 y Ft(If)i(there)f(is)g(a)g(n)o
+(umeric)g(argumen)o(t)f(at)h(the)g(b)q(eginning)h(of)f
+Fk(k)o(eyseq)p Ft(,)g(p)q(ossibly)f(including)i(digits,)195
+314 y(return)12 b(the)h(index)g(of)f(the)g(\014rst)g(c)o(haracter)g(in)
+h Fk(k)o(eyseq)g Ft(follo)o(wing)d(the)j(n)o(umeric)f(argumen)o(t.)18
+b(This)195 369 y(can)11 b(b)q(e)g(used)g(to)f(skip)h(o)o(v)o(er)e(the)i
+(n)o(umeric)g(argumen)o(t)e(\(whic)o(h)i(is)f(a)o(v)m(ailable)f(as)h
+Fs(rl_numeric_arg)p Ft(\))195 423 y(while)15 b(tra)o(v)o(ersing)e(the)i
+(k)o(ey)g(sequence)i(that)d(in)o(v)o(ok)o(ed)h(the)g(curren)o(t)g
+(command.)1675 521 y([F)l(unction])-1801 b Fh(char)27
+b(**)f(rl_invoking_keyseqs)g Fg(\()p Ff(rl)p 859 521
+V 21 w(command)p 1092 521 V 20 w(func)p 1205 521 V 22
+w(t)17 b(*function)p Fg(\))195 576 y Ft(Return)f(an)g(arra)o(y)e(of)h
+(strings)g(represen)o(ting)g(the)h(k)o(ey)f(sequences)i(used)f(to)f(in)
+o(v)o(ok)o(e)g Fk(function)g Ft(in)195 631 y(the)g(curren)o(t)g(k)o
+(eymap.)1675 729 y([F)l(unction])-1801 b Fh(char)27 b(**)f
+(rl_invoking_keyseqs_in)q(_map)g Fg(\()p Ff(rl)p 1042
+729 V 21 w(command)p 1275 729 V 20 w(func)p 1388 729
+V 22 w(t)283 784 y(*function,)15 b(Keymap)h(map)p Fg(\))195
+838 y Ft(Return)g(an)g(arra)o(y)e(of)h(strings)g(represen)o(ting)g(the)
+h(k)o(ey)f(sequences)i(used)f(to)f(in)o(v)o(ok)o(e)g
+Fk(function)g Ft(in)195 893 y(the)g(k)o(eymap)g Fk(map)p
+Ft(.)1675 991 y([F)l(unction])-1801 b Fh(void)27 b(rl_print_keybinding)
+e Fg(\()p Ff(const)16 b(c)o(har)g(*name,)f(Keymap)h(map,)g(in)o(t)283
+1046 y(readable)p Fg(\))195 1101 y Ft(Prin)o(t)e(k)o(ey)g(sequences)i
+(b)q(ound)g(to)e(Readline)h(function)g(name)g Fk(name)i
+Ft(in)e(k)o(eymap)f Fk(map)p Ft(.)20 b(If)15 b Fk(map)195
+1156 y Ft(is)g(NULL,)h(this)f(uses)h(the)g(curren)o(t)f(k)o(eymap.)21
+b(If)16 b Fk(readable)h Ft(is)f(non-zero,)f(the)h(list)e(is)h
+(formatted)195 1210 y(in)f(suc)o(h)h(a)e(w)o(a)o(y)h(that)f(it)g(can)i
+(b)q(e)g(made)f(part)f(of)h(an)g Fs(inputrc)f Ft(\014le)i(and)f
+(re-read)g(to)g(recreate)g(the)195 1265 y(k)o(ey)h(binding.)1675
+1363 y([F)l(unction])-1801 b Fh(void)27 b(rl_function_dumper)e
+Fg(\()p Ff(in)o(t)16 b(readable)p Fg(\))195 1418 y Ft(Prin)o(t)h(the)h
+(Readline)g(function)g(names)g(and)g(the)g(k)o(ey)f(sequences)i(curren)
+o(tly)f(b)q(ound)h(to)e(them)195 1473 y(to)e Fs(rl_outstream)p
+Ft(.)k(If)d Fk(readable)i Ft(is)d(non-zero,)h(the)g(list)e(is)h
+(formatted)g(in)g(suc)o(h)h(a)f(w)o(a)o(y)g(that)g(it)195
+1527 y(can)g(b)q(e)h(made)f(part)g(of)g(an)g Fs(inputrc)f
+Ft(\014le)h(and)h(re-read.)1675 1625 y([F)l(unction])-1801
b Fh(void)27 b(rl_list_funmap_names)f Fg(\()p Ff(v)o(oid)p
-Fg(\))195 462 y Ft(Prin)o(t)14 b(the)h(names)h(of)e(all)h(bindable)g
+Fg(\))195 1680 y Ft(Prin)o(t)14 b(the)h(names)h(of)e(all)h(bindable)g
(Readline)g(functions)g(to)g Fs(rl_outstream)p Ft(.)1675
-554 y([F)l(unction])-1801 b Fh(const)27 b(char)g(**)f(rl_funmap_names)f
-Fg(\()p Ff(v)o(oid)p Fg(\))195 609 y Ft(Return)14 b(a)e(NULL)i
-(terminated)f(arra)o(y)e(of)i(kno)o(wn)g(function)f(names.)20
-b(The)13 b(arra)o(y)f(is)g(sorted.)19 b(The)195 664 y(arra)o(y)13
-b(itself)g(is)g(allo)q(cated,)g(but)h(not)g(the)g(strings)f(inside.)19
-b(Y)l(ou)14 b(should)g(free)g(the)g(arra)o(y)l(,)f(but)h(not)195
-719 y(the)h(p)q(oin)o(ters,)g(using)f Fs(free)h Ft(or)g
-Fs(rl_free)f Ft(when)i(y)o(ou)e(are)h(done.)1675 812
-y([F)l(unction])-1801 b Fh(int)27 b(rl_add_funmap_entry)e
-Fg(\()p Ff(const)16 b(c)o(har)g(*name,)f(rl)p 1165 812
-15 3 v 22 w(command)p 1399 812 V 20 w(func)p 1512 812
-V 21 w(t)283 867 y(*function)p Fg(\))195 921 y Ft(Add)i
-Fj(name)i Ft(to)d(the)g(list)f(of)h(bindable)h(Readline)g(command)f
-(names,)g(and)h(mak)o(e)f Fj(function)g Ft(the)195 976
-y(function)f(to)g(b)q(e)g(called)g(when)h Fj(name)i Ft(is)c(in)o(v)o
-(ok)o(ed.)75 1076 y Fi(2.4.5)30 b(Allo)n(wing)21 b(Undoing)75
-1150 y Ft(Supp)q(orting)d(the)g(undo)g(command)g(is)f(a)h(painless)f
-(thing,)h(and)g(mak)o(es)f(y)o(our)h(functions)f(m)o(uc)o(h)h(more)75
-1204 y(useful.)i(It)15 b(is)g(certainly)f(easy)h(to)g(try)f(something)h
-(if)f(y)o(ou)h(kno)o(w)g(y)o(ou)g(can)g(undo)h(it.)137
-1272 y(If)21 b(y)o(our)f(function)g(simply)g(inserts)g(text)f(once,)j
+1778 y([F)l(unction])-1801 b Fh(const)27 b(char)g(**)f(rl_funmap_names)
+f Fg(\()p Ff(v)o(oid)p Fg(\))195 1833 y Ft(Return)14
+b(a)e(NULL)i(terminated)f(arra)o(y)e(of)i(kno)o(wn)g(function)f(names.)
+20 b(The)13 b(arra)o(y)f(is)g(sorted.)19 b(The)195 1888
+y(arra)o(y)13 b(itself)g(is)g(allo)q(cated,)g(but)h(not)g(the)g
+(strings)f(inside.)19 b(Y)l(ou)14 b(should)g(free)g(the)g(arra)o(y)l(,)
+f(but)h(not)195 1942 y(the)h(p)q(oin)o(ters,)g(using)f
+Fs(free)h Ft(or)g Fs(rl_free)f Ft(when)i(y)o(ou)e(are)h(done.)1675
+2040 y([F)l(unction])-1801 b Fh(int)27 b(rl_add_funmap_entry)e
+Fg(\()p Ff(const)16 b(c)o(har)g(*name,)f(rl)p 1165 2040
+V 22 w(command)p 1399 2040 V 20 w(func)p 1512 2040 V
+21 w(t)283 2095 y(*function)p Fg(\))195 2150 y Ft(Add)i
+Fk(name)i Ft(to)d(the)g(list)f(of)h(bindable)h(Readline)g(command)f
+(names,)g(and)h(mak)o(e)f Fk(function)g Ft(the)195 2205
+y(function)11 b(to)f(b)q(e)i(called)e(when)i Fk(name)i
+Ft(is)c(in)o(v)o(ok)o(ed.)18 b(This)10 b(returns)h(the)g(index)h(of)e
+(the)h(newly-added)195 2259 y Fk(name)18 b Ft(in)d(the)g(arra)o(y)f(of)
+h(function)g(names.)75 2362 y Fi(2.4.5)30 b(Allo)n(wing)21
+b(Undoing)75 2435 y Ft(Supp)q(orting)d(the)g(undo)g(command)g(is)f(a)h
+(painless)f(thing,)h(and)g(mak)o(es)f(y)o(our)h(functions)f(m)o(uc)o(h)
+h(more)75 2490 y(useful.)i(It)15 b(is)g(certainly)f(easier)h(to)f(try)h
+(something)f(if)h(y)o(ou)g(kno)o(w)g(y)o(ou)g(can)g(undo)g(it.)137
+2560 y(If)21 b(y)o(our)f(function)g(simply)g(inserts)g(text)f(once,)j
(or)e(deletes)g(text)g(once,)i(and)f(uses)f Fs(rl_insert_)75
-1327 y(text\(\))13 b Ft(or)h Fs(rl_delete_text\(\))d
-Ft(to)j(do)f(it,)g(then)i(undoing)f(is)f(already)g(done)i(for)e(y)o(ou)
-h(automatically)l(.)137 1394 y(If)d(y)o(ou)f(do)g(m)o(ultiple)f
-(insertions)g(or)h(m)o(ultiple)f(deletions,)h(or)g(an)o(y)g(com)o
-(bination)f(of)h(these)g(op)q(erations,)75 1449 y(y)o(ou)19
-b(should)g(group)f(them)h(together)g(in)o(to)f(one)h(op)q(eration.)30
-b(This)19 b(is)f(done)i(with)e Fs(rl_begin_undo_)75 1504
-y(group\(\))c Ft(and)i Fs(rl_end_undo_group\(\))p Ft(.)137
-1572 y(The)g(t)o(yp)q(es)f(of)g(ev)o(en)o(ts)g(that)f(can)h(b)q(e)h
-(undone)g(are:)195 1628 y Fe(enum)i(undo_code)e({)j(UNDO_DELETE)o(,)d
-(UNDO_INSERT)o(,)g(UNDO_BEGIN,)g(UNDO_END)g(};)137 1696
+2615 y(text\(\))c Ft(or)f Fs(rl_delete_text\(\))g Ft(to)g(do)i(it,)e
+(then)i(Readline)g(do)q(es)g(the)f(undoing)h(for)e(y)o(ou)i(automati-)
+75 2670 y(cally)l(.)p eop end
+%%Page: 41 45
+TeXDict begin 41 44 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)14
+b(with)g(GNU)h(Readline)842 b(41)137 149 y(If)11 b(y)o(ou)f(do)g(m)o
+(ultiple)f(insertions)g(or)h(m)o(ultiple)f(deletions,)h(or)g(an)o(y)g
+(com)o(bination)f(of)h(these)g(op)q(erations,)75 204
+y(y)o(ou)19 b(should)g(group)f(them)h(together)g(in)o(to)f(one)h(op)q
+(eration.)30 b(This)19 b(is)f(done)i(with)e Fs(rl_begin_undo_)75
+259 y(group\(\))c Ft(and)i Fs(rl_end_undo_group\(\))p
+Ft(.)137 327 y(The)g(t)o(yp)q(es)f(of)g(ev)o(en)o(ts)g(Readline)g(can)g
+(undo)h(are:)195 385 y Fe(enum)i(undo_code)e({)j(UNDO_DELETE)o(,)d
+(UNDO_INSERT)o(,)g(UNDO_BEGIN,)g(UNDO_END)g(};)137 453
y Ft(Notice)f(that)f Fs(UNDO_DELETE)g Ft(means)h(to)g(insert)f(some)h
(text,)f(and)i Fs(UNDO_INSERT)d Ft(means)i(to)g(delete)75
-1750 y(some)e(text.)19 b(That)14 b(is,)f(the)h(undo)g(co)q(de)g(tells)f
+508 y(some)e(text.)19 b(That)14 b(is,)f(the)h(undo)g(co)q(de)g(tells)f
(what)g(to)h(undo,)g(not)f(ho)o(w)g(to)g(undo)i(it.)j
-Fs(UNDO_BEGIN)13 b Ft(and)75 1805 y Fs(UNDO_END)h Ft(are)h(tags)f
-(added)i(b)o(y)f Fs(rl_begin_undo_group\(\))d Ft(and)k
-Fs(rl_end_undo_group\(\))p Ft(.)1675 1898 y([F)l(unction])-1801
-b Fh(int)27 b(rl_begin_undo_group)e Fg(\()p Ff(v)o(oid)p
-Fg(\))195 1953 y Ft(Begins)15 b(sa)o(ving)g(undo)h(information)d(in)j
-(a)f(group)g(construct.)20 b(The)c(undo)g(information)e(usually)195
-2008 y(comes)21 b(from)f(calls)g(to)g Fs(rl_insert_text\(\))e
+Fs(UNDO_BEGIN)13 b Ft(and)75 563 y Fs(UNDO_END)e Ft(are)h(tags)g(added)
+h(b)o(y)f Fs(rl_begin_undo_group\(\))e Ft(and)i Fs
+(rl_end_undo_group\(\))p Ft(;)f(they)h(are)75 618 y(ho)o(w)j(Readline)g
+(delimits)f(groups)h(of)g(commands)g(that)f(should)h(b)q(e)h(undone)g
+(together.)1675 712 y([F)l(unction])-1801 b Fh(int)27
+b(rl_begin_undo_group)e Fg(\()p Ff(v)o(oid)p Fg(\))195
+767 y Ft(Begins)15 b(sa)o(ving)g(undo)h(information)d(in)j(a)f(group)g
+(construct.)20 b(The)c(undo)g(information)e(usually)195
+822 y(comes)21 b(from)f(calls)g(to)g Fs(rl_insert_text\(\))e
Ft(and)j Fs(rl_delete_text\(\))p Ft(,)f(but)h(could)f(b)q(e)i(the)195
-2063 y(result)15 b(of)f(calls)h(to)f Fs(rl_add_undo\(\))p
-Ft(.)1675 2155 y([F)l(unction])-1801 b Fh(int)27 b(rl_end_undo_group)e
-Fg(\()p Ff(v)o(oid)p Fg(\))195 2210 y Ft(Closes)14 b(the)g(curren)o(t)h
-(undo)g(group)f(started)g(with)f Fs(rl_begin_undo_group)g(\(\))p
-Ft(.)19 b(There)c(should)195 2265 y(b)q(e)h(one)f(call)g(to)f
+876 y(result)15 b(of)f(calls)h(to)f Fs(rl_add_undo\(\))p
+Ft(.)1675 971 y([F)l(unction])-1801 b Fh(int)27 b(rl_end_undo_group)e
+Fg(\()p Ff(v)o(oid)p Fg(\))195 1026 y Ft(Closes)15 b(the)h(curren)o(t)g
+(undo)h(group)f(started)f(with)g Fs(rl_begin_undo_group\(\))p
+Ft(.)20 b(There)c(should)195 1081 y(b)q(e)g(one)f(call)g(to)f
Fs(rl_end_undo_group\(\))f Ft(for)h(eac)o(h)h(call)g(to)f
-Fs(rl_begin_undo_group\(\))p Ft(.)1675 2358 y([F)l(unction])-1801
+Fs(rl_begin_undo_group\(\))p Ft(.)1675 1175 y([F)l(unction])-1801
b Fh(void)27 b(rl_add_undo)d Fg(\()p Ff(en)o(um)15 b(undo)p
-780 2358 V 21 w(co)q(de)i(what,)f(in)o(t)g(start,)g(in)o(t)h(end,)f(c)o
-(har)283 2413 y(*text)p Fg(\))195 2467 y Ft(Remem)o(b)q(er)i(ho)o(w)e
-(to)h(undo)g(an)g(ev)o(en)o(t)g(\(according)f(to)h Fj(what)q
-Ft(\).)24 b(The)17 b(a\013ected)g(text)f(runs)i(from)195
-2522 y Fj(start)d Ft(to)g Fj(end)p Ft(,)g(and)g(encompasses)h
-Fj(text)p Ft(.)1675 2615 y([F)l(unction])-1801 b Fh(void)27
+780 1175 15 3 v 21 w(co)q(de)i(what,)f(in)o(t)g(start,)g(in)o(t)h(end,)
+f(c)o(har)283 1230 y(*text)p Fg(\))195 1285 y Ft(Remem)o(b)q(er)i(ho)o
+(w)e(to)h(undo)g(an)g(ev)o(en)o(t)g(\(according)f(to)h
+Fk(what)q Ft(\).)24 b(The)17 b(a\013ected)g(text)f(runs)i(from)195
+1339 y Fk(start)d Ft(to)g Fk(end)p Ft(,)g(and)g(encompasses)h
+Fk(text)p Ft(.)1675 1434 y([F)l(unction])-1801 b Fh(void)27
b(rl_free_undo_list)e Fg(\()p Ff(v)o(oid)p Fg(\))195
-2670 y Ft(F)l(ree)15 b(the)h(existing)e(undo)h(list.)p
-eop end
-%%Page: 37 41
-TeXDict begin 37 40 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)14
-b(with)g(GNU)h(Readline)842 b(37)1675 149 y([F)l(unction])-1801
-b Fh(int)27 b(rl_do_undo)d Fg(\()p Ff(v)o(oid)p Fg(\))195
-204 y Ft(Undo)12 b(the)f(\014rst)g(thing)g(on)h(the)f(undo)h(list.)17
-b(Returns)12 b Fs(0)g Ft(if)f(there)g(w)o(as)g(nothing)g(to)f(undo,)j
-(non-zero)195 259 y(if)i(something)f(w)o(as)g(undone.)137
-349 y(Finally)l(,)g(if)h(y)o(ou)g(neither)h(insert)f(nor)g(delete)h
-(text,)f(but)g(directly)g(mo)q(dify)g(the)h(existing)e(text)i(\(e.g.,)
-75 404 y(c)o(hange)j(its)g(case\),)h(call)e Fs(rl_modifying\(\))g
+1489 y Ft(F)l(ree)15 b(the)h(existing)e(undo)h(list.)1675
+1583 y([F)l(unction])-1801 b Fh(int)27 b(rl_do_undo)d
+Fg(\()p Ff(v)o(oid)p Fg(\))195 1638 y Ft(Undo)12 b(the)f(\014rst)g
+(thing)g(on)h(the)f(undo)h(list.)17 b(Returns)12 b Fs(0)g
+Ft(if)f(there)g(w)o(as)g(nothing)g(to)f(undo,)j(non-zero)195
+1693 y(if)i(something)f(w)o(as)g(undone.)137 1787 y(Finally)l(,)g(if)h
+(y)o(ou)g(neither)h(insert)f(nor)g(delete)h(text,)f(but)g(directly)g
+(mo)q(dify)g(the)h(existing)e(text)i(\(e.g.,)75 1842
+y(c)o(hange)j(its)g(case\),)h(call)e Fs(rl_modifying\(\))g
Ft(once,)i(just)f(b)q(efore)h(y)o(ou)f(mo)q(dify)g(the)g(text.)32
-b(Y)l(ou)20 b(m)o(ust)75 459 y(supply)15 b(the)h(indices)f(of)g(the)g
-(text)g(range)g(that)f(y)o(ou)h(are)g(going)f(to)h(mo)q(dify)l(.)1675
-549 y([F)l(unction])-1801 b Fh(int)27 b(rl_modifying)d
+b(Y)l(ou)20 b(m)o(ust)75 1897 y(supply)d(the)f(indices)g(of)g(the)g
+(text)g(range)g(that)g(y)o(ou)g(are)g(going)f(to)h(mo)q(dify)l(.)22
+b(Readline)17 b(will)e(create)h(an)75 1952 y(undo)g(group)f(for)f(y)o
+(ou.)1675 2046 y([F)l(unction])-1801 b Fh(int)27 b(rl_modifying)d
Fg(\()p Ff(in)o(t)16 b(start,)g(in)o(t)g(end)p Fg(\))195
-604 y Ft(T)l(ell)k(Readline)g(to)f(sa)o(v)o(e)h(the)g(text)g(b)q(et)o
-(w)o(een)g Fj(start)g Ft(and)g Fj(end)j Ft(as)c(a)h(single)f(undo)i
-(unit.)34 b(It)20 b(is)195 658 y(assumed)15 b(that)g(y)o(ou)g(will)f
-(subsequen)o(tly)h(mo)q(dify)g(that)f(text.)75 757 y
-Fi(2.4.6)30 b(Redispla)n(y)1675 854 y Ft([F)l(unction])-1801
+2101 y Ft(T)l(ell)k(Readline)g(to)f(sa)o(v)o(e)h(the)g(text)g(b)q(et)o
+(w)o(een)g Fk(start)g Ft(and)g Fk(end)j Ft(as)c(a)h(single)f(undo)i
+(unit.)34 b(It)20 b(is)195 2156 y(assumed)15 b(that)g(y)o(ou)g(will)f
+(subsequen)o(tly)h(mo)q(dify)g(that)f(text.)75 2257 y
+Fi(2.4.6)30 b(Redispla)n(y)1675 2356 y Ft([F)l(unction])-1801
b Fh(void)27 b(rl_redisplay)d Fg(\()p Ff(v)o(oid)p Fg(\))195
-908 y Ft(Change)19 b(what's)f(displa)o(y)o(ed)g(on)h(the)g(screen)g(to)
-f(re\015ect)i(the)f(curren)o(t)f(con)o(ten)o(ts)h(of)f
-Fs(rl_line_)195 963 y(buffer)p Ft(.)1675 1053 y([F)l(unction])-1801
+2411 y Ft(Change)19 b(what's)f(displa)o(y)o(ed)g(on)h(the)g(screen)g
+(to)f(re\015ect)i(the)f(curren)o(t)f(con)o(ten)o(ts)h(of)f
+Fs(rl_line_)195 2466 y(buffer)p Ft(.)1675 2560 y([F)l(unction])-1801
b Fh(int)27 b(rl_forced_update_display)f Fg(\()p Ff(v)o(oid)p
-Fg(\))195 1108 y Ft(F)l(orce)20 b(the)g(line)f(to)g(b)q(e)i(up)q(dated)
+Fg(\))195 2615 y Ft(F)l(orce)20 b(the)g(line)f(to)g(b)q(e)i(up)q(dated)
f(and)g(redispla)o(y)o(ed,)g(whether)g(or)g(not)f(Readline)h(thinks)g
-(the)195 1163 y(screen)c(displa)o(y)e(is)h(correct.)1675
-1253 y([F)l(unction])-1801 b Fh(int)27 b(rl_on_new_line)d
-Fg(\()p Ff(v)o(oid)p Fg(\))195 1308 y Ft(T)l(ell)14 b(the)h(up)q(date)h
-(functions)f(that)f(w)o(e)g(ha)o(v)o(e)h(mo)o(v)o(ed)f(on)o(to)g(a)h
-(new)g(\(empt)o(y\))f(line,)g(usually)h(after)195 1362
-y(outputting)f(a)h(newline.)1675 1453 y([F)l(unction])-1801
-b Fh(int)27 b(rl_on_new_line_with_prompt)f Fg(\()p Ff(v)o(oid)p
-Fg(\))195 1507 y Ft(T)l(ell)11 b(the)i(up)q(date)f(functions)g(that)f
-(w)o(e)h(ha)o(v)o(e)g(mo)o(v)o(ed)f(on)o(to)g(a)h(new)g(line,)g(with)g
-Fj(rl)p 1554 1507 14 2 v 19 w(prompt)h Ft(already)195
-1562 y(displa)o(y)o(ed.)19 b(This)14 b(could)g(b)q(e)h(used)g(b)o(y)f
-(applications)f(that)h(w)o(an)o(t)f(to)h(output)g(the)g(prompt)g
-(string)195 1617 y(themselv)o(es,)f(but)h(still)e(need)j(Readline)f(to)
-f(kno)o(w)g(the)h(prompt)f(string)g(length)g(for)g(redispla)o(y)l(.)19
-b(It)195 1672 y(should)c(b)q(e)h(used)g(after)e(setting)h
-Fj(rl)p 796 1672 V 19 w(already)p 961 1672 V 19 w(prompted)p
-Ft(.)1675 1762 y([F)l(unction])-1801 b Fh(int)27 b
-(rl_clear_visible_line)f Fg(\()p Ff(v)o(oid)p Fg(\))195
-1817 y Ft(Clear)14 b(the)i(screen)f(lines)g(corresp)q(onding)g(to)g
-(the)g(curren)o(t)g(line's)g(con)o(ten)o(ts.)1675 1907
-y([F)l(unction])-1801 b Fh(int)27 b(rl_reset_line_state)e
-Fg(\()p Ff(v)o(oid)p Fg(\))195 1961 y Ft(Reset)18 b(the)f(displa)o(y)g
+(the)195 2670 y(screen)c(displa)o(y)e(is)h(correct.)p
+eop end
+%%Page: 42 46
+TeXDict begin 42 45 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)14
+b(with)g(GNU)h(Readline)842 b(42)1675 149 y([F)l(unction])-1801
+b Fh(int)27 b(rl_on_new_line)d Fg(\()p Ff(v)o(oid)p Fg(\))195
+204 y Ft(T)l(ell)14 b(the)h(up)q(date)h(functions)f(that)f(w)o(e)g(ha)o
+(v)o(e)h(mo)o(v)o(ed)f(on)o(to)g(a)h(new)g(\(empt)o(y\))f(line,)g
+(usually)h(after)195 259 y(outputting)f(a)h(newline.)1675
+347 y([F)l(unction])-1801 b Fh(int)27 b(rl_on_new_line_with_prompt)f
+Fg(\()p Ff(v)o(oid)p Fg(\))195 401 y Ft(T)l(ell)11 b(the)i(up)q(date)f
+(functions)g(that)f(w)o(e)h(ha)o(v)o(e)g(mo)o(v)o(ed)f(on)o(to)g(a)h
+(new)g(line,)g(with)g Fk(rl)p 1554 401 14 2 v 19 w(prompt)h
+Ft(already)195 456 y(displa)o(y)o(ed.)19 b(This)14 b(could)g(b)q(e)h
+(used)g(b)o(y)f(applications)f(that)h(w)o(an)o(t)f(to)h(output)g(the)g
+(prompt)g(string)195 511 y(themselv)o(es,)f(but)h(still)e(need)j
+(Readline)f(to)f(kno)o(w)g(the)h(prompt)f(string)g(length)g(for)g
+(redispla)o(y)l(.)19 b(It)195 566 y(should)c(b)q(e)h(used)g(after)e
+(setting)h Fk(rl)p 796 566 V 19 w(already)p 961 566 V
+19 w(prompted)p Ft(.)1675 654 y([F)l(unction])-1801 b
+Fh(int)27 b(rl_clear_visible_line)f Fg(\()p Ff(v)o(oid)p
+Fg(\))195 708 y Ft(Clear)14 b(the)i(screen)f(lines)g(corresp)q(onding)g
+(to)g(the)g(curren)o(t)g(line's)g(con)o(ten)o(ts.)1675
+796 y([F)l(unction])-1801 b Fh(int)27 b(rl_reset_line_state)e
+Fg(\()p Ff(v)o(oid)p Fg(\))195 851 y Ft(Reset)18 b(the)f(displa)o(y)g
(state)f(to)h(a)g(clean)g(state)g(and)g(redispla)o(y)g(the)g(curren)o
-(t)g(line)g(starting)f(on)h(a)195 2016 y(new)e(line.)1675
-2106 y([F)l(unction])-1801 b Fh(int)27 b(rl_crlf)c Fg(\()p
-Ff(v)o(oid)p Fg(\))195 2161 y Ft(Mo)o(v)o(e)14 b(the)h(cursor)g(to)g
+(t)g(line)g(starting)f(on)h(a)195 906 y(new)e(line.)1675
+993 y([F)l(unction])-1801 b Fh(int)27 b(rl_crlf)c Fg(\()p
+Ff(v)o(oid)p Fg(\))195 1048 y Ft(Mo)o(v)o(e)14 b(the)h(cursor)g(to)g
(the)g(start)f(of)h(the)g(next)g(screen)h(line.)1675
-2251 y([F)l(unction])-1801 b Fh(int)27 b(rl_show_char)d
-Fg(\()p Ff(in)o(t)16 b(c)p Fg(\))195 2306 y Ft(Displa)o(y)f(c)o
-(haracter)g Fj(c)20 b Ft(on)c Fs(rl_outstream)p Ft(.)21
+1136 y([F)l(unction])-1801 b Fh(int)27 b(rl_show_char)d
+Fg(\()p Ff(in)o(t)16 b(c)p Fg(\))195 1191 y Ft(Displa)o(y)f(c)o
+(haracter)g Fk(c)20 b Ft(on)c Fs(rl_outstream)p Ft(.)21
b(If)c(Readline)f(has)g(not)g(b)q(een)i(set)e(to)f(displa)o(y)h(meta)
-195 2361 y(c)o(haracters)c(directly)l(,)h(this)f(will)g(con)o(v)o(ert)g
+195 1245 y(c)o(haracters)c(directly)l(,)h(this)f(will)g(con)o(v)o(ert)g
(meta)h(c)o(haracters)f(to)g(a)h(meta-pre\014xed)g(k)o(ey)g(sequence.)
-195 2416 y(This)i(is)f(in)o(tended)i(for)f(use)g(b)o(y)g(applications)f
+195 1300 y(This)i(is)f(in)o(tended)i(for)f(use)g(b)o(y)g(applications)f
(whic)o(h)h(wish)g(to)g(do)g(their)f(o)o(wn)h(redispla)o(y)l(.)1675
-2506 y([F)l(unction])-1801 b Fh(int)27 b(rl_message)d
+1388 y([F)l(unction])-1801 b Fh(int)27 b(rl_message)d
Fg(\()p Ff(const)16 b(c)o(har)f(*,)20 b(.)12 b(.)g(.)5
-b Fg(\))195 2560 y Ft(The)11 b(argumen)o(ts)e(are)h(a)g(format)f
+b Fg(\))195 1443 y Ft(The)11 b(argumen)o(ts)e(are)h(a)g(format)f
(string)g(as)h(w)o(ould)g(b)q(e)h(supplied)g(to)e Fs(printf)p
-Ft(,)h(p)q(ossibly)g(con)o(taining)195 2615 y(con)o(v)o(ersion)21
+Ft(,)h(p)q(ossibly)g(con)o(taining)195 1497 y(con)o(v)o(ersion)21
b(sp)q(eci\014cations)h(suc)o(h)h(as)e(`)p Fs(\045d)p
Ft(',)i(and)f(an)o(y)g(additional)e(argumen)o(ts)h(necessary)i(to)195
-2670 y(satisfy)c(the)i(con)o(v)o(ersion)f(sp)q(eci\014cations.)36
+1552 y(satisfy)c(the)i(con)o(v)o(ersion)f(sp)q(eci\014cations.)36
b(The)21 b(resulting)f(string)f(is)i(displa)o(y)o(ed)f(in)g(the)h
-Fj(ec)o(ho)p eop end
-%%Page: 38 42
-TeXDict begin 38 41 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)14
-b(with)g(GNU)h(Readline)842 b(38)195 149 y Fj(area)p
-Ft(.)30 b(The)19 b(ec)o(ho)g(area)f(is)g(also)g(used)h(to)f(displa)o(y)
-g(n)o(umeric)h(argumen)o(ts)f(and)h(searc)o(h)f(strings.)195
-204 y(Y)l(ou)f(should)g(call)e Fs(rl_save_prompt)g Ft(to)h(sa)o(v)o(e)g
-(the)h(prompt)f(information)f(b)q(efore)i(calling)f(this)195
-259 y(function.)1675 339 y([F)l(unction])-1801 b Fh(int)27
-b(rl_clear_message)e Fg(\()p Ff(v)o(oid)p Fg(\))195 394
-y Ft(Clear)14 b(the)g(message)g(in)h(the)f(ec)o(ho)h(area.)k(If)14
-b(the)h(prompt)f(w)o(as)g(sa)o(v)o(ed)g(with)f(a)i(call)e(to)h
-Fs(rl_save_)195 449 y(prompt)19 b Ft(b)q(efore)h(the)g(last)e(call)h
-(to)g Fs(rl_message)p Ft(,)g(call)g Fs(rl_restore_prompt)e
-Ft(b)q(efore)j(calling)195 503 y(this)15 b(function.)1675
-583 y([F)l(unction])-1801 b Fh(void)27 b(rl_save_prompt)e
-Fg(\()p Ff(v)o(oid)p Fg(\))195 638 y Ft(Sa)o(v)o(e)c(the)h(lo)q(cal)e
+Fk(ec)o(ho)195 1607 y(area)p Ft(.)30 b(The)19 b(ec)o(ho)g(area)f(is)g
+(also)g(used)h(to)f(displa)o(y)g(n)o(umeric)h(argumen)o(ts)f(and)h
+(searc)o(h)f(strings.)195 1662 y(Y)l(ou)f(should)g(call)e
+Fs(rl_save_prompt)g Ft(to)h(sa)o(v)o(e)g(the)h(prompt)f(information)f
+(b)q(efore)i(calling)f(this)195 1717 y(function.)1675
+1804 y([F)l(unction])-1801 b Fh(int)27 b(rl_clear_message)e
+Fg(\()p Ff(v)o(oid)p Fg(\))195 1859 y Ft(Clear)14 b(the)g(message)g(in)
+h(the)f(ec)o(ho)h(area.)k(If)14 b(the)h(prompt)f(w)o(as)g(sa)o(v)o(ed)g
+(with)f(a)i(call)e(to)h Fs(rl_save_)195 1914 y(prompt)g
+Ft(b)q(efore)g(the)h(last)e(call)h(to)f Fs(rl_message)p
+Ft(,)g(y)o(ou)h(m)o(ust)g(call)g Fs(rl_restore_prompt)e
+Ft(b)q(efore)195 1969 y(calling)i(this)h(function.)1675
+2056 y([F)l(unction])-1801 b Fh(void)27 b(rl_save_prompt)e
+Fg(\()p Ff(v)o(oid)p Fg(\))195 2111 y Ft(Sa)o(v)o(e)c(the)h(lo)q(cal)e
(Readline)i(prompt)f(displa)o(y)g(state)g(in)g(preparation)f(for)h
-(displa)o(ying)g(a)g(new)195 693 y(message)15 b(in)g(the)g(message)g
-(area)f(with)h Fs(rl_message\(\))p Ft(.)1675 773 y([F)l(unction])-1801
+(displa)o(ying)g(a)g(new)195 2166 y(message)15 b(in)g(the)g(message)g
+(area)f(with)h Fs(rl_message\(\))p Ft(.)1675 2254 y([F)l(unction])-1801
b Fh(void)27 b(rl_restore_prompt)e Fg(\()p Ff(v)o(oid)p
-Fg(\))195 828 y Ft(Restore)c(the)h(lo)q(cal)e(Readline)i(prompt)f
+Fg(\))195 2308 y Ft(Restore)c(the)h(lo)q(cal)e(Readline)i(prompt)f
(displa)o(y)f(state)h(sa)o(v)o(ed)g(b)o(y)g(the)g(most)g(recen)o(t)g
-(call)g(to)195 883 y Fs(rl_save_prompt)p Ft(.)34 b(if)20
-b Fs(rl_save_prompt)f Ft(w)o(as)h(called)g(to)g(sa)o(v)o(e)g(the)g
-(prompt)h(b)q(efore)g(a)f(call)195 937 y(to)e Fs(rl_message)p
-Ft(,)f(this)h(function)g(should)h(b)q(e)g(called)f(b)q(efore)g(the)h
-(corresp)q(onding)f(call)g(to)f Fs(rl_)195 992 y(clear_message)p
-Ft(.)1675 1072 y([F)l(unction])-1801 b Fh(int)27 b(rl_expand_prompt)e
-Fg(\()p Ff(c)o(har)15 b(*prompt)p Fg(\))195 1127 y Ft(Expand)22
-b(an)o(y)f(sp)q(ecial)g(c)o(haracter)g(sequences)h(in)f
-Fj(prompt)h Ft(and)g(set)f(up)h(the)f(lo)q(cal)g(Readline)195
-1182 y(prompt)c(redispla)o(y)g(v)m(ariables.)28 b(This)17
-b(function)h(is)f(called)h(b)o(y)g Fs(readline\(\))p
-Ft(.)26 b(It)18 b(ma)o(y)f(also)g(b)q(e)195 1237 y(called)10
-b(to)g(expand)h(the)g(primary)f(prompt)g(if)g(the)g Fs
-(rl_on_new_line_with_prompt\(\))d Ft(function)195 1291
-y(or)12 b Fs(rl_already_prompted)e Ft(v)m(ariable)i(is)h(used.)19
-b(It)13 b(returns)g(the)f(n)o(um)o(b)q(er)i(of)e(visible)g(c)o
-(haracters)195 1346 y(on)17 b(the)g(last)f(line)g(of)h(the)g(\(p)q
-(ossibly)f(m)o(ulti-line\))f(prompt.)24 b(Applications)16
-b(ma)o(y)g(indicate)h(that)195 1401 y(the)d(prompt)f(con)o(tains)h(c)o
-(haracters)f(that)g(tak)o(e)g(up)h(no)g(ph)o(ysical)g(screen)g(space)g
-(when)h(displa)o(y)o(ed)195 1456 y(b)o(y)20 b(brac)o(k)o(eting)g(a)g
-(sequence)i(of)e(suc)o(h)g(c)o(haracters)g(with)g(the)h(sp)q(ecial)f
-(mark)o(ers)f Fs(RL_PROMPT_)195 1511 y(START_IGNORE)14
-b Ft(and)j Fs(RL_PROMPT_END_IGNORE)c Ft(\(declared)j(in)g
-Fs(readline.h)p Ft(\).)21 b(This)16 b(ma)o(y)f(b)q(e)195
-1565 y(used)h(to)e(em)o(b)q(ed)i(terminal-sp)q(eci\014c)f(escap)q(e)h
-(sequences)h(in)e(prompts.)1675 1645 y([F)l(unction])-1801
-b Fh(int)27 b(rl_set_prompt)d Fg(\()p Ff(const)16 b(c)o(har)g(*prompt)p
-Fg(\))195 1700 y Ft(Mak)o(e)d(Readline)h(use)f Fj(prompt)h
-Ft(for)f(subsequen)o(t)h(redispla)o(y)l(.)19 b(This)13
-b(calls)f Fs(rl_expand_prompt\(\))195 1755 y Ft(to)j(expand)g(the)h
-(prompt)e(and)i(sets)f Fs(rl_prompt)f Ft(to)g(the)h(result.)75
-1847 y Fi(2.4.7)30 b(Mo)r(difying)20 b(T)-5 b(ext)1675
-1937 y Ft([F)l(unction])-1801 b Fh(int)27 b(rl_insert_text)d
-Fg(\()p Ff(const)16 b(c)o(har)g(*text)p Fg(\))195 1992
-y Ft(Insert)g Fj(text)g Ft(in)o(to)f(the)h(line)f(at)h(the)g(curren)o
-(t)f(cursor)h(p)q(osition.)k(Returns)d(the)f(n)o(um)o(b)q(er)g(of)f(c)o
-(har-)195 2046 y(acters)g(inserted.)1675 2126 y([F)l(unction])-1801
-b Fh(int)27 b(rl_delete_text)d Fg(\()p Ff(in)o(t)16 b(start,)g(in)o(t)h
-(end)p Fg(\))195 2181 y Ft(Delete)h(the)h(text)g(b)q(et)o(w)o(een)g
-Fj(start)g Ft(and)g Fj(end)i Ft(in)e(the)g(curren)o(t)f(line.)31
-b(Returns)19 b(the)g(n)o(um)o(b)q(er)g(of)195 2236 y(c)o(haracters)14
-b(deleted.)1675 2316 y([F)l(unction])-1801 b Fh(char)27
+(call)g(to)195 2363 y Fs(rl_save_prompt)p Ft(.)g(if)16
+b(y)o(ou)g(called)g Fs(rl_save_prompt)f Ft(to)g(sa)o(v)o(e)h(the)g
+(prompt)g(b)q(efore)h(a)f(call)g(to)195 2418 y Fs(rl_message)p
+Ft(,)11 b(y)o(ou)i(should)f(call)g(this)g(function)h(b)q(efore)g(the)g
+(corresp)q(onding)f(call)g(to)g Fs(rl_clear_)195 2473
+y(message)p Ft(.)1675 2560 y([F)l(unction])-1801 b Fh(int)27
+b(rl_expand_prompt)e Fg(\()p Ff(c)o(har)15 b(*prompt)p
+Fg(\))195 2615 y Ft(Expand)22 b(an)o(y)f(sp)q(ecial)g(c)o(haracter)g
+(sequences)h(in)f Fk(prompt)h Ft(and)g(set)f(up)h(the)f(lo)q(cal)g
+(Readline)195 2670 y(prompt)c(redispla)o(y)g(v)m(ariables.)28
+b(This)17 b(function)h(is)f(called)h(b)o(y)g Fs(readline\(\))p
+Ft(.)26 b(It)18 b(ma)o(y)f(also)g(b)q(e)p eop end
+%%Page: 43 47
+TeXDict begin 43 46 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)14
+b(with)g(GNU)h(Readline)842 b(43)195 149 y(called)18
+b(to)g(expand)h(the)g(primary)f(prompt)g(if)g(the)g(application)g(uses)
+g(the)h Fs(rl_on_new_line_)195 204 y(with_prompt\(\))d
+Ft(function)i(or)g Fs(rl_already_prompted)d Ft(v)m(ariable.)28
+b(It)18 b(returns)g(the)h(n)o(um)o(b)q(er)195 259 y(of)g(visible)g(c)o
+(haracters)g(on)h(the)g(last)f(line)g(of)h(the)g(\(p)q(ossibly)f(m)o
+(ulti-line\))f(prompt.)33 b(Applica-)195 314 y(tions)21
+b(ma)o(y)g(indicate)h(that)f(the)h(prompt)f(con)o(tains)g(c)o
+(haracters)g(that)g(tak)o(e)h(up)g(no)g(ph)o(ysical)195
+369 y(screen)e(space)h(when)f(displa)o(y)o(ed)f(b)o(y)h(brac)o(k)o
+(eting)f(a)h(sequence)h(of)e(suc)o(h)h(c)o(haracters)g(with)f(the)195
+423 y(sp)q(ecial)d(mark)o(ers)e Fs(RL_PROMPT_START_IGNORE)f
+Ft(and)j Fs(RL_PROMPT_END_IGNORE)d Ft(\(declared)j(in)195
+478 y Fs(readline.h)11 b Ft(as)g(`)p Fs(\\001)p Ft(')g(and)h(`)p
+Fs(\\002)p Ft(',)f(resp)q(ectiv)o(ely\).)18 b(This)12
+b(ma)o(y)f(b)q(e)i(used)g(to)e(em)o(b)q(ed)i(terminal-)195
+533 y(sp)q(eci\014c)i(escap)q(e)h(sequences)f(in)f(prompts.)19
+b(If)c(y)o(ou)f(don't)g(use)h(these)g(indicators,)e(redispla)o(y)g
+(will)195 588 y(lik)o(ely)h(pro)q(duce)i(screen)g(con)o(ten)o(ts)e
+(that)h(don't)g(matc)o(h)f(the)h(line)g(bu\013er.)1675
+678 y([F)l(unction])-1801 b Fh(int)27 b(rl_set_prompt)d
+Fg(\()p Ff(const)16 b(c)o(har)g(*prompt)p Fg(\))195 733
+y Ft(Mak)o(e)d(Readline)h(use)f Fk(prompt)h Ft(for)f(subsequen)o(t)h
+(redispla)o(y)l(.)19 b(This)13 b(calls)f Fs(rl_expand_prompt\(\))195
+788 y Ft(to)j(expand)g(the)h(prompt)e(and)i(sets)f Fs(rl_prompt)f
+Ft(to)g(the)h(result.)75 886 y Fi(2.4.7)30 b(Mo)r(difying)20
+b(T)-5 b(ext)1675 983 y Ft([F)l(unction])-1801 b Fh(int)27
+b(rl_insert_text)d Fg(\()p Ff(const)16 b(c)o(har)g(*text)p
+Fg(\))195 1038 y Ft(Insert)g Fk(text)g Ft(in)o(to)f(the)h(line)f(at)h
+(the)g(curren)o(t)f(cursor)h(p)q(osition.)k(Returns)d(the)f(n)o(um)o(b)
+q(er)g(of)f(c)o(har-)195 1092 y(acters)g(inserted.)1675
+1183 y([F)l(unction])-1801 b Fh(int)27 b(rl_delete_text)d
+Fg(\()p Ff(in)o(t)16 b(start,)g(in)o(t)h(end)p Fg(\))195
+1237 y Ft(Delete)h(the)h(text)g(b)q(et)o(w)o(een)g Fk(start)g
+Ft(and)g Fk(end)i Ft(in)e(the)g(curren)o(t)f(line.)31
+b(Returns)19 b(the)g(n)o(um)o(b)q(er)g(of)195 1292 y(c)o(haracters)14
+b(deleted.)1675 1382 y([F)l(unction])-1801 b Fh(char)27
b(*)f(rl_copy_text)f Fg(\()p Ff(in)o(t)15 b(start,)i(in)o(t)f(end)p
-Fg(\))195 2371 y Ft(Return)g(a)f(cop)o(y)g(of)g(the)g(text)f(b)q(et)o
-(w)o(een)i Fj(start)f Ft(and)g Fj(end)j Ft(in)d(the)g(curren)o(t)g
-(line.)1675 2451 y([F)l(unction])-1801 b Fh(int)27 b(rl_kill_text)d
+Fg(\))195 1437 y Ft(Return)g(a)f(cop)o(y)g(of)g(the)g(text)f(b)q(et)o
+(w)o(een)i Fk(start)f Ft(and)g Fk(end)j Ft(in)d(the)g(curren)o(t)g
+(line.)1675 1527 y([F)l(unction])-1801 b Fh(int)27 b(rl_kill_text)d
Fg(\()p Ff(in)o(t)16 b(start,)g(in)o(t)g(end)p Fg(\))195
-2506 y Ft(Cop)o(y)h(the)g(text)f(b)q(et)o(w)o(een)i Fj(start)f
-Ft(and)g Fj(end)i Ft(in)e(the)g(curren)o(t)g(line)g(to)g(the)g(kill)f
-(ring,)g(app)q(ending)195 2560 y(or)g(prep)q(ending)j(to)d(the)h(last)f
-(kill)g(if)g(the)h(last)f(command)h(w)o(as)f(a)h(kill)f(command.)25
-b(The)17 b(text)f(is)195 2615 y(deleted.)25 b(If)17 b
-Fj(start)g Ft(is)f(less)g(than)h Fj(end)p Ft(,)g(the)g(text)g(is)f(app)
-q(ended,)i(otherwise)e(prep)q(ended.)27 b(If)17 b(the)195
-2670 y(last)d(command)h(w)o(as)g(not)f(a)h(kill,)f(a)h(new)g(kill)f
-(ring)h(slot)f(is)h(used.)p eop end
-%%Page: 39 43
-TeXDict begin 39 42 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)14
-b(with)g(GNU)h(Readline)842 b(39)1675 149 y([F)l(unction])-1801
-b Fh(int)27 b(rl_push_macro_input)e Fg(\()p Ff(c)o(har)15
-b(*macro)p Fg(\))195 204 y Ft(Cause)f Fj(macro)i Ft(to)d(b)q(e)i
-(inserted)f(in)o(to)f(the)h(line,)g(as)g(if)f(it)h(had)g(b)q(een)h(in)o
-(v)o(ok)o(ed)f(b)o(y)g(a)g(k)o(ey)g(b)q(ound)h(to)195
-259 y(a)g(macro.)k(Not)c(esp)q(ecially)f(useful;)h(use)h
-Fs(rl_insert_text\(\))d Ft(instead.)75 355 y Fi(2.4.8)30
-b(Character)21 b(Input)1675 449 y Ft([F)l(unction])-1801
-b Fh(int)27 b(rl_read_key)d Fg(\()p Ff(v)o(oid)p Fg(\))195
-504 y Ft(Return)15 b(the)g(next)g(c)o(haracter)f(a)o(v)m(ailable)f
-(from)h(Readline's)h(curren)o(t)g(input)f(stream.)19
-b(This)c(han-)195 559 y(dles)e(input)g(inserted)h(in)o(to)e(the)h
-(input)g(stream)g(via)f Fj(rl)p 1113 559 14 2 v 20 w(p)q(ending)p
-1290 559 V 21 w(input)i Ft(\(see)f(Section)g(2.3)g([Read-)195
-614 y(line)19 b(V)l(ariables],)g(page)h(27\))f(and)h
+1582 y Ft(Cop)o(y)h(the)g(text)f(b)q(et)o(w)o(een)i Fk(start)f
+Ft(and)g Fk(end)i Ft(in)e(the)g(curren)o(t)g(line)g(to)g(the)g(kill)f
+(ring,)g(app)q(ending)195 1637 y(or)f(prep)q(ending)i(to)f(the)g(last)f
+(kill)g(if)g(the)h(last)f(command)h(w)o(as)f(a)h(kill)e(command.)22
+b(This)16 b(deletes)195 1692 y(the)g(text)f(from)g(the)h(line.)22
+b(If)16 b Fk(start)g Ft(is)f(less)g(than)h Fk(end)p Ft(,)g(the)g(text)g
+(is)f(app)q(ended,)i(otherwise)e(it)g(is)195 1746 y(prep)q(ended.)22
+b(If)15 b(the)g(last)g(command)g(w)o(as)f(not)h(a)g(kill,)e(this)i
+(uses)g(a)g(new)h(kill)e(ring)g(slot.)1675 1837 y([F)l(unction])-1801
+b Fh(void)27 b(rl_replace_line)e Fg(\()p Ff(const)16
+b(c)o(har)f(*text,)j(in)o(t)e(clear)p 1203 1837 15 3
+v 21 w(undo)p Fg(\))195 1891 y Ft(Replace)21 b(the)f(con)o(ten)o(ts)g
+(of)g Fs(rl_line_buffer)e Ft(with)i Fk(text)p Ft(.)34
+b(This)20 b(preserv)o(es)h(the)f(p)q(oin)o(t)g(and)195
+1946 y(mark,)15 b(if)h(p)q(ossible.)22 b(If)16 b Fk(clear)p
+703 1946 14 2 v 20 w(undo)j Ft(is)c(non-zero,)i(this)e(clears)h(the)g
+(undo)g(list)f(asso)q(ciated)h(with)195 2001 y(the)f(curren)o(t)g
+(line.)1675 2091 y([F)l(unction])-1801 b Fh(int)27 b
+(rl_push_macro_input)e Fg(\()p Ff(c)o(har)15 b(*macro)p
+Fg(\))195 2146 y Ft(Insert)g Fk(macro)h Ft(in)o(to)e(the)h(line,)f(as)g
+(if)h(it)f(had)h(b)q(een)g(in)o(v)o(ok)o(ed)f(b)o(y)h(a)g(k)o(ey)f(b)q
+(ound)i(to)e(a)g(macro.)20 b(Not)195 2201 y(esp)q(ecially)15
+b(useful;)g(use)g Fs(rl_insert_text\(\))e Ft(instead.)75
+2299 y Fi(2.4.8)30 b(Character)21 b(Input)1675 2396 y
+Ft([F)l(unction])-1801 b Fh(int)27 b(rl_read_key)d Fg(\()p
+Ff(v)o(oid)p Fg(\))195 2451 y Ft(Return)15 b(the)g(next)g(c)o(haracter)
+f(a)o(v)m(ailable)f(from)h(Readline's)h(curren)o(t)g(input)f(stream.)19
+b(This)c(han-)195 2506 y(dles)e(input)g(inserted)h(in)o(to)e(the)h
+(input)g(stream)g(via)f Fk(rl)p 1113 2506 V 20 w(p)q(ending)p
+1290 2506 V 21 w(input)i Ft(\(see)f(Section)g(2.3)g([Read-)195
+2560 y(line)19 b(V)l(ariables],)g(page)h(30\))f(and)h
Fs(rl_stuff_char\(\))p Ft(,)e(macros,)h(and)h(c)o(haracters)f(read)h
-(from)195 669 y(the)d(k)o(eyb)q(oard.)25 b(While)17 b(w)o(aiting)e(for)
-h(input,)i(this)e(function)h(will)f(call)g(an)o(y)g(function)h
-(assigned)195 723 y(to)e(the)g Fs(rl_event_hook)e Ft(v)m(ariable.)1675
-810 y([F)l(unction])-1801 b Fh(int)27 b(rl_getc)c Fg(\()p
-Ff(FILE)16 b(*stream)p Fg(\))195 865 y Ft(Return)11 b(the)g(next)g(c)o
-(haracter)f(a)o(v)m(ailable)f(from)h Fj(stream)p Ft(,)g(whic)o(h)h(is)f
-(assumed)g(to)g(b)q(e)i(the)e(k)o(eyb)q(oard.)1675 951
-y([F)l(unction])-1801 b Fh(int)27 b(rl_stuff_char)d Fg(\()p
-Ff(in)o(t)16 b(c)p Fg(\))195 1006 y Ft(Insert)h Fj(c)i
-Ft(in)o(to)c(the)i(Readline)g(input)f(stream.)23 b(It)16
-b(will)f(b)q(e)i Fs(")p Ft(read)p Fs(")g Ft(b)q(efore)f(Readline)h
-(attempts)195 1061 y(to)c(read)g(c)o(haracters)g(from)f(the)i(terminal)
-e(with)h Fs(rl_read_key\(\))p Ft(.)k(Up)d(to)f(512)f(c)o(haracters)h
-(ma)o(y)195 1116 y(b)q(e)j(pushed)g(bac)o(k.)k Fs(rl_stuff_char)14
-b Ft(returns)h(1)g(if)g(the)g(c)o(haracter)g(w)o(as)f(successfully)h
-(inserted;)195 1170 y(0)g(otherwise.)1675 1257 y([F)l(unction])-1801
+(from)195 2615 y(the)d(k)o(eyb)q(oard.)25 b(While)17
+b(w)o(aiting)e(for)h(input,)i(this)e(function)h(will)f(call)g(an)o(y)g
+(function)h(assigned)195 2670 y(to)e(the)g Fs(rl_event_hook)e
+Ft(v)m(ariable.)p eop end
+%%Page: 44 48
+TeXDict begin 44 47 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)14
+b(with)g(GNU)h(Readline)842 b(44)1675 149 y([F)l(unction])-1801
+b Fh(int)27 b(rl_getc)c Fg(\()p Ff(FILE)16 b(*stream)p
+Fg(\))195 204 y Ft(Return)11 b(the)g(next)g(c)o(haracter)f(a)o(v)m
+(ailable)f(from)h Fk(stream)p Ft(,)g(whic)o(h)h(is)f(assumed)g(to)g(b)q
+(e)i(the)e(k)o(eyb)q(oard.)1675 294 y([F)l(unction])-1801
+b Fh(int)27 b(rl_stuff_char)d Fg(\()p Ff(in)o(t)16 b(c)p
+Fg(\))195 349 y Ft(Insert)h Fk(c)i Ft(in)o(to)c(the)i(Readline)g(input)
+f(stream.)23 b(It)16 b(will)f(b)q(e)i Fs(")p Ft(read)p
+Fs(")g Ft(b)q(efore)f(Readline)h(attempts)195 403 y(to)i(read)g(c)o
+(haracters)g(from)g(the)g(terminal)g(with)f Fs(rl_read_key\(\))p
+Ft(.)31 b(Applications)19 b(can)g(push)195 458 y(bac)o(k)13
+b(up)h(to)f(512)g(c)o(haracters.)18 b Fs(rl_stuff_char)12
+b Ft(returns)i(1)f(if)g(the)g(c)o(haracter)g(w)o(as)g(successfully)195
+513 y(inserted;)i(0)g(otherwise.)1675 603 y([F)l(unction])-1801
b Fh(int)27 b(rl_execute_next)e Fg(\()p Ff(in)o(t)15
-b(c)p Fg(\))195 1312 y Ft(Mak)o(e)i Fj(c)k Ft(b)q(e)d(the)g(next)g
+b(c)p Fg(\))195 657 y Ft(Mak)o(e)i Fk(c)k Ft(b)q(e)d(the)g(next)g
(command)g(to)f(b)q(e)i(executed)f(when)h Fs(rl_read_key\(\))d
-Ft(is)h(called.)27 b(This)195 1366 y(sets)15 b Fj(rl)p
-318 1366 V 19 w(p)q(ending)p 494 1366 V 21 w(input)p
-Ft(.)1675 1453 y([F)l(unction])-1801 b Fh(int)27 b
+Ft(is)h(called.)27 b(This)195 712 y(sets)15 b Fk(rl)p
+318 712 14 2 v 19 w(p)q(ending)p 494 712 V 21 w(input)p
+Ft(.)1675 802 y([F)l(unction])-1801 b Fh(int)27 b
(rl_clear_pending_input)f Fg(\()p Ff(v)o(oid)p Fg(\))195
-1508 y Ft(Unset)21 b Fj(rl)p 365 1508 V 19 w(p)q(ending)p
-541 1508 V 21 w(input)p Ft(,)h(e\013ectiv)o(ely)e(negating)g(the)h
+857 y Ft(Unset)21 b Fk(rl)p 365 857 V 19 w(p)q(ending)p
+541 857 V 21 w(input)p Ft(,)h(e\013ectiv)o(ely)e(negating)g(the)h
(e\013ect)g(of)f(an)o(y)h(previous)f(call)g(to)g Fs(rl_)195
-1563 y(execute_next\(\))p Ft(.)29 b(This)18 b(w)o(orks)g(only)g(if)h
+911 y(execute_next\(\))p Ft(.)29 b(This)18 b(w)o(orks)g(only)g(if)h
(the)f(p)q(ending)i(input)f(has)g(not)f(already)g(b)q(een)i(read)195
-1617 y(with)15 b Fs(rl_read_key\(\))p Ft(.)1675 1704
-y([F)l(unction])-1801 b Fh(int)27 b(rl_set_keyboard_input_time)q(out)f
-Fg(\()p Ff(in)o(t)16 b(u)p Fg(\))195 1759 y Ft(While)j(w)o(aiting)g
+966 y(with)15 b Fs(rl_read_key\(\))p Ft(.)1675 1056 y([F)l(unction])
+-1801 b Fh(int)27 b(rl_set_keyboard_input_time)q(out)f
+Fg(\()p Ff(in)o(t)16 b(u)p Fg(\))195 1111 y Ft(While)j(w)o(aiting)g
(for)g(k)o(eyb)q(oard)h(input)g(in)g Fs(rl_read_key\(\))p
-Ft(,)f(Readline)h(will)f(w)o(ait)g(for)g Fj(u)h Ft(mi-)195
-1813 y(croseconds)c(for)e(input)i(b)q(efore)g(calling)e(an)o(y)h
+Ft(,)f(Readline)h(will)f(w)o(ait)g(for)g Fk(u)h Ft(mi-)195
+1165 y(croseconds)c(for)e(input)i(b)q(efore)g(calling)e(an)o(y)h
(function)g(assigned)g(to)g Fs(rl_event_hook)p Ft(.)k
-Fj(u)d Ft(m)o(ust)195 1868 y(b)q(e)h(greater)e(than)g(or)h(equal)g(to)f
+Fk(u)d Ft(m)o(ust)195 1220 y(b)q(e)h(greater)e(than)g(or)h(equal)g(to)f
(zero)h(\(a)f(zero-length)h(timeout)f(is)g(equiv)m(alen)o(t)h(to)f(a)h
-(p)q(oll\).)21 b(The)195 1923 y(default)15 b(w)o(aiting)e(p)q(erio)q(d)
+(p)q(oll\).)21 b(The)195 1275 y(default)15 b(w)o(aiting)e(p)q(erio)q(d)
j(is)e(one-ten)o(th)i(of)e(a)h(second.)21 b(Returns)15
-b(the)h(old)e(timeout)h(v)m(alue.)75 2019 y Fi(2.4.9)30
-b(T)-5 b(erminal)20 b(Managemen)n(t)1675 2113 y Ft([F)l(unction])-1801
-b Fh(void)27 b(rl_prep_terminal)e Fg(\()p Ff(in)o(t)16
-b(meta)p 852 2113 15 3 v 22 w(\015ag)p Fg(\))195 2168
-y Ft(Mo)q(dify)21 b(the)g(terminal)f(settings)g(for)h(Readline's)g
-(use,)i(so)d Fs(readline\(\))g Ft(can)i(read)f(a)g(single)195
-2223 y(c)o(haracter)15 b(at)g(a)g(time)f(from)h(the)h(k)o(eyb)q(oard.)k
-(The)c Fj(meta)p 1189 2223 14 2 v 19 w(\015ag)j Ft(argumen)o(t)c
-(should)h(b)q(e)g(non-zero)195 2278 y(if)f(Readline)g(should)g(read)g
-(eigh)o(t-bit)g(input.)1675 2364 y([F)l(unction])-1801
+b(the)h(old)e(timeout)h(v)m(alue.)1675 1365 y([F)l(unction])-1801
+b Fh(int)27 b(rl_set_timeout)d Fg(\()p Ff(unsigned)15
+b(in)o(t)h(secs,)g(unsigned)f(in)o(t)h(usecs)p Fg(\))195
+1419 y Ft(Set)g(a)g(timeout)f(for)g(subsequen)o(t)i(calls)e(to)g
+Fs(readline\(\))p Ft(.)21 b(If)16 b(Readline)h(do)q(es)f(not)f(read)h
+(a)g(com-)195 1474 y(plete)i(line,)g(or)g(the)g(n)o(um)o(b)q(er)g(of)g
+(c)o(haracters)f(sp)q(eci\014ed)i(b)o(y)f Fs(rl_num_chars_to_read)p
+Ft(,)e(b)q(efore)195 1529 y(the)h(duration)f(sp)q(eci\014ed)h(b)o(y)g
+Fk(secs)i Ft(\(in)d(seconds\))h(and)g Fk(usecs)i Ft(\(microseconds\),)c
+(it)h(returns)h(and)195 1584 y(sets)10 b Fs(RL_STATE_TIMEOUT)f
+Ft(in)i Fs(rl_readline_state)p Ft(.)16 b(P)o(assing)9
+b(0)i(for)f Fs(secs)g Ft(and)h Fs(usecs)f Ft(cancels)195
+1639 y(an)o(y)h(previously)g(set)h(timeout;)g(the)f(con)o(v)o(enience)i
+(macro)e Fs(rl_clear_timeout\(\))e Ft(is)i(shorthand)195
+1693 y(for)k(this.)k(Returns)d(0)e(if)h(the)g(timeout)g(is)f(set)h
+(successfully)l(.)1675 1783 y([F)l(unction])-1801 b Fh(int)27
+b(rl_timeout_remaining)e Fg(\()p Ff(unsigned)14 b(in)o(t)i(*secs,)f
+(unsigned)f(in)o(t)h(*usecs)p Fg(\))195 1838 y Ft(Return)20
+b(the)f(n)o(um)o(b)q(er)h(of)f(seconds)g(and)h(microseconds)f
+(remaining)f(in)h(the)h(curren)o(t)f(timeout)195 1893
+y(duration)12 b(in)i Fk(*secs)h Ft(and)e Fk(*usecs)p
+Ft(,)g(resp)q(ectiv)o(ely)l(.)19 b(Both)13 b Fk(*secs)i
+Ft(and)f Fk(*usecs)h Ft(m)o(ust)e(b)q(e)h(non-NULL)195
+1947 y(to)g(return)g(an)o(y)g(v)m(alues.)20 b(The)14
+b(return)h(v)m(alue)f(is)g(-1)g(on)g(error)g(or)g(when)h(there)f(is)g
+(no)g(timeout)g(set,)195 2002 y(0)j(when)h(the)f(timeout)f(has)i
+(expired)f(\(lea)o(ving)f Fk(*secs)j Ft(and)e Fk(*usecs)j
+Ft(unc)o(hanged\),)e(and)f(1)g(if)g(the)195 2057 y(timeout)12
+b(has)g(not)h(expired.)19 b(If)13 b(either)g(of)f Fk(secs)j
+Ft(and)e Fk(usecs)i Ft(is)e Fs(NULL)p Ft(,)f(the)h(return)f(v)m(alue)i
+(indicates)195 2112 y(whether)h(the)h(timeout)e(has)h(expired.)75
+2210 y Fi(2.4.9)30 b(T)-5 b(erminal)20 b(Managemen)n(t)1675
+2306 y Ft([F)l(unction])-1801 b Fh(void)27 b(rl_prep_terminal)e
+Fg(\()p Ff(in)o(t)16 b(meta)p 852 2306 15 3 v 22 w(\015ag)p
+Fg(\))195 2361 y Ft(Mo)q(dify)21 b(the)g(terminal)f(settings)g(for)h
+(Readline's)g(use,)i(so)d Fs(readline\(\))g Ft(can)i(read)f(a)g(single)
+195 2416 y(c)o(haracter)10 b(at)f(a)h(time)g(from)g(the)g(k)o(eyb)q
+(oard)g(and)h(p)q(erform)f(redispla)o(y)l(.)18 b(The)10
+b Fk(meta)p 1585 2416 14 2 v 20 w(\015ag)k Ft(argumen)o(t)195
+2471 y(should)h(b)q(e)h(non-zero)g(if)e(Readline)i(should)f(read)g
+(eigh)o(t-bit)f(input.)1675 2560 y([F)l(unction])-1801
b Fh(void)27 b(rl_deprep_terminal)e Fg(\()p Ff(v)o(oid)p
-Fg(\))195 2419 y Ft(Undo)16 b(the)g(e\013ects)f(of)h
+Fg(\))195 2615 y Ft(Undo)16 b(the)g(e\013ects)f(of)h
Fs(rl_prep_terminal\(\))p Ft(,)d(lea)o(ving)i(the)g(terminal)g(in)h
-(the)f(state)g(in)h(whic)o(h)195 2474 y(it)e(w)o(as)h(b)q(efore)g(the)h
+(the)f(state)g(in)h(whic)o(h)195 2670 y(it)e(w)o(as)h(b)q(efore)g(the)h
(most)e(recen)o(t)h(call)g(to)f Fs(rl_prep_terminal\(\))p
-Ft(.)1675 2560 y([F)l(unction])-1801 b Fh(void)27 b
-(rl_tty_set_default_bindin)q(gs)f Fg(\()p Ff(Keymap)15
-b(kmap)p Fg(\))195 2615 y Ft(Read)k(the)g(op)q(erating)e(system's)h
-(terminal)f(editing)h(c)o(haracters)g(\(as)f(w)o(ould)h(b)q(e)h(displa)
-o(y)o(ed)f(b)o(y)195 2670 y Fs(stty)p Ft(\))c(to)h(their)g(Readline)g
-(equiv)m(alen)o(ts.)20 b(The)15 b(bindings)g(are)g(p)q(erformed)g(in)g
-Fj(kmap)p Ft(.)p eop end
-%%Page: 40 44
-TeXDict begin 40 43 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)14
-b(with)g(GNU)h(Readline)842 b(40)1675 149 y([F)l(unction])-1801
+Ft(.)p eop end
+%%Page: 45 49
+TeXDict begin 45 48 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)14
+b(with)g(GNU)h(Readline)842 b(45)1675 149 y([F)l(unction])-1801
+b Fh(void)27 b(rl_tty_set_default_bindin)q(gs)f Fg(\()p
+Ff(Keymap)15 b(kmap)p Fg(\))195 204 y Ft(Read)k(the)g(op)q(erating)e
+(system's)h(terminal)f(editing)h(c)o(haracters)g(\(as)f(w)o(ould)h(b)q
+(e)h(displa)o(y)o(ed)f(b)o(y)195 259 y Fs(stty)p Ft(\))c(to)h(their)g
+(Readline)g(equiv)m(alen)o(ts.)20 b(The)15 b(bindings)g(are)g(p)q
+(erformed)g(in)g Fk(kmap)p Ft(.)1675 364 y([F)l(unction])-1801
b Fh(void)27 b(rl_tty_unset_default_bind)q(ings)f Fg(\()p
-Ff(Keymap)15 b(kmap)p Fg(\))195 204 y Ft(Reset)h(the)g(bindings)g
+Ff(Keymap)15 b(kmap)p Fg(\))195 418 y Ft(Reset)h(the)g(bindings)g
(manipulated)f(b)o(y)h Fs(rl_tty_set_default_bindings)c
-Ft(so)k(that)f(the)h(ter-)195 259 y(minal)j(editing)g(c)o(haracters)g
+Ft(so)k(that)f(the)h(ter-)195 473 y(minal)j(editing)g(c)o(haracters)g
(are)h(b)q(ound)g(to)f Fs(rl_insert)p Ft(.)33 b(The)20
-b(bindings)g(are)f(p)q(erformed)h(in)195 314 y Fj(kmap)p
-Ft(.)1675 413 y([F)l(unction])-1801 b Fh(int)27 b(rl_tty_set_echoing)e
-Fg(\()p Ff(in)o(t)16 b(v)m(alue)p Fg(\))195 468 y Ft(Set)24
+b(bindings)g(are)f(p)q(erformed)h(in)195 528 y Fk(kmap)p
+Ft(.)1675 632 y([F)l(unction])-1801 b Fh(int)27 b(rl_tty_set_echoing)e
+Fg(\()p Ff(in)o(t)16 b(v)m(alue)p Fg(\))195 687 y Ft(Set)24
b(Readline's)f(idea)h(of)f(whether)h(or)g(not)f(it)g(is)g(ec)o(hoing)h
-(output)f(to)g(its)g(output)h(stream)195 522 y(\()p Fj(rl)p
-247 522 14 2 v 19 w(outstream)p Ft(\).)f(If)17 b Fj(v)m(alue)i
+(output)f(to)g(its)g(output)h(stream)195 742 y(\()p Fk(rl)p
+247 742 14 2 v 19 w(outstream)p Ft(\).)f(If)17 b Fk(v)m(alue)i
Ft(is)d(0,)h(Readline)g(do)q(es)g(not)f(displa)o(y)g(output)g(to)g
-Fj(rl)p 1558 522 V 19 w(outstream)p Ft(;)g(an)o(y)195
-577 y(other)21 b(v)m(alue)h(enables)f(output.)39 b(The)21
+Fk(rl)p 1558 742 V 19 w(outstream)p Ft(;)g(an)o(y)195
+797 y(other)21 b(v)m(alue)h(enables)f(output.)39 b(The)21
b(initial)f(v)m(alue)i(is)e(set)i(when)g(Readline)f(initializes)f(the)
-195 632 y(terminal)14 b(settings.)19 b(This)c(function)g(returns)g(the)
-g(previous)g(v)m(alue.)1675 731 y([F)l(unction])-1801
+195 852 y(terminal)14 b(settings.)19 b(This)c(function)g(returns)g(the)
+g(previous)g(v)m(alue.)1675 956 y([F)l(unction])-1801
b Fh(int)27 b(rl_reset_terminal)e Fg(\()p Ff(const)16
-b(c)o(har)f(*terminal)p 1116 731 15 3 v 21 w(name)p Fg(\))195
-786 y Ft(Reinitialize)c(Readline's)g(idea)h(of)g(the)g(terminal)e
-(settings)h(using)h Fj(terminal)p 1490 786 14 2 v 19
-w(name)i Ft(as)e(the)g(termi-)195 841 y(nal)j(t)o(yp)q(e)h(\(e.g.,)f
-Fs(vt100)p Ft(\).)21 b(If)16 b Fj(terminal)p 878 841
-V 19 w(name)i Ft(is)e Fs(NULL)p Ft(,)f(the)h(v)m(alue)g(of)f(the)h
-Fs(TERM)g Ft(en)o(vironmen)o(t)195 895 y(v)m(ariable)f(is)f(used.)75
-998 y Fi(2.4.10)29 b(Utilit)n(y)22 b(F)-5 b(unctions)1675
-1100 y Ft([F)l(unction])-1801 b Fh(int)27 b(rl_save_state)d
-Fg(\()p Ff(struct)16 b(readline)p 880 1100 15 3 v 21
-w(state)h(*sp)p Fg(\))195 1155 y Ft(Sa)o(v)o(e)d(a)g(snapshot)g(of)f
-(Readline's)i(in)o(ternal)e(state)g(to)h Fj(sp)p Ft(.)19
-b(The)c(con)o(ten)o(ts)e(of)h(the)h Fj(readline)p 1760
-1155 14 2 v 19 w(state)195 1210 y Ft(structure)f(are)h(do)q(cumen)o
-(ted)g(in)g Fs(readline.h)p Ft(.)j(The)d(caller)e(is)i(resp)q(onsible)f
-(for)g(allo)q(cating)f(the)195 1265 y(structure.)1675
-1364 y([F)l(unction])-1801 b Fh(int)27 b(rl_restore_state)e
-Fg(\()p Ff(struct)16 b(readline)p 959 1364 15 3 v 20
-w(state)h(*sp)p Fg(\))195 1418 y Ft(Restore)11 b(Readline's)g(in)o
-(ternal)f(state)g(to)h(that)f(stored)h(in)g Fj(sp)p Ft(,)g(whic)o(h)g
+b(c)o(har)f(*terminal)p 1116 956 15 3 v 21 w(name)p Fg(\))195
+1011 y Ft(Reinitialize)g(Readline's)i(idea)f(of)g(the)h(terminal)e
+(settings)g(using)i Fk(terminal)p 1527 1011 14 2 v 18
+w(name)i Ft(as)e(the)f(ter-)195 1066 y(minal)h(t)o(yp)q(e)i(\(e.g.,)e
+Fs(xterm)p Ft(\).)29 b(If)18 b Fk(terminal)p 946 1066
+V 19 w(name)j Ft(is)d Fs(NULL)p Ft(,)g(Readline)g(uses)h(the)f(v)m
+(alue)h(of)f(the)195 1120 y Fs(TERM)d Ft(en)o(vironmen)o(t)f(v)m
+(ariable.)75 1226 y Fi(2.4.10)29 b(Utilit)n(y)22 b(F)-5
+b(unctions)1675 1331 y Ft([F)l(unction])-1801 b Fh(int)27
+b(rl_save_state)d Fg(\()p Ff(struct)16 b(readline)p 880
+1331 15 3 v 21 w(state)h(*sp)p Fg(\))195 1386 y Ft(Sa)o(v)o(e)d(a)g
+(snapshot)g(of)f(Readline's)i(in)o(ternal)e(state)g(to)h
+Fk(sp)p Ft(.)19 b(The)c(con)o(ten)o(ts)e(of)h(the)h Fk(readline)p
+1760 1386 14 2 v 19 w(state)195 1440 y Ft(structure)f(are)h(do)q(cumen)
+o(ted)g(in)g Fs(readline.h)p Ft(.)j(The)d(caller)e(is)i(resp)q(onsible)
+f(for)g(allo)q(cating)f(the)195 1495 y(structure.)1675
+1600 y([F)l(unction])-1801 b Fh(int)27 b(rl_restore_state)e
+Fg(\()p Ff(struct)16 b(readline)p 959 1600 15 3 v 20
+w(state)h(*sp)p Fg(\))195 1654 y Ft(Restore)11 b(Readline's)g(in)o
+(ternal)f(state)g(to)h(that)f(stored)h(in)g Fk(sp)p Ft(,)g(whic)o(h)g
(m)o(ust)g(ha)o(v)o(e)f(b)q(een)j(sa)o(v)o(ed)d(b)o(y)h(a)195
-1473 y(call)j(to)g Fs(rl_save_state)p Ft(.)j(The)e(con)o(ten)o(ts)f(of)
-g(the)h Fj(readline)p 1236 1473 14 2 v 19 w(state)i Ft(structure)d(are)
-g(do)q(cumen)o(ted)195 1528 y(in)h Fs(readline.h)p Ft(.)j(The)e(caller)
+1709 y(call)j(to)g Fs(rl_save_state)p Ft(.)j(The)e(con)o(ten)o(ts)f(of)
+g(the)h Fk(readline)p 1236 1709 14 2 v 19 w(state)i Ft(structure)d(are)
+g(do)q(cumen)o(ted)195 1764 y(in)h Fs(readline.h)p Ft(.)j(The)e(caller)
e(is)h(resp)q(onsible)g(for)g(freeing)g(the)g(structure.)1675
-1627 y([F)l(unction])-1801 b Fh(void)27 b(rl_free)d Fg(\()p
-Ff(v)o(oid)15 b(*mem)p Fg(\))195 1682 y Ft(Deallo)q(cate)9
-b(the)i(memory)f(p)q(oin)o(ted)h(to)f(b)o(y)g Fj(mem)p
-Ft(.)18 b Fj(mem)11 b Ft(m)o(ust)f(ha)o(v)o(e)g(b)q(een)i(allo)q(cated)
-e(b)o(y)g Fs(malloc)p Ft(.)1675 1781 y([F)l(unction])-1801
-b Fh(void)27 b(rl_replace_line)e Fg(\()p Ff(const)16
-b(c)o(har)f(*text,)j(in)o(t)e(clear)p 1203 1781 15 3
-v 21 w(undo)p Fg(\))195 1836 y Ft(Replace)k(the)g(con)o(ten)o(ts)f(of)g
-Fs(rl_line_buffer)f Ft(with)h Fj(text)p Ft(.)33 b(The)20
-b(p)q(oin)o(t)f(and)h(mark)f(are)h(pre-)195 1890 y(serv)o(ed,)13
-b(if)f(p)q(ossible.)19 b(If)13 b Fj(clear)p 712 1890
-14 2 v 20 w(undo)i Ft(is)d(non-zero,)i(the)e(undo)i(list)d(asso)q
-(ciated)h(with)g(the)h(curren)o(t)195 1945 y(line)i(is)g(cleared.)1675
-2044 y([F)l(unction])-1801 b Fh(void)27 b(rl_extend_line_buffer)f
-Fg(\()p Ff(in)o(t)15 b(len)p Fg(\))195 2099 y Ft(Ensure)g(that)g
-Fs(rl_line_buffer)e Ft(has)i(enough)g(space)h(to)e(hold)h
-Fj(len)g Ft(c)o(haracters,)f(p)q(ossibly)g(real-)195
-2154 y(lo)q(cating)g(it)g(if)h(necessary)l(.)1675 2253
-y([F)l(unction])-1801 b Fh(int)27 b(rl_initialize)d Fg(\()p
-Ff(v)o(oid)p Fg(\))195 2308 y Ft(Initialize)17 b(or)h(re-initialize)f
-(Readline's)h(in)o(ternal)g(state.)28 b(It's)18 b(not)g(strictly)f
-(necessary)i(to)f(call)195 2362 y(this;)c Fs(readline\(\))g
-Ft(calls)g(it)h(b)q(efore)g(reading)g(an)o(y)g(input.)1675
-2461 y([F)l(unction])-1801 b Fh(int)27 b(rl_ding)c Fg(\()p
-Ff(v)o(oid)p Fg(\))195 2516 y Ft(Ring)15 b(the)g(terminal)f(b)q(ell,)h
-(ob)q(eying)g(the)h(setting)e(of)h Fs(bell-style)p Ft(.)1675
-2615 y([F)l(unction])-1801 b Fh(int)27 b(rl_alphabetic)d
-Fg(\()p Ff(in)o(t)16 b(c)p Fg(\))195 2670 y Ft(Return)g(1)f(if)f
-Fj(c)k Ft(is)d(an)g(alphab)q(etic)g(c)o(haracter.)p eop
-end
-%%Page: 41 45
-TeXDict begin 41 44 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)14
-b(with)g(GNU)h(Readline)842 b(41)1675 149 y([F)l(unction])-1801
+1868 y([F)l(unction])-1801 b Fh(void)27 b(rl_free)d Fg(\()p
+Ff(v)o(oid)15 b(*mem)p Fg(\))195 1923 y Ft(Deallo)q(cate)9
+b(the)i(memory)f(p)q(oin)o(ted)h(to)f(b)o(y)g Fk(mem)p
+Ft(.)18 b Fk(mem)11 b Ft(m)o(ust)f(ha)o(v)o(e)g(b)q(een)i(allo)q(cated)
+e(b)o(y)g Fs(malloc)p Ft(.)1675 2028 y([F)l(unction])-1801
+b Fh(void)27 b(rl_extend_line_buffer)f Fg(\()p Ff(in)o(t)15
+b(len)p Fg(\))195 2083 y Ft(Ensure)f(that)f Fs(rl_line_buffer)f
+Ft(has)i(enough)g(space)g(to)f(hold)h Fk(len)g Ft(c)o(haracters,)f
+(reallo)q(cating)f(it)195 2137 y(if)j(necessary)l(.)1675
+2242 y([F)l(unction])-1801 b Fh(int)27 b(rl_initialize)d
+Fg(\()p Ff(v)o(oid)p Fg(\))195 2297 y Ft(Initialize)17
+b(or)h(re-initialize)f(Readline's)h(in)o(ternal)g(state.)28
+b(It's)18 b(not)g(strictly)f(necessary)i(to)f(call)195
+2351 y(this;)c Fs(readline\(\))g Ft(calls)g(it)h(b)q(efore)g(reading)g
+(an)o(y)g(input.)1675 2456 y([F)l(unction])-1801 b Fh(int)27
+b(rl_ding)c Fg(\()p Ff(v)o(oid)p Fg(\))195 2511 y Ft(Ring)15
+b(the)g(terminal)f(b)q(ell,)h(ob)q(eying)g(the)h(setting)e(of)h
+Fs(bell-style)p Ft(.)1675 2615 y([F)l(unction])-1801
+b Fh(int)27 b(rl_alphabetic)d Fg(\()p Ff(in)o(t)16 b(c)p
+Fg(\))195 2670 y Ft(Return)g(1)f(if)f Fk(c)k Ft(is)d(an)g(alphab)q
+(etic)g(c)o(haracter.)p eop end
+%%Page: 46 50
+TeXDict begin 46 49 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)14
+b(with)g(GNU)h(Readline)842 b(46)1675 149 y([F)l(unction])-1801
b Fh(void)27 b(rl_display_match_list)f Fg(\()p Ff(c)o(har)15
b(**matc)o(hes,)g(in)o(t)h(len,)g(in)o(t)g(max)p Fg(\))195
204 y Ft(A)h(con)o(v)o(enience)h(function)f(for)g(displa)o(ying)f(a)h
(v)m(alue)g(of)f Fs(completion-display-width)p Ft(,)e(the)j(v)m(alue)
195 588 y(of)j(the)g(en)o(vironmen)o(t)g(v)m(ariable)f
Fs(COLUMNS)p Ft(,)g(or)h(the)g(screen)h(width,)e(in)h(that)g(order.)137
-687 y(The)i(follo)o(wing)c(are)j(implemen)o(ted)g(as)g(macros,)f
+676 y(The)i(follo)o(wing)c(are)j(implemen)o(ted)g(as)g(macros,)f
(de\014ned)i(in)f Fs(chardefs.h)p Ft(.)21 b(Applications)15
-b(should)75 742 y(refrain)f(from)h(using)g(them.)1675
-841 y([F)l(unction])-1801 b Fh(int)27 b(_rl_uppercase_p)e
-Fg(\()p Ff(in)o(t)15 b(c)p Fg(\))195 895 y Ft(Return)h(1)f(if)f
-Fj(c)k Ft(is)d(an)g(upp)q(ercase)i(alphab)q(etic)d(c)o(haracter.)1675
-994 y([F)l(unction])-1801 b Fh(int)27 b(_rl_lowercase_p)e
-Fg(\()p Ff(in)o(t)15 b(c)p Fg(\))195 1049 y Ft(Return)h(1)f(if)f
-Fj(c)k Ft(is)d(a)g(lo)o(w)o(ercase)f(alphab)q(etic)h(c)o(haracter.)1675
-1148 y([F)l(unction])-1801 b Fh(int)27 b(_rl_digit_p)d
-Fg(\()p Ff(in)o(t)16 b(c)p Fg(\))195 1203 y Ft(Return)g(1)f(if)f
-Fj(c)k Ft(is)d(a)g(n)o(umeric)g(c)o(haracter.)1675 1302
+b(should)75 731 y(refrain)f(from)h(using)g(them.)1675
+819 y([F)l(unction])-1801 b Fh(int)27 b(_rl_uppercase_p)e
+Fg(\()p Ff(in)o(t)15 b(c)p Fg(\))195 874 y Ft(Return)h(1)f(if)f
+Fk(c)k Ft(is)d(an)g(upp)q(ercase)i(alphab)q(etic)d(c)o(haracter.)1675
+962 y([F)l(unction])-1801 b Fh(int)27 b(_rl_lowercase_p)e
+Fg(\()p Ff(in)o(t)15 b(c)p Fg(\))195 1017 y Ft(Return)h(1)f(if)f
+Fk(c)k Ft(is)d(a)g(lo)o(w)o(ercase)f(alphab)q(etic)h(c)o(haracter.)1675
+1105 y([F)l(unction])-1801 b Fh(int)27 b(_rl_digit_p)d
+Fg(\()p Ff(in)o(t)16 b(c)p Fg(\))195 1160 y Ft(Return)g(1)f(if)f
+Fk(c)k Ft(is)d(a)g(n)o(umeric)g(c)o(haracter.)1675 1248
y([F)l(unction])-1801 b Fh(int)27 b(_rl_to_upper)d Fg(\()p
-Ff(in)o(t)16 b(c)p Fg(\))195 1357 y Ft(If)c Fj(c)j Ft(is)c(a)h(lo)o(w)o
+Ff(in)o(t)16 b(c)p Fg(\))195 1303 y Ft(If)c Fk(c)j Ft(is)c(a)h(lo)o(w)o
(ercase)e(alphab)q(etic)i(c)o(haracter,)f(return)h(the)g(corresp)q
-(onding)g(upp)q(ercase)h(c)o(haracter.)1675 1456 y([F)l(unction])-1801
+(onding)g(upp)q(ercase)h(c)o(haracter.)1675 1391 y([F)l(unction])-1801
b Fh(int)27 b(_rl_to_lower)d Fg(\()p Ff(in)o(t)16 b(c)p
-Fg(\))195 1511 y Ft(If)f Fj(c)i Ft(is)d(an)g(upp)q(ercase)i(alphab)q
+Fg(\))195 1446 y Ft(If)f Fk(c)i Ft(is)d(an)g(upp)q(ercase)i(alphab)q
(etic)e(c)o(haracter,)g(return)g(the)h(corresp)q(onding)f(lo)o(w)o
-(ercase)f(c)o(harac-)195 1565 y(ter.)1675 1664 y([F)l(unction])-1801
+(ercase)f(c)o(harac-)195 1500 y(ter.)1675 1589 y([F)l(unction])-1801
b Fh(int)27 b(_rl_digit_value)e Fg(\()p Ff(in)o(t)15
-b(c)p Fg(\))195 1719 y Ft(If)g Fj(c)k Ft(is)14 b(a)h(n)o(um)o(b)q(er,)g
-(return)g(the)h(v)m(alue)f(it)g(represen)o(ts.)75 1822
+b(c)p Fg(\))195 1643 y Ft(If)g Fk(c)k Ft(is)14 b(a)h(n)o(um)o(b)q(er,)g
+(return)g(the)h(v)m(alue)f(it)g(represen)o(ts.)75 1740
y Fi(2.4.11)29 b(Miscellaneous)22 b(F)-5 b(unctions)1675
-1924 y Ft([F)l(unction])-1801 b Fh(int)27 b(rl_macro_bind)d
+1836 y Ft([F)l(unction])-1801 b Fh(int)27 b(rl_macro_bind)d
Fg(\()p Ff(const)16 b(c)o(har)g(*k)o(eyseq,)h(const)f(c)o(har)f
-(*macro,)283 1979 y(Keymap)g(map)p Fg(\))195 2034 y Ft(Bind)d(the)g(k)o
-(ey)f(sequence)i Fj(k)o(eyseq)g Ft(to)e(in)o(v)o(ok)o(e)f(the)i(macro)f
-Fj(macro)p Ft(.)18 b(The)12 b(binding)f(is)g(p)q(erformed)h(in)195
-2088 y Fj(map)p Ft(.)19 b(When)14 b Fj(k)o(eyseq)h Ft(is)e(in)o(v)o(ok)
-o(ed,)g(the)h Fj(macro)i Ft(will)c(b)q(e)i(inserted)g(in)o(to)f(the)h
-(line.)19 b(This)13 b(function)195 2143 y(is)i(deprecated;)g(use)h
-Fs(rl_generic_bind\(\))d Ft(instead.)1675 2242 y([F)l(unction])-1801
+(*macro,)283 1891 y(Keymap)g(map)p Fg(\))195 1946 y Ft(Bind)d(the)g(k)o
+(ey)f(sequence)i Fk(k)o(eyseq)g Ft(to)e(in)o(v)o(ok)o(e)f(the)i(macro)f
+Fk(macro)p Ft(.)18 b(The)12 b(binding)f(is)g(p)q(erformed)h(in)195
+2000 y Fk(map)p Ft(.)19 b(When)14 b Fk(k)o(eyseq)h Ft(is)e(in)o(v)o(ok)
+o(ed,)g(the)h Fk(macro)i Ft(will)c(b)q(e)i(inserted)g(in)o(to)f(the)h
+(line.)19 b(This)13 b(function)195 2055 y(is)i(deprecated;)g(use)h
+Fs(rl_generic_bind)d Ft(instead.)1675 2143 y([F)l(unction])-1801
b Fh(void)27 b(rl_macro_dumper)e Fg(\()p Ff(in)o(t)16
-b(readable)p Fg(\))195 2297 y Ft(Prin)o(t)d(the)g(k)o(ey)h(sequences)g
+b(readable)p Fg(\))195 2198 y Ft(Prin)o(t)d(the)g(k)o(ey)h(sequences)g
(b)q(ound)h(to)e(macros)g(and)g(their)g(v)m(alues,)h(using)f(the)h
-(curren)o(t)g(k)o(eymap,)195 2352 y(to)h Fs(rl_outstream)p
-Ft(.)k(If)d Fj(readable)i Ft(is)d(non-zero,)h(the)g(list)e(is)h
-(formatted)g(in)g(suc)o(h)h(a)f(w)o(a)o(y)g(that)g(it)195
-2407 y(can)g(b)q(e)h(made)f(part)g(of)g(an)g Fs(inputrc)f
-Ft(\014le)h(and)h(re-read.)1675 2506 y([F)l(unction])-1801
+(curren)o(t)g(k)o(eymap,)195 2253 y(to)20 b Fs(rl_outstream)p
+Ft(.)36 b(If)21 b(the)g(application)f(has)h(assigned)f(a)h(v)m(alue)g
+(to)f Fs(rl_macro_display_)195 2308 y(hook)p Ft(,)d Fs(rl_macro_dumper)
+f Ft(calls)h(it)g(instead)g(of)g(prin)o(ting)g(an)o(ything.)27
+b(If)18 b Fk(readable)i Ft(is)d(greater)195 2363 y(than)d(zero,)g(the)g
+(list)e(is)i(formatted)e(in)i(suc)o(h)h(a)e(w)o(a)o(y)g(that)g(it)h
+(can)g(b)q(e)g(made)g(part)g(of)f(an)h Fs(inputrc)195
+2417 y Ft(\014le)h(and)h(re-read.)1675 2506 y([F)l(unction])-1801
b Fh(int)27 b(rl_variable_bind)e Fg(\()p Ff(const)16
b(c)o(har)f(*v)m(ariable,)h(const)g(c)o(har)g(*v)m(alue)p
-Fg(\))195 2560 y Ft(Mak)o(e)e(the)g(Readline)h(v)m(ariable)f
-Fj(v)m(ariable)i Ft(ha)o(v)o(e)f Fj(v)m(alue)p Ft(.)k(This)c(b)q(eha)o
-(v)o(es)f(as)g(if)g(the)h(readline)f(com-)195 2615 y(mand)h(`)p
-Fs(set)g Fl(variable)f(value)p Ft(')g(had)i(b)q(een)g(executed)h(in)e
-(an)g Fs(inputrc)g Ft(\014le)g(\(see)g(Section)h(1.3.1)195
-2670 y([Readline)f(Init)g(File)g(Syn)o(tax],)f(page)h(4\).)p
-eop end
-%%Page: 42 46
-TeXDict begin 42 45 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)14
-b(with)g(GNU)h(Readline)842 b(42)1675 149 y([F)l(unction])-1801
+Fg(\))195 2560 y Ft(Mak)o(e)d(the)g(Readline)g(v)m(ariable)g
+Fk(v)m(ariable)i Ft(ha)o(v)o(e)e Fk(v)m(alue)p Ft(.)19
+b(This)13 b(b)q(eha)o(v)o(es)h(as)f(if)f(the)i(Readline)f(com-)195
+2615 y(mand)i(`)p Fs(set)g Fl(variable)f(value)p Ft(')g(had)i(b)q(een)g
+(executed)h(in)e(an)g Fs(inputrc)g Ft(\014le)g(\(see)g(Section)h(1.3.1)
+195 2670 y([Readline)f(Init)g(File)g(Syn)o(tax],)f(page)h(4\))f(or)h(b)
+o(y)g Fs(rl_parse_and_bind)p Ft(.)p eop end
+%%Page: 47 51
+TeXDict begin 47 50 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)14
+b(with)g(GNU)h(Readline)842 b(47)1675 149 y([F)l(unction])-1801
b Fh(char)27 b(*)f(rl_variable_value)f Fg(\()p Ff(const)16
b(c)o(har)g(*v)m(ariable)p Fg(\))195 204 y Ft(Return)f(a)g(string)e
(represen)o(ting)h(the)h(v)m(alue)g(of)f(the)h(Readline)g(v)m(ariable)f
-Fj(v)m(ariable)p Ft(.)19 b(F)l(or)14 b(b)q(o)q(olean)195
+Fk(v)m(ariable)p Ft(.)19 b(F)l(or)14 b(b)q(o)q(olean)195
259 y(v)m(ariables,)g(this)h(string)f(is)h(either)g(`)p
-Fs(on)p Ft(')f(or)g(`)p Fs(off)p Ft('.)1675 349 y([F)l(unction])-1801
+Fs(on)p Ft(')f(or)g(`)p Fs(off)p Ft('.)1675 350 y([F)l(unction])-1801
b Fh(void)27 b(rl_variable_dumper)e Fg(\()p Ff(in)o(t)16
-b(readable)p Fg(\))195 404 y Ft(Prin)o(t)d(the)i(readline)f(v)m
-(ariable)f(names)i(and)f(their)g(curren)o(t)g(v)m(alues)h(to)e
-Fs(rl_outstream)p Ft(.)18 b(If)d Fj(read-)195 459 y(able)k
-Ft(is)e(non-zero,)g(the)g(list)f(is)h(formatted)f(in)g(suc)o(h)i(a)e(w)
-o(a)o(y)g(that)h(it)f(can)h(b)q(e)h(made)f(part)f(of)h(an)195
-514 y Fs(inputrc)d Ft(\014le)h(and)h(re-read.)1675 604
-y([F)l(unction])-1801 b Fh(int)27 b(rl_set_paren_blink_timeout)f
-Fg(\()p Ff(in)o(t)16 b(u)p Fg(\))195 658 y Ft(Set)d(the)f(time)g(in)o
+b(readable)p Fg(\))195 404 y Ft(Prin)o(t)21 b(the)h(Readline)h(v)m
+(ariable)e(names)i(and)f(their)g(curren)o(t)g(v)m(alues)g(to)g
+Fs(rl_outstream)p Ft(.)39 b(If)195 459 y Fk(readable)18
+b Ft(is)d(non-zero,)h(the)g(list)f(is)g(formatted)g(in)g(suc)o(h)h(a)g
+(w)o(a)o(y)f(that)g(it)g(can)h(b)q(e)g(made)g(part)f(of)195
+514 y(an)g Fs(inputrc)f Ft(\014le)i(and)f(re-read.)1675
+604 y([F)l(unction])-1801 b Fh(int)27 b(rl_set_paren_blink_timeout)f
+Fg(\()p Ff(in)o(t)16 b(u)p Fg(\))195 659 y Ft(Set)d(the)f(time)g(in)o
(terv)m(al)g(\(in)g(microseconds\))g(that)g(Readline)h(w)o(aits)e(when)
-i(sho)o(wing)e(a)i(balancing)195 713 y(c)o(haracter)h(when)i
+i(sho)o(wing)e(a)i(balancing)195 714 y(c)o(haracter)h(when)i
Fs(blink-matching-paren)d Ft(has)i(b)q(een)h(enabled.)1675
-803 y([F)l(unction])-1801 b Fh(char)27 b(*)f(rl_get_termcap)f
-Fg(\()p Ff(const)16 b(c)o(har)f(*cap)p Fg(\))195 858
+804 y([F)l(unction])-1801 b Fh(char)27 b(*)f(rl_get_termcap)f
+Fg(\()p Ff(const)16 b(c)o(har)f(*cap)p Fg(\))195 859
y Ft(Retriev)o(e)e(the)h(string)e(v)m(alue)i(of)f(the)h(termcap)f
-(capabilit)o(y)f Fj(cap)p Ft(.)19 b(Readline)14 b(fetc)o(hes)g(the)f
-(termcap)195 913 y(en)o(try)j(for)h(the)f(curren)o(t)h(terminal)f(name)
+(capabilit)o(y)f Fk(cap)p Ft(.)19 b(Readline)14 b(fetc)o(hes)g(the)f
+(termcap)195 914 y(en)o(try)j(for)h(the)f(curren)o(t)h(terminal)f(name)
g(and)h(uses)g(those)g(capabilities)e(to)h(mo)o(v)o(e)g(around)h(the)
-195 968 y(screen)11 b(line)f(and)h(p)q(erform)f(other)g(terminal-sp)q
+195 969 y(screen)11 b(line)f(and)h(p)q(erform)f(other)g(terminal-sp)q
(eci\014c)h(op)q(erations,)f(lik)o(e)g(erasing)f(a)i(line.)18
-b(Readline)195 1022 y(do)q(es)g(not)f(use)h(all)e(of)h(a)g(terminal's)f
-(capabilities,)g(and)i(this)f(function)g(will)f(return)i(v)m(alues)g
-(for)195 1077 y(only)d(those)g(capabilities)e(Readline)j(uses.)1675
-1167 y([F)l(unction])-1801 b Fh(void)27 b(rl_clear_history)e
-Fg(\()p Ff(v)o(oid)p Fg(\))195 1222 y Ft(Clear)13 b(the)g(history)g
-(list)f(b)o(y)i(deleting)f(all)g(of)g(the)g(en)o(tries,)g(in)h(the)f
-(same)h(manner)f(as)g(the)h(History)195 1277 y(library's)20
-b Fs(clear_history\(\))f Ft(function.)38 b(This)21 b(di\013ers)g(from)g
-Fs(clear_history)e Ft(b)q(ecause)k(it)195 1332 y(frees)15
-b(priv)m(ate)g(data)g(Readline)g(sa)o(v)o(es)g(in)g(the)g(history)f
-(list.)75 1430 y Fi(2.4.12)29 b(Alternate)21 b(In)n(terface)75
-1503 y Ft(An)11 b(alternate)f(in)o(terface)g(is)g(a)o(v)m(ailable)g(to)
-g(plain)g Fs(readline\(\))p Ft(.)17 b(Some)11 b(applications)f(need)h
-(to)f(in)o(terlea)o(v)o(e)75 1558 y(k)o(eyb)q(oard)18
-b(I/O)g(with)f(\014le,)h(device,)h(or)e(windo)o(w)g(system)g(I/O,)h(t)o
-(ypically)e(b)o(y)i(using)g(a)f(main)g(lo)q(op)h(to)75
-1613 y Fs(select\(\))j Ft(on)h(v)m(arious)g(\014le)g(descriptors.)40
-b(T)l(o)22 b(accommo)q(date)g(this)g(need,)i(readline)e(can)g(also)f(b)
-q(e)75 1668 y(in)o(v)o(ok)o(ed)15 b(as)g(a)g(`callbac)o(k')f(function)i
-(from)e(an)i(ev)o(en)o(t)f(lo)q(op.)21 b(There)16 b(are)f(functions)g
-(a)o(v)m(ailable)g(to)f(mak)o(e)75 1723 y(this)h(easy)l(.)1675
-1813 y([F)l(unction])-1801 b Fh(void)27 b(rl_callback_handler_insta)q
-(ll)f Fg(\()p Ff(const)16 b(c)o(har)f(*prompt,)283 1868
-y(rl)p 320 1868 15 3 v 21 w(v)o(cpfunc)p 509 1868 V 21
-w(t)i(*lhandler)p Fg(\))195 1922 y Ft(Set)12 b(up)h(the)g(terminal)e
-(for)h(readline)g(I/O)h(and)f(displa)o(y)g(the)g(initial)f(expanded)i
-(v)m(alue)g(of)f Fj(prompt)p Ft(.)195 1977 y(Sa)o(v)o(e)k(the)h(v)m
-(alue)f(of)g Fj(lhandler)j Ft(to)d(use)h(as)f(a)g(handler)h(function)f
-(to)g(call)f(when)i(a)f(complete)g(line)195 2032 y(of)h(input)h(has)g
-(b)q(een)h(en)o(tered.)28 b(The)18 b(handler)g(function)g(receiv)o(es)f
-(the)h(text)g(of)f(the)h(line)g(as)f(an)195 2087 y(argumen)o(t.)i(As)14
-b(with)f Fs(readline\(\))p Ft(,)g(the)h(handler)h(function)f(should)g
-Fs(free)f Ft(the)i(line)f(when)g(it)g(it)195 2142 y(\014nished)i(with)e
-(it.)1675 2232 y([F)l(unction])-1801 b Fh(void)27 b
+b(Readline)195 1024 y(do)q(es)11 b(not)g(fetc)o(h)f(or)h(use)g(all)f
+(of)g(a)h(terminal's)e(capabilities,)h(and)h(this)f(function)h(will)e
+(return)i(v)m(alues)195 1078 y(for)k(only)f(those)h(capabilities)f
+(Readline)h(fetc)o(hes.)1675 1169 y([F)l(unction])-1801
+b Fh(void)27 b(rl_reparse_colors)e Fg(\()p Ff(v)o(oid)p
+Fg(\))195 1224 y Ft(Read)16 b(or)e(re-read)i(color)e(de\014nitions)h
+(from)f Fs(LS_COLORS)p Ft(.)1675 1314 y([F)l(unction])-1801
+b Fh(void)27 b(rl_clear_history)e Fg(\()p Ff(v)o(oid)p
+Fg(\))195 1369 y Ft(Clear)13 b(the)g(history)g(list)f(b)o(y)i(deleting)
+f(all)g(of)g(the)g(en)o(tries,)g(in)h(the)f(same)h(manner)f(as)g(the)h
+(History)195 1424 y(library's)20 b Fs(clear_history\(\))f
+Ft(function.)38 b(This)21 b(di\013ers)g(from)g Fs(clear_history)e
+Ft(b)q(ecause)k(it)195 1479 y(frees)15 b(priv)m(ate)g(data)g(Readline)g
+(sa)o(v)o(es)g(in)g(the)g(history)f(list.)1675 1569 y([F)l(unction])
+-1801 b Fh(void)27 b(rl_activate_mark)e Fg(\()p Ff(v)o(oid)p
+Fg(\))195 1624 y Ft(Enable)20 b(an)g Fj(active)j Ft(region.)34
+b(When)20 b(this)f(is)h(enabled,)h(the)f(text)g(b)q(et)o(w)o(een)g(p)q
+(oin)o(t)f(and)i(mark)195 1679 y(\(the)13 b Fk(region)p
+Ft(\))f(is)g(displa)o(y)o(ed)g(using)h(the)g(color)f(sp)q(eci\014ed)i
+(b)o(y)f(the)g(v)m(alue)g(of)g(the)g Fs(active-region-)195
+1733 y(start-color)18 b Ft(v)m(ariable)i(\(a)f Fk(face)s
+Ft(\).)33 b(The)20 b(default)g(face)g(is)f(the)h(terminal's)f(standout)
+g(mo)q(de.)195 1788 y(This)14 b(is)h(called)f(b)o(y)g(v)m(arious)h
+(Readline)g(functions)f(that)g(set)h(the)f(mark)h(and)f(insert)h(text,)
+f(and)g(is)195 1843 y(a)o(v)m(ailable)g(for)g(applications)g(to)h
+(call.)1675 1933 y([F)l(unction])-1801 b Fh(void)27 b
+(rl_deactivate_mark)e Fg(\()p Ff(v)o(oid)p Fg(\))195
+1988 y Ft(T)l(urn)15 b(o\013)g(the)g(activ)o(e)f(region.)1675
+2079 y([F)l(unction])-1801 b Fh(void)27 b(rl_keep_mark_active)e
+Fg(\()p Ff(v)o(oid)p Fg(\))195 2134 y Ft(Indicate)e(that)e(the)h(mark)g
+(should)g(remain)g(activ)o(e)f(when)i(the)f(curren)o(t)h(Readline)f
+(function)195 2188 y(completes)13 b(and)h(after)e(redispla)o(y)h(o)q
+(ccurs.)19 b(In)14 b(most)f(cases,)g(the)h(mark)e(remains)h(activ)o(e)g
+(for)f(only)195 2243 y(the)j(duration)g(of)g(a)f(single)h(bindable)g
+(Readline)h(function.)1675 2334 y([F)l(unction])-1801
+b Fh(int)27 b(rl_mark_active_p)e Fg(\()p Ff(v)o(oid)p
+Fg(\))195 2388 y Ft(Return)16 b(a)f(non-zero)g(v)m(alue)h(if)e(the)i
+(mark)e(is)h(curren)o(tly)f(activ)o(e;)g(zero)h(otherwise.)75
+2487 y Fi(2.4.12)29 b(Alternate)21 b(In)n(terface)75
+2560 y Ft(F)l(or)e(applications)f(that)g(need)j(more)d(gran)o(ular)g
+(con)o(trol)g(than)i(plain)e Fs(readline\(\))g Ft(pro)o(vides,)i(there)
+75 2615 y(is)i(an)g(alternate)e(in)o(terface.)40 b(Some)22
+b(applications)f(need)i(to)e(in)o(terlea)o(v)o(e)g(k)o(eyb)q(oard)g
+(I/O)i(with)e(\014le,)75 2670 y(device,)c(or)f(windo)o(w)f(system)h
+(I/O,)h(t)o(ypically)d(b)o(y)j(using)f(a)g(main)g(lo)q(op)g(to)f
+Fs(select\(\))h Ft(on)g(v)m(arious)g(\014le)p eop end
+%%Page: 48 52
+TeXDict begin 48 51 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)14
+b(with)g(GNU)h(Readline)842 b(48)75 149 y(descriptors.)30
+b(T)l(o)19 b(accommo)q(date)f(this)g(use)h(case,)g(Readline)h(can)f
+(also)e(b)q(e)j(in)o(v)o(ok)o(ed)e(as)g(a)h(`callbac)o(k')75
+204 y(function)c(from)f(an)i(ev)o(en)o(t)f(lo)q(op.)k(There)c(are)g
+(functions)g(a)o(v)m(ailable)f(to)h(mak)o(e)f(this)h(easy)l(.)1675
+295 y([F)l(unction])-1801 b Fh(void)27 b(rl_callback_handler_insta)q
+(ll)f Fg(\()p Ff(const)16 b(c)o(har)f(*prompt,)283 350
+y(rl)p 320 350 15 3 v 21 w(v)o(cpfunc)p 509 350 V 21
+w(t)i(*line)p 669 350 V 21 w(handler)p Fg(\))195 405
+y Ft(Set)11 b(up)h(the)f(terminal)f(for)h(Readline)h(I/O)f(and)h
+(displa)o(y)e(the)i(initial)d(expanded)j(v)m(alue)g(of)f
+Fk(prompt)p Ft(.)195 460 y(Sa)o(v)o(e)17 b(the)g(v)m(alue)g(of)g
+Fk(line)p 629 460 14 2 v 19 w(handler)k Ft(to)16 b(use)h(as)g(a)g
+(handler)g(function)g(to)f(call)g(when)i(a)e(complete)195
+514 y(line)g(of)g(input)h(has)f(b)q(een)i(en)o(tered.)24
+b(The)17 b(handler)f(function)h(receiv)o(es)f(the)g(text)g(of)h(the)f
+(line)g(as)195 569 y(an)g(argumen)o(t.)23 b(As)16 b(with)f
+Fs(readline\(\))p Ft(,)g(the)i(handler)f(function)g(should)g
+Fs(free)g Ft(the)h(line)e(when)195 624 y(it)f(it)h(\014nished)h(with)e
+(it.)1675 715 y([F)l(unction])-1801 b Fh(void)27 b
(rl_callback_read_char)f Fg(\()p Ff(v)o(oid)p Fg(\))195
-2286 y Ft(Whenev)o(er)17 b(an)g(application)e(determines)i(that)f(k)o
+770 y Ft(Whenev)o(er)17 b(an)g(application)e(determines)i(that)f(k)o
(eyb)q(oard)h(input)g(is)f(a)o(v)m(ailable,)g(it)g(should)h(call)195
-2341 y Fs(rl_callback_read_char\(\))p Ft(,)8 b(whic)o(h)j(will)e(read)i
+824 y Fs(rl_callback_read_char\(\))p Ft(,)8 b(whic)o(h)j(will)e(read)i
(the)g(next)g(c)o(haracter)f(from)g(the)h(curren)o(t)g(input)195
-2396 y(source.)20 b(If)14 b(that)f(c)o(haracter)g(completes)h(the)g
+879 y(source.)20 b(If)14 b(that)f(c)o(haracter)g(completes)h(the)g
(line,)f Fs(rl_callback_read_char)e Ft(will)i(in)o(v)o(ok)o(e)g(the)195
-2451 y Fj(lhandler)23 b Ft(function)e(installed)e(b)o(y)h
-Fs(rl_callback_handler_install)d Ft(to)j(pro)q(cess)g(the)h(line.)195
-2506 y(Before)h(calling)e(the)i Fj(lhandler)i Ft(function,)f(the)f
-(terminal)e(settings)g(are)i(reset)f(to)g(the)h(v)m(alues)195
-2560 y(they)g(had)g(b)q(efore)g(calling)e Fs
-(rl_callback_handler_install)o Ft(.)37 b(If)22 b(the)f
-Fj(lhandler)k Ft(function)195 2615 y(returns,)14 b(and)g(the)g(line)g
-(handler)g(remains)f(installed,)g(the)h(terminal)f(settings)g(are)g(mo)
-q(di\014ed)i(for)195 2670 y(Readline's)g(use)h(again.)i
-Fs(EOF)d Ft(is)g(indicated)g(b)o(y)g(calling)f Fj(lhandler)k
-Ft(with)d(a)g Fs(NULL)f Ft(line.)p eop end
-%%Page: 43 47
-TeXDict begin 43 46 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)14
-b(with)g(GNU)h(Readline)842 b(43)1675 149 y([F)l(unction])-1801
-b Fh(void)27 b(rl_callback_sigcleanup)f Fg(\()p Ff(v)o(oid)p
-Fg(\))195 204 y Ft(Clean)12 b(up)h(an)o(y)g(in)o(ternal)e(state)h(the)h
-(callbac)o(k)f(in)o(terface)g(uses)h(to)f(main)o(tain)f(state)h(b)q(et)
-o(w)o(een)h(calls)195 259 y(to)j(rl)p 286 259 14 2 v
-20 w(callbac)o(k)p 466 259 V 19 w(read)p 571 259 V 20
-w(c)o(har)h(\(e.g.,)f(the)h(state)f(of)h(an)o(y)f(activ)o(e)h(incremen)
-o(tal)f(searc)o(hes\).)25 b(This)16 b(is)195 314 y(in)o(tended)g(to)g
-(b)q(e)g(used)h(b)o(y)f(applications)f(that)g(wish)h(to)f(p)q(erform)h
-(their)f(o)o(wn)h(signal)f(handling;)195 369 y(Readline's)g(in)o
-(ternal)f(signal)g(handler)h(calls)g(this)f(when)i(appropriate.)1675
-459 y([F)l(unction])-1801 b Fh(void)27 b(rl_callback_handler_remov)q(e)
-e Fg(\()p Ff(v)o(oid)p Fg(\))195 514 y Ft(Restore)18
-b(the)g(terminal)e(to)i(its)f(initial)f(state)h(and)h(remo)o(v)o(e)f
-(the)h(line)g(handler.)28 b(Y)l(ou)18 b(ma)o(y)f(call)195
-568 y(this)12 b(function)h(from)f(within)g(a)g(callbac)o(k)g(as)g(w)o
-(ell)g(as)g(indep)q(enden)o(tly)l(.)21 b(If)13 b(the)f
-Fj(lhandler)k Ft(installed)195 623 y(b)o(y)d Fs
-(rl_callback_handler_ins)o(tall)d Ft(do)q(es)j(not)f(exit)g(the)h
-(program,)e(either)i(this)f(function)g(or)195 678 y(the)k(function)f
-(referred)h(to)f(b)o(y)h(the)g(v)m(alue)g(of)f Fs
-(rl_deprep_term_function)d Ft(should)k(b)q(e)g(called)195
-733 y(b)q(efore)f(the)h(program)e(exits)g(to)h(reset)g(the)g(terminal)f
-(settings.)75 831 y Fi(2.4.13)29 b(A)21 b(Readline)g(Example)75
-905 y Ft(Here)c(is)g(a)f(function)h(whic)o(h)g(c)o(hanges)g(lo)o(w)o
+934 y Fk(line)p 269 934 V 20 w(handler)h Ft(function)c(installed)g(b)o
+(y)g Fs(rl_callback_handler_install)d Ft(to)j(pro)q(cess)h(the)g(line.)
+195 989 y(Before)16 b(calling)e(the)i Fk(line)p 635 989
+V 20 w(handler)j Ft(function,)c(Readline)h(resets)g(the)g(terminal)e
+(settings)h(to)g(the)195 1044 y(v)m(alues)j(they)h(had)f(b)q(efore)g
+(calling)f Fs(rl_callback_handler_install)p Ft(.)25 b(If)19
+b(the)f Fk(line)p 1706 1044 V 20 w(handler)195 1098 y
+Ft(function)g(returns,)h(and)f(the)h(line)f(handler)g(remains)g
+(installed,)g(Readline)g(mo)q(di\014es)h(the)f(ter-)195
+1153 y(minal)d(settings)f(for)h(its)g(use)g(again.)20
+b Fs(EOF)15 b Ft(is)g(indicated)g(b)o(y)h(calling)e Fk(line)p
+1453 1153 V 20 w(handler)19 b Ft(with)14 b(a)i Fs(NULL)195
+1208 y Ft(line.)1675 1299 y([F)l(unction])-1801 b Fh(void)27
+b(rl_callback_sigcleanup)f Fg(\()p Ff(v)o(oid)p Fg(\))195
+1354 y Ft(Clean)12 b(up)h(an)o(y)g(in)o(ternal)e(state)h(the)h(callbac)
+o(k)f(in)o(terface)g(uses)h(to)f(main)o(tain)f(state)h(b)q(et)o(w)o
+(een)h(calls)195 1408 y(to)j(rl)p 286 1408 V 20 w(callbac)o(k)p
+466 1408 V 19 w(read)p 571 1408 V 20 w(c)o(har)h(\(e.g.,)f(the)h(state)
+f(of)h(an)o(y)f(activ)o(e)h(incremen)o(tal)f(searc)o(hes\).)25
+b(This)16 b(is)195 1463 y(in)o(tended)g(to)g(b)q(e)g(used)h(b)o(y)f
+(applications)f(that)g(wish)h(to)f(p)q(erform)h(their)f(o)o(wn)h
+(signal)f(handling;)195 1518 y(Readline's)g(in)o(ternal)f(signal)g
+(handler)h(calls)g(this)f(when)i(appropriate.)1675 1609
+y([F)l(unction])-1801 b Fh(void)27 b(rl_callback_handler_remov)q(e)e
+Fg(\()p Ff(v)o(oid)p Fg(\))195 1664 y Ft(Restore)12 b(the)g(terminal)f
+(to)g(its)g(initial)g(state)g(and)h(remo)o(v)o(e)f(the)h(line)g
+(handler.)19 b(Y)l(ou)12 b(ma)o(y)f(call)h(this)195 1719
+y(function)h(from)g(within)g(a)g(callbac)o(k)f(as)h(w)o(ell)g(as)g
+(indep)q(enden)o(tly)l(.)20 b(If)14 b(the)g Fk(line)p
+1526 1719 V 19 w(handler)j Ft(installed)195 1773 y(b)o(y)e
+Fs(rl_callback_handler_inst)o(all)d Ft(do)q(es)j(not)f(exit)h(the)g
+(program,)e(y)o(our)h(program)g(should)195 1828 y(call)g(either)h(this)
+f(function)h(or)f(the)h(function)g(referred)g(to)f(b)o(y)h(the)g(v)m
+(alue)h(of)e Fs(rl_deprep_term_)195 1883 y(function)g
+Ft(b)q(efore)i(the)f(program)f(exits)g(to)h(reset)g(the)g(terminal)f
+(settings.)75 1982 y Fi(2.4.13)29 b(A)21 b(Readline)g(Example)75
+2055 y Ft(Here)c(is)g(a)f(function)h(whic)o(h)g(c)o(hanges)g(lo)o(w)o
(ercase)e(c)o(haracters)h(to)h(their)f(upp)q(ercase)i(equiv)m(alen)o
-(ts,)f(and)75 960 y(upp)q(ercase)i(c)o(haracters)e(to)g(lo)o(w)o
+(ts,)f(and)75 2110 y(upp)q(ercase)i(c)o(haracters)e(to)g(lo)o(w)o
(ercase.)26 b(If)17 b(this)h(function)f(w)o(as)g(b)q(ound)i(to)e(`)p
Fs(M-c)p Ft(',)f(then)i(t)o(yping)f(`)p Fs(M-c)p Ft(')75
-1014 y(w)o(ould)e(c)o(hange)h(the)g(case)g(of)f(the)h(c)o(haracter)f
+2165 y(w)o(ould)e(c)o(hange)h(the)g(case)g(of)f(the)h(c)o(haracter)f
(under)h(p)q(oin)o(t.)21 b(T)o(yping)16 b(`)p Fs(M-1)e(0)h(M-c)p
-Ft(')g(w)o(ould)g(c)o(hange)h(the)75 1069 y(case)f(of)g(the)g(follo)o
+Ft(')g(w)o(ould)g(c)o(hange)h(the)75 2220 y(case)f(of)g(the)g(follo)o
(wing)e(10)i(c)o(haracters,)f(lea)o(ving)g(the)h(cursor)g(on)g(the)g
-(last)g(c)o(haracter)f(c)o(hanged.)195 1136 y Fs(/*)24
+(last)g(c)o(haracter)f(c)o(hanged.)195 2286 y Fs(/*)24
b(Invert)f(the)g(case)g(of)h(the)f(COUNT)h(following)e(characters.)h
-(*/)195 1191 y(int)195 1245 y(invert_case_line)f(\(count,)h(key\))314
-1300 y(int)h(count,)f(key;)195 1355 y({)243 1410 y(register)f(int)i
-(start,)f(end,)g(i;)243 1519 y(start)g(=)h(rl_point;)243
-1629 y(if)f(\(rl_point)g(>=)h(rl_end\))290 1684 y(return)f(\(0\);)243
-1793 y(if)g(\(count)g(<)h(0\))290 1848 y({)338 1903 y(direction)f(=)h
-(-1;)338 1958 y(count)f(=)h(-count;)290 2012 y(})243
-2067 y(else)290 2122 y(direction)f(=)h(1;)243 2232 y(/*)f(Find)h(the)f
-(end)h(of)f(the)h(range)f(to)g(modify.)g(*/)243 2286
-y(end)g(=)h(start)f(+)h(\(count)f(*)h(direction\);)243
-2396 y(/*)f(Force)g(it)h(to)g(be)f(within)g(range.)g(*/)243
-2451 y(if)g(\(end)h(>)f(rl_end\))290 2506 y(end)h(=)g(rl_end;)243
-2560 y(else)f(if)h(\(end)f(<)h(0\))290 2615 y(end)g(=)g(0;)p
-eop end
-%%Page: 44 48
-TeXDict begin 44 47 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)14
-b(with)g(GNU)h(Readline)842 b(44)243 149 y Fs(if)23 b(\(start)g(==)h
-(end\))290 204 y(return)f(\(0\);)243 314 y(if)g(\(start)g(>)h(end\))290
-369 y({)338 423 y(int)g(temp)f(=)h(start;)338 478 y(start)f(=)h(end;)
-338 533 y(end)g(=)f(temp;)290 588 y(})243 697 y(/*)g(Tell)h(readline)e
-(that)i(we)f(are)h(modifying)e(the)i(line,)314 752 y(so)g(it)f(will)h
-(save)f(the)h(undo)f(information.)f(*/)243 807 y(rl_modifying)g
-(\(start,)h(end\);)243 917 y(for)g(\(i)h(=)f(start;)h(i)f(!=)h(end;)f
-(i++\))290 971 y({)338 1026 y(if)h(\(_rl_uppercase_p)d
-(\(rl_line_buffer[i]\)\))386 1081 y(rl_line_buffer[i])g(=)j
-(_rl_to_lower)e(\(rl_line_buffer[i]\);)338 1136 y(else)h(if)h
-(\(_rl_lowercase_p)e(\(rl_line_buffer[i]\)\))386 1191
-y(rl_line_buffer[i])f(=)j(_rl_to_upper)e(\(rl_line_buffer[i]\);)290
-1245 y(})243 1300 y(/*)h(Move)h(point)f(to)g(on)h(top)f(of)h(the)f
-(last)h(character)e(changed.)h(*/)243 1355 y(rl_point)f(=)i
-(\(direction)f(==)g(1\))h(?)g(end)f(-)h(1)g(:)f(start;)243
-1410 y(return)g(\(0\);)195 1465 y(})75 1581 y Fi(2.4.14)29
-b(Alternate)21 b(In)n(terface)g(Example)75 1654 y Ft(Here)f(is)e(a)h
+(*/)195 2341 y(int)195 2396 y(invert_case_line)f(\(count,)h(key\))314
+2451 y(int)h(count,)f(key;)195 2506 y({)243 2560 y(int)g(start,)g(end,)
+h(i;)243 2670 y(start)f(=)h(rl_point;)p eop end
+%%Page: 49 53
+TeXDict begin 49 52 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)14
+b(with)g(GNU)h(Readline)842 b(49)243 204 y Fs(if)23 b(\(rl_point)g(>=)h
+(rl_end\))290 259 y(return)f(\(0\);)243 369 y(/*)g(Find)h(the)f(end)h
+(of)f(the)h(range)f(to)g(modify.)g(*/)243 423 y(end)g(=)h(start)f(+)h
+(count;)243 533 y(/*)f(Force)g(it)h(to)g(be)f(within)g(range.)g(*/)243
+588 y(if)g(\(end)h(>)f(rl_end\))290 643 y(end)h(=)g(rl_end;)243
+697 y(else)f(if)h(\(end)f(<)h(0\))290 752 y(end)g(=)g(0;)243
+862 y(if)f(\(start)g(==)h(end\))290 917 y(return)f(\(0\);)243
+1026 y(/*)g(For)h(positive)f(arguments,)f(put)h(point)h(after)f(the)g
+(last)h(changed)f(character.)f(For)p 2009 1036 21 42
+v 314 1081 a(negative)h(arguments,)g(put)g(point)g(before)g(the)h(last)
+f(changed)g(character.)f(*/)243 1136 y(rl_point)g(=)i(end;)243
+1245 y(/*)f(Swap)h(start)f(and)g(end)h(if)f(we)h(are)f(moving)g
+(backwards)g(*/)243 1300 y(if)g(\(start)g(>)h(end\))290
+1355 y({)338 1410 y(int)g(temp)f(=)h(start;)338 1465
+y(start)f(=)h(end;)338 1519 y(end)g(=)f(temp;)290 1574
+y(})243 1684 y(/*)g(Tell)h(readline)e(that)i(we)f(are)h(modifying)e
+(the)i(line,)314 1738 y(so)g(it)f(will)h(save)f(the)h(undo)f
+(information.)f(*/)243 1793 y(rl_modifying)g(\(start,)h(end\);)243
+1903 y(for)g(\(i)h(=)f(start;)h(i)f(!=)h(end;)f(i++\))290
+1958 y({)338 2012 y(if)h(\(_rl_uppercase_p)d(\(rl_line_buffer[i]\)\))
+386 2067 y(rl_line_buffer[i])g(=)j(_rl_to_lower)e
+(\(rl_line_buffer[i]\);)338 2122 y(else)h(if)h(\(_rl_lowercase_p)e
+(\(rl_line_buffer[i]\)\))386 2177 y(rl_line_buffer[i])f(=)j
+(_rl_to_upper)e(\(rl_line_buffer[i]\);)290 2232 y(})243
+2341 y(return)h(\(0\);)195 2396 y(})p eop end
+%%Page: 50 54
+TeXDict begin 50 53 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)14
+b(with)g(GNU)h(Readline)842 b(50)75 149 y Fi(2.4.14)29
+b(Alternate)21 b(In)n(terface)g(Example)75 223 y Ft(Here)f(is)e(a)h
(complete)g(program)f(that)h(illustrates)e(Readline's)i(alternate)g(in)
-o(terface.)31 b(It)19 b(reads)g(lines)75 1709 y(from)c(the)g(terminal)g
+o(terface.)31 b(It)19 b(reads)g(lines)75 278 y(from)c(the)g(terminal)g
(and)g(displa)o(ys)g(them,)g(pro)o(viding)f(the)i(standard)f(history)f
-(and)i(T)l(AB)g(completion)75 1764 y(functions.)k(It)15
+(and)i(T)l(AB)g(completion)75 333 y(functions.)k(It)15
b(understands)h(the)f(EOF)g(c)o(haracter)f(or)h Fs(")p
-Ft(exit)p Fs(")f Ft(to)h(exit)g(the)g(program.)195 1848
+Ft(exit)p Fs(")f Ft(to)h(exit)g(the)g(program.)195 423
y Fs(/*)24 b(Standard)e(include)h(files.)g(stdio.h)g(is)h(required.)e
-(*/)195 1903 y(#include)h(<stdlib.h>)195 1958 y(#include)g(<string.h>)
-195 2012 y(#include)g(<unistd.h>)195 2067 y(#include)g(<locale.h>)195
-2177 y(/*)h(Used)f(for)g(select\(2\))g(*/)195 2232 y(#include)g
-(<sys/types.h>)195 2286 y(#include)g(<sys/select.h>)195
-2396 y(#include)g(<signal.h>)195 2506 y(#include)g(<stdio.h>)195
-2615 y(/*)h(Standard)e(readline)h(include)g(files.)g(*/)195
-2670 y(#include)g(<readline/readline.h>)p eop end
-%%Page: 45 49
-TeXDict begin 45 48 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)14
-b(with)g(GNU)h(Readline)842 b(45)195 149 y Fs(#include)23
-b(<readline/history.h>)195 259 y(static)g(void)g(cb_linehandler)f
-(\(char)h(*\);)195 314 y(static)g(void)g(sighandler)g(\(int\);)195
-423 y(int)g(running;)195 478 y(int)g(sigwinch_received;)195
-533 y(const)g(char)g(*prompt)g(=)h("rltest$)f(";)195
-643 y(/*)h(Handle)f(SIGWINCH)f(and)i(window)f(size)g(changes)g(when)g
-(readline)g(is)h(not)f(active)g(and)p 1961 653 21 42
-v 267 697 a(reading)f(a)i(character.)f(*/)195 752 y(static)g(void)195
-807 y(sighandler)f(\(int)i(sig\))195 862 y({)243 917
-y(sigwinch_received)d(=)j(1;)195 971 y(})195 1081 y(/*)g(Callback)e
+(*/)195 478 y(#include)h(<stdlib.h>)195 533 y(#include)g(<string.h>)195
+588 y(#include)g(<unistd.h>)195 697 y(/*)h(Used)f(for)g(select\(2\))g
+(*/)195 752 y(#include)g(<sys/types.h>)195 807 y(#include)g
+(<sys/select.h>)195 917 y(#include)g(<signal.h>)195 1026
+y(#include)g(<errno.h>)195 1081 y(#include)g(<stdio.h>)195
+1191 y(#include)g(<locale.h>)195 1300 y(/*)h(Standard)e(readline)h
+(include)g(files.)g(*/)195 1355 y(#include)g(<readline/readline.h>)195
+1410 y(#include)g(<readline/history.h>)195 1519 y(#if)g(!defined)g
+(\(errno\))195 1574 y(extern)g(int)g(errno;)195 1629
+y(#endif)195 1738 y(static)g(void)g(cb_linehandler)f(\(char)h(*\);)195
+1793 y(static)g(void)g(sighandler)g(\(int\);)195 1903
+y(int)g(running;)195 1958 y(int)g(sigwinch_received;)195
+2012 y(const)g(char)g(*prompt)g(=)h("rltest$)f(";)195
+2122 y(/*)h(Handle)f(SIGWINCH)f(and)i(window)f(size)g(changes)g(when)g
+(readline)g(is)h(not)f(active)g(and)p 1961 2132 21 42
+v 267 2177 a(reading)f(a)i(character.)f(*/)195 2232 y(static)g(void)195
+2286 y(sighandler)f(\(int)i(sig\))195 2341 y({)243 2396
+y(sigwinch_received)d(=)j(1;)195 2451 y(})195 2560 y(/*)g(Callback)e
(function)h(called)g(for)h(each)f(line)g(when)h(accept-line)e
-(executed,)h(EOF)267 1136 y(seen,)g(or)g(EOF)h(character)e(read.)47
+(executed,)h(EOF)267 2615 y(seen,)g(or)g(EOF)h(character)e(read.)47
b(This)24 b(sets)f(a)h(flag)f(and)h(returns;)e(it)i(could)267
-1191 y(also)f(call)g(exit\(3\).)g(*/)195 1245 y(static)g(void)195
-1300 y(cb_linehandler)f(\(char)h(*line\))195 1355 y({)243
-1410 y(/*)g(Can)h(use)f(^D)h(\(stty)f(eof\))g(or)h(`exit')f(to)h(exit.)
-f(*/)243 1465 y(if)g(\(line)g(==)h(NULL)f(||)h(strcmp)f(\(line,)g
-("exit"\))g(==)h(0\))290 1519 y({)338 1574 y(if)g(\(line)f(==)h(0\))386
-1629 y(printf)f(\("\\n"\);)338 1684 y(printf)g(\("exit\\n"\);)338
-1738 y(/*)h(This)f(function)g(needs)g(to)h(be)f(called)g(to)h(reset)f
-(the)g(terminal)g(settings,)p 1937 1749 V 410 1793 a(and)g(calling)g
-(it)h(from)f(the)g(line)h(handler)f(keeps)g(one)g(extra)h(prompt)f
-(from)p 1937 1803 21 38 v 410 1848 a(being)g(displayed.)f(*/)338
-1903 y(rl_callback_handler_remove)e(\(\);)338 2012 y(running)j(=)h(0;)
-290 2067 y(})243 2122 y(else)290 2177 y({)338 2232 y(if)g(\(*line\))386
-2286 y(add_history)e(\(line\);)338 2341 y(printf)h(\("input)g(line:)g
-(\045s\\n",)g(line\);)338 2396 y(free)g(\(line\);)290
-2451 y(})195 2506 y(})195 2615 y(int)195 2670 y(main)g(\(int)h(c,)f
-(char)h(**v\))p eop end
-%%Page: 46 50
-TeXDict begin 46 49 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)14
-b(with)g(GNU)h(Readline)842 b(46)195 149 y Fs({)243 204
-y(fd_set)23 b(fds;)243 259 y(int)g(r;)243 369 y(/*)g(Set)h(the)f
-(default)g(locale)g(values)g(according)g(to)g(environment)g(variables.)
-f(*/)p 1937 379 21 42 v 243 423 a(setlocale)g(\(LC_ALL,)h(""\);)243
-533 y(/*)g(Handle)g(window)g(size)h(changes)f(when)g(readline)g(is)g
-(not)h(active)f(and)g(reading)314 588 y(characters.)g(*/)243
-643 y(signal)g(\(SIGWINCH,)f(sighandler\);)243 752 y(/*)h(Install)g
-(the)h(line)f(handler.)g(*/)243 807 y(rl_callback_handler_inst)o(all)e
-(\(prompt,)i(cb_linehandler\);)243 917 y(/*)g(Enter)g(a)h(simple)f
-(event)g(loop.)47 b(This)24 b(waits)f(until)g(something)g(is)g
-(available)314 971 y(to)h(read)f(on)h(readline's)e(input)h(stream)h
-(\(defaults)e(to)i(standard)f(input\))g(and)314 1026
-y(calls)g(the)h(builtin)f(character)f(read)i(callback)f(to)g(read)g
-(it.)48 b(It)23 b(does)h(not)314 1081 y(have)g(to)f(modify)g(the)h
-(user's)f(terminal)g(settings.)f(*/)243 1136 y(running)h(=)g(1;)243
-1191 y(while)g(\(running\))290 1245 y({)338 1300 y(FD_ZERO)g(\(&fds\);)
-338 1355 y(FD_SET)g(\(fileno)g(\(rl_instream\),)f(&fds\);)338
-1465 y(r)i(=)g(select)f(\(FD_SETSIZE,)f(&fds,)h(NULL,)g(NULL,)g
-(NULL\);)338 1519 y(if)h(\(r)f(<)h(0)g(&&)f(errno)h(!=)f(EINTR\))386
-1574 y({)434 1629 y(perror)g(\("rltest:)f(select"\);)434
-1684 y(rl_callback_handler_rem)o(ove)f(\(\);)434 1738
-y(break;)386 1793 y(})338 1848 y(if)j(\(sigwinch_received\))195
-1903 y({)243 1958 y(rl_resize_terminal)d(\(\);)243 2012
-y(sigwinch_received)g(=)j(0;)195 2067 y(})338 2122 y(if)g(\(r)f(<)h
-(0\))195 2177 y(continue;)338 2286 y(if)g(\(FD_ISSET)e(\(fileno)h
-(\(rl_instream\),)f(&fds\)\))386 2341 y(rl_callback_read_char)f(\(\);)
-290 2396 y(})243 2506 y(printf)i(\("rltest:)f(Event)i(loop)f(has)g
-(exited\\n"\);)243 2560 y(return)g(0;)195 2615 y(})p
+2670 y(also)f(call)g(exit\(3\).)g(*/)p eop end
+%%Page: 51 55
+TeXDict begin 51 54 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)14
+b(with)g(GNU)h(Readline)842 b(51)195 149 y Fs(static)23
+b(void)195 204 y(cb_linehandler)f(\(char)h(*line\))195
+259 y({)243 314 y(/*)g(Can)h(use)f(^D)h(\(stty)f(eof\))g(or)h(`exit')f
+(to)h(exit.)f(*/)243 369 y(if)g(\(line)g(==)h(NULL)f(||)h(strcmp)f
+(\(line,)g("exit"\))g(==)h(0\))290 423 y({)338 478 y(if)g(\(line)f(==)h
+(0\))386 533 y(printf)f(\("\\n"\);)338 588 y(printf)g(\("exit\\n"\);)
+338 643 y(/*)h(This)f(function)g(needs)g(to)h(be)f(called)g(to)h(reset)
+f(the)g(terminal)g(settings,)p 1937 653 21 42 v 410 697
+a(and)g(calling)g(it)h(from)f(the)g(line)h(handler)f(keeps)g(one)g
+(extra)h(prompt)f(from)p 1937 707 21 38 v 410 752 a(being)g(displayed.)
+f(*/)338 807 y(rl_callback_handler_remove)e(\(\);)338
+917 y(running)j(=)h(0;)290 971 y(})243 1026 y(else)290
+1081 y({)338 1136 y(if)g(\(*line\))386 1191 y(add_history)e(\(line\);)
+338 1245 y(printf)h(\("input)g(line:)g(\045s\\n",)g(line\);)338
+1300 y(free)g(\(line\);)290 1355 y(})195 1410 y(})195
+1519 y(int)195 1574 y(main)g(\(int)h(c,)f(char)h(**v\))195
+1629 y({)243 1684 y(fd_set)f(fds;)243 1738 y(int)g(r;)243
+1848 y(/*)g(Set)h(the)f(default)g(locale)g(values)g(according)g(to)g
+(environment)g(variables.)f(*/)p 1937 1858 21 42 v 243
+1903 a(setlocale)g(\(LC_ALL,)h(""\);)243 2012 y(/*)g(Handle)g(window)g
+(size)h(changes)f(when)g(readline)g(is)g(not)h(active)f(and)g(reading)
+314 2067 y(characters.)g(*/)243 2122 y(signal)g(\(SIGWINCH,)f
+(sighandler\);)243 2232 y(/*)h(Install)g(the)h(line)f(handler.)g(*/)243
+2286 y(rl_callback_handler_inst)o(all)e(\(prompt,)i(cb_linehandler\);)
+243 2396 y(/*)g(Enter)g(a)h(simple)f(event)g(loop.)47
+b(This)24 b(waits)f(until)g(something)g(is)g(available)314
+2451 y(to)h(read)f(on)h(readline's)e(input)h(stream)h(\(defaults)e(to)i
+(standard)f(input\))g(and)314 2506 y(calls)g(the)h(builtin)f(character)
+f(read)i(callback)f(to)g(read)g(it.)48 b(It)23 b(does)h(not)314
+2560 y(have)g(to)f(modify)g(the)h(user's)f(terminal)g(settings.)f(*/)
+243 2615 y(running)h(=)g(1;)243 2670 y(while)g(\(running\))p
eop end
-%%Page: 47 51
-TeXDict begin 47 50 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)14
-b(with)g(GNU)h(Readline)842 b(47)75 149 y Fr(2.5)33 b(Readline)21
-b(Signal)h(Handling)75 229 y Ft(Signals)14 b(are)h(async)o(hronous)g
-(ev)o(en)o(ts)g(sen)o(t)g(to)g(a)g(pro)q(cess)g(b)o(y)g(the)h(Unix)f(k)
-o(ernel,)f(sometimes)h(on)g(b)q(ehalf)75 284 y(of)i(another)g(pro)q
-(cess.)26 b(They)18 b(are)f(in)o(tended)h(to)e(indicate)h(exceptional)g
-(ev)o(en)o(ts,)g(lik)o(e)g(a)g(user)g(pressing)75 339
-y(the)g(in)o(terrupt)f(k)o(ey)h(on)f(his)h(terminal,)f(or)g(a)g(net)o
-(w)o(ork)g(connection)h(b)q(eing)g(brok)o(en.)25 b(There)17
-b(is)f(a)h(class)75 394 y(of)d(signals)f(that)h(can)g(b)q(e)h(sen)o(t)g
-(to)e(the)i(pro)q(cess)g(curren)o(tly)e(reading)h(input)h(from)e(the)i
-(k)o(eyb)q(oard.)k(Since)75 448 y(Readline)k(c)o(hanges)f(the)g
-(terminal)f(attributes)g(when)i(it)e(is)h(called,)h(it)f(needs)h(to)e
-(p)q(erform)h(sp)q(ecial)75 503 y(pro)q(cessing)14 b(when)g(suc)o(h)g
-(a)g(signal)e(is)h(receiv)o(ed)h(in)g(order)g(to)f(restore)g(the)h
-(terminal)e(to)h(a)h(sane)g(state,)e(or)75 558 y(pro)o(vide)j
-(application)f(writers)g(with)g(functions)h(to)g(do)g(so)g(man)o(ually)
-l(.)137 641 y(Readline)21 b(con)o(tains)e(an)h(in)o(ternal)f(signal)g
-(handler)h(that)g(is)g(installed)f(for)g(a)h(n)o(um)o(b)q(er)g(of)g
-(signals)75 695 y(\()p Fs(SIGINT)p Ft(,)e Fs(SIGQUIT)p
-Ft(,)g Fs(SIGTERM)p Ft(,)g Fs(SIGHUP)p Ft(,)g Fs(SIGALRM)p
-Ft(,)g Fs(SIGTSTP)p Ft(,)g Fs(SIGTTIN)p Ft(,)g(and)h
-Fs(SIGTTOU)p Ft(\).)29 b(When)75 750 y(one)13 b(of)g(these)h(signals)e
-(is)h(receiv)o(ed,)h(the)f(signal)f(handler)i(will)e(reset)h(the)g
-(terminal)f(attributes)g(to)h(those)75 805 y(that)i(w)o(ere)h(in)g
-(e\013ect)g(b)q(efore)h Fs(readline\(\))d Ft(w)o(as)i(called,)f(reset)h
-(the)g(signal)f(handling)h(to)g(what)f(it)h(w)o(as)75
-860 y(b)q(efore)e Fs(readline\(\))e Ft(w)o(as)g(called,)h(and)h(resend)
-g(the)f(signal)f(to)h(the)g(calling)f(application.)18
-b(If)c(and)f(when)75 915 y(the)k(calling)f(application's)f(signal)h
-(handler)h(returns,)g(Readline)g(will)f(reinitialize)f(the)i(terminal)f
-(and)75 969 y(con)o(tin)o(ue)e(to)f(accept)i(input.)k(When)c(a)e
-Fs(SIGINT)h Ft(is)f(receiv)o(ed,)h(the)h(Readline)f(signal)f(handler)h
-(p)q(erforms)75 1024 y(some)19 b(additional)f(w)o(ork,)h(whic)o(h)g
-(will)f(cause)i(an)o(y)f(partially-en)o(tered)f(line)h(to)f(b)q(e)i(ab)
-q(orted)g(\(see)f(the)75 1079 y(description)c(of)f Fs
-(rl_free_line_state\(\))f Ft(b)q(elo)o(w\).)137 1162
-y(There)g(is)e(an)h(additional)f(Readline)i(signal)e(handler,)h(for)g
+%%Page: 52 56
+TeXDict begin 52 55 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)14
+b(with)g(GNU)h(Readline)842 b(52)290 149 y Fs({)338 204
+y(FD_ZERO)23 b(\(&fds\);)338 259 y(FD_SET)g(\(fileno)g
+(\(rl_instream\),)f(&fds\);)338 369 y(r)i(=)g(select)f(\(FD_SETSIZE,)f
+(&fds,)h(NULL,)g(NULL,)g(NULL\);)338 423 y(if)h(\(r)f(<)h(0)g(&&)f
+(errno)h(!=)f(EINTR\))386 478 y({)434 533 y(perror)g(\("rltest:)f
+(select"\);)434 588 y(rl_callback_handler_rem)o(ove)f(\(\);)434
+643 y(break;)386 697 y(})338 752 y(if)j(\(sigwinch_received\))195
+807 y({)243 862 y(rl_resize_terminal)d(\(\);)243 917
+y(sigwinch_received)g(=)j(0;)195 971 y(})338 1026 y(if)g(\(r)f(<)h(0\))
+195 1081 y(continue;)338 1191 y(if)g(\(FD_ISSET)e(\(fileno)h
+(\(rl_instream\),)f(&fds\)\))386 1245 y(rl_callback_read_char)f(\(\);)
+290 1300 y(})243 1410 y(printf)i(\("rltest:)f(Event)i(loop)f(has)g
+(exited\\n"\);)243 1465 y(return)g(0;)195 1519 y(})75
+1637 y Fr(2.5)33 b(Readline)21 b(Signal)h(Handling)75
+1716 y Ft(Signals)14 b(are)h(async)o(hronous)g(ev)o(en)o(ts)g(sen)o(t)g
+(to)g(a)g(pro)q(cess)g(b)o(y)g(the)h(Unix)f(k)o(ernel,)f(sometimes)h
+(on)g(b)q(ehalf)75 1771 y(of)c(another)h(pro)q(cess.)19
+b(They)12 b(are)f(in)o(tended)h(to)f(indicate)g(exceptional)h(ev)o(en)o
+(ts,)f(lik)o(e)g(a)h(user)f(pressing)h(the)75 1826 y(terminal's)i(in)o
+(terrupt)i(k)o(ey)l(,)g(or)f(a)h(net)o(w)o(ork)f(connection)h(b)q(eing)
+h(brok)o(en.)22 b(There)17 b(is)e(a)h(class)g(of)f(signals)75
+1881 y(that)f(can)i(b)q(e)g(sen)o(t)f(to)f(the)h(pro)q(cess)h(curren)o
+(tly)f(reading)f(input)h(from)g(the)g(k)o(eyb)q(oard.)20
+b(Since)c(Readline)75 1936 y(c)o(hanges)k(the)g(terminal)e(attributes)h
+(when)h(it)f(is)h(called,)g(it)f(needs)i(to)e(p)q(erform)g(sp)q(ecial)h
+(pro)q(cessing)75 1990 y(when)e(suc)o(h)f(a)g(signal)f(is)h(receiv)o
+(ed)g(in)g(order)g(to)f(restore)h(the)g(terminal)f(to)g(a)h(sane)g
+(state,)g(or)f(pro)o(vide)75 2045 y(applications)e(using)h(Readline)g
+(with)g(functions)g(to)f(do)h(so)g(man)o(ually)l(.)137
+2111 y(Readline)21 b(con)o(tains)e(an)h(in)o(ternal)f(signal)g(handler)
+h(that)g(is)g(installed)f(for)g(a)h(n)o(um)o(b)q(er)g(of)g(signals)75
+2166 y(\()p Fs(SIGINT)p Ft(,)e Fs(SIGQUIT)p Ft(,)g Fs(SIGTERM)p
+Ft(,)g Fs(SIGHUP)p Ft(,)g Fs(SIGALRM)p Ft(,)g Fs(SIGTSTP)p
+Ft(,)g Fs(SIGTTIN)p Ft(,)g(and)h Fs(SIGTTOU)p Ft(\).)29
+b(When)75 2221 y(Readline)16 b(receiv)o(es)g(one)h(of)f(these)g
+(signals,)f(the)h(signal)f(handler)h(will)f(reset)h(the)g(terminal)f
+(attributes)75 2275 y(to)e(those)g(that)f(w)o(ere)i(in)f(e\013ect)g(b)q
+(efore)h Fs(readline\(\))d Ft(w)o(as)i(called,)g(reset)g(the)h(signal)e
+(handling)h(to)g(what)75 2330 y(it)f(w)o(as)f(b)q(efore)i
+Fs(readline\(\))e Ft(w)o(as)h(called,)g(and)h(resend)g(the)f(signal)g
+(to)g(the)g(calling)f(application.)18 b(If)13 b(and)75
+2385 y(when)i(the)f(calling)f(application's)g(signal)g(handler)h
+(returns,)g(Readline)h(will)d(reinitialize)h(the)h(terminal)75
+2440 y(and)21 b(con)o(tin)o(ue)g(to)f(accept)h(input.)38
+b(When)21 b(a)g Fs(SIGINT)f Ft(is)g(receiv)o(ed,)j(the)e(Readline)g
+(signal)f(handler)75 2495 y(p)q(erforms)e(some)f(additional)g(w)o(ork,)
+g(whic)o(h)h(will)f(cause)h(an)o(y)g(partially-en)o(tered)e(line)i(to)f
+(b)q(e)i(ab)q(orted)75 2549 y(\(see)c(the)g(description)g(of)g
+Fs(rl_free_line_state\(\))d Ft(b)q(elo)o(w\).)137 2615
+y(There)h(is)e(an)h(additional)f(Readline)i(signal)e(handler,)h(for)g
Fs(SIGWINCH)p Ft(,)f(whic)o(h)h(the)g(k)o(ernel)g(sends)h(to)e(a)75
-1216 y(pro)q(cess)k(whenev)o(er)g(the)f(terminal's)f(size)h(c)o(hanges)
+2670 y(pro)q(cess)k(whenev)o(er)g(the)f(terminal's)f(size)h(c)o(hanges)
g(\(for)g(example,)g(if)g(a)g(user)h(resizes)f(an)g Fs(xterm)p
-Ft(\).)19 b(The)75 1271 y(Readline)f Fs(SIGWINCH)f Ft(handler)h(up)q
-(dates)g(Readline's)g(in)o(ternal)e(screen)j(size)e(information,)g(and)
-h(then)75 1326 y(calls)e(an)o(y)h Fs(SIGWINCH)e Ft(signal)h(handler)h
-(the)g(calling)f(application)f(has)i(installed.)24 b(Readline)17
-b(calls)f(the)75 1381 y(application's)g Fs(SIGWINCH)g
-Ft(signal)h(handler)g(without)g(resetting)g(the)g(terminal)g(to)g(its)f
-(original)g(state.)75 1436 y(If)g(the)g(application's)e(signal)h
-(handler)h(do)q(es)h(more)e(than)h(up)q(date)h(its)e(idea)h(of)f(the)h
-(terminal)f(size)h(and)75 1490 y(return)f(\(for)f(example,)g(a)g
-Fs(longjmp)g Ft(bac)o(k)h(to)f(a)h(main)f(pro)q(cessing)g(lo)q(op\),)g
-(it)g Fk(must)20 b Ft(call)14 b Fs(rl_cleanup_)75 1545
-y(after_signal\(\))f Ft(\(describ)q(ed)j(b)q(elo)o(w\),)e(to)h(restore)
-f(the)h(terminal)f(state.)137 1628 y(When)20 b(an)f(application)g(is)g
-(using)g(the)g(callbac)o(k)g(in)o(terface)g(\(see)g(Section)g(2.4.12)f
-([Alternate)g(In-)75 1683 y(terface],)k(page)f(42\),)h(Readline)g
-(installs)e(signal)g(handlers)h(only)g(for)g(the)h(duration)e(of)h(the)
-h(call)f(to)75 1737 y Fs(rl_callback_read_char)p Ft(.)f(Applications)15
+Ft(\).)19 b(The)p eop end
+%%Page: 53 57
+TeXDict begin 53 56 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)14
+b(with)g(GNU)h(Readline)842 b(53)75 149 y(Readline)18
+b Fs(SIGWINCH)f Ft(handler)h(up)q(dates)g(Readline's)g(in)o(ternal)e
+(screen)j(size)e(information,)g(and)h(then)75 204 y(calls)e(an)o(y)h
+Fs(SIGWINCH)e Ft(signal)h(handler)h(the)g(calling)f(application)f(has)i
+(installed.)24 b(Readline)17 b(calls)f(the)75 259 y(application's)g
+Fs(SIGWINCH)g Ft(signal)h(handler)g(without)g(resetting)g(the)g
+(terminal)g(to)g(its)f(original)g(state.)75 314 y(If)g(the)g
+(application's)e(signal)h(handler)h(do)q(es)h(more)e(than)h(up)q(date)h
+(its)e(idea)h(of)f(the)h(terminal)f(size)h(and)75 369
+y(return)f(\(for)f(example,)g(a)g Fs(longjmp)g Ft(bac)o(k)h(to)f(a)h
+(main)f(pro)q(cessing)g(lo)q(op\),)g(it)g Fj(must)20
+b Ft(call)14 b Fs(rl_cleanup_)75 423 y(after_signal\(\))f
+Ft(\(describ)q(ed)j(b)q(elo)o(w\),)e(to)h(restore)f(the)h(terminal)f
+(state.)137 490 y(When)20 b(an)f(application)g(is)g(using)g(the)g
+(callbac)o(k)g(in)o(terface)g(\(see)g(Section)g(2.4.12)f([Alternate)g
+(In-)75 545 y(terface],)k(page)f(47\),)h(Readline)g(installs)e(signal)g
+(handlers)h(only)g(for)g(the)h(duration)e(of)h(the)h(call)f(to)75
+599 y Fs(rl_callback_read_char)p Ft(.)f(Applications)15
b(using)h(the)g(callbac)o(k)f(in)o(terface)g(should)h(b)q(e)h(prepared)
-g(to)75 1792 y(clean)c(up)h(Readline's)f(state)g(if)g(they)g(wish)g(to)
-g(handle)g(the)h(signal)e(b)q(efore)h(the)h(line)f(handler)g(completes)
-75 1847 y(and)i(restores)g(the)g(terminal)f(state.)137
-1930 y(If)k(an)g(application)f(using)g(the)h(callbac)o(k)f(in)o
-(terface)g(wishes)h(to)f(ha)o(v)o(e)h(Readline)g(install)e(its)h
-(signal)75 1985 y(handlers)11 b(at)g(the)h(time)e(the)i(application)e
-(calls)g Fs(rl_callback_handler_install)e Ft(and)j(remo)o(v)o(e)g(them)
-75 2039 y(only)g(when)h(a)g(complete)f(line)g(of)g(input)h(has)g(b)q
-(een)g(read,)g(it)f(should)h(set)f(the)h Fs(rl_persistent_signal_)75
-2094 y(handlers)e Ft(v)m(ariable)g(to)h(a)f(non-zero)i(v)m(alue.)18
+g(to)75 654 y(clean)c(up)h(Readline's)f(state)g(if)g(they)g(wish)g(to)g
+(handle)g(the)h(signal)e(b)q(efore)h(the)h(line)f(handler)g(completes)
+75 709 y(and)i(restores)g(the)g(terminal)f(state.)137
+775 y(If)k(an)g(application)f(using)g(the)h(callbac)o(k)f(in)o(terface)
+g(wishes)h(to)f(ha)o(v)o(e)h(Readline)g(install)e(its)h(signal)75
+830 y(handlers)11 b(at)g(the)h(time)e(the)i(application)e(calls)g
+Fs(rl_callback_handler_install)e Ft(and)j(remo)o(v)o(e)g(them)75
+885 y(only)g(when)h(a)g(complete)f(line)g(of)g(input)h(has)g(b)q(een)g
+(read,)g(it)f(should)h(set)f(the)h Fs(rl_persistent_signal_)75
+940 y(handlers)e Ft(v)m(ariable)g(to)h(a)f(non-zero)i(v)m(alue.)18
b(This)11 b(allo)o(ws)e(an)i(application)f(to)g(defer)i(all)e(of)g(the)
-h(handling)75 2149 y(of)i(the)g(signals)f(Readline)h(catc)o(hes)g(to)f
+h(handling)75 994 y(of)i(the)g(signals)f(Readline)h(catc)o(hes)g(to)f
(Readline.)20 b(Applications)12 b(should)h(use)g(this)g(v)m(ariable)f
-(with)g(care;)75 2204 y(it)f(can)g(result)g(in)g(Readline)h(catc)o
+(with)g(care;)75 1049 y(it)f(can)g(result)g(in)g(Readline)h(catc)o
(hing)e(signals)h(and)g(not)g(acting)g(on)g(them)g(\(or)g(allo)o(wing)e
-(the)i(application)75 2259 y(to)17 b(react)g(to)g(them\))g(un)o(til)g
+(the)i(application)75 1104 y(to)17 b(react)g(to)g(them\))g(un)o(til)g
(the)h(application)e(calls)h Fs(rl_callback_read_char)p
-Ft(.)24 b(This)17 b(can)h(result)f(in)75 2313 y(an)e(application)e(b)q
+Ft(.)24 b(This)17 b(can)h(result)f(in)75 1159 y(an)e(application)e(b)q
(ecoming)i(less)g(resp)q(onsiv)o(e)g(to)f(k)o(eyb)q(oard)h(signals)e
-(lik)o(e)h(SIGINT.)h(If)g(an)g(application)75 2368 y(do)q(es)d(not)g(w)
+(lik)o(e)h(SIGINT.)h(If)g(an)g(application)75 1214 y(do)q(es)d(not)g(w)
o(an)o(t)f(or)h(need)h(to)e(p)q(erform)h(an)o(y)g(signal)f(handling,)h
(or)g(do)q(es)g(not)g(need)h(to)e(do)h(an)o(y)g(pro)q(cessing)75
-2423 y(b)q(et)o(w)o(een)k(calls)e(to)g Fs(rl_callback_read_char)p
-Ft(,)e(setting)i(this)h(v)m(ariable)g(ma)o(y)f(b)q(e)i(desirable.)137
-2506 y(Readline)f(pro)o(vides)f(t)o(w)o(o)f(v)m(ariables)g(that)h(allo)
+1268 y(b)q(et)o(w)o(een)k(calls)e(to)g Fs(rl_callback_read_char)p
+Ft(,)e(setting)i(this)h(v)m(ariable)g(ma)o(y)f(b)q(e)i(appropriate.)137
+1335 y(Readline)f(pro)o(vides)f(t)o(w)o(o)f(v)m(ariables)g(that)h(allo)
o(w)e(application)h(writers)g(to)h(con)o(trol)f(whether)i(or)e(not)75
-2560 y(it)j(will)f(catc)o(h)h(certain)g(signals)g(and)h(act)f(on)g
+1390 y(it)j(will)f(catc)o(h)h(certain)g(signals)g(and)h(act)f(on)g
(them)h(when)g(they)f(are)h(receiv)o(ed.)24 b(It)16 b(is)h(imp)q(ortan)
-o(t)e(that)75 2615 y(applications)i(c)o(hange)h(the)h(v)m(alues)f(of)g
+o(t)e(that)75 1444 y(applications)i(c)o(hange)h(the)h(v)m(alues)f(of)g
(these)h(v)m(ariables)e(only)h(when)h(calling)e Fs(readline\(\))p
-Ft(,)g(not)h(in)g(a)75 2670 y(signal)c(handler,)h(so)g(Readline's)g(in)
-o(ternal)f(signal)g(state)g(is)h(not)g(corrupted.)p eop
-end
-%%Page: 48 52
-TeXDict begin 48 51 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)14
-b(with)g(GNU)h(Readline)842 b(48)1685 149 y([V)l(ariable])-1801
-b Fh(int)27 b(rl_catch_signals)195 204 y Ft(If)15 b(this)f(v)m(ariable)
-f(is)h(non-zero,)h(Readline)g(will)e(install)f(signal)i(handlers)g(for)
-g Fs(SIGINT)p Ft(,)f Fs(SIGQUIT)p Ft(,)195 259 y Fs(SIGTERM)p
-Ft(,)h Fs(SIGHUP)p Ft(,)g Fs(SIGALRM)p Ft(,)g Fs(SIGTSTP)p
-Ft(,)f Fs(SIGTTIN)p Ft(,)h(and)i Fs(SIGTTOU)p Ft(.)195
-323 y(The)f(default)g(v)m(alue)h(of)e Fs(rl_catch_signals)f
-Ft(is)i(1.)1685 404 y([V)l(ariable])-1801 b Fh(int)27
-b(rl_catch_sigwinch)195 459 y Ft(If)19 b(this)f(v)m(ariable)h(is)f(set)
-g(to)h(a)f(non-zero)h(v)m(alue,)h(Readline)f(will)e(install)h(a)g
-(signal)g(handler)h(for)195 514 y Fs(SIGWINCH)p Ft(.)195
-577 y(The)c(default)g(v)m(alue)h(of)e Fs(rl_catch_sigwinch)f
-Ft(is)i(1.)1685 658 y([V)l(ariable])-1801 b Fh(int)27
-b(rl_persistent_signal_handl)q(ers)195 713 y Ft(If)16
+Ft(,)g(not)h(in)g(a)75 1499 y(signal)c(handler,)h(so)g(Readline's)g(in)
+o(ternal)f(signal)g(state)g(is)h(not)g(corrupted.)1685
+1589 y([V)l(ariable])-1801 b Fh(int)27 b(rl_catch_signals)195
+1643 y Ft(If)15 b(this)f(v)m(ariable)f(is)h(non-zero,)h(Readline)g
+(will)e(install)f(signal)i(handlers)g(for)g Fs(SIGINT)p
+Ft(,)f Fs(SIGQUIT)p Ft(,)195 1698 y Fs(SIGTERM)p Ft(,)h
+Fs(SIGHUP)p Ft(,)g Fs(SIGALRM)p Ft(,)g Fs(SIGTSTP)p Ft(,)f
+Fs(SIGTTIN)p Ft(,)h(and)i Fs(SIGTTOU)p Ft(.)195 1764
+y(The)f(default)g(v)m(alue)h(of)e Fs(rl_catch_signals)f
+Ft(is)i(1.)1685 1854 y([V)l(ariable])-1801 b Fh(int)27
+b(rl_catch_sigwinch)195 1909 y Ft(If)19 b(this)f(v)m(ariable)h(is)f
+(set)g(to)h(a)f(non-zero)h(v)m(alue,)h(Readline)f(will)e(install)h(a)g
+(signal)g(handler)h(for)195 1963 y Fs(SIGWINCH)p Ft(.)195
+2030 y(The)c(default)g(v)m(alue)h(of)e Fs(rl_catch_sigwinch)f
+Ft(is)i(1.)1685 2119 y([V)l(ariable])-1801 b Fh(int)27
+b(rl_persistent_signal_handl)q(ers)195 2174 y Ft(If)16
b(an)g(application)e(using)i(the)g(callbac)o(k)e(in)o(terface)i(wishes)
-f(Readline's)h(signal)e(handlers)i(to)f(b)q(e)195 768
+f(Readline's)h(signal)e(handlers)i(to)f(b)q(e)195 2229
y(installed)9 b(and)i(activ)o(e)e(during)h(the)h(set)f(of)g(calls)f(to)
h Fs(rl_callback_read_char)d Ft(that)j(constitutes)195
-823 y(an)15 b(en)o(tire)g(single)f(line,)h(it)f(should)h(set)g(this)g
-(v)m(ariable)g(to)f(a)h(non-zero)h(v)m(alue.)195 887
+2284 y(an)15 b(en)o(tire)g(single)f(line,)h(it)f(should)h(set)g(this)g
+(v)m(ariable)g(to)f(a)h(non-zero)h(v)m(alue.)195 2350
y(The)f(default)g(v)m(alue)h(of)e Fs(rl_persistent_signal_handlers)e
-Ft(is)i(0.)1685 968 y([V)l(ariable])-1801 b Fh(int)27
-b(rl_change_environment)195 1023 y Ft(If)16 b(this)f(v)m(ariable)g(is)g
+Ft(is)i(0.)1685 2439 y([V)l(ariable])-1801 b Fh(int)27
+b(rl_change_environment)195 2494 y Ft(If)16 b(this)f(v)m(ariable)g(is)g
(set)h(to)f(a)g(non-zero)h(v)m(alue,)g(and)f(Readline)h(is)g(handling)f
-Fs(SIGWINCH)p Ft(,)f(Read-)195 1077 y(line)h(will)e(mo)q(dify)i(the)g
-Fj(LINES)k Ft(and)c Fj(COLUMNS)j Ft(en)o(vironmen)o(t)d(v)m(ariables)f
-(up)q(on)i(receipt)f(of)f(a)195 1132 y Fs(SIGWINCH)195
-1196 y Ft(The)h(default)g(v)m(alue)h(of)e Fs(rl_change_environment)f
-Ft(is)h(1.)137 1277 y(If)i(an)f(application)g(do)q(es)g(not)g(wish)h
-(to)e(ha)o(v)o(e)h(Readline)h(catc)o(h)g(an)o(y)f(signals,)f(or)h(to)f
-(handle)i(signals)75 1332 y(other)j(than)g(those)g(Readline)h(catc)o
-(hes)f(\()p Fs(SIGHUP)p Ft(,)g(for)g(example\),)g(Readline)h(pro)o
-(vides)e(con)o(v)o(enience)75 1387 y(functions)d(to)g(do)g(the)g
-(necessary)g(terminal)f(and)i(in)o(ternal)e(state)g(clean)o(up)h(up)q
-(on)h(receipt)f(of)g(a)g(signal.)1675 1468 y([F)l(unction])-1801
-b Fh(int)27 b(rl_pending_signal)e Fg(\()p Ff(v)o(oid)p
-Fg(\))195 1523 y Ft(Return)14 b(the)g(signal)f(n)o(um)o(b)q(er)h(of)f
+Fs(SIGWINCH)p Ft(,)f(Read-)195 2549 y(line)h(will)e(mo)q(dify)i(the)g
+Fk(LINES)k Ft(and)c Fk(COLUMNS)j Ft(en)o(vironmen)o(t)d(v)m(ariables)f
+(up)q(on)i(receipt)f(of)f(a)195 2604 y Fs(SIGWINCH)p
+Ft(.)195 2670 y(The)h(default)g(v)m(alue)h(of)e Fs
+(rl_change_environment)f Ft(is)h(1.)p eop end
+%%Page: 54 58
+TeXDict begin 54 57 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)14
+b(with)g(GNU)h(Readline)842 b(54)137 149 y(If)16 b(an)f(application)g
+(do)q(es)g(not)g(wish)h(to)e(ha)o(v)o(e)h(Readline)h(catc)o(h)g(an)o(y)
+f(signals,)f(or)h(to)f(handle)i(signals)75 204 y(other)j(than)g(those)g
+(Readline)h(catc)o(hes)f(\()p Fs(SIGHUP)p Ft(,)g(for)g(example\),)g
+(Readline)h(pro)o(vides)e(con)o(v)o(enience)75 259 y(functions)d(to)g
+(do)g(the)g(necessary)g(terminal)f(and)i(in)o(ternal)e(state)g(clean)o
+(up)h(up)q(on)h(receipt)f(of)g(a)g(signal.)1675 352 y([F)l(unction])
+-1801 b Fh(int)27 b(rl_pending_signal)e Fg(\()p Ff(v)o(oid)p
+Fg(\))195 407 y Ft(Return)14 b(the)g(signal)f(n)o(um)o(b)q(er)h(of)f
(the)h(most)f(recen)o(t)g(signal)g(Readline)h(receiv)o(ed)g(but)g(has)f
-(not)g(y)o(et)195 1578 y(handled,)i(or)g(0)g(if)g(there)g(is)g(no)g(p)q
-(ending)h(signal.)1675 1659 y([F)l(unction])-1801 b Fh(void)27
+(not)g(y)o(et)195 462 y(handled,)i(or)g(0)g(if)g(there)g(is)g(no)g(p)q
+(ending)h(signal.)1675 555 y([F)l(unction])-1801 b Fh(void)27
b(rl_cleanup_after_signal)f Fg(\()p Ff(v)o(oid)p Fg(\))195
-1714 y Ft(This)17 b(function)f(will)g(reset)h(the)g(state)f(of)g(the)h
+610 y Ft(This)17 b(function)f(will)g(reset)h(the)g(state)f(of)g(the)h
(terminal)f(to)g(what)h(it)f(w)o(as)g(b)q(efore)h Fs(readline\(\))195
-1769 y Ft(w)o(as)d(called,)g(and)h(remo)o(v)o(e)f(the)g(Readline)h
+665 y Ft(w)o(as)d(called,)g(and)h(remo)o(v)o(e)f(the)g(Readline)h
(signal)f(handlers)h(for)f(all)f(signals,)g(dep)q(ending)j(on)f(the)195
-1823 y(v)m(alues)g(of)g Fs(rl_catch_signals)e Ft(and)i
-Fs(rl_catch_sigwinch)p Ft(.)1675 1905 y([F)l(unction])-1801
+719 y(v)m(alues)g(of)g Fs(rl_catch_signals)e Ft(and)i
+Fs(rl_catch_sigwinch)p Ft(.)1675 812 y([F)l(unction])-1801
b Fh(void)27 b(rl_free_line_state)e Fg(\()p Ff(v)o(oid)p
-Fg(\))195 1959 y Ft(This)19 b(will)f(free)i(an)o(y)f(partial)f(state)h
+Fg(\))195 867 y Ft(This)19 b(will)f(free)i(an)o(y)f(partial)f(state)h
(asso)q(ciated)g(with)g(the)h(curren)o(t)f(input)h(line)f(\(undo)h
-(infor-)195 2014 y(mation,)h(an)o(y)g(partial)f(history)g(en)o(try)l(,)
-i(an)o(y)f(partially-en)o(tered)f(k)o(eyb)q(oard)h(macro,)h(and)f(an)o
-(y)195 2069 y(partially-en)o(tered)h(n)o(umeric)i(argumen)o(t\).)45
+(infor-)195 922 y(mation,)h(an)o(y)g(partial)f(history)g(en)o(try)l(,)i
+(an)o(y)f(partially-en)o(tered)f(k)o(eyb)q(oard)h(macro,)h(and)f(an)o
+(y)195 977 y(partially-en)o(tered)h(n)o(umeric)i(argumen)o(t\).)45
b(This)23 b(should)h(b)q(e)h(called)e(b)q(efore)i Fs(rl_cleanup_)195
-2124 y(after_signal\(\))p Ft(.)36 b(The)22 b(Readline)g(signal)e
+1032 y(after_signal\(\))p Ft(.)36 b(The)22 b(Readline)g(signal)e
(handler)h(for)g Fs(SIGINT)f Ft(calls)h(this)f(to)h(ab)q(ort)g(the)195
-2179 y(curren)o(t)15 b(input)g(line.)1675 2260 y([F)l(unction])-1801
+1086 y(curren)o(t)15 b(input)g(line.)1675 1180 y([F)l(unction])-1801
b Fh(void)27 b(rl_reset_after_signal)f Fg(\()p Ff(v)o(oid)p
-Fg(\))195 2315 y Ft(This)14 b(will)f(reinitialize)f(the)i(terminal)f
+Fg(\))195 1234 y Ft(This)14 b(will)f(reinitialize)f(the)i(terminal)f
(and)i(reinstall)e(an)o(y)g(Readline)i(signal)e(handlers,)h(dep)q(end-)
-195 2370 y(ing)h(on)g(the)g(v)m(alues)h(of)e Fs(rl_catch_signals)f
-Ft(and)j Fs(rl_catch_sigwinch)p Ft(.)137 2451 y(If)h(an)f(application)f
+195 1289 y(ing)h(on)g(the)g(v)m(alues)h(of)e Fs(rl_catch_signals)f
+Ft(and)j Fs(rl_catch_sigwinch)p Ft(.)137 1382 y(If)h(an)f(application)f
(w)o(an)o(ts)g(to)h(force)g(Readline)h(to)f(handle)g(an)o(y)g(signals)f
-(that)h(ha)o(v)o(e)g(arriv)o(ed)f(while)75 2506 y(it)i(has)h(b)q(een)h
+(that)h(ha)o(v)o(e)g(arriv)o(ed)f(while)75 1437 y(it)i(has)h(b)q(een)h
(executing,)f Fs(rl_check_signals\(\))e Ft(will)g(call)h(Readline's)h
-(in)o(ternal)f(signal)g(handler)g(if)75 2560 y(there)h(are)h(an)o(y)f
+(in)o(ternal)f(signal)g(handler)g(if)75 1492 y(there)h(are)h(an)o(y)f
(p)q(ending)h(signals.)28 b(This)18 b(is)g(primarily)e(in)o(tended)j
-(for)f(those)g(applications)f(that)h(use)75 2615 y(a)h(custom)f
+(for)f(those)g(applications)f(that)h(use)75 1547 y(a)h(custom)f
Fs(rl_getc_function)f Ft(\(see)i(Section)f(2.3)g([Readline)h(V)l
-(ariables],)f(page)h(27\))f(and)h(wish)g(to)75 2670 y(handle)c(signals)
-f(receiv)o(ed)i(while)e(w)o(aiting)g(for)g(input.)p eop
-end
-%%Page: 49 53
-TeXDict begin 49 52 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)14
-b(with)g(GNU)h(Readline)842 b(49)1675 149 y([F)l(unction])-1801
-b Fh(void)27 b(rl_check_signals)e Fg(\()p Ff(v)o(oid)p
-Fg(\))195 204 y Ft(If)c(there)f(are)g(an)o(y)g(p)q(ending)h(signals,)f
-(call)g(Readline's)g(in)o(ternal)f(signal)g(handling)h(functions)195
-259 y(to)h(pro)q(cess)g(them.)39 b Fs(rl_pending_signal\(\))18
-b Ft(can)k(b)q(e)g(used)g(indep)q(enden)o(tly)g(to)f(determine)195
-314 y(whether)15 b(or)g(not)g(there)g(are)g(an)o(y)g(p)q(ending)h
-(signals.)137 419 y(If)k(an)g(application)e(do)q(es)i(not)g(wish)f
-(Readline)h(to)f(catc)o(h)g Fs(SIGWINCH)p Ft(,)h(it)f(ma)o(y)g(call)f
-Fs(rl_resize_)75 474 y(terminal\(\))12 b Ft(or)h Fs
-(rl_set_screen_size\(\))e Ft(to)i(force)g(Readline)h(to)f(up)q(date)h
-(its)f(idea)g(of)h(the)f(terminal)75 528 y(size)i(when)h(a)f
-Fs(SIGWINCH)f Ft(is)g(receiv)o(ed.)1675 634 y([F)l(unction])-1801
-b Fh(void)27 b(rl_echo_signal_char)e Fg(\()p Ff(in)o(t)16
-b(sig)p Fg(\))195 688 y Ft(If)22 b(an)g(application)e(wishes)i(to)f
-(install)f(its)h(o)o(wn)g(signal)g(handlers,)i(but)f(still)e(ha)o(v)o
-(e)h(readline)195 743 y(displa)o(y)14 b(c)o(haracters)h(that)f
-(generate)h(signals,)f(calling)g(this)h(function)g(with)f
-Fj(sig)19 b Ft(set)c(to)f Fs(SIGINT)p Ft(,)195 798 y
-Fs(SIGQUIT)p Ft(,)g(or)h Fs(SIGTSTP)f Ft(will)g(displa)o(y)g(the)h(c)o
-(haracter)g(generating)f(that)g(signal.)1675 903 y([F)l(unction])-1801
-b Fh(void)27 b(rl_resize_terminal)e Fg(\()p Ff(v)o(oid)p
-Fg(\))195 958 y Ft(Up)q(date)16 b(Readline's)f(in)o(ternal)f(screen)h
-(size)h(b)o(y)f(reading)f(v)m(alues)i(from)e(the)i(k)o(ernel.)1675
-1063 y([F)l(unction])-1801 b Fh(void)27 b(rl_set_screen_size)e
+(ariables],)f(page)h(30\))f(and)h(wish)g(to)75 1601 y(handle)c(signals)
+f(receiv)o(ed)i(while)e(w)o(aiting)g(for)g(input.)1675
+1695 y([F)l(unction])-1801 b Fh(void)27 b(rl_check_signals)e
+Fg(\()p Ff(v)o(oid)p Fg(\))195 1749 y Ft(If)c(there)f(are)g(an)o(y)g(p)
+q(ending)h(signals,)f(call)g(Readline's)g(in)o(ternal)f(signal)g
+(handling)h(functions)195 1804 y(to)h(pro)q(cess)g(them.)39
+b Fs(rl_pending_signal\(\))18 b Ft(can)k(b)q(e)g(used)g(indep)q(enden)o
+(tly)g(to)f(determine)195 1859 y(whether)15 b(or)g(not)g(there)g(are)g
+(an)o(y)g(p)q(ending)h(signals.)137 1952 y(If)k(an)g(application)e(do)q
+(es)i(not)g(wish)f(Readline)h(to)f(catc)o(h)g Fs(SIGWINCH)p
+Ft(,)h(it)f(ma)o(y)g(call)f Fs(rl_resize_)75 2007 y(terminal\(\))12
+b Ft(or)h Fs(rl_set_screen_size\(\))e Ft(to)i(force)g(Readline)h(to)f
+(up)q(date)h(its)f(idea)g(of)h(the)f(terminal)75 2062
+y(size)i(when)h(it)e(receiv)o(es)h(a)g Fs(SIGWINCH)p
+Ft(.)1675 2155 y([F)l(unction])-1801 b Fh(void)27 b
+(rl_echo_signal_char)e Fg(\()p Ff(in)o(t)16 b(sig)p Fg(\))195
+2210 y Ft(If)21 b(an)f(application)g(wishes)g(to)g(install)f(its)h(o)o
+(wn)g(signal)f(handlers,)j(but)e(still)f(ha)o(v)o(e)i(Readline)195
+2265 y(displa)o(y)14 b(c)o(haracters)h(that)f(generate)h(signals,)f
+(calling)g(this)h(function)g(with)f Fk(sig)19 b Ft(set)c(to)f
+Fs(SIGINT)p Ft(,)195 2319 y Fs(SIGQUIT)p Ft(,)g(or)h
+Fs(SIGTSTP)f Ft(will)g(displa)o(y)g(the)h(c)o(haracter)g(generating)f
+(that)g(signal.)1675 2412 y([F)l(unction])-1801 b Fh(void)27
+b(rl_resize_terminal)e Fg(\()p Ff(v)o(oid)p Fg(\))195
+2467 y Ft(Up)q(date)16 b(Readline's)f(in)o(ternal)f(screen)h(size)h(b)o
+(y)f(reading)f(v)m(alues)i(from)e(the)i(k)o(ernel.)1675
+2560 y([F)l(unction])-1801 b Fh(void)27 b(rl_set_screen_size)e
Fg(\()p Ff(in)o(t)16 b(ro)o(ws,)f(in)o(t)h(cols)p Fg(\))195
-1118 y Ft(Set)e(Readline's)g(idea)g(of)f(the)h(terminal)f(size)h(to)f
-Fj(ro)o(ws)i Ft(ro)o(ws)e(and)h Fj(cols)h Ft(columns.)k(If)14
-b(either)g Fj(ro)o(ws)195 1172 y Ft(or)j Fj(columns)i
-Ft(is)e(less)h(than)f(or)g(equal)h(to)e(0,)i(Readline's)f(idea)h(of)f
-(that)g(terminal)f(dimension)h(is)195 1227 y(unc)o(hanged.)137
-1332 y(If)g(an)g(application)e(do)q(es)i(not)f(w)o(an)o(t)g(to)g
-(install)f(a)i Fs(SIGWINCH)e Ft(handler,)i(but)g(is)f(still)f(in)o
-(terested)h(in)75 1387 y(the)f(screen)h(dimensions,)e(Readline's)i
-(idea)e(of)h(the)h(screen)f(size)g(ma)o(y)g(b)q(e)h(queried.)1675
-1492 y([F)l(unction])-1801 b Fh(void)27 b(rl_get_screen_size)e
-Fg(\()p Ff(in)o(t)16 b(*ro)o(ws,)f(in)o(t)h(*cols)p Fg(\))195
-1547 y Ft(Return)g(Readline's)f(idea)f(of)h(the)g(terminal's)e(size)i
-(in)g(the)g(v)m(ariables)g(p)q(oin)o(ted)g(to)f(b)o(y)h(the)g(argu-)195
-1602 y(men)o(ts.)1675 1707 y([F)l(unction])-1801 b Fh(void)27
-b(rl_reset_screen_size)f Fg(\()p Ff(v)o(oid)p Fg(\))195
-1762 y Ft(Cause)15 b(Readline)h(to)e(reobtain)h(the)g(screen)h(size)f
-(and)g(recalculate)f(its)h(dimensions.)137 1867 y(The)h(follo)o(wing)d
-(functions)i(install)e(and)j(remo)o(v)o(e)e(Readline's)h(signal)f
-(handlers.)1675 1972 y([F)l(unction])-1801 b Fh(int)27
-b(rl_set_signals)d Fg(\()p Ff(v)o(oid)p Fg(\))195 2026
-y Ft(Install)19 b(Readline's)h(signal)f(handler)h(for)f
-Fs(SIGINT)p Ft(,)h Fs(SIGQUIT)p Ft(,)g Fs(SIGTERM)p Ft(,)f
-Fs(SIGHUP)p Ft(,)h Fs(SIGALRM)p Ft(,)195 2081 y Fs(SIGTSTP)p
-Ft(,)d Fs(SIGTTIN)p Ft(,)g Fs(SIGTTOU)p Ft(,)g(and)g
-Fs(SIGWINCH)p Ft(,)g(dep)q(ending)i(on)f(the)f(v)m(alues)h(of)f
-Fs(rl_catch_)195 2136 y(signals)d Ft(and)i Fs(rl_catch_sigwinch)p
-Ft(.)1675 2241 y([F)l(unction])-1801 b Fh(int)27 b(rl_clear_signals)e
-Fg(\()p Ff(v)o(oid)p Fg(\))195 2296 y Ft(Remo)o(v)o(e)15
-b(all)f(of)h(the)g(Readline)h(signal)e(handlers)h(installed)f(b)o(y)h
-Fs(rl_set_signals\(\))p Ft(.)75 2426 y Fr(2.6)33 b(Custom)21
-b(Completers)75 2506 y Ft(T)o(ypically)l(,)g(a)g(program)f(that)h
-(reads)g(commands)g(from)g(the)g(user)h(has)f(a)g(w)o(a)o(y)f(of)h
-(disam)o(biguating)75 2560 y(commands)d(and)f(data.)27
-b(If)18 b(y)o(our)f(program)g(is)g(one)h(of)f(these,)i(then)f(it)f(can)
-g(pro)o(vide)h(completion)f(for)75 2615 y(commands,)d(data,)g(or)g(b)q
-(oth.)20 b(The)15 b(follo)o(wing)d(sections)i(describ)q(e)h(ho)o(w)f(y)
-o(our)g(program)g(and)h(Readline)75 2670 y(co)q(op)q(erate)g(to)g(pro)o
-(vide)f(this)h(service.)p eop end
-%%Page: 50 54
-TeXDict begin 50 53 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)14
-b(with)g(GNU)h(Readline)842 b(50)75 149 y Fi(2.6.1)30
-b(Ho)n(w)21 b(Completing)f(W)-5 b(orks)75 223 y Ft(In)14
-b(order)f(to)f(complete)h(some)g(text,)g(the)g(full)f(list)g(of)h(p)q
-(ossible)g(completions)f(m)o(ust)h(b)q(e)h(a)o(v)m(ailable.)k(That)75
-278 y(is,)13 b(it)g(is)g(not)g(p)q(ossible)g(to)g(accurately)f(expand)j
-(a)e(partial)f(w)o(ord)g(without)h(kno)o(wing)f(all)h(of)g(the)g(p)q
-(ossible)75 333 y(w)o(ords)j(whic)o(h)g(mak)o(e)g(sense)h(in)g(that)f
-(con)o(text.)23 b(The)17 b(Readline)g(library)e(pro)o(vides)h(the)h
-(user)g(in)o(terface)75 387 y(to)d(completion,)f(and)h(t)o(w)o(o)f(of)h
-(the)g(most)f(common)h(completion)f(functions:)19 b(\014lename)c(and)f
-(username.)75 442 y(F)l(or)k(completing)h(other)f(t)o(yp)q(es)h(of)g
-(text,)g(y)o(ou)g(m)o(ust)f(write)g(y)o(our)h(o)o(wn)f(completion)g
-(function.)31 b(This)75 497 y(section)15 b(describ)q(es)h(exactly)e
-(what)h(suc)o(h)g(functions)g(m)o(ust)g(do,)g(and)g(pro)o(vides)g(an)g
-(example.)137 579 y(There)h(are)f(three)g(ma)s(jor)f(functions)h(used)g
-(to)g(p)q(erform)g(completion:)100 662 y(1.)29 b(The)22
-b(user-in)o(terface)f(function)h Fs(rl_complete\(\))p
-Ft(.)37 b(This)22 b(function)f(is)g(called)g(with)g(the)h(same)165
-717 y(argumen)o(ts)17 b(as)g(other)h(bindable)g(Readline)g(functions:)
-25 b Fj(coun)o(t)18 b Ft(and)g Fj(in)o(v)o(oking)p 1555
-717 14 2 v 19 w(k)o(ey)p Ft(.)28 b(It)18 b(isolates)165
-771 y(the)h(w)o(ord)f(to)g(b)q(e)i(completed)e(and)h(calls)f
+2615 y Ft(Set)e(Readline's)g(idea)g(of)f(the)h(terminal)f(size)h(to)f
+Fk(ro)o(ws)i Ft(ro)o(ws)e(and)h Fk(cols)h Ft(columns.)k(If)14
+b(either)g Fk(ro)o(ws)195 2670 y Ft(or)c Fk(columns)j
+Ft(is)d(less)h(than)f(or)h(equal)f(to)g(0,)h(Readline)g(do)q(esn't)g(c)
+o(hange)g(that)f(terminal)g(dimension.)p eop end
+%%Page: 55 59
+TeXDict begin 55 58 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)14
+b(with)g(GNU)h(Readline)842 b(55)195 149 y(This)14 b(is)g(in)o(tended)h
+(to)f(tell)g(Readline)g(the)h(ph)o(ysical)f(dimensions)g(of)g(the)h
+(terminal,)e(and)h(is)g(used)195 204 y(in)o(ternally)20
+b(to)g(calculate)h(the)g(maxim)o(um)f(n)o(um)o(b)q(er)i(of)f(c)o
+(haracters)f(that)h(ma)o(y)g(app)q(ear)g(on)g(a)195 259
+y(single)15 b(line)f(and)i(on)f(the)g(screen.)137 347
+y(If)i(an)g(application)e(do)q(es)i(not)f(w)o(an)o(t)g(to)g(install)f
+(a)i Fs(SIGWINCH)e Ft(handler,)i(but)g(is)f(still)f(in)o(terested)h(in)
+75 402 y(the)f(screen)h(dimensions,)e(it)h(ma)o(y)f(query)i(Readline's)
+f(idea)g(of)g(the)g(screen)h(size.)1675 490 y([F)l(unction])-1801
+b Fh(void)27 b(rl_get_screen_size)e Fg(\()p Ff(in)o(t)16
+b(*ro)o(ws,)f(in)o(t)h(*cols)p Fg(\))195 545 y Ft(Return)g(Readline's)f
+(idea)f(of)h(the)g(terminal's)e(size)i(in)g(the)g(v)m(ariables)g(p)q
+(oin)o(ted)g(to)f(b)o(y)h(the)g(argu-)195 600 y(men)o(ts.)1675
+688 y([F)l(unction])-1801 b Fh(void)27 b(rl_reset_screen_size)f
+Fg(\()p Ff(v)o(oid)p Fg(\))195 743 y Ft(Cause)15 b(Readline)h(to)e
+(reobtain)h(the)g(screen)h(size)f(and)g(recalculate)f(its)h
+(dimensions.)137 831 y(The)h(follo)o(wing)d(functions)i(install)e(and)j
+(remo)o(v)o(e)e(Readline's)h(signal)f(handlers.)1675
+920 y([F)l(unction])-1801 b Fh(int)27 b(rl_set_signals)d
+Fg(\()p Ff(v)o(oid)p Fg(\))195 975 y Ft(Install)19 b(Readline's)h
+(signal)f(handler)h(for)f Fs(SIGINT)p Ft(,)h Fs(SIGQUIT)p
+Ft(,)g Fs(SIGTERM)p Ft(,)f Fs(SIGHUP)p Ft(,)h Fs(SIGALRM)p
+Ft(,)195 1029 y Fs(SIGTSTP)p Ft(,)d Fs(SIGTTIN)p Ft(,)g
+Fs(SIGTTOU)p Ft(,)g(and)g Fs(SIGWINCH)p Ft(,)g(dep)q(ending)i(on)f(the)
+f(v)m(alues)h(of)f Fs(rl_catch_)195 1084 y(signals)d
+Ft(and)i Fs(rl_catch_sigwinch)p Ft(.)1675 1173 y([F)l(unction])-1801
+b Fh(int)27 b(rl_clear_signals)e Fg(\()p Ff(v)o(oid)p
+Fg(\))195 1227 y Ft(Remo)o(v)o(e)15 b(all)f(of)h(the)g(Readline)h
+(signal)e(handlers)h(installed)f(b)o(y)h Fs(rl_set_signals\(\))p
+Ft(.)75 1345 y Fr(2.6)33 b(Custom)21 b(Completers)75
+1425 y Ft(T)o(ypically)l(,)g(a)g(program)f(that)h(reads)g(commands)g
+(from)g(the)g(user)h(has)f(a)g(w)o(a)o(y)f(of)h(disam)o(biguating)75
+1480 y(commands)d(and)f(data.)27 b(If)18 b(y)o(our)f(program)g(is)g
+(one)h(of)f(these,)i(then)f(it)f(can)g(pro)o(vide)h(completion)f(for)75
+1534 y(commands,)d(data,)g(or)g(b)q(oth.)20 b(The)15
+b(follo)o(wing)d(sections)i(describ)q(e)h(ho)o(w)f(y)o(our)g(program)g
+(and)h(Readline)75 1589 y(co)q(op)q(erate)g(to)g(pro)o(vide)f(this)h
+(service.)75 1686 y Fi(2.6.1)30 b(Ho)n(w)21 b(Completing)f(W)-5
+b(orks)75 1760 y Ft(In)14 b(order)f(to)f(complete)h(some)g(text,)g(the)
+g(full)f(list)g(of)h(p)q(ossible)g(completions)f(m)o(ust)h(b)q(e)h(a)o
+(v)m(ailable.)k(That)75 1815 y(is,)13 b(it)g(is)g(not)g(p)q(ossible)g
+(to)g(accurately)f(expand)j(a)e(partial)f(w)o(ord)g(without)h(kno)o
+(wing)f(all)h(of)g(the)g(p)q(ossible)75 1869 y(w)o(ords)j(whic)o(h)g
+(mak)o(e)g(sense)h(in)g(that)f(con)o(text.)23 b(The)17
+b(Readline)g(library)e(pro)o(vides)h(the)h(user)g(in)o(terface)75
+1924 y(to)d(completion,)f(and)h(t)o(w)o(o)f(of)h(the)g(most)f(common)h
+(completion)f(functions:)19 b(\014lename)c(and)f(username.)75
+1979 y(F)l(or)k(completing)h(other)f(t)o(yp)q(es)h(of)g(text,)g(y)o(ou)
+g(m)o(ust)f(write)g(y)o(our)h(o)o(wn)f(completion)g(function.)31
+b(This)75 2034 y(section)15 b(describ)q(es)h(exactly)e(what)h(suc)o(h)g
+(functions)g(m)o(ust)g(do,)g(and)g(pro)o(vides)g(an)g(example.)137
+2100 y(There)h(are)f(three)g(ma)s(jor)f(functions)h(used)g(to)g(p)q
+(erform)g(completion:)100 2166 y(1.)29 b(The)22 b(user-in)o(terface)f
+(function)h Fs(rl_complete\(\))p Ft(.)37 b(This)22 b(function)f(is)g
+(called)g(with)g(the)h(same)165 2220 y(argumen)o(ts)17
+b(as)g(other)h(bindable)g(Readline)g(functions:)25 b
+Fk(coun)o(t)18 b Ft(and)g Fk(in)o(v)o(oking)p 1555 2220
+14 2 v 19 w(k)o(ey)p Ft(.)28 b(It)18 b(isolates)165 2275
+y(the)h(w)o(ord)f(to)g(b)q(e)i(completed)e(and)h(calls)f
Fs(rl_completion_matches\(\))e Ft(to)i(generate)g(a)h(list)e(of)165
-826 y(p)q(ossible)e(completions.)20 b(It)c(then)g(either)f(lists)f(the)
-i(p)q(ossible)f(completions,)g(inserts)g(the)g(p)q(ossible)165
-881 y(completions,)23 b(or)f(actually)g(p)q(erforms)g(the)g
+2330 y(p)q(ossible)e(completions.)20 b(It)c(then)g(either)f(lists)f
+(the)i(p)q(ossible)f(completions,)g(inserts)g(the)g(p)q(ossible)165
+2385 y(completions,)23 b(or)f(actually)g(p)q(erforms)g(the)g
(completion,)i(dep)q(ending)f(on)g(whic)o(h)f(b)q(eha)o(vior)g(is)165
-936 y(desired.)100 1011 y(2.)29 b(The)17 b(in)o(ternal)f(function)g
+2440 y(desired.)100 2506 y(2.)29 b(The)17 b(in)o(ternal)f(function)g
Fs(rl_completion_matches\(\))e Ft(uses)j(an)g(application-supplied)f
-Fj(gener-)165 1066 y(ator)21 b Ft(function)d(to)g(generate)g(the)h
+Fk(gener-)165 2560 y(ator)21 b Ft(function)d(to)g(generate)g(the)h
(list)e(of)h(p)q(ossible)g(matc)o(hes,)h(and)f(then)h(returns)g(the)f
-(arra)o(y)f(of)165 1120 y(these)j(matc)o(hes.)32 b(The)20
+(arra)o(y)f(of)165 2615 y(these)j(matc)o(hes.)32 b(The)20
b(caller)e(should)i(place)f(the)h(address)f(of)h(its)e(generator)h
-(function)g(in)g Fs(rl_)165 1175 y(completion_entry_function)p
-Ft(.)100 1250 y(3.)29 b(The)12 b(generator)e(function)h(is)g(called)g
-(rep)q(eatedly)h(from)f Fs(rl_completion_matches\(\))p
-Ft(,)d(returning)165 1305 y(a)16 b(string)f(eac)o(h)i(time.)23
-b(The)16 b(argumen)o(ts)g(to)f(the)i(generator)e(function)h(are)h
-Fj(text)f Ft(and)h Fj(state)p Ft(.)22 b Fj(text)165 1360
-y Ft(is)16 b(the)g(partial)e(w)o(ord)h(to)h(b)q(e)h(completed.)22
-b Fj(state)c Ft(is)d(zero)h(the)g(\014rst)g(time)f(the)h(function)g(is)
-g(called,)165 1414 y(allo)o(wing)k(the)i(generator)f(to)g(p)q(erform)h
-(an)o(y)g(necessary)g(initializatio)o(n,)f(and)h(a)g(p)q(ositiv)o(e)f
-(non-)165 1469 y(zero)14 b(in)o(teger)g(for)g(eac)o(h)h(subsequen)o(t)g
-(call.)k(The)c(generator)e(function)i(returns)f Fs(\(char)h(*\)NULL)f
-Ft(to)165 1524 y(inform)k Fs(rl_completion_matches\(\))e
-Ft(that)i(there)h(are)g(no)g(more)g(p)q(ossibilities)e(left.)31
-b(Usually)165 1579 y(the)19 b(generator)g(function)g(computes)h(the)f
-(list)f(of)h(p)q(ossible)g(completions)g(when)g Fj(state)j
-Ft(is)c(zero,)165 1634 y(and)13 b(returns)g(them)f(one)h(at)f(a)h(time)
-f(on)h(subsequen)o(t)g(calls.)18 b(Eac)o(h)13 b(string)e(the)i
-(generator)f(function)165 1688 y(returns)k(as)f(a)h(matc)o(h)f(m)o(ust)
-h(b)q(e)g(allo)q(cated)f(with)h Fs(malloc\(\))p Ft(;)e(Readline)j
-(frees)f(the)g(strings)e(when)165 1743 y(it)i(has)h(\014nished)h(with)e
-(them.)25 b(Suc)o(h)18 b(a)e(generator)g(function)h(is)f(referred)h(to)
-g(as)f(an)h Fj(application-)165 1798 y(sp)q(eci\014c)f(completion)e
-(function)p Ft(.)1675 1921 y([F)l(unction])-1801 b Fh(int)27
-b(rl_complete)d Fg(\()p Ff(in)o(t)16 b(ignore,)f(in)o(t)h(in)o(v)o
-(oking)p 1010 1921 15 3 v 21 w(k)o(ey)p Fg(\))195 1975
-y Ft(Complete)f(the)g(w)o(ord)g(at)f(or)h(b)q(efore)h(p)q(oin)o(t.)k(Y)
-l(ou)15 b(ha)o(v)o(e)g(supplied)h(the)f(function)h(that)e(do)q(es)i
-(the)195 2030 y(initial)j(simple)h(matc)o(hing)f(selection)h(algorithm)
-f(\(see)h Fs(rl_completion_matches\(\))p Ft(\).)33 b(The)195
-2085 y(default)15 b(is)f(to)h(do)g(\014lename)g(completion.)1685
-2208 y([V)l(ariable])-1801 b Fh(rl_compentry_func_t)29
-b(*)d(rl_completion_entry_f)q(unction)195 2262 y Ft(This)20
-b(is)f(a)h(p)q(oin)o(ter)f(to)g(the)h(generator)g(function)f(for)h
-Fs(rl_completion_matches\(\))p Ft(.)31 b(If)20 b(the)195
-2317 y(v)m(alue)12 b(of)g Fs(rl_completion_entry_fun)o(ction)d
-Ft(is)i Fs(NULL)g Ft(then)h(the)g(default)g(\014lename)g(generator)195
-2372 y(function,)24 b Fs(rl_filename_completion_f)o(unction\()o(\))p
-Ft(,)d(is)h(used.)42 b(An)23 b Fj(application-sp)q(eci\014c)195
-2427 y(completion)10 b(function)g Ft(is)g(a)g(function)h(whose)f
+(function)g(in)g Fs(rl_)165 2670 y(completion_entry_function)p
+Ft(.)p eop end
+%%Page: 56 60
+TeXDict begin 56 59 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)14
+b(with)g(GNU)h(Readline)842 b(56)100 149 y(3.)29 b(The)12
+b(generator)e(function)h(is)g(called)g(rep)q(eatedly)h(from)f
+Fs(rl_completion_matches\(\))p Ft(,)d(returning)165 204
+y(a)16 b(string)f(eac)o(h)i(time.)23 b(The)16 b(argumen)o(ts)g(to)f
+(the)i(generator)e(function)h(are)h Fk(text)f Ft(and)h
+Fk(state)p Ft(.)22 b Fk(text)165 259 y Ft(is)16 b(the)g(partial)e(w)o
+(ord)h(to)h(b)q(e)h(completed.)22 b Fk(state)c Ft(is)d(zero)h(the)g
+(\014rst)g(time)f(the)h(function)g(is)g(called,)165 314
+y(allo)o(wing)g(the)i(generator)e(to)i(p)q(erform)f(an)o(y)h(necessary)
+g(initializatio)o(n,)e(and)i(a)f(p)q(ositiv)o(e)g(in)o(teger)165
+369 y(for)e(eac)o(h)h(subsequen)o(t)h(call.)j(The)d(generator)d
+(function)i(returns)g Fs(\(char)e(*\)NULL)h Ft(to)g(inform)g
+Fs(rl_)165 423 y(completion_matches\(\))10 b Ft(that)i(there)h(are)g
+(no)g(more)f(p)q(ossibilities)f(left.)19 b(Usually)12
+b(the)h(generator)165 478 y(function)g(computes)f(the)h(list)f(of)g(p)q
+(ossible)h(completions)f(when)h Fk(state)h Ft(is)f(zero,)f(and)h
+(returns)g(them)165 533 y(one)e(at)g(a)f(time)h(on)g(subsequen)o(t)g
+(calls.)18 b(Eac)o(h)11 b(string)f(the)h(generator)f(function)h
+(returns)g(as)g(a)g(matc)o(h)165 588 y(m)o(ust)k(b)q(e)h(allo)q(cated)e
+(with)h Fs(malloc\(\))p Ft(;)f(Readline)h(frees)g(the)h(strings)e(when)
+i(it)e(has)i(\014nished)g(with)165 643 y(them.)31 b(Suc)o(h)20
+b(a)f(generator)f(function)h(is)f(referred)h(to)g(as)f(an)h
+Fk(application-sp)q(eci\014c)g(completion)165 697 y(function)p
+Ft(.)1675 787 y([F)l(unction])-1801 b Fh(int)27 b(rl_complete)d
+Fg(\()p Ff(in)o(t)16 b(ignore,)f(in)o(t)h(in)o(v)o(oking)p
+1010 787 15 3 v 21 w(k)o(ey)p Fg(\))195 842 y Ft(Complete)f(the)g(w)o
+(ord)g(at)f(or)h(b)q(efore)h(p)q(oin)o(t.)k(Y)l(ou)15
+b(ha)o(v)o(e)g(supplied)h(the)f(function)h(that)e(do)q(es)i(the)195
+897 y(initial)j(simple)h(matc)o(hing)f(selection)h(algorithm)f(\(see)h
+Fs(rl_completion_matches\(\))p Ft(\).)33 b(The)195 952
+y(default)15 b(is)f(to)h(do)g(\014lename)g(completion.)1685
+1042 y([V)l(ariable])-1801 b Fh(rl_compentry_func_t)29
+b(*)d(rl_completion_entry_f)q(unction)195 1097 y Ft(This)10
+b(is)g(a)g(p)q(oin)o(ter)f(to)h(the)h(generator)e(function)h(for)g
+Fs(rl_completion_matches\(\))p Ft(.)15 b(If)10 b(the)h(v)m(alue)195
+1152 y(of)k Fs(rl_completion_entry_function)d Ft(is)k
+Fs(NULL)f Ft(then)h(Readline)g(uses)g(the)g(default)g(\014lename)195
+1206 y(generator)h(function,)g Fs(rl_filename_completion_func)o
+(tion\(\))p Ft(.)23 b(An)18 b Fk(application-sp)q(eci\014c)195
+1261 y(completion)10 b(function)g Ft(is)g(a)g(function)h(whose)f
(address)h(is)f(assigned)g(to)g Fs(rl_completion_entry_)195
-2482 y(function)k Ft(and)h(whose)h(return)f(v)m(alues)g(are)g(used)h
-(to)e(generate)h(p)q(ossible)g(completions.)75 2597 y
-Fi(2.6.2)30 b(Completion)20 b(F)-5 b(unctions)75 2670
+1316 y(function)k Ft(and)h(whose)h(return)f(v)m(alues)g(are)g(used)h
+(to)e(generate)h(p)q(ossible)g(completions.)75 1414 y
+Fi(2.6.2)30 b(Completion)20 b(F)-5 b(unctions)75 1488
y Ft(Here)15 b(is)g(the)g(complete)g(list)f(of)h(callable)f(completion)
-h(functions)g(presen)o(t)g(in)g(Readline.)p eop end
-%%Page: 51 55
-TeXDict begin 51 54 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)14
-b(with)g(GNU)h(Readline)842 b(51)1675 149 y([F)l(unction])-1801
-b Fh(int)27 b(rl_complete_internal)e Fg(\()p Ff(in)o(t)16
-b(what)p 930 149 15 3 v 22 w(to)p 996 149 V 22 w(do)p
-Fg(\))195 204 y Ft(Complete)i(the)g(w)o(ord)g(at)f(or)h(b)q(efore)h(p)q
-(oin)o(t.)28 b Fj(what)p 1104 204 14 2 v 20 w(to)p 1165
-204 V 19 w(do)21 b Ft(sa)o(ys)c(what)h(to)g(do)g(with)g(the)g(com-)195
-259 y(pletion.)i(A)c(v)m(alue)g(of)f(`)p Fs(?)p Ft(')g(means)g(list)g
+h(functions)g(presen)o(t)g(in)g(Readline.)1675 1578 y([F)l(unction])
+-1801 b Fh(int)27 b(rl_complete_internal)e Fg(\()p Ff(in)o(t)16
+b(what)p 930 1578 V 22 w(to)p 996 1578 V 22 w(do)p Fg(\))195
+1633 y Ft(Complete)i(the)g(w)o(ord)g(at)f(or)h(b)q(efore)h(p)q(oin)o
+(t.)28 b Fk(what)p 1104 1633 14 2 v 20 w(to)p 1165 1633
+V 19 w(do)21 b Ft(sa)o(ys)c(what)h(to)g(do)g(with)g(the)g(com-)195
+1687 y(pletion.)i(A)c(v)m(alue)g(of)f(`)p Fs(?)p Ft(')g(means)g(list)g
(the)g(p)q(ossible)h(completions.)k(`)p Fs(TAB)p Ft(')14
-b(means)i(do)f(standard)195 314 y(completion.)20 b(`)p
+b(means)i(do)f(standard)195 1742 y(completion.)20 b(`)p
Fs(*)p Ft(')15 b(means)g(insert)g(all)g(of)g(the)h(p)q(ossible)f
(completions.)20 b(`)p Fs(!)p Ft(')15 b(means)g(to)g(displa)o(y)g(all)
-195 369 y(of)i(the)g(p)q(ossible)g(completions,)f(if)h(there)g(is)g
+195 1797 y(of)i(the)g(p)q(ossible)g(completions,)f(if)h(there)g(is)g
(more)g(than)g(one,)g(as)g(w)o(ell)f(as)h(p)q(erforming)g(partial)195
-423 y(completion.)h(`)p Fs(@)p Ft(')13 b(is)g(similar)f(to)h(`)p
-Fs(!)p Ft(',)g(but)h(p)q(ossible)f(completions)g(are)g(not)g(listed)g
-(if)g(the)h(p)q(ossible)195 478 y(completions)g(share)h(a)g(common)g
-(pre\014x.)1675 601 y([F)l(unction])-1801 b Fh(int)27
+1852 y(completion.)i(`)p Fs(@)p Ft(')14 b(is)h(similar)e(to)h(`)p
+Fs(!)p Ft(',)g(but)h(do)q(es)h(not)f(list)e(p)q(ossible)i(completions)f
+(if)h(the)g(p)q(ossible)195 1907 y(completions)f(share)h(a)g(common)g
+(pre\014x.)1675 1997 y([F)l(unction])-1801 b Fh(int)27
b(rl_complete)d Fg(\()p Ff(in)o(t)16 b(ignore,)f(in)o(t)h(in)o(v)o
-(oking)p 1010 601 15 3 v 21 w(k)o(ey)p Fg(\))195 656
+(oking)p 1010 1997 15 3 v 21 w(k)o(ey)p Fg(\))195 2051
y Ft(Complete)k(the)h(w)o(ord)e(at)h(or)g(b)q(efore)h(p)q(oin)o(t.)36
b(Y)l(ou)21 b(ha)o(v)o(e)f(supplied)h(the)f(function)h(that)f(do)q(es)
-195 711 y(the)d(initial)d(simple)i(matc)o(hing)g(selection)g(algorithm)
-e(\(see)i Fs(rl_completion_matches\(\))e Ft(and)195 766
-y Fs(rl_completion_entry_functi)o(on)p Ft(\).)25 b(The)18
-b(default)g(is)f(to)g(do)h(\014lename)g(completion.)27
-b(This)195 821 y(calls)14 b Fs(rl_complete_internal\(\))e
-Ft(with)j(an)g(argumen)o(t)f(dep)q(ending)j(on)e Fj(in)o(v)o(oking)p
-1659 821 14 2 v 19 w(k)o(ey)p Ft(.)1675 944 y([F)l(unction])-1801
+195 2106 y(the)d(initial)d(simple)i(matc)o(hing)g(selection)g
+(algorithm)e(\(see)i Fs(rl_completion_matches\(\))e Ft(and)195
+2161 y Fs(rl_completion_entry_functi)o(on)p Ft(\).)25
+b(The)18 b(default)g(is)f(to)g(do)h(\014lename)g(completion.)27
+b(This)195 2216 y(calls)14 b Fs(rl_complete_internal\(\))e
+Ft(with)j(an)g(argumen)o(t)f(dep)q(ending)j(on)e Fk(in)o(v)o(oking)p
+1659 2216 14 2 v 19 w(k)o(ey)p Ft(.)1675 2306 y([F)l(unction])-1801
b Fh(int)27 b(rl_possible_completions)f Fg(\()p Ff(in)o(t)16
-b(coun)o(t,)f(in)o(t)i(in)o(v)o(oking)p 1312 944 15 3
-v 20 w(k)o(ey)p Fg(\))195 999 y Ft(List)j(the)g(p)q(ossible)g
-(completions.)34 b(See)21 b(description)f(of)g Fs(rl_complete)13
-b(\(\))p Ft(.)35 b(This)20 b(calls)f Fs(rl_)195 1053
-y(complete_internal\(\))13 b Ft(with)h(an)h(argumen)o(t)g(of)f(`)p
-Fs(?)p Ft('.)1675 1177 y([F)l(unction])-1801 b Fh(int)27
-b(rl_insert_completions)f Fg(\()p Ff(in)o(t)15 b(coun)o(t,)h(in)o(t)g
-(in)o(v)o(oking)p 1259 1177 V 21 w(k)o(ey)p Fg(\))195
-1231 y Ft(Insert)h(the)g(list)f(of)g(p)q(ossible)h(completions)e(in)o
-(to)h(the)h(line,)g(deleting)f(the)h(partially-completed)195
-1286 y(w)o(ord.)k(See)c(description)e(of)g Fs(rl_complete\(\))p
-Ft(.)20 b(This)c(calls)f Fs(rl_complete_internal\(\))e
-Ft(with)195 1341 y(an)i(argumen)o(t)g(of)f(`)p Fs(*)p
-Ft('.)1675 1464 y([F)l(unction])-1801 b Fh(int)27 b(rl_completion_mode)
-e Fg(\()p Ff(rl)p 728 1464 V 21 w(command)p 961 1464
-V 20 w(func)p 1074 1464 V 22 w(t)17 b(*cfunc)p Fg(\))195
-1519 y Ft(Returns)k(the)g(appropriate)f(v)m(alue)h(to)f(pass)g(to)g
-Fs(rl_complete_internal\(\))e Ft(dep)q(ending)k(on)195
-1574 y(whether)f Fj(cfunc)i Ft(w)o(as)d(called)g(t)o(wice)g(in)g
-(succession)h(and)f(the)h(v)m(alues)f(of)g(the)h Fs(show-all-if-)195
-1629 y(ambiguous)13 b Ft(and)g Fs(show-all-if-unmodified)e
-Ft(v)m(ariables.)19 b(Application-sp)q(eci\014c)14 b(completion)195
-1683 y(functions)h(ma)o(y)f(use)i(this)f(function)g(to)f(presen)o(t)h
-(the)h(same)f(in)o(terface)f(as)h Fs(rl_complete\(\))p
-Ft(.)1675 1806 y([F)l(unction])-1801 b Fh(char)27 b(**)f
-(rl_completion_matches)g Fg(\()p Ff(const)16 b(c)o(har)g(*text,)283
-1861 y(rl)p 320 1861 V 21 w(comp)q(en)o(try)p 573 1861
-V 21 w(func)p 687 1861 V 22 w(t)h(*en)o(try)p 884 1861
-V 21 w(func)p Fg(\))195 1916 y Ft(Returns)i(an)g(arra)o(y)f(of)g
-(strings)g(whic)o(h)h(is)g(a)f(list)g(of)g(completions)g(for)h
-Fj(text)p Ft(.)30 b(If)19 b(there)g(are)g(no)195 1971
-y(completions,)d(returns)i Fs(NULL)p Ft(.)25 b(The)17
-b(\014rst)g(en)o(try)g(in)g(the)g(returned)h(arra)o(y)e(is)h(the)g
-(substitution)195 2026 y(for)c Fj(text)p Ft(.)18 b(The)c(remaining)e
-(en)o(tries)g(are)h(the)h(p)q(ossible)e(completions.)19
-b(The)13 b(arra)o(y)f(is)h(terminated)195 2080 y(with)i(a)f
-Fs(NULL)h Ft(p)q(oin)o(ter.)195 2163 y Fj(en)o(try)p
-302 2163 14 2 v 20 w(func)23 b Ft(is)c(a)g(function)h(of)f(t)o(w)o(o)g
-(args,)g(and)h(returns)g(a)f Fs(char)c(*)p Ft(.)33 b(The)20
-b(\014rst)f(argumen)o(t)g(is)195 2218 y Fj(text)p Ft(.)32
-b(The)19 b(second)h(is)f(a)g(state)f(argumen)o(t;)j(it)d(is)h(zero)g
-(on)g(the)h(\014rst)f(call,)g(and)g(non-zero)h(on)195
-2273 y(subsequen)o(t)e(calls.)24 b Fj(en)o(try)p 661
-2273 V 19 w(func)d Ft(returns)16 b(a)h Fs(NULL)f Ft(p)q(oin)o(ter)h(to)
-f(the)h(caller)f(when)h(there)g(are)g(no)195 2328 y(more)e(matc)o(hes.)
-1675 2451 y([F)l(unction])-1801 b Fh(char)27 b(*)f
+b(coun)o(t,)f(in)o(t)i(in)o(v)o(oking)p 1312 2306 15
+3 v 20 w(k)o(ey)p Fg(\))195 2361 y Ft(List)k(the)g(p)q(ossible)g
+(completions.)38 b(See)22 b(description)f(of)g Fs(rl_complete\(\))p
+Ft(.)36 b(This)21 b(calls)f Fs(rl_)195 2416 y(complete_internal\(\))13
+b Ft(with)h(an)h(argumen)o(t)g(of)f(`)p Fs(?)p Ft('.)1675
+2506 y([F)l(unction])-1801 b Fh(int)27 b(rl_insert_completions)f
+Fg(\()p Ff(in)o(t)15 b(coun)o(t,)h(in)o(t)g(in)o(v)o(oking)p
+1259 2506 V 21 w(k)o(ey)p Fg(\))195 2560 y Ft(Insert)h(the)g(list)f(of)
+g(p)q(ossible)h(completions)e(in)o(to)h(the)h(line,)g(deleting)f(the)h
+(partially-completed)195 2615 y(w)o(ord.)k(See)c(description)e(of)g
+Fs(rl_complete\(\))p Ft(.)20 b(This)c(calls)f Fs
+(rl_complete_internal\(\))e Ft(with)195 2670 y(an)i(argumen)o(t)g(of)f
+(`)p Fs(*)p Ft('.)p eop end
+%%Page: 57 61
+TeXDict begin 57 60 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)14
+b(with)g(GNU)h(Readline)842 b(57)1675 149 y([F)l(unction])-1801
+b Fh(int)27 b(rl_completion_mode)e Fg(\()p Ff(rl)p 728
+149 15 3 v 21 w(command)p 961 149 V 20 w(func)p 1074
+149 V 22 w(t)17 b(*cfunc)p Fg(\))195 204 y Ft(Returns)k(the)g
+(appropriate)f(v)m(alue)h(to)f(pass)g(to)g Fs(rl_complete_internal\(\))
+e Ft(dep)q(ending)k(on)195 259 y(whether)f Fk(cfunc)i
+Ft(w)o(as)d(called)g(t)o(wice)g(in)g(succession)h(and)f(the)h(v)m
+(alues)f(of)g(the)h Fs(show-all-if-)195 314 y(ambiguous)13
+b Ft(and)g Fs(show-all-if-unmodified)e Ft(v)m(ariables.)19
+b(Application-sp)q(eci\014c)14 b(completion)195 369 y(functions)h(ma)o
+(y)f(use)i(this)f(function)g(to)f(presen)o(t)h(the)h(same)f(in)o
+(terface)f(as)h Fs(rl_complete\(\))p Ft(.)1675 459 y([F)l(unction])
+-1801 b Fh(char)27 b(**)f(rl_completion_matches)g Fg(\()p
+Ff(const)16 b(c)o(har)g(*text,)283 514 y(rl)p 320 514
+V 21 w(comp)q(en)o(try)p 573 514 V 21 w(func)p 687 514
+V 22 w(t)h(*en)o(try)p 884 514 V 21 w(func)p Fg(\))195
+568 y Ft(Returns)i(an)g(arra)o(y)f(of)g(strings)g(whic)o(h)h(is)g(a)f
+(list)g(of)g(completions)g(for)h Fk(text)p Ft(.)30 b(If)19
+b(there)g(are)g(no)195 623 y(completions,)d(returns)i
+Fs(NULL)p Ft(.)25 b(The)17 b(\014rst)g(en)o(try)g(in)g(the)g(returned)h
+(arra)o(y)e(is)h(the)g(substitution)195 678 y(for)c Fk(text)p
+Ft(.)18 b(The)c(remaining)e(en)o(tries)g(are)h(the)h(p)q(ossible)e
+(completions.)19 b(The)13 b(arra)o(y)f(is)h(terminated)195
+733 y(with)i(a)f Fs(NULL)h Ft(p)q(oin)o(ter.)195 799
+y Fk(en)o(try)p 302 799 14 2 v 20 w(func)23 b Ft(is)c(a)g(function)h
+(of)f(t)o(w)o(o)g(args,)g(and)h(returns)g(a)f Fs(char)c(*)p
+Ft(.)33 b(The)20 b(\014rst)f(argumen)o(t)g(is)195 854
+y Fk(text)p Ft(.)32 b(The)19 b(second)h(is)f(a)g(state)f(argumen)o(t;)j
+(it)d(is)h(zero)g(on)g(the)h(\014rst)f(call,)g(and)g(non-zero)h(on)195
+909 y(subsequen)o(t)e(calls.)24 b Fk(en)o(try)p 661 909
+V 19 w(func)d Ft(returns)16 b(a)h Fs(NULL)f Ft(p)q(oin)o(ter)h(to)f
+(the)h(caller)f(when)h(there)g(are)g(no)195 964 y(more)e(matc)o(hes.)
+1675 1054 y([F)l(unction])-1801 b Fh(char)27 b(*)f
(rl_filename_completion_)q(functio)q(n)f Fg(\()p Ff(const)17
-b(c)o(har)e(*text,)i(in)o(t)283 2506 y(state)p Fg(\))195
-2560 y Ft(A)c(generator)f(function)g(for)h(\014lename)g(completion)e
-(in)i(the)g(general)f(case.)19 b Fj(text)14 b Ft(is)e(a)h(partial)e
-(\014le-)195 2615 y(name.)18 b(The)11 b(Bash)g(source)g(is)f(a)h
+b(c)o(har)e(*text,)i(in)o(t)283 1109 y(state)p Fg(\))195
+1163 y Ft(A)c(generator)f(function)g(for)h(\014lename)g(completion)e
+(in)i(the)g(general)f(case.)19 b Fk(text)14 b Ft(is)e(a)h(partial)e
+(\014le-)195 1218 y(name.)18 b(The)11 b(Bash)g(source)g(is)f(a)h
(useful)g(reference)g(for)f(writing)f(application-sp)q(eci\014c)i
-(completion)195 2670 y(functions)k(\(the)g(Bash)g(completion)f
-(functions)h(call)g(this)f(and)i(other)f(Readline)g(functions\).)p
-eop end
-%%Page: 52 56
-TeXDict begin 52 55 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)14
-b(with)g(GNU)h(Readline)842 b(52)1675 149 y([F)l(unction])-1801
-b Fh(char)27 b(*)f(rl_username_completion_)q(functio)q(n)f
-Fg(\()p Ff(const)17 b(c)o(har)e(*text,)i(in)o(t)283 204
-y(state)p Fg(\))195 259 y Ft(A)d(completion)g(generator)f(for)h
-(usernames.)19 b Fj(text)c Ft(con)o(tains)e(a)h(partial)f(username)h
-(preceded)i(b)o(y)195 314 y(a)f(random)g(c)o(haracter)f(\(usually)h(`)p
-Fs(~)p Ft('\).)k(As)c(with)f(all)h(completion)f(generators,)g
-Fj(state)j Ft(is)e(zero)g(on)195 369 y(the)g(\014rst)g(call)f(and)i
-(non-zero)f(for)g(subsequen)o(t)h(calls.)75 477 y Fi(2.6.3)30
-b(Completion)20 b(V)-5 b(ariables)1685 585 y Ft([V)l(ariable])-1801
+(completion)195 1273 y(functions)k(\(the)g(Bash)g(completion)f
+(functions)h(call)g(this)f(and)i(other)f(Readline)g(functions\).)1675
+1363 y([F)l(unction])-1801 b Fh(char)27 b(*)f(rl_username_completion_)q
+(functio)q(n)f Fg(\()p Ff(const)17 b(c)o(har)e(*text,)i(in)o(t)283
+1418 y(state)p Fg(\))195 1473 y Ft(A)d(completion)g(generator)f(for)h
+(usernames.)19 b Fk(text)c Ft(con)o(tains)e(a)h(partial)f(username)h
+(preceded)i(b)o(y)195 1527 y(a)f(random)g(c)o(haracter)f(\(usually)h(`)
+p Fs(~)p Ft('\).)k(As)c(with)f(all)h(completion)f(generators,)g
+Fk(state)j Ft(is)e(zero)g(on)195 1582 y(the)g(\014rst)g(call)f(and)i
+(non-zero)f(for)g(subsequen)o(t)h(calls.)75 1680 y Fi(2.6.3)30
+b(Completion)20 b(V)-5 b(ariables)1685 1777 y Ft([V)l(ariable])-1801
b Fh(rl_compentry_func_t)29 b(*)d(rl_completion_entry_f)q(unction)195
-640 y Ft(A)17 b(p)q(oin)o(ter)f(to)g(the)h(generator)f(function)g(for)g
-Fs(rl_completion_matches\(\))p Ft(.)22 b Fs(NULL)16 b
-Ft(means)h(to)195 694 y(use)f Fs(rl_filename_completion_)o(functio)o
+1832 y Ft(A)17 b(p)q(oin)o(ter)f(to)g(the)h(generator)f(function)g(for)
+g Fs(rl_completion_matches\(\))p Ft(.)22 b Fs(NULL)16
+b Ft(means)h(to)195 1887 y(use)f Fs(rl_filename_completion_)o(functio)o
(n\(\))p Ft(,)c(the)j(default)g(\014lename)g(completer.)1685
-805 y([V)l(ariable])-1801 b Fh(rl_completion_func_t)29
-b(*)d(rl_attempted_complet)q(ion_fun)q(ction)195 860
+1977 y([V)l(ariable])-1801 b Fh(rl_completion_func_t)29
+b(*)d(rl_attempted_complet)q(ion_fun)q(ction)195 2032
y Ft(A)17 b(p)q(oin)o(ter)g(to)g(an)g(alternativ)o(e)f(function)h(to)g
(create)g(matc)o(hes.)26 b(The)18 b(function)f(is)g(called)g(with)195
-914 y Fj(text)p Ft(,)11 b Fj(start)p Ft(,)g(and)h Fj(end)p
-Ft(.)19 b Fj(start)11 b Ft(and)h Fj(end)i Ft(are)d(indices)g(in)h
-Fs(rl_line_buffer)d Ft(de\014ning)j(the)g(b)q(ound-)195
-969 y(aries)g(of)h Fj(text)p Ft(,)f(whic)o(h)h(is)g(a)f(c)o(haracter)h
-(string.)18 b(If)13 b(this)f(function)h(exists)g(and)g(returns)g
-Fs(NULL)p Ft(,)f(or)g(if)195 1024 y(this)e(v)m(ariable)h(is)f(set)h(to)
-f Fs(NULL)p Ft(,)h(then)g Fs(rl_complete\(\))e Ft(will)h(call)g(the)h
-(v)m(alue)g(of)g Fs(rl_completion_)195 1079 y(entry_function)h
-Ft(to)i(generate)g(matc)o(hes,)f(otherwise)h(the)g(arra)o(y)f(of)h
-(strings)f(returned)h(will)f(b)q(e)195 1133 y(used.)19
-b(If)12 b(this)e(function)h(sets)g(the)g Fs
-(rl_attempted_completion_over)d Ft(v)m(ariable)i(to)h(a)g(non-zero)195
-1188 y(v)m(alue,)17 b(Readline)h(will)d(not)i(p)q(erform)f(its)h
-(default)f(completion)g(ev)o(en)h(if)g(this)f(function)h(returns)195
-1243 y(no)e(matc)o(hes.)1685 1353 y([V)l(ariable])-1801
+2087 y Fk(text)p Ft(,)24 b Fk(start)p Ft(,)f(and)g Fk(end)p
+Ft(.)44 b Fk(start)22 b Ft(and)h Fk(end)j Ft(are)c(indices)h(in)g
+Fs(rl_line_buffer)e Ft(de\014ning)i(the)195 2142 y(b)q(oundaries)d(of)e
+Fk(text)p Ft(,)i(whic)o(h)f(is)g(a)g(c)o(haracter)f(string.)32
+b(If)19 b(this)g(function)g(exists)g(and)g(returns)195
+2196 y Fs(NULL)p Ft(,)h(or)g(if)f(this)h(v)m(ariable)f(is)g(set)h(to)g
+Fs(NULL)p Ft(,)g(then)g Fs(rl_complete\(\))e Ft(will)h(call)g(the)h(v)m
+(alue)g(of)195 2251 y Fs(rl_completion_entry_functi)o(on)10
+b Ft(to)j(generate)g(matc)o(hes,)g(otherwise)f(completion)h(will)f(use)
+195 2306 y(the)19 b(arra)o(y)f(of)g(strings)g(this)h(function)f
+(returns.)32 b(If)19 b(this)f(function)h(sets)g(the)g
+Fs(rl_attempted_)195 2361 y(completion_over)13 b Ft(v)m(ariable)i(to)g
+(a)g(non-zero)g(v)m(alue,)g(Readline)h(will)e(not)h(p)q(erform)g(its)f
+(default)195 2416 y(completion)g(ev)o(en)i(if)f(this)f(function)h
+(returns)g(no)g(matc)o(hes.)1685 2506 y([V)l(ariable])-1801
b Fh(rl_quote_func_t)28 b(*)f(rl_filename_quoting_funct)q(ion)195
-1408 y Ft(A)16 b(p)q(oin)o(ter)g(to)g(a)g(function)g(that)f(will)g
+2560 y Ft(A)16 b(p)q(oin)o(ter)g(to)g(a)g(function)g(that)f(will)g
(quote)h(a)g(\014lename)h(in)f(an)g(application-sp)q(eci\014c)g
-(fashion.)195 1463 y(This)j(is)g(called)h(if)f(\014lename)g(completion)
-g(is)g(b)q(eing)h(attempted)f(and)h(one)g(of)f(the)h(c)o(haracters)195
-1518 y(in)c Fs(rl_filename_quote_characters)d Ft(app)q(ears)k(in)f(a)h
-(completed)f(\014lename.)24 b(The)17 b(function)195 1573
-y(is)h(called)g(with)g Fj(text)p Ft(,)g Fj(matc)o(h)p
-720 1573 14 2 v 20 w(t)o(yp)q(e)p Ft(,)g(and)h Fj(quote)p
-1060 1573 V 20 w(p)q(oin)o(ter)p Ft(.)29 b(The)19 b Fj(text)g
-Ft(is)e(the)i(\014lename)g(to)e(b)q(e)195 1627 y(quoted.)38
-b(The)21 b Fj(matc)o(h)p 606 1627 V 20 w(t)o(yp)q(e)i
-Ft(is)e(either)g Fs(SINGLE_MATCH)p Ft(,)f(if)h(there)g(is)g(only)g(one)
-g(completion)195 1682 y(matc)o(h,)15 b(or)g Fs(MULT_MATCH)p
-Ft(.)20 b(Some)c(functions)f(use)h(this)f(to)g(decide)i(whether)f(or)f
-(not)g(to)g(insert)g(a)195 1737 y(closing)9 b(quote)i(c)o(haracter.)17
-b(The)11 b Fj(quote)p 876 1737 V 20 w(p)q(oin)o(ter)i
-Ft(is)d(a)g(p)q(oin)o(ter)g(to)g(an)o(y)g(op)q(ening)g(quote)h(c)o
-(haracter)195 1792 y(the)k(user)h(t)o(yp)q(ed.)k(Some)15
-b(functions)g(c)o(ho)q(ose)g(to)g(reset)g(this)f(c)o(haracter.)1685
-1902 y([V)l(ariable])-1801 b Fh(rl_dequote_func_t)29
-b(*)d(rl_filename_dequoting_f)q(unction)195 1957 y Ft(A)15
-b(p)q(oin)o(ter)f(to)g(a)h(function)f(that)h(will)e(remo)o(v)o(e)h
-(application-sp)q(eci\014c)h(quoting)f(c)o(haracters)g(from)195
-2012 y(a)i(\014lename)g(b)q(efore)h(completion)e(is)h(attempted,)g(so)f
-(those)h(c)o(haracters)g(do)g(not)g(in)o(terfere)g(with)195
-2067 y(matc)o(hing)i(the)h(text)g(against)e(names)i(in)g(the)g
-(\014lesystem.)32 b(It)19 b(is)f(called)h(with)f Fj(text)p
-Ft(,)h(the)g(text)195 2121 y(of)i(the)g(w)o(ord)f(to)h(b)q(e)g
-(dequoted,)i(and)e Fj(quote)p 1007 2121 V 20 w(c)o(har)p
-Ft(,)h(whic)o(h)f(is)g(the)g(quoting)f(c)o(haracter)h(that)195
-2176 y(delimits)15 b(the)h(\014lename)g(\(usually)f(`)p
-Fs(')p Ft(')g(or)h(`)p Fs(")p Ft('\).)21 b(If)c Fj(quote)p
-1185 2176 V 19 w(c)o(har)i Ft(is)d(zero,)g(the)g(\014lename)g(w)o(as)f
-(not)195 2231 y(in)g(an)g(em)o(b)q(edded)i(string.)1685
-2341 y([V)l(ariable])-1801 b Fh(rl_linebuf_func_t)29
-b(*)d(rl_char_is_quoted_p)195 2396 y Ft(A)18 b(p)q(oin)o(ter)g(to)g(a)g
-(function)g(to)g(call)g(that)f(determines)i(whether)f(or)g(not)g(a)g
-(sp)q(eci\014c)i(c)o(haracter)195 2451 y(in)d(the)g(line)g(bu\013er)g
-(is)g(quoted,)h(according)e(to)h(whatev)o(er)f(quoting)h(mec)o(hanism)g
-(the)g(program)195 2506 y(calling)11 b(Readline)i(uses.)19
-b(The)13 b(function)f(is)g(called)g(with)g(t)o(w)o(o)f(argumen)o(ts:)17
-b Fj(text)p Ft(,)12 b(the)h(text)f(of)g(the)195 2560
-y(line,)j(and)g Fj(index)p Ft(,)h(the)f(index)h(of)f(the)g(c)o
-(haracter)g(in)g(the)h(line.)k(It)15 b(is)g(used)h(to)f(decide)h
-(whether)f(a)195 2615 y(c)o(haracter)f(found)i(in)f Fs
-(rl_completer_word_break_)o(charact)o(ers)d Ft(should)j(b)q(e)h(used)g
-(to)e(break)195 2670 y(w)o(ords)g(for)h(the)g(completer.)p
+(fashion.)195 2615 y(Readline)d(calls)g(this)f(function)h(during)g
+(\014lename)g(completion)f(if)h(one)g(of)g(the)g(c)o(haracters)f(in)h
+Fs(rl_)195 2670 y(filename_quote_characters)7 b Ft(app)q(ears)k(in)g(a)
+g(completed)g(\014lename.)18 b(The)11 b(function)g(is)f(called)p
eop end
-%%Page: 53 57
-TeXDict begin 53 56 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)14
-b(with)g(GNU)h(Readline)842 b(53)1685 149 y([V)l(ariable])-1801
-b Fh(rl_compignore_func_t)29 b(*)d(rl_ignore_some_compl)q(etions_)q
-(functio)q(n)195 204 y Ft(This)18 b(function,)i(if)e(de\014ned,)j(is)d
-(called)g(b)o(y)h(the)g(completer)f(when)i(real)e(\014lename)h
-(completion)195 259 y(is)e(done,)g(after)f(all)g(the)h(matc)o(hing)f
-(names)h(ha)o(v)o(e)g(b)q(een)h(generated.)25 b(It)17
-b(is)g(passed)g(a)g Fs(NULL)f Ft(ter-)195 314 y(minated)f(arra)o(y)f
-(of)h(matc)o(hes.)20 b(The)c(\014rst)f(elemen)o(t)g(\()p
-Fs(matches[0])p Ft(\))e(is)i(the)h(maximal)e(substring)195
-369 y(common)g(to)g(all)f(matc)o(hes.)19 b(This)14 b(function)g(can)h
-(re-arrange)f(the)g(list)f(of)h(matc)o(hes)g(as)g(required,)195
-423 y(but)h(eac)o(h)h(elemen)o(t)f(deleted)g(from)g(the)g(arra)o(y)f(m)
-o(ust)g(b)q(e)i(freed.)1685 521 y([V)l(ariable])-1801
-b Fh(rl_icppfunc_t)28 b(*)e(rl_directory_completi)q(on_hoo)q(k)195
-576 y Ft(This)c(function,)i(if)e(de\014ned,)k(is)c(allo)o(w)o(ed)f(to)h
-(mo)q(dify)g(the)h(directory)f(p)q(ortion)g(of)g(\014lenames)195
-631 y(Readline)c(completes.)26 b(It)17 b(could)h(b)q(e)g(used)g(to)f
-(expand)h(sym)o(b)q(olic)f(links)f(or)h(shell)g(v)m(ariables)g(in)195
-686 y(pathnames.)35 b(It)20 b(is)f(called)h(with)g(the)g(address)g(of)g
-(a)g(string)f(\(the)h(curren)o(t)g(directory)f(name\))195
-741 y(as)f(an)h(argumen)o(t,)g(and)g(ma)o(y)f(mo)q(dify)g(that)g
-(string.)30 b(If)19 b(the)g(string)f(is)g(replaced)h(with)f(a)h(new)195
-795 y(string,)g(the)g(old)g(v)m(alue)g(should)h(b)q(e)f(freed.)33
-b(An)o(y)19 b(mo)q(di\014ed)h(directory)e(name)h(should)g(ha)o(v)o(e)g
-(a)195 850 y(trailing)c(slash.)27 b(The)17 b(mo)q(di\014ed)h(v)m(alue)g
-(will)e(b)q(e)i(used)g(as)f(part)g(of)g(the)h(completion,)f(replacing)
-195 905 y(the)f(directory)f(p)q(ortion)g(of)g(the)h(pathname)g(the)g
-(user)g(t)o(yp)q(ed.)22 b(A)o(t)15 b(the)h(least,)f(ev)o(en)h(if)g(no)f
-(other)195 960 y(expansion)j(is)f(p)q(erformed,)h(this)f(function)h
-(should)g(remo)o(v)o(e)f(an)o(y)g(quote)h(c)o(haracters)f(from)g(the)
-195 1015 y(directory)d(name,)h(b)q(ecause)h(its)f(result)f(will)g(b)q
-(e)i(passed)g(directly)e(to)h Fs(opendir\(\))p Ft(.)195
-1085 y(The)e(directory)f(completion)g(ho)q(ok)h(returns)g(an)g(in)o
+%%Page: 58 62
+TeXDict begin 58 61 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)14
+b(with)g(GNU)h(Readline)842 b(58)195 149 y(with)11 b
+Fk(text)p Ft(,)h Fk(matc)o(h)p 526 149 14 2 v 19 w(t)o(yp)q(e)p
+Ft(,)h(and)f Fk(quote)p 853 149 V 20 w(p)q(oin)o(ter)p
+Ft(.)18 b(The)12 b Fk(text)h Ft(is)e(the)h(\014lename)g(to)f(b)q(e)i
+(quoted.)19 b(The)195 204 y Fk(matc)o(h)p 321 204 V 19
+w(t)o(yp)q(e)f Ft(is)d(either)g Fs(SINGLE_MATCH)p Ft(,)e(if)i(there)g
+(is)f(only)h(one)h(completion)e(matc)o(h,)g(or)h Fs(MULT_)195
+259 y(MATCH)p Ft(.)30 b(Some)19 b(functions)g(use)g(this)f(to)h(decide)
+g(whether)g(or)g(not)f(to)g(insert)h(a)f(closing)g(quote)195
+314 y(c)o(haracter.)29 b(The)19 b Fk(quote)p 631 314
+V 19 w(p)q(oin)o(ter)j Ft(is)c(a)g(p)q(oin)o(ter)g(to)f(an)o(y)i(op)q
+(ening)f(quote)h(c)o(haracter)e(the)i(user)195 369 y(t)o(yp)q(ed.)39
+b(Some)22 b(functions)f(c)o(ho)q(ose)h(to)f(reset)g(this)g(c)o
+(haracter)g(if)g(they)g(decide)i(to)e(quote)g(the)195
+423 y(\014lename)15 b(in)f(a)h(di\013eren)o(t)f(st)o(yle.)19
+b(It's)14 b(preferable)h(to)f(preserv)o(e)h(the)g(user's)f(quoting)g
+(as)h(m)o(uc)o(h)f(as)195 478 y(p)q(ossible)h({)g(it's)f(less)h
+(disruptiv)o(e.)1685 574 y([V)l(ariable])-1801 b Fh(rl_dequote_func_t)
+29 b(*)d(rl_filename_dequoting_f)q(unction)195 629 y
+Ft(A)15 b(p)q(oin)o(ter)f(to)g(a)h(function)f(that)h(will)e(remo)o(v)o
+(e)h(application-sp)q(eci\014c)h(quoting)f(c)o(haracters)g(from)195
+684 y(a)19 b(\014lename)g(b)q(efore)g(attempting)f(completion,)h(so)f
+(those)h(c)o(haracters)g(do)g(not)f(in)o(terfere)h(with)195
+738 y(matc)o(hing)c(the)h(text)f(against)g(names)g(in)h(the)g
+(\014lesystem.)21 b(It)16 b(is)f(called)h(with)f Fk(text)p
+Ft(,)g(the)h(text)f(of)195 793 y(the)d(w)o(ord)f(to)h(b)q(e)g
+(dequoted,)h(and)f Fk(quote)p 894 793 V 20 w(c)o(har)p
+Ft(,)g(whic)o(h)g(is)f(the)h(quoting)g(c)o(haracter)f(that)g(delimits)
+195 848 y(the)h(\014lename)f(\(usually)g(`)p Fs(')p Ft(')g(or)g(`)p
+Fs(")p Ft('\).)17 b(If)12 b Fk(quote)p 981 848 V 20 w(c)o(har)i
+Ft(is)d(zero,)h(the)g(\014lename)f(w)o(as)g(not)g(in)h(a)f(quoted)195
+903 y(string.)1685 999 y([V)l(ariable])-1801 b Fh(rl_linebuf_func_t)29
+b(*)d(rl_char_is_quoted_p)195 1053 y Ft(A)15 b(p)q(oin)o(ter)f(to)g(a)g
+(function)h(to)f(call)f(that)h(determines)h(whether)g(or)f(not)g(a)h
+(sp)q(eci\014c)g(c)o(haracter)f(in)195 1108 y(the)k(line)f(bu\013er)g
+(is)g(quoted,)h(according)f(to)f(whatev)o(er)h(quoting)g(mec)o(hanism)g
+(the)g(application)195 1163 y(uses.)j(The)13 b(function)g(is)g(called)g
+(with)f(t)o(w)o(o)g(argumen)o(ts:)18 b Fk(text)p Ft(,)13
+b(the)h(text)e(of)h(the)h(line,)f(and)g Fk(index)p Ft(,)195
+1218 y(the)i(index)h(of)e(the)i(c)o(haracter)e(in)h(the)g(line.)20
+b(It)15 b(is)g(used)h(to)e(decide)i(whether)f(a)g(c)o(haracter)g(found)
+195 1273 y(in)20 b Fs(rl_completer_word_break_char)o(acters)d
+Ft(should)j(b)q(e)h(used)g(to)f(break)g(w)o(ords)g(for)g(the)195
+1327 y(completer.)1685 1423 y([V)l(ariable])-1801 b Fh
+(rl_compignore_func_t)29 b(*)d(rl_ignore_some_compl)q(etions_)q
+(functio)q(n)195 1478 y Ft(Readline)19 b(calls)f(this)h(function,)g(if)
+g(de\014ned,)i(when)e(\014lename)g(completion)f(is)h(done,)h(after)e
+(all)195 1533 y(the)h(matc)o(hing)e(names)i(ha)o(v)o(e)f(b)q(een)i
+(generated.)30 b(It)19 b(is)f(passed)h(a)f Fs(NULL)g
+Ft(terminated)g(arra)o(y)f(of)195 1587 y(matc)o(hes.)31
+b(The)19 b(\014rst)g(elemen)o(t)g(\()p Fs(matches[0])p
+Ft(\))e(is)h(the)h(maximal)f(substring)g(common)h(to)f(all)195
+1642 y(matc)o(hes.)j(This)15 b(function)h(can)f(re-arrange)g(the)h
+(list)f(of)g(matc)o(hes)g(as)g(required,)h(but)g(m)o(ust)f(free)195
+1697 y(eac)o(h)g(elemen)o(t)g(it)g(deletes)g(from)f(the)i(arra)o(y)l(.)
+1685 1793 y([V)l(ariable])-1801 b Fh(rl_icppfunc_t)28
+b(*)e(rl_directory_completi)q(on_hoo)q(k)195 1848 y Ft(This)11
+b(function,)g(if)g(de\014ned,)i(is)d(allo)o(w)o(ed)g(to)g(mo)q(dify)h
+(the)g(directory)g(p)q(ortion)f(of)h(\014lenames)g(during)195
+1902 y(completion.)18 b(It)11 b(could)h(b)q(e)g(used)h(to)e(expand)h
+(sym)o(b)q(olic)f(links)g(or)g(shell)g(v)m(ariables)g(in)g(pathnames.)
+195 1957 y(It)j(is)g(called)g(with)g(the)g(address)h(of)f(a)g(string)f
+(\(the)h(curren)o(t)g(directory)g(name\))g(as)g(an)g(argumen)o(t,)195
+2012 y(and)i(ma)o(y)f(mo)q(dify)g(that)g(string.)20 b(If)c(the)f
+(function)h(replaces)f(the)h(string)e(with)h(a)h(new)f(string,)g(it)195
+2067 y(should)h(free)f(the)h(old)f(v)m(alue.)22 b(An)o(y)15
+b(mo)q(di\014ed)h(directory)f(name)h(should)g(ha)o(v)o(e)f(a)g
+(trailing)f(slash.)195 2122 y(The)19 b(mo)q(di\014ed)h(v)m(alue)f(will)
+f(b)q(e)i(used)f(as)g(part)f(of)h(the)g(completion,)g(replacing)g(the)g
+(directory)195 2176 y(p)q(ortion)g(of)g(the)h(pathname)f(the)h(user)g
+(t)o(yp)q(ed.)33 b(A)o(t)19 b(the)h(least,)f(ev)o(en)h(if)f(no)h(other)
+f(expansion)195 2231 y(is)g(p)q(erformed,)h(this)f(function)g(should)g
+(remo)o(v)o(e)g(an)o(y)g(quote)g(c)o(haracters)g(from)f(the)i
+(directory)195 2286 y(name,)15 b(b)q(ecause)h(its)e(result)h(will)f(b)q
+(e)i(passed)f(directly)g(to)f Fs(opendir\(\))p Ft(.)195
+2355 y(The)f(directory)f(completion)g(ho)q(ok)h(returns)g(an)g(in)o
(teger)f(that)g(should)h(b)q(e)h(non-zero)f(if)f(the)h(func-)195
-1140 y(tion)j(mo)q(di\014es)h(its)g(directory)f(argumen)o(t.)25
+2410 y(tion)j(mo)q(di\014es)h(its)g(directory)f(argumen)o(t.)25
b(The)17 b(function)g(should)g(not)g(mo)q(dify)g(the)g(directory)195
-1194 y(argumen)o(t)d(if)h(it)g(returns)g(0.)1685 1292
+2465 y(argumen)o(t)d(if)h(it)g(returns)g(0.)1685 2560
y([V)l(ariable])-1801 b Fh(rl_icppfunc_t)28 b(*)e
-(rl_directory_rewrite_)q(hook;)195 1347 y Ft(If)12 b(non-zero,)h(this)f
-(is)f(the)i(address)f(of)g(a)f(function)h(to)g(call)f(when)i
-(completing)e(a)h(directory)f(name.)195 1402 y(This)i(function)g(tak)o
-(es)g(the)g(address)g(of)g(the)h(directory)e(name)i(to)e(b)q(e)i(mo)q
-(di\014ed)g(as)f(an)g(argumen)o(t.)195 1457 y(Unlik)o(e)19
-b Fs(rl_directory_completion_hoo)o(k)p Ft(,)f(it)g(only)i(mo)q
-(di\014es)f(the)h(directory)f(name)g(used)195 1512 y(in)f
-Fs(opendir)p Ft(,)e(not)i(what)f(is)g(displa)o(y)o(ed)g(when)h(the)g(p)
-q(ossible)f(completions)g(are)g(prin)o(ted)h(or)f(in-)195
-1566 y(serted.)i(It)13 b(is)g(called)g(b)q(efore)g(rl)p
-732 1566 14 2 v 20 w(directory)p 931 1566 V 19 w(completion)p
-1168 1566 V 19 w(ho)q(ok.)19 b(A)o(t)13 b(the)g(least,)f(ev)o(en)i(if)e
-(no)h(other)195 1621 y(expansion)18 b(is)f(p)q(erformed,)h(this)f
-(function)h(should)g(remo)o(v)o(e)f(an)o(y)g(quote)h(c)o(haracters)f
-(from)g(the)195 1676 y(directory)d(name,)h(b)q(ecause)h(its)f(result)f
-(will)g(b)q(e)i(passed)g(directly)e(to)h Fs(opendir\(\))p
-Ft(.)195 1746 y(The)k(directory)f(rewrite)g(ho)q(ok)h(returns)g(an)g
-(in)o(teger)f(that)g(should)h(b)q(e)h(non-zero)f(if)f(the)h(func-)195
-1801 y(tion)e(mo)q(d\014es)i(its)e(directory)g(argumen)o(t.)28
-b(The)18 b(function)g(should)g(not)g(mo)q(dify)g(the)g(directory)195
-1856 y(argumen)o(t)c(if)h(it)g(returns)g(0.)1685 1954
-y([V)l(ariable])-1801 b Fh(rl_icppfunc_t)28 b(*)e
-(rl_filename_stat_hook)195 2009 y Ft(If)15 b(non-zero,)g(this)g(is)f
-(the)h(address)h(of)e(a)h(function)g(for)f(the)h(completer)g(to)f(call)
-h(b)q(efore)g(deciding)195 2063 y(whic)o(h)g(c)o(haracter)f(to)h(app)q
-(end)h(to)e(a)h(completed)g(name.)20 b(This)15 b(function)f(mo)q
-(di\014es)i(its)e(\014lename)195 2118 y(name)k(argumen)o(t,)f(and)h
-(the)g(mo)q(di\014ed)g(v)m(alue)g(is)f(passed)h(to)g
-Fs(stat\(\))f Ft(to)g(determine)g(the)h(\014le's)195
-2173 y(t)o(yp)q(e)i(and)h(c)o(haracteristics.)33 b(This)20
-b(function)g(do)q(es)h(not)e(need)j(to)d(remo)o(v)o(e)h(quote)g(c)o
-(haracters)195 2228 y(from)14 b(the)i(\014lename.)195
-2298 y(The)g(stat)f(ho)q(ok)h(returns)g(an)g(in)o(teger)g(that)f
-(should)h(b)q(e)h(non-zero)f(if)g(the)g(function)g(mo)q(d\014es)h(its)
-195 2353 y(directory)j(argumen)o(t.)35 b(The)21 b(function)f(should)g
-(not)h(mo)q(dify)f(the)g(directory)g(argumen)o(t)g(if)g(it)195
-2408 y(returns)15 b(0.)1685 2506 y([V)l(ariable])-1801
-b Fh(rl_dequote_func_t)29 b(*)d(rl_filename_rewrite_hoo)q(k)195
-2560 y Ft(If)20 b(non-zero,)h(this)e(is)h(the)g(address)g(of)f(a)h
-(function)f(called)h(when)g(reading)f(directory)h(en)o(tries)195
-2615 y(from)f(the)h(\014lesystem)g(for)f(completion)g(and)h(comparing)f
-(them)h(to)f(the)h(partial)f(w)o(ord)g(to)g(b)q(e)195
-2670 y(completed.)g(The)14 b(function)f(should)h(p)q(erform)f(an)o(y)g
-(necessary)h(application)e(or)h(system-sp)q(eci\014c)p
-eop end
-%%Page: 54 58
-TeXDict begin 54 57 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)14
-b(with)g(GNU)h(Readline)842 b(54)195 149 y(con)o(v)o(ersion)16
-b(on)h(the)g(\014lename,)h(suc)o(h)f(as)g(con)o(v)o(erting)f(b)q(et)o
-(w)o(een)h(c)o(haracter)g(sets)f(or)h(con)o(v)o(erting)195
-204 y(from)f(a)g(\014lesystem)h(format)e(to)h(a)g(c)o(haracter)g(input)
-h(format.)23 b(The)17 b(function)f(tak)o(es)g(t)o(w)o(o)f(argu-)195
-259 y(men)o(ts:)24 b Fj(fname)p Ft(,)17 b(the)g(\014lename)h(to)e(b)q
-(e)i(con)o(v)o(erted,)f(and)h Fj(fnlen)p Ft(,)f(its)g(length)f(in)i(b)o
-(ytes.)25 b(It)18 b(m)o(ust)195 314 y(either)11 b(return)h(its)f
-(\014rst)g(argumen)o(t)g(\(if)f(no)i(con)o(v)o(ersion)f(tak)o(es)g
-(place\))g(or)g(the)h(con)o(v)o(erted)f(\014lename)195
-369 y(in)j(newly-allo)q(cated)f(memory)l(.)19 b(The)c(con)o(v)o(erted)f
-(form)f(is)h(used)g(to)g(compare)g(against)e(the)j(w)o(ord)195
-423 y(to)e(b)q(e)h(completed,)g(and,)f(if)g(it)g(matc)o(hes,)g(is)g
-(added)i(to)e(the)g(list)g(of)g(matc)o(hes.)19 b(Readline)14
-b(will)e(free)195 478 y(the)j(allo)q(cated)f(string.)1685
-567 y([V)l(ariable])-1801 b Fh(rl_compdisp_func_t)29
-b(*)d(rl_completion_display_)q(matches)q(_hook)195 622
-y Ft(If)11 b(non-zero,)h(then)f(this)g(is)f(the)h(address)g(of)g(a)g
-(function)f(to)h(call)f(when)h(completing)g(a)f(w)o(ord)h(w)o(ould)195
-677 y(normally)f(displa)o(y)g(the)h(list)f(of)h(p)q(ossible)f(matc)o
-(hes.)18 b(This)11 b(function)g(is)g(called)f(in)h(lieu)g(of)g
-(Readline)195 732 y(displa)o(ying)17 b(the)i(list.)28
-b(It)19 b(tak)o(es)f(three)g(argumen)o(ts:)26 b(\()p
-Fs(char)14 b(**)p Fj(matc)o(hes)p Ft(,)19 b Fs(int)f
-Fj(n)o(um)p 1685 732 14 2 v 20 w(matc)o(hes)p Ft(,)195
-786 y Fs(int)13 b Fj(max)p 368 786 V 19 w(length)p Ft(\))g(where)g
-Fj(matc)o(hes)i Ft(is)e(the)g(arra)o(y)f(of)h(matc)o(hing)f(strings,)g
-Fj(n)o(um)p 1575 786 V 20 w(matc)o(hes)j Ft(is)e(the)195
-841 y(n)o(um)o(b)q(er)19 b(of)e(strings)g(in)i(that)e(arra)o(y)l(,)h
-(and)g Fj(max)p 1037 841 V 20 w(length)g Ft(is)f(the)i(length)f(of)f
-(the)i(longest)e(string)195 896 y(in)i(that)f(arra)o(y)l(.)30
-b(Readline)19 b(pro)o(vides)f(a)h(con)o(v)o(enience)g(function,)g
-Fs(rl_display_match_list)p Ft(,)195 951 y(that)c(tak)o(es)g(care)h(of)g
-(doing)f(the)i(displa)o(y)e(to)g(Readline's)h(output)g(stream.)21
-b(Y)l(ou)16 b(ma)o(y)g(call)f(that)195 1006 y(function)g(from)f(this)h
-(ho)q(ok.)1685 1095 y([V)l(ariable])-1801 b Fh(const)27
-b(char)g(*)f(rl_basic_word_break_char)q(acters)195 1149
+(rl_directory_rewrite_)q(hook;)195 2615 y Ft(If)c(non-zero,)h(this)d
+(is)h(the)h(address)f(of)g(a)h(function)f(to)g(call)f(when)i
+(completing)f(a)g(directory)195 2670 y(name.)29 b(This)18
+b(function)h(tak)o(es)e(the)i(address)f(of)g(the)g(directory)g(name)g
+(to)g(b)q(e)h(mo)q(di\014ed)g(as)f(an)p eop end
+%%Page: 59 63
+TeXDict begin 59 62 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)14
+b(with)g(GNU)h(Readline)842 b(59)195 149 y(argumen)o(t.)32
+b(Unlik)o(e)19 b Fs(rl_directory_completion_hoo)o(k)p
+Ft(,)f(it)g(only)h(mo)q(di\014es)h(the)g(directory)195
+204 y(name)f(used)g(in)g Fs(opendir\(\))p Ft(,)f(not)g(what)g(Readline)
+h(displa)o(ys)f(when)h(it)f(prin)o(ts)g(or)h(inserts)f(the)195
+259 y(p)q(ossible)j(completions.)35 b(Readline)22 b(calls)d(this)i(b)q
+(efore)g(rl)p 1227 259 14 2 v 19 w(directory)p 1425 259
+V 20 w(completion)p 1663 259 V 19 w(ho)q(ok.)36 b(A)o(t)195
+314 y(the)18 b(least,)f(ev)o(en)g(if)g(no)h(other)f(expansion)h(is)f(p)
+q(erformed,)h(this)f(function)g(should)h(remo)o(v)o(e)e(an)o(y)195
+369 y(quote)h(c)o(haracters)f(from)h(the)g(directory)g(name,)g(b)q
+(ecause)h(its)f(result)f(will)g(b)q(e)i(passed)g(directly)195
+423 y(to)d Fs(opendir\(\))p Ft(.)195 494 y(The)k(directory)f(rewrite)g
+(ho)q(ok)h(returns)g(an)g(in)o(teger)f(that)g(should)h(b)q(e)h
+(non-zero)f(if)f(the)h(func-)195 549 y(tion)d(mo)q(di\014es)h(its)g
+(directory)f(argumen)o(t.)25 b(The)17 b(function)g(should)g(not)g(mo)q
+(dify)g(the)g(directory)195 604 y(argumen)o(t)d(if)h(it)g(returns)g(0.)
+1685 703 y([V)l(ariable])-1801 b Fh(rl_icppfunc_t)28
+b(*)e(rl_filename_stat_hook)195 757 y Ft(If)15 b(non-zero,)g(this)g(is)
+f(the)h(address)h(of)e(a)h(function)g(for)f(the)h(completer)g(to)f
+(call)h(b)q(efore)g(deciding)195 812 y(whic)o(h)g(c)o(haracter)f(to)h
+(app)q(end)h(to)e(a)h(completed)g(name.)20 b(This)15
+b(function)f(mo)q(di\014es)i(its)e(\014lename)195 867
+y(name)i(argumen)o(t,)e(and)i(Readline)f(passes)h(the)f(mo)q(di\014ed)h
+(v)m(alue)g(to)f Fs(stat\(\))f Ft(to)h(determine)h(the)195
+922 y(\014le's)11 b(t)o(yp)q(e)h(and)g(c)o(haracteristics.)17
+b(This)12 b(function)g(do)q(es)g(not)f(need)i(to)e(remo)o(v)o(e)g
+(quote)h(c)o(haracters)195 977 y(from)i(the)i(\014lename.)195
+1047 y(The)k(stat)f(ho)q(ok)h(returns)g(an)g(in)o(teger)g(that)f
+(should)h(b)q(e)h(non-zero)f(if)g(the)g(function)g(mo)q(di\014es)195
+1102 y(its)15 b(directory)g(argumen)o(t.)20 b(The)c(function)f(should)h
+(not)f(mo)q(dify)g(the)h(directory)f(argumen)o(t)g(if)g(it)195
+1157 y(returns)g(0.)1685 1256 y([V)l(ariable])-1801 b
+Fh(rl_dequote_func_t)29 b(*)d(rl_filename_rewrite_hoo)q(k)195
+1311 y Ft(If)16 b(non-zero,)g(this)f(is)g(the)h(address)f(of)h(a)f
+(function)h(for)f(Readline)h(to)f(call)f(when)j(reading)e(direc-)195
+1366 y(tory)h(en)o(tries)g(from)f(the)i(\014lesystem)f(for)g
+(completion)g(and)g(comparing)g(them)g(to)g(the)h(\014lename)195
+1420 y(p)q(ortion)c(of)g(the)h(partial)e(w)o(ord)h(b)q(eing)h
+(completed.)19 b(It)14 b(mo)q(di\014es)g(the)f(\014lesystem)h(en)o
+(tries,)f(as)g(op-)195 1475 y(p)q(osed)k(to)f Fs
+(rl_completion_rewrite_hook)p Ft(,)d(whic)o(h)k(mo)q(di\014es)g(the)f
+(w)o(ord)g(b)q(eing)h(completed.)195 1530 y(The)g(function)h(tak)o(es)e
+(t)o(w)o(o)g(argumen)o(ts:)23 b Fk(fname)p Ft(,)17 b(the)h(\014lename)f
+(to)g(b)q(e)h(con)o(v)o(erted,)f(and)g Fk(fnlen)p Ft(,)195
+1585 y(its)h(length)g(in)g(b)o(ytes.)30 b(It)18 b(m)o(ust)g(either)g
+(return)h(its)e(\014rst)h(argumen)o(t)g(\(if)g(no)g(con)o(v)o(ersion)g
+(tak)o(es)195 1639 y(place\))i(or)g(the)g(con)o(v)o(erted)g(\014lename)
+g(in)g(newly-allo)q(cated)g(memory)l(.)34 b(The)21 b(function)f(should)
+195 1694 y(p)q(erform)13 b(an)o(y)g(necessary)g(application)f(or)g
+(system-sp)q(eci\014c)i(con)o(v)o(ersion)e(on)h(the)g(\014lename,)h
+(suc)o(h)195 1749 y(as)e(con)o(v)o(erting)g(b)q(et)o(w)o(een)h(c)o
+(haracter)f(sets)h(or)f(con)o(v)o(erting)f(from)h(a)h(\014lesystem)f
+(format)g(to)g(a)g(c)o(har-)195 1804 y(acter)18 b(input)h(format.)30
+b(Readline)19 b(compares)f(the)h(con)o(v)o(erted)g(form)f(against)f
+(the)i(w)o(ord)f(to)g(b)q(e)195 1859 y(completed,)g(and,)g(if)f(it)g
+(matc)o(hes,)g(adds)h(it)f(to)g(the)h(list)e(of)h(matc)o(hes.)27
+b(Readline)18 b(will)e(free)i(the)195 1913 y(allo)q(cated)c(string.)
+1685 2012 y([V)l(ariable])-1801 b Fh(rl_dequote_func_t)29
+b(*)d(rl_completion_rewrite_h)q(ook)195 2067 y Ft(If)14
+b(non-zero,)g(this)f(is)g(the)h(address)f(of)h(a)f(function)g(for)g
+(Readline)h(to)f(call)g(b)q(efore)h(comparing)f(the)195
+2122 y(\014lename)g(p)q(ortion)f(of)g(a)h(w)o(ord)f(to)g(b)q(e)i
+(completed)e(with)h(directory)f(en)o(tries)g(from)g(the)h
+(\014lesystem.)195 2177 y(It)19 b(mo)q(di\014es)h(the)f(w)o(ord)f(b)q
+(eing)i(completed,)g(as)e(opp)q(osed)i(to)f Fs
+(rl_filename_rewrite_hook)o Ft(,)195 2232 y(whic)o(h)i(mo)q(di\014es)g
+(\014lesystem)f(en)o(tries.)37 b(The)21 b(function)g(tak)o(es)f(t)o(w)o
+(o)f(argumen)o(ts:)31 b Fk(fname)p Ft(,)22 b(the)195
+2286 y(w)o(ord)f(to)f(b)q(e)i(con)o(v)o(erted,)g(after)f(an)o(y)f
+Fs(rl_filename_dequoting_functio)o(n)e Ft(has)k(b)q(een)g(ap-)195
+2341 y(plied,)d(and)f Fk(fnlen)p Ft(,)h(its)e(length)h(in)g(b)o(ytes.)
+29 b(It)18 b(m)o(ust)g(either)g(return)g(its)f(\014rst)h(argumen)o(t)g
+(\(if)f(no)195 2396 y(con)o(v)o(ersion)h(tak)o(es)g(place\))h(or)f(the)
+h(con)o(v)o(erted)g(\014lename)g(in)g(newly-allo)q(cated)f(memory)l(.)
+31 b(The)195 2451 y(function)18 b(should)h(p)q(erform)f(an)o(y)g
+(necessary)h(application)e(or)h(system-sp)q(eci\014c)h(con)o(v)o
+(ersion)f(on)195 2506 y(the)12 b(\014lename,)g(suc)o(h)h(as)e(con)o(v)o
+(erting)g(b)q(et)o(w)o(een)h(c)o(haracter)g(sets)f(or)h(con)o(v)o
+(erting)f(from)g(a)h(c)o(haracter)195 2560 y(input)18
+b(format)f(to)g(some)h(other)f(format.)27 b(Readline)19
+b(compares)e(the)h(con)o(v)o(erted)g(form)f(against)195
+2615 y(directory)f(en)o(tries,)g(after)g(their)g(p)q(oten)o(tial)f(mo)q
+(di\014cation)h(b)o(y)h Fs(rl_filename_rewrite_hook)o
+Ft(,)195 2670 y(and)e(adds)h(an)o(y)f(matc)o(hes)f(to)h(the)g(list)f
+(of)h(matc)o(hes.)k(Readline)d(will)e(free)h(the)g(allo)q(cated)f
+(string.)p eop end
+%%Page: 60 64
+TeXDict begin 60 63 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)14
+b(with)g(GNU)h(Readline)842 b(60)1685 149 y([V)l(ariable])-1801
+b Fh(rl_compdisp_func_t)29 b(*)d(rl_completion_display_)q(matches)q
+(_hook)195 204 y Ft(If)20 b(non-zero,)g(then)g(this)f(is)g(the)h
+(address)f(of)h(a)f(function)g(to)g(call)g(when)h(completing)e(a)i(w)o
+(ord)195 259 y(w)o(ould)i(normally)e(displa)o(y)i(the)g(list)f(of)h(p)q
+(ossible)g(matc)o(hes.)41 b(Readline)22 b(calls)f(this)h(function)195
+314 y(instead)h(of)g(displa)o(ying)f(the)h(list)f(itself.)43
+b(It)23 b(tak)o(es)f(three)i(argumen)o(ts:)35 b(\()p
+Fs(char)14 b(**)p Fk(matc)o(hes)p Ft(,)195 369 y Fs(int)h
+Fk(n)o(um)p 372 369 14 2 v 20 w(matc)o(hes)p Ft(,)g Fs(int)g
+Fk(max)p 753 369 V 20 w(length)p Ft(\))f(where)i Fk(matc)o(hes)h
+Ft(is)e(the)h(arra)o(y)e(of)h(matc)o(hing)f(strings,)195
+423 y Fk(n)o(um)p 285 423 V 20 w(matc)o(hes)20 b Ft(is)f(the)g(n)o(um)o
+(b)q(er)g(of)f(strings)g(in)h(that)f(arra)o(y)l(,)g(and)h
+Fk(max)p 1461 423 V 20 w(length)f Ft(is)g(the)h(length)195
+478 y(of)g(the)h(longest)f(string)g(in)h(that)f(arra)o(y)l(.)33
+b(Readline)20 b(pro)o(vides)f(a)h(con)o(v)o(enience)g(function,)g
+Fs(rl_)195 533 y(display_match_list)p Ft(,)k(that)g(tak)o(es)g(care)g
+(of)g(doing)g(the)h(displa)o(y)f(to)g(Readline's)g(output)195
+588 y(stream.)19 b(Y)l(ou)c(ma)o(y)g(call)f(that)h(function)g(from)f
+(this)h(ho)q(ok.)1685 677 y([V)l(ariable])-1801 b Fh(const)27
+b(char)g(*)f(rl_basic_word_break_char)q(acters)195 732
y Ft(The)c(basic)g(list)f(of)h(c)o(haracters)f(that)g(signal)g(a)h
(break)g(b)q(et)o(w)o(een)g(w)o(ords)g(for)f(the)h(completer)195
-1204 y(routine.)29 b(The)19 b(default)f(v)m(alue)h(of)f(this)g(v)m
+786 y(routine.)29 b(The)19 b(default)f(v)m(alue)h(of)f(this)g(v)m
(ariable)g(is)g(the)h(c)o(haracters)f(whic)o(h)g(break)h(w)o(ords)f
-(for)195 1259 y(completion)c(in)h(Bash:)20 b Fs(")15
-b(\\t\\n\\"\\\\'`@$><=;|&{\(")p Ft(.)1685 1348 y([V)l(ariable])-1801
+(for)195 841 y(completion)c(in)h(Bash:)20 b Fs(")15 b
+(\\t\\n\\"\\\\'`@$><=;|&{\(")p Ft(.)1685 930 y([V)l(ariable])-1801
b Fh(const)27 b(char)g(*)f(rl_basic_quote_character)q(s)195
-1403 y Ft(A)15 b(list)f(of)h(quote)g(c)o(haracters)f(whic)o(h)h(can)h
-(cause)f(a)g(w)o(ord)g(break.)1685 1492 y([V)l(ariable])-1801
-b Fh(const)27 b(char)g(*)f(rl_completer_word_break_)q(charac)q(ters)195
-1547 y Ft(The)33 b(list)e(of)h(c)o(haracters)g(that)f(signal)h(a)g
-(break)g(b)q(et)o(w)o(een)h(w)o(ords)f(for)g Fs(rl_complete_)195
-1601 y(internal\(\))p Ft(.)18 b(The)e(default)f(list)f(is)g(the)i(v)m
-(alue)f(of)g Fs(rl_basic_word_break_chara)o(cters)p Ft(.)1685
-1691 y([V)l(ariable])-1801 b Fh(rl_cpvfunc_t)28 b(*)e
-(rl_completion_word_bre)q(ak_hoo)q(k)195 1745 y Ft(If)16
+985 y Ft(A)16 b(list)f(of)g(quote)h(c)o(haracters)f(whic)o(h)g(can)h
+(cause)h(a)e(w)o(ord)g(break.)22 b(The)16 b(default)g(v)m(alue)g
+(includes)195 1040 y(single)f(and)g(double)g(quotes.)1685
+1129 y([V)l(ariable])-1801 b Fh(const)27 b(char)g(*)f
+(rl_completer_word_break_)q(charac)q(ters)195 1184 y
+Ft(The)33 b(list)e(of)h(c)o(haracters)g(that)f(signal)h(a)g(break)g(b)q
+(et)o(w)o(een)h(w)o(ords)f(for)g Fs(rl_complete_)195
+1238 y(internal\(\))p Ft(.)g(These)20 b(c)o(haracters)f(determine)h(ho)
+o(w)g(Readline)g(decides)g(what)f(to)h(complete.)195
+1293 y(The)15 b(default)g(list)f(is)h(the)g(v)m(alue)h(of)e
+Fs(rl_basic_word_break_character)o(s)p Ft(.)1685 1382
+y([V)l(ariable])-1801 b Fh(rl_cpvfunc_t)28 b(*)e
+(rl_completion_word_bre)q(ak_hoo)q(k)195 1437 y Ft(If)16
b(non-zero,)g(this)f(is)g(the)h(address)g(of)f(a)h(function)f(to)g
-(call)g(when)i(Readline)f(is)f(deciding)h(where)195 1800
+(call)g(when)i(Readline)f(is)f(deciding)h(where)195 1492
y(to)h(separate)f(w)o(ords)h(for)f(w)o(ord)g(completion.)25
b(It)18 b(should)f(return)g(a)g(c)o(haracter)f(string)g(lik)o(e)g
-Fs(rl_)195 1855 y(completer_word_break_chara)o(cters)d
+Fs(rl_)195 1547 y(completer_word_break_chara)o(cters)d
Ft(to)j(b)q(e)h(used)g(to)f(p)q(erform)g(the)h(curren)o(t)f
-(completion.)195 1910 y(The)d(function)f(ma)o(y)f(c)o(ho)q(ose)i(to)f
+(completion.)195 1601 y(The)d(function)f(ma)o(y)f(c)o(ho)q(ose)i(to)f
(set)g Fs(rl_completer_word_break_)o(charact)o(ers)d
-Ft(itself.)18 b(If)13 b(the)195 1965 y(function)i(returns)g
-Fs(NULL)p Ft(,)f Fs(rl_completer_word_break_chara)o(cters)e
-Ft(is)j(used.)1685 2054 y([V)l(ariable])-1801 b Fh(const)27
-b(char)g(*)f(rl_completer_quote_chara)q(cters)195 2108
+Ft(itself.)18 b(If)13 b(the)195 1656 y(function)i(returns)g
+Fs(NULL)p Ft(,)f(Readline)i(uses)f Fs(rl_completer_word_break_char)o
+(acters)p Ft(.)1685 1745 y([V)l(ariable])-1801 b Fh(const)27
+b(char)g(*)f(rl_completer_quote_chara)q(cters)195 1800
y Ft(A)17 b(list)f(of)g(c)o(haracters)g(whic)o(h)h(can)g(b)q(e)g(used)h
(to)e(quote)h(a)f(substring)g(of)h(the)g(line.)24 b(Completion)195
-2163 y(o)q(ccurs)13 b(on)h(the)f(en)o(tire)f(substring,)h(and)g(within)
-g(the)g(substring)f Fs(rl_completer_word_break_)195 2218
-y(characters)k Ft(are)h(treated)g(as)h(an)o(y)f(other)g(c)o(haracter,)g
-(unless)h(they)f(also)g(app)q(ear)h(within)f(this)195
-2273 y(list.)1685 2362 y([V)l(ariable])-1801 b Fh(const)27
-b(char)g(*)f(rl_filename_quote_charac)q(ters)195 2417
-y Ft(A)17 b(list)f(of)g(c)o(haracters)g(that)g(cause)h(a)g(\014lename)g
-(to)f(b)q(e)i(quoted)e(b)o(y)h(the)g(completer)g(when)g(they)195
-2471 y(app)q(ear)e(in)g(a)g(completed)g(\014lename.)20
-b(The)c(default)f(is)f(the)i(n)o(ull)e(string.)1685 2560
-y([V)l(ariable])-1801 b Fh(const)27 b(char)g(*)f(rl_special_prefixes)
-195 2615 y Ft(The)14 b(list)f(of)g(c)o(haracters)g(that)g(are)h(w)o
-(ord)f(break)h(c)o(haracters,)f(but)h(should)g(b)q(e)g(left)f(in)h
-Fj(text)g Ft(when)195 2670 y(it)e(is)f(passed)i(to)f(the)g(completion)f
+1855 y(o)q(ccurs)12 b(on)f(the)h(en)o(tire)f(substring,)h(and)f(within)
+g(the)h(substring,)f Fs(rl_completer_word_break_)195
+1910 y(characters)16 b Ft(are)h(treated)g(as)h(an)o(y)f(other)g(c)o
+(haracter,)g(unless)h(they)f(also)g(app)q(ear)h(within)f(this)195
+1965 y(list.)1685 2054 y([V)l(ariable])-1801 b Fh(const)27
+b(char)g(*)f(rl_filename_quote_charac)q(ters)195 2108
+y Ft(A)18 b(list)e(of)h(c)o(haracters)g(that)f(cause)i(Readline)g(to)f
+(quote)g(a)g(\014lename)h(when)g(they)f(app)q(ear)h(in)f(a)195
+2163 y(completed)e(\014lename.)20 b(The)c(default)e(is)h(the)g(n)o(ull)
+g(string.)1685 2252 y([V)l(ariable])-1801 b Fh(const)27
+b(char)g(*)f(rl_special_prefixes)195 2307 y Ft(The)14
+b(list)f(of)g(c)o(haracters)g(that)g(are)h(w)o(ord)f(break)h(c)o
+(haracters,)f(but)h(should)g(b)q(e)g(left)f(in)h Fk(text)g
+Ft(when)195 2362 y(it)e(is)f(passed)i(to)f(the)g(completion)f
(function.)19 b(Programs)11 b(can)h(use)h(this)f(to)g(help)g(determine)
-h(what)p eop end
-%%Page: 55 59
-TeXDict begin 55 58 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)14
-b(with)g(GNU)h(Readline)842 b(55)195 149 y(kind)14 b(of)f(completing)g
-(to)h(do.)19 b(F)l(or)13 b(instance,)h(Bash)g(sets)f(this)h(v)m
-(ariable)f(to)g Fs(")p Ft($@)p Fs(")h Ft(so)f(that)h(it)f(can)195
-204 y(complete)i(shell)g(v)m(ariables)f(and)i(hostnames.)1685
-314 y([V)l(ariable])-1801 b Fh(int)27 b(rl_completion_query_items)195
-369 y Ft(Up)18 b(to)g(this)f(man)o(y)h(items)f(will)g(b)q(e)i(displa)o
-(y)o(ed)e(in)h(resp)q(onse)h(to)e(a)h(p)q(ossible-completions)f(call.)
-195 423 y(After)d(that,)f(readline)g(asks)h(the)g(user)g(if)f(she)h(is)
-g(sure)g(she)g(w)o(an)o(ts)f(to)g(see)h(them)g(all.)k(The)c(default)195
-478 y(v)m(alue)h(is)g(100.)k(A)c(negativ)o(e)g(v)m(alue)g(indicates)g
-(that)f(Readline)i(should)f(nev)o(er)g(ask)g(the)g(user.)1685
-588 y([V)l(ariable])-1801 b Fh(int)27 b(rl_completion_append_chara)q
-(cter)195 643 y Ft(When)17 b(a)f(single)g(completion)g(alternativ)o(e)f
-(matc)o(hes)h(at)g(the)h(end)g(of)f(the)h(command)f(line,)h(this)195
-697 y(c)o(haracter)10 b(is)g(app)q(ended)j(to)d(the)g(inserted)h
-(completion)f(text.)18 b(The)11 b(default)f(is)g(a)h(space)g(c)o
-(haracter)195 752 y(\(`)j('\).)42 b(Setting)22 b(this)g(to)g(the)h(n)o
-(ull)f(c)o(haracter)g(\(`)p Fs(\\0)p Ft('\))f(prev)o(en)o(ts)i(an)o
-(ything)e(b)q(eing)i(app)q(ended)195 807 y(automatically)l(.)29
-b(This)18 b(can)h(b)q(e)h(c)o(hanged)f(in)f(application-sp)q(eci\014c)h
-(completion)f(functions)h(to)195 862 y(pro)o(vide)g(the)h(\\most)f
-(sensible)h(w)o(ord)f(separator)g(c)o(haracter")g(according)g(to)g(an)h
-(application-)195 917 y(sp)q(eci\014c)c(command)f(line)g(syn)o(tax)f
-(sp)q(eci\014cation.)1685 1026 y([V)l(ariable])-1801
-b Fh(int)27 b(rl_completion_suppress_app)q(end)195 1081
-y Ft(If)17 b(non-zero,)g Fj(rl)p 475 1081 14 2 v 19 w(completion)p
-712 1081 V 19 w(app)q(end)p 875 1081 V 22 w(c)o(haracter)i
-Ft(is)d(not)g(app)q(ended)i(to)e(matc)o(hes)h(at)f(the)g(end)195
-1136 y(of)d(the)h(command)g(line,)f(as)h(describ)q(ed)g(ab)q(o)o(v)o
-(e.)19 b(It)14 b(is)g(set)f(to)g(0)h(b)q(efore)g(an)o(y)f
-(application-sp)q(eci\014c)195 1191 y(completion)h(function)h(is)g
-(called,)f(and)i(ma)o(y)e(only)h(b)q(e)h(c)o(hanged)f(within)g(suc)o(h)
-g(a)g(function.)1685 1300 y([V)l(ariable])-1801 b Fh(int)27
-b(rl_completion_quote_charac)q(ter)195 1355 y Ft(When)18
-b(Readline)h(is)e(completing)h(quoted)g(text,)g(as)f(delimited)h(b)o(y)
-g(one)g(of)g(the)g(c)o(haracters)f(in)195 1410 y Fj(rl)p
-229 1410 V 19 w(completer)p 443 1410 V 20 w(quote)p 573
-1410 V 20 w(c)o(haracters)p Ft(,)i(it)g(sets)g(this)g(v)m(ariable)g(to)
-g(the)h(quoting)e(c)o(haracter)h(found.)195 1465 y(This)c(is)f(set)h(b)
-q(efore)h(an)o(y)f(application-sp)q(eci\014c)g(completion)f(function)h
-(is)g(called.)1685 1574 y([V)l(ariable])-1801 b Fh(int)27
-b(rl_completion_suppress_quo)q(te)195 1629 y Ft(If)16
-b(non-zero,)h(Readline)f(do)q(es)h(not)e(app)q(end)j(a)d(matc)o(hing)h
-(quote)g(c)o(haracter)f(when)i(p)q(erforming)195 1684
-y(completion)11 b(on)h(a)f(quoted)h(string.)18 b(It)11
-b(is)h(set)f(to)g(0)h(b)q(efore)g(an)o(y)f(application-sp)q(eci\014c)h
-(completion)195 1738 y(function)j(is)g(called,)f(and)i(ma)o(y)e(only)h
-(b)q(e)h(c)o(hanged)f(within)g(suc)o(h)g(a)g(function.)1685
-1848 y([V)l(ariable])-1801 b Fh(int)27 b(rl_completion_found_quote)195
-1903 y Ft(When)16 b(Readline)g(is)g(completing)f(quoted)g(text,)h(it)f
+h(what)195 2417 y(kind)h(of)f(completing)g(to)h(do.)19
+b(F)l(or)13 b(instance,)h(Bash)g(sets)f(this)h(v)m(ariable)f(to)g
+Fs(")p Ft($@)p Fs(")h Ft(so)f(that)h(it)f(can)195 2471
+y(complete)i(shell)g(v)m(ariables)f(and)i(hostnames.)1685
+2560 y([V)l(ariable])-1801 b Fh(int)27 b(rl_completion_query_items)195
+2615 y Ft(This)12 b(determines)g(the)h(maxim)o(um)e(n)o(um)o(b)q(er)i
+(of)f(items)g(that)f(p)q(ossible-completions)h(will)f(displa)o(y)195
+2670 y(unconditionally)l(.)22 b(If)17 b(there)g(are)f(more)g(p)q
+(ossible)g(completions)f(than)h(this,)g(Readline)h(asks)f(the)p
+eop end
+%%Page: 61 65
+TeXDict begin 61 64 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)14
+b(with)g(GNU)h(Readline)842 b(61)195 149 y(user)18 b(for)f
+(con\014rmation)g(b)q(efore)h(displa)o(ying)e(them.)27
+b(The)18 b(default)g(v)m(alue)f(is)h(100.)26 b(A)18 b(negativ)o(e)195
+204 y(v)m(alue)d(indicates)g(that)g(Readline)g(should)g(nev)o(er)h(ask)
+e(for)h(con\014rmation.)1685 293 y([V)l(ariable])-1801
+b Fh(int)27 b(rl_completion_append_chara)q(cter)195 348
+y Ft(When)e(a)e(single)h(completion)f(alternativ)o(e)f(matc)o(hes)i(at)
+g(the)g(end)h(of)e(the)i(command)f(line,)195 403 y(Readline)c(app)q
+(ends)h(this)e(c)o(haracter)g(to)g(the)g(inserted)h(completion)e(text.)
+33 b(The)20 b(default)f(is)g(a)195 458 y(space)f(c)o(haracter)e(\(`)e
+('\).)26 b(Setting)16 b(this)h(to)g(the)g(n)o(ull)g(c)o(haracter)f(\(`)
+p Fs(\\0)p Ft('\))g(prev)o(en)o(ts)h(an)o(ything)f(b)q(e-)195
+512 y(ing)g(app)q(ended)h(automatically)l(.)k(This)15
+b(can)i(b)q(e)g(c)o(hanged)f(in)g(application-sp)q(eci\014c)g
+(completion)195 567 y(functions)j(to)g(pro)o(vide)g(the)g(\\most)f
+(sensible)h(w)o(ord)g(separator)f(c)o(haracter")h(according)f(to)h(an)
+195 622 y(application-sp)q(eci\014c)c(command)g(line)f(syn)o(tax)h(sp)q
+(eci\014cation.)k(It)c(is)g(set)g(to)f(the)h(default)g(b)q(efore)195
+677 y(calling)d(an)o(y)i(application-sp)q(eci\014c)f(completion)g
+(function,)g(and)h(ma)o(y)f(only)g(b)q(e)h(c)o(hanged)g(within)195
+732 y(suc)o(h)i(a)e(function.)1685 821 y([V)l(ariable])-1801
+b Fh(int)27 b(rl_completion_suppress_app)q(end)195 875
+y Ft(If)12 b(non-zero,)h(Readline)g(will)e(not)g(app)q(end)j(the)e
+Fk(rl)p 1044 875 14 2 v 20 w(completion)p 1282 875 V
+19 w(app)q(end)p 1445 875 V 21 w(c)o(haracter)j Ft(to)c(matc)o(hes)195
+930 y(at)k(the)h(end)g(of)g(the)g(command)f(line,)g(as)h(describ)q(ed)g
+(ab)q(o)o(v)o(e.)22 b(It)15 b(is)h(set)f(to)g(0)h(b)q(efore)g(calling)e
+(an)o(y)195 985 y(application-sp)q(eci\014c)22 b(completion)g
+(function,)h(and)g(ma)o(y)e(only)h(b)q(e)h(c)o(hanged)g(within)f(suc)o
+(h)g(a)195 1040 y(function.)1685 1129 y([V)l(ariable])-1801
+b Fh(int)27 b(rl_completion_suppress_quo)q(te)195 1184
+y Ft(If)16 b(non-zero,)h(Readline)f(do)q(es)h(not)e(app)q(end)j(a)d
+(matc)o(hing)h(quote)g(c)o(haracter)f(when)i(p)q(erforming)195
+1238 y(completion)g(on)i(a)f(quoted)g(string.)28 b(It)18
+b(is)g(set)g(to)g(0)g(b)q(efore)g(calling)f(an)o(y)h(application-sp)q
+(eci\014c)195 1293 y(completion)c(function,)h(and)g(ma)o(y)g(only)g(b)q
+(e)g(c)o(hanged)h(within)e(suc)o(h)i(a)f(function.)1685
+1382 y([V)l(ariable])-1801 b Fh(int)27 b(rl_completion_found_quote)195
+1437 y Ft(When)16 b(Readline)g(is)g(completing)f(quoted)g(text,)h(it)f
(sets)g(this)g(v)m(ariable)h(to)f(a)g(non-zero)h(v)m(alue)g(if)195
-1958 y(the)11 b(w)o(ord)e(b)q(eing)i(completed)g(con)o(tains)e(or)i(is)
+1492 y(the)11 b(w)o(ord)e(b)q(eing)i(completed)g(con)o(tains)e(or)i(is)
f(delimited)f(b)o(y)i(an)o(y)f(quoting)g(c)o(haracters,)g(including)195
-2012 y(bac)o(kslashes.)19 b(This)c(is)g(set)g(b)q(efore)g(an)o(y)g
-(application-sp)q(eci\014c)g(completion)f(function)h(is)g(called.)1685
-2122 y([V)l(ariable])-1801 b Fh(int)27 b(rl_completion_mark_symlink)q
-(_dirs)195 2177 y Ft(If)16 b(non-zero,)g(a)g(slash)f(will)g(b)q(e)h
-(app)q(ended)i(to)d(completed)h(\014lenames)g(that)f(are)g(sym)o(b)q
-(olic)h(links)195 2232 y(to)11 b(directory)h(names,)g(sub)s(ject)g(to)f
-(the)i(v)m(alue)f(of)g(the)g(user-settable)f Fj(mark-directories)i
-Ft(v)m(ariable.)195 2286 y(This)g(v)m(ariable)g(exists)g(so)h(that)f
-(application-sp)q(eci\014c)g(completion)g(functions)g(can)h(o)o(v)o
-(erride)f(the)195 2341 y(user's)21 b(global)f(preference)i(\(set)e(via)
-h(the)g Fj(mark-symlink)o(ed-directories)g Ft(Readline)h(v)m(ariable\))
-195 2396 y(if)c(appropriate.)30 b(This)18 b(v)m(ariable)g(is)h(set)f
-(to)g(the)h(user's)g(preference)h(b)q(efore)f(an)o(y)f(application-)195
-2451 y(sp)q(eci\014c)f(completion)e(function)g(is)h(called,)f(so)g
-(unless)h(that)f(function)h(mo)q(di\014es)g(the)g(v)m(alue,)g(the)195
-2506 y(user's)f(preferences)h(are)f(honored.)1685 2615
+1547 y(bac)o(kslashes.)19 b(This)c(is)g(set)g(b)q(efore)g(calling)f(an)
+o(y)h(application-sp)q(eci\014c)g(completion)f(function.)1685
+1636 y([V)l(ariable])-1801 b Fh(int)27 b(rl_completion_quote_charac)q
+(ter)195 1691 y Ft(When)18 b(Readline)h(is)e(completing)h(quoted)g
+(text,)g(as)f(delimited)h(b)o(y)g(one)g(of)g(the)g(c)o(haracters)f(in)
+195 1745 y Fk(rl)p 229 1745 V 19 w(completer)p 443 1745
+V 20 w(quote)p 573 1745 V 20 w(c)o(haracters)p Ft(,)c(it)h(sets)h(this)
+f(v)m(ariable)g(to)g(the)g(quoting)g(c)o(haracter)g(it)g(found.)195
+1800 y(This)h(is)f(set)h(b)q(efore)h(calling)e(an)o(y)h(application-sp)
+q(eci\014c)g(completion)f(function.)1685 1889 y([V)l(ariable])-1801
+b Fh(int)27 b(rl_completion_mark_symlink)q(_dirs)195
+1944 y Ft(If)15 b(non-zero,)g(Readline)g(app)q(ends)h(a)f(slash)f(to)h
+(completed)g(\014lenames)g(that)f(are)g(sym)o(b)q(olic)h(links)195
+1999 y(to)c(directory)h(names,)g(sub)s(ject)g(to)f(the)i(v)m(alue)f(of)
+g(the)g(user-settable)f Fk(mark-directories)i Ft(v)m(ariable.)195
+2054 y(This)g(v)m(ariable)g(exists)g(so)h(that)f(application-sp)q
+(eci\014c)g(completion)g(functions)g(can)h(o)o(v)o(erride)f(the)195
+2108 y(user's)j(global)e(preference)j(\(set)e(via)g(the)h
+Fk(mark-symlink)o(ed-directories)g Ft(Readline)h(v)m(ariable\))d(if)195
+2163 y(appropriate.)j(This)11 b(v)m(ariable)f(is)g(set)g(to)g(the)h
+(user's)f(preference)i(b)q(efore)f(calling)e(an)o(y)h(application-)195
+2218 y(sp)q(eci\014c)15 b(completion)e(function,)h(so)f(unless)i(that)e
+(function)h(mo)q(di\014es)g(the)g(v)m(alue,)g(Readline)g(will)195
+2273 y(honor)h(the)g(user's)g(preferences.)1685 2362
y([V)l(ariable])-1801 b Fh(int)27 b(rl_ignore_completion_dupli)q(cates)
-195 2670 y Ft(If)15 b(non-zero,)h(then)f(duplicates)g(in)g(the)g(matc)o
-(hes)g(are)g(remo)o(v)o(ed.)k(The)d(default)f(is)f(1.)p
+195 2417 y Ft(If)14 b(non-zero,)g(then)h(Readline)f(remo)o(v)o(es)f
+(duplicates)h(in)g(the)g(set)g(of)f(p)q(ossible)h(completions.)19
+b(The)195 2471 y(default)c(is)f(1.)1685 2560 y([V)l(ariable])-1801
+b Fh(int)27 b(rl_filename_completion_des)q(ired)195 2615
+y Ft(A)21 b(non-zero)h(v)m(alue)f(means)h(that)e(Readline)i(should)f
+(treat)f(the)i(results)e(of)h(the)h(matc)o(hes)e(as)195
+2670 y(\014lenames.)e(This)11 b(is)g Fj(always)j Ft(zero)d(when)h
+(completion)e(is)g(attempted,)h(and)g(can)g(only)g(b)q(e)h(c)o(hanged)p
eop end
-%%Page: 56 60
-TeXDict begin 56 59 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)14
-b(with)g(GNU)h(Readline)842 b(56)1685 149 y([V)l(ariable])-1801
-b Fh(int)27 b(rl_filename_completion_des)q(ired)195 204
-y Ft(Non-zero)16 b(means)g(that)f(the)h(results)f(of)h(the)g(matc)o
-(hes)f(are)h(to)f(b)q(e)i(treated)e(as)g(\014lenames.)22
-b(This)195 259 y(is)d Fk(always)24 b Ft(zero)c(when)g(completion)f(is)h
-(attempted,)g(and)g(can)g(only)g(b)q(e)h(c)o(hanged)f(within)f(an)195
-314 y(application-sp)q(eci\014c)g(completion)g(function.)34
-b(If)20 b(it)e(is)i(set)f(to)g(a)h(non-zero)g(v)m(alue)g(b)o(y)f(suc)o
-(h)h(a)195 369 y(function,)11 b(directory)g(names)g(ha)o(v)o(e)g(a)f
-(slash)h(app)q(ended)i(and)e(Readline)g(attempts)g(to)f(quote)h(com-)
-195 423 y(pleted)18 b(\014lenames)f(if)g(they)h(con)o(tain)f(an)o(y)g
-(c)o(haracters)f(in)i Fs(rl_filename_quote_charact)o(ers)195
-478 y Ft(and)d Fs(rl_filename_quoting_desired)d Ft(is)j(set)g(to)f(a)h
-(non-zero)g(v)m(alue.)1685 570 y([V)l(ariable])-1801
-b Fh(int)27 b(rl_filename_quoting_desire)q(d)195 625
-y Ft(Non-zero)14 b(means)g(that)f(the)i(results)e(of)h(the)g(matc)o
-(hes)f(are)h(to)f(b)q(e)i(quoted)f(using)g(double)g(quotes)195
-680 y(\(or)20 b(an)i(application-sp)q(eci\014c)e(quoting)h(mec)o
-(hanism\))f(if)h(the)g(completed)h(\014lename)f(con)o(tains)195
-735 y(an)o(y)13 b(c)o(haracters)h(in)f Fs(rl_filename_quote_chars)p
-Ft(.)j(This)e(is)f Fk(always)18 b Ft(non-zero)c(when)g(comple-)195
-790 y(tion)f(is)g(attempted,)h(and)g(can)g(only)f(b)q(e)h(c)o(hanged)h
-(within)e(an)g(application-sp)q(eci\014c)h(completion)195
-844 y(function.)k(The)11 b(quoting)f(is)g(e\013ected)g(via)g(a)g(call)g
-(to)g(the)h(function)f(p)q(oin)o(ted)g(to)g(b)o(y)h Fs(rl_filename_)195
-899 y(quoting_function)p Ft(.)1685 991 y([V)l(ariable])-1801
-b Fh(int)27 b(rl_attempted_completion_ov)q(er)195 1046
+%%Page: 62 66
+TeXDict begin 62 65 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)14
+b(with)g(GNU)h(Readline)842 b(62)195 149 y(within)19
+b(an)h(application-sp)q(eci\014c)g(completion)f(function.)34
+b(If)20 b(it)f(is)h(set)g(to)f(a)g(non-zero)i(v)m(alue)195
+204 y(b)o(y)f(suc)o(h)g(a)f(function,)i(Readline)f(app)q(ends)h(a)e
+(slash)h(to)f(directory)g(names)h(and)g(attempts)f(to)195
+259 y(quote)i(completed)g(\014lenames)g(if)f(they)h(con)o(tain)f(an)o
+(y)h(c)o(haracters)f(in)g Fs(rl_filename_quote_)195 314
+y(characters)14 b Ft(and)h Fs(rl_filename_quoting_desired)d
+Ft(is)i(set)h(to)g(a)g(non-zero)g(v)m(alue.)1685 408
+y([V)l(ariable])-1801 b Fh(int)27 b(rl_filename_quoting_desire)q(d)195
+463 y Ft(A)15 b(non-zero)h(v)m(alue)g(means)f(that)g(Readline)g(should)
+h(quote)f(the)g(results)g(of)g(the)g(matc)o(hes)g(using)195
+517 y(double)k(quotes)f(\(or)g(an)g(application-sp)q(eci\014c)h
+(quoting)f(mec)o(hanism\))f(if)i(the)f(completed)h(\014le-)195
+572 y(name)12 b(con)o(tains)g(an)o(y)g(c)o(haracters)g(in)g
+Fs(rl_filename_quote_chars)p Ft(.)k(This)c(is)g Fj(always)k
+Ft(non-zero)195 627 y(when)c(completion)f(is)g(attempted,)g(and)h(can)f
+(only)g(b)q(e)h(c)o(hanged)g(within)f(an)g(application-sp)q(eci\014c)
+195 682 y(completion)16 b(function.)23 b(The)16 b(quoting)g(is)g(p)q
+(erformed)h(via)e(a)h(call)g(to)g(the)g(function)g(p)q(oin)o(ted)h(to)
+195 737 y(b)o(y)e Fs(rl_filename_quoting_functio)o(n)p
+Ft(.)1685 830 y([V)l(ariable])-1801 b Fh(int)27 b
+(rl_full_quoting_desired)195 885 y Ft(A)14 b(non-zero)g(v)m(alue)h
+(means)f(that)f(Readline)i(should)f(apply)g(\014lename-st)o(yle)f
+(quoting,)g(including)195 940 y(an)o(y)j(application-sp)q(eci\014ed)h
+(quoting)f(mec)o(hanism,)g(to)g(all)g(completion)f(matc)o(hes)h(ev)o
+(en)h(if)g(it)e(is)195 995 y(not)i(otherwise)g(treating)f(the)i(matc)o
+(hes)f(as)h(\014lenames.)27 b(This)17 b(is)g Fj(always)k
+Ft(zero)d(when)g(comple-)195 1050 y(tion)13 b(is)g(attempted,)h(and)g
+(can)g(only)f(b)q(e)h(c)o(hanged)h(within)e(an)g(application-sp)q
+(eci\014c)h(completion)195 1104 y(function.)39 b(The)21
+b(quoting)g(is)g(p)q(erformed)h(via)e(a)h(call)g(to)g(the)g(function)h
+(p)q(oin)o(ted)f(to)g(b)o(y)g Fs(rl_)195 1159 y
+(filename_quoting_function)p Ft(.)1685 1253 y([V)l(ariable])-1801
+b Fh(int)27 b(rl_attempted_completion_ov)q(er)195 1308
y Ft(If)47 b(an)g(application-sp)q(eci\014c)g(completion)f(function)h
-(assigned)f(to)h Fs(rl_attempted_)195 1101 y(completion_function)24
+(assigned)f(to)h Fs(rl_attempted_)195 1363 y(completion_function)24
b Ft(sets)i(this)g(v)m(ariable)g(to)g(a)g(non-zero)h(v)m(alue,)i
-(Readline)e(will)e(not)195 1156 y(p)q(erform)15 b(its)f(default)g
+(Readline)e(will)e(not)195 1418 y(p)q(erform)15 b(its)f(default)g
(\014lename)h(completion)f(ev)o(en)h(if)f(the)h(application's)e
-(completion)h(function)195 1210 y(returns)h(no)g(matc)o(hes.)20
+(completion)h(function)195 1472 y(returns)h(no)g(matc)o(hes.)20
b(It)15 b(should)g(b)q(e)h(set)f(only)g(b)o(y)g(an)g(application's)e
-(completion)i(function.)1685 1303 y([V)l(ariable])-1801
-b Fh(int)27 b(rl_sort_completion_matches)195 1357 y Ft(If)15
+(completion)i(function.)1685 1566 y([V)l(ariable])-1801
+b Fh(int)27 b(rl_sort_completion_matches)195 1621 y Ft(If)15
b(an)g(application)f(sets)g(this)h(v)m(ariable)f(to)g(0,)g(Readline)i
(will)d(not)i(sort)f(the)h(list)e(of)i(completions)195
-1412 y(\(whic)o(h)d(implies)f(that)h(it)f(cannot)h(remo)o(v)o(e)g(an)o
+1676 y(\(whic)o(h)d(implies)f(that)h(it)f(cannot)h(remo)o(v)o(e)g(an)o
(y)g(duplicate)g(completions\).)18 b(The)12 b(default)g(v)m(alue)g(is)
-195 1467 y(1,)j(whic)o(h)g(means)h(that)f(Readline)h(will)e(sort)h(the)
+195 1731 y(1,)j(whic)o(h)g(means)h(that)f(Readline)h(will)e(sort)h(the)
g(completions)g(and,)h(dep)q(ending)g(on)g(the)g(v)m(alue)195
-1522 y(of)f Fs(rl_ignore_completion_dup)o(licates)p Ft(,)c(will)j
+1785 y(of)f Fs(rl_ignore_completion_dup)o(licates)p Ft(,)c(will)j
(attempt)g(to)h(remo)o(v)o(e)f(duplicate)h(matc)o(hes.)1685
-1614 y([V)l(ariable])-1801 b Fh(int)27 b(rl_completion_type)195
-1669 y Ft(Set)18 b(to)e(a)i(c)o(haracter)f(describing)g(the)g(t)o(yp)q
-(e)h(of)f(completion)g(Readline)h(is)f(curren)o(tly)g(attempt-)195
-1724 y(ing;)g(see)g(the)f(description)g(of)h Fs
-(rl_complete_internal\(\))c Ft(\(see)k(Section)g(2.6.2)e([Completion)
-195 1778 y(F)l(unctions],)j(page)g(50\))g(for)f(the)i(list)e(of)h(c)o
-(haracters.)28 b(This)18 b(is)g(set)g(to)g(the)g(appropriate)g(v)m
-(alue)195 1833 y(b)q(efore)e(an)o(y)g(application-sp)q(eci\014c)f
-(completion)g(function)h(is)f(called,)g(allo)o(wing)f(suc)o(h)i
-(functions)195 1888 y(to)f(presen)o(t)g(the)g(same)g(in)o(terface)f(as)
-h Fs(rl_complete\(\))p Ft(.)1685 1980 y([V)l(ariable])-1801
-b Fh(int)27 b(rl_completion_invoking_key)195 2035 y Ft(Set)20
-b(to)g(the)h(\014nal)f(c)o(haracter)f(in)i(the)f(k)o(ey)g(sequence)i
-(that)d(in)o(v)o(ok)o(ed)h(one)g(of)g(the)h(completion)195
-2090 y(functions)e(that)f(call)f Fs(rl_complete_internal\(\))p
-Ft(.)28 b(This)18 b(is)h(set)f(to)g(the)h(appropriate)f(v)m(alue)195
-2144 y(b)q(efore)d(an)o(y)g(application-sp)q(eci\014c)g(completion)g
-(function)g(is)f(called.)1685 2237 y([V)l(ariable])-1801
-b Fh(int)27 b(rl_inhibit_completion)195 2291 y Ft(If)14
-b(this)g(v)m(ariable)f(is)h(non-zero,)g(completion)g(is)f(inhibited.)19
-b(The)c(completion)e(c)o(haracter)g(will)g(b)q(e)195
-2346 y(inserted)i(as)g(an)o(y)g(other)g(b)q(ound)h(to)e
-Fs(self-insert)p Ft(.)75 2446 y Fi(2.6.4)30 b(A)21 b(Short)f
-(Completion)g(Example)75 2519 y Ft(Here)15 b(is)f(a)g(small)f
-(application)g(demonstrating)h(the)g(use)h(of)f(the)h(GNU)f(Readline)h
-(library)l(.)k(It)14 b(is)g(called)75 2574 y Fs(fileman)p
-Ft(,)20 b(and)g(the)g(source)f(co)q(de)i(resides)f(in)f
-Fs(examples/fileman.c)p Ft(.)31 b(This)20 b(sample)f(application)75
-2629 y(pro)o(vides)13 b(completion)f(of)g(command)h(names,)g(line)g
-(editing)g(features,)f(and)i(access)f(to)f(the)h(history)g(list.)p
+1879 y([V)l(ariable])-1801 b Fh(int)27 b(rl_completion_type)195
+1934 y Ft(Set)13 b(to)f(a)g(c)o(haracter)g(describing)h(the)f(t)o(yp)q
+(e)h(of)f(completion)g(Readline)h(is)f(curren)o(tly)h(attempting;)195
+1989 y(see)g(the)f(description)g(of)g Fs(rl_complete_internal\(\))e
+Ft(\(see)i(Section)h(2.6.2)d([Completion)h(F)l(unc-)195
+2044 y(tions],)j(page)i(56\))f(for)g(the)h(list)f(of)g(c)o(haracters.)
+21 b(This)16 b(is)f(set)h(to)f(the)h(appropriate)f(v)m(alue)h(b)q
+(efore)195 2099 y(calling)i(an)o(y)h(application-sp)q(eci\014c)h
+(completion)e(function,)i(so)f(these)h(functions)f(can)h(presen)o(t)195
+2153 y(the)15 b(same)g(in)o(terface)g(as)f Fs(rl_complete\(\))p
+Ft(.)1685 2247 y([V)l(ariable])-1801 b Fh(int)27 b
+(rl_completion_invoking_key)195 2302 y Ft(Set)20 b(to)g(the)h(\014nal)f
+(c)o(haracter)f(in)i(the)f(k)o(ey)g(sequence)i(that)d(in)o(v)o(ok)o(ed)
+h(one)g(of)g(the)h(completion)195 2357 y(functions)e(that)f(call)f
+Fs(rl_complete_internal\(\))p Ft(.)28 b(This)18 b(is)h(set)f(to)g(the)h
+(appropriate)f(v)m(alue)195 2412 y(b)q(efore)d(calling)f(an)o(y)h
+(application-sp)q(eci\014c)g(completion)g(function.)1685
+2506 y([V)l(ariable])-1801 b Fh(int)27 b(rl_inhibit_completion)195
+2560 y Ft(If)22 b(this)g(v)m(ariable)g(is)f(non-zero,)j(Readline)f(do)q
+(es)f(not)g(p)q(erform)g(completion,)h(ev)o(en)f(if)g(a)g(k)o(ey)195
+2615 y(binding)15 b(indicates)g(it)g(should.)21 b(The)15
+b(completion)g(c)o(haracter)g(is)g(inserted)g(as)g(if)g(it)g(w)o(ere)g
+(b)q(ound)195 2670 y(to)g Fs(self-insert)p Ft(.)p eop
+end
+%%Page: 63 67
+TeXDict begin 63 66 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)14
+b(with)g(GNU)h(Readline)842 b(63)75 149 y Fi(2.6.4)30
+b(A)21 b(Short)f(Completion)g(Example)75 223 y Ft(Here)15
+b(is)f(a)g(small)f(application)g(demonstrating)h(the)g(use)h(of)f(the)h
+(GNU)f(Readline)h(library)l(.)k(It)14 b(is)g(called)75
+278 y Fs(fileman)p Ft(,)20 b(and)g(the)g(source)f(co)q(de)i(resides)f
+(in)f Fs(examples/fileman.c)p Ft(.)31 b(This)20 b(sample)f(application)
+75 333 y(pro)o(vides)c(command)g(name)g(completion,)f(line)h(editing)f
+(features,)h(and)g(access)g(to)g(the)g(history)f(list.)p
eop end
-%%Page: 57 61
-TeXDict begin 57 60 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)14
-b(with)g(GNU)h(Readline)842 b(57)195 149 y Fe(/*)19 b(fileman.c)d(--)j
+%%Page: 64 68
+TeXDict begin 64 67 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)14
+b(with)g(GNU)h(Readline)842 b(64)195 149 y Fe(/*)19 b(fileman.c)d(--)j
(A)g(tiny)f(applicatio)o(n)e(which)i(demonstrat)o(es)e(how)j(to)f(use)h
(the)254 193 y(GNU)f(Readline)f(library.)36 b(This)18
b(applicatio)o(n)e(interactive)o(ly)g(allows)h(users)254
(D_H)195 803 y(#)39 b(include)17 b(<unistd.h)o(>)195
847 y(#endif)195 934 y(#include)g(<fcntl.h)o(>)195 978
y(#include)g(<stdio.h)o(>)195 1021 y(#include)g(<errno.h)o(>)195
-1108 y(#if)h(defined)f(\(HAVE_STRI)o(NG_)o(H\))195 1152
-y(#)39 b(include)17 b(<string.h)o(>)195 1196 y(#else)h(/*)h(!HAVE_ST)o
-(RIN)o(G_)o(H)e(*/)195 1239 y(#)39 b(include)17 b(<strings.)o(h>)195
-1283 y(#endif)g(/*)i(!HAVE_STRI)o(NG)o(_H)d(*/)195 1370
-y(#ifdef)h(HAVE_STDLI)o(B_H)195 1413 y(#)39 b(include)17
-b(<stdlib.h)o(>)195 1457 y(#endif)195 1544 y(#include)g(<time.h>)195
-1631 y(#include)g(<readlin)o(e/r)o(ea)o(dli)o(ne.)o(h>)195
-1675 y(#include)g(<readlin)o(e/h)o(is)o(tor)o(y.h)o(>)195
-1762 y(extern)g(char)h(*xmalloc)f(PARAMS\(\(s)o(ize)o(_t)o(\)\);)195
-1849 y(/*)i(The)f(names)g(of)h(functions)d(that)i(actually)f(do)h(the)h
-(manipulat)o(ion)o(.)d(*/)195 1893 y(int)i(com_list)f(PARAMS\(\(c)o
-(har)f(*\)\);)195 1936 y(int)i(com_view)f(PARAMS\(\(c)o(har)f(*\)\);)
-195 1980 y(int)i(com_rename)e(PARAMS\(\(ch)o(ar)g(*\)\);)195
-2024 y(int)i(com_stat)f(PARAMS\(\(c)o(har)f(*\)\);)195
-2067 y(int)i(com_pwd)f(PARAMS\(\(ch)o(ar)f(*\)\);)195
-2111 y(int)i(com_delete)e(PARAMS\(\(ch)o(ar)g(*\)\);)195
-2154 y(int)i(com_help)f(PARAMS\(\(c)o(har)f(*\)\);)195
-2198 y(int)i(com_cd)g(PARAMS\(\(c)o(ha)o(r)f(*\)\);)195
-2242 y(int)h(com_quit)f(PARAMS\(\(c)o(har)f(*\)\);)195
-2329 y(/*)j(A)g(structure)d(which)i(contains)e(information)g(on)j(the)f
-(commands)f(this)h(program)254 2372 y(can)g(understand)o(.)f(*/)195
-2460 y(typedef)g(struct)g({)234 2503 y(char)h(*name;)g(/*)g(User)g
-(printable)f(name)h(of)h(the)f(function.)e(*/)234 2547
+1065 y(#include)g(<locale.)o(h>)195 1152 y(#if)h(defined)f(\(HAVE_STRI)
+o(NG_)o(H\))195 1196 y(#)39 b(include)17 b(<string.h)o(>)195
+1239 y(#else)h(/*)h(!HAVE_ST)o(RIN)o(G_)o(H)e(*/)195
+1283 y(#)39 b(include)17 b(<strings.)o(h>)195 1326 y(#endif)g(/*)i
+(!HAVE_STRI)o(NG)o(_H)d(*/)195 1413 y(#ifdef)h(HAVE_STDLI)o(B_H)195
+1457 y(#)39 b(include)17 b(<stdlib.h)o(>)195 1501 y(#endif)195
+1588 y(#include)g(<time.h>)195 1675 y(#include)g(<readlin)o(e/r)o(ea)o
+(dli)o(ne.)o(h>)195 1719 y(#include)g(<readlin)o(e/h)o(is)o(tor)o(y.h)o
+(>)195 1806 y(extern)g(char)h(*xmalloc)f(PARAMS\(\(s)o(ize)o(_t)o
+(\)\);)195 1893 y(/*)i(The)f(names)g(of)h(functions)d(that)i(actually)f
+(do)h(the)h(manipulat)o(ion)o(.)d(*/)195 1936 y(int)i(com_list)f
+(PARAMS\(\(c)o(har)f(*\)\);)195 1980 y(int)i(com_view)f(PARAMS\(\(c)o
+(har)f(*\)\);)195 2024 y(int)i(com_rename)e(PARAMS\(\(ch)o(ar)g(*\)\);)
+195 2067 y(int)i(com_stat)f(PARAMS\(\(c)o(har)f(*\)\);)195
+2111 y(int)i(com_pwd)f(PARAMS\(\(ch)o(ar)f(*\)\);)195
+2154 y(int)i(com_delete)e(PARAMS\(\(ch)o(ar)g(*\)\);)195
+2198 y(int)i(com_help)f(PARAMS\(\(c)o(har)f(*\)\);)195
+2242 y(int)i(com_cd)g(PARAMS\(\(c)o(ha)o(r)f(*\)\);)195
+2285 y(int)h(com_quit)f(PARAMS\(\(c)o(har)f(*\)\);)195
+2372 y(/*)j(A)g(structure)d(which)i(contains)e(information)g(on)j(the)f
+(commands)f(this)h(program)254 2416 y(can)g(understand)o(.)f(*/)195
+2503 y(typedef)g(struct)g({)234 2547 y(char)h(*name;)g(/*)g(User)g
+(printable)f(name)h(of)h(the)f(function.)e(*/)234 2590
y(rl_icpfunc)o(_t)g(*func;)h(/*)i(Function)e(to)i(call)f(to)h(do)f(the)
-h(job.)f(*/)234 2590 y(char)g(*doc;)g(/*)h(Documenta)o(tio)o(n)d(for)j
-(this)f(function.)36 b(*/)195 2634 y(})19 b(COMMAND;)p
-eop end
-%%Page: 58 62
-TeXDict begin 58 61 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)14
-b(with)g(GNU)h(Readline)842 b(58)195 193 y Fe(COMMAND)17
-b(commands[)o(])g(=)i({)234 237 y({)g("cd",)f(com_cd,)f("Change)g(to)i
-(directory)d(DIR")i(},)234 280 y({)h("delete",)e(com_dele)o(te,)f
-("Delete)h(FILE")h(},)234 324 y({)h("help",)e(com_help,)f("Display)h
-(this)h(text")g(},)234 367 y({)h("?",)g(com_help)o(,)e("Synonym)f(for)j
-(`help'")e(},)234 411 y({)i("list",)e(com_list,)f("List)i(files)g(in)h
-(DIR")f(},)234 455 y({)h("ls",)f(com_list,)e("Synonym)h(for)h(`list'")f
-(},)234 498 y({)i("pwd",)f(com_pwd,)e("Print)i(the)g(current)f(working)
-g(directory)o(")g(},)234 542 y({)i("quit",)e(com_quit,)f("Quit)i(using)
-g(Fileman")e(},)234 585 y({)j("rename",)e(com_rena)o(me,)f("Rename)h
-(FILE)h(to)h(NEWNAME")d(},)234 629 y({)j("stat",)e(com_stat,)f("Print)i
-(out)g(statistics)e(on)j(FILE")f(},)234 672 y({)h("view",)e(com_view,)f
-("View)i(the)h(contents)d(of)j(FILE")f(},)234 716 y({)h(\(char)f
+h(job.)f(*/)234 2634 y(char)g(*doc;)g(/*)h(Documenta)o(tio)o(n)d(for)j
+(this)f(function.)36 b(*/)p eop end
+%%Page: 65 69
+TeXDict begin 65 68 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)14
+b(with)g(GNU)h(Readline)842 b(65)195 149 y Fe(})19 b(COMMAND;)195
+237 y(COMMAND)e(commands[)o(])g(=)i({)234 280 y({)g("cd",)f(com_cd,)f
+("Change)g(to)i(directory)d(DIR")i(},)234 324 y({)h("delete",)e
+(com_dele)o(te,)f("Delete)h(FILE")h(},)234 367 y({)h("help",)e
+(com_help,)f("Display)h(this)h(text")g(},)234 411 y({)h("?",)g
+(com_help)o(,)e("Synonym)f(for)j(`help'")e(},)234 455
+y({)i("list",)e(com_list,)f("List)i(files)g(in)h(DIR")f(},)234
+498 y({)h("ls",)f(com_list,)e("Synonym)h(for)h(`list'")f(},)234
+542 y({)i("pwd",)f(com_pwd,)e("Print)i(the)g(current)f(working)g
+(directory)o(")g(},)234 585 y({)i("quit",)e(com_quit,)f("Quit)i(using)g
+(Fileman")e(},)234 629 y({)j("rename",)e(com_rena)o(me,)f("Rename)h
+(FILE)h(to)h(NEWNAME")d(},)234 672 y({)j("stat",)e(com_stat,)f("Print)i
+(out)g(statistics)e(on)j(FILE")f(},)234 716 y({)h("view",)e(com_view,)f
+("View)i(the)h(contents)d(of)j(FILE")f(},)234 760 y({)h(\(char)f
(*\)NULL,)f(\(rl_icpfun)o(c_)o(t)g(*\)NULL,)g(\(char)g(*\)NULL)h(})195
-760 y(};)195 847 y(/*)h(Forward)e(declarati)o(on)o(s.)f(*/)195
-890 y(char)i(*stripwhit)o(e)e(\(\);)195 934 y(COMMAND)h(*find_com)o
-(man)o(d)f(\(\);)195 1021 y(/*)j(The)f(name)g(of)h(this)f(program,)f
-(as)i(taken)e(from)h(argv[0].)f(*/)195 1065 y(char)h(*progname;)195
-1152 y(/*)h(When)f(non-zero,)e(this)i(global)f(means)h(the)h(user)f(is)
-g(done)h(using)e(this)h(program.)f(*/)195 1196 y(int)h(done;)195
-1283 y(char)g(*)195 1326 y(dupstr)f(\(s\))293 1370 y(char)h(*s;)195
-1413 y({)234 1457 y(char)g(*r;)234 1544 y(r)h(=)h(xmalloc)d(\(strlen)f
-(\(s\))j(+)g(1\);)234 1588 y(strcpy)f(\(r,)g(s\);)234
-1631 y(return)g(\(r\);)195 1675 y(})195 1762 y(main)g(\(argc,)f(argv\))
-293 1806 y(int)i(argc;)293 1849 y(char)f(**argv;)195
-1893 y({)234 1936 y(char)g(*line,)g(*s;)234 2024 y(progname)f(=)i
-(argv[0];)234 2111 y(initialize)o(_re)o(ad)o(lin)o(e)d(\(\);)j(/*)g
-(Bind)f(our)g(completer.)e(*/)234 2198 y(/*)j(Loop)f(reading)f(and)h
+803 y(};)195 890 y(/*)h(Forward)e(declarati)o(on)o(s.)f(*/)195
+934 y(char)i(*stripwhit)o(e)e(\(char)i(*\);)195 978 y(COMMAND)f
+(*find_com)o(man)o(d)f(\(char)i(*\);)195 1065 y(/*)h(The)f(name)g(of)h
+(this)f(program,)f(as)i(taken)e(from)h(argv[0].)f(*/)195
+1108 y(char)h(*progname;)195 1196 y(/*)h(When)f(non-zero,)e(this)i
+(global)f(means)h(the)h(user)f(is)g(done)h(using)e(this)h(program.)f
+(*/)195 1239 y(int)h(done;)195 1326 y(char)g(*)195 1370
+y(dupstr)f(\(char)h(*s\))195 1413 y({)234 1457 y(char)g(*r;)234
+1544 y(r)h(=)h(xmalloc)d(\(strlen)f(\(s\))j(+)g(1\);)234
+1588 y(strcpy)f(\(r,)g(s\);)234 1631 y(return)g(\(r\);)195
+1675 y(})195 1762 y(int)195 1806 y(main)g(\(int)g(argc,)g(char)g
+(**argv\))195 1849 y({)234 1893 y(char)g(*line,)g(*s;)234
+1980 y(setlocale)e(\(LC_ALL,)h(""\);)234 2067 y(progname)g(=)i
+(argv[0];)234 2154 y(initialize)o(_re)o(ad)o(lin)o(e)d(\(\);)j(/*)g
+(Bind)f(our)g(completer.)e(*/)234 2242 y(/*)j(Loop)f(reading)f(and)h
(executing)f(lines)g(until)h(the)g(user)h(quits.)e(*/)234
-2242 y(for)i(\()g(;)g(done)f(==)h(0;)g(\))273 2285 y({)313
-2329 y(line)f(=)h(readline)d(\("FileMan:)g("\);)313 2416
-y(if)j(\(!line\))352 2460 y(break;)313 2547 y(/*)g(Remove)e(leading)g
+2285 y(for)i(\()g(;)g(done)f(==)h(0;)g(\))273 2329 y({)313
+2372 y(line)f(=)h(readline)d(\("FileMan:)g("\);)313 2460
+y(if)j(\(!line\))352 2503 y(break;)313 2590 y(/*)g(Remove)e(leading)g
(and)h(trailing)f(whitespac)o(e)f(from)j(the)f(line.)372
-2590 y(Then,)f(if)i(there)f(is)h(anything)d(left,)i(add)g(it)h(to)g
-(the)f(history)f(list)372 2634 y(and)h(execute)f(it.)h(*/)p
-eop end
-%%Page: 59 63
-TeXDict begin 59 62 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)14
-b(with)g(GNU)h(Readline)842 b(59)313 149 y Fe(s)19 b(=)g(stripwhite)d
-(\(line\);)313 237 y(if)j(\(*s\))352 280 y({)391 324
-y(add_histor)o(y)d(\(s\);)391 367 y(execute_li)o(ne)g(\(s\);)352
-411 y(})313 498 y(free)i(\(line\);)273 542 y(})234 585
-y(exit)g(\(0\);)195 629 y(})195 716 y(/*)h(Execute)e(a)i(command)e
-(line.)h(*/)195 760 y(int)195 803 y(execute_li)o(ne)e(\(line\))293
-847 y(char)i(*line;)195 890 y({)234 934 y(register)f(int)h(i;)234
-978 y(COMMAND)f(*command;)234 1021 y(char)h(*word;)234
-1108 y(/*)h(Isolate)e(the)h(command)f(word.)h(*/)234
-1152 y(i)h(=)h(0;)234 1196 y(while)e(\(line[i])e(&&)j(whitespace)d
-(\(line[i]\)\))273 1239 y(i++;)234 1283 y(word)i(=)i(line)e(+)h(i;)234
-1370 y(while)f(\(line[i])e(&&)j(!whitespac)o(e)e(\(line[i]\))o(\))273
-1413 y(i++;)234 1501 y(if)i(\(line[i]\))273 1544 y(line[i++])e(=)i
-('\\0';)234 1631 y(command)e(=)i(find_comma)o(nd)d(\(word\);)234
+2634 y(Then,)f(if)i(there)f(is)h(anything)d(left,)i(add)g(it)h(to)g
+(the)f(history)f(list)p eop end
+%%Page: 66 70
+TeXDict begin 66 69 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)14
+b(with)g(GNU)h(Readline)842 b(66)372 149 y Fe(and)18
+b(execute)f(it.)h(*/)313 193 y(s)h(=)g(stripwhite)d(\(line\);)313
+280 y(if)j(\(*s\))352 324 y({)391 367 y(add_histor)o(y)d(\(s\);)391
+411 y(execute_li)o(ne)g(\(s\);)352 455 y(})313 542 y(free)i(\(line\);)
+273 585 y(})234 629 y(exit)g(\(0\);)195 672 y(})195 760
+y(/*)h(Execute)e(a)i(command)e(line.)h(*/)195 803 y(int)195
+847 y(execute_li)o(ne)e(\(char)i(*line\))195 890 y({)234
+934 y(register)f(int)h(i;)234 978 y(COMMAND)f(*command;)234
+1021 y(char)h(*word;)234 1108 y(/*)h(Isolate)e(the)h(command)f(word.)h
+(*/)234 1152 y(i)h(=)h(0;)234 1196 y(while)e(\(line[i])e(&&)j
+(whitespace)d(\(line[i]\)\))273 1239 y(i++;)234 1283
+y(word)i(=)i(line)e(+)h(i;)234 1370 y(while)f(\(line[i])e(&&)j
+(!whitespac)o(e)e(\(line[i]\))o(\))273 1413 y(i++;)234
+1501 y(if)i(\(line[i]\))273 1544 y(line[i++])e(=)i('\\0';)234
+1631 y(command)e(=)i(find_comma)o(nd)d(\(word\);)234
1719 y(if)j(\(!command\))273 1762 y({)313 1806 y(fprintf)e(\(stderr,)f
("\045s:)i(No)h(such)f(command)f(for)h(FileMan.\\n")o(,)e(word\);)313
1849 y(return)h(\(-1\);)273 1893 y(})234 1980 y(/*)i(Get)g(argument)d
(command,)e(and)h(return)g(a)h(pointer)e(to)i(that)254
2460 y(command.)36 b(Return)17 b(a)i(NULL)g(pointer)d(if)j(NAME)f
(isn't)g(a)h(command)e(name.)h(*/)195 2503 y(COMMAND)f(*)195
-2547 y(find_comma)o(nd)f(\(name\))293 2590 y(char)i(*name;)195
-2634 y({)p eop end
-%%Page: 60 64
-TeXDict begin 60 63 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)14
-b(with)g(GNU)h(Readline)842 b(60)234 149 y Fe(register)17
-b(int)h(i;)234 237 y(for)h(\(i)g(=)g(0;)g(commands)o([i])o(.na)o(me)o
-(;)e(i++\))273 280 y(if)i(\(strcmp)e(\(name,)g(commands[i])o(.n)o(ame)o
-(\))g(==)h(0\))313 324 y(return)f(\(&command)o(s[i)o(]\);)234
-411 y(return)h(\(\(COMMAN)o(D)f(*\)NULL\);)195 455 y(})195
-542 y(/*)i(Strip)f(whitespa)o(ce)e(from)i(the)h(start)e(and)i(end)f(of)
-h(STRING.)37 b(Return)17 b(a)i(pointer)254 585 y(into)f(STRING.)f(*/)
-195 629 y(char)h(*)195 672 y(stripwhite)e(\(string\))293
-716 y(char)i(*string;)195 760 y({)234 803 y(register)f(char)h(*s,)g
-(*t;)234 890 y(for)h(\(s)g(=)g(string;)e(whitespac)o(e)f(\(*s\);)i
-(s++\))273 934 y(;)234 1021 y(if)h(\(*s)g(==)f(0\))273
-1065 y(return)g(\(s\);)234 1152 y(t)h(=)h(s)f(+)g(strlen)e(\(s\))i(-)g
-(1;)234 1196 y(while)f(\(t)h(>)g(s)g(&&)g(whitespace)d(\(*t\)\))273
-1239 y(t--;)234 1283 y(*++t)i(=)i('\\0';)234 1370 y(return)e(s;)195
-1413 y(})195 1501 y(/*)h(*********)o(***)o(**)o(***)o(**)o(***)o(***)o
+2547 y(find_comma)o(nd)f(\(char)i(*name\))195 2590 y({)234
+2634 y(register)f(int)h(i;)p eop end
+%%Page: 67 71
+TeXDict begin 67 70 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)14
+b(with)g(GNU)h(Readline)842 b(67)234 193 y Fe(for)19
+b(\(i)g(=)g(0;)g(commands)o([i])o(.na)o(me)o(;)e(i++\))273
+237 y(if)i(\(strcmp)e(\(name,)g(commands[i])o(.n)o(ame)o(\))g(==)h(0\))
+313 280 y(return)f(\(&command)o(s[i)o(]\);)234 367 y(return)h
+(\(\(COMMAN)o(D)f(*\)NULL\);)195 411 y(})195 498 y(/*)i(Strip)f
+(whitespa)o(ce)e(from)i(the)h(start)e(and)i(end)f(of)h(STRING.)37
+b(Return)17 b(a)i(pointer)254 542 y(into)f(STRING.)f(*/)195
+585 y(char)h(*)195 629 y(stripwhite)e(\(char)h(*string\))195
+672 y({)234 716 y(register)g(char)h(*s,)g(*t;)234 803
+y(for)h(\(s)g(=)g(string;)e(whitespac)o(e)f(\(*s\);)i(s++\))273
+847 y(;)234 934 y(if)h(\(*s)g(==)f(0\))273 978 y(return)g(\(s\);)234
+1065 y(t)h(=)h(s)f(+)g(strlen)e(\(s\))i(-)g(1;)234 1108
+y(while)f(\(t)h(>)g(s)g(&&)g(whitespace)d(\(*t\)\))273
+1152 y(t--;)234 1196 y(*++t)i(=)i('\\0';)234 1283 y(return)e(s;)195
+1326 y(})195 1413 y(/*)h(*********)o(***)o(**)o(***)o(**)o(***)o(***)o
(**)o(***)o(**)o(***)o(***)o(**)o(***)o(**)o(***)o(***)o(**)o(***)o(**)
-o(***)o(***)d(*/)195 1544 y(/*)1294 b(*/)195 1588 y(/*)352
+o(***)o(***)d(*/)195 1457 y(/*)1294 b(*/)195 1501 y(/*)352
b(Interface)16 b(to)j(Readline)e(Completio)o(n)311 b(*/)195
-1631 y(/*)1294 b(*/)195 1675 y(/*)19 b(*********)o(***)o(**)o(***)o(**)
+1544 y(/*)1294 b(*/)195 1588 y(/*)19 b(*********)o(***)o(**)o(***)o(**)
o(***)o(***)o(**)o(***)o(**)o(***)o(***)o(**)o(***)o(**)o(***)o(***)o
-(**)o(***)o(**)o(***)o(***)d(*/)195 1762 y(char)i(*command_g)o(en)o
-(era)o(to)o(r)f(PARAMS\(\(c)o(on)o(st)f(char)i(*,)h(int\)\);)195
-1806 y(char)f(**fileman_)o(co)o(mpl)o(et)o(ion)e(PARAMS\(\(c)o(ons)o(t)
-h(char)h(*,)g(int,)h(int\)\);)195 1893 y(/*)g(Tell)f(the)g(GNU)h
-(Readline)d(library)h(how)i(to)g(complete)o(.)36 b(We)19
-b(want)f(to)h(try)g(to)f(complete)254 1936 y(on)h(command)e(names)g(if)
-i(this)f(is)h(the)f(first)g(word)g(in)h(the)g(line,)e(or)i(on)g
-(filenames)254 1980 y(if)g(not.)f(*/)195 2024 y(initialize)o(_r)o(ead)o
-(li)o(ne)e(\(\))195 2067 y({)234 2111 y(/*)j(Allow)f(condition)o(al)e
-(parsing)h(of)i(the)f(~/.inputrc)e(file.)i(*/)234 2154
-y(rl_readlin)o(e_n)o(am)o(e)f(=)i("FileMan")o(;)234 2242
-y(/*)g(Tell)f(the)h(complete)o(r)e(that)h(we)h(want)f(a)h(crack)f
-(first.)f(*/)234 2285 y(rl_attempt)o(ed_)o(co)o(mpl)o(et)o(ion)o(_fu)o
-(nc)o(tio)o(n)f(=)k(fileman_c)o(om)o(ple)o(tio)o(n;)195
-2329 y(})195 2416 y(/*)f(Attempt)e(to)i(complete)d(on)j(the)f(contents)
-f(of)i(TEXT.)37 b(START)18 b(and)g(END)h(bound)e(the)254
-2460 y(region)g(of)i(rl_line_b)o(uff)o(er)d(that)i(contains)f(the)h
-(word)g(to)h(complete.)36 b(TEXT)18 b(is)254 2503 y(the)g(word)g(to)h
+(**)o(***)o(**)o(***)o(***)d(*/)195 1675 y(char)i(*command_g)o(en)o
+(era)o(to)o(r)f(\(const)g(char)h(*,)h(int\);)195 1719
+y(char)f(**fileman_)o(co)o(mpl)o(et)o(ion)e(\(const)h(char)h(*,)h(int,)
+f(int\);)195 1806 y(/*)h(Tell)f(the)g(GNU)h(Readline)d(library)h(how)i
+(to)g(complete)o(.)36 b(We)19 b(want)f(to)h(try)g(to)f(complete)254
+1849 y(on)h(command)e(names)g(if)i(this)f(is)h(the)f(first)g(word)g(in)
+h(the)g(line,)e(or)i(on)g(filenames)254 1893 y(if)g(not.)f(*/)195
+1936 y(void)195 1980 y(initialize)o(_r)o(ead)o(li)o(ne)e(\(void\))195
+2024 y({)234 2067 y(/*)j(Allow)f(condition)o(al)e(parsing)h(of)i(the)f
+(~/.inputrc)e(file.)i(*/)234 2111 y(rl_readlin)o(e_n)o(am)o(e)f(=)i
+("FileMan")o(;)234 2198 y(/*)g(Tell)f(the)h(complete)o(r)e(that)h(we)h
+(want)f(a)h(crack)f(first.)f(*/)234 2242 y(rl_attempt)o(ed_)o(co)o(mpl)
+o(et)o(ion)o(_fu)o(nc)o(tio)o(n)f(=)k(fileman_c)o(om)o(ple)o(tio)o(n;)
+195 2285 y(})195 2372 y(/*)f(Attempt)e(to)i(complete)d(on)j(the)f
+(contents)f(of)i(TEXT.)37 b(START)18 b(and)g(END)h(bound)e(the)254
+2416 y(region)g(of)i(rl_line_b)o(uff)o(er)d(that)i(contains)f(the)h
+(word)g(to)h(complete.)36 b(TEXT)18 b(is)254 2460 y(the)g(word)g(to)h
(complete.)36 b(We)19 b(can)f(use)h(the)f(entire)f(contents)g(of)i
-(rl_line_b)o(uff)o(er)254 2547 y(in)g(case)f(we)h(want)f(to)g(do)h
+(rl_line_b)o(uff)o(er)254 2503 y(in)g(case)f(we)h(want)f(to)g(do)h
(some)f(simple)g(parsing.)36 b(Return)17 b(the)i(array)e(of)i(matches,)
-254 2590 y(or)g(NULL)f(if)h(there)e(aren't)h(any.)g(*/)195
-2634 y(char)g(**)p eop end
-%%Page: 61 65
-TeXDict begin 61 64 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)14
-b(with)g(GNU)h(Readline)842 b(61)195 149 y Fe(fileman_co)o(mp)o(let)o
-(io)o(n)17 b(\(text,)g(start,)g(end\))293 193 y(const)h(char)g(*text;)
-293 237 y(int)h(start,)e(end;)195 280 y({)234 324 y(char)h(**matches;)
-234 411 y(matches)f(=)i(\(char)f(**\)NULL;)234 498 y(/*)h(If)g(this)f
-(word)g(is)h(at)g(the)f(start)g(of)h(the)f(line,)g(then)g(it)h(is)g(a)g
-(command)293 542 y(to)g(complete.)36 b(Otherwise)16 b(it)j(is)f(the)h
-(name)f(of)h(a)g(file)f(in)h(the)f(current)293 585 y(directory.)e(*/)
-234 629 y(if)j(\(start)e(==)i(0\))273 672 y(matches)e(=)j(rl_compl)o
-(eti)o(on_)o(ma)o(tch)o(es)c(\(text,)h(command_gen)o(er)o(ato)o(r\))o
-(;)234 760 y(return)h(\(matches)o(\);)195 803 y(})195
-890 y(/*)h(Generator)d(function)g(for)j(command)e(completio)o(n.)36
-b(STATE)18 b(lets)g(us)g(know)h(whether)254 934 y(to)g(start)e(from)h
-(scratch;)f(without)g(any)h(state)g(\(i.e.)g(STATE)f(==)i(0\),)g(then)f
-(we)254 978 y(start)g(at)g(the)h(top)f(of)h(the)g(list.)e(*/)195
-1021 y(char)h(*)195 1065 y(command_ge)o(ne)o(rat)o(or)e(\(text,)h
-(state\))293 1108 y(const)h(char)g(*text;)293 1152 y(int)h(state;)195
-1196 y({)234 1239 y(static)f(int)g(list_inde)o(x,)e(len;)234
-1283 y(char)i(*name;)234 1370 y(/*)h(If)g(this)f(is)h(a)g(new)f(word)h
+254 2547 y(or)g(NULL)f(if)h(there)e(aren't)h(any.)g(*/)195
+2590 y(char)g(**)195 2634 y(fileman_co)o(mp)o(let)o(io)o(n)f(\(const)g
+(char)h(*text,)f(int)i(start,)e(int)i(end\))p eop end
+%%Page: 68 72
+TeXDict begin 68 71 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)14
+b(with)g(GNU)h(Readline)842 b(68)195 149 y Fe({)234 193
+y(char)18 b(**matches;)234 280 y(matches)f(=)i(\(char)f(**\)NULL;)234
+367 y(/*)h(If)g(this)f(word)g(is)h(at)g(the)f(start)g(of)h(the)f(line,)
+g(then)g(it)h(is)g(a)g(command)293 411 y(to)g(complete.)36
+b(Otherwise)16 b(it)j(is)f(the)h(name)f(of)h(a)g(file)f(in)h(the)f
+(current)293 455 y(directory.)e(*/)234 498 y(if)j(\(start)e(==)i(0\))
+273 542 y(matches)e(=)j(rl_compl)o(eti)o(on_)o(ma)o(tch)o(es)c(\(text,)
+h(command_gen)o(er)o(ato)o(r\))o(;)234 629 y(return)h(\(matches)o(\);)
+195 672 y(})195 760 y(/*)h(Generator)d(function)g(for)j(command)e
+(completio)o(n.)36 b(STATE)18 b(lets)g(us)g(know)h(whether)254
+803 y(to)g(start)e(from)h(scratch;)f(without)g(any)h(state)g(\(i.e.)g
+(STATE)f(==)i(0\),)g(then)f(we)254 847 y(start)g(at)g(the)h(top)f(of)h
+(the)g(list.)e(*/)195 890 y(char)h(*)195 934 y(command_ge)o(ne)o(rat)o
+(or)e(\(const)h(char)h(*text,)g(int)g(state\))195 978
+y({)234 1021 y(static)g(int)g(list_inde)o(x,)e(len;)234
+1065 y(char)i(*name;)234 1152 y(/*)h(If)g(this)f(is)h(a)g(new)f(word)h
(to)f(complete,)f(initiali)o(ze)f(now.)38 b(This)18 b(includes)293
-1413 y(saving)f(the)i(length)e(of)i(TEXT)f(for)g(efficiency,)e(and)i
-(initializi)o(ng)e(the)j(index)293 1457 y(variable)e(to)h(0.)h(*/)234
-1501 y(if)g(\(!state\))273 1544 y({)313 1588 y(list_inde)o(x)d(=)k(0;)
-313 1631 y(len)e(=)h(strlen)f(\(text\);)273 1675 y(})234
-1762 y(/*)h(Return)e(the)i(next)f(name)g(which)g(partially)e(matches)h
-(from)h(the)g(command)f(list.)h(*/)234 1806 y(while)g(\(name)g(=)h
+1196 y(saving)f(the)i(length)e(of)i(TEXT)f(for)g(efficiency,)e(and)i
+(initializi)o(ng)e(the)j(index)293 1239 y(variable)e(to)h(0.)h(*/)234
+1283 y(if)g(\(!state\))273 1326 y({)313 1370 y(list_inde)o(x)d(=)k(0;)
+313 1413 y(len)e(=)h(strlen)f(\(text\);)273 1457 y(})234
+1544 y(/*)h(Return)e(the)i(next)f(name)g(which)g(partially)e(matches)h
+(from)h(the)g(command)f(list.)h(*/)234 1588 y(while)g(\(name)g(=)h
(commands[)o(lis)o(t_)o(ind)o(ex)o(].n)o(ame)o(\))273
-1849 y({)313 1893 y(list_inde)o(x+)o(+;)313 1980 y(if)g(\(strncmp)d
-(\(name,)h(text,)h(len\))g(==)h(0\))352 2024 y(return)e(\(dupstr\(na)o
-(me\))o(\);)273 2067 y(})234 2154 y(/*)i(If)g(no)g(names)e(matched,)g
-(then)h(return)f(NULL.)h(*/)234 2198 y(return)g(\(\(char)f(*\)NULL\);)
-195 2242 y(})195 2329 y(/*)i(*********)o(***)o(**)o(***)o(**)o(***)o
+1631 y({)313 1675 y(list_inde)o(x+)o(+;)313 1762 y(if)g(\(strncmp)d
+(\(name,)h(text,)h(len\))g(==)h(0\))352 1806 y(return)e(\(dupstr\(na)o
+(me\))o(\);)273 1849 y(})234 1936 y(/*)i(If)g(no)g(names)e(matched,)g
+(then)h(return)f(NULL.)h(*/)234 1980 y(return)g(\(\(char)f(*\)NULL\);)
+195 2024 y(})195 2111 y(/*)i(*********)o(***)o(**)o(***)o(**)o(***)o
(***)o(**)o(***)o(**)o(***)o(***)o(**)o(***)o(**)o(***)o(***)o(**)o
-(***)o(**)o(***)o(***)d(*/)195 2372 y(/*)1294 b(*/)195
-2416 y(/*)450 b(FileMan)17 b(Commands)527 b(*/)195 2460
-y(/*)1294 b(*/)195 2503 y(/*)19 b(*********)o(***)o(**)o(***)o(**)o
+(***)o(**)o(***)o(***)d(*/)195 2154 y(/*)1294 b(*/)195
+2198 y(/*)450 b(FileMan)17 b(Commands)527 b(*/)195 2242
+y(/*)1294 b(*/)195 2285 y(/*)19 b(*********)o(***)o(**)o(***)o(**)o
(***)o(***)o(**)o(***)o(**)o(***)o(***)o(**)o(***)o(**)o(***)o(***)o
-(**)o(***)o(**)o(***)o(***)d(*/)195 2590 y(/*)j(String)e(to)i(pass)f
+(**)o(***)o(**)o(***)o(***)d(*/)195 2372 y(/*)j(String)e(to)i(pass)f
(to)h(system)e(\(\).)38 b(This)18 b(is)h(for)g(the)f(LIST,)g(VIEW)g
-(and)g(RENAME)254 2634 y(commands.)e(*/)p eop end
-%%Page: 62 66
-TeXDict begin 62 65 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)14
-b(with)g(GNU)h(Readline)842 b(62)195 149 y Fe(static)17
-b(char)h(syscom[102)o(4];)195 237 y(/*)h(List)f(the)g(file\(s\))f
-(named)h(in)h(arg.)f(*/)195 280 y(com_list)f(\(arg\))293
-324 y(char)h(*arg;)195 367 y({)234 411 y(if)h(\(!arg\))273
-455 y(arg)g(=)g("";)234 542 y(sprintf)e(\(syscom,)g("ls)h(-FClg)g
-(\045s",)g(arg\);)234 585 y(return)g(\(system)e(\(syscom\)\);)195
-629 y(})195 716 y(com_view)h(\(arg\))293 760 y(char)h(*arg;)195
-803 y({)234 847 y(if)h(\(!valid_ar)o(gu)o(men)o(t)d(\("view",)h
-(arg\)\))273 890 y(return)h(1;)195 978 y(#if)g(defined)f(\(__MSDOS__)o
-(\))234 1021 y(/*)i(more.com)e(doesn't)f(grok)j(slashes)d(in)j
-(pathnames)d(*/)234 1065 y(sprintf)h(\(syscom,)g("less)g(\045s",)h
-(arg\);)195 1108 y(#else)234 1152 y(sprintf)f(\(syscom,)g("more)g
-(\045s",)h(arg\);)195 1196 y(#endif)234 1239 y(return)g(\(system)e
-(\(syscom\)\);)195 1283 y(})195 1370 y(com_rename)g(\(arg\))293
-1413 y(char)i(*arg;)195 1457 y({)234 1501 y(too_danger)o(ous)e
-(\("rename")o(\);)234 1544 y(return)i(\(1\);)195 1588
-y(})195 1675 y(com_stat)f(\(arg\))293 1719 y(char)h(*arg;)195
-1762 y({)234 1806 y(struct)g(stat)g(finfo;)234 1893 y(if)h(\(!valid_ar)
-o(gu)o(men)o(t)d(\("stat",)h(arg\)\))273 1936 y(return)h(\(1\);)234
-2024 y(if)h(\(stat)f(\(arg,)f(&finfo\))g(==)i(-1\))273
-2067 y({)313 2111 y(perror)e(\(arg\);)313 2154 y(return)g(\(1\);)273
-2198 y(})234 2285 y(printf)h(\("Statis)o(tic)o(s)e(for)j(`\045s':\\n",)
-d(arg\);)234 2372 y(printf)i(\("\045s)g(has)g(\045d)h(link\045s,)e(and)
-h(is)h(\045d)g(byte\045s)e(in)i(length.\\n")o(,)234 2416
-y(arg,)391 2460 y(finfo.st_n)o(li)o(nk,)391 2503 y(\(finfo.st_)o(nl)o
-(ink)d(==)j(1\))g(?)g("")g(:)g("s",)391 2547 y(finfo.st_s)o(iz)o(e,)391
-2590 y(\(finfo.st_)o(si)o(ze)d(==)j(1\))g(?)g("")g(:)g("s"\);)234
-2634 y(printf)f(\("Inode)e(Last)i(Change)g(at:)g(\045s",)g(ctime)g
-(\(&finfo.st)o(_c)o(tim)o(e\))o(\);)p eop end
-%%Page: 63 67
-TeXDict begin 63 66 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)14
-b(with)g(GNU)h(Readline)842 b(63)234 149 y Fe(printf)18
-b(\(")116 b(Last)18 b(access)g(at:)g(\045s",)g(ctime)g(\(&finfo.st)o
-(_a)o(tim)o(e\))o(\);)234 193 y(printf)g(\(")77 b(Last)18
-b(modified)f(at:)h(\045s",)g(ctime)g(\(&finfo.st)o(_m)o(tim)o(e\))o
-(\);)234 237 y(return)g(\(0\);)195 280 y(})195 367 y(com_delete)e
-(\(arg\))293 411 y(char)i(*arg;)195 455 y({)234 498 y(too_danger)o(ous)
-e(\("delete")o(\);)234 542 y(return)i(\(1\);)195 585
-y(})195 672 y(/*)h(Print)f(out)g(help)g(for)g(ARG,)h(or)f(for)h(all)f
-(of)h(the)g(commands)d(if)j(ARG)f(is)254 716 y(not)g(present.)f(*/)195
-760 y(com_help)g(\(arg\))293 803 y(char)h(*arg;)195 847
-y({)234 890 y(register)f(int)h(i;)234 934 y(int)h(printed)e(=)i(0;)234
-1021 y(for)g(\(i)g(=)g(0;)g(commands)o([i])o(.na)o(me)o(;)e(i++\))273
-1065 y({)313 1108 y(if)i(\(!*arg)e(||)i(\(strcmp)e(\(arg,)g(commands[i)
-o(].n)o(am)o(e\))f(==)j(0\)\))352 1152 y({)391 1196 y(printf)e
-(\("\045s\\t\\t\045s.)o(\\n)o(",)f(commands[i)o(].n)o(am)o(e,)g
-(commands[i)o(].d)o(oc\))o(;)391 1239 y(printed++;)352
-1283 y(})273 1326 y(})234 1413 y(if)j(\(!printed\))273
-1457 y({)313 1501 y(printf)e(\("No)h(commands)f(match)g(`\045s'.)38
-b(Possibil)o(tie)o(s)17 b(are:\\n",)f(arg\);)313 1588
-y(for)i(\(i)h(=)g(0;)g(commands[i)o(].)o(nam)o(e;)d(i++\))352
-1631 y({)391 1675 y(/*)j(Print)f(in)g(six)h(columns.)d(*/)391
-1719 y(if)j(\(printed)d(==)j(6\))430 1762 y({)470 1806
-y(printed)d(=)k(0;)470 1849 y(printf)d(\("\\n"\);)430
-1893 y(})391 1980 y(printf)g(\("\045s\\t",)g(commands[)o(i].)o(nam)o
-(e\))o(;)391 2024 y(printed++;)352 2067 y(})313 2154
-y(if)i(\(printed)o(\))352 2198 y(printf)e(\("\\n"\);)273
-2242 y(})234 2285 y(return)h(\(0\);)195 2329 y(})195
-2416 y(/*)h(Change)e(to)i(the)f(directory)f(ARG.)h(*/)195
-2460 y(com_cd)f(\(arg\))293 2503 y(char)h(*arg;)195 2547
-y({)234 2590 y(if)h(\(chdir)e(\(arg\))h(==)h(-1\))273
-2634 y({)p eop end
-%%Page: 64 68
-TeXDict begin 64 67 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)14
-b(with)g(GNU)h(Readline)842 b(64)313 149 y Fe(perror)17
-b(\(arg\);)313 193 y(return)g(1;)273 237 y(})234 324
-y(com_pwd)g(\(""\);)234 367 y(return)h(\(0\);)195 411
-y(})195 498 y(/*)h(Print)f(out)g(the)g(current)f(working)g(directory.)f
-(*/)195 542 y(com_pwd)h(\(ignore\))293 585 y(char)h(*ignore;)195
-629 y({)234 672 y(char)g(dir[1024],)e(*s;)234 760 y(s)j(=)h(getcwd)d
-(\(dir,)h(sizeof\(di)o(r\))e(-)j(1\);)234 803 y(if)g(\(s)g(==)g(0\))273
-847 y({)313 890 y(printf)e(\("Error)g(getting)g(pwd:)h(\045s\\n",)f
-(dir\);)313 934 y(return)g(1;)273 978 y(})234 1065 y(printf)h
-(\("Curren)o(t)f(directory)f(is)j(\045s\\n",)e(dir\);)234
-1108 y(return)h(0;)195 1152 y(})195 1239 y(/*)h(The)f(user)g(wishes)g
-(to)g(quit)h(using)e(this)h(program.)36 b(Just)19 b(set)f(DONE)g
-(non-zero.)e(*/)195 1283 y(com_quit)h(\(arg\))293 1326
-y(char)h(*arg;)195 1370 y({)234 1413 y(done)g(=)i(1;)234
-1457 y(return)e(\(0\);)195 1501 y(})195 1588 y(/*)h(Function)d(which)i
+(and)g(RENAME)254 2416 y(commands.)e(*/)195 2460 y(static)h(char)h
+(syscom[102)o(4];)195 2547 y(/*)h(List)f(the)g(file\(s\))f(named)h(in)h
+(arg.)f(*/)195 2590 y(int)195 2634 y(com_list)f(\(char)g(*arg\))p
+eop end
+%%Page: 69 73
+TeXDict begin 69 72 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)14
+b(with)g(GNU)h(Readline)842 b(69)195 149 y Fe({)234 193
+y(if)19 b(\(!arg\))273 237 y(arg)g(=)g("";)234 324 y(snprintf)e
+(\(syscom,)f(sizeof)i(\(syscom\))o(,)f("ls)h(-FClg)g(\045s",)g(arg\);)
+234 367 y(return)g(\(system)e(\(syscom\)\);)195 411 y(})195
+498 y(int)195 542 y(com_view)h(\(char)g(*arg\))195 585
+y({)234 629 y(if)i(\(!valid_ar)o(gu)o(men)o(t)d(\("view",)h(arg\)\))273
+672 y(return)h(1;)195 760 y(#if)g(defined)f(\(__MSDOS__)o(\))234
+803 y(/*)i(more.com)e(doesn't)f(grok)j(slashes)d(in)j(pathnames)d(*/)
+234 847 y(snprintf)h(\(syscom,)f(sizeof)i(\(syscom\))o(,)f("less)g
+(\045s",)h(arg\);)195 890 y(#else)234 934 y(snprintf)f(\(syscom,)f
+(sizeof)i(\(syscom\))o(,)f("more)g(\045s",)h(arg\);)195
+978 y(#endif)234 1021 y(return)g(\(system)e(\(syscom\)\);)195
+1065 y(})195 1152 y(int)195 1196 y(com_rename)g(\(char)h(*arg\))195
+1239 y({)234 1283 y(too_danger)o(ous)f(\("rename")o(\);)234
+1326 y(return)i(\(1\);)195 1370 y(})195 1457 y(int)195
+1501 y(com_stat)f(\(char)g(*arg\))195 1544 y({)234 1588
+y(struct)h(stat)g(finfo;)234 1675 y(if)h(\(!valid_ar)o(gu)o(men)o(t)d
+(\("stat",)h(arg\)\))273 1719 y(return)h(\(1\);)234 1806
+y(if)h(\(stat)f(\(arg,)f(&finfo\))g(==)i(-1\))273 1849
+y({)313 1893 y(perror)e(\(arg\);)313 1936 y(return)g(\(1\);)273
+1980 y(})234 2067 y(printf)h(\("Statis)o(tic)o(s)e(for)j(`\045s':\\n",)
+d(arg\);)234 2154 y(printf)i(\("\045s)g(has)g(\045d)h(link\045s,)e(and)
+h(is)h(\045d)g(byte\045s)e(in)i(length.\\n")o(,)234 2198
+y(arg,)391 2242 y(finfo.st_n)o(li)o(nk,)391 2285 y(\(finfo.st_)o(nl)o
+(ink)d(==)j(1\))g(?)g("")g(:)g("s",)391 2329 y(finfo.st_s)o(iz)o(e,)391
+2372 y(\(finfo.st_)o(si)o(ze)d(==)j(1\))g(?)g("")g(:)g("s"\);)234
+2416 y(printf)f(\("Inode)e(Last)i(Change)g(at:)g(\045s",)g(ctime)g
+(\(&finfo.st)o(_c)o(tim)o(e\))o(\);)234 2460 y(printf)g(\(")116
+b(Last)18 b(access)g(at:)g(\045s",)g(ctime)g(\(&finfo.st)o(_a)o(tim)o
+(e\))o(\);)234 2503 y(printf)g(\(")77 b(Last)18 b(modified)f(at:)h
+(\045s",)g(ctime)g(\(&finfo.st)o(_m)o(tim)o(e\))o(\);)234
+2547 y(return)g(\(0\);)195 2590 y(})p eop end
+%%Page: 70 74
+TeXDict begin 70 73 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)14
+b(with)g(GNU)h(Readline)842 b(70)195 149 y Fe(int)195
+193 y(com_delete)16 b(\(char)h(*arg\))195 237 y({)234
+280 y(too_danger)o(ous)f(\("delete")o(\);)234 324 y(return)i(\(1\);)195
+367 y(})195 455 y(/*)h(Print)f(out)g(help)g(for)g(ARG,)h(or)f(for)h
+(all)f(of)h(the)g(commands)d(if)j(ARG)f(is)254 498 y(not)g(present.)f
+(*/)195 542 y(int)195 585 y(com_help)g(\(char)g(*arg\))195
+629 y({)234 672 y(register)g(int)h(i;)234 716 y(int)h(printed)e(=)i(0;)
+234 803 y(for)g(\(i)g(=)g(0;)g(commands)o([i])o(.na)o(me)o(;)e(i++\))
+273 847 y({)313 890 y(if)i(\(!*arg)e(||)i(\(strcmp)e(\(arg,)g
+(commands[i)o(].n)o(am)o(e\))f(==)j(0\)\))352 934 y({)391
+978 y(printf)e(\("\045s\\t\\t\045s.)o(\\n)o(",)f(commands[i)o(].n)o(am)
+o(e,)g(commands[i)o(].d)o(oc\))o(;)391 1021 y(printed++;)352
+1065 y(})273 1108 y(})234 1196 y(if)j(\(!printed\))273
+1239 y({)313 1283 y(printf)e(\("No)h(commands)f(match)g(`\045s'.)38
+b(Possibil)o(iti)o(es)16 b(are:\\n",)h(arg\);)313 1370
+y(for)h(\(i)h(=)g(0;)g(commands[i)o(].)o(nam)o(e;)d(i++\))352
+1413 y({)391 1457 y(/*)j(Print)f(in)g(six)h(columns.)d(*/)391
+1501 y(if)j(\(printed)d(==)j(6\))430 1544 y({)470 1588
+y(printed)d(=)k(0;)470 1631 y(printf)d(\("\\n"\);)430
+1675 y(})391 1762 y(printf)g(\("\045s\\t",)g(commands[)o(i].)o(nam)o
+(e\))o(;)391 1806 y(printed++;)352 1849 y(})313 1936
+y(if)i(\(printed)o(\))352 1980 y(printf)e(\("\\n"\);)273
+2024 y(})234 2067 y(return)h(\(0\);)195 2111 y(})195
+2198 y(/*)h(Change)e(to)i(the)f(directory)f(ARG.)h(*/)195
+2242 y(int)195 2285 y(com_cd)f(\(char)h(*arg\))195 2329
+y({)234 2372 y(if)h(\(chdir)e(\(arg\))h(==)h(-1\))273
+2416 y({)313 2460 y(perror)e(\(arg\);)313 2503 y(return)g(1;)273
+2547 y(})234 2634 y(com_pwd)g(\(""\);)p eop end
+%%Page: 71 75
+TeXDict begin 71 74 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)14
+b(with)g(GNU)h(Readline)842 b(71)234 149 y Fe(return)18
+b(\(0\);)195 193 y(})195 280 y(/*)h(Print)f(out)g(the)g(current)f
+(working)g(directory.)f(*/)195 324 y(int)195 367 y(com_pwd)h(\(char)h
+(*ignore\))195 411 y({)234 455 y(char)g(dir[1024],)e(*s;)234
+542 y(s)j(=)h(getcwd)d(\(dir,)h(sizeof\(di)o(r\))e(-)j(1\);)234
+585 y(if)g(\(s)g(==)g(0\))273 629 y({)313 672 y(printf)e(\("Error)g
+(getting)g(pwd:)h(\045s\\n",)f(dir\);)313 716 y(return)g(1;)273
+760 y(})234 847 y(printf)h(\("Curren)o(t)f(directory)f(is)j(\045s\\n",)
+e(dir\);)234 890 y(return)h(0;)195 934 y(})195 1021 y(/*)h(The)f(user)g
+(wishes)g(to)g(quit)h(using)e(this)h(program.)36 b(Just)19
+b(set)f(DONE)g(non-zero.)e(*/)195 1065 y(int)195 1108
+y(com_quit)h(\(char)g(*arg\))195 1152 y({)234 1196 y(done)h(=)i(1;)234
+1239 y(return)e(\(0\);)195 1283 y(})195 1370 y(/*)h(Function)d(which)i
(tells)g(you)g(that)g(you)h(can't)e(do)i(this.)f(*/)195
-1631 y(too_danger)o(ou)o(s)f(\(caller\))293 1675 y(char)h(*caller;)195
-1719 y({)234 1762 y(fprintf)f(\(stderr,)411 1806 y("\045s:)h(Too)g
+1413 y(void)195 1457 y(too_danger)o(ou)o(s)f(\(char)g(*caller\))195
+1501 y({)234 1544 y(fprintf)g(\(stderr,)411 1588 y("\045s:)h(Too)g
(dangerous)e(for)j(me)g(to)g(distribu)o(te.)36 b(Write)17
-b(it)i(yourself.\\)o(n")o(,)411 1849 y(caller\);)195
-1893 y(})195 1980 y(/*)g(Return)e(non-zero)g(if)h(ARG)h(is)g(a)g(valid)
-f(argument)e(for)j(CALLER,)e(else)h(print)254 2024 y(an)h(error)e
-(message)g(and)i(return)e(zero.)h(*/)195 2067 y(int)195
-2111 y(valid_argu)o(me)o(nt)e(\(caller,)h(arg\))293 2154
-y(char)h(*caller,)f(*arg;)195 2198 y({)234 2242 y(if)i(\(!arg)f(||)h
-(!*arg\))273 2285 y({)313 2329 y(fprintf)e(\(stderr,)f("\045s:)i
-(Argument)f(required.)o(\\n)o(",)f(caller\);)313 2372
-y(return)h(\(0\);)273 2416 y(})234 2503 y(return)h(\(1\);)195
-2547 y(})p eop end
-%%Page: 65 69
-TeXDict begin 65 68 bop 1830 -58 a Ft(65)75 149 y Fp(App)r(endix)26
+b(it)i(yourself.\\)o(n")o(,)411 1631 y(caller\);)195
+1675 y(})195 1762 y(/*)g(Return)e(non-zero)g(if)h(ARG)h(is)g(a)g(valid)
+f(argument)e(for)j(CALLER,)e(else)h(print)254 1806 y(an)h(error)e
+(message)g(and)i(return)e(zero.)h(*/)195 1849 y(int)195
+1893 y(valid_argu)o(me)o(nt)e(\(char)i(*caller,)e(char)i(*arg\))195
+1936 y({)234 1980 y(if)h(\(!arg)f(||)h(!*arg\))273 2024
+y({)313 2067 y(fprintf)e(\(stderr,)f("\045s:)i(Argument)f(required.)o
+(\\n)o(",)f(caller\);)313 2111 y(return)h(\(0\);)273
+2154 y(})234 2242 y(return)h(\(1\);)195 2285 y(})p eop
+end
+%%Page: 72 76
+TeXDict begin 72 75 bop 1830 -58 a Ft(72)75 149 y Fp(App)r(endix)26
b(A)41 b(GNU)27 b(F)-7 b(ree)26 b(Do)r(cumen)n(tation)j(License)679
251 y Ft(V)l(ersion)15 b(1.3,)f(3)h(No)o(v)o(em)o(b)q(er)g(2008)195
318 y(Cop)o(yrigh)o(t)421 317 y(c)409 318 y Fq(\015)g
603 y(0.)29 b(PREAMBLE)165 670 y(The)19 b(purp)q(ose)g(of)f(this)g
(License)i(is)e(to)g(mak)o(e)g(a)g(man)o(ual,)g(textb)q(o)q(ok,)h(or)f
(other)g(functional)g(and)165 725 y(useful)d(do)q(cumen)o(t)h
-Fj(free)h Ft(in)e(the)g(sense)h(of)f(freedom:)k(to)c(assure)g(ev)o(ery)
+Fk(free)h Ft(in)e(the)g(sense)h(of)f(freedom:)k(to)c(assure)g(ev)o(ery)
o(one)f(the)i(e\013ectiv)o(e)e(freedom)165 780 y(to)h(cop)o(y)h(and)g
(redistribute)f(it,)f(with)h(or)g(without)g(mo)q(difying)g(it,)g
(either)g(commercially)f(or)i(non-)165 834 y(commercially)l(.)25
(are)i(designated,)f(as)165 2670 y(b)q(eing)i(those)f(of)g(In)o(v)m
(arian)o(t)f(Sections,)h(in)h(the)f(notice)g(that)f(sa)o(ys)h(that)g
(the)g(Do)q(cumen)o(t)g(is)g(released)p eop end
-%%Page: 66 70
-TeXDict begin 66 69 bop 75 -58 a Ft(App)q(endix)16 b(A:)f(GNU)g(F)l
-(ree)g(Do)q(cumen)o(tation)g(License)802 b(66)165 149
+%%Page: 73 77
+TeXDict begin 73 76 bop 75 -58 a Ft(App)q(endix)16 b(A:)f(GNU)g(F)l
+(ree)g(Do)q(cumen)o(tation)g(License)802 b(73)165 149
y(under)15 b(this)e(License.)20 b(If)14 b(a)g(section)f(do)q(es)h(not)g
(\014t)f(the)h(ab)q(o)o(v)o(e)g(de\014nition)g(of)f(Secondary)h(then)g
(it)f(is)165 204 y(not)j(allo)o(w)o(ed)e(to)h(b)q(e)i(designated)f(as)f
(and)h(has)f(no)165 2595 y(e\013ect)d(on)g(the)g(meaning)g(of)g(this)g
(License.)100 2670 y(2.)29 b(VERBA)l(TIM)16 b(COPYING)p
eop end
-%%Page: 67 71
-TeXDict begin 67 70 bop 75 -58 a Ft(App)q(endix)16 b(A:)f(GNU)g(F)l
-(ree)g(Do)q(cumen)o(tation)g(License)802 b(67)165 149
+%%Page: 74 78
+TeXDict begin 74 77 bop 75 -58 a Ft(App)q(endix)16 b(A:)f(GNU)g(F)l
+(ree)g(Do)q(cumen)o(tation)g(License)802 b(74)165 149
y(Y)l(ou)19 b(ma)o(y)g(cop)o(y)f(and)i(distribute)e(the)h(Do)q(cumen)o
(t)g(in)g(an)o(y)g(medium,)g(either)g(commercially)e(or)165
204 y(noncommercially)l(,)k(pro)o(vided)g(that)g(this)g(License,)i(the)
(distinct)h(from)f(that)h(of)g(the)255 2670 y(Do)q(cumen)o(t,)h(and)g
(from)f(those)h(of)f(previous)h(v)o(ersions)f(\(whic)o(h)g(should,)h
(if)g(there)g(w)o(ere)f(an)o(y)l(,)p eop end
-%%Page: 68 72
-TeXDict begin 68 71 bop 75 -58 a Ft(App)q(endix)16 b(A:)f(GNU)g(F)l
-(ree)g(Do)q(cumen)o(tation)g(License)802 b(68)255 149
+%%Page: 75 79
+TeXDict begin 75 78 bop 75 -58 a Ft(App)q(endix)16 b(A:)f(GNU)g(F)l
+(ree)g(Do)q(cumen)o(tation)g(License)802 b(75)255 149
y(b)q(e)16 b(listed)f(in)h(the)g(History)e(section)h(of)g(the)h(Do)q
(cumen)o(t\).)21 b(Y)l(ou)16 b(ma)o(y)f(use)h(the)g(same)f(title)f(as)
255 204 y(a)h(previous)g(v)o(ersion)f(if)h(the)g(original)e(publisher)j
f(ma)o(y)h(at)165 2670 y(y)o(our)i(option)f(designate)h(some)g(or)f
(all)g(of)h(these)h(sections)e(as)h(in)o(v)m(arian)o(t.)22
b(T)l(o)15 b(do)i(this,)e(add)h(their)p eop end
-%%Page: 69 73
-TeXDict begin 69 72 bop 75 -58 a Ft(App)q(endix)16 b(A:)f(GNU)g(F)l
-(ree)g(Do)q(cumen)o(tation)g(License)802 b(69)165 149
+%%Page: 76 80
+TeXDict begin 76 79 bop 75 -58 a Ft(App)q(endix)16 b(A:)f(GNU)g(F)l
+(ree)g(Do)q(cumen)o(tation)g(License)802 b(76)165 149
y(titles)16 b(to)h(the)h(list)f(of)g(In)o(v)m(arian)o(t)g(Sections)h
(in)f(the)h(Mo)q(di\014ed)g(V)l(ersion's)f(license)h(notice.)27
b(These)165 204 y(titles)14 b(m)o(ust)h(b)q(e)g(distinct)g(from)f(an)o
2615 y(do)q(cumen)o(t,)g(and)f(follo)o(w)e(this)i(License)h(in)f(all)g
(other)f(resp)q(ects)i(regarding)f(v)o(erbatim)f(cop)o(ying)g(of)165
2670 y(that)f(do)q(cumen)o(t.)p eop end
-%%Page: 70 74
-TeXDict begin 70 73 bop 75 -58 a Ft(App)q(endix)16 b(A:)f(GNU)g(F)l
-(ree)g(Do)q(cumen)o(tation)g(License)802 b(70)100 149
+%%Page: 77 81
+TeXDict begin 77 80 bop 75 -58 a Ft(App)q(endix)16 b(A:)f(GNU)g(F)l
+(ree)g(Do)q(cumen)o(tation)g(License)802 b(77)100 149
y(7.)29 b(A)o(GGREGA)l(TION)15 b(WITH)h(INDEPENDENT)e(W)o(ORKS)165
221 y(A)g(compilation)e(of)i(the)g(Do)q(cumen)o(t)g(or)f(its)h(deriv)m
(ativ)o(es)f(with)g(other)h(separate)f(and)i(indep)q(enden)o(t)165
(of)g(a)g(cop)o(y)g(of)f(some)h(or)f(all)g(of)h(the)165
2670 y(same)i(material)e(do)q(es)j(not)f(giv)o(e)f(y)o(ou)h(an)o(y)g
(righ)o(ts)f(to)g(use)i(it.)p eop end
-%%Page: 71 75
-TeXDict begin 71 74 bop 75 -58 a Ft(App)q(endix)16 b(A:)f(GNU)g(F)l
-(ree)g(Do)q(cumen)o(tation)g(License)802 b(71)77 149
+%%Page: 78 82
+TeXDict begin 78 81 bop 75 -58 a Ft(App)q(endix)16 b(A:)f(GNU)g(F)l
+(ree)g(Do)q(cumen)o(tation)g(License)802 b(78)77 149
y(10.)29 b(FUTURE)15 b(REVISIONS)j(OF)d(THIS)h(LICENSE)165
217 y(The)21 b(F)l(ree)g(Soft)o(w)o(are)e(F)l(oundation)h(ma)o(y)g
(publish)h(new,)h(revised)f(v)o(ersions)f(of)g(the)h(GNU)g(F)l(ree)165
1948 y(CC-BY-SA)d(on)f(the)g(same)g(site)f(at)h(an)o(y)f(time)h(b)q
(efore)g(August)g(1,)g(2009,)e(pro)o(vided)i(the)g(MMC)f(is)165
2002 y(eligible)g(for)h(relicensing.)p eop end
-%%Page: 72 76
-TeXDict begin 72 75 bop 75 -58 a Ft(App)q(endix)16 b(A:)f(GNU)g(F)l
-(ree)g(Do)q(cumen)o(tation)g(License)802 b(72)75 149
+%%Page: 79 83
+TeXDict begin 79 82 bop 75 -58 a Ft(App)q(endix)16 b(A:)f(GNU)g(F)l
+(ree)g(Do)q(cumen)o(tation)g(License)802 b(79)75 149
y Fr(ADDENDUM:)20 b(Ho)n(w)h(to)h(use)g(this)g(License)g(for)g(y)n(our)
h(do)r(cumen)n(ts)75 229 y Ft(T)l(o)17 b(use)h(this)e(License)i(in)g(a)
f(do)q(cumen)o(t)g(y)o(ou)g(ha)o(v)o(e)g(written,)g(include)g(a)g(cop)o
(suc)o(h)g(as)g(the)f(GNU)75 1166 y(General)15 b(Public)g(License,)g
(to)g(p)q(ermit)g(their)f(use)i(in)f(free)g(soft)o(w)o(are.)p
eop end
-%%Page: 73 77
-TeXDict begin 73 76 bop 75 -58 a Ft(Concept)15 b(Index)1466
-b(73)75 50 y Fp(Concept)27 b(Index)73 217 y Fr(A)75 275
+%%Page: 80 84
+TeXDict begin 80 83 bop 75 -58 a Ft(Concept)15 b(Index)1466
+b(80)75 50 y Fp(Concept)27 b(Index)73 217 y Fr(A)75 275
y Fb(application-sp)q(eci\014c)14 b(completion)f(functions)f
-Fa(:)7 b(:)f(:)g(:)g(:)g(:)g(:)18 b Fb(49)73 398 y Fr(C)75
+Fa(:)7 b(:)f(:)g(:)g(:)g(:)g(:)18 b Fb(55)73 398 y Fr(C)75
456 y Fb(command)c(editing)s Fa(:)6 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)k Fb(1)73 580 y Fr(E)75 638 y Fb(editing)j(command)
+g(:)g(:)g(:)g(:)g(:)k Fb(2)73 580 y Fr(E)75 638 y Fb(editing)j(command)
h(lines)c Fa(:)c(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)17 b Fb(1)73
+g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)17 b Fb(2)73
761 y Fr(I)75 819 y Fb(initialization)12 b(\014le,)h(readline)d
Fa(:)d(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)17 b Fb(4)75 863 y(in)o(teraction,)c(readline)6
Fb(1)73 986 y Fr(K)75 1044 y Fb(kill)g(ring)6 b Fa(:)g(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)12 b Fb(2)75 1088 y(killing)g(text)5 b Fa(:)i(:)f(:)g(:)g(:)g(:)g(:)
+(:)12 b Fb(3)75 1088 y(killing)g(text)5 b Fa(:)i(:)f(:)g(:)g(:)g(:)g(:)
g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)12
-b Fb(2)1010 217 y Fr(N)1012 283 y Fb(notation,)i(readline)8
+b Fb(3)1010 217 y Fr(N)1012 283 y Fb(notation,)i(readline)8
b Fa(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)16
-b Fb(1)1010 485 y Fr(R)1012 551 y Fb(readline,)d(function)c
+b Fb(2)1010 485 y Fr(R)1012 551 y Fb(readline,)d(function)c
Fa(:)e(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)16
-b Fb(24)1010 753 y Fr(V)1012 820 y Fb(v)n(ariables,)d(readline)6
+b Fb(27)1010 753 y Fr(V)1012 820 y Fb(v)n(ariables,)d(readline)6
b Fa(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)13
-b Fb(4)1010 1022 y Fr(Y)1012 1088 y Fb(y)o(anking)h(text)9
+b Fb(5)1010 1022 y Fr(Y)1012 1088 y Fb(y)o(anking)h(text)9
b Fa(:)d(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)16 b Fb(2)p eop end
-%%Page: 74 78
-TeXDict begin 74 77 bop 1830 -58 a Ft(74)75 149 y Fp(F)-7
+(:)g(:)16 b Fb(3)p eop end
+%%Page: 81 85
+TeXDict begin 81 84 bop 1830 -58 a Ft(81)75 149 y Fp(F)-7
b(unction)27 b(and)g(V)-7 b(ariable)28 b(Index)p 78 370
-21 3 v 75 432 a Fe(_rl_digit_)o(p)5 b Fa(:)s(:)h(:)g(:)g(:)g(:)g(:)g(:)
+21 3 v 75 430 a Fe(_rl_digit_)o(p)5 b Fa(:)s(:)h(:)g(:)g(:)g(:)g(:)g(:)
g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)12 b Fb(41)75
-477 y Fe(_rl_digit_)o(va)o(lue)c Fa(:)s(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)g
+(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)12 b Fb(46)75
+474 y Fe(_rl_digit_)o(va)o(lue)c Fa(:)s(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)15 b Fb(41)75 521 y Fe(_rl_lowerc)o(as)o(e_p)8
+f(:)g(:)g(:)15 b Fb(46)75 518 y Fe(_rl_lowerc)o(as)o(e_p)8
b Fa(:)s(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)15
-b Fb(41)75 566 y Fe(_rl_to_low)o(er)s Fa(:)s(:)6 b(:)g(:)h(:)f(:)g(:)g
+b Fb(46)75 562 y Fe(_rl_to_low)o(er)s Fa(:)s(:)6 b(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)11 b Fb(41)75 611
+g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)11 b Fb(46)75 607
y Fe(_rl_to_upp)o(er)s Fa(:)s(:)6 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)11 b Fb(41)75 655 y Fe(_rl_upperc)o(as)o(e_p)d
+g(:)g(:)g(:)g(:)g(:)11 b Fb(46)75 650 y Fe(_rl_upperc)o(as)o(e_p)d
Fa(:)s(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)15
-b Fb(41)73 802 y Fr(A)75 864 y Fe(abort)c(\(C-g\))e Fa(:)t(:)d(:)g(:)g
+b Fb(46)73 785 y Fr(A)75 844 y Fe(abort)c(\(C-g\))e Fa(:)t(:)d(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)15
-b Fb(22)75 908 y Fe(accept-lin)o(e)10 b(\(Newline)f(or)j(Return\))7
+b Fb(24)75 889 y Fe(accept-lin)o(e)10 b(\(Newline)f(or)j(Return\))7
b Fa(:)t(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)14
-b Fb(17)73 1055 y Fr(B)75 1117 y Fe(backward-c)o(ha)o(r)c(\(C-b\))d
-Fa(:)t(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)14 b Fb(16)75 1162
-y Fe(backward-d)o(el)o(ete)o(-c)o(har)9 b(\(Rubout\))f
-Fa(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)18
-b Fb(18)75 1207 y Fe(backward-k)o(il)o(l-l)o(in)o(e)10
+b Fb(19)75 933 y(activ)o(e-region-end-color)c Fa(:)c(:)h(:)f(:)g(:)g(:)
+g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
+(:)g(:)g(:)16 b Fb(5)75 976 y(activ)o(e-region-start-color)8
+b Fa(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
+g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)15 b Fb(5)73 1110 y Fr(B)75
+1170 y Fe(backward-c)o(ha)o(r)10 b(\(C-b\))d Fa(:)t(:)f(:)g(:)g(:)g(:)g
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
+g(:)g(:)14 b Fb(18)75 1214 y Fe(backward-d)o(el)o(ete)o(-c)o(har)9
+b(\(Rubout\))f Fa(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g
+(:)18 b Fb(21)75 1258 y Fe(backward-k)o(il)o(l-l)o(in)o(e)10
b(\(C-x)h(Rubout\))t Fa(:)s(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)k Fb(20)75 1251 y Fe(backward-k)o(il)o(l-w)o(or)o(d)g(\(M-DEL\))
+(:)g(:)k Fb(22)75 1302 y Fe(backward-k)o(il)o(l-w)o(or)o(d)g(\(M-DEL\))
d Fa(:)s(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)13 b Fb(20)75 1296 y Fe(backward-w)o(or)o(d)d(\(M-b\))d
+g(:)13 b Fb(22)75 1346 y Fe(backward-w)o(or)o(d)d(\(M-b\))d
Fa(:)t(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)14 b Fb(16)75 1341
+(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)14 b Fb(18)75 1391
y Fe(beginning-)o(of)o(-hi)o(st)o(ory)9 b(\(M-<\))e Fa(:)t(:)f(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)13
-b Fb(17)75 1386 y Fe(beginning-)o(of)o(-li)o(ne)c(\(C-a\))g
+b Fb(19)75 1435 y Fe(beginning-)o(of)o(-li)o(ne)c(\(C-a\))g
Fa(:)d(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)17 b Fb(16)75 1431 y(b)q(ell-st)o(yle)5
+(:)g(:)g(:)g(:)17 b Fb(18)75 1479 y(b)q(ell-st)o(yle)5
b Fa(:)g(:)h(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)11 b Fb(5)75 1475 y(bind-tt)o(y-sp)q(ecial-c)o
+(:)f(:)g(:)g(:)g(:)g(:)11 b Fb(5)75 1523 y(bind-tt)o(y-sp)q(ecial-c)o
(hars)g Fa(:)c(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)17 b Fb(5)75
-1520 y(blink-matc)o(hing-paren)s Fa(:)8 b(:)e(:)g(:)g(:)g(:)g(:)g(:)g
+1567 y(blink-matc)o(hing-paren)s Fa(:)8 b(:)e(:)g(:)g(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)k Fb(5)75 1564 y Fe(bracketed-)o(pa)o(ste)o(-b)o(egi)o(n)g
+g(:)g(:)k Fb(6)75 1611 y Fe(bracketed-)o(pa)o(ste)o(-b)o(egi)o(n)g
(\(\))f Fa(:)c(:)h(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)16 b Fb(19)73 1712 y Fr(C)75 1773
+(:)g(:)g(:)g(:)g(:)16 b Fb(21)73 1745 y Fr(C)75 1805
y Fe(call-last-)o(kb)o(d-m)o(ac)o(ro)9 b(\(C-x)j(e\))d
Fa(:)c(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)15
-b Fb(22)75 1818 y Fe(capitalize)o(-w)o(ord)9 b(\(M-c\))t
+b Fb(24)75 1849 y Fe(capitalize)o(-w)o(ord)9 b(\(M-c\))t
Fa(:)c(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)11 b Fb(19)75 1863 y Fe(character-)o(se)o
+(:)g(:)g(:)g(:)g(:)g(:)g(:)11 b Fb(22)75 1893 y Fe(character-)o(se)o
(arc)o(h)f(\(C-]\))s Fa(:)t(:)c(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)k Fb(22)75
-1908 y Fe(character-)o(se)o(arc)o(h-)o(bac)o(kwa)o(rd)f(\(M-C-]\))d
-Fa(:)t(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)13 b Fb(22)75
-1953 y Fe(clear-scre)o(en)c(\(C-l\))f Fa(:)t(:)f(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)15 b Fb(16)75 1997 y(colored-completion-pre\014x)5
+(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)k Fb(25)75
+1938 y Fe(character-)o(se)o(arc)o(h-)o(bac)o(kwa)o(rd)f(\(M-C-]\))d
+Fa(:)t(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)13 b Fb(25)75
+1982 y Fe(clear-disp)o(la)o(y)d(\(M-C-l\))t Fa(:)t(:)c(:)g(:)g(:)g(:)g
+(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
+11 b Fb(19)75 2026 y Fe(clear-scre)o(en)e(\(C-l\))f Fa(:)t(:)f(:)f(:)g
+(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
+g(:)g(:)g(:)g(:)g(:)15 b Fb(19)75 2070 y(colored-completion-pre\014x)5
b Fa(:)i(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)11 b Fb(5)75 2042 y(colored-stats)d
+g(:)h(:)f(:)g(:)g(:)g(:)g(:)11 b Fb(6)75 2114 y(colored-stats)d
Fa(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)15 b Fb(5)75 2087 y(commen)o(t-b)q(egin)s Fa(:)7
+g(:)15 b Fb(6)75 2159 y(commen)o(t-b)q(egin)s Fa(:)7
b(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)k
-Fb(5)75 2132 y Fe(complete)g(\(TAB\))5 b Fa(:)t(:)h(:)g(:)g(:)g(:)g(:)g
+Fb(6)75 2203 y Fe(complete)g(\(TAB\))5 b Fa(:)t(:)h(:)g(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)11 b Fb(21)75 2177 y(completion-displa)o
+g(:)g(:)g(:)g(:)g(:)h(:)f(:)11 b Fb(23)75 2247 y(completion-displa)o
(y-width)5 b Fa(:)i(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)12 b Fb(5)75 2221
+(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)12 b Fb(6)75 2291
y(completion-ignore-case)e Fa(:)d(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)16
-b Fb(5)75 2266 y(completion-map-case)7 b Fa(:)g(:)g(:)f(:)g(:)g(:)g(:)g
+b Fb(6)75 2335 y(completion-map-case)7 b Fa(:)g(:)g(:)f(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)14 b Fb(5)75 2311 y(completion-pre\014x-displa)o(y-length)7
+g(:)g(:)g(:)14 b Fb(6)75 2379 y(completion-pre\014x-displa)o(y-length)7
b Fa(:)h(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-13 b Fb(5)75 2356 y(completion-query-items)s Fa(:)7 b(:)f(:)g(:)g(:)g
+13 b Fb(6)75 2424 y(completion-query-items)s Fa(:)7 b(:)f(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)i Fb(6)75 2401 y(con)o(v)o(ert-meta)c Fa(:)i(:)f(:)g(:)g(:)
+g(:)g(:)h(:)i Fb(6)75 2468 y(con)o(v)o(ert-meta)c Fa(:)i(:)f(:)g(:)g(:)
g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)11
-b Fb(6)75 2445 y Fe(copy-backw)o(ar)o(d-w)o(or)o(d)f(\(\))t
+b Fb(7)75 2512 y Fe(copy-backw)o(ar)o(d-w)o(or)o(d)f(\(\))t
Fa(:)c(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)11 b Fb(20)75 2490 y Fe(copy-forwa)o(rd)o
+(:)g(:)g(:)g(:)g(:)g(:)g(:)11 b Fb(23)75 2556 y Fe(copy-forwa)o(rd)o
(-wo)o(rd)e(\(\))d Fa(:)f(:)h(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)12
-b Fb(20)75 2534 y Fe(copy-regio)o(n-)o(as-)o(ki)o(ll)d(\(\))s
+b Fb(23)75 2600 y Fe(copy-regio)o(n-)o(as-)o(ki)o(ll)d(\(\))s
Fa(:)d(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)k Fb(20)1010 408 y Fr(D)1012 468
+(:)g(:)g(:)g(:)g(:)g(:)k Fb(23)1010 408 y Fr(D)1012 469
y Fe(delete-char)f(\(C-d\))e Fa(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-17 b Fb(18)1012 512 y Fe(delete-char)o(-o)o(r-l)o(is)o(t)10
+17 b Fb(21)1012 514 y Fe(delete-char)o(-o)o(r-l)o(is)o(t)10
b(\(\))s Fa(:)5 b(:)h(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)k Fb(21)1012 556 y
+(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)k Fb(24)1012 558 y
Fe(delete-hori)o(zo)o(nta)o(l-)o(spa)o(ce)f(\(\))e Fa(:)e(:)h(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)14
-b Fb(20)1012 600 y Fe(digit-argum)o(en)o(t)c(\()p Fc(M-0)p
+b Fb(22)1012 603 y Fe(digit-argum)o(en)o(t)c(\()p Fc(M-0)p
Fe(,)h Fc(M-1)p Fe(,)g(...)h Fc(M--)p Fe(\))7 b Fa(:)t(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)14 b Fb(20)1012 644 y(disable-completion)d
+(:)g(:)g(:)g(:)g(:)14 b Fb(23)1012 647 y(disable-completion)d
Fa(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)17
-b Fb(6)1012 688 y Fe(do-lowercas)o(e-)o(ver)o(si)o(on)9
+b Fb(7)1012 692 y Fe(do-lowercas)o(e-)o(ver)o(si)o(on)9
b(\(M-A,)i(M-B,)h(M-)p Fc(x)p Fe(,)f(...)o(\))6 b Fa(:)g(:)13
-b Fb(22)1012 732 y Fe(downcase-wo)o(rd)c(\(M-l\))e Fa(:)t(:)f(:)g(:)g
+b Fb(24)1012 736 y Fe(downcase-wo)o(rd)c(\(M-l\))e Fa(:)t(:)f(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)14 b Fb(19)1012 776 y Fe(dump-functi)o(on)o(s)c(\(\))e
+f(:)g(:)g(:)g(:)14 b Fb(22)1012 780 y Fe(dump-functi)o(on)o(s)c(\(\))e
Fa(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)17 b Fb(23)1012
-820 y Fe(dump-macros)9 b(\(\))c Fa(:)g(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)h
+(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)17 b Fb(25)1012
+825 y Fe(dump-macros)9 b(\(\))c Fa(:)g(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)12 b Fb(23)1012 863 y Fe(dump-variab)o(le)o(s)e
+g(:)g(:)g(:)g(:)g(:)12 b Fb(26)1012 869 y Fe(dump-variab)o(le)o(s)e
(\(\))e Fa(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)17
-b Fb(23)1010 995 y Fr(E)1012 1054 y Fb(ec)o(ho-con)o(trol-c)o
+b Fb(25)1010 1009 y Fr(E)1012 1070 y Fb(ec)o(ho-con)o(trol-c)o
(haracters)7 b Fa(:)h(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)14
-b Fb(6)1012 1098 y(editing-mo)q(de)5 b Fa(:)i(:)f(:)g(:)g(:)g(:)g(:)g
+b Fb(7)1012 1115 y(editing-mo)q(de)5 b Fa(:)i(:)f(:)g(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)12 b Fb(6)1012
-1142 y Fe(emacs-editi)o(ng)o(-mo)o(de)d(\(C-e\))g Fa(:)t(:)e(:)f(:)g(:)
+g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)12 b Fb(7)1012
+1159 y Fe(emacs-editi)o(ng)o(-mo)o(de)d(\(C-e\))g Fa(:)t(:)e(:)f(:)g(:)
g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)16
-b Fb(23)1012 1186 y(emacs-mo)q(de-string)9 b Fa(:)e(:)f(:)g(:)g(:)h(:)f
+b Fb(26)1012 1204 y(emacs-mo)q(de-string)9 b Fa(:)e(:)f(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)16 b Fb(6)1012 1230 y(enable-brac)o(k)o
-(eted-paste)9 b Fa(:)f(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)16
-b Fb(6)1012 1274 y(enable-k)o(eypad)t Fa(:)8 b(:)e(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)11 b Fb(7)1012
-1318 y Fe(end-kbd-mac)o(ro)e(\(C-x)i(\)\))d Fa(:)d(:)i(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-15 b Fb(22)1012 1362 y Fc(end-of-file)9 b Fe(\(usually)h(C-d\))f
-Fa(:)d(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)19 b Fb(18)1012 1406 y Fe(end-of-hist)o(or)o(y)10
-b(\(M->\))c Fa(:)t(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)13 b Fb(17)1012
-1450 y Fe(end-of-line)c(\(C-e\))e Fa(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)17 b Fb(16)1012 1494 y Fe(exchange-po)o(in)o(t-a)o(nd)o(-ma)o
-(rk)9 b(\(C-x)j(C-x\))c Fa(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)17
-b Fb(22)1012 1538 y(expand-tilde)12 b Fa(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g
+g(:)g(:)g(:)g(:)g(:)g(:)16 b Fb(7)1012 1248 y(enable-activ)o(e-region)e
+(The)d Fa(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)18 b Fb(7)1012 1293
+y(enable-brac)o(k)o(eted-paste)9 b Fa(:)f(:)f(:)f(:)g(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)17 b Fb(7)1010
-1668 y Fr(F)1012 1727 y Fe(forward-bac)o(kw)o(ard)o(-d)o(ele)o(te)o
-(-ch)o(ar)9 b(\(\))g Fa(:)c(:)h(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-16 b Fb(18)1012 1771 y Fe(forward-cha)o(r)10 b(\(C-f\))e
-Fa(:)t(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)15 b Fb(16)1012
-1815 y Fe(forward-sea)o(rc)o(h-h)o(is)o(tor)o(y)10 b(\(C-s\))t
-Fa(:)t(:)c(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)11
-b Fb(17)1012 1859 y Fe(forward-wor)o(d)f(\(M-f\))e Fa(:)t(:)e(:)g(:)g
+16 b Fb(8)1012 1337 y(enable-k)o(eypad)t Fa(:)8 b(:)e(:)g(:)g(:)g(:)g
+(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
+h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)11 b Fb(8)1012
+1381 y(enable-meta-k)o(ey)t Fa(:)c(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
+g(:)g(:)g(:)g(:)g(:)11 b Fb(8)1012 1426 y Fe(end-kbd-mac)o(ro)e(\(C-x)i
+(\)\))d Fa(:)d(:)i(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
+(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)15 b Fb(24)1012 1470
+y Fc(end-of-file)9 b Fe(\(usually)h(C-d\))f Fa(:)d(:)g(:)h(:)f(:)g(:)g
+(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)19
+b Fb(21)1012 1515 y Fe(end-of-hist)o(or)o(y)10 b(\(M->\))c
+Fa(:)t(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
+(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)13 b Fb(19)1012 1559 y
+Fe(end-of-line)c(\(C-e\))e Fa(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
+17 b Fb(18)1012 1604 y Fe(exchange-po)o(in)o(t-a)o(nd)o(-ma)o(rk)9
+b(\(C-x)j(C-x\))c Fa(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)17
+b Fb(25)1012 1648 y Fe(execute-nam)o(ed)o(-co)o(mm)o(and)9
+b(\(M-x\))c Fa(:)t(:)i(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
+(:)g(:)g(:)13 b Fb(26)1012 1692 y(expand-tilde)f Fa(:)6
+b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
+(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
+17 b Fb(8)1010 1832 y Fr(F)1012 1892 y Fe(fetch-histo)o(ry)9
+b(\(\))h Fa(:)c(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)18
+b Fb(20)1012 1937 y(force-meta-pre\014x)6 b Fa(:)i(:)e(:)g(:)g(:)g(:)g
+(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
+g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)13 b Fb(8)1012 1981 y
+Fe(forward-bac)o(kw)o(ard)o(-d)o(ele)o(te)o(-ch)o(ar)c(\(\))g
+Fa(:)c(:)h(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)16 b
+Fb(21)1012 2026 y Fe(forward-cha)o(r)10 b(\(C-f\))e Fa(:)t(:)e(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)h(:)15 b Fb(16)1010 1985 y Fr(H)1012
-2044 y Fb(history-preserv)o(e-p)q(oin)o(t)8 b Fa(:)g(:)e(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)15 b Fb(7)1012 2088 y Fe(history-sea)o(rc)o(h-b)o(ac)o
-(kwa)o(rd)9 b(\(\))e Fa(:)e(:)h(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)14 b Fb(17)1012 2132 y Fe(history-sea)o(rc)o
-(h-f)o(or)o(war)o(d)c(\(\))e Fa(:)d(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)15 b Fb(17)1012 2176
-y(history-size)d Fa(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)g(:)18 b Fb(7)1012 2220 y Fe(history-sub)o(st)o
-(rin)o(g-)o(sea)o(rc)o(h-b)o(ack)o(wa)o(rd)9 b(\(\))i
-Fa(:)6 b(:)g(:)g(:)g(:)g(:)18 b Fb(18)1012 2264 y Fe(history-sub)o(st)o
-(rin)o(g-)o(sea)o(rc)o(h-f)o(orw)o(ar)o(d)10 b(\(\))t
-Fa(:)5 b(:)h(:)g(:)g(:)g(:)g(:)g(:)11 b Fb(17)1012 2308
-y(horizon)o(tal-scroll-mo)q(de)5 b Fa(:)i(:)f(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)12 b Fb(7)1010 2433 y Fr(I)1012 2493 y Fb(input-meta)t
-Fa(:)7 b(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)11 b Fb(7)1012 2537 y Fe(insert-comm)o(en)o(t)f(\(M-#\))
-c Fa(:)t(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)13 b Fb(23)1012 2581
-y Fe(insert-comp)o(le)o(tio)o(ns)c(\(M-*\))g Fa(:)t(:)e(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)16
-b Fb(21)1012 2624 y(isearc)o(h-terminators)t Fa(:)8 b(:)e(:)g(:)g(:)g
+g(:)g(:)g(:)g(:)h(:)15 b Fb(18)1012 2070 y Fe(forward-sea)o(rc)o(h-h)o
+(is)o(tor)o(y)10 b(\(C-s\))t Fa(:)t(:)c(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
+(:)g(:)h(:)f(:)g(:)g(:)11 b Fb(19)1012 2114 y Fe(forward-wor)o(d)f
+(\(M-f\))e Fa(:)t(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
+(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)15
+b Fb(18)1010 2250 y Fr(H)1012 2310 y Fb(history-preserv)o(e-p)q(oin)o
+(t)8 b Fa(:)g(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
+(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)15 b Fb(8)1012
+2355 y Fe(history-sea)o(rc)o(h-b)o(ac)o(kwa)o(rd)9 b(\(\))e
+Fa(:)e(:)h(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
+(:)14 b Fb(19)1012 2399 y Fe(history-sea)o(rc)o(h-f)o(or)o(war)o(d)c
+(\(\))e Fa(:)d(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
+(:)g(:)g(:)g(:)15 b Fb(20)1012 2444 y(history-size)d
+Fa(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
+g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
+(:)g(:)g(:)18 b Fb(9)1012 2488 y Fe(history-sub)o(st)o(rin)o(g-)o(sea)o
+(rc)o(h-b)o(ack)o(wa)o(rd)9 b(\(\))i Fa(:)6 b(:)g(:)g(:)g(:)g(:)18
+b Fb(20)1012 2533 y Fe(history-sub)o(st)o(rin)o(g-)o(sea)o(rc)o(h-f)o
+(orw)o(ar)o(d)10 b(\(\))t Fa(:)5 b(:)h(:)g(:)g(:)g(:)g(:)g(:)11
+b Fb(20)1012 2576 y(horizon)o(tal-scroll-mo)q(de)5 b
+Fa(:)i(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
+(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)12 b Fb(9)p eop
+end
+%%Page: 82 86
+TeXDict begin 82 85 bop 75 -58 a Ft(F)l(unction)15 b(and)g(V)l(ariable)
+g(Index)1187 b(82)73 147 y Fr(I)75 207 y Fb(input-meta)t
+Fa(:)7 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
+g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g
+(:)g(:)g(:)g(:)11 b Fb(9)75 252 y Fe(insert-com)o(me)o(nt)e(\(M-#\))d
+Fa(:)t(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
+(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)12 b Fb(25)75 296 y Fe(insert-com)o(pl)o
+(eti)o(on)o(s)e(\(M-*\))f Fa(:)t(:)d(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
+g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)16 b Fb(23)75 339
+y(isearc)o(h-terminators)t Fa(:)7 b(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)12 b Fb(7)p eop end
-%%Page: 75 79
-TeXDict begin 75 78 bop 75 -58 a Ft(F)l(unction)15 b(and)g(V)l(ariable)
-g(Index)1187 b(75)73 147 y Fr(K)75 212 y Fb(k)o(eymap)7
-b Fa(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)13 b Fb(8)75 258 y Fe(kill-line)c(\(C-k\))s
+g(:)g(:)11 b Fb(9)73 472 y Fr(K)75 532 y Fb(k)o(eymap)c
+Fa(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
+g(:)g(:)g(:)g(:)h(:)f(:)13 b Fb(9)75 576 y Fe(kill-line)c(\(C-k\))s
Fa(:)c(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)k
-Fb(19)75 304 y Fe(kill-regio)o(n)g(\(\))5 b Fa(:)g(:)h(:)g(:)g(:)g(:)g
+Fb(22)75 621 y Fe(kill-regio)o(n)g(\(\))5 b Fa(:)g(:)h(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)11 b Fb(20)75 350 y Fe(kill-whole)o(-l)
+g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)11 b Fb(23)75 665 y Fe(kill-whole)o(-l)
o(ine)e(\(\))f Fa(:)d(:)i(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)15
-b Fb(20)75 393 y Fe(kill-word)9 b(\(M-d\))s Fa(:)c(:)h(:)g(:)g(:)g(:)g
+b Fb(22)75 709 y Fe(kill-word)9 b(\(M-d\))s Fa(:)c(:)h(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)k Fb(20)73 558 y Fr(M)75
-623 y Fb(mark-mo)q(di\014ed-lines)e Fa(:)f(:)f(:)h(:)f(:)g(:)g(:)g(:)g
+g(:)h(:)f(:)g(:)g(:)g(:)g(:)k Fb(22)73 841 y Fr(M)75
+902 y Fb(mark-mo)q(di\014ed-lines)d Fa(:)g(:)f(:)g(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
+g(:)g(:)14 b Fb(10)75 946 y(mark-symlink)o(ed-directories)6
+b Fa(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
+g(:)g(:)g(:)g(:)13 b Fb(10)75 990 y(matc)o(h-hidden-\014les)f
+Fa(:)6 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
+h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)18 b
+Fb(10)75 1035 y Fe(menu-compl)o(et)o(e)10 b(\(\))g Fa(:)c(:)g(:)g(:)g
+(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
+g(:)g(:)g(:)g(:)g(:)h(:)f(:)17 b Fb(24)75 1079 y Fe(menu-compl)o(et)o
+(e-b)o(ac)o(kwa)o(rd)9 b(\(\))f Fa(:)d(:)h(:)h(:)f(:)g(:)g(:)g(:)g(:)g
+(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)14 b Fb(24)75
+1123 y(men)o(u-complete-displa)o(y-pre\014x)t Fa(:)8
+b(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
+(:)11 b Fb(10)75 1167 y(meta-\015ag)g Fa(:)6 b(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)15 b Fb(8)75 669 y(mark-symlink)o(ed-directories)7
-b Fa(:)g(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)14 b Fb(8)75 715 y(matc)o(h-hidden-\014les)t
-Fa(:)7 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)k
-Fb(8)75 761 y Fe(menu-compl)o(et)o(e)g(\(\))g Fa(:)c(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)17 b Fb(21)75 807 y Fe(menu-compl)o(et)o(e-b)o
-(ac)o(kwa)o(rd)9 b(\(\))f Fa(:)d(:)h(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)14 b Fb(21)75 852 y(men)o
-(u-complete-displa)o(y-pre\014x)5 b Fa(:)j(:)e(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)12 b Fb(8)75
-896 y(meta-\015ag)f Fa(:)6 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)17 b Fb(7)73 1065
-y Fr(N)75 1130 y Fe(next-histo)o(ry)9 b(\(C-n\))f Fa(:)t(:)f(:)f(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)15 b Fb(17)75 1176 y Fe(next-scree)o(n-)o(lin)o(e)10
-b(\(\))d Fa(:)e(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)14 b Fb(16)75
-1212 y Fe(non-increm)o(en)o(tal)o(-f)o(orw)o(ard)o(-)113
-1256 y(search-hist)o(or)o(y)c(\(M-n\))t Fa(:)s(:)d(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)k
-Fb(17)75 1299 y Fe(non-increm)o(en)o(tal)o(-r)o(eve)o(rse)o(-)113
-1343 y(search-hist)o(or)o(y)g(\(M-p\))t Fa(:)s(:)d(:)f(:)g(:)g(:)g(:)g
+g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)17
+b Fb(9)73 1304 y Fr(N)75 1364 y Fe(next-histo)o(ry)9
+b(\(C-n\))f Fa(:)t(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)15
+b Fb(19)75 1409 y Fe(next-scree)o(n-)o(lin)o(e)10 b(\(\))d
+Fa(:)e(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
+(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)14 b Fb(18)75 1443
+y Fe(non-increm)o(en)o(tal)o(-f)o(orw)o(ard)o(-)113 1487
+y(search-hist)o(or)o(y)c(\(M-n\))t Fa(:)s(:)d(:)f(:)g(:)g(:)g(:)g(:)g
+(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)k
+Fb(19)75 1531 y Fe(non-increm)o(en)o(tal)o(-r)o(eve)o(rse)o(-)113
+1574 y(search-hist)o(or)o(y)g(\(M-p\))t Fa(:)s(:)d(:)f(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)k
-Fb(17)73 1517 y Fr(O)75 1583 y Fb(output-meta)h Fa(:)6
-b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-16 b Fb(8)75 1626 y Fe(overwrite-)o(mo)o(de)9 b(\(\))g
+Fb(19)73 1717 y Fr(O)75 1777 y Fe(operate-an)o(d-)o(get)o(-n)o(ext)f
+(\(C-o\))e Fa(:)t(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
+(:)g(:)g(:)g(:)13 b Fb(20)75 1821 y(output-meta)c Fa(:)e(:)f(:)g(:)g(:)
+g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g
+(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)15
+b Fb(10)75 1865 y Fe(overwrite-)o(mo)o(de)9 b(\(\))g
Fa(:)d(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)16 b Fb(19)73
-1791 y Fr(P)75 1856 y Fb(page-completions)t Fa(:)7 b(:)f(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)11 b Fb(9)75 1902
-y Fe(possible-c)o(om)o(ple)o(ti)o(ons)e(\(M-?\))e Fa(:)t(:)f(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)13
-b Fb(21)75 1948 y Fe(prefix-met)o(a)d(\(ESC\))d Fa(:)f(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)16 b Fb(22)75 1994 y Fe(previous-h)o(is)o(tor)o(y)
-10 b(\(C-p\))s Fa(:)t(:)c(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)k Fb(17)75 2040
-y Fe(previous-s)o(cr)o(een)o(-l)o(ine)f(\(\))h Fa(:)c(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)17
-b Fb(16)75 2083 y Fe(print-last)o(-k)o(bd-)o(ma)o(cro)9
-b(\(\))h Fa(:)c(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)17 b Fb(22)73 2253 y Fr(Q)75 2316
-y Fe(quoted-ins)o(er)o(t)10 b(\(C-q)h(or)h(C-v\))5 b
-Fa(:)t(:)h(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)h(:)k Fb(18)1010 147 y Fr(R)1012 205 y Fe(re-read-ini)o(t-)o(fil)o
+(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)16 b Fb(22)73
+1998 y Fr(P)75 2058 y Fb(page-completions)s Fa(:)7 b(:)f(:)g(:)h(:)f(:)
+g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)k Fb(10)75 2102 y Fe(possible-c)o(om)o
+(ple)o(ti)o(ons)f(\(M-?\))e Fa(:)t(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)13 b Fb(23)75 2147 y Fe(prefix-met)o(a)d
+(\(ESC\))d Fa(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
+(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)16
+b Fb(24)75 2191 y Fe(previous-h)o(is)o(tor)o(y)10 b(\(C-p\))s
+Fa(:)t(:)c(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
+(:)g(:)g(:)g(:)g(:)g(:)k Fb(19)75 2235 y Fe(previous-s)o(cr)o(een)o(-l)
+o(ine)f(\(\))h Fa(:)c(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h
+(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)17 b Fb(18)75 2279 y Fe(print-last)o(-k)
+o(bd-)o(ma)o(cro)9 b(\(\))h Fa(:)c(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)17 b Fb(24)73
+2417 y Fr(Q)75 2476 y Fe(quoted-ins)o(er)o(t)10 b(\(C-q)h(or)h(C-v\))5
+b Fa(:)t(:)h(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
+g(:)h(:)k Fb(21)1010 147 y Fr(R)1012 205 y Fe(re-read-ini)o(t-)o(fil)o
(e)f(\(C-x)h(C-r\))e Fa(:)t(:)d(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)16 b Fb(22)1012 249 y Fe(readline)9
+(:)g(:)g(:)g(:)g(:)16 b Fb(24)1012 249 y Fe(readline)9
b Fa(:)s(:)d(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)16 b Fb(24)1012 293 y Fe(redraw-curr)o(en)o(t-l)o(in)o
+(:)f(:)g(:)g(:)16 b Fb(27)1012 293 y Fe(redraw-curr)o(en)o(t-l)o(in)o
(e)10 b(\(\))s Fa(:)5 b(:)h(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)k Fb(17)1012 336
+(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)k Fb(19)1012 336
y Fe(reverse-sea)o(rc)o(h-h)o(is)o(tor)o(y)g(\(C-r\))t
Fa(:)t(:)c(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)11
-b Fb(17)1012 380 y(rev)o(ert-all-at-newline)5 b Fa(:)h(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)12 b Fb(9)1012 424 y Fe(revert-line)d(\(M-r\))e
-Fa(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)17 b Fb(22)1012
-467 y Fe(rl_add_defu)o(n)t Fa(:)s(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)11 b Fb(32)1012 511 y Fe(rl_add_funm)o(ap)o
-(_en)o(tr)o(y)t Fa(:)s(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
+b Fb(19)1012 380 y(rev)o(ert-all-at-newline)t Fa(:)6
+b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
+(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)11 b Fb(10)1012
+424 y Fe(revert-line)e(\(M-r\))e Fa(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g
+(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
+g(:)17 b Fb(25)1012 467 y Fe(rl_activate)o(_m)o(ark)6
+b Fa(:)t(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
+g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)15 b
+Fb(47)1012 511 y Fe(rl_add_defu)o(n)t Fa(:)s(:)6 b(:)g(:)g(:)g(:)g(:)g
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
+g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)11 b Fb(36)1012 555
+y Fe(rl_add_funm)o(ap)o(_en)o(tr)o(y)t Fa(:)s(:)6 b(:)g(:)g(:)g(:)g(:)g
+(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
+g(:)11 b Fb(40)1012 598 y Fe(rl_add_undo)t Fa(:)s(:)6
+b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h
+(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)12
+b Fb(41)1012 642 y Fe(rl_alphabet)o(ic)c Fa(:)e(:)g(:)g(:)g(:)g(:)g(:)g
+(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
+g(:)g(:)g(:)g(:)g(:)g(:)h(:)18 b Fb(45)1012 686 y Fe(rl_begin_un)o(do)o
+(_gr)o(ou)o(p)t Fa(:)s(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)11
-b Fb(36)1012 555 y Fe(rl_add_undo)t Fa(:)s(:)6 b(:)h(:)f(:)g(:)g(:)g(:)
+b Fb(41)1012 729 y Fe(rl_bind_key)t Fa(:)s(:)6 b(:)h(:)f(:)g(:)g(:)g(:)
g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)12 b Fb(36)1012
-598 y Fe(rl_alphabet)o(ic)c Fa(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)h(:)18 b Fb(40)1012 642 y Fe(rl_begin_un)o(do)o(_gr)o(ou)o
-(p)t Fa(:)s(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)11 b Fb(36)1012
-686 y Fe(rl_bind_key)t Fa(:)s(:)6 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)h(:)12 b Fb(34)1012 729 y Fe(rl_bind_key)o(_i)o
-(f_u)o(nb)o(oun)o(d)c Fa(:)s(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)16 b Fb(34)1012
-773 y Fe(rl_bind_key)o(_i)o(f_u)o(nb)o(oun)o(d_)o(in_)o(map)7
-b Fa(:)s(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)15
-b Fb(34)1012 817 y Fe(rl_bind_key)o(_i)o(n_m)o(ap)t Fa(:)s(:)6
+(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)12 b Fb(38)1012
+773 y Fe(rl_bind_key)o(_i)o(f_u)o(nb)o(oun)o(d)c Fa(:)s(:)e(:)g(:)g(:)g
+(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)16
+b Fb(38)1012 817 y Fe(rl_bind_key)o(_i)o(f_u)o(nb)o(oun)o(d_)o(in_)o
+(map)7 b Fa(:)s(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)15
+b Fb(38)1012 860 y Fe(rl_bind_key)o(_i)o(n_m)o(ap)t Fa(:)s(:)6
b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)12 b Fb(34)1012 860 y
+(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)12 b Fb(38)1012 904 y
Fe(rl_bind_key)o(se)o(q)7 b Fa(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)17 b Fb(34)1012 904 y Fe(rl_bind_key)o(se)o(q_i)o(f_)o(unb)
+g(:)g(:)g(:)17 b Fb(38)1012 948 y Fe(rl_bind_key)o(se)o(q_i)o(f_)o(unb)
o(ou)o(nd)t Fa(:)s(:)6 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)12 b Fb(35)1012 948 y Fe(rl_bind_key)o(se)o(q_i)o
+g(:)g(:)g(:)g(:)g(:)12 b Fb(39)1012 991 y Fe(rl_bind_key)o(se)o(q_i)o
(f_)o(unb)o(ou)o(nd_)o(in_)o(ma)o(p)t Fa(:)s(:)6 b(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)11 b Fb(35)1012 991 y Fe(rl_bind_key)o(se)o(q_i)o(n_)o
+(:)f(:)g(:)g(:)11 b Fb(39)1012 1035 y Fe(rl_bind_key)o(se)o(q_i)o(n_)o
(map)6 b Fa(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)17 b Fb(34)1012 1035 y
+(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)17 b Fb(38)1012 1079 y
Fe(rl_callback)o(_h)o(and)o(le)o(r_i)o(ns)o(tal)o(l)7
b Fa(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)18
-b Fb(42)1012 1079 y Fe(rl_callback)o(_h)o(and)o(le)o(r_r)o(em)o(ove)r
+b Fb(48)1012 1123 y Fe(rl_callback)o(_h)o(and)o(le)o(r_r)o(em)o(ove)r
Fa(:)t(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)k Fb(43)1012 1123 y Fe(rl_callback)o(_r)o(ead)o(_c)o(har)c
+f(:)k Fb(48)1012 1166 y Fe(rl_callback)o(_r)o(ead)o(_c)o(har)c
Fa(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)17 b Fb(42)1012 1166 y Fe(rl_callback)o(_s)o
+(:)g(:)g(:)g(:)g(:)g(:)17 b Fb(48)1012 1210 y Fe(rl_callback)o(_s)o
(igc)o(le)o(anu)o(p)8 b Fa(:)s(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)16 b Fb(43)1012
-1210 y Fe(rl_check_si)o(gn)o(als)6 b Fa(:)t(:)g(:)g(:)g(:)g(:)g(:)g(:)g
+(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)16 b Fb(48)1012
+1254 y Fe(rl_check_si)o(gn)o(als)6 b Fa(:)t(:)g(:)g(:)g(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)15 b Fb(49)1012 1254 y Fe(rl_cleanup_)o(af)o(ter)o(_s)o
+g(:)g(:)g(:)15 b Fb(54)1012 1297 y Fe(rl_cleanup_)o(af)o(ter)o(_s)o
(ign)o(al)6 b Fa(:)t(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)14 b Fb(48)1012 1297 y Fe(rl_clear_hi)o(st)
+g(:)g(:)h(:)f(:)g(:)g(:)g(:)14 b Fb(54)1012 1341 y Fe(rl_clear_hi)o(st)
o(ory)6 b Fa(:)t(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)15
-b Fb(42)1012 1341 y Fe(rl_clear_me)o(ss)o(age)6 b Fa(:)t(:)g(:)g(:)g(:)
+b Fb(47)1012 1385 y Fe(rl_clear_me)o(ss)o(age)6 b Fa(:)t(:)g(:)g(:)g(:)
g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)15 b Fb(38)1012 1385 y Fe(rl_clear_pe)o(nd)o
+(:)g(:)g(:)g(:)g(:)g(:)g(:)15 b Fb(42)1012 1428 y Fe(rl_clear_pe)o(nd)o
(ing)o(_i)o(npu)o(t)8 b Fa(:)s(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)16 b Fb(39)1012
-1428 y Fe(rl_clear_si)o(gn)o(als)6 b Fa(:)t(:)g(:)g(:)g(:)g(:)g(:)g(:)g
+(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)16 b Fb(44)1012
+1472 y Fe(rl_clear_si)o(gn)o(als)6 b Fa(:)t(:)g(:)g(:)g(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)15 b Fb(49)1012 1472 y Fe(rl_clear_vi)o(si)o(ble)o(_l)o
+g(:)g(:)g(:)15 b Fb(55)1012 1516 y Fe(rl_clear_vi)o(si)o(ble)o(_l)o
(ine)6 b Fa(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)17 b Fb(37)1012 1516 y
-Fe(rl_complete)7 b Fa(:)t(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)16 b Fb(50,)d(51)1012 1559 y Fe(rl_complete)o(_i)o(nte)o(rn)o(al)7
-b Fa(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)18 b Fb(51)1012 1603 y Fe(rl_completi)o(on)
-o(_ma)o(tc)o(hes)6 b Fa(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)17 b Fb(51)1012
-1647 y Fe(rl_completi)o(on)o(_mo)o(de)t Fa(:)s(:)6 b(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)12 b Fb(51)1012 1690 y Fe(rl_copy_key)o(ma)o(p)7
-b Fa(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)17
-b Fb(33)1012 1734 y Fe(rl_copy_tex)o(t)t Fa(:)s(:)6 b(:)g(:)g(:)g(:)g
+(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)17 b Fb(42)1012 1559 y
+Fe(rl_complete)t Fa(:)s(:)6 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)11 b Fb(38)1012
-1778 y Fe(rl_crlf)d Fa(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)18 b Fb(37)1012 1821
-y Fe(rl_delete_t)o(ex)o(t)7 b Fa(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)17 b Fb(38)1012 1865 y Fe(rl_deprep_t)o(er)o(min)o(al)t
+g(:)g(:)g(:)g(:)h(:)12 b Fb(56)1012 1603 y Fe(rl_complete)o(_i)o(nte)o
+(rn)o(al)7 b Fa(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)18 b Fb(56)1012
+1647 y Fe(rl_completi)o(on)o(_ma)o(tc)o(hes)6 b Fa(:)g(:)g(:)g(:)g(:)g
+(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
+17 b Fb(57)1012 1690 y Fe(rl_completi)o(on)o(_mo)o(de)t
+Fa(:)s(:)6 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
+g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)12 b Fb(57)1012
+1734 y Fe(rl_copy_key)o(ma)o(p)7 b Fa(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g
+(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
+f(:)g(:)g(:)g(:)g(:)17 b Fb(36)1012 1778 y Fe(rl_copy_tex)o(t)t
+Fa(:)s(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
+g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)11
+b Fb(43)1012 1821 y Fe(rl_crlf)d Fa(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h
+(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
+g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)18 b
+Fb(42)1012 1865 y Fe(rl_deactiva)o(te)o(_ma)o(rk)t Fa(:)s(:)6
+b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
+(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)12 b Fb(47)1012 1909 y
+Fe(rl_delete_t)o(ex)o(t)7 b Fa(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h
+(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
+g(:)g(:)g(:)17 b Fb(43)1012 1953 y Fe(rl_deprep_t)o(er)o(min)o(al)t
Fa(:)s(:)6 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)12 b Fb(39)1012
-1909 y Fe(rl_ding)c Fa(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
+g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)12 b Fb(44)1012
+1996 y Fe(rl_ding)c Fa(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)18 b Fb(40)1012 1953
+g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)18 b Fb(45)1012 2040
y Fe(rl_discard_)o(ke)o(yma)o(p)6 b Fa(:)s(:)g(:)g(:)g(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)13 b Fb(33)1012 1996 y Fe(rl_display_)o(ma)o(tch)o(_l)o(ist)6
+f(:)g(:)13 b Fb(37)1012 2084 y Fe(rl_display_)o(ma)o(tch)o(_l)o(ist)6
b Fa(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)17 b Fb(41)1012 2040 y Fe(rl_do_undo)6
+g(:)g(:)g(:)g(:)g(:)g(:)17 b Fb(46)1012 2127 y Fe(rl_do_undo)6
b Fa(:)s(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)14 b Fb(37)1012 2084 y Fe(rl_echo_sig)o(na)o(l_c)o(ha)o(r)t
+(:)g(:)14 b Fb(41)1012 2171 y Fe(rl_echo_sig)o(na)o(l_c)o(ha)o(r)t
Fa(:)s(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)11 b Fb(49)1012 2127
+g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)11 b Fb(54)1012 2215
y Fe(rl_empty_ke)o(ym)o(ap)d Fa(:)s(:)e(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)16 b Fb(33)1012 2171 y Fe(rl_end_undo)o(_g)o(rou)o(p)6
+g(:)g(:)16 b Fb(37)1012 2258 y Fe(rl_end_undo)o(_g)o(rou)o(p)6
b Fa(:)s(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)13 b Fb(36)1012
-2215 y Fe(rl_execute_)o(ne)o(xt)8 b Fa(:)s(:)e(:)g(:)g(:)h(:)f(:)g(:)g
+g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)13 b Fb(41)1012
+2302 y Fe(rl_execute_)o(ne)o(xt)8 b Fa(:)s(:)e(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)16 b Fb(39)1012 2258 y Fe(rl_expand_p)o(ro)o(mpt)6
+g(:)g(:)g(:)g(:)16 b Fb(44)1012 2346 y Fe(rl_expand_p)o(ro)o(mpt)6
b Fa(:)t(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)15 b
-Fb(38)1012 2302 y Fe(rl_extend_l)o(in)o(e_b)o(uf)o(fer)6
+Fb(42)1012 2389 y Fe(rl_extend_l)o(in)o(e_b)o(uf)o(fer)6
b Fa(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)17 b Fb(40)1012 2346 y Fe(rl_filename)o(_c)o
+g(:)g(:)g(:)g(:)g(:)g(:)17 b Fb(45)1012 2433 y Fe(rl_filename)o(_c)o
(omp)o(le)o(tio)o(n_)o(fun)o(cti)o(on)t Fa(:)t(:)6 b(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)13 b Fb(51)1012 2389 y Fe(rl_forced_u)o(pd)o(ate)o
+g(:)g(:)g(:)g(:)g(:)13 b Fb(57)1012 2477 y Fe(rl_forced_u)o(pd)o(ate)o
(_d)o(isp)o(la)o(y)6 b Fa(:)s(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)13 b Fb(37)1012 2433
+(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)13 b Fb(41)1012 2520
y Fe(rl_free)8 b Fa(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)18 b Fb(40)1012 2477
+g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)18 b Fb(45)1012 2564
y Fe(rl_free_key)o(ma)o(p)7 b Fa(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)17 b Fb(33)1012 2520 y Fe(rl_free_lin)o(e_)o(sta)o(te)t
-Fa(:)s(:)6 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)12 b Fb(48)1012
-2564 y Fe(rl_free_und)o(o_)o(lis)o(t)6 b Fa(:)s(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)13 b Fb(36)p eop end
-%%Page: 76 80
-TeXDict begin 76 79 bop 75 -58 a Ft(F)l(unction)15 b(and)g(V)l(ariable)
-g(Index)1187 b(76)75 130 y Fe(rl_functio)o(n_)o(dum)o(pe)o(r)5
+(:)g(:)g(:)g(:)17 b Fb(37)p eop end
+%%Page: 83 87
+TeXDict begin 83 86 bop 75 -58 a Ft(F)l(unction)15 b(and)g(V)l(ariable)
+g(Index)1187 b(83)75 130 y Fe(rl_free_li)o(ne)o(_st)o(at)o(e)5
b Fa(:)s(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)k Fb(36)75 174
+g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)k Fb(54)75 174
+y Fe(rl_free_un)o(do)o(_li)o(st)5 b Fa(:)t(:)h(:)g(:)g(:)g(:)g(:)g(:)g
+(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
+g(:)g(:)13 b Fb(41)75 218 y Fe(rl_functio)o(n_)o(dum)o(pe)o(r)5
+b Fa(:)s(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
+g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)k Fb(40)75 263
y Fe(rl_functio)o(n_)o(of_)o(ke)o(yse)o(q)6 b Fa(:)g(:)h(:)f(:)g(:)g(:)
g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)16
-b Fb(35)75 217 y Fe(rl_funmap_)o(na)o(mes)8 b Fa(:)s(:)e(:)g(:)g(:)g(:)
+b Fb(39)75 307 y Fe(rl_functio)o(n_)o(of_)o(ke)o(yse)o(q_l)o(en)s
+Fa(:)t(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
+g(:)g(:)11 b Fb(39)75 351 y Fe(rl_funmap_)o(na)o(mes)d
+Fa(:)s(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
+(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)15
+b Fb(40)75 395 y Fe(rl_generic)o(_b)o(ind)8 b Fa(:)s(:)e(:)g(:)g(:)g(:)
g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)15 b Fb(36)75 261 y Fe(rl_generic)o(_b)o
-(ind)8 b Fa(:)s(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)15
-b Fb(35)75 304 y Fe(rl_get_key)o(ma)o(p)8 b Fa(:)e(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)18 b Fb(33)75 348 y Fe(rl_get_key)o(ma)
-o(p_b)o(y_)o(nam)o(e)6 b Fa(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)16 b Fb(33)75
-392 y Fe(rl_get_key)o(ma)o(p_n)o(am)o(e)5 b Fa(:)s(:)h(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)k Fb(33)75 435 y Fe(rl_get_scr)o(ee)o(n_s)o(iz)o(e)5
-b Fa(:)s(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)k Fb(49)75 479
+(:)g(:)g(:)h(:)f(:)g(:)g(:)15 b Fb(39)75 440 y Fe(rl_get_key)o(ma)o(p)8
+b Fa(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
+g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)18
+b Fb(37)75 484 y Fe(rl_get_key)o(ma)o(p_b)o(y_)o(nam)o(e)6
+b Fa(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
+h(:)f(:)g(:)g(:)g(:)g(:)16 b Fb(37)75 528 y Fe(rl_get_key)o(ma)o(p_n)o
+(am)o(e)5 b Fa(:)s(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
+(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)k
+Fb(37)75 573 y Fe(rl_get_scr)o(ee)o(n_s)o(iz)o(e)5 b
+Fa(:)s(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
+(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)k Fb(55)75 617
y Fe(rl_get_ter)o(mc)o(ap)6 b Fa(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)17 b Fb(42)75 523 y Fe(rl_getc)8 b Fa(:)e(:)g(:)g(:)g(:)
+(:)g(:)g(:)g(:)17 b Fb(47)75 661 y Fe(rl_getc)8 b Fa(:)e(:)g(:)g(:)g(:)
g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)17
-b Fb(39)75 566 y Fe(rl_initial)o(iz)o(e)8 b Fa(:)e(:)g(:)g(:)g(:)g(:)h
+b Fb(44)75 705 y Fe(rl_initial)o(iz)o(e)8 b Fa(:)e(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)18 b Fb(40)75 610 y Fe(rl_insert_)o(co)
+g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)18 b Fb(45)75 750 y Fe(rl_insert_)o(co)
o(mpl)o(et)o(ion)o(s)6 b Fa(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)16 b Fb(51)75
-653 y Fe(rl_insert_)o(te)o(xt)6 b Fa(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)16 b Fb(56)75
+794 y Fe(rl_insert_)o(te)o(xt)6 b Fa(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)17 b Fb(38)75 697 y Fe(rl_invokin)o(g_)o(key)o(se)o
+(:)g(:)g(:)g(:)g(:)17 b Fb(43)75 838 y Fe(rl_invokin)o(g_)o(key)o(se)o
(qs)s Fa(:)s(:)6 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)k Fb(35)75
-741 y Fe(rl_invokin)o(g_)o(key)o(se)o(qs_)o(in_)o(ma)o(p)s
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)k Fb(40)75
+882 y Fe(rl_invokin)o(g_)o(key)o(se)o(qs_)o(in_)o(ma)o(p)s
Fa(:)s(:)c(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)k Fb(35)75 784 y Fe(rl_kill_te)o(xt)s Fa(:)s(:)c(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)11 b Fb(38)75 828
-y Fe(rl_list_fu)o(nm)o(ap_)o(na)o(mes)c Fa(:)f(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)17
-b Fb(36)75 871 y Fe(rl_macro_b)o(in)o(d)8 b Fa(:)e(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)18 b Fb(41)75 915 y Fe(rl_macro_d)o(um)
-o(per)8 b Fa(:)s(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)15
-b Fb(41)75 959 y Fe(rl_make_ba)o(re)o(_ke)o(ym)o(ap)s
-Fa(:)s(:)6 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)k Fb(33)75 1002 y
-Fe(rl_make_ke)o(ym)o(ap)c Fa(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)17 b Fb(33)75 1046 y Fe(rl_message)5 b Fa(:)t(:)h(:)g(:)g(:)
+(:)k Fb(40)75 927 y Fe(rl_keep_ma)o(rk)o(_ac)o(ti)o(ve)s
+Fa(:)s(:)c(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
+(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)k Fb(47)75 971 y Fe(rl_kill_te)o(xt)
+s Fa(:)s(:)c(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
+g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)11
+b Fb(43)75 1015 y Fe(rl_list_fu)o(nm)o(ap_)o(na)o(mes)c
+Fa(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
+(:)g(:)g(:)g(:)g(:)g(:)h(:)17 b Fb(40)75 1059 y Fe(rl_macro_b)o(in)o(d)
+8 b Fa(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
+(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)18
+b Fb(46)75 1104 y Fe(rl_macro_d)o(um)o(per)8 b Fa(:)s(:)e(:)g(:)g(:)g
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
+g(:)g(:)g(:)h(:)f(:)g(:)g(:)15 b Fb(46)75 1148 y Fe(rl_make_ba)o(re)o
+(_ke)o(ym)o(ap)s Fa(:)s(:)6 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
+(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)k
+Fb(36)75 1192 y Fe(rl_make_ke)o(ym)o(ap)c Fa(:)h(:)f(:)g(:)g(:)g(:)g(:)
g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)13
-b Fb(37)75 1090 y Fe(rl_modifyi)o(ng)s Fa(:)s(:)6 b(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)11 b Fb(37)75 1133
-y Fe(rl_named_f)o(un)o(cti)o(on)5 b Fa(:)t(:)h(:)g(:)g(:)g(:)g(:)g(:)g
+(:)g(:)g(:)g(:)g(:)g(:)g(:)17 b Fb(37)75 1236 y Fe(rl_mark_ac)o(ti)o
+(ve_)o(p)7 b Fa(:)s(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g
+(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)14
+b Fb(47)75 1281 y Fe(rl_message)5 b Fa(:)t(:)h(:)g(:)g(:)g(:)g(:)g(:)g
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
+g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)13 b Fb(42)75
+1325 y Fe(rl_modifyi)o(ng)s Fa(:)s(:)6 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
+g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g
+(:)g(:)g(:)g(:)g(:)g(:)g(:)11 b Fb(41)75 1369 y Fe(rl_named_f)o(un)o
+(cti)o(on)5 b Fa(:)t(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
+g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)13
+b Fb(39)75 1413 y Fe(rl_on_new_)o(li)o(ne)6 b Fa(:)h(:)f(:)g(:)g(:)g(:)
+g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
+(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)17 b Fb(42)75 1458 y Fe(rl_on_new_)o(li)
+o(ne_)o(wi)o(th_)o(pro)o(mp)o(t)s Fa(:)s(:)6 b(:)g(:)g(:)g(:)g(:)h(:)f
+(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)k Fb(42)75 1502
+y Fe(rl_parse_a)o(nd)o(_bi)o(nd)5 b Fa(:)t(:)h(:)g(:)g(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)13 b Fb(35)75 1177 y Fe(rl_on_new_)o(li)o(ne)6
-b Fa(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)17
-b Fb(37)75 1220 y Fe(rl_on_new_)o(li)o(ne_)o(wi)o(th_)o(pro)o(mp)o(t)s
-Fa(:)s(:)6 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)k Fb(37)75 1264 y Fe(rl_parse_a)o(nd)o(_bi)o(nd)5
+g(:)g(:)13 b Fb(39)75 1546 y Fe(rl_pending)o(_s)o(ign)o(al)5
b Fa(:)t(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)13 b Fb(35)75
-1308 y Fe(rl_pending)o(_s)o(ign)o(al)5 b Fa(:)t(:)h(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)13 b Fb(48)75 1351 y Fe(rl_possibl)o(e_)o(com)o(pl)o(eti)o
-(ons)6 b Fa(:)s(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)14 b Fb(51)75 1395 y Fe(rl_prep_te)o(rm)o(ina)o
-(l)7 b Fa(:)s(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)14
-b Fb(39)75 1439 y Fe(rl_push_ma)o(cr)o(o_i)o(np)o(ut)s
+f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)13 b Fb(54)75
+1590 y Fe(rl_possibl)o(e_)o(com)o(pl)o(eti)o(ons)6 b
+Fa(:)s(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
+(:)g(:)g(:)g(:)14 b Fb(56)75 1635 y Fe(rl_prep_te)o(rm)o(ina)o(l)7
+b Fa(:)s(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
+g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)14 b
+Fb(44)75 1679 y Fe(rl_print_k)o(ey)o(bin)o(di)o(ng)s
Fa(:)s(:)6 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)k Fb(39)75 1482 y
-Fe(rl_read_in)o(it)o(_fi)o(le)5 b Fa(:)t(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)
+g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)k Fb(40)75 1723 y
+Fe(rl_push_ma)o(cr)o(o_i)o(np)o(ut)s Fa(:)s(:)c(:)g(:)g(:)h(:)f(:)g(:)g
+(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
+k Fb(43)75 1767 y Fe(rl_read_in)o(it)o(_fi)o(le)5 b Fa(:)t(:)h(:)g(:)g
+(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
+g(:)g(:)g(:)g(:)g(:)g(:)13 b Fb(39)75 1812 y Fe(rl_read_ke)o(y)5
+b Fa(:)s(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)13 b Fb(35)75 1526 y Fe(rl_read_ke)o(y)5 b Fa(:)s(:)h(:)g(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)12
-b Fb(39)75 1569 y Fe(rl_redispl)o(ay)s Fa(:)s(:)6 b(:)g(:)h(:)f(:)g(:)g
+(:)12 b Fb(43)75 1856 y Fe(rl_redispl)o(ay)s Fa(:)s(:)6
+b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h
+(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)11
+b Fb(41)75 1900 y Fe(rl_reparse)o(_c)o(olo)o(rs)5 b Fa(:)t(:)h(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)11 b Fb(37)75 1613
-y Fe(rl_replace)o(_l)o(ine)d Fa(:)s(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)15 b Fb(40)75 1657 y Fe(rl_reset_a)o(ft)o(er_)o(si)o(gna)o(l)6
+g(:)g(:)g(:)g(:)g(:)g(:)13 b Fb(47)75 1945 y Fe(rl_replace)o(_l)o(ine)8
+b Fa(:)s(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
+g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)15
+b Fb(43)75 1989 y Fe(rl_reset_a)o(ft)o(er_)o(si)o(gna)o(l)6
b Fa(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)16 b Fb(48)75 1700 y Fe(rl_reset_l)o(in)o(e_s)o
+h(:)f(:)g(:)g(:)g(:)g(:)16 b Fb(54)75 2033 y Fe(rl_reset_l)o(in)o(e_s)o
(ta)o(te)s Fa(:)s(:)6 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)k Fb(37)75
-1744 y Fe(rl_reset_s)o(cr)o(een)o(_s)o(ize)d Fa(:)f(:)g(:)g(:)g(:)g(:)g
+(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)k Fb(42)75
+2077 y Fe(rl_reset_s)o(cr)o(een)o(_s)o(ize)d Fa(:)f(:)g(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-17 b Fb(49)75 1788 y Fe(rl_reset_t)o(er)o(min)o(al)5
+17 b Fb(55)75 2122 y Fe(rl_reset_t)o(er)o(min)o(al)5
b Fa(:)t(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)13 b Fb(40)75
-1831 y Fe(rl_resize_)o(te)o(rmi)o(na)o(l)5 b Fa(:)s(:)h(:)g(:)g(:)g(:)g
+f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)13 b Fb(45)75
+2166 y Fe(rl_resize_)o(te)o(rmi)o(na)o(l)5 b Fa(:)s(:)h(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)k Fb(49)75 1875 y Fe(rl_restore)o(_p)o(rom)o(pt)5
+g(:)g(:)h(:)k Fb(54)75 2210 y Fe(rl_restore)o(_p)o(rom)o(pt)5
b Fa(:)t(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)13 b Fb(38)75
-1918 y Fe(rl_restore)o(_s)o(tat)o(e)7 b Fa(:)s(:)f(:)g(:)g(:)g(:)h(:)f
+f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)13 b Fb(42)75
+2254 y Fe(rl_restore)o(_s)o(tat)o(e)7 b Fa(:)s(:)f(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)g(:)14 b Fb(40)75 1962 y Fe(rl_save_pr)o(om)o(pt)6
+g(:)g(:)g(:)g(:)14 b Fb(45)75 2299 y Fe(rl_save_pr)o(om)o(pt)6
b Fa(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)17
-b Fb(38)75 2006 y Fe(rl_save_st)o(at)o(e)8 b Fa(:)e(:)g(:)g(:)g(:)g(:)h
+b Fb(42)75 2343 y Fe(rl_save_st)o(at)o(e)8 b Fa(:)e(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)18 b Fb(40)75 2049 y
+g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)18 b Fb(45)75 2387 y
Fe(rl_set_key)5 b Fa(:)t(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)13 b Fb(35)75 2093 y Fe(rl_set_key)o(bo)o(ard)o
+(:)f(:)g(:)g(:)g(:)g(:)13 b Fb(39)75 2431 y Fe(rl_set_key)o(bo)o(ard)o
(_i)o(npu)o(t_t)o(im)o(eou)o(t)8 b Fa(:)s(:)e(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)15 b Fb(39)75 2136 y Fe(rl_set_key)o(ma)o(p)8
+(:)g(:)g(:)g(:)g(:)g(:)15 b Fb(44)75 2476 y Fe(rl_set_key)o(ma)o(p)8
b Fa(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)18
-b Fb(33)75 2180 y Fe(rl_set_par)o(en)o(_bl)o(in)o(k_t)o(ime)o(ou)o(t)s
+b Fb(37)75 2520 y Fe(rl_set_key)o(ma)o(p_n)o(am)o(e)5
+b Fa(:)s(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
+g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)k Fb(37)75 2564
+y Fe(rl_set_par)o(en)o(_bl)o(in)o(k_t)o(ime)o(ou)o(t)s
Fa(:)s(:)6 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)k Fb(42)75 2224 y Fe(rl_set_pro)o(mp)o(t)e Fa(:)e(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)18 b Fb(38)75 2267
-y Fe(rl_set_scr)o(ee)o(n_s)o(iz)o(e)5 b Fa(:)s(:)h(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)h(:)k Fb(49)75 2311 y Fe(rl_set_sig)o(na)o(ls)6 b
-Fa(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)17
-b Fb(49)75 2355 y Fe(rl_show_ch)o(ar)s Fa(:)s(:)6 b(:)g(:)h(:)f(:)g(:)g
+g(:)k Fb(47)1012 130 y Fe(rl_set_prom)o(pt)e Fa(:)e(:)g(:)g(:)g(:)g(:)g
+(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
+g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)18 b Fb(43)1012 174 y
+Fe(rl_set_scre)o(en)o(_si)o(ze)t Fa(:)s(:)6 b(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)11 b Fb(37)75 2398
-y Fe(rl_stuff_c)o(ha)o(r)d Fa(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)18 b Fb(39)1012 130 y Fe(rl_tty_set_)o(de)o(fau)o(lt)o
-(_bi)o(nd)o(ing)o(s)7 b Fa(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)18 b Fb(39)1012 174 y Fe(rl_tty_set_)o(ec)o(hoi)o
-(ng)t Fa(:)s(:)6 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)12 b Fb(40)1012
-218 y Fe(rl_tty_unse)o(t_)o(def)o(au)o(lt_)o(bi)o(ndi)o(ngs)7
+g(:)12 b Fb(54)1012 218 y Fe(rl_set_sign)o(al)o(s)7 b
+Fa(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
+(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)17
+b Fb(55)1012 262 y Fe(rl_set_time)o(ou)o(t)7 b Fa(:)f(:)g(:)g(:)g(:)g
+(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
+g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)17 b Fb(44)1012 306 y
+Fe(rl_show_cha)o(r)t Fa(:)s(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
+(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
+h(:)f(:)g(:)g(:)g(:)11 b Fb(42)1012 350 y Fe(rl_stuff_ch)o(ar)d
+Fa(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
+(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)18
+b Fb(44)1012 394 y Fe(rl_timeout_)o(re)o(mai)o(ni)o(ng)7
+b Fa(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
+h(:)f(:)g(:)g(:)g(:)g(:)g(:)18 b Fb(44)1012 438 y Fe(rl_trim_arg)o(_f)o
+(rom)o(_k)o(eys)o(eq)6 b Fa(:)t(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
+(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)14 b Fb(40)1012
+482 y Fe(rl_tty_set_)o(de)o(fau)o(lt)o(_bi)o(nd)o(ing)o(s)7
+b Fa(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)18
+b Fb(45)1012 526 y Fe(rl_tty_set_)o(ec)o(hoi)o(ng)t Fa(:)s(:)6
+b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
+(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)12 b Fb(45)1012 571 y
+Fe(rl_tty_unse)o(t_)o(def)o(au)o(lt_)o(bi)o(ndi)o(ngs)7
b Fa(:)s(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)15
-b Fb(40)1012 261 y Fe(rl_unbind_c)o(om)o(man)o(d_)o(in_)o(ma)o(p)6
+b Fb(45)1012 615 y Fe(rl_unbind_c)o(om)o(man)o(d_)o(in_)o(ma)o(p)6
b Fa(:)s(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)13 b Fb(34)1012 305 y Fe(rl_unbind_f)o(un)o(cti)o(on)o(_in)
+g(:)g(:)g(:)13 b Fb(38)1012 659 y Fe(rl_unbind_f)o(un)o(cti)o(on)o(_in)
o(_m)o(ap)t Fa(:)s(:)6 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)12 b Fb(34)1012 349 y Fe(rl_unbind_k)o(ey)c
+g(:)g(:)g(:)g(:)g(:)12 b Fb(38)1012 703 y Fe(rl_unbind_k)o(ey)c
Fa(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)18
-b Fb(34)1012 393 y Fe(rl_unbind_k)o(ey)o(_in)o(_m)o(ap)7
+b Fb(38)1012 747 y Fe(rl_unbind_k)o(ey)o(_in)o(_m)o(ap)7
b Fa(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)18 b Fb(34)1012 437 y Fe(rl_username)o(_c)o
+h(:)f(:)g(:)g(:)g(:)g(:)g(:)18 b Fb(38)1012 791 y Fe(rl_username)o(_c)o
(omp)o(le)o(tio)o(n_)o(fun)o(cti)o(on)t Fa(:)t(:)6 b(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)13 b Fb(52)1012 480 y Fe(rl_variable)o(_b)o(ind)6
+g(:)g(:)g(:)g(:)g(:)13 b Fb(57)1012 835 y Fe(rl_variable)o(_b)o(ind)6
b Fa(:)t(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)15 b
-Fb(41)1012 524 y Fe(rl_variable)o(_d)o(ump)o(er)t Fa(:)s(:)6
+Fb(46)1012 879 y Fe(rl_variable)o(_d)o(ump)o(er)t Fa(:)s(:)6
b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)12 b Fb(42)1012 568 y
+(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)12 b Fb(47)1012 923 y
Fe(rl_variable)o(_v)o(alu)o(e)6 b Fa(:)s(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)13 b Fb(42)1010 690 y Fr(S)1012 749 y Fe(self-insert)c(\(a,)j
-(b,)g(A,)g(1,)g(!,)g(...)o(\))7 b Fa(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)15 b Fb(19)1012 792 y Fe(set-mark)10
-b(\(C-@\))5 b Fa(:)t(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)12 b Fb(22)1012 836 y(sho)o(w-all-if-am)o(biguous)e
-Fa(:)c(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)17 b Fb(9)1012
-880 y(sho)o(w-all-if-unmo)q(di\014ed)6 b Fa(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)13 b Fb(9)1012 924 y(sho)o(w-mo)q(de-in-prompt)7
-b Fa(:)h(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)14 b Fb(9)1012
-968 y(skip-completed-text)8 b Fa(:)g(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)h(:)15 b Fb(9)1012 1011 y Fe(skip-csi-se)o(qu)o(enc)o(e)10
+(:)g(:)13 b Fb(47)1010 1050 y Fr(S)1012 1109 y Fb(searc)o
+(h-ignore-case)6 b Fa(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g
+(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
+13 b Fb(11)1012 1154 y Fe(self-insert)c(\(a,)j(b,)g(A,)g(1,)g(!,)g(...)
+o(\))7 b Fa(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)15
+b Fb(21)1012 1198 y Fe(set-mark)10 b(\(C-@\))5 b Fa(:)t(:)h(:)g(:)g(:)g
+(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
+g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)12 b Fb(25)1012 1242
+y(sho)o(w-all-if-am)o(biguous)d Fa(:)d(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)16
+b Fb(11)1012 1286 y(sho)o(w-all-if-unmo)q(di\014ed)5
+b Fa(:)h(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
+h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)12 b Fb(11)1012 1330
+y(sho)o(w-mo)q(de-in-prompt)6 b Fa(:)i(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)g
+(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)14
+b Fb(11)1012 1374 y(skip-completed-text)7 b Fa(:)h(:)e(:)g(:)g(:)g(:)g
+(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
+g(:)g(:)g(:)g(:)15 b Fb(11)1012 1418 y Fe(skip-csi-se)o(qu)o(enc)o(e)10
b(\(\))c Fa(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)13 b Fb(23)1012
-1055 y Fe(start-kbd-m)o(ac)o(ro)c(\(C-x)j(\(\))5 b Fa(:)g(:)h(:)g(:)g
+(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)13 b Fb(25)1012
+1461 y Fe(start-kbd-m)o(ac)o(ro)c(\(C-x)j(\(\))5 b Fa(:)g(:)h(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-13 b Fb(21)1010 1177 y Fr(T)1012 1235 y Fe(tab-insert)c(\(M-TAB\))f
+13 b Fb(24)1010 1588 y Fr(T)1012 1648 y Fe(tab-insert)c(\(M-TAB\))f
Fa(:)t(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)15 b Fb(19)1012
-1279 y Fe(tilde-expan)o(d)10 b(\(M-~\))e Fa(:)t(:)e(:)g(:)g(:)g(:)g(:)g
+(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)15 b Fb(21)1012
+1692 y Fe(tilde-expan)o(d)10 b(\(M-~\))e Fa(:)t(:)e(:)g(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)h(:)15 b Fb(22)1012 1323 y Fe(transpose-c)o(ha)o(rs)9
+g(:)h(:)15 b Fb(25)1012 1736 y Fe(transpose-c)o(ha)o(rs)9
b(\(C-t\))t Fa(:)c(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)12 b Fb(19)1012
-1366 y Fe(transpose-w)o(or)o(ds)d(\(M-t\))t Fa(:)c(:)h(:)g(:)g(:)g(:)g
+(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)12 b Fb(21)1012
+1780 y Fe(transpose-w)o(or)o(ds)d(\(M-t\))t Fa(:)c(:)h(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-12 b Fb(19)1010 1493 y Fr(U)1012 1552 y Fe(undo)g(\(C-_)f(or)h(C-x)g
+12 b Fb(21)1010 1912 y Fr(U)1012 1971 y Fe(undo)g(\(C-_)f(or)h(C-x)g
(C-u\))6 b Fa(:)t(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)13 b Fb(22)1012
-1596 y Fe(universal-a)o(rg)o(ume)o(nt)c(\(\))t Fa(:)d(:)g(:)g(:)g(:)g
+(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)13 b Fb(25)1012
+2015 y Fe(universal-a)o(rg)o(ume)o(nt)c(\(\))t Fa(:)d(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)12 b Fb(21)1012 1639 y Fe(unix-filena)o(me)o(-ru)o(bo)o(ut)d(\(\))h
+g(:)12 b Fb(23)1012 2059 y Fe(unix-filena)o(me)o(-ru)o(bo)o(ut)d(\(\))h
Fa(:)c(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)18 b Fb(20)1012 1683 y Fe(unix-line-d)o(is)o(car)o(d)10
+(:)g(:)g(:)g(:)18 b Fb(22)1012 2103 y Fe(unix-line-d)o(is)o(car)o(d)10
b(\(C-u\))e Fa(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)18 b Fb(20)1012 1727 y Fe(unix-word-r)o(ub)o
+(:)g(:)g(:)g(:)g(:)g(:)g(:)18 b Fb(22)1012 2147 y Fe(unix-word-r)o(ub)o
(out)9 b(\(C-w\))s Fa(:)t(:)d(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)k Fb(20)1012
-1771 y Fe(upcase-word)f(\(M-u\))e Fa(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
+(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)k Fb(22)1012
+2191 y Fe(upcase-word)f(\(M-u\))e Fa(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)17 b Fb(19)1010 1897 y Fr(V)1012 1956 y Fb(vi-cmd-mo)q
+(:)g(:)17 b Fb(21)1010 2323 y Fr(V)1012 2382 y Fb(vi-cmd-mo)q
(de-string)11 b Fa(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)17
-b Fb(10)1012 2000 y Fe(vi-editing-)o(mo)o(de)9 b(\(M-C-j\))f
+b Fb(11)1012 2427 y Fe(vi-editing-)o(mo)o(de)9 b(\(M-C-j\))f
Fa(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)18 b Fb(23)1012 2044 y(vi-ins-mo)q(de-string)t
+(:)g(:)g(:)g(:)18 b Fb(26)1012 2471 y(vi-ins-mo)q(de-string)t
Fa(:)7 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)11
-b Fb(10)1012 2087 y(visible-stats)6 b Fa(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
+b Fb(12)1012 2514 y(visible-stats)6 b Fa(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)13 b Fb(10)1010
-2208 y Fr(Y)1012 2267 y Fe(yank)f(\(C-y\))c Fa(:)e(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)17 b
-Fb(20)1012 2311 y Fe(yank-last-a)o(rg)9 b(\(M-.)i(or)h(M-_\))5
-b Fa(:)g(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)12 b Fb(18)1012 2355 y Fe(yank-nth-ar)o(g)e(\(M-C-y\))5
-b Fa(:)t(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)13 b Fb(18)1012 2398
-y Fe(yank-pop)d(\(M-y\))5 b Fa(:)t(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)12 b Fb(20)p eop end
+(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)13 b Fb(12)p
+eop end
+%%Page: 84 88
+TeXDict begin 84 87 bop 75 -58 a Ft(F)l(unction)15 b(and)g(V)l(ariable)
+g(Index)1187 b(84)73 147 y Fr(Y)75 205 y Fe(yank)11 b(\(C-y\))d
+Fa(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
+(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
+g(:)17 b Fb(23)75 248 y Fe(yank-last-)o(ar)o(g)10 b(\(M-.)h(or)h(M-_\))
+5 b Fa(:)t(:)h(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
+(:)g(:)h(:)k Fb(20)75 292 y Fe(yank-nth-a)o(rg)e(\(M-C-y\))d
+Fa(:)s(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
+(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)12 b Fb(20)75 336 y Fe(yank-pop)e
+(\(M-y\))5 b Fa(:)t(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
+(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
+11 b Fb(23)p eop end
%%Trailer
userdict /end-hook known{end-hook}if
--- /dev/null
+This is rlman.info, produced by makeinfo version 7.1 from rlman.texi.
+
+This manual describes the GNU Readline Library (version 8.3, 10 October
+2024), a library which aids in the consistency of user interface across
+discrete programs which provide a command line interface.
+
+ Copyright © 1988-2024 Free Software Foundation, Inc.
+
+ Permission is granted to copy, distribute and/or modify this
+ document under the terms of the GNU Free Documentation License,
+ Version 1.3 or any later version published by the Free Software
+ Foundation; with no Invariant Sections, no Front-Cover Texts, and
+ no Back-Cover Texts. A copy of the license is included in the
+ section entitled "GNU Free Documentation License".
+
+INFO-DIR-SECTION Libraries
+START-INFO-DIR-ENTRY
+* Readline: (readline). The GNU readline library API.
+END-INFO-DIR-ENTRY
+
+\1f
+File: rlman.info, Node: Top, Next: Command Line Editing, Up: (dir)
+
+GNU Readline Library
+********************
+
+This document describes the GNU Readline Library, a utility which aids
+in the consistency of user interface across discrete programs which
+provide a command line interface. The Readline home page is
+<http://www.gnu.org/software/readline/>.
+
+* Menu:
+
+* Command Line Editing:: GNU Readline User's Manual.
+* Programming with GNU Readline:: GNU Readline Programmer's Manual.
+* GNU Free Documentation License:: License for copying this manual.
+* Concept Index:: Index of concepts described in this manual.
+* Function and Variable Index:: Index of externally visible functions
+ and variables.
+
+\1f
+File: rlman.info, Node: Command Line Editing, Next: Programming with GNU Readline, Prev: Top, Up: Top
+
+1 Command Line Editing
+**********************
+
+This chapter describes the basic features of the GNU command line
+editing interface.
+
+* Menu:
+
+* Introduction and Notation:: Notation used in this text.
+* Readline Interaction:: The minimum set of commands for editing a line.
+* Readline Init File:: Customizing Readline from a user's view.
+* Bindable Readline Commands:: A description of most of the Readline commands
+ available for binding
+* Readline vi Mode:: A short description of how to make Readline
+ behave like the vi editor.
+
+\1f
+File: rlman.info, Node: Introduction and Notation, Next: Readline Interaction, Up: Command Line Editing
+
+1.1 Introduction to Line Editing
+================================
+
+The following paragraphs describe the notation used to represent
+keystrokes.
+
+ The text ‘C-k’ is read as 'Control-K' and describes the character
+produced when the <k> key is pressed while the Control key is depressed.
+
+ The text ‘M-k’ is read as 'Meta-K' and describes the character
+produced when the Meta key (if you have one) is depressed, and the <k>
+key is pressed (a “meta character”). The Meta key is labeled <ALT> on
+many keyboards. On keyboards with two keys labeled <ALT> (usually to
+either side of the space bar), the <ALT> on the left side is generally
+set to work as a Meta key. The <ALT> key on the right may also be
+configured to work as a Meta key or may be configured as some other
+modifier, such as a Compose key for typing accented characters.
+
+ On some keyboards, the Meta key modifier produces meta characters
+with the eighth bit (0200) set. You can use the ‘enable-meta-key’
+variable to control whether or not it does this, if the keyboard allows
+it. On many others, the terminal or terminal emulator converts the
+metafied key to a key sequence beginning with <ESC> as described in the
+next paragraph.
+
+ If you do not have a Meta or <ALT> key, or another key working as a
+Meta key, you can generally achieve the latter effect by typing <ESC>
+_first_, and then typing <k>. The <ESC> character is known as the “meta
+prefix”).
+
+ Either process is known as “metafying” the <k> key.
+
+ If your Meta key produces a key sequence with the <ESC> meta prefix,
+you can make ‘M-key’ key bindings you specify (see ‘Key Bindings’ in
+*note Readline Init File Syntax::) do the same thing by setting the
+‘force-meta-prefix’ variable.
+
+ The text ‘M-C-k’ is read as 'Meta-Control-k' and describes the
+character produced by metafying ‘C-k’.
+
+ In addition, several keys have their own names. Specifically, <DEL>,
+<ESC>, <LFD>, <SPC>, <RET>, and <TAB> all stand for themselves when seen
+in this text, or in an init file (*note Readline Init File::). If your
+keyboard lacks a <LFD> key, typing <C-j> will output the appropriate
+character. The <RET> key may be labeled <Return> or <Enter> on some
+keyboards.
+
+\1f
+File: rlman.info, Node: Readline Interaction, Next: Readline Init File, Prev: Introduction and Notation, Up: Command Line Editing
+
+1.2 Readline Interaction
+========================
+
+Often during an interactive session you type in a long line of text,
+only to notice that the first word on the line is misspelled. The
+Readline library gives you a set of commands for manipulating the text
+as you type it in, allowing you to just fix your typo, and not forcing
+you to retype the majority of the line. Using these editing commands,
+you move the cursor to the place that needs correction, and delete or
+insert the text of the corrections. Then, when you are satisfied with
+the line, you simply press <RET>. You do not have to be at the end of
+the line to press <RET>; the entire line is accepted regardless of the
+location of the cursor within the line.
+
+* Menu:
+
+* Readline Bare Essentials:: The least you need to know about Readline.
+* Readline Movement Commands:: Moving about the input line.
+* Readline Killing Commands:: How to delete text, and how to get it back!
+* Readline Arguments:: Giving numeric arguments to commands.
+* Searching:: Searching through previous lines.
+
+\1f
+File: rlman.info, Node: Readline Bare Essentials, Next: Readline Movement Commands, Up: Readline Interaction
+
+1.2.1 Readline Bare Essentials
+------------------------------
+
+In order to enter characters into the line, simply type them. The typed
+character appears where the cursor was, and then the cursor moves one
+space to the right. If you mistype a character, you can use your erase
+character to back up and delete the mistyped character.
+
+ Sometimes you may mistype a character, and not notice the error until
+you have typed several other characters. In that case, you can type
+‘C-b’ to move the cursor to the left, and then correct your mistake.
+Afterwards, you can move the cursor to the right with ‘C-f’.
+
+ When you add text in the middle of a line, you will notice that
+characters to the right of the cursor are 'pushed over' to make room for
+the text that you have inserted. Likewise, when you delete text behind
+the cursor, characters to the right of the cursor are 'pulled back' to
+fill in the blank space created by the removal of the text. These are
+the bare essentials for editing the text of an input line:
+
+‘C-b’
+ Move back one character.
+‘C-f’
+ Move forward one character.
+<DEL> or <Backspace>
+ Delete the character to the left of the cursor.
+‘C-d’
+ Delete the character underneath the cursor.
+Printing characters
+ Insert the character into the line at the cursor.
+‘C-_’ or ‘C-x C-u’
+ Undo the last editing command. You can undo all the way back to an
+ empty line.
+
+Depending on your configuration, the <Backspace> key might be set to
+delete the character to the left of the cursor and the <DEL> key set to
+delete the character underneath the cursor, like ‘C-d’, rather than the
+character to the left of the cursor.
+
+\1f
+File: rlman.info, Node: Readline Movement Commands, Next: Readline Killing Commands, Prev: Readline Bare Essentials, Up: Readline Interaction
+
+1.2.2 Readline Movement Commands
+--------------------------------
+
+The above table describes the most basic keystrokes that you need in
+order to do editing of the input line. For your convenience, many other
+commands are available in addition to ‘C-b’, ‘C-f’, ‘C-d’, and <DEL>.
+Here are some commands for moving more rapidly within the line.
+
+‘C-a’
+ Move to the start of the line.
+‘C-e’
+ Move to the end of the line.
+‘M-f’
+ Move forward a word, where a word is composed of letters and
+ digits.
+‘M-b’
+ Move backward a word.
+‘C-l’
+ Clear the screen, reprinting the current line at the top.
+
+ Notice how ‘C-f’ moves forward a character, while ‘M-f’ moves forward
+a word. It is a loose convention that control keystrokes operate on
+characters while meta keystrokes operate on words.
+
+\1f
+File: rlman.info, Node: Readline Killing Commands, Next: Readline Arguments, Prev: Readline Movement Commands, Up: Readline Interaction
+
+1.2.3 Readline Killing Commands
+-------------------------------
+
+“Killing” text means to delete the text from the line, but to save it
+away for later use, usually by “yanking” (re-inserting) it back into the
+line. ('Cut' and 'paste' are more recent jargon for 'kill' and 'yank'.)
+
+ If the description for a command says that it 'kills' text, then you
+can be sure that you can get the text back in a different (or the same)
+place later.
+
+ When you use a kill command, the text is saved in a “kill-ring”. Any
+number of consecutive kills save all of the killed text together, so
+that when you yank it back, you get it all. The kill ring is not line
+specific; the text that you killed on a previously typed line is
+available to be yanked back later, when you are typing another line.
+
+ Here is the list of commands for killing text.
+
+‘C-k’
+ Kill the text from the current cursor position to the end of the
+ line.
+
+‘M-d’
+ Kill from the cursor to the end of the current word, or, if between
+ words, to the end of the next word. Word boundaries are the same
+ as those used by ‘M-f’.
+
+‘M-<DEL>’
+ Kill from the cursor to the start of the current word, or, if
+ between words, to the start of the previous word. Word boundaries
+ are the same as those used by ‘M-b’.
+
+‘C-w’
+ Kill from the cursor to the previous whitespace. This is different
+ than ‘M-<DEL>’ because the word boundaries differ.
+
+ Here is how to “yank” the text back into the line. Yanking means to
+copy the most-recently-killed text from the kill buffer into the line at
+the current cursor position.
+
+‘C-y’
+ Yank the most recently killed text back into the buffer at the
+ cursor.
+
+‘M-y’
+ Rotate the kill-ring, and yank the new top. You can only do this
+ if the prior command is ‘C-y’ or ‘M-y’.
+
+\1f
+File: rlman.info, Node: Readline Arguments, Next: Searching, Prev: Readline Killing Commands, Up: Readline Interaction
+
+1.2.4 Readline Arguments
+------------------------
+
+You can pass numeric arguments to Readline commands. Sometimes the
+argument acts as a repeat count, other times it is the sign of the
+argument that is significant. If you pass a negative argument to a
+command which normally acts in a forward direction, that command will
+act in a backward direction. For example, to kill text back to the
+start of the line, you might type ‘M-- C-k’.
+
+ The general way to pass numeric arguments to a command is to type
+meta digits before the command. If the first 'digit' typed is a minus
+sign (‘-’), then the sign of the argument will be negative. Once you
+have typed one meta digit to get the argument started, you can type the
+remainder of the digits, and then the command. For example, to give the
+‘C-d’ command an argument of 10, you could type ‘M-1 0 C-d’, which will
+delete the next ten characters on the input line.
+
+\1f
+File: rlman.info, Node: Searching, Prev: Readline Arguments, Up: Readline Interaction
+
+1.2.5 Searching for Commands in the History
+-------------------------------------------
+
+Readline provides commands for searching through the command history for
+lines containing a specified string. There are two search modes:
+“incremental” and “non-incremental”.
+
+ Incremental searches begin before the user has finished typing the
+search string. As each character of the search string is typed,
+Readline displays the next entry from the history matching the string
+typed so far. An incremental search requires only as many characters as
+needed to find the desired history entry. When using emacs editing
+mode, type ‘C-r’ to search backward in the history for a particular
+string. Typing ‘C-s’ searches forward through the history. The
+characters present in the value of the ‘isearch-terminators’ variable
+are used to terminate an incremental search. If that variable has not
+been assigned a value, the <ESC> and ‘C-J’ characters will terminate an
+incremental search. ‘C-g’ will abort an incremental search and restore
+the original line. When the search is terminated, the history entry
+containing the search string becomes the current line.
+
+ To find other matching entries in the history list, type ‘C-r’ or
+‘C-s’ as appropriate. This will search backward or forward in the
+history for the next entry matching the search string typed so far. Any
+other key sequence bound to a Readline command will terminate the search
+and execute that command. For instance, a <RET> will terminate the
+search and accept the line, thereby executing the command from the
+history list. A movement command will terminate the search, make the
+last line found the current line, and begin editing.
+
+ Readline remembers the last incremental search string. If two ‘C-r’s
+are typed without any intervening characters defining a new search
+string, Readline uses any remembered search string.
+
+ Non-incremental searches read the entire search string before
+starting to search for matching history entries. The search string may
+be typed by the user or be part of the contents of the current line.
+
+\1f
+File: rlman.info, Node: Readline Init File, Next: Bindable Readline Commands, Prev: Readline Interaction, Up: Command Line Editing
+
+1.3 Readline Init File
+======================
+
+Although the Readline library comes with a set of Emacs-like keybindings
+installed by default, it is possible to use a different set of
+keybindings. Any user can customize programs that use Readline by
+putting commands in an “inputrc” file, conventionally in their home
+directory. The name of this file is taken from the value of the
+environment variable ‘INPUTRC’. If that variable is unset, the default
+is ‘~/.inputrc’. If that file does not exist or cannot be read,
+readline looks for ‘/etc/inputrc’.
+
+ When a program which uses the Readline library starts up, Readline
+reads the init file and sets any variables and key bindings it contains.
+
+ In addition, the ‘C-x C-r’ command re-reads this init file, thus
+incorporating any changes that you might have made to it.
+
+* Menu:
+
+* Readline Init File Syntax:: Syntax for the commands in the inputrc file.
+* Conditional Init Constructs:: Conditional key bindings in the inputrc file.
+* Sample Init File:: An example inputrc file.
+
+\1f
+File: rlman.info, Node: Readline Init File Syntax, Next: Conditional Init Constructs, Up: Readline Init File
+
+1.3.1 Readline Init File Syntax
+-------------------------------
+
+There are only a few basic constructs allowed in the Readline init file.
+Blank lines are ignored. Lines beginning with a ‘#’ are comments.
+Lines beginning with a ‘$’ indicate conditional constructs (*note
+Conditional Init Constructs::). Other lines denote variable settings
+and key bindings.
+
+Variable Settings
+ You can modify the run-time behavior of Readline by altering the
+ values of variables in Readline using the ‘set’ command within the
+ init file. The syntax is simple:
+
+ set VARIABLE VALUE
+
+ Here, for example, is how to change from the default Emacs-like key
+ binding to use ‘vi’ line editing commands:
+
+ set editing-mode vi
+
+ Variable names and values, where appropriate, are recognized
+ without regard to case. Unrecognized variable names are ignored.
+
+ Boolean variables (those that can be set to on or off) are set to
+ on if the value is null or empty, ON (case-insensitive), or 1. Any
+ other value results in the variable being set to off.
+
+ A great deal of run-time behavior is changeable with the following
+ variables.
+
+ ‘active-region-start-color’
+ A string variable that controls the text color and background
+ when displaying the text in the active region (see the
+ description of ‘enable-active-region’ below). This string
+ must not take up any physical character positions on the
+ display, so it should consist only of terminal escape
+ sequences. It is output to the terminal before displaying the
+ text in the active region. This variable is reset to the
+ default value whenever the terminal type changes. The default
+ value is the string that puts the terminal in standout mode,
+ as obtained from the terminal's terminfo description. A
+ sample value might be ‘\e[01;33m’.
+
+ ‘active-region-end-color’
+ A string variable that "undoes" the effects of
+ ‘active-region-start-color’ and restores "normal" terminal
+ display appearance after displaying text in the active region.
+ This string must not take up any physical character positions
+ on the display, so it should consist only of terminal escape
+ sequences. It is output to the terminal after displaying the
+ text in the active region. This variable is reset to the
+ default value whenever the terminal type changes. The default
+ value is the string that restores the terminal from standout
+ mode, as obtained from the terminal's terminfo description. A
+ sample value might be ‘\e[0m’.
+
+ ‘bell-style’
+ Controls what happens when Readline wants to ring the terminal
+ bell. If set to ‘none’, Readline never rings the bell. If
+ set to ‘visible’, Readline uses a visible bell if one is
+ available. If set to ‘audible’ (the default), Readline
+ attempts to ring the terminal's bell.
+
+ ‘bind-tty-special-chars’
+ If set to ‘on’ (the default), Readline attempts to bind the
+ control characters that are treated specially by the kernel's
+ terminal driver to their Readline equivalents. These override
+ the default Readline bindings described here. Type ‘stty -a’
+ at a Bash prompt to see your current terminal settings,
+ including the special control characters (usually ‘cchars’).
+
+ ‘blink-matching-paren’
+ If set to ‘on’, Readline attempts to briefly move the cursor
+ to an opening parenthesis when a closing parenthesis is
+ inserted. The default is ‘off’.
+
+ ‘colored-completion-prefix’
+ If set to ‘on’, when listing completions, Readline displays
+ the common prefix of the set of possible completions using a
+ different color. The color definitions are taken from the
+ value of the ‘LS_COLORS’ environment variable. If there is a
+ color definition in ‘LS_COLORS’ for the custom suffix
+ ‘readline-colored-completion-prefix’, Readline uses this color
+ for the common prefix instead of its default. The default is
+ ‘off’.
+
+ ‘colored-stats’
+ If set to ‘on’, Readline displays possible completions using
+ different colors to indicate their file type. The color
+ definitions are taken from the value of the ‘LS_COLORS’
+ environment variable. The default is ‘off’.
+
+ ‘comment-begin’
+ The string to insert at the beginning of the line by the
+ ‘insert-comment’ command. The default value is ‘"#"’.
+
+ ‘completion-display-width’
+ The number of screen columns used to display possible matches
+ when performing completion. The value is ignored if it is
+ less than 0 or greater than the terminal screen width. A
+ value of 0 will cause matches to be displayed one per line.
+ The default value is -1.
+
+ ‘completion-ignore-case’
+ If set to ‘on’, Readline performs filename matching and
+ completion in a case-insensitive fashion. The default value
+ is ‘off’.
+
+ ‘completion-map-case’
+ If set to ‘on’, and COMPLETION-IGNORE-CASE is enabled,
+ Readline treats hyphens (‘-’) and underscores (‘_’) as
+ equivalent when performing case-insensitive filename matching
+ and completion. The default value is ‘off’.
+
+ ‘completion-prefix-display-length’
+ The maximum length in characters of the common prefix of a
+ list of possible completions that is displayed without
+ modification. When set to a value greater than zero, readline
+ replaces common prefixes longer than this value with an
+ ellipsis when displaying possible completions.
+
+ ‘completion-query-items’
+ The number of possible completions that determines when the
+ user is asked whether the list of possibilities should be
+ displayed. If the number of possible completions is greater
+ than or equal to this value, Readline will ask whether or not
+ the user wishes to view them; otherwise, Readline simply lists
+ the completions. This variable must be set to an integer
+ value greater than or equal to zero. A zero value means
+ Readline should never ask; negative values are treated as
+ zero. The default limit is ‘100’.
+
+ ‘convert-meta’
+ If set to ‘on’, Readline will convert characters it reads that
+ have the eighth bit set to an ASCII key sequence by clearing
+ the eighth bit and prefixing an <ESC> character, converting
+ them to a meta-prefixed key sequence. The default value is
+ ‘on’, but Readline will set it to ‘off’ if the locale contains
+ characters whose encodings may include bytes with the eighth
+ bit set. This variable is dependent on the ‘LC_CTYPE’ locale
+ category, and may change if the locale changes. This variable
+ also affects key bindings; see the description of
+ ‘force-meta-prefix’ below.
+
+ ‘disable-completion’
+ If set to ‘On’, Readline will inhibit word completion.
+ Completion characters will be inserted into the line as if
+ they had been mapped to ‘self-insert’. The default is ‘off’.
+
+ ‘echo-control-characters’
+ When set to ‘on’, on operating systems that indicate they
+ support it, Readline echoes a character corresponding to a
+ signal generated from the keyboard. The default is ‘on’.
+
+ ‘editing-mode’
+ The ‘editing-mode’ variable controls the default set of key
+ bindings. By default, Readline starts up in emacs editing
+ mode, where the keystrokes are most similar to Emacs. This
+ variable can be set to either ‘emacs’ or ‘vi’.
+
+ ‘emacs-mode-string’
+ If the SHOW-MODE-IN-PROMPT variable is enabled, this string is
+ displayed immediately before the last line of the primary
+ prompt when emacs editing mode is active. The value is
+ expanded like a key binding, so the standard set of meta- and
+ control- prefixes and backslash escape sequences is available.
+ The ‘\1’ and ‘\2’ escapes begin and end sequences of
+ non-printing characters, which can be used to embed a terminal
+ control sequence into the mode string. The default is ‘@’.
+
+ ‘enable-active-region’
+ “point” is the current cursor position, and “mark” refers to a
+ saved cursor position (*note Commands For Moving::). The text
+ between the point and mark is referred to as the “region”.
+ When this variable is set to ‘On’, Readline allows certain
+ commands to designate the region as “active”. When the region
+ is active, Readline highlights the text in the region using
+ the value of the ‘active-region-start-color’, which defaults
+ to the string that enables the terminal's standout mode. The
+ active region shows the text inserted by bracketed-paste and
+ any matching text found by incremental and non-incremental
+ history searches. The default is ‘On’.
+
+ ‘enable-bracketed-paste’
+ When set to ‘On’, Readline configures the terminal to insert
+ each paste into the editing buffer as a single string of
+ characters, instead of treating each character as if it had
+ been read from the keyboard. This is called putting the
+ terminal into “bracketed paste mode”; it prevents Readline
+ from executing any editing commands bound to key sequences
+ appearing in the pasted text. The default is ‘On’.
+
+ ‘enable-keypad’
+ When set to ‘on’, Readline will try to enable the application
+ keypad when it is called. Some systems need this to enable
+ the arrow keys. The default is ‘off’.
+
+ ‘enable-meta-key’
+ When set to ‘on’, Readline will try to enable any meta
+ modifier key the terminal claims to support when it is called.
+ On many terminals, the Meta key is used to send eight-bit
+ characters; this variable checks for the terminal capability
+ that indicates the terminal can enable and disable a mode that
+ sets the eighth bit of a character (0200) if the Meta key is
+ held down when the character is typed (a meta character). The
+ default is ‘on’.
+
+ ‘expand-tilde’
+ If set to ‘on’, Readline attempts tilde expansion when it
+ attempts word completion. The default is ‘off’.
+
+ ‘force-meta-prefix’
+ If set to ‘on’, Readline modifies its behavior when binding
+ key sequences containing ‘\M-’ or ‘Meta-’ (see ‘Key Bindings’
+ in *note Readline Init File Syntax::) by converting a key
+ sequence of the form ‘\M-’C or ‘Meta-’C to the two-character
+ sequence ‘ESC’C (adding the meta prefix). If
+ ‘force-meta-prefix’ is set to ‘off’ (the default), Readline
+ uses the value of the ‘convert-meta’ variable to determine
+ whether to perform this conversion: if ‘convert-meta’ is ‘on’,
+ Readline performs the conversion described above; if it is
+ ‘off’, Readline converts C to a meta character by setting the
+ eighth bit (0200). The default is ‘off’.
+
+ ‘history-preserve-point’
+ If set to ‘on’, the history code attempts to place the point
+ (the current cursor position) at the same location on each
+ history line retrieved with ‘previous-history’ or
+ ‘next-history’. The default is ‘off’.
+
+ ‘history-size’
+ Set the maximum number of history entries saved in the history
+ list. If set to zero, any existing history entries are
+ deleted and no new entries are saved. If set to a value less
+ than zero, the number of history entries is not limited. By
+ default, the number of history entries is not limited. If you
+ try to set HISTORY-SIZE to a non-numeric value, the maximum
+ number of history entries will be set to 500.
+
+ ‘horizontal-scroll-mode’
+ Setting this variable to ‘on’ means that the text of the lines
+ being edited will scroll horizontally on a single screen line
+ when the lines are longer than the width of the screen,
+ instead of wrapping onto a new screen line. This variable is
+ automatically set to ‘on’ for terminals of height 1. By
+ default, this variable is set to ‘off’.
+
+ ‘input-meta’
+ If set to ‘on’, Readline will enable eight-bit input (that is,
+ it will not clear the eighth bit in the characters it reads),
+ regardless of what the terminal claims it can support. The
+ default value is ‘off’, but Readline will set it to ‘on’ if
+ the locale contains characters whose encodings may include
+ bytes with the eighth bit set. This variable is dependent on
+ the ‘LC_CTYPE’ locale category, and its value may change if
+ the locale changes. The name ‘meta-flag’ is a synonym for
+ ‘input-meta’.
+
+ ‘isearch-terminators’
+ The string of characters that should terminate an incremental
+ search without subsequently executing the character as a
+ command (*note Searching::). If this variable has not been
+ given a value, the characters <ESC> and ‘C-J’ will terminate
+ an incremental search.
+
+ ‘keymap’
+ Sets Readline's idea of the current keymap for key binding
+ commands. Built-in ‘keymap’ names are ‘emacs’,
+ ‘emacs-standard’, ‘emacs-meta’, ‘emacs-ctlx’, ‘vi’, ‘vi-move’,
+ ‘vi-command’, and ‘vi-insert’. ‘vi’ is equivalent to
+ ‘vi-command’ (‘vi-move’ is also a synonym); ‘emacs’ is
+ equivalent to ‘emacs-standard’. Applications may add
+ additional names. The default value is ‘emacs’; the value of
+ the ‘editing-mode’ variable also affects the default keymap.
+
+ ‘keyseq-timeout’
+ Specifies the duration Readline will wait for a character when
+ reading an ambiguous key sequence (one that can form a
+ complete key sequence using the input read so far, or can take
+ additional input to complete a longer key sequence). If
+ Readline doesn't receive any input within the timeout, it will
+ use the shorter but complete key sequence. Readline uses this
+ value to determine whether or not input is available on the
+ current input source (‘rl_instream’ by default). The value is
+ specified in milliseconds, so a value of 1000 means that
+ Readline will wait one second for additional input. If this
+ variable is set to a value less than or equal to zero, or to a
+ non-numeric value, Readline will wait until another key is
+ pressed to decide which key sequence to complete. The default
+ value is ‘500’.
+
+ ‘mark-directories’
+ If set to ‘on’, completed directory names have a slash
+ appended. The default is ‘on’.
+
+ ‘mark-modified-lines’
+ When this variable is set to ‘on’, Readline will to display an
+ asterisk (‘*’) at the start of history lines which have been
+ modified. This variable is ‘off’ by default.
+
+ ‘mark-symlinked-directories’
+ If set to ‘on’, completed names which are symbolic links to
+ directories have a slash appended, subject to the value of
+ ‘mark-directories’. The default is ‘off’.
+
+ ‘match-hidden-files’
+ This variable, when set to ‘on’, forces Readline to match
+ files whose names begin with a ‘.’ (hidden files) when
+ performing filename completion. If set to ‘off’, the user
+ must include the leading ‘.’ in the filename to be completed.
+ This variable is ‘on’ by default.
+
+ ‘menu-complete-display-prefix’
+ If set to ‘on’, menu completion displays the common prefix of
+ the list of possible completions (which may be empty) before
+ cycling through the list. The default is ‘off’.
+
+ ‘output-meta’
+ If set to ‘on’, Readline will display characters with the
+ eighth bit set directly rather than as a meta-prefixed escape
+ sequence. The default is ‘off’, but Readline will set it to
+ ‘on’ if the locale contains characters whose encodings may
+ include bytes with the eighth bit set. This variable is
+ dependent on the ‘LC_CTYPE’ locale category, and its value may
+ change if the locale changes.
+
+ ‘page-completions’
+ If set to ‘on’, Readline uses an internal ‘more’-like pager to
+ display a screenful of possible completions at a time. This
+ variable is ‘on’ by default.
+
+ ‘prefer-visible-bell’
+ See ‘bell-style’.
+
+ ‘print-completions-horizontally’
+ If set to ‘on’, Readline will display completions with matches
+ sorted horizontally in alphabetical order, rather than down
+ the screen. The default is ‘off’.
+
+ ‘revert-all-at-newline’
+ If set to ‘on’, Readline will undo all changes to history
+ lines before returning when executing ‘accept-line’. By
+ default, history lines may be modified and retain individual
+ undo lists across calls to ‘readline()’. The default is
+ ‘off’.
+
+ ‘search-ignore-case’
+ If set to ‘on’, Readline performs incremental and
+ non-incremental history list searches in a case-insensitive
+ fashion. The default value is ‘off’.
+
+ ‘show-all-if-ambiguous’
+ This alters the default behavior of the completion functions.
+ If set to ‘on’, words which have more than one possible
+ completion cause the matches to be listed immediately instead
+ of ringing the bell. The default value is ‘off’.
+
+ ‘show-all-if-unmodified’
+ This alters the default behavior of the completion functions
+ in a fashion similar to SHOW-ALL-IF-AMBIGUOUS. If set to
+ ‘on’, words which have more than one possible completion
+ without any possible partial completion (the possible
+ completions don't share a common prefix) cause the matches to
+ be listed immediately instead of ringing the bell. The
+ default value is ‘off’.
+
+ ‘show-mode-in-prompt’
+ If set to ‘on’, add a string to the beginning of the prompt
+ indicating the editing mode: emacs, vi command, or vi
+ insertion. The mode strings are user-settable (e.g.,
+ EMACS-MODE-STRING). The default value is ‘off’.
+
+ ‘skip-completed-text’
+ If set to ‘on’, this alters the default completion behavior
+ when inserting a single match into the line. It's only active
+ when performing completion in the middle of a word. If
+ enabled, readline does not insert characters from the
+ completion that match characters after point in the word being
+ completed, so portions of the word following the cursor are
+ not duplicated. For instance, if this is enabled, attempting
+ completion when the cursor is after the first ‘e’ in
+ ‘Makefile’ will result in ‘Makefile’ rather than
+ ‘Makefilefile’, assuming there is a single possible
+ completion. The default value is ‘off’.
+
+ ‘vi-cmd-mode-string’
+ If the SHOW-MODE-IN-PROMPT variable is enabled, this string is
+ displayed immediately before the last line of the primary
+ prompt when vi editing mode is active and in command mode.
+ The value is expanded like a key binding, so the standard set
+ of meta- and control- prefixes and backslash escape sequences
+ is available. The ‘\1’ and ‘\2’ escapes begin and end
+ sequences of non-printing characters, which can be used to
+ embed a terminal control sequence into the mode string. The
+ default is ‘(cmd)’.
+
+ ‘vi-ins-mode-string’
+ If the SHOW-MODE-IN-PROMPT variable is enabled, this string is
+ displayed immediately before the last line of the primary
+ prompt when vi editing mode is active and in insertion mode.
+ The value is expanded like a key binding, so the standard set
+ of meta- and control- prefixes and backslash escape sequences
+ is available. The ‘\1’ and ‘\2’ escapes begin and end
+ sequences of non-printing characters, which can be used to
+ embed a terminal control sequence into the mode string. The
+ default is ‘(ins)’.
+
+ ‘visible-stats’
+ If set to ‘on’, a character denoting a file's type is appended
+ to the filename when listing possible completions. The
+ default is ‘off’.
+
+Key Bindings
+ The syntax for controlling key bindings in the init file is simple.
+ First you need to find the name of the command that you want to
+ change. The following sections contain tables of the command name,
+ the default keybinding, if any, and a short description of what the
+ command does.
+
+ Once you know the name of the command, simply place on a line in
+ the init file the name of the key you wish to bind the command to,
+ a colon, and then the name of the command. There can be no space
+ between the key name and the colon - that will be interpreted as
+ part of the key name. The name of the key can be expressed in
+ different ways, depending on what you find most comfortable.
+
+ In addition to command names, Readline allows keys to be bound to a
+ string that is inserted when the key is pressed (a MACRO). The
+ difference between a macro and a command is that a macro is
+ enclosed in single or double quotes.
+
+ KEYNAME: FUNCTION-NAME or MACRO
+ KEYNAME is the name of a key spelled out in English. For
+ example:
+ Control-u: universal-argument
+ Meta-Rubout: backward-kill-word
+ Control-o: "> output"
+
+ In the example above, ‘C-u’ is bound to the function
+ ‘universal-argument’, ‘M-DEL’ is bound to the function
+ ‘backward-kill-word’, and ‘C-o’ is bound to run the macro
+ expressed on the right hand side (that is, to insert the text
+ ‘> output’ into the line).
+
+ This key binding syntax recognizes a number of symbolic
+ character names: DEL, ESC, ESCAPE, LFD, NEWLINE, RET, RETURN,
+ RUBOUT, SPACE, SPC, and TAB.
+
+ "KEYSEQ": FUNCTION-NAME or MACRO
+ KEYSEQ differs from KEYNAME above in that strings denoting an
+ entire key sequence can be specified, by placing the key
+ sequence in double quotes. Some GNU Emacs style key escapes
+ can be used, as in the following example, but none of the
+ special character names are recognized.
+
+ "\C-u": universal-argument
+ "\C-x\C-r": re-read-init-file
+ "\e[11~": "Function Key 1"
+
+ In the above example, ‘C-u’ is again bound to the function
+ ‘universal-argument’ (just as it was in the first example),
+ ‘‘C-x’ ‘C-r’’ is bound to the function ‘re-read-init-file’,
+ and ‘<ESC> <[> <1> <1> <~>’ is bound to insert the text
+ ‘Function Key 1’.
+
+ The following GNU Emacs style escape sequences are available when
+ specifying key sequences:
+
+ ‘\C-’
+ A control prefix.
+ ‘\M-’
+ Adding the meta prefix or converting the following character
+ to a meta character, as described above under
+ ‘force-meta-prefix’ (see ‘Variable Settings’ in *note Readline
+ Init File Syntax::).
+ ‘\e’
+ An escape character.
+ ‘\\’
+ Backslash.
+ ‘\"’
+ <">, a double quotation mark.
+ ‘\'’
+ <'>, a single quote or apostrophe.
+
+ In addition to the GNU Emacs style escape sequences, a second set
+ of backslash escapes is available:
+
+ ‘\a’
+ alert (bell)
+ ‘\b’
+ backspace
+ ‘\d’
+ delete
+ ‘\f’
+ form feed
+ ‘\n’
+ newline
+ ‘\r’
+ carriage return
+ ‘\t’
+ horizontal tab
+ ‘\v’
+ vertical tab
+ ‘\NNN’
+ The eight-bit character whose value is the octal value NNN
+ (one to three digits).
+ ‘\xHH’
+ The eight-bit character whose value is the hexadecimal value
+ HH (one or two hex digits).
+
+ When entering the text of a macro, single or double quotes must be
+ used to indicate a macro definition. Unquoted text is assumed to
+ be a function name. Tthe backslash escapes described above are
+ expanded in the macro body. Backslash will quote any other
+ character in the macro text, including ‘"’ and ‘'’. For example,
+ the following binding will make ‘‘C-x’ \’ insert a single ‘\’ into
+ the line:
+ "\C-x\\": "\\"
+
+\1f
+File: rlman.info, Node: Conditional Init Constructs, Next: Sample Init File, Prev: Readline Init File Syntax, Up: Readline Init File
+
+1.3.2 Conditional Init Constructs
+---------------------------------
+
+Readline implements a facility similar in spirit to the conditional
+compilation features of the C preprocessor which allows key bindings and
+variable settings to be performed as the result of tests. There are
+four parser directives available.
+
+‘$if’
+ The ‘$if’ construct allows bindings to be made based on the editing
+ mode, the terminal being used, or the application using Readline.
+ The text of the test, after any comparison operator, extends to the
+ end of the line; unless otherwise noted, no characters are required
+ to isolate it.
+
+ ‘mode’
+ The ‘mode=’ form of the ‘$if’ directive is used to test
+ whether Readline is in ‘emacs’ or ‘vi’ mode. This may be used
+ in conjunction with the ‘set keymap’ command, for instance, to
+ set bindings in the ‘emacs-standard’ and ‘emacs-ctlx’ keymaps
+ only if Readline is starting out in ‘emacs’ mode.
+
+ ‘term’
+ The ‘term=’ form may be used to include terminal-specific key
+ bindings, perhaps to bind the key sequences output by the
+ terminal's function keys. The word on the right side of the
+ ‘=’ is tested against both the full name of the terminal and
+ the portion of the terminal name before the first ‘-’. This
+ allows ‘xterm’ to match both ‘xterm’ and ‘xterm-256color’, for
+ instance.
+
+ ‘version’
+ The ‘version’ test may be used to perform comparisons against
+ specific Readline versions. The ‘version’ expands to the
+ current Readline version. The set of comparison operators
+ includes ‘=’ (and ‘==’), ‘!=’, ‘<=’, ‘>=’, ‘<’, and ‘>’. The
+ version number supplied on the right side of the operator
+ consists of a major version number, an optional decimal point,
+ and an optional minor version (e.g., ‘7.1’). If the minor
+ version is omitted, it defaults to ‘0’. The operator may be
+ separated from the string ‘version’ and from the version
+ number argument by whitespace. The following example sets a
+ variable if the Readline version being used is 7.0 or newer:
+ $if version >= 7.0
+ set show-mode-in-prompt on
+ $endif
+
+ ‘application’
+ The APPLICATION construct is used to include
+ application-specific settings. Each program using the
+ Readline library sets the APPLICATION NAME, and you can test
+ for a particular value. This could be used to bind key
+ sequences to functions useful for a specific program. For
+ instance, the following command adds a key sequence that
+ quotes the current or previous word in Bash:
+ $if Bash
+ # Quote the current or previous word
+ "\C-xq": "\eb\"\ef\""
+ $endif
+
+ ‘variable’
+ The VARIABLE construct provides simple equality tests for
+ Readline variables and values. The permitted comparison
+ operators are ‘=’, ‘==’, and ‘!=’. The variable name must be
+ separated from the comparison operator by whitespace; the
+ operator may be separated from the value on the right hand
+ side by whitespace. String and boolean variables may be
+ tested. Boolean variables must be tested against the values
+ ON and OFF. The following example is equivalent to the
+ ‘mode=emacs’ test described above:
+ $if editing-mode == emacs
+ set show-mode-in-prompt on
+ $endif
+
+‘$else’
+ Commands in this branch of the ‘$if’ directive are executed if the
+ test fails.
+
+‘$endif’
+ This command, as seen in the previous example, terminates an ‘$if’
+ command.
+
+‘$include’
+ This directive takes a single filename as an argument and reads
+ commands and key bindings from that file. For example, the
+ following directive reads from ‘/etc/inputrc’:
+ $include /etc/inputrc
+
+\1f
+File: rlman.info, Node: Sample Init File, Prev: Conditional Init Constructs, Up: Readline Init File
+
+1.3.3 Sample Init File
+----------------------
+
+Here is an example of an INPUTRC file. This illustrates key binding,
+variable assignment, and conditional syntax.
+
+ # This file controls the behaviour of line input editing for
+ # programs that use the GNU Readline library. Existing
+ # programs include FTP, Bash, and GDB.
+ #
+ # You can re-read the inputrc file with C-x C-r.
+ # Lines beginning with '#' are comments.
+ #
+ # First, include any system-wide bindings and variable
+ # assignments from /etc/Inputrc
+ $include /etc/Inputrc
+
+ #
+ # Set various bindings for emacs mode.
+
+ set editing-mode emacs
+
+ $if mode=emacs
+
+ Meta-Control-h: backward-kill-word Text after the function name is ignored
+
+ #
+ # Arrow keys in keypad mode
+ #
+ #"\M-OD": backward-char
+ #"\M-OC": forward-char
+ #"\M-OA": previous-history
+ #"\M-OB": next-history
+ #
+ # Arrow keys in ANSI mode
+ #
+ "\M-[D": backward-char
+ "\M-[C": forward-char
+ "\M-[A": previous-history
+ "\M-[B": next-history
+ #
+ # Arrow keys in 8 bit keypad mode
+ #
+ #"\M-\C-OD": backward-char
+ #"\M-\C-OC": forward-char
+ #"\M-\C-OA": previous-history
+ #"\M-\C-OB": next-history
+ #
+ # Arrow keys in 8 bit ANSI mode
+ #
+ #"\M-\C-[D": backward-char
+ #"\M-\C-[C": forward-char
+ #"\M-\C-[A": previous-history
+ #"\M-\C-[B": next-history
+
+ C-q: quoted-insert
+
+ $endif
+
+ # An old-style binding. This happens to be the default.
+ TAB: complete
+
+ # Macros that are convenient for shell interaction
+ $if Bash
+ # edit the path
+ "\C-xp": "PATH=${PATH}\e\C-e\C-a\ef\C-f"
+ # prepare to type a quoted word --
+ # insert open and close double quotes
+ # and move to just after the open quote
+ "\C-x\"": "\"\"\C-b"
+ # insert a backslash (testing backslash escapes
+ # in sequences and macros)
+ "\C-x\\": "\\"
+ # Quote the current or previous word
+ "\C-xq": "\eb\"\ef\""
+ # Add a binding to refresh the line, which is unbound
+ "\C-xr": redraw-current-line
+ # Edit variable on current line.
+ "\M-\C-v": "\C-a\C-k$\C-y\M-\C-e\C-a\C-y="
+ $endif
+
+ # use a visible bell if one is available
+ set bell-style visible
+
+ # don't strip characters to 7 bits when reading
+ set input-meta on
+
+ # allow iso-latin1 characters to be inserted rather
+ # than converted to prefix-meta sequences
+ set convert-meta off
+
+ # display characters with the eighth bit set directly
+ # rather than as meta-prefixed characters
+ set output-meta on
+
+ # if there are 150 or more possible completions for a word,
+ # ask whether or not the user wants to see all of them
+ set completion-query-items 150
+
+ # For FTP
+ $if Ftp
+ "\C-xg": "get \M-?"
+ "\C-xt": "put \M-?"
+ "\M-.": yank-last-arg
+ $endif
+
+\1f
+File: rlman.info, Node: Bindable Readline Commands, Next: Readline vi Mode, Prev: Readline Init File, Up: Command Line Editing
+
+1.4 Bindable Readline Commands
+==============================
+
+* Menu:
+
+* Commands For Moving:: Moving about the line.
+* Commands For History:: Getting at previous lines.
+* Commands For Text:: Commands for changing text.
+* Commands For Killing:: Commands for killing and yanking.
+* Numeric Arguments:: Specifying numeric arguments, repeat counts.
+* Commands For Completion:: Getting Readline to do the typing for you.
+* Keyboard Macros:: Saving and re-executing typed characters
+* Miscellaneous Commands:: Other miscellaneous commands.
+
+This section describes Readline commands that may be bound to key
+sequences. Command names without an accompanying key sequence are
+unbound by default.
+
+ In the following descriptions, “point” refers to the current cursor
+position, and “mark” refers to a cursor position saved by the ‘set-mark’
+command. The text between the point and mark is referred to as the
+“region”. Readline has the concept of an _active region_: when the
+region is active, Readline redisplay uses the value of the
+‘active-region-start-color’ variable to denote the region. Several
+commands set the region to active; those are noted below.
+
+\1f
+File: rlman.info, Node: Commands For Moving, Next: Commands For History, Up: Bindable Readline Commands
+
+1.4.1 Commands For Moving
+-------------------------
+
+‘beginning-of-line (C-a)’
+ Move to the start of the current line. This may also be bound to
+ the Home key on some keyboards.
+
+‘end-of-line (C-e)’
+ Move to the end of the line. This may also be bound to the End key
+ on some keyboards.
+
+‘forward-char (C-f)’
+ Move forward a character.
+
+‘backward-char (C-b)’
+ Move back a character.
+
+‘forward-word (M-f)’
+ Move forward to the end of the next word. Words are composed of
+ letters and digits.
+
+‘backward-word (M-b)’
+ Move back to the start of the current or previous word. Words are
+ composed of letters and digits.
+
+‘previous-screen-line ()’
+ Attempt to move point to the same physical screen column on the
+ previous physical screen line. This will not have the desired
+ effect if the current Readline line does not take up more than one
+ physical line or if point is not greater than the length of the
+ prompt plus the screen width.
+
+‘next-screen-line ()’
+ Attempt to move point to the same physical screen column on the
+ next physical screen line. This will not have the desired effect
+ if the current Readline line does not take up more than one
+ physical line or if the length of the current Readline line is not
+ greater than the length of the prompt plus the screen width.
+
+‘clear-display (M-C-l)’
+ Clear the screen and, if possible, the terminal's scrollback
+ buffer, then redraw the current line, leaving the current line at
+ the top of the screen.
+
+‘clear-screen (C-l)’
+ Clear the screen, then redraw the current line, leaving the current
+ line at the top of the screen.
+
+‘redraw-current-line ()’
+ Refresh the current line. By default, this is unbound.
+
+\1f
+File: rlman.info, Node: Commands For History, Next: Commands For Text, Prev: Commands For Moving, Up: Bindable Readline Commands
+
+1.4.2 Commands For Manipulating The History
+-------------------------------------------
+
+‘accept-line (Newline or Return)’
+ Accept the line regardless of where the cursor is. If this line is
+ non-empty, you can add it to the history list using
+ ‘add_history()’. If this line is a modified history line, then
+ restore the history line to its original state.
+
+‘previous-history (C-p)’
+ Move 'back' through the history list, fetching the previous
+ command.
+
+‘next-history (C-n)’
+ Move 'forward' through the history list, fetching the next command.
+
+‘beginning-of-history (M-<)’
+ Move to the first line in the history.
+
+‘end-of-history (M->)’
+ Move to the end of the input history, i.e., the line currently
+ being entered.
+
+‘reverse-search-history (C-r)’
+ Search backward starting at the current line and moving 'up'
+ through the history as necessary. This is an incremental search.
+ This command sets the region to the matched text and activates the
+ region.
+
+‘forward-search-history (C-s)’
+ Search forward starting at the current line and moving 'down'
+ through the history as necessary. This is an incremental search.
+ This command sets the region to the matched text and activates the
+ region.
+
+‘non-incremental-reverse-search-history (M-p)’
+ Search backward starting at the current line and moving 'up'
+ through the history as necessary using a non-incremental search for
+ a string supplied by the user. The search string may match
+ anywhere in a history line.
+
+‘non-incremental-forward-search-history (M-n)’
+ Search forward starting at the current line and moving 'down'
+ through the history as necessary using a non-incremental search for
+ a string supplied by the user. The search string may match
+ anywhere in a history line.
+
+‘history-search-backward ()’
+ Search backward through the history for the string of characters
+ between the start of the current line and the point. The search
+ string must match at the beginning of a history line. This is a
+ non-incremental search. By default, this command is unbound, but
+ may be bound to the Page Down key on some keyboards.
+
+‘history-search-forward ()’
+ Search forward through the history for the string of characters
+ between the start of the current line and the point. The search
+ string must match at the beginning of a history line. This is a
+ non-incremental search. By default, this command is unbound, but
+ may be bound to the Page Up key on some keyboards.
+
+‘history-substring-search-backward ()’
+ Search backward through the history for the string of characters
+ between the start of the current line and the point. The search
+ string may match anywhere in a history line. This is a
+ non-incremental search. By default, this command is unbound.
+
+‘history-substring-search-forward ()’
+ Search forward through the history for the string of characters
+ between the start of the current line and the point. The search
+ string may match anywhere in a history line. This is a
+ non-incremental search. By default, this command is unbound.
+
+‘yank-nth-arg (M-C-y)’
+ Insert the first argument to the previous command (usually the
+ second word on the previous line) at point. With an argument N,
+ insert the Nth word from the previous command (the words in the
+ previous command begin with word 0). A negative argument inserts
+ the Nth word from the end of the previous command. Once the
+ argument N is computed, this uses the history expansion facilities
+ to extract the Nth word, as if the ‘!N’ history expansion had been
+ specified.
+
+‘yank-last-arg (M-. or M-_)’
+ Insert last argument to the previous command (the last word of the
+ previous history entry). With a numeric argument, behave exactly
+ like ‘yank-nth-arg’. Successive calls to ‘yank-last-arg’ move back
+ through the history list, inserting the last word (or the word
+ specified by the argument to the first call) of each line in turn.
+ Any numeric argument supplied to these successive calls determines
+ the direction to move through the history. A negative argument
+ switches the direction through the history (back or forward). This
+ uses the history expansion facilities to extract the last word, as
+ if the ‘!$’ history expansion had been specified.
+
+‘operate-and-get-next (C-o)’
+ Accept the current line for return to the calling application as if
+ a newline had been entered, and fetch the next line relative to the
+ current line from the history for editing. A numeric argument, if
+ supplied, specifies the history entry to use instead of the current
+ line.
+
+‘fetch-history ()’
+ With a numeric argument, fetch that entry from the history list and
+ make it the current line. Without an argument, move back to the
+ first entry in the history list.
+
+\1f
+File: rlman.info, Node: Commands For Text, Next: Commands For Killing, Prev: Commands For History, Up: Bindable Readline Commands
+
+1.4.3 Commands For Changing Text
+--------------------------------
+
+‘end-of-file (usually C-d)’
+ The character indicating end-of-file as set, for example, by
+ ‘stty’. If this character is read when there are no characters on
+ the line, and point is at the beginning of the line, Readline
+ interprets it as the end of input and returns EOF.
+
+‘delete-char (C-d)’
+ Delete the character at point. If this function is bound to the
+ same character as the tty EOF character, as ‘C-d’ commonly is, see
+ above for the effects.
+
+‘backward-delete-char (Rubout)’
+ Delete the character behind the cursor. A numeric argument means
+ to kill the characters, saving them on the kill ring, instead of
+ deleting them.
+
+‘forward-backward-delete-char ()’
+ Delete the character under the cursor, unless the cursor is at the
+ end of the line, in which case the character behind the cursor is
+ deleted. By default, this is not bound to a key.
+
+‘quoted-insert (C-q or C-v)’
+ Add the next character typed to the line verbatim. This is how to
+ insert key sequences like ‘C-q’, for example.
+
+‘tab-insert (M-<TAB>)’
+ Insert a tab character.
+
+‘self-insert (a, b, A, 1, !, ...)’
+ Insert the character typed.
+
+‘bracketed-paste-begin ()’
+ This function is intended to be bound to the "bracketed paste"
+ escape sequence sent by some terminals, and such a binding is
+ assigned by default. It allows Readline to insert the pasted text
+ as a single unit without treating each character as if it had been
+ read from the keyboard. The characters are inserted as if each one
+ was bound to ‘self-insert’ instead of executing any editing
+ commands.
+
+ Bracketed paste sets the region (the characters between point and
+ the mark) to the inserted text. It sets the _active region_.
+
+‘transpose-chars (C-t)’
+ Drag the character before the cursor forward over the character at
+ the cursor, moving the cursor forward as well. If the insertion
+ point is at the end of the line, then this transposes the last two
+ characters of the line. Negative arguments have no effect.
+
+‘transpose-words (M-t)’
+ Drag the word before point past the word after point, moving point
+ past that word as well. If the insertion point is at the end of
+ the line, this transposes the last two words on the line.
+
+‘upcase-word (M-u)’
+ Uppercase the current (or following) word. With a negative
+ argument, uppercase the previous word, but do not move the cursor.
+
+‘downcase-word (M-l)’
+ Lowercase the current (or following) word. With a negative
+ argument, lowercase the previous word, but do not move the cursor.
+
+‘capitalize-word (M-c)’
+ Capitalize the current (or following) word. With a negative
+ argument, capitalize the previous word, but do not move the cursor.
+
+‘overwrite-mode ()’
+ Toggle overwrite mode. With an explicit positive numeric argument,
+ switches to overwrite mode. With an explicit non-positive numeric
+ argument, switches to insert mode. This command affects only
+ ‘emacs’ mode; ‘vi’ mode does overwrite differently. Each call to
+ ‘readline()’ starts in insert mode.
+
+ In overwrite mode, characters bound to ‘self-insert’ replace the
+ text at point rather than pushing the text to the right.
+ Characters bound to ‘backward-delete-char’ replace the character
+ before point with a space.
+
+ By default, this command is unbound, but may be bound to the Insert
+ key on some keyboards.
+
+\1f
+File: rlman.info, Node: Commands For Killing, Next: Numeric Arguments, Prev: Commands For Text, Up: Bindable Readline Commands
+
+1.4.4 Killing And Yanking
+-------------------------
+
+‘kill-line (C-k)’
+ Kill the text from point to the end of the current line. With a
+ negative numeric argument, kill backward from the cursor to the
+ beginning of the line.
+
+‘backward-kill-line (C-x Rubout)’
+ Kill backward from the cursor to the beginning of the current line.
+ With a negative numeric argument, kill forward from the cursor to
+ the end of the line.
+
+‘unix-line-discard (C-u)’
+ Kill backward from the cursor to the beginning of the current line.
+
+‘kill-whole-line ()’
+ Kill all characters on the current line, no matter where point is.
+ By default, this is unbound.
+
+‘kill-word (M-d)’
+ Kill from point to the end of the current word, or if between
+ words, to the end of the next word. Word boundaries are the same
+ as ‘forward-word’.
+
+‘backward-kill-word (M-<DEL>)’
+ Kill the word behind point. Word boundaries are the same as
+ ‘backward-word’.
+
+‘unix-word-rubout (C-w)’
+ Kill the word behind point, using white space as a word boundary,
+ saving the killed text on the kill-ring.
+
+‘unix-filename-rubout ()’
+ Kill the word behind point, using white space and the slash
+ character as the word boundaries, saving the killed text on the
+ kill-ring.
+
+‘delete-horizontal-space ()’
+ Delete all spaces and tabs around point. By default, this is
+ unbound.
+
+‘kill-region ()’
+ Kill the text in the current region. By default, this command is
+ unbound.
+
+‘copy-region-as-kill ()’
+ Copy the text in the region to the kill buffer, so it can be yanked
+ right away. By default, this command is unbound.
+
+‘copy-backward-word ()’
+ Copy the word before point to the kill buffer. The word boundaries
+ are the same as ‘backward-word’. By default, this command is
+ unbound.
+
+‘copy-forward-word ()’
+ Copy the word following point to the kill buffer. The word
+ boundaries are the same as ‘forward-word’. By default, this
+ command is unbound.
+
+‘yank (C-y)’
+ Yank the top of the kill ring into the buffer at point.
+
+‘yank-pop (M-y)’
+ Rotate the kill-ring, and yank the new top. You can only do this
+ if the prior command is ‘yank’ or ‘yank-pop’.
+
+\1f
+File: rlman.info, Node: Numeric Arguments, Next: Commands For Completion, Prev: Commands For Killing, Up: Bindable Readline Commands
+
+1.4.5 Specifying Numeric Arguments
+----------------------------------
+
+‘digit-argument (M-0, M-1, ... M--)’
+ Add this digit to the argument already accumulating, or start a new
+ argument. ‘M--’ starts a negative argument.
+
+‘universal-argument ()’
+ This is another way to specify an argument. If this command is
+ followed by one or more digits, optionally with a leading minus
+ sign, those digits define the argument. If the command is followed
+ by digits, executing ‘universal-argument’ again ends the numeric
+ argument, but is otherwise ignored. As a special case, if this
+ command is immediately followed by a character that is neither a
+ digit nor minus sign, the argument count for the next command is
+ multiplied by four. The argument count is initially one, so
+ executing this function the first time makes the argument count
+ four, a second time makes the argument count sixteen, and so on.
+ By default, this is not bound to a key.
+
+\1f
+File: rlman.info, Node: Commands For Completion, Next: Keyboard Macros, Prev: Numeric Arguments, Up: Bindable Readline Commands
+
+1.4.6 Letting Readline Type For You
+-----------------------------------
+
+‘complete (<TAB>)’
+ Attempt to perform completion on the text before point. The actual
+ completion performed is application-specific. The default is
+ filename completion.
+
+‘possible-completions (M-?)’
+ List the possible completions of the text before point. When
+ displaying completions, Readline sets the number of columns used
+ for display to the value of ‘completion-display-width’, the value
+ of the environment variable ‘COLUMNS’, or the screen width, in that
+ order.
+
+‘insert-completions (M-*)’
+ Insert all completions of the text before point that would have
+ been generated by ‘possible-completions’, separated by a space.
+
+‘menu-complete ()’
+ Similar to ‘complete’, but replaces the word to be completed with a
+ single match from the list of possible completions. Repeatedly
+ executing ‘menu-complete’ steps through the list of possible
+ completions, inserting each match in turn. At the end of the list
+ of completions, ‘menu-complete’ rings the bell (subject to the
+ setting of ‘bell-style’) and restores the original text. An
+ argument of N moves N positions forward in the list of matches; a
+ negative argument moves backward through the list. This command is
+ intended to be bound to <TAB>, but is unbound by default.
+
+‘menu-complete-backward ()’
+ Identical to ‘menu-complete’, but moves backward through the list
+ of possible completions, as if ‘menu-complete’ had been given a
+ negative argument. This command is unbound by default.
+
+‘delete-char-or-list ()’
+ Deletes the character under the cursor if not at the beginning or
+ end of the line (like ‘delete-char’). At the end of the line, it
+ behaves identically to ‘possible-completions’. This command is
+ unbound by default.
+
+\1f
+File: rlman.info, Node: Keyboard Macros, Next: Miscellaneous Commands, Prev: Commands For Completion, Up: Bindable Readline Commands
+
+1.4.7 Keyboard Macros
+---------------------
+
+‘start-kbd-macro (C-x ()’
+ Begin saving the characters typed into the current keyboard macro.
+
+‘end-kbd-macro (C-x ))’
+ Stop saving the characters typed into the current keyboard macro
+ and save the definition.
+
+‘call-last-kbd-macro (C-x e)’
+ Re-execute the last keyboard macro defined, by making the
+ characters in the macro appear as if typed at the keyboard.
+
+‘print-last-kbd-macro ()’
+ Print the last keyboard macro defined in a format suitable for the
+ INPUTRC file.
+
+\1f
+File: rlman.info, Node: Miscellaneous Commands, Prev: Keyboard Macros, Up: Bindable Readline Commands
+
+1.4.8 Some Miscellaneous Commands
+---------------------------------
+
+‘re-read-init-file (C-x C-r)’
+ Read in the contents of the INPUTRC file, and incorporate any
+ bindings or variable assignments found there.
+
+‘abort (C-g)’
+ Abort the current editing command and ring the terminal's bell
+ (subject to the setting of ‘bell-style’).
+
+‘do-lowercase-version (M-A, M-B, M-X, ...)’
+ If the metafied character X is upper case, run the command that is
+ bound to the corresponding metafied lower case character. The
+ behavior is undefined if X is already lower case.
+
+‘prefix-meta (<ESC>)’
+ Metafy the next character typed. Typing ‘<ESC> f’ is equivalent to
+ typing ‘M-f’.
+
+‘undo (C-_ or C-x C-u)’
+ Incremental undo, separately remembered for each line.
+
+‘revert-line (M-r)’
+ Undo all changes made to this line. This is like executing the
+ ‘undo’ command enough times to get back to the initial state.
+
+‘tilde-expand (M-~)’
+ Perform tilde expansion on the current word.
+
+‘set-mark (C-@)’
+ Set the mark to the point. If a numeric argument is supplied, set
+ the mark to that position.
+
+‘exchange-point-and-mark (C-x C-x)’
+ Swap the point with the mark. Set the current cursor position to
+ the saved position, then set the mark to the old cursor position.
+
+‘character-search (C-])’
+ Read a character and move point to the next occurrence of that
+ character. A negative argument searches for previous occurrences.
+
+‘character-search-backward (M-C-])’
+ Read a character and move point to the previous occurrence of that
+ character. A negative argument searches for subsequent
+ occurrences.
+
+‘skip-csi-sequence ()’
+ Read enough characters to consume a multi-key sequence such as
+ those defined for keys like Home and End. CSI sequences begin with
+ a Control Sequence Indicator (CSI), usually ESC-[. If this
+ sequence is bound to "\e[", keys producing CSI sequences will have
+ no effect unless explicitly bound to a Readline command, instead of
+ inserting stray characters into the editing buffer. This is
+ unbound by default, but usually bound to ESC-[.
+
+‘insert-comment (M-#)’
+ Without a numeric argument, insert the value of the ‘comment-begin’
+ variable at the beginning of the current line. If a numeric
+ argument is supplied, this command acts as a toggle: if the
+ characters at the beginning of the line do not match the value of
+ ‘comment-begin’, insert the value; otherwise delete the characters
+ in ‘comment-begin’ from the beginning of the line. In either case,
+ the line is accepted as if a newline had been typed.
+
+‘dump-functions ()’
+ Print all of the functions and their key bindings to the Readline
+ output stream. If a numeric argument is supplied, the output is
+ formatted in such a way that it can be made part of an INPUTRC
+ file. This command is unbound by default.
+
+‘dump-variables ()’
+ Print all of the settable variables and their values to the
+ Readline output stream. If a numeric argument is supplied, the
+ output is formatted in such a way that it can be made part of an
+ INPUTRC file. This command is unbound by default.
+
+‘dump-macros ()’
+ Print all of the Readline key sequences bound to macros and the
+ strings they output to the Readline output stream. If a numeric
+ argument is supplied, the output is formatted in such a way that it
+ can be made part of an INPUTRC file. This command is unbound by
+ default.
+
+‘execute-named-command (M-x)’
+ Read a bindable readline command name from the input and execute
+ the function to which it's bound, as if the key sequence to which
+ it was bound appeared in the input. If this function is supplied
+ with a numeric argument, it passes that argument to the function it
+ executes.
+
+‘emacs-editing-mode (C-e)’
+ When in ‘vi’ command mode, this causes a switch to ‘emacs’ editing
+ mode.
+
+‘vi-editing-mode (M-C-j)’
+ When in ‘emacs’ editing mode, this causes a switch to ‘vi’ editing
+ mode.
+
+\1f
+File: rlman.info, Node: Readline vi Mode, Prev: Bindable Readline Commands, Up: Command Line Editing
+
+1.5 Readline vi Mode
+====================
+
+While the Readline library does not have a full set of ‘vi’ editing
+functions, it does contain enough to allow simple editing of the line.
+The Readline ‘vi’ mode behaves as specified in the ‘sh’ description in
+the POSIX standard.
+
+ In order to switch interactively between ‘emacs’ and ‘vi’ editing
+modes, use the command ‘M-C-j’ (bound to emacs-editing-mode when in ‘vi’
+mode and to vi-editing-mode in ‘emacs’ mode). The Readline default is
+‘emacs’ mode.
+
+ When you enter a line in ‘vi’ mode, you are already placed in
+'insertion' mode, as if you had typed an ‘i’. Pressing <ESC> switches
+you into 'command' mode, where you can edit the text of the line with
+the standard ‘vi’ movement keys, move to previous history lines with ‘k’
+and subsequent lines with ‘j’, and so forth.
+
+ This document describes the GNU Readline Library, a utility for
+aiding in the consistency of user interface across discrete programs
+that need to provide a command line interface.
+
+ Copyright (C) 1988-2024 Free Software Foundation, Inc.
+
+ Permission is granted to make and distribute verbatim copies of this
+manual provided the copyright notice and this permission notice pare
+preserved on all copies.
+
+ Permission is granted to copy and distribute modified versions of
+this manual under the conditions for verbatim copying, provided that the
+entire resulting derived work is distributed under the terms of a
+permission notice identical to this one.
+
+ Permission is granted to copy and distribute translations of this
+manual into another language, under the above conditions for modified
+versions, except that this permission notice may be stated in a
+translation approved by the Foundation.
+
+\1f
+File: rlman.info, Node: Programming with GNU Readline, Next: GNU Free Documentation License, Prev: Command Line Editing, Up: Top
+
+2 Programming with GNU Readline
+*******************************
+
+This chapter describes the interface between the GNU Readline Library
+and other programs. If you are a programmer, and you wish to include
+the features found in GNU Readline such as completion, line editing, and
+interactive history manipulation in your own programs, this section is
+for you.
+
+* Menu:
+
+* Basic Behavior:: Using the default behavior of Readline.
+* Custom Functions:: Adding your own functions to Readline.
+* Readline Variables:: Variables accessible to custom
+ functions.
+* Readline Convenience Functions:: Functions which Readline supplies to
+ aid in writing your own custom
+ functions.
+* Readline Signal Handling:: How Readline behaves when it receives signals.
+* Custom Completers:: Supplanting or supplementing Readline's
+ completion functions.
+
+\1f
+File: rlman.info, Node: Basic Behavior, Next: Custom Functions, Up: Programming with GNU Readline
+
+2.1 Basic Behavior
+==================
+
+Many programs provide a command line interface, such as ‘mail’, ‘ftp’,
+and ‘sh’. For such programs, the default behaviour of Readline is
+sufficient. This section describes how to use Readline in the simplest
+way possible, perhaps to replace calls in your code to ‘fgets()’.
+
+ The function ‘readline()’ prints a prompt PROMPT and then reads and
+returns a single line of text from the user. Since it's possible to
+enter characters into the line while quoting them to disable any
+Readline editing function they might normally have, this line may
+include embedded newlines and other special characters. If PROMPT is
+‘NULL’ or the empty string, ‘readline’ does not display a prompt. The
+line ‘readline’ returns is allocated with ‘malloc()’; the caller should
+‘free()’ the line when it has finished with it. The declaration for
+‘readline’ in ANSI C is
+
+ char *readline (const char *PROMPT);
+
+So, one might say
+ char *line = readline ("Enter a line: ");
+in order to read a line of text from the user. The line returned has
+the final newline removed, so only the text remains. This means that
+lines consisting of a newline return the empty string.
+
+ If ‘readline’ encounters an ‘EOF’ while reading the line, and the
+line is empty at that point, then ‘readline’ returns ‘(char *)NULL’.
+Otherwise, the line is ended just as if a newline had been typed.
+
+ Readline performs some expansion on the PROMPT before it is displayed
+on the screen. See the description of ‘rl_expand_prompt’ (*note
+Redisplay::) for additional details, especially if PROMPT will contain
+characters that do not consume physical screen space when displayed.
+
+ If you want the user to be able to get at the line later, (with <C-p>
+for example), you must call ‘add_history()’ to save the line away in a
+“history” list of such lines.
+
+ add_history (line);
+
+For full details on the GNU History Library, see the associated manual.
+
+ It is preferable to avoid saving empty lines on the history list,
+since users rarely have a burning need to reuse a blank line. Here is a
+function which usefully replaces the standard ‘gets()’ library function,
+and has the advantage of no static buffer to overflow:
+
+ /* A static variable for holding the line. */
+ static char *line_read = (char *)NULL;
+
+ /* Read a string, and return a pointer to it.
+ Returns NULL on EOF. */
+ char *
+ rl_gets ()
+ {
+ /* If the buffer has already been allocated,
+ return the memory to the free pool. */
+ if (line_read)
+ {
+ free (line_read);
+ line_read = (char *)NULL;
+ }
+
+ /* Get a line from the user. */
+ line_read = readline ("");
+
+ /* If the line has any text in it,
+ save it on the history. */
+ if (line_read && *line_read)
+ add_history (line_read);
+
+ return (line_read);
+ }
+
+ This function gives the user the default behaviour of <TAB>
+completion: filename completion. If you do not want Readline to
+complete filenames, you can change the binding of the <TAB> key with
+‘rl_bind_key()’.
+
+ int rl_bind_key (int KEY, rl_command_func_t *FUNCTION);
+
+ ‘rl_bind_key()’ takes two arguments: KEY is the character that you
+want to bind, and FUNCTION is the address of the function to call when
+KEY is pressed. Binding <TAB> to ‘rl_insert()’ makes <TAB> insert
+itself. ‘rl_bind_key()’ returns non-zero if KEY is not a valid ASCII
+character code (between 0 and 255).
+
+ Thus, to disable the default <TAB> behavior, the following suffices:
+ rl_bind_key ('\t', rl_insert);
+
+ This code should be executed once at the start of your program; you
+might write a function called ‘initialize_readline()’ which performs
+this and other desired initializations, such as installing custom
+completers (*note Custom Completers::).
+
+\1f
+File: rlman.info, Node: Custom Functions, Next: Readline Variables, Prev: Basic Behavior, Up: Programming with GNU Readline
+
+2.2 Custom Functions
+====================
+
+Readline provides many functions for manipulating the text of the line,
+but it isn't possible to anticipate the needs of all programs. This
+section describes the various functions and variables defined within the
+Readline library which allow a program to add customized functionality
+to Readline.
+
+ Before declaring any functions that customize Readline's behavior, or
+using any functionality Readline provides in other code, an application
+writer should include the file ‘<readline/readline.h>’ in any file that
+uses Readline's features. Since some of the definitions in ‘readline.h’
+use the ‘stdio’ library, the program should include the file ‘<stdio.h>’
+before ‘readline.h’.
+
+ ‘readline.h’ defines a C preprocessor variable that should be treated
+as an integer, ‘RL_READLINE_VERSION’, which may be used to conditionally
+compile application code depending on the installed Readline version.
+The value is a hexadecimal encoding of the major and minor version
+numbers of the library, of the form 0xMMMM. MM is the two-digit major
+version number; MM is the two-digit minor version number. For Readline
+4.2, for example, the value of ‘RL_READLINE_VERSION’ would be ‘0x0402’.
+
+* Menu:
+
+* Readline Typedefs:: C declarations to make code readable.
+* Function Writing:: Variables and calling conventions.
+
+\1f
+File: rlman.info, Node: Readline Typedefs, Next: Function Writing, Up: Custom Functions
+
+2.2.1 Readline Typedefs
+-----------------------
+
+For readability, we declare a number of new object types, all pointers
+to functions.
+
+ The reason for declaring these new types is to make it easier to
+write code describing pointers to C functions with appropriately
+prototyped arguments and return values.
+
+ For instance, say we want to declare a variable FUNC as a pointer to
+a function which takes two ‘int’ arguments and returns an ‘int’ (this is
+the type of all of the Readline bindable functions). Instead of the
+classic C declaration
+
+ ‘int (*func)();’
+
+or the ANSI-C style declaration
+
+ ‘int (*func)(int, int);’
+
+we may write
+
+ ‘rl_command_func_t *func;’
+
+ The full list of function pointer types available is
+
+‘typedef int rl_command_func_t (int, int);’
+
+‘typedef char *rl_compentry_func_t (const char *, int);’
+
+‘typedef char **rl_completion_func_t (const char *, int, int);’
+
+‘typedef char *rl_quote_func_t (char *, int, char *);’
+
+‘typedef char *rl_dequote_func_t (char *, int);’
+
+‘typedef int rl_compignore_func_t (char **);’
+
+‘typedef void rl_compdisp_func_t (char **, int, int);’
+
+‘typedef void rl_macro_print_func_t (const char *, const char *, int, const char *);’
+
+‘typedef int rl_hook_func_t (void);’
+
+‘typedef int rl_getc_func_t (FILE *);’
+
+‘typedef int rl_linebuf_func_t (char *, int);’
+
+‘typedef int rl_intfunc_t (int);’
+‘#define rl_ivoidfunc_t rl_hook_func_t’
+‘typedef int rl_icpfunc_t (char *);’
+‘typedef int rl_icppfunc_t (char **);’
+
+‘typedef void rl_voidfunc_t (void);’
+‘typedef void rl_vintfunc_t (int);’
+‘typedef void rl_vcpfunc_t (char *);’
+‘typedef void rl_vcppfunc_t (char **);’
+
+The ‘rltypedefs.h’ file has more documentation for these types.
+
+\1f
+File: rlman.info, Node: Function Writing, Prev: Readline Typedefs, Up: Custom Functions
+
+2.2.2 Writing a New Function
+----------------------------
+
+In order to write new functions for Readline, you need to know the
+calling conventions for keyboard-invoked functions, and the names of the
+variables that describe the current state of the line read so far.
+
+ The calling sequence for a command ‘foo’ looks like
+
+ int foo (int count, int key)
+
+where COUNT is the numeric argument (or 1 if defaulted) and KEY is the
+key that invoked this function.
+
+ It is completely up to the function as to what should be done with
+the numeric argument. Some functions use it as a repeat count, some as
+a flag, and others to choose alternate behavior (refreshing the current
+line as opposed to refreshing the screen, for example). Some choose to
+ignore it. In general, if a function uses the numeric argument as a
+repeat count, it should be able to do something useful with both
+negative and positive arguments. At the very least, it should be aware
+that it can be passed a negative argument.
+
+ A command function should return 0 if its action completes
+successfully, and a value greater than zero if some error occurs. This
+is the convention obeyed by all of the builtin Readline bindable command
+functions.
+
+\1f
+File: rlman.info, Node: Readline Variables, Next: Readline Convenience Functions, Prev: Custom Functions, Up: Programming with GNU Readline
+
+2.3 Readline Variables
+======================
+
+These variables are available to function writers.
+
+ -- Variable: char * rl_line_buffer
+ This is the line gathered so far. You are welcome to modify the
+ contents of the line, but see *note Allowing Undoing::. The
+ function ‘rl_extend_line_buffer’ will increase the memory allocated
+ to ‘rl_line_buffer’.
+
+ -- Variable: int rl_point
+ The offset of the current cursor position in ‘rl_line_buffer’ (the
+ _point_).
+
+ -- Variable: int rl_end
+ The number of characters present in ‘rl_line_buffer’. When
+ ‘rl_point’ is at the end of the line, ‘rl_point’ and ‘rl_end’ are
+ equal.
+
+ -- Variable: int rl_mark
+ The MARK (saved position) in the current line. If set, the mark
+ and point define a _region_. Some Readline commands set the mark
+ as part of operating; users can also set the mark explicitly.
+
+ -- Variable: int rl_done
+ Setting this to a non-zero value causes Readline to return the
+ current line immediately. Readline will set this variable when it
+ has read a key sequence bound to ‘accept-line’ and is about to
+ return the line to the caller.
+
+ -- Variable: int rl_eof_found
+ Readline will set this variable when it has read an EOF character
+ (e.g., the stty ‘EOF’ character) on an empty line or has
+ encountered a read error or EOF and is about to return a NULL line
+ to the caller.
+
+ -- Variable: int rl_num_chars_to_read
+ Setting this to a positive value before calling ‘readline()’ causes
+ Readline to return after accepting that many characters, rather
+ than reading up to a character bound to ‘accept-line’.
+
+ -- Variable: int rl_pending_input
+ Setting this to a value makes it the next keystroke read. This is
+ a way to stuff a single character into the input stream.
+
+ -- Variable: int rl_dispatching
+ Set to a non-zero value if a function is being called from a key
+ binding; zero otherwise. Application functions can test this to
+ discover whether they were called directly or by Readline's
+ dispatching mechanism.
+
+ -- Variable: int rl_erase_empty_line
+ Setting this to a non-zero value causes Readline to completely
+ erase the current line, including any prompt, any time a newline is
+ typed as the only character on an otherwise-empty line. This moves
+ the cursor to the beginning of the newly-blank line.
+
+ -- Variable: char * rl_prompt
+ The prompt Readline uses. This is set from the argument to
+ ‘readline()’, and should not be assigned to directly. The
+ ‘rl_set_prompt()’ function (*note Redisplay::) may be used to
+ modify the prompt string after calling ‘readline()’. Readline
+ performs some prompt expansions and analyzes the prompt for line
+ breaks, so ‘rl_set_prompt()’ is preferred.
+
+ -- Variable: char * rl_display_prompt
+ The string displayed as the prompt. This is usually identical to
+ RL_PROMPT, but may be changed temporarily by functions that use the
+ prompt string as a message area, such as incremental search.
+
+ -- Variable: int rl_already_prompted
+ If an application wishes to display the prompt itself, rather than
+ have Readline do it the first time ‘readline()’ is called, it
+ should set this variable to a non-zero value after displaying the
+ prompt. The prompt must also be passed as the argument to
+ ‘readline()’ so the redisplay functions can update the display
+ properly. The calling application is responsible for managing the
+ value; Readline never sets it.
+
+ -- Variable: const char * rl_library_version
+ The version number of this revision of the Readline library, as a
+ string (e.g., "4.2").
+
+ -- Variable: int rl_readline_version
+ An integer encoding the current version of the library. The
+ encoding is of the form 0xMMMM, where MM is the two-digit major
+ version number, and MM is the two-digit minor version number. For
+ example, for Readline-4.2, ‘rl_readline_version’ would have the
+ value 0x0402.
+
+ -- Variable: int rl_gnu_readline_p
+ Always set to 1, denoting that this is GNU Readline rather than
+ some emulation.
+
+ -- Variable: const char * rl_terminal_name
+ The terminal type, used for initialization. If not set by the
+ application, Readline sets this to the value of the ‘TERM’
+ environment variable the first time it is called. Readline uses
+ this to look up the terminal capabilities it needs in the terminfo
+ database.
+
+ -- Variable: const char * rl_readline_name
+ This variable is set to a unique name by each application using
+ Readline. The value allows conditional parsing of the inputrc file
+ (*note Conditional Init Constructs::).
+
+ -- Variable: FILE * rl_instream
+ The stdio stream from which Readline reads input. If ‘NULL’,
+ Readline defaults to STDIN.
+
+ -- Variable: FILE * rl_outstream
+ The stdio stream to which Readline performs output. If ‘NULL’,
+ Readline defaults to STDOUT.
+
+ -- Variable: int rl_prefer_env_winsize
+ If non-zero, Readline gives values found in the ‘LINES’ and
+ ‘COLUMNS’ environment variables greater precedence than values
+ fetched from the kernel when computing the screen dimensions.
+
+ -- Variable: rl_command_func_t * rl_last_func
+ The address of the last command function Readline executed. This
+ may be used to test whether or not a function is being executed
+ twice in succession, for example.
+
+ -- Variable: rl_hook_func_t * rl_startup_hook
+ If non-zero, this is the address of a function to call just before
+ ‘readline’ prints the first prompt.
+
+ -- Variable: rl_hook_func_t * rl_pre_input_hook
+ If non-zero, this is the address of a function to call after the
+ first prompt has been printed and just before ‘readline’ starts
+ reading input characters.
+
+ -- Variable: rl_hook_func_t * rl_event_hook
+ If non-zero, this is the address of a function to call periodically
+ when Readline is waiting for terminal input. By default, this will
+ be called at most ten times a second if there is no keyboard input.
+
+ -- Variable: rl_getc_func_t * rl_getc_function
+ If non-zero, Readline will call indirectly through this pointer to
+ get a character from the input stream. By default, it is set to
+ ‘rl_getc’, the Readline character input function (*note Character
+ Input::). In general, an application that sets RL_GETC_FUNCTION
+ should consider setting RL_INPUT_AVAILABLE_HOOK as well.
+
+ -- Variable: rl_hook_func_t * rl_signal_event_hook
+ If non-zero, this is the address of a function to call if a read
+ system call is interrupted by a signal when Readline is reading
+ terminal input.
+
+ -- Variable: rl_hook_func_t * rl_timeout_event_hook
+ If non-zero, this is the address of a function to call if Readline
+ times out while reading input.
+
+ -- Variable: rl_hook_func_t * rl_input_available_hook
+ If non-zero, Readline will use this function's return value when it
+ needs to determine whether or not there is available input on the
+ current input source. The default hook checks ‘rl_instream’; if an
+ application is using a different input source, it should set the
+ hook appropriately. Readline queries for available input when
+ implementing intra-key-sequence timeouts during input and
+ incremental searches. This function must return zero if there is
+ no input available, and non-zero if input is available. This may
+ use an application-specific timeout before returning a value;
+ Readline uses the value passed to ‘rl_set_keyboard_input_timeout()’
+ or the value of the user-settable KEYSEQ-TIMEOUT variable. This is
+ designed for use by applications using Readline's callback
+ interface (*note Alternate Interface::), which may not use the
+ traditional ‘read(2)’ and file descriptor interface, or other
+ applications using a different input mechanism. If an application
+ uses an input mechanism or hook that can potentially exceed the
+ value of KEYSEQ-TIMEOUT, it should increase the timeout or set this
+ hook appropriately even when not using the callback interface. In
+ general, an application that sets RL_GETC_FUNCTION should consider
+ setting RL_INPUT_AVAILABLE_HOOK as well.
+
+ -- Variable: rl_voidfunc_t * rl_redisplay_function
+ Readline will call indirectly through this pointer to update the
+ display with the current contents of the editing buffer. By
+ default, it is set to ‘rl_redisplay’, the default Readline
+ redisplay function (*note Redisplay::).
+
+ -- Variable: rl_vintfunc_t * rl_prep_term_function
+ If non-zero, Readline will call indirectly through this pointer to
+ initialize the terminal. The function takes a single argument, an
+ ‘int’ flag that says whether or not to use eight-bit characters.
+ By default, this is set to ‘rl_prep_terminal’ (*note Terminal
+ Management::).
+
+ -- Variable: rl_voidfunc_t * rl_deprep_term_function
+ If non-zero, Readline will call indirectly through this pointer to
+ reset the terminal. This function should undo the effects of
+ ‘rl_prep_term_function’. By default, this is set to
+ ‘rl_deprep_terminal’ (*note Terminal Management::).
+
+ -- Variable: void rl_macro_display_hook
+ If set, this points to a function that ‘rl_macro_dumper’ will call
+ to display a key sequence bound to a macro. It is called with the
+ key sequence, the "untranslated" macro value (i.e., with backslash
+ escapes included, as when passed to ‘rl_macro_bind’), the
+ ‘readable’ argument passed to ‘rl_macro_dumper’, and any prefix to
+ display before the key sequence.
+
+ -- Variable: Keymap rl_executing_keymap
+ This variable is set to the keymap (*note Keymaps::) in which the
+ currently executing Readline function was found.
+
+ -- Variable: Keymap rl_binding_keymap
+ This variable is set to the keymap (*note Keymaps::) in which the
+ last key binding occurred.
+
+ -- Variable: char * rl_executing_macro
+ This variable is set to the text of any currently-executing macro.
+
+ -- Variable: int rl_executing_key
+ The key that caused the dispatch to the currently-executing
+ Readline function.
+
+ -- Variable: char * rl_executing_keyseq
+ The full key sequence that caused the dispatch to the
+ currently-executing Readline function.
+
+ -- Variable: int rl_key_sequence_length
+ The number of characters in RL_EXECUTING_KEYSEQ.
+
+ -- Variable: int rl_readline_state
+ A variable with bit values that encapsulate the current Readline
+ state. A bit is set with the ‘RL_SETSTATE’ macro, and unset with
+ the ‘RL_UNSETSTATE’ macro. Use the ‘RL_ISSTATE’ macro to test
+ whether a particular state bit is set. Current state bits include:
+
+ ‘RL_STATE_NONE’
+ Readline has not yet been called, nor has it begun to
+ initialize.
+ ‘RL_STATE_INITIALIZING’
+ Readline is initializing its internal data structures.
+ ‘RL_STATE_INITIALIZED’
+ Readline has completed its initialization.
+ ‘RL_STATE_TERMPREPPED’
+ Readline has modified the terminal modes to do its own input
+ and redisplay.
+ ‘RL_STATE_READCMD’
+ Readline is reading a command from the keyboard.
+ ‘RL_STATE_METANEXT’
+ Readline is reading more input after reading the meta-prefix
+ character.
+ ‘RL_STATE_DISPATCHING’
+ Readline is dispatching to a command.
+ ‘RL_STATE_MOREINPUT’
+ Readline is reading more input while executing an editing
+ command.
+ ‘RL_STATE_ISEARCH’
+ Readline is performing an incremental history search.
+ ‘RL_STATE_NSEARCH’
+ Readline is performing a non-incremental history search.
+ ‘RL_STATE_SEARCH’
+ Readline is searching backward or forward through the history
+ for a string.
+ ‘RL_STATE_NUMERICARG’
+ Readline is reading a numeric argument.
+ ‘RL_STATE_MACROINPUT’
+ Readline is currently getting its input from a
+ previously-defined keyboard macro.
+ ‘RL_STATE_MACRODEF’
+ Readline is currently reading characters defining a keyboard
+ macro.
+ ‘RL_STATE_OVERWRITE’
+ Readline is in overwrite mode.
+ ‘RL_STATE_COMPLETING’
+ Readline is performing word completion.
+ ‘RL_STATE_SIGHANDLER’
+ Readline is currently executing the readline signal handler.
+ ‘RL_STATE_UNDOING’
+ Readline is performing an undo.
+ ‘RL_STATE_INPUTPENDING’
+ Readline has input pending due to a call to
+ ‘rl_execute_next()’.
+ ‘RL_STATE_TTYCSAVED’
+ Readline has saved the values of the terminal's special
+ characters.
+ ‘RL_STATE_CALLBACK’
+ Readline is currently using the alternate (callback) interface
+ (*note Alternate Interface::).
+ ‘RL_STATE_VIMOTION’
+ Readline is reading the argument to a vi-mode "motion"
+ command.
+ ‘RL_STATE_MULTIKEY’
+ Readline is reading a multiple-keystroke command.
+ ‘RL_STATE_VICMDONCE’
+ Readline has entered vi command (movement) mode at least one
+ time during the current call to ‘readline()’.
+ ‘RL_STATE_DONE’
+ Readline has read a key sequence bound to ‘accept-line’ and is
+ about to return the line to the caller.
+ ‘RL_STATE_TIMEOUT’
+ Readline has timed out (it did not receive a line or specified
+ number of characters before the timeout duration specified by
+ ‘rl_set_timeout’ elapsed) and is returning that status to the
+ caller.
+ ‘RL_STATE_EOF’
+ Readline has read an EOF character (e.g., the stty ‘EOF’
+ character) or encountered a read error or EOF and is about to
+ return a NULL line to the caller.
+
+ -- Variable: int rl_explicit_arg
+ Set to a non-zero value if an explicit numeric argument was
+ specified by the user. Only valid in a bindable command function.
+
+ -- Variable: int rl_numeric_arg
+ Set to the value of any numeric argument explicitly specified by
+ the user before executing the current Readline function. Only
+ valid in a bindable command function.
+
+ -- Variable: int rl_editing_mode
+ Set to a value denoting Readline's current editing mode. A value
+ of 1 means Readline is currently in emacs mode; 0 means that vi
+ mode is active. This determines the current keymap and key
+ bindings.
+
+\1f
+File: rlman.info, Node: Readline Convenience Functions, Next: Readline Signal Handling, Prev: Readline Variables, Up: Programming with GNU Readline
+
+2.4 Readline Convenience Functions
+==================================
+
+* Menu:
+
+* Function Naming:: How to give a function you write a name.
+* Keymaps:: Making keymaps.
+* Binding Keys:: Changing Keymaps.
+* Associating Function Names and Bindings:: Translate function names to
+ key sequences.
+* Allowing Undoing:: How to make your functions undoable.
+* Redisplay:: Functions to control line display.
+* Modifying Text:: Functions to modify ‘rl_line_buffer’.
+* Character Input:: Functions to read keyboard input.
+* Terminal Management:: Functions to manage terminal settings.
+* Utility Functions:: Generally useful functions and hooks.
+* Miscellaneous Functions:: Functions that don't fall into any category.
+* Alternate Interface:: Using Readline in a 'callback' fashion.
+* A Readline Example:: An example Readline function.
+* Alternate Interface Example:: An example program using the alternate interface.
+
+\1f
+File: rlman.info, Node: Function Naming, Next: Keymaps, Up: Readline Convenience Functions
+
+2.4.1 Naming a Function
+-----------------------
+
+Readline has a descriptive string name for every function a user can
+bind to a key sequence, so users can dynamically change the bindings
+associated with key sequences while using Readline. The user is able to
+use the descriptive name when referring to the function. Thus, in an
+init file, one might find
+
+ Meta-Rubout: backward-kill-word
+
+ This binds the keystroke <Meta-Rubout> to the function
+_descriptively_ named ‘backward-kill-word’. As the programmer, you
+should bind the functions you write to descriptive names as well.
+Readline provides a function for doing that:
+
+ -- Function: int rl_add_defun (const char *name, rl_command_func_t
+ *function, int key)
+ Add NAME to the list of named functions. Make FUNCTION be the
+ function that gets called by key sequences that bind to NAME. If
+ KEY is not -1, then bind it to FUNCTION using ‘rl_bind_key()’.
+
+ Using this function alone is sufficient for most applications. It is
+the recommended way to add a few functions to the default functions that
+Readline has built in. If you need to do something other than adding a
+function to Readline, you may need to use the underlying functions
+described below.
+
+\1f
+File: rlman.info, Node: Keymaps, Next: Binding Keys, Prev: Function Naming, Up: Readline Convenience Functions
+
+2.4.2 Selecting a Keymap
+------------------------
+
+Key bindings take place on a “keymap”. The keymap is the association
+between the keys that the user types and the functions that get run.
+You can make your own keymaps, copy existing keymaps, and tell Readline
+which keymap to use.
+
+ -- Function: Keymap rl_make_bare_keymap (void)
+ Returns a new, empty keymap. The space for the keymap is allocated
+ with ‘malloc()’; the caller should free it by calling
+ ‘rl_free_keymap()’ when done.
+
+ -- Function: Keymap rl_copy_keymap (Keymap map)
+ Return a new keymap which is a copy of MAP.
+
+ -- Function: Keymap rl_make_keymap (void)
+ Return a new keymap with the printing characters bound to
+ rl_insert, the lowercase Meta characters bound to run their
+ equivalents, and the Meta digits bound to produce numeric
+ arguments.
+
+ -- Function: void rl_discard_keymap (Keymap keymap)
+ Free the storage associated with the data in KEYMAP. The caller
+ should free KEYMAP.
+
+ -- Function: void rl_free_keymap (Keymap keymap)
+ Free all storage associated with KEYMAP. This calls
+ ‘rl_discard_keymap’ to free subordindate keymaps and macros.
+
+ -- Function: int rl_empty_keymap (Keymap keymap)
+ Return non-zero if there are no keys bound to functions in KEYMAP;
+ zero if there are any keys bound.
+
+ Readline has several internal keymaps. These functions allow you to
+change which keymap is active. This is one way to switch editing modes,
+for example.
+
+ -- Function: Keymap rl_get_keymap (void)
+ Returns the currently active keymap.
+
+ -- Function: void rl_set_keymap (Keymap keymap)
+ Makes KEYMAP the currently active keymap.
+
+ -- Function: Keymap rl_get_keymap_by_name (const char *name)
+ Return the keymap matching NAME. NAME is one which would be
+ supplied in a ‘set keymap’ inputrc line (*note Readline Init
+ File::).
+
+ -- Function: char * rl_get_keymap_name (Keymap keymap)
+ Return the name matching KEYMAP. NAME is one which would be
+ supplied in a ‘set keymap’ inputrc line (*note Readline Init
+ File::).
+
+ -- Function: int rl_set_keymap_name (const char *name, Keymap keymap)
+ Set the name of KEYMAP. This name will then be "registered" and
+ available for use in a ‘set keymap’ inputrc directive *note
+ Readline Init File::). The NAME may not be one of Readline's
+ builtin keymap names; you may not add a different name for one of
+ Readline's builtin keymaps. You may replace the name associated
+ with a given keymap by calling this function more than once with
+ the same KEYMAP argument. You may associate a registered NAME with
+ a new keymap by calling this function more than once with the same
+ NAME argument. There is no way to remove a named keymap once the
+ name has been registered. Readline will make a copy of NAME. The
+ return value is greater than zero unless NAME is one of Readline's
+ builtin keymap names or KEYMAP is one of Readline's builtin
+ keymaps.
+
+\1f
+File: rlman.info, Node: Binding Keys, Next: Associating Function Names and Bindings, Prev: Keymaps, Up: Readline Convenience Functions
+
+2.4.3 Binding Keys
+------------------
+
+Key sequences are associated with functions through the keymap.
+Readline has several internal keymaps: ‘emacs_standard_keymap’,
+‘emacs_meta_keymap’, ‘emacs_ctlx_keymap’, ‘vi_movement_keymap’, and
+‘vi_insertion_keymap’. ‘emacs_standard_keymap’ is the default, and the
+examples in this manual assume that.
+
+ Since ‘readline()’ installs a set of default key bindings the first
+time it is called, there is always the danger that a custom binding
+installed before the first call to ‘readline()’ will be overridden. An
+alternate mechanism that can avoid this is to install custom key
+bindings in an initialization function assigned to the ‘rl_startup_hook’
+variable (*note Readline Variables::).
+
+ These functions manage key bindings.
+
+ -- Function: int rl_bind_key (int key, rl_command_func_t *function)
+ Binds KEY to FUNCTION in the currently active keymap. Returns
+ non-zero in the case of an invalid KEY.
+
+ -- Function: int rl_bind_key_in_map (int key, rl_command_func_t
+ *function, Keymap map)
+ Bind KEY to FUNCTION in MAP. Returns non-zero in the case of an
+ invalid KEY.
+
+ -- Function: int rl_bind_key_if_unbound (int key, rl_command_func_t
+ *function)
+ Binds KEY to FUNCTION if it is not already bound in the currently
+ active keymap. Returns non-zero in the case of an invalid KEY or
+ if KEY is already bound.
+
+ -- Function: int rl_bind_key_if_unbound_in_map (int key,
+ rl_command_func_t *function, Keymap map)
+ Binds KEY to FUNCTION if it is not already bound in MAP. Returns
+ non-zero in the case of an invalid KEY or if KEY is already bound.
+
+ -- Function: int rl_unbind_key (int key)
+ Bind KEY to the null function in the currently active keymap. This
+ is not the same as binding it to ‘self-insert’. Returns non-zero
+ in case of error.
+
+ -- Function: int rl_unbind_key_in_map (int key, Keymap map)
+ Bind KEY to the null function in MAP. This is not the same as
+ binding it to ‘self-insert’. Returns non-zero in case of error.
+
+ -- Function: int rl_unbind_function_in_map (rl_command_func_t
+ *function, Keymap map)
+ Unbind all keys that execute FUNCTION in MAP.
+
+ -- Function: int rl_unbind_command_in_map (const char *command, Keymap
+ map)
+ Unbind all keys that are bound to COMMAND in MAP.
+
+ -- Function: int rl_bind_keyseq (const char *keyseq, rl_command_func_t
+ *function)
+ Bind the key sequence represented by the string KEYSEQ to the
+ function FUNCTION, beginning in the current keymap. This makes new
+ keymaps as necessary. The return value is non-zero if KEYSEQ is
+ invalid.
+
+ -- Function: int rl_bind_keyseq_in_map (const char *keyseq,
+ rl_command_func_t *function, Keymap map)
+ Bind the key sequence represented by the string KEYSEQ to the
+ function FUNCTION in MAP. This makes new keymaps as necessary.
+ Initial bindings are performed in MAP. The return value is
+ non-zero if KEYSEQ is invalid.
+
+ -- Function: int rl_set_key (const char *keyseq, rl_command_func_t
+ *function, Keymap map)
+ Equivalent to ‘rl_bind_keyseq_in_map’.
+
+ -- Function: int rl_bind_keyseq_if_unbound (const char *keyseq,
+ rl_command_func_t *function)
+ Binds KEYSEQ to FUNCTION if it is not already bound in the
+ currently active keymap. Returns non-zero in the case of an
+ invalid KEYSEQ or if KEYSEQ is already bound.
+
+ -- Function: int rl_bind_keyseq_if_unbound_in_map (const char *keyseq,
+ rl_command_func_t *function, Keymap map)
+ Binds KEYSEQ to FUNCTION if it is not already bound in MAP.
+ Returns non-zero in the case of an invalid KEYSEQ or if KEYSEQ is
+ already bound.
+
+ -- Function: int rl_generic_bind (int type, const char *keyseq, char
+ *data, Keymap map)
+ Bind the key sequence represented by the string KEYSEQ to the
+ arbitrary pointer DATA. TYPE says what kind of data is pointed to
+ by DATA; this can be a function (‘ISFUNC’), a macro (‘ISMACR’), or
+ a keymap (‘ISKMAP’). This makes new keymaps as necessary. The
+ initial keymap in which to do bindings is MAP.
+
+ -- Function: int rl_parse_and_bind (char *line)
+ Parse LINE as if it had been read from the ‘inputrc’ file and
+ perform any key bindings and variable assignments found (*note
+ Readline Init File::).
+
+ -- Function: int rl_read_init_file (const char *filename)
+ Read keybindings and variable assignments from FILENAME (*note
+ Readline Init File::).
+
+\1f
+File: rlman.info, Node: Associating Function Names and Bindings, Next: Allowing Undoing, Prev: Binding Keys, Up: Readline Convenience Functions
+
+2.4.4 Associating Function Names and Bindings
+---------------------------------------------
+
+These functions allow you to find out what keys invoke named functions
+and the functions invoked by a particular key sequence. You may also
+associate a new function name with an arbitrary function.
+
+ -- Function: rl_command_func_t * rl_named_function (const char *name)
+ Return the function with name NAME. NAME is a descriptive name
+ users might use in a key binding.
+
+ -- Function: rl_command_func_t * rl_function_of_keyseq (const char
+ *keyseq, Keymap map, int *type)
+ Return the function invoked by KEYSEQ in keymap MAP. If MAP is
+ ‘NULL’, this uses the current keymap. If TYPE is not ‘NULL’, this
+ returns the type of the object in the ‘int’ variable it points to
+ (one of ‘ISFUNC’, ‘ISKMAP’, or ‘ISMACR’). It takes a "translated"
+ key sequence and should not be used if the key sequence can include
+ NUL.
+
+ -- Function: rl_command_func_t * rl_function_of_keyseq_len (const char
+ *keyseq, size_t len, Keymap map, int *type)
+ Return the function invoked by KEYSEQ of length LEN in keymap MAP.
+ Equivalent to ‘rl_function_of_keyseq’ with the addition of the LEN
+ parameter. It takes a "translated" key sequence and should be used
+ if the key sequence can include NUL.
+
+ -- Function: int rl_trim_arg_from_keyseq (const char *keyseq, size_t
+ len, Keymap map)
+ If there is a numeric argument at the beginning of KEYSEQ, possibly
+ including digits, return the index of the first character in KEYSEQ
+ following the numeric argument. This can be used to skip over the
+ numeric argument (which is available as ‘rl_numeric_arg’) while
+ traversing the key sequence that invoked the current command.
+
+ -- Function: char ** rl_invoking_keyseqs (rl_command_func_t *function)
+ Return an array of strings representing the key sequences used to
+ invoke FUNCTION in the current keymap.
+
+ -- Function: char ** rl_invoking_keyseqs_in_map (rl_command_func_t
+ *function, Keymap map)
+ Return an array of strings representing the key sequences used to
+ invoke FUNCTION in the keymap MAP.
+
+ -- Function: void rl_print_keybinding (const char *name, Keymap map,
+ int readable)
+ Print key sequences bound to Readline function name NAME in keymap
+ MAP. If MAP is NULL, this uses the current keymap. If READABLE is
+ non-zero, the list is formatted in such a way that it can be made
+ part of an ‘inputrc’ file and re-read to recreate the key binding.
+
+ -- Function: void rl_function_dumper (int readable)
+ Print the Readline function names and the key sequences currently
+ bound to them to ‘rl_outstream’. If READABLE is non-zero, the list
+ is formatted in such a way that it can be made part of an ‘inputrc’
+ file and re-read.
+
+ -- Function: void rl_list_funmap_names (void)
+ Print the names of all bindable Readline functions to
+ ‘rl_outstream’.
+
+ -- Function: const char ** rl_funmap_names (void)
+ Return a NULL terminated array of known function names. The array
+ is sorted. The array itself is allocated, but not the strings
+ inside. You should free the array, but not the pointers, using
+ ‘free’ or ‘rl_free’ when you are done.
+
+ -- Function: int rl_add_funmap_entry (const char *name,
+ rl_command_func_t *function)
+ Add NAME to the list of bindable Readline command names, and make
+ FUNCTION the function to be called when NAME is invoked.
+
+\1f
+File: rlman.info, Node: Allowing Undoing, Next: Redisplay, Prev: Associating Function Names and Bindings, Up: Readline Convenience Functions
+
+2.4.5 Allowing Undoing
+----------------------
+
+Supporting the undo command is a painless thing, and makes your
+functions much more useful. It is certainly easier to try something if
+you know you can undo it.
+
+ If your function simply inserts text once, or deletes text once, and
+uses ‘rl_insert_text()’ or ‘rl_delete_text()’ to do it, then Readline
+does the undoing for you automatically.
+
+ If you do multiple insertions or multiple deletions, or any
+combination of these operations, you should group them together into one
+operation. This is done with ‘rl_begin_undo_group()’ and
+‘rl_end_undo_group()’.
+
+ The types of events Readline can undo are:
+
+ enum undo_code { UNDO_DELETE, UNDO_INSERT, UNDO_BEGIN, UNDO_END };
+
+ Notice that ‘UNDO_DELETE’ means to insert some text, and
+‘UNDO_INSERT’ means to delete some text. That is, the undo code tells
+what to undo, not how to undo it. ‘UNDO_BEGIN’ and ‘UNDO_END’ are tags
+added by ‘rl_begin_undo_group()’ and ‘rl_end_undo_group()’; they are how
+Readline delimits groups of commands that should be undone together.
+
+ -- Function: int rl_begin_undo_group (void)
+ Begins saving undo information in a group construct. The undo
+ information usually comes from calls to ‘rl_insert_text()’ and
+ ‘rl_delete_text()’, but could be the result of calls to
+ ‘rl_add_undo()’.
+
+ -- Function: int rl_end_undo_group (void)
+ Closes the current undo group started with ‘rl_begin_undo_group()’.
+ There should be one call to ‘rl_end_undo_group()’ for each call to
+ ‘rl_begin_undo_group()’.
+
+ -- Function: void rl_add_undo (enum undo_code what, int start, int end,
+ char *text)
+ Remember how to undo an event (according to WHAT). The affected
+ text runs from START to END, and encompasses TEXT.
+
+ -- Function: void rl_free_undo_list (void)
+ Free the existing undo list.
+
+ -- Function: int rl_do_undo (void)
+ Undo the first thing on the undo list. Returns ‘0’ if there was
+ nothing to undo, non-zero if something was undone.
+
+ Finally, if you neither insert nor delete text, but directly modify
+the existing text (e.g., change its case), call ‘rl_modifying()’ once,
+just before you modify the text. You must supply the indices of the
+text range that you are going to modify. Readline will create an undo
+group for you.
+
+ -- Function: int rl_modifying (int start, int end)
+ Tell Readline to save the text between START and END as a single
+ undo unit. It is assumed that you will subsequently modify that
+ text.
+
+\1f
+File: rlman.info, Node: Redisplay, Next: Modifying Text, Prev: Allowing Undoing, Up: Readline Convenience Functions
+
+2.4.6 Redisplay
+---------------
+
+ -- Function: void rl_redisplay (void)
+ Change what's displayed on the screen to reflect the current
+ contents of ‘rl_line_buffer’.
+
+ -- Function: int rl_forced_update_display (void)
+ Force the line to be updated and redisplayed, whether or not
+ Readline thinks the screen display is correct.
+
+ -- Function: int rl_on_new_line (void)
+ Tell the update functions that we have moved onto a new (empty)
+ line, usually after outputting a newline.
+
+ -- Function: int rl_on_new_line_with_prompt (void)
+ Tell the update functions that we have moved onto a new line, with
+ RL_PROMPT already displayed. This could be used by applications
+ that want to output the prompt string themselves, but still need
+ Readline to know the prompt string length for redisplay. It should
+ be used after setting RL_ALREADY_PROMPTED.
+
+ -- Function: int rl_clear_visible_line (void)
+ Clear the screen lines corresponding to the current line's
+ contents.
+
+ -- Function: int rl_reset_line_state (void)
+ Reset the display state to a clean state and redisplay the current
+ line starting on a new line.
+
+ -- Function: int rl_crlf (void)
+ Move the cursor to the start of the next screen line.
+
+ -- Function: int rl_show_char (int c)
+ Display character C on ‘rl_outstream’. If Readline has not been
+ set to display meta characters directly, this will convert meta
+ characters to a meta-prefixed key sequence. This is intended for
+ use by applications which wish to do their own redisplay.
+
+ -- Function: int rl_message (const char *, ...)
+ The arguments are a format string as would be supplied to ‘printf’,
+ possibly containing conversion specifications such as ‘%d’, and any
+ additional arguments necessary to satisfy the conversion
+ specifications. The resulting string is displayed in the “echo
+ area”. The echo area is also used to display numeric arguments and
+ search strings. You should call ‘rl_save_prompt’ to save the
+ prompt information before calling this function.
+
+ -- Function: int rl_clear_message (void)
+ Clear the message in the echo area. If the prompt was saved with a
+ call to ‘rl_save_prompt’ before the last call to ‘rl_message’, you
+ must call ‘rl_restore_prompt’ before calling this function.
+
+ -- Function: void rl_save_prompt (void)
+ Save the local Readline prompt display state in preparation for
+ displaying a new message in the message area with ‘rl_message()’.
+
+ -- Function: void rl_restore_prompt (void)
+ Restore the local Readline prompt display state saved by the most
+ recent call to ‘rl_save_prompt’. if you called ‘rl_save_prompt’ to
+ save the prompt before a call to ‘rl_message’, you should call this
+ function before the corresponding call to ‘rl_clear_message’.
+
+ -- Function: int rl_expand_prompt (char *prompt)
+ Expand any special character sequences in PROMPT and set up the
+ local Readline prompt redisplay variables. This function is called
+ by ‘readline()’. It may also be called to expand the primary
+ prompt if the application uses the ‘rl_on_new_line_with_prompt()’
+ function or ‘rl_already_prompted’ variable. It returns the number
+ of visible characters on the last line of the (possibly multi-line)
+ prompt. Applications may indicate that the prompt contains
+ characters that take up no physical screen space when displayed by
+ bracketing a sequence of such characters with the special markers
+ ‘RL_PROMPT_START_IGNORE’ and ‘RL_PROMPT_END_IGNORE’ (declared in
+ ‘readline.h’ as ‘\001’ and ‘\002’, respectively). This may be used
+ to embed terminal-specific escape sequences in prompts. If you
+ don't use these indicators, redisplay will likely produce screen
+ contents that don't match the line buffer.
+
+ -- Function: int rl_set_prompt (const char *prompt)
+ Make Readline use PROMPT for subsequent redisplay. This calls
+ ‘rl_expand_prompt()’ to expand the prompt and sets ‘rl_prompt’ to
+ the result.
+
+\1f
+File: rlman.info, Node: Modifying Text, Next: Character Input, Prev: Redisplay, Up: Readline Convenience Functions
+
+2.4.7 Modifying Text
+--------------------
+
+ -- Function: int rl_insert_text (const char *text)
+ Insert TEXT into the line at the current cursor position. Returns
+ the number of characters inserted.
+
+ -- Function: int rl_delete_text (int start, int end)
+ Delete the text between START and END in the current line. Returns
+ the number of characters deleted.
+
+ -- Function: char * rl_copy_text (int start, int end)
+ Return a copy of the text between START and END in the current
+ line.
+
+ -- Function: int rl_kill_text (int start, int end)
+ Copy the text between START and END in the current line to the kill
+ ring, appending or prepending to the last kill if the last command
+ was a kill command. This deletes the text from the line. If START
+ is less than END, the text is appended, otherwise it is prepended.
+ If the last command was not a kill, this uses a new kill ring slot.
+
+ -- Function: void rl_replace_line (const char *text, int clear_undo)
+ Replace the contents of ‘rl_line_buffer’ with TEXT. This preserves
+ the point and mark, if possible. If CLEAR_UNDO is non-zero, this
+ clears the undo list associated with the current line.
+
+ -- Function: int rl_push_macro_input (char *macro)
+ Insert MACRO into the line, as if it had been invoked by a key
+ bound to a macro. Not especially useful; use ‘rl_insert_text()’
+ instead.
+
+\1f
+File: rlman.info, Node: Character Input, Next: Terminal Management, Prev: Modifying Text, Up: Readline Convenience Functions
+
+2.4.8 Character Input
+---------------------
+
+ -- Function: int rl_read_key (void)
+ Return the next character available from Readline's current input
+ stream. This handles input inserted into the input stream via
+ RL_PENDING_INPUT (*note Readline Variables::) and
+ ‘rl_stuff_char()’, macros, and characters read from the keyboard.
+ While waiting for input, this function will call any function
+ assigned to the ‘rl_event_hook’ variable.
+
+ -- Function: int rl_getc (FILE *stream)
+ Return the next character available from STREAM, which is assumed
+ to be the keyboard.
+
+ -- Function: int rl_stuff_char (int c)
+ Insert C into the Readline input stream. It will be "read" before
+ Readline attempts to read characters from the terminal with
+ ‘rl_read_key()’. Applications can push back Up to 512 characters.
+ ‘rl_stuff_char’ returns 1 if the character was successfully
+ inserted; 0 otherwise.
+
+ -- Function: int rl_execute_next (int c)
+ Make C be the next command to be executed when ‘rl_read_key()’ is
+ called. This sets RL_PENDING_INPUT.
+
+ -- Function: int rl_clear_pending_input (void)
+ Unset RL_PENDING_INPUT, effectively negating the effect of any
+ previous call to ‘rl_execute_next()’. This works only if the
+ pending input has not already been read with ‘rl_read_key()’.
+
+ -- Function: int rl_set_keyboard_input_timeout (int u)
+ While waiting for keyboard input in ‘rl_read_key()’, Readline will
+ wait for U microseconds for input before calling any function
+ assigned to ‘rl_event_hook’. U must be greater than or equal to
+ zero (a zero-length timeout is equivalent to a poll). The default
+ waiting period is one-tenth of a second. Returns the old timeout
+ value.
+
+ -- Function: int rl_set_timeout (unsigned int secs, unsigned int usecs)
+ Set a timeout for subsequent calls to ‘readline()’. If Readline
+ does not read a complete line, or the number of characters
+ specified by ‘rl_num_chars_to_read’, before the duration specified
+ by SECS (in seconds) and USECS (microseconds), it returns and sets
+ ‘RL_STATE_TIMEOUT’ in ‘rl_readline_state’. Passing 0 for ‘secs’
+ and ‘usecs’ cancels any previously set timeout; the convenience
+ macro ‘rl_clear_timeout()’ is shorthand for this. Returns 0 if the
+ timeout is set successfully.
+
+ -- Function: int rl_timeout_remaining (unsigned int *secs, unsigned int
+ *usecs)
+ Return the number of seconds and microseconds remaining in the
+ current timeout duration in *SECS and *USECS, respectively. Both
+ *SECS and *USECS must be non-NULL to return any values. The return
+ value is -1 on error or when there is no timeout set, 0 when the
+ timeout has expired (leaving *SECS and *USECS unchanged), and 1 if
+ the timeout has not expired. If either of SECS and USECS is
+ ‘NULL’, the return value indicates whether the timeout has expired.
+
+\1f
+File: rlman.info, Node: Terminal Management, Next: Utility Functions, Prev: Character Input, Up: Readline Convenience Functions
+
+2.4.9 Terminal Management
+-------------------------
+
+ -- Function: void rl_prep_terminal (int meta_flag)
+ Modify the terminal settings for Readline's use, so ‘readline()’
+ can read a single character at a time from the keyboard and perform
+ redisplay. The META_FLAG argument should be non-zero if Readline
+ should read eight-bit input.
+
+ -- Function: void rl_deprep_terminal (void)
+ Undo the effects of ‘rl_prep_terminal()’, leaving the terminal in
+ the state in which it was before the most recent call to
+ ‘rl_prep_terminal()’.
+
+ -- Function: void rl_tty_set_default_bindings (Keymap kmap)
+ Read the operating system's terminal editing characters (as would
+ be displayed by ‘stty’) to their Readline equivalents. The
+ bindings are performed in KMAP.
+
+ -- Function: void rl_tty_unset_default_bindings (Keymap kmap)
+ Reset the bindings manipulated by ‘rl_tty_set_default_bindings’ so
+ that the terminal editing characters are bound to ‘rl_insert’. The
+ bindings are performed in KMAP.
+ -- Function: int rl_tty_set_echoing (int value)
+ Set Readline's idea of whether or not it is echoing output to its
+ output stream (RL_OUTSTREAM). If VALUE is 0, Readline does not
+ display output to RL_OUTSTREAM; any other value enables output.
+ The initial value is set when Readline initializes the terminal
+ settings. This function returns the previous value.
+
+ -- Function: int rl_reset_terminal (const char *terminal_name)
+ Reinitialize Readline's idea of the terminal settings using
+ TERMINAL_NAME as the terminal type (e.g., ‘xterm’). If
+ TERMINAL_NAME is ‘NULL’, Readline uses the value of the ‘TERM’
+ environment variable.
+
+\1f
+File: rlman.info, Node: Utility Functions, Next: Miscellaneous Functions, Prev: Terminal Management, Up: Readline Convenience Functions
+
+2.4.10 Utility Functions
+------------------------
+
+ -- Function: int rl_save_state (struct readline_state *sp)
+ Save a snapshot of Readline's internal state to SP. The contents
+ of the READLINE_STATE structure are documented in ‘readline.h’.
+ The caller is responsible for allocating the structure.
+
+ -- Function: int rl_restore_state (struct readline_state *sp)
+ Restore Readline's internal state to that stored in SP, which must
+ have been saved by a call to ‘rl_save_state’. The contents of the
+ READLINE_STATE structure are documented in ‘readline.h’. The
+ caller is responsible for freeing the structure.
+
+ -- Function: void rl_free (void *mem)
+ Deallocate the memory pointed to by MEM. MEM must have been
+ allocated by ‘malloc’.
+
+ -- Function: void rl_extend_line_buffer (int len)
+ Ensure that ‘rl_line_buffer’ has enough space to hold LEN
+ characters, reallocating it if necessary.
+
+ -- Function: int rl_initialize (void)
+ Initialize or re-initialize Readline's internal state. It's not
+ strictly necessary to call this; ‘readline()’ calls it before
+ reading any input.
+
+ -- Function: int rl_ding (void)
+ Ring the terminal bell, obeying the setting of ‘bell-style’.
+
+ -- Function: int rl_alphabetic (int c)
+ Return 1 if C is an alphabetic character.
+
+ -- Function: void rl_display_match_list (char **matches, int len, int
+ max)
+ A convenience function for displaying a list of strings in columnar
+ format on Readline's output stream. ‘matches’ is the list of
+ strings, in argv format, such as a list of completion matches.
+ ‘len’ is the number of strings in ‘matches’, and ‘max’ is the
+ length of the longest string in ‘matches’. This function uses the
+ setting of ‘print-completions-horizontally’ to select how the
+ matches are displayed (*note Readline Init File Syntax::). When
+ displaying completions, this function sets the number of columns
+ used for display to the value of ‘completion-display-width’, the
+ value of the environment variable ‘COLUMNS’, or the screen width,
+ in that order.
+
+ The following are implemented as macros, defined in ‘chardefs.h’.
+Applications should refrain from using them.
+
+ -- Function: int _rl_uppercase_p (int c)
+ Return 1 if C is an uppercase alphabetic character.
+
+ -- Function: int _rl_lowercase_p (int c)
+ Return 1 if C is a lowercase alphabetic character.
+
+ -- Function: int _rl_digit_p (int c)
+ Return 1 if C is a numeric character.
+
+ -- Function: int _rl_to_upper (int c)
+ If C is a lowercase alphabetic character, return the corresponding
+ uppercase character.
+
+ -- Function: int _rl_to_lower (int c)
+ If C is an uppercase alphabetic character, return the corresponding
+ lowercase character.
+
+ -- Function: int _rl_digit_value (int c)
+ If C is a number, return the value it represents.
+
+\1f
+File: rlman.info, Node: Miscellaneous Functions, Next: Alternate Interface, Prev: Utility Functions, Up: Readline Convenience Functions
+
+2.4.11 Miscellaneous Functions
+------------------------------
+
+ -- Function: int rl_macro_bind (const char *keyseq, const char *macro,
+ Keymap map)
+ Bind the key sequence KEYSEQ to invoke the macro MACRO. The
+ binding is performed in MAP. When KEYSEQ is invoked, the MACRO
+ will be inserted into the line. This function is deprecated; use
+ ‘rl_generic_bind’ instead.
+
+ -- Function: void rl_macro_dumper (int readable)
+ Print the key sequences bound to macros and their values, using the
+ current keymap, to ‘rl_outstream’. If the application has assigned
+ a value to ‘rl_macro_display_hook’, ‘rl_macro_dumper’ calls it
+ instead of printing anything. If READABLE is greater than zero,
+ the list is formatted in such a way that it can be made part of an
+ ‘inputrc’ file and re-read.
+
+ -- Function: int rl_variable_bind (const char *variable, const char
+ *value)
+ Make the Readline variable VARIABLE have VALUE. This behaves as if
+ the Readline command ‘set VARIABLE VALUE’ had been executed in an
+ ‘inputrc’ file (*note Readline Init File Syntax::) or by
+ ‘rl_parse_and_bind’.
+
+ -- Function: char * rl_variable_value (const char *variable)
+ Return a string representing the value of the Readline variable
+ VARIABLE. For boolean variables, this string is either ‘on’ or
+ ‘off’.
+
+ -- Function: void rl_variable_dumper (int readable)
+ Print the Readline variable names and their current values to
+ ‘rl_outstream’. If READABLE is non-zero, the list is formatted in
+ such a way that it can be made part of an ‘inputrc’ file and
+ re-read.
+
+ -- Function: int rl_set_paren_blink_timeout (int u)
+ Set the time interval (in microseconds) that Readline waits when
+ showing a balancing character when ‘blink-matching-paren’ has been
+ enabled.
+
+ -- Function: char * rl_get_termcap (const char *cap)
+ Retrieve the string value of the termcap capability CAP. Readline
+ fetches the termcap entry for the current terminal name and uses
+ those capabilities to move around the screen line and perform other
+ terminal-specific operations, like erasing a line. Readline does
+ not fetch or use all of a terminal's capabilities, and this
+ function will return values for only those capabilities Readline
+ fetches.
+
+ -- Function: void rl_reparse_colors (void)
+ Read or re-read color definitions from ‘LS_COLORS’.
+
+ -- Function: void rl_clear_history (void)
+ Clear the history list by deleting all of the entries, in the same
+ manner as the History library's ‘clear_history()’ function. This
+ differs from ‘clear_history’ because it frees private data Readline
+ saves in the history list.
+
+ -- Function: void rl_activate_mark (void)
+ Enable an _active_ region. When this is enabled, the text between
+ point and mark (the REGION) is displayed using the color specified
+ by the value of the ‘active-region-start-color’ variable (a FACE).
+ The default face is the terminal's standout mode. This is called
+ by various Readline functions that set the mark and insert text,
+ and is available for applications to call.
+
+ -- Function: void rl_deactivate_mark (void)
+ Turn off the active region.
+
+ -- Function: void rl_keep_mark_active (void)
+ Indicate that the mark should remain active when the current
+ Readline function completes and after redisplay occurs. In most
+ cases, the mark remains active for only the duration of a single
+ bindable Readline function.
+
+ -- Function: int rl_mark_active_p (void)
+ Return a non-zero value if the mark is currently active; zero
+ otherwise.
+
+\1f
+File: rlman.info, Node: Alternate Interface, Next: A Readline Example, Prev: Miscellaneous Functions, Up: Readline Convenience Functions
+
+2.4.12 Alternate Interface
+--------------------------
+
+For applications that need more granular control than plain ‘readline()’
+provides, there is an alternate interface. Some applications need to
+interleave keyboard I/O with file, device, or window system I/O,
+typically by using a main loop to ‘select()’ on various file
+descriptors. To accommodate this use case, Readline can also be invoked
+as a 'callback' function from an event loop. There are functions
+available to make this easy.
+
+ -- Function: void rl_callback_handler_install (const char *prompt,
+ rl_vcpfunc_t *lhandler)
+ Set up the terminal for Readline I/O and display the initial
+ expanded value of PROMPT. Save the value of LHANDLER to use as a
+ handler function to call when a complete line of input has been
+ entered. The handler function receives the text of the line as an
+ argument. As with ‘readline()’, the handler function should ‘free’
+ the line when it it finished with it.
+
+ -- Function: void rl_callback_read_char (void)
+ Whenever an application determines that keyboard input is
+ available, it should call ‘rl_callback_read_char()’, which will
+ read the next character from the current input source. If that
+ character completes the line, ‘rl_callback_read_char’ will invoke
+ the LHANDLER function installed by ‘rl_callback_handler_install’ to
+ process the line. Before calling the LHANDLER function, Readline
+ resets the terminal settings to the values they had before calling
+ ‘rl_callback_handler_install’. If the LHANDLER function returns,
+ and the line handler remains installed, Readline modifies the
+ terminal settings for its use again. ‘EOF’ is indicated by calling
+ LHANDLER with a ‘NULL’ line.
+
+ -- Function: void rl_callback_sigcleanup (void)
+ Clean up any internal state the callback interface uses to maintain
+ state between calls to rl_callback_read_char (e.g., the state of
+ any active incremental searches). This is intended to be used by
+ applications that wish to perform their own signal handling;
+ Readline's internal signal handler calls this when appropriate.
+
+ -- Function: void rl_callback_handler_remove (void)
+ Restore the terminal to its initial state and remove the line
+ handler. You may call this function from within a callback as well
+ as independently. If the LHANDLER installed by
+ ‘rl_callback_handler_install’ does not exit the program, your
+ program should call either this function or the function referred
+ to by the value of ‘rl_deprep_term_function’ before the program
+ exits to reset the terminal settings.
+
+\1f
+File: rlman.info, Node: A Readline Example, Next: Alternate Interface Example, Prev: Alternate Interface, Up: Readline Convenience Functions
+
+2.4.13 A Readline Example
+-------------------------
+
+Here is a function which changes lowercase characters to their uppercase
+equivalents, and uppercase characters to lowercase. If this function
+was bound to ‘M-c’, then typing ‘M-c’ would change the case of the
+character under point. Typing ‘M-1 0 M-c’ would change the case of the
+following 10 characters, leaving the cursor on the last character
+changed.
+
+ /* Invert the case of the COUNT following characters. */
+ int
+ invert_case_line (count, key)
+ int count, key;
+ {
+ int start, end, i;
+
+ start = rl_point;
+
+ if (rl_point >= rl_end)
+ return (0);
+
+ /* Find the end of the range to modify. */
+ end = start + count;
+
+ /* Force it to be within range. */
+ if (end > rl_end)
+ end = rl_end;
+ else if (end < 0)
+ end = 0;
+
+ if (start == end)
+ return (0);
+
+ /* For positive arguments, put point after the last changed character. For
+ negative arguments, put point before the last changed character. */
+ rl_point = end;
+
+ /* Swap start and end if we are moving backwards */
+ if (start > end)
+ {
+ int temp = start;
+ start = end;
+ end = temp;
+ }
+
+ /* Tell readline that we are modifying the line,
+ so it will save the undo information. */
+ rl_modifying (start, end);
+
+ for (i = start; i != end; i++)
+ {
+ if (_rl_uppercase_p (rl_line_buffer[i]))
+ rl_line_buffer[i] = _rl_to_lower (rl_line_buffer[i]);
+ else if (_rl_lowercase_p (rl_line_buffer[i]))
+ rl_line_buffer[i] = _rl_to_upper (rl_line_buffer[i]);
+ }
+
+ return (0);
+ }
+
+\1f
+File: rlman.info, Node: Alternate Interface Example, Prev: A Readline Example, Up: Readline Convenience Functions
+
+2.4.14 Alternate Interface Example
+----------------------------------
+
+Here is a complete program that illustrates Readline's alternate
+interface. It reads lines from the terminal and displays them,
+providing the standard history and TAB completion functions. It
+understands the EOF character or "exit" to exit the program.
+
+ /* Standard include files. stdio.h is required. */
+ #include <stdlib.h>
+ #include <string.h>
+ #include <unistd.h>
+
+ /* Used for select(2) */
+ #include <sys/types.h>
+ #include <sys/select.h>
+
+ #include <signal.h>
+
+ #include <errno.h>
+ #include <stdio.h>
+
+ #include <locale.h>
+
+ /* Standard readline include files. */
+ #include <readline/readline.h>
+ #include <readline/history.h>
+
+ #if !defined (errno)
+ extern int errno;
+ #endif
+
+ static void cb_linehandler (char *);
+ static void sighandler (int);
+
+ int running;
+ int sigwinch_received;
+ const char *prompt = "rltest$ ";
+
+ /* Handle SIGWINCH and window size changes when readline is not active and
+ reading a character. */
+ static void
+ sighandler (int sig)
+ {
+ sigwinch_received = 1;
+ }
+
+ /* Callback function called for each line when accept-line executed, EOF
+ seen, or EOF character read. This sets a flag and returns; it could
+ also call exit(3). */
+ static void
+ cb_linehandler (char *line)
+ {
+ /* Can use ^D (stty eof) or `exit' to exit. */
+ if (line == NULL || strcmp (line, "exit") == 0)
+ {
+ if (line == 0)
+ printf ("\n");
+ printf ("exit\n");
+ /* This function needs to be called to reset the terminal settings,
+ and calling it from the line handler keeps one extra prompt from
+ being displayed. */
+ rl_callback_handler_remove ();
+
+ running = 0;
+ }
+ else
+ {
+ if (*line)
+ add_history (line);
+ printf ("input line: %s\n", line);
+ free (line);
+ }
+ }
+
+ int
+ main (int c, char **v)
+ {
+ fd_set fds;
+ int r;
+
+ /* Set the default locale values according to environment variables. */
+ setlocale (LC_ALL, "");
+
+ /* Handle window size changes when readline is not active and reading
+ characters. */
+ signal (SIGWINCH, sighandler);
+
+ /* Install the line handler. */
+ rl_callback_handler_install (prompt, cb_linehandler);
+
+ /* Enter a simple event loop. This waits until something is available
+ to read on readline's input stream (defaults to standard input) and
+ calls the builtin character read callback to read it. It does not
+ have to modify the user's terminal settings. */
+ running = 1;
+ while (running)
+ {
+ FD_ZERO (&fds);
+ FD_SET (fileno (rl_instream), &fds);
+
+ r = select (FD_SETSIZE, &fds, NULL, NULL, NULL);
+ if (r < 0 && errno != EINTR)
+ {
+ perror ("rltest: select");
+ rl_callback_handler_remove ();
+ break;
+ }
+ if (sigwinch_received)
+ {
+ rl_resize_terminal ();
+ sigwinch_received = 0;
+ }
+ if (r < 0)
+ continue;
+
+ if (FD_ISSET (fileno (rl_instream), &fds))
+ rl_callback_read_char ();
+ }
+
+ printf ("rltest: Event loop has exited\n");
+ return 0;
+ }
+
+\1f
+File: rlman.info, Node: Readline Signal Handling, Next: Custom Completers, Prev: Readline Convenience Functions, Up: Programming with GNU Readline
+
+2.5 Readline Signal Handling
+============================
+
+Signals are asynchronous events sent to a process by the Unix kernel,
+sometimes on behalf of another process. They are intended to indicate
+exceptional events, like a user pressing the terminal's interrupt key,
+or a network connection being broken. There is a class of signals that
+can be sent to the process currently reading input from the keyboard.
+Since Readline changes the terminal attributes when it is called, it
+needs to perform special processing when such a signal is received in
+order to restore the terminal to a sane state, or provide applications
+using Readline with functions to do so manually.
+
+ Readline contains an internal signal handler that is installed for a
+number of signals (‘SIGINT’, ‘SIGQUIT’, ‘SIGTERM’, ‘SIGHUP’, ‘SIGALRM’,
+‘SIGTSTP’, ‘SIGTTIN’, and ‘SIGTTOU’). When Readline receives one of
+these signals, the signal handler will reset the terminal attributes to
+those that were in effect before ‘readline()’ was called, reset the
+signal handling to what it was before ‘readline()’ was called, and
+resend the signal to the calling application. If and when the calling
+application's signal handler returns, Readline will reinitialize the
+terminal and continue to accept input. When a ‘SIGINT’ is received, the
+Readline signal handler performs some additional work, which will cause
+any partially-entered line to be aborted (see the description of
+‘rl_free_line_state()’ below).
+
+ There is an additional Readline signal handler, for ‘SIGWINCH’, which
+the kernel sends to a process whenever the terminal's size changes (for
+example, if a user resizes an ‘xterm’). The Readline ‘SIGWINCH’ handler
+updates Readline's internal screen size information, and then calls any
+‘SIGWINCH’ signal handler the calling application has installed.
+Readline calls the application's ‘SIGWINCH’ signal handler without
+resetting the terminal to its original state. If the application's
+signal handler does more than update its idea of the terminal size and
+return (for example, a ‘longjmp’ back to a main processing loop), it
+_must_ call ‘rl_cleanup_after_signal()’ (described below), to restore
+the terminal state.
+
+ When an application is using the callback interface (*note Alternate
+Interface::), Readline installs signal handlers only for the duration of
+the call to ‘rl_callback_read_char’. Applications using the callback
+interface should be prepared to clean up Readline's state if they wish
+to handle the signal before the line handler completes and restores the
+terminal state.
+
+ If an application using the callback interface wishes to have
+Readline install its signal handlers at the time the application calls
+‘rl_callback_handler_install’ and remove them only when a complete line
+of input has been read, it should set the
+‘rl_persistent_signal_handlers’ variable to a non-zero value. This
+allows an application to defer all of the handling of the signals
+Readline catches to Readline. Applications should use this variable
+with care; it can result in Readline catching signals and not acting on
+them (or allowing the application to react to them) until the
+application calls ‘rl_callback_read_char’. This can result in an
+application becoming less responsive to keyboard signals like SIGINT. If
+an application does not want or need to perform any signal handling, or
+does not need to do any processing between calls to
+‘rl_callback_read_char’, setting this variable may be desirable.
+
+ Readline provides two variables that allow application writers to
+control whether or not it will catch certain signals and act on them
+when they are received. It is important that applications change the
+values of these variables only when calling ‘readline()’, not in a
+signal handler, so Readline's internal signal state is not corrupted.
+
+ -- Variable: int rl_catch_signals
+ If this variable is non-zero, Readline will install signal handlers
+ for ‘SIGINT’, ‘SIGQUIT’, ‘SIGTERM’, ‘SIGHUP’, ‘SIGALRM’, ‘SIGTSTP’,
+ ‘SIGTTIN’, and ‘SIGTTOU’.
+
+ The default value of ‘rl_catch_signals’ is 1.
+
+ -- Variable: int rl_catch_sigwinch
+ If this variable is set to a non-zero value, Readline will install
+ a signal handler for ‘SIGWINCH’.
+
+ The default value of ‘rl_catch_sigwinch’ is 1.
+
+ -- Variable: int rl_persistent_signal_handlers
+ If an application using the callback interface wishes Readline's
+ signal handlers to be installed and active during the set of calls
+ to ‘rl_callback_read_char’ that constitutes an entire single line,
+ it should set this variable to a non-zero value.
+
+ The default value of ‘rl_persistent_signal_handlers’ is 0.
+
+ -- Variable: int rl_change_environment
+ If this variable is set to a non-zero value, and Readline is
+ handling ‘SIGWINCH’, Readline will modify the LINES and COLUMNS
+ environment variables upon receipt of a ‘SIGWINCH’.
+
+ The default value of ‘rl_change_environment’ is 1.
+
+ If an application does not wish to have Readline catch any signals,
+or to handle signals other than those Readline catches (‘SIGHUP’, for
+example), Readline provides convenience functions to do the necessary
+terminal and internal state cleanup upon receipt of a signal.
+
+ -- Function: int rl_pending_signal (void)
+ Return the signal number of the most recent signal Readline
+ received but has not yet handled, or 0 if there is no pending
+ signal.
+
+ -- Function: void rl_cleanup_after_signal (void)
+ This function will reset the state of the terminal to what it was
+ before ‘readline()’ was called, and remove the Readline signal
+ handlers for all signals, depending on the values of
+ ‘rl_catch_signals’ and ‘rl_catch_sigwinch’.
+
+ -- Function: void rl_free_line_state (void)
+ This will free any partial state associated with the current input
+ line (undo information, any partial history entry, any
+ partially-entered keyboard macro, and any partially-entered numeric
+ argument). This should be called before
+ ‘rl_cleanup_after_signal()’. The Readline signal handler for
+ ‘SIGINT’ calls this to abort the current input line.
+
+ -- Function: void rl_reset_after_signal (void)
+ This will reinitialize the terminal and reinstall any Readline
+ signal handlers, depending on the values of ‘rl_catch_signals’ and
+ ‘rl_catch_sigwinch’.
+
+ If an application wants to force Readline to handle any signals that
+have arrived while it has been executing, ‘rl_check_signals()’ will call
+Readline's internal signal handler if there are any pending signals.
+This is primarily intended for those applications that use a custom
+‘rl_getc_function’ (*note Readline Variables::) and wish to handle
+signals received while waiting for input.
+
+ -- Function: void rl_check_signals (void)
+ If there are any pending signals, call Readline's internal signal
+ handling functions to process them. ‘rl_pending_signal()’ can be
+ used independently to determine whether or not there are any
+ pending signals.
+
+ If an application does not wish Readline to catch ‘SIGWINCH’, it may
+call ‘rl_resize_terminal()’ or ‘rl_set_screen_size()’ to force Readline
+to update its idea of the terminal size when it receives a ‘SIGWINCH’.
+
+ -- Function: void rl_echo_signal_char (int sig)
+ If an application wishes to install its own signal handlers, but
+ still have Readline display characters that generate signals,
+ calling this function with SIG set to ‘SIGINT’, ‘SIGQUIT’, or
+ ‘SIGTSTP’ will display the character generating that signal.
+
+ -- Function: void rl_resize_terminal (void)
+ Update Readline's internal screen size by reading values from the
+ kernel.
+
+ -- Function: void rl_set_screen_size (int rows, int cols)
+ Set Readline's idea of the terminal size to ROWS rows and COLS
+ columns. If either ROWS or COLUMNS is less than or equal to 0,
+ Readline doesn't change that terminal dimension. This is intended
+ to tell Readline the physical dimensions of the terminal, and is
+ used internally to calculate the maximum number of characters that
+ may appear on a single line and on the screen.
+
+ If an application does not want to install a ‘SIGWINCH’ handler, but
+is still interested in the screen dimensions, it may query Readline's
+idea of the screen size.
+
+ -- Function: void rl_get_screen_size (int *rows, int *cols)
+ Return Readline's idea of the terminal's size in the variables
+ pointed to by the arguments.
+
+ -- Function: void rl_reset_screen_size (void)
+ Cause Readline to reobtain the screen size and recalculate its
+ dimensions.
+
+ The following functions install and remove Readline's signal
+handlers.
+
+ -- Function: int rl_set_signals (void)
+ Install Readline's signal handler for ‘SIGINT’, ‘SIGQUIT’,
+ ‘SIGTERM’, ‘SIGHUP’, ‘SIGALRM’, ‘SIGTSTP’, ‘SIGTTIN’, ‘SIGTTOU’,
+ and ‘SIGWINCH’, depending on the values of ‘rl_catch_signals’ and
+ ‘rl_catch_sigwinch’.
+
+ -- Function: int rl_clear_signals (void)
+ Remove all of the Readline signal handlers installed by
+ ‘rl_set_signals()’.
+
+\1f
+File: rlman.info, Node: Custom Completers, Prev: Readline Signal Handling, Up: Programming with GNU Readline
+
+2.6 Custom Completers
+=====================
+
+Typically, a program that reads commands from the user has a way of
+disambiguating commands and data. If your program is one of these, then
+it can provide completion for commands, data, or both. The following
+sections describe how your program and Readline cooperate to provide
+this service.
+
+* Menu:
+
+* How Completing Works:: The logic used to do completion.
+* Completion Functions:: Functions provided by Readline.
+* Completion Variables:: Variables which control completion.
+* A Short Completion Example:: An example of writing completer subroutines.
+
+\1f
+File: rlman.info, Node: How Completing Works, Next: Completion Functions, Up: Custom Completers
+
+2.6.1 How Completing Works
+--------------------------
+
+In order to complete some text, the full list of possible completions
+must be available. That is, it is not possible to accurately expand a
+partial word without knowing all of the possible words which make sense
+in that context. The Readline library provides the user interface to
+completion, and two of the most common completion functions: filename
+and username. For completing other types of text, you must write your
+own completion function. This section describes exactly what such
+functions must do, and provides an example.
+
+ There are three major functions used to perform completion:
+
+ 1. The user-interface function ‘rl_complete()’. This function is
+ called with the same arguments as other bindable Readline
+ functions: COUNT and INVOKING_KEY. It isolates the word to be
+ completed and calls ‘rl_completion_matches()’ to generate a list of
+ possible completions. It then either lists the possible
+ completions, inserts the possible completions, or actually performs
+ the completion, depending on which behavior is desired.
+
+ 2. The internal function ‘rl_completion_matches()’ uses an
+ application-supplied “generator” function to generate the list of
+ possible matches, and then returns the array of these matches. The
+ caller should place the address of its generator function in
+ ‘rl_completion_entry_function’.
+
+ 3. The generator function is called repeatedly from
+ ‘rl_completion_matches()’, returning a string each time. The
+ arguments to the generator function are TEXT and STATE. TEXT is
+ the partial word to be completed. STATE is zero the first time the
+ function is called, allowing the generator to perform any necessary
+ initialization, and a positive non-zero integer for each subsequent
+ call. The generator function returns ‘(char *)NULL’ to inform
+ ‘rl_completion_matches()’ that there are no more possibilities
+ left. Usually the generator function computes the list of possible
+ completions when STATE is zero, and returns them one at a time on
+ subsequent calls. Each string the generator function returns as a
+ match must be allocated with ‘malloc()’; Readline frees the strings
+ when it has finished with them. Such a generator function is
+ referred to as an “application-specific completion function”.
+
+ -- Function: int rl_complete (int ignore, int invoking_key)
+ Complete the word at or before point. You have supplied the
+ function that does the initial simple matching selection algorithm
+ (see ‘rl_completion_matches()’). The default is to do filename
+ completion.
+
+ -- Variable: rl_compentry_func_t * rl_completion_entry_function
+ This is a pointer to the generator function for
+ ‘rl_completion_matches()’. If the value of
+ ‘rl_completion_entry_function’ is ‘NULL’ then Readline uses the
+ default filename generator function,
+ ‘rl_filename_completion_function()’. An “application-specific
+ completion function” is a function whose address is assigned to
+ ‘rl_completion_entry_function’ and whose return values are used to
+ generate possible completions.
+
+\1f
+File: rlman.info, Node: Completion Functions, Next: Completion Variables, Prev: How Completing Works, Up: Custom Completers
+
+2.6.2 Completion Functions
+--------------------------
+
+Here is the complete list of callable completion functions present in
+Readline.
+
+ -- Function: int rl_complete_internal (int what_to_do)
+ Complete the word at or before point. WHAT_TO_DO says what to do
+ with the completion. A value of ‘?’ means list the possible
+ completions. ‘TAB’ means do standard completion. ‘*’ means insert
+ all of the possible completions. ‘!’ means to display all of the
+ possible completions, if there is more than one, as well as
+ performing partial completion. ‘@’ is similar to ‘!’, but does not
+ list possible completions if the possible completions share a
+ common prefix.
+
+ -- Function: int rl_complete (int ignore, int invoking_key)
+ Complete the word at or before point. You have supplied the
+ function that does the initial simple matching selection algorithm
+ (see ‘rl_completion_matches()’ and ‘rl_completion_entry_function’).
+ The default is to do filename completion. This calls
+ ‘rl_complete_internal()’ with an argument depending on
+ INVOKING_KEY.
+
+ -- Function: int rl_possible_completions (int count, int invoking_key)
+ List the possible completions. See description of ‘rl_complete()’.
+ This calls ‘rl_complete_internal()’ with an argument of ‘?’.
+
+ -- Function: int rl_insert_completions (int count, int invoking_key)
+ Insert the list of possible completions into the line, deleting the
+ partially-completed word. See description of ‘rl_complete()’.
+ This calls ‘rl_complete_internal()’ with an argument of ‘*’.
+
+ -- Function: int rl_completion_mode (rl_command_func_t *cfunc)
+ Returns the appropriate value to pass to ‘rl_complete_internal()’
+ depending on whether CFUNC was called twice in succession and the
+ values of the ‘show-all-if-ambiguous’ and ‘show-all-if-unmodified’
+ variables. Application-specific completion functions may use this
+ function to present the same interface as ‘rl_complete()’.
+
+ -- Function: char ** rl_completion_matches (const char *text,
+ rl_compentry_func_t *entry_func)
+ Returns an array of strings which is a list of completions for
+ TEXT. If there are no completions, returns ‘NULL’. The first
+ entry in the returned array is the substitution for TEXT. The
+ remaining entries are the possible completions. The array is
+ terminated with a ‘NULL’ pointer.
+
+ ENTRY_FUNC is a function of two args, and returns a ‘char *’. The
+ first argument is TEXT. The second is a state argument; it is zero
+ on the first call, and non-zero on subsequent calls. ENTRY_FUNC
+ returns a ‘NULL’ pointer to the caller when there are no more
+ matches.
+
+ -- Function: char * rl_filename_completion_function (const char *text,
+ int state)
+ A generator function for filename completion in the general case.
+ TEXT is a partial filename. The Bash source is a useful reference
+ for writing application-specific completion functions (the Bash
+ completion functions call this and other Readline functions).
+
+ -- Function: char * rl_username_completion_function (const char *text,
+ int state)
+ A completion generator for usernames. TEXT contains a partial
+ username preceded by a random character (usually ‘~’). As with all
+ completion generators, STATE is zero on the first call and non-zero
+ for subsequent calls.
+
+\1f
+File: rlman.info, Node: Completion Variables, Next: A Short Completion Example, Prev: Completion Functions, Up: Custom Completers
+
+2.6.3 Completion Variables
+--------------------------
+
+ -- Variable: rl_compentry_func_t * rl_completion_entry_function
+ A pointer to the generator function for ‘rl_completion_matches()’.
+ ‘NULL’ means to use ‘rl_filename_completion_function()’, the
+ default filename completer.
+
+ -- Variable: rl_completion_func_t * rl_attempted_completion_function
+ A pointer to an alternative function to create matches. The
+ function is called with TEXT, START, and END. START and END are
+ indices in ‘rl_line_buffer’ defining the boundaries of TEXT, which
+ is a character string. If this function exists and returns ‘NULL’,
+ or if this variable is set to ‘NULL’, then ‘rl_complete()’ will
+ call the value of ‘rl_completion_entry_function’ to generate
+ matches, otherwise completion will use the array of strings this
+ function returns. If this function sets the
+ ‘rl_attempted_completion_over’ variable to a non-zero value,
+ Readline will not perform its default completion even if this
+ function returns no matches.
+
+ -- Variable: rl_quote_func_t * rl_filename_quoting_function
+ A pointer to a function that will quote a filename in an
+ application-specific fashion. Readline calls this function during
+ filename completion if one of the characters in
+ ‘rl_filename_quote_characters’ appears in a completed filename.
+ The function is called with TEXT, MATCH_TYPE, and QUOTE_POINTER.
+ The TEXT is the filename to be quoted. The MATCH_TYPE is either
+ ‘SINGLE_MATCH’, if there is only one completion match, or
+ ‘MULT_MATCH’. Some functions use this to decide whether or not to
+ insert a closing quote character. The QUOTE_POINTER is a pointer
+ to any opening quote character the user typed. Some functions
+ choose to reset this character if they decide to quote the filename
+ in a different style. It's preferable to preserve the user's
+ quoting as much as possible - it's less disruptive.
+
+ -- Variable: rl_dequote_func_t * rl_filename_dequoting_function
+ A pointer to a function that will remove application-specific
+ quoting characters from a filename before attempting completion, so
+ those characters do not interfere with matching the text against
+ names in the filesystem. It is called with TEXT, the text of the
+ word to be dequoted, and QUOTE_CHAR, which is the quoting character
+ that delimits the filename (usually ‘'’ or ‘"’). If QUOTE_CHAR is
+ zero, the filename was not in a quoted string.
+
+ -- Variable: rl_linebuf_func_t * rl_char_is_quoted_p
+ A pointer to a function to call that determines whether or not a
+ specific character in the line buffer is quoted, according to
+ whatever quoting mechanism the application uses. The function is
+ called with two arguments: TEXT, the text of the line, and INDEX,
+ the index of the character in the line. It is used to decide
+ whether a character found in ‘rl_completer_word_break_characters’
+ should be used to break words for the completer.
+
+ -- Variable: rl_compignore_func_t * rl_ignore_some_completions_function
+ Readline calls this function, if defined, when filename completion
+ is done, after all the matching names have been generated. It is
+ passed a ‘NULL’ terminated array of matches. The first element
+ (‘matches[0]’) is the maximal substring common to all matches.
+ This function can re-arrange the list of matches as required, but
+ must free each element it deletes from the array.
+
+ -- Variable: rl_icppfunc_t * rl_directory_completion_hook
+ This function, if defined, is allowed to modify the directory
+ portion of filenames during completion. It could be used to expand
+ symbolic links or shell variables in pathnames. It is called with
+ the address of a string (the current directory name) as an
+ argument, and may modify that string. If the string is replaced
+ with a new string, the function should free the old value. Any
+ modified directory name should have a trailing slash. The modified
+ value will be used as part of the completion, replacing the
+ directory portion of the pathname the user typed. At the least,
+ even if no other expansion is performed, this function should
+ remove any quote characters from the directory name, because its
+ result will be passed directly to ‘opendir()’.
+
+ The directory completion hook returns an integer that should be
+ non-zero if the function modifies its directory argument. The
+ function should not modify the directory argument if it returns 0.
+
+ -- Variable: rl_icppfunc_t * rl_directory_rewrite_hook;
+ If non-zero, this is the address of a function to call when
+ completing a directory name. This function takes the address of
+ the directory name to be modified as an argument. Unlike
+ ‘rl_directory_completion_hook’, it only modifies the directory name
+ used in ‘opendir()’, not what Readline displays when it prints or
+ inserts the possible completions. Readline calls this before
+ rl_directory_completion_hook. At the least, even if no other
+ expansion is performed, this function should remove any quote
+ characters from the directory name, because its result will be
+ passed directly to ‘opendir()’.
+
+ The directory rewrite hook returns an integer that should be
+ non-zero if the function modifies its directory argument. The
+ function should not modify the directory argument if it returns 0.
+
+ -- Variable: rl_icppfunc_t * rl_filename_stat_hook
+ If non-zero, this is the address of a function for the completer to
+ call before deciding which character to append to a completed name.
+ This function modifies its filename name argument, and Readline
+ passes the modified value to ‘stat()’ to determine the file's type
+ and characteristics. This function does not need to remove quote
+ characters from the filename.
+
+ The stat hook returns an integer that should be non-zero if the
+ function modifies its directory argument. The function should not
+ modify the directory argument if it returns 0.
+
+ -- Variable: rl_dequote_func_t * rl_filename_rewrite_hook
+ If non-zero, this is the address of a function called when reading
+ directory entries from the filesystem for completion and comparing
+ them to the filename portion of the partial word being completed
+ (after its potential modification by ‘rl_completion_rewrite_hook’).
+ The function should perform any necessary application or
+ system-specific conversion on the filename, such as converting
+ between character sets or converting from a filesystem format to a
+ character input format. The function takes two arguments: FNAME,
+ the filename to be converted, and FNLEN, its length in bytes. It
+ must either return its first argument (if no conversion takes
+ place) or the converted filename in newly-allocated memory. The
+ converted form is used to compare against the word to be completed,
+ and, if it matches, is added to the list of matches. Readline will
+ free the allocated string.
+
+ -- Variable: rl_dequote_func_t * rl_completion_rewrite_hook
+ If non-zero, this is the address of a function to call before
+ comparing the filename portion of a word to be completed with
+ directory entries from the filesystem. It modifies what the user
+ typed, as opposed to ‘rl_filename_rewrite_hook’, which modifies
+ filesystem entries. The function takes two arguments: FNAME, the
+ word to be converted, after any ‘rl_filename_dequoting_function’
+ has been applied, and FNLEN, its length in bytes. It must either
+ return its first argument (if no conversion takes place) or the
+ converted filename in newly-allocated memory. The function should
+ perform any necessary application or system-specific conversion on
+ the filename, such as converting between character sets or
+ converting from a character input format to some other format.
+ Readline compares the converted form against directory entries,
+ after their potential modification by ‘rl_filename_rewrite_hook’,
+ and adds any matches to the list of matches. Readline will free
+ the allocated string.
+
+ -- Variable: rl_compdisp_func_t * rl_completion_display_matches_hook
+ If non-zero, then this is the address of a function to call when
+ completing a word would normally display the list of possible
+ matches. Readline calls this function instead of displaying the
+ list itself. It takes three arguments: (‘char **’MATCHES, ‘int’
+ NUM_MATCHES, ‘int’ MAX_LENGTH) where MATCHES is the array of
+ matching strings, NUM_MATCHES is the number of strings in that
+ array, and MAX_LENGTH is the length of the longest string in that
+ array. Readline provides a convenience function,
+ ‘rl_display_match_list’, that takes care of doing the display to
+ Readline's output stream. You may call that function from this
+ hook.
+
+ -- Variable: const char * rl_basic_word_break_characters
+ The basic list of characters that signal a break between words for
+ the completer routine. The default value of this variable is the
+ characters which break words for completion in Bash: ‘"
+ \t\n\"\\'`@$><=;|&{("’.
+
+ -- Variable: const char * rl_basic_quote_characters
+ A list of quote characters which can cause a word break. The
+ default value includes single and double quotes.
+
+ -- Variable: const char * rl_completer_word_break_characters
+ The list of characters that signal a break between words for
+ ‘rl_complete_internal()’. These characters determine how Readline
+ decides what to complete. The default list is the value of
+ ‘rl_basic_word_break_characters’.
+
+ -- Variable: rl_cpvfunc_t * rl_completion_word_break_hook
+ If non-zero, this is the address of a function to call when
+ Readline is deciding where to separate words for word completion.
+ It should return a character string like
+ ‘rl_completer_word_break_characters’ to be used to perform the
+ current completion. The function may choose to set
+ ‘rl_completer_word_break_characters’ itself. If the function
+ returns ‘NULL’, Readline uses ‘rl_completer_word_break_characters’.
+
+ -- Variable: const char * rl_completer_quote_characters
+ A list of characters which can be used to quote a substring of the
+ line. Completion occurs on the entire substring, and within the
+ substring ‘rl_completer_word_break_characters’ are treated as any
+ other character, unless they also appear within this list.
+
+ -- Variable: const char * rl_filename_quote_characters
+ A list of characters that cause Readline to quote a filename when
+ they appear in a completed filename. The default is the null
+ string.
+
+ -- Variable: const char * rl_special_prefixes
+ The list of characters that are word break characters, but should
+ be left in TEXT when it is passed to the completion function.
+ Programs can use this to help determine what kind of completing to
+ do. For instance, Bash sets this variable to "$@" so that it can
+ complete shell variables and hostnames.
+
+ -- Variable: int rl_completion_query_items
+ This determines the maximum number of items that
+ possible-completions will display unconditionally. If there are
+ more possible completions than this, Readline asks the user for
+ confirmation before displaying them. The default value is 100. A
+ negative value indicates that Readline should never ask for
+ confirmation.
+
+ -- Variable: int rl_completion_append_character
+ When a single completion alternative matches at the end of the
+ command line, Readline appends this character to the inserted
+ completion text. The default is a space character (‘ ’). Setting
+ this to the null character (‘\0’) prevents anything being appended
+ automatically. This can be changed in application-specific
+ completion functions to provide the "most sensible word separator
+ character" according to an application-specific command line syntax
+ specification. It is set to the default before calling any
+ application-specific completion function, and may only be changed
+ within such a function.
+
+ -- Variable: int rl_completion_suppress_append
+ If non-zero, Readline will not append the
+ RL_COMPLETION_APPEND_CHARACTER to matches at the end of the command
+ line, as described above. It is set to 0 before calling any
+ application-specific completion function, and may only be changed
+ within such a function.
+
+ -- Variable: int rl_completion_suppress_quote
+ If non-zero, Readline does not append a matching quote character
+ when performing completion on a quoted string. It is set to 0
+ before calling any application-specific completion function, and
+ may only be changed within such a function.
+
+ -- Variable: int rl_completion_found_quote
+ When Readline is completing quoted text, it sets this variable to a
+ non-zero value if the word being completed contains or is delimited
+ by any quoting characters, including backslashes. This is set
+ before calling any application-specific completion function.
+
+ -- Variable: int rl_completion_quote_character
+ When Readline is completing quoted text, as delimited by one of the
+ characters in RL_COMPLETER_QUOTE_CHARACTERS, it sets this variable
+ to the quoting character it found. This is set before calling any
+ application-specific completion function.
+
+ -- Variable: int rl_completion_mark_symlink_dirs
+ If non-zero, Readline appends a slash to completed filenames that
+ are symbolic links to directory names, subject to the value of the
+ user-settable MARK-DIRECTORIES variable. This variable exists so
+ that application-specific completion functions can override the
+ user's global preference (set via the MARK-SYMLINKED-DIRECTORIES
+ Readline variable) if appropriate. This variable is set to the
+ user's preference before calling any application-specific
+ completion function, so unless that function modifies the value,
+ Readline will honor the user's preferences.
+
+ -- Variable: int rl_ignore_completion_duplicates
+ If non-zero, then Readline removes duplicates in the set of
+ possible completions. The default is 1.
+
+ -- Variable: int rl_filename_completion_desired
+ Non-zero means that the results of the matches are to be treated as
+ filenames. This is _always_ zero when completion is attempted, and
+ can only be changed within an application-specific completion
+ function. If it is set to a non-zero value by such a function,
+ directory names have a slash appended and Readline attempts to
+ quote completed filenames if they contain any characters in
+ ‘rl_filename_quote_characters’ and ‘rl_filename_quoting_desired’ is
+ set to a non-zero value.
+
+ -- Variable: int rl_filename_quoting_desired
+ Non-zero means that the results of the matches are to be quoted
+ using double quotes (or an application-specific quoting mechanism)
+ if the completed filename contains any characters in
+ ‘rl_filename_quote_chars’. This is _always_ non-zero when
+ completion is attempted, and can only be changed within an
+ application-specific completion function. The quoting is performed
+ via a call to the function pointed to by
+ ‘rl_filename_quoting_function’.
+
+ -- Variable: int rl_full_quoting_desired
+ Non-zero means that Readline should apply filename-style quoting,
+ including any application-specified quoting mechanism, to all
+ completion matches even if we are not otherwise treating the
+ matches as filenames. This is _always_ zero when completion is
+ attempted, and can only be changed within an application-specific
+ completion function. The quoting is effected via a call to the
+ function pointed to by ‘rl_filename_quoting_function’.
+
+ -- Variable: int rl_attempted_completion_over
+ If an application-specific completion function assigned to
+ ‘rl_attempted_completion_function’ sets this variable to a non-zero
+ value, Readline will not perform its default filename completion
+ even if the application's completion function returns no matches.
+ It should be set only by an application's completion function.
+
+ -- Variable: int rl_sort_completion_matches
+ If an application sets this variable to 0, Readline will not sort
+ the list of completions (which implies that it cannot remove any
+ duplicate completions). The default value is 1, which means that
+ Readline will sort the completions and, depending on the value of
+ ‘rl_ignore_completion_duplicates’, will attempt to remove duplicate
+ matches.
+
+ -- Variable: int rl_completion_type
+ Set to a character describing the type of completion Readline is
+ currently attempting; see the description of
+ ‘rl_complete_internal()’ (*note Completion Functions::) for the
+ list of characters. This is set to the appropriate value before
+ calling any application-specific completion function, so these
+ functions can present the same interface as ‘rl_complete()’.
+
+ -- Variable: int rl_completion_invoking_key
+ Set to the final character in the key sequence that invoked one of
+ the completion functions that call ‘rl_complete_internal()’. This
+ is set to the appropriate value before calling any
+ application-specific completion function.
+
+ -- Variable: int rl_inhibit_completion
+ If this variable is non-zero, Readline does not perform completion,
+ even if a key binding indicates it should. The completion
+ character will be inserted as any other bound to ‘self-insert’.
+
+\1f
+File: rlman.info, Node: A Short Completion Example, Prev: Completion Variables, Up: Custom Completers
+
+2.6.4 A Short Completion Example
+--------------------------------
+
+Here is a small application demonstrating the use of the GNU Readline
+library. It is called ‘fileman’, and the source code resides in
+‘examples/fileman.c’. This sample application provides command name
+completion, line editing features, and access to the history list.
+
+ /* fileman.c -- A tiny application which demonstrates how to use the
+ GNU Readline library. This application interactively allows users
+ to manipulate files and their modes. */
+
+ #ifdef HAVE_CONFIG_H
+ # include <config.h>
+ #endif
+
+ #include <sys/types.h>
+ #ifdef HAVE_SYS_FILE_H
+ # include <sys/file.h>
+ #endif
+ #include <sys/stat.h>
+
+ #ifdef HAVE_UNISTD_H
+ # include <unistd.h>
+ #endif
+
+ #include <fcntl.h>
+ #include <stdio.h>
+ #include <errno.h>
+ #include <locale.h>
+
+ #if defined (HAVE_STRING_H)
+ # include <string.h>
+ #else /* !HAVE_STRING_H */
+ # include <strings.h>
+ #endif /* !HAVE_STRING_H */
+
+ #ifdef HAVE_STDLIB_H
+ # include <stdlib.h>
+ #endif
+
+ #include <time.h>
+
+ #include <readline/readline.h>
+ #include <readline/history.h>
+
+ extern char *xmalloc PARAMS((size_t));
+
+ /* The names of functions that actually do the manipulation. */
+ int com_list PARAMS((char *));
+ int com_view PARAMS((char *));
+ int com_rename PARAMS((char *));
+ int com_stat PARAMS((char *));
+ int com_pwd PARAMS((char *));
+ int com_delete PARAMS((char *));
+ int com_help PARAMS((char *));
+ int com_cd PARAMS((char *));
+ int com_quit PARAMS((char *));
+
+ /* A structure which contains information on the commands this program
+ can understand. */
+
+ typedef struct {
+ char *name; /* User printable name of the function. */
+ rl_icpfunc_t *func; /* Function to call to do the job. */
+ char *doc; /* Documentation for this function. */
+ } COMMAND;
+
+ COMMAND commands[] = {
+ { "cd", com_cd, "Change to directory DIR" },
+ { "delete", com_delete, "Delete FILE" },
+ { "help", com_help, "Display this text" },
+ { "?", com_help, "Synonym for `help'" },
+ { "list", com_list, "List files in DIR" },
+ { "ls", com_list, "Synonym for `list'" },
+ { "pwd", com_pwd, "Print the current working directory" },
+ { "quit", com_quit, "Quit using Fileman" },
+ { "rename", com_rename, "Rename FILE to NEWNAME" },
+ { "stat", com_stat, "Print out statistics on FILE" },
+ { "view", com_view, "View the contents of FILE" },
+ { (char *)NULL, (rl_icpfunc_t *)NULL, (char *)NULL }
+ };
+
+ /* Forward declarations. */
+ char *stripwhite (char *);
+ COMMAND *find_command (char *);
+
+ /* The name of this program, as taken from argv[0]. */
+ char *progname;
+
+ /* When non-zero, this global means the user is done using this program. */
+ int done;
+
+ char *
+ dupstr (char *s)
+ {
+ char *r;
+
+ r = xmalloc (strlen (s) + 1);
+ strcpy (r, s);
+ return (r);
+ }
+
+ int
+ main (int argc, char **argv)
+ {
+ char *line, *s;
+
+ setlocale (LC_ALL, "");
+
+ progname = argv[0];
+
+ initialize_readline (); /* Bind our completer. */
+
+ /* Loop reading and executing lines until the user quits. */
+ for ( ; done == 0; )
+ {
+ line = readline ("FileMan: ");
+
+ if (!line)
+ break;
+
+ /* Remove leading and trailing whitespace from the line.
+ Then, if there is anything left, add it to the history list
+ and execute it. */
+ s = stripwhite (line);
+
+ if (*s)
+ {
+ add_history (s);
+ execute_line (s);
+ }
+
+ free (line);
+ }
+ exit (0);
+ }
+
+ /* Execute a command line. */
+ int
+ execute_line (char *line)
+ {
+ register int i;
+ COMMAND *command;
+ char *word;
+
+ /* Isolate the command word. */
+ i = 0;
+ while (line[i] && whitespace (line[i]))
+ i++;
+ word = line + i;
+
+ while (line[i] && !whitespace (line[i]))
+ i++;
+
+ if (line[i])
+ line[i++] = '\0';
+
+ command = find_command (word);
+
+ if (!command)
+ {
+ fprintf (stderr, "%s: No such command for FileMan.\n", word);
+ return (-1);
+ }
+
+ /* Get argument to command, if any. */
+ while (whitespace (line[i]))
+ i++;
+
+ word = line + i;
+
+ /* Call the function. */
+ return ((*(command->func)) (word));
+ }
+
+ /* Look up NAME as the name of a command, and return a pointer to that
+ command. Return a NULL pointer if NAME isn't a command name. */
+ COMMAND *
+ find_command (char *name)
+ {
+ register int i;
+
+ for (i = 0; commands[i].name; i++)
+ if (strcmp (name, commands[i].name) == 0)
+ return (&commands[i]);
+
+ return ((COMMAND *)NULL);
+ }
+
+ /* Strip whitespace from the start and end of STRING. Return a pointer
+ into STRING. */
+ char *
+ stripwhite (char *string)
+ {
+ register char *s, *t;
+
+ for (s = string; whitespace (*s); s++)
+ ;
+
+ if (*s == 0)
+ return (s);
+
+ t = s + strlen (s) - 1;
+ while (t > s && whitespace (*t))
+ t--;
+ *++t = '\0';
+
+ return s;
+ }
+
+ /* **************************************************************** */
+ /* */
+ /* Interface to Readline Completion */
+ /* */
+ /* **************************************************************** */
+
+ char *command_generator (const char *, int);
+ char **fileman_completion (const char *, int, int);
+
+ /* Tell the GNU Readline library how to complete. We want to try to complete
+ on command names if this is the first word in the line, or on filenames
+ if not. */
+ void
+ initialize_readline (void)
+ {
+ /* Allow conditional parsing of the ~/.inputrc file. */
+ rl_readline_name = "FileMan";
+
+ /* Tell the completer that we want a crack first. */
+ rl_attempted_completion_function = fileman_completion;
+ }
+
+ /* Attempt to complete on the contents of TEXT. START and END bound the
+ region of rl_line_buffer that contains the word to complete. TEXT is
+ the word to complete. We can use the entire contents of rl_line_buffer
+ in case we want to do some simple parsing. Return the array of matches,
+ or NULL if there aren't any. */
+ char **
+ fileman_completion (const char *text, int start, int end)
+ {
+ char **matches;
+
+ matches = (char **)NULL;
+
+ /* If this word is at the start of the line, then it is a command
+ to complete. Otherwise it is the name of a file in the current
+ directory. */
+ if (start == 0)
+ matches = rl_completion_matches (text, command_generator);
+
+ return (matches);
+ }
+
+ /* Generator function for command completion. STATE lets us know whether
+ to start from scratch; without any state (i.e. STATE == 0), then we
+ start at the top of the list. */
+ char *
+ command_generator (const char *text, int state)
+ {
+ static int list_index, len;
+ char *name;
+
+ /* If this is a new word to complete, initialize now. This includes
+ saving the length of TEXT for efficiency, and initializing the index
+ variable to 0. */
+ if (!state)
+ {
+ list_index = 0;
+ len = strlen (text);
+ }
+
+ /* Return the next name which partially matches from the command list. */
+ while (name = commands[list_index].name)
+ {
+ list_index++;
+
+ if (strncmp (name, text, len) == 0)
+ return (dupstr(name));
+ }
+
+ /* If no names matched, then return NULL. */
+ return ((char *)NULL);
+ }
+
+ /* **************************************************************** */
+ /* */
+ /* FileMan Commands */
+ /* */
+ /* **************************************************************** */
+
+ /* String to pass to system (). This is for the LIST, VIEW and RENAME
+ commands. */
+ static char syscom[1024];
+
+ /* List the file(s) named in arg. */
+ int
+ com_list (char *arg)
+ {
+ if (!arg)
+ arg = "";
+
+ snprintf (syscom, sizeof (syscom), "ls -FClg %s", arg);
+ return (system (syscom));
+ }
+
+ int
+ com_view (char *arg)
+ {
+ if (!valid_argument ("view", arg))
+ return 1;
+
+ #if defined (__MSDOS__)
+ /* more.com doesn't grok slashes in pathnames */
+ snprintf (syscom, sizeof (syscom), "less %s", arg);
+ #else
+ snprintf (syscom, sizeof (syscom), "more %s", arg);
+ #endif
+ return (system (syscom));
+ }
+
+ int
+ com_rename (char *arg)
+ {
+ too_dangerous ("rename");
+ return (1);
+ }
+
+ int
+ com_stat (char *arg)
+ {
+ struct stat finfo;
+
+ if (!valid_argument ("stat", arg))
+ return (1);
+
+ if (stat (arg, &finfo) == -1)
+ {
+ perror (arg);
+ return (1);
+ }
+
+ printf ("Statistics for `%s':\n", arg);
+
+ printf ("%s has %d link%s, and is %d byte%s in length.\n",
+ arg,
+ finfo.st_nlink,
+ (finfo.st_nlink == 1) ? "" : "s",
+ finfo.st_size,
+ (finfo.st_size == 1) ? "" : "s");
+ printf ("Inode Last Change at: %s", ctime (&finfo.st_ctime));
+ printf (" Last access at: %s", ctime (&finfo.st_atime));
+ printf (" Last modified at: %s", ctime (&finfo.st_mtime));
+ return (0);
+ }
+
+ int
+ com_delete (char *arg)
+ {
+ too_dangerous ("delete");
+ return (1);
+ }
+
+ /* Print out help for ARG, or for all of the commands if ARG is
+ not present. */
+ int
+ com_help (char *arg)
+ {
+ register int i;
+ int printed = 0;
+
+ for (i = 0; commands[i].name; i++)
+ {
+ if (!*arg || (strcmp (arg, commands[i].name) == 0))
+ {
+ printf ("%s\t\t%s.\n", commands[i].name, commands[i].doc);
+ printed++;
+ }
+ }
+
+ if (!printed)
+ {
+ printf ("No commands match `%s'. Possibilities are:\n", arg);
+
+ for (i = 0; commands[i].name; i++)
+ {
+ /* Print in six columns. */
+ if (printed == 6)
+ {
+ printed = 0;
+ printf ("\n");
+ }
+
+ printf ("%s\t", commands[i].name);
+ printed++;
+ }
+
+ if (printed)
+ printf ("\n");
+ }
+ return (0);
+ }
+
+ /* Change to the directory ARG. */
+ int
+ com_cd (char *arg)
+ {
+ if (chdir (arg) == -1)
+ {
+ perror (arg);
+ return 1;
+ }
+
+ com_pwd ("");
+ return (0);
+ }
+
+ /* Print out the current working directory. */
+ int
+ com_pwd (char *ignore)
+ {
+ char dir[1024], *s;
+
+ s = getcwd (dir, sizeof(dir) - 1);
+ if (s == 0)
+ {
+ printf ("Error getting pwd: %s\n", dir);
+ return 1;
+ }
+
+ printf ("Current directory is %s\n", dir);
+ return 0;
+ }
+
+ /* The user wishes to quit using this program. Just set DONE non-zero. */
+ int
+ com_quit (char *arg)
+ {
+ done = 1;
+ return (0);
+ }
+
+ /* Function which tells you that you can't do this. */
+ void
+ too_dangerous (char *caller)
+ {
+ fprintf (stderr,
+ "%s: Too dangerous for me to distribute. Write it yourself.\n",
+ caller);
+ }
+
+ /* Return non-zero if ARG is a valid argument for CALLER, else print
+ an error message and return zero. */
+ int
+ valid_argument (char *caller, char *arg)
+ {
+ if (!arg || !*arg)
+ {
+ fprintf (stderr, "%s: Argument required.\n", caller);
+ return (0);
+ }
+
+ return (1);
+ }
+
+\1f
+File: rlman.info, Node: GNU Free Documentation License, Next: Concept Index, Prev: Programming with GNU Readline, Up: Top
+
+Appendix A GNU Free Documentation License
+*****************************************
+
+ Version 1.3, 3 November 2008
+
+ Copyright © 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
+ <http://fsf.org/>
+
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ 0. PREAMBLE
+
+ The purpose of this License is to make a manual, textbook, or other
+ functional and useful document “free” in the sense of freedom: to
+ assure everyone the effective freedom to copy and redistribute it,
+ with or without modifying it, either commercially or
+ noncommercially. Secondarily, this License preserves for the
+ author and publisher a way to get credit for their work, while not
+ being considered responsible for modifications made by others.
+
+ This License is a kind of "copyleft", which means that derivative
+ works of the document must themselves be free in the same sense.
+ It complements the GNU General Public License, which is a copyleft
+ license designed for free software.
+
+ We have designed this License in order to use it for manuals for
+ free software, because free software needs free documentation: a
+ free program should come with manuals providing the same freedoms
+ that the software does. But this License is not limited to
+ software manuals; it can be used for any textual work, regardless
+ of subject matter or whether it is published as a printed book. We
+ recommend this License principally for works whose purpose is
+ instruction or reference.
+
+ 1. APPLICABILITY AND DEFINITIONS
+
+ This License applies to any manual or other work, in any medium,
+ that contains a notice placed by the copyright holder saying it can
+ be distributed under the terms of this License. Such a notice
+ grants a world-wide, royalty-free license, unlimited in duration,
+ to use that work under the conditions stated herein. The
+ "Document", below, refers to any such manual or work. Any member
+ of the public is a licensee, and is addressed as "you". You accept
+ the license if you copy, modify or distribute the work in a way
+ requiring permission under copyright law.
+
+ A "Modified Version" of the Document means any work containing the
+ Document or a portion of it, either copied verbatim, or with
+ modifications and/or translated into another language.
+
+ A "Secondary Section" is a named appendix or a front-matter section
+ of the Document that deals exclusively with the relationship of the
+ publishers or authors of the Document to the Document's overall
+ subject (or to related matters) and contains nothing that could
+ fall directly within that overall subject. (Thus, if the Document
+ is in part a textbook of mathematics, a Secondary Section may not
+ explain any mathematics.) The relationship could be a matter of
+ historical connection with the subject or with related matters, or
+ of legal, commercial, philosophical, ethical or political position
+ regarding them.
+
+ The "Invariant Sections" are certain Secondary Sections whose
+ titles are designated, as being those of Invariant Sections, in the
+ notice that says that the Document is released under this License.
+ If a section does not fit the above definition of Secondary then it
+ is not allowed to be designated as Invariant. The Document may
+ contain zero Invariant Sections. If the Document does not identify
+ any Invariant Sections then there are none.
+
+ The "Cover Texts" are certain short passages of text that are
+ listed, as Front-Cover Texts or Back-Cover Texts, in the notice
+ that says that the Document is released under this License. A
+ Front-Cover Text may be at most 5 words, and a Back-Cover Text may
+ be at most 25 words.
+
+ A "Transparent" copy of the Document means a machine-readable copy,
+ represented in a format whose specification is available to the
+ general public, that is suitable for revising the document
+ straightforwardly with generic text editors or (for images composed
+ of pixels) generic paint programs or (for drawings) some widely
+ available drawing editor, and that is suitable for input to text
+ formatters or for automatic translation to a variety of formats
+ suitable for input to text formatters. A copy made in an otherwise
+ Transparent file format whose markup, or absence of markup, has
+ been arranged to thwart or discourage subsequent modification by
+ readers is not Transparent. An image format is not Transparent if
+ used for any substantial amount of text. A copy that is not
+ "Transparent" is called "Opaque".
+
+ Examples of suitable formats for Transparent copies include plain
+ ASCII without markup, Texinfo input format, LaTeX input format,
+ SGML or XML using a publicly available DTD, and standard-conforming
+ simple HTML, PostScript or PDF designed for human modification.
+ Examples of transparent image formats include PNG, XCF and JPG.
+ Opaque formats include proprietary formats that can be read and
+ edited only by proprietary word processors, SGML or XML for which
+ the DTD and/or processing tools are not generally available, and
+ the machine-generated HTML, PostScript or PDF produced by some word
+ processors for output purposes only.
+
+ The "Title Page" means, for a printed book, the title page itself,
+ plus such following pages as are needed to hold, legibly, the
+ material this License requires to appear in the title page. For
+ works in formats which do not have any title page as such, "Title
+ Page" means the text near the most prominent appearance of the
+ work's title, preceding the beginning of the body of the text.
+
+ The "publisher" means any person or entity that distributes copies
+ of the Document to the public.
+
+ A section "Entitled XYZ" means a named subunit of the Document
+ whose title either is precisely XYZ or contains XYZ in parentheses
+ following text that translates XYZ in another language. (Here XYZ
+ stands for a specific section name mentioned below, such as
+ "Acknowledgements", "Dedications", "Endorsements", or "History".)
+ To "Preserve the Title" of such a section when you modify the
+ Document means that it remains a section "Entitled XYZ" according
+ to this definition.
+
+ The Document may include Warranty Disclaimers next to the notice
+ which states that this License applies to the Document. These
+ Warranty Disclaimers are considered to be included by reference in
+ this License, but only as regards disclaiming warranties: any other
+ implication that these Warranty Disclaimers may have is void and
+ has no effect on the meaning of this License.
+
+ 2. VERBATIM COPYING
+
+ You may copy and distribute the Document in any medium, either
+ commercially or noncommercially, provided that this License, the
+ copyright notices, and the license notice saying this License
+ applies to the Document are reproduced in all copies, and that you
+ add no other conditions whatsoever to those of this License. You
+ may not use technical measures to obstruct or control the reading
+ or further copying of the copies you make or distribute. However,
+ you may accept compensation in exchange for copies. If you
+ distribute a large enough number of copies you must also follow the
+ conditions in section 3.
+
+ You may also lend copies, under the same conditions stated above,
+ and you may publicly display copies.
+
+ 3. COPYING IN QUANTITY
+
+ If you publish printed copies (or copies in media that commonly
+ have printed covers) of the Document, numbering more than 100, and
+ the Document's license notice requires Cover Texts, you must
+ enclose the copies in covers that carry, clearly and legibly, all
+ these Cover Texts: Front-Cover Texts on the front cover, and
+ Back-Cover Texts on the back cover. Both covers must also clearly
+ and legibly identify you as the publisher of these copies. The
+ front cover must present the full title with all words of the title
+ equally prominent and visible. You may add other material on the
+ covers in addition. Copying with changes limited to the covers, as
+ long as they preserve the title of the Document and satisfy these
+ conditions, can be treated as verbatim copying in other respects.
+
+ If the required texts for either cover are too voluminous to fit
+ legibly, you should put the first ones listed (as many as fit
+ reasonably) on the actual cover, and continue the rest onto
+ adjacent pages.
+
+ If you publish or distribute Opaque copies of the Document
+ numbering more than 100, you must either include a machine-readable
+ Transparent copy along with each Opaque copy, or state in or with
+ each Opaque copy a computer-network location from which the general
+ network-using public has access to download using public-standard
+ network protocols a complete Transparent copy of the Document, free
+ of added material. If you use the latter option, you must take
+ reasonably prudent steps, when you begin distribution of Opaque
+ copies in quantity, to ensure that this Transparent copy will
+ remain thus accessible at the stated location until at least one
+ year after the last time you distribute an Opaque copy (directly or
+ through your agents or retailers) of that edition to the public.
+
+ It is requested, but not required, that you contact the authors of
+ the Document well before redistributing any large number of copies,
+ to give them a chance to provide you with an updated version of the
+ Document.
+
+ 4. MODIFICATIONS
+
+ You may copy and distribute a Modified Version of the Document
+ under the conditions of sections 2 and 3 above, provided that you
+ release the Modified Version under precisely this License, with the
+ Modified Version filling the role of the Document, thus licensing
+ distribution and modification of the Modified Version to whoever
+ possesses a copy of it. In addition, you must do these things in
+ the Modified Version:
+
+ A. Use in the Title Page (and on the covers, if any) a title
+ distinct from that of the Document, and from those of previous
+ versions (which should, if there were any, be listed in the
+ History section of the Document). You may use the same title
+ as a previous version if the original publisher of that
+ version gives permission.
+
+ B. List on the Title Page, as authors, one or more persons or
+ entities responsible for authorship of the modifications in
+ the Modified Version, together with at least five of the
+ principal authors of the Document (all of its principal
+ authors, if it has fewer than five), unless they release you
+ from this requirement.
+
+ C. State on the Title page the name of the publisher of the
+ Modified Version, as the publisher.
+
+ D. Preserve all the copyright notices of the Document.
+
+ E. Add an appropriate copyright notice for your modifications
+ adjacent to the other copyright notices.
+
+ F. Include, immediately after the copyright notices, a license
+ notice giving the public permission to use the Modified
+ Version under the terms of this License, in the form shown in
+ the Addendum below.
+
+ G. Preserve in that license notice the full lists of Invariant
+ Sections and required Cover Texts given in the Document's
+ license notice.
+
+ H. Include an unaltered copy of this License.
+
+ I. Preserve the section Entitled "History", Preserve its Title,
+ and add to it an item stating at least the title, year, new
+ authors, and publisher of the Modified Version as given on the
+ Title Page. If there is no section Entitled "History" in the
+ Document, create one stating the title, year, authors, and
+ publisher of the Document as given on its Title Page, then add
+ an item describing the Modified Version as stated in the
+ previous sentence.
+
+ J. Preserve the network location, if any, given in the Document
+ for public access to a Transparent copy of the Document, and
+ likewise the network locations given in the Document for
+ previous versions it was based on. These may be placed in the
+ "History" section. You may omit a network location for a work
+ that was published at least four years before the Document
+ itself, or if the original publisher of the version it refers
+ to gives permission.
+
+ K. For any section Entitled "Acknowledgements" or "Dedications",
+ Preserve the Title of the section, and preserve in the section
+ all the substance and tone of each of the contributor
+ acknowledgements and/or dedications given therein.
+
+ L. Preserve all the Invariant Sections of the Document, unaltered
+ in their text and in their titles. Section numbers or the
+ equivalent are not considered part of the section titles.
+
+ M. Delete any section Entitled "Endorsements". Such a section
+ may not be included in the Modified Version.
+
+ N. Do not retitle any existing section to be Entitled
+ "Endorsements" or to conflict in title with any Invariant
+ Section.
+
+ O. Preserve any Warranty Disclaimers.
+
+ If the Modified Version includes new front-matter sections or
+ appendices that qualify as Secondary Sections and contain no
+ material copied from the Document, you may at your option designate
+ some or all of these sections as invariant. To do this, add their
+ titles to the list of Invariant Sections in the Modified Version's
+ license notice. These titles must be distinct from any other
+ section titles.
+
+ You may add a section Entitled "Endorsements", provided it contains
+ nothing but endorsements of your Modified Version by various
+ parties--for example, statements of peer review or that the text
+ has been approved by an organization as the authoritative
+ definition of a standard.
+
+ You may add a passage of up to five words as a Front-Cover Text,
+ and a passage of up to 25 words as a Back-Cover Text, to the end of
+ the list of Cover Texts in the Modified Version. Only one passage
+ of Front-Cover Text and one of Back-Cover Text may be added by (or
+ through arrangements made by) any one entity. If the Document
+ already includes a cover text for the same cover, previously added
+ by you or by arrangement made by the same entity you are acting on
+ behalf of, you may not add another; but you may replace the old
+ one, on explicit permission from the previous publisher that added
+ the old one.
+
+ The author(s) and publisher(s) of the Document do not by this
+ License give permission to use their names for publicity for or to
+ assert or imply endorsement of any Modified Version.
+
+ 5. COMBINING DOCUMENTS
+
+ You may combine the Document with other documents released under
+ this License, under the terms defined in section 4 above for
+ modified versions, provided that you include in the combination all
+ of the Invariant Sections of all of the original documents,
+ unmodified, and list them all as Invariant Sections of your
+ combined work in its license notice, and that you preserve all
+ their Warranty Disclaimers.
+
+ The combined work need only contain one copy of this License, and
+ multiple identical Invariant Sections may be replaced with a single
+ copy. If there are multiple Invariant Sections with the same name
+ but different contents, make the title of each such section unique
+ by adding at the end of it, in parentheses, the name of the
+ original author or publisher of that section if known, or else a
+ unique number. Make the same adjustment to the section titles in
+ the list of Invariant Sections in the license notice of the
+ combined work.
+
+ In the combination, you must combine any sections Entitled
+ "History" in the various original documents, forming one section
+ Entitled "History"; likewise combine any sections Entitled
+ "Acknowledgements", and any sections Entitled "Dedications". You
+ must delete all sections Entitled "Endorsements."
+
+ 6. COLLECTIONS OF DOCUMENTS
+
+ You may make a collection consisting of the Document and other
+ documents released under this License, and replace the individual
+ copies of this License in the various documents with a single copy
+ that is included in the collection, provided that you follow the
+ rules of this License for verbatim copying of each of the documents
+ in all other respects.
+
+ You may extract a single document from such a collection, and
+ distribute it individually under this License, provided you insert
+ a copy of this License into the extracted document, and follow this
+ License in all other respects regarding verbatim copying of that
+ document.
+
+ 7. AGGREGATION WITH INDEPENDENT WORKS
+
+ A compilation of the Document or its derivatives with other
+ separate and independent documents or works, in or on a volume of a
+ storage or distribution medium, is called an "aggregate" if the
+ copyright resulting from the compilation is not used to limit the
+ legal rights of the compilation's users beyond what the individual
+ works permit. When the Document is included in an aggregate, this
+ License does not apply to the other works in the aggregate which
+ are not themselves derivative works of the Document.
+
+ If the Cover Text requirement of section 3 is applicable to these
+ copies of the Document, then if the Document is less than one half
+ of the entire aggregate, the Document's Cover Texts may be placed
+ on covers that bracket the Document within the aggregate, or the
+ electronic equivalent of covers if the Document is in electronic
+ form. Otherwise they must appear on printed covers that bracket
+ the whole aggregate.
+
+ 8. TRANSLATION
+
+ Translation is considered a kind of modification, so you may
+ distribute translations of the Document under the terms of section
+ 4. Replacing Invariant Sections with translations requires special
+ permission from their copyright holders, but you may include
+ translations of some or all Invariant Sections in addition to the
+ original versions of these Invariant Sections. You may include a
+ translation of this License, and all the license notices in the
+ Document, and any Warranty Disclaimers, provided that you also
+ include the original English version of this License and the
+ original versions of those notices and disclaimers. In case of a
+ disagreement between the translation and the original version of
+ this License or a notice or disclaimer, the original version will
+ prevail.
+
+ If a section in the Document is Entitled "Acknowledgements",
+ "Dedications", or "History", the requirement (section 4) to
+ Preserve its Title (section 1) will typically require changing the
+ actual title.
+
+ 9. TERMINATION
+
+ You may not copy, modify, sublicense, or distribute the Document
+ except as expressly provided under this License. Any attempt
+ otherwise to copy, modify, sublicense, or distribute it is void,
+ and will automatically terminate your rights under this License.
+
+ However, if you cease all violation of this License, then your
+ license from a particular copyright holder is reinstated (a)
+ provisionally, unless and until the copyright holder explicitly and
+ finally terminates your license, and (b) permanently, if the
+ copyright holder fails to notify you of the violation by some
+ reasonable means prior to 60 days after the cessation.
+
+ Moreover, your license from a particular copyright holder is
+ reinstated permanently if the copyright holder notifies you of the
+ violation by some reasonable means, this is the first time you have
+ received notice of violation of this License (for any work) from
+ that copyright holder, and you cure the violation prior to 30 days
+ after your receipt of the notice.
+
+ Termination of your rights under this section does not terminate
+ the licenses of parties who have received copies or rights from you
+ under this License. If your rights have been terminated and not
+ permanently reinstated, receipt of a copy of some or all of the
+ same material does not give you any rights to use it.
+
+ 10. FUTURE REVISIONS OF THIS LICENSE
+
+ The Free Software Foundation may publish new, revised versions of
+ the GNU Free Documentation License from time to time. Such new
+ versions will be similar in spirit to the present version, but may
+ differ in detail to address new problems or concerns. See
+ <http://www.gnu.org/copyleft/>.
+
+ Each version of the License is given a distinguishing version
+ number. If the Document specifies that a particular numbered
+ version of this License "or any later version" applies to it, you
+ have the option of following the terms and conditions either of
+ that specified version or of any later version that has been
+ published (not as a draft) by the Free Software Foundation. If the
+ Document does not specify a version number of this License, you may
+ choose any version ever published (not as a draft) by the Free
+ Software Foundation. If the Document specifies that a proxy can
+ decide which future versions of this License can be used, that
+ proxy's public statement of acceptance of a version permanently
+ authorizes you to choose that version for the Document.
+
+ 11. RELICENSING
+
+ "Massive Multiauthor Collaboration Site" (or "MMC Site") means any
+ World Wide Web server that publishes copyrightable works and also
+ provides prominent facilities for anybody to edit those works. A
+ public wiki that anybody can edit is an example of such a server.
+ A "Massive Multiauthor Collaboration" (or "MMC") contained in the
+ site means any set of copyrightable works thus published on the MMC
+ site.
+
+ "CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0
+ license published by Creative Commons Corporation, a not-for-profit
+ corporation with a principal place of business in San Francisco,
+ California, as well as future copyleft versions of that license
+ published by that same organization.
+
+ "Incorporate" means to publish or republish a Document, in whole or
+ in part, as part of another Document.
+
+ An MMC is "eligible for relicensing" if it is licensed under this
+ License, and if all works that were first published under this
+ License somewhere other than this MMC, and subsequently
+ incorporated in whole or in part into the MMC, (1) had no cover
+ texts or invariant sections, and (2) were thus incorporated prior
+ to November 1, 2008.
+
+ The operator of an MMC Site may republish an MMC contained in the
+ site under CC-BY-SA on the same site at any time before August 1,
+ 2009, provided the MMC is eligible for relicensing.
+
+ADDENDUM: How to use this License for your documents
+====================================================
+
+To use this License in a document you have written, include a copy of
+the License in the document and put the following copyright and license
+notices just after the title page:
+
+ Copyright (C) YEAR YOUR NAME.
+ Permission is granted to copy, distribute and/or modify this document
+ under the terms of the GNU Free Documentation License, Version 1.3
+ or any later version published by the Free Software Foundation;
+ with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
+ Texts. A copy of the license is included in the section entitled ``GNU
+ Free Documentation License''.
+
+ If you have Invariant Sections, Front-Cover Texts and Back-Cover
+Texts, replace the "with...Texts." line with this:
+
+ with the Invariant Sections being LIST THEIR TITLES, with
+ the Front-Cover Texts being LIST, and with the Back-Cover Texts
+ being LIST.
+
+ If you have Invariant Sections without Cover Texts, or some other
+combination of the three, merge those two alternatives to suit the
+situation.
+
+ If your document contains nontrivial examples of program code, we
+recommend releasing these examples in parallel under your choice of free
+software license, such as the GNU General Public License, to permit
+their use in free software.
+
+\1f
+File: rlman.info, Node: Concept Index, Next: Function and Variable Index, Prev: GNU Free Documentation License, Up: Top
+
+Concept Index
+*************
+
+\0\b[index\0\b]
+* Menu:
+
+* application-specific completion functions: Custom Completers.
+ (line 6)
+* command editing: Readline Bare Essentials.
+ (line 6)
+* editing command lines: Readline Bare Essentials.
+ (line 6)
+* initialization file, readline: Readline Init File. (line 6)
+* interaction, readline: Readline Interaction. (line 6)
+* kill ring: Readline Killing Commands.
+ (line 18)
+* killing text: Readline Killing Commands.
+ (line 6)
+* notation, readline: Readline Bare Essentials.
+ (line 6)
+* readline, function: Basic Behavior. (line 11)
+* variables, readline: Readline Init File Syntax.
+ (line 34)
+* yanking text: Readline Killing Commands.
+ (line 6)
+
+\1f
+File: rlman.info, Node: Function and Variable Index, Prev: Concept Index, Up: Top
+
+Function and Variable Index
+***************************
+
+\0\b[index\0\b]
+* Menu:
+
+* _rl_digit_p: Utility Functions. (line 59)
+* _rl_digit_value: Utility Functions. (line 70)
+* _rl_lowercase_p: Utility Functions. (line 56)
+* _rl_to_lower: Utility Functions. (line 66)
+* _rl_to_upper: Utility Functions. (line 62)
+* _rl_uppercase_p: Utility Functions. (line 53)
+* abort (C-g): Miscellaneous Commands.
+ (line 10)
+* accept-line (Newline or Return): Commands For History.
+ (line 6)
+* active-region-end-color: Readline Init File Syntax.
+ (line 48)
+* active-region-start-color: Readline Init File Syntax.
+ (line 35)
+* backward-char (C-b): Commands For Moving. (line 17)
+* backward-delete-char (Rubout): Commands For Text. (line 17)
+* backward-kill-line (C-x Rubout): Commands For Killing.
+ (line 11)
+* backward-kill-word (M-<DEL>): Commands For Killing.
+ (line 28)
+* backward-word (M-b): Commands For Moving. (line 24)
+* beginning-of-history (M-<): Commands For History.
+ (line 19)
+* beginning-of-line (C-a): Commands For Moving. (line 6)
+* bell-style: Readline Init File Syntax.
+ (line 61)
+* bind-tty-special-chars: Readline Init File Syntax.
+ (line 68)
+* blink-matching-paren: Readline Init File Syntax.
+ (line 76)
+* bracketed-paste-begin (): Commands For Text. (line 37)
+* call-last-kbd-macro (C-x e): Keyboard Macros. (line 13)
+* capitalize-word (M-c): Commands For Text. (line 68)
+* character-search (C-]): Miscellaneous Commands.
+ (line 41)
+* character-search-backward (M-C-]): Miscellaneous Commands.
+ (line 45)
+* clear-display (M-C-l): Commands For Moving. (line 42)
+* clear-screen (C-l): Commands For Moving. (line 47)
+* colored-completion-prefix: Readline Init File Syntax.
+ (line 81)
+* colored-stats: Readline Init File Syntax.
+ (line 91)
+* comment-begin: Readline Init File Syntax.
+ (line 97)
+* complete (<TAB>): Commands For Completion.
+ (line 6)
+* completion-display-width: Readline Init File Syntax.
+ (line 101)
+* completion-ignore-case: Readline Init File Syntax.
+ (line 108)
+* completion-map-case: Readline Init File Syntax.
+ (line 113)
+* completion-prefix-display-length: Readline Init File Syntax.
+ (line 119)
+* completion-query-items: Readline Init File Syntax.
+ (line 126)
+* convert-meta: Readline Init File Syntax.
+ (line 137)
+* copy-backward-word (): Commands For Killing.
+ (line 53)
+* copy-forward-word (): Commands For Killing.
+ (line 58)
+* copy-region-as-kill (): Commands For Killing.
+ (line 49)
+* delete-char (C-d): Commands For Text. (line 12)
+* delete-char-or-list (): Commands For Completion.
+ (line 38)
+* delete-horizontal-space (): Commands For Killing.
+ (line 41)
+* digit-argument (M-0, M-1, ... M--): Numeric Arguments. (line 6)
+* disable-completion: Readline Init File Syntax.
+ (line 149)
+* do-lowercase-version (M-A, M-B, M-X, ...): Miscellaneous Commands.
+ (line 14)
+* downcase-word (M-l): Commands For Text. (line 64)
+* dump-functions (): Miscellaneous Commands.
+ (line 68)
+* dump-macros (): Miscellaneous Commands.
+ (line 80)
+* dump-variables (): Miscellaneous Commands.
+ (line 74)
+* echo-control-characters: Readline Init File Syntax.
+ (line 154)
+* editing-mode: Readline Init File Syntax.
+ (line 159)
+* emacs-editing-mode (C-e): Miscellaneous Commands.
+ (line 94)
+* emacs-mode-string: Readline Init File Syntax.
+ (line 165)
+* enable-active-region The: Readline Init File Syntax.
+ (line 175)
+* enable-bracketed-paste: Readline Init File Syntax.
+ (line 188)
+* enable-keypad: Readline Init File Syntax.
+ (line 197)
+* enable-meta-key: Readline Init File Syntax.
+ (line 202)
+* end-kbd-macro (C-x )): Keyboard Macros. (line 9)
+* end-of-file (usually C-d): Commands For Text. (line 6)
+* end-of-history (M->): Commands For History.
+ (line 22)
+* end-of-line (C-e): Commands For Moving. (line 10)
+* exchange-point-and-mark (C-x C-x): Miscellaneous Commands.
+ (line 37)
+* execute-named-command (M-x): Miscellaneous Commands.
+ (line 87)
+* expand-tilde: Readline Init File Syntax.
+ (line 212)
+* fetch-history (): Commands For History.
+ (line 105)
+* force-meta-prefix: Readline Init File Syntax.
+ (line 216)
+* forward-backward-delete-char (): Commands For Text. (line 22)
+* forward-char (C-f): Commands For Moving. (line 14)
+* forward-search-history (C-s): Commands For History.
+ (line 32)
+* forward-word (M-f): Commands For Moving. (line 20)
+* history-preserve-point: Readline Init File Syntax.
+ (line 229)
+* history-search-backward (): Commands For History.
+ (line 50)
+* history-search-forward (): Commands For History.
+ (line 57)
+* history-size: Readline Init File Syntax.
+ (line 235)
+* history-substring-search-backward (): Commands For History.
+ (line 64)
+* history-substring-search-forward (): Commands For History.
+ (line 70)
+* horizontal-scroll-mode: Readline Init File Syntax.
+ (line 244)
+* input-meta: Readline Init File Syntax.
+ (line 252)
+* insert-comment (M-#): Miscellaneous Commands.
+ (line 59)
+* insert-completions (M-*): Commands For Completion.
+ (line 18)
+* isearch-terminators: Readline Init File Syntax.
+ (line 263)
+* keymap: Readline Init File Syntax.
+ (line 270)
+* kill-line (C-k): Commands For Killing.
+ (line 6)
+* kill-region (): Commands For Killing.
+ (line 45)
+* kill-whole-line (): Commands For Killing.
+ (line 19)
+* kill-word (M-d): Commands For Killing.
+ (line 23)
+* mark-modified-lines: Readline Init File Syntax.
+ (line 300)
+* mark-symlinked-directories: Readline Init File Syntax.
+ (line 305)
+* match-hidden-files: Readline Init File Syntax.
+ (line 310)
+* menu-complete (): Commands For Completion.
+ (line 22)
+* menu-complete-backward (): Commands For Completion.
+ (line 33)
+* menu-complete-display-prefix: Readline Init File Syntax.
+ (line 317)
+* meta-flag: Readline Init File Syntax.
+ (line 252)
+* next-history (C-n): Commands For History.
+ (line 16)
+* next-screen-line (): Commands For Moving. (line 35)
+* non-incremental-forward-search-history (M-n): Commands For History.
+ (line 44)
+* non-incremental-reverse-search-history (M-p): Commands For History.
+ (line 38)
+* operate-and-get-next (C-o): Commands For History.
+ (line 98)
+* output-meta: Readline Init File Syntax.
+ (line 322)
+* overwrite-mode (): Commands For Text. (line 72)
+* page-completions: Readline Init File Syntax.
+ (line 331)
+* possible-completions (M-?): Commands For Completion.
+ (line 11)
+* prefix-meta (<ESC>): Miscellaneous Commands.
+ (line 19)
+* previous-history (C-p): Commands For History.
+ (line 12)
+* previous-screen-line (): Commands For Moving. (line 28)
+* print-last-kbd-macro (): Keyboard Macros. (line 17)
+* quoted-insert (C-q or C-v): Commands For Text. (line 27)
+* re-read-init-file (C-x C-r): Miscellaneous Commands.
+ (line 6)
+* readline: Basic Behavior. (line 11)
+* redraw-current-line (): Commands For Moving. (line 51)
+* reverse-search-history (C-r): Commands For History.
+ (line 26)
+* revert-all-at-newline: Readline Init File Syntax.
+ (line 344)
+* revert-line (M-r): Miscellaneous Commands.
+ (line 26)
+* rl_activate_mark: Miscellaneous Functions.
+ (line 62)
+* rl_add_defun: Function Naming. (line 19)
+* rl_add_funmap_entry: Associating Function Names and Bindings.
+ (line 70)
+* rl_add_undo: Allowing Undoing. (line 40)
+* rl_alphabetic: Utility Functions. (line 33)
+* rl_already_prompted: Readline Variables. (line 74)
+* rl_attempted_completion_function: Completion Variables.
+ (line 11)
+* rl_attempted_completion_over: Completion Variables.
+ (line 290)
+* rl_basic_quote_characters: Completion Variables.
+ (line 164)
+* rl_basic_word_break_characters: Completion Variables.
+ (line 158)
+* rl_begin_undo_group: Allowing Undoing. (line 29)
+* rl_bind_key: Binding Keys. (line 21)
+* rl_bind_key_if_unbound: Binding Keys. (line 30)
+* rl_bind_key_if_unbound_in_map: Binding Keys. (line 36)
+* rl_bind_key_in_map: Binding Keys. (line 25)
+* rl_bind_keyseq: Binding Keys. (line 58)
+* rl_bind_keyseq_if_unbound: Binding Keys. (line 76)
+* rl_bind_keyseq_if_unbound_in_map: Binding Keys. (line 82)
+* rl_bind_keyseq_in_map: Binding Keys. (line 65)
+* rl_binding_keymap: Readline Variables. (line 211)
+* rl_callback_handler_install: Alternate Interface. (line 14)
+* rl_callback_handler_remove: Alternate Interface. (line 43)
+* rl_callback_read_char: Alternate Interface. (line 23)
+* rl_callback_sigcleanup: Alternate Interface. (line 36)
+* rl_catch_signals: Readline Signal Handling.
+ (line 69)
+* rl_catch_sigwinch: Readline Signal Handling.
+ (line 76)
+* rl_change_environment: Readline Signal Handling.
+ (line 90)
+* rl_char_is_quoted_p: Completion Variables.
+ (line 48)
+* rl_check_signals: Readline Signal Handling.
+ (line 133)
+* rl_cleanup_after_signal: Readline Signal Handling.
+ (line 107)
+* rl_clear_history: Miscellaneous Functions.
+ (line 56)
+* rl_clear_message: Redisplay. (line 51)
+* rl_clear_pending_input: Character Input. (line 29)
+* rl_clear_signals: Readline Signal Handling.
+ (line 182)
+* rl_clear_visible_line: Redisplay. (line 25)
+* rl_complete: How Completing Works.
+ (line 46)
+* rl_complete <1>: Completion Functions.
+ (line 19)
+* rl_complete_internal: Completion Functions.
+ (line 9)
+* rl_completer_quote_characters: Completion Variables.
+ (line 183)
+* rl_completer_word_break_characters: Completion Variables.
+ (line 168)
+* rl_completion_append_character: Completion Variables.
+ (line 209)
+* rl_completion_display_matches_hook: Completion Variables.
+ (line 145)
+* rl_completion_entry_function: How Completing Works.
+ (line 52)
+* rl_completion_entry_function <1>: Completion Variables.
+ (line 6)
+* rl_completion_found_quote: Completion Variables.
+ (line 234)
+* rl_completion_invoking_key: Completion Variables.
+ (line 313)
+* rl_completion_mark_symlink_dirs: Completion Variables.
+ (line 246)
+* rl_completion_matches: Completion Functions.
+ (line 43)
+* rl_completion_mode: Completion Functions.
+ (line 36)
+* rl_completion_query_items: Completion Variables.
+ (line 201)
+* rl_completion_quote_character: Completion Variables.
+ (line 240)
+* rl_completion_rewrite_hook: Completion Variables.
+ (line 127)
+* rl_completion_suppress_append: Completion Variables.
+ (line 221)
+* rl_completion_suppress_quote: Completion Variables.
+ (line 228)
+* rl_completion_type: Completion Variables.
+ (line 305)
+* rl_completion_word_break_hook: Completion Variables.
+ (line 174)
+* rl_copy_keymap: Keymaps. (line 16)
+* rl_copy_text: Modifying Text. (line 14)
+* rl_crlf: Redisplay. (line 33)
+* rl_deactivate_mark: Miscellaneous Functions.
+ (line 70)
+* rl_delete_text: Modifying Text. (line 10)
+* rl_deprep_term_function: Readline Variables. (line 193)
+* rl_deprep_terminal: Terminal Management. (line 12)
+* rl_ding: Utility Functions. (line 30)
+* rl_directory_completion_hook: Completion Variables.
+ (line 65)
+* rl_directory_rewrite_hook;: Completion Variables.
+ (line 83)
+* rl_discard_keymap: Keymaps. (line 25)
+* rl_dispatching: Readline Variables. (line 49)
+* rl_display_match_list: Utility Functions. (line 36)
+* rl_display_prompt: Readline Variables. (line 69)
+* rl_do_undo: Allowing Undoing. (line 48)
+* rl_done: Readline Variables. (line 28)
+* rl_echo_signal_char: Readline Signal Handling.
+ (line 143)
+* rl_editing_mode: Readline Variables. (line 317)
+* rl_empty_keymap: Keymaps. (line 33)
+* rl_end: Readline Variables. (line 18)
+* rl_end_undo_group: Allowing Undoing. (line 35)
+* rl_eof_found: Readline Variables. (line 34)
+* rl_erase_empty_line: Readline Variables. (line 55)
+* rl_event_hook: Readline Variables. (line 137)
+* rl_execute_next: Character Input. (line 25)
+* rl_executing_key: Readline Variables. (line 218)
+* rl_executing_keymap: Readline Variables. (line 207)
+* rl_executing_keyseq: Readline Variables. (line 222)
+* rl_executing_macro: Readline Variables. (line 215)
+* rl_expand_prompt: Redisplay. (line 66)
+* rl_explicit_arg: Readline Variables. (line 308)
+* rl_extend_line_buffer: Utility Functions. (line 21)
+* rl_filename_completion_desired: Completion Variables.
+ (line 261)
+* rl_filename_completion_function: Completion Functions.
+ (line 57)
+* rl_filename_dequoting_function: Completion Variables.
+ (line 39)
+* rl_filename_quote_characters: Completion Variables.
+ (line 189)
+* rl_filename_quoting_desired: Completion Variables.
+ (line 271)
+* rl_filename_quoting_function: Completion Variables.
+ (line 24)
+* rl_filename_rewrite_hook: Completion Variables.
+ (line 111)
+* rl_filename_stat_hook: Completion Variables.
+ (line 99)
+* rl_forced_update_display: Redisplay. (line 10)
+* rl_free: Utility Functions. (line 17)
+* rl_free_keymap: Keymaps. (line 29)
+* rl_free_line_state: Readline Signal Handling.
+ (line 113)
+* rl_free_undo_list: Allowing Undoing. (line 45)
+* rl_full_quoting_desired: Completion Variables.
+ (line 281)
+* rl_function_dumper: Associating Function Names and Bindings.
+ (line 54)
+* rl_function_of_keyseq: Associating Function Names and Bindings.
+ (line 14)
+* rl_function_of_keyseq_len: Associating Function Names and Bindings.
+ (line 23)
+* rl_funmap_names: Associating Function Names and Bindings.
+ (line 64)
+* rl_generic_bind: Binding Keys. (line 88)
+* rl_get_keymap: Keymaps. (line 41)
+* rl_get_keymap_by_name: Keymaps. (line 47)
+* rl_get_keymap_name: Keymaps. (line 52)
+* rl_get_screen_size: Readline Signal Handling.
+ (line 165)
+* rl_get_termcap: Miscellaneous Functions.
+ (line 44)
+* rl_getc: Character Input. (line 14)
+* rl_getc_function: Readline Variables. (line 142)
+* rl_gnu_readline_p: Readline Variables. (line 94)
+* rl_ignore_completion_duplicates: Completion Variables.
+ (line 257)
+* rl_ignore_some_completions_function: Completion Variables.
+ (line 57)
+* rl_inhibit_completion: Completion Variables.
+ (line 319)
+* rl_initialize: Utility Functions. (line 25)
+* rl_input_available_hook: Readline Variables. (line 158)
+* rl_insert_completions: Completion Functions.
+ (line 31)
+* rl_insert_text: Modifying Text. (line 6)
+* rl_instream: Readline Variables. (line 110)
+* rl_invoking_keyseqs: Associating Function Names and Bindings.
+ (line 38)
+* rl_invoking_keyseqs_in_map: Associating Function Names and Bindings.
+ (line 42)
+* rl_keep_mark_active: Miscellaneous Functions.
+ (line 73)
+* rl_key_sequence_length: Readline Variables. (line 226)
+* rl_kill_text: Modifying Text. (line 18)
+* rl_last_func: Readline Variables. (line 123)
+* rl_library_version: Readline Variables. (line 83)
+* rl_line_buffer: Readline Variables. (line 8)
+* rl_list_funmap_names: Associating Function Names and Bindings.
+ (line 60)
+* rl_macro_bind: Miscellaneous Functions.
+ (line 6)
+* rl_macro_display_hook: Readline Variables. (line 199)
+* rl_macro_dumper: Miscellaneous Functions.
+ (line 13)
+* rl_make_bare_keymap: Keymaps. (line 11)
+* rl_make_keymap: Keymaps. (line 19)
+* rl_mark: Readline Variables. (line 23)
+* rl_mark_active_p: Miscellaneous Functions.
+ (line 79)
+* rl_message: Redisplay. (line 42)
+* rl_modifying: Allowing Undoing. (line 58)
+* rl_named_function: Associating Function Names and Bindings.
+ (line 10)
+* rl_num_chars_to_read: Readline Variables. (line 40)
+* rl_numeric_arg: Readline Variables. (line 312)
+* rl_on_new_line: Redisplay. (line 14)
+* rl_on_new_line_with_prompt: Redisplay. (line 18)
+* rl_outstream: Readline Variables. (line 114)
+* rl_parse_and_bind: Binding Keys. (line 96)
+* rl_pending_input: Readline Variables. (line 45)
+* rl_pending_signal: Readline Signal Handling.
+ (line 102)
+* rl_persistent_signal_handlers: Readline Signal Handling.
+ (line 82)
+* rl_point: Readline Variables. (line 14)
+* rl_possible_completions: Completion Functions.
+ (line 27)
+* rl_pre_input_hook: Readline Variables. (line 132)
+* rl_prefer_env_winsize: Readline Variables. (line 118)
+* rl_prep_term_function: Readline Variables. (line 186)
+* rl_prep_terminal: Terminal Management. (line 6)
+* rl_print_keybinding: Associating Function Names and Bindings.
+ (line 47)
+* rl_prompt: Readline Variables. (line 61)
+* rl_push_macro_input: Modifying Text. (line 30)
+* rl_read_init_file: Binding Keys. (line 101)
+* rl_read_key: Character Input. (line 6)
+* rl_readline_name: Readline Variables. (line 105)
+* rl_readline_state: Readline Variables. (line 229)
+* rl_readline_version: Readline Variables. (line 87)
+* rl_redisplay: Redisplay. (line 6)
+* rl_redisplay_function: Readline Variables. (line 180)
+* rl_reparse_colors: Miscellaneous Functions.
+ (line 53)
+* rl_replace_line: Modifying Text. (line 25)
+* rl_reset_after_signal: Readline Signal Handling.
+ (line 121)
+* rl_reset_line_state: Redisplay. (line 29)
+* rl_reset_screen_size: Readline Signal Handling.
+ (line 169)
+* rl_reset_terminal: Terminal Management. (line 33)
+* rl_resize_terminal: Readline Signal Handling.
+ (line 149)
+* rl_restore_prompt: Redisplay. (line 60)
+* rl_restore_state: Utility Functions. (line 11)
+* rl_save_prompt: Redisplay. (line 56)
+* rl_save_state: Utility Functions. (line 6)
+* rl_set_key: Binding Keys. (line 72)
+* rl_set_keyboard_input_timeout: Character Input. (line 34)
+* rl_set_keymap: Keymaps. (line 44)
+* rl_set_keymap_name: Keymaps. (line 57)
+* rl_set_paren_blink_timeout: Miscellaneous Functions.
+ (line 39)
+* rl_set_prompt: Redisplay. (line 82)
+* rl_set_screen_size: Readline Signal Handling.
+ (line 153)
+* rl_set_signals: Readline Signal Handling.
+ (line 176)
+* rl_set_timeout: Character Input. (line 42)
+* rl_show_char: Redisplay. (line 36)
+* rl_signal_event_hook: Readline Variables. (line 149)
+* rl_sort_completion_matches: Completion Variables.
+ (line 297)
+* rl_special_prefixes: Completion Variables.
+ (line 194)
+* rl_startup_hook: Readline Variables. (line 128)
+* rl_stuff_char: Character Input. (line 18)
+* rl_terminal_name: Readline Variables. (line 98)
+* rl_timeout_event_hook: Readline Variables. (line 154)
+* rl_timeout_remaining: Character Input. (line 52)
+* rl_trim_arg_from_keyseq: Associating Function Names and Bindings.
+ (line 30)
+* rl_tty_set_default_bindings: Terminal Management. (line 17)
+* rl_tty_set_echoing: Terminal Management. (line 26)
+* rl_tty_unset_default_bindings: Terminal Management. (line 22)
+* rl_unbind_command_in_map: Binding Keys. (line 54)
+* rl_unbind_function_in_map: Binding Keys. (line 50)
+* rl_unbind_key: Binding Keys. (line 41)
+* rl_unbind_key_in_map: Binding Keys. (line 46)
+* rl_username_completion_function: Completion Functions.
+ (line 64)
+* rl_variable_bind: Miscellaneous Functions.
+ (line 21)
+* rl_variable_dumper: Miscellaneous Functions.
+ (line 33)
+* rl_variable_value: Miscellaneous Functions.
+ (line 28)
+* search-ignore-case: Readline Init File Syntax.
+ (line 351)
+* self-insert (a, b, A, 1, !, ...): Commands For Text. (line 34)
+* set-mark (C-@): Miscellaneous Commands.
+ (line 33)
+* show-all-if-ambiguous: Readline Init File Syntax.
+ (line 356)
+* show-all-if-unmodified: Readline Init File Syntax.
+ (line 362)
+* show-mode-in-prompt: Readline Init File Syntax.
+ (line 371)
+* skip-completed-text: Readline Init File Syntax.
+ (line 377)
+* skip-csi-sequence (): Miscellaneous Commands.
+ (line 50)
+* start-kbd-macro (C-x (): Keyboard Macros. (line 6)
+* tab-insert (M-<TAB>): Commands For Text. (line 31)
+* tilde-expand (M-~): Miscellaneous Commands.
+ (line 30)
+* transpose-chars (C-t): Commands For Text. (line 49)
+* transpose-words (M-t): Commands For Text. (line 55)
+* undo (C-_ or C-x C-u): Miscellaneous Commands.
+ (line 23)
+* universal-argument (): Numeric Arguments. (line 10)
+* unix-filename-rubout (): Commands For Killing.
+ (line 36)
+* unix-line-discard (C-u): Commands For Killing.
+ (line 16)
+* unix-word-rubout (C-w): Commands For Killing.
+ (line 32)
+* upcase-word (M-u): Commands For Text. (line 60)
+* vi-cmd-mode-string: Readline Init File Syntax.
+ (line 390)
+* vi-editing-mode (M-C-j): Miscellaneous Commands.
+ (line 98)
+* vi-ins-mode-string: Readline Init File Syntax.
+ (line 401)
+* visible-stats: Readline Init File Syntax.
+ (line 412)
+* yank (C-y): Commands For Killing.
+ (line 63)
+* yank-last-arg (M-. or M-_): Commands For History.
+ (line 86)
+* yank-nth-arg (M-C-y): Commands For History.
+ (line 76)
+* yank-pop (M-y): Commands For Killing.
+ (line 66)
+
+
+\1f
+Tag Table:
+Node: Top\7f860
+Node: Command Line Editing\7f1582
+Node: Introduction and Notation\7f2231
+Node: Readline Interaction\7f4582
+Node: Readline Bare Essentials\7f5771
+Node: Readline Movement Commands\7f7580
+Node: Readline Killing Commands\7f8577
+Node: Readline Arguments\7f10601
+Node: Searching\7f11659
+Node: Readline Init File\7f13887
+Node: Readline Init File Syntax\7f15082
+Node: Conditional Init Constructs\7f41444
+Node: Sample Init File\7f45830
+Node: Bindable Readline Commands\7f48952
+Node: Commands For Moving\7f50267
+Node: Commands For History\7f52194
+Node: Commands For Text\7f57396
+Node: Commands For Killing\7f61172
+Node: Numeric Arguments\7f63625
+Node: Commands For Completion\7f64778
+Node: Keyboard Macros\7f66862
+Node: Miscellaneous Commands\7f67564
+Node: Readline vi Mode\7f71885
+Node: Programming with GNU Readline\7f73779
+Node: Basic Behavior\7f74762
+Node: Custom Functions\7f78822
+Node: Readline Typedefs\7f80341
+Node: Function Writing\7f82224
+Node: Readline Variables\7f83539
+Node: Readline Convenience Functions\7f98485
+Node: Function Naming\7f99558
+Node: Keymaps\7f100905
+Node: Binding Keys\7f104064
+Node: Associating Function Names and Bindings\7f108813
+Node: Allowing Undoing\7f112550
+Node: Redisplay\7f115297
+Node: Modifying Text\7f119596
+Node: Character Input\7f121132
+Node: Terminal Management\7f124286
+Node: Utility Functions\7f126169
+Node: Miscellaneous Functions\7f129276
+Node: Alternate Interface\7f133163
+Node: A Readline Example\7f136023
+Node: Alternate Interface Example\7f137938
+Node: Readline Signal Handling\7f141554
+Node: Custom Completers\7f151099
+Node: How Completing Works\7f151816
+Node: Completion Functions\7f155199
+Node: Completion Variables\7f158863
+Node: A Short Completion Example\7f177061
+Node: GNU Free Documentation License\7f189727
+Node: Concept Index\7f214901
+Node: Function and Variable Index\7f216419
+\1f
+End Tag Table
+
+\1f
+Local Variables:
+coding: utf-8
+End:
consistency of user interface across discrete programs which provide
a command line interface.
-Copyright @copyright{} 1988--2022 Free Software Foundation, Inc.
+Copyright @copyright{} 1988--2024 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
in the consistency of user interface across discrete programs that need
to provide a command line interface.
-Copyright (C) 1988--2023 Free Software Foundation, Inc.
+Copyright (C) 1988--2024 Free Software Foundation, Inc.
Permission is granted to make and distribute verbatim copies of
this manual provided the copyright notice and this permission notice
@section Basic Behavior
Many programs provide a command line interface, such as @code{mail},
-@code{ftp}, and @code{sh}. For such programs, the default behaviour of
-Readline is sufficient. This section describes how to use Readline in
+@code{ftp}, and @code{sh}.
+For such programs, the default behaviour of Readline is sufficient.
+This section describes how to use Readline in
the simplest way possible, perhaps to replace calls in your code to
-@code{gets()} or @code{fgets()}.
+@code{fgets()}.
@findex readline
@cindex readline, function
Since it's possible to enter characters into the line while quoting
them to disable any Readline editing function they might normally have,
this line may include embedded newlines and other special characters.
-If @var{prompt} is @code{NULL} or the empty string, no prompt is displayed.
+If @var{prompt} is @code{NULL} or the empty string,
+@code{readline} does not display a prompt.
The line @code{readline} returns is allocated with @code{malloc()};
the caller should @code{free()} the line when it has finished with it.
The declaration for @code{readline} in ANSI C is
in order to read a line of text from the user.
The line returned has the final newline removed, so only the
text remains.
+This means that lines consisting of a newline return the empty string.
-If @code{readline} encounters an @code{EOF} while reading the line, and the
-line is empty at that point, then @code{(char *)NULL} is returned.
+If @code{readline} encounters an @code{EOF} while reading the line,
+and the line is empty at that point,
+then @code{readline} returns @code{(char *)NULL}.
Otherwise, the line is ended just as if a newline had been typed.
Readline performs some expansion on the @var{prompt} before it is
-displayed on the screen. See the description of @code{rl_expand_prompt}
+displayed on the screen.
+See the description of @code{rl_expand_prompt}
(@pxref{Redisplay}) for additional details, especially if @var{prompt}
will contain characters that do not consume physical screen space when
displayed.
For full details on the GNU History Library, see the associated manual.
It is preferable to avoid saving empty lines on the history list, since
-users rarely have a burning need to reuse a blank line. Here is
-a function which usefully replaces the standard @code{gets()} library
+users rarely have a burning need to reuse a blank line.
+Here is a function which usefully replaces the standard @code{gets()} library
function, and has the advantage of no static buffer to overflow:
@example
@end example
This function gives the user the default behaviour of @key{TAB}
-completion: completion on file names. If you do not want Readline to
-complete on filenames, you can change the binding of the @key{TAB} key
+completion: filename completion.
+If you do not want Readline to
+complete filenames, you can change the binding of the @key{TAB} key
with @code{rl_bind_key()}.
@example
@code{rl_bind_key()} takes two arguments: @var{key} is the character that
you want to bind, and @var{function} is the address of the function to
-call when @var{key} is pressed. Binding @key{TAB} to @code{rl_insert()}
-makes @key{TAB} insert itself.
+call when @var{key} is pressed.
+Binding @key{TAB} to @code{rl_insert()} makes @key{TAB} insert itself.
@code{rl_bind_key()} returns non-zero if @var{key} is not a valid
ASCII character code (between 0 and 255).
Readline provides many functions for manipulating the text of
the line, but it isn't possible to anticipate the needs of all
-programs. This section describes the various functions and variables
-defined within the Readline library which allow a user program to add
+programs.
+This section describes the various functions and variables
+defined within the Readline library which allow a program to add
customized functionality to Readline.
Before declaring any functions that customize Readline's behavior, or
using any functionality Readline provides in other code, an
application writer should include the file @code{<readline/readline.h>}
-in any file that uses Readline's features. Since some of the definitions
-in @code{readline.h} use the @code{stdio} library, the file
-@code{<stdio.h>} should be included before @code{readline.h}.
+in any file that uses Readline's features.
+Since some of the definitions
+in @code{readline.h} use the @code{stdio} library, the program
+should include the file @code{<stdio.h>}
+before @code{readline.h}.
@code{readline.h} defines a C preprocessor variable that should
be treated as an integer, @code{RL_READLINE_VERSION}, which may
be used to conditionally compile application code depending on
-the installed Readline version. The value is a hexadecimal
+the installed Readline version.
+The value is a hexadecimal
encoding of the major and minor version numbers of the library,
of the form 0x@var{MMmm}. @var{MM} is the two-digit major
version number; @var{mm} is the two-digit minor version number.
@item typedef void rl_compdisp_func_t (char **, int, int);
+@item typedef void rl_macro_print_func_t (const char *, const char *, int, const char *);
+
@item typedef int rl_hook_func_t (void);
@item typedef int rl_getc_func_t (FILE *);
@end table
+@noindent
+The @file{rltypedefs.h} file has more documentation for these types.
+
@node Function Writing
@subsection Writing a New Function
@var{key} is the key that invoked this function.
It is completely up to the function as to what should be done with the
-numeric argument. Some functions use it as a repeat count, some
+numeric argument.
+Some functions use it as a repeat count, some
as a flag, and others to choose alternate behavior (refreshing the current
-line as opposed to refreshing the screen, for example). Some choose to
-ignore it. In general, if a
+line as opposed to refreshing the screen, for example).
+Some choose to ignore it.
+In general, if a
function uses the numeric argument as a repeat count, it should be able
to do something useful with both negative and positive arguments.
At the very least, it should be aware that it can be passed a
A command function should return 0 if its action completes successfully,
and a value greater than zero if some error occurs.
-This is the convention obeyed by all of the builtin Readline bindable
-command functions.
+All of the builtin Readline bindable command functions
+obey this convention.
@node Readline Variables
@section Readline Variables
These variables are available to function writers.
@deftypevar {char *} rl_line_buffer
-This is the line gathered so far. You are welcome to modify the
-contents of the line, but see @ref{Allowing Undoing}. The
-function @code{rl_extend_line_buffer} is available to increase
+This is the line gathered so far.
+You are welcome to modify the contents of the line,
+but see @ref{Allowing Undoing}.
+The function @code{rl_extend_line_buffer} will increase
the memory allocated to @code{rl_line_buffer}.
@end deftypevar
@end deftypevar
@deftypevar int rl_end
-The number of characters present in @code{rl_line_buffer}. When
-@code{rl_point} is at the end of the line, @code{rl_point} and
-@code{rl_end} are equal.
+The number of characters present in @code{rl_line_buffer}.
+When @code{rl_point} is at the end of the line,
+@code{rl_point} and @code{rl_end} are equal.
@end deftypevar
@deftypevar int rl_mark
-The @var{mark} (saved position) in the current line. If set, the mark
-and point define a @emph{region}.
+The @var{mark} (saved position) in the current line.
+If set, the mark and point define a @emph{region}.
+Some Readline commands set the mark as part of operating;
+users can also set the mark explicitly.
@end deftypevar
@deftypevar int rl_done
@end deftypevar
@deftypevar int rl_eof_found
-Readline will set this variable when it has read an EOF character (e.g., the
-stty @samp{EOF} character) on an empty line or encountered a read error and
+Readline will set this variable when it has read an EOF character
+(e.g., the stty @samp{EOF} character) on an empty line
+or has encountered a read error or EOF and
is about to return a NULL line to the caller.
@end deftypevar
@end deftypevar
@deftypevar int rl_pending_input
-Setting this to a value makes it the next keystroke read. This is a
-way to stuff a single character into the input stream.
+Setting this to a value makes it the next keystroke read.
+This is a way to stuff a single character into the input stream.
@end deftypevar
@deftypevar int rl_dispatching
Set to a non-zero value if a function is being called from a key binding;
-zero otherwise. Application functions can test this to discover whether
+zero otherwise.
+Application functions can test this to discover whether
they were called directly or by Readline's dispatching mechanism.
@end deftypevar
@deftypevar int rl_erase_empty_line
Setting this to a non-zero value causes Readline to completely erase
the current line, including any prompt, any time a newline is typed as
-the only character on an otherwise-empty line. The cursor is moved to
-the beginning of the newly-blank line.
+the only character on an otherwise-empty line.
+This moves the cursor to the beginning of the newly-blank line.
@end deftypevar
@deftypevar {char *} rl_prompt
-The prompt Readline uses. This is set from the argument to
+The prompt Readline uses.
+This is set from the argument to
@code{readline()}, and should not be assigned to directly.
The @code{rl_set_prompt()} function (@pxref{Redisplay}) may
be used to modify the prompt string after calling @code{readline()}.
+Readline performs some prompt expansions and analyzes the prompt for
+line breaks, so @code{rl_set_prompt()} is preferred.
@end deftypevar
@deftypevar {char *} rl_display_prompt
-The string displayed as the prompt. This is usually identical to
+The string displayed as the prompt.
+This is usually identical to
@var{rl_prompt}, but may be changed temporarily by functions that
use the prompt string as a message area, such as incremental search.
@end deftypevar
@end deftypevar
@deftypevar {const char *} rl_library_version
-The version number of this revision of the library.
+The version number of this revision of the Readline library, as a string
+(e.g., "4.2").
@end deftypevar
-@deftypevar int rl_readline_version
-An integer encoding the current version of the library. The encoding is
-of the form 0x@var{MMmm}, where @var{MM} is the two-digit major version
-number, and @var{mm} is the two-digit minor version number.
+@deftypevar {int} rl_readline_version
+An integer encoding the current version of the library.
+The encoding is of the form 0x@var{MMmm},
+where @var{MM} is the two-digit major version number,
+and @var{mm} is the two-digit minor version number.
For example, for Readline-4.2, @code{rl_readline_version} would have the
value 0x0402.
@end deftypevar
@end deftypevar
@deftypevar {const char *} rl_terminal_name
-The terminal type, used for initialization. If not set by the application,
+The terminal type, used for initialization.
+If not set by the application,
Readline sets this to the value of the @env{TERM} environment variable
the first time it is called.
+Readline uses this to look up the terminal capabilities it needs in
+the terminfo database.
@end deftypevar
@deftypevar {const char *} rl_readline_name
@end deftypevar
@deftypevar {rl_command_func_t *} rl_last_func
-The address of the last command function Readline executed. May be used to
-test whether or not a function is being executed twice in succession, for
-example.
+The address of the last command function Readline executed.
+This may be used to test whether or not a function is being executed
+twice in succession, for example.
@end deftypevar
@deftypevar {rl_hook_func_t *} rl_startup_hook
@deftypevar {rl_getc_func_t *} rl_getc_function
If non-zero, Readline will call indirectly through this pointer
-to get a character from the input stream. By default, it is set to
-@code{rl_getc}, the default Readline character input function
-(@pxref{Character Input}).
+to get a character from the input stream.
+By default, it is set to @code{rl_getc}, the Readline character
+input function (@pxref{Character Input}).
In general, an application that sets @var{rl_getc_function} should consider
setting @var{rl_input_available_hook} as well.
@end deftypevar
@deftypevar {rl_hook_func_t *} rl_signal_event_hook
If non-zero, this is the address of a function to call if a read system
-call is interrupted when Readline is reading terminal input.
+call is interrupted by a signal when Readline is reading terminal input.
@end deftypevar
@deftypevar {rl_hook_func_t *} rl_timeout_event_hook
@deftypevar {rl_vintfunc_t *} rl_prep_term_function
If non-zero, Readline will call indirectly through this pointer
-to initialize the terminal. The function takes a single argument, an
+to initialize the terminal.
+The function takes a single argument, an
@code{int} flag that says whether or not to use eight-bit characters.
By default, this is set to @code{rl_prep_terminal}
(@pxref{Terminal Management}).
@deftypevar {rl_voidfunc_t *} rl_deprep_term_function
If non-zero, Readline will call indirectly through this pointer
-to reset the terminal. This function should undo the effects of
-@code{rl_prep_term_function}.
+to reset the terminal.
+This function should undo the effects of @code{rl_prep_term_function}.
By default, this is set to @code{rl_deprep_terminal}
(@pxref{Terminal Management}).
@end deftypevar
@deftypevar {int} rl_readline_state
A variable with bit values that encapsulate the current Readline state.
A bit is set with the @code{RL_SETSTATE} macro, and unset with the
-@code{RL_UNSETSTATE} macro. Use the @code{RL_ISSTATE} macro to test
-whether a particular state bit is set. Current state bits include:
+@code{RL_UNSETSTATE} macro.
+Use the @code{RL_ISSTATE} macro to test whether a particular state
+bit is set.
+Current state bits include:
@table @code
@item RL_STATE_NONE
elapsed) and is returning that status to the caller.
@item RL_STATE_EOF
Readline has read an EOF character (e.g., the stty @samp{EOF} character)
-or encountered a read error and is about to return a NULL line to the caller.
+or encountered a read error or EOF
+and is about to return a NULL line to the caller.
@end table
@end deftypevar
@deftypevar {int} rl_explicit_arg
Set to a non-zero value if an explicit numeric argument was specified by
-the user. Only valid in a bindable command function.
+the user.
+It is only valid in a bindable command function.
@end deftypevar
@deftypevar {int} rl_numeric_arg
Set to the value of any numeric argument explicitly specified by the user
-before executing the current Readline function. Only valid in a bindable
-command function.
+before executing the current Readline function.
+It is only valid in a bindable command function.
@end deftypevar
@deftypevar {int} rl_editing_mode
-Set to a value denoting Readline's current editing mode. A value of
-@var{1} means Readline is currently in emacs mode; @var{0}
-means that vi mode is active.
+Set to a value denoting Readline's current editing mode.
+A value of @var{1} means Readline is currently in emacs mode;
+@var{0} means that vi mode is active.
+This determines the current keymap and key bindings.
@end deftypevar
@node Readline Convenience Functions
@node Function Naming
@subsection Naming a Function
-The user can dynamically change the bindings of keys while using
-Readline. This is done by representing the function with a descriptive
-name. The user is able to type the descriptive name when referring to
-the function. Thus, in an init file, one might find
+Readline has a descriptive
+string name for every function a user can bind to a key sequence,
+so users can dynamically change the bindings associated with key
+sequences while using Readline,
+using the descriptive name when referring to the function.
+Thus, in an init file, one might find
@example
Meta-Rubout: backward-kill-word
@end example
This binds the keystroke @key{Meta-Rubout} to the function
-@emph{descriptively} named @code{backward-kill-word}. You, as the
-programmer, should bind the functions you write to descriptive names as
-well. Readline provides a function for doing that:
+@emph{descriptively} named @code{backward-kill-word}.
+As the programmer, you
+should bind the functions you write to descriptive names as well.
+Readline provides a function for doing that:
@deftypefun int rl_add_defun (const char *name, rl_command_func_t *function, int key)
-Add @var{name} to the list of named functions. Make @var{function} be
-the function that gets called. If @var{key} is not -1, then bind it to
+Add @var{name} to the list of named functions.
+Make @var{function} be the function that gets called by key sequences
+that bind to @var{name}.
+If @var{key} is not -1, then bind it to
@var{function} using @code{rl_bind_key()}.
@end deftypefun
@node Keymaps
@subsection Selecting a Keymap
-Key bindings take place on a @dfn{keymap}. The keymap is the
-association between the keys that the user types and the functions that
-get run. You can make your own keymaps, copy existing keymaps, and tell
+Key bindings take place on a @dfn{keymap}.
+The keymap is the association between the keys that the user types and
+the functions that get run.
+You can make your own keymaps, copy existing keymaps, and tell
Readline which keymap to use.
@deftypefun Keymap rl_make_bare_keymap (void)
-Returns a new, empty keymap. The space for the keymap is allocated with
+Returns a new, empty keymap.
+The space for the keymap is allocated with
@code{malloc()}; the caller should free it by calling
@code{rl_free_keymap()} when done.
@end deftypefun
@end deftypefun
@deftypefun void rl_free_keymap (Keymap keymap)
-Free all storage associated with @var{keymap}. This calls
-@code{rl_discard_keymap} to free subordindate keymaps and macros.
+Free all storage associated with @var{keymap}.
+This calls @code{rl_discard_keymap} to free subordindate
+keymaps and macros.
@end deftypefun
@deftypefun int rl_empty_keymap (Keymap keymap)
zero if there are any keys bound.
@end deftypefun
-Readline has several internal keymaps. These functions allow you to
-change which keymap is active.
+Readline has several internal keymaps.
+These functions allow you to change which keymap is active.
+This is one way to switch editing modes, for example.
@deftypefun Keymap rl_get_keymap (void)
Returns the currently active keymap.
@end deftypefun
@deftypefun Keymap rl_get_keymap_by_name (const char *name)
-Return the keymap matching @var{name}. @var{name} is one which would
-be supplied in a @code{set keymap} inputrc line (@pxref{Readline Init File}).
+Return the keymap matching @var{name}.
+@var{name} is one which would be supplied in a
+@code{set keymap} inputrc line (@pxref{Readline Init File}).
@end deftypefun
@deftypefun {char *} rl_get_keymap_name (Keymap keymap)
-Return the name matching @var{keymap}. @var{name} is one which would
-be supplied in a @code{set keymap} inputrc line (@pxref{Readline Init File}).
+Return the name matching @var{keymap}.
+@var{name} is one which would be supplied in a
+@code{set keymap} inputrc line (@pxref{Readline Init File}).
@end deftypefun
@deftypefun int rl_set_keymap_name (const char *name, Keymap keymap)
-Set the name of @var{keymap}. This name will then be "registered" and
+Set the name of @var{keymap}.
+This name will then be "registered" and
available for use in a @code{set keymap} inputrc directive
@pxref{Readline Init File}).
The @var{name} may not be one of Readline's builtin keymap names;
@node Binding Keys
@subsection Binding Keys
-Key sequences are associate with functions through the keymap.
+Key sequences are associated with functions through the keymap.
Readline has several internal keymaps: @code{emacs_standard_keymap},
@code{emacs_meta_keymap}, @code{emacs_ctlx_keymap},
@code{vi_movement_keymap}, and @code{vi_insertion_keymap}.
Since @code{readline()} installs a set of default key bindings the first
time it is called, there is always the danger that a custom binding
installed before the first call to @code{readline()} will be overridden.
-An alternate mechanism is to install custom key bindings in an
+An alternate mechanism that can avoid this
+is to install custom key bindings in an
initialization function assigned to the @code{rl_startup_hook} variable
(@pxref{Readline Variables}).
@deftypefun int rl_unbind_key (int key)
Bind @var{key} to the null function in the currently active keymap.
+This is not the same as binding it to @code{self-insert}.
Returns non-zero in case of error.
@end deftypefun
@deftypefun int rl_unbind_key_in_map (int key, Keymap map)
Bind @var{key} to the null function in @var{map}.
+This is not the same as binding it to @code{self-insert}.
Returns non-zero in case of error.
@end deftypefun
@deftypefun int rl_bind_keyseq_in_map (const char *keyseq, rl_command_func_t *function, Keymap map)
Bind the key sequence represented by the string @var{keyseq} to the function
-@var{function}. This makes new keymaps as necessary.
+@var{function} in @var{map}.
+This makes new keymaps as necessary.
Initial bindings are performed in @var{map}.
The return value is non-zero if @var{keyseq} is invalid.
@end deftypefun
@deftypefun int rl_generic_bind (int type, const char *keyseq, char *data, Keymap map)
Bind the key sequence represented by the string @var{keyseq} to the arbitrary
-pointer @var{data}. @var{type} says what kind of data is pointed to by
-@var{data}; this can be a function (@code{ISFUNC}), a macro
-(@code{ISMACR}), or a keymap (@code{ISKMAP}). This makes new keymaps as
-necessary. The initial keymap in which to do bindings is @var{map}.
+pointer @var{data}.
+@var{type} says what kind of data is pointed to by @var{data}; this can be
+a function (@code{ISFUNC}),
+a macro (@code{ISMACR}),
+or a keymap (@code{ISKMAP}).
+This makes new keymaps as necessary.
+The initial keymap in which to do bindings is @var{map}.
+Returns non-zero in the case of an invalid @var{keyseq}, zero otherwise.
@end deftypefun
@deftypefun int rl_parse_and_bind (char *line)
@subsection Associating Function Names and Bindings
These functions allow you to find out what keys invoke named functions
-and the functions invoked by a particular key sequence. You may also
-associate a new function name with an arbitrary function.
+and the functions invoked by a particular key sequence.
+You may also associate a new function name with an arbitrary function.
@deftypefun {rl_command_func_t *} rl_named_function (const char *name)
Return the function with name @var{name}.
+@var{name} is a descriptive name users might use in a key binding.
@end deftypefun
@deftypefun {rl_command_func_t *} rl_function_of_keyseq (const char *keyseq, Keymap map, int *type)
Return the function invoked by @var{keyseq} in keymap @var{map}.
-If @var{map} is @code{NULL}, the current keymap is used. If @var{type} is
-not @code{NULL}, the type of the object is returned in the @code{int} variable
-it points to (one of @code{ISFUNC}, @code{ISKMAP}, or @code{ISMACR}).
-It takes a "translated" key sequence and should not be used if the key sequence
-can include NUL.
+If @var{map} is @code{NULL}, this uses the current keymap.
+If @var{type} is not @code{NULL}, this returns the type of the object
+in the @code{int} variable it points to
+(one of @code{ISFUNC}, @code{ISKMAP}, or @code{ISMACR}).
+It takes a "translated" key sequence and should not be used
+if the key sequence can include NUL.
@end deftypefun
@deftypefun {rl_command_func_t *} rl_function_of_keyseq_len (const char *keyseq, size_t len, Keymap map, int *type)
Return the function invoked by @var{keyseq} of length @var{len}
-in keymap @var{map}. Equivalent to @code{rl_function_of_keyseq} with the
-addition of the @var{len} parameter.
-It takes a "translated" key sequence and should be used if the key sequence
-can include NUL.
+in keymap @var{map}.
+Equivalent to @code{rl_function_of_keyseq} with the addition
+of the @var{len} parameter.
+It takes a "translated" key sequence and should be used
+if the key sequence can include NUL.
@end deftypefun
@deftypefun {int} rl_trim_arg_from_keyseq (const char *keyseq, size_t len, Keymap map)
including digits, return the index of the first character in @var{keyseq}
following the numeric argument.
This can be used to skip over the numeric argument (which is available as
-@code{rl_numeric_arg} while traversing the key sequence that invoked the
+@code{rl_numeric_arg}) while traversing the key sequence that invoked the
current command.
@end deftypefun
If @var{map} is NULL, this uses the current keymap.
If @var{readable} is non-zero,
the list is formatted in such a way that it can be made part of an
-@code{inputrc} file and re-read.
+@code{inputrc} file and re-read to recreate the key binding.
@end deftypefun
@deftypefun void rl_function_dumper (int readable)
@end deftypefun
@deftypefun {const char **} rl_funmap_names (void)
-Return a NULL terminated array of known function names. The array is
-sorted. The array itself is allocated, but not the strings inside. You
-should free the array, but not the pointers, using @code{free} or
-@code{rl_free} when you are done.
+Return a NULL terminated array of known function names.
+The array is sorted.
+The array itself is allocated, but not the strings inside.
+You should free the array, but not the pointers, using @code{free}
+or @code{rl_free} when you are done.
@end deftypefun
@deftypefun int rl_add_funmap_entry (const char *name, rl_command_func_t *function)
Add @var{name} to the list of bindable Readline command names, and make
@var{function} the function to be called when @var{name} is invoked.
+This returns the index of the newly-added @var{name} in the array of
+function names.
@end deftypefun
@node Allowing Undoing
@subsection Allowing Undoing
Supporting the undo command is a painless thing, and makes your
-functions much more useful. It is certainly easy to try
-something if you know you can undo it.
+functions much more useful.
+It is certainly easier to try something if you know you can undo it.
-If your function simply inserts text once, or deletes text once, and
-uses @code{rl_insert_text()} or @code{rl_delete_text()} to do it, then
-undoing is already done for you automatically.
+If your function simply inserts text once, or deletes text once,
+and uses @code{rl_insert_text()} or @code{rl_delete_text()} to do it,
+then Readline does the undoing for you automatically.
If you do multiple insertions or multiple deletions, or any combination
of these operations, you should group them together into one operation.
This is done with @code{rl_begin_undo_group()} and
@code{rl_end_undo_group()}.
-The types of events that can be undone are:
+The types of events Readline can undo are:
@smallexample
enum undo_code @{ UNDO_DELETE, UNDO_INSERT, UNDO_BEGIN, UNDO_END @};
@end smallexample
Notice that @code{UNDO_DELETE} means to insert some text, and
-@code{UNDO_INSERT} means to delete some text. That is, the undo code
-tells what to undo, not how to undo it. @code{UNDO_BEGIN} and
-@code{UNDO_END} are tags added by @code{rl_begin_undo_group()} and
-@code{rl_end_undo_group()}.
+@code{UNDO_INSERT} means to delete some text.
+That is, the undo code tells what to undo, not how to undo it.
+@code{UNDO_BEGIN} and @code{UNDO_END} are tags
+added by @code{rl_begin_undo_group()} and @code{rl_end_undo_group()};
+they are how Readline delimits groups of commands that should be
+undone together.
@deftypefun int rl_begin_undo_group (void)
-Begins saving undo information in a group construct. The undo
-information usually comes from calls to @code{rl_insert_text()} and
-@code{rl_delete_text()}, but could be the result of calls to
+Begins saving undo information in a group construct.
+The undo information usually comes from calls to @code{rl_insert_text()}
+and @code{rl_delete_text()}, but could be the result of calls to
@code{rl_add_undo()}.
@end deftypefun
@deftypefun int rl_end_undo_group (void)
-Closes the current undo group started with @code{rl_begin_undo_group
-()}. There should be one call to @code{rl_end_undo_group()}
+Closes the current undo group started with @code{rl_begin_undo_group()}.
+There should be one call to @code{rl_end_undo_group()}
for each call to @code{rl_begin_undo_group()}.
@end deftypefun
@deftypefun void rl_add_undo (enum undo_code what, int start, int end, char *text)
-Remember how to undo an event (according to @var{what}). The affected
-text runs from @var{start} to @var{end}, and encompasses @var{text}.
+Remember how to undo an event (according to @var{what}).
+The affected text runs from @var{start} to @var{end},
+and encompasses @var{text}.
@end deftypefun
@deftypefun void rl_free_undo_list (void)
@end deftypefun
@deftypefun int rl_do_undo (void)
-Undo the first thing on the undo list. Returns @code{0} if there was
-nothing to undo, non-zero if something was undone.
+Undo the first thing on the undo list.
+Returns @code{0} if there was nothing to undo,
+non-zero if something was undone.
@end deftypefun
Finally, if you neither insert nor delete text, but directly modify the
existing text (e.g., change its case), call @code{rl_modifying()}
-once, just before you modify the text. You must supply the indices of
-the text range that you are going to modify.
+once, just before you modify the text.
+You must supply the indices of the text range that you are going to modify.
+Readline will create an undo group for you.
@deftypefun int rl_modifying (int start, int end)
Tell Readline to save the text between @var{start} and @var{end} as a
-single undo unit. It is assumed that you will subsequently modify
-that text.
+single undo unit.
+It is assumed that you will subsequently modify that text.
@end deftypefun
@node Redisplay
The arguments are a format string as would be supplied to @code{printf},
possibly containing conversion specifications such as @samp{%d}, and
any additional arguments necessary to satisfy the conversion specifications.
-The resulting string is displayed in the @dfn{echo area}. The echo area
-is also used to display numeric arguments and search strings.
+The resulting string is displayed in the @dfn{echo area}.
+The echo area is also used to display numeric arguments and search strings.
You should call @code{rl_save_prompt} to save the prompt information
before calling this function.
@end deftypefun
@deftypefun int rl_clear_message (void)
-Clear the message in the echo area. If the prompt was saved with a call to
+Clear the message in the echo area.
+If the prompt was saved with a call to
@code{rl_save_prompt} before the last call to @code{rl_message},
-call @code{rl_restore_prompt} before calling this function.
+you must call @code{rl_restore_prompt} before calling this function.
@end deftypefun
@deftypefun void rl_save_prompt (void)
@deftypefun void rl_restore_prompt (void)
Restore the local Readline prompt display state saved by the most
recent call to @code{rl_save_prompt}.
-if @code{rl_save_prompt} was called to save the prompt before a call
-to @code{rl_message}, this function should be called before the
+if you called @code{rl_save_prompt} to save the prompt before a call
+to @code{rl_message}, you should call this function before the
corresponding call to @code{rl_clear_message}.
@end deftypefun
@deftypefun int rl_expand_prompt (char *prompt)
Expand any special character sequences in @var{prompt} and set up the
local Readline prompt redisplay variables.
-This function is called by @code{readline()}. It may also be called to
-expand the primary prompt if the @code{rl_on_new_line_with_prompt()}
-function or @code{rl_already_prompted} variable is used.
+This function is called by @code{readline()}.
+It may also be called to
+expand the primary prompt if the application uses the
+@code{rl_on_new_line_with_prompt()} function or
+@code{rl_already_prompted} variable.
It returns the number of visible characters on the last line of the
(possibly multi-line) prompt.
Applications may indicate that the prompt contains characters that take
and @code{RL_PROMPT_END_IGNORE} (declared in @file{readline.h} as
@samp{\001} and @samp{\002}, respectively).
This may be used to embed terminal-specific escape sequences in prompts.
+If you don't use these indicators, redisplay will likely produce screen
+contents that don't match the line buffer.
@end deftypefun
@deftypefun int rl_set_prompt (const char *prompt)
-Make Readline use @var{prompt} for subsequent redisplay. This calls
-@code{rl_expand_prompt()} to expand the prompt and sets @code{rl_prompt}
-to the result.
+Make Readline use @var{prompt} for subsequent redisplay.
+This calls @code{rl_expand_prompt()} to expand the prompt
+and sets @code{rl_prompt} to the result.
@end deftypefun
@node Modifying Text
@deftypefun int rl_kill_text (int start, int end)
Copy the text between @var{start} and @var{end} in the current line
to the kill ring, appending or prepending to the last kill if the
-last command was a kill command. The text is deleted.
-If @var{start} is less than @var{end},
-the text is appended, otherwise prepended. If the last command was
-not a kill, a new kill ring slot is used.
+last command was a kill command.
+This deletes the text from the line.
+If @var{start} is less than @var{end}, the text is appended,
+otherwise it is prepended.
+If the last command was not a kill, this uses a new kill ring slot.
@end deftypefun
+@deftypefun void rl_replace_line (const char *text, int clear_undo)
+Replace the contents of @code{rl_line_buffer} with @var{text}.
+This preserves the point and mark, if possible.
+If @var{clear_undo} is non-zero, this clears the undo list associated
+with the current line.
+@end deftypefun
+
@deftypefun int rl_push_macro_input (char *macro)
-Cause @var{macro} to be inserted into the line, as if it had been invoked
-by a key bound to a macro. Not especially useful; use
-@code{rl_insert_text()} instead.
+Insert @var{macro} into the line, as if it had been invoked
+by a key bound to a macro.
+Not especially useful; use @code{rl_insert_text()} instead.
@end deftypefun
@node Character Input
@end deftypefun
@deftypefun int rl_stuff_char (int c)
-Insert @var{c} into the Readline input stream. It will be "read"
-before Readline attempts to read characters from the terminal with
-@code{rl_read_key()}. Up to 512 characters may be pushed back.
+Insert @var{c} into the Readline input stream.
+It will be "read" before Readline attempts to read characters
+from the terminal with @code{rl_read_key()}.
+Applications can push back up to 512 characters.
@code{rl_stuff_char} returns 1 if the character was successfully inserted;
0 otherwise.
@end deftypefun
@deftypefun int rl_execute_next (int c)
Make @var{c} be the next command to be executed when @code{rl_read_key()}
-is called. This sets @var{rl_pending_input}.
+is called.
+This sets @var{rl_pending_input}.
@end deftypefun
@deftypefun int rl_clear_pending_input (void)
Unset @var{rl_pending_input}, effectively negating the effect of any
-previous call to @code{rl_execute_next()}. This works only if the
-pending input has not already been read with @code{rl_read_key()}.
+previous call to @code{rl_execute_next()}.
+This works only if the pending input has not already been read
+with @code{rl_read_key()}.
@end deftypefun
@deftypefun int rl_set_keyboard_input_timeout (int u)
While waiting for keyboard input in @code{rl_read_key()}, Readline will
wait for @var{u} microseconds for input before calling any function
-assigned to @code{rl_event_hook}. @var{u} must be greater than or equal
+assigned to @code{rl_event_hook}.
+@var{u} must be greater than or equal
to zero (a zero-length timeout is equivalent to a poll).
The default waiting period is one-tenth of a second.
Returns the old timeout value.
@end deftypefun
@deftypefun int rl_set_timeout (unsigned int secs, unsigned int usecs)
-Set a timeout for subsequent calls to @code{readline()}. If Readline does
-not read a complete line, or the number of characters specified by
-@code{rl_num_chars_to_read}, before the duration specified by @var{secs}
-(in seconds) and @var{usecs} (microseconds), it returns and sets
+Set a timeout for subsequent calls to @code{readline()}.
+If Readline does not read a complete line, or the number of characters
+specified by @code{rl_num_chars_to_read},
+before the duration specified by @var{secs} (in seconds)
+and @var{usecs} (microseconds), it returns and sets
@code{RL_STATE_TIMEOUT} in @code{rl_readline_state}.
Passing 0 for @code{secs} and @code{usecs} cancels any previously set
timeout; the convenience macro @code{rl_clear_timeout()} is shorthand
@deftypefun void rl_prep_terminal (int meta_flag)
Modify the terminal settings for Readline's use, so @code{readline()}
-can read a single character at a time from the keyboard.
+can read a single character at a time from the keyboard
+and perform redisplay.
The @var{meta_flag} argument should be non-zero if Readline should
read eight-bit input.
@end deftypefun
Reset the bindings manipulated by @code{rl_tty_set_default_bindings} so
that the terminal editing characters are bound to @code{rl_insert}.
The bindings are performed in @var{kmap}.
-@end deftypefun
+@end deftypefun
@deftypefun int rl_tty_set_echoing (int value)
-Set Readline's idea of whether or not it is echoing output to its output
-stream (@var{rl_outstream}). If @var{value} is 0, Readline does not display
-output to @var{rl_outstream}; any other value enables output. The initial
-value is set when Readline initializes the terminal settings.
+Set Readline's idea of whether or not it is
+echoing output to its output stream (@var{rl_outstream}).
+If @var{value} is 0,
+Readline does not display output to @var{rl_outstream}; any other
+value enables output.
+The initial value is set when Readline initializes the terminal settings.
This function returns the previous value.
-@end deftypefun
+@end deftypefun
@deftypefun int rl_reset_terminal (const char *terminal_name)
Reinitialize Readline's idea of the terminal settings using
-@var{terminal_name} as the terminal type (e.g., @code{vt100}).
-If @var{terminal_name} is @code{NULL}, the value of the @code{TERM}
-environment variable is used.
+@var{terminal_name} as the terminal type (e.g., @code{xterm}).
+If @var{terminal_name} is @code{NULL}, Readline uses the value of the
+@code{TERM} environment variable.
@end deftypefun
@node Utility Functions
-@subsection Utility Functions
+@subsection Utility Functions
@deftypefun int rl_save_state (struct readline_state *sp)
Save a snapshot of Readline's internal state to @var{sp}.
-The contents of the @var{readline_state} structure are documented
-in @file{readline.h}.
+The contents of the @var{readline_state} structure are
+documented in @file{readline.h}.
The caller is responsible for allocating the structure.
-@end deftypefun
+@end deftypefun
@deftypefun int rl_restore_state (struct readline_state *sp)
-Restore Readline's internal state to that stored in @var{sp}, which must
-have been saved by a call to @code{rl_save_state}.
-The contents of the @var{readline_state} structure are documented
-in @file{readline.h}.
-The caller is responsible for freeing the structure.
-@end deftypefun
+Restore Readline's internal state to that stored in @var{sp},
+which must have been saved by a call to @code{rl_save_state}.
+The contents of the @var{readline_state} structure are documented in
+@file{readline.h}.
+The caller is responsible for freeing the structure.
+@end deftypefun
@deftypefun void rl_free (void *mem)
-Deallocate the memory pointed to by @var{mem}. @var{mem} must have been
-allocated by @code{malloc}.
-@end deftypefun
-
-@deftypefun void rl_replace_line (const char *text, int clear_undo)
-Replace the contents of @code{rl_line_buffer} with @var{text}.
-The point and mark are preserved, if possible.
-If @var{clear_undo} is non-zero, the undo list associated with the
-current line is cleared.
-@end deftypefun
+Deallocate the memory pointed to by @var{mem}.
+@var{mem} must have been allocated by @code{malloc}.
+@end deftypefun
@deftypefun void rl_extend_line_buffer (int len)
Ensure that @code{rl_line_buffer} has enough space to hold @var{len}
-characters, possibly reallocating it if necessary.
+characters, reallocating it if necessary.
@end deftypefun
@deftypefun int rl_initialize (void)
Initialize or re-initialize Readline's internal state.
-It's not strictly necessary to call this; @code{readline()} calls it before
-reading any input.
+It's not strictly necessary to call this;
+@code{readline()} calls it before reading any input.
@end deftypefun
@deftypefun int rl_ding (void)
@deftypefun void rl_display_match_list (char **matches, int len, int max)
A convenience function for displaying a list of strings in
-columnar format on Readline's output stream. @code{matches} is the list
-of strings, in argv format, such as a list of completion matches.
+columnar format on Readline's output stream.
+@code{matches} is the list of strings, in argv format,
+such as a list of completion matches.
@code{len} is the number of strings in @code{matches}, and @code{max}
-is the length of the longest string in @code{matches}. This function uses
-the setting of @code{print-completions-horizontally} to select how the
-matches are displayed (@pxref{Readline Init File Syntax}).
+is the length of the longest string in @code{matches}.
+This function uses the setting of @code{print-completions-horizontally}
+to select how the matches are displayed (@pxref{Readline Init File Syntax}).
When displaying completions, this function sets the number of columns used
for display to the value of @code{completion-display-width}, the value of
the environment variable @env{COLUMNS}, or the screen width, in that order.
@deftypefun int rl_macro_bind (const char *keyseq, const char *macro, Keymap map)
Bind the key sequence @var{keyseq} to invoke the macro @var{macro}.
-The binding is performed in @var{map}. When @var{keyseq} is invoked, the
-@var{macro} will be inserted into the line. This function is deprecated;
-use @code{rl_generic_bind} instead.
+The binding is performed in @var{map}.
+When @var{keyseq} is invoked, the @var{macro} will be inserted into the line.
+This function is deprecated; use @code{rl_generic_bind} instead.
@end deftypefun
@deftypefun void rl_macro_dumper (int readable)
Make the Readline variable @var{variable} have @var{value}.
This behaves as if the Readline command
@samp{set @var{variable} @var{value}} had been executed in an @code{inputrc}
-file (@pxref{Readline Init File Syntax}).
+file (@pxref{Readline Init File Syntax})
+or by @code{rl_parse_and_bind}.
@end deftypefun
@deftypefun {char *} rl_variable_value (const char *variable)
Retrieve the string value of the termcap capability @var{cap}.
Readline fetches the termcap entry for the current terminal name and
uses those capabilities to move around the screen line and perform other
-terminal-specific operations, like erasing a line. Readline does not
-use all of a terminal's capabilities, and this function will return
-values for only those capabilities Readline uses.
+terminal-specific operations, like erasing a line.
+Readline does not fetch or use all of a terminal's capabilities,
+and this function will return
+values for only those capabilities Readline fetches.
@end deftypefun
@deftypefun {void} rl_reparse_colors (void)
@end deftypefun
@deftypefun {void} rl_activate_mark (void)
-Enable an @emph{active} mark.
+Enable an @emph{active} region.
When this is enabled, the text between point and mark (the @var{region}) is
-displayed in the terminal's standout mode (a @var{face}).
+displayed using the color specified by the value of the
+@code{active-region-start-color} variable (a @var{face}).
+The default face is the terminal's standout mode.
This is called by various Readline functions that set the mark and insert
text, and is available for applications to call.
@end deftypefun
@deftypefun {void} rl_deactivate_mark (void)
-Turn off the active mark.
+Turn off the active region.
@end deftypefun
@deftypefun {void} rl_keep_mark_active (void)
@node Alternate Interface
@subsection Alternate Interface
-An alternate interface is available to plain @code{readline()}. Some
-applications need to interleave keyboard I/O with file, device, or
-window system I/O, typically by using a main loop to @code{select()}
-on various file descriptors. To accommodate this need, Readline can
-also be invoked as a `callback' function from an event loop. There
-are functions available to make this easy.
-
-@deftypefun void rl_callback_handler_install (const char *prompt, rl_vcpfunc_t *lhandler)
+For applications that need more granular control than
+plain @code{readline()} provides, there is
+an alternate interface.
+Some applications need to interleave keyboard I/O with file, device,
+or window system I/O, typically by using a main loop to @code{select()}
+on various file descriptors.
+To accommodate this use case, Readline can
+also be invoked as a `callback' function from an event loop.
+There are functions available to make this easy.
+
+@deftypefun void rl_callback_handler_install (const char *prompt, rl_vcpfunc_t *line_handler)
Set up the terminal for Readline I/O and display the initial
-expanded value of @var{prompt}. Save the value of @var{lhandler} to
+expanded value of @var{prompt}.
+Save the value of @var{line_handler} to
use as a handler function to call when a complete line of input has been
entered.
The handler function receives the text of the line as an argument.
should call @code{rl_callback_read_char()}, which will read the next
character from the current input source.
If that character completes the line, @code{rl_callback_read_char} will
-invoke the @var{lhandler} function installed by
+invoke the @var{line_handler} function installed by
@code{rl_callback_handler_install} to process the line.
-Before calling the @var{lhandler} function, the terminal settings are
-reset to the values they had before calling
+Before calling the @var{line_handler} function, Readline resets
+the terminal settings to the values they had before calling
@code{rl_callback_handler_install}.
-If the @var{lhandler} function returns,
+If the @var{line_handler} function returns,
and the line handler remains installed,
-the terminal settings are modified for Readline's use again.
-@code{EOF} is indicated by calling @var{lhandler} with a
+Readline modifies the terminal settings for its use again.
+@code{EOF} is indicated by calling @var{line_handler} with a
@code{NULL} line.
@end deftypefun
@deftypefun void rl_callback_sigcleanup (void)
Clean up any internal state the callback interface uses to maintain state
between calls to rl_callback_read_char (e.g., the state of any active
-incremental searches). This is intended to be used by applications that
-wish to perform their own signal handling; Readline's internal signal handler
-calls this when appropriate.
+incremental searches).
+This is intended to be used by applications that
+wish to perform their own signal handling;
+Readline's internal signal handler calls this when appropriate.
@end deftypefun
@deftypefun void rl_callback_handler_remove (void)
Restore the terminal to its initial state and remove the line handler.
You may call this function from within a callback as well as independently.
-If the @var{lhandler} installed by @code{rl_callback_handler_install}
-does not exit the program, either this function or the function referred
-to by the value of @code{rl_deprep_term_function} should be called before
-the program exits to reset the terminal settings.
+If the @var{line_handler} installed by @code{rl_callback_handler_install}
+does not exit the program, your program should call
+either this function or the function referred
+to by the value of @code{rl_deprep_term_function}
+before the program exits to reset the terminal settings.
@end deftypefun
@node A Readline Example
@subsection A Readline Example
Here is a function which changes lowercase characters to their uppercase
-equivalents, and uppercase characters to lowercase. If
-this function was bound to @samp{M-c}, then typing @samp{M-c} would
-change the case of the character under point. Typing @samp{M-1 0 M-c}
-would change the case of the following 10 characters, leaving the cursor on
+equivalents, and uppercase characters to lowercase.
+If this function was bound to @samp{M-c}, then typing @samp{M-c} would
+change the case of the character under point.
+Typing @samp{M-1 0 M-c} would change the case
+of the following 10 characters, leaving the cursor on
the last character changed.
@example
invert_case_line (count, key)
int count, key;
@{
- register int start, end, i;
+ int start, end, i;
start = rl_point;
@section Readline Signal Handling
Signals are asynchronous events sent to a process by the Unix kernel,
-sometimes on behalf of another process. They are intended to indicate
-exceptional events, like a user pressing the terminal's interrupt key,
-or a network connection being broken. There is a class of signals that can
-be sent to the process currently reading input from the keyboard. Since
-Readline changes the terminal attributes when it is called, it needs to
-perform special processing when such a signal is received in order to
-restore the terminal to a sane state, or provide application writers with
-functions to do so manually.
+sometimes on behalf of another process.
+They are intended to indicate exceptional events,
+like a user pressing the terminal's interrupt key,
+or a network connection being broken.
+There is a class of signals that can
+be sent to the process currently reading input from the keyboard.
+Since Readline changes the terminal attributes when it is called, it needs
+to perform special processing when such a signal is received in order to
+restore the terminal to a sane state, or provide applications using
+Readline with functions to do so manually.
Readline contains an internal signal handler that is installed for a
number of signals (@code{SIGINT}, @code{SIGQUIT}, @code{SIGTERM},
@code{SIGHUP},
@code{SIGALRM}, @code{SIGTSTP}, @code{SIGTTIN}, and @code{SIGTTOU}).
-When one of these signals is received, the signal handler
+When Readline receives one of these signals, the signal handler
will reset the terminal attributes to those that were in effect before
@code{readline()} was called, reset the signal handling to what it was
before @code{readline()} was called, and resend the signal to the calling
There is an additional Readline signal handler, for @code{SIGWINCH}, which
the kernel sends to a process whenever the terminal's size changes (for
-example, if a user resizes an @code{xterm}). The Readline @code{SIGWINCH}
-handler updates Readline's internal screen size information, and then calls
-any @code{SIGWINCH} signal handler the calling application has installed.
+example, if a user resizes an @code{xterm}).
+The Readline @code{SIGWINCH} handler updates
+Readline's internal screen size information, and then calls any
+@code{SIGWINCH} signal handler the calling application has installed.
Readline calls the application's @code{SIGWINCH} signal handler without
-resetting the terminal to its original state. If the application's signal
-handler does more than update its idea of the terminal size and return (for
-example, a @code{longjmp} back to a main processing loop), it @emph{must}
-call @code{rl_cleanup_after_signal()} (described below), to restore the
-terminal state.
+resetting the terminal to its original state.
+If the application's signal
+handler does more than update its idea of the terminal size and return
+(for example, a @code{longjmp} back to a main processing loop),
+it @emph{must} call @code{rl_cleanup_after_signal()} (described below),
+to restore the terminal state.
When an application is using the callback interface
(@pxref{Alternate Interface}), Readline installs signal handlers only for
-the duration of the call to @code{rl_callback_read_char}. Applications
-using the callback interface should be prepared to clean up Readline's
-state if they wish to handle the signal before the line handler completes
-and restores the terminal state.
+the duration of the call to @code{rl_callback_read_char}.
+Applications using the callback interface should be prepared
+to clean up Readline's state if they wish to handle the signal
+before the line handler completes and restores the terminal state.
If an application using the callback interface wishes to have Readline
install its signal handlers at the time the application calls
Readline catches to Readline.
Applications should use this variable with care; it can result in Readline
catching signals and not acting on them (or allowing the application to react
-to them) until the application calls @code{rl_callback_read_char}. This
-can result in an application becoming less responsive to keyboard signals
-like SIGINT.
+to them) until the application calls @code{rl_callback_read_char}.
+This can result in an application becoming less responsive to keyboard
+signals like SIGINT.
If an application does not want or need to perform any signal handling, or
-does not need to do any processing between calls to @code{rl_callback_read_char},
-setting this variable may be desirable.
+does not need to do any processing
+between calls to @code{rl_callback_read_char},
+setting this variable may be appropriate.
Readline provides two variables that allow application writers to
control whether or not it will catch certain signals and act on them
-when they are received. It is important that applications change the
-values of these variables only when calling @code{readline()}, not in
-a signal handler, so Readline's internal signal state is not corrupted.
+when they are received.
+It is important that applications change the
+values of these variables only when calling @code{readline()},
+not in a signal handler, so Readline's internal signal state
+is not corrupted.
@deftypevar int rl_catch_signals
If this variable is non-zero, Readline will install signal handlers for
If this variable is set to a non-zero value,
and Readline is handling @code{SIGWINCH}, Readline will modify the
@var{LINES} and @var{COLUMNS} environment variables upon receipt of a
-@code{SIGWINCH}
+@code{SIGWINCH}.
The default value of @code{rl_change_environment} is 1.
@end deftypevar
@deftypefun void rl_free_line_state (void)
This will free any partial state associated with the current input line
(undo information, any partial history entry, any partially-entered
-keyboard macro, and any partially-entered numeric argument). This
-should be called before @code{rl_cleanup_after_signal()}. The
-Readline signal handler for @code{SIGINT} calls this to abort the
-current input line.
+keyboard macro, and any partially-entered numeric argument).
+This should be called before @code{rl_cleanup_after_signal()}.
+The Readline signal handler for @code{SIGINT} calls this to abort
+the current input line.
@end deftypefun
@deftypefun void rl_reset_after_signal (void)
If an application wants to force Readline to handle any signals that
have arrived while it has been executing, @code{rl_check_signals()}
will call Readline's internal signal handler if there are any pending
-signals. This is primarily intended for those applications that use
+signals.
+This is primarily intended for those applications that use
a custom @code{rl_getc_function} (@pxref{Readline Variables}) and wish
to handle signals received while waiting for input.
@deftypefun void rl_check_signals (void)
-If there are any pending signals, call Readline's internal signal handling
-functions to process them. @code{rl_pending_signal()} can be used independently
+If there are any pending signals, call Readline's internal signal
+handling functions to process them.
+@code{rl_pending_signal()} can be used independently
to determine whether or not there are any pending signals.
@end deftypefun
-If an application does not wish Readline to catch @code{SIGWINCH}, it may
-call @code{rl_resize_terminal()} or @code{rl_set_screen_size()} to force
-Readline to update its idea of the terminal size when it receives
+If an application does not wish Readline to catch @code{SIGWINCH},
+it may call @code{rl_resize_terminal()} or @code{rl_set_screen_size()}
+to force Readline to update its idea of the terminal size when it receives
a @code{SIGWINCH}.
@deftypefun void rl_echo_signal_char (int sig)
@deftypefun void rl_set_screen_size (int rows, int cols)
Set Readline's idea of the terminal size to @var{rows} rows and
-@var{cols} columns. If either @var{rows} or @var{columns} is less than
-or equal to 0, Readline's idea of that terminal dimension is unchanged.
+@var{cols} columns.
+If either @var{rows} or @var{columns} is less than or equal to 0,
+Readline doesn't change that terminal dimension.
This is intended to tell Readline the physical dimensions of the terminal,
and is used internally to calculate the maximum number of characters that
may appear on a single line and on the screen.
@cindex application-specific completion functions
Typically, a program that reads commands from the user has a way of
-disambiguating commands and data. If your program is one of these, then
+disambiguating commands and data.
+If your program is one of these, then
it can provide completion for commands, data, or both.
The following sections describe how your program and Readline
cooperate to provide this service.
@subsection How Completing Works
In order to complete some text, the full list of possible completions
-must be available. That is, it is not possible to accurately
+must be available.
+That is, it is not possible to accurately
expand a partial word without knowing all of the possible words
-which make sense in that context. The Readline library provides
+which make sense in that context.
+The Readline library provides
the user interface to completion, and two of the most common
-completion functions: filename and username. For completing other types
-of text, you must write your own completion function. This section
+completion functions: filename and username.
+For completing other types
+of text, you must write your own completion function.
+This section
describes exactly what such functions must do, and provides an example.
There are three major functions used to perform completion:
@enumerate
@item
-The user-interface function @code{rl_complete()}. This function is
-called with the same arguments as other bindable Readline functions:
-@var{count} and @var{invoking_key}.
+The user-interface function @code{rl_complete()}.
+This function is called with the same arguments as other bindable
+Readline functions: @var{count} and @var{invoking_key}.
It isolates the word to be completed and calls
@code{rl_completion_matches()} to generate a list of possible completions.
It then either lists the possible completions, inserts the possible
@item
The generator function is called repeatedly from
-@code{rl_completion_matches()}, returning a string each time. The
-arguments to the generator function are @var{text} and @var{state}.
-@var{text} is the partial word to be completed. @var{state} is zero the
-first time the function is called, allowing the generator to perform
-any necessary initialization, and a positive non-zero integer for
-each subsequent call. The generator function returns
+@code{rl_completion_matches()}, returning a string each time.
+The arguments to the generator function are @var{text} and @var{state}.
+@var{text} is the partial word to be completed.
+@var{state} is zero the first time the function is called,
+allowing the generator to perform any necessary initialization,
+and a positive integer for each subsequent call.
+The generator function returns
@code{(char *)NULL} to inform @code{rl_completion_matches()} that there are
-no more possibilities left. Usually the generator function computes the
+no more possibilities left.
+Usually the generator function computes the
list of possible completions when @var{state} is zero, and returns them
-one at a time on subsequent calls. Each string the generator function
+one at a time on subsequent calls.
+Each string the generator function
returns as a match must be allocated with @code{malloc()}; Readline
frees the strings when it has finished with them.
Such a generator function is referred to as an
@end enumerate
@deftypefun int rl_complete (int ignore, int invoking_key)
-Complete the word at or before point. You have supplied the function
-that does the initial simple matching selection algorithm (see
-@code{rl_completion_matches()}). The default is to do filename completion.
+Complete the word at or before point.
+You have supplied the function that does the initial simple matching
+selection algorithm (see @code{rl_completion_matches()}).
+The default is to do filename completion.
@end deftypefun
@deftypevar {rl_compentry_func_t *} rl_completion_entry_function
This is a pointer to the generator function for
@code{rl_completion_matches()}.
If the value of @code{rl_completion_entry_function} is
-@code{NULL} then the default filename generator
-function, @code{rl_filename_completion_function()}, is used.
+@code{NULL} then Readline uses the default filename generator
+function, @code{rl_filename_completion_function()}.
An @dfn{application-specific completion function} is a function whose
address is assigned to @code{rl_completion_entry_function} and whose
-return values are used to generate possible completions.
+return values are used to generate possible completions.
@end deftypevar
@node Completion Functions
Readline.
@deftypefun int rl_complete_internal (int what_to_do)
-Complete the word at or before point. @var{what_to_do} says what to do
-with the completion. A value of @samp{?} means list the possible
-completions. @samp{TAB} means do standard completion. @samp{*} means
-insert all of the possible completions. @samp{!} means to display
-all of the possible completions, if there is more than one, as well as
-performing partial completion. @samp{@@} is similar to @samp{!}, but
-possible completions are not listed if the possible completions share
-a common prefix.
+Complete the word at or before point.
+@var{what_to_do} says what to do with the completion.
+A value of @samp{?} means list the possible completions.
+@samp{TAB} means do standard completion.
+@samp{*} means insert all of the possible completions.
+@samp{!} means to display all of the possible completions,
+if there is more than one, as well as performing partial completion.
+@samp{@@} is similar to @samp{!}, but does not list possible completions
+if the possible completions share a common prefix.
@end deftypefun
@deftypefun int rl_complete (int ignore, int invoking_key)
-Complete the word at or before point. You have supplied the function
-that does the initial simple matching selection algorithm (see
-@code{rl_completion_matches()} and @code{rl_completion_entry_function}).
-The default is to do filename
-completion. This calls @code{rl_complete_internal()} with an
+Complete the word at or before point.
+You have supplied the function that does the initial simple
+matching selection algorithm (see @code{rl_completion_matches()} and
+@code{rl_completion_entry_function}).
+The default is to do filename completion.
+This calls @code{rl_complete_internal()} with an
argument depending on @var{invoking_key}.
@end deftypefun
@deftypefun int rl_possible_completions (int count, int invoking_key)
-List the possible completions. See description of @code{rl_complete
-()}. This calls @code{rl_complete_internal()} with an argument of
-@samp{?}.
+List the possible completions.
+See description of @code{rl_complete()}.
+This calls @code{rl_complete_internal()} with an argument of @samp{?}.
@end deftypefun
@deftypefun int rl_insert_completions (int count, int invoking_key)
Insert the list of possible completions into the line, deleting the
-partially-completed word. See description of @code{rl_complete()}.
+partially-completed word.
+See description of @code{rl_complete()}.
This calls @code{rl_complete_internal()} with an argument of @samp{*}.
@end deftypefun
@end deftypefun
@deftypefun {char **} rl_completion_matches (const char *text, rl_compentry_func_t *entry_func)
-Returns an array of strings which is a list of completions for
-@var{text}. If there are no completions, returns @code{NULL}.
+Returns an array of strings which is a list of completions for @var{text}.
+If there are no completions, returns @code{NULL}.
The first entry in the returned array is the substitution for @var{text}.
-The remaining entries are the possible completions. The array is
-terminated with a @code{NULL} pointer.
-
-@var{entry_func} is a function of two args, and returns a
-@code{char *}. The first argument is @var{text}. The second is a
-state argument; it is zero on the first call, and non-zero on subsequent
-calls. @var{entry_func} returns a @code{NULL} pointer to the caller
+The remaining entries are the possible completions.
+The array is terminated with a @code{NULL} pointer.
+
+@var{entry_func} is a function of two args, and returns a @code{char *}.
+The first argument is @var{text}.
+The second is a state argument;
+it is zero on the first call, and non-zero on subsequent calls.
+@var{entry_func} returns a @code{NULL} pointer to the caller
when there are no more matches.
@end deftypefun
@end deftypefun
@deftypefun {char *} rl_username_completion_function (const char *text, int state)
-A completion generator for usernames. @var{text} contains a partial
-username preceded by a random character (usually @samp{~}). As with all
-completion generators, @var{state} is zero on the first call and non-zero
-for subsequent calls.
+A completion generator for usernames.
+@var{text} contains a partial username preceded by a
+random character (usually @samp{~}).
+As with all completion generators,
+@var{state} is zero on the first call and non-zero for subsequent calls.
@end deftypefun
@node Completion Variables
the boundaries of @var{text}, which is a character string.
If this function exists and returns @code{NULL}, or if this variable is
set to @code{NULL}, then @code{rl_complete()} will call the value of
-@code{rl_completion_entry_function} to generate matches, otherwise the
-array of strings returned will be used.
+@code{rl_completion_entry_function} to generate matches, otherwise
+completion will use the array of strings this function returns.
If this function sets the @code{rl_attempted_completion_over}
variable to a non-zero value, Readline will not perform its default
completion even if this function returns no matches.
@deftypevar {rl_quote_func_t *} rl_filename_quoting_function
A pointer to a function that will quote a filename in an
-application-specific fashion. This is called if filename completion is being
-attempted and one of the characters in @code{rl_filename_quote_characters}
-appears in a completed filename. The function is called with
-@var{text}, @var{match_type}, and @var{quote_pointer}. The @var{text}
-is the filename to be quoted. The @var{match_type} is either
-@code{SINGLE_MATCH}, if there is only one completion match, or
-@code{MULT_MATCH}. Some functions use this to decide whether or not to
-insert a closing quote character. The @var{quote_pointer} is a pointer
-to any opening quote character the user typed. Some functions choose
-to reset this character.
+application-specific fashion.
+Readline calls this function during filename completion
+if one of the characters in @code{rl_filename_quote_characters}
+appears in a completed filename.
+The function is called with
+@var{text}, @var{match_type}, and @var{quote_pointer}.
+The @var{text} is the filename to be quoted.
+The @var{match_type} is either @code{SINGLE_MATCH},
+if there is only one completion match, or @code{MULT_MATCH}.
+Some functions use this to decide whether or not to
+insert a closing quote character.
+The @var{quote_pointer} is a pointer
+to any opening quote character the user typed.
+Some functions choose to reset this character if they decide to quote
+the filename in a different style.
+It's preferable to preserve the user's quoting as much as possible --
+it's less disruptive.
@end deftypevar
@deftypevar {rl_dequote_func_t *} rl_filename_dequoting_function
A pointer to a function that will remove application-specific quoting
-characters from a filename before completion is attempted, so those
-characters do not interfere with matching the text against names in
-the filesystem. It is called with @var{text}, the text of the word
+characters from a filename before attempting completion,
+so those characters do not interfere with matching the text against
+names in the filesystem.
+It is called with @var{text}, the text of the word
to be dequoted, and @var{quote_char}, which is the quoting character
-that delimits the filename (usually @samp{'} or @samp{"}). If
-@var{quote_char} is zero, the filename was not in an embedded string.
+that delimits the filename (usually @samp{'} or @samp{"}).
+If @var{quote_char} is zero, the filename was not in a quoted string.
@end deftypevar
@deftypevar {rl_linebuf_func_t *} rl_char_is_quoted_p
A pointer to a function to call that determines whether or not a specific
character in the line buffer is quoted, according to whatever quoting
-mechanism the program calling Readline uses. The function is called with
-two arguments: @var{text}, the text of the line, and @var{index}, the
-index of the character in the line. It is used to decide whether a
-character found in @code{rl_completer_word_break_characters} should be
+mechanism the application uses.
+The function is called with two arguments:
+@var{text}, the text of the line,
+and @var{index}, the index of the character in the line.
+It is used to decide whether a character found in
+@code{rl_completer_word_break_characters} should be
used to break words for the completer.
@end deftypevar
@deftypevar {rl_compignore_func_t *} rl_ignore_some_completions_function
-This function, if defined, is called by the completer when real filename
+Readline calls this function, if defined, when filename
completion is done, after all the matching names have been generated.
It is passed a @code{NULL} terminated array of matches.
-The first element (@code{matches[0]}) is the
-maximal substring common to all matches. This function can
-re-arrange the list of matches as required, but each element deleted
-from the array must be freed.
+The first element (@code{matches[0]}) is the maximal substring
+common to all matches.
+This function can re-arrange the list of matches as required, but
+must free each element it deletes from the array.
@end deftypevar
@deftypevar {rl_icppfunc_t *} rl_directory_completion_hook
This function, if defined, is allowed to modify the directory portion
-of filenames Readline completes.
+of filenames during completion.
It could be used to expand symbolic links or shell variables in pathnames.
It is called with the address of a string (the current directory name) as an
argument, and may modify that string.
-If the string is replaced with a new string, the old value should be freed.
+If the function replaces the string with a new string, it
+should free the old value.
Any modified directory name should have a trailing slash.
The modified value will be used as part of the completion, replacing
the directory portion of the pathname the user typed.
@deftypevar {rl_icppfunc_t *} rl_directory_rewrite_hook;
If non-zero, this is the address of a function to call when completing
-a directory name. This function takes the address of the directory name
-to be modified as an argument. Unlike @code{rl_directory_completion_hook},
-it only modifies the directory name used in @code{opendir}, not what is
-displayed when the possible completions are printed or inserted. It is
-called before rl_directory_completion_hook.
+a directory name.
+This function takes the address of the directory name
+to be modified as an argument.
+Unlike @code{rl_directory_completion_hook},
+it only modifies the directory name used in @code{opendir()},
+not what Readline displays when it prints or inserts
+the possible completions.
+Readline calls this before rl_directory_completion_hook.
At the least, even if no other expansion is performed, this function should
remove any quote characters from the directory name, because its result will
be passed directly to @code{opendir()}.
@deftypevar {rl_icppfunc_t *} rl_filename_stat_hook
If non-zero, this is the address of a function for the completer to
call before deciding which character to append to a completed name.
-This function modifies its filename name argument, and the modified value
-is passed to @code{stat()} to determine the file's type and characteristics.
+This function modifies its filename name argument, and Readline passes
+the modified value to @code{stat()}
+to determine the file's type and characteristics.
This function does not need to remove quote characters from the filename.
The stat hook returns an integer that should be non-zero if
@end deftypevar
@deftypevar {rl_dequote_func_t *} rl_filename_rewrite_hook
-If non-zero, this is the address of a function called when reading
+If non-zero, this is the address of a function
+for Readline to call when reading
directory entries from the filesystem for completion and comparing
-them to the filename portion of the partial word to be completed
-(after its potential modification by @code{rl_completion_rewrite_hook}).
-The function should
-perform any necessary application or system-specific conversion on
-the filename, such as converting between character sets or converting
-from a filesystem format to a character input format.
-The function takes two arguments: @var{fname}, the filename to be converted,
+them to the filename portion of the partial word being completed.
+It modifies the filesystem entries,
+as opposed to @code{rl_completion_rewrite_hook},
+which modifies the word being completed.
+The function takes two arguments:
+@var{fname}, the filename to be converted,
and @var{fnlen}, its length in bytes.
It must either return its first argument (if no conversion takes place)
-or the converted filename in newly-allocated memory. The converted
-form is used to compare against the word to be completed, and, if it
-matches, is added to the list of matches. Readline will free the
-allocated string.
+or the converted filename in newly-allocated memory.
+The function should perform any necessary application or system-specific
+conversion on the filename, such as converting between character sets
+or converting from a filesystem format to a character input format.
+Readline compares the converted form against the word to be completed,
+and, if it matches, adds it to the list of matches.
+Readline will free the allocated string.
@end deftypevar
@deftypevar {rl_dequote_func_t *} rl_completion_rewrite_hook
-If non-zero, this is the address of a function to call before
+If non-zero, this is the address of a function
+for Readline to call before
comparing the filename portion of a word to be completed with directory
entries from the filesystem.
-The function takes two arguments: @var{fname}, the filename to be converted,
+It modifies the word being completed,
+as opposed to @code{rl_filename_rewrite_hook},
+which modifies filesystem entries.
+The function takes two arguments:
+@var{fname}, the word to be converted,
after any @code{rl_filename_dequoting_function} has been applied,
and @var{fnlen}, its length in bytes.
It must either return its first argument (if no conversion takes place)
conversion on the filename, such as converting between character sets or
converting from a character input format to some other format.
Readline compares the converted form against directory entries, after
-their potential modification by @code{rl_filename_rewrite_hook}, and adds
-any matches to the list of matches.
+their potential modification by @code{rl_filename_rewrite_hook},
+and adds any matches to the list of matches.
Readline will free the allocated string.
@end deftypevar
@deftypevar {rl_compdisp_func_t *} rl_completion_display_matches_hook
If non-zero, then this is the address of a function to call when
completing a word would normally display the list of possible matches.
-This function is called in lieu of Readline displaying the list.
+Readline calls this function instead of displaying the list itself.
It takes three arguments:
(@code{char **}@var{matches}, @code{int} @var{num_matches}, @code{int} @var{max_length})
where @var{matches} is the array of matching strings,
@deftypevar {const char *} rl_basic_word_break_characters
The basic list of characters that signal a break between words for the
-completer routine. The default value of this variable is the characters
+completer routine.
+The default value of this variable is the characters
which break words for completion in Bash:
@code{" \t\n\"\\'`@@$><=;|&@{("}.
@end deftypevar
@deftypevar {const char *} rl_basic_quote_characters
A list of quote characters which can cause a word break.
+The default value includes single and double quotes.
@end deftypevar
@deftypevar {const char *} rl_completer_word_break_characters
The list of characters that signal a break between words for
-@code{rl_complete_internal()}. The default list is the value of
+@code{rl_complete_internal()}.
+These characters determine how Readline decides what to complete.
+The default list is the value of
@code{rl_basic_word_break_characters}.
@end deftypevar
@deftypevar {rl_cpvfunc_t *} rl_completion_word_break_hook
If non-zero, this is the address of a function to call when Readline is
-deciding where to separate words for word completion. It should return
-a character string like @code{rl_completer_word_break_characters} to be
-used to perform the current completion. The function may choose to set
-@code{rl_completer_word_break_characters} itself. If the function
-returns @code{NULL}, @code{rl_completer_word_break_characters} is used.
+deciding where to separate words for word completion.
+It should return a character string like
+@code{rl_completer_word_break_characters} to be
+used to perform the current completion.
+The function may choose to set
+@code{rl_completer_word_break_characters} itself.
+If the function returns @code{NULL}, Readline uses
+@code{rl_completer_word_break_characters}.
@end deftypevar
@deftypevar {const char *} rl_completer_quote_characters
A list of characters which can be used to quote a substring of the line.
-Completion occurs on the entire substring, and within the substring
+Completion occurs on the entire substring, and within the substring,
@code{rl_completer_word_break_characters} are treated as any other character,
unless they also appear within this list.
@end deftypevar
@deftypevar {const char *} rl_filename_quote_characters
-A list of characters that cause a filename to be quoted by the completer
-when they appear in a completed filename. The default is the null string.
+A list of characters that cause Readline to quote a filename
+when they appear in a completed filename.
+The default is the null string.
@end deftypevar
@deftypevar {const char *} rl_special_prefixes
@end deftypevar
@deftypevar int rl_completion_query_items
-Up to this many items will be displayed in response to a
-possible-completions call. After that, Readline asks the user for
-confirmation before displaying them.
-The default value is 100. A negative value
+This determines the maximum number of items
+that possible-completions will display unconditionally.
+If there are more possible completions than this,
+Readline asks the user for confirmation before displaying them.
+The default value is 100.
+A negative value
indicates that Readline should never ask for confirmation.
@end deftypevar
@deftypevar {int} rl_completion_append_character
When a single completion alternative matches at the end of the command
-line, this character is appended to the inserted completion text. The
-default is a space character (@samp{ }). Setting this to the null
+line, Readline appends this character to the inserted completion text.
+The default is a space character (@samp{ }).
+Setting this to the null
character (@samp{\0}) prevents anything being appended automatically.
This can be changed in application-specific completion functions to
provide the ``most sensible word separator character'' according to
an application-specific command line syntax specification.
-It is set to the default before any application-specific completion function
-is called, and may only be changed within such a function.
+It is set to the default before calling any application-specific completion
+function, and may only be changed within such a function.
@end deftypevar
@deftypevar int rl_completion_suppress_append
-If non-zero, @var{rl_completion_append_character} is not appended to
+If non-zero, Readline will not append the
+@var{rl_completion_append_character} to
matches at the end of the command line, as described above.
-It is set to 0 before any application-specific completion function
-is called, and may only be changed within such a function.
-@end deftypevar
-
-@deftypevar int rl_completion_quote_character
-When Readline is completing quoted text, as delimited by one of the
-characters in @var{rl_completer_quote_characters}, it sets this variable
-to the quoting character found.
-This is set before any application-specific completion function is called.
+It is set to 0 before calling any application-specific completion function,
+and may only be changed within such a function.
@end deftypevar
@deftypevar int rl_completion_suppress_quote
If non-zero, Readline does not append a matching quote character when
performing completion on a quoted string.
-It is set to 0 before any application-specific completion function
-is called, and may only be changed within such a function.
+It is set to 0 before calling any application-specific completion function,
+and may only be changed within such a function.
@end deftypevar
@deftypevar int rl_completion_found_quote
When Readline is completing quoted text, it sets this variable
to a non-zero value if the word being completed contains or is delimited
by any quoting characters, including backslashes.
-This is set before any application-specific completion function is called.
+This is set before calling any application-specific completion function.
+@end deftypevar
+
+@deftypevar int rl_completion_quote_character
+When Readline is completing quoted text, as delimited by one of the
+characters in @var{rl_completer_quote_characters}, it sets this variable
+to the quoting character it found.
+This is set before calling any application-specific completion function.
@end deftypevar
@deftypevar int rl_completion_mark_symlink_dirs
-If non-zero, a slash will be appended to completed filenames that are
+If non-zero, Readline appends a slash to completed filenames that are
symbolic links to directory names, subject to the value of the
user-settable @var{mark-directories} variable.
This variable exists so that application-specific completion functions
can override the user's global preference (set via the
@var{mark-symlinked-directories} Readline variable) if appropriate.
-This variable is set to the user's preference before any
-application-specific completion function is called, so unless that
-function modifies the value, the user's preferences are honored.
+This variable is set to the user's preference before calling any
+application-specific completion function,
+so unless that function modifies the value,
+Readline will honor the user's preferences.
@end deftypevar
@deftypevar int rl_ignore_completion_duplicates
-If non-zero, then duplicates in the matches are removed.
+If non-zero, then Readline removes duplicates in the set of possible
+completions.
The default is 1.
@end deftypevar
@deftypevar int rl_filename_completion_desired
-Non-zero means that the results of the matches are to be treated as
-filenames. This is @emph{always} zero when completion is attempted,
+A non-zero value means that Readline should treat the results of the
+matches as filenames.
+This is @emph{always} zero when completion is attempted,
and can only be changed
-within an application-specific completion function. If it is set to a
-non-zero value by such a function, directory names have a slash appended
-and Readline attempts to quote completed filenames if they contain any
+within an application-specific completion function.
+If it is set to a
+non-zero value by such a function, Readline
+appends a slash to directory names
+and attempts to quote completed filenames if they contain any
characters in @code{rl_filename_quote_characters} and
@code{rl_filename_quoting_desired} is set to a non-zero value.
@end deftypevar
@deftypevar int rl_filename_quoting_desired
-Non-zero means that the results of the matches are to be quoted using
-double quotes (or an application-specific quoting mechanism) if the
-completed filename contains any characters in
-@code{rl_filename_quote_chars}. This is @emph{always} non-zero
-when completion is attempted, and can only be changed within an
+A non-zero value means that Readline should quote the results of the
+matches using double quotes (or an application-specific quoting mechanism)
+if the completed filename contains any characters in
+@code{rl_filename_quote_chars}.
+This is @emph{always} non-zero when completion is attempted,
+and can only be changed within an
application-specific completion function.
-The quoting is effected via a call to the function pointed to
+The quoting is performed via a call to the function pointed to
by @code{rl_filename_quoting_function}.
@end deftypevar
@deftypevar int rl_full_quoting_desired
-Non-zero means that Readline should apply filename-style quoting,
+A non-zero value means that Readline should apply filename-style quoting,
including any application-specified quoting mechanism,
-to all completion matches even if we are not otherwise treating the
+to all completion matches even if it is not otherwise treating the
matches as filenames.
-This is @emph{always} zero when completion is attempted, and can only
-be changed within an application-specific completion function.
-The quoting is effected via a call to the function pointed to
+This is @emph{always} zero when completion is attempted,
+and can only be changed within an
+application-specific completion function.
+The quoting is performed via a call to the function pointed to
by @code{rl_filename_quoting_function}.
@end deftypevar
@deftypevar int rl_sort_completion_matches
If an application sets this variable to 0, Readline will not sort the
list of completions (which implies that it cannot remove any duplicate
-completions). The default value is 1, which means that Readline will
+completions).
+The default value is 1, which means that Readline will
sort the completions and, depending on the value of
-@code{rl_ignore_completion_duplicates}, will attempt to remove duplicate
-matches.
+@code{rl_ignore_completion_duplicates}, will attempt to remove
+duplicate matches.
@end deftypevar
@deftypevar int rl_completion_type
Set to a character describing the type of completion Readline is currently
attempting; see the description of @code{rl_complete_internal()}
(@pxref{Completion Functions}) for the list of characters.
-This is set to the appropriate value before any application-specific
-completion function is called, allowing such functions to present
+This is set to the appropriate value before calling
+any application-specific completion function,
+so these functions can present
the same interface as @code{rl_complete()}.
@end deftypevar
@deftypevar int rl_completion_invoking_key
Set to the final character in the key sequence that invoked one of the
-completion functions that call @code{rl_complete_internal()}. This is
-set to the appropriate value before any application-specific completion
-function is called.
+completion functions that call @code{rl_complete_internal()}.
+This is set to the appropriate value before calling
+any application-specific completion function.
@end deftypevar
@deftypevar int rl_inhibit_completion
-If this variable is non-zero, completion is inhibited. The completion
-character will be inserted as any other bound to @code{self-insert}.
+If this variable is non-zero, Readline does not perform completion,
+even if a key binding indicates it should.
+The completion character
+is inserted as if it were bound to @code{self-insert}.
@end deftypevar
@node A Short Completion Example
@subsection A Short Completion Example
Here is a small application demonstrating the use of the GNU Readline
-library. It is called @code{fileman}, and the source code resides in
-@file{examples/fileman.c}. This sample application provides
-completion of command names, line editing features, and access to the
-history list.
+library.
+It is called @code{fileman}, and the source code resides in
+@file{examples/fileman.c}.
+This sample application provides
+command name completion, line editing features,
+and access to the history list.
@page
@smallexample
<HTML>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<!-- Created on January, 2 2018 by texi2html 1.64 -->
+<!-- Created on October, 11 2024 by texi2html 1.64 -->
<!--
Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
Karl Berry <karl@freefriends.org>
The text <KBD>M-k</KBD> is read as `Meta-K' and describes the character
produced when the Meta key (if you have one) is depressed, and the <KBD>k</KBD>
-key is pressed.
+key is pressed (a <EM>meta character</EM>).
The Meta key is labeled <KBD>ALT</KBD> on many keyboards.
On keyboards with two keys labeled <KBD>ALT</KBD> (usually to either side of
the space bar), the <KBD>ALT</KBD> on the left side is generally set to
Compose key for typing accented characters.
</P><P>
+On some keyboards, the Meta key modifier produces meta characters with
+the eighth bit (0200) set.
+You can use the <CODE>enable-meta-key</CODE> variable
+to control whether or not it does this, if the keyboard allows it.
+On many others, the terminal or terminal emulator converts the metafied
+key to a key sequence beginning with <KBD>ESC</KBD> as described in the
+next paragraph.
+</P><P>
+
If you do not have a Meta or <KBD>ALT</KBD> key, or another key working as
-a Meta key, the identical keystroke can be generated by typing <KBD>ESC</KBD>
+a Meta key, you can generally achieve the latter effect by typing <KBD>ESC</KBD>
<EM>first</EM>, and then typing <KBD>k</KBD>.
+The <KBD>ESC</KBD> character is known as the <EM>meta prefix</EM>).
+</P><P>
+
Either process is known as <EM>metafying</EM> the <KBD>k</KBD> key.
</P><P>
+If your Meta key produces a key sequence with the <KBD>ESC</KBD> meta prefix,
+you can make <KBD>M-key</KBD> key bindings you specify
+(see <CODE>Key Bindings</CODE> in <A HREF="rluserman.html#SEC10">1.3.1 Readline Init File Syntax</A>)
+do the same thing by setting the <CODE>force-meta-prefix</CODE> variable.
+</P><P>
+
The text <KBD>M-C-k</KBD> is read as `Meta-Control-k' and describes the
-character produced by <EM>metafying</EM> <KBD>C-k</KBD>.
+character produced by metafying <KBD>C-k</KBD>.
</P><P>
-In addition, several keys have their own names. Specifically,
+In addition, several keys have their own names.
+Specifically,
<KBD>DEL</KBD>, <KBD>ESC</KBD>, <KBD>LFD</KBD>, <KBD>SPC</KBD>, <KBD>RET</KBD>, and <KBD>TAB</KBD> all
stand for themselves when seen in this text, or in an init file
(see section <A HREF="rluserman.html#SEC9">1.3 Readline Init File</A>).
If your keyboard lacks a <KBD>LFD</KBD> key, typing <KBD>C-j</KBD> will
-produce the desired character.
+output the appropriate character.
The <KBD>RET</KBD> key may be labeled <KBD>Return</KBD> or <KBD>Enter</KBD> on
some keyboards.
</P><P>
<P>
Often during an interactive session you type in a long line of text,
-only to notice that the first word on the line is misspelled. The
-Readline library gives you a set of commands for manipulating the text
+only to notice that the first word on the line is misspelled.
+The Readline library gives you a set of commands for manipulating the text
as you type it in, allowing you to just fix your typo, and not forcing
-you to retype the majority of the line. Using these editing commands,
+you to retype the majority of the line.
+Using these editing commands,
you move the cursor to the place that needs correction, and delete or
-insert the text of the corrections. Then, when you are satisfied with
-the line, you simply press <KBD>RET</KBD>. You do not have to be at the
+insert the text of the corrections.
+Then, when you are satisfied with the line, you simply press <KBD>RET</KBD>.
+You do not have to be at the
end of the line to press <KBD>RET</KBD>; the entire line is accepted
regardless of the location of the cursor within the line.
</P><P>
<!--docid::SEC4::-->
<P>
-In order to enter characters into the line, simply type them. The typed
+In order to enter characters into the line, simply type them.
+The typed
character appears where the cursor was, and then the cursor moves one
-space to the right. If you mistype a character, you can use your
+space to the right.
+If you mistype a character, you can use your
erase character to back up and delete the mistyped character.
</P><P>
Sometimes you may mistype a character, and
-not notice the error until you have typed several other characters. In
-that case, you can type <KBD>C-b</KBD> to move the cursor to the left, and then
-correct your mistake. Afterwards, you can move the cursor to the right
-with <KBD>C-f</KBD>.
+not notice the error until you have typed several other characters.
+In that case, you can type <KBD>C-b</KBD> to move the cursor to the left,
+and then correct your mistake.
+Afterwards, you can move the cursor to the right with <KBD>C-f</KBD>.
</P><P>
When you add text in the middle of a line, you will notice that characters
to the right of the cursor are `pushed over' to make room for the text
-that you have inserted. Likewise, when you delete text behind the cursor,
+that you have inserted.
+Likewise, when you delete text behind the cursor,
characters to the right of the cursor are `pulled back' to fill in the
-blank space created by the removal of the text. A list of the bare
-essentials for editing the text of an input line follows.
+blank space created by the removal of the text.
+These are the bare
+essentials for editing the text of an input line:
</P><P>
<DL COMPACT>
<DT>Printing characters
<DD>Insert the character into the line at the cursor.
<DT><KBD>C-_</KBD> or <KBD>C-x C-u</KBD>
-<DD>Undo the last editing command. You can undo all the way back to an
-empty line.
+<DD>Undo the last editing command.
+You can undo all the way back to an empty line.
</DL>
<P>
-(Depending on your configuration, the <KBD>Backspace</KBD> key be set to
+Depending on your configuration, the <KBD>Backspace</KBD> key might be set to
delete the character to the left of the cursor and the <KBD>DEL</KBD> key set
to delete the character underneath the cursor, like <KBD>C-d</KBD>, rather
-than the character to the left of the cursor.)
+than the character to the left of the cursor.
</P><P>
<A NAME="Readline Movement Commands"></A>
<P>
The above table describes the most basic keystrokes that you need
-in order to do editing of the input line. For your convenience, many
-other commands have been added in addition to <KBD>C-b</KBD>, <KBD>C-f</KBD>,
-<KBD>C-d</KBD>, and <KBD>DEL</KBD>. Here are some commands for moving more rapidly
-about the line.
+in order to do editing of the input line.
+For your convenience, many other commands are available in
+addition to <KBD>C-b</KBD>, <KBD>C-f</KBD>, <KBD>C-d</KBD>, and <KBD>DEL</KBD>.
+Here are some commands for moving more rapidly within the line.
</P><P>
<DL COMPACT>
<P>
Notice how <KBD>C-f</KBD> moves forward a character, while <KBD>M-f</KBD> moves
-forward a word. It is a loose convention that control keystrokes
+forward a word.
+It is a loose convention that control keystrokes
operate on characters while meta keystrokes operate on words.
</P><P>
When you use a kill command, the text is saved in a <EM>kill-ring</EM>.
Any number of consecutive kills save all of the killed text together, so
-that when you yank it back, you get it all. The kill
-ring is not line specific; the text that you killed on a previously
+that when you yank it back, you get it all.
+The kill ring is not line specific; the text that you killed on a previously
typed line is available to be yanked back later, when you are typing
another line.
<A NAME="IDX3"></A>
<P>
<DT><KBD>M-<KBD>DEL</KBD></KBD>
-<DD>Kill from the cursor the start of the current word, or, if between
+<DD>Kill from the cursor to the start of the current word, or, if between
words, to the start of the previous word.
Word boundaries are the same as those used by <KBD>M-b</KBD>.
<P>
<DT><KBD>C-w</KBD>
-<DD>Kill from the cursor to the previous whitespace. This is different than
+<DD>Kill from the cursor to the previous whitespace.
+This is different than
<KBD>M-<KBD>DEL</KBD></KBD> because the word boundaries differ.
<P>
<P>
Here is how to <EM>yank</EM> the text back into the line. Yanking
-means to copy the most-recently-killed text from the kill buffer.
+means to copy the most-recently-killed text from the kill buffer
+into the line at the current cursor position.
</P><P>
<DL COMPACT>
<P>
<DT><KBD>M-y</KBD>
-<DD>Rotate the kill-ring, and yank the new top. You can only do this if
-the prior command is <KBD>C-y</KBD> or <KBD>M-y</KBD>.
+<DD>Rotate the kill-ring, and yank the new top.
+You can only do this if the prior command is <KBD>C-y</KBD> or <KBD>M-y</KBD>.
</DL>
<P>
<!--docid::SEC7::-->
<P>
-You can pass numeric arguments to Readline commands. Sometimes the
+You can pass numeric arguments to Readline commands.
+Sometimes the
argument acts as a repeat count, other times it is the <I>sign</I> of the
-argument that is significant. If you pass a negative argument to a
+argument that is significant.
+If you pass a negative argument to a
command which normally acts in a forward direction, that command will
-act in a backward direction. For example, to kill text back to the
+act in a backward direction.
+For example, to kill text back to the
start of the line, you might type <SAMP>`M-- C-k'</SAMP>.
</P><P>
The general way to pass numeric arguments to a command is to type meta
-digits before the command. If the first `digit' typed is a minus
-sign (<SAMP>`-'</SAMP>), then the sign of the argument will be negative. Once
-you have typed one meta digit to get the argument started, you can type
-the remainder of the digits, and then the command. For example, to give
+digits before the command.
+If the first `digit' typed is a minus
+sign (<SAMP>`-'</SAMP>), then the sign of the argument will be negative.
+Once you have typed one meta digit to get the argument started, you can
+type the remainder of the digits, and then the command.
+For example, to give
the <KBD>C-d</KBD> command an argument of 10, you could type <SAMP>`M-1 0 C-d'</SAMP>,
which will delete the next ten characters on the input line.
</P><P>
the next entry from the history matching the string typed so far.
An incremental search requires only as many characters as needed to
find the desired history entry.
-To search backward in the history for a particular string, type
-<KBD>C-r</KBD>. Typing <KBD>C-s</KBD> searches forward through the history.
+When using emacs editing mode, type <KBD>C-r</KBD>
+to search backward in the history for a particular string.
+Typing <KBD>C-s</KBD> searches forward through the history.
The characters present in the value of the <CODE>isearch-terminators</CODE> variable
are used to terminate an incremental search.
If that variable has not been assigned a value, the <KBD>ESC</KBD> and
the current line, and begin editing.
</P><P>
-Readline remembers the last incremental search string. If two
-<KBD>C-r</KBD>s are typed without any intervening characters defining a new
-search string, any remembered search string is used.
+Readline remembers the last incremental search string.
+If two <KBD>C-r</KBD>s are typed without any intervening characters defining
+a new search string, Readline uses any remembered search string.
</P><P>
Non-incremental searches read the entire search string before starting
-to search for matching history lines. The search string may be
-typed by the user or be part of the contents of the current line.
+to search for matching history entries.
+The search string may be typed by the user or be part of the contents of
+the current line.
</P><P>
<A NAME="Readline Init File"></A>
keybindings installed by default, it is possible to use a different set
of keybindings.
Any user can customize programs that use Readline by putting
-commands in an <EM>inputrc</EM> file, conventionally in his home directory.
-The name of this
-file is taken from the value of the environment variable <CODE>INPUTRC</CODE>. If
-that variable is unset, the default is <TT>`~/.inputrc'</TT>. If that
-file does not exist or cannot be read, the ultimate default is
+commands in an <EM>inputrc</EM> file, conventionally in their home directory.
+The name of this file is taken from the value of the
+environment variable <CODE>INPUTRC</CODE>.
+If that variable is unset, the default is <TT>`~/.inputrc'</TT>.
+If that file does not exist or cannot be read, readline looks for
<TT>`/etc/inputrc'</TT>.
</P><P>
-When a program which uses the Readline library starts up, the
-init file is read, and the key bindings are set.
+When a program which uses the Readline library starts up, Readline reads
+the init file and sets any variables and key bindings it contains.
</P><P>
In addition, the <CODE>C-x C-r</CODE> command re-reads this init file, thus
<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Syntax for the commands in the inputrc file.</TD></TR>
-</TABLE>
-
-<br>
-<TABLE BORDER=0 CELLSPACING=0>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC11">1.3.2 Conditional Init Constructs</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Conditional key bindings in the inputrc file.</TD></TR>
-</TABLE>
-
-<br>
-<TABLE BORDER=0 CELLSPACING=0>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC12">1.3.3 Sample Init File</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">An example inputrc file.</TD></TR>
</TABLE></BLOCKQUOTE>
<P>
<P>
There are only a few basic constructs allowed in the
-Readline init file. Blank lines are ignored.
+Readline init file.
+Blank lines are ignored.
Lines beginning with a <SAMP>`#'</SAMP> are comments.
Lines beginning with a <SAMP>`$'</SAMP> indicate conditional
-constructs (see section <A HREF="rluserman.html#SEC11">1.3.2 Conditional Init Constructs</A>). Other lines
-denote variable settings and key bindings.
+constructs (see section <A HREF="rluserman.html#SEC11">1.3.2 Conditional Init Constructs</A>).
+Other lines denote variable settings and key bindings.
</P><P>
<DL COMPACT>
<TABLE><tr><td> </td><td class=example><pre>set editing-mode vi
</pre></td></tr></table></P><P>
-Variable names and values, where appropriate, are recognized without regard
-to case. Unrecognized variable names are ignored.
+Variable names and values, where appropriate, are recognized without
+regard to case.
+Unrecognized variable names are ignored.
</P><P>
Boolean variables (those that can be set to on or off) are set to on if
-the value is null or empty, <VAR>on</VAR> (case-insensitive), or 1. Any other
-value results in the variable being set to off.
+the value is null or empty, <VAR>on</VAR> (case-insensitive), or 1.
+Any other value results in the variable being set to off.
</P><P>
A great deal of run-time behavior is changeable with the following
<A NAME="IDX4"></A>
<DL COMPACT>
-<DT><CODE>bell-style</CODE>
+<DT><CODE>active-region-start-color</CODE>
<DD><A NAME="IDX5"></A>
+A string variable that controls the text color and background when displaying
+the text in the active region (see the description of
+<CODE>enable-active-region</CODE> below).
+This string must not take up any physical character positions on the display,
+so it should consist only of terminal escape sequences.
+It is output to the terminal before displaying the text in the active region.
+This variable is reset to the default value whenever the terminal type changes.
+The default value is the string that puts the terminal in standout mode,
+as obtained from the terminal's terminfo description.
+A sample value might be <SAMP>`\e[01;33m'</SAMP>.
+<P>
+
+<DT><CODE>active-region-end-color</CODE>
+<DD><A NAME="IDX6"></A>
+A string variable that "undoes" the effects of <CODE>active-region-start-color</CODE>
+and restores "normal" terminal display appearance after displaying text
+in the active region.
+This string must not take up any physical character positions on the display,
+so it should consist only of terminal escape sequences.
+It is output to the terminal after displaying the text in the active region.
+This variable is reset to the default value whenever the terminal type changes.
+The default value is the string that restores the terminal from standout mode,
+as obtained from the terminal's terminfo description.
+A sample value might be <SAMP>`\e[0m'</SAMP>.
+<P>
+
+<DT><CODE>bell-style</CODE>
+<DD><A NAME="IDX7"></A>
Controls what happens when Readline wants to ring the terminal bell.
-If set to <SAMP>`none'</SAMP>, Readline never rings the bell. If set to
-<SAMP>`visible'</SAMP>, Readline uses a visible bell if one is available.
+If set to <SAMP>`none'</SAMP>, Readline never rings the bell.
+If set to <SAMP>`visible'</SAMP>, Readline uses a visible bell if one is available.
If set to <SAMP>`audible'</SAMP> (the default), Readline attempts to ring
the terminal's bell.
<P>
<DT><CODE>bind-tty-special-chars</CODE>
-<DD><A NAME="IDX6"></A>
+<DD><A NAME="IDX8"></A>
If set to <SAMP>`on'</SAMP> (the default), Readline attempts to bind the control
-characters treated specially by the kernel's terminal driver to their
+characters that are
+treated specially by the kernel's terminal driver to their
Readline equivalents.
+These override the default Readline bindings described here.
+Type <SAMP>`stty -a'</SAMP> at a Bash prompt to see your current terminal settings,
+including the special control characters (usually <CODE>cchars</CODE>).
<P>
<DT><CODE>blink-matching-paren</CODE>
-<DD><A NAME="IDX7"></A>
+<DD><A NAME="IDX9"></A>
If set to <SAMP>`on'</SAMP>, Readline attempts to briefly move the cursor to an
-opening parenthesis when a closing parenthesis is inserted. The default
-is <SAMP>`off'</SAMP>.
+opening parenthesis when a closing parenthesis is inserted.
+The default is <SAMP>`off'</SAMP>.
<P>
<DT><CODE>colored-completion-prefix</CODE>
-<DD><A NAME="IDX8"></A>
+<DD><A NAME="IDX10"></A>
If set to <SAMP>`on'</SAMP>, when listing completions, Readline displays the
common prefix of the set of possible completions using a different color.
The color definitions are taken from the value of the <CODE>LS_COLORS</CODE>
environment variable.
+If there is a color definition in <CODE>LS_COLORS</CODE> for the custom suffix
+<SAMP>`readline-colored-completion-prefix'</SAMP>, Readline uses this color for
+the common prefix instead of its default.
The default is <SAMP>`off'</SAMP>.
<P>
<DT><CODE>colored-stats</CODE>
-<DD><A NAME="IDX9"></A>
+<DD><A NAME="IDX11"></A>
If set to <SAMP>`on'</SAMP>, Readline displays possible completions using different
colors to indicate their file type.
The color definitions are taken from the value of the <CODE>LS_COLORS</CODE>
<P>
<DT><CODE>comment-begin</CODE>
-<DD><A NAME="IDX10"></A>
-The string to insert at the beginning of the line when the
-<CODE>insert-comment</CODE> command is executed. The default value
-is <CODE>"#"</CODE>.
+<DD><A NAME="IDX12"></A>
+The string to insert at the beginning of the line by the
+<CODE>insert-comment</CODE> command.
+The default value is <CODE>"#"</CODE>.
<P>
<DT><CODE>completion-display-width</CODE>
-<DD><A NAME="IDX11"></A>
+<DD><A NAME="IDX13"></A>
The number of screen columns used to display possible matches
when performing completion.
The value is ignored if it is less than 0 or greater than the terminal
<P>
<DT><CODE>completion-ignore-case</CODE>
-<DD><A NAME="IDX12"></A>
+<DD><A NAME="IDX14"></A>
If set to <SAMP>`on'</SAMP>, Readline performs filename matching and completion
in a case-insensitive fashion.
The default value is <SAMP>`off'</SAMP>.
<P>
<DT><CODE>completion-map-case</CODE>
-<DD><A NAME="IDX13"></A>
+<DD><A NAME="IDX15"></A>
If set to <SAMP>`on'</SAMP>, and <VAR>completion-ignore-case</VAR> is enabled, Readline
treats hyphens (<SAMP>`-'</SAMP>) and underscores (<SAMP>`_'</SAMP>) as equivalent when
performing case-insensitive filename matching and completion.
+The default value is <SAMP>`off'</SAMP>.
<P>
<DT><CODE>completion-prefix-display-length</CODE>
-<DD><A NAME="IDX14"></A>
-The length in characters of the common prefix of a list of possible
-completions that is displayed without modification. When set to a
-value greater than zero, common prefixes longer than this value are
-replaced with an ellipsis when displaying possible completions.
+<DD><A NAME="IDX16"></A>
+The maximum
+length in characters of the common prefix of a list of possible
+completions that is displayed without modification.
+When set to a value greater than zero, readline
+replaces common prefixes longer than this value
+with an ellipsis when displaying possible completions.
<P>
<DT><CODE>completion-query-items</CODE>
-<DD><A NAME="IDX15"></A>
-The number of possible completions that determines when the user is
-asked whether the list of possibilities should be displayed.
-If the number of possible completions is greater than this value,
-Readline will ask the user whether or not he wishes to view
-them; otherwise, they are simply listed.
-This variable must be set to an integer value greater than or equal to 0.
-A negative value means Readline should never ask.
+<DD><A NAME="IDX17"></A>
+The number of possible completions that determines when the user is asked
+whether the list of possibilities should be displayed.
+If the number of possible completions is greater than
+or equal to this value, Readline will ask whether or not
+the user wishes to view them;
+otherwise, Readline simply lists the completions.
+This variable must be set to an integer value greater than or equal to zero.
+A zero value means Readline should never ask; negative
+values are treated as zero.
The default limit is <CODE>100</CODE>.
<P>
<DT><CODE>convert-meta</CODE>
-<DD><A NAME="IDX16"></A>
-If set to <SAMP>`on'</SAMP>, Readline will convert characters with the
-eighth bit set to an ASCII key sequence by stripping the eighth
-bit and prefixing an <KBD>ESC</KBD> character, converting them to a
-meta-prefixed key sequence. The default value is <SAMP>`on'</SAMP>, but
-will be set to <SAMP>`off'</SAMP> if the locale is one that contains
-eight-bit characters.
+<DD><A NAME="IDX18"></A>
+If set to <SAMP>`on'</SAMP>, Readline will convert characters it reads
+that have the eighth bit set to an ASCII key sequence by
+clearing the eighth bit and prefixing an <KBD>ESC</KBD> character,
+converting them to a meta-prefixed key sequence.
+The default value is <SAMP>`on'</SAMP>, but Readline will set it to <SAMP>`off'</SAMP>
+if the locale contains
+characters whose encodings may include bytes with the eighth bit set.
+This variable is dependent on the <CODE>LC_CTYPE</CODE> locale category, and
+may change if the locale changes.
+This variable also affects key bindings;
+see the description of <CODE>force-meta-prefix</CODE> below.
<P>
<DT><CODE>disable-completion</CODE>
-<DD><A NAME="IDX17"></A>
+<DD><A NAME="IDX19"></A>
If set to <SAMP>`On'</SAMP>, Readline will inhibit word completion.
-Completion characters will be inserted into the line as if they had
-been mapped to <CODE>self-insert</CODE>. The default is <SAMP>`off'</SAMP>.
+Completion characters will be inserted into the line as if they
+had been mapped to <CODE>self-insert</CODE>.
+The default is <SAMP>`off'</SAMP>.
<P>
<DT><CODE>echo-control-characters</CODE>
-<DD><A NAME="IDX18"></A>
+<DD><A NAME="IDX20"></A>
When set to <SAMP>`on'</SAMP>, on operating systems that indicate they support it,
-readline echoes a character corresponding to a signal generated from the
-keyboard. The default is <SAMP>`on'</SAMP>.
+Readline echoes a character corresponding to a signal generated from the
+keyboard.
+The default is <SAMP>`on'</SAMP>.
<P>
<DT><CODE>editing-mode</CODE>
-<DD><A NAME="IDX19"></A>
-The <CODE>editing-mode</CODE> variable controls which default set of
-key bindings is used. By default, Readline starts up in Emacs editing
-mode, where the keystrokes are most similar to Emacs. This variable can be
-set to either <SAMP>`emacs'</SAMP> or <SAMP>`vi'</SAMP>.
+<DD><A NAME="IDX21"></A>
+The <CODE>editing-mode</CODE> variable controls the default set of
+key bindings.
+By default, Readline starts up in emacs editing mode, where
+the keystrokes are most similar to Emacs.
+This variable can be set to either <SAMP>`emacs'</SAMP> or <SAMP>`vi'</SAMP>.
<P>
<DT><CODE>emacs-mode-string</CODE>
-<DD><A NAME="IDX20"></A>
+<DD><A NAME="IDX22"></A>
If the <VAR>show-mode-in-prompt</VAR> variable is enabled,
this string is displayed immediately before the last line of the primary
-prompt when emacs editing mode is active. The value is expanded like a
-key binding, so the standard set of meta- and control prefixes and
+prompt when emacs editing mode is active.
+The value is expanded like a
+key binding, so the standard set of meta- and control- prefixes and
backslash escape sequences is available.
-Use the <SAMP>`\1'</SAMP> and <SAMP>`\2'</SAMP> escapes to begin and end sequences of
+The <SAMP>`\1'</SAMP> and <SAMP>`\2'</SAMP> escapes begin and end sequences of
non-printing characters, which can be used to embed a terminal control
sequence into the mode string.
The default is <SAMP>`@'</SAMP>.
<P>
+<DT><CODE>enable-active-region</CODE>
+<DD><A NAME="IDX23"></A>
+<EM>point</EM> is the current cursor position, and <EM>mark</EM> refers to a
+saved cursor position (see section <A HREF="rluserman.html#SEC14">1.4.1 Commands For Moving</A>).
+The text between the point and mark is referred to as the <EM>region</EM>.
+When this variable is set to <SAMP>`On'</SAMP>, Readline allows certain commands
+to designate the region as <EM>active</EM>.
+When the region is active, Readline highlights the text in the region using
+the value of the <CODE>active-region-start-color</CODE>, which defaults to the
+string that enables the terminal's standout mode.
+The active region shows the text inserted by bracketed-paste and any
+matching text found by incremental and non-incremental history searches.
+The default is <SAMP>`On'</SAMP>.
+<P>
+
<DT><CODE>enable-bracketed-paste</CODE>
-<DD><A NAME="IDX21"></A>
-When set to <SAMP>`On'</SAMP>, Readline will configure the terminal in a way
-that will enable it to insert each paste into the editing buffer as a
-single string of characters, instead of treating each character as if
-it had been read from the keyboard. This can prevent pasted characters
-from being interpreted as editing commands. The default is <SAMP>`off'</SAMP>.
+<DD><A NAME="IDX24"></A>
+When set to <SAMP>`On'</SAMP>, Readline configures the terminal to insert each
+paste into the editing buffer as a single string of characters, instead
+of treating each character as if it had been read from the keyboard.
+This is called putting the terminal into <EM>bracketed paste mode</EM>;
+it prevents Readline from executing any editing commands bound
+to key sequences appearing in the pasted text.
+The default is <SAMP>`On'</SAMP>.
<P>
<DT><CODE>enable-keypad</CODE>
-<DD><A NAME="IDX22"></A>
+<DD><A NAME="IDX25"></A>
When set to <SAMP>`on'</SAMP>, Readline will try to enable the application
-keypad when it is called. Some systems need this to enable the
-arrow keys. The default is <SAMP>`off'</SAMP>.
+keypad when it is called.
+Some systems need this to enable the arrow keys.
+The default is <SAMP>`off'</SAMP>.
<P>
<DT><CODE>enable-meta-key</CODE>
-<DD>When set to <SAMP>`on'</SAMP>, Readline will try to enable any meta modifier
-key the terminal claims to support when it is called. On many terminals,
-the meta key is used to send eight-bit characters.
+<DD><A NAME="IDX26"></A>
+When set to <SAMP>`on'</SAMP>, Readline will try to enable any meta
+modifier key the terminal claims to support when it is called.
+On many terminals, the Meta key is used to send eight-bit characters;
+this variable checks for the terminal capability that indicates the
+terminal can enable and disable a mode that sets the eighth bit of a
+character (0200) if the Meta key is held down when the character is
+typed (a meta character).
The default is <SAMP>`on'</SAMP>.
<P>
<DT><CODE>expand-tilde</CODE>
-<DD><A NAME="IDX23"></A>
-If set to <SAMP>`on'</SAMP>, tilde expansion is performed when Readline
-attempts word completion. The default is <SAMP>`off'</SAMP>.
+<DD><A NAME="IDX27"></A>
+If set to <SAMP>`on'</SAMP>, Readline attempts tilde expansion when it
+attempts word completion.
+The default is <SAMP>`off'</SAMP>.
+<P>
+
+<DT><CODE>force-meta-prefix</CODE>
+<DD><A NAME="IDX28"></A>
+If set to <SAMP>`on'</SAMP>, Readline modifies its behavior when binding key
+sequences containing <KBD>\M-</KBD> or <CODE>Meta-</CODE>
+(see <CODE>Key Bindings</CODE> in <A HREF="rluserman.html#SEC10">1.3.1 Readline Init File Syntax</A>)
+by converting a key sequence of the form
+<KBD>\M-</KBD><VAR>C</VAR> or <CODE>Meta-</CODE><VAR>C</VAR> to the two-character sequence
+<KBD>ESC</KBD><VAR>C</VAR> (adding the meta prefix).
+If <CODE>force-meta-prefix</CODE> is set to <SAMP>`off'</SAMP> (the default),
+Readline uses the value of the <CODE>convert-meta</CODE> variable to determine
+whether to perform this conversion:
+if <CODE>convert-meta</CODE> is <SAMP>`on'</SAMP>,
+Readline performs the conversion described above;
+if it is <SAMP>`off'</SAMP>, Readline converts <VAR>C</VAR> to a meta character by
+setting the eighth bit (0200).
+The default is <SAMP>`off'</SAMP>.
<P>
<DT><CODE>history-preserve-point</CODE>
-<DD><A NAME="IDX24"></A>
+<DD><A NAME="IDX29"></A>
If set to <SAMP>`on'</SAMP>, the history code attempts to place the point (the
current cursor position) at the
same location on each history line retrieved with <CODE>previous-history</CODE>
-or <CODE>next-history</CODE>. The default is <SAMP>`off'</SAMP>.
+or <CODE>next-history</CODE>.
+The default is <SAMP>`off'</SAMP>.
<P>
<DT><CODE>history-size</CODE>
-<DD><A NAME="IDX25"></A>
+<DD><A NAME="IDX30"></A>
Set the maximum number of history entries saved in the history list.
If set to zero, any existing history entries are deleted and no new entries
are saved.
If set to a value less than zero, the number of history entries is not
limited.
By default, the number of history entries is not limited.
-If an attempt is made to set <VAR>history-size</VAR> to a non-numeric value,
+If you try to set <VAR>history-size</VAR> to a non-numeric value,
the maximum number of history entries will be set to 500.
<P>
<DT><CODE>horizontal-scroll-mode</CODE>
-<DD><A NAME="IDX26"></A>
-This variable can be set to either <SAMP>`on'</SAMP> or <SAMP>`off'</SAMP>. Setting it
-to <SAMP>`on'</SAMP> means that the text of the lines being edited will scroll
-horizontally on a single screen line when they are longer than the width
-of the screen, instead of wrapping onto a new screen line. By default,
-this variable is set to <SAMP>`off'</SAMP>.
+<DD><A NAME="IDX31"></A>
+Setting this variable to <SAMP>`on'</SAMP> means that the text of the lines
+being edited will scroll horizontally on a single screen line when
+the lines are longer than the width of the screen, instead of wrapping
+onto a new screen line.
+This variable is automatically set to <SAMP>`on'</SAMP> for terminals of height 1.
+By default, this variable is set to <SAMP>`off'</SAMP>.
<P>
<DT><CODE>input-meta</CODE>
-<DD><A NAME="IDX27"></A>
-<A NAME="IDX28"></A>
-If set to <SAMP>`on'</SAMP>, Readline will enable eight-bit input (it
+<DD><A NAME="IDX32"></A>
+<A NAME="IDX33"></A>
+If set to <SAMP>`on'</SAMP>, Readline will enable eight-bit input (that is, it
will not clear the eighth bit in the characters it reads),
-regardless of what the terminal claims it can support. The
-default value is <SAMP>`off'</SAMP>, but Readline will set it to <SAMP>`on'</SAMP> if the
-locale contains eight-bit characters.
-The name <CODE>meta-flag</CODE> is a synonym for this variable.
+regardless of what the terminal claims it can support.
+The default value is <SAMP>`off'</SAMP>, but Readline will set it to <SAMP>`on'</SAMP>
+if the locale contains characters whose encodings may include bytes
+with the eighth bit set.
+This variable is dependent on the <CODE>LC_CTYPE</CODE> locale category, and
+its value may change if the locale changes.
+The name <CODE>meta-flag</CODE> is a synonym for <CODE>input-meta</CODE>.
<P>
<DT><CODE>isearch-terminators</CODE>
-<DD><A NAME="IDX29"></A>
+<DD><A NAME="IDX34"></A>
The string of characters that should terminate an incremental search without
subsequently executing the character as a command (see section <A HREF="rluserman.html#SEC8">1.2.5 Searching for Commands in the History</A>).
If this variable has not been given a value, the characters <KBD>ESC</KBD> and
<P>
<DT><CODE>keymap</CODE>
-<DD><A NAME="IDX30"></A>
+<DD><A NAME="IDX35"></A>
Sets Readline's idea of the current keymap for key binding commands.
-Acceptable <CODE>keymap</CODE> names are
+Built-in <CODE>keymap</CODE> names are
<CODE>emacs</CODE>,
<CODE>emacs-standard</CODE>,
<CODE>emacs-meta</CODE>,
<CODE>vi-insert</CODE>.
<CODE>vi</CODE> is equivalent to <CODE>vi-command</CODE> (<CODE>vi-move</CODE> is also a
synonym); <CODE>emacs</CODE> is equivalent to <CODE>emacs-standard</CODE>.
-The default value is <CODE>emacs</CODE>.
-The value of the <CODE>editing-mode</CODE> variable also affects the
+Applications may add additional names.
+The default value is <CODE>emacs</CODE>;
+the value of the <CODE>editing-mode</CODE> variable also affects the
default keymap.
<P>
<DT><CODE>keyseq-timeout</CODE>
-<DD>Specifies the duration Readline will wait for a character when reading an
-ambiguous key sequence (one that can form a complete key sequence using
-the input read so far, or can take additional input to complete a longer
-key sequence).
-If no input is received within the timeout, Readline will use the shorter
-but complete key sequence.
+<DD>Specifies the duration Readline will wait for a character when
+reading an ambiguous key sequence
+(one that can form a complete key sequence using the input read so far,
+or can take additional input to complete a longer key sequence).
+If Readline doesn't receive any input within the timeout, it will use the
+shorter but complete key sequence.
Readline uses this value to determine whether or not input is
available on the current input source (<CODE>rl_instream</CODE> by default).
The value is specified in milliseconds, so a value of 1000 means that
<P>
<DT><CODE>mark-directories</CODE>
-<DD>If set to <SAMP>`on'</SAMP>, completed directory names have a slash
-appended. The default is <SAMP>`on'</SAMP>.
+<DD>If set to <SAMP>`on'</SAMP>, completed directory names have a slash appended.
+The default is <SAMP>`on'</SAMP>.
<P>
<DT><CODE>mark-modified-lines</CODE>
-<DD><A NAME="IDX31"></A>
-This variable, when set to <SAMP>`on'</SAMP>, causes Readline to display an
+<DD><A NAME="IDX36"></A>
+When this variable is set to <SAMP>`on'</SAMP>, Readline will to display an
asterisk (<SAMP>`*'</SAMP>) at the start of history lines which have been modified.
This variable is <SAMP>`off'</SAMP> by default.
<P>
<DT><CODE>mark-symlinked-directories</CODE>
-<DD><A NAME="IDX32"></A>
-If set to <SAMP>`on'</SAMP>, completed names which are symbolic links
-to directories have a slash appended (subject to the value of
-<CODE>mark-directories</CODE>).
+<DD><A NAME="IDX37"></A>
+If set to <SAMP>`on'</SAMP>, completed names which are symbolic links to directories
+have a slash appended, subject to the value of <CODE>mark-directories</CODE>.
The default is <SAMP>`off'</SAMP>.
<P>
<DT><CODE>match-hidden-files</CODE>
-<DD><A NAME="IDX33"></A>
-This variable, when set to <SAMP>`on'</SAMP>, causes Readline to match files whose
+<DD><A NAME="IDX38"></A>
+This variable, when set to <SAMP>`on'</SAMP>, forces Readline to match files whose
names begin with a <SAMP>`.'</SAMP> (hidden files) when performing filename
completion.
-If set to <SAMP>`off'</SAMP>, the leading <SAMP>`.'</SAMP> must be
-supplied by the user in the filename to be completed.
+If set to <SAMP>`off'</SAMP>, the user must include the leading <SAMP>`.'</SAMP>
+in the filename to be completed.
This variable is <SAMP>`on'</SAMP> by default.
<P>
<DT><CODE>menu-complete-display-prefix</CODE>
-<DD><A NAME="IDX34"></A>
+<DD><A NAME="IDX39"></A>
If set to <SAMP>`on'</SAMP>, menu completion displays the common prefix of the
list of possible completions (which may be empty) before cycling through
-the list. The default is <SAMP>`off'</SAMP>.
+the list.
+The default is <SAMP>`off'</SAMP>.
<P>
<DT><CODE>output-meta</CODE>
-<DD><A NAME="IDX35"></A>
+<DD><A NAME="IDX40"></A>
If set to <SAMP>`on'</SAMP>, Readline will display characters with the
eighth bit set directly rather than as a meta-prefixed escape
sequence.
-The default is <SAMP>`off'</SAMP>, but Readline will set it to <SAMP>`on'</SAMP> if the
-locale contains eight-bit characters.
+The default is <SAMP>`off'</SAMP>, but Readline will set it to <SAMP>`on'</SAMP>
+if the locale contains characters whose encodings may include
+bytes with the eighth bit set.
+This variable is dependent on the <CODE>LC_CTYPE</CODE> locale category, and
+its value may change if the locale changes.
<P>
<DT><CODE>page-completions</CODE>
-<DD><A NAME="IDX36"></A>
+<DD><A NAME="IDX41"></A>
If set to <SAMP>`on'</SAMP>, Readline uses an internal <CODE>more</CODE>-like pager
to display a screenful of possible completions at a time.
This variable is <SAMP>`on'</SAMP> by default.
<P>
+<DT><CODE>prefer-visible-bell</CODE>
+<DD>See <CODE>bell-style</CODE>.
+<P>
+
<DT><CODE>print-completions-horizontally</CODE>
<DD>If set to <SAMP>`on'</SAMP>, Readline will display completions with matches
sorted horizontally in alphabetical order, rather than down the screen.
<P>
<DT><CODE>revert-all-at-newline</CODE>
-<DD><A NAME="IDX37"></A>
+<DD><A NAME="IDX42"></A>
If set to <SAMP>`on'</SAMP>, Readline will undo all changes to history lines
-before returning when <CODE>accept-line</CODE> is executed. By default,
+before returning when executing <CODE>accept-line</CODE>.
+By default,
history lines may be modified and retain individual undo lists across
-calls to <CODE>readline</CODE>. The default is <SAMP>`off'</SAMP>.
+calls to <CODE>readline()</CODE>.
+The default is <SAMP>`off'</SAMP>.
+<P>
+
+<DT><CODE>search-ignore-case</CODE>
+<DD><A NAME="IDX43"></A>
+If set to <SAMP>`on'</SAMP>, Readline performs incremental and non-incremental
+history list searches in a case-insensitive fashion.
+The default value is <SAMP>`off'</SAMP>.
<P>
<DT><CODE>show-all-if-ambiguous</CODE>
-<DD><A NAME="IDX38"></A>
-This alters the default behavior of the completion functions. If
-set to <SAMP>`on'</SAMP>,
+<DD><A NAME="IDX44"></A>
+This alters the default behavior of the completion functions.
+If set to <SAMP>`on'</SAMP>,
words which have more than one possible completion cause the
matches to be listed immediately instead of ringing the bell.
The default value is <SAMP>`off'</SAMP>.
<P>
<DT><CODE>show-all-if-unmodified</CODE>
-<DD><A NAME="IDX39"></A>
+<DD><A NAME="IDX45"></A>
This alters the default behavior of the completion functions in
a fashion similar to <VAR>show-all-if-ambiguous</VAR>.
If set to <SAMP>`on'</SAMP>,
<P>
<DT><CODE>show-mode-in-prompt</CODE>
-<DD><A NAME="IDX40"></A>
+<DD><A NAME="IDX46"></A>
If set to <SAMP>`on'</SAMP>, add a string to the beginning of the prompt
indicating the editing mode: emacs, vi command, or vi insertion.
The mode strings are user-settable (e.g., <VAR>emacs-mode-string</VAR>).
<P>
<DT><CODE>skip-completed-text</CODE>
-<DD><A NAME="IDX41"></A>
+<DD><A NAME="IDX47"></A>
If set to <SAMP>`on'</SAMP>, this alters the default completion behavior when
-inserting a single match into the line. It's only active when
-performing completion in the middle of a word. If enabled, readline
-does not insert characters from the completion that match characters
-after point in the word being completed, so portions of the word
-following the cursor are not duplicated.
+inserting a single match into the line.
+It's only active when performing completion in the middle of a word.
+If enabled, readline does not insert characters from the completion
+that match characters after point in the word being completed,
+so portions of the word following the cursor are not duplicated.
For instance, if this is enabled, attempting completion when the cursor
-is after the <SAMP>`e'</SAMP> in <SAMP>`Makefile'</SAMP> will result in <SAMP>`Makefile'</SAMP>
-rather than <SAMP>`Makefilefile'</SAMP>, assuming there is a single possible
-completion.
+is after the first <SAMP>`e'</SAMP> in <SAMP>`Makefile'</SAMP> will result in
+<SAMP>`Makefile'</SAMP> rather than <SAMP>`Makefilefile'</SAMP>,
+assuming there is a single possible completion.
The default value is <SAMP>`off'</SAMP>.
<P>
<DT><CODE>vi-cmd-mode-string</CODE>
-<DD><A NAME="IDX42"></A>
+<DD><A NAME="IDX48"></A>
If the <VAR>show-mode-in-prompt</VAR> variable is enabled,
this string is displayed immediately before the last line of the primary
prompt when vi editing mode is active and in command mode.
-The value is expanded like a
-key binding, so the standard set of meta- and control prefixes and
-backslash escape sequences is available.
-Use the <SAMP>`\1'</SAMP> and <SAMP>`\2'</SAMP> escapes to begin and end sequences of
+The value is expanded like a key binding, so the standard set of
+meta- and control- prefixes and backslash escape sequences is available.
+The <SAMP>`\1'</SAMP> and <SAMP>`\2'</SAMP> escapes begin and end sequences of
non-printing characters, which can be used to embed a terminal control
sequence into the mode string.
The default is <SAMP>`(cmd)'</SAMP>.
<P>
<DT><CODE>vi-ins-mode-string</CODE>
-<DD><A NAME="IDX43"></A>
+<DD><A NAME="IDX49"></A>
If the <VAR>show-mode-in-prompt</VAR> variable is enabled,
this string is displayed immediately before the last line of the primary
prompt when vi editing mode is active and in insertion mode.
-The value is expanded like a
-key binding, so the standard set of meta- and control prefixes and
-backslash escape sequences is available.
-Use the <SAMP>`\1'</SAMP> and <SAMP>`\2'</SAMP> escapes to begin and end sequences of
+The value is expanded like a key binding, so the standard set of
+meta- and control- prefixes and backslash escape sequences is available.
+The <SAMP>`\1'</SAMP> and <SAMP>`\2'</SAMP> escapes begin and end sequences of
non-printing characters, which can be used to embed a terminal control
sequence into the mode string.
The default is <SAMP>`(ins)'</SAMP>.
<P>
<DT><CODE>visible-stats</CODE>
-<DD><A NAME="IDX44"></A>
+<DD><A NAME="IDX50"></A>
If set to <SAMP>`on'</SAMP>, a character denoting a file's type
is appended to the filename when listing possible
-completions. The default is <SAMP>`off'</SAMP>.
+completions.
+The default is <SAMP>`off'</SAMP>.
<P>
</DL>
<P>
<DT>Key Bindings
-<DD>The syntax for controlling key bindings in the init file is
-simple. First you need to find the name of the command that you
-want to change. The following sections contain tables of the command
+<DD>The syntax for controlling key bindings in the init file is simple.
+First you need to find the name of the command that you
+want to change.
+The following sections contain tables of the command
name, the default keybinding, if any, and a short description of what
the command does.
<P>
what you find most comfortable.
</P><P>
-In addition to command names, readline allows keys to be bound
+In addition to command names, Readline allows keys to be bound
to a string that is inserted when the key is pressed (a <VAR>macro</VAR>).
+The difference between a macro and a command is that a macro is
+enclosed in single or double quotes.
</P><P>
<DL COMPACT>
<DT><VAR>keyname</VAR>: <VAR>function-name</VAR> or <VAR>macro</VAR>
-<DD><VAR>keyname</VAR> is the name of a key spelled out in English. For example:
+<DD><VAR>keyname</VAR> is the name of a key spelled out in English.
+For example:
<TABLE><tr><td> </td><td class=example><pre>Control-u: universal-argument
Meta-Rubout: backward-kill-word
Control-o: "> output"
</pre></td></tr></table><P>
-In the above example, <KBD>C-u</KBD> is bound to the function
+In the example above, <KBD>C-u</KBD> is bound to the function
<CODE>universal-argument</CODE>,
<KBD>M-DEL</KBD> is bound to the function <CODE>backward-kill-word</CODE>, and
<KBD>C-o</KBD> is bound to run the macro
<SAMP>`> output'</SAMP> into the line).
</P><P>
-A number of symbolic character names are recognized while
-processing this key binding syntax:
+This key binding syntax recognizes a number of symbolic character names:
<VAR>DEL</VAR>,
<VAR>ESC</VAR>,
<VAR>ESCAPE</VAR>,
<DT>"<VAR>keyseq</VAR>": <VAR>function-name</VAR> or <VAR>macro</VAR>
<DD><VAR>keyseq</VAR> differs from <VAR>keyname</VAR> above in that strings
denoting an entire key sequence can be specified, by placing
-the key sequence in double quotes. Some GNU Emacs style key
-escapes can be used, as in the following example, but the
-special character names are not recognized.
+the key sequence in double quotes.
+Some GNU Emacs style key escapes can be used,
+as in the following example, but none of the
+special character names are recognized.
<P>
<TABLE><tr><td> </td><td class=example><pre>"\C-u": universal-argument
<DL COMPACT>
<DT><CODE><KBD>\C-</KBD></CODE>
-<DD>control prefix
+<DD>A control prefix.
<DT><CODE><KBD>\M-</KBD></CODE>
-<DD>meta prefix
+<DD>Adding the meta prefix or converting the following character to a meta
+character, as described above under <CODE>force-meta-prefix</CODE>
+(see <CODE>Variable Settings</CODE> in <A HREF="rluserman.html#SEC10">1.3.1 Readline Init File Syntax</A>).
<DT><CODE><KBD>\e</KBD></CODE>
-<DD>an escape character
+<DD>An escape character.
<DT><CODE><KBD>\\</KBD></CODE>
-<DD>backslash
+<DD>Backslash.
<DT><CODE><KBD>\"</KBD></CODE>
-<DD><KBD>"</KBD>, a double quotation mark
+<DD><KBD>"</KBD>, a double quotation mark.
<DT><CODE><KBD>\'</KBD></CODE>
-<DD><KBD>'</KBD>, a single quote or apostrophe
+<DD><KBD>'</KBD>, a single quote or apostrophe.
</DL>
<P>
<DT><CODE>\v</CODE>
<DD>vertical tab
<DT><CODE>\<VAR>nnn</VAR></CODE>
-<DD>the eight-bit character whose value is the octal value <VAR>nnn</VAR>
-(one to three digits)
+<DD>The eight-bit character whose value is the octal value <VAR>nnn</VAR>
+(one to three digits).
<DT><CODE>\x<VAR>HH</VAR></CODE>
-<DD>the eight-bit character whose value is the hexadecimal value <VAR>HH</VAR>
-(one or two hex digits)
+<DD>The eight-bit character whose value is the hexadecimal value <VAR>HH</VAR>
+(one or two hex digits).
</DL>
<P>
When entering the text of a macro, single or double quotes must
be used to indicate a macro definition.
Unquoted text is assumed to be a function name.
-In the macro body, the backslash escapes described above are expanded.
+Tthe backslash escapes described above are expanded
+in the macro body.
Backslash will quote any other character in the macro text,
including <SAMP>`"'</SAMP> and <SAMP>`''</SAMP>.
For example, the following binding will make <SAMP>`<KBD>C-x</KBD> \'</SAMP>
Readline implements a facility similar in spirit to the conditional
compilation features of the C preprocessor which allows key
bindings and variable settings to be performed as the result
-of tests. There are four parser directives used.
+of tests.
+There are four parser directives available.
</P><P>
<DL COMPACT>
<DT><CODE>$if</CODE>
<DD>The <CODE>$if</CODE> construct allows bindings to be made based on the
editing mode, the terminal being used, or the application using
-Readline. The text of the test, after any comparison operator,
+Readline.
+The text of the test, after any comparison operator,
extends to the end of the line;
unless otherwise noted, no characters are required to isolate it.
<P>
<DT><CODE>term</CODE>
<DD>The <CODE>term=</CODE> form may be used to include terminal-specific
key bindings, perhaps to bind the key sequences output by the
-terminal's function keys. The word on the right side of the
-<SAMP>`='</SAMP> is tested against both the full name of the terminal and
-the portion of the terminal name before the first <SAMP>`-'</SAMP>. This
-allows <CODE>sun</CODE> to match both <CODE>sun</CODE> and <CODE>sun-cmd</CODE>,
-for instance.
+terminal's function keys.
+The word on the right side of the
+<SAMP>`='</SAMP>
+is tested against both the full name of the terminal and the portion
+of the terminal name before the first <SAMP>`-'</SAMP>.
+This allows <CODE>xterm</CODE> to match both <CODE>xterm</CODE> and
+<CODE>xterm-256color</CODE>, for instance.
<P>
<DT><CODE>version</CODE>
and <SAMP>`>'</SAMP>.
The version number supplied on the right side of the operator consists
of a major version number, an optional decimal point, and an optional
-minor version (e.g., <SAMP>`7.1'</SAMP>). If the minor version is omitted, it
-is assumed to be <SAMP>`0'</SAMP>.
+minor version (e.g., <SAMP>`7.1'</SAMP>).
+If the minor version is omitted, it
+defaults to <SAMP>`0'</SAMP>.
The operator may be separated from the string <CODE>version</CODE> and
from the version number argument by whitespace.
The following example sets a variable if the Readline version being used
<DT><CODE>application</CODE>
<DD>The <VAR>application</VAR> construct is used to include
-application-specific settings. Each program using the Readline
+application-specific settings.
+Each program using the Readline
library sets the <VAR>application name</VAR>, and you can test for
a particular value.
This could be used to bind key sequences to functions useful for
-a specific program. For instance, the following command adds a
+a specific program.
+For instance, the following command adds a
key sequence that quotes the current or previous word in Bash:
<TABLE><tr><td> </td><td class=example><pre>$if Bash
# Quote the current or previous word
The variable name must be separated from the comparison operator by
whitespace; the operator may be separated from the value on the right hand
side by whitespace.
-Both string and boolean variables may be tested. Boolean variables must be
+String and boolean variables may be tested.
+Boolean variables must be
tested against the values <VAR>on</VAR> and <VAR>off</VAR>.
The following example is equivalent to the <CODE>mode=emacs</CODE> test described
above:
</pre></td></tr></table></DL>
<P>
-<DT><CODE>$endif</CODE>
-<DD>This command, as seen in the previous example, terminates an
-<CODE>$if</CODE> command.
-<P>
-
<DT><CODE>$else</CODE>
<DD>Commands in this branch of the <CODE>$if</CODE> directive are executed if
the test fails.
<P>
+<DT><CODE>$endif</CODE>
+<DD>This command, as seen in the previous example, terminates an
+<CODE>$if</CODE> command.
+<P>
+
<DT><CODE>$include</CODE>
<DD>This directive takes a single filename as an argument and reads commands
-and bindings from that file.
+and key bindings from that file.
For example, the following directive reads from <TT>`/etc/inputrc'</TT>:
<TABLE><tr><td> </td><td class=example><pre>$include /etc/inputrc
</pre></td></tr></table></DL>
# rather than as meta-prefixed characters
set output-meta on
-# if there are more than 150 possible completions for
-# a word, ask the user if he wants to see all of them
+# if there are 150 or more possible completions for a word,
+# ask whether or not the user wants to see all of them
set completion-query-items 150
# For FTP
position, and <EM>mark</EM> refers to a cursor position saved by the
<CODE>set-mark</CODE> command.
The text between the point and mark is referred to as the <EM>region</EM>.
+Readline has the concept of an <EM>active region</EM>:
+when the region is active, Readline redisplay uses the
+value of the <CODE>active-region-start-color</CODE> variable
+to denote the region.
+Several commands set the region to active; those are noted below.
</P><P>
<A NAME="Commands For Moving"></A>
<H3> 1.4.1 Commands For Moving </H3>
<!--docid::SEC14::-->
<DL COMPACT>
-<A NAME="IDX45"></A>
+<A NAME="IDX51"></A>
<DT><CODE>beginning-of-line (C-a)</CODE>
-<DD><A NAME="IDX46"></A>
+<DD><A NAME="IDX52"></A>
Move to the start of the current line.
+This may also be bound to the Home key on some keyboards.
<P>
-<A NAME="IDX47"></A>
+<A NAME="IDX53"></A>
<DT><CODE>end-of-line (C-e)</CODE>
-<DD><A NAME="IDX48"></A>
+<DD><A NAME="IDX54"></A>
Move to the end of the line.
+This may also be bound to the End key on some keyboards.
<P>
-<A NAME="IDX49"></A>
+<A NAME="IDX55"></A>
<DT><CODE>forward-char (C-f)</CODE>
-<DD><A NAME="IDX50"></A>
+<DD><A NAME="IDX56"></A>
Move forward a character.
<P>
-<A NAME="IDX51"></A>
+<A NAME="IDX57"></A>
<DT><CODE>backward-char (C-b)</CODE>
-<DD><A NAME="IDX52"></A>
+<DD><A NAME="IDX58"></A>
Move back a character.
<P>
-<A NAME="IDX53"></A>
+<A NAME="IDX59"></A>
<DT><CODE>forward-word (M-f)</CODE>
-<DD><A NAME="IDX54"></A>
+<DD><A NAME="IDX60"></A>
Move forward to the end of the next word.
Words are composed of letters and digits.
<P>
-<A NAME="IDX55"></A>
+<A NAME="IDX61"></A>
<DT><CODE>backward-word (M-b)</CODE>
-<DD><A NAME="IDX56"></A>
+<DD><A NAME="IDX62"></A>
Move back to the start of the current or previous word.
Words are composed of letters and digits.
<P>
-<A NAME="IDX57"></A>
+<A NAME="IDX63"></A>
<DT><CODE>previous-screen-line ()</CODE>
-<DD><A NAME="IDX58"></A>
+<DD><A NAME="IDX64"></A>
Attempt to move point to the same physical screen column on the previous
-physical screen line. This will not have the desired effect if the current
+physical screen line.
+This will not have the desired effect if the current
Readline line does not take up more than one physical line or if point is not
greater than the length of the prompt plus the screen width.
<P>
-<A NAME="IDX59"></A>
+<A NAME="IDX65"></A>
<DT><CODE>next-screen-line ()</CODE>
-<DD><A NAME="IDX60"></A>
+<DD><A NAME="IDX66"></A>
Attempt to move point to the same physical screen column on the next
-physical screen line. This will not have the desired effect if the current
+physical screen line.
+This will not have the desired effect if the current
Readline line does not take up more than one physical line or if the length
of the current Readline line is not greater than the length of the prompt
plus the screen width.
<P>
-<A NAME="IDX61"></A>
+<A NAME="IDX67"></A>
+<DT><CODE>clear-display (M-C-l)</CODE>
+<DD><A NAME="IDX68"></A>
+Clear the screen and, if possible, the terminal's scrollback buffer,
+then redraw the current line,
+leaving the current line at the top of the screen.
+<P>
+
+<A NAME="IDX69"></A>
<DT><CODE>clear-screen (C-l)</CODE>
-<DD><A NAME="IDX62"></A>
-Clear the screen and redraw the current line,
+<DD><A NAME="IDX70"></A>
+Clear the screen,
+then redraw the current line,
leaving the current line at the top of the screen.
<P>
-<A NAME="IDX63"></A>
+<A NAME="IDX71"></A>
<DT><CODE>redraw-current-line ()</CODE>
-<DD><A NAME="IDX64"></A>
+<DD><A NAME="IDX72"></A>
Refresh the current line. By default, this is unbound.
<P>
<P>
<DL COMPACT>
-<A NAME="IDX65"></A>
+<A NAME="IDX73"></A>
<DT><CODE>accept-line (Newline or Return)</CODE>
-<DD><A NAME="IDX66"></A>
+<DD><A NAME="IDX74"></A>
Accept the line regardless of where the cursor is.
-If this line is
-non-empty, it may be added to the history list for future recall with
+If this line is non-empty, you can add it to the history list using
<CODE>add_history()</CODE>.
-If this line is a modified history line, the history line is restored
+If this line is a modified history line, then restore the history line
to its original state.
<P>
-<A NAME="IDX67"></A>
+<A NAME="IDX75"></A>
<DT><CODE>previous-history (C-p)</CODE>
-<DD><A NAME="IDX68"></A>
+<DD><A NAME="IDX76"></A>
Move `back' through the history list, fetching the previous command.
<P>
-<A NAME="IDX69"></A>
+<A NAME="IDX77"></A>
<DT><CODE>next-history (C-n)</CODE>
-<DD><A NAME="IDX70"></A>
+<DD><A NAME="IDX78"></A>
Move `forward' through the history list, fetching the next command.
<P>
-<A NAME="IDX71"></A>
+<A NAME="IDX79"></A>
<DT><CODE>beginning-of-history (M-<)</CODE>
-<DD><A NAME="IDX72"></A>
+<DD><A NAME="IDX80"></A>
Move to the first line in the history.
<P>
-<A NAME="IDX73"></A>
+<A NAME="IDX81"></A>
<DT><CODE>end-of-history (M->)</CODE>
-<DD><A NAME="IDX74"></A>
+<DD><A NAME="IDX82"></A>
Move to the end of the input history, i.e., the line currently
being entered.
<P>
-<A NAME="IDX75"></A>
+<A NAME="IDX83"></A>
<DT><CODE>reverse-search-history (C-r)</CODE>
-<DD><A NAME="IDX76"></A>
+<DD><A NAME="IDX84"></A>
Search backward starting at the current line and moving `up' through
-the history as necessary. This is an incremental search.
+the history as necessary.
+This is an incremental search.
+This command sets the region to the matched text and activates the region.
<P>
-<A NAME="IDX77"></A>
+<A NAME="IDX85"></A>
<DT><CODE>forward-search-history (C-s)</CODE>
-<DD><A NAME="IDX78"></A>
+<DD><A NAME="IDX86"></A>
Search forward starting at the current line and moving `down' through
-the history as necessary. This is an incremental search.
+the history as necessary.
+This is an incremental search.
+This command sets the region to the matched text and activates the region.
<P>
-<A NAME="IDX79"></A>
+<A NAME="IDX87"></A>
<DT><CODE>non-incremental-reverse-search-history (M-p)</CODE>
-<DD><A NAME="IDX80"></A>
+<DD><A NAME="IDX88"></A>
Search backward starting at the current line and moving `up'
through the history as necessary using a non-incremental search
for a string supplied by the user.
The search string may match anywhere in a history line.
<P>
-<A NAME="IDX81"></A>
+<A NAME="IDX89"></A>
<DT><CODE>non-incremental-forward-search-history (M-n)</CODE>
-<DD><A NAME="IDX82"></A>
+<DD><A NAME="IDX90"></A>
Search forward starting at the current line and moving `down'
through the history as necessary using a non-incremental search
for a string supplied by the user.
The search string may match anywhere in a history line.
<P>
-<A NAME="IDX83"></A>
-<DT><CODE>history-search-forward ()</CODE>
-<DD><A NAME="IDX84"></A>
-Search forward through the history for the string of characters
+<A NAME="IDX91"></A>
+<DT><CODE>history-search-backward ()</CODE>
+<DD><A NAME="IDX92"></A>
+Search backward through the history for the string of characters
between the start of the current line and the point.
The search string must match at the beginning of a history line.
This is a non-incremental search.
-By default, this command is unbound.
+By default, this command is unbound, but may be bound to the Page Down
+key on some keyboards.
<P>
-<A NAME="IDX85"></A>
-<DT><CODE>history-search-backward ()</CODE>
-<DD><A NAME="IDX86"></A>
-Search backward through the history for the string of characters
+<A NAME="IDX93"></A>
+<DT><CODE>history-search-forward ()</CODE>
+<DD><A NAME="IDX94"></A>
+Search forward through the history for the string of characters
between the start of the current line and the point.
The search string must match at the beginning of a history line.
This is a non-incremental search.
-By default, this command is unbound.
+By default, this command is unbound, but may be bound to the Page Up
+key on some keyboards.
<P>
-<A NAME="IDX87"></A>
-<DT><CODE>history-substring-search-forward ()</CODE>
-<DD><A NAME="IDX88"></A>
-Search forward through the history for the string of characters
+<A NAME="IDX95"></A>
+<DT><CODE>history-substring-search-backward ()</CODE>
+<DD><A NAME="IDX96"></A>
+Search backward through the history for the string of characters
between the start of the current line and the point.
The search string may match anywhere in a history line.
This is a non-incremental search.
By default, this command is unbound.
<P>
-<A NAME="IDX89"></A>
-<DT><CODE>history-substring-search-backward ()</CODE>
-<DD><A NAME="IDX90"></A>
-Search backward through the history for the string of characters
+<A NAME="IDX97"></A>
+<DT><CODE>history-substring-search-forward ()</CODE>
+<DD><A NAME="IDX98"></A>
+Search forward through the history for the string of characters
between the start of the current line and the point.
The search string may match anywhere in a history line.
This is a non-incremental search.
By default, this command is unbound.
<P>
-<A NAME="IDX91"></A>
+<A NAME="IDX99"></A>
<DT><CODE>yank-nth-arg (M-C-y)</CODE>
-<DD><A NAME="IDX92"></A>
+<DD><A NAME="IDX100"></A>
Insert the first argument to the previous command (usually
the second word on the previous line) at point.
With an argument <VAR>n</VAR>,
insert the <VAR>n</VAR>th word from the previous command (the words
-in the previous command begin with word 0). A negative argument
-inserts the <VAR>n</VAR>th word from the end of the previous command.
-Once the argument <VAR>n</VAR> is computed, the argument is extracted
-as if the <SAMP>`!<VAR>n</VAR>'</SAMP> history expansion had been specified.
+in the previous command begin with word 0).
+A negative argument inserts the <VAR>n</VAR>th word from the end of
+the previous command.
+Once the argument <VAR>n</VAR> is computed,
+this uses the history expansion facilities to extract the
+<VAR>n</VAR>th word, as if the
+<SAMP>`!<VAR>n</VAR>'</SAMP> history expansion had been specified.
<P>
-<A NAME="IDX93"></A>
+<A NAME="IDX101"></A>
<DT><CODE>yank-last-arg (M-. or M-_)</CODE>
-<DD><A NAME="IDX94"></A>
+<DD><A NAME="IDX102"></A>
Insert last argument to the previous command (the last word of the
previous history entry).
With a numeric argument, behave exactly like <CODE>yank-nth-arg</CODE>.
list, inserting the last word (or the word specified by the argument to
the first call) of each line in turn.
Any numeric argument supplied to these successive calls determines
-the direction to move through the history. A negative argument switches
-the direction through the history (back or forward).
-The history expansion facilities are used to extract the last argument,
-as if the <SAMP>`!$'</SAMP> history expansion had been specified.
+the direction to move through the history.
+A negative argument switches the direction through the history
+(back or forward).
+This uses the history expansion facilities to extract the
+last word, as if the
+<SAMP>`!$'</SAMP> history expansion had been specified.
+<P>
+
+<A NAME="IDX103"></A>
+<DT><CODE>operate-and-get-next (C-o)</CODE>
+<DD><A NAME="IDX104"></A>
+Accept the current line for return to the calling application as if a
+newline had been entered,
+and fetch the next line relative to the current line from the history
+for editing.
+A numeric argument, if supplied, specifies the history entry
+to use instead of the current line.
+<P>
+
+<A NAME="IDX105"></A>
+<DT><CODE>fetch-history ()</CODE>
+<DD><A NAME="IDX106"></A>
+With a numeric argument, fetch that entry from the history list
+and make it the current line.
+Without an argument, move back to the first entry in the history list.
<P>
</DL>
<DL COMPACT>
-<A NAME="IDX95"></A>
+<A NAME="IDX107"></A>
<DT><CODE><I>end-of-file</I> (usually C-d)</CODE>
-<DD><A NAME="IDX96"></A>
+<DD><A NAME="IDX108"></A>
The character indicating end-of-file as set, for example, by
-<CODE>stty</CODE>. If this character is read when there are no characters
+<CODE>stty</CODE>.
+If this character is read when there are no characters
on the line, and point is at the beginning of the line, Readline
interprets it as the end of input and returns EOF.
<P>
-<A NAME="IDX97"></A>
+<A NAME="IDX109"></A>
<DT><CODE>delete-char (C-d)</CODE>
-<DD><A NAME="IDX98"></A>
-Delete the character at point. If this function is bound to the
+<DD><A NAME="IDX110"></A>
+Delete the character at point.
+If this function is bound to the
same character as the tty EOF character, as <KBD>C-d</KBD>
commonly is, see above for the effects.
<P>
-<A NAME="IDX99"></A>
+<A NAME="IDX111"></A>
<DT><CODE>backward-delete-char (Rubout)</CODE>
-<DD><A NAME="IDX100"></A>
-Delete the character behind the cursor. A numeric argument means
-to kill the characters instead of deleting them.
+<DD><A NAME="IDX112"></A>
+Delete the character behind the cursor.
+A numeric argument means
+to kill the characters, saving them on the kill ring,
+instead of deleting them.
<P>
-<A NAME="IDX101"></A>
+<A NAME="IDX113"></A>
<DT><CODE>forward-backward-delete-char ()</CODE>
-<DD><A NAME="IDX102"></A>
+<DD><A NAME="IDX114"></A>
Delete the character under the cursor, unless the cursor is at the
end of the line, in which case the character behind the cursor is
-deleted. By default, this is not bound to a key.
+deleted.
+By default, this is not bound to a key.
<P>
-<A NAME="IDX103"></A>
+<A NAME="IDX115"></A>
<DT><CODE>quoted-insert (C-q or C-v)</CODE>
-<DD><A NAME="IDX104"></A>
-Add the next character typed to the line verbatim. This is
-how to insert key sequences like <KBD>C-q</KBD>, for example.
+<DD><A NAME="IDX116"></A>
+Add the next character typed to the line verbatim.
+This is how to insert key sequences like <KBD>C-q</KBD>, for example.
<P>
-<A NAME="IDX105"></A>
+<A NAME="IDX117"></A>
<DT><CODE>tab-insert (M-<KBD>TAB</KBD>)</CODE>
-<DD><A NAME="IDX106"></A>
+<DD><A NAME="IDX118"></A>
Insert a tab character.
<P>
-<A NAME="IDX107"></A>
+<A NAME="IDX119"></A>
<DT><CODE>self-insert (a, b, A, 1, !, <small>...</small>)</CODE>
-<DD><A NAME="IDX108"></A>
-Insert yourself.
+<DD><A NAME="IDX120"></A>
+Insert the character typed.
<P>
-<A NAME="IDX109"></A>
+<A NAME="IDX121"></A>
<DT><CODE>bracketed-paste-begin ()</CODE>
-<DD><A NAME="IDX110"></A>
+<DD><A NAME="IDX122"></A>
This function is intended to be bound to the "bracketed paste" escape
sequence sent by some terminals, and such a binding is assigned by default.
It allows Readline to insert the pasted text as a single unit without treating
-each character as if it had been read from the keyboard. The characters
-are inserted as if each one was bound to <CODE>self-insert</CODE>) instead of
+each character as if it had been read from the keyboard.
+The characters
+are inserted as if each one was bound to <CODE>self-insert</CODE> instead of
executing any editing commands.
<P>
-<A NAME="IDX111"></A>
+Bracketed paste sets the region (the characters between point and the mark)
+to the inserted text.
+It sets the <EM>active region</EM>.
+</P><P>
+
+<A NAME="IDX123"></A>
<DT><CODE>transpose-chars (C-t)</CODE>
-<DD><A NAME="IDX112"></A>
+<DD><A NAME="IDX124"></A>
Drag the character before the cursor forward over
the character at the cursor, moving the
-cursor forward as well. If the insertion point
+cursor forward as well.
+If the insertion point
is at the end of the line, then this
transposes the last two characters of the line.
Negative arguments have no effect.
<P>
-<A NAME="IDX113"></A>
+<A NAME="IDX125"></A>
<DT><CODE>transpose-words (M-t)</CODE>
-<DD><A NAME="IDX114"></A>
+<DD><A NAME="IDX126"></A>
Drag the word before point past the word after point,
moving point past that word as well.
If the insertion point is at the end of the line, this transposes
the last two words on the line.
<P>
-<A NAME="IDX115"></A>
+<A NAME="IDX127"></A>
<DT><CODE>upcase-word (M-u)</CODE>
-<DD><A NAME="IDX116"></A>
-Uppercase the current (or following) word. With a negative argument,
+<DD><A NAME="IDX128"></A>
+Uppercase the current (or following) word.
+With a negative argument,
uppercase the previous word, but do not move the cursor.
<P>
-<A NAME="IDX117"></A>
+<A NAME="IDX129"></A>
<DT><CODE>downcase-word (M-l)</CODE>
-<DD><A NAME="IDX118"></A>
-Lowercase the current (or following) word. With a negative argument,
+<DD><A NAME="IDX130"></A>
+Lowercase the current (or following) word.
+With a negative argument,
lowercase the previous word, but do not move the cursor.
<P>
-<A NAME="IDX119"></A>
+<A NAME="IDX131"></A>
<DT><CODE>capitalize-word (M-c)</CODE>
-<DD><A NAME="IDX120"></A>
-Capitalize the current (or following) word. With a negative argument,
+<DD><A NAME="IDX132"></A>
+Capitalize the current (or following) word.
+With a negative argument,
capitalize the previous word, but do not move the cursor.
<P>
-<A NAME="IDX121"></A>
+<A NAME="IDX133"></A>
<DT><CODE>overwrite-mode ()</CODE>
-<DD><A NAME="IDX122"></A>
-Toggle overwrite mode. With an explicit positive numeric argument,
-switches to overwrite mode. With an explicit non-positive numeric
-argument, switches to insert mode. This command affects only
-<CODE>emacs</CODE> mode; <CODE>vi</CODE> mode does overwrite differently.
+<DD><A NAME="IDX134"></A>
+Toggle overwrite mode.
+With an explicit positive numeric argument, switches to overwrite mode.
+With an explicit non-positive numeric argument, switches to insert mode.
+This command affects only <CODE>emacs</CODE> mode;
+<CODE>vi</CODE> mode does overwrite differently.
Each call to <CODE>readline()</CODE> starts in insert mode.
<P>
before point with a space.
</P><P>
-By default, this command is unbound.
+By default, this command is unbound, but may be bound to the Insert
+key on some keyboards.
</P><P>
</DL>
<DL COMPACT>
-<A NAME="IDX123"></A>
+<A NAME="IDX135"></A>
<DT><CODE>kill-line (C-k)</CODE>
-<DD><A NAME="IDX124"></A>
-Kill the text from point to the end of the line.
+<DD><A NAME="IDX136"></A>
+Kill the text from point to the end of the current line.
+With a negative numeric argument, kill backward from the cursor to the
+beginning of the line.
<P>
-<A NAME="IDX125"></A>
+<A NAME="IDX137"></A>
<DT><CODE>backward-kill-line (C-x Rubout)</CODE>
-<DD><A NAME="IDX126"></A>
+<DD><A NAME="IDX138"></A>
Kill backward from the cursor to the beginning of the current line.
+With a negative numeric argument, kill forward from the cursor to the
+end of the line.
<P>
-<A NAME="IDX127"></A>
+<A NAME="IDX139"></A>
<DT><CODE>unix-line-discard (C-u)</CODE>
-<DD><A NAME="IDX128"></A>
+<DD><A NAME="IDX140"></A>
Kill backward from the cursor to the beginning of the current line.
<P>
-<A NAME="IDX129"></A>
+<A NAME="IDX141"></A>
<DT><CODE>kill-whole-line ()</CODE>
-<DD><A NAME="IDX130"></A>
+<DD><A NAME="IDX142"></A>
Kill all characters on the current line, no matter where point is.
By default, this is unbound.
<P>
-<A NAME="IDX131"></A>
+<A NAME="IDX143"></A>
<DT><CODE>kill-word (M-d)</CODE>
-<DD><A NAME="IDX132"></A>
+<DD><A NAME="IDX144"></A>
Kill from point to the end of the current word, or if between
words, to the end of the next word.
Word boundaries are the same as <CODE>forward-word</CODE>.
<P>
-<A NAME="IDX133"></A>
+<A NAME="IDX145"></A>
<DT><CODE>backward-kill-word (M-<KBD>DEL</KBD>)</CODE>
-<DD><A NAME="IDX134"></A>
+<DD><A NAME="IDX146"></A>
Kill the word behind point.
Word boundaries are the same as <CODE>backward-word</CODE>.
<P>
-<A NAME="IDX135"></A>
+<A NAME="IDX147"></A>
<DT><CODE>unix-word-rubout (C-w)</CODE>
-<DD><A NAME="IDX136"></A>
-Kill the word behind point, using white space as a word boundary.
-The killed text is saved on the kill-ring.
+<DD><A NAME="IDX148"></A>
+Kill the word behind point, using white space as a word boundary,
+saving the killed text on the kill-ring.
<P>
-<A NAME="IDX137"></A>
+<A NAME="IDX149"></A>
<DT><CODE>unix-filename-rubout ()</CODE>
-<DD><A NAME="IDX138"></A>
+<DD><A NAME="IDX150"></A>
Kill the word behind point, using white space and the slash character
-as the word boundaries.
-The killed text is saved on the kill-ring.
+as the word boundaries,
+saving the killed text on the kill-ring.
<P>
-<A NAME="IDX139"></A>
+<A NAME="IDX151"></A>
<DT><CODE>delete-horizontal-space ()</CODE>
-<DD><A NAME="IDX140"></A>
-Delete all spaces and tabs around point. By default, this is unbound.
+<DD><A NAME="IDX152"></A>
+Delete all spaces and tabs around point.
+By default, this is unbound.
<P>
-<A NAME="IDX141"></A>
+<A NAME="IDX153"></A>
<DT><CODE>kill-region ()</CODE>
-<DD><A NAME="IDX142"></A>
+<DD><A NAME="IDX154"></A>
Kill the text in the current region.
By default, this command is unbound.
<P>
-<A NAME="IDX143"></A>
+<A NAME="IDX155"></A>
<DT><CODE>copy-region-as-kill ()</CODE>
-<DD><A NAME="IDX144"></A>
+<DD><A NAME="IDX156"></A>
Copy the text in the region to the kill buffer, so it can be yanked
-right away. By default, this command is unbound.
+right away.
+By default, this command is unbound.
<P>
-<A NAME="IDX145"></A>
+<A NAME="IDX157"></A>
<DT><CODE>copy-backward-word ()</CODE>
-<DD><A NAME="IDX146"></A>
+<DD><A NAME="IDX158"></A>
Copy the word before point to the kill buffer.
The word boundaries are the same as <CODE>backward-word</CODE>.
By default, this command is unbound.
<P>
-<A NAME="IDX147"></A>
+<A NAME="IDX159"></A>
<DT><CODE>copy-forward-word ()</CODE>
-<DD><A NAME="IDX148"></A>
+<DD><A NAME="IDX160"></A>
Copy the word following point to the kill buffer.
The word boundaries are the same as <CODE>forward-word</CODE>.
By default, this command is unbound.
<P>
-<A NAME="IDX149"></A>
+<A NAME="IDX161"></A>
<DT><CODE>yank (C-y)</CODE>
-<DD><A NAME="IDX150"></A>
+<DD><A NAME="IDX162"></A>
Yank the top of the kill ring into the buffer at point.
<P>
-<A NAME="IDX151"></A>
+<A NAME="IDX163"></A>
<DT><CODE>yank-pop (M-y)</CODE>
-<DD><A NAME="IDX152"></A>
-Rotate the kill-ring, and yank the new top. You can only do this if
+<DD><A NAME="IDX164"></A>
+Rotate the kill-ring, and yank the new top.
+You can only do this if
the prior command is <CODE>yank</CODE> or <CODE>yank-pop</CODE>.
</DL>
<P>
<!--docid::SEC18::-->
<DL COMPACT>
-<A NAME="IDX153"></A>
+<A NAME="IDX165"></A>
<DT><CODE>digit-argument (<KBD>M-0</KBD>, <KBD>M-1</KBD>, <small>...</small> <KBD>M--</KBD>)</CODE>
-<DD><A NAME="IDX154"></A>
+<DD><A NAME="IDX166"></A>
Add this digit to the argument already accumulating, or start a new
-argument. <KBD>M--</KBD> starts a negative argument.
+argument.
+<KBD>M--</KBD> starts a negative argument.
<P>
-<A NAME="IDX155"></A>
+<A NAME="IDX167"></A>
<DT><CODE>universal-argument ()</CODE>
-<DD><A NAME="IDX156"></A>
+<DD><A NAME="IDX168"></A>
This is another way to specify an argument.
If this command is followed by one or more digits, optionally with a
leading minus sign, those digits define the argument.
<P>
<DL COMPACT>
-<A NAME="IDX157"></A>
+<A NAME="IDX169"></A>
<DT><CODE>complete (<KBD>TAB</KBD>)</CODE>
-<DD><A NAME="IDX158"></A>
+<DD><A NAME="IDX170"></A>
Attempt to perform completion on the text before point.
The actual completion performed is application-specific.
The default is filename completion.
<P>
-<A NAME="IDX159"></A>
+<A NAME="IDX171"></A>
<DT><CODE>possible-completions (M-?)</CODE>
-<DD><A NAME="IDX160"></A>
+<DD><A NAME="IDX172"></A>
List the possible completions of the text before point.
When displaying completions, Readline sets the number of columns used
for display to the value of <CODE>completion-display-width</CODE>, the value of
the environment variable <CODE>COLUMNS</CODE>, or the screen width, in that order.
<P>
-<A NAME="IDX161"></A>
+<A NAME="IDX173"></A>
<DT><CODE>insert-completions (M-*)</CODE>
-<DD><A NAME="IDX162"></A>
+<DD><A NAME="IDX174"></A>
Insert all completions of the text before point that would have
-been generated by <CODE>possible-completions</CODE>.
+been generated by <CODE>possible-completions</CODE>,
+separated by a space.
<P>
-<A NAME="IDX163"></A>
+<A NAME="IDX175"></A>
<DT><CODE>menu-complete ()</CODE>
-<DD><A NAME="IDX164"></A>
+<DD><A NAME="IDX176"></A>
Similar to <CODE>complete</CODE>, but replaces the word to be completed
with a single match from the list of possible completions.
-Repeated execution of <CODE>menu-complete</CODE> steps through the list
+Repeatedly executing <CODE>menu-complete</CODE> steps through the list
of possible completions, inserting each match in turn.
-At the end of the list of completions, the bell is rung
+At the end of the list of completions,
+<CODE>menu-complete</CODE> rings the bell
(subject to the setting of <CODE>bell-style</CODE>)
-and the original text is restored.
+and restores the original text.
An argument of <VAR>n</VAR> moves <VAR>n</VAR> positions forward in the list
-of matches; a negative argument may be used to move backward
-through the list.
+of matches; a negative argument moves backward through the list.
This command is intended to be bound to <KBD>TAB</KBD>, but is unbound
by default.
<P>
-<A NAME="IDX165"></A>
+<A NAME="IDX177"></A>
<DT><CODE>menu-complete-backward ()</CODE>
-<DD><A NAME="IDX166"></A>
+<DD><A NAME="IDX178"></A>
Identical to <CODE>menu-complete</CODE>, but moves backward through the list
of possible completions, as if <CODE>menu-complete</CODE> had been given a
negative argument.
+This command is unbound by default.
<P>
-<A NAME="IDX167"></A>
+<A NAME="IDX179"></A>
<DT><CODE>delete-char-or-list ()</CODE>
-<DD><A NAME="IDX168"></A>
+<DD><A NAME="IDX180"></A>
Deletes the character under the cursor if not at the beginning or
end of the line (like <CODE>delete-char</CODE>).
-If at the end of the line, behaves identically to
-<CODE>possible-completions</CODE>.
+At the end of the line, it behaves identically to <CODE>possible-completions</CODE>.
This command is unbound by default.
<P>
<!--docid::SEC20::-->
<DL COMPACT>
-<A NAME="IDX169"></A>
+<A NAME="IDX181"></A>
<DT><CODE>start-kbd-macro (C-x ()</CODE>
-<DD><A NAME="IDX170"></A>
+<DD><A NAME="IDX182"></A>
Begin saving the characters typed into the current keyboard macro.
<P>
-<A NAME="IDX171"></A>
+<A NAME="IDX183"></A>
<DT><CODE>end-kbd-macro (C-x ))</CODE>
-<DD><A NAME="IDX172"></A>
+<DD><A NAME="IDX184"></A>
Stop saving the characters typed into the current keyboard macro
and save the definition.
<P>
-<A NAME="IDX173"></A>
+<A NAME="IDX185"></A>
<DT><CODE>call-last-kbd-macro (C-x e)</CODE>
-<DD><A NAME="IDX174"></A>
+<DD><A NAME="IDX186"></A>
Re-execute the last keyboard macro defined, by making the characters
in the macro appear as if typed at the keyboard.
<P>
-<A NAME="IDX175"></A>
+<A NAME="IDX187"></A>
<DT><CODE>print-last-kbd-macro ()</CODE>
-<DD><A NAME="IDX176"></A>
-Print the last keboard macro defined in a format suitable for the
+<DD><A NAME="IDX188"></A>
+Print the last keyboard macro defined in a format suitable for the
<VAR>inputrc</VAR> file.
<P>
<!--docid::SEC21::-->
<DL COMPACT>
-<A NAME="IDX177"></A>
+<A NAME="IDX189"></A>
<DT><CODE>re-read-init-file (C-x C-r)</CODE>
-<DD><A NAME="IDX178"></A>
+<DD><A NAME="IDX190"></A>
Read in the contents of the <VAR>inputrc</VAR> file, and incorporate
any bindings or variable assignments found there.
<P>
-<A NAME="IDX179"></A>
+<A NAME="IDX191"></A>
<DT><CODE>abort (C-g)</CODE>
-<DD><A NAME="IDX180"></A>
+<DD><A NAME="IDX192"></A>
Abort the current editing command and
ring the terminal's bell (subject to the setting of
<CODE>bell-style</CODE>).
<P>
-<A NAME="IDX181"></A>
+<A NAME="IDX193"></A>
<DT><CODE>do-lowercase-version (M-A, M-B, M-<VAR>x</VAR>, <small>...</small>)</CODE>
-<DD><A NAME="IDX182"></A>
+<DD><A NAME="IDX194"></A>
If the metafied character <VAR>x</VAR> is upper case, run the command
that is bound to the corresponding metafied lower case character.
The behavior is undefined if <VAR>x</VAR> is already lower case.
<P>
-<A NAME="IDX183"></A>
+<A NAME="IDX195"></A>
<DT><CODE>prefix-meta (<KBD>ESC</KBD>)</CODE>
-<DD><A NAME="IDX184"></A>
-Metafy the next character typed. This is for keyboards
-without a meta key. Typing <SAMP>`<KBD>ESC</KBD> f'</SAMP> is equivalent to typing
-<KBD>M-f</KBD>.
+<DD><A NAME="IDX196"></A>
+Metafy the next character typed.
+Typing <SAMP>`<KBD>ESC</KBD> f'</SAMP> is equivalent to typing <KBD>M-f</KBD>.
<P>
-<A NAME="IDX185"></A>
+<A NAME="IDX197"></A>
<DT><CODE>undo (C-_ or C-x C-u)</CODE>
-<DD><A NAME="IDX186"></A>
+<DD><A NAME="IDX198"></A>
Incremental undo, separately remembered for each line.
<P>
-<A NAME="IDX187"></A>
+<A NAME="IDX199"></A>
<DT><CODE>revert-line (M-r)</CODE>
-<DD><A NAME="IDX188"></A>
-Undo all changes made to this line. This is like executing the <CODE>undo</CODE>
-command enough times to get back to the beginning.
+<DD><A NAME="IDX200"></A>
+Undo all changes made to this line.
+This is like executing the <CODE>undo</CODE>
+command enough times to get back to the initial state.
<P>
-<A NAME="IDX189"></A>
+<A NAME="IDX201"></A>
<DT><CODE>tilde-expand (M-~)</CODE>
-<DD><A NAME="IDX190"></A>
+<DD><A NAME="IDX202"></A>
Perform tilde expansion on the current word.
<P>
-<A NAME="IDX191"></A>
+<A NAME="IDX203"></A>
<DT><CODE>set-mark (C-@)</CODE>
-<DD><A NAME="IDX192"></A>
-Set the mark to the point. If a
-numeric argument is supplied, the mark is set to that position.
+<DD><A NAME="IDX204"></A>
+Set the mark to the point.
+If a numeric argument is supplied, set the mark to that position.
<P>
-<A NAME="IDX193"></A>
+<A NAME="IDX205"></A>
<DT><CODE>exchange-point-and-mark (C-x C-x)</CODE>
-<DD><A NAME="IDX194"></A>
-Swap the point with the mark. The current cursor position is set to
-the saved position, and the old cursor position is saved as the mark.
+<DD><A NAME="IDX206"></A>
+Swap the point with the mark.
+Set the current cursor position to the saved position,
+then set the mark to the old cursor position.
<P>
-<A NAME="IDX195"></A>
+<A NAME="IDX207"></A>
<DT><CODE>character-search (C-])</CODE>
-<DD><A NAME="IDX196"></A>
-A character is read and point is moved to the next occurrence of that
-character. A negative count searches for previous occurrences.
+<DD><A NAME="IDX208"></A>
+Read a character and move point to the next occurrence of that character.
+A negative argument searches for previous occurrences.
<P>
-<A NAME="IDX197"></A>
+<A NAME="IDX209"></A>
<DT><CODE>character-search-backward (M-C-])</CODE>
-<DD><A NAME="IDX198"></A>
-A character is read and point is moved to the previous occurrence
-of that character. A negative count searches for subsequent
-occurrences.
+<DD><A NAME="IDX210"></A>
+Read a character and move point to the previous occurrence of that character.
+A negative argument searches for subsequent occurrences.
<P>
-<A NAME="IDX199"></A>
+<A NAME="IDX211"></A>
<DT><CODE>skip-csi-sequence ()</CODE>
-<DD><A NAME="IDX200"></A>
+<DD><A NAME="IDX212"></A>
Read enough characters to consume a multi-key sequence such as those
-defined for keys like Home and End. Such sequences begin with a
-Control Sequence Indicator (CSI), usually ESC-[. If this sequence is
-bound to "\e[", keys producing such sequences will have no effect
-unless explicitly bound to a readline command, instead of inserting
-stray characters into the editing buffer. This is unbound by default,
-but usually bound to ESC-[.
+defined for keys like Home and End.
+CSI sequences begin with a Control Sequence Indicator (CSI), usually ESC-[.
+If this sequence is bound to "\e[",
+keys producing CSI sequences will have no effect
+unless explicitly bound to a Readline command, instead of inserting
+stray characters into the editing buffer.
+This is unbound by default, but usually bound to ESC-[.
<P>
-<A NAME="IDX201"></A>
+<A NAME="IDX213"></A>
<DT><CODE>insert-comment (M-#)</CODE>
-<DD><A NAME="IDX202"></A>
-Without a numeric argument, the value of the <CODE>comment-begin</CODE>
-variable is inserted at the beginning of the current line.
+<DD><A NAME="IDX214"></A>
+Without a numeric argument, insert the value of the <CODE>comment-begin</CODE>
+variable at the beginning of the current line.
If a numeric argument is supplied, this command acts as a toggle: if
the characters at the beginning of the line do not match the value
-of <CODE>comment-begin</CODE>, the value is inserted, otherwise
-the characters in <CODE>comment-begin</CODE> are deleted from the beginning of
-the line.
+of <CODE>comment-begin</CODE>, insert the value; otherwise delete
+the characters in <CODE>comment-begin</CODE> from the beginning of the line.
In either case, the line is accepted as if a newline had been typed.
<P>
-<A NAME="IDX203"></A>
+<A NAME="IDX215"></A>
<DT><CODE>dump-functions ()</CODE>
-<DD><A NAME="IDX204"></A>
-Print all of the functions and their key bindings to the
-Readline output stream. If a numeric argument is supplied,
+<DD><A NAME="IDX216"></A>
+Print all of the functions and their key bindings
+to the Readline output stream.
+If a numeric argument is supplied,
the output is formatted in such a way that it can be made part
-of an <VAR>inputrc</VAR> file. This command is unbound by default.
+of an <VAR>inputrc</VAR> file.
+This command is unbound by default.
<P>
-<A NAME="IDX205"></A>
+<A NAME="IDX217"></A>
<DT><CODE>dump-variables ()</CODE>
-<DD><A NAME="IDX206"></A>
-Print all of the settable variables and their values to the
-Readline output stream. If a numeric argument is supplied,
+<DD><A NAME="IDX218"></A>
+Print all of the settable variables and their values
+to the Readline output stream.
+If a numeric argument is supplied,
the output is formatted in such a way that it can be made part
-of an <VAR>inputrc</VAR> file. This command is unbound by default.
+of an <VAR>inputrc</VAR> file.
+This command is unbound by default.
<P>
-<A NAME="IDX207"></A>
+<A NAME="IDX219"></A>
<DT><CODE>dump-macros ()</CODE>
-<DD><A NAME="IDX208"></A>
+<DD><A NAME="IDX220"></A>
Print all of the Readline key sequences bound to macros and the
-strings they output. If a numeric argument is supplied,
+strings they output
+to the Readline output stream.
+If a numeric argument is supplied,
the output is formatted in such a way that it can be made part
-of an <VAR>inputrc</VAR> file. This command is unbound by default.
+of an <VAR>inputrc</VAR> file.
+This command is unbound by default.
<P>
-<A NAME="IDX209"></A>
+<A NAME="IDX221"></A>
+<DT><CODE>execute-named-command (M-x)</CODE>
+<DD><A NAME="IDX222"></A>
+Read a bindable readline command name from the input and execute the
+function to which it's bound, as if the key sequence to which it was
+bound appeared in the input.
+If this function is supplied with a numeric argument, it passes that
+argument to the function it executes.
+<P>
+
+<A NAME="IDX223"></A>
<DT><CODE>emacs-editing-mode (C-e)</CODE>
-<DD><A NAME="IDX210"></A>
+<DD><A NAME="IDX224"></A>
When in <CODE>vi</CODE> command mode, this causes a switch to <CODE>emacs</CODE>
editing mode.
<P>
-<A NAME="IDX211"></A>
+<A NAME="IDX225"></A>
<DT><CODE>vi-editing-mode (M-C-j)</CODE>
-<DD><A NAME="IDX212"></A>
+<DD><A NAME="IDX226"></A>
When in <CODE>emacs</CODE> editing mode, this causes a switch to <CODE>vi</CODE>
editing mode.
<P>
While the Readline library does not have a full set of <CODE>vi</CODE>
editing functions, it does contain enough to allow simple editing
-of the line. The Readline <CODE>vi</CODE> mode behaves as specified in
-the POSIX standard.
+of the line.
+The Readline <CODE>vi</CODE> mode behaves as specified in the
+<CODE>sh</CODE> description in the POSIX standard.
</P><P>
In order to switch interactively between <CODE>emacs</CODE> and <CODE>vi</CODE>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H1>About this document</H1>
-This document was generated by <I>Chet Ramey</I> on <I>January, 2 2018</I>
+This document was generated by <I>Chet Ramey</I> on <I>October, 11 2024</I>
using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html
"><I>texi2html</I></A>
<P></P>
<BR>
<FONT SIZE="-1">
This document was generated
-by <I>Chet Ramey</I> on <I>January, 2 2018</I>
+by <I>Chet Ramey</I> on <I>October, 11 2024</I>
using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html
"><I>texi2html</I></A>
-This is rluserman.info, produced by makeinfo version 6.5 from
+This is rluserman.info, produced by makeinfo version 7.1 from
rluserman.texi.
This manual describes the end user interface of the GNU Readline Library
-(version 7.0, 28 December 2017), a library which aids in the consistency
+(version 8.3, 10 October 2024), a library which aids in the consistency
of user interface across discrete programs which provide a command line
interface.
- Copyright (C) 1988-2016 Free Software Foundation, Inc.
+ Copyright © 1988-2024 Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License,
The following paragraphs describe the notation used to represent
keystrokes.
- The text 'C-k' is read as 'Control-K' and describes the character
+ The text ‘C-k’ is read as 'Control-K' and describes the character
produced when the <k> key is pressed while the Control key is depressed.
- The text 'M-k' is read as 'Meta-K' and describes the character
+ The text ‘M-k’ is read as 'Meta-K' and describes the character
produced when the Meta key (if you have one) is depressed, and the <k>
-key is pressed. The Meta key is labeled <ALT> on many keyboards. On
-keyboards with two keys labeled <ALT> (usually to either side of the
-space bar), the <ALT> on the left side is generally set to work as a
-Meta key. The <ALT> key on the right may also be configured to work as
-a Meta key or may be configured as some other modifier, such as a
-Compose key for typing accented characters.
+key is pressed (a “meta character”). The Meta key is labeled <ALT> on
+many keyboards. On keyboards with two keys labeled <ALT> (usually to
+either side of the space bar), the <ALT> on the left side is generally
+set to work as a Meta key. The <ALT> key on the right may also be
+configured to work as a Meta key or may be configured as some other
+modifier, such as a Compose key for typing accented characters.
+
+ On some keyboards, the Meta key modifier produces meta characters
+with the eighth bit (0200) set. You can use the ‘enable-meta-key’
+variable to control whether or not it does this, if the keyboard allows
+it. On many others, the terminal or terminal emulator converts the
+metafied key to a key sequence beginning with <ESC> as described in the
+next paragraph.
If you do not have a Meta or <ALT> key, or another key working as a
-Meta key, the identical keystroke can be generated by typing <ESC>
-_first_, and then typing <k>. Either process is known as "metafying"
-the <k> key.
+Meta key, you can generally achieve the latter effect by typing <ESC>
+_first_, and then typing <k>. The <ESC> character is known as the “meta
+prefix”).
- The text 'M-C-k' is read as 'Meta-Control-k' and describes the
-character produced by "metafying" 'C-k'.
+ Either process is known as “metafying” the <k> key.
+
+ If your Meta key produces a key sequence with the <ESC> meta prefix,
+you can make ‘M-key’ key bindings you specify (see ‘Key Bindings’ in
+*note Readline Init File Syntax::) do the same thing by setting the
+‘force-meta-prefix’ variable.
+
+ The text ‘M-C-k’ is read as 'Meta-Control-k' and describes the
+character produced by metafying ‘C-k’.
In addition, several keys have their own names. Specifically, <DEL>,
<ESC>, <LFD>, <SPC>, <RET>, and <TAB> all stand for themselves when seen
in this text, or in an init file (*note Readline Init File::). If your
-keyboard lacks a <LFD> key, typing <C-j> will produce the desired
+keyboard lacks a <LFD> key, typing <C-j> will output the appropriate
character. The <RET> key may be labeled <Return> or <Enter> on some
keyboards.
Sometimes you may mistype a character, and not notice the error until
you have typed several other characters. In that case, you can type
-'C-b' to move the cursor to the left, and then correct your mistake.
-Afterwards, you can move the cursor to the right with 'C-f'.
+‘C-b’ to move the cursor to the left, and then correct your mistake.
+Afterwards, you can move the cursor to the right with ‘C-f’.
When you add text in the middle of a line, you will notice that
characters to the right of the cursor are 'pushed over' to make room for
the text that you have inserted. Likewise, when you delete text behind
the cursor, characters to the right of the cursor are 'pulled back' to
-fill in the blank space created by the removal of the text. A list of
-the bare essentials for editing the text of an input line follows.
+fill in the blank space created by the removal of the text. These are
+the bare essentials for editing the text of an input line:
-'C-b'
+‘C-b’
Move back one character.
-'C-f'
+‘C-f’
Move forward one character.
<DEL> or <Backspace>
Delete the character to the left of the cursor.
-'C-d'
+‘C-d’
Delete the character underneath the cursor.
Printing characters
Insert the character into the line at the cursor.
-'C-_' or 'C-x C-u'
+‘C-_’ or ‘C-x C-u’
Undo the last editing command. You can undo all the way back to an
empty line.
-(Depending on your configuration, the <Backspace> key be set to delete
-the character to the left of the cursor and the <DEL> key set to delete
-the character underneath the cursor, like 'C-d', rather than the
-character to the left of the cursor.)
+Depending on your configuration, the <Backspace> key might be set to
+delete the character to the left of the cursor and the <DEL> key set to
+delete the character underneath the cursor, like ‘C-d’, rather than the
+character to the left of the cursor.
\1f
File: rluserman.info, Node: Readline Movement Commands, Next: Readline Killing Commands, Prev: Readline Bare Essentials, Up: Readline Interaction
The above table describes the most basic keystrokes that you need in
order to do editing of the input line. For your convenience, many other
-commands have been added in addition to 'C-b', 'C-f', 'C-d', and <DEL>.
-Here are some commands for moving more rapidly about the line.
+commands are available in addition to ‘C-b’, ‘C-f’, ‘C-d’, and <DEL>.
+Here are some commands for moving more rapidly within the line.
-'C-a'
+‘C-a’
Move to the start of the line.
-'C-e'
+‘C-e’
Move to the end of the line.
-'M-f'
+‘M-f’
Move forward a word, where a word is composed of letters and
digits.
-'M-b'
+‘M-b’
Move backward a word.
-'C-l'
+‘C-l’
Clear the screen, reprinting the current line at the top.
- Notice how 'C-f' moves forward a character, while 'M-f' moves forward
+ Notice how ‘C-f’ moves forward a character, while ‘M-f’ moves forward
a word. It is a loose convention that control keystrokes operate on
characters while meta keystrokes operate on words.
1.2.3 Readline Killing Commands
-------------------------------
-"Killing" text means to delete the text from the line, but to save it
-away for later use, usually by "yanking" (re-inserting) it back into the
+“Killing” text means to delete the text from the line, but to save it
+away for later use, usually by “yanking” (re-inserting) it back into the
line. ('Cut' and 'paste' are more recent jargon for 'kill' and 'yank'.)
If the description for a command says that it 'kills' text, then you
can be sure that you can get the text back in a different (or the same)
place later.
- When you use a kill command, the text is saved in a "kill-ring". Any
+ When you use a kill command, the text is saved in a “kill-ring”. Any
number of consecutive kills save all of the killed text together, so
that when you yank it back, you get it all. The kill ring is not line
specific; the text that you killed on a previously typed line is
Here is the list of commands for killing text.
-'C-k'
+‘C-k’
Kill the text from the current cursor position to the end of the
line.
-'M-d'
+‘M-d’
Kill from the cursor to the end of the current word, or, if between
words, to the end of the next word. Word boundaries are the same
- as those used by 'M-f'.
+ as those used by ‘M-f’.
-'M-<DEL>'
- Kill from the cursor the start of the current word, or, if between
- words, to the start of the previous word. Word boundaries are the
- same as those used by 'M-b'.
+‘M-<DEL>’
+ Kill from the cursor to the start of the current word, or, if
+ between words, to the start of the previous word. Word boundaries
+ are the same as those used by ‘M-b’.
-'C-w'
+‘C-w’
Kill from the cursor to the previous whitespace. This is different
- than 'M-<DEL>' because the word boundaries differ.
+ than ‘M-<DEL>’ because the word boundaries differ.
- Here is how to "yank" the text back into the line. Yanking means to
-copy the most-recently-killed text from the kill buffer.
+ Here is how to “yank” the text back into the line. Yanking means to
+copy the most-recently-killed text from the kill buffer into the line at
+the current cursor position.
-'C-y'
+‘C-y’
Yank the most recently killed text back into the buffer at the
cursor.
-'M-y'
+‘M-y’
Rotate the kill-ring, and yank the new top. You can only do this
- if the prior command is 'C-y' or 'M-y'.
+ if the prior command is ‘C-y’ or ‘M-y’.
\1f
File: rluserman.info, Node: Readline Arguments, Next: Searching, Prev: Readline Killing Commands, Up: Readline Interaction
argument that is significant. If you pass a negative argument to a
command which normally acts in a forward direction, that command will
act in a backward direction. For example, to kill text back to the
-start of the line, you might type 'M-- C-k'.
+start of the line, you might type ‘M-- C-k’.
The general way to pass numeric arguments to a command is to type
meta digits before the command. If the first 'digit' typed is a minus
-sign ('-'), then the sign of the argument will be negative. Once you
+sign (‘-’), then the sign of the argument will be negative. Once you
have typed one meta digit to get the argument started, you can type the
remainder of the digits, and then the command. For example, to give the
-'C-d' command an argument of 10, you could type 'M-1 0 C-d', which will
+‘C-d’ command an argument of 10, you could type ‘M-1 0 C-d’, which will
delete the next ten characters on the input line.
\1f
Readline provides commands for searching through the command history for
lines containing a specified string. There are two search modes:
-"incremental" and "non-incremental".
+“incremental” and “non-incremental”.
Incremental searches begin before the user has finished typing the
search string. As each character of the search string is typed,
Readline displays the next entry from the history matching the string
typed so far. An incremental search requires only as many characters as
-needed to find the desired history entry. To search backward in the
-history for a particular string, type 'C-r'. Typing 'C-s' searches
-forward through the history. The characters present in the value of the
-'isearch-terminators' variable are used to terminate an incremental
-search. If that variable has not been assigned a value, the <ESC> and
-'C-J' characters will terminate an incremental search. 'C-g' will abort
-an incremental search and restore the original line. When the search is
-terminated, the history entry containing the search string becomes the
-current line.
-
- To find other matching entries in the history list, type 'C-r' or
-'C-s' as appropriate. This will search backward or forward in the
+needed to find the desired history entry. When using emacs editing
+mode, type ‘C-r’ to search backward in the history for a particular
+string. Typing ‘C-s’ searches forward through the history. The
+characters present in the value of the ‘isearch-terminators’ variable
+are used to terminate an incremental search. If that variable has not
+been assigned a value, the <ESC> and ‘C-J’ characters will terminate an
+incremental search. ‘C-g’ will abort an incremental search and restore
+the original line. When the search is terminated, the history entry
+containing the search string becomes the current line.
+
+ To find other matching entries in the history list, type ‘C-r’ or
+‘C-s’ as appropriate. This will search backward or forward in the
history for the next entry matching the search string typed so far. Any
other key sequence bound to a Readline command will terminate the search
and execute that command. For instance, a <RET> will terminate the
history list. A movement command will terminate the search, make the
last line found the current line, and begin editing.
- Readline remembers the last incremental search string. If two 'C-r's
+ Readline remembers the last incremental search string. If two ‘C-r’s
are typed without any intervening characters defining a new search
-string, any remembered search string is used.
+string, Readline uses any remembered search string.
Non-incremental searches read the entire search string before
-starting to search for matching history lines. The search string may be
-typed by the user or be part of the contents of the current line.
+starting to search for matching history entries. The search string may
+be typed by the user or be part of the contents of the current line.
\1f
File: rluserman.info, Node: Readline Init File, Next: Bindable Readline Commands, Prev: Readline Interaction, Up: Command Line Editing
Although the Readline library comes with a set of Emacs-like keybindings
installed by default, it is possible to use a different set of
keybindings. Any user can customize programs that use Readline by
-putting commands in an "inputrc" file, conventionally in his home
+putting commands in an “inputrc” file, conventionally in their home
directory. The name of this file is taken from the value of the
-environment variable 'INPUTRC'. If that variable is unset, the default
-is '~/.inputrc'. If that file does not exist or cannot be read, the
-ultimate default is '/etc/inputrc'.
+environment variable ‘INPUTRC’. If that variable is unset, the default
+is ‘~/.inputrc’. If that file does not exist or cannot be read,
+readline looks for ‘/etc/inputrc’.
- When a program which uses the Readline library starts up, the init
-file is read, and the key bindings are set.
+ When a program which uses the Readline library starts up, Readline
+reads the init file and sets any variables and key bindings it contains.
- In addition, the 'C-x C-r' command re-reads this init file, thus
+ In addition, the ‘C-x C-r’ command re-reads this init file, thus
incorporating any changes that you might have made to it.
* Menu:
* Readline Init File Syntax:: Syntax for the commands in the inputrc file.
-
* Conditional Init Constructs:: Conditional key bindings in the inputrc file.
-
* Sample Init File:: An example inputrc file.
\1f
-------------------------------
There are only a few basic constructs allowed in the Readline init file.
-Blank lines are ignored. Lines beginning with a '#' are comments.
-Lines beginning with a '$' indicate conditional constructs (*note
+Blank lines are ignored. Lines beginning with a ‘#’ are comments.
+Lines beginning with a ‘$’ indicate conditional constructs (*note
Conditional Init Constructs::). Other lines denote variable settings
and key bindings.
Variable Settings
You can modify the run-time behavior of Readline by altering the
- values of variables in Readline using the 'set' command within the
+ values of variables in Readline using the ‘set’ command within the
init file. The syntax is simple:
set VARIABLE VALUE
Here, for example, is how to change from the default Emacs-like key
- binding to use 'vi' line editing commands:
+ binding to use ‘vi’ line editing commands:
set editing-mode vi
A great deal of run-time behavior is changeable with the following
variables.
- 'bell-style'
+ ‘active-region-start-color’
+ A string variable that controls the text color and background
+ when displaying the text in the active region (see the
+ description of ‘enable-active-region’ below). This string
+ must not take up any physical character positions on the
+ display, so it should consist only of terminal escape
+ sequences. It is output to the terminal before displaying the
+ text in the active region. This variable is reset to the
+ default value whenever the terminal type changes. The default
+ value is the string that puts the terminal in standout mode,
+ as obtained from the terminal's terminfo description. A
+ sample value might be ‘\e[01;33m’.
+
+ ‘active-region-end-color’
+ A string variable that "undoes" the effects of
+ ‘active-region-start-color’ and restores "normal" terminal
+ display appearance after displaying text in the active region.
+ This string must not take up any physical character positions
+ on the display, so it should consist only of terminal escape
+ sequences. It is output to the terminal after displaying the
+ text in the active region. This variable is reset to the
+ default value whenever the terminal type changes. The default
+ value is the string that restores the terminal from standout
+ mode, as obtained from the terminal's terminfo description. A
+ sample value might be ‘\e[0m’.
+
+ ‘bell-style’
Controls what happens when Readline wants to ring the terminal
- bell. If set to 'none', Readline never rings the bell. If
- set to 'visible', Readline uses a visible bell if one is
- available. If set to 'audible' (the default), Readline
+ bell. If set to ‘none’, Readline never rings the bell. If
+ set to ‘visible’, Readline uses a visible bell if one is
+ available. If set to ‘audible’ (the default), Readline
attempts to ring the terminal's bell.
- 'bind-tty-special-chars'
- If set to 'on' (the default), Readline attempts to bind the
- control characters treated specially by the kernel's terminal
- driver to their Readline equivalents.
+ ‘bind-tty-special-chars’
+ If set to ‘on’ (the default), Readline attempts to bind the
+ control characters that are treated specially by the kernel's
+ terminal driver to their Readline equivalents. These override
+ the default Readline bindings described here. Type ‘stty -a’
+ at a Bash prompt to see your current terminal settings,
+ including the special control characters (usually ‘cchars’).
- 'blink-matching-paren'
- If set to 'on', Readline attempts to briefly move the cursor
+ ‘blink-matching-paren’
+ If set to ‘on’, Readline attempts to briefly move the cursor
to an opening parenthesis when a closing parenthesis is
- inserted. The default is 'off'.
+ inserted. The default is ‘off’.
- 'colored-completion-prefix'
- If set to 'on', when listing completions, Readline displays
+ ‘colored-completion-prefix’
+ If set to ‘on’, when listing completions, Readline displays
the common prefix of the set of possible completions using a
different color. The color definitions are taken from the
- value of the 'LS_COLORS' environment variable. The default is
- 'off'.
-
- 'colored-stats'
- If set to 'on', Readline displays possible completions using
+ value of the ‘LS_COLORS’ environment variable. If there is a
+ color definition in ‘LS_COLORS’ for the custom suffix
+ ‘readline-colored-completion-prefix’, Readline uses this color
+ for the common prefix instead of its default. The default is
+ ‘off’.
+
+ ‘colored-stats’
+ If set to ‘on’, Readline displays possible completions using
different colors to indicate their file type. The color
- definitions are taken from the value of the 'LS_COLORS'
- environment variable. The default is 'off'.
+ definitions are taken from the value of the ‘LS_COLORS’
+ environment variable. The default is ‘off’.
- 'comment-begin'
- The string to insert at the beginning of the line when the
- 'insert-comment' command is executed. The default value is
- '"#"'.
+ ‘comment-begin’
+ The string to insert at the beginning of the line by the
+ ‘insert-comment’ command. The default value is ‘"#"’.
- 'completion-display-width'
+ ‘completion-display-width’
The number of screen columns used to display possible matches
when performing completion. The value is ignored if it is
less than 0 or greater than the terminal screen width. A
value of 0 will cause matches to be displayed one per line.
The default value is -1.
- 'completion-ignore-case'
- If set to 'on', Readline performs filename matching and
+ ‘completion-ignore-case’
+ If set to ‘on’, Readline performs filename matching and
completion in a case-insensitive fashion. The default value
- is 'off'.
+ is ‘off’.
- 'completion-map-case'
- If set to 'on', and COMPLETION-IGNORE-CASE is enabled,
- Readline treats hyphens ('-') and underscores ('_') as
+ ‘completion-map-case’
+ If set to ‘on’, and COMPLETION-IGNORE-CASE is enabled,
+ Readline treats hyphens (‘-’) and underscores (‘_’) as
equivalent when performing case-insensitive filename matching
- and completion.
+ and completion. The default value is ‘off’.
- 'completion-prefix-display-length'
- The length in characters of the common prefix of a list of
- possible completions that is displayed without modification.
- When set to a value greater than zero, common prefixes longer
- than this value are replaced with an ellipsis when displaying
- possible completions.
+ ‘completion-prefix-display-length’
+ The maximum length in characters of the common prefix of a
+ list of possible completions that is displayed without
+ modification. When set to a value greater than zero, readline
+ replaces common prefixes longer than this value with an
+ ellipsis when displaying possible completions.
- 'completion-query-items'
+ ‘completion-query-items’
The number of possible completions that determines when the
user is asked whether the list of possibilities should be
displayed. If the number of possible completions is greater
- than this value, Readline will ask the user whether or not he
- wishes to view them; otherwise, they are simply listed. This
- variable must be set to an integer value greater than or equal
- to 0. A negative value means Readline should never ask. The
- default limit is '100'.
-
- 'convert-meta'
- If set to 'on', Readline will convert characters with the
- eighth bit set to an ASCII key sequence by stripping the
- eighth bit and prefixing an <ESC> character, converting them
- to a meta-prefixed key sequence. The default value is 'on',
- but will be set to 'off' if the locale is one that contains
- eight-bit characters.
-
- 'disable-completion'
- If set to 'On', Readline will inhibit word completion.
+ than or equal to this value, Readline will ask whether or not
+ the user wishes to view them; otherwise, Readline simply lists
+ the completions. This variable must be set to an integer
+ value greater than or equal to zero. A zero value means
+ Readline should never ask; negative values are treated as
+ zero. The default limit is ‘100’.
+
+ ‘convert-meta’
+ If set to ‘on’, Readline will convert characters it reads that
+ have the eighth bit set to an ASCII key sequence by clearing
+ the eighth bit and prefixing an <ESC> character, converting
+ them to a meta-prefixed key sequence. The default value is
+ ‘on’, but Readline will set it to ‘off’ if the locale contains
+ characters whose encodings may include bytes with the eighth
+ bit set. This variable is dependent on the ‘LC_CTYPE’ locale
+ category, and may change if the locale changes. This variable
+ also affects key bindings; see the description of
+ ‘force-meta-prefix’ below.
+
+ ‘disable-completion’
+ If set to ‘On’, Readline will inhibit word completion.
Completion characters will be inserted into the line as if
- they had been mapped to 'self-insert'. The default is 'off'.
+ they had been mapped to ‘self-insert’. The default is ‘off’.
- 'echo-control-characters'
- When set to 'on', on operating systems that indicate they
- support it, readline echoes a character corresponding to a
- signal generated from the keyboard. The default is 'on'.
+ ‘echo-control-characters’
+ When set to ‘on’, on operating systems that indicate they
+ support it, Readline echoes a character corresponding to a
+ signal generated from the keyboard. The default is ‘on’.
- 'editing-mode'
- The 'editing-mode' variable controls which default set of key
- bindings is used. By default, Readline starts up in Emacs
- editing mode, where the keystrokes are most similar to Emacs.
- This variable can be set to either 'emacs' or 'vi'.
+ ‘editing-mode’
+ The ‘editing-mode’ variable controls the default set of key
+ bindings. By default, Readline starts up in emacs editing
+ mode, where the keystrokes are most similar to Emacs. This
+ variable can be set to either ‘emacs’ or ‘vi’.
- 'emacs-mode-string'
+ ‘emacs-mode-string’
If the SHOW-MODE-IN-PROMPT variable is enabled, this string is
displayed immediately before the last line of the primary
prompt when emacs editing mode is active. The value is
expanded like a key binding, so the standard set of meta- and
- control prefixes and backslash escape sequences is available.
- Use the '\1' and '\2' escapes to begin and end sequences of
+ control- prefixes and backslash escape sequences is available.
+ The ‘\1’ and ‘\2’ escapes begin and end sequences of
non-printing characters, which can be used to embed a terminal
- control sequence into the mode string. The default is '@'.
-
- 'enable-bracketed-paste'
- When set to 'On', Readline will configure the terminal in a
- way that will enable it to insert each paste into the editing
- buffer as a single string of characters, instead of treating
- each character as if it had been read from the keyboard. This
- can prevent pasted characters from being interpreted as
- editing commands. The default is 'off'.
-
- 'enable-keypad'
- When set to 'on', Readline will try to enable the application
+ control sequence into the mode string. The default is ‘@’.
+
+ ‘enable-active-region’
+ “point” is the current cursor position, and “mark” refers to a
+ saved cursor position (*note Commands For Moving::). The text
+ between the point and mark is referred to as the “region”.
+ When this variable is set to ‘On’, Readline allows certain
+ commands to designate the region as “active”. When the region
+ is active, Readline highlights the text in the region using
+ the value of the ‘active-region-start-color’, which defaults
+ to the string that enables the terminal's standout mode. The
+ active region shows the text inserted by bracketed-paste and
+ any matching text found by incremental and non-incremental
+ history searches. The default is ‘On’.
+
+ ‘enable-bracketed-paste’
+ When set to ‘On’, Readline configures the terminal to insert
+ each paste into the editing buffer as a single string of
+ characters, instead of treating each character as if it had
+ been read from the keyboard. This is called putting the
+ terminal into “bracketed paste mode”; it prevents Readline
+ from executing any editing commands bound to key sequences
+ appearing in the pasted text. The default is ‘On’.
+
+ ‘enable-keypad’
+ When set to ‘on’, Readline will try to enable the application
keypad when it is called. Some systems need this to enable
- the arrow keys. The default is 'off'.
+ the arrow keys. The default is ‘off’.
- 'enable-meta-key'
- When set to 'on', Readline will try to enable any meta
+ ‘enable-meta-key’
+ When set to ‘on’, Readline will try to enable any meta
modifier key the terminal claims to support when it is called.
- On many terminals, the meta key is used to send eight-bit
- characters. The default is 'on'.
-
- 'expand-tilde'
- If set to 'on', tilde expansion is performed when Readline
- attempts word completion. The default is 'off'.
-
- 'history-preserve-point'
- If set to 'on', the history code attempts to place the point
+ On many terminals, the Meta key is used to send eight-bit
+ characters; this variable checks for the terminal capability
+ that indicates the terminal can enable and disable a mode that
+ sets the eighth bit of a character (0200) if the Meta key is
+ held down when the character is typed (a meta character). The
+ default is ‘on’.
+
+ ‘expand-tilde’
+ If set to ‘on’, Readline attempts tilde expansion when it
+ attempts word completion. The default is ‘off’.
+
+ ‘force-meta-prefix’
+ If set to ‘on’, Readline modifies its behavior when binding
+ key sequences containing ‘\M-’ or ‘Meta-’ (see ‘Key Bindings’
+ in *note Readline Init File Syntax::) by converting a key
+ sequence of the form ‘\M-’C or ‘Meta-’C to the two-character
+ sequence ‘ESC’C (adding the meta prefix). If
+ ‘force-meta-prefix’ is set to ‘off’ (the default), Readline
+ uses the value of the ‘convert-meta’ variable to determine
+ whether to perform this conversion: if ‘convert-meta’ is ‘on’,
+ Readline performs the conversion described above; if it is
+ ‘off’, Readline converts C to a meta character by setting the
+ eighth bit (0200). The default is ‘off’.
+
+ ‘history-preserve-point’
+ If set to ‘on’, the history code attempts to place the point
(the current cursor position) at the same location on each
- history line retrieved with 'previous-history' or
- 'next-history'. The default is 'off'.
+ history line retrieved with ‘previous-history’ or
+ ‘next-history’. The default is ‘off’.
- 'history-size'
+ ‘history-size’
Set the maximum number of history entries saved in the history
list. If set to zero, any existing history entries are
deleted and no new entries are saved. If set to a value less
than zero, the number of history entries is not limited. By
- default, the number of history entries is not limited. If an
- attempt is made to set HISTORY-SIZE to a non-numeric value,
- the maximum number of history entries will be set to 500.
-
- 'horizontal-scroll-mode'
- This variable can be set to either 'on' or 'off'. Setting it
- to 'on' means that the text of the lines being edited will
- scroll horizontally on a single screen line when they are
- longer than the width of the screen, instead of wrapping onto
- a new screen line. By default, this variable is set to 'off'.
-
- 'input-meta'
- If set to 'on', Readline will enable eight-bit input (it will
- not clear the eighth bit in the characters it reads),
+ default, the number of history entries is not limited. If you
+ try to set HISTORY-SIZE to a non-numeric value, the maximum
+ number of history entries will be set to 500.
+
+ ‘horizontal-scroll-mode’
+ Setting this variable to ‘on’ means that the text of the lines
+ being edited will scroll horizontally on a single screen line
+ when the lines are longer than the width of the screen,
+ instead of wrapping onto a new screen line. This variable is
+ automatically set to ‘on’ for terminals of height 1. By
+ default, this variable is set to ‘off’.
+
+ ‘input-meta’
+ If set to ‘on’, Readline will enable eight-bit input (that is,
+ it will not clear the eighth bit in the characters it reads),
regardless of what the terminal claims it can support. The
- default value is 'off', but Readline will set it to 'on' if
- the locale contains eight-bit characters. The name
- 'meta-flag' is a synonym for this variable.
-
- 'isearch-terminators'
+ default value is ‘off’, but Readline will set it to ‘on’ if
+ the locale contains characters whose encodings may include
+ bytes with the eighth bit set. This variable is dependent on
+ the ‘LC_CTYPE’ locale category, and its value may change if
+ the locale changes. The name ‘meta-flag’ is a synonym for
+ ‘input-meta’.
+
+ ‘isearch-terminators’
The string of characters that should terminate an incremental
search without subsequently executing the character as a
command (*note Searching::). If this variable has not been
- given a value, the characters <ESC> and 'C-J' will terminate
+ given a value, the characters <ESC> and ‘C-J’ will terminate
an incremental search.
- 'keymap'
+ ‘keymap’
Sets Readline's idea of the current keymap for key binding
- commands. Acceptable 'keymap' names are 'emacs',
- 'emacs-standard', 'emacs-meta', 'emacs-ctlx', 'vi', 'vi-move',
- 'vi-command', and 'vi-insert'. 'vi' is equivalent to
- 'vi-command' ('vi-move' is also a synonym); 'emacs' is
- equivalent to 'emacs-standard'. The default value is 'emacs'.
- The value of the 'editing-mode' variable also affects the
- default keymap.
-
- 'keyseq-timeout'
+ commands. Built-in ‘keymap’ names are ‘emacs’,
+ ‘emacs-standard’, ‘emacs-meta’, ‘emacs-ctlx’, ‘vi’, ‘vi-move’,
+ ‘vi-command’, and ‘vi-insert’. ‘vi’ is equivalent to
+ ‘vi-command’ (‘vi-move’ is also a synonym); ‘emacs’ is
+ equivalent to ‘emacs-standard’. Applications may add
+ additional names. The default value is ‘emacs’; the value of
+ the ‘editing-mode’ variable also affects the default keymap.
+
+ ‘keyseq-timeout’
Specifies the duration Readline will wait for a character when
reading an ambiguous key sequence (one that can form a
complete key sequence using the input read so far, or can take
- additional input to complete a longer key sequence). If no
- input is received within the timeout, Readline will use the
- shorter but complete key sequence. Readline uses this value
- to determine whether or not input is available on the current
- input source ('rl_instream' by default). The value is
+ additional input to complete a longer key sequence). If
+ Readline doesn't receive any input within the timeout, it will
+ use the shorter but complete key sequence. Readline uses this
+ value to determine whether or not input is available on the
+ current input source (‘rl_instream’ by default). The value is
specified in milliseconds, so a value of 1000 means that
Readline will wait one second for additional input. If this
variable is set to a value less than or equal to zero, or to a
non-numeric value, Readline will wait until another key is
pressed to decide which key sequence to complete. The default
- value is '500'.
-
- 'mark-directories'
- If set to 'on', completed directory names have a slash
- appended. The default is 'on'.
-
- 'mark-modified-lines'
- This variable, when set to 'on', causes Readline to display an
- asterisk ('*') at the start of history lines which have been
- modified. This variable is 'off' by default.
-
- 'mark-symlinked-directories'
- If set to 'on', completed names which are symbolic links to
- directories have a slash appended (subject to the value of
- 'mark-directories'). The default is 'off'.
-
- 'match-hidden-files'
- This variable, when set to 'on', causes Readline to match
- files whose names begin with a '.' (hidden files) when
- performing filename completion. If set to 'off', the leading
- '.' must be supplied by the user in the filename to be
- completed. This variable is 'on' by default.
-
- 'menu-complete-display-prefix'
- If set to 'on', menu completion displays the common prefix of
+ value is ‘500’.
+
+ ‘mark-directories’
+ If set to ‘on’, completed directory names have a slash
+ appended. The default is ‘on’.
+
+ ‘mark-modified-lines’
+ When this variable is set to ‘on’, Readline will to display an
+ asterisk (‘*’) at the start of history lines which have been
+ modified. This variable is ‘off’ by default.
+
+ ‘mark-symlinked-directories’
+ If set to ‘on’, completed names which are symbolic links to
+ directories have a slash appended, subject to the value of
+ ‘mark-directories’. The default is ‘off’.
+
+ ‘match-hidden-files’
+ This variable, when set to ‘on’, forces Readline to match
+ files whose names begin with a ‘.’ (hidden files) when
+ performing filename completion. If set to ‘off’, the user
+ must include the leading ‘.’ in the filename to be completed.
+ This variable is ‘on’ by default.
+
+ ‘menu-complete-display-prefix’
+ If set to ‘on’, menu completion displays the common prefix of
the list of possible completions (which may be empty) before
- cycling through the list. The default is 'off'.
+ cycling through the list. The default is ‘off’.
- 'output-meta'
- If set to 'on', Readline will display characters with the
+ ‘output-meta’
+ If set to ‘on’, Readline will display characters with the
eighth bit set directly rather than as a meta-prefixed escape
- sequence. The default is 'off', but Readline will set it to
- 'on' if the locale contains eight-bit characters.
-
- 'page-completions'
- If set to 'on', Readline uses an internal 'more'-like pager to
+ sequence. The default is ‘off’, but Readline will set it to
+ ‘on’ if the locale contains characters whose encodings may
+ include bytes with the eighth bit set. This variable is
+ dependent on the ‘LC_CTYPE’ locale category, and its value may
+ change if the locale changes.
+
+ ‘page-completions’
+ If set to ‘on’, Readline uses an internal ‘more’-like pager to
display a screenful of possible completions at a time. This
- variable is 'on' by default.
+ variable is ‘on’ by default.
+
+ ‘prefer-visible-bell’
+ See ‘bell-style’.
- 'print-completions-horizontally'
- If set to 'on', Readline will display completions with matches
+ ‘print-completions-horizontally’
+ If set to ‘on’, Readline will display completions with matches
sorted horizontally in alphabetical order, rather than down
- the screen. The default is 'off'.
+ the screen. The default is ‘off’.
- 'revert-all-at-newline'
- If set to 'on', Readline will undo all changes to history
- lines before returning when 'accept-line' is executed. By
+ ‘revert-all-at-newline’
+ If set to ‘on’, Readline will undo all changes to history
+ lines before returning when executing ‘accept-line’. By
default, history lines may be modified and retain individual
- undo lists across calls to 'readline'. The default is 'off'.
+ undo lists across calls to ‘readline()’. The default is
+ ‘off’.
- 'show-all-if-ambiguous'
+ ‘search-ignore-case’
+ If set to ‘on’, Readline performs incremental and
+ non-incremental history list searches in a case-insensitive
+ fashion. The default value is ‘off’.
+
+ ‘show-all-if-ambiguous’
This alters the default behavior of the completion functions.
- If set to 'on', words which have more than one possible
+ If set to ‘on’, words which have more than one possible
completion cause the matches to be listed immediately instead
- of ringing the bell. The default value is 'off'.
+ of ringing the bell. The default value is ‘off’.
- 'show-all-if-unmodified'
+ ‘show-all-if-unmodified’
This alters the default behavior of the completion functions
in a fashion similar to SHOW-ALL-IF-AMBIGUOUS. If set to
- 'on', words which have more than one possible completion
+ ‘on’, words which have more than one possible completion
without any possible partial completion (the possible
completions don't share a common prefix) cause the matches to
be listed immediately instead of ringing the bell. The
- default value is 'off'.
+ default value is ‘off’.
- 'show-mode-in-prompt'
- If set to 'on', add a string to the beginning of the prompt
+ ‘show-mode-in-prompt’
+ If set to ‘on’, add a string to the beginning of the prompt
indicating the editing mode: emacs, vi command, or vi
insertion. The mode strings are user-settable (e.g.,
- EMACS-MODE-STRING). The default value is 'off'.
+ EMACS-MODE-STRING). The default value is ‘off’.
- 'skip-completed-text'
- If set to 'on', this alters the default completion behavior
+ ‘skip-completed-text’
+ If set to ‘on’, this alters the default completion behavior
when inserting a single match into the line. It's only active
when performing completion in the middle of a word. If
enabled, readline does not insert characters from the
completion that match characters after point in the word being
completed, so portions of the word following the cursor are
not duplicated. For instance, if this is enabled, attempting
- completion when the cursor is after the 'e' in 'Makefile' will
- result in 'Makefile' rather than 'Makefilefile', assuming
- there is a single possible completion. The default value is
- 'off'.
+ completion when the cursor is after the first ‘e’ in
+ ‘Makefile’ will result in ‘Makefile’ rather than
+ ‘Makefilefile’, assuming there is a single possible
+ completion. The default value is ‘off’.
- 'vi-cmd-mode-string'
+ ‘vi-cmd-mode-string’
If the SHOW-MODE-IN-PROMPT variable is enabled, this string is
displayed immediately before the last line of the primary
prompt when vi editing mode is active and in command mode.
The value is expanded like a key binding, so the standard set
- of meta- and control prefixes and backslash escape sequences
- is available. Use the '\1' and '\2' escapes to begin and end
+ of meta- and control- prefixes and backslash escape sequences
+ is available. The ‘\1’ and ‘\2’ escapes begin and end
sequences of non-printing characters, which can be used to
embed a terminal control sequence into the mode string. The
- default is '(cmd)'.
+ default is ‘(cmd)’.
- 'vi-ins-mode-string'
+ ‘vi-ins-mode-string’
If the SHOW-MODE-IN-PROMPT variable is enabled, this string is
displayed immediately before the last line of the primary
prompt when vi editing mode is active and in insertion mode.
The value is expanded like a key binding, so the standard set
- of meta- and control prefixes and backslash escape sequences
- is available. Use the '\1' and '\2' escapes to begin and end
+ of meta- and control- prefixes and backslash escape sequences
+ is available. The ‘\1’ and ‘\2’ escapes begin and end
sequences of non-printing characters, which can be used to
embed a terminal control sequence into the mode string. The
- default is '(ins)'.
+ default is ‘(ins)’.
- 'visible-stats'
- If set to 'on', a character denoting a file's type is appended
+ ‘visible-stats’
+ If set to ‘on’, a character denoting a file's type is appended
to the filename when listing possible completions. The
- default is 'off'.
+ default is ‘off’.
Key Bindings
The syntax for controlling key bindings in the init file is simple.
part of the key name. The name of the key can be expressed in
different ways, depending on what you find most comfortable.
- In addition to command names, readline allows keys to be bound to a
- string that is inserted when the key is pressed (a MACRO).
+ In addition to command names, Readline allows keys to be bound to a
+ string that is inserted when the key is pressed (a MACRO). The
+ difference between a macro and a command is that a macro is
+ enclosed in single or double quotes.
KEYNAME: FUNCTION-NAME or MACRO
KEYNAME is the name of a key spelled out in English. For
Meta-Rubout: backward-kill-word
Control-o: "> output"
- In the above example, 'C-u' is bound to the function
- 'universal-argument', 'M-DEL' is bound to the function
- 'backward-kill-word', and 'C-o' is bound to run the macro
+ In the example above, ‘C-u’ is bound to the function
+ ‘universal-argument’, ‘M-DEL’ is bound to the function
+ ‘backward-kill-word’, and ‘C-o’ is bound to run the macro
expressed on the right hand side (that is, to insert the text
- '> output' into the line).
+ ‘> output’ into the line).
- A number of symbolic character names are recognized while
- processing this key binding syntax: DEL, ESC, ESCAPE, LFD,
- NEWLINE, RET, RETURN, RUBOUT, SPACE, SPC, and TAB.
+ This key binding syntax recognizes a number of symbolic
+ character names: DEL, ESC, ESCAPE, LFD, NEWLINE, RET, RETURN,
+ RUBOUT, SPACE, SPC, and TAB.
"KEYSEQ": FUNCTION-NAME or MACRO
KEYSEQ differs from KEYNAME above in that strings denoting an
entire key sequence can be specified, by placing the key
sequence in double quotes. Some GNU Emacs style key escapes
- can be used, as in the following example, but the special
- character names are not recognized.
+ can be used, as in the following example, but none of the
+ special character names are recognized.
"\C-u": universal-argument
"\C-x\C-r": re-read-init-file
"\e[11~": "Function Key 1"
- In the above example, 'C-u' is again bound to the function
- 'universal-argument' (just as it was in the first example),
- ''C-x' 'C-r'' is bound to the function 're-read-init-file',
- and '<ESC> <[> <1> <1> <~>' is bound to insert the text
- 'Function Key 1'.
+ In the above example, ‘C-u’ is again bound to the function
+ ‘universal-argument’ (just as it was in the first example),
+ ‘‘C-x’ ‘C-r’’ is bound to the function ‘re-read-init-file’,
+ and ‘<ESC> <[> <1> <1> <~>’ is bound to insert the text
+ ‘Function Key 1’.
The following GNU Emacs style escape sequences are available when
specifying key sequences:
- '\C-'
- control prefix
- '\M-'
- meta prefix
- '\e'
- an escape character
- '\\'
- backslash
- '\"'
- <">, a double quotation mark
- '\''
- <'>, a single quote or apostrophe
+ ‘\C-’
+ A control prefix.
+ ‘\M-’
+ Adding the meta prefix or converting the following character
+ to a meta character, as described above under
+ ‘force-meta-prefix’ (see ‘Variable Settings’ in *note Readline
+ Init File Syntax::).
+ ‘\e’
+ An escape character.
+ ‘\\’
+ Backslash.
+ ‘\"’
+ <">, a double quotation mark.
+ ‘\'’
+ <'>, a single quote or apostrophe.
In addition to the GNU Emacs style escape sequences, a second set
of backslash escapes is available:
- '\a'
+ ‘\a’
alert (bell)
- '\b'
+ ‘\b’
backspace
- '\d'
+ ‘\d’
delete
- '\f'
+ ‘\f’
form feed
- '\n'
+ ‘\n’
newline
- '\r'
+ ‘\r’
carriage return
- '\t'
+ ‘\t’
horizontal tab
- '\v'
+ ‘\v’
vertical tab
- '\NNN'
- the eight-bit character whose value is the octal value NNN
- (one to three digits)
- '\xHH'
- the eight-bit character whose value is the hexadecimal value
- HH (one or two hex digits)
+ ‘\NNN’
+ The eight-bit character whose value is the octal value NNN
+ (one to three digits).
+ ‘\xHH’
+ The eight-bit character whose value is the hexadecimal value
+ HH (one or two hex digits).
When entering the text of a macro, single or double quotes must be
used to indicate a macro definition. Unquoted text is assumed to
- be a function name. In the macro body, the backslash escapes
- described above are expanded. Backslash will quote any other
- character in the macro text, including '"' and '''. For example,
- the following binding will make ''C-x' \' insert a single '\' into
+ be a function name. Tthe backslash escapes described above are
+ expanded in the macro body. Backslash will quote any other
+ character in the macro text, including ‘"’ and ‘'’. For example,
+ the following binding will make ‘‘C-x’ \’ insert a single ‘\’ into
the line:
"\C-x\\": "\\"
Readline implements a facility similar in spirit to the conditional
compilation features of the C preprocessor which allows key bindings and
variable settings to be performed as the result of tests. There are
-four parser directives used.
+four parser directives available.
-'$if'
- The '$if' construct allows bindings to be made based on the editing
+‘$if’
+ The ‘$if’ construct allows bindings to be made based on the editing
mode, the terminal being used, or the application using Readline.
The text of the test, after any comparison operator, extends to the
end of the line; unless otherwise noted, no characters are required
to isolate it.
- 'mode'
- The 'mode=' form of the '$if' directive is used to test
- whether Readline is in 'emacs' or 'vi' mode. This may be used
- in conjunction with the 'set keymap' command, for instance, to
- set bindings in the 'emacs-standard' and 'emacs-ctlx' keymaps
- only if Readline is starting out in 'emacs' mode.
+ ‘mode’
+ The ‘mode=’ form of the ‘$if’ directive is used to test
+ whether Readline is in ‘emacs’ or ‘vi’ mode. This may be used
+ in conjunction with the ‘set keymap’ command, for instance, to
+ set bindings in the ‘emacs-standard’ and ‘emacs-ctlx’ keymaps
+ only if Readline is starting out in ‘emacs’ mode.
- 'term'
- The 'term=' form may be used to include terminal-specific key
+ ‘term’
+ The ‘term=’ form may be used to include terminal-specific key
bindings, perhaps to bind the key sequences output by the
terminal's function keys. The word on the right side of the
- '=' is tested against both the full name of the terminal and
- the portion of the terminal name before the first '-'. This
- allows 'sun' to match both 'sun' and 'sun-cmd', for instance.
-
- 'version'
- The 'version' test may be used to perform comparisons against
- specific Readline versions. The 'version' expands to the
+ ‘=’ is tested against both the full name of the terminal and
+ the portion of the terminal name before the first ‘-’. This
+ allows ‘xterm’ to match both ‘xterm’ and ‘xterm-256color’, for
+ instance.
+
+ ‘version’
+ The ‘version’ test may be used to perform comparisons against
+ specific Readline versions. The ‘version’ expands to the
current Readline version. The set of comparison operators
- includes '=' (and '=='), '!=', '<=', '>=', '<', and '>'. The
+ includes ‘=’ (and ‘==’), ‘!=’, ‘<=’, ‘>=’, ‘<’, and ‘>’. The
version number supplied on the right side of the operator
consists of a major version number, an optional decimal point,
- and an optional minor version (e.g., '7.1'). If the minor
- version is omitted, it is assumed to be '0'. The operator may
- be separated from the string 'version' and from the version
+ and an optional minor version (e.g., ‘7.1’). If the minor
+ version is omitted, it defaults to ‘0’. The operator may be
+ separated from the string ‘version’ and from the version
number argument by whitespace. The following example sets a
variable if the Readline version being used is 7.0 or newer:
$if version >= 7.0
set show-mode-in-prompt on
$endif
- 'application'
+ ‘application’
The APPLICATION construct is used to include
application-specific settings. Each program using the
Readline library sets the APPLICATION NAME, and you can test
"\C-xq": "\eb\"\ef\""
$endif
- 'variable'
+ ‘variable’
The VARIABLE construct provides simple equality tests for
Readline variables and values. The permitted comparison
- operators are '=', '==', and '!='. The variable name must be
+ operators are ‘=’, ‘==’, and ‘!=’. The variable name must be
separated from the comparison operator by whitespace; the
operator may be separated from the value on the right hand
- side by whitespace. Both string and boolean variables may be
+ side by whitespace. String and boolean variables may be
tested. Boolean variables must be tested against the values
ON and OFF. The following example is equivalent to the
- 'mode=emacs' test described above:
+ ‘mode=emacs’ test described above:
$if editing-mode == emacs
set show-mode-in-prompt on
$endif
-'$endif'
- This command, as seen in the previous example, terminates an '$if'
- command.
-
-'$else'
- Commands in this branch of the '$if' directive are executed if the
+‘$else’
+ Commands in this branch of the ‘$if’ directive are executed if the
test fails.
-'$include'
+‘$endif’
+ This command, as seen in the previous example, terminates an ‘$if’
+ command.
+
+‘$include’
This directive takes a single filename as an argument and reads
- commands and bindings from that file. For example, the following
- directive reads from '/etc/inputrc':
+ commands and key bindings from that file. For example, the
+ following directive reads from ‘/etc/inputrc’:
$include /etc/inputrc
\1f
# rather than as meta-prefixed characters
set output-meta on
- # if there are more than 150 possible completions for
- # a word, ask the user if he wants to see all of them
+ # if there are 150 or more possible completions for a word,
+ # ask whether or not the user wants to see all of them
set completion-query-items 150
# For FTP
sequences. Command names without an accompanying key sequence are
unbound by default.
- In the following descriptions, "point" refers to the current cursor
-position, and "mark" refers to a cursor position saved by the 'set-mark'
+ In the following descriptions, “point” refers to the current cursor
+position, and “mark” refers to a cursor position saved by the ‘set-mark’
command. The text between the point and mark is referred to as the
-"region".
+“region”. Readline has the concept of an _active region_: when the
+region is active, Readline redisplay uses the value of the
+‘active-region-start-color’ variable to denote the region. Several
+commands set the region to active; those are noted below.
\1f
File: rluserman.info, Node: Commands For Moving, Next: Commands For History, Up: Bindable Readline Commands
1.4.1 Commands For Moving
-------------------------
-'beginning-of-line (C-a)'
- Move to the start of the current line.
+‘beginning-of-line (C-a)’
+ Move to the start of the current line. This may also be bound to
+ the Home key on some keyboards.
-'end-of-line (C-e)'
- Move to the end of the line.
+‘end-of-line (C-e)’
+ Move to the end of the line. This may also be bound to the End key
+ on some keyboards.
-'forward-char (C-f)'
+‘forward-char (C-f)’
Move forward a character.
-'backward-char (C-b)'
+‘backward-char (C-b)’
Move back a character.
-'forward-word (M-f)'
+‘forward-word (M-f)’
Move forward to the end of the next word. Words are composed of
letters and digits.
-'backward-word (M-b)'
+‘backward-word (M-b)’
Move back to the start of the current or previous word. Words are
composed of letters and digits.
-'previous-screen-line ()'
+‘previous-screen-line ()’
Attempt to move point to the same physical screen column on the
previous physical screen line. This will not have the desired
effect if the current Readline line does not take up more than one
physical line or if point is not greater than the length of the
prompt plus the screen width.
-'next-screen-line ()'
+‘next-screen-line ()’
Attempt to move point to the same physical screen column on the
next physical screen line. This will not have the desired effect
if the current Readline line does not take up more than one
physical line or if the length of the current Readline line is not
greater than the length of the prompt plus the screen width.
-'clear-screen (C-l)'
- Clear the screen and redraw the current line, leaving the current
+‘clear-display (M-C-l)’
+ Clear the screen and, if possible, the terminal's scrollback
+ buffer, then redraw the current line, leaving the current line at
+ the top of the screen.
+
+‘clear-screen (C-l)’
+ Clear the screen, then redraw the current line, leaving the current
line at the top of the screen.
-'redraw-current-line ()'
+‘redraw-current-line ()’
Refresh the current line. By default, this is unbound.
\1f
1.4.2 Commands For Manipulating The History
-------------------------------------------
-'accept-line (Newline or Return)'
+‘accept-line (Newline or Return)’
Accept the line regardless of where the cursor is. If this line is
- non-empty, it may be added to the history list for future recall
- with 'add_history()'. If this line is a modified history line, the
- history line is restored to its original state.
+ non-empty, you can add it to the history list using
+ ‘add_history()’. If this line is a modified history line, then
+ restore the history line to its original state.
-'previous-history (C-p)'
+‘previous-history (C-p)’
Move 'back' through the history list, fetching the previous
command.
-'next-history (C-n)'
+‘next-history (C-n)’
Move 'forward' through the history list, fetching the next command.
-'beginning-of-history (M-<)'
+‘beginning-of-history (M-<)’
Move to the first line in the history.
-'end-of-history (M->)'
+‘end-of-history (M->)’
Move to the end of the input history, i.e., the line currently
being entered.
-'reverse-search-history (C-r)'
+‘reverse-search-history (C-r)’
Search backward starting at the current line and moving 'up'
through the history as necessary. This is an incremental search.
+ This command sets the region to the matched text and activates the
+ region.
-'forward-search-history (C-s)'
+‘forward-search-history (C-s)’
Search forward starting at the current line and moving 'down'
through the history as necessary. This is an incremental search.
+ This command sets the region to the matched text and activates the
+ region.
-'non-incremental-reverse-search-history (M-p)'
+‘non-incremental-reverse-search-history (M-p)’
Search backward starting at the current line and moving 'up'
through the history as necessary using a non-incremental search for
a string supplied by the user. The search string may match
anywhere in a history line.
-'non-incremental-forward-search-history (M-n)'
+‘non-incremental-forward-search-history (M-n)’
Search forward starting at the current line and moving 'down'
through the history as necessary using a non-incremental search for
a string supplied by the user. The search string may match
anywhere in a history line.
-'history-search-forward ()'
- Search forward through the history for the string of characters
+‘history-search-backward ()’
+ Search backward through the history for the string of characters
between the start of the current line and the point. The search
string must match at the beginning of a history line. This is a
- non-incremental search. By default, this command is unbound.
+ non-incremental search. By default, this command is unbound, but
+ may be bound to the Page Down key on some keyboards.
-'history-search-backward ()'
- Search backward through the history for the string of characters
+‘history-search-forward ()’
+ Search forward through the history for the string of characters
between the start of the current line and the point. The search
string must match at the beginning of a history line. This is a
- non-incremental search. By default, this command is unbound.
+ non-incremental search. By default, this command is unbound, but
+ may be bound to the Page Up key on some keyboards.
-'history-substring-search-forward ()'
- Search forward through the history for the string of characters
+‘history-substring-search-backward ()’
+ Search backward through the history for the string of characters
between the start of the current line and the point. The search
string may match anywhere in a history line. This is a
non-incremental search. By default, this command is unbound.
-'history-substring-search-backward ()'
- Search backward through the history for the string of characters
+‘history-substring-search-forward ()’
+ Search forward through the history for the string of characters
between the start of the current line and the point. The search
string may match anywhere in a history line. This is a
non-incremental search. By default, this command is unbound.
-'yank-nth-arg (M-C-y)'
+‘yank-nth-arg (M-C-y)’
Insert the first argument to the previous command (usually the
second word on the previous line) at point. With an argument N,
insert the Nth word from the previous command (the words in the
previous command begin with word 0). A negative argument inserts
the Nth word from the end of the previous command. Once the
- argument N is computed, the argument is extracted as if the '!N'
- history expansion had been specified.
+ argument N is computed, this uses the history expansion facilities
+ to extract the Nth word, as if the ‘!N’ history expansion had been
+ specified.
-'yank-last-arg (M-. or M-_)'
+‘yank-last-arg (M-. or M-_)’
Insert last argument to the previous command (the last word of the
previous history entry). With a numeric argument, behave exactly
- like 'yank-nth-arg'. Successive calls to 'yank-last-arg' move back
+ like ‘yank-nth-arg’. Successive calls to ‘yank-last-arg’ move back
through the history list, inserting the last word (or the word
specified by the argument to the first call) of each line in turn.
Any numeric argument supplied to these successive calls determines
the direction to move through the history. A negative argument
- switches the direction through the history (back or forward). The
- history expansion facilities are used to extract the last argument,
- as if the '!$' history expansion had been specified.
+ switches the direction through the history (back or forward). This
+ uses the history expansion facilities to extract the last word, as
+ if the ‘!$’ history expansion had been specified.
+
+‘operate-and-get-next (C-o)’
+ Accept the current line for return to the calling application as if
+ a newline had been entered, and fetch the next line relative to the
+ current line from the history for editing. A numeric argument, if
+ supplied, specifies the history entry to use instead of the current
+ line.
+
+‘fetch-history ()’
+ With a numeric argument, fetch that entry from the history list and
+ make it the current line. Without an argument, move back to the
+ first entry in the history list.
\1f
File: rluserman.info, Node: Commands For Text, Next: Commands For Killing, Prev: Commands For History, Up: Bindable Readline Commands
1.4.3 Commands For Changing Text
--------------------------------
-'end-of-file (usually C-d)'
+‘end-of-file (usually C-d)’
The character indicating end-of-file as set, for example, by
- 'stty'. If this character is read when there are no characters on
+ ‘stty’. If this character is read when there are no characters on
the line, and point is at the beginning of the line, Readline
interprets it as the end of input and returns EOF.
-'delete-char (C-d)'
+‘delete-char (C-d)’
Delete the character at point. If this function is bound to the
- same character as the tty EOF character, as 'C-d' commonly is, see
+ same character as the tty EOF character, as ‘C-d’ commonly is, see
above for the effects.
-'backward-delete-char (Rubout)'
+‘backward-delete-char (Rubout)’
Delete the character behind the cursor. A numeric argument means
- to kill the characters instead of deleting them.
+ to kill the characters, saving them on the kill ring, instead of
+ deleting them.
-'forward-backward-delete-char ()'
+‘forward-backward-delete-char ()’
Delete the character under the cursor, unless the cursor is at the
end of the line, in which case the character behind the cursor is
deleted. By default, this is not bound to a key.
-'quoted-insert (C-q or C-v)'
+‘quoted-insert (C-q or C-v)’
Add the next character typed to the line verbatim. This is how to
- insert key sequences like 'C-q', for example.
+ insert key sequences like ‘C-q’, for example.
-'tab-insert (M-<TAB>)'
+‘tab-insert (M-<TAB>)’
Insert a tab character.
-'self-insert (a, b, A, 1, !, ...)'
- Insert yourself.
+‘self-insert (a, b, A, 1, !, ...)’
+ Insert the character typed.
-'bracketed-paste-begin ()'
+‘bracketed-paste-begin ()’
This function is intended to be bound to the "bracketed paste"
escape sequence sent by some terminals, and such a binding is
assigned by default. It allows Readline to insert the pasted text
as a single unit without treating each character as if it had been
read from the keyboard. The characters are inserted as if each one
- was bound to 'self-insert') instead of executing any editing
+ was bound to ‘self-insert’ instead of executing any editing
commands.
-'transpose-chars (C-t)'
+ Bracketed paste sets the region (the characters between point and
+ the mark) to the inserted text. It sets the _active region_.
+
+‘transpose-chars (C-t)’
Drag the character before the cursor forward over the character at
the cursor, moving the cursor forward as well. If the insertion
point is at the end of the line, then this transposes the last two
characters of the line. Negative arguments have no effect.
-'transpose-words (M-t)'
+‘transpose-words (M-t)’
Drag the word before point past the word after point, moving point
past that word as well. If the insertion point is at the end of
the line, this transposes the last two words on the line.
-'upcase-word (M-u)'
+‘upcase-word (M-u)’
Uppercase the current (or following) word. With a negative
argument, uppercase the previous word, but do not move the cursor.
-'downcase-word (M-l)'
+‘downcase-word (M-l)’
Lowercase the current (or following) word. With a negative
argument, lowercase the previous word, but do not move the cursor.
-'capitalize-word (M-c)'
+‘capitalize-word (M-c)’
Capitalize the current (or following) word. With a negative
argument, capitalize the previous word, but do not move the cursor.
-'overwrite-mode ()'
+‘overwrite-mode ()’
Toggle overwrite mode. With an explicit positive numeric argument,
switches to overwrite mode. With an explicit non-positive numeric
argument, switches to insert mode. This command affects only
- 'emacs' mode; 'vi' mode does overwrite differently. Each call to
- 'readline()' starts in insert mode.
+ ‘emacs’ mode; ‘vi’ mode does overwrite differently. Each call to
+ ‘readline()’ starts in insert mode.
- In overwrite mode, characters bound to 'self-insert' replace the
+ In overwrite mode, characters bound to ‘self-insert’ replace the
text at point rather than pushing the text to the right.
- Characters bound to 'backward-delete-char' replace the character
+ Characters bound to ‘backward-delete-char’ replace the character
before point with a space.
- By default, this command is unbound.
+ By default, this command is unbound, but may be bound to the Insert
+ key on some keyboards.
\1f
File: rluserman.info, Node: Commands For Killing, Next: Numeric Arguments, Prev: Commands For Text, Up: Bindable Readline Commands
1.4.4 Killing And Yanking
-------------------------
-'kill-line (C-k)'
- Kill the text from point to the end of the line.
+‘kill-line (C-k)’
+ Kill the text from point to the end of the current line. With a
+ negative numeric argument, kill backward from the cursor to the
+ beginning of the line.
-'backward-kill-line (C-x Rubout)'
+‘backward-kill-line (C-x Rubout)’
Kill backward from the cursor to the beginning of the current line.
+ With a negative numeric argument, kill forward from the cursor to
+ the end of the line.
-'unix-line-discard (C-u)'
+‘unix-line-discard (C-u)’
Kill backward from the cursor to the beginning of the current line.
-'kill-whole-line ()'
+‘kill-whole-line ()’
Kill all characters on the current line, no matter where point is.
By default, this is unbound.
-'kill-word (M-d)'
+‘kill-word (M-d)’
Kill from point to the end of the current word, or if between
words, to the end of the next word. Word boundaries are the same
- as 'forward-word'.
+ as ‘forward-word’.
-'backward-kill-word (M-<DEL>)'
+‘backward-kill-word (M-<DEL>)’
Kill the word behind point. Word boundaries are the same as
- 'backward-word'.
+ ‘backward-word’.
-'unix-word-rubout (C-w)'
- Kill the word behind point, using white space as a word boundary.
- The killed text is saved on the kill-ring.
+‘unix-word-rubout (C-w)’
+ Kill the word behind point, using white space as a word boundary,
+ saving the killed text on the kill-ring.
-'unix-filename-rubout ()'
+‘unix-filename-rubout ()’
Kill the word behind point, using white space and the slash
- character as the word boundaries. The killed text is saved on the
+ character as the word boundaries, saving the killed text on the
kill-ring.
-'delete-horizontal-space ()'
+‘delete-horizontal-space ()’
Delete all spaces and tabs around point. By default, this is
unbound.
-'kill-region ()'
+‘kill-region ()’
Kill the text in the current region. By default, this command is
unbound.
-'copy-region-as-kill ()'
+‘copy-region-as-kill ()’
Copy the text in the region to the kill buffer, so it can be yanked
right away. By default, this command is unbound.
-'copy-backward-word ()'
+‘copy-backward-word ()’
Copy the word before point to the kill buffer. The word boundaries
- are the same as 'backward-word'. By default, this command is
+ are the same as ‘backward-word’. By default, this command is
unbound.
-'copy-forward-word ()'
+‘copy-forward-word ()’
Copy the word following point to the kill buffer. The word
- boundaries are the same as 'forward-word'. By default, this
+ boundaries are the same as ‘forward-word’. By default, this
command is unbound.
-'yank (C-y)'
+‘yank (C-y)’
Yank the top of the kill ring into the buffer at point.
-'yank-pop (M-y)'
+‘yank-pop (M-y)’
Rotate the kill-ring, and yank the new top. You can only do this
- if the prior command is 'yank' or 'yank-pop'.
+ if the prior command is ‘yank’ or ‘yank-pop’.
\1f
File: rluserman.info, Node: Numeric Arguments, Next: Commands For Completion, Prev: Commands For Killing, Up: Bindable Readline Commands
1.4.5 Specifying Numeric Arguments
----------------------------------
-'digit-argument (M-0, M-1, ... M--)'
+‘digit-argument (M-0, M-1, ... M--)’
Add this digit to the argument already accumulating, or start a new
- argument. 'M--' starts a negative argument.
+ argument. ‘M--’ starts a negative argument.
-'universal-argument ()'
+‘universal-argument ()’
This is another way to specify an argument. If this command is
followed by one or more digits, optionally with a leading minus
sign, those digits define the argument. If the command is followed
- by digits, executing 'universal-argument' again ends the numeric
+ by digits, executing ‘universal-argument’ again ends the numeric
argument, but is otherwise ignored. As a special case, if this
command is immediately followed by a character that is neither a
digit nor minus sign, the argument count for the next command is
1.4.6 Letting Readline Type For You
-----------------------------------
-'complete (<TAB>)'
+‘complete (<TAB>)’
Attempt to perform completion on the text before point. The actual
completion performed is application-specific. The default is
filename completion.
-'possible-completions (M-?)'
+‘possible-completions (M-?)’
List the possible completions of the text before point. When
displaying completions, Readline sets the number of columns used
- for display to the value of 'completion-display-width', the value
- of the environment variable 'COLUMNS', or the screen width, in that
+ for display to the value of ‘completion-display-width’, the value
+ of the environment variable ‘COLUMNS’, or the screen width, in that
order.
-'insert-completions (M-*)'
+‘insert-completions (M-*)’
Insert all completions of the text before point that would have
- been generated by 'possible-completions'.
+ been generated by ‘possible-completions’, separated by a space.
-'menu-complete ()'
- Similar to 'complete', but replaces the word to be completed with a
- single match from the list of possible completions. Repeated
- execution of 'menu-complete' steps through the list of possible
+‘menu-complete ()’
+ Similar to ‘complete’, but replaces the word to be completed with a
+ single match from the list of possible completions. Repeatedly
+ executing ‘menu-complete’ steps through the list of possible
completions, inserting each match in turn. At the end of the list
- of completions, the bell is rung (subject to the setting of
- 'bell-style') and the original text is restored. An argument of N
- moves N positions forward in the list of matches; a negative
- argument may be used to move backward through the list. This
- command is intended to be bound to <TAB>, but is unbound by
- default.
-
-'menu-complete-backward ()'
- Identical to 'menu-complete', but moves backward through the list
- of possible completions, as if 'menu-complete' had been given a
- negative argument.
-
-'delete-char-or-list ()'
+ of completions, ‘menu-complete’ rings the bell (subject to the
+ setting of ‘bell-style’) and restores the original text. An
+ argument of N moves N positions forward in the list of matches; a
+ negative argument moves backward through the list. This command is
+ intended to be bound to <TAB>, but is unbound by default.
+
+‘menu-complete-backward ()’
+ Identical to ‘menu-complete’, but moves backward through the list
+ of possible completions, as if ‘menu-complete’ had been given a
+ negative argument. This command is unbound by default.
+
+‘delete-char-or-list ()’
Deletes the character under the cursor if not at the beginning or
- end of the line (like 'delete-char'). If at the end of the line,
- behaves identically to 'possible-completions'. This command is
+ end of the line (like ‘delete-char’). At the end of the line, it
+ behaves identically to ‘possible-completions’. This command is
unbound by default.
\1f
1.4.7 Keyboard Macros
---------------------
-'start-kbd-macro (C-x ()'
+‘start-kbd-macro (C-x ()’
Begin saving the characters typed into the current keyboard macro.
-'end-kbd-macro (C-x ))'
+‘end-kbd-macro (C-x ))’
Stop saving the characters typed into the current keyboard macro
and save the definition.
-'call-last-kbd-macro (C-x e)'
+‘call-last-kbd-macro (C-x e)’
Re-execute the last keyboard macro defined, by making the
characters in the macro appear as if typed at the keyboard.
-'print-last-kbd-macro ()'
- Print the last keboard macro defined in a format suitable for the
+‘print-last-kbd-macro ()’
+ Print the last keyboard macro defined in a format suitable for the
INPUTRC file.
\1f
1.4.8 Some Miscellaneous Commands
---------------------------------
-'re-read-init-file (C-x C-r)'
+‘re-read-init-file (C-x C-r)’
Read in the contents of the INPUTRC file, and incorporate any
bindings or variable assignments found there.
-'abort (C-g)'
+‘abort (C-g)’
Abort the current editing command and ring the terminal's bell
- (subject to the setting of 'bell-style').
+ (subject to the setting of ‘bell-style’).
-'do-lowercase-version (M-A, M-B, M-X, ...)'
+‘do-lowercase-version (M-A, M-B, M-X, ...)’
If the metafied character X is upper case, run the command that is
bound to the corresponding metafied lower case character. The
behavior is undefined if X is already lower case.
-'prefix-meta (<ESC>)'
- Metafy the next character typed. This is for keyboards without a
- meta key. Typing '<ESC> f' is equivalent to typing 'M-f'.
+‘prefix-meta (<ESC>)’
+ Metafy the next character typed. Typing ‘<ESC> f’ is equivalent to
+ typing ‘M-f’.
-'undo (C-_ or C-x C-u)'
+‘undo (C-_ or C-x C-u)’
Incremental undo, separately remembered for each line.
-'revert-line (M-r)'
+‘revert-line (M-r)’
Undo all changes made to this line. This is like executing the
- 'undo' command enough times to get back to the beginning.
+ ‘undo’ command enough times to get back to the initial state.
-'tilde-expand (M-~)'
+‘tilde-expand (M-~)’
Perform tilde expansion on the current word.
-'set-mark (C-@)'
- Set the mark to the point. If a numeric argument is supplied, the
- mark is set to that position.
+‘set-mark (C-@)’
+ Set the mark to the point. If a numeric argument is supplied, set
+ the mark to that position.
-'exchange-point-and-mark (C-x C-x)'
- Swap the point with the mark. The current cursor position is set
- to the saved position, and the old cursor position is saved as the
- mark.
+‘exchange-point-and-mark (C-x C-x)’
+ Swap the point with the mark. Set the current cursor position to
+ the saved position, then set the mark to the old cursor position.
-'character-search (C-])'
- A character is read and point is moved to the next occurrence of
- that character. A negative count searches for previous
- occurrences.
+‘character-search (C-])’
+ Read a character and move point to the next occurrence of that
+ character. A negative argument searches for previous occurrences.
-'character-search-backward (M-C-])'
- A character is read and point is moved to the previous occurrence
- of that character. A negative count searches for subsequent
+‘character-search-backward (M-C-])’
+ Read a character and move point to the previous occurrence of that
+ character. A negative argument searches for subsequent
occurrences.
-'skip-csi-sequence ()'
+‘skip-csi-sequence ()’
Read enough characters to consume a multi-key sequence such as
- those defined for keys like Home and End. Such sequences begin
- with a Control Sequence Indicator (CSI), usually ESC-[. If this
- sequence is bound to "\e[", keys producing such sequences will have
- no effect unless explicitly bound to a readline command, instead of
+ those defined for keys like Home and End. CSI sequences begin with
+ a Control Sequence Indicator (CSI), usually ESC-[. If this
+ sequence is bound to "\e[", keys producing CSI sequences will have
+ no effect unless explicitly bound to a Readline command, instead of
inserting stray characters into the editing buffer. This is
unbound by default, but usually bound to ESC-[.
-'insert-comment (M-#)'
- Without a numeric argument, the value of the 'comment-begin'
- variable is inserted at the beginning of the current line. If a
- numeric argument is supplied, this command acts as a toggle: if the
+‘insert-comment (M-#)’
+ Without a numeric argument, insert the value of the ‘comment-begin’
+ variable at the beginning of the current line. If a numeric
+ argument is supplied, this command acts as a toggle: if the
characters at the beginning of the line do not match the value of
- 'comment-begin', the value is inserted, otherwise the characters in
- 'comment-begin' are deleted from the beginning of the line. In
- either case, the line is accepted as if a newline had been typed.
+ ‘comment-begin’, insert the value; otherwise delete the characters
+ in ‘comment-begin’ from the beginning of the line. In either case,
+ the line is accepted as if a newline had been typed.
-'dump-functions ()'
+‘dump-functions ()’
Print all of the functions and their key bindings to the Readline
output stream. If a numeric argument is supplied, the output is
formatted in such a way that it can be made part of an INPUTRC
file. This command is unbound by default.
-'dump-variables ()'
+‘dump-variables ()’
Print all of the settable variables and their values to the
Readline output stream. If a numeric argument is supplied, the
output is formatted in such a way that it can be made part of an
INPUTRC file. This command is unbound by default.
-'dump-macros ()'
+‘dump-macros ()’
Print all of the Readline key sequences bound to macros and the
- strings they output. If a numeric argument is supplied, the output
- is formatted in such a way that it can be made part of an INPUTRC
- file. This command is unbound by default.
+ strings they output to the Readline output stream. If a numeric
+ argument is supplied, the output is formatted in such a way that it
+ can be made part of an INPUTRC file. This command is unbound by
+ default.
+
+‘execute-named-command (M-x)’
+ Read a bindable readline command name from the input and execute
+ the function to which it's bound, as if the key sequence to which
+ it was bound appeared in the input. If this function is supplied
+ with a numeric argument, it passes that argument to the function it
+ executes.
-'emacs-editing-mode (C-e)'
- When in 'vi' command mode, this causes a switch to 'emacs' editing
+‘emacs-editing-mode (C-e)’
+ When in ‘vi’ command mode, this causes a switch to ‘emacs’ editing
mode.
-'vi-editing-mode (M-C-j)'
- When in 'emacs' editing mode, this causes a switch to 'vi' editing
+‘vi-editing-mode (M-C-j)’
+ When in ‘emacs’ editing mode, this causes a switch to ‘vi’ editing
mode.
\1f
1.5 Readline vi Mode
====================
-While the Readline library does not have a full set of 'vi' editing
+While the Readline library does not have a full set of ‘vi’ editing
functions, it does contain enough to allow simple editing of the line.
-The Readline 'vi' mode behaves as specified in the POSIX standard.
+The Readline ‘vi’ mode behaves as specified in the ‘sh’ description in
+the POSIX standard.
- In order to switch interactively between 'emacs' and 'vi' editing
-modes, use the command 'M-C-j' (bound to emacs-editing-mode when in 'vi'
-mode and to vi-editing-mode in 'emacs' mode). The Readline default is
-'emacs' mode.
+ In order to switch interactively between ‘emacs’ and ‘vi’ editing
+modes, use the command ‘M-C-j’ (bound to emacs-editing-mode when in ‘vi’
+mode and to vi-editing-mode in ‘emacs’ mode). The Readline default is
+‘emacs’ mode.
- When you enter a line in 'vi' mode, you are already placed in
-'insertion' mode, as if you had typed an 'i'. Pressing <ESC> switches
+ When you enter a line in ‘vi’ mode, you are already placed in
+'insertion' mode, as if you had typed an ‘i’. Pressing <ESC> switches
you into 'command' mode, where you can edit the text of the line with
-the standard 'vi' movement keys, move to previous history lines with 'k'
-and subsequent lines with 'j', and so forth.
+the standard ‘vi’ movement keys, move to previous history lines with ‘k’
+and subsequent lines with ‘j’, and so forth.
\1f
File: rluserman.info, Node: GNU Free Documentation License, Prev: Command Line Editing, Up: Top
Version 1.3, 3 November 2008
- Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
+ Copyright © 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
<http://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
0. PREAMBLE
The purpose of this License is to make a manual, textbook, or other
- functional and useful document "free" in the sense of freedom: to
+ functional and useful document “free” in the sense of freedom: to
assure everyone the effective freedom to copy and redistribute it,
with or without modifying it, either commercially or
noncommercially. Secondarily, this License preserves for the
\1f
Tag Table:
-Node: Top\7f908
-Node: Command Line Editing\7f1430
-Node: Introduction and Notation\7f2084
-Node: Readline Interaction\7f3709
-Node: Readline Bare Essentials\7f4902
-Node: Readline Movement Commands\7f6687
-Node: Readline Killing Commands\7f7649
-Node: Readline Arguments\7f9569
-Node: Searching\7f10615
-Node: Readline Init File\7f12769
-Node: Readline Init File Syntax\7f13924
-Node: Conditional Init Constructs\7f34016
-Node: Sample Init File\7f38214
-Node: Bindable Readline Commands\7f41333
-Node: Commands For Moving\7f42389
-Node: Commands For History\7f43957
-Node: Commands For Text\7f48223
-Node: Commands For Killing\7f51667
-Node: Numeric Arguments\7f53835
-Node: Commands For Completion\7f54976
-Node: Keyboard Macros\7f56946
-Node: Miscellaneous Commands\7f57635
-Node: Readline vi Mode\7f61558
-Node: GNU Free Documentation License\7f62472
+Node: Top\7f906
+Node: Command Line Editing\7f1428
+Node: Introduction and Notation\7f2082
+Node: Readline Interaction\7f4437
+Node: Readline Bare Essentials\7f5630
+Node: Readline Movement Commands\7f7443
+Node: Readline Killing Commands\7f8444
+Node: Readline Arguments\7f10472
+Node: Searching\7f11534
+Node: Readline Init File\7f13766
+Node: Readline Init File Syntax\7f14965
+Node: Conditional Init Constructs\7f41331
+Node: Sample Init File\7f45721
+Node: Bindable Readline Commands\7f48847
+Node: Commands For Moving\7f50166
+Node: Commands For History\7f52097
+Node: Commands For Text\7f57303
+Node: Commands For Killing\7f61083
+Node: Numeric Arguments\7f63540
+Node: Commands For Completion\7f64697
+Node: Keyboard Macros\7f66785
+Node: Miscellaneous Commands\7f67491
+Node: Readline vi Mode\7f71816
+Node: GNU Free Documentation License\7f72810
\1f
End Tag Table
+
+\1f
+Local Variables:
+coding: utf-8
+End:
%!PS-Adobe-2.0
-%%Creator: dvips(k) 5.997 Copyright 2017 Radical Eye Software
+%%Creator: dvips(k) 2024.1 (TeX Live 2024) Copyright 2024 Radical Eye Software
%%Title: rluserman.dvi
-%%CreationDate: Tue Jan 2 15:55:40 2018
-%%Pages: 34
+%%CreationDate: Fri Oct 11 20:56:17 2024
+%%Pages: 37
%%PageOrder: Ascend
%%BoundingBox: 0 0 596 842
%%DocumentFonts: CMBX12 CMR10 CMTT10 CMSY10 CMMI12 CMMI10 CMCSC10
-%%+ CMSLTT10 CMTI10 CMSL10 CMTT9
+%%+ CMSLTT10 CMSL10 CMTI10 CMTT9
%%DocumentPaperSizes: a4
%%EndComments
%DVIPSWebPage: (www.radicaleye.com)
%DVIPSCommandLine: dvips -D 300 -o rluserman.ps rluserman.dvi
%DVIPSParameters: dpi=300
-%DVIPSSource: TeX output 2018.01.02:1055
+%DVIPSSource: TeX output 2024.10.11:1656
%%BeginProcSet: tex.pro 0 0
%!
/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
dup 74 /J put
dup 76 /L put
dup 77 /M put
+dup 83 /S put
dup 92 /backslash put
dup 95 /underscore put
dup 97 /a put
50578464845B950140ADD91D72D28470A5A5FB134EC52F4DBBB9C50A7523592B
C5BAA056E46F8C004062298BEA010C1CF9F49DEAB58C4D2012E04E630F54C985
328DB2B6FEAC584308D71A9F5FD945A37EA13F3DEB1748320870057A362E70CD
-50C269D32993CE9CD1E8CB35BC6F69E7574F37032219C6E1C960F36932A8A2DB
-BAD87DCC271657EDF942834AD01C0C35437042331634D36C594CCBD796BB1562
-C5AEFD595E35264ABB2ABFEC7A2E066A7A454659804F6CD9DC64DE1112D95B55
-72AE34B6153425A5D15D9F944A3DB6D580C2A01E308E2CDB032F99617A73866D
-F2F2FB6E8617873AC82D4E2224049BC2FEBFE49527DAD70C079B92F08DC30095
-AE63E3E2FA213D52A347347371724EF08B39D7383D27131F75C2211F82C35CDF
-B78708DE910A5ABCA3075D985AB2E2EAEC2BB6159094F0C0C775C25AFF4F507B
-20070C4FB570D5CBCF40C7DE889378A9EE7E38175ABC3D5B047D1DD925990A04
-76EE4083F3CAEB8F1FF3D8FB0210C93738D68EE884FF86416A2EEF2356DB80C8
-39749F31D1D3751E91D84246B56D759969A6D52832891375DC26E92B7DC756A1
-A02F951C898CF665AB0C2C6D5B455FCA6D20E7F998D2523112A08E8EFE1B5DBE
-940EEB362AEE4EF83237348F7F0C08B490D125BD90107A035A8F5330F0F296F3
-DF4579D7B4A947CA1EC8975B1F6B7E3B077A75F2F42DE456E0D540CDFDECC95D
-F5B3FBB43590ED54FD98CBFD3A20C42C5B6B5ED2A5F0D4F06414757F992487C9
-83CCE2B4BA91825D14090D1EFC53596F92757BE8DCCB7EFA24C3A3D52DB61312
-C04533EE4424F37EE45DC6BDB79519A62454194332562388F3BF0246B40E9108
-7B64FC57054131DA8A4699CF65BFBB862D05519755E207BD0C5E4FF56AC2BAEA
-5D4FC6443069F6314E124BC02D210B8726D3ADF2EDB35E7CB1F92BB412C2AF7D
-547A1E309A63114B38B352702F7E48B931550F79C2487152A5A5CBD19C429BF1
-747D88BF1EC932CBC93F006EC34F9197CB9FD486F42A0D5D72AFBF21B9BD131A
-C89A979FA65013B3CDDA5D164DE3BB762BBB7A4D0DC3ABF3CF906549E2F76C17
-DF8BDB44689AA9140ABCF001781B8906C2B020EB95FE36B8978FA04BEC5E4D82
-B4A537520BDA62736EA2CD9B1EE4A126D7A76BE51C96AC556AE5BFF978C1598B
-6CA42A76139448EA4C8AC849AA3AD204D158854FAC6D7D43BE038F022460A50C
-1DC2B6932CC3DBCBC1C27390E29A474712004A5EA3E0A3E62786C2487EFA767F
-BCDEEAA4875ECA8A9A7C6F2FD1EB9DB79B7489FA8249D33E38599B948CBB7328
-430476A7489C004F1411BA1D5FCD64D478424920EF72530F3C4CCA9EE495ECCD
-125E4E2BB37BD4D4175950422517021F8EC140BC3B11BAA9E513F3DAB63CD245
-27A0A6F69A964E9BFAF575B5E36556A15B2F2FF787DFCC1EE704994A52F2E726
-958538808EE9BCC31BD5E126F848FFE5CDA11FD3F0377D9B814F515750374452
-D7A4BEE6B14BF4C1A75B2BA8083ED62E61155F1B396D960066D0A35D7CF19A5E
-C7856AEA2C505E68C8A0736CC1675F740A662AA8BFFFFE507465E7ECF934DB6F
-75004934154AA82EA699EABE6318E7E5B51DE3387AEBF11E41A413D986947FD8
-23ACB99110C93391DA8FD87341F337F1FBDAFD306B4B08FC69EFF21A6F581420
-893E94073A20778ACCDB074613F7FD68999BCA1F03A0E298CCE83D3D8C25E1DD
-8C25F57C440C5580C87C67C8F391C900F6615ECBA0AA505333A0E00F229F03B8
-69EF147556CCBD10694CB23EEA74CCEE50CA5E8F3DCC8225B950B51C7F0AA44B
-C1200E688A8A7CCB8CD763390992ECCE85F4855DA86ECFD21F57F12CEC09A5A0
-0A50B388C378EEB1C4BBC2BC19ADE95C3CE8A6CD901EEAA8DC6F62BD33A18368
-1B0C445FF57CAA3F690D872D42FE746D3AC94DC889F4AA191E824D66E8ADC3ED
-D7F7507F1DFD560D3D339C528714AEC12609448660243A1C24C8A31FEAA55E96
-5512E63BFF9CB87AA8805D066E71C70DC175FA3449879A44A1A6343561CBBF33
-B6465433C3C99BD06F2FB6A0CB4AE950A3F2F428AA2E5E344439E77B623E959C
-27CBD22A9B092B2604EE92524DF014DAD590A4F474484C2BA41343306A620019
-15B96AF752C312187FF3C1555B5142354F2E947391A96E64DFEEA65D99FCD2B6
-3BC07AB8D7709033C83DE8C9E18BF1490BCCF65D3E1CCD62FC09F7DCBD0A31EF
-70F21BC631CF5F4C112B64B4CA88662103C4343B55FDA36B0F78B6BE583E3134
-464FA2B9C8A2C5BA01338C0A0AEA7DC2CCD0D0E7A02C835C1072830582825BCC
-E7F31BD6C7A20413F5D21C054CD6389DE00C846AE1B558EAFF7E85D07C73C4D9
-CD9A1F33E0328C3B9340DC87FE981D655905D4E2341966C80787F35EAB88792A
-B2F35D91BDAE613DECD5DA192ED10FF454B0A754A14A565DCF8AC760007A333E
-413B53F179AFB886747C2460AADF6FD1DC09012A2ADFFA6FE5228177535E91DE
-71F9C9D82F84CA13A2F55E9EA931B1E89213EE9817DBB433A7EF0316E0624C1D
-45965146A28962980436F050A1E7EB35D18BB8BF8B82F97D64C827F68374CFC0
-E4DB0FFF944DDC0279F2E02108815F40E04EFC82368D19B89F357138F65EF9CA
-878AC45EF423580843F481F1394D5DEE995E0DDB18E2B5E2D04A463672BFFE79
-BB6D9957D3C2BA22DB79CD75DF28B99E6473FC222C6722B9C877D097BFB29C6D
-E5444CFD34880261E7008A372F128BE5CEE9D057486C1AD98E7AE24292D12231
-CCFE1B54DB8623BF68DBECAEC105E446891BF4473765DCCA7EFDA9FE6DF8E6D4
-90C70A79B1AF7AFE9AC5CBA07D0B839AAC2EA62842FEC9117959B10530C8A76E
-85F59E6BF476A0660025900EFD8D714A018AB06240808CFFE5A3766818603531
-AF3FA35AD28CA2C9BA31A2F42FB80BC1ECE71EFE2CD184B4FDC5F76AC2F549FF
-33AC81C11411C47D4857E5E6DB9204AEA0F7545ADAEA22BE42CC3BA7EA3F8B90
-C5FEC359641487D93C52D78CE25535A2A686DD4764C072FA8A56B982A3A7787A
-F124475DD5C2754430C7EC3527D81C272FB7AFEDC6F79E1988AF9401F2B989A8
-CFE1BD96B21D817BBC93BF77B99C8E008E7CC2E34F0AAF20AE88FFC0BC6C3721
-485DD1F25103245E854AB2B60226693E0AFA3EAE85CA52BD938BF31ABFEBEC6F
-4079449F99B5EF0A46E77B6254D4FAAE33FF8B2AA3469F0F0DD625BC4FFD004E
-E6C301A8052043E22ED0FA663364CC9200ACE4CDADCFBD28B721FB43EA7A3B6B
-F6112C35C224543482A7564D62A4A8F15FE329BBF3934DF9345320561E88CBDA
-1C0BF61D400C1539818D2BE38165B6439EA9B45CD0A686C7CF1310604309DE5B
-22987BC91A8E913F6EBAF74C65E8A546D876E46A50BB9A3420D5BE001E0CB34A
-A143776196BF8167006A1052A54001134D539870CECFFD45B6E37D5EF5A9878D
-2A2BB28710DD767C746767498AB23FBDD80706727CF0F556DF7A47A90DE30E5C
-A81522D5EC8C478BB58ACD1D1F0139D4C3561DB574AA8B1FBF0AB0A001FF78E3
-2A646659407760996E97CE00295CDA398DC0E8374B6A13C3EB2BE4226F01E76B
-A932DDAFD90D0FB739B9EDFB9A2472D6424A45D1A698D70766469EBFD9957CF1
-511F6BC41FB43B9517AADD5DF7997A4A8A8F3A5103BF6730B81845F20D160DC0
-E5AD923D9E24AA7DC293E45FBF7422B952A91A97139B15235D29CC52C5084F01
-DE89D2F11E7283A60E4688B54191DDC1159998D10215FE53FD89C87CE9D19041
-1F1E73F063436E786959943B496172A1C497DC002E00B29A4F752CA28BAC5434
-A98F9438064838B0D6252A05052EC8871CEF9FEF05A07B1E401E49324D463E41
-6B7DEBD3B405C9DC5953B93E48162D93438237F11ABE83189F9C1FE70E1A56A4
-CF539F7E9BA6B2B35BEB1586F59897F6E64340B88CA079DFDD1E987198604D2C
-3EB5C8178AAEB19B8D2840F0EF36CCEC7D25080CD1E0BD2B3317603E86FFDC4B
-A453AE086CE8AFB093D57733AA40977E9C8D33E3C87DE2D4C0522C40AF2C01C5
-2A7B86C2571F9B67AD85B35EC83224029832D2ADCE65E37748CE08A600641E03
-6BFCF2F024ECDB4AC2C4AFC4987D01C8F8E74715567F7116597A4318331A35E0
-7BB15E134CD721CBF49210AC06D161E7FE9146D43CB1181F464C7D3BB0BB40EA
-D19E1C33D6D9924AB13EE6C31428D6CDD9AEEBAE6510CDA14F23159CCD725A3E
-1F97ED8DCB17A10783B8CDC9315FC86703FAB6A70DF55E0AB8B4C24862CDCF11
-5F10FAA5E4E54660EA5EA05EAE168E36CA5255DAA0ADF9461176EDC9E3989A84
-0D8D7EAA08F4C766E1A078C3B7D091B9E22A9247A655CE4190A0217ECAF88495
-5DE38DD317E459AC61336D6E403CF8DD2ADD2946F933E1A72C18DFA96EF7C0E4
-0A2D84D3414F3DB23EE3BB5049B174431F4EEA10415D25E41C2094CC2D37C669
-2C46EA4568BB0BC49D1806B98607B8C12AB897E6AF402C6126D4484EB7D9CF81
-B603EECFD92EE41FEBA5F38A93DD24A239BA253BE3776F2368E1664142FF2A53
-5B40B694B20818A2A43226871AF1F7A5A68113CC55AABEAFEEE21E0F4E7641FE
-BB5403E96064650AE2703E43DF01A1594C8FE8646A44323D78E7A5A7CE2C2FAE
-F98F7D9A2CF888DD195FAEBFD1BBB05CE078C6003F9438205F8A3C2977C1827B
-906386BD4B483966FD903432A3A9A54AB0C4E7826CBB97C6808B5B529D5E24CE
-8C76A35EB073FD65944F54D1733FF75FD7F78F524F81CE0D92328FC171AC3DBF
-DB81784F11106137B72B473AB91F40F73B0B410547F5CF6613EEFDBF0F05092C
-3688C3C208E1C9FBF51B505FA0B5F906C5B0A05277772FF9EC806702F0E346BE
-83A535578789733FA68FAD54992C16F3F5F1B7560A729226FDADE4FB96AC09A6
-4C5D79CB60D85AACBCC89C04068803B47CF0FAB92F4267438A2E7CF7CD5C1796
-B07071D9F5A6DB95514B1B60EFE74DD9A028CBCBE850052EC2EFF81C411348E3
-F1ABDF1A4CBBFD7EBECC48F89B18E159DC1CFA0606C3BECE071E4C1759BE2716
-0705460FA9E022BDA1CFB2324C8B51B4E297838F07A5FE8E05FD99600F9E79D5
-490C251772EA34DA6649D421A872CF78A9B55BC0FA47E056A6CA9491ED65E181
-58E2A5EDC038C9BD89B3E975837FDBE2A9AD81F700BD263C25C85873E08DBCE9
-7CC2FBD904038CE72A110493B7ACCA882FD48F54B4E0109B095838F30D80917E
-5C81948F74E7F0D41652480CAB3B24E90570BF861EE2E3A5E1735636C7849C1D
-60FDFAB5386526F7312481A5146C18321F425EC74ED0D778926854C5CA875A57
-9205076C19AB866F5FD0439154484DA165A7CB69746199399E66E662EC2AAF66
-501B6706BA1ACA001546B753B0785AC885A5F13BFB4F76F05AEADA1D290708A8
-22A24FFEEAAAF3C70F89CB52EB655774832296C1FB440B4DC4957C7C32588435
-4FA6775C4BB9070641EB6CB74857A346B38E0F441D61D27489CB0230A23AB63B
-052C8453C969BA44B2B6E700D6286084AFD49A79DA416803200F715CFD9B42A8
-D53BC397262BB8F94C7D0A2D83E1249563098645D0E82959B76E1B05BEB19430
-4080218E58354FAE323F4CB4A3E20B21FF9FB791391956336DF8A6FB49A2DD6F
-A1F06C8C02464E67CDCB9013A4F8229E5A4F136A11AA204001D16C213691EBA2
-2789C03C9122FF21B891569D4D26C2487401AF4C9B310CADE991ADA6D091248F
-30D40520D46944AFEEE4B71D005191AD057AAF2BDCC166F084F29EBF3868C433
-5552509FC469A57DE66010A0538D2CEB7692D1A54B5139D2FC7FCE96C4E1A82F
-578703BE28B82622297BB08F76DB9D8E2A7C4B38C7A819372F72900506CBAD7A
-4B0014B7A9DA2E9AE84B24A83E0BD86D3BD8E0F37F9F0E56D6102C0CAA768E4E
-9BFCDB116780773E04554E67AFA899C9B8AE526257FBD25125EB7644E1AB35FA
-E9D6D716877D2A5E17130740CEFF27133D6A38BD2B2BB7BD17E04C21802EF184
-0AD5C85EDFF4234DE6B89B40F7489B4CD79F54B9B8683E611E372768C55FD93E
-3BFDDBA88B1B60240AC09A05960F9134700A97DE7E6031F5644F83B5A10264D9
-6118C440225E4864A2AFC406BE4A8AF3F6AF8F3B48AF8EEAB503BF7A66C840F9
-825D9D44DEDCD92A11EA70FE597AD39C0CA0F1C6AFD5750D6BCA09D230024DAF
-09F807B23F356891C031E0DAB363DADC371166D728755CA4C375A846C46E7B37
-695A8C66F99132593D066D0757C3E92F64AFF193D211B41405A3E528172C2592
-30A0E1E147E95C002F2BE67E1FAC9C062FBF5182A0726E21CB87BC80E15FA68D
-9E8FEB1888C4717BAA97A135EC4B5234135A64DE68833D1FB55EA7A327C5A9A9
-78312C6B32D66B57A4834D6004D83FDDAB7905D94E0AD3DFAB8A4D5D081F2FD1
-4CEDB8C3D8A344C3596A6E033DB4CC4A2BCA9A86D8858830DD5006D7C7D91F53
-560F76B6B4BAAF3DCEC3704E922E3F32C3A450BCCC92E359265201F07B99BD2C
-24377943614ED7A97E19D988476569CD51B0E85672F4AE6D6D46382A73DA624C
-5188F727DACE6E5BC2F33411206A566B6F830EBE79CC97F295A269141FA8E565
-496EBED5EBDA3E6C7DD9ACDC9AA9864C7F26227F68DAD420BF8AFA428D66F3ED
-3919E517437B7BE7C9550B250E90F7E004B3C3D30D9872B84376C84B913D0032
-9B2280354630E263E101EB02C92FD77A76BAA8CB1C5B5C555C81F6ED6A31B3EC
-356BDF27A16C319DE965D8BE1D654A6E1980C8FC535B72BD951FBED2C6A9FC82
-FA152728191760F9C54E52D900675AE8A88F7867E0A5E5465FC2ABB868B3D227
-8A0DABCA6264CE647623418DC7850FCA18C34AE8532AF543E46B585E20BD1E9A
-E210B1DB301C81537F068B42BDB1B93FB4618B618B34E7D42251DFDF3491472B
-62EE41B9F4C2F1EE43C29AD841A1264285FA4DDFDC07323A24F00EC12627CDCE
-2DB8592A29424150DC72611D88D29267B1F98F386053BD9188CC91FD52876731
-1DE8DF9085F0F49CA5B14089B55E2E9386D59DFA0116C800A5204F6BC0032F6B
-BF15CC4A142729DC002844F5A418C164C1AF0F69353121E4E680199C752AFFF7
-C961E4AD7F5E48212297A346A6FD1E7CA0B7A51670631878D69A60639FB9A150
-30446595791BB1F97919D034BFC08998AE74431E65800A11648D8E5ED18C95C6
-F3F033B3F3E4F7077216D316CA981B5B4EF0C33A7DDB14BF11F496D754D93C6A
-BACDE5D2B6EC1126A0531B61B38E73F377CFED681C9DD5A804BC1B7FD78F6ABD
-1EDAD16A0D3E4BCE8A12291230D94AC0E0CB7D258E46B5D1CEC91B0CE18B1412
-56AF3A04F80C1655C6DB8A9105D611819D4BB6B920F975D0A19104D8239448E6
-B8F4804F6088435C6C2750932C56753D14C5921DC9D871AE804AAE6D2AE9A3E7
-192DAA0D6F9E1E7C22BD2A0E80216723E09213905F4F291D2540F24798CCE9A6
-B6E9E7866CF589DC2CAE23A7945B52E862975F0578F7D8866DA6DF2ABAB1AB11
-12FB5B9AE7C3DF18F726BC7B51C57BF184D42944FCCB796ABE1869AC8F5BDA42
-0EBCA3366E46D6A9030B2EFA1767BD295731CD1DB7FFA74288CD586CE553CA71
-C69BF555CE828D291172D22DF6B1FF97833BCF7BF569CD79C67A65B8D32AE176
-0F8EF4CDFC09F35100D23ABFD911931C51F71EB0D37157CB9C9984A6F107C365
-48AFAD53E3B33EDF970F19D59CD6D5C1D7962CEA24F4AE9C45425589124A7578
-D40D09FB8BE3B386682B9919756D4EF4AFC2450C6A298450DE1A
+50C269D32993CE9CD1E8CB35BC6F69E7574F37032219C6E1C960F3693D4755DC
+C8B7002C89212862C2E48F1D2873560C25DE00F0AD2A964B24C0499FB16113A0
+57D411DA5C53A1D254A4D89542D4C06102989D9FC84E1203DCA6D175980FA710
+890F07A04822C751A2B2257DE8C4CB80BB76F6E9969D34C9AE0913062A951DDD
+898AB771A1569C3048BE68EE728122067C18AF802A94700F60B088B2D9D30AA0
+00AFCD15E8DD2733EB4DAFE0BA4320E9FEE21E8BE08DB10E4EB6AAA590A12933
+007B1B3681A38B3838403EE2E85A303831E9689524F759FCE312865B20C7D952
+5C6D1C831F66E83B2AEAC5710A68001011A3E286356D869A83F7D05DE07CFB74
+99FC6EE19C2BEB393F7BC49DA80887E615BC8165F6826D3AD0D088CBC5B0B091
+E78F205E2574A58C607A05F5C607AB371A2467286CF88375ABC46C5D8AD463EF
+52AD5D7484716FFDE744B97073BA7799E5D9B508E4833232D3F9550F1354FDDB
+D766AF9247D7851FF69B3CB6D1B2D843E2D451063EE0F5BC768EE537835338E6
+E6DDF3EBA5BD073965D39DAE812B71FB03F0DB3BB2C45B7F6B02C9292BB6E855
+479A209BC8B9663939070C7A3697D78871A66C6D377773786FF3A19B5DB150AC
+604672797EC283F6C50F0639B4373F68147FFC8B33CFBA9777A8AECFCC411F6B
+31D050055DA1844E3CA9BDDFCD07F021F0A3FF939CB4E209D61E042B9BC65638
+B6216CA38F14EC006842B9EF2411C99F8B266F074C6B78EC10C6A5F31D30B639
+E1F98DA37A706B84699034FE57CD411F77B31FCCD166B71285ED0E4EAA12E879
+B645566F70CDD4AF9F069BF9B0C16328F8998230623DBC73E0C2F7083C5897BE
+06FB2A4FD68D240A94670325F306D353B96D84FC70472B9240703BC429E715BA
+5F54C734721C16D33FEC81AE3955C3110BC3F6C4F0D1DEDE5B8869582BF805C0
+72F6EDF3AAF68560DED3982795DB3E9FFB69633FDD16F67A32B8E4CE1B5234EE
+2246397D8729897926DD69D307F7E946C70D9835C45C126C133D0D569D49A079
+D33E8A41DB804A4A6D35ECFBB268E6A5742CE4F9A7E8987A1188C88B1ACA0269
+F18BC8FA7791197FB8738628100DCA2F9A22083E539A911E63C61047C06150C8
+284C8E66E2AF25AA9F40A4CD610B7E510F27E39F21FD5F82B4B9EA7CF687BBEF
+0B236B957E3A8D35629749433324B942DADACD0C354223BA8F8F5D4389697C19
+618513D919EDFE5C25968A236CD192A7A57768844930C1636752DFB0B755398D
+8FDD8C1EA6E4052CE5220E20E3E9BDC84A81FDF3B5906281E5238F03C99C59B1
+BE47DC60D8D08D0125F436E2B658FC873707B65925F1AF5200440AD0CE6B89A6
+DC2E3EF01671869440E2B8A5094B264B54C494BBBA49A40D64B0CE8720816F80
+7C620CAEC962056D3629FAC6544F204CFB6E4EF7233E95BCFB6BCD26A36428C1
+414006B5F24C36A88533E17157F2DEB3BA613D206EC58D9B8B93B85CA932E9F6
+213A492E89ED9995C662F932D9ACE5DBDC3A4A9E731307AEF6B7024FA2B60167
+58997E676C7DDDE205F44C3706C7DBC0C7B97935B6205EA3449D1FEFB40246D4
+3FA2B7625F42E2C450116BF623764EE89938E7173C5A84B4C330E0B13C46F4E4
+42EB786468435588068F1E6B64805FDE78A900A9E50B69A35F32E126DE6ED927
+D95D1E2E67EA9A50A58E507BDE68F48D2233A5AE5F98EFED675F39CBA614B334
+949E54770FFE9C834C3256982CE2F18677AFC1784954D517F49A4E3B2AC3FF42
+7D3FFF2C4BF40FA3F3B97ACFF30559D70C406DB550E17DAC50B6A3D9C254EFCD
+8108EB18E4B2EE7A6A90C449095EFA75F3205E18193F1BE944D8F46567C7A207
+0C21C04C8B3FE5DACF16D48B3422C8049A124F03C10F8FCA2C12E4A9F711380A
+54EC1F3358924E4709040A40F9768EBB39B699DDE06C0F1AC37FEF99658457F5
+1A398AC402A2CA21FFB4DBA6E481D08EBEDCC43D382F43A2C9FF1EE5EEC478C5
+3C3E8440F7D19924DA661ADFF69C4C135EF8166C556D37F953C41FD7A1C0F20E
+9486508DC5B3FE41EB5C9490E98A7F4BFB27085738755A7B50ABB4BC63C4E69B
+13AF1ABE244E3BDC2BEDECC661FDB353CF4284A7B1E2DDDCB2BC124949BD9C0D
+23C3F548FA3966DCCEC8B8DFCB3CBB2F88E4BFA149B963E4299A20E2AE9939D8
+E1760E49E4BF4B5F08E07BB88E6094A10AA8B906ABA73B044A47A1E14A52419F
+FC93092C6C5C2473AB63670401A8DDD77B57879650F34A3E99ADE59BF5EB033B
+EDE95A15197F771CB03882A6B99E173786114F2D75FD3A05A3D1591E1BF2F1D6
+3E51FE8141C49BE8C9985061D88379855CA7259A988935721F7E8187EFECFC6D
+38C40C57DBE59D17A2DC7244EB99890F725D3DC3B5B90ADD7A34F495AB006F37
+3FFBB953D2558F07B2FDD7C27F0212F940CAFF9235EE574D1370DD12DEE8DF32
+64C876571BDE0C2107C54A50ABA0182196DF167AB3F79E990BDBF19401E263C5
+1CC374F86EDA0A1FA82B57AF6AD34E928070EBA3B58D04C1D947829D3E69AA0F
+62230BEAD9ED7A68CBABE5D719CDFED23A5276D0F5393DAF1D8ACBAEBFED57B8
+81DF69DEFE1934207B1C12E1B6392B61566AF147E804EA2AF7D1E5EC95BAB05F
+12E1B07F9E2FEE3289A4466E72254174F5A1A8540812D60BD7537CAA49BEDE7C
+A1B8B30534FEC88329F78D845940E7CEE87B567780790D0BF10C9485B17E7F41
+85D483B8076C02293AF375A6C3DB2413F1458DFC8F900E5E418278C26A5512BF
+7F831BFD308D85A5C8A75A6CE10A8276C6C2BECB66FC57BB33AB3A008BE6886A
+3A59D280DB1DFA9E90551314BD98BC768C1EC0AA0B3EF362160F3F2AF7CD4035
+D344BD90880B00621C56E836326D7E005970B4B490D3DFF110F4E03CD3556F89
+6FF5DC1454C963635993E7D42F66137C2378AF90D8279185E1B5D6F7D8769760
+3E59331B4F5AC53D81D85155B1A1343E3A09BF32F167B4DAA693FD35E4AD99BC
+AECA3D7177725715C9027F73BB280AD72351057AFF0BB2C480C41EEF179A9E95
+7C140E8481982B0B8201346C92A053084B4C06B90D81192165E5AE06E3BDF1A7
+4D04AC1057D951384E1A87785AF84AACA6BEE5B2BA9BDC83A8D1C641CB94394E
+E43C6AAA14842F17431F118F0A70D576096583A07A47FDA9CC685DB95DFE0C3A
+7C1CA8AB03AC0E2DECC7F6ADF379823C7514756AB6039C49EE4BF802FFD0F20C
+8AE9154C298170097F6545B67A9CD8AC919D7A72DDFBC9B5AEBE290CA3130E22
+9B74A32031FD665927C182DC0673FC32A669EE710B9BF0DC17F96DA9964C4135
+EEE589F0FA3E4A2F867CFD216C2D1AEFE62F5D2E8FFF237C2B2ACC783FA32267
+A9BD792E895FA78573BC1FF74EDF6A51DA6CD678D309B97F480A50FA337CC5D4
+F3768553CF501FF11EDB27D8CA0DBD9C5F31EE06F6E7E7C5BA0E35161A714F07
+0388E2DF6CE041DFDB2D58F963BBDD1FA7A584E47A2F7C5A77AAC8744DC5FA75
+78EEA9BCBA5530C7EA0FAEEDA5C5991DF4A24CC2EB9107DE7A67004CAAE424A0
+1F1E6BC10E1BC23DAA76D2ECDA20EA54F678B9ADC653E7C5CCFBF3DB31CB7453
+3D51D500175F5D7CD3058ED0209F6FA2430F604885AB74A098A9B145B1D32386
+11FEE1982CAC6684CFE2389F647BE595260BB70CF1A106AC217BA527BEC1A46E
+69D366461B88A3331A0D6A54CB4EBBCFC5965A18686B49FFB9808DF67D2C220F
+FD371CDD2862F8945A3C46779344198106C5FFD4D606D221ED044D1A99A94C28
+E7834321000722AF436535E2DE453B740E3EAAC6B9345DAD6ADE5B1A95DFA225
+846BDA14DFDEB6C42C0B6184999DFA106D5504D19116177FE46142D13A8E0C78
+E5BA364A80F431E4D19AF212C0966D76338C008A9EB93E493D0B690D10D9502C
+D467D4B41C6C9F17E316D2CA3ABB477F94B9523659C692D2BB733E6093C8665D
+580FD12DA1532A8D9A7508870A67EB9C1A7D222C02030BA7923848CDA5A506B9
+DE4D054F3B038769E6E094C7A061C4577C8F4814D7F3DFACA87D314AF9AFC5D5
+65DC186FE396DAB006768FF0C7BBB6FDC3BA8BB6BD2AC55F601498A5E69CF676
+44FED6D3BAD572A854F9211D1B5D7C2289284BBA2F51A65AB78854163F98AD3F
+CE13D5120EB48C8E5438DA0B1CC7B608C7E7B48F7825F8BA30E4966A5A23C88E
+4958F6FFFFF5A7FC222476C40DC8C142DDD8D3E05074E92514924C8D9A63FB30
+7549B06CA8770A0BCF5C5A7D3ED1CBD7BF21598DE1064D3D38BCFDDF9523F851
+7FE1464AA3591FFD9877BE6680727C3F9496DF9FCF7A9E56B67AF2BBE448ACD8
+6261E9987D0A62E05E9001AFC01D50BD07868C0509A6A0607E78D9CC36DF11C5
+5FA107BB3F44823D7A7C65CA3CD55BC66965AE7ACA29D99ABED6DAD24E02F3D2
+4700667132C8CB48DA6611E0ED9DBA50100B6FE9699DCD909CD5619FD9B127DF
+DBC129E20BDAC4457D35E899164F92ED74DE845D59BD085136288717B987FE61
+715D5335C5062D39F33B8B8D31E0DA140FDE859FCC77A2D89E1DA37A9286CF21
+A1BCF104C0A44F063378266701329B6A74EB70EDC742AB9C5713E9025996E85F
+D1C941E31FA2B16986F2B817E923910064C1326EC4D7384A9D9A0936811CC347
+172C1AEDEEBAA821835EA1DA3BA9263FFDA1933C05DC99B0E27CFF98968478D3
+DE12CA80EDA4E207CDF2302A22F6B1EF58B3C29B6DFBDD6EE0360EA54DDAC927
+E4B1AAB150100446E720F54E5C1557FABFCE22D193127C747A4E0B408C3B0872
+9FF46110101E5151D7CE7A70B8B1FD7013357FB74859BB3329E54ED0EE943231
+CE0C515FF7AD758A0E9ADC2C27820FDB9248A6338124CC92DC6ED1B64CEC1BD7
+E59301182787A9B2C04618D40ECD402F3AF5F906786DDBC17FCC4B51A62C794B
+C0A54345F0B66B9B7974A7D2745D5F271DA1E6D6A175AB3CBAF45CB32E44D30C
+15648D82BB2342BE82B97EB6500F9EB19240E9312A699E118707A0EF960A0461
+4873D6AE4CB9E3B1270C1BEB1C40C5FCC572D72D5B0627F965850C864EA5B29A
+3E26EC83FD25CDBE5A32A603837DCFCF4B4CC9804C4BFB3B5003C62EA6E0CC8B
+1A8AFC681B71691C5952CA4F2D9C0B5E8172E000499DC821D2FD56349CC49A77
+B9ECC20780362CD29DD3EFB5BAD66B9FAAD1836BCC4016BCEF8852DB7F622C44
+13B91BD09E30BE7CDFCE3DF557ACC917FB5E61F1129039039E2DE642833770D5
+432A35277DCD6BFA28D3A4759615BA2731AAFE9DDD9B6CC44B4E6F3BFD11D534
+3419764C082A4235EF3540E80C079C814F8AE7D5068740D699E9C2A911B52973
+E9F245CD0B37C1A2418979B8E643B13A8C83397B11928402EFEF0C51C049AD4A
+0B404628B4066C9F27D4F9A8D35AAE0B6D1E7121670656FD2ABD854C3AF94F7D
+A020D3EAC4F903C5DFDBAD1DFFB45AC984616CF18B24D27536FC64B0DD5294BA
+8F3C75C70D90158B083ECE966807B8147F290CB8C9F6CE6C4E1ED71A53938973
+A2B7D7F9FE30A82E47D6C912F07999FC7E90B4784FC229D551F3BB14E941FAC3
+A3C9FE667401E69C8CBA2273B3E5958DB7261135882F9850B1E071372B6B2119
+B582456D7DD7C8C29205FEE75C26C352A026FF6FE74914AF91223207870F5125
+183633FDAE732AFC7FB08635830030F8103D2B037FF7774695D5F9F90499A4A4
+DEFD914C3A09F8DE76C18549ACB09723CB5C0FCB6210CEE079C2CDE157EC885E
+A0DF47B932893701E5D0904FC58AAB1D123E51F909CFBA4EA6AAF8383BB3CCF3
+F4D9416F0F8F0F1EBDD7CAFB84D7247BFAAB758AF3DBEE9B239E267EDC53EF7A
+1CC4103FAD9A29A687DE7BC5B00DB183FCD9D1DBD3F4BBEEE5BE006DD6ACB302
+C85C7633855E33C79ABEEC16AB8A0F39A615750DF451276065EA8EDBFD868EB1
+61316FC8D3462D41790B8E714498B2700EB7A30511FBADB27871E711B7F0AB75
+74F5177D8B9AD8436B4F71AE0C1D12EF9F8651A32F0CA31179C8D38E9D36DC20
+0B8021DDD22240E92BEB7470866FD71EBFD2D8F6580EC2BDA0D9405E30B722DA
+C5AC818178D95E8A5F874D51AB35A60EFFB97B94439319F055FDD7E51550C084
+B6B955BD5E08775AE40BABD8C3B96597D87B15D0930A10EF9A7C4E085785C12D
+06336757F65FB6E18EC620E319088EF1BE9A6CBE3D55F4941480ED6A3DCDD1C9
+D2794EF4C93C9D646B86B6F4B6E77CA865C6393485FFCE50FA12845492B7A9E7
+C89C15DEAD45FF6DB68E0C656D3B6CD03ED4714DD9E43645625B1AC0200B23CD
+1A4C63D973B94FE3D95107208A561C643BC5E69DF65A12B6BF264D388C8B8F4C
+9C9ED501487C96A83E616F1667BC7089457A17507EC0B7F3F3F379E86FCD9174
+24A97F063039FD44939A11BB0D3010066E5824CA8126679B174765FC7D16FF24
+4F2CBFE9F7430C53026210A19097A64299EF8C261336F0DFAC19872B97A4194E
+9577EFA2C9D0FCC504D6D45C4592F560740CDE0D86A3DD23AE5F23CD3D4773E0
+98CCC4C07DF2028D542EDAA934E7A71448931FAF2CD376F75EA68B381B8FDAD0
+25FCB392B1BCE5F315E827E2FB5FB55E69764B3C43DD6759668E36635FFAA211
+586FAE259550895FC95F0546D57015C2C88A955A6054DC42FE85DCD2A5DC1833
+6532477B5F60A5FF07CCB998161405A8C67C6F69A1187D684A8796D36CBCBE40
+608832C87F4723A159125CACF518F6F9B722E8EEA3224C424BDDA70FC4EA66E5
+6444EBCF83A4189C8879D747A22011A44298822470689B08836A43B140643E71
+915754031B11B0C962070F866CEEC02AEF3A8297A4F3C87D8D25B954129A2D11
+FD00DA5775FD90B9837AA03B0CB050FCEE6614B3679149CBB68A2CE869A75ED6
+FE176856114C316F2D00AF2E59E71911DBC2AA3C14A9A89333D45E8D7015DF08
+A6F65994AC85BB771948DB83AE4CAE531C93056E1B0D5FA8C35653E0CB450C45
+259F188B105EDD4B0BB55DFA8D21386EF5C60DA9AFCDBF417A15C72F1166155E
+799A341C1580A30EAC595D87B17FB21924616DDC2B199CF7465E27FB9F3DC3E3
+9625274B43772AA40E46478DA4B3D059728EC305071E6A30F9CE38249945BE60
+3E4F4608D77B71EE01790BEB1FE970DFC53FD871135E8CD324B05D7F1A32AEEE
+B62E9AD33BF2F793BEF5C1504507AF45012E95ABB7B8E9111698E133A31D6981
+DE1484065CB44647B54D99991CBBFAA6ED813DE2C1DAEFB2FEE754BA1C8A9FDF
+5346A1ACD762A3B3864598B95448A9B973B4397259890A45D242B39AE94CB98C
+1F0B040CBA4637341164B3B543BDDAE46AED9F9980C6046A6BA2D8D8D639FFD9
+E3500CE95A91A98AE3B9E7FB1D1B5E12E069B144566C473210CB62FEC5AE7244
+5749A707116EEBCEBAC85880668AB98E8FDD15CCFB7B9A65536373CF15AF6E8F
+ECF5FD5D49695107B16B5300FB94FB85EEB985C6E52E4A585184DBF1EE2486DA
+A6F94EB6885034FA3332EFAC16895211CCEA78D3AD1961E25D2AC48CE843F8F1
+F483F30C9B2C80DF464F2363BBFF6C8D471FBA6F5A9B291A98DC10168FC16868
+61009D1B31BC4C06527559F865C79145E3204239252DF6F09FED68FE6E8BE115
+46D448B0EB3808FD73C5AB372697F4AE7A84A4C1394CD1383601C96472F173FF
+BEFD19916766A565AF972660C24AC3D1460AB141A393B8E34547466D70CE6492
+7393BD4FE4D4B6007DDF862AA4AF400CA7ABDA0190C60F50901F5D43ECC2B882
+9FB4E880C25FB050469F9784D3F32F6EE67DB0B13218C6F87C67D06CCF2F4F1B
+00AC5408900C9D443FDF317907A476599225996C7EC90484B9A3BBA0C79494D5
+D24DCD12BD005F7BCA4B1B854845BC404CC3126CD4D774733D7448B99D0224EA
+C52B788E63E681C477AA5270401F88BE61A5762E5322000C16AA01FA206D07DA
+D6783EC57D775A593B2034BE2C2246EFC6D3EBBB31A06C
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
dup 11 /ff put
dup 12 /fi put
dup 13 /fl put
+dup 14 /ffi put
dup 34 /quotedblright put
dup 39 /quoteright put
dup 40 /parenleft put
7EA2DED68219754BF1FBCA350327572D769C962EF9242132D93A5C8E9725D8D3
AAAEC15ED0F362471AA58488620156F3474FA59CA080EA96FE995D2B3DEEADF3
3141D157481C66507725ACA5953CBBE1ACEE7E3F02C72C6552D15EB3D612730E
-61A06A43575568DC3CF3844BABF04CA767E299575EF2ECAAC7649193843D694E
-6CA59318C01132C361A3E43BE637B70B9966664E12EF4707F6B100BC37778D1C
-F1806B1DE081D2C9B995BF1EE3842EFFBB8416161FE31633A6EDA118E563BDC1
-C42F403BE8A009FC756406669E34C6A08668808E0C31A589D0720BE32F3181F9
-8039645643E15D25917F38DFFD8BD08A420854DE15AF291ED675A634C151193D
-29AA6E04E84A598350AF17E71973854842AFEC3EB1B58E4D4433309BF5ED9D86
-32C4BD136C89169D45718A88BABE25072D8E552AA4CA3F840ECB11519B06EB44
-13026DD6800CBAA90F3BF0022E66A54BE1059BD5D224B674AD3199379D82D571
-ABF7BDD1BFA45A0F0E9ACA0A400BC5FE22DF4A041BCCB93DC23D547CDF0A49CC
-6C7DAFF30FE0843CB3324AAA3B92F543A985027FD2715F4182BAB1640F391992
-E4DB6C19A96D1D48EE4A4DD94D6443467C61CDFEC9B11E07DBD7F7BC33B34BF3
-EB97A7C3D0C4E322ADAF9CB6320A64DF78223011738501A124CAAF7D717983FD
-8BABC1AE4CB0FD382E26BE0A83169B6C371950D7E9A94FD82BD20A3E2112F447
-F1E4203D9978E6D9B8DF24E670E2D4BD160D5CABF3C460F00B5229B48CAD82CA
-9ECAB97B709C0C4FED12CD9B497B4D5E505A22F12589E28B0C3017683A6EEE2F
-2928DDF7763CD8F58B531F526EE267EFEDF72DCFC8E547F329A7C6BAE64C2800
-AE848C69574115EB02F9CBA61ABF99AE6DEB18BA4DD295682F10B960D8F0DA3B
-B4D6190603E95B7F8102DE04DBED3AF90DC3CF440F60CF50A8AA982FB965DD80
-E0B8F62F1589924262E1B3292F82EAC5A888AB240D40F889F9CE2CBD7F2F2E8C
-A1E4479DF6E27D00D4347DFBB8B977D8B1ED261C3CE14538C0AF23BF0B4825F0
-39B2F2AC125BD84B6B9626300A2C001119893830B3542A09B6986620B6E9200B
-BBC5CA508A4D0A31B72EAF25651A806F88A2943849C5CC2CEC3C79ABA958B020
-6B8ECADB5438E230ACF8939688C11F16242C5D58A55AFBAC2971E09C0F7A2D20
-2B26FE7FDEF8203A73EB4E47F9953B6EC5ED9985C6D84CAFB3DAE3C39B1EE33E
-8D54A862ABA4FD8C0E9787B5B71E960FBB9C3003F8034CDB16A0D8D0709D18F0
-22679AA4339CF26E41992B5B5B33D59D937892983C5B1151AD6EB37B065E8E99
-6E9BB66724E0CF4044C77E79B6D697D9F368A76B76C93ED4BE9C4E0B61B26919
-976BCD5FA3F527BB093BBB0BB979131EF153F77845B4EB6B7378A17DD297E656
-0BAA38BDB532CB389E2C60778B658220CEBF7F77DD6677D8248975B86D52ED2F
-1DD38A57ABE4ECCF554EFE937070D7F73B8B51F59449236E33FB1C6BE506F7CA
-DABDB3E38B70398F5FD377E00C7DBDBCCA9D82180EEA815E0E2231789FF7FB88
-67F04D4049A6FC4CD8F12202CE784F633E3161FA9E4CD2F3401BBEA11B43D1E4
-A99FEE87D0E97CF4FA509B30F1E0672AD64EBB14C9F19F9E6DD333B78E91E4D7
-058517DCD523FE710FF61D766E9B334BDD7EA54C5BDCF6D612B27BF30449DB57
-9D45152EE0223988AB6689FF07658436359C2461BEA57F9CC512BDC51EF25493
-2C25DBC52DCBC0278D296FB8094DF33E7E3631228639796FAB8E7F3C78D26C89
-F15B4D251835074FF6EFB9261E2702167F46BBD87AF1CCE46D69A9E54B3F19D4
-CDBF4689E4A980A46CB0F8259DAD1CE5C25567321F929B7F501E86FEBFF155EB
-CFBCE24CB837F1299635927640256B311272C6EF36DDC649D05DBA7F9F4536A0
-B3B9513B8FBC8E3A547542F1DD0C6306693FE71BAD597591FF53046DC982506C
-D0A8EF82F11B01A588399B10AF852A61A96D0D8B416DD36D776B23192FBD8B67
-230D93BE0C1238D5FD5E8A762BD8197B11E1B0AAD547A5C203EFF7027AF9017A
-D70DEF3A45D5C32BF964200A3D9BDF03B1CDE2A50601E5F8D083AF733C5D9B28
-39579CC1D94AD59B64555DEA0DA13E2E771517EB7DB91660365FBD319FB79828
-FF9FE5E425F710BC2A5250765A9D4B494028762ADA4FCC849CEB3A4F4CBC3FC7
-9298A3450323174ED9835CCDDAAFFBBD380E889A002CB98D1E46747F6EC97E4F
-CEF493E6729F14AE0F28AAF68F401CDFC05A1D52C92E90E6D61163B99DC7E2FE
-663D254BC29F0923C210385FD72FDE4ACEED53562ADC89CF698C61B81F426408
-6A4F7E6211243D2894A2490C78DDF108FEF22D595919F8176C9151F9C4EC7FB1
-CCFFE2DAED0451C01DCC92B8DA7C897314C6464CB96FE5E9AE8D09FF5356642D
-5BEFFB636CDA259DF1056A41B007AF086F3299DDCB4BFE497658EABF868FE2C8
-17F3F289BB8EE99476366FD4B5FCA6FF6D2B9DDE027C36C3DEA8D9FB8E1E315C
-F7AAAF23098FABCBA9ECA1B3B62D97C718E9CC920D6060DB63D12C54F40A8AF9
-8414ADA57B34319E1B9DCFE37E37DD2419A93FF824AA210581867974EE20376D
-20927C4E0EF852EE9EEAA6C3C33ADEBB54B04F8130C9FFE841BAB8CCFB29DCCC
-AEDB97A11253347D0A93054103092489A7A0FD2DA57144A996C857A51A8D59DE
-97736B5DD55E7D1F3DD15B563C9EB1ECD180E405EBF83F2CE8D8E3BB3CFAD4FC
-3B56C5E371D1F24F8B87871AA4DC5D36402F73E935548AC7CE28D7AF7D503969
-364DB58C5D8C449D9A1CCE52D60FD42EDDAB0E92E04D4085570FC95378DB0E9D
-29177299929C8B877397FCBDA368848AE438EB03B2380B4892FCEC5A6398F275
-C8B9430614CADF97BA564CB4FDA21CCC0BC080D9148D461190E7A68007BAE7AC
-863F39346F91568267DBB3B5AAD9AF3354222301F3ED3E144067310C29E86A68
-680D1F9DABD82E2D6FAD321A778F6A7F4B4848EE947AD1BF122365095AF25FEA
-3B3574B9CCEA66FF03751A4D75176773043BDA6569691729EA8B552FEB498FBF
-CFE32B8B3C37F71B0695A4B1578DD1B8E0D0CBFB6A2CF5BF3D35B63BFA956368
-39F112348E15E0B1DEA4BA6FE0AE44F6A92B0917F673673592085CC2AC0208DE
-2D2CA8E867D68BA9DEDDAAB83FC929D38927F5E5E65F97A160DD4D9A3DB6E76F
-6AD8C92454E46405AA43F782C9C7F3EAAB984F2D26C47C3794586065392A043F
-C8F670C06322769837C380DD81277AD8FB61E2F17D2E6D044EF64802A82227ED
-8947FB5A9D39C3C7BF66900819EDC802B10A867130FF9ACC42B885DDD5652727
-A4F54338B7D8CCD04DE347E31DD5EB6BDBBFACD0F605EFC0825D6E4560174995
-5A3AC5F7C57BCAFB5EDE28FB8FEA0015CCA84A4F421F64B9BAC351E4C9918123
-CC9A9C56FAB9C164E12EA420B0B65521D001040257AD908B17527740A4BE8B4E
-518472003DA96D02A04B567A806D6FCC1AB6581C255047F98C302CF6A3C38A3E
-255CCC51C41FED45DF5A8DCB7CA3FA3D4018AB1B3C5A3A5655BC02EDC17DE7F2
-946449F7B2552C97BFBD1C6C80E3CE122755E1679511101386A75345277E293C
-6BB60E204B16949F9FA0E6802D61128023A73771AA40254F4F7F54F2518A4086
-C8343A5EF3F620329AC04682962E7C2580A0C23ADF1096031DF2C0FA8B578222
-6309D0ABE027DB4E7F59A0D0F33022188CAF881F52A0EB544E53701C7819128C
-96E26E9CDF47938D16143720A9F774D36EF27770625017EF94F3BE6C97FB75F4
-A3B44E10F6D3ABB303CE4F63501FC5C91691D5803CC94C4A4E5211BFDF5EF0E5
-451D2073481EAB5035A78F14D2BC63852BF3A41D51B5A4048D514E16E3519D24
-B1E2A278771055679E561A2632E9DDD7EDEA3599B28ED4C10F1929D10F093018
-22937E17BD99FA33CC4EBCC92A6C21B130F0FABCC7CBE12408C1186CBA3B13CE
-D69E501C346EEA662F847C756DE1616B5B5E4B670FABFFE4889A85AA9AE8DF53
-A2A29D710FEAAF5F275C317A07F484DF206BD0C4CAE557ED66399494FF2C1587
-A6630861B8E5E62D7B02E3F6D98AD4F5D6D3FD34754DC20C8C69325CF4F43117
-80CF56F55822EEFE030D837AD51B2FB722B25098E976AA164939CCEBFE453C40
-54DA26BB8277E5FCB0B209B090001C202B1D417BD407D74C96CE6E315CDCC416
-7EADCF5EA7356F9150A92B5F496E54A4BE33EC139C33FA3D7AE1AEFEA515F540
-299DB28C9EBC83E3C89409F5D528A3CB3F59C1311A1AF0A136E237D91A1E4134
-5EA52642D2D4B151D532F29BCDC1E8FA7EC77B3FDBF561F7707C46753EB922F1
-FC0A0F94D7B9DF786EFEB034179022B5D8D77E368FEBD1BC318DDCCC8126888E
-3277B6F6C9BD74743D3EF6A6D1DA3F7F69E0689B2712DB9CA8C96A1928309695
-D64EFA85FC190E9A88B638FF4314150220DD3DC50A630F19A21D78441BA9A4A3
-E3E0D201086BE1A1BDB1F9F4E6F8ED30903CBFD91F43B8B56FB269929C431F13
-BD550F401CD9FC0A612F61A635C4B778DCF19D773AC9F83E5B393F969F0A6F2D
-2C3399578ADD321DFB6FFC828BC708C132EEEF51812305C5AA9C5123EA790995
-B17C609E9BBAE75AE816CB02FA63A5508EC4D6F5E68B7C69B3A7A743AFE1C00B
-479D1F4D93A85A0AEA989D01CA06485F69A76148A5D541D834864447661987D9
-A81CA3F0AFC109E62D4334B1958B0C260CEC205E37F608D53BC5CC5DE889C156
-D24EE0442D2E487C9425C59EAF0DFC887D850F2AAE32FE27BEFEBF16ED33449F
-746284FD593654A134EA7CB1BA98A9205BED9C2E7625BD7A614DF27C3A72B163
-F57788C67D91F7299AAC5682F031353E80A7FCB23C9DB3CF6440B3223132325A
-D55382F07F7D83C1E7F0F1B5D751FF1F39AB6A357E08D34FF625544F0B62D92A
-0441FE53F5C5068A3FE0A80729DA7693BF377C79FF3F279C52F72F03E439B688
-3552A1F0429477294E062ACB878CD3955BDB1050195EF91F2010611D1680D510
-33154CDEF24459E6FCC010D53C07AE9052CE784D8D060265885B93E5D201A3A8
-39ED6B100E14C87992A5FC12587123D59E9C70096C0B8CCE18996C7A04061127
-37CB2FE94AD25A8894EAB6543B4EDE18178B7CA02251752EAEE9007FE645DCE8
-76E505CC7CB133F1ECA70526437ABA8C3E966B5F7929042A91745F43058F3018
-C135ED93815B54CE444E864F840483D4B9D44CE0202019CBD40B108E1D8B4A0C
-CD10B442AE5C78CB3BED5E7AD9B89DE52CDC3D3FF506159E73F84CAE0C4B19B3
-310F6288DC7A1C13043951094729C2D036E1B268FC30334A61057253D5ADBB06
-062D9CAC36325D9668175C046E8E554101C89F31E0821FACEF7474774EC36C39
-62909FCA2682F0CF31802754757EEBFBB5F98DC008B534245782D12EB30A3DF4
-B892B1E064EB271FA436464256905FF2E91042882267A75914104243B60F12FE
-3A9B5D9754026FCF038A8655423230E5F2984457B260354E75E7E8E438995E0A
-41CE6D077EF1E08257CE1B8BE3A2397A490DACFF0F3FF8D20CFFE6BD58968AC1
-321A49B21C324F322B5FDE900D9E055BF6A020156CD67EAA1AF90BC64A1E1731
-D95EEB12AEF53754C7FE33167B9874D896FC5984CB032C60D66F09CBF5B045B1
-EC95734469F57212202F37D6E294E73BBFB66C4B821C5D844CE81981D7D50327
-F42D8210216D6A4826197CC24865813A441931DA18893031AA1EA62321B0DA7E
-CBAEA839D114032906E18FA1C661C1E88DE33C6337929C6FC8B09B1CC5B95BA3
-E1C71C33CD9A3E4999BDCB55F0F931FE0F7A3EF924368616449551E3B0FE20F3
-6B26C6317A782DDAEDC91723E25A5A325B288416E06A62FACC35A22F7B1AFD01
-6530D0D6E80C193A2E891BBA5CEAAC8315281BA873C95C642253BFC2BAF34605
-9EAB0AF45C3D049A8F433472560AB5DC2561FCA3A2B89AC95B15CBCD15AD6CA1
-C1E7175097D316CBCC0F5785A1CB9EF5D109356B07EC553765C3542CCD4D4A71
-A6D402D95A9869E5194E2B4591CD6A89A83D1ACD0F3AF7ADECBF37C69960526C
-CD96CEB82DB4F1504DB80C171383052DE99AD7A48CF508BE024BD574B06E4A7F
-CCAA259439F581467CC43F1775A797ED8151A08B898A4B4A5E2F2BC98C4410F1
-108393AFB7031C8C1B4CC0880DE20C3BAE0DD0EA1F15DDA20448F7893995F28B
-0608C5D9F4D434FC6B36C56A5A5748BBE676E00C3A9F418FC82F08F7C2650792
-BF935B7ECF4B4B2868A4646D3AF8442072DDB42CBD89671E3D8EE4E0C946ACAB
-2D7DFAD319C93B6474B36F4398D06961CE2EBC611BDFC74C06AF95BF565DDC42
-1F7932FFF7A5658514C04D79CE7888CAB8C0C13E13A0A38DCA8F99A2B0BB9F08
-89F413B0BB6C208C0843F607D1DD21D2D2857F5B15113FCDDF9012C68466EF82
-C9E67E81904730359D72118965173587DA5EE59F28B0A101A8F641F1EFB084DA
-CEF86B85151E31B21F66BD9055293B5878339FCF27216CB67805247EA7166DEA
-065F283E2BC91E9C526024B6954410ED143A88AA91DE752F5CBA7129236D8426
-DB326A5A9DE91A2709F7114049A8FB333E87CF5D1D839F4F79D08FE684A7AE1D
-20AA674461DDEDDE23167D5881AAAB018DDEEA28157CF944C55E0E7C7010FBC4
-7884F438049A6F596912E65A54CE36C42B22AC762362CC4EC9F9213FCB908814
-E63D7E10D6BA9CCF802B662586B6E5DDE8C7D5B7BA6D9C8792E87349A1811F96
-C5A88467B93EAA04D84764C10B344D51541A987548D4F24482902A7744535988
-09DC57E9031AF5955F5659922D46FF6727BE8AABB889563878CD8907E86742CC
-AA1424363B562FE791EB65AE23596095311612AA0720655CBAEC471721635BEA
-2E322E3603F763E4A151AB2A8608BBC11AF4B9EED89930B48627D12C7857D906
-E1BA68C9D2401056C6A100D5EA2A29E34DFB839A22F726508BD77D445EAE286A
-50D46337619F86AF82DC4C2F0D1DAA005E17AB38E54756D48689EEBCB2B70924
-D913013BA5A330D69B7B4A6B30A7396CE684D46DF2C24925CDE10CAC5AFA48E8
-29AA959AFB2ECBB95FE16B483B49A6E10B009E48968EC7EBF2CA18B3A5175499
-8AD1CEFEE2E3A5CB84185BE886B912F4F9BD1859E86C0F2B3BA8E4CDCC509C8B
-70A0226609B2E5B3C693588F89B8B9FD3DDC670B0818D59B1AB6392B61567113
-DE0F0AE4B5402ABBBC5EC181E3F9131E42B4D72FD500AF4A40ABB47FC78EC4C4
-340810870CBAEDB3ED8B6991611F978A9851DBF989CB54A7FB6C5590D6F389ED
-63AE2BBDB9640A581A3D0D56394345EC8A621E639A36D7A3567ED4C646782491
-E6FC3D0A16096A748BCED36335A39D30BA544F5E3250C9A8465BB4BF1F78783A
-A6F4C8AE394E45388641DE0810E79CECA8CCB82EB5B01AEB294BFC1E797CA973
-653AA8E25F12FD4637D4274540476E3BBBA984EC2B58B678650BB30D074713F5
-E6A5579EB116C013DD4BDC716EDBC4B0680BC1D1670BF465BC7575EA0C0FAF7B
-50B4CDA35F6CB2F3801EA75F8B8D13D5CD2B81035C06440EBFEB05C43920C8AF
-161BE712A91A009B3C1DE9CE9A29149E81A30BBC08A7DFE5291A137937AE8CF1
-D24CAA2620309F0CBDADE912CEE0801BA72A097446FE8DE2C494E5E7AB790D3C
-46A4AA9628D791FA83B3FF9DD11F115669209BE8B4FD1EE6627E179BB53C245B
-3AE42A6A95D73A45E7D9A78C2C46544DA9BF229077FADC8BB0A288B044AB219F
-C62E33225DB5B58C19A0894F14C57E318FD66A56BA936DA1DA059FB5E4C89134
-909D531F94915EBD4309465038E6E2D0223EDCC2D9030BC5E6B07C12A28AE03B
-E58266B28B0A4111B445670449021001771205A0016DC0534E84E02007A65E4E
-DA5212D4668270F11113293A1A0FAF9E7F5ECF382760365DF24DFB1A49D50116
-D2959974973840F8BACAADA175B18B0CF49E47728F744F3D3405951EC677C4DE
-F2A8B4AFB9740765742F701691B79309E7F8A9BA9CA4734BD8D6AB97F0B8DCC6
-A77EA6F065844656ABF04A6224CBC9BBBC929E1A4BD3230B901AE1E18FEBC2DD
-1642AB4A5ED317F9AADBDA2062510300CA34A7897D0EAB3DAC7DD375C24221F3
-03E0A4697C6BF80426393BC326893D524CD60CCA3EAA8F09FCEDCE2F08F2DFF2
-CD8C8E6CA25343FC294DF8AAF1C4938DD7BCE943E92CB8C70ACCD03CB2589CA4
-E12353188F519A9E50AD95EB772C39F0D0BCC02DCC9A02C55303B370A511B396
-486313903405479B23FDD01A7D1644212EC65BE4DE730ABEC92F9E5573A7353F
-139BADF8C69BC5EC022D92360A28C66992515A7AC3E1AF4F87BDA91832003EAF
-02B611681A280492A0C0653A7B0502FA0F036B80B1EB5A92B6E2E34F1D3048D7
-9DCBC1994908801E17FC33109B407613C5537C04FFC152072F78F1591D6CEBA5
-37F9E385CB0330754F7FD33255353EFB68A88B6B65D378F90E85996E29E8F888
-E1C837F735FE92E1906D6A3991E23C5F4B6ADAE7F80B134DB3F2E9B45316B5C6
-AAA37C479979F320C431641B87D5164CAAE38089BFC5A0466523901846DDBB97
-7E626FA4406E96E5911BA848F9FDECC660F0D9C8C51855AE6F61E80CC6D7E4EE
-8171B10C33B62C9FB6421E50ADAD266816B3D11B62926EC7674795A37B117816
-3DC5AE02F71DE34EA896ACB2DDC623C44CECCD8D6631517D3B0D51E3F5F373E0
-BA991518CE7A61A4CA01365C812DA9A27A7BF7F61B70BAE4A25353475AB28D20
-0EE8A274B7B81324CED23F8144C859318D24039DF4104EFF6A46A3E4AFABB7C0
-5D54A42B98554FDD4761FADED865F6CC6A62999A6D5E428B87773E34A3D59886
-1AD7953B918FF207806D89C4DA9E29FC56B5335F46516FFF9B0077EF6ABE1B64
-050AF7D08B8E0CA34BBAD1B70B040992EB6905A8C5453EF2A589F51ACB37D2F6
-D7435FDFE1D2647F8E7C9EE8E55F375AD259E806348D28F26685AE4E64CB08C2
-8479514C4F2BE9419CB9D2FE84B2551511171384BFE1FF2514948AC8E0011459
-0194392A0B0CEA69357E0957CF64187606C24B66E75B90E65F6BCBA6B9507400
-FF673F3ECE5DFBBDD8594B2FA9F7FFC6C9EF9E7690D1697E3286C9FEC9CDB3D0
-56F9D219C8A5E8BA1E6EF3C56B279998EA9B86E18678E1D94F1C51AFD500DD7A
-20FD646AC1723028CB77572685818024324CEE2DD03EE89953602B0BEBF931A2
-76549FE146CF4211F5D7BA4CE8A4626D6B6DAB552E158DCB9A85A656F0470F84
-396B9537A99EB633499B8D06C66D543B638282133067A5EAC753FC7B68735FFE
-DE9C5F435282BE7192F9F44D6716BB17CABC23970253B1C4297CCDF520407603
-87E0B3D295DAA1A72034D94CA5417B0E6B5E148A2F3B842A77C54EA8010642F6
-3C45F39A391F146FC070A9384872321AF86924A5C79C4932BA1E0E25EB8C76AE
-C2FABB9F40A19CAB8CE845AF2161E6C5CA4F1F28DF86D04385DA654DDDF4EBE7
-C2067556D6E9C3326F8578DC526050B58962B3FEEADA9E30FD98162A7690B2D6
-31BA0428550DE10F9A61D02A2A978709FD31D2A208379E53B1A29D111ECCE4F4
-BDD9B8E29576B2F18DD4AB9FC631C5BF6ACD81CE8C9F194138A2A9497D966444
-F0868CA92BB615B511B7370CFF55492C57ABBC22FD278E6396B70BD34192F086
-A98492AC442E001B9B77807E3ED26260D69FCAD22B7733708CCBE7F84F7EC267
-53F8163315FADE113CC938E49AC9E00928D16A317AE338E91E38AF8B894EC75C
-B5F3BFE33ADDC0A27F0E754D2CDBFAB0BBCF94A1BEB2F286CEB90AED9C34963F
-39B63EE068288431BA3B31E134AD75D563F5B81782AF676FF5E39AF212EE0282
-D66687205CB81F973D1624F14D1E424EEE9FC189327F1A502F6B45CF3C2D469E
-A6D952A5854556DD6C70382A7939F4333B6F4494D8FB50B1CB27C4700696BACB
-087E7C705250D49F5298C5419F03F713619DC5AA7AF817A48C5E1702E1ED4482
-ECEA7E7EA2DD3B1BDAEE6B4E203346CD7F7024D0AFC488F4420CFE1ACFF96E8B
-F52D2B9D084FA37FC69ABA82C5C1918ECD8A94CC7E3B85DBFC2EA7579AFC0749
-8812579E9D682FF0EB5C00BB9BC897CE9F6BF1F00510F1DDFB17C6FC832E0CA9
-79193FC6DE4EEAEF899448D12826E0AA8799B3E487916017CC3C0FBC559D5921
-78BFF1C4D4C351C472C00B3AF94436C142C8C70189805894A010BE3B8FBD3A08
-97DF5961E9AF3C9B374D733D7049EF23483003189AAE67517A5C953F010B4473
-99EB286E4AB8DFF15C226B1B5BB0CDC1BD1B5890B49525EC07FD9E757864E4D7
-1CEA3FF16FBCA03FE72D50A5FB75463D974BF5A8B9F4F8BF7909059FEA775D23
-5E8A48A69592DD766EBA72EC27126AB1537E8A9E40B8E908A968AB71AE86E9B4
-E34C4C0DDAA6CAE34DA06795C5C23B61F1B3029299CEA838209B9CE83B92BF1B
-81DAFBEB500E13C5C9EBB2D7AC1A9F2428286F5CE7482BF12132F263742E83C4
-B99633A0EC4DFC9C06964FB47FA7E8E6C5A76536ECBA7187092BB64C97B51063
-03409528242E0D79AAE56E8EEC79D10809E0FC4C7894DB3675BE52AD3D954689
-23FD259BC85866AC5626C80E19B46D46BE344EEBB27BE626F03E2AF83287910E
-F1137C184D279F0886A00191DD1E78EFCFB193145ECBEF516BAD89911E0F1261
-E9AA1E7AEAB774443B5B47580E94E8D11CFC72CE036D292DE29C0E458CCB0CD9
-B9FC222E3244A0B41A2FFEF2BB88AD788609E5E244C6C88B093582ECD05782A5
-010C2030B988B7DB1E30C6D8E54837865246B93CE7E040E2A482FD0E1AC9D50E
-632B6508154A39BBF6D4A6BFE0C835B057D5953BA5EE7E0941146E9AFA61FC98
-0182BA32BFC0E8DDB61F96BD482A3F3BB5109B08A97F0C369E9B77CC863B5E5B
-F7086A48F59EC18497AA38753F2CFFF02461FA37E4B555C0F292BFA8ECC2B3D4
-5B41FD849C8E94FC2F8A8FF379961E28EC3DB127D9F006C6F2B91168DEE7255F
-4BA8FC35765D75A2A2C9065570592C25E1726B492819927E6A0278C26072A01A
-C3FCCFEEFD6C303C9BD2189DF98E538140E7ADF92CE4673930E950CB2A5D4F1C
-948FD5F5C0F58D730E710EFB86D7121A8C77DCDFF7563E756A63CA0DCE6699A4
-DFDC0E17DCE17BD056757E944D2A0EE68E819D2FD3326F9C3204CD04363B2767
-1765E56741FB06DFB613B2305AA464B3A2C5950392B7DC4A37FB532B128A76F8
-7BB70D92F0A5A84118658061D40DA770B3A2D8DA3F1EBA9754C451C8147BD4C8
-C8CA37F12C3B3E83DE897CE25B437A079BC16C1046C3935792EF7685B3F234DF
-14DD781A80C66B7B315B2FFE93DB467323E01F0426DA7F488D5B28EC0C4F061D
-CEE054FA05071CDCF0AEA789EAE744D80392BD557F4023ED1937A1B53C757AD3
-185C0710907E7B87482C48A1E13D2BB81F6924FD8E9E8D99756BBAAA03EF85BC
-DE6E14CAD1265E16E781AB6FF98492DD8D479AC2E5206D2917C97966110AD848
-C41687115E67B559D183A07037D04E8E2FD40A5A40E7D87649739CBA8CDCF443
-C587F0D9C00B9A808F4E649AE7C767B35ED489246AAAB778D5E63AB7FD2777C1
-26A941846E215BC7496D78D098CB4FEFB819FE8E5F98E50677D238A1CD1D661C
-67BE46A67131B095025421A13FCDA084279959705D53F0A940AD96948DB37000
-A68603C8843CA4E7444435F17DA361F2048D216763FC5DA7C687C6AC40AA7318
-677599384F99D33DE44040D7DE5A870A420F638E83A811283290F0D5357A0048
-8C1EC53D383C8E5E7895581B59691EE045883E3E779FB0470F901BD8613DB965
-D1D005E804FA715EBA9CCB6623C51F41FE9A5FC108647517FEF1E9407D4F2527
-8E593E8284E9FECAF7653D668F975436E4B44E15A8CBE5CA08C04DBCEB7E40C0
-496E22802F2938433DBBCC34A0BE026AE1C21CB0B89E81159316D6F847CBF057
-5DFA1AFB203BB574E7D5A78C468C285A098798A223A3234500C2564A07F416FC
-3A313DD014ED39222BC4DF4F9C9500095A1F79F71DD3F065C95C3ECBBE57B714
-71FDF51CAED45DE330BB35CA4D3854DD4A353623BDB414C852C8CBC4B1AC6ABD
-6A3F00DA0CB3DCA3189176A2116D9AD01E4A53B7A67158D52D6C36052C625F30
-F443FC0656863F451E67ADE57F662345C33A479B1832928B5220544ED54EFE3B
-7517CA769B4CC4BD91C9A602B9DAFB48B89C3E490613A9B07C4385A121909511
-5A6B9DF7D5FA5381FDB8B456400EFFB006F15DC1EB93D74288E7227C8FE6E137
-56382C86FBFAE90C1E1F9325CB3E872E430F8525EF5A5B34BD7CA45362AC2729
-E1B39550E3BA8E2D29160058F7DA661C17E009762D0D99995E0EEAF8F8893802
-946EA5CF487C25E4C91A2A6B98E5B6DEDBC1BBB01FF8EF23C9928CBFE5DE8040
-390BAAA66997E936B50A1FEC18A90894D832CFAA5C35891CC01CE5DBAB20FD45
-C069106615C30C00758DE66ECB7CED5E8680417DFCBD9DBB672A71530254C71C
-DDE3144D20DAE4B196C462D8828A3D612A998C8CB163BFA33CC62CBE83E63DD8
-3C4709E156A92123BF5FDB588353ECDD293A7281408B73530BE4806BB589C691
-5C10A1472D6C311AE6C173EB4A3CB06B7A3E2626D7979C427C8C11EA06C95904
-CF8A3D509C72C31AC379642EF9C292DEA069347C9136D71F44D39F4CC3E51525
-10403CCDD038D3ED6C6464989218475DD58B27153F0A5FA890029A928C053AD0
-2989CBB3B0176D2F88702D00DBA0177EC51B08D7E0F9333DC89C0E69B470F52E
-38E750F11701B957A3161364F6BA74A8B8429DD87D0981597DA9206A46795412
-225635933413394E4BA04A632695F37E253760874E813FD8F4275BCBB0E4C6B0
-D81D546DBB99E27FF7A1AD640364EF547CB5D2DC12D7D609DB0B9E4EC651EA41
-0E3362B3745F9F1B3849E2C047138C4589137160F63FB5C093FE743F9B2A3907
-B08B14F51FD277EC66F56E19DFA0B0727CACD93ECB1580946C9E0092F94F740F
-F1347CF42AFD46F3CFC4E44BA60BFEC83F31381DDF20EC1808CE650BBB75D8A3
-77827873700806A2A7D3264B95119514AB9940C0593F3EC58D3CB7281F2EA154
-E1C2FA3BDE6DFBED2CE4D7A74EC9718DF075B6928437E54872C8C66EA7C17012
-DEDE74F0185C67C4D884C0DF21C6F80D0820CAE35C6BAC3A9EEC4183DF461FB2
-93E2172FFA04E5470C9D87A71327278B2395201343AD09AFEB35F8501B24445D
-9B2614D75523AB7A8ACB67301FAAF55321FAB88DFD65577E2980418C6EF5D8FF
-52678F027130DAD71117820C20DFB4A24092D8FAED4B8D926CF8C3E054AD0389
-A2C37BBFE78622CCBB3CC1853E90E6E4D906410BA8FCAD74A04C51CF2691AE9C
-6C462FC60E1A644EE0D90FBFA4D099F8B354A7E835BFB1C6569CA247C10B45AB
-F7DBBA63B937012C6E1FA810B83D449D53331DE1379E0F820F43679145B59B4C
-CDD277AD2EF9D907E940E4477D80EBCC77014FF7622E5AA8577C889FA8CBA263
-72510B0F22D28E2C5360B2B2C7ABC7A93AB6C3D728844FC7B841CC53EDEB082A
-2253170E67AE6EA143B5CA64C28EE34917ABB202F2C0BFC6F8223EC68893E887
-3CEDF6706042F4F95D761D4B916DA6E946E66EB78C8A2512DBE6866F181F7480
-387C49646C79DD1C174C26DD5F142EF203E0E7567A680A35A7B7C9EF3FC361F8
-1101E034F202C5DB0D8CE9DC4BAB1BB9CC04CD0036139E96BA34B8F6C37EFCCF
-4081A2B9F1305CC79BD3742DE74B82E39C533D4C2E65C7CD55625673B11AFC34
-2BC54054EED14E9AF22B578A36D638EBBE40075D3206294844283CDE49B54E6E
-11CA2540C763EC4CC7C389051324238D0D380AC81AF4EE04989A762637CF871B
-C43D284D7D5191C68BEEF0060081B16CD93E9F677300422A7CD2D4EC541A6AA0
-DAA2A8A44BFE7BDB65A989AC89E5332DCA160C92D2177ABA2B3CC510B1E6CB2E
-F4C92839132A822CB52941E83E9360A96BA996B0FECF3EAD5DA932DACC0163FC
-EAC4FA40275965FAF0920001F087EA4820B87A49CC4CAAB6C336FB89FAF09AC4
-BACEECDF4B4C106F70576C53F55390D50C6B8EAB81320400A24626E246EA71AC
-98607D9733764521EDA48A56F6B9476030471DBB3D91854D4D6388D0A62F9E3A
-F5086060024541499A375347F861343AE902C150AF033B8F955CB664FA657742
-93AA641F64599C02373F1881272B4A08A44D583D76110A43832F6F22B86DC5A2
-D33053854E746DF104241714A2B17E10EEF0AC2929B4C15C5CE3D5D7C2EA7FA1
-28335A0087CED3DA9536E8460CE5E957747422A3644F96C80714E3B7DC76BB0F
-73D6229AD8FE72FF8FB58EC577F2253E2D5C27168D00401C94201E64EF770A07
-DA43FD8C31F41943E46EB80DD3D9CE38F72AADA9E70B772A692CA7A41573FCA6
-C46E4F9543C004167529716EC417B5EA6AEA374EC7EA6F0F79A5F32B6F40A6E4
-13329175694D7869E60B837C4230269922B681DD5588EF0B0D77050B71D3258A
-89DFDA0E7B4EBDA9F050951D4573EA959E5499DFB5BA7FC894229B26DAE9B82B
-8963640EBE6E892C84FB3954ED3B0EE64E273761B4CCC34E06D88C630A92A79E
-E2B0526201FCD0835D5760F680BFC51573894FF976BF8E6DE378E3B24261C8DD
-BBFE0C9619F2800F807716E9353489EA192157AFB5184B4D4847157491D61C9A
-93AA2DA0B076444CCE6A2065BA5708FD5ABF50A8AFA43AE65982F596CCE43B0B
-550C4D63590E0B8C48884B2388B1E3A050035DFDEB1DA220ABBC945B542E4551
-A039914EF703EAF77FF5A8F53073775703CB7681AC0ABA95E1CF016BDBDB0277
-AC407281BB4A5DB2FDC550DBB92130234AD7054C851A56EE0AD6827B89BCC5A5
-2748735C0F862AF250B55D2CB737DD5B0572F7C129C09828E4D71419C27B59BD
-F9AB2A053F432A956EA9E6801986D3B1E55A80C4397E458ABEDE8E9087B07FBC
-101F3BD84D24C5BB61CED41E292B9CCC884681A3072E0D420F0EE2B1129FC5AF
-C74D2A359AFACFB92A1C849559DFBF0D09018496369B5377E696C1CC6B9D9B67
-030342943DBAA19E677DB0A8DDE0066D8E6896CBBBFDEFE13EF9E5A85D2A9ED3
-9540316EFA056C11A8E65480F85A0CC8D0DE150B8C7D22E45DE10710952C3974
-C9D6026A9A6894C1AE2C650EB15EDE4E87E4F457FC7B8EAD32BCC5FE508C9284
-EB456AA6FB8D297C3F5E71AB1526956C66CECD83124EC68AE6546E9C3BBB42F6
-045F4A6A557145FD982F599F8B285C0772D6F1EC2F73ABC61E7EA0E6A8A4D391
-B5CCC56AF378E9CF4DF4732548024D51CFB3DA18D78747566A7F7E9249834BC4
-6557A1CF2489EF195FAB236BB48FF427FD32E1903B8FF82EBEAD2E1CC6D54821
-FB3F6763D2CB4E6E383324443D1CB3295BABE7328B9FA95813932A37FFC3A9EA
-E45196FCB6236C73CF95FFB675510259939F4525B298B3A69D0B52472BD31D45
-24CBED3F82F7477A180FF3430212B1CDC21EEA48F799B01B763C93CA93398E46
-360707E212942E17BF445D2E054EB9C35B4204A7AD6E72CAD1DE1589219E6530
-7E67859BB41148903CE77201B8FEE094EB659865F6A20E3DDD920CD27B118249
-FBBC11810A14E60E8C09E00363C039AA0360BDA398F3C65085905EE781AD5726
-DBF612DFCAB47C9E9E3E516CF26F53B6605124DAB8C876F50973BD3038B03EA9
-AFA4C6769405477A68BC4D7900E1DE54207FC766AD11F19A64AE8D9A2C058BE1
-E89035EDDA2E568783B36154DAAC4E3A980A38968FF9B81573D5C2B3FDC093F9
-A98050E3E1406E2FAC3D1F9D11BD6F511B1A044D5D62329DFC901E6F962A3DF0
-3663AFFE48E0154AC5AB244524B79B5D5649A2F9C2223DD97594E3BF55225858
-1E8173B8A7BCE623F9B641AB8AAC88B9224622E102CF2D091ABD006875F6C616
-FC7220BE93F77A11E729F04733D12F8E49AEDA23A449CE772971CDE7A8065888
-0032E17FD396B162C22EC213E0D303297FDB3160B303F1EF69851506E3332994
-760B7E59FEEC01445E28C6681E85D90BE5680020976DFAB52AB29EE292747C5B
-41752846FCD3C2E0A2D0F0E8DE92D16B1B5DD41899AAB80EDCF2487E1A986E59
-F7442F68B05C8E1FF12D0D0CC808ECBE51CA429D9FE388929125DB8F03036C95
-39BA0153733DF29B00DA9C96303D265CBB80D314EFEBD2AA26FEDC7328937612
-BBF2714552B94C8EB9A567928C0D275C72AEB08638DE4324115AB9A451ECC6A4
-F0E47E73CECFA0AACD1DD82232540A7D1FBA6075745EC8FC36FD31E3BEAB060C
-BF19783B8B65519FDA47D5BEF90ECA881ED512D200188ED498781F6EA83DC1FE
-95815D1B4F05A33230ABA8A1FE53E13F35B92C1D76E15265C1B6F69103FA33D8
-A90B1176439861ABD9324D2AB91EC9A216BD93472BD9162F9B9D1C0FFD26B185
-A696D9C1927ECB9B20F1F7E1454AF91F9A4A3D129C4B034BA2D85BFCE6A2A1BB
-97B5674A51D56C6DB03A8F26CBFE9DD301513B2671F0BF7B074C4D159F9FEDDC
-B1225B515C1088056A9D81E6FB640FC7D37D3B9174FB65BAF5AE5A5906A5B250
-B7B297C805A087FAEE9D888E0844014C3E4931F29D4B75F8A31C02B0B69A56FF
-A2FE418192D1E3E30FE8414A1E1852C8CC2EEC091F635F6A76EF82878A260F9F
-D9CB3BD28EED2307F1E8A0FEBF82E7B2862E176EEC2947307D81607CE8761480
-6DB2053DEEA46B9391ECF931F0F9BB8BBC097A37C6B02AC724D839BD5AF43C5D
-7DB5146B769DD171844C8EDC0C4F93A63CCBE7519DA6654422B1E4049AF6E96B
-0B23AE5997644EDBDB0C139BD45CD8708824AECA2B07200CF7B384B72D23D60F
-DCC3A98CEF3F6F4744276C714C08B835FA11619580E8E0F433E8D069636BC321
-42D6BFA12DEE9F2D22293950E5097AE72625C6A8BECAB5C0656716D4AF11C755
-298500684671ED70FCA40239AD0A04F4BAA1426B5931BA1196F1C97C765B1C05
-602B887B8482F9A4134E3F0C557E1420A9AFF802445DA1F631B82AEDABA2B98C
-716B9DABFE8E40585EA65D7910A2965F99C5A63BD178E607547A12D60ADC5DAD
-589F7EDD6482FDB2113622C07B0444DA233213846A61C260DE760485A35A47BD
-C020482DEB042B4D7295A7F90032F7228AA7529E7E2C9BB2DCBA64D5BC6D5419
-41D306C16B0DA13DBC5EB7C6874B5362A6300CDDCA16425AF32FDD997E48429C
-EB4B6ED76765939DF0EEB4DA1C58D79BE11980B636C9ACAB2776D3549CCBF157
-4D640A86E1B6DCD14E56F18B0B30CC1FEFA6199BCF33C80FE48EBE85BEFA1174
-4F52F67C06D192B48A79BA47D4E6790563DAA2F1B2967B655FA0111741854C3B
-B53410C582011F89D2BD1509718DED0DA887E39D1FFCBA9BEFF793085A448AAF
-2798D65DB0A3D66D235C00A9977F2D3D3E978F4A03FFF783BAF0C33949D42541
-FB24EFAADA5632EB66A1CB60E22C957B13C7E52D8F49B5C99A52FCEBC7159E33
-749A4F647936CF51D5EC511720FD6DC01A4B0C2D3120D4DEE5E498412213DD20
-5C10975536EEF28F9BDBDA565779E3C9F1C3A087295F6C1D4DF2CB44104BAA81
-C5C8D6B4811AF48F65A3D5BB01B982423E372D612FF20012B0909EC8E41DD25E
-9B21963AF687A9678FD79FB8953CA5A1E38E709457C196D3D080BD764E898617
-F7EDFF583D9D75D8632BBBC57982BC9BD23BB6D9E6C06497CB4C01625579ABEF
-1BB42CA4BD7261CAE0CDFA67F50A1563307DB14C7D3ACD49E59E3842343A97F0
-A5C45A8BD3D80A583B90D88D8829F27B093FDB2E91FF5ECDEAA81DBE611D93D3
-F4FD48F3B74EFD140EB1EC4BD5A463DCC84E2E7B157C778368E46D81A7B29F4C
-D4794473886CF8E2CDC60D2FAA4F537C969175E3D428A3918CBEEF307B34E981
-9534B42005097443968D4291F3CEA793E707B37CA63CB2516E8575B8FAC0EEC8
-48C4CD48E2819E4DB18E428BF7A933753845B5ADFE3C0662C147667BF0FAAE19
-3B6CB8CD20C9D1B5657265EC8F04AB427FFF352BC8A343F98D1AFF1EB6EC03B2
-FEF15CD3CE27135CFFBC2EDBF29E3918330D13516DA2FD899299F4DD996083B2
-AA5CBAF791C8BFC31D25EE31BD8F9E1946FCF35DAC9ECC347BC33E82BE5E5236
-27E424FC8F18B01BDDF1B633C8BEEC69B772F2CFCB521FF7ADF2CD57C6AE9FF9
-B39BE3E3A5CCA2DB161A441246D970484B146B3275557216D001553A58859F12
-9A102D85699E24B901FC3B4D93B84F83BC0DE7AAFCD886703EB065BBDE63C83A
-958EFCD18D53136A283E821E7AEA7EFEFC14602B1E4C428AF80AD991EEC31E69
-B0989D19353B1818874BCD39DA51EEDFE7EA12375B6CF462385963D5CA49F7C1
-E8DE6BDDB7807C3AB5F232E9C8B242F09B18EF6B7C4D88E47E3BA33EE16E0A3A
-DBE6CD175E403DBB1EA5EA1A74C72D749D743C63203050E87A60C952E9925ED9
-9C509459F31F7B69E38E737EC96EAB6B2402F689C10567BB758B9844623C96A5
-9206B8B17A51D67745312CC02028917150D16CDC362E4052C6F5D4405B686A6D
-B7D7CA7E60A99533D0AAA5C0797BDDBC078997FCC20645763F4B5F9E4BCCBE92
-E2E928BDFCB3EC1A9941CBB04D85A0BC386A612A655D849A34A76E3E3E1C91A6
-35ED8D77D27B090DAB616F8772481C57741CD4A3803A35E863D9D2C4863F0AEC
-305059A8C70BBC916AAF8A79077287783F2F01C0F676678D6EE8D1E7F5855D48
-958D0C1304F94B4FC6BAD1FC62DC3834713803B58C680E1AD81E70A09143509C
-B79A5BD469AD6D63AB7C8709BD8457A635E85EE5CE2B81B565CAEA18E6A6F738
-9E40522E0D7B3CD35B68CC2B88FE81279F379DD01643DD52D74046A0D0FCE216
-BCA962C1D10BEF7FE76C602CF2F8DAE1F7160555A806CE3F1F817A3694A2601E
-443A85C32E47393B3D4C08ECB5F507C7A12536B89B446569E5E54512A4897EF9
-84513C8BA4B9C8AF4ACF81B2BEDA480003360DD08DCF43DB57EBD401C9C7C4AC
-E08BDA494B711F9F2E2F954051D7A759BC73E5446ACB973F2EB4764BF8227DFB
-08BA8DCC4CC289E367EB6CB79B8798FEBD585E4C3DEF59834570935A6A3DB3DD
-9630020F4390FED9215ACAFD4683FE82E1F67CBCA8CDEDBDBEE29776AEF92743
-8A28B00C873FEB39A9C693770B410F1B91F631948247658632896F821A43C3BC
-E0E9B92E8017F7E5138F1A472FF1C4BBD64F1642A5818F138B35EAC4C7C1FF6E
-917F0AB74AAA9752283E94DA08563A52BBEFBB97E43121E5FDD1383FD94177C5
-FC7B706A19FF4B8434B33D603E4F05B5FEC2D8A6315D2CBD03527403FBB25632
-4720C539EA5DC49727BF459E73770E64674E49FB76DC914572E9CE7B0CE5EBDD
-50CF330BC6DACA9981FC741455FFAB7E5C4095B0FBB4ED94F327A5D0AFBBFCB5
-5F795A9DB07C04BF326B8C95A73BE943EAB0203DD488FA7F6167CF77638D98B5
-FA44BE3FE030953CAB6CE9F0BD0258FC6862CE8A29D16528CA5597E7997B8078
-70534850BDC3647ADD483C6BC7081EFC121819CCE63A080642ABFF4A223C1CC6
-A866AF0B64EAADE21E55123A8181A1C7F36D5BC654C6B31231B6839FFFE492A4
-E5700603C7B28333967D1F17875ECCFB3590F84451374E30A8962EF0DB618EEE
-D15660CA35168EB3531EF23370A13D629CD1B601178A2A78FAB7EF75D59BD3B3
-3C0F6A0A2483964AA9621848310A1BB3D9AC3EF682D6B2713F821DEFB9208388
-09862D1F53E11B5B822A4F3B02AC5C6CD27B7EC5C20CB2726E811034B360C16F
-7E0B3CDA6E68A36944337E9277FF66379D8CA2D67BE9BDCD844B6FA85DB222A5
-DA51BBFCF8656D5038CB442C49700AABCA3EAAD9AA163B43EA2502CACB0FC4C8
-FB9E6520CB42F5BA1175E9E56A13E4627B81FFF8865DAC818B0A9C2624DD436D
-A2E91BB348E4754020ABA942C7D521B1052D8FE4ED5B5680DA3E33F08B0021F4
-8D62D2DE042B497D8DD8B37CE488FD543A1706F1C87BC111CF8AB593E35CA099
-4D2A02E0FA787B6C090023AC5F62F86E1591E37EA20006B9D3195D8C047CC5B2
-A120139181147628CBEF57F3FEDFEDEAB16B4B7282DC465FC53E50F199A79B48
-8D966083736285148FC1A76382E4991C7EA605B05AB1460C2CCBF10A2EBBE340
-ED042D2A9D2092F3E91CD4C7BA6D9E60EFDA103206E67C6501CC95062F70ED73
-3A591E7FC37CB5A10C92FA2808B494E4BEFC956FEAA6EE82F8D03663BE9C9139
-836AE3D1F88C0B7DBD8AD9FF3BDB7F36DE336D4C0774149A9810C27B3A2EA083
-BA59788788002481964B952182374BD1F9A72545CBC4B0F53EE7411E35C04128
-5CDE87DB0C69A2B8AB74C702A74130B302A8BA4B85D021BD021A68C76357505C
-F439AB81B5FA7834BB48049DF25EEEF85887AEA66DA7234F11FEEF9E665EA2D6
-2F896E5720679F8546C80B37FB91AC7A1EE7182851B3F20BAEC72E1C74E18755
-3B908AFCD384F44E26674D13F3FFE746A718A04F7C92D0E09C21C1AF7267AA50
-0C7C0438E3AC17251A08C4A39142273868BA91E4B9A41A159E6C7B3EE1B95894
-625F2AE90DFB33B36425BCDB41AC15EE4588EF93C29E60071F247432C76BDC13
-7270E92989CFDB470685F6B5D187E15C9078E09A0CC2A46B9229FDE4EC46B236
-4BCEC1E9E0AC88617DED14FF9ADD9B3C874541E226EEB642A3762A382988A15E
-C1BA3F257880D0B0CA7912BF529F626E76D1B242833921A29725CEE9A66C0068
-3232BC8A3170DC768E8D9947B62742B9342B01AEF38E8331B997AF996A73FC48
-C8A457977CF1B4251E645F327B1CF9376D15ACD06D5AE59270E7254A56FB6852
-19CDAC3B14512CAA4D00823B693A1FF0C4E2462E3058DE548CF52047D9F9A39E
-109C9CB83E5AAD0A3C958FC40FFE45415B1EE51132FF593913F3BEE1C01AC778
-1BADA832CADA92FD40EF207617857160563BEB866C76D14FA651507C6739FA28
-FDDDDEA39E858CF7439BE229697565228F4CEB4C94A6878D30D32A00A1E5960B
-2D32953BCB686E0DA000AEA0192BD53618AF9481121779CACA0DE4F2FD4CF81F
-8D4B9D3846AEB66795F81D6EDBAE8BBC60AAE4540E19A6D2173C22D50F9CAF4F
-C4373617F5E449AE35F9820A53893570545D5EA6AE1E8B3D7775535041FD7860
-FCE9F0C78D142172CFB777081BB039877B98D59C797BB2CBB6E17E42DAF185DD
-E593D88552CA8605F910FB64C4292052F781FF971200FD88FFA5BC85CEC50068
-A91B20C2D4129FACF68EE0DB5D814B107AD35571F3BACD2C754EBC6175522881
-25D2168FBAC61AAEBDFC1F5D64F2BBDD8615623BCDAD49F21F7FA77743CC827D
-BF98D727204FBFB424F16C7151C282925198C644119FD82B9402D268755501E5
-7382AF8B16A825AF7368B2D04B77EA16B9A107F6588C346805EC51AA2954E3EB
-59F5C44A28A31E7AB1724337C42F4950651DDDC87F5EFFEA1B537F92A3F60058
-F99F05AF0E58FEEF778DE67A0FABBD933F0FC8D82C9A463088D46BB24D649C60
-C32571EE3E11E17317459D2CB58CB54027F895A862C18999BC0B10B1FA9C0B8D
-CDC2DE7847F8FAE9CEE8D817B4650D730B52506D2FDDB02B0B8FFE375E885C3A
-0F4A747C63BC4D70751B98A32FD386FC8BCC07CD52A9AE3C959311941C77A5C8
-6A5109E4F43C7B79A779FE30DE2AB50F4D3CCFD51C5CD55D7C43917491B364FA
-3BDC3B24043741B0C5D617688A05BCC8F01A14D643214E3B186E6D791A2AF3D3
-A972AF68CF394DE082CFCEC222EC928825CEEFAD02E84F845A5744EB7FB9841C
-F73384071D6DB7E6692B8792DC38256446FA4CC2D3D1E6F7436C568B97AC2950
-167FCA9D6D997218C05A905DDE26DDD283F64E21B11BA2D9217D93DDB0D2F985
-10770F9D756090F8D5F3B09A8B917F12D8D43C4B354FC26C8D56F53C62872CF5
-E32D25F0A993BC0F2E4F0E2103DA6E729996268A3FE96EA48EB6EA6B9C21D042
-BBC55FBCDEF0C786F1CAB555DEA42862F3B6B212952C1D944B010EC51DAEB5AD
-6E0D7361AAF600CD2659DC59DAEFCE791D9B0D3B718D45A1F93CDE3B2ED72E70
-13EE1705DBC0A8F0CDA57068E671B86F35CEF8161355336342F2B95D4092EF3A
-D403C417A5DACD576CC9DE10F0F837240B3669AABAC540361BC69F31AE7ABFED
-96838D6B70DBF3BE145BC07C60FE6498A925C51471788AA5D8E1E69010C8C513
-87C6602BCBD4AE75DCE4BC916D8E4F7B663EFC9939F55A6A8BA7D445D849BCB1
-2BD64A02224B841BC9872865F9A4068DBF73AF28DFCCDA23CFA589FAF6483E4C
-1A0D5D377CC241047AF5172C4E1A7E6C16750E53E61A74BE0CA3EA6E65E9D53A
-912578C709131FEDCBFCD1EFC0610F6D105438CF64A7F259737C3FBE09DA07CF
-8C67CC6FFA640DA3D57B3E2D695DFECF53981357BC06FCD7D089859064651EE6
-607BA03B0C3D7DDB0EAF225F1F28E0E4B38BBC08C76B6C42C4B1747AFCA9F2D5
-BFD0073C03841155CCF38214F48EAE34507272EE5CE69051CA87A6B6214C7A0E
-27F9F3AC4C962E920542C762510244A6B61502684BC99F9867557926066754FF
-D707640D0EE946F98922EC777B3631BFC5230B3892FBA074E6B0C91CBB36E51F
-4BEFA5CE13B58B6278D9A5D82C7EFE170EC2BE0367BF8531C7495C37B848DFE5
-3E789822DAC88A3D5ED772D681F4915983B3A67D3949FFD1A659F936771AAFA8
-C61C3C884F3BEFF84407144332DEAE18923FBD1CCB54DDE059694BB3E46BC0AE
-8C5B914EAA3EC71DA87B4E08CAE59E839546E0D89B3287EF19796E397826E7CF
-3E966F623FF66FD752460A15A7D85F84DEE0BAA16DBA3A649DD0420B28B4C39F
-D49F2058BC109C46C58AE2A9CF47FB3EE019BE11817C2623B473BED923955FED
-5CC714083DE1710E8648B6CE7F900F15C44344B2FAB16355FBD00ED9D16E4396
-36AAA4F49EEFF25401EAC8143E549824FD3949091BD47F24A84987379E3C3526
-8378C1BC4A12B09DD99B6AC638532477CCA879518994B01CD21A3930F1D9669B
-8A778E0CB2A68114D40996A3CE8E55436C5E8F20359E45A434EA9261AAF98F82
-269F021803FB661D4F8C881ADC90A09A1FBB2D03AC115D3421F122D01376AB23
-0220BA0DEA220D22E1490FFE1DD1CFC30986ABFED309FE126F0AEFFDD76EA1EF
-65DBF44E3765AF88E235C74E5242B02C802E4FDA8147D8874CE1C71669F4C261
-E06BA951DABCD307393DBE0F01349B66B8CFFEC90C39DD30BB8FEF864F5D85A8
-B46D8A796F5E25D033E59E14EA5E480F34807F92056CB5C143434525B32A77C9
-A76C1713EEB2D49C346D4B256D14EA6B0ECE2709A9E500C4EF203E031AA43459
-66CC59AB6C19BA33D153A4C53BD6B6037C59BF2C5EBC14563D97E38742FC23E0
-E6C5A1E8896CFA9A03FA76F1947FF788C7FC7C9973B958CE08BD2671C87A4EAC
-BFC023F12BDC146A49533435C0A60D313E0A08173288432DBC2D9DF015547B95
-A09D740908831AB01ACD75AA036961BAE0EF713470E727FBCA880F252116EBAB
-47A38B2D4901C84496FE92D31BBA8CFD8987FFF5E6E290EAF41E4EE3C9C7188A
-76AAA149913F62391663E75BA83A077EDA63A5982C3FE0EAE75C5D9EE8E17E5E
-21454664F25BC0684A225B5F3615205A85C07DF069BD1FE0FC10F12CD65CF334
-1C656085F29212B1E06834F4914260FF7862337BB4A256EF78D068C307947F30
-89C19617889308331CB4B53BA71E38AAB0D161B4112223719DD8D6D63C33FE3F
-569132EA533758DB58E180CFBBD49DCD306FDF0ECADE93EA5495F03AA370C394
-F8BA290FE270F202AEF202A6D15311D2F6EF4D7240E86F95224F6B2B58E0F81F
-82D037BB45D290EBD666AA3A3047484A4EC3ECE51978D2C860FAA066FC97C07D
-D6CE20450B310D93EEA5A306DA97CD6FC055ED1BC298F994CF8A92F2F8335EEB
-DAAED0BB928567A3F61A08AA1760B22413020CAFEBEC16A4AB9FBB6C0FCFAABF
-FF240F40CDFB5AFA8814156921831411912E2B8529325C35E7EA940610C46CCE
-ECC4090734C7DEF297B88B4B4119BD386E51730A492D9A53996A5E611ADED22D
-C6D38152834AD04CC9996E2FBFA34C90BF57ED326BCC7AB3010273E5EE8F1EE9
-60184E436768D65329665FD1043B419D165C12223A22242D03BBAF6FD6DDDD5C
-25570137EB04CAFF3B54198F049A587AEB1DB7604A79F5F25AAB7D457910A1A7
-A5C57B2626502F2C1B0A943C28CA273AD4E8750452FBBCF0DCF9A3E5A40DB15C
-EA31013596481168DC5C66DB2C1A5C18E8A6C8DFCA1BE89FF5727CAE7E9C5250
-67EA84EC9B60DF4CEFF2F4B127D9E6B000B543048D67884E11A41EE56D2D7736
-E1867FEFF8C8B97DFF3749A6C583AD095B8EDE970E3E2011996E4158CFC4E538
-F2951A95B1D9B7D778AA7252BBF3AA1FE817B6E1A3F3831F981DBBE0232B783C
-4BAFD6B0CD
+61A06A43575568DC3CF3844BABF04CA767E2995196097015E0C4F622C4356B6B
+F41DBAFD797A4B9D7AC22332C552043EF98913D0D9B50CA6B7CDAF903BC5C04F
+D20A952BA5CC35B646ACD0A287C956B98C450051AF6AAF79DF37F8954473F8F6
+652BF03AE2AE82B99D820CF93F5FC0BA17EBD7AF90313E70594EB5C354023BFA
+07912408F1757319C7288E99872B907D5AB583B082EEED8AB079C63E38B07D11
+6744856E689A479CB3A8BC081F33CB06755926204981DC0A45B3ACC18F6865BB
+EE2C50DB43B62E3630FC1D9B1FFB3BFFAA6D0A20C0381ADF48E4D916BEE85BA2
+BB40F538F55C11D50F882B73913840B45161262BC8B0012694C3EF26452F9B77
+2CD7C7AD6BFEEAFE31C8A721C2D46AA00C10681BA9970D09F1E10DDB693AFE84
+246AB18279A2B24E5B50A2FF6337B7B1039FFDD4B00ED3667B5F2F7BC2786D2F
+525A0E82234B30711AA835EAEAC2E404915FC7EC0081B194765032708B5E11CE
+EF6868298CD26E5B9EF345BFA3EC2911E2B96A0B40AEAB95BDCCEE38F5EC170D
+3BFB792D2DDA7E57BD2FB7669484EF9322A1BEE009594901095DE2BA9A15A0EE
+4DD77404CEF16EA6C31FC04A8FBDEF27B9FC1AD3264388B0B12D8E476305B912
+30B51624D4605C45B514473F327DC3EE8BA69032A95301CF714F225A92C253D0
+D943C80B9CD0524C5B87A8D052D2E47A9725EF869D3B89097CC13CA9BC695FF8
+A9468004450A76A13B7EE78A03CC18917EC44036C2DD237344E594569B8F2DDB
+21F7619180B8C760741961CCBE54FD6DD07C4CF73B346099234A1EFFEFC88574
+6324E4232BA18A38EC9F0B780C298877EF0AF42C1EBC2EB52DB64A1E1E352503
+36AA29953A073B864FCB31BA938A4163D000A159ED4D345331FA1EB4009CFF67
+1D107BABA6AAA48075C6C50BC7683929EC146594E55B01D4F5B582328284068B
+2AB05CE92EEE1DF4557DFC8FEF287CB7F961F4F1828EA48B0ACF5C63E1EEC8FB
+6A0EFF132268B7DDF7B465D4A21B05993F4A4CFD168A700D04A7303BC2C00391
+392C3FF97E770E6FAFFFE501242B20B4F7B6C17331C64BDBA3E59695E176CC79
+E7632AC6D2E920AA048BD1EBCF9909D8C314D2EF3CFC5CF88D8570BAA814D467
+96D86CF4415C5B739FA6FE7B4C228F06268D28EE33381982E7B005C26D2604B3
+AA363CA4732B9BB0E4D4EE50556D777258A7BC232087C9F00B0D5EF70270B40D
+3071E14E4E5AB5AF1C686C5A7C268D36A0787DC9300D4CFA004F89A73FFEF780
+E6BBC957E31B764159C3ADF752E6E1A6C3B5B855F8A483497A347B601E3C8DE0
+362D76B715916113CBD2D3765197074104C7E17B87670CDD5C227A1467BD678A
+BE442F196034B02132850CCB77143C2873447FDB8767C462C63916D9D4A13198
+B7910E1B274B27644DFB2E8372C8CD55E6E2AA5CA952A079E1E6389927495921
+CA39D69ECB4DF382FD2DC213EE382BA1A48CA886CB6AEF2B0C50CAB47B1FC40B
+2C95E13190C92480439E3C56188D162C294F24987AAF4E15E8FF7ABBFF2A12FD
+AEB884FCFFD671EEB94CC075B815C6A45549EC23DB85923F4C37221641B75CE0
+C5C8FA8403C2C9FFCB66CC74C5160D6C7042DDFF33A954DD01C8E21B21F8F364
+F6FC735507D0DB5F68F2D8B520AAA7E0F1D503211339F9466006E9A148F39874
+A1488F1F0458409D442D2BF5935A655AD4656A8411543F58C63DFF9C4FE56256
+7F9F876B56BEB208F9DCA363D2E0F7DF3CCAFD5F9674675BF622CBFC2D1CEFA2
+7A5323971101D3641E99D84197B00D67436843EB9CF74C273062159C361A07C6
+E3F1E0E4666ABFD5C9AA8F914F05D02EE1906FCB66E421C73243257170617FEC
+2F02D5A7F3347CC0D290E52FA815C4D5D2A16A4D4A5E0B50165B0C5C77B675F1
+0EF343D70813346EC4D7384A9D9A091984AF29C810F8C3D4247D37F91C5DA967
+747890DFFB25E67F6FB766168487AE8BD8E49C55BC1B68B831E3F510BA1DA3A3
+9F810B865FA98AF89696CF7489BACBC1033A1C929023588E9E03FAD6D901DC52
+A2F5EB74DB679A16DE42F7B47BCBE16617EDC7328A2CEB2C23733D98ED753C66
+502DD2FC75CE2905A429B5B56C62C1C0FCE17144D96E0C615E7FEA48EFA05D9D
+344ED266BD96C3296D6005D289228C62D572167E369AC65724E0E62AEAF608C3
+423FD37E586D41B2AF9B10E0A36312AC1A6F61418BEBF528932FE61881636837
+47CFEDDFEB25F7FC156AC7D6E78D608A91270FF6D1D510E8CD61C289F3E7960C
+B6093B333A0CA3CB8BE51107C5C1C085B3CF6D6F61379420AC1E5D9A3FABF084
+80D6C719D93BF74A99D681726C81F9F83949E06A560F3B3905C0766134533256
+6CEECBBE3EDC220193964706085526386391260838C2E885C88F882E29F31F69
+149CB1B4B788BE82AEBD32B5A8F07D1F537D85077B4BD1FF945EED4BB41B79FC
+CA0B25D1D761129A6043D701AB1F6655C06DF7B0891C3C5224977B9464A6A794
+5FAC6547F7548402420976CA3A644E5A7CD7F64974B71872B02756FF6A135EE7
+BA60B9974A0A2CFA4E46D91B929A3A0DECDF44C39CC06BC2105538856718CF59
+59B1D9BD88735ED4D83C17A67031178B43CFEB4C301E551D708F5F08E80E5A1E
+5579CDA06C9902E412052CE7714A8BE29DF9911F556899F819A7FC2565522182
+20918E8C476DFC00F79BCC4248BCAC6615891C3115B30A39B365044CDA0AB26F
+C8966DB46FB9FB7B7BB37C48B7CC4852C8C05A57D92ED8E6AAE6EE5A60BC81B8
+C0B22E5E74610495094F12BA6D60DA3190C4CAC7F46D740005264BDBCDE61FB2
+50B8DF1CBF41195E616F4595F7860F1538363D529E3E3FD2D408B56CE034521F
+3D9AD6C30174D0AC1A9F9151C8C8DB6E7624290CEB82632679BD0A01EC30B3CF
+FCE72F32F4443E137EA554CDEF84B62CFE21A5E8BFB2EE52C87CBD603C8E0FC7
+35A9ADA5E49FC4C7E3F1538C84761186C045B9F11074F8061F0F4BE061D22C85
+2BDC140F6CCD858B1A4E9AE9444B4EE3DAEFF4E3760A8B851ED3B9780F990595
+36210570D82E9DE83AFB3A20D0D955F69FD838B6F9F785231A84D8BF9F434665
+CB62D518CD5F4623711E022DF76D2CF20202FBA15A1D1070FEA87D6BE954DEE0
+370280ED09237334FCA7AFB1A0CBC9A153A25A929BEF57B202A5889958A9AEDA
+535781A11DA8E2BB5C885BCB83053BEDE8436846C7B54B41703839F861F95D5E
+3C34C4DC8FAADB39D20DC53F642A28B92D0BF1B02876E348B088AC9B2C55DB06
+808BA40658ABE50D6956C9B1201C8D3D97CF9ACBE1FCDB7E7C02D1BB8D87AE61
+2902D77900C11D1DA6CE808C425A7EC0B31BBDC690E98A09AB656294A1B17E00
+2D12DDCAA5E0F1B44EC9D7CDFB5E916045F5CE852D3FF3E8D421A11356EB4392
+F7DA22AFA6C18C7F507F5D8892E8F1DF11E5CC965A61D732F12EFA8339951645
+CC3AF8C3EC88C5B372729EBBD3530439E0E8AE43B43CF57A5258AE8AB259EB71
+9E1F057688B110D4177CF54B1D56D2EAB6B1DB603D6536EA9B9EA11DD57E7F3E
+DB574B05043CEDD701DF8C0982EE726187EAF637ADC279BF7C83A244D3EA9800
+F9797A4D3E4D5F6669B49D2B37CC9BB1C9244B54DD62A5C4BE533DF46F618D3B
+9FE2203DC6C75B25AD6B49B2A760D3604F156ACD80CF5458FEEA64E243B2E527
+E750720E97CCFFE2322734D5DD0FB1A8FD8FA77AD87AA1C8EA1B023F70BCCF92
+624F9A6B0B27B5C8A5AD21D8C08F62BA1738359A4D78439A7A580D605929D6D7
+60790297E11930F43BA89832A2D351CAD0F77AF8BB70A2DD5DEDD4B34FCBC714
+C2BEA2C26F768EE44D27F39021F5AC95FEF199F6ACC4A2F3109E081A3AC7F42D
+1767C2A82683BED075A3293189784AC8D12F17FC3C15B83915E0425926D6069C
+16D58DCF97B1D8E1021F51C47BDB1286B5F9CB60A2B2B7D3F219F20C8651DCCF
+80B30FC5B20DD6D887BD571450A3A005F5980E90A649DEDD316A452589B2BBA4
+BE8625C231E5D4886124B24580C7795F7B3D063667F400C18150A80DEA255943
+B9BC4E1F0A0E5F5BFEF9F7322C836AE892F91A4B3291F216F99654C54BDEB5DD
+87563AEAEED8D8E65D1B60795F1011C3CC63B8FAA15B381E04E1FBC2A5BA5EC8
+B76DCA2AE3686F7D71CF0662338C5E468C0E8155715EE8DD963FA7C257214DB0
+6E523E1370D0F14165FDEF1C9D2F9DDDB4C61DC764B946DC40BB897E8A0BD7A9
+A7D9B684B5899E1A8F4CF9FF67EE19B4FCB61AA4463C5F06309C7B10A131AC21
+63E04A69A223818185F44D48ED721CCCD98737DF4BD3CF6924C6EF30372E9E38
+22B3230829B054EC1B8B42D29059AB5E706E5EBD6CAFA57502005BB170E5B471
+8BC330C11C068849A61C37E5AEDFF994D9A53E73E12D3F7BF63CD6C435055F5C
+875056658B8141B78E3E5050E3F8209CEDC015445893B5B798DED6777B98017B
+4B9766F79E20DE51B4081215A072BF3BFDA0AA741D3EAB7F35138C2B32982453
+5681A66A99A21F0663C8B559FA49AD7B854BD648335DC7B8F72EA85CEC66231B
+AE8F8FA55020FEB0FDA90055CE8255D02C0E2FCC829AEC8EFBAA08071CDD03E3
+9FE8C4F28DB460E0AE8514E319ADE43559B190D9104C78DEB8DCD9E1B2118746
+3DF257B5DA0A52F0F6F0F70352C2B1F851F14F3251A2CEF2B15590E4E80363ED
+652CEA14D0CD2FAF8CD0CD6A7888159FEFC0A3D8978F49D85DC8BFBF33FEE7B3
+C0B040618510F483EF114F46A509E86D08D9470B9A6293083E6FBD511C388D8E
+5A16B5777FC9FF933366757609163E9567B121906BAAB48B1D3CEF9D0B1028C2
+18E9B6536DDA27ACD9816D2D1D5571038F936FE496081B801485F9CCAFC7EE0A
+34D2BF741863A5F639D9D4E123EE90AEB355314E4E38F3F4C243CAD3112A0504
+48BBD089B189203DF7ED4933819A0C1D57ED8AE20B2B15F19F8A0CFD927CAC50
+116B04C25A4E5B20C4C5864A8DCF8CC9BDF5CEA59D1EC52EF62CB642A8FCF1C9
+3E036AA4DD6F4ADBA4F8CD013C622F831397B8640936910C6D1F82ACC6451C68
+760E14BF5B7845762DFE0037BABBE5046C5F3CE3874702EE51D1A463F3B86C69
+7C758A4B1960E1A796F07859A9B1860AE5BC7D5703E63A37B9334D67613241C2
+5B606439A6AB29FA7386317DB876D26FAC05188B4C59672F2CD9A750A0E70CD5
+AD69A8609AB0C78F625E7749C770391D5426D9C3CD1CD7D37445D9718C07A37B
+5BECECE3E6F3147731D5C12C4946F88A7C82500F8C495FFA7E2FFF6A9C2F0BFA
+8EF861E6C369C8DF969B5FB0F02CAC74E8E080B16BEF1CF0D1A81E90FA1612F1
+FCF086961FDD981A8698FBDCE44A80E4290B7B553D9F46BDF6E346627437903D
+499C80A29BE6E7A2C03D943D23C41F1B85C92FE922EE3A3E0601565564C55116
+17F01B2DC9FACA12AC59950EA410D5533B0C31D89FA68D07E9FF1139554C7920
+FF84CB51E13B7FA3EE6A32DDD9FCC192B576A871CBC9E04C5C66ABED560AFF24
+6D6271979BC7D04F7287E32F52B1D2DF60B7D7A53A7D776FC36D70E9C6F54E97
+44F15C5ABF2547DB40EC913EF0B9597A721563C3664E74E7283E9030CAE36B7A
+B14E781BC772691347ED48EBAFDF23EDC452EE8A118A840A185B7C1DFB7F3AF1
+A2D64EFBA1C9F662A35F3B46CC8E2D7E7A7F63F9BFEBB6E4A6DB8FF0BDC83E9A
+A70438435C3B8A780F7F92578501656FF963ED66A73921E014A46385450D26F5
+B73EDA0630201BEE50325B0F76B55E77BC55F4401251D083225EA5777F42A7C7
+748FAE7C22E6A17E04BA9F6D451B35A63DA6F3D80B0365E159B3E993E0DAA242
+2212784C9651F9A0766F473DF743748FAF491CB69728C2473ECC5524E0F2997C
+2650BC1F945EDA4CE833980E706C4D413F7929804A0B1D182E26052876D6B836
+01284296115233D90D2D0FE83317D4AA206A67207BD899DAC1D726C937A34193
+F0B6EEDECB391C6434144275295014BA4283D4346BCC495AE3EC6EE9C4FA7711
+BB6004D39D7BE17FAF0241F2798C36C451BCC4227899837FC244BEC3432ADE1D
+9E4F47F45E9B1D2C832FEF6896C92A207AAED7AA924520D096F983D66DCAF476
+83A2F6F1844E7EC5195EDD3E5FBD0FBAABACE5D13BF754BB2B0CC8FC633D83BA
+3BB65BD9837B109AC1B5B255298E6B65AE4CEC0FFE24DDC3D1883FB0D6F8FE65
+94D0A898278E0313303CF7DE2E37BE0152A1D4CDBA04ED61D54555B1B107D9CC
+C08C89BD2A19050191867EFAB8FD582226B03D7ACFA97C6D404BF99F39EAB7AA
+9AA9397B57CD7CAC1B338C21579A593D7DE1241E6F77366CAB10C3FAA772C663
+BD1051F9D791A84C35196E74D28D342553D344199CBEF83D3A6ABF05A4779B16
+EAC70F7CEE167132D04BE5F56F8F20927DC3C7A20239AC6AAC2B57BBC83174D6
+25F59228ED58B5D492B16ACF3EECA04054F59247A8E318B6F5A09F0A8B3820B7
+2CE711056E3A3ED9300B6F2DFE2C665D7C3351D40A779FEDA09B406E804BFFDB
+9831478F237DAF6352CADC53D6AE85A14E5FC7C0C1BA4009FF962FAA52499506
+C6F3C18BD4C13C1272D844EE151CB5A0DB0188AB7FA2DD47A6A2CE8554A7CB82
+C0CC30593F062451363778FD5A8D39C60835825D63CF3BEF323C8CBEF3055F61
+294FE558C7542977A3C520DE15A984C6D82041E06C356FD7BE75D601CB95816F
+F05AA3F53144B7D768F6732339FB8E6A068F8E021C1BDDB26572385FD1B3794A
+0E1C780576819CA271C78010D8416F6B19912227CE781CDF6AFEC335138203D0
+ADEA0617451CE0BEB024CDE135922C72FE0932F10589F0FF9F1DA721D32B1583
+8D032EB9049E4AC34B3AF16C4DC1A85CDD8B047035ED7D50CF8D9D02621BF6C8
+2CCAA23DE753C7B0B8818B68D625F44A54689C0B1CA36FA7C68A567FDAB813A1
+8B34DFF1300D5E42067F51ADDF7DC9BEC7D4376D304A417741E17AE427639676
+407472CBFAABB5AB329AA7CCF130B3EC6DD588A1F44409FD239238B1A8884382
+F04198DD7C5DC5E2288FE0B206C9D9516D468AA6E2B1183E2E906F9DE47C9209
+578321590CF839C9FFD5FBC3393FFC75322B4E703EFE69534745D579B74AAE3A
+2336823D2DD5F477F39AA9386736476F5C0B1CB19457D44AD6417BA503475D23
+51A99BDC97751E7172363DB670AA50D21920E98BC1DE7349EF8B8C1E72CACB47
+557B3E2BC30454F75CCC41B84A67648E894AA0A43C5A2BFB5BEE8D0BB07910B3
+47EDA7B547EF357C2553933E0BDC0F05D596E4C55B33AD63E924164DEC1934E4
+58F937DADD65AC866E4EA2BF02D36C54AE3E3727A8FF9F3658337D2BFAED5908
+5BE3C1F4503843FFA47C83B3D9CBF1DF2AED7A6B97A7E68CB6B9E5420E70C5C4
+36843B29D902584DF95CCD8C34647E87E2335371DCD89E495A92033BA482A62A
+0D2D3A7BB06506E42A4926CA0AFF80EC8DA63D7B73E8A04B25312F03251B512D
+76BBFD76C1F5207FD6A8E69ED9BF063C7DDD0FD4C6974BBC531429EBB55BB715
+0D08FCB2F80275425FE42E87AEDCE78D2BDC07CED8BC49D260D1671BA0ABDDB8
+98E0F7BA7EDA086F4E3585157A71CCEEA35750B9DC3195E3396F1161EE1E1D25
+E6FE6E0B022A9625B5866B8EF59DFE5391AA7F033886402C654F4834F4E43138
+EBAAA758DFC8C27356F012F4D0F398EB8D013678059D8419C2D947F3FB2BDA1F
+70A5FCB549BFFAC288ACA7051BDAEA41A4AE0341035B4365A63C553DB80CE429
+02670706A74AD397B49AF535067EB07CC3CB86704ED45301DDFD5238E7DF5ADA
+8DF465E45F7514D7A0BAA202305CEC73032FC09294480796251045AFBCD6B081
+8EE4481D29E817C7DC32539B364076672596DC24CA8AC45D60A8536865FB475A
+3DB48E98C675A8BFA39792AFD17B5251D56F0D5C27E229DFA75FA3560E7ECFBB
+8164E4FF15421846BA40EE13146A316D530287CC8652B58804B95C53F6FA9DF6
+F84DE1E222C5D69E45E12C06C97E672D456E21B95584F8371FE34ECB0E6174BB
+468EA60BB0C06B3DF48D996D9083F70181799CECC224FE60736CFCC6F246E5E2
+EF465A6B1B411ACB7474A59BECA5935DFD15F5C18160D4AD4DE9767D6213C35E
+08AB18F834CAB32013AEB8C634DD6382D4C7E49F10BC5113214A18A5EB31A0D6
+923630A849327C1CAFEA3B8F5EBA83668E03EBE084ABC1A4C1DEFB333ACE0696
+EB20FAB6FE6E61D38457C8E10D8FB7595C627E8FBE2D5563C4D50A6E1F3DCFF1
+F5A2DF1A62301665C0E44C2257B4516B515FC995A52D4DBD54B3D4EFBFC63A8D
+F07C27065CFE19527AE04A9CA14935B7399E30EF88D2B63891A58044D7CE07F2
+916EB8E9C65388A73956B3D82B4B41AC378B4B75AC304A32339CA7701636B6A3
+84254743EA5F8525897D4FB054698031D1FFF4C971A10440212DE812752425D1
+E71B02AAD20E994357EC8436BF1B74F016DD41D6B1F6C1578E4B261ADE5A7B31
+2ECA2C16294C9309F200AE0AB5BDAF2BBCB3E97B0FC5556BD8208E50CDEB88BD
+F137D2F72258B6E41092F1256CA4AD867338DE757E29298F404FF94F247A805B
+40524952A6D8581F065B11B6324F9F2821A3AAC2E7A583771EEE640F2FD0975D
+299EACAB2A99942480DCCC95BC7CEA846EB1B2423FCE304596A2581583450455
+CD1D56843DF8FFBA723FBE4A4AD8E539828BF48BFB4D0C4EAA68EADB81A2C58B
+EBF89CF83017DE3382BEF407B493FA5EEF810C740C3C8B646292AECE9A5180CE
+07ADE6E6B2935B90BC521D3ECBE25B43F14DABCF49F378C26CDD2B27C690EAE1
+E888EDC3C963F55F1AD13C8FBED4BE0BEFEF31C0636913B47205DB1D0DDDBEEF
+4441A3DE9825160AD57948567EDE8660567998D41A0AE2D9A9B5BD4207F2A0F3
+EE82DDE22D16C32A583613E0EC2BA331EA91042B8FA2865A8A7DE1BDAD0B6D33
+3DB1409222AAD20577ABAA7A2DD6B302803FC7B4244ACFF725E37CB5926563D2
+82AEF220424600581E25001DE71E1385C9D690747BCE051539AB8B03B2EA77BC
+39B27AA8F63CA37E3886C50E125D3886C5132869596039589AD6A8421C8B7AF8
+B0EE2872AF974A4B779F09DC1DF2BBF673A7FB32BD1BF3D8D99A94E1BCDFEF81
+37B2D7BBB80ABEC1EAD544448E6A49DF730A1B7F63267C9DDFE81131867F0C0A
+8D2B37E8B0AF2A6265C57CF9BCF98A01998081E7BBB94DD53FCAE52F3F5010C7
+AFB011FC6FA98FFDF173FA0F935D33EC3DE55890BFAD217870974C00CBBB6C67
+1CC558F6FB2C30B28B9987721722A27EBFA924A382569E3D7C47A3220F21EAB9
+1011D71B104BAD1A47CDD9CD64487A8E9721CABFDB83FDEC748EBF0D08E77CFF
+1A54D0B3ABF4024DAA403436C9F6CABF3B6CA7089776ACB183AC01C8E7F287FF
+9DA7959C4B7D73F00976AC5C3E4B810DBCCE732E4C9ED9EF8006AFC7314F0055
+FA3FAEC780434F273ADD7D07C2006E4B755B24A26341AA5AC2DCE258F8B03409
+188109067E22F078E093A76FA372C87CAD401794D94317B2665DCC7E21FDF901
+E1511307385B6EE148FE1666BB616351F48A8082ABF94040CDB058DD584364F8
+CBE3E94DBB8A2450D18D435FF5C8CF2DBA1EB562E957A83F184C9F3CC43C1860
+E6FBEE91C4D240C61D7A7D554A17B90D0A9CE1E7AAF7840846B3F1A1BB9926A7
+CF8E9DA56DB81D35CB3687E9818CE74C0336DF7B2CEFD8BC432268AC93EB34E2
+3D361A8387BC92B459F645BC069A49628D7382E22EB249BC7CAAE98AC55FBD24
+F570D8D654B54710B809234AA2E662D2ACC44E1FE1AA63A497FDD94A46B9D1BC
+E37B29430A5E0C2E592F13BE227CD9A6556E9A0E1C3EAD9DCD742D1F9CF62014
+5EA4510003418D1881C4EF1589A8B9EFB52DDBB67BCFC4E55B134A3C2E31AC1C
+4658B592EF69C2E23E335499A35B91A58DF9A947712DD55BDCDB7E0AADD53E29
+2777329340EC29A51E9020B8EBABB7B066113ED3A4791D3FBCABADC40CC45FB6
+8744DC0116379D2649B216366C6FC83999E1FC558EEE5E17E13A12B252E5F7A9
+E760CD51C96C1B4815BFE37D4D39621BCD10DA9428CF186E61E9921585C1944F
+DDC084DC9216FAB69CF54E456D47F65B3FB02F34B0CC998E12E41110A4791465
+19780824EE2AC1B799655553375ECB24149100E539C23829944BCC82211A85E8
+6A2D3559BBC0EDFEC2DA02AE3BB86A9E30AD5BF95E5CD956297C1F6AE85D0768
+1F9D96DD8EAAAD78CFBB543E913951A78D3262CF08BE0DDE7D870FDA94C51A1B
+1F8544122EDB7653E66D772E3EBCBCE4419F17500D8469EF4FBF93144B20DCD7
+39B815E0B09D0BC3283E8B7A907F203EA3B22924419C1C3A8DEEAD335FD538F6
+0D5ED1581BB64FAD4979D67D51F18B047E096747FC50C6A2B48377E458038374
+7FF93A3A46E09ADA5A844EAAA3EEFA1625510D3AB7A74764FFB229725FDA314A
+72CCE353A9693869F26CB904505B089DE6D41825336318DA00DAFD986779D4DE
+E8DC47E496A9936DD3CF46719D5E832E3B7C85B44D16D4BB588CADCCB90CBBF3
+3589F08AF2AF77D7ECC3AB68D6409221B2ED853012C693C522407B4E97DD4F89
+9EAA4CDA6C85F8B65F5E165399F6CA79550965F3AAF7D875CA947FD6BC42A4DA
+1AF797BDBAEE65A1C3BAF00E8E48FE567E757715166DD2757F7DE6C45FE4B3FC
+A0C76D12FCB66B4CE9CCB47060AA5CB3FD427BCA5B549A4AF34CA654D9421C26
+9EA4106806950525CA856624E9EFF9DC5B598AE4AFE928447D0704D4EE99DF07
+69AC51F4D3163B7424059ABA4381DBBBD5C8C7DEEF723F163AE69C48962C34D5
+7514F73FAF946C121EA5848C29E127DD0FDACDCB6B1AF4414EA369093282383D
+0213B391666CF596FAB2AA27270FC273E32B90D3209091D8360A0D50F8F28D23
+F7B8B097E2FCF2DCE92A7D5AB68EE680B691C2DC7BB846FD5132EB5789A30B8E
+9B849C18E8560E9F49764CB89FE01E2E9968C769BAF6B44E08E45E563EB14BC0
+70601E5133AAC33723E934677518C54A235EE9E4A832B363DE44FD82D37BEEF1
+E9C842EF2570C97C3C5D6C0DE94DED4DC5B6681E4A04BAA725F0D9061B16C431
+8ED6859AA5E5BF254BD3C29F100293FEF2D0D6EDAF428490E13B06527B5FCC90
+54768BCE8007EAA2EB1AE14F3F577CC243BA416AB6E43E92EC4FC99775BC1D92
+CECEA05EB8ADDA826E364921ABE388295AAEC6678C08D26415B2725025C70089
+9F12735F37C45F00218EA2E398A8CB173086C43B2A7EE4C95852110F8DCD12DD
+64AEA60156E560E8D8D84285B523515EC15888E9912C6C1AB91290E1D57D7595
+1DF73319FCA62BE7C04F4E9968F7E453C384899736D48EE6FF64DF1260057C37
+3082E207F796CE6AB2271E3F31AD2FF83B99FC3DF2826C07F4E4CD05077DCD69
+A3B9EC76BC02C12A468AC4C0D7D83FD4BB4BC8ACF9C312CE3144E76D2F3C6246
+A210DCC9834608CD0A52CC551FBC059B88BC2CEE954AC6B5811281737EC83C8D
+72B39D016B0ECCED40BDC58706910851447C80E3FFFA9D57898204F9815DB6DB
+1EB38FC10637CC50768703AF9FAE89A94B424A3C647A7870B26970954CEAAD68
+E069ECBADBFC0519C33AEECE55AA93C75B6CF907DF65B98C7A9B043E4BB5840A
+88DBB212EA2E86888D36B76D270926739B48D6435C1547D703FEA7B989CA60A4
+87CDF9DF654919F730787D58680BAD0E5B506FDC2BF0C89569CFAF6BE11F80B2
+07D69B417562178E087AE3AE9380CAF8CEEE40FD3989BB50E8521963B0617401
+2996B2C32A3F03B7F312A211B605932233E7C230FA084BB912BFB20E85D721C9
+532D22AB85802085C715206297C09713C3142039602BA9D607F7A52FEA25B0D9
+FDB7E9FB15499E3DE1E47CCF2500BA8B8798497469DF248B8244493738C81815
+1008200E9457B4CCA5740897B17F8832515EBAA84A237E17542B359F173E7868
+64E99FD8159C9051E876C235E434BD5920F55084DD7F31C6FD2B6CB58E5FF307
+0AF6020EA9012AEA47F9BCF018C30885988ADD1A630C2F1CBBCFD5A2C95028AA
+6FC89D43E089957267B6F94C7F4E05FCFBAC85E879D27F7BA921FEDB4B551F9F
+3B5D3197C0FCFE264D45F6C1181BA26796006B94BEFDC342C7CCDDBFAF332F8A
+D96D8D6C52ACBB10C871DAA7162501071CBC04CE01D8FDBAB48393E59ACCF1C3
+9EE4972D7DABC3E639B1C2722F346553DA9E9F163DCE4CC7CB2D1B966F561A07
+8862C3230BDB104C55DE3436ACA77800229637A6DFE1F041DB4B45B2D1A5481A
+6641D77981CDA367CD23E64AD5355B484930C7B09B47ED6C79851844099A68C7
+1F4E6ABBDDD7490259E856C267804A4EAF61246AB4C1233F025EE81793312479
+CECC3813C2D887855573122E59FAD0B85DBD9AF66203F4618F22D6D56E1F7323
+2BE1ABF7702D8BACA8AAB9FDEAB48E3ED56BC0D3E4696505E16473CAD93D0559
+54E8991E7F146F4D4C9E3DFD35012F5830B57FA04BA42BEC724E5708FFB6D521
+B209D2F6CDA86560921C705D6A99F822DD3B182B0BAC8AB381653298B82C86E5
+098FBC2E1E30DDA83919362D1BCF4D91702B16E849E032B44EC2482369B4C342
+211E7382390388FDDAC362431B45DCB55FEAA7C48C30996C47B0E21BB32FAA7B
+14D6F0DB95C450B59975CE25D65E727148BC7400E00C249A415AA52DA829F547
+8D7AF32D029BFB27EA195EA3E8A038493FE5BDDFD89597C420CA1ADDD2D5AE9D
+D3BF13CE3B530D78BB7413F47056F663395BEAFAF4002BAA6E9FFD3F1F0C7C72
+03592F5627EA49F1C0E8C95813E1C30BC256C99A2F34A027D4552B650B0376EB
+9BC2482C80F19BD6F9315C71A185EB246091F6D7D019637100B555077B1549FF
+27446A2CA0C8C815B6CCEE95CF19B78908DEDB25C1F9A5E6C36FFE65E0A8F694
+8A3E847529C50351F6CF88F1F3B901A78378BAE535678A6C60D7DF4A00505B14
+FAFB1A1AE87CE09E1E90769C046C11309AA7BD8476AFAAC0EA48E6D32842E0FA
+10CEE024B1B178D8B9A15E29F825E42564A8F8F1E1F1EC760FC03F1D5773DB78
+E177A95C3D2E3FFEBA469404A866E662D217FEF7A99D6BEDF9F144A2A8B97542
+9423BDE10EED471B99F70661A7AC7A260C6C32EB4D00F21F7A3A5257EC597EE4
+885981989562FB08DBFCE4ADCBE6D9A1C92F6E9FF65A23BDF943835BBB7C29C4
+0D7C987B626819583D4D52DA32BF7DF15C21BE5BB64B575C7F4B149AC539ACBD
+A49DF3F0480DCD61E3C14BBC956DE5D968E74DF4141BEB0106E6C5F7828E4F77
+4EC7F0775CF320C26323EBD09354B3E2A52973E75E54CB42F6B0F5C10AE8A8E6
+EB93124C15AD140C971D2E2D9C2B5275F93BA3B01556B72B7630CBE7AAF3D997
+E82D11875B82071FE770B13C232388C07F2E6F7E9C6930F4D7379BF74FC3436C
+D301123050BECE20F2BF95FAD2E57FC50203EE6EC6D9420BF8C218D3D2F8B236
+6572EB16DE1CB2AF00CF19C56BFD8D333FE1DA4494933BAD214701819B0C2ACE
+FD02F0682306A6B0039002B0B7095D992A30CB675CDA3D4B196C447F102DB4B2
+FCE3AAF81D94B2FA40B31EAC2BEC613654B1D885EA590F675E6106BFD0575B1B
+4AA50D0583A2BA2F79AFC2EF5640A9EDF12F6BFE45ADBBBA43B773B36DE8DD60
+C4BB8FB6F09A334FD947877A785AFCC4F9D366326F5B609ABF1E0CB8942560D7
+68D0FA410EB83A9BE859840A9E024FDF850DCBF5FA8D649B40505AE64B1BEEA3
+6776EC44EA3298203B09990EAAA5FA937CB648A0377173CAAED6432A38B48DC7
+906B730B6BFEB2B9B166526D1E8D4110C6A2A4CE1ADD2D0C9C179621F7867669
+31D3A28EA97D1281E80B4B6A4F223D1FF77F8960CDB83E5768F3A8FE52120CA6
+15164AA799E18FCBFD91697783BA537FA897D58726F5F3BAC1F0B20B57583374
+35837E9EE8DD0DE39B6CFB69EE47ADEE4624EDF65E43781EDD056024FE108280
+29E5A39815F494C65020B91F68D1187F815ED8A312150B414D9DA84F542E0F15
+32351B82F2322C9200F987E477807E9E4051D4057240E99D42E6852164704F26
+81A939AF1E3BD237C4FA341C702F7AB978F63CBA8DF745DC2C57AD5511D89AE5
+B4A80BFC57B1A5CA1A110D3BD5859EF41959EB364DF07CE50F709B30EA099EB9
+01C010ED4F4DA9AB062BB8E10F515559D2FEEE69C579859E43962AF7640A705B
+2C3086E862AB4297EF9625C58AF049BDC0840F9562D8D8BC686CDECA7D4259C7
+4C86D8C92909BAB7FA09AA2E83B4089B246F8B4AB7A086C5B9943773C496C62E
+9E6344BBD213B44C821CDDA42B1BE933F74BC8FDFD0A85070F50D4881C7E875E
+DD689E97ABBF6AEEA6E8C8BA377BF3E4A8EEBBB1D47FBDAEC3B88462A62CF500
+727EF93FD166092861FB67303490DCC4504B759BE754808BEDD580E6DC38223B
+E02EE2D9BB8F32E2D3386376F8E49A853F7C81650DBD33E23437EC98F4A6F7EC
+12705E52817A7B647F4CDE1B173EC370C78589E329D93C35895CA8B3EA2B945D
+E30630DBCB2B8ACC49846C7835869202FB5231ED9167F307CBA31D2DC0B423D8
+65DE2E24CABD53913C01C388F64BB66976FE3B0B421AAE861E0C0D495D5E0B26
+1D207792F1072BABB49156544C024118BF0D239BCB1AEF8AB7F38EEB34C88CEC
+C7401AA6177E9B7849AAA081334E04A2205077A90C0377A363F22091678371F2
+36A088CF84558630C3F370FE00FE97209AF40D77C6F70B1B4028F1680FF6268D
+EC09B05DB3F8DEE17678CFC46AE78E02DD01454A9A8ABBAE157086DDC92AD22B
+DBE7861A2909232DE46FFDB6FC84989B2B137C564FE84961BCD663B592FF2A85
+A65D7B595113AA7DA8463F852A28233A754591A5F2D7F70649A12EB8CFA35361
+1410C7E2F08EB5353A91CBF2109D6E279758B8E458DC7737369AA35B330A9229
+B73DFB9E1745410440E440DEC966C0B21349149E08D57740773B1F17161217AE
+B0605236A44353081EA2248CBE9E8F4A0CE1499354F6475C10346F337227B8C0
+2474942B49CF891C5D0953B1015203B1BFE0A7528C900968D16A876AFD9BF28F
+43EAD0516A38FE48F7091219A717617CEF422F7E2054F3E40D7D6239F6744E44
+86F62AD7ABB61DB0E75B245B44E7A6FF9D72DAB469A07D8046DAA059CA891766
+1420C7A397CEFC7CBFC41A09C54FEC6E77312347C14CB8D87B313A0E7F2CABEF
+CEAC4B9E15C279A18BABC098027A02EEA025F481769AAC7A89F9F419A9EE5908
+351B0D25A2F9FB805227F0ABC3D4A87C63C59E80B1BF915FBB1E1E164568CCEB
+1EB5B1A19180F370EBF2DD11827844584475357DE9E31A138874E567B8E1DA93
+FC5D6084A3737CA8EE391773F3F91C243AF33013891B4E7DCBA7BBE1E06C5031
+C3C0FD60806B7052C5F7B069BFCF4F879914D9C2827EB53C505D5C738E1564D1
+1FE8A3EFE5B3EDE0B766E816FF02473739FC5BED647CEB758C6D7457ACD5E352
+1C3F13E6F1DBA43FACA8FB3D257B24902EBC64B10C7701AD3850BD845140C3D1
+A6CB630AFD8E81ED647D65D7F51803369D37DA44F36D8AC77976AF53B9C4E56C
+84D5969C27EE9DA518FBBD8430D5769AD02F28B6036D5D8AB73C784734C22D5C
+7200D0A706326DB04C52907DC99648D46F2741B3A9BADAF9040F2CA68642156D
+E597FD6BDBB5658C87501440DA17A44557EDDEF1C576F8FE343A6E2DE27CDB35
+8E62AA7C8367E3E44DA6E435DA063BAC3DE82D73AA2A147CC5A844187D29B83C
+D12D91B9018718B53C9CB11CABDC9F7A8848C19E73E1DA7067632DFED7994B8D
+3A5E1260D0315558BA94389D996A960836FD9C7570F02C453129DA181B2BB9B6
+56BDBA69A47729BB3EE50403667025273C0FA725D6742B32DF5E58BAF48BA6BD
+DB77F2571F3643E792CC757B8F1AABD13B60965B5F1AEFC5108B68126149F4F5
+F54E72341790C7D75372F0550FF3C9FA8844DE0C6E71C261F94C2A763C6853CB
+6179437BFB20949F530804A81C8C71B2E04531E2F3E0C158040763FF38F69682
+F8FE6FC7F914C9BD77FD51B7F533FADAC22C819B6F7E3094BA3B4F96A74E43BF
+240DB5BC95B8577597AB79D6ECCAB0D65EE279F5CB8527B05BB521EF2F7F23C8
+42349BEDFD0E303A7969A9383A6290B9ACFF7C7D402EA8A7C9517F01C28D31A7
+5B705C785F6418B802A18AB458C03291A0751FB55AB25515926778649BF7DC53
+8E94F949469AB3EEC16FCA42F98220A5EAEE73D6E82C71779E8892B2BE652796
+E12C2B6E3D535037013D60F8211EBA7119383CEE9B06981BFB98666749064BEF
+338B4AD1C6300DA217F38EBF093C867A7B019F1C8F4C64226FAEFC38027AC7F3
+A528689C44EC4CC0D0612AEF76650826D2B16F53675A57273A78A911647D112A
+193F579ADA161BB62859141F9893013F55D636A595E532BCA11F26E5846724EE
+E6F3026983BA6E24C1E462CB599D2C6F3E7C0803244D9A773D1DE70325786EF5
+C42D2E9F3DDA5F7108E3C28357AD1F088404AFF56EF5BC9ABC92A32BD46FAD66
+4BF53BD32E3A6781F4DA33E25E0075638D941389DCF2D5F3FA3C9AD7DC26BC19
+28D04510B6DC27C7C6EF0EF6189968C8759920E15F65108B389BAA1D2047B977
+E1818381DF9FC5FC217DBBDCA80BAB7B98E7A00A97AA3BD47EF50ED526FC8583
+1FF5B2B4B470642E3F575F4C0B1FC5EBBDA263F89E6D644E2F56DBC6FB50D23A
+A04A2ED571997F30657BEDF19D268F69D7A624FB11BBE30E94448708D077A238
+CD4543C8E805BC0DE96A0F4E14E721CA75A34DF4F911034DCAF94C190380D55E
+77BBA860C105DCBA06BB201281A02830F8FE7951855ECD7E13A2514B2EC6A93D
+A40D690A17709E21DA5305E3DFFB395708581573005A777EAFA0403B2F6ABC0B
+EAD09C5C3E2B111D8E3687DDA302B8AC5B11341E916A63832439057BC72B2E67
+7BAA5ECF2A8FB4D60751A1F209BA3F80E2BDDD496106EE382F0B704B94A7EB2D
+1659474F5B80774BB710BA2A744794A74061970230B044218212BF7C908A9F5C
+8575922D7E0D13FE10CC1E548C182F402346C6E256C3C77E871703214488172A
+76E46E6B5BF7B7704AA57E3C8CE8EABC9F8BF0A53538F3A09F27ABC005117354
+39F733BCE06C01F617CA9552C01B0ECC3AD05D9C04E67CB7C194007C4C64A460
+726BA5371B9B33A713C6B3D69A6DDA20E104580E1CCF7B0958E5086B31C28AF0
+D645B982521DDF76581C7DE21C7FA385F5A5AE637169427D13300AA66B53DBCC
+4CC79A0320A2C5379B7A9A54AC967163DBFB993753FA7AF4E4F7AB3710BDBF8C
+3F10A9BCC0BB17ADB5C5727895910CD7CA7F4923F00B07FD16318E0A53633A3B
+0501EA6D8851CB557D80120DF270B85DC721881CD897BEB71CD7EEC64CA12990
+E8E580E138EF6F9EE2F8EBD3DDC3C5F63AAF381ECC7350379646788EDDE61725
+C72975D2DBD54F7E7B5B1DCF78969BBCFDF726C8F7CB93F39CA28715C943C782
+5CD1C1DDB42404E24E079ECB45A8C3625039AAE73D365CDE69473537D4E575A1
+1D017E12D1FB54B41D956915EB6315A82EF3CA876200D5CF0973CE5F56649FEB
+F62747208C08C8C61A0AE81FC3A538B16DDB109177C7A686A256CF37D55DBDA7
+8F807AD40060A99A44BEDF27C3B7178199E750C91119A7AF35496F6F1ACBD666
+B5E1C8F49FF59AC5C5648011E2D0F7F85596705D4DF9CA26541624DD059E8E70
+4E74F1743A6C6DFE15BF1FAC3CD9A004F3AD0828489706818A60C1661B9E09D3
+3F18885643D21E8EFFA14F48E22ED8124BFBB4398024C177B02C760A59F7C0CE
+E1B619449022B819131DDCD178F826A0C2E9389C2B8B44B229F954FEB4D5FC0E
+CA84B53501FC1767BEED2381CF24BD89BAC6BFE1868C78416159F6F933E7C828
+DB743BC92B2EC3DC2DBB0E14F569EF1BCFF9182C04627D1E2BD48EF654850CD8
+7151797484EAFF38C38F8577737F5EE125EF08565E4F6E6603CB9CAFA165A355
+4B06608C939495934D515A13D319F3F8C4C1425363C897D025D28BF1A4BFA09E
+0F97561179C2C0F030F0B6A3C8591537506D9FDF232AC0BC848E517E61F2AB95
+88D386584AB5F92CE4C68D1F419A32576D47EA6CEF4B37946B1E3DAB1E67FED4
+A5B70D62A9F69C227C21C8AB490DB86DFB4CA788B6CBFF8F02B920F739B141DE
+1A095167465D82714F492EA9D2B4F7BF14719BAB487EF25F8BD1B377FEC95E66
+F3D7020294E06E743A606D61B27DE20252F211737C4026FF7B9B4945DBFC9809
+8E1594CE15A1D7E5270B7448CDEC0E7D728AF99771E64A43B27A041FCE6B963D
+42B6E1975F5F8F8C26602DC75D04ACF27CB1DA2B0841529E26CE6A1D0E5E9B31
+0C191C39FDB29C4505CAAC095E91619AD29468DE658EFE5D5198FE5EEFB0A2E1
+4D6A7F1BBBBE87D543592D0E658FAD7B5A002D6464C9A413D8952C533DAE8507
+B88888C8BFC31C3F8838653527A3AF640BB9CF67FBB5844FA83E7D9D51D801F5
+62C12CA2D6070801067033521249A56C5B0B77B19811FAD4951E34A6CE5CA1A8
+443E4C5B72CAD2FFE1650FFF90A91EE8D7DD95D77F681C1858857EC9C449AA1B
+C0D7145473917BC9E1D8D6A691C91E1A9DBABCAB74BB080F506E992C1A974E26
+00C556FE22EA28DF85CE94B3898AD28F137ED56D605CE095BAD1AC60BC6B73CF
+85EA4ED98FC0ED5971DC5A75F289698FB94A4FEA6479479FB2A9BFED1859F69D
+1EDF8BEFD567FA71B725B11D55B06CF0E95F817DD67612B41AD48934A4D5ED7B
+D888DD698395041DB1C9290F599BF0ACD24AD9EEE1ABCFEFABFFEEA96A02D292
+C78CBAF56DC3AE9E909A2856E2614E2EB9D4F46289AF8248CACE1CFF69C66F94
+F5B939A523DD14332C225110DA3446A4818FDD67B5D16FDACA990DDE72B9F10B
+F3924237D2B6069030B76DECAFFA70FE97F5C5C684A750AC53EE37B1E27C5910
+48BDAC0DE147D16BEA29E4A67AB88588CD8F3B50C4EA3A18D81778949CB17F14
+E4B19BBB9FE53ED4105C05FC9180CFF9F59F956CA0A6D11230499F04724051CA
+B98968E61ED0DF26ACB0D0EB7EC9BA825547B42F4A439AF0F1B4D4F9F4518ED9
+4A80B709484E08438B6D103CA4F0C7C8CE75889EC2C501A375FD8D91722D5FF8
+195D24FB5D569630D94FDEFA35A8D881FF0271B3D451A884D106735D4A2361A6
+D71626BBDF60991E20045C1B980FDCA1F436C1EC063C9B454E55062FE19F88B3
+C84211C2D38911CCC65C1B10931EBC9D633FF04826D1875DE425E69D60905013
+3280E96B205088FA4C3AA2665B595DC5BE5AFF1C29FE961869F3A03AC93569CF
+A1EF8D26E4FCB55CC541FAD73B55A60A9AFDB07C4F26B7AAD34193D5D3E55B6E
+53B7E8C23EF6AF8D363C59A59C1C5DF268B43E3BDE031C960662E3B308BDE103
+5717C31227ED287DE82B9C1923F0FB2885C2AA2839273128EA545CB9704CC989
+C4B324BB68E070E9F0810137F4B1FDAD4B7E959872BDB8929AE4855EB15D88BF
+F1A10FDD74B735B9EE49465875B67070F6D6CA219A64FA86934A4CB5EDF7073B
+B814B8C9892EF9A90129E3C0D84BC60C0DAED6A7CA8EF9164BAA7B3B11736AF8
+C58302F9578CAF243178E37C0CC8C3C9544AFA68952BF4B02890A0D000645694
+7AEBF900234A5374E199A5D90F10E57A1C123DEA596AC51BFD29DF7433141F90
+E0656BECAFED14399A3CB3A7CC99D5B2A8F88FAF17C9EEE84C08D0EADBC15B41
+7B21B8BF97FE52CEB94EBA37CEEB39EF757F7FC8A76B150796A27C646D5C85DD
+69AFE8AAF7465D0BE73B348CCD8E6493AACB6CEA5C15A9636C2DF301E5C7F72C
+B8C6BA861E90D2015817619C9A013CA9E7D22D26C6E8393187F8179E1693EDEA
+F2531A7555FF7BA758D3792108786E9745DC6B235D02AEC8A65A45CD310169BB
+F8AE3BA1C8A88A4C2A8C2C730F428FDDE333C75558417E41F95D6DC547E0AE93
+134F547C8F7BCA1D2FF766A9E2A2C799C529348871F5A56D5B8ADEA3B2A11DF0
+545A0A5930AC1EB9B33D296DB9F1E8B815B741D855622350EC35DA65E002610F
+4EBA010D0E018E168377533CC24CF7F4B79C90FD7C4AFAD40756621200E45012
+6C65F1359854128910451346DB93A34374EBE00140D3BB639CC14901E7C448EA
+B7C6F6D76DD96CDB8910BC20869B7E235BEA990DC962554C1D92EC9625813BAC
+252E58DF9D422C9C3645A999A3F25B5ECBE2B43926E2E9951E47DDC1E302FAC5
+921AF039D110CAB81962ED99254457E99A142A2F3230492827806417B1480691
+BE5511A7C1FAEC3B11745B30A10B8DDBFCBAC3B3B8122115F3E869C36AF8584C
+ACCD78A3B88E09C7AC348187D3D9B650827FACB330B2492DA961EAF8CBBE87C6
+8ADD19B167EBE1A73EEFD7CC9239DBE4E8438A4A16A28F97A1C6CEB14F543C23
+238478AC9630CDC4CD3A01C8DF7E06C8B8F033A32D2B4BF1C23CAA5366367DDC
+D3CA457D69489D0C84E56D50796B28F8BD089108F4D8C7FF554CC68309055B12
+9F910D46D48AFF711073F5453D8DE7A781FD9DF4CF4B28799093DD8FC2055BCE
+E8129ED81391F18F26EED523B9BCC59E941DDED79B23E74FC37BFAE9724A9E24
+5304601310BE6FF3B480C7BA9E0B72E4C6FC8BE2A0A9407109E1770ABC56FBC0
+A8A44AC1496D3F41A74B8AB00435E679E7B107C133F3669697E8341B70DEDED3
+48D6BCDD9BF9D336F25E5739A9CB1420D6F1813D1282C0E0EFBFD8DDE2C66089
+8B82A466300D6356A3257222AD8B28F8185085218997DFE0FE1A1CE1AF554B98
+A1699E9068CB49374FDEFFA433B638B71284FAA1211B65898C3C056802FD3AD2
+3AA4F680922D437146E4F7DEC9CB8ABF1A8EBFCCFB7DC9B3BCE38C8C4F2A578F
+51B3AA15BD2BA58496CF4BF26DB0DE0CE1214674239166AAA4A25606920B81D2
+A0AD21E24B3AC6A74368F9E7F116BBA02DD2AECEC99F41BC3D955D43C2E22F2C
+7C81B1EB554351D47461805FEEF5CB89426AD58246617F6E5135F7F735822D2A
+8A41C2A685086F145175154762EB694EF1A877670A51C4A86139E64063A80933
+61B9C6111F450BE26BB644316FE30986368945EFA43F6BD4BE3840F578C6B7E5
+64E8BB87AF2A7E2F4A8B1AA257C2DEB9C8BDA8A5274E5076756B3E942A44F1BA
+D26498BF571F450D904733A0F796238403E5A781E640330D70AD296F6D74B679
+B0B1168B656E9B28E4BC7026FD15197875D89A72696FD7B20A3EE4ECA24B78B6
+6391F8DE690ED48966603F2186424B17A28CD3B64BE1E3768D8AE01954A4DC91
+CDD6F3A30D3C4EB5F9C2CE00A5A64086FFE87EBD9B4ED432FE59DDBA942F72B0
+F6B3C8CA4CCFA5DD2BB195FBE297F6E65CF6C06E9D4475EA2C41D61D39F0B25B
+889E1EF856FF0817142ABA12DE2C80A2FBE0C0D98A60952D93E3AB87C644D4AA
+B7CD2011876AD53DE27BB957F69F4C4E48B292D916CEE8BDCF3AA2FF9C72E580
+EB5482E26EB7719FC7BEBAEA7102D55048289FBEF5C5829D96A437F4F7CA57CF
+9FDE380071F7859DC68EFD00288063EBAC1112227AF649694E3D2D63B6AFDD3C
+7702EEE2F4ED8D760D2023EE1193D3266AD408AB8A3FFBBF6FB9FB1E8E849F75
+D79AA064A146C42EBEC6B1F5B77A02D9C92DFE729DB8F03C6E67E9587346ADCE
+213F08F02AE6C6D2340E8F041B212A760F0EB6D4C4F7AD11C0C7D003C384E9EC
+8009BBF3B5351BAC77CBB2DEC5547D9C9F2ECFEBCAB4D48B5985E891E51C7BFA
+0A02C7B166565EE79D8D5BDCA41C79C69399102BAB4561B1171CA99A57550363
+3231BB3E3F48BEAE734E65310AFB89A170D7D2C23690D07050E6246647B2A3C5
+BF170818138683EA1B4DEA8C2F018D0FD5778BEA72C72E6CDA1458BC8D1E553D
+E61050AA240D0677D9DA9D9C22810CBC6C0E441C02B27BEF9BB48027E07FC495
+9E83F67BE50872095AD837B6BF75C0B5669091CD4923EE8929877CD0BBC624F9
+17B90C8D5FCE286F68DE2FC1508373EE9F9FA6F5A3978C75F52DDC397E368A0B
+57F5B40322053BBAFE6C7F8F293E0E3BACFE054A8AA7DCC3FF253F58C75B9D12
+4669407237089506FE8CC6A24A1025C8B4673B48FF3174C042C4D66BE2AC584F
+6A346027B020024CB9816965E99F62488D47EF144740C30CDDD2562F6BAC56EE
+04AE0AA4421F68C2525130D92002CE82F361624166C24F7C2B11C69310B93719
+0947BA4E74BA25398727049E1E8C94669B709718B2BA25D889BA48D66B0A9EF9
+173C6CF93116BC0DCE2DD62D2A936341BA360D901BF23D9A6579977464D12A3E
+14A083FB37A4049BDC5F4D9E8D49D05FC4213B01CFB0231D2B03F552F366846B
+7AB75D68EB74D57CA505C571AE2086BBB8072B00881A57AEBE38304FD73F20D1
+B3A3F4DBA7CD736A475A04B7785C64F8802DD8483C75E50F385FE63D063E7ADB
+0FC45DC313B0585C605D1529D226FE08FF7ACA26E0CB2C1B23444E976107731F
+1795EE18D69C11B9969542AA52BF0D3C4D00862494DF946B74718DB8FC586DAF
+64BAE620E3C1512720B0ACB343DA448A0419975CD986B40D91192158129232C5
+85E18BBA914D219AE5979CF98BC9A4006687095BB53215DEE575D4FF7FDFE94A
+25A05F1CCE048E2F7A801C7AFACD586C218C1A04B43F167EEA5D6A4EC9DB4FB8
+C2E56225709D9AF95C88DFFF3B7EB9C337069278D51F0824C96DF582C630BEE2
+C4DFA3E9C9CE76D1B52A23CBAAC840EEC8B3786D45834D55942B46B6B4C612AF
+BFB077F21E0F7F0EC6436BDF1704EAC52789C75F7900EB441EF83E37C780A699
+2E3B2F5222D7FC4440FFBD93A01205FC7E64CBE9849BD01FD4448B343FEA4101
+9FFF4E1527F81F4DF3FEE2F42953C4BD655A50BDC6EFC02E25A5D8695544E166
+7ECC195622F1911EE8D637DCEFD8686B01A130671BA5597768246CEEDB1DC252
+214E01AB3AF7AB7E3D766C1FF37CFEFC2FBD4448DE566042D46B3F2A0CD85D27
+52F4CBBF632139E86B8A2669321B4488AEE0E3EE016440B026BA4F3CDB798BF5
+1E026DE9653F2851D1B095C7272112CC642066872578C2063921B1F1DC1DC37E
+6FCA614E9EDC7EFBCADDF112E3127B753D0DBA1F920964D69C779343ABB1B56C
+EEF95475F7CCE12C08A5AC0502C65284DD6F34C8FC31E6D696D9B1075B6CA4E6
+8857AE5D9267CF640DBEB733B3FA1DF1EE67D578445DA58492A8BC190AE91CAE
+DFE1F1C833312BD85578E1D63F8E593432BE3D4A9307127750DD9F9509660664
+92F85F9C97860433F1190C2448AAEE97CEFD9E048681D41D17F5CD3B8C6C3AC9
+E7D46179623C806085BB5D23E6ED26B2D900515216EFC224A9F25660536467B8
+B47665F6514284E567397A7AC78784A8CF47B61DDC9A66B74C04FADC5074B8C0
+476EAE541AB9F94E990FFC31CD94CAA9E93966096383C1951B00C4E79B51A728
+7526A4FD3A5F6E9D673555CD7142C94EDE73E8A3295341698D777405898E3B4A
+E149CB4E9EF567CC18C35C3BA9354CDE55382A6569A8D0B2B7453E5008347B32
+8B5745431E577B3525D343EEE8C0CE5CBE1CC6D3FD13AE8C5C9F672B10451183
+3BDB33698C0D220902195138EF44A545EA6092A79C9F4AF24D73B735E3733FE6
+67E47D76CE584299B16295BE997949021F949E035F49593BC128DFA89182F89B
+2FC9EDE36D2010B1BA62A6D900B00C4524AC6981F0DDEE41043ED7500F574409
+C275BD142BE36AD2F5B08121EB0EFD58E8EDF388CEE211D4FC3C2D04D09E8757
+17CF2869D202B2302BF7F5741F4DF47C1D76962A3DE9E718ACF684751BD968F4
+6B3488D623E734451674276CE47A465AE3F50B50A938C17DAEDBD7E40737FC3D
+35A709ED283B930E0381A174F3804E78BDF8B8761BC37179A96FA636127145B8
+639577E80613C9A547AA8C3441C85E8408C0C4C1A5143A3179F9366DECA49F47
+324BCB48FFBF44DC15A98DF0A4F9331BCD908E5D516881A82ADA22B906A85015
+6643813BFBBFBD2790451F64AF61E0252CA23D2C44BB92D546B50DF7C2F5F3B9
+560117B9EC0D5DEC65A4404FD7CAB019E50B6C468DA7B5D2239F298DB98C83EC
+8611CDF1D5207EE2F8F817958D2ECDC5557BA2D8023B69FE98BF4ADEBA5610DD
+F12B997F1D998441952BD2EB089AF2C6CC99FAD2E7E9AF14648BF99A09355470
+F32C0A511E8A02FE7E24F7E535020C6FA0FC4D9015532467666B0192BAE64768
+756C8AC401A71864A830359DEAC2919113979FE4DA48292EFC5DDD97A53377ED
+CB29E122DACB9C126F687AD2684F4EF885727C84F09CA8C579D48ADEF1F47859
+DA6848081327E0316788D90F3F59452FC9EBDA175845FF0FD6178A0582E20436
+4BCE9A140877B4DE31EC9006341568BDCCC9DF9DDA0B086DCF1D5A8BCE4060B4
+1F13F5A274242B4A0990BE59BC8DD36A2AC264258E19CFDC1AA63432D07E9DFD
+C35528A40580887195D79101345AEBBD0041A765274D09780B2BE95BD42CD1E6
+A5B490374097FA0E5B6F196A3C47C18E8499717C07A36BF3DEC7064845253515
+E0299143BEED08AE775CADA4F8ACEB96D70F08779BEBF179B2BFB0DCB0F1C126
+35B6BAB5C1F755CC9C40D5506135F11A22F802A9F3C79342B6FB9522729E681C
+C4A93373F8E6DB2CABFA5B7CAB4C243C975EFF5C5D634D4D311EEFADBF115E41
+1C3EA696F82803A071B80E18BE67F7828DB353FDE5B51073E86E68486CDCE01F
+5D79F3E3DB087505FCEF1F9B01908F1D9FE1EBEB25B6DDB40C119D5B28DECDDF
+0F579BBDE6CA59B903368E3460730A756FBEBA62903512DEFDA5CE765C479DC4
+5658ED736D9EEE0CCA46CD2676C475FD3F8E2BFEEF43E7B959F19468FDEDAB2E
+BDFF5ACA6119413724BA04E9B006C4AC43CF2A16FFDD90A1E46F52C661328295
+B245F8
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
cleartomark
{restore}if
%%EndFont
-%%BeginFont: CMSL10
-%!PS-AdobeFont-1.0: CMSL10 003.002
-%%Title: CMSL10
-%Version: 003.002
-%%CreationDate: Mon Jul 13 16:17:00 2009
-%%Creator: David M. Jones
-%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
-%Copyright: (<http://www.ams.org>), with Reserved Font Name CMSL10.
-% This Font Software is licensed under the SIL Open Font License, Version 1.1.
-% This license is in the accompanying file OFL.txt, and is also
-% available with a FAQ at: http://scripts.sil.org/OFL.
-%%EndComments
-FontDirectory/CMSL10 known{/CMSL10 findfont dup/UniqueID known{dup
-/UniqueID get 5000798 eq exch/FontType get 1 eq and}{pop false}ifelse
-{save true}{false}ifelse}{false}ifelse
-11 dict begin
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
-/FontName /CMSL10 def
-/FontBBox {-62 -250 1123 750 }readonly def
-/PaintType 0 def
-/FontInfo 9 dict dup begin
-/version (003.002) readonly def
-/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMSL10.) readonly def
-/FullName (CMSL10) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle -9.46 def
-/isFixedPitch false def
-/UnderlinePosition -100 def
-/UnderlineThickness 50 def
-end readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 11 /ff put
-dup 45 /hyphen put
-dup 65 /A put
-dup 66 /B put
-dup 67 /C put
-dup 68 /D put
-dup 69 /E put
-dup 70 /F put
-dup 72 /H put
-dup 73 /I put
-dup 75 /K put
-dup 76 /L put
-dup 78 /N put
-dup 79 /O put
-dup 80 /P put
-dup 82 /R put
-dup 83 /S put
-dup 84 /T put
-dup 85 /U put
-dup 87 /W put
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 107 /k put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 113 /q put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 118 /v put
-dup 119 /w put
-dup 120 /x put
-dup 121 /y put
-dup 122 /z put
-readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7
-5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99
-8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716
-EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C
-02CE8D8B07183838330C0284BD419CBDAE42B141D3D4BE492473F240CEED931D
-46E9F999C5CB3235E2C6DAAA2C0169E1991BEAEA0D704BF49CEA3E98E8C2361A
-4B60D020D325E4C2450F3BCF59223103D20DB6943DE1BA6FC8D4362C3CE32E0D
-DCE118A7394CB72B56624142B74A3863C1D054C7CB14F89CBAFF08A4162FC384
-7FEDA760DD8E09028C461D7C8C765390E13667DD233EA2E20063634941F668C0
-C14657504A30C0C298F341B0EC9D1247E084CC760B7D4F27874744CDC5D76814
-25E2367955EA15B0B5CD2C4A0B21F3653FCC70D32D6AC6E28FB470EB246D6ED5
-7872201EF784EE43930DC4801FC99043C93D789F5ED9A09946EC104C430B5581
-299CB76590919D5538B16837F966CF6B213D6E40238F55B4E0F715DBD2A8B8B8
-80A4B633D128EB01BB783569E827F83AF61665C0510C7EA8E6FC89A30B0BC0EB
-5A53E5E67EF62D8855F6606E421BD351916549C569C7368AAFB714E22A023584
-8B1D6B52FC6F635E44058690002C6BA02CEC21C54CC8875B408A8BB84F445894
-5D6B3E4841CA20AF852A660FE9C832F773691DC6F7197FF3DEAEE97418A5ED2F
-F2AE65300416227CD3BB03C29003C770CD7D2A7A2E4C1DCA193651C2CDDBF93B
-966938788694BFB562AB0010268955FC3555E5984CCAB0A9B7590C77C9BC713E
-A29E5BD7193A4E971D1752DDD0F0AA4648E7E87BBCE66A1E836C715C408B07A5
-9EB56BEFD4596706CF839BA4CFA90CAD4038C1E006B51913279A2C31FBEE5BD4
-A7D74F9103CE6124F5B439CB860987DF44FE17EF88EF1BF62C67060D25696BCD
-94ADF08F04E349CEBDF9D3389D870D94CC05E393B3F4362A13A6A672EE5E8F5A
-DFE7046AFE3EBAEA58FFEBA4A47BF61F92E2003756DA643CCF2C9DFCCAB62669
-E3C2A18D690B64D907F50BCA155A85E47C3A6954C6FF7ACA36D8DFCE777B7929
-5F5D5F787B9C247ABF13D6D7B4A8F06BA25CCB342F8A5071325CDA86AD71BA23
-8A9695C7D1D50D0AAC267AB7CDBA7AAF46A264B7B081B7E79AD937FEE4969FD5
-155A99E652461EFFB4BD010E5885631E2B2497D6B8C43CE77D7D47FE201DD46E
-4482FFDCE150A1183C22C004A0AF0E1F42AA6804E038E1DFC8B0A3CE26B52038
-44D2E7F759DA5C252489E5525963D68BC27C82247BEB18818C7D4CF0BC5CC97D
-8C701034B8DF798DD4CE36C3F8B1FD40B2DA14EA75583852875031AF8C909EE0
-04495FDCD04B05A5EFEBA56A8CAC1F57F1B8AB91FB25C81CD51EE69D6E0F52CC
-A0E12CF7E3187D67DF71A599FFD895FAA7BF80E2E6B96592BE77AE96905BAF0F
-F547355A36C443797DDA7C414AA606CF9153E03450B77D1BA4088D739DF55F07
-111B9E11AF37F45B6EDE6D7AC126E05886A57C83886DA87761BE600DEECD1344
-8A82BD652BE7ABFE6A0F50ED7C6F4EE12CDFD80CA7A5518692F267C51C3FE76C
-567BB8DDBE09A2AF901F79AD02B435287CB8057B3D5EE6655071F67B00438728
-C4C3EBD648BAF650993AFE5E2B29074A99ED0FB725D9B8CE8B0292B08A280214
-C3AF252BEEAD30C88F72E322FAC3E9D78A1038F5DFC41F7BF1AE3744A0677094
-51B77C2D630B67853FE5E975A395C06A4D4DA744040B272C2B88D8B7ED3A2C01
-66F503C9DFD3C7DDAC865900D2A4F2CDF517F449851DB1963468D0266D7A3E58
-9F6B2A1843E6444274F16A9930302DACD8D2BC4588765099A86BCCD8A31DF0E6
-2853114DFF2D19F812F19AE6C2E419D7AC1BC024D1195074FD0C6717BFB389A4
-4D5428E7BB2E4F9E9FDEDED7BDCBDD3460805AEA0B5F6460C2FDF19273CE5BA7
-5D3AAE0DB94C6AFA8339646191C23B0149E7CBF136FC4C844E025A38935DF256
-0A0A6466A45EE8B9B23B6A055856FB084F87C73BA28F1883E3B184CD813C72F9
-233B78CA4E125ABD26F29B92CD9DF39D6FDC2A217E2B6B45D9B0A4D536790A5D
-BC0903069565A442FA7466414D948AC432C6B75D8D0E1DBB217CA3DC38A52DEF
-62E9D5AE9E753956C13819D93148C7683BE4F71B80BC066D8C19FC807FB1C086
-B49215DCF56A91A42089F0D063B9981925691F7DDE3237403AC714F5CC3ACA88
-DB2F1DD205578C00472FD70C8BA4F752E3923ACF3164D442A6B639902ED060D0
-C5777BC20F9A3BDA60FA3BC986C38136FBD2E8F910E32EF36377C9CC187F4AFA
-CCEC423DB925B378522B748BDF12D523804CABA83CB5A7ED69FAB9AAB75EE8FC
-38D9866E3754C4E2F2B9AEFA804044D878DED0E114EA0E9682FCF38F6628E63D
-FE1C1B5615E54FAE8684566EDC4B616F76EEFD6207E0386F06D3BFFA26425F24
-303CC7C8A8D7021E7D09B202616988287838C3DBCE3179B4FB5C726E603A47F2
-8248CB508F327D1291CF3F08F7C88298DC2D0F778D24304EFCF6E074182BF5B1
-8E6551811FD6991971692108E289B61053D6DCBA2925B3903E8916EBD09D97A2
-C6D08E89DE4C0CDF7185E1E00DF456B249F0BFC686E04FDAAD2772DC2C39DD53
-9C23A41471267F53A87E5C2B8CBCDB66CE0B9844BC506428E6150B48D2FA6363
-4FDB2CEDFBAE0B7DBCE4D83E29B2955F8966272CB865EDB360C8A8C19EC62A29
-03066483E4083524A1E8D80FE3867BC1AA91753C26ACBE8489AB0E3330206212
-93E07ED473DBF457EB8489E66FB4B8ED8A9EA8911CF9308CFE3E6D6F36810EE8
-91CCB11BD548617B2C683C354452B9229E7C9E68828BBEC324420DF7C188CCE0
-FBB514547553A7E9B38AC265783891F42DA472388569C8E7594F7E8810895A27
-06E456902A8D9F65CA808F1FD475D011C4572F8A654BA01D67942226A663D179
-95149FFF41A9F55AE84EEB9A6A39C017D7E4FD6EFEEE7FF3CE847CDB064A4954
-9DCD273B810E0F259501BA4003A3EC1ABA6E13D24C0B57FF82D6DF077833B6A2
-7EA54801BA81DB961C261689C0887FAD83771E55D3D137AFBB21779397E11972
-6C6CA922F45AFA5C0526863A5AD8B9C0775CCBA17FFD37A44CED4710884DBC31
-5C9D3F5441595B86CF7CA2EEE42AE87896E9E60EBF5F35C2B7FDBF9A9CDAE262
-3F48396F0F741E9DDF1D4FEF75E68AFB020D06CC29B3A7B2ED819D1AABC12B91
-CA2A65F1AFDDA2F3FB322E0268DBBA024663E49EFF076455338FE31A16B04EC1
-797EAB0B49AFFB906A0690A1E8E2F5314773E1CCFFF43E6FB3875AC907F0C5D0
-DCB9BCC127014D472463560CA0CB1C2CE614D94177C7A52A5B089316689C8112
-CA57E35D716D956DBF9013B1E5B9626456B1433C8C15FA906458F957133B9E19
-8D46DC3AC015F7602538C2AE3927C6DDBACF38E59220C2F5AF36B68DE9117C51
-04CF7DF32B1AF55B87D1D8A5F4BCFEC66F63B32B6548DEDA3AAB06C5310E4757
-78AFF947DA22809B360FE535506A554DDDE5A6F2411246653710ECE5CD3185BE
-730520A766C47E1ED01890059882BE1432586864E1A86A7F586438C8DD35C00F
-021A741ED47E0F16DB6070ED0C50038632CA4AC2975578A8372A080CC0447C79
-CEABDF2BCD5E78564247B0F0025F556DA8FB62125227849EACFB724A4AE3EF57
-90C07A5B27D2E59425F56BF8AD84C5F5310FEB1BC73D536339FC2E6A5BE2DAFD
-97FC835E0D52F680F80ACA37DB498AACF152B9B44626CD89E3302C3EE1623EE0
-F998FA78305960AAB9F483F731F5F67A8C963C23DB8E48FB804EF8B86FAFE7F9
-4C09641915FA7E3930AC922682313408BC1607C76751CEEAFD660206A39CF394
-40ABE2A313AB7D5FD6444E219DC5C26734D322BA268D330AC17959A390D6C8E7
-3A155095BDD66516DAD5D65519A7FB871ECDA77061EFB21F359158B4470EF79B
-362C35C06B85C9A9505C8361939C6AC013F2CFE8EEF46FD8CB4452AAB3EF1FA7
-DC066557BADC2ADDDF7DDC2A0E1DD4A357E27A2073427EACF9B9035DA5272136
-7DF37E26D96ED4B2ACD60596E039BCB15E259C72FEB3344E3EEE3D4F17DF4233
-04C1416BCADE80BD483DD8C9AF979E1C7D50C4CF015870703F88B92C4FE46AB8
-DE6717B55C460C805B391B84333097E116F4A51F631FAFAB34CFC925BEE8B72B
-C9FD5F5A79D8F2295FBFAE649DC6AB47794AC7D73431FFE5BE992F2B5AC67049
-B5208251C0E442385A9FACF25E3A98D7F5D4C2A1ABDC600AABE84769CA83350F
-9B87F71CEAD3600E02FF9AC03C1B5C21C84F911511A0CF0111BAC7605EE31229
-3C526A79D943D92E1CC3C38ABE82D560CFD4172F318030852A5FCC0534B8B3FE
-D7365987C8B48A072907B26CDC2108130A33233E8E0BB5FDF14FB55098A10EA2
-B51AD9EFB119F82B08D256D396D3263FBD9DBF172D43A90ACD1A31F3E89E8571
-74BE98B9560E2CD661A2F93C69FEA3FF26B00772AE2C2C24B98D3D122EA2AA8A
-44652CCDF4EF4F01CA7D62A976E23E8A86291F43BFAF38FD9C325E70F9C36CB5
-A181DAD30156E98339E6A0498D3420B7BB3B4E651A9090D4A17604AE386273A8
-3D4AE8CC18345E6E19DF06BA848F203F74B161D6A8882991CBA7385F308696A1
-BEEB0130D938A764B98A2001A38489B1334025EA848CA44A116D64926D460D64
-01159E77EA7ED9ECE7BA77635BE564A4ED89315BDFF54ACE6AA1A26591D13CD4
-6D6425CA7933769B842192858D10998509396829263290A3A7CFEBBDA3EE6CDD
-DF1E492AECDFF7941B53573F01F623CA0A5ECC9D05A3D0954F7AE8CE94AC3B2A
-CD4E27519B2E16F033EB732AA024BBAF74626DB55DC74B1FDDB07FAE98B4AC5C
-683CFD8744F361838D343B657EBF52DEEE7AEA7565C5BEEFE455DDDBC4DCCA7D
-87D6D769C5ECCF14118A14A85A86865777C8E28F953160D5E82844AE54D541DF
-550D5F1519E183E0C42BE88F0458CE8087F2CD4B1B49A8E9E3D127C4A4CB74A6
-2E73BF4CC317781D03FF04BC36AC0E4AF99E2ACAD20F6F8029DE8A035DAB40DB
-17D237850BCDD05931FF4B0FE2D0B79EC5A88FE0236271CCB075BD194AA25AFB
-3FB93A5206F61A14602E4EB6F1C31C654527CE0C02D04314DF9AFD710D0EBB9E
-F8721B97F5FB18E27507E1F800B5509A58A1A8296C72B7B73F99B6CFE42E9C2F
-B63B3555475E562672645CD374BCDE937A9B05A157FB3E74C8297507253E957B
-1A9DC421946734CEFA3D5EE357DAC7E9DE17A5BDDEF6B2D2A740BC58128FC514
-61154664412BA1C05209EC992A77B7CA45AB7C0EEBF590A5B5652866008CDEF7
-124A3003AE6A7CF9DF3C72750CBD281358CD2FF25B162B78CBB971DB3477F8D2
-ECA3EE9CBC90323B2C236E375337EA0848CD7CB5781A2B0A42DE7E4D99DB2746
-0B26796CEE129D23C76794B7CE21C13C7D4A998B752C8CF43A4821B736EBE246
-D2A2BD7BA3351FBCD1B0A501EC1EAABE60D06DA2FE39BE1F0AD629769FDDC933
-F9D02F9686EC8C2D7455C26AF4DD3F6860B2289E3A30E1C254AD17D731CB73B2
-BF4DFE90CAEECE3ED0CD3FB4C8F4C7BE1C056AB4E9B95781A8968E3CC1010003
-75DFBC4AB9F6B27C5A9AD88D94441A8ADF09EB275E5F0E5E6F3BFEA0FA8C308A
-8593ABA0645ECA8FDC3F0E264B35D4B0DDB86B93CD8A047FC409E18196B501C3
-B003622999C47BAC04FD1ABD8AD359C977766E9643EF3BD6385306B08EE3E13E
-7DA5A06AE33D17A3D574C6390DB6E9429754B210F0C349C359559C7EAA2350BD
-F61D4D8A92B1AF697BC620FA0351E67E0D9F41A95A47EE0BF210C2C48691901F
-F905F65693DCB85BE412F097480F6A7266AE0A928729DA0F691CBFFF3B276EA7
-322BCD2206D96E3DAFDFB992CA8F2955F0E8B882729DFF840569D12E4DA1775E
-523AA734552AAB6F2F16B89B39F1A3FF0E07EA08D13E612F201716C67F327017
-6C041760DA30374434808273062C1FFA2C47B3FB578807BC26537F542040FF77
-66C995EF3E8B08B09FCD3EE89C30F157158A739606D2CEAA26694A4F1CEA6633
-B54933141CB85C60AB262E2D4E824A3B85C2BEF810DD774F296AB37D0BAE7182
-5648CD18556ACB124246A75474B232D712C2358908B5D9A76F82C626BFDE01A1
-093B8FA6AA0B32F2CDEF737B28BC0448FF816DDB5812131DA0DD5979D77C3838
-B978CC3F6778A4BFCE9A7087EFB19749285AE4C92B99A6649DA349A2E0889D72
-6D4FC664522F06C8C4D86D30BA43ED4E42211217D01636A4E17E2A132D26F394
-EC34EA12D84594AED9C6CDBBC0908860F39B240FA7D7B3003DB10322498691CF
-A294C0FC7ACC0BAD1EED3E9D60AAE3F7429695892D1A21CEBF062C6129B33966
-8B2EF6E932F9891DE6028B81C5E9B23278D35B7F0D83989BCBA25E20E9D503DE
-144DC485F09A4EFA1268AC5E4B551C5B2F1D51E9B9B9C0FEE585204F869D0BE0
-7287D7570A12940A47C1F51AC6134F03B415C30E147C49F89228855D093EE55F
-172711F37776E97A99CC4B36E2F10713E36FB279FD3FA5A0EB9F3938F42E2BB9
-254EB8F0C0F30391735019E02BFDA21D9813C6A22279B898EAF01AA892B14DC6
-5912B9275167AB46EBC420836CC1A5F38A4EB47C039A7BCA62BC3FCE4199FC71
-011DD6E5FFA0F3D7F04AC02AF91B9249B9F993AE346572329DA852115BEF8460
-B94690E790003586F473F37EAB5AC2922F5F663EE2C3C0C336A8DB71650631AC
-0A923A389AC911CB215EC2EC7D50CF8AEFD59EBFFA53A9F1FFB7E6215F17093E
-3975F186FE23BB5FA5474C11408FABD223E1E6F62035B5A5C1AEFD8899F00FFB
-E729C2D5FD551E80716CEA4E8281660286A802AAE8D5834F37F2EAC46297E57E
-993B09251DD7789D3467417E393B7DEABD06676B96241B0E43ED1A1A9FC3B12E
-0D34B2B0792B79AA648FE9450C3B209FB6D7D91F50C52A5DAB0BC81A8B698BD9
-18946EFF691912D7348D48FE68CD876FC6F71F81165D0C3272DA1A992308D9E0
-ED6D0A4DAD679AF495F62B78D462B463BD4A40931172290C615B3B3B6B47E45F
-CEBB85E0A6AB6832067CA6D403C239530D07F199788AA4DD52553836851C5228
-1072406F6D7323A334E7A7FCA588897C4FBA6D4F7DEB65525EFB74E539C988C3
-A685A98752F7198E77E456A545F0D23A1BEF81EF58B02D289CF980A3F17BEC8A
-6F83DD90C4A917EB0E5E2B444A608E2E9D2FF80620E16AC1D7775C0A10C1299B
-BEE0E1AB24C50647E5CA1DA65CFF3B2C295F0644CA7826E1DC6FADEA93D66A20
-DE852F20AD224D28DB900519EB1569837139C833F24B799F7EBE3FDC14235323
-1D0BCD4991C861F38DF413A5A5588B73AEC3BBFDB885CE17BB3E97B4E6A79761
-93EC8418C2BC4725CD61B5E30C07352F647C3FD50083878C13CFAC241DDCB082
-E53703D182068727F9EB6FACEC25F6D901D7309ED7370867E34E267519E22D62
-4FC7093448BD0D6B1C43D318A3E14C92032325C132AE0FF7ED707E1FA4A955FB
-F5224BE0045CB14ECC321D0F333FE24EEFCC504F7C756451D7693C3E6CA87526
-4912E1B6DB935BDE76FBFAFCA4ED473F1D2618812CFF25A6859C626A216603C1
-361BE3E071FCFEC2D4BF2FEBDE07DBD56A1BFF8303901168FA06488BA6B76F36
-95B0A90D7724E9ADB567C2ADC65CF3482CF47FD1D16F70AA19A97D0F9EFC611C
-AEA5E1ACCDA7FB2DF05E9480936281484BC329F0B771775E73F7FD72FE3F45F0
-50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81
-88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932
-AB7916D44EC2210CB941B1455867E510E9D8A0B83CB645BCABDCDBFCD51A4E12
-60CFFEF0CCA548F654037D01CD631FC4E1F97B4F65DA9AE79D99F13A726E93DC
-BBB027B7D175FD17A704C4668F6F8428262959DACA9F8C687C923CFA053804C9
-9B2005FA7E0F07D81E52A9A37AD5CEBA8EA63929093ED0DAB9F7C99C82A50E6C
-6440387049A0C359218F5268C9A28F581783BB9D29E08772D7252FAFA6739687
-22570150178893C418531769CB3D96F799BF1C6415820F96B6EFAB5344E82796
-38A0DF66609F5EA332C1065274EC93027D264B84B52AA8AD82E13E2A41AED340
-B240D1888CB89FBB748FD10B214773D466A44AA2AF44371CA8B9A4450DA76EDC
-0167B4015A270B9983B89EFFA023A3DFFDE181B90C51D70557B0844362B0652A
-6345C6EC83DFEFE099455232455943718297254186940D6305C96EE2B9E3E7C9
-A622D25E0471AC31A8ED3AF8897BD19E322CFC3BD3860D8A0634081D9AF53A9D
-84F4ED39D8127CBCAF9AD48E9CBD10A67A2CD0CF93D61A593C0627AAE80E297F
-610CF0B2FDB6EB3BED1D866BC1E1DA14C1A2583976BB788E9B26B26D6071AF28
-04DE56A166D01ABB14FE7A5C409A3F6AE1F17F322522621F97113DA3C0CD1EA5
-11AD5168DE7B3BBF39F61A45B553D16A31A1FF6000C7BF7A3DDF5B852BF6FEB1
-2AAA616AD71EE44D7A3EADF8CDF02666A78E346CE8507646ACAFBCB42D804F89
-07085FB776C81D773B33AD206D49FA01351D19E9B93423686FD7C8D1F4085009
-A3D67A249C7B38C40D4A83D74E819A62B938D89AE9070009275EE70CCC716937
-0BFC0EE647EC231309588DFF33EE995006FEF93469A8C4CEC33E5C77D53F8BA7
-5C444825DC75D418831EE39A0FE3DA51CD3C5CDD8D28EA853EB7F4925E040BF5
-F38262DD8FABAA1B6A5EAB2E50AA4FDBDAA7318795B5E3B8520B9CE2C02D3053
-74F30A8680D3D25B1A8D9287B67430BE892BCB142A6391FD774289B426F82590
-B01E16018820D33ECEAA498ECFE0023DD959ECDD891113323CA14761136D43F2
-A32A3F8255D0A00E0FAE6FD2BC390D9484AD38193CD5EF2A0B6526B925D91FBB
-966E69F1F7310EBD4306E2D9D16F308363FC231C626445F3029990699E6B0CF5
-229ECE0EDF004E8602D582EF7810BA119B058DD90C01C22744B5EF5CB156A1DA
-7A9FA7086CD89B2E8C5E90B258A3D64AF7A9E698ADF3D0EF1C2CE3D30ED5A4F8
-93572BCD11B506228DDB2C85B79631258B5376E30EC113D2D97C12854A892352
-4016AA0558446EB491FEA150C7707E53A959AEEC3F606E8FE8BD6803881E7091
-625E3DB91BD919071CB21186DBCBE103403C49F634AD063EFEF99A59DF1F589D
-5CDDE87414F6D12429B32C1EEF09665D6606F33E015BD62409295538A487A93E
-796AD8C64182629AD78DF437E04C0E09CA8397FFC74FA927664EACF7576939CF
-CF56962843FBEAAB2C5AFCAC3DD6C05FC7402C2148280AFD5025C33A1D117359
-68BD0E06472B0D335BCCD589365BA20568DFD46180A38CA13770A8570C3C90E3
-B1D86706D81754B00B4F1CBA76D8341C4A552851A79877C8F14E8996592E8434
-AAAD811BCBD37DD9BA69E6D76A19192AD53A8F60E50166DBC41DA9B77783DA9E
-5358A61F08D5FB1731EC73386AFF81B09631D57368A2984019FD887CB16A37D2
-FF085B743E2A3EEF2CF70CC006799F1AB3DE1569E2377D0F00DAB31F73CF6EA8
-339CC5F37B42E0DA5A9FADBDE4348EBD8E8E41F4588BE9CC71BA9B8CEA1FEB1A
-296BBFB3E93052480FC0460EBE407B68C5DDCF3471D5D70D58562132E228742D
-E1298F26E89FE76925B21024384A3BCF0805BA535818525AA30E5267076EED17
-9479E85C7BE3A67B23390E0D413B04E548BB08E7AEB468FA87707225248AB35C
-043355788C90839CEC662D883BE9A5BCA92F1C802734084553B54BA72CB7A8AD
-CC7A1B7439A68E84F1B1F1271B32CD1B719BA52E0BA5DB53C6372CBAF47C6622
-65D10D789FF729CE2F422D464CA83424CCE7E06591659809F91F7087EE721F64
-6FF9AA5E47FCA748EEC49D202F538023F7295E03637BD089641A14BF85F926B3
-7DDBE5B216F4A85262EAA63E204AABA92552EB93169A07C9BF3BFF389941D751
-EF82F9118E9D53EAEA71B5DA45AEAC7FC1F855AF5CAC11EDB1041FAB35423A37
-B1974AC24E5E83F32931CE05399EE7829BB1785A0F117252DD7DB5EE45159BE8
-F96026FC3A9D6E67FBE906C9FBE5D0B1CE09CD30889F575471AACBFC343A60E1
-253A70A4F7F9EE8A771474F8C3C8DD5C410165F00FD2E08FFB820C030088F452
-1AB1770F80FA609C8978C5CD1FF94A6C77CCC7315AD714B990BE419955B99747
-82D883C4DE1593875FE60460E2D370337DE830A3060EC38B2CBAB76FE40FD9B6
-00E693B9090259ABCD7D3ED4B9BA444C94D16573FB33708BCF12A0016A839568
-E223CA958242021032FC6B4AE83A900DC87CC6ECF2BC00F9F8EFAC6606208EAE
-FC933B0689A554AA1BCD5F7FBC20299DFB1632B284C24D64AA90DEDDF272F7C3
-470CE467B5F959C24D45B8BF53E96E5E56B2703E863FF8A846D14C210696F2CF
-FCBA34C2478F25493F39B067A4D16F8BC484F5BDA1B11038DCF25D149F49C59D
-3DA99DC0A08EF232D98E9FBFE46FB5E457975E7771459E330DF4BB863E092AC6
-B368FADFC326DEF82C2E1F5014A54B5D8AB78EAD86CA2496D0D753A4914C4F3A
-9251677B6B7A76B3F46D564CD855D423B7FD3756958DDAC02CBA90115E2586AB
-2328ED830172111B3048FB5021CEF1A52424E31DFC904C67F3EE4D176E0AECE4
-2815188935C37E307BE490FDB7D86C9ECA73D165C659C2102D60935CEAB955C6
-D5F932B3D3F355E5AA2CE54EC1BCD0863949C0D976FAE7D862A3E8319173B55C
-FD17CA38B17015634F22CB58DEEDEFF2DE3735ADA5C5BAE39B4B0805A6F77813
-51C64EA337386FBC74F2C86446A50E134E20F34E580CCF0C88F38F7D5BDFBE8D
-884777BB0EAE668E1C385AF59359668BBA3584EF4B0DE732C2DC88E2D0C3E081
-358298442A33541E8494C3D8E9F0261A2B79382507FDC4503055E14ECB54972A
-66FE4FF0B584E91464DE5AA6667E8D8B123CB182A652224050A235C1B0D8E5F1
-07097D98476731A1D9224E156665BA64DFD471B6C0B11519703F349C3846C2EA
-F123F5EC585E2E357A9B016D82004436D460E4E3A0D81C6A4EBD3A600822A6B7
-FC2C8581DE02B61096F1E44DBDA5BD22529B31D715ADC9FEE721DEFE8D5A7305
-6FE51844A7A31FC453F8E957212D0262D8B5654C47123385D6309C9E91613C37
-693340BBE694449042CA913A6F7AF2B98270C7FE9B4ABE728AAB48D8D37D8F1E
-BFC3AB2C613FB6DC9B12A69276FBB8D4218D800515BED9CC3F8ABB90F4907993
-D252C28A994B71A7A725F4EF5E189E4B8E3EB46A756469DFE6D20CEB897B331D
-AF8EB7E9DB01A539EC89A3E2AAF71B4F62F9B46CF90329DAE6D0905DE7D66667
-8DC3D965DB4A54B4FC63A46CCFC487784A0B4F9045CDA8827BE808DDBF6FB4BE
-CA0FCCF1A8A6B512892EF43ADF8F00CDB94D774447B0CA23AEB62641CD4D7CE8
-4DF24C4BE165D5D901EC9F8A0C91A21F1E15FB1C6994297CD468EFDF37FDED3D
-CB18B1DF5F8B13F6731457E2E1E84C694FD59321C214A6FA00FD63736F43A0BB
-46610DE20C7B63C2585538EACFD958D38CB48B848398722596F99FD902DE3669
-AFB419590B21C195FA98B123154544DA1E9C3E6D54679DD3434FA27E0209F7E1
-EA99684FCA8BCBB105DF37297E9EDC960DD623659F26B3C1B29DD90E89D22F60
-2FF619C26F0C7EE13B0924017DB0B7B09D6C83837C02E381A8CA197E5D590669
-BC616C29AF0E5534230A6AF724FAF6732C6BCBF26596459BB0B03E3B4D3D9F88
-3444C38978A9412CFE52ACB5DE75BE92349AB04BC08F99FFDABC98F7D20ABC47
-7FAE1E6E9909628F16DF65854E991B44BE8471ED5F84DD77CDC32A03D49BB82F
-BC1E559026029D81F2E80B46062C743EA521C40E4F598655EAA50C749C92227C
-26C7E481559F733518A44E467D06A92A8BE1AC43C57F3339E517F8D43F75D434
-BF40775F91ED694717B7B6A5D6A9DA2FF46DC29BCC9CF53232454BB3846DA528
-72A46D4B199ED2B80A20993BC303729EF1C06E341B321BC37383E7E201DE0BB3
-929CFF074B2AD7EAADF5DAB328D01F32DF7D3A886B90E665F5526E279DA4CDC3
-3985B1D582A1AC36C0F9708C27ADC43F678EE09101A04312072C5C4F9DDACB30
-ADA37AFF97CDC00220B71ED8D762EF3D06250D5FEA90EB29CAF1A9DAEBC23DF1
-F9680F8266D9BC42613706C8D328C2DC41CE73A6BAFB96FE7AA60A0D5D904C81
-8B2F64AA3D78C3AF18A7B99BFFC96211223B4EF5B70B1C19BE189DDC613378DA
-082DE0BBB822FEB46EE05F8D83F201A8AE2B59861CA9F52C54780B3360160814
-BC369D35C07A4D4EF9FB534477376B336CF1A372E6C6E7D076D2C1F95B6507A1
-62CF058FD9D28A0D9A86E859DEC3BD2E2DA69010B1D6C3D6D0F35E25CE3458B5
-4A8DD7485A18858B6EC1ACDA8E5D3DC74CC8B37A7EA18ED9E1B3A333F7F41545
-8A9C8598E870F85DA7E4A772175DAA887A4BD065101ED1D704652299FA193387
-7A1E684357205136A83B6D76EB0C167363C9248221CB09199477D24D3788115D
-B8446CC827C7385333000BBB82DAEDE63ACF9D328041961710D3FA09466CF2D7
-B1685E6B6FE892F9B75F49F1DC7F6AF4E8D5F2B0AF7986216225FCA4F7AD1D01
-880672F6AFAFE640713B5B83567264AF6620DFDB3B0BD45E8EB6C375D230FD28
-C5CF99DB705DDDB9A2B6884E2D62A9547DF6CA0D8E86E7FD1FD28CDDB4DFE321
-4921327FE2D0AEF48EE7E15E17B91D71B3485CAEF2871BF343761983B4DCB7F4
-156E6D8D5310ECACD6661DB1D962A7EA8FF44A2A12C37561E21E5C1C5AC88D32
-38159E3CCDE194F8BEF038B04F94CACFB29F8A93EC9A375667C8BDB4ACA5D195
-CECD055E06C67ED9C2C0374DB6C390EF4D65AAA194EE54BB26CD7869A5FBE3EA
-09A6E1285F66BC0C0B5F1434E1F2BCFB6EEFA0A215C37CF8DEFC02727A637CB3
-46A83C6ED1B8AFB5FFA7DC2C4F1C3CD57D63BA2A986108E3EC91B54B48E99AB7
-3A58D8990D8EE81BAEA6CABB3F372A2AEA6E918F49266ACBE23A68D9A6863849
-4DBD6364F2A0AEC6FA454E5AD9D56BD097F7FF16D98C5C8FFDC5222A301B3C57
-6BDD7F281E6D575F46DCF293DDA0DFAF727226254E8CB2E39DB8EB1B443FAF3A
-4F7AC38741969E050F59A9A193E0BE89544825A0C0692CFBD7044CD12CC14189
-79EE566E5FC74A76EC65E5285684F4575AF05F9FB2356CABC4BDF8A6067D169A
-EA546A99288D64DDD928598FBD7ABC96B9B7C42D6912273D786385E7C60B30D3
-29756256728279E500FC73BADD4C21F0700C916E3EA0428BD052FD8A2487054E
-049FD14E372F0ECD6E3ECF4805D02FD4E146DAEDE6849AC9299390414A0FDB10
-153A2AFE5E8FA44A1186A395EBBCEC9ACFE9719C6E7436785BCEA6380941CE0C
-6A46296F0DCA6C3C13C3A9252BB87A45E9E4DAFCD3868CAC9D83BB0DD174DFC6
-27D5D1BBDD986CB0B5A9BF9CA5AD2C94BABB3AA21CAC876F10FBA5B464622B3D
-B8AC3773E3C8B3C36BAF980DB29432A01FB5733C2887729D5FE0C412199AA6DD
-A4D7623599680BA2196E9F439D6C293D6E16A2FF1205168F31277895A853FE6A
-1FD47593AB67CA4F4D407A90E7F7D8A80C6D9BE25BA5ADA64F744A50FF665A43
-D9F7A8430EBF084928BC3B492E8F1EDD523C8CD0EBD4A065096A78DD3D8F5A21
-8E6A5E4DB1FB611B4CC47C87394409400C6D0615F571EE4A96564F3366E5D938
-236560F6A9957E8D087AD152B8F6E01C9DFC27ECE0BFCFFA409B94C9D523EC69
-3C328139DE7F828CEF88150A864F8F64CD7363A84601216DD34DDB4085FDE7A9
-8D90D3571DAD0C3BA52419FC79036754396903B86AD37AF2F5A877DBE1BAF1F5
-8EFE1507E8787F5C5AC5368DEA4DF9D8A8D0BDD5F0E9687D1D614BB70567BDC8
-8B1CEA009D324518C46B17D521F28E17AB8C2252E01A88DAC5187B153C1C25CD
-C342ABB1E059247E276EDC61D51A2CAB2114BE28EB27407DF0E3048143062E54
-215841330CEB3212216055913E93FDB5889D0862798B2C9EC4C7AA867EBAFAC9
-8D9C5E5221C1D63654A4838F15D0640C6360EEE3F78BCAE95892191BC102EA2A
-84BC256B2E51E3D5C6A2C9C4DCD5189189A292BC47FA28CDF05EC12740D45F2A
-480FA39C3A164A201F0D353CCE51F8B765FC47BA5EA8FAE41832320D18A90A24
-4AD12E6C4E82DF6E172406961F414305F390148F61472D732364E581862532EC
-748309596199EBDE301256766B26CCD77898C8A97A226BE0D1634DD4CD12295A
-D6990DED2FB64B5CFC8B4073EFF20540D50E21A56B9E63F075FEFF20D50D96B4
-17275B729D73F68D4CE816B36FAB46C5551E4D3C001B55107EADC29DF51874D6
-E936DAFFC19B2DEB8788C7E7FCB9D2ABE5660FCB3708E81F19BF9C600F203BED
-4DB8649D9B91450982A801D15B3841C7339D1D20EF138030CEEE013EFD570348
-0A6346682F82963745931F85C431792C64B1E6E0637B63AA85554717C96DE31D
-B4D2515B18A00891063AAF9FD2B4BE8708009A334F7CFD689D81ABB348CA4BDD
-F21882F2EF86048F018565C26728BBE7417E685776114470B32B18A71223DBAA
-EC66F6A864F7944A4C459F0899EC7B5FD8C0FE9AD393C867D5B7C9E98C5FC32F
-707027466005E23475A87BD88BB8B5520BD87516120A2FEB5F0C00DC0B424C88
-5D8204646F2ADF4C7081D2CD0D0B3453FE69C955BE1C40AC66624083CFEB434D
-FA7D2214BC69F0310594029EB6B1D355C9FD13A8895F0BFE85B725E47809A824
-E74B7A7E31FC95E6655147D20B4A14E420A6DEFE9BD80CDD4B8924E2E7EB3EFB
-3774B612975D6DC561D4DEF163AF1DD76EBCE76D339B583950C2981EBDD8D02C
-48A5D5B2E8AE036020BE8B760049DD6418440ACBB03E798C0BAD524E82B6B422
-0DC30556016452AAB929801A343B719367419ABF1AD387925953A2CF4A1AEFFB
-8EA00A873B2ECFD127C80E23BE2F36E10E77F86D3BFE8B076E355BE1B85292A7
-906BAC9371610C4AAC2D3A0239BC2BA384314ADC834AAD796C8A7557139D9BFF
-A7B56DAB7D63FF9AC78AA9AB416A0AA3F96B0EE6C525BFDF5925F4859A3A737C
-6E573FA019456ACEC1AFCAC3787F83DB80FC3DB6CF66F351D47E9042C33DA41C
-A9876A5ED89F7E1C5C32045F44E6D9F99CC3AF6F3F6C537A9E6B5B33E18BEEA2
-7EFC03C85F3F9FB5BC05D57510ACF67E864A20F5C9D46BBCC179C00456EE9D56
-691F2F5A0D4F2499772A6D91517AA6EF54DF7BF4E3546C63CE47076149D5A70E
-4A649D801BA0032F47668005F8460F6BB9488566D4AA5A7BAF13FB1810B219F9
-7E21BBB6619D78A42224D89A8C02721C3E802E0AF94C55461B5761200794508B
-E379198FFB5A4EDF5AF7C0FCD6DC71FA1F88623664D0447694503676D6E59738
-9F79981C2AB97EEB8E493F471780B0A73031375C3827B6F50EA1F7EE885B9B90
-E9AB441283F4EF1C6C41DC8FE9DCE582BAB0CD65CB8AF0CA61DE4A7AFC3B7F75
-CA6097DFE38E07B318BE55372C64698D01486E55880DF0E177BA270AD2A5F813
-5701A4E5B87647E53EF14EDD19E4B7007683B569712FE119C27BCFC075979BC7
-8A5B0748E1960C5ABC8C5BE4B92607B33572F525562C8E039ABF49E965D2CFB8
-369DAD99981263229E068F5C3570760842486D82A78DFACC9BBDD36E4C92017F
-52AF6FF3085D19FD3D69BEF26BF4FE486C4DA28B67D8F8A9EEFE6880CA09D2B0
-D6659F69E9CF9B8C048851DD2EBCCEF01D71002B2DF0B991D2E93763D7FBE496
-0CA746868E3EC8576735B7AD2980CFB4CF3D13A7D2F1A7D170816E7B5F36CE7A
-26CCC8F7FDD1FAB9DF86966AB4559A2698EDDA603842D97622053AC85531F0A2
-16A97ED8B2E9E9FCE247C33A414BE13DF50A257AAEFD9A00764142AE6CF9D890
-BF73B590807FE1B7ABA71BA62CD68867A96739EEDC1EB0824C8AA59A13535931
-7B3BAD294588402474B9DD42BCA14C18F64C0FF78B85971BD4179B299D23D9D9
-954D71AF0B94986149B5EB8F18232D957FF1EAE068B90B560C72A13EA7B442C6
-828EFED6D96384E045B610B0A8BF005B0B99C11E2F99DBE20627C056E14B7C2B
-0DF7DD753917691CAF013D7964DF6E4ED5E49241B65914397BFA07D68A5BC15E
-E52187CC260540A2F41F4A6D4BD7CAB2C825D72B312B8794BDCB73DDA4C66E96
-CA52C51928647A5A59FF268BD487BBCC5A8A6F36AC8BEDC211B6B108606C8D36
-3A2D4EA6461CA1251E10A86A40D3C46C10DE603C3596FDD87D2510A8A29A9D0E
-E27A52372345A829A84F1254847CB52378A710A8B3EAFA2FD94892D3A32C9F6D
-BDC495F27573D7E5DA65146423736952A0A13E6E8030A184D2FF95CE2B68A33C
-7F0D94FDE8DA4ACD5FB84C5E6B7D6AE891F4E76289F28F7D766B79B09200FC3F
-A082AF28A6DDBF1DFBC29EE3D49BFA8116E5A8EA86D9B1A5E34558A83545B7F3
-0C512D2004357DE29C5221FE6163933C0A7C59995769A07BB5B817DB58B6DEED
-415A3D643DEAA04A5F7C0B73801410134501C6EC7E55C737B81CFF59F91D1084
-BAC2276662BCB529973FFE12717D95C884E714678B60481B69F6059E16B83120
-7A6DB96912C2B6463E03732063AF2C6C703E95DA52B5D72265135A18D7186618
-F23610A06500E0468758B19D198870ADC4D26227C2FB99B97F231216FBAF7769
-83C421D4EDB4B880D2E53EACAC19FF259B7B61C0824FD51E281571FDE1F82A54
-93794D923DE8F5512070E6E8AFB5BFF99B8B73E22993305BB60538262B5467E0
-678BFB37BAB72658DDDB5037126E86D0F9935A9908164A06FD5055651E83A11E
-E7058915122D9F2EAB20D69C6937EA70A58CBBF5F86F846785C92974B6C52D96
-BBE2CF060BA5BC78CB760B5BF518DC630031471CD2C0C136628DD815636E878C
-EEF640E2DAAE6663EBF873CC521A6272349A7BE9F845E9A2CFF2007D5CD9C12E
-B156BC49815D2261CCA72B9ADA22FB720223AE8C0253DDF43A4395566146B9B1
-687D5612E8485AD038BB26AFEE7433A77E69BA110183D4D7922C85DBE0DE76C2
-DB0438CC99A281AC6CDDDEC6080868AFD6C9916FF45F2FFE9EEC22EC13B7214F
-A4A34342F0715E22540A26503251C4F079D53B507A7A8A4C26C765CB5D3E6487
-D3AF0A0867AA512CE112F77B379F54D91759225907A1454733EA33674337F06C
-BBCF54429C15DED15DEB59AEFFFA82B4FAF1CD1E3C071A4DC9C8D634939A52EB
-89ED3BA0697FF8EE3697A64F48115266635DB5F4286E828E308E1D7C6B5D5A01
-907EAE2ACCD3199FCB8AAD01471F7098D54D457215C2756D9617C9316A8E0CE4
-F32521B6F32B9EE2A8980614744A02638B157355B709444055DDD2AE8ABB0FE4
-885F5F55150D98BBFCE02164237C1D82E55F9061D44893E73C337B7C17327945
-B164F85481401656CCD0FBC280F0213E77FF6B433A49A9FA6B3DAD3C2E191131
-0C76576EAE08A677CB46CC44DC87368EFC29D4E9A8577535B619F594117D3BD4
-12DE2166B4CF59F122F16B4FB5092BB15D9501CBD734828C478638A01C7CA12F
-2F3E9519766F1E31AEDB3F6D6D6820A85B72CEA12778014D207C2E5FDDDA6AF9
-B3604DF3634B123C7C7F2EEA0146FA7412FDA6AB9E62F4B0F2FE3FC94F89BD4A
-290224FCC8C85CCB7AF6A86CC765ED026E7DC1FA8971DD25C67451B0CC62B07B
-30549C6A7987C5A9D576E8A5DDF2CA26B9756E89B526E718B79406DEA65FB596
-0C71DC919771AA57E6913E56FF5EADD3C966F1D5FC26E56087F98AF7F37CBC22
-4FCC928AA4221F925CBB7E0A3A623DF3FB2ABB658361B88BBB1E94B78A948A9E
-21198332A3FF310217C0DA145DC97314A6878126F88CA53101F0B3D4ACFE85C8
-E7BC1F33C6DAFB4D57A89FA33E8599A76CD796D653B13C2512BE4F561F81F502
-67C69AC40EC879790C00148CACAFDEAA424A809B9246486C45ECC4E09F6AE655
-2FDB077C4C5A2029949AFC6958FD029922164DC9AA8207790D0F138E0E736FD5
-5970BE8C4E4EFC951E912D614570A998DD034948DC5449C56A2B33E89B8B077F
-97A1EA7542176C03553021FD98B8F0C96D2C135A43D8A0A6D33114DAC906D9F0
-4334AB431812105B969FE584623C1BC44B8D6D32C433EEBB7B9BE6BDD1873C25
-F06CCC01B9B43E4A6445E9E0936805A38BF1E01F23861FDA9B0087BF3E2C85E9
-0776A5306C6B97DB8CE6377108739EA84DF52CADF14C806DA7EB284028805B94
-8DB61CB5C591B5E3FEF87E74A0F3F1B963A1B84F717DE48F085F5AE9CB8D60F5
-ED2D3D09E720072A2A4C2A256DD98A9F69FC6095C964DCC618FAE945A714BB8A
-24B0995F5FFED10FA0D8A6CBB2DF565EEDA1950907CD9AF9FD1B360BBC6E0963
-82B35E3073FD7FE70B874CB51F06D9698959F459FC748589C1856387CD60BE2E
-A8F7E621858E50F0FC7965BB2CD3481C53A3E3AAC137B75F2EF13AD72E51C0B5
-F6101240EE677EE6D89E0A8A45111DB661AE6C2B3A07A1BDCE24C4F20EDCB4E2
-19DE64A2C1099AAEF4CC90568A13B83957C016D518859643557E54C43D03C968
-3B22C4834FF5204A1C94611B8B968A9D0BF33915C7A74A64BA80663F318C6349
-2A176111C6A2DBE4C5B25A6774AABD94C148F64BAA0D94A7520B23BA02337189
-F8BC91D75417AEE0935D699E4E113B7CA25E7BDD189B787D278B83041DB25479
-84098A94BB2159FD82EBC32596FDDD435D2B568F3030E31A98F005E8FEC084B4
-42FBC39627119CE8D8F7A84BF68353AED19A7576D74B7CDBBF9E6BDBD2026303
-3C1EB51FEE04DAAC22DA8B26B0C3DCFD7AD50E44CE9C734BDCC605C2C5AFB99B
-815B9E0DFFE77CFB35CEB211C6E5092370628184B08ED27B8CACA1C7BE8C6521
-E41D3C4142A84D267702289E6AF90C48B7DFD05156CD6FB4EB424B0CC12BE5D8
-9A4DD29029CAFACF480ADF9E9D8BBE6F7D90F77123F3E15C6F667A718AD69721
-F2D996CA371AB4DD46D28476A84DC6C0B22507FAA8031B7D0CB8693DAAF8BD6D
-24E4578B3CEC87D60018236E612025BD514B7AE56FB0C859C451F0B34885E629
-434A3937990C3C20227A043BFA53C3628F747BD588460BB25C02D0C607C409C6
-F56A23750F8B09959C7B3935E70F90650EF8A71A9293A7EE6D5D01914B9B9201
-1B53DF0BA9D573F2D6A6C0D9B884E9B46BCC92D4D82AFE8EE1661B66F77B13CD
-7C5267786A4B9ED1A036B591962A4C9F49D58FCBC86EF12B447363A724A9EB9A
-43B0A46580564CD8B6CDBBD0011D2C2AE51C1FF386472A8DD61C66363D88F0EA
-5BBCE688605B3C7082248856EC479F04F99DE1E827D87494285CBD2AEDADF415
-D154BC6C30A35058800A1360DECF3609CF5513D86F41C4D058FB9304FE0CA42B
-90F23C676499E2A983AF06FCF09E372C69C5AC195C6AA0007014878AC4EF2CB2
-A8FA9151B2C77F776DA1C329736E0F908F48512991562FD3C0EE5E7C75EBA52D
-C4686544960F7A37FB2DE00B945C521E9FA54210F42C1E453D0439DEA072916F
-D1C9B9C01526E79D44AFA41B7AA08BD4CDA27379C1A0BCABD929AE917BCEE67F
-E3AC05E5764E79ECF059E52EE85D64D28766076B412D2CA9271B74A6095CF04A
-31655432E2BF0F9C2C5F37C257B31E7A5B06EAD92329ABE9D70FAB1C16957EE5
-8C80A873E3AB6B29B0126C75CF659E483099A5A32D9B0B46E803B5F35386F136
-B2515ACF4DFF8779C311E74A57A13C127185C2CFEBAE6B9997043721DE4450D6
-61648C6A697F09ED42BAB11759845D46E8605079C36B670CAB73A0A1E01D9E38
-433FC147E25E8A702282286860917D4A0DEAC8222A740E58FBDA91816DFCED58
-F933AC7F7EACBE198DB60E6F11ACF470B57FCDC16DE31BF4B15BB951E50ABC04
-7A9EED8550B60364CF3782CDB7165385DE0B650599AB3DA34F5D5B963514B4AF
-09826FBBF93278DE6EED781FECA7CF00D2191D14C9D8A5B018C73E3152EC3C7D
-079350C0BAD84CFB574C35D7C9B1390D81957EEBC3EE70802E0B572AAF20C79D
-B08D8C2EC77F08071356C2645A4F7C257899E0B72826B89B713A4501BACB6B92
-06DA791E0DFBE3C0E68CC28DA52D2B1FE5E924585BAA78C463D865D7366EAC60
-EAFB579FFD8E0C57385D05AE1E8B6072F56DE0D227339AA24B0E4B6838EB84B3
-A891C4F078A69245717FD73DB2704A1147970CCFD9E4B4B1B109B3B717320555
-D6E7A3CD8DFF269AA35BB959BE5A70946ABA128DA86D92B92046BDBB73C7822E
-CAD1F50FD9C064364071A9A8CFBFE3F365912C2B53758807859107685023B015
-E59A1DB2C85CAEE13175BC9D60942B31EDC438AB4743AF2CCC57A0379F922DF6
-11FD6B1AB6FD9E136EC11148C08372C65278116A1457BD8DED61E3B987C0A3F9
-FDCC5C1BD67A2AFAA505A50E925D18863E2FFE33E293195DA5B3B9B993BEA762
-5C2AB3C89DA2BB72EDCADF3C7993445A26191124196494FD3819F38E1ADC02F4
-53BC8487EAEB01B6502343C360EE62FA6A5133354DE836BA12A6E98B3770051D
-97478423C4C26A75B667B30844EB7C7450E39439F5E2FB30763E519F67A1BEBA
-1164E4CBB723531B04BEE7572C808408965E4BD1A9C991DBC59469C57504EE3D
-0EA77F0B688DAB51C1A11B5447DF43B76A97CFD09A6239A8293C9BEBEB2786C1
-04045ED4F8791918648352DBFA58626CEC471E47A0C2DD369434AA93C4D13C01
-FE22FC16270445D61BEDE0CA168DD7AF4A4DF923FA871ECE63ADF237D37CEE47
-9C6E657A4D8874F7872D0B62F775570AF435EF8FEE6D3C85571ABA7877348E32
-4712DFF94F1DB89064281B94E44B3606A9D3E63646F40774526E99390EB4F196
-4CF48B9F39EC5079091E4FD385F6B7A98DC6076582AD027DC94E7A4501B0BB26
-8C00F79509D91279A17BEBE5FB19022C1C98B784E113C126B9B5568E20700322
-E45F1CA1662471B3F3E667EEB8E0DAC038199F9982DECC9EF81B8560C697187A
-F83DF3CF7F399328C13ABE41F7D091F60046D72E8F94B94D4D539B228754B4FB
-769A930980B4CA7F2D88D31A842E45476E34EF002FA928E866584C7F93908AFD
-E8EC64790D76157EF201BED6903511F4648645B0229E648BF2D2A61A759F0B9B
-E80C814D449D65F0B7588D27BCE36D70EABBDCA2A09973BE36DDE06F651C0E6D
-9A83AD303008986B2A94C0722620022E6706BF709950CE9B3EB09D8B5D4C50EB
-922C5779A5A5350F0CAD649D175EAA8F3FE4C7E6ADFE77B5D9184F750E51A1CA
-1C1021C89AB45777CBDFA4B7DE550005B10E21BC4D1F034A03DE398CCFD7A21A
-A68BE1161911997EB8F43B150CB2A683FE2DADC53914338EC9DBB7A26718E86B
-51B8D8C9E098B021C510C1FA908C4D5FA8FA60DC6B4DF825352610D5C65751DF
-B3F01EFDC2D71F49C650384595806CB70B21C2503E27A06E817540EC46EA7772
-E876DEE2F17252F39A9D57A542876D9CD51F41C489813D62EF5F7BE7BA6C3644
-42D3AFF0BE9C63E2A80A4ACBA1C2E042983DF080B162FC392987DBC66F4FBC0F
-DEEF00B9503C7699DA93160EAC233C7DFC7F09F91752213BC63D05775706A18B
-45B5A9BE0DB983220AD2F24DBF5814314E194528AAA540BA19C95DA8622A2A61
-4FA39EB7BE6BDD394DC9B14A77DAA7FE758F6BF5F0C7B5C3C1C480CF3B41743B
-6466B8C95F4C112879386508264549A56250D02462ACC3A5CA62304138A90CE5
-E0FD95D975014F3FE0EEEF30B20C5F21CD179246EE87C057FA304689471D515F
-B168343171AD40C6D321510804AD735871C08F0C14A5549D21A0F4DC1BB8115A
-4AE7E8739DFFAE2D51E28689ED56B3C9653CEC7B160B5A90600A9EB139E3C3B4
-99B692C28028970D70BFC1CB3B5FA95900E3E68BA80853756B768E7120F08BAA
-67734E0F5588B1C71961B1CBDA92036DD24FF72EB73796C52BC00EDF27DDC1E1
-7281D147BE84C4FB91A68FEA90C3E245FFDDD78CAB1CBB53F1DD75449C03771E
-5348317A3C4DC79FF83340E91D29692DE71101A7BCB4CB400E8D81DA9536F601
-C84BF0277EC915E4A0F350038850E0CDBFE9250FC166EFF1B12A92A6C160ADE2
-02A9B84DB6F998B82FCBCAA88B22E24D2528982F3F4FD44F722EEA4978BC5D1F
-9D8FCAC59E66A969430B760F7433A4195A10AB6691FE2BE4057BA6B45E5A42CA
-A09CC3F70DCA414232372EE4BBB9972B730F1B5E20E61982E39BB4520E805442
-ACD3D64BBB96105ADF1EB4BC3EE8790DDE514E25A7757964E0737F383816BC87
-5448723D6AC995CFC16C6813234952E63FCB69789B5A25AADE08DED559289187
-D50251CFC03CC3217BEE1F024523EDD5C7AE5A33BE538DFC366478070EE20BA1
-DE588DAF0609FB946A0931922453E5CDD65A85C2B0A59E4CD661E447C42CE2F8
-34852015D26689DF23E52CB2275A21A0FD2F4F52A98D2BCDB53C09782226C259
-B9EDE48551F5154D78EC14315D7ACEF6954259D8AA6A8C76D476AD5D7D141B8D
-0C7B34988A2DF797B6F4319DF83EDB8393C6DBCA6CD1073A6D7AB000F5C911F2
-0BC35104C2B580D5019E8C16C1CAC5A84EB63C79DDD421E92BBF3C553EFE5BA1
-D0EAEFB56A51D13EF586B3D44929C32EF5CE2D087841CA2FE75EE9E79F36A018
-10154805412B91A4873A793DD9C1D7A1CBD25C57ECCCFDF950C0DD2FEF7EBE2B
-A1E02B6E2F884751A5EF3A
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-{restore}if
-%%EndFont
%%BeginFont: CMTI10
%!PS-AdobeFont-1.0: CMTI10 003.002
%%Title: CMTI10
/Encoding 256 array
0 1 255 {1 index exch /.notdef put} for
dup 12 /fi put
+dup 97 /a put
+dup 99 /c put
+dup 101 /e put
dup 103 /g put
dup 105 /i put
dup 110 /n put
+dup 111 /o put
dup 114 /r put
dup 115 /s put
dup 116 /t put
+dup 118 /v put
readonly def
currentdict end
currentfile eexec
FC9CD5D5F36E28DADB469201F41E9F39098B65E43FD1227A26F6FF812CE452F8
B5476C28FC1B1B3E5FEF3A3B94CD552E29288AB0A3ABCEAAEACBD2D5E9001579
738029B0E7F635C6C4962340187558084D9CD408EF7FDCE23F465AFCAA8EAAC4
-8855BF64EC9BC75371A98095CB51BE7FF107E4C6C2107D887716F94563768073
-B8C4238F51C1E63C279B23DE3DF51F656B90880333880515945253BE08582F17
-8888FF4AB1EA0051CC41CDCF6C2D4B2F19C17FDF8A8664754A884EB6A4311C08
-074B3CFC4E20FF71191E3C1648D2C38260315702E80A6425361E89CAE7108A3F
-C7FB9AD79D51427F8FAE45D1B02FA9083F76469C3378D3510246D81F10F3F48F
-9CF6D65D2F32BA1B012BAD2FDD43CE879EBFE2E5DC3BEC2EF496DD2C3848D655
-AAE8EB7970EF9F9A5AC6BF1C30B61659B7E8075DC32A70F10CBCAE6122894309
-5A0250411E81644F995A049EEEB89045B21B7741FE92A75A72C8B0A406275099
-8D134C8CB0CDFFE48353CE37202D9686FD7AF16500245B88C1C5B88E3DBC3B43
-BFDA072390A1D964E90FEA605DC6AEC44AA1D700017FB1F41C13A2C37B83FB64
-E63E895CE647A545FD5CA85463960331495B05929F57DC349736AF84A5687549
-CD60A676FD984F0C50AFC2F783594DE38ADF685F5E2937C95B50D07C6316ABC0
-8495EF319D914D65E08722DCE6A5762EDB87EA4AD820C359201059F56296F608
-395942723FB853CB67F553F689BBFDF60264E90AE6A7FBF7AEF443A3F760B490
-8C3513FCA7ECCA5A363D7F72C62DFB1773CF88D2D7E1F0FD606878C4F274F285
-5A3EF87C541495A067498702A89961BEFC26B229894408B4BAD353FE06295037
-9E55663FC427EAFBF65F616CE7A771421FCB22006B241CDB156035A428CFC241
-C3FB0343C9C040CA92ABC487113E09074631B554366DAD01C246F4E082C64B7A
-E9BE7C172B606786E702BA6D036D10682AD61CD0776567E40D095756D3D02704
-DA8492D994448DA3E66366CF2D712AC596DE587E976936D0B5B0E2F02724414B
-5AA83C1B3F8EFE2C0DB65600DA12E74A4E6D474A985BE62E8B0E6C0AA9E739B7
-D1A6359CB3AC713C743C7CDEE58649C4B6953E5671540BFB5FE80776FDA87A1C
-3B3B342B7AE56D96AA8F18DFD6A8DA83196B9F5DA844E622A6717CBCDB06B0A7
-70C750DE8AB3960E58BAA873F0C21D1157A2909231C41889BA6CFF45FC41F07E
-9F56466016A3C7BB340FD6B6321A5CB19788A886D0B5909DEF40ECE8923E7EC5
-CD3881FA4311C937C0572619DDEB4618EA621867B1B8556E73DB25F5E86C0D27
-913B40450E452906B5528E86B0F08246B595BC6487543AC0B789D555594ED997
-911B9D19F01232F69A42F99FFA56DC7DB66BD6B9158E32511F945E11724CF164
-DAF26FF59D8B728188A609D1D868C2536150F333BDD1DBE091283F1884D320EF
-908F80BBD8AA0C8BDFE625F34B41BDBB60DD9A6AB33298DBAF5224EB27D47B8F
-69588EA13F414A6E6EF3924EB12BD7DFA8F9628C4924BB5C065A6A581B31D314
-6AC33A670CAE923A46883115C5B26E3566D2811EB20634B14B53CF46E0C66F92
-4D5906B71A17C8E38C1EDC9A45C0E3472E4BD49FBC8F8D1226C8A020932DAA0E
-2FADA6A30D305693AB8E3E08897AF9EDCA74EA769AAA7D6824F01C3733E73214
-2D9AA6EF67203CC27E3E7510D09015533CC5CBDF4A4F43761B5019433B615A95
-F5D1FD30B1FF23619141C06772C69C0340C90443F192EFBC342D1ADEFCC125FC
-4BCD134167487DAC3A1C5D18CB454EB3BE7F3DFE59BC6F349395066C17BAD3A9
-94F54B393C29D53A3668370DC085A703FDC91930B0CD6F7FD4EC1F338D7DF701
-E96536126691975CF22A54EB33D276E0F67FCBE601DDBC41BDC763D9EC78D386
-51A7F72FF1338CB14A6F09670E67F472D6F57C6447F5C82305B56BFDEBC0B324
-EA6FD3853C831681645B10C42B9165789D5FB6EE1BCE6B3E908AFC374688E720
-5A3930D9918DB4189CCD63E6F4BD9ED18FC1F0F3E85D51E3615FBFA4F1E9A746
-96B0F85B468281C142E707271350C29703F947292B191990DDC3A13A60A981DD
-FA1F8B9151C8CB3738AEE8FF27E3390404F5C96874BE9290AE811A35E0C4727C
-C7425896985C8324159C8A3A4576BDBC6EE02323CF51ACA4AFEE28A4AFE6344F
-54C5064B9A124AD5E6B2B2CEE087768B97DA1468ABDE4FB32C632E1CC6BBF007
-B8C36E1D3F7696415EF51B3EA956FB3612B12FAF9B511F9D6B29DDD7C89FF065
-1752A6E7826C367ED149527468A9A8F3730DB8E6C7DA1EFD1BB1DD2693BB2421
-52733EE07D56146CD064222CA4D765AE3A1AC8366538BCF0101BD74F7DA3D330
-04575D95799244593ED3EA108FB8FCE3A8BC431416A6D60E27C9096444E8C225
-3B838FD5B8C78ADD9B7DF7EFBA6A6A466CD243EFFDAF90ABFE82CF2B9E06DCF3
-046758EFF0C168001B0AF208160B773913DEEAF4F167B0BCBA1EE3A51766C9B0
-D3440CE0A46DC741B417E21502354EB5DC09B91231A5B79FBE4F80028C01B505
-91866DE115685EA48FFF22ED898D8E64C7A9C9D8CB20451DEF0551610C6D1255
-7DEB229CD4AA2C8F0AA989EE31BB94D940835BA22BBD1607C8944C84226F1F59
-35248C1A4AA7F0AD631CB66B7A149AAC76044376FD050E367D993144111232DA
-DF4650BB5F45B791FB1221B54F88798E8619A3E82EA65C4A3DDD98A3E7D6B296
-EA6739A97A0771E6270528213FC6F372DF4F1FBB80A47FF62FFD5287C9AA4F91
-5064F8D3CE7B4C71156E4D21658D626B97E01711F123719E3DEA49CF8981DEDA
-CBDE3182826A
+8855BF64EC9BC75371A98095CB51BE7FF107E4C6C21079571957B2AC35ABF77E
+9DCBD599C549D3B40A36AB846859C7BD9F87A2FBC724621FC7B305F02742A66E
+F2BBB6B21671FF62D682982C4E8F6645EA4A7D875E03774474BD86F76AFD4053
+61E9AF3C9B374D730501BE61106AFFF8A463406722AD2C14D1A81C08C2A31E60
+42DBCDBFFE4056E6AEF59CA261835523196A8921D1BE0013F8B3D6F05793FD18
+3E767E98289DA6CA9DC9E2EF9E697998D2367E45AA87B3E75A57F64021FAB21A
+A480FE7095000C29AB92E6D299B2E5EA7AE1997A6B23E1F90549334F62417196
+89BF7E9F62484C2816CF5FC2ECB7DEFBB11E63D70CA13D96BF3DB3B95F39A41D
+2E0C84ABD2FFD86525323ACE4A85A8944601CEE9D157445312EE9EB81873DD63
+A1BF3256BD697289C32D8598046EF6F6646629A7C29D5B1C5855CDB95882C2D7
+73536D20BEEF480B4213C0F02826D89B76300F6BF3ECC9C1DF3AA2C91CBF7D8C
+2862CB42FE32A3715855D8B7B30FF83EAD80181F8034395A1ECCCE5BDE7A2C9A
+124900DD8F1732791A32ED4820F93BE8D15A5B5960F824BD17A8455F537A947B
+9726CDB5DBA4107593EDBBEFF3B140B7CF51BD51B099045DB94A946271DC6C00
+24F77C781DBE53479E423426F3FE3004F4282816CB898B570C171FF63B4FC904
+8D716F6B7F3BC9AABBFBF1DDF2779CDD19CBBB60DDA40D5DFC85ACDD2A0FD2D7
+6402B7768E5B1D7CAACE9241F5891F922CD586255D1D9DDAF0910E14F3A2F8A4
+631394010C96EB7EB6E3009591E12C0C80F511D1FF14AAF65FD0A74E56361BF7
+07826E5FDC23C1AC2A50347CA313AFA7CDFA9E42A7DC32E55DDA210716ED92FA
+4331BA732369112447602F9493143B5D3328E0CBE8D4C57EE4EB8468C9C31064
+4F6C71EAF60B7BF1B2E2DF13C4B64CE23087B85E78A8C367A6105C15269DD87B
+49003975D793B30D858690491A4BD6E09BF7D7C582A78DFD0F1FAE877C3B2CFD
+660C587003A3A8B4362939D0BA2A5B76508A551186EE271759D589AFBBA309D3
+33478C99AC3159283CF08DBE9E7D58042EB9062EF8B6FA510B458A55E3C85212
+AF9987ACE2062C82A91ED4F218B975055A49E1F6C4B14FC2F2D823D74E71AF19
+DB3801202C03215258CD203EEFF4F97199C3D6F6A2BF64E515E833772B5F3B23
+4E690439F39A5DDFC4E9D2601D1E0323F078063AB6D64B9AA92951EB3E371816
+DA019DB05B1A8B566B9A533F10069AA7750B50FF7BE1E5E0BD62EA4DE2B9CC72
+CABE82D563B39D6F1411A85FF362563B0C6FE46FFB6897FDFA0F42473767D528
+6788EDDEAE31BBE0B4D69E8BF4949601F436D81926014F6AD17D84C62C888369
+210CCFFC2BEBF144C5174388744DF5B2887B80F264D1E5558A687F8AC3F07756
+1DB478B1379E9DBA6DAF50FFD54182FA592BF25142999AA5175A05AAC03120FC
+62EC894BF4DA0BC161405D400E8AE6AD1278235EE873BD585E07D7A56FD5D5DF
+3DAC00BED890FEE9D9EE683E1D509D3277668DE2595810EE68EC5F19D537B83F
+9448AF17FEF1B09563D6264E7D2A44D12BAE42F33C6C8ACF744803730F5F2A88
+94E7999A8A8F8789F85DEB7A1589DA15D909F7575E8659936CCC6E73C8144A41
+766DA8DECC6368927FC0024AD38C50682258D56F3C8180FC97FC621E661898CF
+0DA95B5653444C6B87EAF1A4A5EB14AF652FA6A61BCC213ECB48E79DE1B19C1E
+0A95F66AB1AFBEFDB39E1881056DA237514D8FA2750623779158FBC442246D6A
+83C13A4C8751F90B0BD6ABF6360F3C1BB068D850BD1DA7EE25884E56FA40145D
+7E90ED6DFAA9777B9282BB664A166B394FE984B93806C7DF2AA54801B89BFC54
+373EA0BBF32B14FA3D609828F444A1040BAEA7C4E126F2D7A3AD2B12FAB44FBE
+18B4DF6BB7E05A16CDDFFF2B854167C2C35AE87A1B92DB0187EB03B31A698E4B
+0269CE0F8F1937214062CD7E73FFB5D7D038C2140BEE7358BC9F0D89DEE895C5
+08D4F62FE683E9469039A30F41CCDB700DA6028677A96B4BBE46A7CE68F7EEE7
+71A78CCE0F8234C444ED49F0FF446EB53E13C8F7EF7DA5C918FE926E376D9F1E
+9D94780C38D4C37997EB82FB94150E7A00D11CAB0CB27D14D04B4A70E77CAD44
+D38B11D4C8A2F93373940F9F3E6EE3791146AFD95CD5DC863F3FB15D3335E1B0
+5640015233B403BA1E1C1A05157AD94D44C97C9E64EE26BD36BF416E8F6CD8A7
+4932C2AC172C4B904719D1B8CA8DA4739430755E16D1DF1510E8200F7BF3A132
+5B3DB0EE283A10C6DB402DF9E5CD1BD320A486F4E6C447825E74F20C73237797
+7CAF39791DC0E9225B3BD9E4B044C99DD8FC0EA13B439CB8E8E7B28D411F156C
+8E273DF55A6333466CA184D7473C5F86224DA898CDE44037A76B99EF17B1CD7A
+B5145537C8100DFD678C4026CA7BFD246AA9FFCBF00CBF798FF45ADA18819677
+948C533E22ED956832FC363319A957F9B496BE117E4871D267CB5994516361D2
+DDC0E92B560AEEC752123BDC54D4C1EA96ECA7D405015C7F6F19A11D419EE538
+37B45452F7CEE447C8B38953C119592593B75869405466A63CD80121C7027E74
+25DF968834F9354026E4E604A5A90E47DE8E9276B873AA3B7EF40EACC8777A4D
+0C0AC68C938CB9CFFF0E11363481B84B46BDFAD1DB8987C683B2776517700AB3
+0FE03AFEA160A1C8A64500902387150537C8B201A6B2571058E66822165FEB4C
+0F8F3F8C5C2200A7D3EB21AE0AB2E420882DFF951BCF0A7DE6A4765F980C735F
+FC1EDF12C6DF51EF05C79F2AE5A178E37F9AB9811C22A7E2AF61414C10C49D39
+7E86AEA151FA63BB8E100014398FA872A1D5E7B101AE65F3F0D41E02996B4686
+28D361C8626FC8B7AEE7870D48BDE4EB991F5126CE7F041900EDA3D65DB3DC68
+2A8CEFB710AE461957F7C8B8FD796223834286D09D85BBDB927A0938C784C9BB
+4BCE589823E038D93AB6AFA3B09244E8A6F390D6A04E91CB6B130EEC58565049
+986813F8CF5D941F8664FEBB784FBCAD2F5C3385602CF6DA84559BBE18A83CFF
+C4957E9FDA287373C6E9A850ABCFD1E785001391BE172E0B2E53B7033E64D44A
+9FEB9A57C0BC63D39C1B1E7D0E2B3AA0EF60C444B429C7B3598C45AD1FE80AAB
+BBBCDF95EFD1C13FD6B5D429CF61909CD167FAD992D98C9A8615D52B5FD936ED
+1E8A36E159DF544154BABF408D227E4C80357BC950BCB9EAC4AA1A570C8A5B76
+B26B23632625459EE6A3511B6868C2F6AF3C32E162925168329664D96AFA8A8F
+0BABC996C15E5D5AA289EC7F00502CC0B0073113683D76CC0635376FF61F2D40
+DA4C3AABE779808F1B9FEAC6D5E78DF9BFE62EF1EE89C7365B9FA6D0B47BB17F
+7A133223697C6295A139524BAFBCF2BDC0C3AD1D35216EEB44074B7EB5118AF5
+E24966E8E9642E6FD56DA4411C4CA4679BC73132E07C46D286CEEFBB71E5AA1D
+97391E6A30525C36935598F74C5BD4D72D4302B8109A6568CC5D79C17EAF8F4F
+F4FD2AA5AEB3DFDA78454CEB2C631BEDD822938964F3AC6D685D1008F3547F9B
+81C2D70A79AA7E4289D27137DEB9C219387071B5FAF4D14C24D78F38A5D2A57B
+1E128E9B5D2805062AB4BAF8CB749CD103057E2E529A75BDA174029ADE79F679
+5DD7BE5AC9F72BE105B07A8D3FD60D3B341412E0B012504C320FCE8CE68E882E
+E7D13EBB47ACE4A2A4851BE1FE93BC4571A86A4A1A49374914B755C9EBD78C28
+76C8A6DD79E3F6352F147F4B8776F0AFC462F814E5B66FDB076B29C1C94192A7
+6F9382B0C066A9
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+{restore}if
+%%EndFont
+%%BeginFont: CMSL10
+%!PS-AdobeFont-1.0: CMSL10 003.002
+%%Title: CMSL10
+%Version: 003.002
+%%CreationDate: Mon Jul 13 16:17:00 2009
+%%Creator: David M. Jones
+%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
+%Copyright: (<http://www.ams.org>), with Reserved Font Name CMSL10.
+% This Font Software is licensed under the SIL Open Font License, Version 1.1.
+% This license is in the accompanying file OFL.txt, and is also
+% available with a FAQ at: http://scripts.sil.org/OFL.
+%%EndComments
+FontDirectory/CMSL10 known{/CMSL10 findfont dup/UniqueID known{dup
+/UniqueID get 5000798 eq exch/FontType get 1 eq and}{pop false}ifelse
+{save true}{false}ifelse}{false}ifelse
+11 dict begin
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
+/FontName /CMSL10 def
+/FontBBox {-62 -250 1123 750 }readonly def
+/PaintType 0 def
+/FontInfo 9 dict dup begin
+/version (003.002) readonly def
+/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMSL10.) readonly def
+/FullName (CMSL10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -9.46 def
+/isFixedPitch false def
+/UnderlinePosition -100 def
+/UnderlineThickness 50 def
+end readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 11 /ff put
+dup 12 /fi put
+dup 45 /hyphen put
+dup 65 /A put
+dup 66 /B put
+dup 67 /C put
+dup 68 /D put
+dup 69 /E put
+dup 70 /F put
+dup 72 /H put
+dup 73 /I put
+dup 75 /K put
+dup 76 /L put
+dup 78 /N put
+dup 79 /O put
+dup 80 /P put
+dup 82 /R put
+dup 83 /S put
+dup 84 /T put
+dup 85 /U put
+dup 87 /W put
+dup 97 /a put
+dup 98 /b put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 102 /f put
+dup 103 /g put
+dup 104 /h put
+dup 105 /i put
+dup 107 /k put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 113 /q put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 118 /v put
+dup 119 /w put
+dup 120 /x put
+dup 121 /y put
+dup 122 /z put
+readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7
+5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99
+8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716
+EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C
+02CE8D8B07183838330C0284BD419CBDAE42B141D3D4BE492473F240CEED931D
+46E9F999C5CB3235E2C6DAAA2C0169E1991BEAEA0D704BF49CEA3E98E8C2361A
+4B60D020D325E4C2450F3BCF59223103D20DB6943DE1BA6FC8D4362C3CE32E0D
+DCE118A7394CB72B56624142B74A3863C1D054C7CB14F89CBAFF08A4162FC384
+7FEDA760DD8E09028C461D7C8C765390E13667DD233EA2E20063634941F668C0
+C14657504A30C0C298F341B0EC9D1247E084CC760B7D4F27874744CDC5D76814
+25E2367955EA15B0B5CD2C4A0B21F3653FCC70D32D6AC6E28FB470EB246D6ED5
+7872201EF784EE43930DC4801FC99043C93D789F5ED9A09946EC104C430B5581
+299CB76590919D5538B16837F966CF6B213D6E40238F55B4E0F715DBD2A8B8B8
+80A4B633D128EB01BB783569E827F83AF61665C0510C7EA8E6FC89A30B0BC0EB
+5A53E5E67EF62D8855F6606E421BD351916549C569C7368AAFB714E22A023584
+8B1D6B52FC6F635E44058690002C6BA02CEC21C54CC8875B408A8BB84F445894
+5D6B3E4841CA20AF852A660FE9C832F773691DC6F7197FF3DEAEE97418A5ED2F
+F2AE65300416227CD3BB03C29003C770CD7D2A7A2E4C1DCA193651C2CDDBF93B
+966938788694BFB562AB0010268955FC3555E5984CCAB0A9B7590C77C9BC713E
+A29E5BD7193A4E971D1752DDD0F0AA4648E7E87BBCE66A1E836C715C408B07A5
+9EB56BEFD4596706CF839BA4CFA90CAD4038C1E006B51913279A2C31FBEE5BD4
+A7D74F9103CE6124F5B439CB860987DF44FE17EF88EF1BF62C67060D25696BCD
+94ADF08F04E349CEBDF9D3389D870D94CC05E393B3F4362A13A6A672EE5E8F5A
+DFE7046AFE3EBAEA58FFEBA4A47BF61F92E2003756DA643CCF2C9DFCCAB62669
+E3C2A18D690B64D907F50BCA155A85E47C3A6954C6FF7ACA36D8DFCE777B7929
+5F5D5F787B9C247ABF13D6D7B4A8F06BA25CCB342F8A5071325CDA86AD71BA23
+8A9695C7D1D50D0AAC267AB7CDBA7AAF46A264B7B081B7E79AD937FEE4969FD5
+155A99E652461EFFB4BD010E5885631E2B2497D6B8C43CE77D7D47FE201DD46E
+4482FFDCE150A1183C22C004A0AF0E1F42AA6804E038E1DFC8B0A3CE26B52038
+44D2E7F759DA5C252489E5525963D68BC27C82247BEB18818C7D4CF0BC5CC97D
+8C701034B8DF798DD4CE36C3F8B1FD40B2DA14EA75583852875031AF8C909EE0
+04495FDCD04B05A5EFEBA56A8CAC1F57F1B8AB91FB25C81CD51EE69D6E0F52CC
+A0E12CF7E3187D67DF71A599FFD895FAA7BF80E2E6B96592BE77AE96905BAF0F
+F547355A36C443797DDA7C414AA606CF9153E03450B77D1BA4088D739DF55F07
+111B9E11AF37F45B6EDE6D7AC126E05886A57C83886DA87761BE600DEECD1344
+8A82BD652BE7ABFE6A0F50ED7C6F4EE12CDFD80CA7A5518692F267C51C3FE76C
+567BB8DDBE09A2AF901F79AD02B435287CB8057B3D5EE6655071F67B00438728
+C4C3EBD648BAF650993AFE5E2B29074A99ED0FB725D9B8CE8B0292B08A280214
+C3AF252BEEAD30C88F72E322FAC3E9D78A1038F5DFC41F7BF1AE3744A0677094
+51B77C2D630B67853FE5E975A395C06A4D4DA744040B272C2B88D8B7ED3A2C01
+66F503C9DFD3C7DDAC865900D2A4F2CDF517F449851DB1963468D0266D7A3E58
+9F6B2A1843E6444274F16A9930302DACD8D2BC4588765099A86BCCD8A31DF0E6
+2853114DFF2D19F812F19AE6C2E419D7AC1BC024D1195074FD0C6717BFB389A4
+4D5428E7BB2E4F9E9FDEDED7BDCBDD3460805AEA0B5F6460C2FDF19273CE5BA7
+5D3AAE0DB94C6AFA8339646191C23B0149E7CBF136FC4C844E025A38935DF256
+0A0A6466A45EE8B9B23B6A055856FB084F87C73BA28F1883E3B184CD813C72F9
+233B78CA4E125ABD26F29B92CD9DF39D6FDC2A217E2B6B45D9B0A4D536790A5D
+BC0903069565A442FA7466414D948AC432C6B75D8D0E1DBB217CA3DC38A52DEF
+62E9D5AE9E753956C13819D93148C7683BE4F71B80BC066D8C19FC807FB1C086
+B49215DCF56A91A42089F0D063B9981925691F7DDE3237403AC714F5CC3ACA88
+DB2F1DD205578C00472FD70C8BA4F752E3923ACF3164D442A6B639902ED060D0
+C5777BC20F9A3BDA60FA3BC986C38136FBD2E8F910E32EF36377C9CC187F4AFA
+CCEC423DB925B378522B748BDF12D523804CABA83CB5A7ED69FAB9AAB75EE8FC
+38D9866E3754C4E2F2B9AEFA804044D878DED0E114EA0E9682FCF38F6628E63D
+FE1C1B5615E54FAE8684566EDC4B616F76EEFD6207E0386F06D3BFFA26425F24
+303CC7C8A8D7021E7D09B202616988287838C3DBCE3179B4FB5C726E603A47F2
+8248CB508F327D1291CF3F08F7C88298DC2D0F778D24304EFCF6E074182BF5B1
+8E6551811FD6991971692108E289B61053D6DCBA2925B3903E8916EBD09D97A2
+C6D08E89DE4C0CDF7185E1E00DF456B249F0BFC686E04FDAAD2772DC2C39DD53
+9C23A41471267F53A87E5C2B8CBCDB66CE0B9844BC506428E6150B48D2FA6363
+4FDB2CEDFBAE0B7DBCE4D83E29B2955F8966272CB865EDB360C8A8C19EC62A29
+03066483E4083524A1E8D80FE3867BC1AA91753C26ACBE8489AB0E3330206212
+93E07ED473DBF457EB8489E66FB4B8ED8A9EA8911CF9308CFE3E6D6F36810EE8
+91CCB11BD548617B2C683C354452B9229E7C9E68828BBEC324420DF7C188CCE0
+FBB514547553A7E9B38AC265783891F42DA472388569C8E7594F7E8810895A27
+06E456902A8D9F65CA808F1FD475D011C4572F8A654BA01D67942226A663D179
+95149FFF41A9F55AE84EEB9A6A39C017D7E4FD6EFEEE7FF3CE847CDB064A4954
+9DCD273B810E0F259501BA4003A3EC1ABA6E13D24C0B57FF82D6DF077833B6A2
+7EA54801BA81DB961C261689C0887FAD83771E55D3D137AFBB21779397E11972
+6C6CA922F45AFA5C0526863A5AD8B9C0775CCBA17FFD37A44CED4710884DBC31
+5C9D3F5441595B86CF7CA2EEE42AE87896E9E60EBF5F35C2B7FDBF9A9CDAE262
+3F48396F0F741E9DDF1D4FEF75E68AFB020D06CC29B3A7B2ED819D1AABC12B91
+CA2A65F1AFDDA2F3FB322E0268DBBA024663E49EFF076455338FE31A16B04EC1
+797EAB0B49AFFB906A0690A1E8E2F5314773E1CCFFF43E6FB3875AC907F0C5D0
+DCB9BCC127014D472463560CA0CB1C2CE614D94177C7A52A5B089316689C8112
+CA57E35D716D956DBF9013B1E5B9626456B1433C8C15FA906458F957133B9E19
+8D46DC3AC015F7602538C2AE3927C6DDBACF38E59220C2F5AF36B68DE9117C51
+04CF7DF32B1AF55B87D1D8A5F4BCFEC66F63B32B6548DEDA3AAB06C5310E4757
+78AFF947DA22809B360FE535506A554DDDE5A6F2411246653710ECE5CD3185BE
+730520A766C47E1ED01890059882BE1432586864E1A86A7F586438C8DD35C00F
+021A741ED47E0F16DB6070ED0C50038632CA4AC2975578A8372A080CC0447C79
+CEABDF2BCD5E78564247B0F0025F556DA8FB62125227849EACFB724A4AE3EF57
+90C07A5B27D2E59425F56BF8AD84C5F5310FEB1BC73D536339FC2E6A5BE2DAFD
+97FC835E0D52F680F80ACA37DB498AACF152B9B44626CD89E3302C3EE1623EE0
+F998FA78305960AAB9F483F731F5F67A8C963C23DB8E48FB804EF8B86FAFE7F9
+4C09641915FA7E3930AC922682313408BC1607C76751CEEAFD660206A39CF394
+40ABE2A313AB7D5FD6444E219DC5C26734D322BA268D330AC17959A390D6C8E7
+3A155095BDD66516DAD5D65519A7FB871ECDA77061EFB21F359158B4470EF79B
+362C35C06B85C9A9505C8361939C6AC013F2CFE8EEF46FD8CB4452AAB3EF1FA7
+DC066557BADC2ADDDF7DDC2A0E1DD4A357E27A2073427EACF9B9035DA5272136
+7DF37E26D96ED4B2ACD60596E039BCB15E259C72FEB3344E3EEE3D4F17DF4233
+04C1416BCADE80BD483DD8C9AF979E1C7D50C4CF015870703F88B92C4FE46AB8
+DE6717B55C460C805B391B84333097E116F4A51F631FAFAB34CFC925BEE8B72B
+C9FD5F5A79D8F2295FBFAE649DC6AB47794AC7D73431FFE5BE992F2B5AC67049
+B5208251C0E442385A9FACF25E3A98D7F5D4C2A1ABDC600AABE84769CA83350F
+9B87F71CEAD3600E02FF9AC03C1B5C21C84F911511A0CF0111BAC7605EE31229
+3C526A79D943D92E1CC3C38ABE82D560CFD4172F318030852A5FCC0534B8B3FE
+D7365987C8B48A072907B26CDC2108130A33233E8E0BB5FDF14FB55098A10EA2
+B51AD9EFB119F82B08D256D396D3263FBD9DBF172D43A90ACD1A31F3E89E8571
+74BE98B9560E2CD661A2F93C69FEA3FF26B00772AE2C2C24B98D3D122EA2AA8A
+44652CCDF4EF4F01CA7D62A976E23E8A86291F43BFAF38FD9C325E70F9C36CB5
+A181DAD30156E98339E6A0498D3420B7BB3B4E651A9090D4A17604AE386273A8
+3D4AE8CC18345E6E19DF06BA848F203F74B161D6A8882991CBA7385F308696A1
+BEEB0130D938A764B98A2001A38489B1334025EA848CA44A116D64926D460D64
+01159E77EA7ED9ECE7BA77635BE564A4ED89315BDFF54ACE6AA1A26591D13CD4
+6D6425CA7933769B842192858D10998509396829263290A3A7CFEBBDA3EE6CDD
+DF1E492AECDFF7941B53573F01F623CA0A5ECC9D05A3D0954F7AE8CE94AC3B2A
+CD4E27519B2E16F033EB732AA024BBAF74626DB55DC74B1FDDB07FAE98B4AC5C
+683CFD8744F361838D343B657EBF52DEEE7AEA7565C5BEEFE455DDDBC4DCCA7D
+87D6D769C5ECCF14118A14A85A86865777C8E28F953160D5E82844AE54D541DF
+550D5F1519E183E0C42BE88F0458CE8087F2CD4B1B49A8E9E3D127C4A4CB74A6
+2E73BF4CC317781D03FF04BC36AC0E4AF99E2ACAD20F6F8029DE8A035DAB40DB
+17D237850BCDD05931FF4B0FE2D0B79EC5A88FE0236271CCB075BD194AA25AFB
+3FB93A5206F61A14602E4EB6F1C31C654527CE0C02D04314DF9AFD710D0EBB9E
+F8721B97F5FB18E27507E1F800B5509A58A1A8296C72B7B73F99B6CFE42E9C2F
+B63B3555475E562672645CD374BCDE937A9B05A157FB3E74C8297507253E957B
+1A9DC421946734CEFA3D5EE357DAC7E9DE17A5BDDEF6B2D2A740BC58128FC514
+61154664412BA1C05209EC992A77B7CA45AB7C0EEBF590A5B5652866008CDEF7
+124A3003AE6A7CF9DF3C72750CBD281358CD2FF25B162B78CBB971DB3477F8D2
+ECA3EE9CBC90323B2C236E375337EA0848CD7CB5781A2B0A42DE7E4D99DB2746
+0B26796CEE129D23C76794B7CE21C13C7D4A998B752C8CF43A4821B736EBE246
+D2A2BD7BA3351FBCD1B0A501EC1EAABE60D06DA2FE39BE1F0AD629769FDDC933
+F9D02F9686EC8C2D7455C26AF4DD3F6860B2289E3A30E1C254AD17D731CB73B2
+BF4DFE90CAEECE3ED0CD3FB4C8F4C7BE1C056AB4E9B95781A8968E3CC1010003
+75DFBC4AB9F6B27C5A9AD88D94441A8ADF09EB275E5F0E5E6F3BFEA0FA8C308A
+8593ABA0645ECA8FDC3F0E264B35D4B0DDB86B93CD8A047FC409E18196B501C3
+B003622999C47BAC04FD1ABD8AD359C977766E9643EF3BD6385306B08EE3E13E
+7DA5A06AE33D17A3D574C6390DB6E9429754B210F0C349C359559C7EAA2350BD
+F61D4D8A92B1AF697BC620FA0351E67E0D9F41A95A47EE0BF210C2C48691901F
+F905F65693DCB85BE412F097480F6A7266AE0A928729DA0F691CBFFF3B276EA7
+322BCD2206D96E3DAFDFB992CA8F2955F0E8B882729DFF840569D12E4DA1775E
+523AA734552AAB6F2F16B89B39F1A3FF0E07EA08D13E612F201716C67F327017
+6C041760DA30374434808273062C1FFA2C47B3FB578807BC26537F542040FF77
+66C995EF3E8B08B09FCD3EE89C30F157158A739606D2CEAA26694A4F1CEA6633
+B54933141CB85C60AB262E2D4E824A3B85C2BEF810DD774F296AB37D0BAE7182
+5648CD18556ACB124246A75474B232D712C2358908B5D9A76F82C626BFDE01A1
+093B8FA6AA0B32F2CDEF737B28BC0448FF816DDB5812131DA0DD5979D77C3838
+B978CC3F6778A4BFCE9A7087EFB19749285AE4C92B99A6649DA349A2E0889D72
+6D4FC664522F06C8C4D86D30BA43ED4E42211217D01636A4E17E2A132D26F394
+EC34EA12D84594AED9C6CDBBC0908860F39B240FA7D7B3003DB10322498691CF
+A294C0FC7ACC0BAD1EED3E9D60AAE3F7429695892D1A21CEBF062C6129B33966
+8B2EF6E932F9891DE6028B81C5E9B23278D35B7F0D83989BCBA25E20E9D503DE
+144DC485F09A4EFA1268AC5E4B551C5B2F1D51E9B9B9C0FEE585204F869D0BE0
+7287D7570A12940A47C1F51AC6134F03B415C30E147C49F89228855D093EE55F
+172711F37776E97A99CC4B36E2F10713E36FB279FD3FA5A0EB9F3938F42E2BB9
+254EB8F0C0F30391735019E02BFDA21D9813C6A22279B898EAF01AA892B14DC6
+5912B9275167AB46EBC420836CC1A5F38A4EB47C039A7BCA62BC3FCE4199FC71
+011DD6E5FFA0F3D7F04AC02AF91B9249B9F993AE346572329DA852115BEF8460
+B94690E790003586F473F37EAB5AC2922F5F663EE2C3C0C336A8DB71650631AC
+0A923A389AC911CB215EC2EC7D50CF8AEFD59EBFFA53A9F1FFB7E6215F17093E
+3975F186FE23BB5FA5474C11408FABD223E1E6F62035B5A5C1AEFD8899F00FFB
+E729C2D5FD551E80716CEA4E8281660286A802AAE8D5834F37F2EAC46297E57E
+993B09251DD7789D3467417E393B7DEABD06676B96241B0E43ED1A1A9FC3B12E
+0D34B2B0792B79AA648FE9450C3B209FB6D7D91F50C52A5DAB0BC81A8B698BD9
+18946EFF691912D7348D48FE68CD876FC6F71F81165D0C3272DA1A992308D9E0
+ED6D0A4DAD679AF495F62B78D462B463BD4A40931172290C615B3B3B6B47E45F
+CEBB85E0A6AB6832067CA6D403C239530D07F199788AA4DD52553836851C5228
+1072406F6D7323A334E7A7FCA588897C4FBA6D4F7DEB65525EFB74E539C988C3
+A685A98752F7198E77E456A545F0D23A1BEF81EF58B02D289CF980A3F17BEC8A
+6F83DD90C4A917EB0E5E2B444A608E2E9D2FF80620E16AC1D7775C0A10C1299B
+BEE0E1AB24C50647E5CA1DA65CFF3B2C295F0644CA7826E1DC6FADEA93D66A20
+DE852F20AD224D28DB900519EB1569837139C833F24B799F7EBE3FDC14235323
+1D0BCD4991C861F38DF413A5A5588B73AEC3BBFDB885CE17BB3E97B4E6A79761
+93EC8418C2BC4725CD61B5E30C07352F647C3FD50083878C13CFAC241DDCB082
+E53703D182068727F9EB6FACEC25F6D901D7309ED7370867E34E267519E22D62
+4FC7093448BD0D6B1C43D318A3E14C92032325C132AE0FF7ED707E1FA4A955FB
+F5224BE0045CB14ECC321D0F333FE24EEFCC504F7C756451D7693C3E6CA87526
+4912E1B6DB935BDE76FBFAFCA4ED473F1D2618812CFF25A6859C626A216603C1
+361BE3E071FCFEC2D4BF2FEBDE07DBD56A1BFF8303901168FA06488BA6B76F36
+95B0A90D7724E9ADB567C2ADC65CF3482CF47FD1D16F70AA19A97D0F9EFC611C
+AEA5E1ACCDA7FB2DF05E9480936281484BC329F0B771775E73F7FD72FE3F45F0
+50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81
+88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932
+AB7916D44EC2210CB941B1455867E510E9D8A0B83CB645BCABDCDBFCD51A4E12
+60CFFEF0CCA548F654037D01CD631FC4E1F97B4F65DA9AE79D99F13A726E93DC
+BBB027B7D175FD17A704C4668F6F8428262959DACA9F8C687C923CFA053804C9
+9B2005FA7E0F07D81E52A9A37AD5CEBA8EA63929093ED0DAB9F7C99C82A50E6C
+6440387049A0C359218F5268C9A28F581783BB9D29E08772D7252FAFA6739687
+22570150178893C418531769CB3D96F799BF1C6415820F96B6EFAB5344E82796
+38A0DF66609F5EA332C1065274EC93027D264B84B52AA8AD82E13E2A41AED340
+B240D1888CB89FBB748FD10B214773D466A44AA2AF44371CA8B9A4450DA76EDC
+0167B4015A270B9983B89EFFA023A3DFFDE181B90C51D70557B0844362B0652A
+6345C6EC83DFEFE099455232455943718297254186940D6305C96EE2B9E3E7C9
+A622D25E0471AC31A8ED3AF8897BD19E322CFC3BD3860D8A0634081D9AF53A9D
+84F4ED39D8127CBCAF9AD48E9CBD10A67A2CD0CF93D61A586D2FC6BAD9E65DE8
+89C10D6C40DFD9F49DB42190F87FB6407AB91BC4CC20850F9E1ADC674A38A7F2
+D9B7EA192B33A8BD9A2BED3AD4456E3A67BFF78EA223686214F712D192FFB9E1
+AEE6B6B33E88A60AE6F4C6DBAEDAF8E51AF7C1AE1966C3080D958FEBA44636ED
+E0C7DDD44E6BCD04353A4F9722EA952CBB853583AA1FAC14D3452216526F3563
+AC414A274C08B35C56EE1DC724D2B73CE833380384A3779E9E6544199203DF67
+7DC56012DEFBF44743B0FEDF4E7730629AE4C3D0020DF0CECC1E0B9DC6D833F1
+2018114A0923F972FDBE173438C3FACC5866BAF6D901C5E8781DD8C4BC1A6188
+3E7A738C719B60858557CEAB134AFA796311E44027B4653518F0030746957BA5
+74FB008FC398828EA8ED58608A823AB9C8D5975F118EC765728932B0796C7CDC
+01625C59DA63BC1FADDF777C0B512AF7ACEDDDF505EEC24FC59A86DD944162D6
+1D4597214708668F47AEB556C5783FFA3BAEB1987C8DBDA39BD75EB5AC76303B
+837B206079088D1F1F2BF8663707BE78EBD4EED905AEE4F5473427E7ACD9BF79
+19A7BCF422C9A4A46BCB960EFC1B686E21F3CBFDD71B2AFA6322627F82D8CA89
+40F377B4F5BAA611803E0A24921EB7FA239C0D9E1CB97F55BF0EB8C758A74955
+A1116169265CD6D6FF4672809A261DE19D22520349EA32B2165B2FB109BC9CE3
+C6490EABBBB75FA56580E11B398A9218C32D37860F6ABD93C61CD61EB4B7FF5D
+36B08AB1646073B00477286D4A0AF5BC6965F735A49849541F28E1C5BDE773C1
+30A89D89FCDE46B50C056DAE6C919468030720BABEEFF9909DF49078D26EBA5F
+3C7A0E93271F2F4BB825FC7F1DCC86396D913CE74AC53DAB2C6CE9F416ACB0CF
+5B4C147C9EED9BBFD233F6C334A064D23CBE312830265BBE45C6736CA71CED2D
+2439D6DDFE973E0ABA92702EE974F4F6A4DA5B5C39714A9FB3B9579F974EC826
+FFE45F3239DD5ED1CDB11A087F1C35366D959D1871BEC575BBCA69D9DC41E383
+92EA4EBA573C0ABF7E1D88DD9D093F19425A1A0C993B596898F320B71B016A2B
+B686C603F28C1B4581A2D1C9B298CCF342DDD2B9EBC2F50BBBC21D04A91DE986
+64CF0A38CDA3E0D8B5908729E59EA279628244990BE9EC876B7BA6F8BD226547
+880F6DB0882385B4427255AA3C91C458CEC52F29F2D38E15294F6F3BF53B4E78
+5F2400BF8EC925A0703BC1C76514FA588175BB3E954DDB54AAA4BED3862E2100
+48F5E6F6130803DF9210669C392D5E9A1246EAF547F637DF61041F9698134473
+7ACB983A65636BF4383F7FA578000C422706D8E94CF4477D4028F1A885729803
+25DF6BFE0661EA161E536D23CBB24A0F021CC3437F3AB52071F4D35C13AFC8AD
+8120C3E0F928FE6EF023F47C6B168CB7263820330EC7F02582B1526C7DDEBED2
+D75DD01561CA2A99A7CDDD8053F1BB56E43275AF1C3D3F5AFEBECBEA3B6780D6
+26CEFB9C15E8648AA430BBFC5DEDAAC12CCD0DAFAECF99E4F72207D118325B93
+0630B1AF70C26E694BB58CE9CCD543CA73DB5E655EF0C1687E1AC0189AECBAD7
+C3211A0E9B5989D45851344E8D9CEEE884F91E0A2B8EE341414C39301BE4D835
+A968A1E1BB4B8103645EF85FBE66F52D7FE4AF61F15EAEA04C00675EC32CA03A
+97A631DCD78D676E71B6C5E6652A9D1B52307C5A33BA0B9028F962C7D1DD95A4
+0B09F4802ECFE820D57B27023A073C826AD46E51B4789FDD064DCFED1B8F9D62
+2986E3E07433C076DED20F927562770ECD54B571DAE7AD171E3FE4B71E5A47D8
+C215BF59C8A891DCA37CC1ACB1F10FE66A89CD81B6E217E81BEF2B5855DE3DEA
+980561320F2F83FFCD3954B59E4112B9EB1E830C0D352FBCAB9016EFA7353D33
+01863B8CB6930A4608026EA29569668B21C40120EFC0D12BBF32A1A74755EA54
+DACA636DDD374600A6ACF8B45B79C68838FCFFB524ACA3712670A05974B2677F
+DB083D5AFB18588E6858C26D0513E50D76870C6681C6F987FB972767158C12A7
+6D3C4CD9A74F56D498C99B74A701427AD3A1AB01853C7CA524B4670BADE7157F
+A5957281754DA9DD7D435E9174E8E3ACE1B04936E202095654AA772C3DB15F2C
+781D5A51897B50FD72193A32476FA331C220BBCEFBC6D7B1A59E6E0569CEC2DF
+7E5ADE044BFF8FD48C157BBA57BCD51CEF2257298474798C7CEA643665E1E66B
+8C61841B5ACDA7A0C1363AD0A2EE7372239DBFAD9DBB122189F50A21189E3071
+04F1B3DDF87BD539BB9457A7EC86D875375102EA62F2898F4F250BB208ECF54D
+FFA550024001B2CA51525AE26E8DF64AC6C38062DB2C9976881F1AE09AB0F3C5
+E5661FFB5CC05EFE1B929187078DD8A0DE624EBCC7D5D316F4ED03AA041D55CF
+62FD679690965523A70EF77170410404DD9D471FDFD9C56658965231E6DF3735
+9239E0A7CB74619C8EB4F6052BC5BA430B1A1A2104B0B7A8B1A0CA8E59A688A5
+CF4C78565632D0F3CB473DA86CB581C0475E661559AC69DFBAAD1E274572FFFC
+F82C6C178C97E7E14969D77D5D65B711CEB9017900231A453B0738EE419ABAC8
+D208303C9914356A1C947991C9907D97743FB5696B59E9A4AB934BB0946B5872
+59C7B0DB9EF780ED816C56318ADD997ED2BB4D94D3E33C9AAF4FE00FA2DBA1B7
+EC50237A5E38303FBF2F3AC9A44171713D0259AA796E1CECFBC106B075E28C30
+2FA79E4F5378B00283F49B9C9878F2E549B0F5316490DD7815A65CD209596B02
+ED3269CF209F75944513A32FD267363EF33FD8E574EBAE2465C538F5D11DC689
+1CF6E2F20A8088472294D00BCF64C55AE7F059D9C0CFB4656B888EAF716D3785
+259138D00924D9B247360859997A5C346FE864DAF156D393DF6F52BD010CC58B
+6966F026947AB6AB0255F117ACB72F89D4A8C9D13BC1188E1A77CC56F4C0C689
+CEE496873F708E1EC5355195A404FF135BA4A5A43454B66791BBD51C8A5621C1
+AB13E813497B81AF12ADE3B699F21342F0892CCDD3D8E35631D1F633AB337B36
+A04C668822F659194433B7C9A7AC2CEA77F3C7C0FEA22AE5C566D9FA8CEB7F4D
+834A76F3B29C8188D7A8F292CF0C25E58DA0FCBE09BAE02863A70AF2D39DAF5B
+B15D1DF95280004EE6D5D41260A510308444A24E9CD65E52157A9256B3E6B1B4
+D482485CDAD034E03B60A07FFFE799F0FC0A20078897166300165D0606186DFB
+359A93B89562F7822DD5DE8F1CFEE813A044A1E5AA51BD2DBDFA189D37758672
+4CF0F9D1E0768F69FC62D9F6CFEA6A178EDE4265E46FA146548AB41CD0413BDA
+D939E43742FA98D01B2FAFE7793814A5041FD262576C99BB309CF18B4436D518
+D1611672854BE2E5AE2B6A4EB531BD55836E754C942C260F8117DC273D47ABB5
+CB633561471DE1AD165A0DED298F875B16CED6A27F329D55F830286FA48E572B
+C10FDB48AFA88D116E069984EDE038ABCF1EE80C168836D7730AC18B4CB38DAA
+976B620BB6E32967BED745FF570A07AF947072AF347D50D3D4A286DC6579004A
+4B6296C8BE8E5895808AAF886880B7CF42BFB0D0953990E727A8E6FB5262C688
+498F3836E61C3D7D4F386DD01FDDF2E642952537580A5E2532DEA69A94DDB35E
+33954C0936DF83C6C40D01A2D0531E992DFABA7F9F231CDB038A7893643295C2
+CAC065103737ECD244170E4A620937C1E31F0B92814F2D768383B96943756188
+41E8576EA569EE92BE84EA7257ED97BFA6BCD99B76FAA49DA5CE764E13AD9EA0
+658013AE61FCDF66B7B6BD1F7E11B4D26926C473B68D3FD666FEF7BF31B2DE5E
+55EC19D258D2969CBA538FC9FBF3F849A0851CCF5B07F1E9D06DFEA45DD12B61
+B8F3CB0AA8B560358191AE7B1BE71ED02D31B097F62420B332FBE6A818468581
+34FAA2D66D9D0EB0C44E65185FFEB04FE984214A62AACC711387ED24F0EAFAB3
+3EB432E3145F7B7DE5E3DC5C954C6E37BCB9C53C26FEB6B502220A934E51FFFD
+F2869A7BEED3D37A0E17DE1B53D65A881FB29E784576CA31B1A9DF1014301203
+EBADC6FB78732E2DA71086536A3D63E4916BC6CEA38D9D45832D207FA384C2DD
+31588B1D3EE1A02B58AB751A3665FD44325FBE72C59F579A8D8F70F58D4BBDEC
+04B4175BADBDE93A580B086ED1AE6D3E9BDB3BE5AAAF3126EDB4D02C0DC1FCC8
+CCE46EA1C7E549828C1D92DE643D9F0CCFF5E1DF3924C57D391ACAF3BC18542E
+D6F1C2003049A176398D945E1E220AACEED93A878AF277965CEC916451669EBC
+7A3607513F9C68C5BE7D001F6B56DAEA3577DB174C656D3D60DBC0866542A5F4
+8B3B54C526028A3AA9333B0B3F1E4D7DFDF73097AEF1F9F78969FD8EFDF0FF66
+A50ED63A9FB718F04DE6CA8226A2866B5A8786ECB55D0267DA91A518C2337089
+05B1094ED12A3955231875BC4ED67E694D4AFB7D2FBAA95031A367125871DD1B
+D751D4DC9BD4F333FBF4B0BBBF946E050F1FD0E91D342F1D520E18A68C47E153
+7DEF2F0E82DA72FB5AEB646A20B6EE35E7AC48B275E0457F2D0491A28FDB7BB7
+5C9D6C9DC51BBAC56A11259329EC2F961925CEB6D9BAD21A09507ECA42963C0D
+14FD1883F44A5D9D72285518D1EF8E9855B3144A8F30B70A3D5B40356DFBF406
+A7EA9038F83010B4E9E798609AC04BC23D502E7743B2D54C3B94FAF6EA1FD54E
+065139B31B13F98CB164E7AAE6ED6D58A7725248CB4B09C331127C0FDD2AB02A
+1274EF848EF0BACDFDD3E9A2C0BD12B52A9D998A13BEB3282CD1B1589C7B74DE
+5E5C875D73AC81C68EBC8EB697CA02CA9CB34C68BE9F9E0F002C47AE67EE1D09
+53A4AD726BC2046128B403B11860F6B8642813A931B19AA4144AE06213E6E3A3
+44E72664B4A7862E5A2FC2E242467EF8162220344D4DDF6D1BCFC1B591BCF649
+7CA1E9D918A5F1D56E88CE1CDE470C29221AC50DAE64C767CA4099589B154EBE
+1BB20542C2062561B37F61C0EBB0485E859F1D11330479B2D79245A59D768572
+875F343C88C6EADDB2E2FC09E7CD82B0BDE7D9F12998CA989D603558AB80CE79
+0147E6DB514E71BAC4DBDE8AE1EA0420BDED07210E04DF32B2E69BCF58419545
+D979ACF71392F24D319ECF12E271DAA71C4957F6255CE695C0FBB6F94E033072
+8155377E4564D8972A7A9BAC3B8FB9BA5FB0A4CB5EF2B011B5F404A224ACAD5C
+0D7138254E70A5D25DBD55D7E7A6FEC96956F83AAA11A862277CEA791592C5F4
+583D59A20F3916FF3CB567013A765B5C8DD199DDBFA1E7EEFC8ACB35BAFEAB62
+BCABBE5F28E5E1F2AE1500A8EC79872C26EC3C12FC44949A20D9F088DFDF3F11
+93772AA4B7EEE26F5A32FCBEA46305B3BF837997D89FE06E8A28AA4D376C37FD
+977F1AB172EBDB1FC3E9FF7E47F1352B52442A01FA0C8586CD24AD33108886F0
+585067CE3602C6B090770DC13F323F48E428A46A64A011321116637924CB9651
+BDA2A7C781782674B5E40EEEE9FFD396BD33F2F115FE1E5C528B436D216CBEAD
+A359F29C424EE8E83B9BA5743DFD2CBF02367AD6103D09B5E7D0424D3F448D4A
+8CF0E1361414CA764573BD4A70D78CDA038C24A1850283762360A331BCC1C98B
+A3A4A67AAD3CB0C3ED5F39BC21184C1C38B65E02A493FA538A84EBC3032FFB1A
+38BB5EEA6BF1AB9339D7A7EA4FC5E66BAC9E60409258FA388D5F0351864183EE
+6F10F422AD89EDC4B4B8ABF04767259D0D54207C02E27B455551FABD7A973BFA
+A46010EAC438DC2F92DE9AFA95AAC8866D78386C4F21C12FD01675BCB407FA16
+884E1C8E5995BB6C3931797530AF7AD35256309F47D707F231803FA181243ED0
+594B39B957E91EDF04B75A6AD9653A86296FCAD3A14E0833648173781F46DFD0
+F7713816C70C5D22B08808DE640CA42F57B63C493D8EBC37ECBEE07888355C34
+7C01F60837D6E7174BB775DAE955EFA7B17549351538067EE32D30799FE09285
+34FEAA26A66EE9766DE5E7A1DAFF9FF26B5A3B270F8880F193E4ED4A54DF9E33
+0192631FAA7A3725EC54ADDE0F656AF7FA888F5689FBD4691F16A4C9C1EBCEF8
+C3C36F4DDAA7725EB9878C387279FA9DF466B370F2E5CACF5FC19510D7826B64
+CDDFB18EDE030740B4BC73B917C0DD49BD21C14290C0B327BE3F66E2547E9BA3
+E3FC4F9D38EF729A4A45588ED86343636C141F4082A3BD8993787E893C6FEA8C
+8855F7D8C7A801E1C5A059014CCF11A03D6749A26B78BCD52600A3FEBAAC3039
+5390AE46E2ACA2210444FDB8B6D90C2BF0C55D5A7596A5007F579648BAE0051A
+EF04A872CAC540A872AAED5A717B6B622E913A8BF3CDE8D005D53A45C84EE6CF
+F52BC5DA70770CD0A29D8ED224AFB9E83FF6C7AA0793E7B41C84B1E906B73B38
+871A3C9EAD4EFBBDDA118FCF6B436BFB1372B62044DFB40ED71A4BF628A099BA
+BB010A5DFF7B0905F8B39FF774F86A9EED7F641AA6A5F8C4892D81454DBED1BE
+9FC502FF0A0A09D6EDA92DBC19854839B49A404A1ACB1A41B27B47BB922B41BA
+9B930CC46F796242FD36B7C924F460FE239416E74FF82A462DBDC08F2353A7CC
+2266EE32A40D8CF52EB767A383C7603138C11EE6249CD3D4A721903D5075AA88
+369EBF4F8E5B68D03CA1A839ABBCC47EF7DF7C2220B8E97025B90C0A5DC76595
+5ECAC71E64E80F686260BD6308EE4AC91917D55981330FA25464BF08DA5310A6
+CEAFFB235814DD369DE9B3CCBA69C43BA5D1B4301977DDE696938A36FB248E0E
+5964FDC7930DD3FFCB5F2381F62BE9FA77BF7AD82C9E117F5DB759EA1A94ED98
+1971E986124F71229F20DA61195D99A50E92CA6501ABA7EEA116D5CA0C40768C
+A41E87B510F3072EE793809C5810F3D95BFDF5B5F379C95A43B6744672398D74
+CFA23B1739B485A14B1C4740D83C4BF8353B84DD5A1F54BC133A6735AE7A2C1C
+FB505011D7F5A08172B837F6786181F8CEDDEC5511C83F113A37CFA5C1A3C49A
+F3A3AD38BA6969BAF18F85E81A51B518F5929ED1591AAC80DD48B196A9B58661
+5E9FB209371A619F307EA8C77ABEF6B6F3F7C4EB89C65110BE44F81F4D26785A
+163C676FDDDEEFECE56706B802DCEC93C5B3F5DF97CEF3E40E29B5F866CF29DC
+100238B8539F383348224F11CDC836BD283B0FF877997CA0D8A3175E3B80B0BD
+4D246027AA17CC84BFE47B9A085D7CA0E5D929236579DA2BC977B0E0CB642C08
+AE40393ADCD0010E05153F8DA3CF583404DFDFE527AA9919E9260665569E5E2D
+9AC01D9046387FC2425985D39AD5D29182FA0DF40FA03D0B618FD46FA5F98FF9
+8943771E271C7F772AD4700C5F6FE361F4137E9D3EEEF122C84E5204A4B45F3F
+74132C1BCF615655ABE1082DBAB5B98CF44D3EB39B9D660A161074096FA4D204
+3E69697131600346A127E59A8E5A8248193B5C6D6A57FE14D4500E5926AA784E
+569C22CEB267AE1042C404BDC637FE52C8B8E43168BD3CE9286FA84F4AAF3966
+85FC91169A6B26975DC187675AC48766CDA0E828AA8AF418942015ECBA4D3268
+73862FE3BE722B33F63B668EA28D67E4D28E2E5F5015F772F91B308779DECF35
+9C1C9157BF7E3564FB7376F2B4FE20FCEBF3A2B2DB8295C54F68775A7D2C3B89
+99507CA5A6832C20A27C37D97F1FD8837140DCDCA4FFC4E8BD082A071A2567B0
+DE0C1951AB2E7AD622A76210A2F78B0ADB4D0DA31255010665FCFADA8D813F2C
+22E415269CA329556FCECFB2F0E7995370CA6781BF365FFD7E77BF082979C116
+6E9B4078432A2767B7BCA9A87D5EC8631BE29FB32409EE7D6043540B2AFA2F9B
+804037E791779F6FD570230F9274DA8364F18B4E583FCE36B86F5974BCB3BB10
+CB5BCCA8E8C2DCB39BBB9D049CD8DC3783A8141E27C57455ABD69717A52C2A3D
+AB98B9A996BCF29663B7C4930472951DD5150536D4EDA471026B122D16B5BCAF
+6CB6E2005D25E0F72C8EC3C3F31EC903C9D0F4539C1D9A986F1AED430AE8DE32
+FDEAA926FEA72B6CF407E81200A661FBFEFA23F0C2441EB6DDF1613D33EE0507
+C2116505C3EA22E1F4FE5E75A06BF56D5D7A169AD60A33CB7E4B2F52DE9FFB4A
+7DF2C55C6F6A7F6112D663246401C56A3FBCB77B5070BC0D7F3E94E6A9FACDCD
+4D02933306C158CA0B34FCE56AFEC4D61707519A2865CC56AF84A807D0843387
+8BF3B9BD67A63FA5EDADAE7F2FDC6E6A83A1BD9A85DA28068B6ABA2422A228D4
+9C4C6659AAC440947BA866ACADED4B55B4478E96D598BEDDCE4F0325AE5C8CEB
+4ED4193B1C79CCEAF5BC55618F097BFEF5D069F5326B18D852BC8DDC657A0C0F
+4C4B29FC2CB8D45C201CE83829A056C4C1013D0AEB0B2BFFEE67E2E690D5E3E0
+E503A90E941EFF67531923B8F6BA65690505046011D567EECE1E42FE6C5D0E54
+E022ADE1F5DD220FE43FAC9EED6625CFDEE335B33B86B1E9C869471E44EA6E49
+FE438DA1CF98572E87727C99E7B5018CDB84A0B43575642B45FDB537ED5EB119
+26A5BB72D7409CD3ADAA741741D72A4681EC3B12A9D4129475853C825571AAF4
+DA8EC378A5C0D1EFCE2126EA2C732557D3715EEE5474723559D67D7D19FC6A38
+23BEA995183E66B38C2CFC91919B299DE94DC6FE17EA93302F0067E4FE401C15
+476FE9CFEFB4ED304272B05038F30E0306A65520CD01D8B278989BA3B38FF300
+D75BDBA6EC339BB3AAE6229D6AAFE450E488319B44975162F4256E8CBAB493BA
+46C926793E61B30D08DD232862CD86E2F39210717757E208F1BE4F824F91105A
+75B4E2F93105BC17FE0E5513FFA42E22C316A9E49022FFF13BBB1CFCA3338CAC
+5AB44E91C7A1E4B0CDE966A8EFC0541A1534B9E6AEAD3B478785D51BFEE375E9
+273630C9305036778DA399F7CAD8E284F58B264759E24E6DC5A86BA127899B76
+C23F2714DC3801E17B75358B05A9E43F2A904F48F647DCB5A79C3859216D37A1
+436E8DED290BE2AB8FFDA4414E3D41B454B8CCC7E372585FFFFA0739CACA7B32
+FB6FC2C3642BD6EDDD78D75DBD2E67F9D15959218601464382BFC95B37F129EE
+4CE54053CE8695182E9780A14C41BEBB92DD3622AFD1311619DBA87957FF5C95
+7ADCCE4A3A80445C87CE70584D1B4E3BFBFE2F4B00BE34D4FB7B011EA972B310
+F7249ADDC2DAD05162E056792A0773C4D031C8E79380D5663996760214DA5B34
+88C8CBD75E079C117C6005A8BBA6AC9CAE01265B1486B057D3A606E9B87F9B7D
+09FE963E7555115DDBEF50081C16FFD1DD6484CAAD036353699A0CA8A9AA49EC
+6E2FBD02731F015DBF624B1E4718CD2164259D03B1D32E1DCFC460C83B513450
+4CB0DEF451CDC7326C38313D7ADDC14E8694CD36B47DF6D3A013DBB79F3640CE
+1BED263EF1884AC3BB020F289404C56321C6A37AAFE35D797C457B6599FAEFF5
+8A61C513B1E6DF38B4F4FC0803BF61761E0ED773331D3BCC2FC970E0B9E34CC0
+3C26D29257CEBAE6372340D7A80258CB72222E91D2D5E457833945D6CDF8EA41
+E2EB6AC56BD76CA55541608CEE032600D1210AE0ABD751A0ECEA8E49BC1F80C6
+AEDD6FCB01ECAEA4A709B85A5965FB38E4A47548A94E9FA97413575B7E9821CA
+FF483A8CCDB91B99A24B316DA303E8CBFCC9EE006599BFC8AD9A34FD2F4B6E83
+8F3E9CD52CC14F5419C80813E31CB80B08A7BFEB08ACAFBCBCF5DACE34EDE46C
+4DFA43CA88CAD6FD3F47F8E7394523131E8DD451809F2CC48408049B083C5318
+B97185A062A4466D5D8AFF6DF5A7E1E34F11E640C90E9DFBFAB28AE2FBEE0D43
+EC976825E98A2A6181EF456D830C5AAAF4F6DB859231F1BF8DE7781F750BB054
+C892C7042E6B6164A6B883A03C7BAB90EDF7503DA9677D8E5AB4C04004D4FBAA
+47AFA22819ED243D58C90DC6F1E8D35A0B553AC6C2FE9825FC1BE9209C5DF44D
+5241EE9F0D7A49AE82BF69653F2E2E521BA3C55302CA2BF397990CB08C9F885A
+17214663837282102A20003D7F891980B51368874B9611340262A07B1959E4C2
+770ECFD941A13527F991D8322621219521DEE9EA09E6C532DC4A4536F956351C
+9186A8848A33788027B39D2D45C9D9FEC3727819200EE472A176C150FA8EB3EC
+590C7DC944D9B87ADA17052823D7B0D4D7B74F8284C774D2C99073E96E54FF2B
+D3CD751FBF427D50ADE8CE0E1E903BF9A0C2DAF4A826FC59787D32189E07B473
+93F307EE1997463C4FCE9D0221BAED083139F1F45A7095B16FED25883057AFB4
+955BB5A2E6C0C7174978E85710863A8C812C52850F87BBF9CC82E70BE683440A
+67547DA3858A344F3A4A61CC4C0AC458BBAB494A5679BAD9D61F40FF204D2FE9
+66815DECF98235F816693ADC39ACD5D0ACEBD741AA21431402AAE817C33F95AE
+927C0B2BDF6417BB470105906EF00AF43D91BDE6908724906719F3106F6914F8
+DD7F317940421CEFF9ECDEAAF3BCA7DCDA9E821713F8ECDCD0E0BAE3559D3DCC
+62F68E8CE65B777128BFAA9965FA79D42E1EDFEFDF2115E4A634A1129299CF17
+6A7F94F68EBCE33EB9AD2171BED4D8B030102FDC07A5B697A09EC8AC9AF413E8
+34245C495624FE382FD0D35A84DD9BFB2EFD18797FBC0E1EFFD0DCDFC2F38C22
+60BAEC64EE6CA791FA80E6AD2BB6919F32300BBB7773AD8EF9415BCB519344E5
+5504D9C285C17880BB13021AADC9950E8EA0B6A0693330FE80F0D643D7926D22
+E5DA971D9745816572AE37C11B59343CFC477AE8E052EECCB300D3EC1BFC5806
+EF75E7D91F631095113E9F9C8EB21D0B28AD0C1720617F56AF492B6982174CFC
+FCBA2D9CB73DB09ABC02F743091D19B6DA30E050CCDF8B7297D1B666E934B4AD
+94F68EAA6B77B47424EE5D1005063CB3212CE039312F725DD247CF3F4D81B912
+DEBB9B84E690096D2E5A73C7D3EF5A39E2AFCFB0B5293263B03C336BA0B3EEEF
+6E639F7D2BFBAF06250545F7C03B423ED43DEB54FC7AF7656968FFD97D103EB8
+E1A0B9638E5010252D86159D6FC37727D50606612138FCA6C62E549060DB359B
+F7C8BF82CFCA498142F2626B10CF4DDE2027B8224D3BB7D31681D79F1F62536C
+B46B8FC30AA9A2EC6463417C8F7B1ED39E12166A19FA71ACB2931826913E1CC7
+BD9A19200BE49B1D3FE791F1C92AF67084F8EC7A6B1734976AEE8AE162D59DBE
+FA72C4A5B1F355390116764B8DA5C6A5E1FCF34607FB17E00125370DEA20E085
+C706F922E7B6DB9FF9BE4F7C5A873D44B459B287CAB838BD326CC8CB9B11EBC9
+18655EA1EEEEC1B84663BBECA3A04675F08C80DE70542D4F3411F0CE06A8FD41
+733B2489F8E43BCEDA89CED7EFA7FFDA524E9E8248DF6045F5D5D5C0337EC596
+54D646FB688F062AD13BCAC4079993E945995C88E30E93A554EC9757925B9BDA
+8F4737399FB0355AC74F106C288DF2FFB3BC7F52094197D89F7BC0AC108B96E0
+9CC5830452B4C978DF9474D7B546E3A26311312EFEC50AC6281A72E733670A0F
+54F6D2D08C98D7CB700248907D9CE0588DCE391CD422C605740A89FC5D8E892C
+AC97C40076A3B1C12EBBC7AE423D4AB40DE5AB072447E37C8E34675510B79D02
+943D4F7BBB72B9C60928A3D8655CF3909A634B72B3AB883A0B3C2019B75B0211
+C22F5A78849F3ADF21FEBB5FDA37346BDDC54216A5871E7F6AAF4BF69A5146B0
+FD0E2E3C87A80C5BC9BC58B5AAB22EBAEAF75E25C4610C30E8FCE55334ADD3C0
+BC478964103A98DABA1269F0871CC9DBA7815A903762892D969FAF0F83516128
+DF9564C0588EBE58ACB0BCAEB6058160DF4D7F3291D686DE9D428E2662ACDE9F
+F211E37EDE8D2CB3126A133B6C9AC1E946BC0A32C72EFBF96E1B5C73A209F5FF
+9F32419A04748AC75EF942E34C772CD6B29FF1F255E637A833182EF2DF5DF260
+B536641559C8A77EDEEA2E085212F089C52E0463206A63E23359E4110EF199C3
+AB61AC0307B6FD69BEF2F2D750D23D8F66C48FBF02E4805727C0DCC19AA45384
+9E4FE3216B5985F47792FB2EE01372A13E5BDD390340150272CB83ABDD83F0B6
+9D2CE4A0DDD0584044C93C2C0DE32BDCD1ED28987FEDC561939B3530FEBDC19A
+8134BF58806663E8A3C9F14E43979D2050F4A0A6D16C17C762F28E54334CA029
+74F30F6E136BFE792510B7674A65C0D40B010120EADC61321D61BD07E213D3B7
+EEE9FE2652E480C9B94720635DD2724F005F30A95DBA978603960B04F39F16F2
+5885E3CED5A6A85F7F43C441EA4C6F07423DD4BD0E84BC65401AD8D83D6551EA
+090052CB5C26C6F3B519AA398093A25E0872A7DBC2B747A60B6A01427D0883B4
+02F1FDE2ADCAF680942723F9C4A88E9049C815AA78ADA8EC23307664D68041CB
+67BB9FC92E8B1918ECEC6B3FC94276A986DD3642E06E7D22B9CD4FAE37EBCF8C
+143D421B257BA9BCBD85DC3E1A94A0EE0C23B8B3E412A20C08EB1A27B8B6CA13
+FB69E71CFCE5EA1C7F92635F3590C9A056044F8C95FDAEE53EC2BFBAEEF4A7CC
+62BD719C515450AA766C761500C81A9735724BFC6DD6F3577AA51BC72C1840BC
+3D169A81D2EBC34527534A7AE47466BA0611CA05D9A20CDF755B164BB3D3C79A
+3F4BF27DDAE7008F0C1B5229BBC66D868BAF04521E397234544D78F48439EC88
+97F4CB34EEEDE4679FF439663D5A724A6C5893EBF6810D90623029CDB992AD17
+30711FB68543B56D0F6BCFE0B2D98026558DDF3A77355D5EA1A4ABD869C1BE6D
+E85588ECB146931A206BE9481E4C4F6F88C9B8628DA8BB39C95ED410AFD3666C
+9CE548276C6EFE6F7ECF86FA0A9C6C7CC89CBC07ACB25ACF8D2E5ECBB50FA51B
+9B41F58707FA49295081BB82D69D01F0CEF53CA0BBF8C80EA7E746652D2ADB11
+8027DDFE0C8E51BA914E887CB544E01D0385CC40EE2ACB8EF5AF02CC301535EC
+F4405A59259AEE139FD30B20BB7CD6D153CC105D65299AA7C2FDF5A441A66292
+0870564F069A42F356C07C966652C3DD97BCA794439B642C80CC7029F3C600A5
+94D661302852EA12E6B38A212B8C896B4A8B410FD6F4EB600E0FE2306A9A86F2
+2B877609F4B7022D2364E21E230D9C5B8A8F9C5426FBF06F9DEF102D99BC73CA
+2B56A4284D60D61D68A51D2EE2718BB343FD99AC3B949EC5022A666EB5AEDB56
+995694DEA06439533D2C396ECC24C7CAE2725E0DDB18E2A0F3D80509103312B1
+7D16087D8CD88D69E7170BCE2937A49BF08A14ECBAD20BD30B1D57CAAD89DF60
+614A649A219005EC0C076F06CF092B31EC85F9B4EF942ECAF9CB8E47F7B99906
+FD7F7B70B80BD35ABFCD3F851F7BC76C98B5A59B0DC1B4EE44A19CDA24726301
+62D1CA78E48900B69ADFCB1D56DCF07998E669E3EA59C1422A4CB278CCE8F1FC
+76E11BA7101F7C8AD253AC3F301851662E75B0FC3BCBE9AF2B3740C6ACC9EE86
+DF1693611436E983D1E35FE4805B1376837D9EB1FB947AF2DB9CD8677CB9CE97
+CE2A11F94AA5854ADEC235E6552F7B72CCC65150B0F3A37E24AA069AE9A49333
+5079F88F1124C20F3764EC97F7EA315B79DA06E1933861B7FE79597674E61B79
+E453AC57B61BAEECB7F1BB6F874E3D34D79A859F0DC25112A2F03680DEF8608B
+9AD13A1B69119150D7AD346D494F03C30E15343D9E3BFE6FBF07C0CEE708D92E
+B7B70698110C4AC469D8E4B8BDFDD622D1CEB2E93F7554C3E51641B2D5E1E91A
+17DC54D76032C7F71F8E12024420FC8D56BBFD0EE7AAFE4DBD15AD8244ED95C0
+CAAACD80C4B949D61C7E9F2377A3C3A4864EA819109C1D94FE2224A2B213BB82
+66D0A71862A068382DF81144F0896CFAECF02D25973BA4BA10DFCCADA90EE453
+6A05026B77C265323D209D7B994ABD191072625114C7B861BEEAE06D8B286809
+E61D1749AEF52C33D4C62686E05E4695A2DAE74750BFCB6F96CBAF75F30B4D16
+32C218B7B2568FC8EDD9C49301861BD45521AE6E2AB8BD4BE763A71CAB246CD0
+14B13EA80D646D020A1A7AA754D68C477CDE87F2F545AD17A390AA1FE9CA339C
+63734CF2A4DC5D9E49B3A0C9D728E84EED449D41EEC4868F60C94F2F568C7048
+6A2500158799E87DEA4BFA8F65BC815F0A8115478871B944F4B8CE3EB206E34B
+6DC96C3B6EFE9A509072A8D7203A185A36EFBE96B61F4A1E0DBE95242BA945CA
+B01D06367C210FF54E8CBF3CA45E3BAA4D96D7AF6D350C362CDDB246B92CDE3C
+520683B577B38AC1C947B5E5B5D996A86B414BB3CE500BAFF274EF78060D416C
+0236203DCA7144E37710C67403EE468655FEB5C99A85F38C9EB5BC2B555245F6
+2999837D2E1BEE1332F0611DE155D3EADCADA371DA8AA96212D2C51E9F08DA0A
+7BE096B0837D8ADDAA375EC817B275C4B2B0347D7C585575C2663481C6DCA604
+8F43764AEE27D22FF388EF1E8329E9FC13AF61D05F032D211F275CD1686C8506
+EA778BA6B5B7D62F8AEA833D6800587A748D980CD280E78D7AF911E8EE9084EF
+10C70C787BF33EF21D5378C093351DCA30DEF37A9037CA42E8BC62F2F54508F9
+D9B421DF512C73493A1025E4E6750225184FEDB7F29A22D2AAAB4C6AD5619CFB
+A70454C90072A8A869F6252BBD29104E003839D0A550F1856F6294256E202A85
+E15C9DA56AE4A67210DF747B1E93BFE976CA17A155E4F801FA05D484B8C34EC2
+CDF1808CB19616FBB8EB9523338DB11A0D713902480279DFB56B832A811F6895
+90FB7E75225F26DFFB580781AD99F5A0BF8A98BF67E722C1454CB17F39CE4902
+398C41CBE660269DFD450705A63BC0097A615A01A587E920D079F660DE0D06D2
+A8CE55BAA4A17C507277058D97EB6F5F24FA7AD6043EDD
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
dup 48 /zero put
dup 49 /one put
dup 50 /two put
+dup 51 /three put
dup 53 /five put
+dup 54 /six put
dup 55 /seven put
dup 56 /eight put
dup 58 /colon put
+dup 59 /semicolon put
dup 60 /less put
dup 61 /equal put
dup 62 /greater put
dup 83 /S put
dup 84 /T put
dup 85 /U put
+dup 86 /V put
dup 89 /Y put
dup 91 /bracketleft put
dup 92 /backslash put
507A8526DB26C854928B81FD502B0CCE4A68943C12078F57C10F4E85FBEE1025
46D925B8B3B447D4920410FEEB9844FABE985F9228FDD9F58392F2F3BD650E49
2E3AD5A14984874DF4572816931885CE8A448EC95BBF40DDF4F85653AD90A88C
-C3ECC63492962B685F789DE4E796D1EE2F23B7C9F9A1656B85982FFAD6E2889C
-7A667DB07ADDE075297F9E5808A98A05DA37D8F23C62115D1C08A331532770B1
-E0C7B867A3C0DB7557FC8207C80F6E3717180E7D4F3D6B66C7406275A3206C80
-4CAB4DA1D6EABF67CB1B8D2E34F25900927BABC9BB12685D7D153D0960692BF6
-93BFCD7FD07158CECA1F10A5D75C8B02FB448147838490E80AFCBB1340C523C7
-E247273704AF5EFBC8FE5526AE4159CCFE773D9AD5893EAFABB4C4259D5A5BE2
-1B50B7377C8D45B3D39C45726F023EA52AFCD5C7FC6577880BEFBFF509D61A27
-A58C80AAFD09CBB71E088D7C414275F6256511CF4FE9B3F3E74D8B491F2E775A
-0495EC4C7C74092A337AF57451EC45DD1BE65EBB4F6F2AC454F58EDCC6B7AB68
-0728EBB958A1D5AED112BD7193A3047D23C8AEEAC26C7FFC1E78386C0FA6BA73
-DBD43E42A5C77201D4CD352EC3E9C496D2EA2BF7995852A50B29D3E2B16F9DE4
-A769ECC02C227A8487D22BE8EBA57308B5992B9433D88982233FA0C895FEDFB9
-10B63714A2FC8B9396F9D625DEC3240EB2AD54E3F08238AD01C665529018529F
-D078C2C287675D7315CA64E907C3D428ECF2F3283C5CCE860EC461D403251DC1
-75E7ACB31F8958132F3D57AB5E34F05EA9F5042786C108E51B07635DC743D063
-11AC9348380109216561C53A74F4C3D595426A1A86E9150D3A9EE3B09D7670CD
-D4F33FE94D92E8981FEAE708E978EBCE5A6D17B4A1D1D9161156127EC0AB5B6E
-22B801EF92649437D89CE344D6E4C92F942AC811710D83589A03AA83B229D3CE
-861D48CFA69CFB61BF3A6176FCE2E406CFB30ECBA8F9595CA3405C8F0FE23DAB
-A06D1300C586F8DBD775F22F2368B6714FAAE85868C9EB6F7548E63D6E08EAB8
-B6764FEA41156D3FAF9BCFDC75113B8E73AA4F31F475BE491B45FAC197ADA3E1
-57E0DFC05232D2596F7B69CBD593181849FCAD6FC6CE7217D6C6CAA328BF57F4
-FBEE4E16CE5035383201CDE43EF601624AA1E9061821345302A49C06AF6B003F
-14B42E6CE14F978F194F0502B7E610DC069791E52CE628CB5452BD6080C37F1B
-0A7E8F6FB6C40329A70AA824616CE893FFECD2EDD9F8EFABC788BD415FF70F0B
-F584471FC7DFFCDB8B5653DCBE2D191E1BCDCB83FAEDE288C9FC34C6D35E6738
-64F02C8A76BD7CAD08F318050E711C1687BB8C208C8ACA101470AB06D4975F82
-65EC88DFB0CE26289E3840E8D3E7146C9A03F3CE9D6434B04B0310308C221E7B
-8D8709D363DED43CA5FF1C8CE6CD13B5906236DDC75FF76DAB5A38765CADE270
-3BB52ECACFCEDB884D1453E01A9653816ED352AAED96DE3D2894D64D1FE67656
-57E1E7E51CC85CCA202965C0AB8DE87E729BE4D7F1C631B6DB9F0C901E83D397
-791E4DAAE3B96B8C7AE44F70AAFEFA1E8FE0EE6A8E811652DBB48F2336AED844
-3BFC598A713C268C171BA0331D042C38001800A4C8C647055A0B064DB18A9D3A
-AC9798AA8208FB2862002C164D0FCF6FC38B33F2AD7E48C29D349583E02248FD
-61E03C71E686B96B4D4E0124EE78FA97082369335AAAD3429F5A961BF05A228F
-11A453C158B731A5805EDA613947AE9FB40782C1077A71E5C95228916E337821
-DCE43615341DA9FA362007D0ADDAF128E4E336E0DC8190C5CE43B13C27519FD6
-8638AABF83D71DBA3B68D64A5E62CD663F9D79E56AABAB474EEBD3B4BC812DC5
-165D4777602F732DCC2A342BBDBD3215CC7360DE6902096DADAC86D9C2D17F9C
-23C68E22931E91FF5DB218AE2CA8EEF4F3FBE930FC47141078B466AB2C564FAB
-EA33AE882A540B806AB69CBD2A8E55D3C26BDF7A0FF87FB47A2839A2A7896502
-47F1C68F882E38CA6994D57D8EBC8F15FF8E091E3F1C87CB83A65571ABC8BC42
-F2D2E63D7D777AF0C2DD7E5BAF96F20E29D2F08BB1290FD43DCCB7C0C7F7B5FB
-BF67E1289014DA74C35B6734D3618489DB97DCDE55F701A63A70E3F59A3DDB7F
-C6A25976EC99019C6680BEB374214E92BB04498556D84BFE289BF1E02E07486E
-91F9E5E5FAD11E65FA0356054F352E3489ED93DF3A241CA4A354EDF0C5858517
-4C7B889D256FF8721CCC80D14C7B40B6CE001EB5EEFA0E2C991EFA6B80D1E6AB
-19B86AEEDEAEA08876BE071C01D801489F0775E46460F6DBAAB3F2C2C7F95394
-4CB70205A4CF5DF4CBCC45E8FCA893CCF96BFB8D08F2E439DD00EB511CA34AFE
-22AE0ED77D48EA49EAC1E2EA81594EBEBD0539801393C118CA227A95968FCB1C
-0AC1B08AC36A6CAC79E033E4283A38BAA3F3081D9AF5108E5185175C2D1CF1FA
-CCCBB612308A6A8ED21199759C04CCCCD3BEF1631AF6EBE4437900A3A581ADAA
-3DEF3F55C84532F7A083D553E91A965A732388B1440116903A65EB8D151C7135
-AB91DDBF69A6386B15C104868DB82ADB1FAAD169531A04FF73D89C8ED2356F8D
-6E6EC6D1476B8345D340D8B6827760CEF6C191E8843F12F3772EED191E596728
-80651E10D1B307DF76A84028EA7E64321F59B4EB9149B347248517A513750E53
-E61A74BE0CAF41F18C7AA88EEEDE0ED3D5CD84754657A92669CC9BFDEFAB9CE8
-11355329988AF84EF116B0E2F68451E799EDBA2007CDF555637E247F5E01D3EB
-CE40A4264D275863AB55D61C0533A4F49D64EEA8E05B2EB93366C64FCFF33D6B
-718706490AE470C0F297A27F4C1A269A3E9B75E9EE8CBEFCC44FE045B62B66FD
-47A2CDF0F19DC5210B65EECDA51DA371BE25DBABB2D13AB45F3B7BCAE838E26D
-B5319199372E44FD4BBE1C09AA6DB28CBA5D2EA7B9486B36BC7613A0F0246543
-B3824B039C624E2A05E4D3E10656D67DB6D7E5B4C2EF7D50C3A6F64CB2F35563
-43366F65963EA1EA05FDFEEF8A833B17DE2F15F77E8D1545EA1AF87EE6F50A85
-ABF31B62E3BE1DD013BFB96A574738360B1A6C9F649FD44176F5D4FC98A44707
-DCF14B274F902BC4580FF1E61176AAA10879A94A8BE4B7B8F191B2E624482DCA
-F73DBE465958ECE3902EB75059E17F3DCA96CB235B22332CB80FA23DC537231E
-02A005794EE621B1814B612EA22ED5710DDBE8F6616F1D67F8909018DF3377FA
-D66C42BD2C15D185C7B9CE30E8B27E6A142E89E6EA90FC9A02A52F5615394448
-923B60EE0CDB61683D6D6F786A20316B992FA8D6BA3738BB66CD55C1988F572E
-627FB1ADE7B5D74A54A8AF5A621AEA30899A3B1D45D75252AC88A7933ED97847
-B972F944716D8664A2E2E4BC4C28358583BD960AD45261866136E0A626C36842
-93F9D95A23EC5721F7783BCEBCFF7433D1FB87E6FCE3F16FDEAE6A34EC296E4E
-BE5A6B30FBB47562B4D2E8A1B3FB5F2AB273CCA2B4F32353A51541FD44E76060
-8889B4A454C42A159A0239B1E451987846DC2B5A1795DF53458AE0995EEA0521
-867422FD27F7DE1F177F9DDE065C882EB1AE2ECCDD5646D93B7FC13379451C78
-DA50030751DAE5776B8CB90DC02512BFA79391BF8B8BD3B7E893FDC359A36822
-536F79289BA4D82FAF112AC06A4EE34C8499CC7AE22F3F5DF7E096FC1748D1F1
-CEF00A20701BF1E476E19B8C904B4302D80D18F49E30DAAE2548EA21BCD8519D
-F1EF0D99125463A8E9B5E6943D1C18E1FD1DEA5073B6DDF91CC8D4FABDB5446D
-73F0A0CFB4BF1C4C74BD32FC0E299E355F3FBDF6E0A75285E2EEEA66E4EB2513
-995F1117FC751D55BB5B66CF37573A8A932A34AC29581D46D5AB5ED21A5C6AF7
-938C400AB449B328285B211E54FB22F2620E1908DB3F3396F91C5A87C4C4726C
-C8A54D630E9F3D878592520AE5E5B53668BE3FC3D1E4D263FF5C6A84BB5D55C5
-467BF67904172EF0CE6772759EB0F75D2403F8A0B40D6DB9F5D74C3A5FB6C30D
-D04B316A8B11B9611743BEA5CE92D8730E577B13B84283BBD970DF44BBB87A80
-959D4303F25033127E48173120E3C3595D095843F2467A3473C498CEB9075A20
-5DBB9F82DB7125B631139286D6C5633F94C4D5097EC8B7A8D096DFADDBC89C22
-135440B7929C0724EB1FB9D8C9D5480E97BB4606EE6976418A96B42FB0556928
-ECC51275CFA1D0ACBFFF46FC0B04CC70CF302406767C7FA493DF1EB10A5F9CEE
-B3AED9CD32F93D862FA2FFCADB986F443F088DAFA906D950D3257F24C64DFEEE
-C48CE69284FABA482D68FF726EB83685DD48052F130E18132954B3E44FD3E22F
-B39515841BEB0A79DAD72984C39DD4FB8C4FC508AFF5B45ECB4B23789F0EE906
-9EABEB099EBC24D1393866FD9F4CC79BC57C87D5F027501DA894F237A87BB9FB
-B09039B4E9CA8E767319630FA2CE444EB878069DA89D36AE4D9CE4E7F8ECC5B0
-06D85CF8ED33138F3F7D664E275D9041BA70C6CB4F9BF26EC2B9C5EF2BB9AA2A
-B5FF38657170B736D0A06F148970A385895F4C2F524A582CE0E224E778585652
-7C186BA249BEE06DFC457D728C6226027B8F92A0DF24E7F9E3A7AAE93FDF6F87
-E694DD95CCD0BC2504F3D9087210CE220862D34139D33EB505D90D39E7DEE3D9
-4DAF699231D57B5AC3DC301B2DD84F6B64D3EACF5D0B690D0BB7007693A72DD7
-949C98D8EB9035A0ECECD035CDC6E7B8A007BFD3EB3D8DFCD130158E473E636A
-3D00F8A2183766C422991EA3FB1A6F5DC967EF9C8736FB190191154216B7AC75
-F5E269CC1AB5FD8B1B8F1632E9496BF02CECAA66532357A0DB3AE03D98351FF7
-0A2AC142089A891607B075019E60BBC5CDB1AB6E31DFECD6500C6E40074023DB
-11474C87E51DC00983F99863097050A7E428E3BA47F9E40C9EF1B5F0590217A0
-A9DB1CAD41A5D420F20BC2AFF0A25BBEA832C3128628C241DF5FE78884C6ADDC
-E617893C14876F6330D6951DD113F3C4F8678EB201A60F4D9C07A3E29D763741
-10751577429E325609A544F60D83D0FD5D44990D5ED78A02BDB2467C8815F792
-804C8C32AF13EA9476679DDC9504C39846228B064450180C894451A8D43597EA
-50C94125A083C5A0F2E38E993B049C75AE05949B5B09DCCE5EED7C91601BD79A
-EA08883D8AA2D08C9D5E296AFD13383B457231E8797E5F8C73D0D56A1F7E1ACD
-3A1C48486E9CC4DF715366FAFC79A197595F18B60FC89EB02C9B8136131137AB
-222A517CD5F5797D6A65BE553168878325162072BA5D719F3510639FDBCBB448
-5DFA0B1774CFA961558A0A72D139AF0D5B42EF7897F697CB5942DB7B2FCCDB9D
-71472A56B663D2E55A7263E24137165D2F917DCABF63814C818CDE0B03B6E961
-9F220CA7EC58283B36F3B7AC37F415FDD00C248DECE7E9B57B07D0DC7A106C69
-55BD5F726687151CE743BA4703F19721E773F3BF02E67130F273D35DCF38642F
-919D3D0CC9434EBE1126FFED9D7D3DF75B2BBE10CD30D8B8C0903CD1FE3ABBB8
-BC90B87AC4478CD688616E797B2DBEE120183ED696226DA703C0CA001BE9D46B
-B306E7F7F63BED6FC610B8A89B00A5A95701FCC80D83C50874EE764B7C487097
-DBBB0146746FFE1CBFCF7D7195F08231FB46755C1DF964C7CCD803E7E69722F6
-9D5B3CC4890090A74AB2121E464354F724AB7D39E8DC2234DDA3674EF0695148
-63176CEB812F168A0A7498C96AF70A1A7FE2769A3E725883D789ACC8C71D0278
-CF3538E7AF786E5F241B9F91FB0604DD3EB2E444F548F5248F65DF7D175A0343
-DEB9AFE845F8975DA301F1A4C4CFEE3234AED965B423E4D203C9CA88AA967195
-B23B4CD359F7F4AD551BC2564E677FBBAB954D0C3EE386139F7F5A4B1DCF7FC7
-7230BCF476051638B337BCC8F5A9145AF38D4987A65FD5A7E8301F4B8D06F9E5
-B26EBA34CDB951F14C7B0BE1CFAB8098F64D529F70B452492A1B29E03AA1D0FA
-B54AA53EDD3EE3F74E230CABB2B94FEBE4913EF0A30E0C4F27A7E29FFE700BBE
-D43233DA1A0E4A32B0EEBC1B2F9FB7F6885992E21BD1BE5D912F282B0FCF1EFE
-62013C4B5C1CE5B8AE189B28747FD30961A3FB1C58C700C9119E592B7F52E24A
-F9AB44BA92AB05E2CA9CA2C443CC9E7E0165D8345BD37D961D945027E01DDEB1
-1DBB608A3A7995A9E99ADC90970D7F4EC02EDCB7D32AB877BF4797F38CE514F2
-C7F43965C3135FCBB4D8A986E119C562E6973942ADE968B09A36DBC5391321AE
-97265D39A7B7EE00ACD0661D426EA4E5E8114D65587170C73D3559258A172128
-5CA211EC04137A6227810826C10E676E9595F9880C0DAE45050EBA9FD950A591
-16A39911D102EC836D067418E3FE7B361BA40987B660717E4CCF43CBCF5D3668
-6AFE35386A12B9992F9EF7CE7A326A8C02EB51E90837A75A0B781DA6516F96AF
-F7BCC0503C01FF3C7DD5B574307D454E664CE49E37E01EDB9BAE51D41BAC615F
-08590D7A5CCD633E8EB051D8A4C066F0D63CBE9D2A0A38CF97401B541668661C
-7ABECADEE4BCBDEA822919196BF14DCFF9CD143FE5ECEE374907F17ABE47AD79
-B88BD1B6D6A8DDD56A95A2DAD1B2D3C45D19389F9CAAC36CB03641BB8CAB7C93
-69F7418CE2956990036E3A8BB0E48FADB3B56D08EBB536E3A2D176159DEBF462
-295F700F66A6917DD457589CCE6B33F498859C33E35F2D46336776BB31686529
-B303BA134073508E67ED9FCC2023873B21EE627CD2DFB6F4EBCCA944C3AD2B92
-4F9411C31ABE2FBC265D09AC7315F74D393AF906055A304AD1636A5CD22D2684
-83BE15E9A035804414CC68914F260510A30219E72F1C4D63363FE03C220A44BE
-90009E869C2DA6D639759EC8436096B593A917B3B604271F75C6941DC839EFA3
-0B9A58F85E67EBBD0895EF6BEA57CD716017EC0BCF009D27434156CD86F0B768
-175571C451520F4AA26BD45AF025C230BB98A9350407BE5C1F1C71F83517E580
-7F3A2542F4D6DFB5BA77D93116800A66D29B916F2FC78042068D44A8D6620DCE
-97A64BF9A7A488CBF302A6F0173EF1350FBBD46E307FA637AF4600D643372835
-04F98F008F3DBDF3D584D936FC268B799340D8647F0262B3C9DCE41687A8CC27
-0D6B2DD19FCB4E3AE162CC44390DF0D2A6A3BFD0DD5156B5ED3C031A371A24D4
-4DA4CB9B961C5447242055FA6CF13F67C155E6F36215628736704094836F03CF
-1D2823E43F30B68B4C0A95EDE5356C2654F9782FF4CAB180ED7B362914F4882A
-F765062AE02E2AB49E3FA86FBCC730849CE306949294893D2CF06DE88A7776E7
-ED162FAA07057BC0C1F5FC70326B2884A5E4685505E19DA512EE2C90EF91D7C0
-13F41B468ABDD40FA91430DE8289D65ACECF7BB7A4162949AEF4BCFB5B329542
-31F35AECE5E5641E9217BFCF742B8B908D54431CD98DFF97989F901C114984FA
-0B2726174AB60C6415A71CC1373AEE18D5A29C34C66E8822C2C298E912F2E217
-44B52FBD94B98CC6BD235322BCB219185B4273195271FD3DD5625D9483069494
-526694DD7B5632E9FBE1E6C71D50781FC5E4C578579CBF97288A9E92D84B6C5D
-055EBE77F09EF26329C9D687E89F7307650AF8E45713B65CB92C6C356EC62F33
-DCA398238DED9E66283D790346C019900C3EC090F97A9153F5E1BA5460B5E4C7
-52C9C90BE107B5341621E6D3BB7EB0F2AC3D11595F8F6DEAD3B9310B9F706A3E
-A3CD958623CC42ABE4E8BA63E102D56838503B608D5DFD3DF3BEC35C7157576F
-AF584C90AEB1012890559BAE9C90E3935CC1EA4E913FFEA421ECD35AA6F6C089
-82078877FD89A115C98F61E0999ED37FE634B710854AFE360201E858FC4F10B4
-9F3887390A579E01928F8C5AD522DA87167E6F1D2153A48397D23A9803F08478
-AD3ABCAAB2ADA02F36C06FA7B262AD0BD026E6500FA6600D71BEE0A365DDBA7D
-71A812EBBB71766909A02AE6DE30A9EC76F56E17D811B2EF177CF3537F1A4CCD
-5D39BA029F063080AC2ABF0D9EE11BD2593E3D637DC34D4E815BD6664FEA4969
-8F5E128D85484125F78AB2E16BB78E605A389377EC9E1876E5028830360F668C
-C77F377D1854ADA97454DBF45CBD2F10DBC4E9C6B29AA8A875B2012441653008
-F5EB97CA0AB351859499FD9F5ABA5464D1BF21CD3D3C1277F8B9796D98BF4CDA
-C045E7E674DC7B472D05ACF65FDE581C93A0B213C8EB8163957F28627EF14A72
-6049530168A4E11D2B7F4FD9391130007C67C4792CA94A72B8ABA43CB4B708CF
-DD0C96BE177380FDEE3E46DD584FA820C67463CD4031CE04652993FF3DBA19D1
-D0A520FD0E52DD5BE265CBADED20CE377F90F876998006F67AEDD30E3E8CAB3D
-4B2518556A99AA4FFABBB1E6ACCBEEDBAE2BC1DBE9D8292AEDB8E3F103DBF748
-D9E0C6C3F0A4A203DE481A462379216B3CCA465A41D0B9B5090206D797D3A3EA
-6E750E5C13F6DDFFF42CA7F046DB5699AA2209A038519F515B4886AFF04FF03C
-1DB46BCE65DBA0C4352D85F88E4AF74FC376B8476F610846100AC2A5C1CDB880
-A959EB2E020529E3C8456CDF94C36581409E8E1789B2B45AFB8FB541D431A748
-35443C33F1E4191B71A3996F53B98722DBF5E30717629EA737E4EB1F7F3A0F7A
-C0879729840AE4C830E3A2CC3ADD62C1145BF535D121E3875F12228B90561B82
-EB2CDB4F8BBF201769BBFDAAED00E9CFE295023034AADC12C217B0100CE8055A
-8D2DB665537FEBACD5BCD69D50F72DC60BE0DDC9AAF703C8041A3353DBB0244C
-A8488514C101E4D662D394A84C5B9048F2EEFF7931A3BDEA5DA02F3C4D564F1E
-73DDC5FE2CD57134C1DB9468A2DC585717F65E68CA931CC16F0F7887D2BF2375
-FD28B4C0D900692E944BF5710273E30138F4775422955D09B22B738142A37FCD
-83ACFD05B6AE9D17C673B24855F74FE10844B5ED73C25221623FCCDFED42D395
-DD426D6EAF323A54510021065F91B6248E1D8B0F466E3BE65C203FA87F98A297
-E5A95829A4E0A910FEAACD69F6FA81A9AB404778AE7C3BA4DAECDE05C1F86749
-66BB8107BA7F1AB76CA04C8C00262F0735ECB6D815C7B2AD937BB50275E1617F
-01F89AC79015E809211847CACEDAD713FED01470469311C9F6AA26EDA3021D7B
-A1C9E4E0F3D073B66BD9C3FBCB6B97FB5C48991C14F8459AAFFAEF73F83F4074
-96D705FABBFF885B801AEF577C84BADF4AC26B30A94B8C54B1229E666BD2FF2C
-A17D7743EAB5AD6E1C2A38BD2A7FED4300A81D982633440A01C55331895BC45B
-4B9DC7C0F43FBE75C02BE6ED47836EB92D7B6332D9867DBEB2F015C5A0F3F522
-20E262070FD52EE2BB71BEE7B0113B1FC80054ABBF13A376849751AE61ADF535
-4B95D1BD84934DDCA41015CD6BB80C324AE8B2772B073C437714B2CE80E11F2B
-76DB0DB35372C642AE7BC605B52C844F088CC468FCB9CFB13C6A4DA589049160
-2E1174520BD195FFEF8EB36EE6CF7C7138ACD19BA70CD00E7C6A18E0E0BF7C81
-295CE640135318682A1A4285C68B52DF7F950CE1BD26F6A5A51BF6C6766D2E66
-423B44BA965BBF34AD26D5A0F284B9D9E275AC18D80112EE8AEDBF5E2A6A58C2
-937E25BD76655873F1863056E3AE2325CE6F463D89A6178E3FF77351470579EA
-3BC3F74D30EE32192FBF71756BACC7E5BC8CA579247276A109093DA0F830A790
-9A3671B00269E0D361D7D08A09920B895D1F89346FF161A125E5892DBCC7F52A
-2848001F31BAB732EB4E00C976320F04088D0204434C9230B3D2D276A3481389
-49CC6E3FA168E4157858C7C6B50A8773F7F7625104C19AD63F2DA9503DA5ADB8
-8F8808FA9BC76E2FAA41B2A3BE135390C866A8B822C6E0AF049D82498FE60CEE
-529477538C36578BAA7C843BC8FC8659A1F685EF19BA5D5DC53167092562EA73
-BA7FE5D104E616DFDFA9331F7D6C9109FE513CD31940D87D0382E7157CF171E4
-A9236D5250DE6BCF0F246C5680A8D92791CA155AE942C1D8A77A9DCD88CF49B3
-663E993B0B1389DF2DE4420F29C0EC1FBED031486AE43137C68D3CB178B44D4B
-B181F63B11D2A21DE4A1E748C530CD046643BA951A81B3C0A5D78F53DE84D930
-033793C346BF6F1534037CC10E4468D0E359D6EC741C09E4A6EA4D8CEC41F846
-81CB64FAC81C877FC43DB4D00BE2D0EB06A80BAF795333376EB46FB942D38E90
-F3EE4A987EF66419E7989984ED8B36E9D936FDAF433D1A26DBFD21E69D37117B
-12426FE996620C50B0CE91BE8814410442FFB26273FC1F2C1FF4C9CFD3CDB6B8
-789B5DAD9E9E95474160F8F293F2D70ED25850C6EB5890D6BCED0B92B197C3A3
-431F2098DAB97889705FF519F48284CE07ADE6E6B2935BEE3BE6143EFF691949
-17BABBCA7B31E6F671DE31E5EF9B63C4C655460FFE6EE62852945BB1138052CA
-35CF43563ECA3587FD9F8290DFC9AB53D599428841AE1C67B22CFDA355FE092C
-252048396D0CABA7154EE336D1F021F4C0CC7C3EF47C33407D8F64741642DCDF
-C9B4C3B90A8AA883A327B95164F17A73F8BFF93F9C9BC8CA3075AF420D4A68A4
-CCA219B3D3BC5AA25486046277CEE16F512132FAE2D02CFDDCAA396083AF0B89
-591C79C211F90E5AB011E52B36827C7D3DFFDAAE45E196F3A37C0254B076E857
-5ACBF02204E8B1E01FA474C2CE29F8FF4B58E4A9DBADA84ADEC02749830CCCC4
-2ECB73AEACD6481FF0039067C298760A48C561AA968666F012037DA102DC4B7E
-450DB77AB426236601E8B53FC2D483FE9C47C8C645539B41D84C837E1875BBBD
-963D87D00BCD894434C466F39F7CF2F1CD1DF157A8F096FEE3B05E250290C74D
-8683F09F2CC02DC1B61149332E829494EB03469353948AC5AD5D84F04B4A6BFC
-C48A9455D3DBEC6F970E72A4F1BAE25D729B32280A43D16E0D780DA82518F0CD
-D7FC7FDBF93310A5C1B9CA867B436CB37DC30328966F8E6D85CC3BEE3ACAAFBB
-7AD796D617A6B480DCB507A605FD1347A693FF85C5DE7E864694EAB70D92FE56
-2E5BD7D673F3CD0D83F64192AA679CC947AD12FFC7026C7082AED8441A1A4008
-1761C4F442D8366B9505301526445E821C9713B00D6462E0D1236A363B9A143D
-5755999AA3254174F5401F03592133E2924D4994A97A620AE2A307BEDB04D9DA
-92D617AA7E1DC41B9F486196F85B0F9D4C26F4D67D74A3F8BE6A5E05F302E15C
-0D74CF24E14C4BB5625501A6863B1EE19032C3A28B07899B21E0A8DF706EA672
-D9DD51A2F5027A99E2B58E626FBF060BF25200B484060450ACF9C64318A86F69
-990ADC813C1EAAA76830206527AB4240EF28F04D538E98E31AD943D8B155ECCD
-98C39C82D7E43481202EF89CD4F871D3C997BA62B8DDF0CD885A6576CF1FC080
-412A9B9BF9FFCBB8DE22D63F6DDB9841ED350AA719EDA87A18DF0E776660023F
-FEAD68C95A159E5CE4731AA7FEF11A62FEF73CF850142CA18B29FD4981B2B461
-AEE5B1ECB409E9CEAB2F2A83940E79FA805E71646A48C120FF056D978F9D931F
-D5CA93F27B4855E6ED4D7121A56B90D9463EC6F9B76F4A262313A08E76BEA626
-3D33C83EA3262C03B5ED7B4C10F687E88F3FFE3B5F3BAF16F25003A21432826E
-D1C17D67172C5BD9B1D5E3DCAC4C14E0BE2D194F2D42DE37659C704C518E749A
-77E1AD2B11CAA8514791C9AD8DB8FBA16905349A0C8A176620C23342F68E8E27
-3880EBDBCA5F32FAEE3680092934BC7243500E2DE3A22DD325246F39ABA0F354
-36289AB53D71B147C85088703C683C1D96F47EA244E8513814769A7B30D52CF8
-49C9DCE11E912F7BFF5CFD25BAC588E476C76B5064D528381C6882CB3BA73A8E
-C1E605B14304D5BD1A755DEFE9C4D6D5100C1B810C622DF4990C4CFF82187FCA
-8CE5A717B266D35EEA7C2719E3AA0829704B3FDC4B0DCFA34E1EEBFB9B8BCAFD
-7036015D1D26573C8DD513B8E617746F89E6C890D11721AA61419CC3A3D256B6
-47E79645560AE6FBC56725850C60D68ABF8FF3514AAFE242CE44EF87F851E991
-C525AE6E8CCD5D2FD7E091972E688B826CCE918852E4FBF9DCA5AC377F7F0195
-8CCFA0A096C20318C5BA8628F1B3C553C1E0E083F24E22ADE00B2DB1C8439E8E
-F2138E45D8D6775B2910E50B91A04CB493A0E6E3F1A971ECC92E71F3E8F14DB8
-32CD332FB4C9D0C89CF1F1CCD77536DE9FA04DC3354910E3494B91659DACA558
-EC0F8CCFB7E0603570FD5CEE33FB603405D211B6C734BD2DC3378370B93087DD
-3EBD7184464B513DE3164CB0C10F5BF386D1308FB4AF8C26308C93ECAEA20C12
-D9716C8B29FC3367B36C77BA6F0B40B6220D70AA4C699FEBA3D9DA0655ECB2E8
-74CE90B53D74EDDECC270BD267886768DF920E850FBB196080512A0AE489D11C
-27D0DDC0DE1456EBE8376163C48ED8899E5C2BEF686464ED53277C764A1D8D80
-EC7812F2BA5B7E65349582CF436ABFF6249B4141EC6F21CD7CD4C1A23C8D017C
-DB296BF885E5B09B8EB36F9799E0355CAD64B60611D64001B91FF15FFCCEC35F
-4C4A4FF37124D8497F0508E52BA7C490F2481C833A8072A120ED280BC79336EE
-B03F07034E8EC04890779D7D222FDA4C4A282705B8A3E66BD5D96FABDCCFBD8C
-4F0B6AB3CB420978C2DECAB2D3CD19334396397432D8577CAB85D875E3ABEA8A
-51A1D8643619BAA52B7DD571939A2C327955DFC03F61527EC239E696E7C0B78E
-73A6D83EBF19244882785A3F582161D4492EE515C99623E0E0E3FCF6E38B4721
-7EB379E4491CE7343B593A8A266B83BE2A2277D5CC84335A776E658FF85D39C7
-9612211B3BC71E2B8D85474B18957807E746DA079887E28DECB9B3CE7E94669E
-EC25FF3035BBE99A7E2314FF4A8C4CEB5ECDDA4999B9B2500B46028A9B370B91
-61F6EE06F9E4C02EEA683FEE392659CDF283E39B61BFE99DCE8F30F5EC630067
-42D44AC6F7647AC4424E0C4964D8CA25CA6152364AD67638F2B7397413809F1E
-24F916933FA452A8683A953462BAC73128F890B07E9454FB4059D69B5851D744
-AB67E7C0A61414200E9813D685BC535D2B621F8C75F56014014D610FFC4C56FA
-06A81021A818D6D368EEDD862C9BB334F050F5502BC63CE2006DD12273746CB0
-4335C8E25C462E4DEF12DE2C80A2F25E81A04AE22205C8F61EE20636C2E1BA41
-00CE04BC0FE7A2128ED163112F69BDC089FBCD33545A412E24F1B885A315C1E2
-361FEBAC883956CFC4F9D2CA2998A8C882A678AE2F282C8E03AEDB9EB7D4F471
-55A5F118459A68150BCB2BD96FEA71221EAD5BE0B2CF5C80895F8CC2954A670B
-32BEFAA720634E28A6EC26B3F87C74AB7EE8812DA0D25444CA546A29CE234F7D
-09BE4F16D64B517D6DE603CCDDEEA0CBF3AA4E01EBC780B3481F8666B11B1C75
-C9EE8989EF359CAE9A3B90A20B946F6FB3E178A459BF425984666B617D9BE899
-1DFD5E21DDD66D2C064ED0FF7DE1307C3F0A720E0A97EE937B2ACD5518CFD8D1
-CB354D53E09E7F5576F456E0D48A5B17487FBF7418509B2E3B64C9B55282C9AF
-034233818D88FCC291FE5CDF13DC78D85AAE8892407AEE591B1E9AC0F54513FC
-BC04173FE429E9A56139B59EF1E68966418316B704C87F1E6A65B71776E90790
-6FA2275B1E008FAA1C24F1A81C96AE91620C54F48083A32C22DC34A4F3DB63AC
-39A3A61843C9D5F585AF29A534C5D81A4CDA1C29EDFCF2C85937206EB4CB1ADB
-B9616941A8E3F09E5CA686AC3C48D822A9D427C4A40ACC498E53A98704334CD6
-0570E591AF9C82168F3640BB70E1ACE1ED7DB6394603DC325CBD657A6333482F
-B53F47CE8207A268408B4C514C7BD1816C7E3B39262506597110CBF5B2C39863
-4272EFF639940302C2576A440B8D6D5D42DE3DE12F9A72DDB062805155DF7831
-18E426B79F4DAC9CD8A7A770CA7AD3CF6E980F1E3B970C9924E037F238A1D136
-EAB6923A8777D40C107AE9C94F6DF96C7906DC4D3F316517461AA237A4524E29
-044C718C69A97B882C85825DE80D2EF200A80C4ABED634374F207D96F86CD82E
-BE667AC443760263ABF558A985DB39268FBA2E269F8C2FD530EDBAE11F8B675F
-04002CC02F06FA8F0DD337CA95BBE3900CEC3FC4A779CC786E75519021848414
-C627B78999A01E4F1DD583A59F5C214B0237CCAFC61AC72FF1EEBA89290919B1
-5A45EF986EA5BBADFD24A349ED6A045519F74A5E562088FCD777DF45C6FB3453
-E4D353C5743FFE7081E04325E7EDA574DD56F297527EF7DABEB9F743EAB4F519
-600668E4454EA430D311BA1FA97D1C14DD3404B460C0F409C3E39CF779AB4F1D
-17B67BC88081D452039777E5D8D47D77D324EA364FEBE33D7B1A08828CD8FB05
-3DE0ED55F3E530AF1633E458852B735929381835DC00DFEE3D300F52896E5079
-7297820CD077E2F0E0ED088584EB67E64C99A62CC8AE9A9B3F5253E81A4BC631
-BF7332968C6C2CEE6ED5A3F1D2E1DB8D362A7B09BEB329B43716CFD997BA30D1
-074821847E87737B51490856228FFF070B7FC27DF6C18CECD5FC2FD568723BC2
-E9620AA94742606023A015F445B9B3BC89B5AF91962C4E659B2CAE981E4637D9
-5B5D074474973DBEDB804148DAEB0CFF939C282918A219726227BFEF91EFE98E
-F274D8A8A0E32EF7301BAE01A83E7FDBEEF87D87BCCEA23BA55F4DCE15F0E05F
-0EC406A4CD62E867A7CA57DD3D019BA08780F859EE584313D9240A8C3ED2BAE6
-9D5AB6B07424651AF5ADE40A7673DC5B3FDA0CD476DB9BE966E696F914D22014
-F46330ABB20E75EB0DB3A5A727CE54E08B44842F2787CF6BBCB7AB230EB5436E
-08B1D0D9F60572CACEA793A91F90C836F83E022F3C8D648839C630CDA27E74AD
-8A91F120882446E4AF11C73D525EDE5C005649A880FDE689467CB09A642EA5B8
-3C0DC11578DAD76E7017B88CFB546A081762C963DA2480430071D8A123DCD6D8
-A350B33C66E11B08E6B62CAB222D160E6C48776913331628DE5F0710F87B1C22
-C77F2D888F5C01BFF9879441A81CB7992A2BC042013008BE382206D45DB802BF
-BABFCA10AACD0E4FED2E035179BA5134073C1010226DEAF9DEDC976F0C524625
-4C4ED71C9F114B381AF4371A8E95352B648CA9F681978A49093A6C40E338CF75
-49F7998CFDC29670BAAE16189D6635A80B6793AB9186B66B8814BEF45B359F41
-EB3F7AA1E75D8D91373EB23CAC6E9A2C69F153AE238C6DCB7A4A4326099572D1
-AAE06D49343427770F37ED208FE983DFFDD3C7E32E0E9281578E115ABAA0EDE2
-0291B95A050B24D486D5F2CDB12F615AAE8C56C6D07DD22FF592BFCAE7A01E67
-333F90B0F07751621B32913A2DB059CC00F537425EA4EEDB491E595EF709B414
-7634D80E767BAF9FEBC1FC41D0FB3F5D162F66311F416A93BA6301ABB5AC7173
-7CBBA52D93D5031D1B7F2BB8595FA1C84E440D99BBA7E8EAC149DFF18C7049DA
-2788E3F847DC10DD9439C584D0446309206AC1C1D2A172BE0A6C5D8C5C0DC137
-CF56300F4156F86A1F4D502A0001BCFE8E82AA4212FF2864B1E081B3504C9ED3
-A508FFDB26EBEA894C33CE7B4FEC09F475F585B2E61599B4FCF4EFCC08B48CDF
-D2BEC7557520C0DC7A69A74CBC4C765025ACB960C010986BC5E2A96F5DEE58F7
-D05BB869712E6E66AEBFDCF2F90530B4262FE620D9F8D66B352A529488C005BA
-C3144B6A47053E9975DCBA568BB914F6FEB4E1804D2D99C56FACE488C8ECBF90
-BED15297E72E45A12C2D7D2A9D072B11EF324C6B5115076928B694E39E50C386
-F11C687EFADDB68C57AA29E3064CC387ACD573B2F29D27746F169902D3957EE1
-A02EC362C66754EFDA5A4644559536D3FC592F158C77B50708E74507A8AE6324
-3023BB7C93882B2675D612ACA1198C3B2813BA6E04AF30C98F3C0CDD9C63DEC1
-D0E9AC3764C872EE8D7D525F8AF36BDAA0B0CC112D2B46FF2EE95EA351321B94
-93BB28CD9BB63AC0841EB3070A33A016E1D6C87A55057118D14F7F53E18EAB1C
-09D22FBC1FA42CC6C7975E4FB0268944EE843E4A90D7F0AA228F0BE55B42EBD3
-EC32E11924F5D9742BE8E7A803FB25CD75DE330AC140601ACED8B1452BF8B2B4
-C55AFEF142AF8CCB3F394E5859EA994E3ABFF4C77871DC8668E47C858C35770B
-D9BC3BE31CD67C6B5E607F6DFFDC7EE338711C98C2A30AC2B612089CDE630E04
-A73B07518B9EA8A3AA324B6AEF0E5D7612DBE06BF7DE4A55796DAB2C81CFE23D
-0132797108BBB0193CE77D91DA6B48E951338E1E0DE6054FBD1A4FCAD95479DD
-2DFBFE923FB7A3B06B7085793C165A20D79BF09BE800B2ED7FBF43436EE7676C
-FD2EE1495E13D572912BE7C2379C8D1E7DA4A6A2EF9FE33AA14A75377A356DEC
-6AF1106AA3D780D1A99DD2E0CC66CCEBB8CA3CC418DE0A267E8E5D34EE925E2F
-827461088DB60E0D56BBD217D9E0C3D2B591CC60468A3F7A5A6D49FD8F64DD46
-BAC6215C2E56E67A10F69219E1C8A09DED4A745CD53E5748A7C2B57FCEFDE598
-A026E280A1E5767ECBD3A3ECC41D52232674BE60A3A8BB6FF9EE627AA4B2CC24
-9474949DAEA29AB9586836860AE1FFB4AADC75B0760015C86FE32F49F26FF44C
-C03D4BD3CDE93C57329410FA84900B19338CAC1C55B507A6B130EEFFB01A5E44
-0E3E133C17A0AA4ADF837C5D6CE284D053DCBB3C03F59C5C9BB80C0C4BEA25B6
-5FD00C833BDAEC0A4607285DEFBBC7D3A6A100E8D6453115233D76CA2C132D31
-A3A3FEA39606F68F0AC10CFD4F5701C4B2A7B6848C77A903BDA77904D038A1C5
-6014E31F975CF627D67B0D3F3AAEE72D32EA80709CF712A6EB46E508177AFA03
-F275DA9768CD589CB298322B0BF50B578E9E4B58989DDE12CBAAAEB7E36655C2
-842F5C7FC004B8B8516D8CD35543F3D2182DACC5EE8750A0CAB151C6EED04063
-71B111101991BABA8B86E9F6F718B9ED1E69D91EEB503C6AE45B661C8CA8B1CB
-20A9C01764DC4CC575C636B84755614BBFC242A5865469F87FF4F97A43B5A651
-B2DAF746AA69FA6B9CFC9FF4A2590DA2D23BEF1EA97DE3FF48A0A23369B90395
-0DFD36B3C7A992CDC1E49F42DE7C37CDEEC35A7AF8CADC2CA0BBB01895613E03
-9C157B1683F1421F74B08184D56DEFCA72132550C6C1061B36769DBD39EC22CF
-238641C90BB9510D564C0AB202205358CE42CDA4723E5506BF5A274236A6E9E4
-DD21C0FC9FE57974FCABC6C808856B5F837AF759863BEF5BB381E2A729C6C4DE
-2F53DD2DC92BAEAD141FD5FFE341E0FD5AEE566E2E1C6A44E94071DA0C3D4F57
-07B02D120D95B21086CC12F33FC4D0C7C8B6147928A00339324024F787193073
-13DD96DBC559F2339FB51C6123A3C51C70B7676B39255F589A80747491320833
-0FD6685904C70A865AABFCBB7F5E351BEF3B535D00403E1B5C4C64E8DE7061DC
-A1D9D4AE825BFEE090412772E057A13FCD3A897FDE348FD50E50C620C89461B8
-BE07B057B796B16E06CD314943153935D91152BC6E331DA67D73524ED7548385
-0F087BB2F0023532B945ECC61B6E3075FCDAA3ABBF945B64AADA7213C590A9B5
-11D068C9183BC0D2238DB3844BB4C7596E00BF6A67B6BDA2F85D5D603B80035B
-5DF1EC6C3570609A972B752550C89C34B8E14BD1E0A030303D9015EBC9114F57
-2899C129E72055B92DF22636EC479B03277E3E60DCAD36EB35CC3898C056C72D
-B58CCC6FCE3B2FFDCF560E130B196BC278224FD4901DD2F2F753494FFF4AAD61
-002715D828FCC2B6BA8794D843C1144231E818579B305AB9022AD279E0514068
-F4330A1C2C2C3FBDD150098C5B7DED6374D6B45CDBB7C88C78343959CC260B39
-986001C07720E3B745CAAFF84F858CF3AC4440B592D5A83BD96FB5980286CCB3
-6EDA47D11381FEE3F3CAEFB2D6E35F2B896DA68E8567D9327FB956733DA2896D
-1A63B1FB168529BE23A7D04607085DA1596BA1858B1A07F3F37A233D2E81D599
-82D885596BD3D041DBB2F3972CF605C0FD781C1360B368B49C4E41D2BF45FC3B
-15460C0D9AFB5BDBC87FEE463493E471DB54CFC064DBAF00EB126DEE19C58319
-71E77AFADB3B1256673E0B9226177A6161133FB030F063FA67C6
+C4A879C0C7596E61997B972E8A55E57B17F802C738E5C7A8FBF6424F8B131B23
+CEE3EA3747DB066246C250EAD335A76FA166ABF75120CECB59076AB31A51F176
+57176CBE8C802A97B0542A5CFD6D5E6D7EC848B923012E45D9F065BFFA0D03E6
+788B68BA4DE51DA37994948F859D41C28BA939C3A82BFDB44DA585AE80B8CD7B
+A6EEA79B70BFB4864E06F06A9751BD2D2A209D150D7135E0A25D67263EDD2A7C
+C63B5B76ADB05D44BD5BC0BB3EBCE2E74E1AE5F7DE07A59D90C932DAA2553505
+27F2AFC05F7CEB39E1C7E54F69FB0BBB069959F2FBD11709F8E81F6E7CA06DBA
+1CBDD8E7A78487462596DA288B50B295E46F4C3D9BA862688C68859734B232A7
+4B371D2BD786924F186524765E789EEAA30B20C069322D42C893A30BF1BD2C46
+F8F3732DDFE80B8FC1789239345944D8B457824FD80D11184E73FBA30EB80A9F
+2FD466826D4E6175E9B3AF676603DD8C5F5B037022B38CB7DEA203B11D993027
+884012CDC35C4B36242F8D77D188AFE30F09D5D4B9E13A466FB208B9C3B3D269
+A12EBE66EF7F6ABFBFC024B72BC06828FA7AEF04633B1A7C93B778D17B0AA1C6
+721295869CDDB94DE898C26F40B1E3E93B68B06A63719C44432BDB45C3FDE04E
+7EE718BABB4A57C7709D3C41E6A3C997C0E7BFD60854EB52A73DAD8E02F6E43C
+4EC19A0D6311293BB240782BA1DBDDC0F65287E6061FD3333718D7CFCDAC4715
+589A5ECAD2762C643C0A7B2750C7038F6B8F275D9423DBE3F3A442F625747D58
+A26B03775F1EDB35BFAD9ED9C2C341F89804D41A9445EB2BDAFB2043F674EA73
+4962020D8641448B253F4C108BB1244279064765CA38869A7EB73377A168E596
+1B1E7F573D8C09649963F67CB13DA10D55938E6321008B54FAEEE7AF48EF153B
+520A8E750230D50631819EEECB35B69369C888AAB9103BF3A60A7CF6F357E20D
+EED0F3DD636D920AB08797A37577156E3C56B37604C8DB2744DBE77CCFFF9E9C
+150CB37173CC122C366366EDB5847053A74ACDE3AC86A253EF7BF3B90C59647C
+A265D5F3F9D60352A41DBE682C3091F64C3298369C71197245000C81B17A69BE
+E8F7AF9BEE7AD5DD407E9C262D52603B16C5B0A87BC7ED85E10FA988DB688A92
+470100856BE028C6A8ED4630A58A2C716E79E4AA1C59E99D1B38E65AA30B7BC3
+B4FC020B003DBCF97082521BCDDC572969864809C35F0BC5C7A59B86DDE788CF
+4544D70446CFD36D388A7BFC0674CEF8E44EA7FC0DA8EEB5B4A8A4D61FB4D8A7
+964BD32CF308E0F0A7CAD61670A6E0C0B0377951B7ED60BBA08F874D9E95CDDB
+D3FED52C51D26800DAB50AA62361C0D1A1757831BB68863A34DCC811ABD1BDED
+4F258F2DAC1FAF16061EC47F5F742E507C3A3B72190E56E9B5E403A0771421FB
+BA346C531A4E12532D0986434EF9655C3E1D9966AC9F9F2DF8B5381E8C764746
+D14BB1ED9A0BAF084C74913B3C9D7F90080AB112BBA10812A077E0D090BAA92A
+2E88142580FBCA6E5AC62145C7A4FE583A6A1F7212624FAA4BF2B5FCA3CAE188
+2F21BF5FDF3BDFE3F72744C3D842117D4ECBB70A98762196BE6D9B2127C5B629
+94AF67FFB984878F2DB8F3819AE130F9785522624503B9CBF36A2678B3C9E3D2
+79826C464A9D9065659902F630A527EE40BE9CDE25106188E837BCE71D465576
+0275556A73BC10E2496B580DA205C1E334B77577A4F2CA9A204C9811B60D89A9
+C4746392E83EA6BF260F17003E3D5CEF2BDBE28FD4ACCE6AF7CC9768F726431F
+C42B143A26C67464E6D24E11AD4ABAF999FD03F2B9D816D51DDD3E3A8E4FF196
+4DD14E67A8E9FD2D028D1969F2D9366C404A0C19D6800DCF6A1A1079B45E7E63
+3CCD3F2DED5AF585C938A805AF9CA4A3FD6219FC44CD0E303FFA652726DC0145
+EC6F96F1B0497C84A6623D32353CD7684A1F4437B892CADF70334FF6D7B4C6F4
+97331632FF1FB14388EDF4BD996C2E1563BDA1F17916F2594A12C4176BEEBE9F
+1EBA0D351978D9114E360E1E97265EF76FA4123E6ABB60D4EB1C67E7E16CEA41
+8ADB60B13F58C8E45D64FF0A49EC86948AFC2A6C2C778D5F3FFC73250A597961
+B66368352FB83F2948AA66104BF95D062AF7FA1C5E841724B47DFFC6DE5B4667
+59C193D44CE020779A0B6E2E7AD45948B2225F017324471F2E9474AE0185C815
+632552ECB91EBF0ED1FA7A4A3BAB2D9C409673850C4C8235DA5F8C164F24B4A8
+1242B86EA0D8819E4A6691BA3B2E079D47374D02DEC8C94DBA8B02D496EEFFF2
+D9E6B8CE0C5A08EB556702A7948BFEAC76ECEE848BE845F00CF9C96E49C1C8FD
+E45265271E6E9F502C8BA397253013F7B36669E5A15D4135E96C39075D9EC1A9
+87BD4483518FD415861028AADD85995F8CCD4CFD94C7D63FD35E370A8E2A8FE6
+8032B72C34E9E46C35733E6174779CDF1D7F5C2021806525D7ECB9CEB57ADB54
+B836AC834D57F69EAF2E79C875A1B630138C9B03ED2FC51197FE003A1868F38E
+5ED37A4059F02FFB141C9777BADC54034911C9AB27A302E7159AC789FC5E5CE9
+EF2FFB5759B3C76AF9E24214CDEBB2918B910C1052D74A94F447A97175E170D1
+EF63C299047E6C9285CD4EA8B642B2F470BA92542EAB55580747C3BAA80761E6
+D0B77E780B2A4306C133D5337D6366C044653BAB5959440986EEAB61BE09DB91
+1495DC5E665EDC01AA8BEF0A80035348B6E61315A8F8A1BDFECEC7E3D359E497
+EE24FECBAC94FC9BB5C39B9985D992DBC6439B3010909106D33486429269E18B
+B7535A1F53F6439CCEB5ED957688E8C41A201BC395B15D857305DE41D4CEEB49
+DD6AD74B25DE5289BC6E033A010566EE4C8130A560EF69573C5C757A1F12F5C4
+394EB7968281E22133A9E6860840EBE74ED87E7B8C45558CE5E59B746CD7E4A1
+67DDCB55782E1C088FD489D9AB0C8C3211BEB2E515FF183F50006F5131291C5D
+FD98178AD872B2626EFFB491B1A12F36BDAF6312EDDC5D3A51508B5D2E4B99CB
+067AE52A5A72E24259E9766318CA54331AD1DEF2E3F789AE7791D4B4EABD2F4D
+5A868207E5C5281136F5C28C725C7642D1913555EA167D4881497847C5EC09C0
+16225CA76A34D4CAED8EA4DDABBD266918E9AA60D0005C2CB71417084FF6DC52
+90ADE2B8CCD07188BA826D0881E6FB95264C2ADC45E7F75707F8C72BD545EEBE
+ABB5813263840177EB848FC9CCBEB749ADBD4146257B6C25E325B570CF4918D8
+0926146ADB54A26F99E1AB25E38A163E52484FB1EF92855151F665FE0AAD271C
+331247360B7FACCCE6A781327CB9430F53B4BA0A33C4A1CEA043A7967826FD40
+95F50F71816E4966A80E3DEE0CDF44C71CCDC7394B1D298535C54379D89D06BD
+414C0ED93B7A10999BC6806DD3A74B8621618130D24C5C4F438756E45ACCB434
+76F500DC297CDDA05ACACBD53353DF715DBFCEF4A9BB13268B279E279136EC01
+0DE17F954E45911A2FA16D81F02C91B99CD7210C6759C30B270531276E6C58A2
+65CF8F80E407675DAE597EC6A277D62593BADBF6831A414C6A46C7AC7F1B49F0
+09863308C3D7908E7E1081D08B77A40CB972E7E7F30A1E62C0B1D05010EE133D
+7A0AE33B4FC1C1FC6EB662905DC3504B4CD632184084C981F9C64E29126210C4
+5876A73669184702F1BAA08F02A3F1122D1A9FDF70C469A354C7693053641E70
+E9C976FE9F0C4E042B3CF6514988B15206DBB441B299A46C5EDB092B672065CC
+53394B165C1B6CC54DDF522DD88674B4149E166BAA25395875BFEB5798FF0DD3
+D786E86321B28733CC6DA0BC270B5959436B80631670B428D647C38A6AD14F16
+7D68A5D4849F94B3D9A23EF272B2076C1F1A383FD488709B26A0CF7C11216C05
+18BA05A29E8F7B0940C9E5DAEDBD08EDBCBCF5874399248BEB90C5C435C7BBFA
+7CC1DBCC165AEE87BF318F288779B7005C799285BE8AF022E093FC69F814A08B
+0785EBB80BB9E46DF31D727CC6F376BA4227DA624B13369C539215C8009D966E
+6725E8AA9400B6986838E3E1D95A2EEC564BE0CFC32EB9C4BF1FDA58D9C03516
+12AA9C6E066D96E730E4713023FA7C04717C809001985253068AC8D9FA0281EE
+CACFD3022629DF6113FDCED24FDB6F0B3089E25B9E1F88D957725ABDB7384BA8
+72C8B87D7FD07912CA2D5E9B5F675D860FF38CD65D310F01B36B0C8CF976BE53
+A8E2F5D2D8EC1A46A8AC5B5F046831FA96D6E6A0643F1530852FF3E68AF85B62
+D6ED67A36EEDD87EEFD4F3F44455C1525A34134827A9971C15154C00E8EA9DD2
+198C8A4BBC420A06E4C3C04A34365CAF55AD92891D10FACCEFC7CEA6075FE46A
+FB236E468DC7C7BBB3DD897D0A22439A50AD7D9A797D5ADD93D282166D6A21D1
+5766A7BE5216D9C149F65536D28FB4BAA73E8C9FA2BA344C54943A4F20155041
+AC7D34AF06D5B3E5E219C510C045078FB7A56B42A03371BA9EF9E5F538210F5D
+876E424A8DB1CF2173F8C0EE459510B9C70BF3CF5B4010C20E744C0CCA8C7A50
+0971077E41DFA8C3AF38BEF82881B7A94C425FBC15B20D78CA63598AFEE48F98
+184A9DD451341AAB05E8B70892EA0F3F2F10E0C026B991893F718E6681A91BB2
+A7F946654B09E5ECC000302EBF28B2E06235E4098F5ACE4F3A51CFF50C95D2FB
+0E5D7F1CBF6E86A58C44712F3879C7AD09B6D5121325BE33C63EF33F64FAC6FC
+49F76527F8FDF0AFBA4D3EC72EFDBF5DDB80100066E6B80D2E0BC1046F25E913
+2E767C8EE9941CF4D44EC5E917860989EE3B67F9A55D79F4A9AA45DA748D2FE2
+9B10E48B6684809717CE69C02104AFD0EC9C22D5CF354AC9164205DB698428D4
+D1C9485572FE373F3B51A4AA5FEF99C63C8E48070F179EE75492F2CF0D4027D4
+CFF5C2E5821CCF8E0E11F8BDD3F995BFE27425A0C38CB958BC5E2BD5E16E57C8
+3893E691A2CA51E6C8AD6E3FF5D1660D95EED0C8A3851503FF6C761EB5BD96AC
+5C22FAEC2C7C24EA2470E37E8A5E137D644A939FF4FA455935C1C4ED0A1AF94E
+E80918827EF69EC670F9ABB4031BCA53CADD6088C3FE9031C546AA1F41DDE043
+57D10B7F4718BF76A2FCEAAFB0C69E42A69D64B62FF2CDFFB16892AF87FD6CDB
+C187AF7DDF1C74B718DA84C492150890671EE2620FD848B7EA062080F317260C
+B3CA941F448D9F73DFD96051509A760D6F2D49B764A5B30B531C1F2B877B0F17
+1DD18E3C7B63A42FF783CBDF910D739A9C4B8CB02C3660E9F64537033C9080B6
+08C3A0FBE2E4D0B96D2512FB2E38493FB11CB787EB53F5DE81019E4D0E35E201
+A39D844181C105E93F4C639DE253D3FFD6293AC811EA4CBE0CE5E8CC90E2DAC6
+A5E742835B8FC3A128A416EE873452C1D22E28E5774CCBAD9DB5718973DB640F
+18A5E59A2FC3EC764E8697A371CA8112E91B756DC20D3CC6A1AFFC9A0D7FF62F
+9DEE3EBB84E080C28AF8D751CF06B442D19D4A6421D67BC5A5D087EC67CAD4E9
+3C9448D46377AAD624841FC423800DFE507E4071B4D75D9243FB5EC82BC741EA
+EFC6D687954DF056DCC49672668245504E9266335C1FDA78EAC44A595A1E635D
+A15E92A57BB91A27AA5C7691B72AD442BD6E9647798B8F88414A26223E4DDDC9
+C9B24C27FD5EE22C4BB77152689FA0B8C72FF273CF53466F478F7B603A9E49CB
+B5B1C0633D66712DF9551C992FAFD15AF4C8B3DBCBF286C5DEB6D023D5CAD9F7
+88E1283124E859E7EDA4A63E1B705613C6E99AD7A5DA1BE4200B449B341C1DD6
+F7D3BCD984DE5989DF872ECC549AF16B2119602DE3F6F084A2EEE98739699196
+5BCFF1A20F0090A15E7B1F2697FF1D58924CDF6E8FFEC76310B97CFBA62B4D84
+69CDBEBFD50D57D7EB6907B21F17C20CFED0DA31ADB0715A3D6D36FC762A7620
+55EAE4E98332738D6EB9CD412BCC63E3EFE09A53E4DDCC453AC7FAE48C31B840
+78D923F9BC40CB3CDD606F5E4C21E95B3CC9AD91E69358F3747CF4BAABA7B550
+C1EF36946A4734C29EF43D950B668A67C0CFF52CECDD0748A83554004EA02035
+0142E293CC426E38653AA2EBD3BE49BD29C348DF05A556D4C511F1D1563D062B
+F9B2572A34C3E6C326F1DE7318BC047E102E3A64225833B2CDF5B6C22410FFEF
+F800DD8443787D2765E175794A72432B2306517C8673F6FE12C2F2C3D873B41B
+2FBF9E1EED1FC53858EF7576BFD6A31827C3813E198BB641E802CEADE7E9255C
+66BECD2B617CFE14B19A1D2B5D5E498C757AEF9C5F8178D528E7E6BA96CDB4E7
+A7D5DDE5BF78FE12EB0F725981CC3A0505A4C853D9882D04B54589790F870674
+EB25710AA201CA62B31DAE25D7610FADCAE7B0CD8BDF6F62DE085D2E7E43E28B
+BAA34FA3467ACC61265FCCF2B42B98B386A7023F1FF28978DE9FE606996DF878
+057F80D4D0227EA820B112F3A7B34492761EAB840505B86316E2EBA3F27187C6
+B3939781F23316A50B2CA101734BC0FFB8051236618BAD933272818DCB0FEF04
+EA30BDD66F20F932AD1A1EC7743887EA57F7C78FEF151676148A8316E6408526
+57EBDB5B030A7E54AF47200C7982CA6ED0CF49B1AAA3CC1CF905ABE85898A930
+FE5E6AF137C816F26A6C26080C68B14DF10F7D7D1E7C7E7DD42F6AB9A179BEE4
+1483ECCE3E0B87D156506D8F93FF6C97EC239690173ABFEF57206F064AA19725
+E35441EBF35F6EEA688CE9FDDD34992BB1B0365C6F1C69AA301E1C207D1B5CC9
+CB2482259865249CE2E2036920A67B74581ED52C8E52FB3FA73153862C21053A
+49E03BDA52F956FC484710114DC863364956C0C6B8555628C35D541A954BFF73
+6205DCD1B02EC1FA2BA78AE17A4E000143A87CA9CA843D3066E260F826522618
+CAE799CA200B092329952CAE6ACD6A27F9D6B8BE6D1626ED06AA2DDE0435F57F
+CCEE6375E4AF5E0DE37C6F97A90FA041C042B35BAC490FCB3D92F0ECF9A0C563
+A391F0F556B2ECC218A129F5B775FCB26AA79CA31934E475C3AEB56C6A9883BD
+02122C3B3DACEF4E33615AA66048CB4830D3FB2F0549860BE5DF55B4D373C9FA
+2292E303A888B3A2F8D4DED2B06BE733C9EE4605238BCA5F7B2A5B30E9691CC1
+93091BEB8C992FD00827C1A420DC079EF7829E371710F834B5A7A9D7A0CB01A6
+D863EA71C4020576C2F0B12C8827C01B69BD6E5602A1C23577E521B2B396767D
+E5ADBE6EA16345DEE20BDE4793134DBD7BE97D07B8D012C5DFE8A810ACD5F741
+E68BC9E1B7A9215AD41F36CA1C001922ED5B81E7F5E1FF832696F5CA0D4B6D9B
+F599412121871B98F3ED394B341CBC714E71907FB6D1E928DF7F7549C4C2D7EE
+DBCCAB5A933AF887EA694C08D5E64082089B1C00F9EC001663E8AC2A9C86D680
+AFC7C7876B16875BDB02389D87B8898B20D4E406BB8ABBB46D01D8ED2B2B70E6
+902126B193C0054E8E7FD294494DACA066B10B8179540D22EA9639C374530A13
+87A407062BE544830D8AD031F6B3A7DB153BACF2E68A9A981026F46CD118FF87
+4F0554182C49A6B8EC5FFE60ED809B34350F47F0EA54C2972B2A171CD69CC018
+8AC1E7DE3E6E9B7C1E282BC22B5323164D1CF6A6A5EDBAD6C38AC5AE33A3E2A5
+CA334D55EE268C58A7FEDA0241947EEF81EB15DD6504810531B3C6E019709324
+0A885CE731F2F2ADC2B7EC8FDECD4AE96778E9EC48692482A56AAFE171CADADC
+7541147BF286CD7602C66FEFFBBC58B38B8EFC5031E7ED00713025B02D76CA99
+BEAF8B1C4628D5FBEA6CF56DB30B45B202CD87069AC97561BE8351F474ADE34C
+9DDAA53DC177B2F7FCE4EF16A19014C12BC362E1882BF561256111C78D7EC7CE
+4665F7B7E2F6F138D67F4A9BF04563323C4CD1CC61D446E934E56620D02933AA
+91F0189B5C8599AEADF7C32DDA2B8B2405007D6DC48FB3BCF11DE3C76A4A0585
+D7D941A3C34B4820E13BAF4414921FA5C30AF3A1E387E04AAFD3CCFECF6172FA
+2472B44807512117A68FD61BA027C8A8272A8019FC952FF8D47DDFA391D42E99
+5A9D94BA11AE36E6388E42947980668485786134C255EAA6C3C1513732C3C3F3
+165A6428ACFDCF71F3F6EE1294258DDE6D84D3B9889DB1EA49225A31901A9B7B
+033EABC5AAF85AF7C24E2630ED7498D049FBC6D63B47CED29D34B056E9A2E174
+D9E6A78A2C1C77341B74AE3888723C50BF68E24F014A64D99213E7A57D948C97
+BB474701FE533471680A9561417015521413D3F82A5E60E6406E404B4E910700
+9BBB1D6EC3413593FB805984A308ACFF63E61C72DE53A182F1AF3910A1C4C037
+AC2F2C9CFFCC702649759C3EB457E36D918E031E64B1487761012FC3C3D77234
+2438D33A7B0076465B2BD020E81237FBAF15DF040A7D802F3E09AC0DDA4D65A8
+8CC102E3F21B6BC952D33C436742218830FE94687B5B387506AE9728F92BD8D6
+6A526E159AC0E393CCE8B6DD2097F36896E470542CBF44C2E9CA55F479D8FD02
+7ACEF200B0B92BE056837F412D7EA3FCC0281A58596B513DE2C72C8F91282B36
+4B9F1E8C50841AF55AC256F305BB140D80190B51E23E7E1BFEBB8D05B8AB3DFF
+DF50E2245137ACD98D9273E5A076EB6DDC102F05225A1385EC95EFF13CFB474A
+830C6EE76E1878178AFE6730F45D5914A7AD4CEFC68F89CD167DF13B7B0605F5
+0400ED884AE4199206BF8621E9BD02C10910DBD3C748E68ED3E747EB4F5D84A2
+954825C4AE987964594E6D9AC873EBF25ABCE51868DC4C00C251E77FB5E93015
+32B8EABEBE9B03A66705EF51FDD3AD97B9831FD123F8434BE971D942B3B1872C
+89D214637FEB1DCCD991410E5A5D0BFACD7653FA9B9C65BB76CBA7A3193D9DB6
+7A3C86CD8A91BC0F3C148B387E58662E8BADFAD8D18D3A9BE04CEB229E9C1FCB
+BBA76C602256B31F1BE4277C31924DCBF574A6E2C94A140AF2B3F7C6BCE4F8D2
+358809426AC9DE30C581CBDD5BF01245429CF23CB9A5C7A1F240C800FBD3BAD5
+32625A2D058F575CDE3B7485D89620B7F1195C21739D1DE860783D1B5EEDE03D
+6C4D82A94BA2A046742DC5D86A0127317AF78B9982B150D7F8497BB78A9D3D21
+31D4FF625CF2DC0361BBF9AB1DBFAC6515734C3BDAB6049BB94F94E7EFE7535B
+6C18ED66560DE5413B050D4522ACE91425B615691268CD88D053DB6316C65E04
+0528F1318D29743DD9C74C5BBE1D36A5C0CCE153EC43C9FB59CA9B0211B401CC
+5432DFEF1382B97E6444883F98C34AD3CBEEBD55015E8D337A315603AD2D2A55
+CE31677E025D5B5C648C547BA7D0693EA3BAE43E510397DCDBEB2100EE89FFBB
+BC273555CB4D5EF33B872FE63C7ED8575B1E003C52918FF39057B67097880A84
+68C81B54CC142A798CA8949A0E7007E7BD3BA0E1708CCDD85E703464C2DC7760
+E4C74500DCD0FFF55B983A9D00288D81CE1751EE55A550F26E4F4AD9ADC75BDB
+D096BED0CB9297A59D4AA7AF7DFE99835EB0B0B8F8DEE7BF711BC38489E471DE
+3E75D3CCD9C11C52CB9A539C0B2F65ADA8D36F001B2A08540983E9073D084CC4
+B24A13A3522CD94FA72C4E63E5163772D0FE04BC472AEDD1CF77858BF125A2C1
+2643637C921278FE466650974F70AD04C5C59A2912CF82A99F304B9B59FAE9E9
+17CE21E3FAB368482F9F4ACEFBA84C9DCD0CC806D431DF9F04186E0E2C9C5172
+D7B88E9B692ADACEE18862AFBB8A5E7E066892D2308066FABE19D03C84357064
+DCA60C2AB009EC2850BBA7FCC06AF9481D941CF2BE5A09720377736C28970B3C
+9D706CE29A1DB9B7DDD7DAF5374E2469B70FEB87CA8536058C2CE3FFBD8A0CF0
+6D3E52FA44C7B901769F974449504313725BFD45F14D03C5486107E082EAAC01
+BC9D8D9062CD9183393C2220BF35F08C863ADA02FDD9DBA6B63989C5F1D41B2A
+32A317A7904C46C7B02FEAB8BF80A1EC30BDD8CED58649BFFF0C30E0B064342B
+74561A23C47C349FBA0724C925A302384F47EDA69778F44CB27B57EE709DB583
+F7151783B2B8459F4BEE2C59208283631946145681F0A167F206A672E97FDCB4
+D8EB04B5B013E482CB2298314331170D7C1B93D56E5D9309017680F9CE1156EB
+4B555B9A73923CFDFE1E999B32B19CF9E7834BE184BE3C9AB4299A477FCB089C
+BBAAB66111636F5258809BC5C80D9C9EBC8F97E581264502E35DFE39BB4F57CF
+0A29B8EE2112C7E8ADD6853E1EC678492D5CFB26E0B51B11088202DD9E170C5F
+311B890AC71764F18D7164BC597A28429E9A0189475EB398FB563FFBCF8CD2F6
+C5E336FA14BA976228A1C6E730F5B1EC37DF843CB341CB1CE65727BAF91DA78E
+2C233B99C96726ECFCFE8F24BA264BF3D15E9AFF74BF73902566F425E391D274
+2A7828421272B039E175668E8773D77DC2A13109C6FAF30A498E4736CEAF9A74
+95F1F74E39AF076E3506E61000D55C0C9201533DA8252705FCB52BC8B6FDFB2D
+6453E47CB22D3D08A8497434AB56761524AACB1BA44327DACB1E48C87487B219
+8036B531A5CEC834B0270BDDCC2FA0F4243D324A5983B5A8372E5E0335FBF214
+2ABC51DDC516C20492D452A4A1777735B928331C2099A709E36F79A85499861A
+E52B620CD3B311C9DA693865A606916E0FD248AD7D363325116DD49DD581022B
+4344EE949CC92ED91F811CB7E38707F717F78CF37DA293F43B8E41B2C50BCA75
+204EE1AB5168B15A2B30014650BDBB07210D0D0B00B281B5F415A3C689300DC1
+B02DA61AD3B7DB9F1AED97C2ACB77EB38A3560FD60F2BBC230592683687B5B58
+AC19AAF74A48519416FA02C3435A5AF6B74F915A399770E98088FDCF640B5561
+B8EFC2F55A38DBC5A0EECDF2DDBED92A4E745C4F3C3C1CC2C9EE7A0F061AB8FA
+FC5C963B9F18A5CFA01F7BC54095298EDCFA5A012AFFFD84952EB013D236C5DF
+90866F0EC2A495EFDF9E0E1B9137DB8696B6A49A74E12B63EB1CECC79AC7495A
+506FDB4132DE112C013ECF3C58E14E2E34542D049AD190939CA7C8B12D179EF7
+765BD970F6DA6AB4B5D22D63D1C9EEC3C0CEC44EF29CF097AFE0078EE340BBEF
+E36E85866FCA5D3A8B449796673B540B41B03A4D0EFAE8CD493D2DF658EB2AD6
+94B9902804A4CD62B305AAF9B4ACA23EF265B5EB84232F56376A84A76F2FF2C4
+84E46F647939AC1106476D1E83CF2FEA39B87D195DBAB0F1C98DBC954CB6980C
+FCF5B7FC06549BD995C472E750F491249AE47739DB42D1EBAA2AE6BEFDBAE372
+705B93742B4FA456B8D0C7D63F9863103B16B19F3D5CC47377C4E94D4F8109DB
+F0E355F2D98E780271D70557EB0F1EF944D10167DF6E466B4875382B636C16C2
+AC4BBAB1CFA3C4601C72A2DD377AB270204B8BDFAF1CEACDF18E5C42892CB88D
+6BA7FB003CA711818ECAE6B8FB93579517891AFA92089C2CE572965AC7053BBC
+A0EB7240B9FEB003A08C208FE18AC411E78387C6C21F6FDAAC0FC5B081C5B07E
+699C9C1483BB9848E413920A0211E2E5A89E356995A2800532CF403751D3F54C
+CD474EECF8E3980D0B41C99A304433F3519A815A317596B7D0D368DD5A03A78E
+5A1D15E106A84C751193D9707D0CE8143ED04E2E5829CFE49A89E0C634C1AD8F
+19D5B11ABCB9841AD32044C39D4E2DD8700496F34E5476EE6770F4703CED7EC9
+C99065341E44BD0D9D19B55D2E75F430B78E6BAA2EEE9420EA24D39DCD73693A
+CA839DF1A05AF64E6848836B52F1ABEC52131BA1D77BA246E1A219D0C6F55DC1
+F3E21EF2B2A0873ACB96FF075205BB30DA74B71751CD767F3F8E4D4A9E7543D5
+EBCF7F1C9130A014E998BDAC79CD5C93E0B84B907AEE4951CAD20AE7DA937254
+10740C438AFAFE430F87C648D0CA5CD55F6CA21F36EC202FF396B51A4A648A40
+A7D105F17CFDCAC063B422A5D9DC773089D1CAA8B36A21B11AE00105BB6525F8
+31D7266D3039EE73E31ED78C5EBD3AA9B2AC37140970AE5B6842F26EB2721D0E
+53E18E8B2BEC52CC508CC84993B9EC0F394A394135755D054BA37CB40945E502
+79CE1F2ACDFBBC29806F9695ED29CF019C2CDB8F9FF772E0A0B2F113299D9D3F
+C06365FE40BE632FA26312EBCE60D33CF0386F6A524C9BB8EF2E7FDFCE8DA5D7
+896C0B003C059ECBA7736DF9110632B9B2657423184D4EEBFBD455A838FF4DC9
+EF2B242CC5C1C62C6336BEDE41EABB72908CB679037302E8A3E836C934ED0DA8
+909E119B186001829F782684C6B0F0E6A2F290C1FCB74AF03CD61BDFE8FBE94F
+E894709EDA71D465777F6B17139B035A561C3764656F15C5316EEE150ADFCA01
+95D458965C59CB64813E0E5A08DB1050275D553BB8F52B363A4BF91CAA44A1D2
+1EA7BD5529120A3CF1D8D189C952C866A3084355B45047791DF43314FF148E0D
+5577CD3C15217E1AEA66DCCF46FE7C14947FBEE3048DF50889225CB6348D3678
+F7210A8A080EF88F5D31ADA450C40C895150BD5C5108592183DAE9BC3CEF8939
+D7AF7B4341EB9488AE75085B825AF9127BED345178A58691BF3E16DDCCBCABF3
+D26D857A181432399F706D169D562C80AF65241FB92D64BC7A3CB9CC6D876D7C
+53815CD7FE1F5CEA17FC27FE5AEC9D33DCC70D637EC94AB119AD573C46E8276A
+E5F56374AAD5D7216210087F4CADF7B5D34BA3F7E921B1092A8FE11347A89739
+9D380FA3A3EB3BE5258B7F59F2562586146D7137FF0EC56F393842AA46667D7A
+894E88589DB6E33ADE78B8CC6013E2FFE2D15F2B87D807EEC2BE2B05F0EE334E
+A6FB2B6D8F0E4587299DAF5A01B71DFF45646B45A7717823B782D30871FF84F6
+8829BFD08F7C44772705332F1F261CDE9627AE0E53BFAAE08BAD8559DED83029
+3176DD08DF4E40B88AC062BC8ACAE56AFA143B191D91CE8E1B304FB213AB7C3F
+07F00484ED7EDB379BFD3A626CDAE3D83EA7E52F0404D06639668C6CD6A23863
+2A5F8C507BF618DB05A7E2D08162A5298B384D60663EDAA6E87516C26562BA95
+58F3C025D933D1306EF8C5DFA15AA1F97A52AB0FDA958F1F8161700FC581F318
+428CB6285C0B59072251939E0213C01ADBCE3366622899A6CDA1B6BABF274F77
+78809E048EA637EE22082230EF8DD2A2E90C6B5E90C1F0FA3B38E149825FCFFD
+401AB438C82DB79C4EA564331295C667E128BDACC55D490022782CF4833A47BC
+5834E3F736DBDD8A9342BF53EF84BFEEF0F5EE573E5368F2F9D5DB5D4D0A174D
+765B174D70260B834CAE08B6190D3BBBB53E01C51444C5727046AFC57BC2E6D1
+C542BA72C6C675B14CCDEBF94928DC50C667076A3E04D1E019590546E7D26E19
+EFA6CE0CC44DAB3945B9421EB2826052EE8707D2DC1A04E2681608E534EA5FFF
+06A484A0B21A5578CDDB9EA4B2F606FC7585747C85F844E03F9C6C7A2D79E8B9
+5259A7946FF6D6D88DD983ECF3D08186415A3996EAD371AA36CD087C83270D15
+AFE4D65F422C21DDDDE854C55953FD9218D935B6ED29EDC49E5296B7ADB7C115
+403CF963D9B6D597F6C29FFAB3D1F0F4B36B16A8A04A6F6E5E182D930A2DC3B6
+F691652A65DFB00CC49A3E441BBABC82B899B67B20ABEBF36D570D06B48FB331
+815581CB896255071E6EDDD148536D8D5261A652F9905CDB4F3B6285EA17F9F1
+44944BCFAE97A15140817DB6A930655FEA185971AEE555BBBFAA4DBA41D27D95
+0285FA4EA645370DFA63D2C8278F0385DA62AC7BFF12CA1547D0DED458B2F935
+3199A53D95D67F1ED7D9E7AFA174097B3DFC9D4F558C74A8411329F08B072506
+323722D71B4F4C07B42F172E437AC2A3E7F89101B05C9DDC0CB092F4E2FFF05A
+7ED9CA19357D1D7BB5B1387AA5588A568A9AE01D83E91C0D1DD859C6F2678E77
+2AE315578E4398F7AA27728B451454144013236CBCC78A8F93057533ACA9B345
+13C31D6132660767C863201D890D05231CD201B3C052636DE4419BEEB03C11E9
+9CEE31000F8B3E72A6F4DBD1FE20E1DF8261444C51580BD0B4BA2BFC4D180394
+9DA9B1376BA57F7A39FB1BB16DB4C15A905C4BD8BE4AFEB98E3AA89D0ECCDD87
+2B0C9CB6D0E83FA52A309026DE35BA53A5028CC244139CD8876FBA256E5E848D
+EEE41261BEDDF27B9DE802C27A3408CFA8CF17B8C71F209B72D761C08D28CF93
+D2D3E79011A4DBB588A932C948ABFEC52B94CBA82C4DEC450888A00249AFD9D8
+536EA342A8BF443D3A8C519377AD0826BC197C8755772A5CB647C68E3EEEDCB7
+99031BFE1D1DD46E4FA1271DA7A30AD3F136E6198048D16339B87792FDA722B4
+3EE869CD9DD366CA6B5AA133276BFE865D27867B1389C2EAF2A13E1099093A7D
+B62A1212111A3356AAAE4217A36B5D26683F713AA736F3A7EB6A3DCC7ED8A4D7
+7820595675DB87AE97440C1FA674CD91A33AB61996C41A0260F768BF6E8F7761
+708B550CF5020DE4AF57E42BD5500FD8AB93265106554B49B6611E2123FCB9A8
+3EA66C88A2C1F449F57C22EB87AB84AED7895DDC7C3BC29978D011C8D9A496E3
+1759FC31AE3C18F91AD026BA033BB14615C0CEC947B6692816D9B9A93AA6FD53
+576A8A961032E750AA8EDD729EEDCC6A7FEB6E7254DA9A37520B562A3D2515D0
+BB53374D0D85124006B220B251F57EA0987B649DE17D630446DE8F482EF7B63C
+53B3840E96600D9B87FA979F30D56AA7C3BC7776A90009A8310C2005C333AFBC
+3905E4DA712F7DEDC9F5379C8F7D6418D898B155A6E71EAE0C16747A2FD5212A
+6B5D1AEBC4D8F9ADAAFD67FA1DEC77157234B8FD5A942D2B63DF9B4E78C5C095
+CD124D9D78EAE62401694C3770B0C6A21099C1111A5A013F6A5542728A405C93
+28C360FD1FFEC0C3C9FBD510473C5DFE73294D8F7589B6E2B97AEFFE455F360D
+B5026DCFB11A859EDE149FF3F07BE96E21A48CCC83C2A9A74A17ABC7DC57A1BC
+8120F2C0E120D94399CA7FFFBC654547A9CD1C4F12145E04C021F0E0DA66F4B3
+D8B8EC2631682F8C46D782CC6EF02FAB4DA2C5BCDAA2095B269BF305D3AE069D
+C39FAD01D5240C62CF85A2F7B0BBD763E37E320638B8A4ED2C0796B70A8FD998
+4A6E7FE0334BB7C3CAE692AEF7224DC05A20A8CB4A3E24D958F156D2350BB8A3
+F17C00FD4ABBA030ECCB8AA2D208BA5A48F8FC724ABD49968FBECC6D4A88094B
+B718E24083D16C7C01D00D4B249978AEC55A43E46EF8CED7E75E4A4C72C6DF6A
+B53CB3F95744970EAF756AAF72ED007144662BF7DB7CB4EDE5ADEDCA476799F3
+B146AB46E0BEDACFD22FFBEBE3CD41727FFA7BD104E79187277AA1F94DE90E93
+B3603DD6416D97A35A46D037446B544E56635D8BFCCBA22989B56321FB77B61B
+11EBFBF2E308A5A182ED33F8C6B2E78B6EAB8B27B9489838217E4DABD34691AD
+820FFB2DC098B17F72F06D99265D8867F7D2F880633284B6C7DFE00FDDE8B93F
+E7BA56AB1F6CEACC6D7D6629D7E19DE3EC062124569FD9E3E0B60FD5DCD0FE43
+9613E684B4466426CF173230B151EF39A6DAAD235678C773E09FD48C3DE04BC0
+30B18AFBF3F68C82FC6AFE30EF03C2D347CBB686372E90ADF94E66BF2B6B7E35
+9D8025EAD27C03A6F6301FACA6EF1227A0123488E561095BCE115DB33484B02B
+26815CDF2C5E8F030654C01D60315BC62350956A507C825CFD8CBE6E51478CE6
+8BEBCD29F02A702818AEC596D4CC40F7393BCEEF495C4A34051D49521BAFCDA1
+643240DE6C5D199B53CD654F0E9F1E72E4C2F6AE3FF977E016E660EE56833CCC
+FAB22143D123A47B47BD08FCF30A11235930D8CF4AEC6D4A7E255EA453B4D787
+62E43ED93064161DD3634F518A68839766CC83474D02F578D18C1FA32D301025
+85EA306DFB50F4E7D3C877F9A130AA5664CC16381481D9DD487E5E705254723C
+C4385E42761A4154E1AC68EE13024CC4DF51B1DFE7D07BEA319C52860D7E9244
+3C3EDB23C3544E8184ECFEEAC5190B57CC6A83EBC1F0EF2BE1567D0CDFA5C8DD
+68713DF5AED019939D548CAA21466DCBE83879930BD16A905DFC7084C81B410B
+B83641DDC14512E7C1FD414CE17A88E67EFCBA3EDCDF4AF8D4DB4A8A6C9607B0
+98F5669AC0C1903EAB34BF4C71E6D3DF30750A5CDDDA4E03863E3BE6035335AB
+772701A72CF111502AF427398B9EDCC4ABD94A265D35965AB5E56FB90979DEC4
+0C960DC65CE025B010F3E90C62855D511AD55D04A03C9FE0DDBF0D5BC08CB736
+5D68E5620234B0D26D5806E8BE6E88BD34D025DBF5B7F15357887284B3CAD9CA
+B8DAD7605945CE530FF6ECEF633A1F15D0F945F9BE44EB0B7307077316A3AD66
+2D8E25EA9DC1B573727DC1135A8E4DF5CE8C6ED2FDB24C6EAAE07B9B115F9B3E
+4D9FFFD0D1DC09002A8766E61BEAD20DDD25BD0F7A10AFBCCDF24CE539639F1B
+E2EA756AE9D8799537688A776704F1FB574313866038A7AC22CBB046CDDBBB66
+208671FE7E36760314E7D4337BE462A74885D9FBA8D81FAB572FCED0F1C4F66D
+FE82274DD14AFBE2749B762D30A924AC99D7EB68F17453088D69FEC186DCCC77
+C3634B816892CB68EBEF6330E141ADF06AA815C6EE96637E36BAF889936D283A
+8D0E63F0F66932A695731AD10850B706A7139761CFF14D2A6B1C947FABB2CE57
+8D0919A576324F1ACA1C11222F9FE67AD1ED1AE0BC0E3CB70FBC35194BE86095
+A5F6B63716677D032E0E7829073881879D9A40FDAE802F40B659ECDD7122C443
+4DF24AC8B365C7292EA4B1BCE35F87B4C3987A46B0608BD319D0E8EEA22F43C5
+DDE03D31AF0C3F26B5BD32E8AEE451892912446AE5430740B6FA9F1B32B8CE8C
+F6F1886AB64D8EF92C4A6A1D8BD8E9EEB8691CBC1E793CA10A1348650B3C910D
+4B6745A895B08FD2ECFEBA8C3771087D21355DFC1431FF4E568D5CB48C3C4EBA
+B010949AF38455B90089CC0CA3F3EC7429768E39A5DA52008591A02C59FC1DCA
+3FF50F38F0A0B9A12F17B816E5CF710C086DEBD8B9D7D868C2CE970A4363D480
+D63151A76A712455098B83F791A64EB29C908DA96E5ACC939ED8811088A1A973
+8CF7E4CDC682BFB5AF460B32143790BF4881510B78A2ABD62C0A7EB994913FEE
+04D129C6A242317AC117B0BF0552408F09EF63176825ACE6DE192CA8295936A1
+8BEA4648ADB86F94AA16E2C4E6AD945A66300D101E39427396C1E275078A345C
+958E9432BCEBF401C8118914183BD3D77D13DD4A24AA9CCC9968F5DE8D856C1D
+494846021FDAF138EB86AAB21B945B8F738D6C0F15C5FD02F83DC0C2E403289F
+D992FE198633A0C0CA6F49BE7AEE25D8835DDFE37F166EE0323CA9B49F7F9EDC
+AC962DF4385B152436DCFEBA0F103EABF0200CFE86A07E89174A2309582402E5
+3A535016B82A17A0B358BEF03389B04585F3AFC73AC3F86BD9E936C983E87423
+142F95A298AAB0749DB0D5978ED4C19306A460BA40F2D05689FD6C7B7F8DB04A
+BE93F57D65D19C6516E4ADD856F4FA25403F3B62390180DCD09CCE15B39222D6
+EAB36BC9E63C4E5EA57E6948AA7B13FF4FDEBDA7D26650CB1C20E779EB137AC0
+13A59EDF118D54769227F708B70A82F3812CB709AFCE6FACB4069F0A5738B3FA
+5B0051F28F9F1EDB2433E3E78897ED907B002870F3E4F57395A79E6DAAF9841B
+14827D092A496B52092CD462006E1A634AE6C7BB3977F19D7A387C24EBEB6C29
+33F730ADA759AADEB9FA8BCE4B8E30B2931507F5B1B9CC0BC3F202CB8171340F
+F07D6F114680583E9BC446476A72E87F8FADCC54DB8D999B4D79A80A0EC1977C
+CA5739EC98DC1ECCCADE762C8BF462E429F0466ACB68F8192664DADA74A3E43D
+604D161A1745B2B2D2DE84A1EECC1E0A67D0FA223EEE5A2DCD4800D06BA2FFD1
+C6F7BD6C05473884F46BAF7A823BBE6F8C64EA370AAEBA9894CC45F5985B5C8F
+F64B1B44F0C13C25BEF57A5DFFF8D8BD23987772A9CB50D8E14220A6375006D6
+E12693D7D6B855F2621A3E15C1808331B63B13383208D1D07DC1EE0D224DD173
+C8C3AEF201305CC1754FA9CAF4AFF5C4FFF1EA0466F48E0A30111D6E116352D1
+402FFDDAC250A102E7404C068BAA5D34134C8F8261AFCBDE0C6FFC05FCACF2C4
+130655CFCCC4148F598361D310D0E6D952A799672F9B6D3A8CB05E1AAEAC0899
+3ED730ED5371E053980691D627022F99351FC218393C0984E51083C75FFD4930
+82EBD84792DBC26B451376AE054B7256AFD9B6B5286BF30610C3990AC80E54F9
+2E9DA216B222C0B687408F072FA391AB85B0177EF200CBF6A09E5D3CB0B189C3
+5315A9831D27E97D59675C8C76D3984801274601D6FEE500527D1FD2288FD24E
+0F7A06EF1B8C6240665FD2744C0FFBBC7FC992FCE455BCD42E3FF5D6BEA4FC41
+2894973342FDA4E7E71864130D68ED6E144B1C9534FEE86C7D6C7E592A1DBF25
+03D574E129F350252E322B08DAA1E8B4AEBCDDC1678F4A97262FE4CD226E0A98
+4B2D024B98FA99C8BF9339E6A11110B721CE5A01609A04B69A0561A1302E8F79
+5DBCCFBF43E4F3BCE516E4014959FCDA32D89E32D4C9315476D0136900301617
+604873174EEA02877363921C065A9F59BF1F4CD034C499B87FFFA200B3F6BB57
+30ACD75E38282B8826EF29D24A2202BDDAB93996F180AD5FC5F397D65B04F192
+BDB03EA3AB7A683DD44CBC9710706041C11470514125C84B5AC5D1DADA60B3FF
+88767EFCCF4C8E4A8779CCAB609018E415A9B47E2B55A0654764D856895FCBE9
+8473967D677909BB797DBC5BC2EB92A87CEA89FC28C835E00B246173A0BF19C0
+E28A0B96F67F804752E21368BD6DFF8B64B56B25AC2F0FCF978C5A033ECECE67
+714E8AD454F4FBFF39803FA10762BBBBF422740D31D37574E42757ECC92F86B0
+97FBDDC2CEAC5DE894E7CFDD884DD7C735D2D0E7B9915D7C886A24E583E060D0
+5F2C2A73F790D488E1AD8DBE882C5AA72535EC6135434819EBD061D970A46F74
+5D4511326272196D3F57B704F1730E7454632C8B51B2498C34F6AC4177F37F09
+CBF429B5AF483F5C73531ED3FF313E20C5C7F2
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
rf /Fd 134[32 32 1[32 34 24 24 25 1[34 31 34 51 17 32
1[17 34 31 19 28 34 27 34 30 7[46 4[43 34 46 3[48 58
37 48 1[23 48 1[39 40 1[44 44 46 8[31 31 31 31 31 31
-31 31 2[17 46[{}46 54.5455 /CMBX12 rf /Fe 133[20 24 24
-33 24 25 18 18 18 24 25 23 25 38 13 24 1[13 25 23 14
-20 25 20 25 23 9[47 1[34 33 25 33 1[31 35 34 1[28 35
-1[16 34 1[30 31 35 33 32 34 19[15 33[27 11[{}45 45.4545
-/CMSL10 rf /Ff 139[15 19 19 3[26 4[14 1[21 90[26 12[{}7
-45.4545 /CMTI10 rf /Fg 134[24 24 24 24 24 1[24 24 24
-1[24 24 1[24 24 24 24 1[24 24 24 24 1[24 24 1[24 2[24
-14[24 24 1[24 1[24 2[24 24 24 17[24 24 2[24 5[24 39[{}33
-45.4545 /CMSLTT10 rf /Fh 135[28 2[28 1[21 2[25 29 28
-4[14 1[29 24 25 1[27 1[28 97[{}12 45.4545 /CMCSC10 rf
-/Fi 197[13 58[{}1 45.4545 /CMMI10 rf /Fj 197[16 58[{}1
-59.7758 /CMMI12 rf /Fk 135[43 2[45 31 32 33 1[45 40 45
-67 22 2[22 1[40 25 37 45 36 45 39 11[62 56 5[63 1[48
-4[63 51 53 62 58 1[61 15[40 49[{}29 71.731 /CMBX12 rf
-/Fl 242[45 13[{}1 45.4545 /CMSY10 rf /Fm 134[35 35 49
-35 37 26 27 27 1[37 34 37 56 19 2[19 37 34 21 31 37 30
-37 33 9[69 1[52 1[37 50 3[53 64 40 2[25 53 53 42 44 52
-49 48 51 6[19 4[34 34 34 34 34 2[19 1[19 44[{}46 59.7758
-/CMBX12 rf /Fn 129[24 24 1[24 24 24 24 24 24 24 24 24
-24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24
-1[24 1[24 24 24 1[24 3[24 24 24 24 24 24 24 24 24 24
-24 1[24 24 24 24 24 24 24 24 24 24 24 24 24 24 1[24 1[24
-24 1[24 2[24 24 24 24 24 24 24 1[24 24 24 24 2[24 24
-24 24 33[{}78 45.4545 /CMTT10 rf /Fo 131[45 23 20 24
-24 33 24 25 18 18 18 24 25 23 25 38 13 24 14 13 25 23
-14 20 25 20 25 23 13 2[13 23 13 28 34 34 47 34 34 33
-25 33 35 31 35 34 42 28 35 23 16 34 36 30 31 35 33 32
-34 5[13 13 23 23 23 23 23 23 23 23 23 23 23 13 15 13
-2[18 18 13 4[23 20[25 25 27 11[{}81 45.4545 /CMR10 rf
-/Fp 134[51 4[38 38 40 3[54 1[27 2[27 2[30 44 54 43 54
-47 11[74 2[72 3[76 1[58 2[36 1[76 71[{}19 86.0772 /CMBX12
-rf end
+31 31 2[17 46[{}46 54.5455 /CMBX12 rf /Fe 137[21 1[15
+19 19 2[23 26 4[14 1[21 1[21 1[21 1[23 84[26 12[{}12
+45.4545 /CMTI10 rf /Ff 133[20 24 24 33 24 25 18 18 18
+24 25 23 25 38 13 24 1[13 25 23 14 20 25 20 25 23 9[47
+1[34 33 25 33 1[31 35 34 1[28 35 1[16 34 1[30 31 35 33
+32 34 19[15 32[25 27 11[{}46 45.4545 /CMSL10 rf /Fg 134[24
+24 24 24 24 1[24 24 24 1[24 24 1[24 24 24 24 1[24 24
+24 24 1[24 24 1[24 2[24 8[24 5[24 24 1[24 1[24 2[24 24
+24 17[24 24 2[24 5[24 39[{}34 45.4545 /CMSLTT10 rf /Fh
+135[28 2[28 1[21 2[25 29 28 4[14 1[29 24 25 1[27 1[28
+97[{}12 45.4545 /CMCSC10 rf /Fi 197[13 58[{}1 45.4545
+/CMMI10 rf /Fj 197[16 58[{}1 59.7758 /CMMI12 rf /Fk 135[43
+2[45 31 32 33 1[45 40 45 67 22 2[22 1[40 25 37 45 36
+45 39 11[62 56 5[63 1[48 4[63 51 53 62 58 1[61 15[40
+49[{}29 71.731 /CMBX12 rf /Fl 242[45 13[{}1 45.4545 /CMSY10
+rf /Fm 134[35 35 49 35 37 26 27 27 1[37 34 37 56 19 2[19
+37 34 21 31 37 30 37 33 9[69 1[52 1[37 50 3[53 64 40
+2[25 53 53 42 44 52 49 48 51 6[19 2[34 1[34 34 34 34
+34 2[19 1[19 44[{}47 59.7758 /CMBX12 rf /Fn 129[24 24
+1[24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24
+24 24 24 24 24 24 24 24 24 24 1[24 1[24 24 24 1[24 2[24
+24 24 24 24 24 24 24 24 24 24 24 1[24 24 24 24 24 24
+24 24 24 24 24 24 24 24 24 24 1[24 24 24 24 1[24 24 24
+24 24 24 24 24 1[24 24 24 24 2[24 24 24 24 33[{}82 45.4545
+/CMTT10 rf /Fo 131[45 23 20 24 24 33 24 25 18 18 18 24
+25 23 25 38 13 24 14 13 25 23 14 20 25 20 25 23 13 2[13
+23 13 28 34 34 47 34 34 33 25 33 35 31 35 34 42 28 35
+23 16 34 36 30 31 35 33 32 34 5[13 13 23 23 23 23 23
+23 23 23 23 23 23 13 15 13 2[18 18 13 4[23 19[38 25 25
+27 11[{}82 45.4545 /CMR10 rf /Fp 134[51 4[38 38 40 3[54
+1[27 2[27 2[30 44 54 43 54 47 11[74 2[72 3[76 1[58 2[36
+1[76 71[{}19 86.0772 /CMBX12 rf end
%%EndProlog
%%BeginSetup
%%Feature: *Resolution 300dpi
%%Page: 1 1
TeXDict begin 1 0 bop 75 659 a Fp(GNU)33 b(Readline)f(Library)f(User)i
(In)m(terface)p 75 709 1800 17 v 936 757 a Fo(Edition)15
-b(7.0,)e(for)i Fn(Readline)f(Library)g Fo(V)l(ersion)h(7.0.)1572
-811 y(Decem)o(b)q(er)h(2017)75 2463 y Fm(Chet)22 b(Ramey)-6
+b(8.3,)e(for)i Fn(Readline)f(Library)g Fo(V)l(ersion)h(8.3.)1608
+811 y(Octob)q(er)h(2024)75 2463 y Fm(Chet)22 b(Ramey)-6
b(,)23 b(Case)e(W)-6 b(estern)23 b(Reserv)n(e)f(Univ)n(ersit)n(y)75
2534 y(Brian)g(F)-6 b(o)n(x,)23 b(F)-6 b(ree)23 b(Soft)n(w)n(are)f(F)-6
b(oundation)p 75 2570 1800 9 v eop end
%%Page: 2 2
-TeXDict begin 2 1 bop 75 2207 a Fo(This)14 b(man)o(ual)g(describ)q(es)i
-(the)e(end)i(user)f(in)o(terface)f(of)g(the)h(GNU)f(Readline)h(Library)
-f(\(v)o(ersion)g(7.0,)g(28)75 2262 y(Decem)o(b)q(er)20
-b(2017\),)e(a)h(library)f(whic)o(h)h(aids)g(in)g(the)g(consistency)g
-(of)g(user)g(in)o(terface)g(across)f(discrete)75 2316
-y(programs)c(whic)o(h)h(pro)o(vide)g(a)g(command)g(line)g(in)o
-(terface.)75 2384 y(Cop)o(yrigh)o(t)301 2383 y(c)289
-2384 y Fl(\015)g Fo(1988{2016)e(F)l(ree)i(Soft)o(w)o(are)f(F)l
-(oundation,)g(Inc.)195 2451 y(P)o(ermission)9 b(is)h(gran)o(ted)f(to)h
-(cop)o(y)l(,)h(distribute)e(and/or)h(mo)q(dify)g(this)f(do)q(cumen)o(t)
-i(under)g(the)195 2506 y(terms)h(of)g(the)h(GNU)g(F)l(ree)f(Do)q(cumen)
-o(tation)g(License,)h(V)l(ersion)g(1.3)f(or)g(an)o(y)g(later)g(v)o
-(ersion)195 2560 y(published)23 b(b)o(y)f(the)h(F)l(ree)f(Soft)o(w)o
-(are)f(F)l(oundation;)k(with)c(no)i(In)o(v)m(arian)o(t)e(Sections,)j
-(no)195 2615 y(F)l(ron)o(t-Co)o(v)o(er)13 b(T)l(exts,)h(and)g(no)h(Bac)
-o(k-Co)o(v)o(er)e(T)l(exts.)20 b(A)14 b(cop)o(y)g(of)g(the)h(license)f
-(is)g(included)195 2670 y(in)h(the)g(section)g(en)o(titled)f(\\GNU)h(F)
-l(ree)g(Do)q(cumen)o(tation)g(License".)p eop end
+TeXDict begin 2 1 bop 75 2207 a Fo(This)19 b(man)o(ual)f(describ)q(es)i
+(the)g(end)g(user)f(in)o(terface)g(of)g(the)g(GNU)g(Readline)h(Library)
+f(\(v)o(ersion)f(8.3,)75 2262 y(10)f(Octob)q(er)g(2024\),)f(a)h
+(library)f(whic)o(h)h(aids)g(in)g(the)g(consistency)g(of)g(user)g(in)o
+(terface)g(across)f(discrete)75 2316 y(programs)e(whic)o(h)h(pro)o
+(vide)g(a)g(command)g(line)g(in)o(terface.)75 2384 y(Cop)o(yrigh)o(t)
+301 2383 y(c)289 2384 y Fl(\015)g Fo(1988{2024)e(F)l(ree)i(Soft)o(w)o
+(are)f(F)l(oundation,)g(Inc.)195 2451 y(P)o(ermission)9
+b(is)h(gran)o(ted)f(to)h(cop)o(y)l(,)h(distribute)e(and/or)h(mo)q(dify)
+g(this)f(do)q(cumen)o(t)i(under)g(the)195 2506 y(terms)h(of)g(the)h
+(GNU)g(F)l(ree)f(Do)q(cumen)o(tation)g(License,)h(V)l(ersion)g(1.3)f
+(or)g(an)o(y)g(later)g(v)o(ersion)195 2560 y(published)23
+b(b)o(y)f(the)h(F)l(ree)f(Soft)o(w)o(are)f(F)l(oundation;)k(with)c(no)i
+(In)o(v)m(arian)o(t)e(Sections,)j(no)195 2615 y(F)l(ron)o(t-Co)o(v)o
+(er)13 b(T)l(exts,)h(and)g(no)h(Bac)o(k-Co)o(v)o(er)e(T)l(exts.)20
+b(A)14 b(cop)o(y)g(of)g(the)h(license)f(is)g(included)195
+2670 y(in)h(the)g(section)g(en)o(titled)f(\\GNU)h(F)l(ree)g(Do)q(cumen)
+o(tation)g(License".)p eop end
%%Page: -1 3
TeXDict begin -1 2 bop 1862 -58 a Fo(i)75 149 y Fk(T)-7
b(able)28 b(of)e(Con)n(ten)n(ts)75 325 y Fm(1)67 b(Command)22
b Fo(1)200 503 y(1.2.1)43 b(Readline)16 b(Bare)f(Essen)o(tials)9
b Fi(:)d(:)h(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)
g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)15 b Fo(1)200 557 y(1.2.2)43 b(Readline)16 b(Mo)o(v)o(emen)o(t)e
+(:)15 b Fo(2)200 557 y(1.2.2)43 b(Readline)16 b(Mo)o(v)o(emen)o(t)e
(Commands)9 b Fi(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)15
b Fo(2)200 612 y(1.2.3)43 b(Readline)16 b(Killing)e(Commands)5
b Fi(:)h(:)i(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)k
-Fo(2)200 667 y(1.2.4)43 b(Readline)16 b(Argumen)o(ts)11
+Fo(3)200 667 y(1.2.4)43 b(Readline)16 b(Argumen)o(ts)11
b Fi(:)c(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)
g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)17 b Fo(3)200 722 y(1.2.5)43 b(Searc)o(hing)15
b Fo(4)200 886 y(1.3.2)43 b(Conditional)14 b(Init)h(Constructs)8
b Fi(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)
f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)15
-b Fo(12)200 941 y(1.3.3)43 b(Sample)16 b(Init)f(File)c
+b Fo(14)200 941 y(1.3.3)43 b(Sample)16 b(Init)f(File)c
Fi(:)6 b(:)h(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)18 b Fo(13)137 996 y(1.4)45
+(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)18 b Fo(15)137 996 y(1.4)45
b(Bindable)15 b(Readline)h(Commands)11 b Fi(:)6 b(:)h(:)h(:)f(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)17 b Fo(16)200 1051
+g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)17 b Fo(18)200 1051
y(1.4.1)43 b(Commands)15 b(F)l(or)g(Mo)o(ving)9 b Fi(:)d(:)h(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)16
-b Fo(16)200 1105 y(1.4.2)43 b(Commands)15 b(F)l(or)g(Manipulating)e
+b Fo(18)200 1105 y(1.4.2)43 b(Commands)15 b(F)l(or)g(Manipulating)e
(The)j(History)c Fi(:)c(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)h(:)20 b Fo(17)200 1160 y(1.4.3)43 b(Commands)15
+(:)g(:)h(:)20 b Fo(19)200 1160 y(1.4.3)43 b(Commands)15
b(F)l(or)g(Changing)f(T)l(ext)6 b Fi(:)h(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)
f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)h(:)k Fo(18)200 1215 y(1.4.4)43 b(Killing)14 b(And)i(Y)l(anking)7
+(:)h(:)k Fo(21)200 1215 y(1.4.4)43 b(Killing)14 b(And)i(Y)l(anking)7
b Fi(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)
g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)h(:)f(:)g(:)13 b Fo(19)200 1270 y(1.4.5)43 b(Sp)q(ecifying)16
+(:)h(:)f(:)g(:)13 b Fo(22)200 1270 y(1.4.5)43 b(Sp)q(ecifying)16
b(Numeric)f(Argumen)o(ts)e Fi(:)8 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)20
-b Fo(20)200 1325 y(1.4.6)43 b(Letting)15 b(Readline)h(T)o(yp)q(e)f(F)l
+b Fo(23)200 1325 y(1.4.6)43 b(Letting)15 b(Readline)h(T)o(yp)q(e)f(F)l
(or)g(Y)l(ou)c Fi(:)c(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)18
-b Fo(21)200 1379 y(1.4.7)43 b(Keyb)q(oard)16 b(Macros)6
+b Fo(23)200 1379 y(1.4.7)43 b(Keyb)q(oard)16 b(Macros)6
b Fi(:)g(:)h(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)h(:)f(:)12 b Fo(21)200 1434 y(1.4.8)43
+(:)f(:)g(:)g(:)g(:)h(:)f(:)12 b Fo(24)200 1434 y(1.4.8)43
b(Some)16 b(Miscellaneous)e(Commands)8 b Fi(:)e(:)i(:)f(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)h(:)14 b Fo(22)137 1489 y(1.5)45 b(Readline)15 b(vi)g(Mo)q(de)5
+g(:)h(:)14 b Fo(24)137 1489 y(1.5)45 b(Readline)15 b(vi)g(Mo)q(de)5
b Fi(:)j(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)
f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)12 b Fo(23)75
+(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)12 b Fo(26)75
1614 y Fm(App)r(endix)23 b(A)60 b(GNU)18 b(F)-6 b(ree)20
-b(Do)r(cumen)n(tation)e(License)12 b Fj(:)e(:)17 b Fm(24)p
+b(Do)r(cumen)n(tation)e(License)12 b Fj(:)e(:)17 b Fm(27)p
eop end
%%Page: 1 4
TeXDict begin 1 3 bop 1852 -58 a Fo(1)75 149 y Fk(1)41
-b(Command)28 b(Line)f(Editing)75 264 y Fo(This)15 b(c)o(hapter)g
+b(Command)28 b(Line)f(Editing)75 299 y Fo(This)15 b(c)o(hapter)g
(describ)q(es)h(the)f(basic)g(features)g(of)f(the)i Fh(gnu)f
-Fo(command)g(line)g(editing)f(in)o(terface.)75 383 y
+Fo(command)g(line)g(editing)f(in)o(terface.)75 435 y
Fm(1.1)33 b(In)n(tro)r(duction)23 b(to)f(Line)h(Editing)75
-463 y Fo(The)15 b(follo)o(wing)e(paragraphs)i(describ)q(e)h(the)f
+515 y Fo(The)15 b(follo)o(wing)e(paragraphs)i(describ)q(e)h(the)f
(notation)f(used)h(to)g(represen)o(t)g(k)o(eystrok)o(es.)137
-529 y(The)k(text)e Fg(C-k)h Fo(is)f(read)i(as)e(`Con)o(trol-K')f(and)j
+593 y(The)k(text)e Fg(C-k)h Fo(is)f(read)i(as)e(`Con)o(trol-K')f(and)j
(describ)q(es)f(the)h(c)o(haracter)e(pro)q(duced)i(when)g(the)f
-Fn(k)75 584 y Fo(k)o(ey)d(is)g(pressed)h(while)e(the)h(Con)o(trol)f(k)o
-(ey)h(is)g(depressed.)137 651 y(The)h(text)g Fg(M-k)f
+Fn(k)75 648 y Fo(k)o(ey)d(is)g(pressed)h(while)e(the)h(Con)o(trol)f(k)o
+(ey)h(is)g(depressed.)137 726 y(The)h(text)g Fg(M-k)f
Fo(is)h(read)g(as)f(`Meta-K')g(and)h(describ)q(es)h(the)f(c)o(haracter)
-f(pro)q(duced)i(when)g(the)f(Meta)75 705 y(k)o(ey)g(\(if)g(y)o(ou)g(ha)
-o(v)o(e)g(one\))h(is)f(depressed,)h(and)g(the)g Fn(k)f
-Fo(k)o(ey)g(is)g(pressed.)25 b(The)17 b(Meta)e(k)o(ey)i(is)f(lab)q
-(eled)g Fn(ALT)75 760 y Fo(on)f(man)o(y)f(k)o(eyb)q(oards.)20
-b(On)15 b(k)o(eyb)q(oards)g(with)f(t)o(w)o(o)f(k)o(eys)i(lab)q(eled)g
-Fn(ALT)f Fo(\(usually)g(to)g(either)h(side)f(of)h(the)75
-815 y(space)g(bar\),)f(the)h Fn(ALT)g Fo(on)g(the)g(left)f(side)h(is)g
-(generally)f(set)h(to)f(w)o(ork)g(as)h(a)f(Meta)g(k)o(ey)l(.)20
-b(The)c Fn(ALT)e Fo(k)o(ey)h(on)75 870 y(the)f(righ)o(t)e(ma)o(y)h
-(also)g(b)q(e)h(con\014gured)g(to)f(w)o(ork)g(as)g(a)g(Meta)g(k)o(ey)g
-(or)g(ma)o(y)g(b)q(e)i(con\014gured)f(as)f(some)g(other)75
-925 y(mo)q(di\014er,)i(suc)o(h)g(as)g(a)g(Comp)q(ose)g(k)o(ey)g(for)g
-(t)o(yping)f(accen)o(ted)i(c)o(haracters.)137 991 y(If)d(y)o(ou)f(do)g
-(not)g(ha)o(v)o(e)f(a)h(Meta)g(or)f Fn(ALT)h Fo(k)o(ey)l(,)h(or)e
-(another)h(k)o(ey)g(w)o(orking)f(as)h(a)g(Meta)f(k)o(ey)l(,)i(the)f
-(iden)o(tical)75 1046 y(k)o(eystrok)o(e)h(can)i(b)q(e)f(generated)h(b)o
-(y)f(t)o(yping)f Fn(ESC)h Ff(\014rst)p Fo(,)f(and)i(then)f(t)o(yping)g
-Fn(k)p Fo(.)19 b(Either)14 b(pro)q(cess)g(is)g(kno)o(wn)75
-1101 y(as)h Fe(metafying)j Fo(the)d Fn(k)g Fo(k)o(ey)l(.)137
-1168 y(The)21 b(text)e Fg(M-C-k)h Fo(is)g(read)g(as)f(`Meta-Con)o
-(trol-k')f(and)i(describ)q(es)h(the)f(c)o(haracter)g(pro)q(duced)h(b)o
-(y)75 1222 y Fe(metafying)d Fg(C-k)p Fo(.)137 1289 y(In)h(addition,)e
-(sev)o(eral)h(k)o(eys)f(ha)o(v)o(e)h(their)g(o)o(wn)f(names.)28
-b(Sp)q(eci\014cally)l(,)19 b Fn(DEL)p Fo(,)f Fn(ESC)p
-Fo(,)g Fn(LFD)p Fo(,)g Fn(SPC)p Fo(,)g Fn(RET)p Fo(,)75
-1344 y(and)f Fn(TAB)g Fo(all)f(stand)h(for)g(themselv)o(es)g(when)h
-(seen)f(in)g(this)g(text,)g(or)g(in)g(an)g(init)f(\014le)i(\(see)f
-(Section)g(1.3)75 1399 y([Readline)e(Init)g(File],)e(page)h(4\).)20
-b(If)15 b(y)o(our)f(k)o(eyb)q(oard)h(lac)o(ks)f(a)g Fn(LFD)h
-Fo(k)o(ey)l(,)f(t)o(yping)g Fn(C-j)h Fo(will)e(pro)q(duce)j(the)75
-1453 y(desired)f(c)o(haracter.)20 b(The)15 b Fn(RET)g
+f(pro)q(duced)i(when)g(the)f(Meta)75 780 y(k)o(ey)f(\(if)g(y)o(ou)h(ha)
+o(v)o(e)f(one\))g(is)g(depressed,)i(and)f(the)f Fn(k)h
+Fo(k)o(ey)f(is)g(pressed)h(\(a)f Ff(meta)g(c)o(haracter)s
+Fo(\).)21 b(The)16 b(Meta)75 835 y(k)o(ey)h(is)g(lab)q(eled)g
+Fn(ALT)f Fo(on)h(man)o(y)g(k)o(eyb)q(oards.)25 b(On)18
+b(k)o(eyb)q(oards)f(with)f(t)o(w)o(o)g(k)o(eys)h(lab)q(eled)g
+Fn(ALT)g Fo(\(usually)75 890 y(to)e(either)h(side)f(of)h(the)g(space)g
+(bar\),)f(the)g Fn(ALT)h Fo(on)f(the)h(left)f(side)h(is)g(generally)e
+(set)i(to)f(w)o(ork)g(as)g(a)h(Meta)75 945 y(k)o(ey)l(.)28
+b(The)18 b Fn(ALT)g Fo(k)o(ey)g(on)g(the)g(righ)o(t)f(ma)o(y)g(also)g
+(b)q(e)h(con\014gured)h(to)e(w)o(ork)g(as)h(a)g(Meta)f(k)o(ey)h(or)f
+(ma)o(y)g(b)q(e)75 1000 y(con\014gured)f(as)f(some)g(other)f(mo)q
+(di\014er,)h(suc)o(h)h(as)e(a)h(Comp)q(ose)g(k)o(ey)g(for)g(t)o(yping)f
+(accen)o(ted)i(c)o(haracters.)137 1078 y(On)j(some)f(k)o(eyb)q(oards,)h
+(the)f(Meta)g(k)o(ey)g(mo)q(di\014er)h(pro)q(duces)g(meta)f(c)o
+(haracters)f(with)h(the)h(eigh)o(th)75 1132 y(bit)13
+b(\(0200\))e(set.)19 b(Y)l(ou)13 b(can)g(use)h(the)f
+Fn(enable-meta-key)e Fo(v)m(ariable)h(to)h(con)o(trol)f(whether)h(or)g
+(not)f(it)h(do)q(es)75 1187 y(this,)g(if)g(the)h(k)o(eyb)q(oard)g(allo)
+o(ws)e(it.)19 b(On)14 b(man)o(y)g(others,)f(the)h(terminal)e(or)i
+(terminal)e(em)o(ulator)h(con)o(v)o(erts)75 1242 y(the)h(meta\014ed)h
+(k)o(ey)f(to)g(a)g(k)o(ey)g(sequence)i(b)q(eginning)e(with)g
+Fn(ESC)g Fo(as)g(describ)q(ed)h(in)f(the)h(next)f(paragraph.)137
+1320 y(If)k(y)o(ou)e(do)h(not)g(ha)o(v)o(e)g(a)f(Meta)h(or)f
+Fn(ALT)h Fo(k)o(ey)l(,)g(or)g(another)f(k)o(ey)h(w)o(orking)f(as)h(a)g
+(Meta)f(k)o(ey)l(,)h(y)o(ou)g(can)75 1375 y(generally)c(ac)o(hiev)o(e)g
+(the)g(latter)f(e\013ect)i(b)o(y)f(t)o(yping)g Fn(ESC)g
+Fe(\014rst)p Fo(,)g(and)g(then)h(t)o(yping)f Fn(k)p Fo(.)19
+b(The)14 b Fn(ESC)f Fo(c)o(haracter)75 1430 y(is)i(kno)o(wn)g(as)f(the)
+i Ff(meta)e(pre\014x)s Fo(\).)137 1508 y(Either)h(pro)q(cess)g(is)g
+(kno)o(wn)g(as)g Ff(metafying)j Fo(the)d Fn(k)g Fo(k)o(ey)l(.)137
+1586 y(If)e(y)o(our)f(Meta)g(k)o(ey)h(pro)q(duces)g(a)g(k)o(ey)f
+(sequence)i(with)e(the)h Fn(ESC)f Fo(meta)g(pre\014x,)h(y)o(ou)g(can)g
+(mak)o(e)f Fg(M-key)75 1640 y Fo(k)o(ey)20 b(bindings)f(y)o(ou)h(sp)q
+(ecify)g(\(see)f Fn(Key)c(Bindings)k Fo(in)g(Section)h(1.3.1)e
+([Readline)i(Init)f(File)g(Syn)o(tax],)75 1695 y(page)c(4\))g(do)g(the)
+g(same)g(thing)g(b)o(y)g(setting)f(the)h Fn(force-meta-prefix)e
+Fo(v)m(ariable.)137 1773 y(The)21 b(text)e Fg(M-C-k)h
+Fo(is)g(read)g(as)f(`Meta-Con)o(trol-k')f(and)i(describ)q(es)h(the)f(c)
+o(haracter)g(pro)q(duced)h(b)o(y)75 1828 y(metafying)14
+b Fg(C-k)p Fo(.)137 1906 y(In)19 b(addition,)e(sev)o(eral)h(k)o(eys)f
+(ha)o(v)o(e)h(their)g(o)o(wn)f(names.)28 b(Sp)q(eci\014cally)l(,)19
+b Fn(DEL)p Fo(,)f Fn(ESC)p Fo(,)g Fn(LFD)p Fo(,)g Fn(SPC)p
+Fo(,)g Fn(RET)p Fo(,)75 1961 y(and)f Fn(TAB)g Fo(all)f(stand)h(for)g
+(themselv)o(es)g(when)h(seen)f(in)g(this)g(text,)g(or)g(in)g(an)g(init)
+f(\014le)i(\(see)f(Section)g(1.3)75 2015 y([Readline)f(Init)g(File],)f
+(page)h(4\).)22 b(If)17 b(y)o(our)f(k)o(eyb)q(oard)g(lac)o(ks)f(a)h
+Fn(LFD)g Fo(k)o(ey)l(,)g(t)o(yping)f Fn(C-j)h Fo(will)f(output)h(the)75
+2070 y(appropriate)e(c)o(haracter.)19 b(The)d Fn(RET)f
Fo(k)o(ey)g(ma)o(y)f(b)q(e)i(lab)q(eled)f Fn(Return)g
Fo(or)f Fn(Enter)h Fo(on)g(some)g(k)o(eyb)q(oards.)75
-1573 y Fm(1.2)33 b(Readline)21 b(In)n(teraction)75 1652
+2207 y Fm(1.2)33 b(Readline)21 b(In)n(teraction)75 2286
y Fo(Often)c(during)f(an)g(in)o(teractiv)o(e)f(session)g(y)o(ou)h(t)o
(yp)q(e)h(in)f(a)g(long)f(line)h(of)g(text,)g(only)g(to)f(notice)h
-(that)g(the)75 1707 y(\014rst)g(w)o(ord)f(on)h(the)h(line)f(is)f(missp)
+(that)g(the)75 2341 y(\014rst)g(w)o(ord)f(on)h(the)h(line)f(is)f(missp)
q(elled.)23 b(The)16 b(Readline)h(library)e(giv)o(es)g(y)o(ou)h(a)g
-(set)g(of)g(commands)g(for)75 1762 y(manipulating)d(the)i(text)g(as)f
+(set)g(of)g(commands)g(for)75 2396 y(manipulating)d(the)i(text)g(as)f
(y)o(ou)h(t)o(yp)q(e)g(it)f(in,)g(allo)o(wing)f(y)o(ou)i(to)f(just)h
(\014x)g(y)o(our)f(t)o(yp)q(o,)g(and)h(not)g(forcing)75
-1817 y(y)o(ou)f(to)f(ret)o(yp)q(e)h(the)g(ma)s(jorit)o(y)e(of)i(the)g
+2451 y(y)o(ou)f(to)f(ret)o(yp)q(e)h(the)g(ma)s(jorit)o(y)e(of)i(the)g
(line.)19 b(Using)14 b(these)g(editing)f(commands,)h(y)o(ou)g(mo)o(v)o
-(e)f(the)h(cursor)75 1872 y(to)i(the)i(place)f(that)f(needs)i
+(e)f(the)h(cursor)75 2506 y(to)i(the)i(place)f(that)f(needs)i
(correction,)f(and)g(delete)g(or)g(insert)f(the)i(text)e(of)h(the)g
-(corrections.)25 b(Then,)75 1926 y(when)13 b(y)o(ou)f(are)g
+(corrections.)25 b(Then,)75 2560 y(when)13 b(y)o(ou)f(are)g
(satis\014ed)g(with)g(the)h(line,)f(y)o(ou)g(simply)g(press)g
Fn(RET)p Fo(.)19 b(Y)l(ou)12 b(do)h(not)f(ha)o(v)o(e)g(to)g(b)q(e)h(at)
-f(the)g(end)75 1981 y(of)k(the)h(line)f(to)g(press)h
+f(the)g(end)75 2615 y(of)k(the)h(line)f(to)g(press)h
Fn(RET)p Fo(;)g(the)f(en)o(tire)g(line)h(is)f(accepted)h(regardless)f
-(of)g(the)h(lo)q(cation)e(of)i(the)f(cursor)75 2036 y(within)e(the)i
-(line.)75 2134 y Fd(1.2.1)30 b(Readline)20 b(Bare)g(Essen)n(tials)75
-2208 y Fo(In)d(order)e(to)h(en)o(ter)g(c)o(haracters)f(in)o(to)g(the)h
-(line,)g(simply)f(t)o(yp)q(e)h(them.)23 b(The)16 b(t)o(yp)q(ed)g(c)o
-(haracter)g(app)q(ears)75 2263 y(where)g(the)h(cursor)f(w)o(as,)f(and)h
-(then)h(the)f(cursor)g(mo)o(v)o(es)g(one)g(space)g(to)g(the)g(righ)o
-(t.)22 b(If)17 b(y)o(ou)f(mist)o(yp)q(e)f(a)75 2317 y(c)o(haracter,)f
-(y)o(ou)h(can)g(use)h(y)o(our)f(erase)g(c)o(haracter)f(to)h(bac)o(k)g
-(up)g(and)h(delete)f(the)g(mist)o(yp)q(ed)g(c)o(haracter.)137
-2384 y(Sometimes)g(y)o(ou)g(ma)o(y)g(mist)o(yp)q(e)g(a)g(c)o(haracter,)
-f(and)i(not)f(notice)g(the)g(error)g(un)o(til)g(y)o(ou)g(ha)o(v)o(e)g
-(t)o(yp)q(ed)75 2439 y(sev)o(eral)f(other)g(c)o(haracters.)19
+(of)g(the)h(lo)q(cation)e(of)i(the)f(cursor)75 2670 y(within)e(the)i
+(line.)p eop end
+%%Page: 2 5
+TeXDict begin 2 4 bop 75 -58 a Fo(Chapter)15 b(1:)k(Command)c(Line)h
+(Editing)1075 b(2)75 149 y Fd(1.2.1)30 b(Readline)20
+b(Bare)g(Essen)n(tials)75 223 y Fo(In)d(order)e(to)h(en)o(ter)g(c)o
+(haracters)f(in)o(to)g(the)h(line,)g(simply)f(t)o(yp)q(e)h(them.)23
+b(The)16 b(t)o(yp)q(ed)g(c)o(haracter)g(app)q(ears)75
+278 y(where)g(the)h(cursor)f(w)o(as,)f(and)h(then)h(the)f(cursor)g(mo)o
+(v)o(es)g(one)g(space)g(to)g(the)g(righ)o(t.)22 b(If)17
+b(y)o(ou)f(mist)o(yp)q(e)f(a)75 333 y(c)o(haracter,)f(y)o(ou)h(can)g
+(use)h(y)o(our)f(erase)g(c)o(haracter)f(to)h(bac)o(k)g(up)g(and)h
+(delete)f(the)g(mist)o(yp)q(ed)g(c)o(haracter.)137 406
+y(Sometimes)g(y)o(ou)g(ma)o(y)g(mist)o(yp)q(e)g(a)g(c)o(haracter,)f
+(and)i(not)f(notice)g(the)g(error)g(un)o(til)g(y)o(ou)g(ha)o(v)o(e)g(t)
+o(yp)q(ed)75 461 y(sev)o(eral)f(other)g(c)o(haracters.)19
b(In)c(that)e(case,)i(y)o(ou)f(can)g(t)o(yp)q(e)h Fg(C-b)f
Fo(to)g(mo)o(v)o(e)f(the)i(cursor)f(to)g(the)g(left,)g(and)75
-2494 y(then)i(correct)e(y)o(our)h(mistak)o(e.)k(Afterw)o(ards,)13
+516 y(then)i(correct)e(y)o(our)h(mistak)o(e.)k(Afterw)o(ards,)13
b(y)o(ou)i(can)g(mo)o(v)o(e)g(the)g(cursor)g(to)g(the)g(righ)o(t)f
-(with)g Fg(C-f)p Fo(.)137 2560 y(When)j(y)o(ou)f(add)g(text)g(in)g(the)
-h(middle)f(of)g(a)f(line,)h(y)o(ou)g(will)f(notice)h(that)g(c)o
-(haracters)f(to)h(the)g(righ)o(t)75 2615 y(of)e(the)g(cursor)g(are)g
+(with)g Fg(C-f)p Fo(.)137 590 y(When)j(y)o(ou)f(add)g(text)g(in)g(the)h
+(middle)f(of)g(a)f(line,)h(y)o(ou)g(will)f(notice)h(that)g(c)o
+(haracters)f(to)h(the)g(righ)o(t)75 644 y(of)e(the)g(cursor)g(are)g
(`pushed)h(o)o(v)o(er')f(to)f(mak)o(e)h(ro)q(om)g(for)f(the)i(text)f
(that)f(y)o(ou)h(ha)o(v)o(e)g(inserted.)20 b(Lik)o(ewise,)75
-2670 y(when)f(y)o(ou)g(delete)g(text)f(b)q(ehind)i(the)f(cursor,)g(c)o
-(haracters)f(to)g(the)h(righ)o(t)e(of)h(the)h(cursor)g(are)f(`pulled)p
-eop end
-%%Page: 2 5
-TeXDict begin 2 4 bop 75 -58 a Fo(Chapter)15 b(1:)k(Command)c(Line)h
-(Editing)1075 b(2)75 149 y(bac)o(k')11 b(to)g(\014ll)f(in)i(the)f
-(blank)g(space)h(created)f(b)o(y)h(the)f(remo)o(v)m(al)f(of)h(the)h
-(text.)18 b(A)11 b(list)f(of)h(the)h(bare)f(essen)o(tials)75
-204 y(for)k(editing)f(the)h(text)g(of)g(an)g(input)g(line)g(follo)o
-(ws.)75 285 y Fg(C-b)168 b Fo(Mo)o(v)o(e)14 b(bac)o(k)h(one)h(c)o
-(haracter.)75 366 y Fg(C-f)168 b Fo(Mo)o(v)o(e)14 b(forw)o(ard)g(one)h
-(c)o(haracter.)75 447 y Fn(DEL)g Fo(or)f Fn(Backspace)315
-501 y Fo(Delete)h(the)g(c)o(haracter)g(to)f(the)h(left)g(of)g(the)g
-(cursor.)75 582 y Fg(C-d)168 b Fo(Delete)15 b(the)g(c)o(haracter)g
-(underneath)h(the)f(cursor.)75 663 y(Prin)o(ting)f(c)o(haracters)315
-717 y(Insert)h(the)h(c)o(haracter)e(in)o(to)g(the)i(line)f(at)f(the)h
-(cursor.)75 798 y Fg(C-_)g Fo(or)f Fg(C-x)h(C-u)315 853
-y Fo(Undo)i(the)g(last)e(editing)h(command.)25 b(Y)l(ou)17
+699 y(when)f(y)o(ou)g(delete)g(text)f(b)q(ehind)i(the)f(cursor,)g(c)o
+(haracters)f(to)g(the)h(righ)o(t)e(of)h(the)h(cursor)g(are)f(`pulled)75
+754 y(bac)o(k')i(to)g(\014ll)f(in)i(the)f(blank)g(space)h(created)f(b)o
+(y)h(the)f(remo)o(v)m(al)f(of)h(the)h(text.)35 b(These)21
+b(are)f(the)g(bare)75 809 y(essen)o(tials)14 b(for)h(editing)f(the)h
+(text)g(of)g(an)g(input)g(line:)75 898 y Fg(C-b)168 b
+Fo(Mo)o(v)o(e)14 b(bac)o(k)h(one)h(c)o(haracter.)75 984
+y Fg(C-f)168 b Fo(Mo)o(v)o(e)14 b(forw)o(ard)g(one)h(c)o(haracter.)75
+1071 y Fn(DEL)g Fo(or)f Fn(Backspace)315 1125 y Fo(Delete)h(the)g(c)o
+(haracter)g(to)f(the)h(left)g(of)g(the)g(cursor.)75 1212
+y Fg(C-d)168 b Fo(Delete)15 b(the)g(c)o(haracter)g(underneath)h(the)f
+(cursor.)75 1298 y(Prin)o(ting)f(c)o(haracters)315 1353
+y(Insert)h(the)h(c)o(haracter)e(in)o(to)g(the)i(line)f(at)f(the)h
+(cursor.)75 1439 y Fg(C-_)g Fo(or)f Fg(C-x)h(C-u)315
+1494 y Fo(Undo)i(the)g(last)e(editing)h(command.)25 b(Y)l(ou)17
b(can)g(undo)g(all)e(the)i(w)o(a)o(y)f(bac)o(k)h(to)f(an)g(empt)o(y)315
-908 y(line.)75 989 y(\(Dep)q(ending)f(on)g(y)o(our)f(con\014guration,)g
-(the)h Fn(Backspace)e Fo(k)o(ey)i(b)q(e)g(set)g(to)f(delete)h(the)g(c)o
-(haracter)f(to)g(the)75 1043 y(left)j(of)h(the)g(cursor)g(and)g(the)h
-Fn(DEL)e Fo(k)o(ey)h(set)g(to)g(delete)g(the)g(c)o(haracter)g
-(underneath)g(the)h(cursor,)f(lik)o(e)75 1098 y Fg(C-d)p
-Fo(,)c(rather)h(than)g(the)g(c)o(haracter)g(to)f(the)i(left)e(of)h(the)
-g(cursor.\))75 1199 y Fd(1.2.2)30 b(Readline)20 b(Mo)n(v)n(emen)n(t)i
-(Commands)75 1272 y Fo(The)14 b(ab)q(o)o(v)o(e)g(table)f(describ)q(es)h
-(the)g(most)f(basic)h(k)o(eystrok)o(es)f(that)g(y)o(ou)g(need)i(in)f
-(order)f(to)g(do)h(editing)f(of)75 1327 y(the)k(input)f(line.)23
-b(F)l(or)16 b(y)o(our)g(con)o(v)o(enience,)h(man)o(y)f(other)g
-(commands)h(ha)o(v)o(e)f(b)q(een)h(added)h(in)e(addition)75
-1382 y(to)h Fg(C-b)p Fo(,)g Fg(C-f)p Fo(,)g Fg(C-d)p
-Fo(,)g(and)h Fn(DEL)p Fo(.)26 b(Here)18 b(are)f(some)g(commands)h(for)e
-(mo)o(ving)h(more)g(rapidly)g(ab)q(out)g(the)75 1437
-y(line.)75 1518 y Fg(C-a)168 b Fo(Mo)o(v)o(e)14 b(to)h(the)g(start)f
-(of)h(the)g(line.)75 1598 y Fg(C-e)168 b Fo(Mo)o(v)o(e)14
-b(to)h(the)g(end)h(of)f(the)g(line.)75 1679 y Fg(M-f)168
-b Fo(Mo)o(v)o(e)14 b(forw)o(ard)g(a)h(w)o(ord,)f(where)i(a)e(w)o(ord)h
-(is)g(comp)q(osed)g(of)g(letters)f(and)i(digits.)75 1760
-y Fg(M-b)168 b Fo(Mo)o(v)o(e)14 b(bac)o(kw)o(ard)h(a)g(w)o(ord.)75
-1840 y Fg(C-l)168 b Fo(Clear)14 b(the)i(screen,)f(reprin)o(ting)f(the)h
-(curren)o(t)g(line)g(at)g(the)g(top.)137 1921 y(Notice)d(ho)o(w)g
+1548 y(line.)75 1638 y(Dep)q(ending)h(on)f(y)o(our)g(con\014guration,)g
+(the)g Fn(Backspace)f Fo(k)o(ey)i(migh)o(t)e(b)q(e)i(set)f(to)g(delete)
+g(the)h(c)o(haracter)75 1693 y(to)d(the)h(left)g(of)f(the)i(cursor)e
+(and)h(the)h Fn(DEL)e Fo(k)o(ey)h(set)g(to)f(delete)h(the)g(c)o
+(haracter)g(underneath)h(the)f(cursor,)75 1747 y(lik)o(e)f
+Fg(C-d)p Fo(,)h(rather)f(than)h(the)h(c)o(haracter)e(to)h(the)g(left)g
+(of)f(the)i(cursor.)75 1854 y Fd(1.2.2)30 b(Readline)20
+b(Mo)n(v)n(emen)n(t)i(Commands)75 1927 y Fo(The)17 b(ab)q(o)o(v)o(e)g
+(table)g(describ)q(es)h(the)f(most)f(basic)h(k)o(eystrok)o(es)f(that)h
+(y)o(ou)g(need)h(in)f(order)g(to)f(do)i(editing)75 1982
+y(of)c(the)h(input)g(line.)20 b(F)l(or)14 b(y)o(our)g(con)o(v)o
+(enience,)h(man)o(y)g(other)f(commands)h(are)f(a)o(v)m(ailable)g(in)h
+(addition)f(to)75 2037 y Fg(C-b)p Fo(,)g Fg(C-f)p Fo(,)f
+Fg(C-d)p Fo(,)h(and)g Fn(DEL)p Fo(.)19 b(Here)c(are)e(some)h(commands)g
+(for)g(mo)o(ving)f(more)h(rapidly)f(within)g(the)i(line.)75
+2126 y Fg(C-a)168 b Fo(Mo)o(v)o(e)14 b(to)h(the)g(start)f(of)h(the)g
+(line.)75 2212 y Fg(C-e)168 b Fo(Mo)o(v)o(e)14 b(to)h(the)g(end)h(of)f
+(the)g(line.)75 2299 y Fg(M-f)168 b Fo(Mo)o(v)o(e)14
+b(forw)o(ard)g(a)h(w)o(ord,)f(where)i(a)e(w)o(ord)h(is)g(comp)q(osed)g
+(of)g(letters)f(and)i(digits.)75 2385 y Fg(M-b)168 b
+Fo(Mo)o(v)o(e)14 b(bac)o(kw)o(ard)h(a)g(w)o(ord.)75 2471
+y Fg(C-l)168 b Fo(Clear)14 b(the)i(screen,)f(reprin)o(ting)f(the)h
+(curren)o(t)g(line)g(at)g(the)g(top.)137 2560 y(Notice)d(ho)o(w)g
Fg(C-f)g Fo(mo)o(v)o(es)f(forw)o(ard)g(a)h(c)o(haracter,)g(while)g
Fg(M-f)g Fo(mo)o(v)o(es)f(forw)o(ard)g(a)h(w)o(ord.)18
-b(It)13 b(is)f(a)g(lo)q(ose)75 1976 y(con)o(v)o(en)o(tion)i(that)g(con)
+b(It)13 b(is)f(a)g(lo)q(ose)75 2615 y(con)o(v)o(en)o(tion)i(that)g(con)
o(trol)g(k)o(eystrok)o(es)g(op)q(erate)h(on)f(c)o(haracters)h(while)f
-(meta)g(k)o(eystrok)o(es)g(op)q(erate)h(on)75 2031 y(w)o(ords.)75
-2131 y Fd(1.2.3)30 b(Readline)20 b(Killing)h(Commands)75
-2205 y Fe(Killing)16 b Fo(text)d(means)g(to)g(delete)g(the)g(text)g
-(from)g(the)g(line,)g(but)h(to)e(sa)o(v)o(e)h(it)f(a)o(w)o(a)o(y)g(for)
-h(later)f(use,)i(usually)75 2260 y(b)o(y)f Fe(y)o(anking)k
-Fo(\(re-inserting\))12 b(it)h(bac)o(k)g(in)o(to)g(the)g(line.)19
-b(\(`Cut')12 b(and)i(`paste')e(are)h(more)h(recen)o(t)f(jargon)g(for)75
-2314 y(`kill')g(and)j(`y)o(ank'.\))137 2383 y(If)g(the)f(description)f
-(for)h(a)g(command)g(sa)o(ys)f(that)h(it)f(`kills')f(text,)h(then)i(y)o
-(ou)f(can)g(b)q(e)h(sure)f(that)f(y)o(ou)75 2437 y(can)h(get)g(the)g
-(text)g(bac)o(k)g(in)g(a)g(di\013eren)o(t)f(\(or)h(the)g(same\))g
-(place)g(later.)137 2506 y(When)d(y)o(ou)g(use)g(a)f(kill)f(command,)i
-(the)g(text)f(is)g(sa)o(v)o(ed)g(in)h(a)f Fe(kill-ring)p
-Fo(.)17 b(An)o(y)12 b(n)o(um)o(b)q(er)g(of)f(consecutiv)o(e)75
-2560 y(kills)j(sa)o(v)o(e)h(all)f(of)h(the)h(killed)f(text)g(together,)
-f(so)h(that)g(when)h(y)o(ou)f(y)o(ank)g(it)g(bac)o(k,)g(y)o(ou)g(get)g
-(it)g(all.)20 b(The)75 2615 y(kill)15 b(ring)h(is)f(not)h(line)g(sp)q
-(eci\014c;)h(the)f(text)g(that)f(y)o(ou)h(killed)g(on)g(a)g(previously)
-f(t)o(yp)q(ed)i(line)f(is)f(a)o(v)m(ailable)75 2670 y(to)g(b)q(e)g(y)o
-(ank)o(ed)g(bac)o(k)h(later,)d(when)j(y)o(ou)f(are)g(t)o(yping)f
-(another)h(line.)p eop end
+(meta)g(k)o(eystrok)o(es)g(op)q(erate)h(on)75 2670 y(w)o(ords.)p
+eop end
%%Page: 3 6
TeXDict begin 3 5 bop 75 -58 a Fo(Chapter)15 b(1:)k(Command)c(Line)h
-(Editing)1075 b(3)137 149 y(Here)16 b(is)e(the)i(list)e(of)g(commands)h
-(for)g(killing)f(text.)75 228 y Fg(C-k)168 b Fo(Kill)14
-b(the)i(text)e(from)h(the)g(curren)o(t)g(cursor)g(p)q(osition)f(to)h
-(the)g(end)h(of)f(the)g(line.)75 307 y Fg(M-d)168 b Fo(Kill)12
-b(from)h(the)g(cursor)g(to)f(the)i(end)g(of)e(the)i(curren)o(t)f(w)o
-(ord,)f(or,)h(if)f(b)q(et)o(w)o(een)i(w)o(ords,)e(to)h(the)315
-362 y(end)j(of)f(the)g(next)g(w)o(ord.)k(W)l(ord)c(b)q(oundaries)h(are)
-f(the)g(same)g(as)g(those)f(used)i(b)o(y)f Fg(M-f)p Fo(.)75
-440 y Fg(M-DEL)120 b Fo(Kill)14 b(from)h(the)g(cursor)g(the)h(start)e
-(of)h(the)g(curren)o(t)g(w)o(ord,)f(or,)h(if)f(b)q(et)o(w)o(een)i(w)o
-(ords,)e(to)h(the)315 495 y(start)j(of)h(the)g(previous)g(w)o(ord.)31
-b(W)l(ord)19 b(b)q(oundaries)g(are)g(the)h(same)e(as)h(those)g(used)h
-(b)o(y)315 550 y Fg(M-b)p Fo(.)75 629 y Fg(C-w)168 b
-Fo(Kill)17 b(from)f(the)i(cursor)f(to)g(the)h(previous)f(whitespace.)27
-b(This)17 b(is)g(di\013eren)o(t)f(than)i Fg(M-DEL)315
-684 y Fo(b)q(ecause)e(the)f(w)o(ord)g(b)q(oundaries)g(di\013er.)137
-762 y(Here)21 b(is)g(ho)o(w)f(to)g Fe(y)o(ank)j Fo(the)e(text)f(bac)o
-(k)h(in)o(to)f(the)g(line.)37 b(Y)l(anking)20 b(means)h(to)f(cop)o(y)h
-(the)g(most-)75 817 y(recen)o(tly-killed)14 b(text)h(from)f(the)i(kill)
-e(bu\013er.)75 896 y Fg(C-y)168 b Fo(Y)l(ank)15 b(the)h(most)e(recen)o
-(tly)h(killed)f(text)h(bac)o(k)g(in)o(to)f(the)i(bu\013er)f(at)f(the)i
-(cursor.)75 975 y Fg(M-y)168 b Fo(Rotate)17 b(the)g(kill-ring,)f(and)h
+(Editing)1075 b(3)75 149 y Fd(1.2.3)30 b(Readline)20
+b(Killing)h(Commands)75 223 y Ff(Killing)16 b Fo(text)d(means)g(to)g
+(delete)g(the)g(text)g(from)g(the)g(line,)g(but)h(to)e(sa)o(v)o(e)h(it)
+f(a)o(w)o(a)o(y)g(for)h(later)f(use,)i(usually)75 278
+y(b)o(y)f Ff(y)o(anking)k Fo(\(re-inserting\))12 b(it)h(bac)o(k)g(in)o
+(to)g(the)g(line.)19 b(\(`Cut')12 b(and)i(`paste')e(are)h(more)h(recen)
+o(t)f(jargon)g(for)75 333 y(`kill')g(and)j(`y)o(ank'.\))137
+397 y(If)g(the)f(description)f(for)h(a)g(command)g(sa)o(ys)f(that)h(it)
+f(`kills')f(text,)h(then)i(y)o(ou)f(can)g(b)q(e)h(sure)f(that)f(y)o(ou)
+75 452 y(can)h(get)g(the)g(text)g(bac)o(k)g(in)g(a)g(di\013eren)o(t)f
+(\(or)h(the)g(same\))g(place)g(later.)137 517 y(When)d(y)o(ou)g(use)g
+(a)f(kill)f(command,)i(the)g(text)f(is)g(sa)o(v)o(ed)g(in)h(a)f
+Ff(kill-ring)p Fo(.)17 b(An)o(y)12 b(n)o(um)o(b)q(er)g(of)f(consecutiv)
+o(e)75 572 y(kills)j(sa)o(v)o(e)h(all)f(of)h(the)h(killed)f(text)g
+(together,)f(so)h(that)g(when)h(y)o(ou)f(y)o(ank)g(it)g(bac)o(k,)g(y)o
+(ou)g(get)g(it)g(all.)20 b(The)75 627 y(kill)15 b(ring)h(is)f(not)h
+(line)g(sp)q(eci\014c;)h(the)f(text)g(that)f(y)o(ou)h(killed)g(on)g(a)g
+(previously)f(t)o(yp)q(ed)i(line)f(is)f(a)o(v)m(ailable)75
+682 y(to)g(b)q(e)g(y)o(ank)o(ed)g(bac)o(k)h(later,)d(when)j(y)o(ou)f
+(are)g(t)o(yping)f(another)h(line.)137 746 y(Here)h(is)e(the)i(list)e
+(of)g(commands)h(for)g(killing)f(text.)75 821 y Fg(C-k)168
+b Fo(Kill)14 b(the)i(text)e(from)h(the)g(curren)o(t)g(cursor)g(p)q
+(osition)f(to)h(the)g(end)h(of)f(the)g(line.)75 897 y
+Fg(M-d)168 b Fo(Kill)12 b(from)h(the)g(cursor)g(to)f(the)i(end)g(of)e
+(the)i(curren)o(t)f(w)o(ord,)f(or,)h(if)f(b)q(et)o(w)o(een)i(w)o(ords,)
+e(to)h(the)315 951 y(end)j(of)f(the)g(next)g(w)o(ord.)k(W)l(ord)c(b)q
+(oundaries)h(are)f(the)g(same)g(as)g(those)f(used)i(b)o(y)f
+Fg(M-f)p Fo(.)75 1026 y Fg(M-DEL)120 b Fo(Kill)16 b(from)g(the)h
+(cursor)f(to)g(the)h(start)e(of)i(the)g(curren)o(t)f(w)o(ord,)g(or,)g
+(if)h(b)q(et)o(w)o(een)g(w)o(ords,)f(to)315 1081 y(the)e(start)f(of)g
+(the)h(previous)f(w)o(ord.)19 b(W)l(ord)14 b(b)q(oundaries)g(are)f(the)
+h(same)g(as)f(those)h(used)g(b)o(y)315 1136 y Fg(M-b)p
+Fo(.)75 1211 y Fg(C-w)168 b Fo(Kill)17 b(from)f(the)i(cursor)f(to)g
+(the)h(previous)f(whitespace.)27 b(This)17 b(is)g(di\013eren)o(t)f
+(than)i Fg(M-DEL)315 1266 y Fo(b)q(ecause)e(the)f(w)o(ord)g(b)q
+(oundaries)g(di\013er.)137 1341 y(Here)21 b(is)g(ho)o(w)f(to)g
+Ff(y)o(ank)j Fo(the)e(text)f(bac)o(k)h(in)o(to)f(the)g(line.)37
+b(Y)l(anking)20 b(means)h(to)f(cop)o(y)h(the)g(most-)75
+1396 y(recen)o(tly-killed)14 b(text)h(from)f(the)i(kill)e(bu\013er)h
+(in)o(to)f(the)h(line)g(at)g(the)g(curren)o(t)g(cursor)g(p)q(osition.)
+75 1471 y Fg(C-y)168 b Fo(Y)l(ank)15 b(the)h(most)e(recen)o(tly)h
+(killed)f(text)h(bac)o(k)g(in)o(to)f(the)i(bu\013er)f(at)f(the)i
+(cursor.)75 1546 y Fg(M-y)168 b Fo(Rotate)17 b(the)g(kill-ring,)f(and)h
(y)o(ank)g(the)h(new)f(top.)26 b(Y)l(ou)17 b(can)h(only)f(do)g(this)g
-(if)f(the)i(prior)315 1029 y(command)d(is)g Fg(C-y)g
-Fo(or)f Fg(M-y)p Fo(.)75 1128 y Fd(1.2.4)30 b(Readline)20
-b(Argumen)n(ts)75 1202 y Fo(Y)l(ou)g(can)f(pass)h(n)o(umeric)f(argumen)
+(if)f(the)i(prior)315 1601 y(command)d(is)g Fg(C-y)g
+Fo(or)f Fg(M-y)p Fo(.)75 1695 y Fd(1.2.4)30 b(Readline)20
+b(Argumen)n(ts)75 1769 y Fo(Y)l(ou)g(can)f(pass)h(n)o(umeric)f(argumen)
o(ts)g(to)g(Readline)h(commands.)32 b(Sometimes)19 b(the)h(argumen)o(t)
-e(acts)75 1256 y(as)i(a)f(rep)q(eat)i(coun)o(t,)f(other)g(times)f(it)h
-(is)f(the)h Ff(sign)j Fo(of)c(the)h(argumen)o(t)g(that)f(is)h
-(signi\014can)o(t.)33 b(If)20 b(y)o(ou)75 1311 y(pass)d(a)f(negativ)o
+e(acts)75 1824 y(as)i(a)f(rep)q(eat)i(coun)o(t,)f(other)g(times)f(it)h
+(is)f(the)h Fe(sign)j Fo(of)c(the)h(argumen)o(t)g(that)f(is)h
+(signi\014can)o(t.)33 b(If)20 b(y)o(ou)75 1879 y(pass)d(a)f(negativ)o
(e)g(argumen)o(t)g(to)g(a)g(command)h(whic)o(h)g(normally)e(acts)h(in)h
-(a)f(forw)o(ard)g(direction,)g(that)75 1366 y(command)i(will)e(act)h
+(a)f(forw)o(ard)g(direction,)g(that)75 1933 y(command)i(will)e(act)h
(in)h(a)f(bac)o(kw)o(ard)g(direction.)26 b(F)l(or)17
b(example,)h(to)f(kill)g(text)g(bac)o(k)g(to)g(the)h(start)e(of)75
-1421 y(the)f(line,)g(y)o(ou)g(migh)o(t)f(t)o(yp)q(e)h(`)p
-Fn(M--)f(C-k)p Fo('.)137 1488 y(The)h(general)e(w)o(a)o(y)g(to)h(pass)g
+1988 y(the)f(line,)g(y)o(ou)g(migh)o(t)f(t)o(yp)q(e)h(`)p
+Fn(M--)f(C-k)p Fo('.)137 2053 y(The)h(general)e(w)o(a)o(y)g(to)h(pass)g
(n)o(umeric)g(argumen)o(ts)f(to)g(a)h(command)g(is)g(to)f(t)o(yp)q(e)h
-(meta)g(digits)f(b)q(efore)75 1542 y(the)j(command.)k(If)c(the)f
+(meta)g(digits)f(b)q(efore)75 2108 y(the)j(command.)k(If)c(the)f
(\014rst)g(`digit')f(t)o(yp)q(ed)h(is)g(a)h(min)o(us)f(sign)g(\(`)p
Fn(-)p Fo('\),)e(then)j(the)f(sign)g(of)g(the)h(argumen)o(t)75
-1597 y(will)i(b)q(e)i(negativ)o(e.)30 b(Once)20 b(y)o(ou)f(ha)o(v)o(e)g
+2163 y(will)i(b)q(e)i(negativ)o(e.)30 b(Once)20 b(y)o(ou)f(ha)o(v)o(e)g
(t)o(yp)q(ed)g(one)g(meta)g(digit)f(to)g(get)h(the)g(argumen)o(t)f
-(started,)h(y)o(ou)75 1652 y(can)c(t)o(yp)q(e)f(the)h(remainder)f(of)g
+(started,)h(y)o(ou)75 2217 y(can)c(t)o(yp)q(e)f(the)h(remainder)f(of)g
(the)g(digits,)f(and)i(then)g(the)f(command.)20 b(F)l(or)13
-b(example,)h(to)g(giv)o(e)g(the)g Fg(C-d)75 1707 y Fo(command)19
+b(example,)h(to)g(giv)o(e)g(the)g Fg(C-d)75 2272 y Fo(command)19
b(an)f(argumen)o(t)g(of)g(10,)h(y)o(ou)f(could)h(t)o(yp)q(e)g(`)p
Fn(M-1)14 b(0)h(C-d)p Fo(',)k(whic)o(h)f(will)f(delete)i(the)g(next)g
-(ten)75 1762 y(c)o(haracters)14 b(on)i(the)f(input)g(line.)75
-1860 y Fd(1.2.5)30 b(Searc)n(hing)21 b(for)f(Commands)h(in)f(the)h
-(History)75 1934 y Fo(Readline)11 b(pro)o(vides)f(commands)h(for)f
+(ten)75 2327 y(c)o(haracters)14 b(on)i(the)f(input)g(line.)75
+2422 y Fd(1.2.5)30 b(Searc)n(hing)21 b(for)f(Commands)h(in)f(the)h
+(History)75 2495 y Fo(Readline)11 b(pro)o(vides)f(commands)h(for)f
(searc)o(hing)g(through)g(the)h(command)f(history)g(for)g(lines)g(con)o
-(taining)75 1988 y(a)15 b(sp)q(eci\014ed)h(string.)j(There)c(are)g(t)o
-(w)o(o)f(searc)o(h)h(mo)q(des:)20 b Fe(incremen)o(tal)c
-Fo(and)g Fe(non-incremen)o(tal)p Fo(.)137 2055 y(Incremen)o(tal)d
+(taining)75 2550 y(a)15 b(sp)q(eci\014ed)h(string.)j(There)c(are)g(t)o
+(w)o(o)f(searc)o(h)h(mo)q(des:)20 b Ff(incremen)o(tal)c
+Fo(and)g Ff(non-incremen)o(tal)p Fo(.)137 2615 y(Incremen)o(tal)d
(searc)o(hes)g(b)q(egin)g(b)q(efore)g(the)g(user)g(has)g(\014nished)g
(t)o(yping)f(the)h(searc)o(h)g(string.)18 b(As)13 b(eac)o(h)75
-2110 y(c)o(haracter)k(of)g(the)h(searc)o(h)g(string)e(is)h(t)o(yp)q
+2670 y(c)o(haracter)k(of)g(the)h(searc)o(h)g(string)e(is)h(t)o(yp)q
(ed,)i(Readline)f(displa)o(ys)e(the)i(next)g(en)o(try)f(from)g(the)h
-(history)75 2165 y(matc)o(hing)11 b(the)h(string)f(t)o(yp)q(ed)h(so)g
-(far.)18 b(An)13 b(incremen)o(tal)e(searc)o(h)h(requires)f(only)h(as)g
-(man)o(y)f(c)o(haracters)g(as)75 2220 y(needed)16 b(to)d(\014nd)j(the)e
-(desired)h(history)e(en)o(try)l(.)19 b(T)l(o)c(searc)o(h)f(bac)o(kw)o
-(ard)f(in)i(the)f(history)f(for)h(a)g(particular)75 2274
-y(string,)f(t)o(yp)q(e)i Fg(C-r)p Fo(.)k(T)o(yping)c
-Fg(C-s)f Fo(searc)o(hes)h(forw)o(ard)e(through)h(the)h(history)l(.)k
-(The)c(c)o(haracters)f(presen)o(t)75 2329 y(in)19 b(the)g(v)m(alue)g
-(of)g(the)g Fn(isearch-terminators)d Fo(v)m(ariable)i(are)h(used)h(to)e
-(terminate)g(an)h(incremen)o(tal)75 2384 y(searc)o(h.)35
-b(If)20 b(that)f(v)m(ariable)h(has)g(not)g(b)q(een)h(assigned)f(a)g(v)m
-(alue,)h(the)f Fn(ESC)g Fo(and)g Fg(C-J)g Fo(c)o(haracters)f(will)75
-2439 y(terminate)h(an)h(incremen)o(tal)g(searc)o(h.)37
-b Fg(C-g)21 b Fo(will)f(ab)q(ort)h(an)g(incremen)o(tal)f(searc)o(h)h
-(and)g(restore)g(the)75 2494 y(original)13 b(line.)19
-b(When)c(the)f(searc)o(h)g(is)g(terminated,)g(the)g(history)g(en)o(try)
-g(con)o(taining)f(the)i(searc)o(h)f(string)75 2548 y(b)q(ecomes)i(the)f
-(curren)o(t)g(line.)137 2615 y(T)l(o)g(\014nd)i(other)e(matc)o(hing)f
-(en)o(tries)h(in)h(the)f(history)g(list,)f(t)o(yp)q(e)h
-Fg(C-r)g Fo(or)g Fg(C-s)g Fo(as)h(appropriate.)j(This)75
-2670 y(will)12 b(searc)o(h)h(bac)o(kw)o(ard)f(or)g(forw)o(ard)g(in)h
-(the)g(history)f(for)h(the)g(next)g(en)o(try)g(matc)o(hing)f(the)h
-(searc)o(h)g(string)p eop end
+(history)p eop end
%%Page: 4 7
TeXDict begin 4 6 bop 75 -58 a Fo(Chapter)15 b(1:)k(Command)c(Line)h
-(Editing)1075 b(4)75 149 y(t)o(yp)q(ed)19 b(so)g(far.)30
+(Editing)1075 b(4)75 149 y(matc)o(hing)15 b(the)h(string)f(t)o(yp)q(ed)
+i(so)e(far.)22 b(An)17 b(incremen)o(tal)e(searc)o(h)h(requires)g(only)f
+(as)h(man)o(y)g(c)o(haracters)75 204 y(as)g(needed)i(to)e(\014nd)i(the)
+f(desired)g(history)e(en)o(try)l(.)24 b(When)18 b(using)e(emacs)h
+(editing)f(mo)q(de,)h(t)o(yp)q(e)f Fg(C-r)h Fo(to)75
+259 y(searc)o(h)12 b(bac)o(kw)o(ard)g(in)g(the)h(history)e(for)h(a)h
+(particular)e(string.)18 b(T)o(yping)12 b Fg(C-s)g Fo(searc)o(hes)g
+(forw)o(ard)f(through)75 314 y(the)16 b(history)l(.)21
+b(The)16 b(c)o(haracters)f(presen)o(t)g(in)h(the)g(v)m(alue)g(of)f(the)
+h Fn(isearch-terminators)d Fo(v)m(ariable)i(are)75 369
+y(used)f(to)f(terminate)f(an)h(incremen)o(tal)g(searc)o(h.)19
+b(If)13 b(that)g(v)m(ariable)g(has)g(not)g(b)q(een)h(assigned)f(a)g(v)m
+(alue,)h(the)75 423 y Fn(ESC)f Fo(and)g Fg(C-J)g Fo(c)o(haracters)f
+(will)g(terminate)g(an)h(incremen)o(tal)f(searc)o(h.)19
+b Fg(C-g)13 b Fo(will)e(ab)q(ort)i(an)g(incremen)o(tal)75
+478 y(searc)o(h)22 b(and)g(restore)f(the)h(original)e(line.)40
+b(When)22 b(the)h(searc)o(h)e(is)h(terminated,)g(the)g(history)f(en)o
+(try)75 533 y(con)o(taining)14 b(the)h(searc)o(h)g(string)f(b)q(ecomes)
+i(the)g(curren)o(t)f(line.)137 608 y(T)l(o)g(\014nd)i(other)e(matc)o
+(hing)f(en)o(tries)h(in)h(the)f(history)g(list,)f(t)o(yp)q(e)h
+Fg(C-r)g Fo(or)g Fg(C-s)g Fo(as)h(appropriate.)j(This)75
+663 y(will)12 b(searc)o(h)h(bac)o(kw)o(ard)f(or)g(forw)o(ard)g(in)h
+(the)g(history)f(for)h(the)g(next)g(en)o(try)g(matc)o(hing)f(the)h
+(searc)o(h)g(string)75 718 y(t)o(yp)q(ed)19 b(so)g(far.)30
b(An)o(y)19 b(other)f(k)o(ey)h(sequence)h(b)q(ound)g(to)e(a)h(Readline)
-g(command)f(will)g(terminate)g(the)75 204 y(searc)o(h)13
+g(command)f(will)g(terminate)g(the)75 773 y(searc)o(h)13
b(and)f(execute)i(that)e(command.)19 b(F)l(or)12 b(instance,)h(a)f
Fn(RET)g Fo(will)g(terminate)f(the)i(searc)o(h)g(and)g(accept)75
-259 y(the)i(line,)f(thereb)o(y)h(executing)f(the)h(command)g(from)f
+827 y(the)i(line,)f(thereb)o(y)h(executing)f(the)h(command)g(from)f
(the)g(history)g(list.)k(A)d(mo)o(v)o(emen)o(t)f(command)g(will)75
-314 y(terminate)g(the)h(searc)o(h,)g(mak)o(e)g(the)g(last)f(line)h
+882 y(terminate)g(the)h(searc)o(h,)g(mak)o(e)g(the)g(last)f(line)h
(found)h(the)f(curren)o(t)g(line,)f(and)i(b)q(egin)f(editing.)137
-388 y(Readline)j(remem)o(b)q(ers)f(the)h(last)e(incremen)o(tal)h(searc)
+957 y(Readline)j(remem)o(b)q(ers)f(the)h(last)e(incremen)o(tal)h(searc)
o(h)g(string.)26 b(If)17 b(t)o(w)o(o)f Fg(C-r)p Fo(s)h(are)g(t)o(yp)q
-(ed)h(without)75 443 y(an)o(y)g(in)o(terv)o(ening)f(c)o(haracters)h
-(de\014ning)g(a)g(new)h(searc)o(h)f(string,)f(an)o(y)h(remem)o(b)q
-(ered)h(searc)o(h)f(string)f(is)75 498 y(used.)137 572
-y(Non-incremen)o(tal)23 b(searc)o(hes)g(read)h(the)f(en)o(tire)g(searc)
-o(h)g(string)f(b)q(efore)i(starting)e(to)g(searc)o(h)i(for)75
-627 y(matc)o(hing)c(history)h(lines.)37 b(The)22 b(searc)o(h)f(string)f
-(ma)o(y)h(b)q(e)h(t)o(yp)q(ed)f(b)o(y)h(the)f(user)h(or)e(b)q(e)i(part)
-f(of)g(the)75 682 y(con)o(ten)o(ts)15 b(of)f(the)i(curren)o(t)f(line.)
-75 813 y Fm(1.3)33 b(Readline)21 b(Init)i(File)75 893
-y Fo(Although)e(the)h(Readline)h(library)d(comes)i(with)f(a)h(set)f(of)
-h(Emacs-lik)o(e)f(k)o(eybindings)g(installed)g(b)o(y)75
-948 y(default,)12 b(it)g(is)g(p)q(ossible)g(to)g(use)g(a)g(di\013eren)o
-(t)g(set)g(of)g(k)o(eybindings.)19 b(An)o(y)12 b(user)h(can)f
-(customize)g(programs)75 1003 y(that)21 b(use)i(Readline)f(b)o(y)h
-(putting)e(commands)h(in)g(an)g Fe(inputrc)j Fo(\014le,)f(con)o(v)o(en)
-o(tionally)c(in)i(his)g(home)75 1057 y(directory)l(.)c(The)12
-b(name)g(of)f(this)g(\014le)h(is)f(tak)o(en)g(from)g(the)h(v)m(alue)g
-(of)f(the)h(en)o(vironmen)o(t)f(v)m(ariable)g Fn(INPUTRC)p
-Fo(.)75 1112 y(If)k(that)g(v)m(ariable)f(is)h(unset,)g(the)g(default)g
-(is)f Fn(~/.inputrc)p Fo(.)19 b(If)c(that)f(\014le)h(do)q(es)h(not)e
-(exist)h(or)f(cannot)h(b)q(e)75 1167 y(read,)g(the)g(ultimate)f
-(default)h(is)f Fn(/etc/inputrc)p Fo(.)137 1242 y(When)h(a)g(program)f
-(whic)o(h)g(uses)h(the)g(Readline)g(library)f(starts)f(up,)i(the)g
-(init)f(\014le)h(is)f(read,)h(and)g(the)75 1296 y(k)o(ey)g(bindings)g
-(are)g(set.)137 1371 y(In)f(addition,)f(the)g Fn(C-x)i(C-r)e
-Fo(command)g(re-reads)h(this)f(init)f(\014le,)i(th)o(us)f(incorp)q
-(orating)f(an)o(y)h(c)o(hanges)75 1426 y(that)h(y)o(ou)h(migh)o(t)f(ha)
-o(v)o(e)h(made)g(to)g(it.)75 1533 y Fd(1.3.1)30 b(Readline)20
-b(Init)g(File)h(Syn)n(tax)75 1606 y Fo(There)g(are)f(only)g(a)g(few)h
-(basic)f(constructs)g(allo)o(w)o(ed)f(in)h(the)h(Readline)f(init)g
-(\014le.)36 b(Blank)20 b(lines)g(are)75 1661 y(ignored.)35
-b(Lines)21 b(b)q(eginning)g(with)e(a)i(`)p Fn(#)p Fo(')e(are)h(commen)o
-(ts.)35 b(Lines)21 b(b)q(eginning)g(with)f(a)g(`)p Fn($)p
-Fo(')f(indicate)75 1716 y(conditional)g(constructs)i(\(see)f(Section)h
-(1.3.2)e([Conditional)g(Init)h(Constructs],)h(page)f(12\).)36
-b(Other)75 1770 y(lines)15 b(denote)g(v)m(ariable)g(settings)f(and)h(k)
-o(ey)g(bindings.)75 1861 y(V)l(ariable)f(Settings)315
-1916 y(Y)l(ou)20 b(can)h(mo)q(dify)f(the)g(run-time)g(b)q(eha)o(vior)g
+(ed)h(without)75 1012 y(an)o(y)j(in)o(terv)o(ening)f(c)o(haracters)g
+(de\014ning)i(a)f(new)g(searc)o(h)g(string,)g(Readline)g(uses)h(an)o(y)
+e(remem)o(b)q(ered)75 1067 y(searc)o(h)15 b(string.)137
+1142 y(Non-incremen)o(tal)23 b(searc)o(hes)g(read)h(the)f(en)o(tire)g
+(searc)o(h)g(string)f(b)q(efore)i(starting)e(to)g(searc)o(h)i(for)75
+1197 y(matc)o(hing)18 b(history)g(en)o(tries.)31 b(The)19
+b(searc)o(h)g(string)e(ma)o(y)i(b)q(e)g(t)o(yp)q(ed)h(b)o(y)f(the)g
+(user)g(or)f(b)q(e)i(part)e(of)h(the)75 1252 y(con)o(ten)o(ts)c(of)f
+(the)i(curren)o(t)f(line.)75 1384 y Fm(1.3)33 b(Readline)21
+b(Init)i(File)75 1464 y Fo(Although)e(the)h(Readline)h(library)d(comes)
+i(with)f(a)h(set)f(of)h(Emacs-lik)o(e)f(k)o(eybindings)g(installed)g(b)
+o(y)75 1518 y(default,)12 b(it)g(is)g(p)q(ossible)g(to)g(use)g(a)g
+(di\013eren)o(t)g(set)g(of)g(k)o(eybindings.)19 b(An)o(y)12
+b(user)h(can)f(customize)g(programs)75 1573 y(that)19
+b(use)g(Readline)h(b)o(y)f(putting)g(commands)g(in)g(an)g
+Ff(inputrc)k Fo(\014le,)d(con)o(v)o(en)o(tionally)d(in)i(their)g(home)
+75 1628 y(directory)l(.)f(The)12 b(name)g(of)f(this)g(\014le)h(is)f
+(tak)o(en)g(from)g(the)h(v)m(alue)g(of)f(the)h(en)o(vironmen)o(t)f(v)m
+(ariable)g Fn(INPUTRC)p Fo(.)75 1683 y(If)k(that)g(v)m(ariable)f(is)h
+(unset,)g(the)g(default)g(is)f Fn(~/.inputrc)p Fo(.)19
+b(If)c(that)f(\014le)h(do)q(es)h(not)e(exist)h(or)f(cannot)h(b)q(e)75
+1738 y(read,)g(readline)g(lo)q(oks)f(for)h Fn(/etc/inputrc)p
+Fo(.)137 1813 y(When)i(a)f(program)f(whic)o(h)h(uses)g(the)g(Readline)h
+(library)e(starts)f(up,)j(Readline)f(reads)g(the)h(init)e(\014le)75
+1867 y(and)g(sets)g(an)o(y)g(v)m(ariables)g(and)g(k)o(ey)g(bindings)g
+(it)g(con)o(tains.)137 1943 y(In)f(addition,)f(the)g
+Fn(C-x)i(C-r)e Fo(command)g(re-reads)h(this)f(init)f(\014le,)i(th)o(us)
+f(incorp)q(orating)f(an)o(y)h(c)o(hanges)75 1997 y(that)h(y)o(ou)h
+(migh)o(t)f(ha)o(v)o(e)h(made)g(to)g(it.)75 2105 y Fd(1.3.1)30
+b(Readline)20 b(Init)g(File)h(Syn)n(tax)75 2178 y Fo(There)g(are)f
+(only)g(a)g(few)h(basic)f(constructs)g(allo)o(w)o(ed)f(in)h(the)h
+(Readline)f(init)g(\014le.)36 b(Blank)20 b(lines)g(are)75
+2233 y(ignored.)35 b(Lines)21 b(b)q(eginning)g(with)e(a)i(`)p
+Fn(#)p Fo(')e(are)h(commen)o(ts.)35 b(Lines)21 b(b)q(eginning)g(with)f
+(a)g(`)p Fn($)p Fo(')f(indicate)75 2288 y(conditional)g(constructs)i
+(\(see)f(Section)h(1.3.2)e([Conditional)g(Init)h(Constructs],)h(page)f
+(14\).)36 b(Other)75 2343 y(lines)15 b(denote)g(v)m(ariable)g(settings)
+f(and)h(k)o(ey)g(bindings.)75 2434 y(V)l(ariable)f(Settings)315
+2489 y(Y)l(ou)20 b(can)h(mo)q(dify)f(the)g(run-time)g(b)q(eha)o(vior)g
(of)f(Readline)i(b)o(y)f(altering)f(the)h(v)m(alues)g(of)315
-1971 y(v)m(ariables)c(in)h(Readline)g(using)f(the)h Fn(set)g
+2544 y(v)m(ariables)c(in)h(Readline)g(using)f(the)h Fn(set)g
Fo(command)f(within)g(the)h(init)f(\014le.)25 b(The)17
-b(syn)o(tax)315 2025 y(is)e(simple:)435 2096 y Fn(set)23
-b Fg(variable)g(value)315 2167 y Fo(Here,)14 b(for)f(example,)g(is)g
-(ho)o(w)g(to)g(c)o(hange)h(from)f(the)h(default)f(Emacs-lik)o(e)g(k)o
-(ey)g(binding)h(to)315 2222 y(use)i Fn(vi)e Fo(line)h(editing)g
-(commands:)435 2293 y Fn(set)23 b(editing-mode)g(vi)315
-2364 y Fo(V)l(ariable)17 b(names)g(and)h(v)m(alues,)g(where)f
-(appropriate,)g(are)g(recognized)h(without)e(regard)315
-2419 y(to)f(case.)k(Unrecognized)d(v)m(ariable)f(names)g(are)g
-(ignored.)315 2490 y(Bo)q(olean)d(v)m(ariables)g(\(those)g(that)g(can)g
-(b)q(e)i(set)e(to)g(on)g(or)g(o\013)t(\))f(are)h(set)h(to)f(on)g(if)g
-(the)h(v)m(alue)f(is)315 2544 y(n)o(ull)g(or)f(empt)o(y)l(,)h
-Fe(on)h Fo(\(case-insensitiv)o(e\),)d(or)i(1.)19 b(An)o(y)12
-b(other)g(v)m(alue)g(results)f(in)h(the)h(v)m(ariable)315
-2599 y(b)q(eing)i(set)g(to)g(o\013.)315 2670 y(A)g(great)g(deal)f(of)h
-(run-time)g(b)q(eha)o(vior)g(is)g(c)o(hangeable)g(with)f(the)i(follo)o
-(wing)c(v)m(ariables.)p eop end
+b(syn)o(tax)315 2599 y(is)e(simple:)435 2670 y Fn(set)23
+b Fg(variable)g(value)p eop end
%%Page: 5 8
TeXDict begin 5 7 bop 75 -58 a Fo(Chapter)15 b(1:)k(Command)c(Line)h
-(Editing)1075 b(5)315 149 y Fn(bell-style)555 204 y Fo(Con)o(trols)20
-b(what)i(happ)q(ens)h(when)f(Readline)g(w)o(an)o(ts)f(to)g(ring)h(the)g
-(termi-)555 259 y(nal)c(b)q(ell.)30 b(If)19 b(set)f(to)g(`)p
-Fn(none)p Fo(',)g(Readline)h(nev)o(er)g(rings)f(the)g(b)q(ell.)30
-b(If)19 b(set)g(to)555 314 y(`)p Fn(visible)p Fo(',)c(Readline)h(uses)h
-(a)f(visible)g(b)q(ell)h(if)f(one)g(is)g(a)o(v)m(ailable.)23
-b(If)16 b(set)h(to)555 369 y(`)p Fn(audible)p Fo(')g(\(the)h
-(default\),)h(Readline)g(attempts)f(to)g(ring)g(the)h(terminal's)555
-423 y(b)q(ell.)315 496 y Fn(bind-tty-special-chars)555
-551 y Fo(If)f(set)f(to)g(`)p Fn(on)p Fo(')f(\(the)i(default\),)f
-(Readline)g(attempts)g(to)g(bind)h(the)f(con)o(trol)555
-606 y(c)o(haracters)d(treated)g(sp)q(ecially)g(b)o(y)g(the)h(k)o
-(ernel's)e(terminal)h(driv)o(er)g(to)f(their)555 661
-y(Readline)j(equiv)m(alen)o(ts.)315 734 y Fn(blink-matching-paren)555
-789 y Fo(If)i(set)g(to)g(`)p Fn(on)p Fo(',)f(Readline)i(attempts)e(to)g
-(brie\015y)h(mo)o(v)o(e)g(the)g(cursor)g(to)f(an)555
-844 y(op)q(ening)k(paren)o(thesis)f(when)i(a)e(closing)g(paren)o
-(thesis)h(is)f(inserted.)37 b(The)555 898 y(default)15
-b(is)f(`)p Fn(off)p Fo('.)315 971 y Fn(colored-completion-prefix)555
-1026 y Fo(If)h(set)f(to)g(`)p Fn(on)p Fo(',)g(when)h(listing)e
+(Editing)1075 b(5)315 149 y(Here,)14 b(for)f(example,)g(is)g(ho)o(w)g
+(to)g(c)o(hange)h(from)f(the)h(default)f(Emacs-lik)o(e)g(k)o(ey)g
+(binding)h(to)315 204 y(use)i Fn(vi)e Fo(line)h(editing)g(commands:)435
+273 y Fn(set)23 b(editing-mode)g(vi)315 341 y Fo(V)l(ariable)17
+b(names)g(and)h(v)m(alues,)g(where)f(appropriate,)g(are)g(recognized)h
+(without)e(regard)315 396 y(to)f(case.)k(Unrecognized)d(v)m(ariable)f
+(names)g(are)g(ignored.)315 465 y(Bo)q(olean)d(v)m(ariables)g(\(those)g
+(that)g(can)g(b)q(e)i(set)e(to)g(on)g(or)g(o\013)t(\))f(are)h(set)h(to)
+f(on)g(if)g(the)h(v)m(alue)f(is)315 519 y(n)o(ull)g(or)f(empt)o(y)l(,)h
+Ff(on)h Fo(\(case-insensitiv)o(e\),)d(or)i(1.)19 b(An)o(y)12
+b(other)g(v)m(alue)g(results)f(in)h(the)h(v)m(ariable)315
+574 y(b)q(eing)i(set)g(to)g(o\013.)315 643 y(A)g(great)g(deal)f(of)h
+(run-time)g(b)q(eha)o(vior)g(is)g(c)o(hangeable)g(with)f(the)i(follo)o
+(wing)c(v)m(ariables.)315 725 y Fn(active-region-start-color)555
+780 y Fo(A)h(string)g(v)m(ariable)f(that)h(con)o(trols)f(the)h(text)g
+(color)f(and)h(bac)o(kground)g(when)555 834 y(displa)o(ying)23
+b(the)i(text)f(in)h(the)f(activ)o(e)g(region)g(\(see)h(the)f
+(description)g(of)555 889 y Fn(enable-active-region)13
+b Fo(b)q(elo)o(w\).)19 b(This)c(string)g(m)o(ust)g(not)g(tak)o(e)f(up)i
+(an)o(y)555 944 y(ph)o(ysical)c(c)o(haracter)f(p)q(ositions)h(on)g(the)
+g(displa)o(y)l(,)g(so)g(it)f(should)i(consist)e(only)555
+999 y(of)18 b(terminal)f(escap)q(e)i(sequences.)31 b(It)18
+b(is)g(output)g(to)g(the)h(terminal)e(b)q(efore)555 1054
+y(displa)o(ying)g(the)i(text)f(in)h(the)g(activ)o(e)f(region.)29
+b(This)19 b(v)m(ariable)f(is)g(reset)h(to)555 1108 y(the)14
+b(default)g(v)m(alue)h(whenev)o(er)f(the)h(terminal)e(t)o(yp)q(e)h(c)o
+(hanges.)20 b(The)14 b(default)555 1163 y(v)m(alue)h(is)f(the)h(string)
+e(that)h(puts)h(the)f(terminal)g(in)g(standout)g(mo)q(de,)h(as)f(ob-)
+555 1218 y(tained)19 b(from)h(the)f(terminal's)g(terminfo)f
+(description.)34 b(A)19 b(sample)h(v)m(alue)555 1273
+y(migh)o(t)14 b(b)q(e)i(`)p Fn(\\e[01;33m)p Fo('.)315
+1355 y Fn(active-region-end-color)555 1410 y Fo(A)24
+b(string)f(v)m(ariable)g(that)g Fn(")p Fo(undo)q(es)p
+Fn(")i Fo(the)f(e\013ects)f(of)h Fn(active-region-)555
+1465 y(start-color)18 b Fo(and)h(restores)g Fn(")p Fo(normal)p
+Fn(")f Fo(terminal)g(displa)o(y)g(app)q(earance)555 1519
+y(after)12 b(displa)o(ying)g(text)g(in)h(the)g(activ)o(e)f(region.)18
+b(This)13 b(string)f(m)o(ust)g(not)h(tak)o(e)555 1574
+y(up)g(an)o(y)f(ph)o(ysical)g(c)o(haracter)g(p)q(ositions)f(on)i(the)f
+(displa)o(y)l(,)g(so)g(it)g(should)h(con-)555 1629 y(sist)h(only)g(of)g
+(terminal)f(escap)q(e)j(sequences.)k(It)15 b(is)f(output)h(to)f(the)g
+(terminal)555 1684 y(after)j(displa)o(ying)g(the)h(text)f(in)h(the)g
+(activ)o(e)f(region.)27 b(This)17 b(v)m(ariable)g(is)h(re-)555
+1738 y(set)f(to)f(the)g(default)h(v)m(alue)g(whenev)o(er)g(the)g
+(terminal)e(t)o(yp)q(e)i(c)o(hanges.)25 b(The)555 1793
+y(default)19 b(v)m(alue)g(is)g(the)g(string)f(that)g(restores)h(the)g
+(terminal)f(from)g(stand-)555 1848 y(out)c(mo)q(de,)h(as)f(obtained)g
+(from)g(the)h(terminal's)e(terminfo)h(description.)19
+b(A)555 1903 y(sample)c(v)m(alue)g(migh)o(t)f(b)q(e)i(`)p
+Fn(\\e[0m)p Fo('.)315 1985 y Fn(bell-style)555 2040 y
+Fo(Con)o(trols)k(what)i(happ)q(ens)h(when)f(Readline)g(w)o(an)o(ts)f
+(to)g(ring)h(the)g(termi-)555 2095 y(nal)c(b)q(ell.)30
+b(If)19 b(set)f(to)g(`)p Fn(none)p Fo(',)g(Readline)h(nev)o(er)g(rings)
+f(the)g(b)q(ell.)30 b(If)19 b(set)g(to)555 2149 y(`)p
+Fn(visible)p Fo(',)c(Readline)h(uses)h(a)f(visible)g(b)q(ell)h(if)f
+(one)g(is)g(a)o(v)m(ailable.)23 b(If)16 b(set)h(to)555
+2204 y(`)p Fn(audible)p Fo(')g(\(the)h(default\),)h(Readline)g
+(attempts)f(to)g(ring)g(the)h(terminal's)555 2259 y(b)q(ell.)315
+2341 y Fn(bind-tty-special-chars)555 2396 y Fo(If)f(set)f(to)g(`)p
+Fn(on)p Fo(')f(\(the)i(default\),)f(Readline)g(attempts)g(to)g(bind)h
+(the)f(con)o(trol)555 2451 y(c)o(haracters)c(that)f(are)h(treated)g(sp)
+q(ecially)g(b)o(y)g(the)h(k)o(ernel's)e(terminal)h(driv)o(er)555
+2506 y(to)i(their)h(Readline)g(equiv)m(alen)o(ts.)22
+b(These)17 b(o)o(v)o(erride)e(the)h(default)g(Readline)555
+2560 y(bindings)h(describ)q(ed)h(here.)26 b(T)o(yp)q(e)17
+b(`)p Fn(stty)d(-a)p Fo(')j(at)f(a)h(Bash)g(prompt)f(to)h(see)555
+2615 y(y)o(our)g(curren)o(t)h(terminal)e(settings,)h(including)h(the)f
+(sp)q(ecial)h(con)o(trol)e(c)o(har-)555 2670 y(acters)f(\(usually)f
+Fn(cchars)p Fo(\).)p eop end
+%%Page: 6 9
+TeXDict begin 6 8 bop 75 -58 a Fo(Chapter)15 b(1:)k(Command)c(Line)h
+(Editing)1075 b(6)315 149 y Fn(blink-matching-paren)555
+204 y Fo(If)18 b(set)g(to)g(`)p Fn(on)p Fo(',)f(Readline)i(attempts)e
+(to)g(brie\015y)h(mo)o(v)o(e)g(the)g(cursor)g(to)f(an)555
+259 y(op)q(ening)k(paren)o(thesis)f(when)i(a)e(closing)g(paren)o
+(thesis)h(is)f(inserted.)37 b(The)555 314 y(default)15
+b(is)f(`)p Fn(off)p Fo('.)315 396 y Fn(colored-completion-prefix)555
+451 y Fo(If)h(set)f(to)g(`)p Fn(on)p Fo(',)g(when)h(listing)e
(completions,)h(Readline)h(displa)o(ys)e(the)i(com-)555
-1081 y(mon)e(pre\014x)g(of)f(the)h(set)f(of)g(p)q(ossible)h
-(completions)f(using)g(a)g(di\013eren)o(t)g(color.)555
-1136 y(The)20 b(color)f(de\014nitions)h(are)g(tak)o(en)f(from)g(the)h
-(v)m(alue)h(of)e(the)h Fn(LS_COLORS)555 1191 y Fo(en)o(vironmen)o(t)14
-b(v)m(ariable.)20 b(The)15 b(default)g(is)g(`)p Fn(off)p
-Fo('.)315 1264 y Fn(colored-stats)555 1318 y Fo(If)f(set)f(to)f(`)p
-Fn(on)p Fo(',)g(Readline)i(displa)o(ys)e(p)q(ossible)h(completions)g
-(using)g(di\013eren)o(t)555 1373 y(colors)19 b(to)f(indicate)i(their)f
-(\014le)g(t)o(yp)q(e.)33 b(The)20 b(color)f(de\014nitions)g(are)g(tak)o
-(en)555 1428 y(from)12 b(the)g(v)m(alue)h(of)e(the)i
-Fn(LS_COLORS)e Fo(en)o(vironmen)o(t)h(v)m(ariable.)18
-b(The)12 b(default)555 1483 y(is)j(`)p Fn(off)p Fo('.)315
-1556 y Fn(comment-begin)555 1611 y Fo(The)31 b(string)f(to)h(insert)g
-(at)f(the)h(b)q(eginning)h(of)e(the)h(line)g(when)h(the)555
-1665 y Fn(insert-comment)13 b Fo(command)i(is)g(executed.)21
-b(The)15 b(default)g(v)m(alue)g(is)g Fn("#")p Fo(.)315
-1738 y Fn(completion-display-width)555 1793 y Fo(The)21
+506 y(mon)e(pre\014x)g(of)f(the)h(set)f(of)g(p)q(ossible)h(completions)
+f(using)g(a)g(di\013eren)o(t)g(color.)555 560 y(The)h(color)f
+(de\014nitions)g(are)g(tak)o(en)h(from)e(the)i(v)m(alue)g(of)f(the)h
+Fn(LS_COLORS)e Fo(en-)555 615 y(vironmen)o(t)16 b(v)m(ariable.)24
+b(If)17 b(there)g(is)f(a)g(color)g(de\014nition)h(in)f
+Fn(LS_COLORS)g Fo(for)555 670 y(the)11 b(custom)f(su\016x)h(`)p
+Fn(readline-colored-completio)o(n-prefi)o(x)p Fo(',)d(Read-)555
+725 y(line)j(uses)h(this)f(color)g(for)g(the)h(common)f(pre\014x)h
+(instead)f(of)h(its)e(default.)19 b(The)555 780 y(default)c(is)f(`)p
+Fn(off)p Fo('.)315 862 y Fn(colored-stats)555 917 y Fo(If)g(set)f(to)f
+(`)p Fn(on)p Fo(',)g(Readline)i(displa)o(ys)e(p)q(ossible)h
+(completions)g(using)g(di\013eren)o(t)555 971 y(colors)19
+b(to)f(indicate)i(their)f(\014le)g(t)o(yp)q(e.)33 b(The)20
+b(color)f(de\014nitions)g(are)g(tak)o(en)555 1026 y(from)12
+b(the)g(v)m(alue)h(of)e(the)i Fn(LS_COLORS)e Fo(en)o(vironmen)o(t)h(v)m
+(ariable.)18 b(The)12 b(default)555 1081 y(is)j(`)p Fn(off)p
+Fo('.)315 1163 y Fn(comment-begin)555 1218 y Fo(The)36
+b(string)g(to)f(insert)h(at)f(the)i(b)q(eginning)f(of)g(the)g(line)g(b)
+o(y)g(the)555 1273 y Fn(insert-comment)13 b Fo(command.)20
+b(The)15 b(default)g(v)m(alue)h(is)e Fn("#")p Fo(.)315
+1355 y Fn(completion-display-width)555 1410 y Fo(The)21
b(n)o(um)o(b)q(er)g(of)g(screen)g(columns)f(used)i(to)e(displa)o(y)g(p)
-q(ossible)g(matc)o(hes)555 1848 y(when)15 b(p)q(erforming)f
+q(ossible)g(matc)o(hes)555 1465 y(when)15 b(p)q(erforming)f
(completion.)19 b(The)14 b(v)m(alue)h(is)f(ignored)g(if)g(it)g(is)g
-(less)g(than)555 1903 y(0)f(or)f(greater)h(than)g(the)g(terminal)f
+(less)g(than)555 1519 y(0)f(or)f(greater)h(than)g(the)g(terminal)f
(screen)h(width.)19 b(A)13 b(v)m(alue)g(of)g(0)g(will)f(cause)555
-1958 y(matc)o(hes)j(to)f(b)q(e)i(displa)o(y)o(ed)f(one)g(p)q(er)h
-(line.)j(The)d(default)e(v)m(alue)i(is)f(-1.)315 2031
-y Fn(completion-ignore-case)555 2086 y Fo(If)f(set)f(to)g(`)p
+1574 y(matc)o(hes)j(to)f(b)q(e)i(displa)o(y)o(ed)f(one)g(p)q(er)h
+(line.)j(The)d(default)e(v)m(alue)i(is)f(-1.)315 1656
+y Fn(completion-ignore-case)555 1711 y Fo(If)f(set)f(to)g(`)p
Fn(on)p Fo(',)g(Readline)h(p)q(erforms)f(\014lename)h(matc)o(hing)f
-(and)h(completion)555 2140 y(in)h(a)g(case-insensitiv)o(e)f(fashion.)20
+(and)h(completion)555 1766 y(in)h(a)g(case-insensitiv)o(e)f(fashion.)20
b(The)15 b(default)g(v)m(alue)g(is)g(`)p Fn(off)p Fo('.)315
-2213 y Fn(completion-map-case)555 2268 y Fo(If)c(set)g(to)g(`)p
-Fn(on)p Fo(',)f(and)h Fe(completion-ignore-case)i Fo(is)e(enabled,)h
-(Readline)f(treats)555 2323 y(h)o(yphens)16 b(\(`)p Fn(-)p
+1848 y Fn(completion-map-case)555 1903 y Fo(If)c(set)g(to)g(`)p
+Fn(on)p Fo(',)f(and)h Ff(completion-ignore-case)i Fo(is)e(enabled,)h
+(Readline)f(treats)555 1958 y(h)o(yphens)16 b(\(`)p Fn(-)p
Fo('\))e(and)i(underscores)g(\(`)p Fn(_)p Fo('\))d(as)j(equiv)m(alen)o
-(t)f(when)h(p)q(erforming)555 2378 y(case-insensitiv)o(e)e(\014lename)i
-(matc)o(hing)e(and)h(completion.)315 2451 y Fn
-(completion-prefix-display-)o(length)555 2506 y Fo(The)h(length)f(in)h
-(c)o(haracters)f(of)g(the)h(common)f(pre\014x)h(of)f(a)h(list)e(of)h(p)
-q(ossible)555 2560 y(completions)f(that)g(is)g(displa)o(y)o(ed)g
-(without)g(mo)q(di\014cation.)19 b(When)c(set)g(to)f(a)555
-2615 y(v)m(alue)f(greater)f(than)h(zero,)f(common)h(pre\014xes)g
-(longer)f(than)h(this)f(v)m(alue)h(are)555 2670 y(replaced)i(with)g(an)
-g(ellipsis)f(when)i(displa)o(ying)e(p)q(ossible)h(completions.)p
+(t)f(when)h(p)q(erforming)555 2012 y(case-insensitiv)o(e)21
+b(\014lename)i(matc)o(hing)e(and)i(completion.)40 b(The)22
+b(default)555 2067 y(v)m(alue)15 b(is)g(`)p Fn(off)p
+Fo('.)315 2149 y Fn(completion-prefix-display-)o(length)555
+2204 y Fo(The)d(maxim)o(um)g(length)g(in)g(c)o(haracters)f(of)h(the)g
+(common)g(pre\014x)h(of)e(a)h(list)f(of)555 2259 y(p)q(ossible)i
+(completions)g(that)g(is)g(displa)o(y)o(ed)g(without)g(mo)q
+(di\014cation.)19 b(When)555 2314 y(set)14 b(to)g(a)g(v)m(alue)h
+(greater)e(than)i(zero,)f(readline)g(replaces)g(common)g(pre\014xes)555
+2369 y(longer)22 b(than)h(this)f(v)m(alue)h(with)f(an)h(ellipsis)e
+(when)j(displa)o(ying)d(p)q(ossible)555 2423 y(completions.)315
+2506 y Fn(completion-query-items)555 2560 y Fo(The)13
+b(n)o(um)o(b)q(er)h(of)e(p)q(ossible)h(completions)g(that)f(determines)
+h(when)h(the)f(user)555 2615 y(is)21 b(ask)o(ed)g(whether)g(the)h(list)
+e(of)h(p)q(ossibilities)e(should)i(b)q(e)h(displa)o(y)o(ed.)38
+b(If)555 2670 y(the)15 b(n)o(um)o(b)q(er)f(of)h(p)q(ossible)f
+(completions)f(is)h(greater)g(than)g(or)g(equal)h(to)f(this)p
eop end
-%%Page: 6 9
-TeXDict begin 6 8 bop 75 -58 a Fo(Chapter)15 b(1:)k(Command)c(Line)h
-(Editing)1075 b(6)315 149 y Fn(completion-query-items)555
-204 y Fo(The)13 b(n)o(um)o(b)q(er)h(of)e(p)q(ossible)h(completions)g
-(that)f(determines)h(when)h(the)f(user)555 259 y(is)h(ask)o(ed)h
-(whether)g(the)f(list)g(of)g(p)q(ossibilities)f(should)i(b)q(e)g
-(displa)o(y)o(ed.)k(If)c(the)555 314 y(n)o(um)o(b)q(er)f(of)f(p)q
-(ossible)g(completions)f(is)h(greater)g(than)g(this)g(v)m(alue,)h
-(Readline)555 369 y(will)e(ask)h(the)g(user)h(whether)f(or)g(not)g(he)g
-(wishes)g(to)g(view)g(them;)g(otherwise,)555 423 y(they)f(are)g(simply)
-g(listed.)18 b(This)12 b(v)m(ariable)f(m)o(ust)h(b)q(e)h(set)f(to)f(an)
-h(in)o(teger)g(v)m(alue)555 478 y(greater)g(than)g(or)g(equal)g(to)g
-(0.)18 b(A)13 b(negativ)o(e)e(v)m(alue)i(means)f(Readline)h(should)555
-533 y(nev)o(er)i(ask.)20 b(The)15 b(default)g(limit)f(is)g
-Fn(100)p Fo(.)315 633 y Fn(convert-meta)555 688 y Fo(If)d(set)g(to)g(`)
-p Fn(on)p Fo(',)f(Readline)h(will)f(con)o(v)o(ert)g(c)o(haracters)h
-(with)f(the)h(eigh)o(th)g(bit)f(set)555 743 y(to)15 b(an)h
-Fh(asci)q(i)f Fo(k)o(ey)h(sequence)h(b)o(y)f(stripping)f(the)h(eigh)o
-(th)f(bit)h(and)g(pre\014xing)555 798 y(an)c Fn(ESC)g
-Fo(c)o(haracter,)g(con)o(v)o(erting)f(them)h(to)f(a)h(meta-pre\014xed)h
-(k)o(ey)f(sequence.)555 853 y(The)i(default)f(v)m(alue)h(is)g(`)p
-Fn(on)p Fo(',)e(but)i(will)f(b)q(e)h(set)g(to)f(`)p Fn(off)p
-Fo(')f(if)i(the)f(lo)q(cale)h(is)f(one)555 907 y(that)h(con)o(tains)h
-(eigh)o(t-bit)f(c)o(haracters.)315 1008 y Fn(disable-completion)555
-1063 y Fo(If)19 b(set)f(to)f(`)p Fn(On)p Fo(',)h(Readline)h(will)e
-(inhibit)g(w)o(ord)h(completion.)28 b(Completion)555
-1117 y(c)o(haracters)12 b(will)g(b)q(e)i(inserted)f(in)o(to)f(the)h
-(line)f(as)h(if)g(they)g(had)g(b)q(een)h(mapp)q(ed)555
-1172 y(to)h Fn(self-insert)p Fo(.)j(The)d(default)g(is)g(`)p
+%%Page: 7 10
+TeXDict begin 7 9 bop 75 -58 a Fo(Chapter)15 b(1:)k(Command)c(Line)h
+(Editing)1075 b(7)555 149 y(v)m(alue,)22 b(Readline)f(will)f(ask)g
+(whether)i(or)e(not)g(the)h(user)g(wishes)g(to)f(view)555
+204 y(them;)c(otherwise,)f(Readline)i(simply)e(lists)g(the)h
+(completions.)22 b(This)15 b(v)m(ari-)555 259 y(able)g(m)o(ust)h(b)q(e)
+g(set)g(to)f(an)g(in)o(teger)g(v)m(alue)h(greater)f(than)h(or)f(equal)g
+(to)g(zero.)555 314 y(A)g(zero)g(v)m(alue)g(means)g(Readline)g(should)g
+(nev)o(er)g(ask;)f(negativ)o(e)g(v)m(alues)h(are)555
+369 y(treated)g(as)g(zero.)k(The)d(default)e(limit)g(is)h
+Fn(100)p Fo(.)315 451 y Fn(convert-meta)555 506 y Fo(If)e(set)f(to)f(`)
+p Fn(on)p Fo(',)h(Readline)g(will)f(con)o(v)o(ert)h(c)o(haracters)g(it)
+f(reads)h(that)g(ha)o(v)o(e)g(the)555 560 y(eigh)o(th)e(bit)g(set)g(to)
+g(an)h Fh(asci)q(i)f Fo(k)o(ey)g(sequence)i(b)o(y)e(clearing)g(the)h
+(eigh)o(th)f(bit)g(and)555 615 y(pre\014xing)k(an)f Fn(ESC)h
+Fo(c)o(haracter,)e(con)o(v)o(erting)h(them)h(to)f(a)g(meta-pre\014xed)h
+(k)o(ey)555 670 y(sequence.)20 b(The)14 b(default)f(v)m(alue)g(is)g(`)p
+Fn(on)p Fo(',)f(but)i(Readline)f(will)f(set)h(it)g(to)f(`)p
+Fn(off)p Fo(')555 725 y(if)g(the)h(lo)q(cale)f(con)o(tains)f(c)o
+(haracters)h(whose)g(enco)q(dings)h(ma)o(y)f(include)h(b)o(ytes)555
+780 y(with)f(the)g(eigh)o(th)f(bit)h(set.)19 b(This)12
+b(v)m(ariable)f(is)h(dep)q(enden)o(t)i(on)e(the)g Fn(LC_CTYPE)555
+834 y Fo(lo)q(cale)f(category)l(,)h(and)g(ma)o(y)f(c)o(hange)h(if)g
+(the)g(lo)q(cale)f(c)o(hanges.)19 b(This)12 b(v)m(ariable)555
+889 y(also)e(a\013ects)h(k)o(ey)g(bindings;)h(see)f(the)h(description)f
+(of)f Fn(force-meta-prefix)555 944 y Fo(b)q(elo)o(w.)315
+1026 y Fn(disable-completion)555 1081 y Fo(If)19 b(set)f(to)f(`)p
+Fn(On)p Fo(',)h(Readline)h(will)e(inhibit)g(w)o(ord)h(completion.)28
+b(Completion)555 1136 y(c)o(haracters)12 b(will)g(b)q(e)i(inserted)f
+(in)o(to)f(the)h(line)f(as)h(if)g(they)g(had)g(b)q(een)h(mapp)q(ed)555
+1191 y(to)h Fn(self-insert)p Fo(.)j(The)d(default)g(is)g(`)p
Fn(off)p Fo('.)315 1273 y Fn(echo-control-characters)555
1328 y Fo(When)h(set)e(to)h(`)p Fn(on)p Fo(',)f(on)h(op)q(erating)f
(systems)h(that)f(indicate)h(they)g(supp)q(ort)555 1382
-y(it,)g(readline)g(ec)o(ho)q(es)h(a)g(c)o(haracter)f(corresp)q(onding)h
-(to)f(a)g(signal)g(generated)555 1437 y(from)f(the)i(k)o(eyb)q(oard.)k
-(The)15 b(default)g(is)f(`)p Fn(on)p Fo('.)315 1538 y
-Fn(editing-mode)555 1592 y Fo(The)h Fn(editing-mode)d
-Fo(v)m(ariable)i(con)o(trols)f(whic)o(h)h(default)g(set)g(of)g(k)o(ey)g
-(bind-)555 1647 y(ings)e(is)g(used.)20 b(By)12 b(default,)h(Readline)f
-(starts)g(up)h(in)f(Emacs)g(editing)g(mo)q(de,)555 1702
-y(where)j(the)f(k)o(eystrok)o(es)g(are)g(most)g(similar)f(to)g(Emacs.)
-20 b(This)14 b(v)m(ariable)g(can)555 1757 y(b)q(e)i(set)f(to)f(either)h
-(`)p Fn(emacs)p Fo(')f(or)h(`)p Fn(vi)p Fo('.)315 1857
-y Fn(emacs-mode-string)555 1912 y Fo(If)i(the)g Fe(sho)o(w-mo)q
-(de-in-prompt)h Fo(v)m(ariable)e(is)g(enabled,)i(this)e(string)g(is)g
-(dis-)555 1967 y(pla)o(y)o(ed)11 b(immediately)f(b)q(efore)i(the)g
-(last)e(line)h(of)g(the)h(primary)e(prompt)h(when)555
-2022 y(emacs)g(editing)f(mo)q(de)h(is)f(activ)o(e.)18
-b(The)11 b(v)m(alue)g(is)f(expanded)i(lik)o(e)e(a)h(k)o(ey)f(bind-)555
-2076 y(ing,)i(so)h(the)g(standard)f(set)g(of)h(meta-)f(and)h(con)o
-(trol)e(pre\014xes)j(and)f(bac)o(kslash)555 2131 y(escap)q(e)g
-(sequences)g(is)e(a)o(v)m(ailable.)18 b(Use)12 b(the)g(`)p
-Fn(\\1)p Fo(')f(and)h(`)p Fn(\\2)p Fo(')f(escap)q(es)h(to)g(b)q(egin)
-555 2186 y(and)19 b(end)g(sequences)h(of)f(non-prin)o(ting)f(c)o
-(haracters,)g(whic)o(h)h(can)g(b)q(e)g(used)555 2241
-y(to)f(em)o(b)q(ed)h(a)g(terminal)e(con)o(trol)g(sequence)j(in)o(to)e
-(the)h(mo)q(de)g(string.)29 b(The)555 2296 y(default)15
-b(is)f(`)p Fn(@)p Fo('.)315 2396 y Fn(enable-bracketed-paste)555
-2451 y Fo(When)f(set)f(to)f(`)p Fn(On)p Fo(',)h(Readline)g(will)f
-(con\014gure)i(the)f(terminal)f(in)h(a)g(w)o(a)o(y)g(that)555
-2506 y(will)h(enable)h(it)g(to)f(insert)h(eac)o(h)g(paste)g(in)o(to)f
-(the)h(editing)g(bu\013er)g(as)g(a)g(single)555 2560
-y(string)h(of)h(c)o(haracters,)g(instead)g(of)f(treating)g(eac)o(h)i(c)
-o(haracter)e(as)h(if)g(it)g(had)555 2615 y(b)q(een)i(read)e(from)g(the)
-h(k)o(eyb)q(oard.)24 b(This)16 b(can)h(prev)o(en)o(t)f(pasted)h(c)o
-(haracters)555 2670 y(from)d(b)q(eing)i(in)o(terpreted)f(as)g(editing)f
-(commands.)20 b(The)15 b(default)g(is)g(`)p Fn(off)p
-Fo('.)p eop end
-%%Page: 7 10
-TeXDict begin 7 9 bop 75 -58 a Fo(Chapter)15 b(1:)k(Command)c(Line)h
-(Editing)1075 b(7)315 149 y Fn(enable-keypad)555 204
-y Fo(When)12 b(set)f(to)h(`)p Fn(on)p Fo(',)e(Readline)i(will)f(try)g
-(to)g(enable)h(the)g(application)e(k)o(eypad)555 259
-y(when)k(it)e(is)h(called.)19 b(Some)13 b(systems)g(need)h(this)f(to)g
-(enable)g(the)h(arro)o(w)e(k)o(eys.)555 314 y(The)j(default)g(is)g(`)p
-Fn(off)p Fo('.)315 400 y Fn(enable-meta-key)555 455 y
-Fo(When)20 b(set)g(to)f(`)p Fn(on)p Fo(',)h(Readline)g(will)e(try)i(to)
-f(enable)h(an)o(y)g(meta)f(mo)q(di\014er)555 510 y(k)o(ey)i(the)g
-(terminal)e(claims)h(to)g(supp)q(ort)h(when)h(it)e(is)g(called.)37
-b(On)21 b(man)o(y)555 564 y(terminals,)16 b(the)i(meta)f(k)o(ey)h(is)f
-(used)h(to)f(send)h(eigh)o(t-bit)e(c)o(haracters.)27
-b(The)555 619 y(default)15 b(is)f(`)p Fn(on)p Fo('.)315
-705 y Fn(expand-tilde)555 760 y Fo(If)g(set)g(to)f(`)p
-Fn(on)p Fo(',)f(tilde)i(expansion)f(is)h(p)q(erformed)g(when)g
-(Readline)g(attempts)555 815 y(w)o(ord)h(completion.)k(The)c(default)g
-(is)f(`)p Fn(off)p Fo('.)315 901 y Fn(history-preserve-point)555
-956 y Fo(If)21 b(set)g(to)f(`)p Fn(on)p Fo(',)h(the)g(history)f(co)q
+y(it,)e(Readline)h(ec)o(ho)q(es)h(a)f(c)o(haracter)f(corresp)q(onding)h
+(to)f(a)h(signal)f(generated)555 1437 y(from)h(the)i(k)o(eyb)q(oard.)k
+(The)15 b(default)g(is)f(`)p Fn(on)p Fo('.)315 1519 y
+Fn(editing-mode)555 1574 y Fo(The)e Fn(editing-mode)e
+Fo(v)m(ariable)h(con)o(trols)f(the)i(default)f(set)h(of)f(k)o(ey)g
+(bindings.)555 1629 y(By)19 b(default,)f(Readline)h(starts)e(up)i(in)g
+(emacs)f(editing)g(mo)q(de,)h(where)g(the)555 1684 y(k)o(eystrok)o(es)c
+(are)h(most)g(similar)e(to)i(Emacs.)23 b(This)16 b(v)m(ariable)g(can)g
+(b)q(e)h(set)g(to)555 1738 y(either)e(`)p Fn(emacs)p
+Fo(')f(or)g(`)p Fn(vi)p Fo('.)315 1821 y Fn(emacs-mode-string)555
+1875 y Fo(If)j(the)g Ff(sho)o(w-mo)q(de-in-prompt)h Fo(v)m(ariable)e
+(is)g(enabled,)i(this)e(string)g(is)g(dis-)555 1930 y(pla)o(y)o(ed)11
+b(immediately)f(b)q(efore)i(the)g(last)e(line)h(of)g(the)h(primary)e
+(prompt)h(when)555 1985 y(emacs)g(editing)f(mo)q(de)h(is)f(activ)o(e.)
+18 b(The)11 b(v)m(alue)g(is)f(expanded)i(lik)o(e)e(a)h(k)o(ey)f(bind-)
+555 2040 y(ing,)h(so)g(the)h(standard)f(set)g(of)g(meta-)f(and)i(con)o
+(trol-)e(pre\014xes)i(and)g(bac)o(kslash)555 2095 y(escap)q(e)k
+(sequences)h(is)e(a)o(v)m(ailable.)20 b(The)c(`)p Fn(\\1)p
+Fo(')f(and)h(`)p Fn(\\2)p Fo(')e(escap)q(es)j(b)q(egin)f(and)555
+2149 y(end)e(sequences)g(of)e(non-prin)o(ting)g(c)o(haracters,)h(whic)o
+(h)f(can)h(b)q(e)h(used)f(to)g(em-)555 2204 y(b)q(ed)j(a)f(terminal)f
+(con)o(trol)g(sequence)j(in)o(to)d(the)h(mo)q(de)h(string.)j(The)c
+(default)555 2259 y(is)g(`)p Fn(@)p Fo('.)315 2341 y
+Fn(enable-active-region)555 2396 y Ff(p)q(oin)o(t)e Fo(is)f(the)h
+(curren)o(t)f(cursor)h(p)q(osition,)e(and)i Ff(mark)i
+Fo(refers)d(to)g(a)g(sa)o(v)o(ed)h(cur-)555 2451 y(sor)j(p)q(osition)g
+(\(see)g(Section)h(1.4.1)d([Commands)i(F)l(or)g(Mo)o(ving],)f(page)h
+(18\).)555 2506 y(The)23 b(text)g(b)q(et)o(w)o(een)h(the)f(p)q(oin)o(t)
+g(and)g(mark)g(is)g(referred)g(to)g(as)g(the)g Ff(re-)555
+2560 y(gion)p Fo(.)39 b(When)22 b(this)f(v)m(ariable)g(is)g(set)h(to)f
+(`)p Fn(On)p Fo(',)h(Readline)g(allo)o(ws)e(certain)555
+2615 y(commands)f(to)f(designate)g(the)h(region)f(as)g
+Ff(activ)o(e)p Fo(.)30 b(When)19 b(the)f(region)g(is)555
+2670 y(activ)o(e,)h(Readline)g(highligh)o(ts)f(the)h(text)f(in)h(the)g
+(region)g(using)g(the)g(v)m(alue)p eop end
+%%Page: 8 11
+TeXDict begin 8 10 bop 75 -58 a Fo(Chapter)15 b(1:)k(Command)c(Line)h
+(Editing)1075 b(8)555 149 y(of)17 b(the)h Fn(active-region-start-colo)o
+(r)p Fo(,)d(whic)o(h)i(defaults)g(to)g(the)h(string)555
+204 y(that)10 b(enables)h(the)g(terminal's)f(standout)g(mo)q(de.)19
+b(The)11 b(activ)o(e)f(region)h(sho)o(ws)555 259 y(the)16
+b(text)g(inserted)g(b)o(y)f(brac)o(k)o(eted-paste)h(and)g(an)o(y)g
+(matc)o(hing)f(text)h(found)555 314 y(b)o(y)g(incremen)o(tal)g(and)g
+(non-incremen)o(tal)g(history)f(searc)o(hes.)23 b(The)16
+b(default)555 369 y(is)f(`)p Fn(On)p Fo('.)315 460 y
+Fn(enable-bracketed-paste)555 515 y Fo(When)k(set)f(to)f(`)p
+Fn(On)p Fo(',)h(Readline)g(con\014gures)h(the)f(terminal)f(to)g(insert)
+h(eac)o(h)555 570 y(paste)13 b(in)o(to)f(the)h(editing)f(bu\013er)h(as)
+g(a)g(single)f(string)g(of)h(c)o(haracters,)f(instead)555
+624 y(of)h(treating)f(eac)o(h)h(c)o(haracter)f(as)h(if)g(it)f(had)h(b)q
+(een)i(read)e(from)f(the)h(k)o(eyb)q(oard.)555 679 y(This)18
+b(is)g(called)g(putting)g(the)h(terminal)e(in)o(to)h
+Ff(brac)o(k)o(eted)g(paste)g(mo)q(de)s Fo(;)i(it)555
+734 y(prev)o(en)o(ts)15 b(Readline)g(from)f(executing)h(an)o(y)g
+(editing)f(commands)h(b)q(ound)h(to)555 789 y(k)o(ey)f(sequences)h(app)
+q(earing)f(in)g(the)h(pasted)f(text.)k(The)d(default)e(is)h(`)p
+Fn(On)p Fo('.)315 880 y Fn(enable-keypad)555 935 y Fo(When)d(set)f(to)h
+(`)p Fn(on)p Fo(',)e(Readline)i(will)f(try)g(to)g(enable)h(the)g
+(application)e(k)o(eypad)555 990 y(when)k(it)e(is)h(called.)19
+b(Some)13 b(systems)g(need)h(this)f(to)g(enable)g(the)h(arro)o(w)e(k)o
+(eys.)555 1044 y(The)j(default)g(is)g(`)p Fn(off)p Fo('.)315
+1136 y Fn(enable-meta-key)555 1191 y Fo(When)e(set)g(to)f(`)p
+Fn(on)p Fo(',)f(Readline)i(will)f(try)g(to)g(enable)h(an)o(y)f(meta)g
+(mo)q(di\014er)h(k)o(ey)555 1245 y(the)k(terminal)e(claims)h(to)g(supp)
+q(ort)h(when)g(it)f(is)g(called.)24 b(On)17 b(man)o(y)g(termi-)555
+1300 y(nals,)12 b(the)h(Meta)e(k)o(ey)i(is)e(used)i(to)f(send)h(eigh)o
+(t-bit)f(c)o(haracters;)g(this)g(v)m(ariable)555 1355
+y(c)o(hec)o(ks)18 b(for)f(the)h(terminal)f(capabilit)o(y)f(that)h
+(indicates)g(the)h(terminal)f(can)555 1410 y(enable)h(and)g(disable)f
+(a)h(mo)q(de)g(that)f(sets)g(the)h(eigh)o(th)g(bit)f(of)g(a)h(c)o
+(haracter)555 1465 y(\(0200\))12 b(if)i(the)g(Meta)f(k)o(ey)h(is)g
+(held)g(do)o(wn)g(when)h(the)f(c)o(haracter)g(is)f(t)o(yp)q(ed)i(\(a)
+555 1519 y(meta)g(c)o(haracter\).)j(The)e(default)f(is)f(`)p
+Fn(on)p Fo('.)315 1611 y Fn(expand-tilde)555 1665 y Fo(If)j(set)f(to)f
+(`)p Fn(on)p Fo(',)h(Readline)g(attempts)g(tilde)f(expansion)i(when)f
+(it)g(attempts)555 1720 y(w)o(ord)f(completion.)k(The)c(default)g(is)f
+(`)p Fn(off)p Fo('.)315 1812 y Fn(force-meta-prefix)555
+1866 y Fo(If)j(set)f(to)g(`)p Fn(on)p Fo(',)f(Readline)i(mo)q(di\014es)
+f(its)g(b)q(eha)o(vior)g(when)h(binding)f(k)o(ey)h(se-)555
+1921 y(quences)12 b(con)o(taining)e Fg(\\M-)h Fo(or)g
+Fn(Meta-)f Fo(\(see)h Fn(Key)k(Bindings)10 b Fo(in)h(Section)h(1.3.1)
+555 1976 y([Readline)18 b(Init)f(File)g(Syn)o(tax],)g(page)h(4\))f(b)o
+(y)g(con)o(v)o(erting)g(a)g(k)o(ey)h(sequence)555 2031
+y(of)e(the)h(form)g Fg(\\M-)p Ff(C)j Fo(or)c Fn(Meta-)p
+Ff(C)k Fo(to)c(the)h(t)o(w)o(o-c)o(haracter)f(sequence)i
+Fg(ESC)p Ff(C)555 2086 y Fo(\(adding)11 b(the)h(meta)f(pre\014x\).)19
+b(If)12 b Fn(force-meta-prefix)d Fo(is)i(set)h(to)f(`)p
+Fn(off)p Fo(')f(\(the)555 2140 y(default\),)16 b(Readline)h(uses)g(the)
+g(v)m(alue)g(of)f(the)h Fn(convert-meta)e Fo(v)m(ariable)i(to)555
+2195 y(determine)f(whether)g(to)f(p)q(erform)g(this)g(con)o(v)o
+(ersion:)20 b(if)15 b Fn(convert-meta)f Fo(is)555 2250
+y(`)p Fn(on)p Fo(',)c(Readline)h(p)q(erforms)g(the)f(con)o(v)o(ersion)g
+(describ)q(ed)i(ab)q(o)o(v)o(e;)f(if)f(it)g(is)h(`)p
+Fn(off)p Fo(',)555 2305 y(Readline)17 b(con)o(v)o(erts)e
+Ff(C)20 b Fo(to)c(a)g(meta)g(c)o(haracter)g(b)o(y)g(setting)f(the)i
+(eigh)o(th)e(bit)555 2359 y(\(0200\).)j(The)e(default)e(is)h(`)p
+Fn(off)p Fo('.)315 2451 y Fn(history-preserve-point)555
+2506 y Fo(If)21 b(set)g(to)f(`)p Fn(on)p Fo(',)h(the)g(history)f(co)q
(de)h(attempts)f(to)g(place)h(the)g(p)q(oin)o(t)f(\(the)555
-1010 y(curren)o(t)d(cursor)h(p)q(osition\))e(at)h(the)h(same)f(lo)q
-(cation)f(on)i(eac)o(h)g(history)e(line)555 1065 y(retriev)o(ed)i(with)
+2560 y(curren)o(t)d(cursor)h(p)q(osition\))e(at)h(the)h(same)f(lo)q
+(cation)f(on)i(eac)o(h)g(history)e(line)555 2615 y(retriev)o(ed)i(with)
f Fn(previous-history)f Fo(or)i Fn(next-history)p Fo(.)27
-b(The)18 b(default)555 1120 y(is)d(`)p Fn(off)p Fo('.)315
-1206 y Fn(history-size)555 1261 y Fo(Set)20 b(the)f(maxim)o(um)g(n)o
-(um)o(b)q(er)h(of)f(history)f(en)o(tries)h(sa)o(v)o(ed)g(in)g(the)h
-(history)555 1316 y(list.)k(If)17 b(set)g(to)f(zero,)h(an)o(y)f
-(existing)g(history)g(en)o(tries)g(are)h(deleted)g(and)g(no)555
-1371 y(new)f(en)o(tries)f(are)h(sa)o(v)o(ed.)21 b(If)16
-b(set)g(to)f(a)h(v)m(alue)g(less)f(than)h(zero,)g(the)g(n)o(um)o(b)q
-(er)555 1425 y(of)f(history)f(en)o(tries)h(is)f(not)h(limited.)k(By)d
-(default,)e(the)i(n)o(um)o(b)q(er)f(of)g(history)555
-1480 y(en)o(tries)h(is)g(not)g(limited.)22 b(If)17 b(an)g(attempt)e(is)
-h(made)g(to)g(set)h Fe(history-size)h Fo(to)555 1535
-y(a)e(non-n)o(umeric)h(v)m(alue,)g(the)g(maxim)o(um)e(n)o(um)o(b)q(er)i
-(of)g(history)e(en)o(tries)h(will)555 1590 y(b)q(e)g(set)f(to)f(500.)
-315 1676 y Fn(horizontal-scroll-mode)555 1731 y Fo(This)k(v)m(ariable)f
-(can)h(b)q(e)g(set)g(to)f(either)h(`)p Fn(on)p Fo(')f(or)g(`)p
-Fn(off)p Fo('.)27 b(Setting)18 b(it)f(to)g(`)p Fn(on)p
-Fo(')555 1785 y(means)c(that)f(the)i(text)e(of)h(the)g(lines)g(b)q
-(eing)g(edited)g(will)f(scroll)g(horizon)o(tally)555
-1840 y(on)k(a)f(single)g(screen)i(line)e(when)i(they)f(are)f(longer)g
-(than)h(the)g(width)f(of)h(the)555 1895 y(screen,)e(instead)e(of)h
-(wrapping)f(on)o(to)g(a)h(new)g(screen)h(line.)19 b(By)13
-b(default,)g(this)555 1950 y(v)m(ariable)i(is)f(set)h(to)g(`)p
-Fn(off)p Fo('.)315 2036 y Fn(input-meta)555 2091 y Fo(If)h(set)f(to)g
-(`)p Fn(on)p Fo(',)f(Readline)i(will)f(enable)g(eigh)o(t-bit)g(input)g
-(\(it)g(will)f(not)h(clear)555 2146 y(the)20 b(eigh)o(th)f(bit)g(in)h
-(the)g(c)o(haracters)f(it)g(reads\),)h(regardless)f(of)h(what)f(the)555
-2200 y(terminal)i(claims)f(it)i(can)g(supp)q(ort.)40
-b(The)22 b(default)f(v)m(alue)h(is)g(`)p Fn(off)p Fo(',)g(but)555
-2255 y(Readline)12 b(will)f(set)g(it)h(to)f(`)p Fn(on)p
-Fo(')g(if)g(the)h(lo)q(cale)f(con)o(tains)g(eigh)o(t-bit)g(c)o
-(haracters.)555 2310 y(The)k(name)h Fn(meta-flag)e Fo(is)g(a)h(synon)o
-(ym)g(for)g(this)f(v)m(ariable.)315 2396 y Fn(isearch-terminators)555
-2451 y Fo(The)26 b(string)f(of)g(c)o(haracters)g(that)g(should)h
-(terminate)f(an)h(incremen)o(tal)555 2506 y(searc)o(h)12
+b(The)18 b(default)555 2670 y(is)d(`)p Fn(off)p Fo('.)p
+eop end
+%%Page: 9 12
+TeXDict begin 9 11 bop 75 -58 a Fo(Chapter)15 b(1:)k(Command)c(Line)h
+(Editing)1075 b(9)315 149 y Fn(history-size)555 204 y
+Fo(Set)20 b(the)f(maxim)o(um)g(n)o(um)o(b)q(er)h(of)f(history)f(en)o
+(tries)h(sa)o(v)o(ed)g(in)g(the)h(history)555 259 y(list.)k(If)17
+b(set)g(to)f(zero,)h(an)o(y)f(existing)g(history)g(en)o(tries)g(are)h
+(deleted)g(and)g(no)555 314 y(new)f(en)o(tries)f(are)h(sa)o(v)o(ed.)21
+b(If)16 b(set)g(to)f(a)h(v)m(alue)g(less)f(than)h(zero,)g(the)g(n)o(um)
+o(b)q(er)555 369 y(of)f(history)f(en)o(tries)h(is)f(not)h(limited.)k
+(By)d(default,)e(the)i(n)o(um)o(b)q(er)f(of)g(history)555
+423 y(en)o(tries)c(is)h(not)f(limited.)18 b(If)12 b(y)o(ou)f(try)h(to)f
+(set)g Ff(history-size)j Fo(to)d(a)h(non-n)o(umeric)555
+478 y(v)m(alue,)j(the)g(maxim)o(um)f(n)o(um)o(b)q(er)i(of)f(history)f
+(en)o(tries)g(will)g(b)q(e)i(set)f(to)g(500.)315 555
+y Fn(horizontal-scroll-mode)555 610 y Fo(Setting)g(this)h(v)m(ariable)f
+(to)g(`)p Fn(on)p Fo(')g(means)h(that)f(the)h(text)g(of)f(the)h(lines)g
+(b)q(eing)555 665 y(edited)f(will)e(scroll)g(horizon)o(tally)g(on)h(a)h
+(single)e(screen)i(line)g(when)g(the)f(lines)555 719
+y(are)j(longer)f(than)h(the)g(width)f(of)h(the)g(screen,)g(instead)g
+(of)g(wrapping)f(on)o(to)555 774 y(a)k(new)h(screen)h(line.)36
+b(This)20 b(v)m(ariable)h(is)f(automatically)e(set)j(to)f(`)p
+Fn(on)p Fo(')g(for)555 829 y(terminals)14 b(of)h(heigh)o(t)f(1.)20
+b(By)15 b(default,)g(this)f(v)m(ariable)h(is)f(set)h(to)g(`)p
+Fn(off)p Fo('.)315 906 y Fn(input-meta)555 960 y Fo(If)d(set)g(to)f(`)p
+Fn(on)p Fo(',)g(Readline)h(will)e(enable)i(eigh)o(t-bit)f(input)h
+(\(that)e(is,)i(it)f(will)f(not)555 1015 y(clear)17 b(the)g(eigh)o(th)f
+(bit)h(in)g(the)g(c)o(haracters)f(it)h(reads\),)g(regardless)f(of)h
+(what)555 1070 y(the)f(terminal)e(claims)g(it)h(can)h(supp)q(ort.)k
+(The)c(default)f(v)m(alue)h(is)f(`)p Fn(off)p Fo(',)f(but)555
+1125 y(Readline)k(will)e(set)h(it)g(to)g(`)p Fn(on)p
+Fo(')f(if)h(the)h(lo)q(cale)f(con)o(tains)f(c)o(haracters)h(whose)555
+1180 y(enco)q(dings)f(ma)o(y)e(include)h(b)o(ytes)g(with)g(the)g(eigh)o
+(th)g(bit)f(set.)20 b(This)15 b(v)m(ariable)555 1234
+y(is)j(dep)q(enden)o(t)i(on)f(the)f Fn(LC_CTYPE)g Fo(lo)q(cale)g
+(category)l(,)g(and)h(its)f(v)m(alue)h(ma)o(y)555 1289
+y(c)o(hange)f(if)f(the)h(lo)q(cale)g(c)o(hanges.)28 b(The)18
+b(name)g Fn(meta-flag)e Fo(is)i(a)f(synon)o(ym)555 1344
+y(for)e Fn(input-meta)p Fo(.)315 1421 y Fn(isearch-terminators)555
+1475 y Fo(The)26 b(string)f(of)g(c)o(haracters)g(that)g(should)h
+(terminate)f(an)h(incremen)o(tal)555 1530 y(searc)o(h)12
b(without)g(subsequen)o(tly)g(executing)h(the)f(c)o(haracter)g(as)g(a)g
-(command)555 2560 y(\(see)22 b(Section)g(1.2.5)f([Searc)o(hing],)i
+(command)555 1585 y(\(see)22 b(Section)g(1.2.5)f([Searc)o(hing],)i
(page)f(3\).)40 b(If)23 b(this)f(v)m(ariable)f(has)h(not)555
-2615 y(b)q(een)d(giv)o(en)e(a)g(v)m(alue,)i(the)f(c)o(haracters)e
+1640 y(b)q(een)d(giv)o(en)e(a)g(v)m(alue,)i(the)f(c)o(haracters)e
Fn(ESC)i Fo(and)g Fg(C-J)f Fo(will)f(terminate)h(an)555
-2670 y(incremen)o(tal)d(searc)o(h.)p eop end
-%%Page: 8 11
-TeXDict begin 8 10 bop 75 -58 a Fo(Chapter)15 b(1:)k(Command)c(Line)h
-(Editing)1075 b(8)315 149 y Fn(keymap)96 b Fo(Sets)19
-b(Readline's)h(idea)f(of)g(the)g(curren)o(t)h(k)o(eymap)f(for)f(k)o(ey)
-i(binding)f(com-)555 204 y(mands.)41 b(Acceptable)22
-b Fn(keymap)g Fo(names)g(are)f Fn(emacs)p Fo(,)i Fn(emacs-standard)p
-Fo(,)555 259 y Fn(emacs-meta)p Fo(,)49 b Fn(emacs-ctlx)p
+1695 y(incremen)o(tal)d(searc)o(h.)315 1771 y Fn(keymap)96
+b Fo(Sets)32 b(Readline's)g(idea)g(of)g(the)g(curren)o(t)g(k)o(eymap)g
+(for)g(k)o(ey)g(binding)555 1826 y(commands.)j(Built-in)19
+b Fn(keymap)h Fo(names)g(are)g Fn(emacs)p Fo(,)g Fn(emacs-standard)p
+Fo(,)555 1881 y Fn(emacs-meta)p Fo(,)49 b Fn(emacs-ctlx)p
Fo(,)g Fn(vi)p Fo(,)h Fn(vi-move)p Fo(,)f Fn(vi-command)p
-Fo(,)g(and)555 314 y Fn(vi-insert)p Fo(.)40 b Fn(vi)22
+Fo(,)g(and)555 1936 y Fn(vi-insert)p Fo(.)40 b Fn(vi)22
b Fo(is)g(equiv)m(alen)o(t)g(to)g Fn(vi-command)f Fo(\()p
-Fn(vi-move)g Fo(is)h(also)f(a)555 369 y(synon)o(ym\);)h
-Fn(emacs)e Fo(is)g(equiv)m(alen)o(t)g(to)f Fn(emacs-standard)p
-Fo(.)34 b(The)20 b(default)555 423 y(v)m(alue)26 b(is)f
-Fn(emacs)p Fo(.)51 b(The)26 b(v)m(alue)g(of)f(the)h Fn(editing-mode)e
-Fo(v)m(ariable)h(also)555 478 y(a\013ects)14 b(the)i(default)e(k)o
-(eymap.)315 556 y Fn(keyseq-timeout)555 611 y Fo(Sp)q(eci\014es)g(the)f
-(duration)f(Readline)h(will)e(w)o(ait)g(for)h(a)h(c)o(haracter)f(when)h
-(read-)555 666 y(ing)i(an)f(am)o(biguous)g(k)o(ey)h(sequence)h(\(one)f
-(that)f(can)i(form)e(a)g(complete)h(k)o(ey)555 721 y(sequence)j(using)e
-(the)h(input)f(read)h(so)f(far,)g(or)g(can)h(tak)o(e)f(additional)f
-(input)555 776 y(to)h(complete)g(a)g(longer)g(k)o(ey)g(sequence\).)25
-b(If)16 b(no)h(input)f(is)g(receiv)o(ed)h(within)555
-830 y(the)22 b(timeout,)f(Readline)h(will)e(use)i(the)g(shorter)e(but)i
-(complete)f(k)o(ey)h(se-)555 885 y(quence.)e(Readline)13
-b(uses)g(this)f(v)m(alue)h(to)g(determine)f(whether)h(or)g(not)f(input)
-555 940 y(is)j(a)o(v)m(ailable)f(on)h(the)g(curren)o(t)h(input)f
-(source)g(\()p Fn(rl_instream)f Fo(b)o(y)h(default\).)555
-995 y(The)e(v)m(alue)g(is)f(sp)q(eci\014ed)i(in)e(milliseconds,)g(so)g
-(a)g(v)m(alue)h(of)g(1000)e(means)i(that)555 1050 y(Readline)e(will)f
-(w)o(ait)g(one)h(second)h(for)f(additional)e(input.)19
-b(If)11 b(this)g(v)m(ariable)f(is)555 1104 y(set)k(to)f(a)h(v)m(alue)g
-(less)f(than)h(or)g(equal)f(to)h(zero,)f(or)h(to)f(a)h(non-n)o(umeric)g
-(v)m(alue,)555 1159 y(Readline)h(will)e(w)o(ait)g(un)o(til)h(another)g
-(k)o(ey)h(is)f(pressed)h(to)f(decide)i(whic)o(h)e(k)o(ey)555
-1214 y(sequence)i(to)f(complete.)20 b(The)15 b(default)g(v)m(alue)g(is)
-g Fn(500)p Fo(.)315 1292 y Fn(mark-directories)555 1347
-y Fo(If)k(set)g(to)g(`)p Fn(on)p Fo(',)f(completed)h(directory)g(names)
-g(ha)o(v)o(e)f(a)h(slash)g(app)q(ended.)555 1402 y(The)c(default)g(is)g
-(`)p Fn(on)p Fo('.)315 1480 y Fn(mark-modified-lines)555
-1535 y Fo(This)j(v)m(ariable,)f(when)i(set)e(to)h(`)p
-Fn(on)p Fo(',)f(causes)h(Readline)g(to)f(displa)o(y)g(an)h(as-)555
-1590 y(terisk)e(\(`)p Fn(*)p Fo('\))f(at)i(the)f(start)g(of)h(history)e
-(lines)i(whic)o(h)f(ha)o(v)o(e)h(b)q(een)h(mo)q(di\014ed.)555
-1645 y(This)d(v)m(ariable)f(is)h(`)p Fn(off)p Fo(')f(b)o(y)h(default.)
-315 1723 y Fn(mark-symlinked-directories)555 1778 y Fo(If)30
-b(set)f(to)g(`)p Fn(on)p Fo(',)j(completed)e(names)g(whic)o(h)f(are)h
-(sym)o(b)q(olic)f(links)g(to)555 1832 y(directories)34
-b(ha)o(v)o(e)g(a)h(slash)f(app)q(ended)i(\(sub)s(ject)e(to)h(the)f(v)m
-(alue)h(of)555 1887 y Fn(mark-directories)p Fo(\).)17
-b(The)f(default)f(is)f(`)p Fn(off)p Fo('.)315 1965 y
-Fn(match-hidden-files)555 2020 y Fo(This)d(v)m(ariable,)g(when)g(set)g
-(to)g(`)p Fn(on)p Fo(',)f(causes)h(Readline)h(to)e(matc)o(h)h(\014les)g
-(whose)555 2075 y(names)22 b(b)q(egin)g(with)g(a)f(`)p
-Fn(.)p Fo(')h(\(hidden)g(\014les\))g(when)g(p)q(erforming)g(\014lename)
-555 2130 y(completion.)35 b(If)21 b(set)g(to)f(`)p Fn(off)p
-Fo(',)g(the)h(leading)f(`)p Fn(.)p Fo(')g(m)o(ust)g(b)q(e)h(supplied)g
-(b)o(y)555 2185 y(the)c(user)g(in)g(the)g(\014lename)h(to)e(b)q(e)i
-(completed.)25 b(This)17 b(v)m(ariable)f(is)h(`)p Fn(on)p
-Fo(')f(b)o(y)555 2239 y(default.)315 2318 y Fn
-(menu-complete-display-pref)o(ix)555 2373 y Fo(If)h(set)g(to)f(`)p
-Fn(on)p Fo(',)f(men)o(u)i(completion)f(displa)o(ys)g(the)h(common)f
-(pre\014x)i(of)e(the)555 2427 y(list)i(of)g(p)q(ossible)g(completions)g
-(\(whic)o(h)h(ma)o(y)f(b)q(e)h(empt)o(y\))f(b)q(efore)h(cycling)555
-2482 y(through)c(the)g(list.)k(The)c(default)g(is)g(`)p
-Fn(off)p Fo('.)315 2560 y Fn(output-meta)555 2615 y Fo(If)j(set)f(to)g
-(`)p Fn(on)p Fo(',)g(Readline)h(will)f(displa)o(y)g(c)o(haracters)f
-(with)i(the)f(eigh)o(th)g(bit)555 2670 y(set)h(directly)g(rather)f
-(than)h(as)g(a)g(meta-pre\014xed)h(escap)q(e)g(sequence.)30
-b(The)p eop end
-%%Page: 9 12
-TeXDict begin 9 11 bop 75 -58 a Fo(Chapter)15 b(1:)k(Command)c(Line)h
-(Editing)1075 b(9)555 149 y(default)12 b(is)h(`)p Fn(off)p
-Fo(',)e(but)i(Readline)h(will)d(set)i(it)f(to)g(`)p Fn(on)p
-Fo(')g(if)g(the)h(lo)q(cale)f(con)o(tains)555 204 y(eigh)o(t-bit)i(c)o
-(haracters.)315 290 y Fn(page-completions)555 345 y Fo(If)j(set)g(to)f
-(`)p Fn(on)p Fo(',)g(Readline)h(uses)h(an)e(in)o(ternal)g
-Fn(more)p Fo(-lik)o(e)g(pager)h(to)f(displa)o(y)555 400
+Fn(vi-move)g Fo(is)h(also)f(a)555 1991 y(synon)o(ym\);)f
+Fn(emacs)e Fo(is)g(equiv)m(alen)o(t)h(to)f Fn(emacs-standard)p
+Fo(.)29 b(Applications)555 2045 y(ma)o(y)16 b(add)i(additional)d
+(names.)26 b(The)18 b(default)e(v)m(alue)i(is)e Fn(emacs)p
+Fo(;)h(the)h(v)m(alue)555 2100 y(of)d(the)g Fn(editing-mode)f
+Fo(v)m(ariable)g(also)g(a\013ects)h(the)g(default)g(k)o(eymap.)315
+2177 y Fn(keyseq-timeout)555 2232 y Fo(Sp)q(eci\014es)f(the)f(duration)
+f(Readline)h(will)e(w)o(ait)g(for)h(a)h(c)o(haracter)f(when)h(read-)555
+2286 y(ing)i(an)f(am)o(biguous)g(k)o(ey)h(sequence)h(\(one)f(that)f
+(can)i(form)e(a)g(complete)h(k)o(ey)555 2341 y(sequence)j(using)e(the)h
+(input)f(read)h(so)f(far,)g(or)g(can)h(tak)o(e)f(additional)f(input)555
+2396 y(to)21 b(complete)g(a)g(longer)f(k)o(ey)i(sequence\).)39
+b(If)21 b(Readline)h(do)q(esn't)f(receiv)o(e)555 2451
+y(an)o(y)16 b(input)g(within)f(the)h(timeout,)f(it)g(will)f(use)j(the)f
+(shorter)f(but)h(complete)555 2506 y(k)o(ey)k(sequence.)38
+b(Readline)21 b(uses)f(this)g(v)m(alue)h(to)f(determine)h(whether)f(or)
+555 2560 y(not)13 b(input)g(is)g(a)o(v)m(ailable)f(on)i(the)f(curren)o
+(t)h(input)f(source)g(\()p Fn(rl_instream)f Fo(b)o(y)555
+2615 y(default\).)24 b(The)16 b(v)m(alue)h(is)g(sp)q(eci\014ed)g(in)g
+(milliseconds,)e(so)i(a)f(v)m(alue)h(of)f(1000)555 2670
+y(means)h(that)g(Readline)h(will)e(w)o(ait)f(one)j(second)g(for)f
+(additional)e(input.)27 b(If)p eop end
+%%Page: 10 13
+TeXDict begin 10 12 bop 75 -58 a Fo(Chapter)15 b(1:)k(Command)c(Line)h
+(Editing)1053 b(10)555 149 y(this)19 b(v)m(ariable)g(is)h(set)f(to)g(a)
+h(v)m(alue)g(less)f(than)h(or)f(equal)g(to)h(zero,)g(or)f(to)g(a)555
+204 y(non-n)o(umeric)d(v)m(alue,)h(Readline)f(will)f(w)o(ait)g(un)o
+(til)g(another)h(k)o(ey)g(is)f(pressed)555 259 y(to)c(decide)i(whic)o
+(h)f(k)o(ey)g(sequence)h(to)e(complete.)18 b(The)13 b(default)e(v)m
+(alue)h(is)g Fn(500)p Fo(.)315 336 y Fn(mark-directories)555
+391 y Fo(If)19 b(set)g(to)g(`)p Fn(on)p Fo(',)f(completed)h(directory)g
+(names)g(ha)o(v)o(e)f(a)h(slash)g(app)q(ended.)555 445
+y(The)c(default)g(is)g(`)p Fn(on)p Fo('.)315 522 y Fn
+(mark-modified-lines)555 577 y Fo(When)d(this)f(v)m(ariable)g(is)g(set)
+h(to)f(`)p Fn(on)p Fo(',)g(Readline)h(will)e(to)h(displa)o(y)g(an)g
+(asterisk)555 632 y(\(`)p Fn(*)p Fo('\))16 b(at)i(the)f(start)g(of)h
+(history)e(lines)i(whic)o(h)g(ha)o(v)o(e)f(b)q(een)i(mo)q(di\014ed.)28
+b(This)555 686 y(v)m(ariable)15 b(is)f(`)p Fn(off)p Fo(')g(b)o(y)h
+(default.)315 763 y Fn(mark-symlinked-directories)555
+818 y Fo(If)30 b(set)f(to)g(`)p Fn(on)p Fo(',)j(completed)e(names)g
+(whic)o(h)f(are)h(sym)o(b)q(olic)f(links)g(to)555 873
+y(directories)34 b(ha)o(v)o(e)g(a)h(slash)f(app)q(ended,)41
+b(sub)s(ject)34 b(to)h(the)f(v)m(alue)h(of)555 928 y
+Fn(mark-directories)p Fo(.)18 b(The)d(default)g(is)g(`)p
+Fn(off)p Fo('.)315 1004 y Fn(match-hidden-files)555 1059
+y Fo(This)d(v)m(ariable,)g(when)g(set)g(to)g(`)p Fn(on)p
+Fo(',)f(forces)h(Readline)h(to)e(matc)o(h)h(\014les)g(whose)555
+1114 y(names)22 b(b)q(egin)g(with)g(a)f(`)p Fn(.)p Fo(')h(\(hidden)g
+(\014les\))g(when)g(p)q(erforming)g(\014lename)555 1169
+y(completion.)d(If)c(set)f(to)g(`)p Fn(off)p Fo(',)f(the)h(user)h(m)o
+(ust)f(include)h(the)g(leading)f(`)p Fn(.)p Fo(')f(in)555
+1223 y(the)i(\014lename)h(to)e(b)q(e)i(completed.)k(This)15
+b(v)m(ariable)f(is)h(`)p Fn(on)p Fo(')f(b)o(y)h(default.)315
+1300 y Fn(menu-complete-display-pref)o(ix)555 1355 y
+Fo(If)i(set)g(to)f(`)p Fn(on)p Fo(',)f(men)o(u)i(completion)f(displa)o
+(ys)g(the)h(common)f(pre\014x)i(of)e(the)555 1410 y(list)i(of)g(p)q
+(ossible)g(completions)g(\(whic)o(h)h(ma)o(y)f(b)q(e)h(empt)o(y\))f(b)q
+(efore)h(cycling)555 1465 y(through)c(the)g(list.)k(The)c(default)g(is)
+g(`)p Fn(off)p Fo('.)315 1541 y Fn(output-meta)555 1596
+y Fo(If)j(set)f(to)g(`)p Fn(on)p Fo(',)g(Readline)h(will)f(displa)o(y)g
+(c)o(haracters)f(with)i(the)f(eigh)o(th)g(bit)555 1651
+y(set)h(directly)g(rather)f(than)h(as)g(a)g(meta-pre\014xed)h(escap)q
+(e)g(sequence.)30 b(The)555 1706 y(default)12 b(is)h(`)p
+Fn(off)p Fo(',)e(but)i(Readline)h(will)d(set)i(it)f(to)g(`)p
+Fn(on)p Fo(')g(if)g(the)h(lo)q(cale)f(con)o(tains)555
+1760 y(c)o(haracters)k(whose)g(enco)q(dings)h(ma)o(y)f(include)h(b)o
+(ytes)f(with)g(the)g(eigh)o(th)g(bit)555 1815 y(set.)30
+b(This)19 b(v)m(ariable)f(is)g(dep)q(enden)o(t)j(on)d(the)h
+Fn(LC_CTYPE)f Fo(lo)q(cale)g(category)l(,)555 1870 y(and)d(its)g(v)m
+(alue)g(ma)o(y)g(c)o(hange)g(if)g(the)g(lo)q(cale)f(c)o(hanges.)315
+1947 y Fn(page-completions)555 2001 y Fo(If)j(set)g(to)f(`)p
+Fn(on)p Fo(',)g(Readline)h(uses)h(an)e(in)o(ternal)g
+Fn(more)p Fo(-lik)o(e)g(pager)h(to)f(displa)o(y)555 2056
y(a)g(screenful)g(of)g(p)q(ossible)g(completions)f(at)h(a)g(time.)22
-b(This)16 b(v)m(ariable)f(is)h(`)p Fn(on)p Fo(')555 455
-y(b)o(y)f(default.)315 541 y Fn(print-completions-horizont)o(ally)555
-596 y Fo(If)d(set)g(to)f(`)p Fn(on)p Fo(',)h(Readline)g(will)e(displa)o
-(y)i(completions)f(with)g(matc)o(hes)g(sorted)555 650
-y(horizon)o(tally)20 b(in)h(alphab)q(etical)g(order,)i(rather)e(than)g
-(do)o(wn)h(the)g(screen.)555 705 y(The)15 b(default)g(is)g(`)p
-Fn(off)p Fo('.)315 791 y Fn(revert-all-at-newline)555
-846 y Fo(If)g(set)g(to)f(`)p Fn(on)p Fo(',)f(Readline)i(will)f(undo)h
-(all)f(c)o(hanges)g(to)h(history)e(lines)i(b)q(efore)555
-901 y(returning)f(when)h Fn(accept-line)e Fo(is)g(executed.)21
-b(By)14 b(default,)g(history)f(lines)555 956 y(ma)o(y)20
-b(b)q(e)i(mo)q(di\014ed)f(and)g(retain)f(individual)g(undo)i(lists)d
-(across)i(calls)f(to)555 1010 y Fn(readline)p Fo(.)f(The)c(default)g
-(is)g(`)p Fn(off)p Fo('.)315 1097 y Fn(show-all-if-ambiguous)555
-1151 y Fo(This)g(alters)e(the)j(default)e(b)q(eha)o(vior)h(of)f(the)h
-(completion)f(functions.)20 b(If)15 b(set)555 1206 y(to)e(`)p
-Fn(on)p Fo(',)g(w)o(ords)g(whic)o(h)g(ha)o(v)o(e)h(more)f(than)g(one)h
-(p)q(ossible)g(completion)f(cause)555 1261 y(the)20 b(matc)o(hes)f(to)f
-(b)q(e)j(listed)d(immediately)g(instead)h(of)g(ringing)g(the)g(b)q
-(ell.)555 1316 y(The)c(default)g(v)m(alue)h(is)e(`)p
-Fn(off)p Fo('.)315 1402 y Fn(show-all-if-unmodified)555
-1457 y Fo(This)19 b(alters)f(the)i(default)e(b)q(eha)o(vior)h(of)g(the)
-h(completion)e(functions)h(in)g(a)555 1511 y(fashion)12
-b(similar)f(to)h Fe(sho)o(w-all-if-am)o(biguous)p Fo(.)17
+b(This)16 b(v)m(ariable)f(is)h(`)p Fn(on)p Fo(')555 2111
+y(b)o(y)f(default.)315 2188 y Fn(prefer-visible-bell)555
+2243 y Fo(See)h Fn(bell-style)p Fo(.)315 2319 y Fn
+(print-completions-horizont)o(ally)555 2374 y Fo(If)c(set)g(to)f(`)p
+Fn(on)p Fo(',)h(Readline)g(will)e(displa)o(y)i(completions)f(with)g
+(matc)o(hes)g(sorted)555 2429 y(horizon)o(tally)20 b(in)h(alphab)q
+(etical)g(order,)i(rather)e(than)g(do)o(wn)h(the)g(screen.)555
+2484 y(The)15 b(default)g(is)g(`)p Fn(off)p Fo('.)315
+2560 y Fn(revert-all-at-newline)555 2615 y Fo(If)g(set)g(to)f(`)p
+Fn(on)p Fo(',)f(Readline)i(will)f(undo)h(all)f(c)o(hanges)g(to)h
+(history)e(lines)i(b)q(efore)555 2670 y(returning)i(when)i(executing)f
+Fn(accept-line)p Fo(.)26 b(By)18 b(default,)g(history)e(lines)p
+eop end
+%%Page: 11 14
+TeXDict begin 11 13 bop 75 -58 a Fo(Chapter)15 b(1:)k(Command)c(Line)h
+(Editing)1053 b(11)555 149 y(ma)o(y)20 b(b)q(e)i(mo)q(di\014ed)f(and)g
+(retain)f(individual)g(undo)i(lists)d(across)i(calls)f(to)555
+204 y Fn(readline\(\))p Fo(.)e(The)e(default)f(is)f(`)p
+Fn(off)p Fo('.)315 296 y Fn(search-ignore-case)555 350
+y Fo(If)j(set)g(to)g(`)p Fn(on)p Fo(',)f(Readline)h(p)q(erforms)g
+(incremen)o(tal)f(and)h(non-incremen)o(tal)555 405 y(history)12
+b(list)h(searc)o(hes)g(in)g(a)h(case-insensitiv)o(e)e(fashion.)19
+b(The)14 b(default)f(v)m(alue)555 460 y(is)i(`)p Fn(off)p
+Fo('.)315 551 y Fn(show-all-if-ambiguous)555 606 y Fo(This)g(alters)e
+(the)j(default)e(b)q(eha)o(vior)h(of)f(the)h(completion)f(functions.)20
+b(If)15 b(set)555 661 y(to)e(`)p Fn(on)p Fo(',)g(w)o(ords)g(whic)o(h)g
+(ha)o(v)o(e)h(more)f(than)g(one)h(p)q(ossible)g(completion)f(cause)555
+716 y(the)20 b(matc)o(hes)f(to)f(b)q(e)j(listed)d(immediately)g
+(instead)h(of)g(ringing)g(the)g(b)q(ell.)555 770 y(The)c(default)g(v)m
+(alue)h(is)e(`)p Fn(off)p Fo('.)315 862 y Fn(show-all-if-unmodified)555
+917 y Fo(This)19 b(alters)f(the)i(default)e(b)q(eha)o(vior)h(of)g(the)h
+(completion)e(functions)h(in)g(a)555 971 y(fashion)12
+b(similar)f(to)h Ff(sho)o(w-all-if-am)o(biguous)p Fo(.)17
b(If)c(set)f(to)g(`)p Fn(on)p Fo(',)g(w)o(ords)g(whic)o(h)555
-1566 y(ha)o(v)o(e)j(more)g(than)g(one)h(p)q(ossible)f(completion)f
-(without)h(an)o(y)g(p)q(ossible)g(par-)555 1621 y(tial)20
+1026 y(ha)o(v)o(e)j(more)g(than)g(one)h(p)q(ossible)f(completion)f
+(without)h(an)o(y)g(p)q(ossible)g(par-)555 1081 y(tial)20
b(completion)g(\(the)h(p)q(ossible)g(completions)f(don't)h(share)g(a)f
-(common)555 1676 y(pre\014x\))15 b(cause)h(the)f(matc)o(hes)g(to)f(b)q
+(common)555 1136 y(pre\014x\))15 b(cause)h(the)f(matc)o(hes)g(to)f(b)q
(e)i(listed)e(immediately)g(instead)h(of)f(ring-)555
-1731 y(ing)h(the)g(b)q(ell.)20 b(The)15 b(default)g(v)m(alue)g(is)g(`)p
-Fn(off)p Fo('.)315 1817 y Fn(show-mode-in-prompt)555
-1872 y Fo(If)d(set)g(to)g(`)p Fn(on)p Fo(',)f(add)h(a)g(string)f(to)h
+1191 y(ing)h(the)g(b)q(ell.)20 b(The)15 b(default)g(v)m(alue)g(is)g(`)p
+Fn(off)p Fo('.)315 1282 y Fn(show-mode-in-prompt)555
+1337 y Fo(If)d(set)g(to)g(`)p Fn(on)p Fo(',)f(add)h(a)g(string)f(to)h
(the)g(b)q(eginning)g(of)g(the)g(prompt)g(indicating)555
-1926 y(the)17 b(editing)f(mo)q(de:)23 b(emacs,)16 b(vi)g(command,)h(or)
-f(vi)g(insertion.)23 b(The)17 b(mo)q(de)555 1981 y(strings)22
-b(are)g(user-settable)g(\(e.g.,)h Fe(emacs-mo)q(de-string)t
-Fo(\).)41 b(The)23 b(default)555 2036 y(v)m(alue)15 b(is)g(`)p
-Fn(off)p Fo('.)315 2122 y Fn(skip-completed-text)555
-2177 y Fo(If)i(set)f(to)g(`)p Fn(on)p Fo(',)f(this)h(alters)f(the)i
+1391 y(the)17 b(editing)f(mo)q(de:)23 b(emacs,)16 b(vi)g(command,)h(or)
+f(vi)g(insertion.)23 b(The)17 b(mo)q(de)555 1446 y(strings)22
+b(are)g(user-settable)g(\(e.g.,)h Ff(emacs-mo)q(de-string)t
+Fo(\).)41 b(The)23 b(default)555 1501 y(v)m(alue)15 b(is)g(`)p
+Fn(off)p Fo('.)315 1592 y Fn(skip-completed-text)555
+1647 y Fo(If)i(set)f(to)g(`)p Fn(on)p Fo(',)f(this)h(alters)f(the)i
(default)f(completion)f(b)q(eha)o(vior)h(when)h(in-)555
-2232 y(serting)d(a)g(single)g(matc)o(h)g(in)o(to)f(the)i(line.)k(It's)
-14 b(only)g(activ)o(e)g(when)h(p)q(erform-)555 2286 y(ing)i(completion)
+1702 y(serting)d(a)g(single)g(matc)o(h)g(in)o(to)f(the)i(line.)k(It's)
+14 b(only)g(activ)o(e)g(when)h(p)q(erform-)555 1757 y(ing)i(completion)
f(in)h(the)h(middle)f(of)g(a)g(w)o(ord.)25 b(If)18 b(enabled,)g
-(readline)f(do)q(es)555 2341 y(not)j(insert)g(c)o(haracters)f(from)h
+(readline)f(do)q(es)555 1812 y(not)j(insert)g(c)o(haracters)f(from)h
(the)g(completion)f(that)h(matc)o(h)g(c)o(haracters)555
-2396 y(after)e(p)q(oin)o(t)g(in)g(the)g(w)o(ord)g(b)q(eing)h
+1866 y(after)e(p)q(oin)o(t)g(in)g(the)g(w)o(ord)g(b)q(eing)h
(completed,)g(so)f(p)q(ortions)f(of)h(the)h(w)o(ord)555
-2451 y(follo)o(wing)14 b(the)h(cursor)h(are)g(not)f(duplicated.)22
-b(F)l(or)15 b(instance,)g(if)h(this)f(is)g(en-)555 2506
-y(abled,)21 b(attempting)e(completion)g(when)i(the)f(cursor)g(is)g
-(after)g(the)g(`)p Fn(e)p Fo(')f(in)555 2560 y(`)p Fn(Makefile)p
-Fo(')e(will)g(result)h(in)h(`)p Fn(Makefile)p Fo(')e(rather)h(than)h(`)
-p Fn(Makefilefile)p Fo(',)555 2615 y(assuming)e(there)h(is)f(a)g
-(single)g(p)q(ossible)g(completion.)27 b(The)18 b(default)f(v)m(alue)
-555 2670 y(is)e(`)p Fn(off)p Fo('.)p eop end
-%%Page: 10 13
-TeXDict begin 10 12 bop 75 -58 a Fo(Chapter)15 b(1:)k(Command)c(Line)h
-(Editing)1053 b(10)315 149 y Fn(vi-cmd-mode-string)555
-204 y Fo(If)17 b(the)g Fe(sho)o(w-mo)q(de-in-prompt)h
+1921 y(follo)o(wing)14 b(the)h(cursor)h(are)g(not)f(duplicated.)22
+b(F)l(or)15 b(instance,)g(if)h(this)f(is)g(en-)555 1976
+y(abled,)h(attempting)f(completion)g(when)i(the)g(cursor)e(is)h(after)g
+(the)g(\014rst)g(`)p Fn(e)p Fo(')555 2031 y(in)c(`)p
+Fn(Makefile)p Fo(')d(will)i(result)g(in)g(`)p Fn(Makefile)p
+Fo(')f(rather)h(than)h(`)p Fn(Makefilefile)p Fo(',)555
+2086 y(assuming)17 b(there)h(is)f(a)g(single)g(p)q(ossible)g
+(completion.)27 b(The)18 b(default)f(v)m(alue)555 2140
+y(is)e(`)p Fn(off)p Fo('.)315 2232 y Fn(vi-cmd-mode-string)555
+2286 y Fo(If)i(the)g Ff(sho)o(w-mo)q(de-in-prompt)h Fo(v)m(ariable)e
+(is)g(enabled,)i(this)e(string)g(is)g(dis-)555 2341 y(pla)o(y)o(ed)11
+b(immediately)f(b)q(efore)i(the)g(last)e(line)h(of)g(the)h(primary)e
+(prompt)h(when)555 2396 y(vi)16 b(editing)f(mo)q(de)h(is)g(activ)o(e)f
+(and)i(in)f(command)g(mo)q(de.)22 b(The)17 b(v)m(alue)f(is)g(ex-)555
+2451 y(panded)d(lik)o(e)e(a)h(k)o(ey)g(binding,)h(so)e(the)i(standard)e
+(set)h(of)g(meta-)g(and)g(con)o(trol-)555 2506 y(pre\014xes)17
+b(and)f(bac)o(kslash)f(escap)q(e)i(sequences)g(is)f(a)o(v)m(ailable.)21
+b(The)16 b(`)p Fn(\\1)p Fo(')f(and)555 2560 y(`)p Fn(\\2)p
+Fo(')k(escap)q(es)i(b)q(egin)g(and)f(end)h(sequences)h(of)e(non-prin)o
+(ting)f(c)o(haracters,)555 2615 y(whic)o(h)e(can)h(b)q(e)g(used)g(to)f
+(em)o(b)q(ed)h(a)f(terminal)g(con)o(trol)f(sequence)i(in)o(to)f(the)555
+2670 y(mo)q(de)e(string.)k(The)d(default)f(is)f(`)p Fn(\(cmd\))p
+Fo('.)p eop end
+%%Page: 12 15
+TeXDict begin 12 14 bop 75 -58 a Fo(Chapter)15 b(1:)k(Command)c(Line)h
+(Editing)1053 b(12)315 149 y Fn(vi-ins-mode-string)555
+204 y Fo(If)17 b(the)g Ff(sho)o(w-mo)q(de-in-prompt)h
Fo(v)m(ariable)e(is)g(enabled,)i(this)e(string)g(is)g(dis-)555
259 y(pla)o(y)o(ed)11 b(immediately)f(b)q(efore)i(the)g(last)e(line)h
-(of)g(the)h(primary)e(prompt)h(when)555 314 y(vi)16 b(editing)f(mo)q
-(de)h(is)g(activ)o(e)f(and)i(in)f(command)g(mo)q(de.)22
-b(The)17 b(v)m(alue)f(is)g(ex-)555 369 y(panded)e(lik)o(e)f(a)g(k)o(ey)
-g(binding,)h(so)f(the)g(standard)g(set)h(of)f(meta-)g(and)g(con)o(trol)
-555 423 y(pre\014xes)18 b(and)g(bac)o(kslash)f(escap)q(e)h(sequences)g
-(is)f(a)o(v)m(ailable.)26 b(Use)17 b(the)h(`)p Fn(\\1)p
-Fo(')555 478 y(and)12 b(`)p Fn(\\2)p Fo(')f(escap)q(es)i(to)e(b)q(egin)
-h(and)h(end)f(sequences)h(of)f(non-prin)o(ting)f(c)o(harac-)555
-533 y(ters,)k(whic)o(h)g(can)g(b)q(e)h(used)g(to)f(em)o(b)q(ed)h(a)f
-(terminal)f(con)o(trol)g(sequence)j(in)o(to)555 588 y(the)e(mo)q(de)h
-(string.)j(The)c(default)g(is)g(`)p Fn(\(cmd\))p Fo('.)315
-670 y Fn(vi-ins-mode-string)555 725 y Fo(If)i(the)g Fe(sho)o(w-mo)q
-(de-in-prompt)h Fo(v)m(ariable)e(is)g(enabled,)i(this)e(string)g(is)g
-(dis-)555 780 y(pla)o(y)o(ed)11 b(immediately)f(b)q(efore)i(the)g(last)
-e(line)h(of)g(the)h(primary)e(prompt)h(when)555 834 y(vi)17
-b(editing)g(mo)q(de)h(is)f(activ)o(e)f(and)i(in)f(insertion)g(mo)q(de.)
-27 b(The)18 b(v)m(alue)g(is)f(ex-)555 889 y(panded)d(lik)o(e)f(a)g(k)o
-(ey)g(binding,)h(so)f(the)g(standard)g(set)h(of)f(meta-)g(and)g(con)o
-(trol)555 944 y(pre\014xes)18 b(and)g(bac)o(kslash)f(escap)q(e)h
-(sequences)g(is)f(a)o(v)m(ailable.)26 b(Use)17 b(the)h(`)p
-Fn(\\1)p Fo(')555 999 y(and)12 b(`)p Fn(\\2)p Fo(')f(escap)q(es)i(to)e
-(b)q(egin)h(and)h(end)f(sequences)h(of)f(non-prin)o(ting)f(c)o(harac-)
-555 1054 y(ters,)k(whic)o(h)g(can)g(b)q(e)h(used)g(to)f(em)o(b)q(ed)h
-(a)f(terminal)f(con)o(trol)g(sequence)j(in)o(to)555 1108
-y(the)e(mo)q(de)h(string.)j(The)c(default)g(is)g(`)p
-Fn(\(ins\))p Fo('.)315 1191 y Fn(visible-stats)555 1245
-y Fo(If)h(set)g(to)f(`)p Fn(on)p Fo(',)g(a)h(c)o(haracter)f(denoting)g
-(a)h(\014le's)g(t)o(yp)q(e)g(is)f(app)q(ended)j(to)d(the)555
-1300 y(\014lename)g(when)h(listing)e(p)q(ossible)h(completions.)j(The)e
-(default)f(is)f(`)p Fn(off)p Fo('.)75 1382 y(Key)i(Bindings)315
-1437 y(The)21 b(syn)o(tax)f(for)h(con)o(trolling)e(k)o(ey)i(bindings)f
-(in)h(the)g(init)f(\014le)h(is)g(simple.)37 b(First)19
-b(y)o(ou)315 1492 y(need)c(to)e(\014nd)h(the)g(name)g(of)g(the)f
-(command)h(that)f(y)o(ou)h(w)o(an)o(t)f(to)g(c)o(hange.)19
-b(The)14 b(follo)o(wing)315 1547 y(sections)j(con)o(tain)h(tables)f(of)
-g(the)h(command)g(name,)g(the)g(default)g(k)o(eybinding,)g(if)f(an)o(y)
-l(,)315 1601 y(and)e(a)g(short)g(description)g(of)f(what)h(the)g
-(command)g(do)q(es.)315 1670 y(Once)k(y)o(ou)f(kno)o(w)f(the)h(name)g
-(of)g(the)g(command,)g(simply)f(place)h(on)g(a)f(line)h(in)g(the)g
-(init)315 1725 y(\014le)f(the)g(name)g(of)f(the)h(k)o(ey)g(y)o(ou)f
-(wish)h(to)f(bind)h(the)g(command)g(to,)f(a)g(colon,)h(and)g(then)315
-1780 y(the)f(name)g(of)g(the)g(command.)22 b(There)17
+(of)g(the)h(primary)e(prompt)h(when)555 314 y(vi)17 b(editing)g(mo)q
+(de)h(is)f(activ)o(e)f(and)i(in)f(insertion)g(mo)q(de.)27
+b(The)18 b(v)m(alue)g(is)f(ex-)555 369 y(panded)c(lik)o(e)e(a)h(k)o(ey)
+g(binding,)h(so)e(the)i(standard)e(set)h(of)g(meta-)g(and)g(con)o
+(trol-)555 423 y(pre\014xes)17 b(and)f(bac)o(kslash)f(escap)q(e)i
+(sequences)g(is)f(a)o(v)m(ailable.)21 b(The)16 b(`)p
+Fn(\\1)p Fo(')f(and)555 478 y(`)p Fn(\\2)p Fo(')k(escap)q(es)i(b)q
+(egin)g(and)f(end)h(sequences)h(of)e(non-prin)o(ting)f(c)o(haracters,)
+555 533 y(whic)o(h)e(can)h(b)q(e)g(used)g(to)f(em)o(b)q(ed)h(a)f
+(terminal)g(con)o(trol)f(sequence)i(in)o(to)f(the)555
+588 y(mo)q(de)e(string.)k(The)d(default)f(is)f(`)p Fn(\(ins\))p
+Fo('.)315 676 y Fn(visible-stats)555 731 y Fo(If)i(set)g(to)f(`)p
+Fn(on)p Fo(',)g(a)h(c)o(haracter)f(denoting)g(a)h(\014le's)g(t)o(yp)q
+(e)g(is)f(app)q(ended)j(to)d(the)555 786 y(\014lename)g(when)h(listing)
+e(p)q(ossible)h(completions.)j(The)e(default)f(is)f(`)p
+Fn(off)p Fo('.)75 874 y(Key)i(Bindings)315 929 y(The)21
+b(syn)o(tax)f(for)h(con)o(trolling)e(k)o(ey)i(bindings)f(in)h(the)g
+(init)f(\014le)h(is)g(simple.)37 b(First)19 b(y)o(ou)315
+984 y(need)c(to)e(\014nd)h(the)g(name)g(of)g(the)f(command)h(that)f(y)o
+(ou)h(w)o(an)o(t)f(to)g(c)o(hange.)19 b(The)14 b(follo)o(wing)315
+1039 y(sections)j(con)o(tain)h(tables)f(of)g(the)h(command)g(name,)g
+(the)g(default)g(k)o(eybinding,)g(if)f(an)o(y)l(,)315
+1094 y(and)e(a)g(short)g(description)g(of)f(what)h(the)g(command)g(do)q
+(es.)315 1165 y(Once)k(y)o(ou)f(kno)o(w)f(the)h(name)g(of)g(the)g
+(command,)g(simply)f(place)h(on)g(a)f(line)h(in)g(the)g(init)315
+1220 y(\014le)f(the)g(name)g(of)f(the)h(k)o(ey)g(y)o(ou)f(wish)h(to)f
+(bind)h(the)g(command)g(to,)f(a)g(colon,)h(and)g(then)315
+1275 y(the)f(name)g(of)g(the)g(command.)22 b(There)17
b(can)f(b)q(e)h(no)f(space)g(b)q(et)o(w)o(een)h(the)f(k)o(ey)g(name)g
-(and)315 1834 y(the)k(colon)g({)g(that)g(will)f(b)q(e)i(in)o(terpreted)
+(and)315 1330 y(the)k(colon)g({)g(that)g(will)f(b)q(e)i(in)o(terpreted)
f(as)g(part)g(of)g(the)h(k)o(ey)f(name.)35 b(The)21 b(name)f(of)315
-1889 y(the)d(k)o(ey)g(can)h(b)q(e)g(expressed)g(in)f(di\013eren)o(t)f
+1384 y(the)d(k)o(ey)g(can)h(b)q(e)g(expressed)g(in)f(di\013eren)o(t)f
(w)o(a)o(ys,)h(dep)q(ending)h(on)f(what)g(y)o(ou)g(\014nd)h(most)315
-1944 y(comfortable.)315 2012 y(In)h(addition)e(to)g(command)h(names,)g
-(readline)g(allo)o(ws)e(k)o(eys)i(to)f(b)q(e)i(b)q(ound)g(to)e(a)h
-(string)315 2067 y(that)c(is)h(inserted)g(when)h(the)f(k)o(ey)g(is)g
-(pressed)h(\(a)e Fe(macro)r Fo(\).)315 2149 y Fe(k)o(eyname)s
-Fo(:)19 b Fe(function-name)f Fo(or)d Fe(macro)555 2204
-y(k)o(eyname)i Fo(is)d(the)g(name)h(of)f(a)g(k)o(ey)g(sp)q(elled)h(out)
-f(in)g(English.)19 b(F)l(or)13 b(example:)675 2273 y
-Fn(Control-u:)22 b(universal-argument)675 2328 y(Meta-Rubout:)g
-(backward-kill-word)675 2382 y(Control-o:)g(">)i(output")555
-2451 y Fo(In)48 b(the)f(ab)q(o)o(v)o(e)g(example,)55
+1439 y(comfortable.)315 1511 y(In)f(addition)f(to)h(command)f(names,)h
+(Readline)g(allo)o(ws)e(k)o(eys)i(to)f(b)q(e)i(b)q(ound)f(to)f(a)h
+(string)315 1566 y(that)g(is)g(inserted)g(when)h(the)g(k)o(ey)f(is)g
+(pressed)h(\(a)f Ff(macro)r Fo(\).)26 b(The)18 b(di\013erence)f(b)q(et)
+o(w)o(een)h(a)315 1620 y(macro)c(and)i(a)f(command)g(is)g(that)f(a)h
+(macro)f(is)h(enclosed)h(in)f(single)f(or)h(double)g(quotes.)315
+1709 y Ff(k)o(eyname)s Fo(:)k Ff(function-name)f Fo(or)d
+Ff(macro)555 1764 y(k)o(eyname)i Fo(is)d(the)g(name)h(of)f(a)g(k)o(ey)g
+(sp)q(elled)h(out)f(in)g(English.)19 b(F)l(or)13 b(example:)675
+1835 y Fn(Control-u:)22 b(universal-argument)675 1890
+y(Meta-Rubout:)g(backward-kill-word)675 1945 y(Control-o:)g(">)i
+(output")555 2017 y Fo(In)48 b(the)f(example)g(ab)q(o)o(v)o(e,)55
b Fg(C-u)46 b Fo(is)h(b)q(ound)h(to)f(the)g(function)555
-2506 y Fn(universal-argument)p Fo(,)61 b Fg(M-DEL)54
-b Fo(is)g(b)q(ound)i(to)e(the)g(function)555 2560 y Fn
+2071 y Fn(universal-argument)p Fo(,)61 b Fg(M-DEL)54
+b Fo(is)g(b)q(ound)i(to)e(the)g(function)555 2126 y Fn
(backward-kill-word)p Fo(,)37 b(and)e Fg(C-o)g Fo(is)f(b)q(ound)i(to)e
-(run)i(the)f(macro)555 2615 y(expressed)24 b(on)e(the)h(righ)o(t)f
+(run)i(the)f(macro)555 2181 y(expressed)24 b(on)e(the)h(righ)o(t)f
(hand)h(side)g(\(that)f(is,)i(to)e(insert)g(the)h(text)g(`)p
-Fn(>)555 2670 y(output)p Fo(')14 b(in)o(to)g(the)h(line\).)p
+Fn(>)555 2236 y(output)p Fo(')14 b(in)o(to)g(the)h(line\).)555
+2308 y(This)e(k)o(ey)g(binding)g(syn)o(tax)g(recognizes)g(a)g(n)o(um)o
+(b)q(er)g(of)g(sym)o(b)q(olic)g(c)o(haracter)555 2362
+y(names:)21 b Ff(DEL)p Fo(,)15 b Ff(ESC)p Fo(,)h Ff(ESCAPE)p
+Fo(,)f Ff(LFD)p Fo(,)h Ff(NEWLINE)p Fo(,)g Ff(RET)p Fo(,)g
+Ff(RETURN)p Fo(,)555 2417 y Ff(R)o(UBOUT)p Fo(,)g Ff(SP)l(A)o(CE)p
+Fo(,)e Ff(SPC)p Fo(,)h(and)g Ff(T)l(AB)p Fo(.)315 2506
+y Fn(")p Ff(k)o(eyseq)q Fn(")p Fo(:)20 b Ff(function-name)d
+Fo(or)e Ff(macro)555 2560 y(k)o(eyseq)c Fo(di\013ers)f(from)g
+Ff(k)o(eyname)i Fo(ab)q(o)o(v)o(e)e(in)g(that)g(strings)f(denoting)h
+(an)g(en)o(tire)555 2615 y(k)o(ey)h(sequence)h(can)f(b)q(e)h(sp)q
+(eci\014ed,)h(b)o(y)e(placing)f(the)i(k)o(ey)e(sequence)j(in)e(double)
+555 2670 y(quotes.)22 b(Some)16 b Fh(gnu)g Fo(Emacs)f(st)o(yle)g(k)o
+(ey)h(escap)q(es)h(can)f(b)q(e)g(used,)h(as)e(in)h(the)p
eop end
-%%Page: 11 14
-TeXDict begin 11 13 bop 75 -58 a Fo(Chapter)15 b(1:)k(Command)c(Line)h
-(Editing)1053 b(11)555 149 y(A)31 b(n)o(um)o(b)q(er)g(of)g(sym)o(b)q
-(olic)f(c)o(haracter)g(names)h(are)f(recognized)h(while)555
-204 y(pro)q(cessing)20 b(this)f(k)o(ey)h(binding)g(syn)o(tax:)28
-b Fe(DEL)p Fo(,)21 b Fe(ESC)p Fo(,)g Fe(ESCAPE)p Fo(,)g
-Fe(LFD)p Fo(,)555 259 y Fe(NEWLINE)p Fo(,)15 b Fe(RET)p
-Fo(,)g Fe(RETURN)p Fo(,)h Fe(R)o(UBOUT)p Fo(,)g Fe(SP)l(A)o(CE)p
-Fo(,)e Fe(SPC)p Fo(,)h(and)g Fe(T)l(AB)p Fo(.)315 338
-y Fn(")p Fe(k)o(eyseq)q Fn(")p Fo(:)20 b Fe(function-name)d
-Fo(or)e Fe(macro)555 393 y(k)o(eyseq)i Fo(di\013ers)d(from)h
-Fe(k)o(eyname)j Fo(ab)q(o)o(v)o(e)d(in)h(that)e(strings)h(denoting)g
-(an)g(en-)555 448 y(tire)h(k)o(ey)h(sequence)h(can)f(b)q(e)g(sp)q
-(eci\014ed,)h(b)o(y)f(placing)f(the)h(k)o(ey)g(sequence)h(in)555
-503 y(double)d(quotes.)k(Some)c Fh(gnu)g Fo(Emacs)f(st)o(yle)g(k)o(ey)h
-(escap)q(es)g(can)g(b)q(e)g(used,)g(as)555 558 y(in)i(the)g(follo)o
-(wing)d(example,)j(but)g(the)g(sp)q(ecial)g(c)o(haracter)f(names)h(are)
-f(not)555 612 y(recognized.)675 680 y Fn("\\C-u":)23
-b(universal-argument)675 734 y("\\C-x\\C-r":)f(re-read-init-file)675
-789 y("\\e[11~":)h("Function)f(Key)i(1")555 856 y Fo(In)33
-b(the)f(ab)q(o)o(v)o(e)g(example,)k Fg(C-u)c Fo(is)g(again)f(b)q(ound)i
-(to)f(the)g(function)555 911 y Fn(universal-argument)19
-b Fo(\(just)j(as)f(it)g(w)o(as)g(in)h(the)g(\014rst)f(example\),)i(`)p
-Fg(C-x)555 966 y(C-r)p Fo(')14 b(is)h(b)q(ound)h(to)f(the)g(function)g
-Fn(re-read-init-file)p Fo(,)d(and)k(`)p Fn(ESC)e([)h(1)g(1)555
-1021 y(~)p Fo(')g(is)f(b)q(ound)j(to)d(insert)h(the)g(text)g(`)p
-Fn(Function)e(Key)i(1)p Fo('.)315 1100 y(The)g(follo)o(wing)e
-Fh(gnu)h Fo(Emacs)h(st)o(yle)f(escap)q(e)i(sequences)g(are)e(a)o(v)m
-(ailable)g(when)h(sp)q(ecifying)315 1155 y(k)o(ey)g(sequences:)315
-1234 y Fg(\\C-)168 b Fo(con)o(trol)14 b(pre\014x)315
-1314 y Fg(\\M-)168 b Fo(meta)15 b(pre\014x)315 1393 y
-Fg(\\e)192 b Fo(an)15 b(escap)q(e)h(c)o(haracter)315
-1473 y Fg(\\\\)192 b Fo(bac)o(kslash)315 1552 y Fg(\\)p
-Fn(")g(")p Fo(,)15 b(a)g(double)g(quotation)f(mark)315
-1632 y Fg(\\')192 b Fn(')p Fo(,)15 b(a)g(single)f(quote)h(or)g(ap)q
-(ostrophe)315 1711 y(In)f(addition)f(to)h(the)f Fh(gnu)h
+%%Page: 13 16
+TeXDict begin 13 15 bop 75 -58 a Fo(Chapter)15 b(1:)k(Command)c(Line)h
+(Editing)1053 b(13)555 149 y(follo)o(wing)20 b(example,)k(but)f(none)g
+(of)f(the)h(sp)q(ecial)g(c)o(haracter)f(names)g(are)555
+204 y(recognized.)675 271 y Fn("\\C-u":)h(universal-argument)675
+326 y("\\C-x\\C-r":)f(re-read-init-file)675 381 y("\\e[11~":)h
+("Function)f(Key)i(1")555 448 y Fo(In)33 b(the)f(ab)q(o)o(v)o(e)g
+(example,)k Fg(C-u)c Fo(is)g(again)f(b)q(ound)i(to)f(the)g(function)555
+503 y Fn(universal-argument)19 b Fo(\(just)j(as)f(it)g(w)o(as)g(in)h
+(the)g(\014rst)f(example\),)i(`)p Fg(C-x)555 558 y(C-r)p
+Fo(')14 b(is)h(b)q(ound)h(to)f(the)g(function)g Fn(re-read-init-file)p
+Fo(,)d(and)k(`)p Fn(ESC)e([)h(1)g(1)555 612 y(~)p Fo(')g(is)f(b)q(ound)
+j(to)d(insert)h(the)g(text)g(`)p Fn(Function)e(Key)i(1)p
+Fo('.)315 692 y(The)g(follo)o(wing)e Fh(gnu)h Fo(Emacs)h(st)o(yle)f
+(escap)q(e)i(sequences)g(are)e(a)o(v)m(ailable)g(when)h(sp)q(ecifying)
+315 747 y(k)o(ey)g(sequences:)315 826 y Fg(\\C-)168 b
+Fo(A)15 b(con)o(trol)f(pre\014x.)315 906 y Fg(\\M-)168
+b Fo(Adding)17 b(the)g(meta)f(pre\014x)h(or)g(con)o(v)o(erting)e(the)i
+(follo)o(wing)e(c)o(haracter)h(to)g(a)555 960 y(meta)c(c)o(haracter,)g
+(as)h(describ)q(ed)h(ab)q(o)o(v)o(e)e(under)i Fn(force-meta-prefix)c
+Fo(\(see)555 1015 y Fn(Variable)k(Settings)21 b Fo(in)h(Section)f
+(1.3.1)g([Readline)g(Init)h(File)f(Syn)o(tax],)555 1070
+y(page)15 b(4\).)315 1149 y Fg(\\e)192 b Fo(An)15 b(escap)q(e)h(c)o
+(haracter.)315 1229 y Fg(\\\\)192 b Fo(Bac)o(kslash.)315
+1308 y Fg(\\)p Fn(")g(")p Fo(,)15 b(a)g(double)g(quotation)f(mark.)315
+1388 y Fg(\\')192 b Fn(')p Fo(,)15 b(a)g(single)f(quote)h(or)g(ap)q
+(ostrophe.)315 1467 y(In)f(addition)f(to)h(the)f Fh(gnu)h
Fo(Emacs)g(st)o(yle)e(escap)q(e)j(sequences,)g(a)e(second)i(set)e(of)h
-(bac)o(kslash)315 1766 y(escap)q(es)i(is)f(a)o(v)m(ailable:)315
-1845 y Fn(\\a)192 b Fo(alert)14 b(\(b)q(ell\))315 1925
-y Fn(\\b)192 b Fo(bac)o(kspace)315 2004 y Fn(\\d)g Fo(delete)315
-2084 y Fn(\\f)g Fo(form)14 b(feed)315 2163 y Fn(\\n)192
-b Fo(newline)315 2243 y Fn(\\r)g Fo(carriage)14 b(return)315
-2322 y Fn(\\t)192 b Fo(horizon)o(tal)14 b(tab)315 2401
-y Fn(\\v)192 b Fo(v)o(ertical)14 b(tab)315 2481 y Fn(\\)p
-Fg(nnn)144 b Fo(the)17 b(eigh)o(t-bit)f(c)o(haracter)h(whose)g(v)m
-(alue)h(is)e(the)i(o)q(ctal)e(v)m(alue)i Fe(nnn)g Fo(\(one)f(to)555
-2536 y(three)e(digits\))315 2615 y Fn(\\x)p Fg(HH)144
-b Fo(the)19 b(eigh)o(t-bit)f(c)o(haracter)h(whose)g(v)m(alue)g(is)g
-(the)g(hexadecimal)g(v)m(alue)g Fe(HH)555 2670 y Fo(\(one)c(or)g(t)o(w)
-o(o)f(hex)h(digits\))p eop end
-%%Page: 12 15
-TeXDict begin 12 14 bop 75 -58 a Fo(Chapter)15 b(1:)k(Command)c(Line)h
-(Editing)1053 b(12)315 149 y(When)19 b(en)o(tering)f(the)h(text)f(of)g
+(bac)o(kslash)315 1522 y(escap)q(es)i(is)f(a)o(v)m(ailable:)315
+1601 y Fn(\\a)192 b Fo(alert)14 b(\(b)q(ell\))315 1681
+y Fn(\\b)192 b Fo(bac)o(kspace)315 1760 y Fn(\\d)g Fo(delete)315
+1840 y Fn(\\f)g Fo(form)14 b(feed)315 1919 y Fn(\\n)192
+b Fo(newline)315 1999 y Fn(\\r)g Fo(carriage)14 b(return)315
+2078 y Fn(\\t)192 b Fo(horizon)o(tal)14 b(tab)315 2158
+y Fn(\\v)192 b Fo(v)o(ertical)14 b(tab)315 2237 y Fn(\\)p
+Fg(nnn)144 b Fo(The)16 b(eigh)o(t-bit)f(c)o(haracter)g(whose)h(v)m
+(alue)g(is)f(the)h(o)q(ctal)f(v)m(alue)h Ff(nnn)h Fo(\(one)f(to)555
+2292 y(three)f(digits\).)315 2371 y Fn(\\x)p Fg(HH)144
+b Fo(The)18 b(eigh)o(t-bit)e(c)o(haracter)h(whose)g(v)m(alue)h(is)f
+(the)g(hexadecimal)g(v)m(alue)h Ff(HH)555 2426 y Fo(\(one)d(or)g(t)o(w)
+o(o)f(hex)h(digits\).)315 2506 y(When)k(en)o(tering)f(the)h(text)f(of)g
(a)h(macro,)f(single)g(or)g(double)h(quotes)g(m)o(ust)f(b)q(e)h(used)h
-(to)315 204 y(indicate)10 b(a)h(macro)f(de\014nition.)18
-b(Unquoted)11 b(text)f(is)h(assumed)f(to)h(b)q(e)g(a)f(function)h
-(name.)18 b(In)315 259 y(the)11 b(macro)f(b)q(o)q(dy)l(,)i(the)f(bac)o
-(kslash)f(escap)q(es)h(describ)q(ed)h(ab)q(o)o(v)o(e)e(are)g(expanded.)
-20 b(Bac)o(kslash)315 314 y(will)f(quote)g(an)o(y)h(other)g(c)o
-(haracter)f(in)h(the)g(macro)f(text,)h(including)g(`)p
-Fn(")p Fo(')f(and)h(`)p Fn(')p Fo('.)34 b(F)l(or)315
-369 y(example,)13 b(the)g(follo)o(wing)d(binding)j(will)f(mak)o(e)g(`)p
-Fg(C-x)i Fn(\\)p Fo(')f(insert)f(a)h(single)f(`)p Fn(\\)p
-Fo(')g(in)o(to)g(the)h(line:)435 436 y Fn("\\C-x\\\\":)23
-b("\\\\")75 537 y Fd(1.3.2)30 b(Conditional)20 b(Init)g(Constructs)75
-610 y Fo(Readline)f(implemen)o(ts)e(a)h(facilit)o(y)f(similar)f(in)i
-(spirit)g(to)f(the)i(conditional)e(compilation)f(features)i(of)75
-665 y(the)d(C)h(prepro)q(cessor)f(whic)o(h)g(allo)o(ws)f(k)o(ey)h
-(bindings)g(and)h(v)m(ariable)e(settings)h(to)f(b)q(e)i(p)q(erformed)g
-(as)f(the)75 720 y(result)g(of)f(tests.)20 b(There)15
-b(are)g(four)g(parser)g(directiv)o(es)f(used.)75 801
-y Fn($if)168 b Fo(The)16 b Fn($if)f Fo(construct)g(allo)o(ws)f
-(bindings)i(to)f(b)q(e)h(made)g(based)g(on)f(the)h(editing)f(mo)q(de,)h
-(the)315 856 y(terminal)h(b)q(eing)h(used,)h(or)f(the)g(application)f
-(using)h(Readline.)29 b(The)18 b(text)g(of)g(the)g(test,)315
-910 y(after)c(an)o(y)g(comparison)g(op)q(erator,)g(extends)h(to)f(the)h
-(end)g(of)g(the)g(line;)f(unless)h(otherwise)315 965
+(to)315 2560 y(indicate)15 b(a)h(macro)f(de\014nition.)22
+b(Unquoted)16 b(text)g(is)f(assumed)h(to)f(b)q(e)i(a)f(function)f
+(name.)315 2615 y(Tthe)d(bac)o(kslash)f(escap)q(es)i(describ)q(ed)g(ab)
+q(o)o(v)o(e)e(are)h(expanded)h(in)f(the)g(macro)f(b)q(o)q(dy)l(.)20
+b(Bac)o(k-)315 2670 y(slash)e(will)g(quote)g(an)o(y)h(other)f(c)o
+(haracter)g(in)h(the)g(macro)f(text,)h(including)f(`)p
+Fn(")p Fo(')g(and)h(`)p Fn(')p Fo('.)p eop end
+%%Page: 14 17
+TeXDict begin 14 16 bop 75 -58 a Fo(Chapter)15 b(1:)k(Command)c(Line)h
+(Editing)1053 b(14)315 149 y(F)l(or)14 b(example,)f(the)i(follo)o(wing)
+d(binding)i(will)f(mak)o(e)g(`)p Fg(C-x)i Fn(\\)p Fo(')e(insert)h(a)g
+(single)f(`)p Fn(\\)p Fo(')h(in)o(to)f(the)315 204 y(line:)435
+271 y Fn("\\C-x\\\\":)23 b("\\\\")75 370 y Fd(1.3.2)30
+b(Conditional)20 b(Init)g(Constructs)75 443 y Fo(Readline)f(implemen)o
+(ts)e(a)h(facilit)o(y)f(similar)f(in)i(spirit)g(to)f(the)i(conditional)
+e(compilation)f(features)i(of)75 498 y(the)d(C)h(prepro)q(cessor)f
+(whic)o(h)g(allo)o(ws)f(k)o(ey)h(bindings)g(and)h(v)m(ariable)e
+(settings)h(to)f(b)q(e)i(p)q(erformed)g(as)f(the)75 553
+y(result)g(of)f(tests.)20 b(There)15 b(are)g(four)g(parser)g(directiv)o
+(es)f(a)o(v)m(ailable.)75 632 y Fn($if)168 b Fo(The)16
+b Fn($if)f Fo(construct)g(allo)o(ws)f(bindings)i(to)f(b)q(e)h(made)g
+(based)g(on)f(the)h(editing)f(mo)q(de,)h(the)315 687
+y(terminal)h(b)q(eing)h(used,)h(or)f(the)g(application)f(using)h
+(Readline.)29 b(The)18 b(text)g(of)g(the)g(test,)315
+741 y(after)c(an)o(y)g(comparison)g(op)q(erator,)g(extends)h(to)f(the)h
+(end)g(of)g(the)g(line;)f(unless)h(otherwise)315 796
y(noted,)g(no)g(c)o(haracters)f(are)h(required)h(to)e(isolate)g(it.)315
-1046 y Fn(mode)144 b Fo(The)15 b Fn(mode=)g Fo(form)f(of)h(the)g
+875 y Fn(mode)144 b Fo(The)15 b Fn(mode=)g Fo(form)f(of)h(the)g
Fn($if)f Fo(directiv)o(e)h(is)f(used)i(to)e(test)h(whether)g(Read-)555
-1100 y(line)21 b(is)g(in)h Fn(emacs)f Fo(or)g Fn(vi)g
+930 y(line)21 b(is)g(in)h Fn(emacs)f Fo(or)g Fn(vi)g
Fo(mo)q(de.)40 b(This)21 b(ma)o(y)g(b)q(e)h(used)g(in)g(conjunction)555
-1155 y(with)d(the)h(`)p Fn(set)14 b(keymap)p Fo(')19
-b(command,)h(for)f(instance,)h(to)f(set)h(bindings)f(in)555
-1210 y(the)d Fn(emacs-standard)e Fo(and)i Fn(emacs-ctlx)e
-Fo(k)o(eymaps)i(only)f(if)g(Readline)h(is)555 1265 y(starting)e(out)g
-(in)h Fn(emacs)g Fo(mo)q(de.)315 1345 y Fn(term)144 b
-Fo(The)14 b Fn(term=)e Fo(form)h(ma)o(y)g(b)q(e)h(used)g(to)f(include)h
-(terminal-sp)q(eci\014c)f(k)o(ey)g(bind-)555 1400 y(ings,)18
-b(p)q(erhaps)h(to)e(bind)h(the)h(k)o(ey)e(sequences)j(output)e(b)o(y)g
-(the)g(terminal's)555 1455 y(function)12 b(k)o(eys.)18
-b(The)13 b(w)o(ord)e(on)h(the)g(righ)o(t)f(side)g(of)h(the)g(`)p
-Fn(=)p Fo(')f(is)g(tested)h(against)555 1510 y(b)q(oth)j(the)g(full)g
-(name)g(of)f(the)h(terminal)f(and)h(the)g(p)q(ortion)g(of)f(the)h
-(terminal)555 1565 y(name)i(b)q(efore)g(the)g(\014rst)f(`)p
-Fn(-)p Fo('.)24 b(This)16 b(allo)o(ws)f Fn(sun)h Fo(to)g(matc)o(h)h(b)q
-(oth)f Fn(sun)h Fo(and)555 1619 y Fn(sun-cmd)p Fo(,)d(for)g(instance.)
-315 1700 y Fn(version)72 b Fo(The)23 b Fn(version)e Fo(test)h(ma)o(y)f
-(b)q(e)i(used)g(to)f(p)q(erform)g(comparisons)f(against)555
-1755 y(sp)q(eci\014c)h(Readline)f(v)o(ersions.)36 b(The)21
+985 y(with)d(the)h(`)p Fn(set)14 b(keymap)p Fo(')19 b(command,)h(for)f
+(instance,)h(to)f(set)h(bindings)f(in)555 1039 y(the)d
+Fn(emacs-standard)e Fo(and)i Fn(emacs-ctlx)e Fo(k)o(eymaps)i(only)f(if)
+g(Readline)h(is)555 1094 y(starting)e(out)g(in)h Fn(emacs)g
+Fo(mo)q(de.)315 1173 y Fn(term)144 b Fo(The)14 b Fn(term=)e
+Fo(form)h(ma)o(y)g(b)q(e)h(used)g(to)f(include)h(terminal-sp)q
+(eci\014c)f(k)o(ey)g(bind-)555 1228 y(ings,)18 b(p)q(erhaps)h(to)e
+(bind)h(the)h(k)o(ey)e(sequences)j(output)e(b)o(y)g(the)g(terminal's)
+555 1283 y(function)12 b(k)o(eys.)18 b(The)13 b(w)o(ord)e(on)h(the)g
+(righ)o(t)f(side)g(of)h(the)g(`)p Fn(=)p Fo(')f(is)g(tested)h(against)
+555 1337 y(b)q(oth)j(the)g(full)g(name)g(of)f(the)h(terminal)f(and)h
+(the)g(p)q(ortion)g(of)f(the)h(terminal)555 1392 y(name)h(b)q(efore)h
+(the)f(\014rst)g(`)p Fn(-)p Fo('.)23 b(This)16 b(allo)o(ws)e
+Fn(xterm)i Fo(to)f(matc)o(h)h(b)q(oth)h Fn(xterm)555
+1447 y Fo(and)e Fn(xterm-256color)p Fo(,)e(for)i(instance.)315
+1526 y Fn(version)72 b Fo(The)23 b Fn(version)e Fo(test)h(ma)o(y)f(b)q
+(e)i(used)g(to)f(p)q(erform)g(comparisons)f(against)555
+1581 y(sp)q(eci\014c)h(Readline)f(v)o(ersions.)36 b(The)21
b Fn(version)f Fo(expands)h(to)f(the)h(curren)o(t)555
-1809 y(Readline)12 b(v)o(ersion.)18 b(The)12 b(set)g(of)g(comparison)f
+1636 y(Readline)12 b(v)o(ersion.)18 b(The)12 b(set)g(of)g(comparison)f
(op)q(erators)g(includes)h(`)p Fn(=)p Fo(')f(\(and)555
-1864 y(`)p Fn(==)p Fo('\),)j(`)p Fn(!=)p Fo(',)h(`)p
+1690 y(`)p Fn(==)p Fo('\),)j(`)p Fn(!=)p Fo(',)h(`)p
Fn(<=)p Fo(',)g(`)p Fn(>=)p Fo(',)g(`)p Fn(<)p Fo(',)f(and)j(`)p
Fn(>)p Fo('.)k(The)16 b(v)o(ersion)f(n)o(um)o(b)q(er)i(supplied)f(on)
-555 1919 y(the)h(righ)o(t)f(side)h(of)f(the)i(op)q(erator)e(consists)g
-(of)h(a)f(ma)s(jor)g(v)o(ersion)g(n)o(um)o(b)q(er,)555
-1974 y(an)23 b(optional)e(decimal)h(p)q(oin)o(t,)i(and)f(an)f(optional)
-g(minor)g(v)o(ersion)g(\(e.g.,)555 2029 y(`)p Fn(7.1)p
-Fo('\).)c(If)c(the)g(minor)f(v)o(ersion)g(is)g(omitted,)g(it)g(is)h
-(assumed)g(to)f(b)q(e)h(`)p Fn(0)p Fo('.)19 b(The)555
-2083 y(op)q(erator)d(ma)o(y)g(b)q(e)h(separated)g(from)f(the)h(string)e
-Fn(version)h Fo(and)h(from)f(the)555 2138 y(v)o(ersion)j(n)o(um)o(b)q
-(er)g(argumen)o(t)g(b)o(y)g(whitespace.)32 b(The)20 b(follo)o(wing)d
-(example)555 2193 y(sets)e(a)g(v)m(ariable)f(if)h(the)g(Readline)h(v)o
-(ersion)e(b)q(eing)i(used)f(is)g(7.0)f(or)h(new)o(er:)675
-2261 y Fn($if)23 b(version)g(>=)h(7.0)675 2315 y(set)f
-(show-mode-in-prompt)f(on)675 2370 y($endif)315 2451
-y(application)555 2506 y Fo(The)11 b Fe(application)f
+555 1745 y(the)c(righ)o(t)e(side)h(of)h(the)f(op)q(erator)g(consists)g
+(of)g(a)g(ma)s(jor)f(v)o(ersion)h(n)o(um)o(b)q(er,)h(an)555
+1800 y(optional)h(decimal)g(p)q(oin)o(t,)h(and)g(an)g(optional)f(minor)
+g(v)o(ersion)g(\(e.g.,)g(`)p Fn(7.1)p Fo('\).)555 1855
+y(If)g(the)f(minor)g(v)o(ersion)g(is)f(omitted,)h(it)g(defaults)g(to)f
+(`)p Fn(0)p Fo('.)18 b(The)13 b(op)q(erator)f(ma)o(y)555
+1910 y(b)q(e)i(separated)e(from)g(the)h(string)f Fn(version)g
+Fo(and)h(from)f(the)h(v)o(ersion)g(n)o(um)o(b)q(er)555
+1964 y(argumen)o(t)j(b)o(y)h(whitespace.)25 b(The)17
+b(follo)o(wing)d(example)j(sets)g(a)f(v)m(ariable)g(if)555
+2019 y(the)f(Readline)h(v)o(ersion)e(b)q(eing)i(used)f(is)g(7.0)f(or)h
+(new)o(er:)675 2086 y Fn($if)23 b(version)g(>=)h(7.0)675
+2141 y(set)f(show-mode-in-prompt)f(on)675 2196 y($endif)315
+2274 y(application)555 2329 y Fo(The)11 b Ff(application)f
Fo(construct)h(is)f(used)i(to)e(include)h(application-sp)q(eci\014c)g
-(set-)555 2560 y(tings.)18 b(Eac)o(h)12 b(program)f(using)i(the)f
-(Readline)h(library)e(sets)h(the)g Fe(application)555
-2615 y(name)p Fo(,)g(and)g(y)o(ou)f(can)h(test)f(for)g(a)g(particular)f
+(set-)555 2384 y(tings.)18 b(Eac)o(h)12 b(program)f(using)i(the)f
+(Readline)h(library)e(sets)h(the)g Ff(application)555
+2439 y(name)p Fo(,)g(and)g(y)o(ou)f(can)h(test)f(for)g(a)g(particular)f
(v)m(alue.)19 b(This)11 b(could)h(b)q(e)g(used)h(to)555
-2670 y(bind)k(k)o(ey)f(sequences)i(to)d(functions)i(useful)f(for)g(a)g
-(sp)q(eci\014c)h(program.)23 b(F)l(or)p eop end
-%%Page: 13 16
-TeXDict begin 13 15 bop 75 -58 a Fo(Chapter)15 b(1:)k(Command)c(Line)h
-(Editing)1053 b(13)555 149 y(instance,)16 b(the)h(follo)o(wing)d
-(command)j(adds)f(a)g(k)o(ey)h(sequence)g(that)f(quotes)555
-204 y(the)f(curren)o(t)g(or)g(previous)g(w)o(ord)f(in)i(Bash:)675
-271 y Fn($if)23 b(Bash)675 326 y(#)h(Quote)f(the)g(current)g(or)h
-(previous)f(word)675 381 y("\\C-xq":)g("\\eb\\"\\ef\\"")675
-436 y($endif)315 516 y(variable)48 b Fo(The)17 b Fe(v)m(ariable)h
+2494 y(bind)k(k)o(ey)f(sequences)i(to)d(functions)i(useful)f(for)g(a)g
+(sp)q(eci\014c)h(program.)23 b(F)l(or)555 2548 y(instance,)16
+b(the)h(follo)o(wing)d(command)j(adds)f(a)g(k)o(ey)h(sequence)g(that)f
+(quotes)555 2603 y(the)f(curren)o(t)g(or)g(previous)g(w)o(ord)f(in)i
+(Bash:)675 2670 y Fn($if)23 b(Bash)p eop end
+%%Page: 15 18
+TeXDict begin 15 17 bop 75 -58 a Fo(Chapter)15 b(1:)k(Command)c(Line)h
+(Editing)1053 b(15)675 149 y Fn(#)24 b(Quote)f(the)g(current)g(or)h
+(previous)f(word)675 204 y("\\C-xq":)g("\\eb\\"\\ef\\"")675
+259 y($endif)315 339 y(variable)48 b Fo(The)17 b Ff(v)m(ariable)h
Fo(construct)e(pro)o(vides)g(simple)h(equalit)o(y)e(tests)h(for)g
-(Readline)555 570 y(v)m(ariables)f(and)h(v)m(alues.)22
+(Readline)555 394 y(v)m(ariables)f(and)h(v)m(alues.)22
b(The)16 b(p)q(ermitted)g(comparison)f(op)q(erators)g(are)g(`)p
-Fn(=)p Fo(',)555 625 y(`)p Fn(==)p Fo(',)23 b(and)g(`)p
+Fn(=)p Fo(',)555 448 y(`)p Fn(==)p Fo(',)23 b(and)g(`)p
Fn(!=)p Fo('.)40 b(The)23 b(v)m(ariable)f(name)h(m)o(ust)f(b)q(e)h
-(separated)f(from)g(the)555 680 y(comparison)12 b(op)q(erator)f(b)o(y)h
+(separated)f(from)g(the)555 503 y(comparison)12 b(op)q(erator)f(b)o(y)h
(whitespace;)h(the)g(op)q(erator)e(ma)o(y)h(b)q(e)h(separated)555
-735 y(from)j(the)h(v)m(alue)g(on)g(the)g(righ)o(t)f(hand)h(side)g(b)o
-(y)g(whitespace.)25 b(Both)17 b(string)555 790 y(and)i(b)q(o)q(olean)g
-(v)m(ariables)f(ma)o(y)g(b)q(e)h(tested.)31 b(Bo)q(olean)18
-b(v)m(ariables)g(m)o(ust)g(b)q(e)555 844 y(tested)k(against)g(the)g(v)m
-(alues)h Fe(on)f Fo(and)h Fe(o\013)p Fo(.)41 b(The)23
-b(follo)o(wing)d(example)i(is)555 899 y(equiv)m(alen)o(t)15
-b(to)f(the)i Fn(mode=emacs)e Fo(test)g(describ)q(ed)i(ab)q(o)o(v)o(e:)
-675 966 y Fn($if)23 b(editing-mode)g(==)g(emacs)675 1021
-y(set)g(show-mode-in-prompt)f(on)675 1076 y($endif)75
-1156 y($endif)96 b Fo(This)15 b(command,)f(as)h(seen)h(in)f(the)g
+558 y(from)18 b(the)g(v)m(alue)g(on)h(the)f(righ)o(t)f(hand)i(side)f(b)
+o(y)g(whitespace.)29 b(String)18 b(and)555 613 y(b)q(o)q(olean)c(v)m
+(ariables)g(ma)o(y)g(b)q(e)h(tested.)k(Bo)q(olean)14
+b(v)m(ariables)g(m)o(ust)g(b)q(e)h(tested)555 667 y(against)f(the)i(v)m
+(alues)g Ff(on)g Fo(and)g Ff(o\013)p Fo(.)k(The)c(follo)o(wing)d
+(example)j(is)f(equiv)m(alen)o(t)555 722 y(to)g(the)g
+Fn(mode=emacs)f Fo(test)g(describ)q(ed)i(ab)q(o)o(v)o(e:)675
+790 y Fn($if)23 b(editing-mode)g(==)g(emacs)675 844 y(set)g
+(show-mode-in-prompt)f(on)675 899 y($endif)75 979 y($else)120
+b Fo(Commands)15 b(in)g(this)f(branc)o(h)i(of)e(the)i
+Fn($if)e Fo(directiv)o(e)h(are)g(executed)h(if)f(the)g(test)g(fails.)75
+1059 y Fn($endif)96 b Fo(This)15 b(command,)f(as)h(seen)h(in)f(the)g
(previous)g(example,)g(terminates)f(an)h Fn($if)f Fo(command.)75
-1235 y Fn($else)120 b Fo(Commands)15 b(in)g(this)f(branc)o(h)i(of)e
-(the)i Fn($if)e Fo(directiv)o(e)h(are)g(executed)h(if)f(the)g(test)g
-(fails.)75 1315 y Fn($include)48 b Fo(This)21 b(directiv)o(e)g(tak)o
-(es)g(a)h(single)f(\014lename)h(as)f(an)h(argumen)o(t)f(and)h(reads)f
-(commands)315 1370 y(and)e(bindings)h(from)e(that)h(\014le.)32
-b(F)l(or)19 b(example,)h(the)f(follo)o(wing)e(directiv)o(e)i(reads)g
-(from)315 1425 y Fn(/etc/inputrc)p Fo(:)435 1492 y Fn($include)k
-(/etc/inputrc)75 1592 y Fd(1.3.3)30 b(Sample)20 b(Init)h(File)75
-1665 y Fo(Here)13 b(is)g(an)g(example)g(of)g(an)g Fe(inputrc)j
+1138 y Fn($include)48 b Fo(This)13 b(directiv)o(e)h(tak)o(es)f(a)g
+(single)g(\014lename)h(as)g(an)f(argumen)o(t)g(and)h(reads)g(commands)g
+(and)315 1193 y(k)o(ey)20 b(bindings)f(from)g(that)g(\014le.)34
+b(F)l(or)19 b(example,)i(the)e(follo)o(wing)f(directiv)o(e)h(reads)h
+(from)315 1248 y Fn(/etc/inputrc)p Fo(:)435 1315 y Fn($include)j
+(/etc/inputrc)75 1415 y Fd(1.3.3)30 b(Sample)20 b(Init)h(File)75
+1488 y Fo(Here)13 b(is)g(an)g(example)g(of)g(an)g Ff(inputrc)j
Fo(\014le.)k(This)12 b(illustrates)g(k)o(ey)h(binding,)g(v)m(ariable)g
-(assignmen)o(t,)f(and)75 1720 y(conditional)i(syn)o(tax.)p
+(assignmen)o(t,)f(and)75 1543 y(conditional)i(syn)o(tax.)p
eop end
-%%Page: 14 17
-TeXDict begin 14 16 bop 75 -58 a Fo(Chapter)15 b(1:)k(Command)c(Line)h
-(Editing)1053 b(14)195 204 y Fn(#)24 b(This)f(file)g(controls)g(the)h
+%%Page: 16 19
+TeXDict begin 16 18 bop 75 -58 a Fo(Chapter)15 b(1:)k(Command)c(Line)h
+(Editing)1053 b(16)195 204 y Fn(#)24 b(This)f(file)g(controls)g(the)h
(behaviour)e(of)i(line)f(input)g(editing)g(for)195 259
y(#)h(programs)e(that)i(use)f(the)h(GNU)f(Readline)g(library.)47
b(Existing)195 314 y(#)24 b(programs)e(include)h(FTP,)h(Bash,)f(and)g
2451 y(#)195 2506 y(#)24 b(Arrow)f(keys)g(in)h(8)g(bit)f(ANSI)g(mode)
195 2560 y(#)195 2615 y(#"\\M-\\C-[D":)165 b(backward-char)195
2670 y(#"\\M-\\C-[C":)g(forward-char)p eop end
-%%Page: 15 18
-TeXDict begin 15 17 bop 75 -58 a Fo(Chapter)15 b(1:)k(Command)c(Line)h
-(Editing)1053 b(15)195 149 y Fn(#"\\M-\\C-[A":)165 b(previous-history)
+%%Page: 17 20
+TeXDict begin 17 19 bop 75 -58 a Fo(Chapter)15 b(1:)k(Command)c(Line)h
+(Editing)1053 b(17)195 149 y Fn(#"\\M-\\C-[A":)165 b(previous-history)
195 204 y(#"\\M-\\C-[B":)g(next-history)195 314 y(C-q:)23
b(quoted-insert)195 423 y($endif)195 533 y(#)h(An)f(old-style)g
(binding.)47 b(This)23 b(happens)g(to)g(be)h(the)f(default.)195
2286 y(#)h(display)f(characters)f(with)h(the)h(eighth)f(bit)g(set)h
(directly)195 2341 y(#)g(rather)f(than)g(as)h(meta-prefixed)e
(characters)195 2396 y(set)h(output-meta)g(on)195 2506
-y(#)h(if)f(there)g(are)h(more)f(than)h(150)f(possible)g(completions)f
-(for)195 2560 y(#)i(a)f(word,)h(ask)f(the)h(user)f(if)g(he)h(wants)f
-(to)h(see)f(all)h(of)f(them)195 2615 y(set)g(completion-query-items)e
-(150)p eop end
-%%Page: 16 19
-TeXDict begin 16 18 bop 75 -58 a Fo(Chapter)15 b(1:)k(Command)c(Line)h
-(Editing)1053 b(16)195 149 y Fn(#)24 b(For)f(FTP)195
+y(#)h(if)f(there)g(are)h(150)f(or)h(more)f(possible)g(completions)f
+(for)i(a)g(word,)195 2560 y(#)g(ask)f(whether)g(or)h(not)f(the)h(user)f
+(wants)g(to)h(see)f(all)h(of)f(them)195 2615 y(set)g
+(completion-query-items)e(150)p eop end
+%%Page: 18 21
+TeXDict begin 18 20 bop 75 -58 a Fo(Chapter)15 b(1:)k(Command)c(Line)h
+(Editing)1053 b(18)195 149 y Fn(#)24 b(For)f(FTP)195
204 y($if)g(Ftp)195 259 y("\\C-xg":)g("get)g(\\M-?")195
314 y("\\C-xt":)g("put)g(\\M-?")195 369 y("\\M-.":)g(yank-last-arg)195
-423 y($endif)75 544 y Fm(1.4)33 b(Bindable)22 b(Readline)f(Commands)75
-624 y Fo(This)12 b(section)h(describ)q(es)g(Readline)g(commands)g(that)
+423 y($endif)75 541 y Fm(1.4)33 b(Bindable)22 b(Readline)f(Commands)75
+621 y Fo(This)12 b(section)h(describ)q(es)g(Readline)g(commands)g(that)
f(ma)o(y)g(b)q(e)i(b)q(ound)f(to)g(k)o(ey)f(sequences.)20
-b(Command)75 679 y(names)15 b(without)f(an)h(accompan)o(ying)g(k)o(ey)g
+b(Command)75 676 y(names)15 b(without)f(an)h(accompan)o(ying)g(k)o(ey)g
(sequence)h(are)f(un)o(b)q(ound)i(b)o(y)e(default.)137
-747 y(In)f(the)f(follo)o(wing)e(descriptions,)i Fe(p)q(oin)o(t)g
+742 y(In)f(the)f(follo)o(wing)e(descriptions,)i Ff(p)q(oin)o(t)g
Fo(refers)g(to)g(the)g(curren)o(t)g(cursor)f(p)q(osition,)h(and)g
-Fe(mark)i Fo(refers)75 801 y(to)k(a)g(cursor)g(p)q(osition)f(sa)o(v)o
-(ed)h(b)o(y)h(the)f Fn(set-mark)g Fo(command.)32 b(The)20
-b(text)f(b)q(et)o(w)o(een)g(the)h(p)q(oin)o(t)f(and)75
-856 y(mark)c(is)f(referred)i(to)e(as)h(the)g Fe(region)p
-Fo(.)75 956 y Fd(1.4.1)30 b(Commands)21 b(F)-5 b(or)19
-b(Mo)n(ving)75 1042 y Fn(beginning-of-line)13 b(\(C-a\))315
-1097 y Fo(Mo)o(v)o(e)h(to)h(the)g(start)f(of)h(the)g(curren)o(t)g
-(line.)75 1177 y Fn(end-of-line)f(\(C-e\))315 1232 y
-Fo(Mo)o(v)o(e)g(to)h(the)g(end)h(of)f(the)g(line.)75
-1312 y Fn(forward-char)f(\(C-f\))315 1367 y Fo(Mo)o(v)o(e)g(forw)o(ard)
-g(a)h(c)o(haracter.)75 1447 y Fn(backward-char)e(\(C-b\))315
-1502 y Fo(Mo)o(v)o(e)h(bac)o(k)h(a)g(c)o(haracter.)75
-1582 y Fn(forward-word)f(\(M-f\))315 1637 y Fo(Mo)o(v)o(e)g(forw)o(ard)
-g(to)g(the)i(end)g(of)e(the)h(next)h(w)o(ord.)j(W)l(ords)c(are)f(comp)q
-(osed)i(of)f(letters)f(and)315 1692 y(digits.)75 1772
-y Fn(backward-word)f(\(M-b\))315 1827 y Fo(Mo)o(v)o(e)j(bac)o(k)g(to)h
-(the)f(start)g(of)g(the)h(curren)o(t)g(or)f(previous)h(w)o(ord.)24
-b(W)l(ords)16 b(are)h(comp)q(osed)315 1882 y(of)e(letters)f(and)h
-(digits.)75 1962 y Fn(previous-screen-line)d(\(\))315
-2017 y Fo(A)o(ttempt)19 b(to)h(mo)o(v)o(e)f(p)q(oin)o(t)h(to)f(the)h
-(same)g(ph)o(ysical)f(screen)i(column)f(on)g(the)g(previous)315
-2071 y(ph)o(ysical)12 b(screen)h(line.)19 b(This)12 b(will)f(not)h(ha)o
+Ff(mark)i Fo(refers)75 797 y(to)c(a)g(cursor)h(p)q(osition)f(sa)o(v)o
+(ed)g(b)o(y)h(the)f Fn(set-mark)g Fo(command.)18 b(The)12
+b(text)g(b)q(et)o(w)o(een)g(the)f(p)q(oin)o(t)h(and)g(mark)75
+851 y(is)j(referred)h(to)f(as)g(the)h Ff(region)p Fo(.)21
+b(Readline)16 b(has)f(the)h(concept)g(of)f(an)h Fe(active)g(r)n(e)n
+(gion)s Fo(:)21 b(when)16 b(the)g(region)75 906 y(is)d(activ)o(e,)g
+(Readline)h(redispla)o(y)f(uses)i(the)e(v)m(alue)i(of)e(the)h
+Fn(active-region-start-color)c Fo(v)m(ariable)k(to)75
+961 y(denote)h(the)h(region.)j(Sev)o(eral)c(commands)g(set)g(the)g
+(region)f(to)h(activ)o(e;)f(those)h(are)g(noted)g(b)q(elo)o(w.)75
+1058 y Fd(1.4.1)30 b(Commands)21 b(F)-5 b(or)19 b(Mo)n(ving)75
+1143 y Fn(beginning-of-line)13 b(\(C-a\))315 1198 y Fo(Mo)o(v)o(e)g(to)
+g(the)h(start)e(of)i(the)f(curren)o(t)h(line.)19 b(This)14
+b(ma)o(y)f(also)f(b)q(e)j(b)q(ound)f(to)g(the)f(Home)h(k)o(ey)315
+1253 y(on)h(some)g(k)o(eyb)q(oards.)75 1330 y Fn(end-of-line)f(\(C-e\))
+315 1385 y Fo(Mo)o(v)o(e)h(to)g(the)i(end)f(of)g(the)g(line.)22
+b(This)16 b(ma)o(y)f(also)g(b)q(e)i(b)q(ound)g(to)e(the)h(End)g(k)o(ey)
+g(on)g(some)315 1439 y(k)o(eyb)q(oards.)75 1517 y Fn(forward-char)e
+(\(C-f\))315 1571 y Fo(Mo)o(v)o(e)g(forw)o(ard)g(a)h(c)o(haracter.)75
+1649 y Fn(backward-char)e(\(C-b\))315 1703 y Fo(Mo)o(v)o(e)h(bac)o(k)h
+(a)g(c)o(haracter.)75 1781 y Fn(forward-word)f(\(M-f\))315
+1835 y Fo(Mo)o(v)o(e)g(forw)o(ard)g(to)g(the)i(end)g(of)e(the)h(next)h
+(w)o(ord.)j(W)l(ords)c(are)f(comp)q(osed)i(of)f(letters)f(and)315
+1890 y(digits.)75 1968 y Fn(backward-word)f(\(M-b\))315
+2022 y Fo(Mo)o(v)o(e)j(bac)o(k)g(to)h(the)f(start)g(of)g(the)h(curren)o
+(t)g(or)f(previous)h(w)o(ord.)24 b(W)l(ords)16 b(are)h(comp)q(osed)315
+2077 y(of)e(letters)f(and)h(digits.)75 2154 y Fn(previous-screen-line)d
+(\(\))315 2209 y Fo(A)o(ttempt)19 b(to)h(mo)o(v)o(e)f(p)q(oin)o(t)h(to)
+f(the)h(same)g(ph)o(ysical)f(screen)i(column)f(on)g(the)g(previous)315
+2264 y(ph)o(ysical)12 b(screen)h(line.)19 b(This)12 b(will)f(not)h(ha)o
(v)o(e)g(the)h(desired)f(e\013ect)h(if)f(the)g(curren)o(t)h(Readline)
-315 2126 y(line)g(do)q(es)h(not)g(tak)o(e)f(up)h(more)f(than)g(one)h
+315 2319 y(line)g(do)q(es)h(not)g(tak)o(e)f(up)h(more)f(than)g(one)h
(ph)o(ysical)f(line)g(or)h(if)f(p)q(oin)o(t)g(is)g(not)g(greater)g
-(than)315 2181 y(the)i(length)g(of)g(the)g(prompt)g(plus)g(the)g
-(screen)h(width.)75 2261 y Fn(next-screen-line)d(\(\))315
-2316 y Fo(A)o(ttempt)e(to)h(mo)o(v)o(e)g(p)q(oin)o(t)g(to)f(the)i(same)
+(than)315 2374 y(the)i(length)g(of)g(the)g(prompt)g(plus)g(the)g
+(screen)h(width.)75 2451 y Fn(next-screen-line)d(\(\))315
+2506 y Fo(A)o(ttempt)e(to)h(mo)o(v)o(e)g(p)q(oin)o(t)g(to)f(the)i(same)
f(ph)o(ysical)f(screen)i(column)g(on)f(the)g(next)h(ph)o(ysical)315
-2371 y(screen)f(line.)19 b(This)11 b(will)f(not)h(ha)o(v)o(e)h(the)g
+2560 y(screen)f(line.)19 b(This)11 b(will)f(not)h(ha)o(v)o(e)h(the)g
(desired)f(e\013ect)h(if)f(the)h(curren)o(t)f(Readline)h(line)g(do)q
-(es)315 2425 y(not)h(tak)o(e)g(up)h(more)f(than)h(one)g(ph)o(ysical)f
+(es)315 2615 y(not)h(tak)o(e)g(up)h(more)f(than)h(one)g(ph)o(ysical)f
(line)g(or)g(if)g(the)h(length)f(of)g(the)h(curren)o(t)g(Readline)315
-2480 y(line)h(is)g(not)f(greater)h(than)g(the)g(length)g(of)g(the)g
-(prompt)g(plus)g(the)g(screen)h(width.)75 2560 y Fn(clear-screen)e
-(\(C-l\))315 2615 y Fo(Clear)e(the)i(screen)g(and)f(redra)o(w)g(the)g
-(curren)o(t)g(line,)g(lea)o(ving)g(the)g(curren)o(t)g(line)g(at)g(the)g
-(top)315 2670 y(of)i(the)g(screen.)p eop end
-%%Page: 17 20
-TeXDict begin 17 19 bop 75 -58 a Fo(Chapter)15 b(1:)k(Command)c(Line)h
-(Editing)1053 b(17)75 149 y Fn(redraw-current-line)13
-b(\(\))315 204 y Fo(Refresh)j(the)f(curren)o(t)g(line.)20
-b(By)15 b(default,)g(this)f(is)h(un)o(b)q(ound.)75 298
+2670 y(line)h(is)g(not)f(greater)h(than)g(the)g(length)g(of)g(the)g
+(prompt)g(plus)g(the)g(screen)h(width.)p eop end
+%%Page: 19 22
+TeXDict begin 19 21 bop 75 -58 a Fo(Chapter)15 b(1:)k(Command)c(Line)h
+(Editing)1053 b(19)75 149 y Fn(clear-display)13 b(\(M-C-l\))315
+204 y Fo(Clear)j(the)g(screen)h(and,)g(if)f(p)q(ossible,)g(the)g
+(terminal's)f(scrollbac)o(k)g(bu\013er,)i(then)g(redra)o(w)315
+259 y(the)e(curren)o(t)g(line,)g(lea)o(ving)f(the)h(curren)o(t)g(line)g
+(at)g(the)g(top)g(of)g(the)g(screen.)75 337 y Fn(clear-screen)f
+(\(C-l\))315 392 y Fo(Clear)i(the)i(screen,)g(then)f(redra)o(w)g(the)g
+(curren)o(t)g(line,)g(lea)o(ving)f(the)h(curren)o(t)g(line)g(at)g(the)
+315 447 y(top)e(of)g(the)g(screen.)75 525 y Fn(redraw-current-line)e
+(\(\))315 579 y Fo(Refresh)j(the)f(curren)o(t)g(line.)20
+b(By)15 b(default,)g(this)f(is)h(un)o(b)q(ound.)75 677
y Fd(1.4.2)30 b(Commands)21 b(F)-5 b(or)19 b(Manipulating)i(The)f
-(History)75 381 y Fn(accept-line)14 b(\(Newline)g(or)h(Return\))315
-435 y Fo(Accept)j(the)g(line)f(regardless)g(of)g(where)h(the)g(cursor)f
-(is.)26 b(If)18 b(this)f(line)g(is)h(non-empt)o(y)l(,)g(it)315
-490 y(ma)o(y)d(b)q(e)i(added)f(to)g(the)g(history)f(list)f(for)i
-(future)g(recall)f(with)g Fn(add_history\(\))p Fo(.)20
-b(If)d(this)315 545 y(line)e(is)g(a)f(mo)q(di\014ed)i(history)e(line,)h
-(the)g(history)f(line)h(is)g(restored)f(to)h(its)f(original)g(state.)75
-619 y Fn(previous-history)f(\(C-p\))315 673 y Fo(Mo)o(v)o(e)h(`bac)o
-(k')h(through)f(the)i(history)e(list,)f(fetc)o(hing)i(the)g(previous)g
-(command.)75 747 y Fn(next-history)f(\(C-n\))315 802
-y Fo(Mo)o(v)o(e)g(`forw)o(ard')f(through)i(the)h(history)e(list,)f
-(fetc)o(hing)i(the)g(next)h(command.)75 876 y Fn(beginning-of-history)c
-(\(M-<\))315 930 y Fo(Mo)o(v)o(e)i(to)h(the)g(\014rst)g(line)g(in)g
-(the)g(history)l(.)75 1004 y Fn(end-of-history)e(\(M->\))315
-1059 y Fo(Mo)o(v)o(e)h(to)h(the)g(end)h(of)f(the)g(input)g(history)l(,)
-f(i.e.,)g(the)h(line)g(curren)o(tly)g(b)q(eing)g(en)o(tered.)75
-1132 y Fn(reverse-search-history)d(\(C-r\))315 1187 y
-Fo(Searc)o(h)k(bac)o(kw)o(ard)e(starting)g(at)h(the)h(curren)o(t)f
-(line)h(and)f(mo)o(ving)g(`up')g(through)g(the)h(his-)315
-1242 y(tory)e(as)h(necessary)l(.)20 b(This)15 b(is)g(an)g(incremen)o
-(tal)f(searc)o(h.)75 1316 y Fn(forward-search-history)e(\(C-s\))315
-1370 y Fo(Searc)o(h)22 b(forw)o(ard)e(starting)h(at)g(the)h(curren)o(t)
+(History)75 762 y Fn(accept-line)14 b(\(Newline)g(or)h(Return\))315
+817 y Fo(Accept)h(the)f(line)g(regardless)f(of)g(where)i(the)f(cursor)g
+(is.)k(If)c(this)g(line)g(is)f(non-empt)o(y)l(,)h(y)o(ou)315
+872 y(can)j(add)g(it)f(to)h(the)g(history)f(list)f(using)i
+Fn(add_history\(\))p Fo(.)26 b(If)19 b(this)e(line)g(is)h(a)g(mo)q
+(di\014ed)315 927 y(history)c(line,)h(then)g(restore)g(the)g(history)f
+(line)h(to)g(its)f(original)f(state.)75 1005 y Fn(previous-history)g
+(\(C-p\))315 1060 y Fo(Mo)o(v)o(e)h(`bac)o(k')h(through)f(the)i
+(history)e(list,)f(fetc)o(hing)i(the)g(previous)g(command.)75
+1138 y Fn(next-history)f(\(C-n\))315 1192 y Fo(Mo)o(v)o(e)g(`forw)o
+(ard')f(through)i(the)h(history)e(list,)f(fetc)o(hing)i(the)g(next)h
+(command.)75 1270 y Fn(beginning-of-history)c(\(M-<\))315
+1325 y Fo(Mo)o(v)o(e)i(to)h(the)g(\014rst)g(line)g(in)g(the)g(history)l
+(.)75 1403 y Fn(end-of-history)e(\(M->\))315 1458 y Fo(Mo)o(v)o(e)h(to)
+h(the)g(end)h(of)f(the)g(input)g(history)l(,)f(i.e.,)g(the)h(line)g
+(curren)o(tly)g(b)q(eing)g(en)o(tered.)75 1536 y Fn
+(reverse-search-history)d(\(C-r\))315 1591 y Fo(Searc)o(h)k(bac)o(kw)o
+(ard)e(starting)g(at)h(the)h(curren)o(t)f(line)h(and)f(mo)o(ving)g
+(`up')g(through)g(the)h(his-)315 1646 y(tory)c(as)h(necessary)l(.)20
+b(This)12 b(is)h(an)g(incremen)o(tal)f(searc)o(h.)19
+b(This)13 b(command)g(sets)f(the)i(region)315 1700 y(to)h(the)g(matc)o
+(hed)g(text)g(and)g(activ)m(ates)f(the)i(region.)75 1778
+y Fn(forward-search-history)c(\(C-s\))315 1833 y Fo(Searc)o(h)22
+b(forw)o(ard)e(starting)h(at)g(the)h(curren)o(t)f(line)h(and)g(mo)o
+(ving)f(`do)o(wn')f(through)i(the)315 1888 y(history)c(as)h(necessary)l
+(.)32 b(This)18 b(is)h(an)g(incremen)o(tal)f(searc)o(h.)31
+b(This)19 b(command)g(sets)g(the)315 1943 y(region)14
+b(to)h(the)g(matc)o(hed)g(text)g(and)g(activ)m(ates)g(the)g(region.)75
+2021 y Fn(non-incremental-reverse-se)o(arch-hi)o(story)d(\(M-p\))315
+2076 y Fo(Searc)o(h)k(bac)o(kw)o(ard)e(starting)g(at)h(the)h(curren)o
+(t)f(line)h(and)f(mo)o(ving)g(`up')g(through)g(the)h(his-)315
+2130 y(tory)h(as)h(necessary)g(using)g(a)f(non-incremen)o(tal)h(searc)o
+(h)g(for)f(a)h(string)f(supplied)h(b)o(y)g(the)315 2185
+y(user.)i(The)15 b(searc)o(h)g(string)g(ma)o(y)f(matc)o(h)h(an)o
+(ywhere)g(in)g(a)g(history)f(line.)75 2263 y Fn
+(non-incremental-forward-se)o(arch-hi)o(story)e(\(M-n\))315
+2318 y Fo(Searc)o(h)22 b(forw)o(ard)e(starting)h(at)g(the)h(curren)o(t)
f(line)h(and)g(mo)o(ving)f(`do)o(wn')f(through)i(the)315
-1425 y(history)14 b(as)h(necessary)l(.)20 b(This)15 b(is)g(an)g
-(incremen)o(tal)f(searc)o(h.)75 1499 y Fn(non-incremental-reverse-se)o
-(arch-hi)o(story)e(\(M-p\))315 1554 y Fo(Searc)o(h)k(bac)o(kw)o(ard)e
-(starting)g(at)h(the)h(curren)o(t)f(line)h(and)f(mo)o(ving)g(`up')g
-(through)g(the)h(his-)315 1608 y(tory)h(as)h(necessary)g(using)g(a)f
-(non-incremen)o(tal)h(searc)o(h)g(for)f(a)h(string)f(supplied)h(b)o(y)g
-(the)315 1663 y(user.)i(The)15 b(searc)o(h)g(string)g(ma)o(y)f(matc)o
-(h)h(an)o(ywhere)g(in)g(a)g(history)f(line.)75 1737 y
-Fn(non-incremental-forward-se)o(arch-hi)o(story)e(\(M-n\))315
-1792 y Fo(Searc)o(h)22 b(forw)o(ard)e(starting)h(at)g(the)h(curren)o(t)
-f(line)h(and)g(mo)o(ving)f(`do)o(wn')f(through)i(the)315
-1846 y(history)12 b(as)h(necessary)h(using)f(a)g(non-incremen)o(tal)g
+2373 y(history)12 b(as)h(necessary)h(using)f(a)g(non-incremen)o(tal)g
(searc)o(h)g(for)g(a)g(string)f(supplied)i(b)o(y)f(the)315
-1901 y(user.)20 b(The)15 b(searc)o(h)g(string)g(ma)o(y)f(matc)o(h)h(an)
-o(ywhere)g(in)g(a)g(history)f(line.)75 1975 y Fn
-(history-search-forward)e(\(\))315 2030 y Fo(Searc)o(h)21
-b(forw)o(ard)e(through)i(the)f(history)g(for)g(the)h(string)f(of)g(c)o
-(haracters)g(b)q(et)o(w)o(een)h(the)315 2084 y(start)c(of)g(the)h
-(curren)o(t)g(line)g(and)g(the)g(p)q(oin)o(t.)28 b(The)18
-b(searc)o(h)g(string)f(m)o(ust)g(matc)o(h)h(at)f(the)315
-2139 y(b)q(eginning)f(of)g(a)g(history)f(line.)23 b(This)16
-b(is)g(a)g(non-incremen)o(tal)f(searc)o(h.)23 b(By)17
-b(default,)f(this)315 2194 y(command)f(is)g(un)o(b)q(ound.)75
-2268 y Fn(history-search-backward)d(\(\))315 2322 y Fo(Searc)o(h)18
+2428 y(user.)20 b(The)15 b(searc)o(h)g(string)g(ma)o(y)f(matc)o(h)h(an)
+o(ywhere)g(in)g(a)g(history)f(line.)75 2506 y Fn
+(history-search-backward)e(\(\))315 2560 y Fo(Searc)o(h)18
b(bac)o(kw)o(ard)e(through)h(the)h(history)e(for)h(the)g(string)g(of)g
-(c)o(haracters)f(b)q(et)o(w)o(een)i(the)315 2377 y(start)f(of)g(the)h
+(c)o(haracters)f(b)q(et)o(w)o(een)i(the)315 2615 y(start)f(of)g(the)h
(curren)o(t)g(line)g(and)g(the)g(p)q(oin)o(t.)28 b(The)18
b(searc)o(h)g(string)f(m)o(ust)g(matc)o(h)h(at)f(the)315
-2432 y(b)q(eginning)f(of)g(a)g(history)f(line.)23 b(This)16
+2670 y(b)q(eginning)22 b(of)g(a)g(history)f(line.)41
+b(This)22 b(is)g(a)g(non-incremen)o(tal)f(searc)o(h.)41
+b(By)23 b(default,)p eop end
+%%Page: 20 23
+TeXDict begin 20 22 bop 75 -58 a Fo(Chapter)15 b(1:)k(Command)c(Line)h
+(Editing)1053 b(20)315 149 y(this)16 b(command)g(is)g(un)o(b)q(ound,)h
+(but)f(ma)o(y)g(b)q(e)h(b)q(ound)g(to)f(the)g(P)o(age)f(Do)o(wn)h(k)o
+(ey)g(on)g(some)315 204 y(k)o(eyb)q(oards.)75 290 y Fn
+(history-search-forward)c(\(\))315 345 y Fo(Searc)o(h)f(forw)o(ard)f
+(through)h(the)g(history)f(for)h(the)g(string)f(of)h(c)o(haracters)f(b)
+q(et)o(w)o(een)i(the)f(start)315 400 y(of)g(the)g(curren)o(t)g(line)g
+(and)g(the)g(p)q(oin)o(t.)18 b(The)11 b(searc)o(h)g(string)f(m)o(ust)h
+(matc)o(h)f(at)h(the)g(b)q(eginning)315 455 y(of)16 b(a)g(history)f
+(line.)23 b(This)16 b(is)g(a)g(non-incremen)o(tal)g(searc)o(h.)23
+b(By)16 b(default,)g(this)g(command)315 510 y(is)f(un)o(b)q(ound,)h
+(but)f(ma)o(y)g(b)q(e)g(b)q(ound)i(to)d(the)h(P)o(age)g(Up)g(k)o(ey)g
+(on)h(some)e(k)o(eyb)q(oards.)75 596 y Fn(history-substring-search-b)o
+(ackward)e(\(\))315 650 y Fo(Searc)o(h)18 b(bac)o(kw)o(ard)e(through)h
+(the)h(history)e(for)h(the)g(string)g(of)g(c)o(haracters)f(b)q(et)o(w)o
+(een)i(the)315 705 y(start)13 b(of)h(the)h(curren)o(t)f(line)g(and)h
+(the)f(p)q(oin)o(t.)19 b(The)c(searc)o(h)f(string)f(ma)o(y)h(matc)o(h)g
+(an)o(ywhere)315 760 y(in)i(a)g(history)f(line.)23 b(This)16
b(is)g(a)g(non-incremen)o(tal)f(searc)o(h.)23 b(By)17
-b(default,)f(this)315 2487 y(command)f(is)g(un)o(b)q(ound.)75
-2560 y Fn(history-substring-search-f)o(orward)d(\(\))315
-2615 y Fo(Searc)o(h)21 b(forw)o(ard)e(through)i(the)f(history)g(for)g
+b(default,)e(this)h(command)315 815 y(is)f(un)o(b)q(ound.)75
+901 y Fn(history-substring-search-f)o(orward)d(\(\))315
+956 y Fo(Searc)o(h)21 b(forw)o(ard)e(through)i(the)f(history)g(for)g
(the)h(string)f(of)g(c)o(haracters)g(b)q(et)o(w)o(een)h(the)315
-2670 y(start)13 b(of)h(the)h(curren)o(t)f(line)g(and)h(the)f(p)q(oin)o
-(t.)19 b(The)c(searc)o(h)f(string)f(ma)o(y)h(matc)o(h)g(an)o(ywhere)p
-eop end
-%%Page: 18 21
-TeXDict begin 18 20 bop 75 -58 a Fo(Chapter)15 b(1:)k(Command)c(Line)h
-(Editing)1053 b(18)315 149 y(in)16 b(a)g(history)f(line.)23
-b(This)16 b(is)g(a)g(non-incremen)o(tal)f(searc)o(h.)23
-b(By)17 b(default,)e(this)h(command)315 204 y(is)f(un)o(b)q(ound.)75
-287 y Fn(history-substring-search-b)o(ackward)d(\(\))315
-342 y Fo(Searc)o(h)18 b(bac)o(kw)o(ard)e(through)h(the)h(history)e(for)
-h(the)g(string)g(of)g(c)o(haracters)f(b)q(et)o(w)o(een)i(the)315
-396 y(start)13 b(of)h(the)h(curren)o(t)f(line)g(and)h(the)f(p)q(oin)o
+1010 y(start)13 b(of)h(the)h(curren)o(t)f(line)g(and)h(the)f(p)q(oin)o
(t.)19 b(The)c(searc)o(h)f(string)f(ma)o(y)h(matc)o(h)g(an)o(ywhere)315
-451 y(in)i(a)g(history)f(line.)23 b(This)16 b(is)g(a)g(non-incremen)o
+1065 y(in)i(a)g(history)f(line.)23 b(This)16 b(is)g(a)g(non-incremen)o
(tal)f(searc)o(h.)23 b(By)17 b(default,)e(this)h(command)315
-506 y(is)f(un)o(b)q(ound.)75 588 y Fn(yank-nth-arg)f(\(M-C-y\))315
-643 y Fo(Insert)19 b(the)f(\014rst)h(argumen)o(t)e(to)h(the)h(previous)
-f(command)g(\(usually)g(the)h(second)g(w)o(ord)315 698
-y(on)d(the)g(previous)g(line\))f(at)g(p)q(oin)o(t.)22
-b(With)15 b(an)h(argumen)o(t)f Fe(n)p Fo(,)h(insert)f(the)h
-Fe(n)p Fo(th)g(w)o(ord)g(from)315 753 y(the)i(previous)f(command)g
-(\(the)g(w)o(ords)g(in)g(the)h(previous)f(command)g(b)q(egin)h(with)f
-(w)o(ord)315 808 y(0\).)33 b(A)20 b(negativ)o(e)f(argumen)o(t)g
-(inserts)g(the)h Fe(n)p Fo(th)g(w)o(ord)f(from)g(the)h(end)g(of)f(the)h
-(previous)315 862 y(command.)k(Once)17 b(the)g(argumen)o(t)e
-Fe(n)i Fo(is)f(computed,)h(the)f(argumen)o(t)g(is)g(extracted)g(as)g
-(if)315 917 y(the)f(`)p Fn(!)p Fg(n)p Fo(')f(history)h(expansion)g(had)
-g(b)q(een)h(sp)q(eci\014ed.)75 1000 y Fn(yank-last-arg)d(\(M-.)i(or)g
-(M-_\))315 1054 y Fo(Insert)j(last)e(argumen)o(t)h(to)g(the)g(previous)
+1120 y(is)f(un)o(b)q(ound.)75 1206 y Fn(yank-nth-arg)f(\(M-C-y\))315
+1261 y Fo(Insert)f(the)g(\014rst)g(argumen)o(t)f(to)g(the)i(previous)e
+(command)h(\(usually)f(the)h(second)h(w)o(ord)e(on)315
+1316 y(the)j(previous)g(line\))f(at)g(p)q(oin)o(t.)20
+b(With)14 b(an)h(argumen)o(t)f Ff(n)p Fo(,)h(insert)f(the)h
+Ff(n)p Fo(th)g(w)o(ord)g(from)f(the)315 1371 y(previous)f(command)h
+(\(the)f(w)o(ords)f(in)i(the)f(previous)h(command)f(b)q(egin)h(with)e
+(w)o(ord)h(0\).)19 b(A)315 1425 y(negativ)o(e)12 b(argumen)o(t)g
+(inserts)g(the)h Ff(n)p Fo(th)g(w)o(ord)f(from)g(the)h(end)h(of)e(the)h
+(previous)f(command.)315 1480 y(Once)17 b(the)f(argumen)o(t)f
+Ff(n)h Fo(is)f(computed,)h(this)f(uses)h(the)g(history)f(expansion)h
+(facilities)e(to)315 1535 y(extract)g(the)i Ff(n)p Fo(th)f(w)o(ord,)f
+(as)h(if)g(the)g(`)p Fn(!)p Fg(n)p Fo(')f(history)g(expansion)h(had)h
+(b)q(een)g(sp)q(eci\014ed.)75 1621 y Fn(yank-last-arg)d(\(M-.)i(or)g
+(M-_\))315 1676 y Fo(Insert)j(last)e(argumen)o(t)h(to)g(the)g(previous)
h(command)f(\(the)g(last)g(w)o(ord)g(of)g(the)g(previous)315
-1109 y(history)f(en)o(try\).)24 b(With)16 b(a)g(n)o(umeric)h(argumen)o
+1731 y(history)f(en)o(try\).)24 b(With)16 b(a)g(n)o(umeric)h(argumen)o
(t,)f(b)q(eha)o(v)o(e)h(exactly)f(lik)o(e)g Fn(yank-nth-arg)p
-Fo(.)315 1164 y(Successiv)o(e)d(calls)e(to)h Fn(yank-last-arg)f
+Fo(.)315 1785 y(Successiv)o(e)d(calls)e(to)h Fn(yank-last-arg)f
Fo(mo)o(v)o(e)g(bac)o(k)i(through)f(the)g(history)g(list,)f(inserting)
-315 1219 y(the)g(last)g(w)o(ord)f(\(or)h(the)g(w)o(ord)g(sp)q
+315 1840 y(the)g(last)g(w)o(ord)f(\(or)h(the)g(w)o(ord)g(sp)q
(eci\014ed)h(b)o(y)f(the)h(argumen)o(t)e(to)h(the)g(\014rst)g(call\))f
-(of)h(eac)o(h)g(line)315 1274 y(in)18 b(turn.)29 b(An)o(y)18
+(of)h(eac)o(h)g(line)315 1895 y(in)18 b(turn.)29 b(An)o(y)18
b(n)o(umeric)g(argumen)o(t)g(supplied)g(to)g(these)g(successiv)o(e)h
-(calls)e(determines)315 1328 y(the)g(direction)g(to)g(mo)o(v)o(e)g
+(calls)e(determines)315 1950 y(the)g(direction)g(to)g(mo)o(v)o(e)g
(through)g(the)g(history)l(.)26 b(A)17 b(negativ)o(e)g(argumen)o(t)f
-(switc)o(hes)h(the)315 1383 y(direction)11 b(through)g(the)g(history)g
-(\(bac)o(k)g(or)g(forw)o(ard\).)17 b(The)11 b(history)g(expansion)g
-(facilities)315 1438 y(are)i(used)i(to)e(extract)g(the)h(last)e
-(argumen)o(t,)h(as)h(if)f(the)h(`)p Fn(!$)p Fo(')e(history)h(expansion)
-h(had)g(b)q(een)315 1493 y(sp)q(eci\014ed.)75 1595 y
-Fd(1.4.3)30 b(Commands)21 b(F)-5 b(or)19 b(Changing)i(T)-5
-b(ext)75 1683 y Fg(end-of-file)14 b Fn(\(usually)g(C-d\))315
-1737 y Fo(The)f(c)o(haracter)g(indicating)f(end-of-\014le)i(as)e(set,)h
-(for)g(example,)g(b)o(y)g Fn(stty)p Fo(.)18 b(If)c(this)e(c)o(harac-)
-315 1792 y(ter)f(is)f(read)h(when)g(there)g(are)g(no)g(c)o(haracters)f
-(on)h(the)g(line,)g(and)g(p)q(oin)o(t)f(is)h(at)f(the)h(b)q(eginning)
-315 1847 y(of)k(the)g(line,)g(Readline)g(in)o(terprets)f(it)h(as)g(the)
-g(end)h(of)f(input)g(and)g(returns)g Fh(eof)p Fo(.)75
-1929 y Fn(delete-char)f(\(C-d\))315 1984 y Fo(Delete)i(the)h(c)o
-(haracter)f(at)g(p)q(oin)o(t.)23 b(If)17 b(this)f(function)h(is)f(b)q
-(ound)i(to)e(the)g(same)h(c)o(haracter)315 2039 y(as)e(the)g(tt)o(y)f
-Fh(eof)i Fo(c)o(haracter,)e(as)h Fg(C-d)g Fo(commonly)f(is,)g(see)i(ab)
-q(o)o(v)o(e)f(for)f(the)i(e\013ects.)75 2121 y Fn(backward-delete-char)
-c(\(Rubout\))315 2176 y Fo(Delete)j(the)g(c)o(haracter)f(b)q(ehind)i
-(the)g(cursor.)j(A)c(n)o(umeric)g(argumen)o(t)f(means)i(to)e(kill)g
-(the)315 2231 y(c)o(haracters)g(instead)h(of)g(deleting)g(them.)75
-2314 y Fn(forward-backward-delete-ch)o(ar)d(\(\))315
-2368 y Fo(Delete)19 b(the)g(c)o(haracter)f(under)i(the)f(cursor,)h
-(unless)f(the)g(cursor)g(is)g(at)f(the)h(end)h(of)f(the)315
-2423 y(line,)c(in)h(whic)o(h)g(case)f(the)h(c)o(haracter)g(b)q(ehind)g
-(the)g(cursor)g(is)f(deleted.)22 b(By)16 b(default,)g(this)315
-2478 y(is)f(not)g(b)q(ound)h(to)e(a)h(k)o(ey)l(.)75 2560
-y Fn(quoted-insert)e(\(C-q)i(or)g(C-v\))315 2615 y Fo(Add)j(the)f(next)
-g(c)o(haracter)g(t)o(yp)q(ed)g(to)f(the)i(line)e(v)o(erbatim.)25
-b(This)17 b(is)f(ho)o(w)h(to)g(insert)f(k)o(ey)315 2670
-y(sequences)g(lik)o(e)f Fg(C-q)p Fo(,)f(for)h(example.)p
+(switc)o(hes)h(the)315 2005 y(direction)10 b(through)h(the)g(history)f
+(\(bac)o(k)h(or)g(forw)o(ard\).)17 b(This)10 b(uses)i(the)f(history)f
+(expansion)315 2059 y(facilities)19 b(to)h(extract)g(the)g(last)g(w)o
+(ord,)h(as)f(if)g(the)h(`)p Fn(!$)p Fo(')f(history)f(expansion)i(had)g
+(b)q(een)315 2114 y(sp)q(eci\014ed.)75 2200 y Fn(operate-and-get-next)
+12 b(\(C-o\))315 2255 y Fo(Accept)j(the)g(curren)o(t)f(line)g(for)g
+(return)h(to)f(the)g(calling)g(application)f(as)h(if)g(a)g(newline)h
+(had)315 2310 y(b)q(een)e(en)o(tered,)f(and)g(fetc)o(h)f(the)h(next)g
+(line)f(relativ)o(e)f(to)h(the)h(curren)o(t)f(line)g(from)g(the)h
+(history)315 2365 y(for)j(editing.)20 b(A)15 b(n)o(umeric)h(argumen)o
+(t,)e(if)h(supplied,)g(sp)q(eci\014es)i(the)e(history)g(en)o(try)g(to)g
+(use)315 2419 y(instead)g(of)g(the)g(curren)o(t)g(line.)75
+2506 y Fn(fetch-history)e(\(\))315 2560 y Fo(With)e(a)h(n)o(umeric)g
+(argumen)o(t,)f(fetc)o(h)h(that)g(en)o(try)f(from)h(the)g(history)f
+(list)g(and)h(mak)o(e)g(it)f(the)315 2615 y(curren)o(t)k(line.)k
+(Without)14 b(an)h(argumen)o(t,)f(mo)o(v)o(e)g(bac)o(k)h(to)f(the)h
+(\014rst)g(en)o(try)f(in)h(the)g(history)315 2670 y(list.)p
eop end
-%%Page: 19 22
-TeXDict begin 19 21 bop 75 -58 a Fo(Chapter)15 b(1:)k(Command)c(Line)h
-(Editing)1053 b(19)75 149 y Fn(tab-insert)14 b(\(M-TAB\))315
-204 y Fo(Insert)h(a)g(tab)g(c)o(haracter.)75 287 y Fn(self-insert)f
-(\(a,)g(b,)h(A,)g(1,)g(!,)g(...)o(\))315 341 y Fo(Insert)g(y)o
-(ourself.)75 424 y Fn(bracketed-paste-begin)d(\(\))315
-479 y Fo(This)g(function)g(is)g(in)o(tended)h(to)f(b)q(e)h(b)q(ound)g
-(to)f(the)h Fn(")p Fo(brac)o(k)o(eted)f(paste)p Fn(")g
-Fo(escap)q(e)h(sequence)315 533 y(sen)o(t)18 b(b)o(y)h(some)g
-(terminals,)f(and)g(suc)o(h)i(a)e(binding)h(is)f(assigned)g(b)o(y)h
-(default.)30 b(It)19 b(allo)o(ws)315 588 y(Readline)e(to)e(insert)h
-(the)g(pasted)g(text)g(as)g(a)g(single)g(unit)g(without)f(treating)g
-(eac)o(h)h(c)o(har-)315 643 y(acter)j(as)g(if)g(it)g(had)g(b)q(een)i
-(read)e(from)g(the)g(k)o(eyb)q(oard.)33 b(The)19 b(c)o(haracters)g(are)
-g(inserted)315 698 y(as)h(if)g(eac)o(h)h(one)g(w)o(as)e(b)q(ound)j(to)e
-Fn(self-insert)p Fo(\))e(instead)j(of)f(executing)g(an)o(y)h(editing)
-315 753 y(commands.)75 835 y Fn(transpose-chars)13 b(\(C-t\))315
-890 y Fo(Drag)i(the)h(c)o(haracter)f(b)q(efore)h(the)h(cursor)e(forw)o
-(ard)g(o)o(v)o(er)g(the)h(c)o(haracter)f(at)h(the)g(cursor,)315
-945 y(mo)o(ving)h(the)g(cursor)h(forw)o(ard)e(as)i(w)o(ell.)26
-b(If)18 b(the)g(insertion)f(p)q(oin)o(t)g(is)g(at)g(the)h(end)h(of)e
-(the)315 999 y(line,)11 b(then)g(this)g(transp)q(oses)f(the)h(last)f(t)
-o(w)o(o)g(c)o(haracters)g(of)h(the)g(line.)18 b(Negativ)o(e)10
-b(argumen)o(ts)315 1054 y(ha)o(v)o(e)15 b(no)g(e\013ect.)75
-1137 y Fn(transpose-words)e(\(M-t\))315 1191 y Fo(Drag)i(the)h(w)o(ord)
-g(b)q(efore)g(p)q(oin)o(t)g(past)g(the)g(w)o(ord)f(after)h(p)q(oin)o
-(t,)f(mo)o(ving)g(p)q(oin)o(t)h(past)g(that)315 1246
-y(w)o(ord)d(as)h(w)o(ell.)19 b(If)14 b(the)g(insertion)g(p)q(oin)o(t)f
-(is)h(at)g(the)g(end)h(of)e(the)i(line,)e(this)h(transp)q(oses)g(the)
-315 1301 y(last)g(t)o(w)o(o)g(w)o(ords)g(on)i(the)f(line.)75
-1384 y Fn(upcase-word)f(\(M-u\))315 1438 y Fo(Upp)q(ercase)j(the)f
+%%Page: 21 24
+TeXDict begin 21 23 bop 75 -58 a Fo(Chapter)15 b(1:)k(Command)c(Line)h
+(Editing)1053 b(21)75 149 y Fd(1.4.3)30 b(Commands)21
+b(F)-5 b(or)19 b(Changing)i(T)-5 b(ext)75 232 y Fg(end-of-file)14
+b Fn(\(usually)g(C-d\))315 287 y Fo(The)f(c)o(haracter)g(indicating)f
+(end-of-\014le)i(as)e(set,)h(for)g(example,)g(b)o(y)g
+Fn(stty)p Fo(.)18 b(If)c(this)e(c)o(harac-)315 342 y(ter)f(is)f(read)h
+(when)g(there)g(are)g(no)g(c)o(haracters)f(on)h(the)g(line,)g(and)g(p)q
+(oin)o(t)f(is)h(at)f(the)h(b)q(eginning)315 396 y(of)k(the)g(line,)g
+(Readline)g(in)o(terprets)f(it)h(as)g(the)g(end)h(of)f(input)g(and)g
+(returns)g Fh(eof)p Fo(.)75 469 y Fn(delete-char)f(\(C-d\))315
+524 y Fo(Delete)i(the)h(c)o(haracter)f(at)g(p)q(oin)o(t.)23
+b(If)17 b(this)f(function)h(is)f(b)q(ound)i(to)e(the)g(same)h(c)o
+(haracter)315 579 y(as)e(the)g(tt)o(y)f Fh(eof)i Fo(c)o(haracter,)e(as)
+h Fg(C-d)g Fo(commonly)f(is,)g(see)i(ab)q(o)o(v)o(e)f(for)f(the)i
+(e\013ects.)75 652 y Fn(backward-delete-char)c(\(Rubout\))315
+707 y Fo(Delete)j(the)g(c)o(haracter)f(b)q(ehind)i(the)g(cursor.)j(A)c
+(n)o(umeric)g(argumen)o(t)f(means)i(to)e(kill)g(the)315
+762 y(c)o(haracters,)g(sa)o(ving)g(them)h(on)g(the)h(kill)e(ring,)g
+(instead)h(of)g(deleting)f(them.)75 835 y Fn
+(forward-backward-delete-ch)o(ar)e(\(\))315 889 y Fo(Delete)19
+b(the)g(c)o(haracter)f(under)i(the)f(cursor,)h(unless)f(the)g(cursor)g
+(is)g(at)f(the)h(end)h(of)f(the)315 944 y(line,)c(in)h(whic)o(h)g(case)
+f(the)h(c)o(haracter)g(b)q(ehind)g(the)g(cursor)g(is)f(deleted.)22
+b(By)16 b(default,)g(this)315 999 y(is)f(not)g(b)q(ound)h(to)e(a)h(k)o
+(ey)l(.)75 1072 y Fn(quoted-insert)e(\(C-q)i(or)g(C-v\))315
+1127 y Fo(Add)j(the)f(next)g(c)o(haracter)g(t)o(yp)q(ed)g(to)f(the)i
+(line)e(v)o(erbatim.)25 b(This)17 b(is)f(ho)o(w)h(to)g(insert)f(k)o(ey)
+315 1182 y(sequences)g(lik)o(e)f Fg(C-q)p Fo(,)f(for)h(example.)75
+1255 y Fn(tab-insert)f(\(M-TAB\))315 1309 y Fo(Insert)h(a)g(tab)g(c)o
+(haracter.)75 1382 y Fn(self-insert)f(\(a,)g(b,)h(A,)g(1,)g(!,)g(...)o
+(\))315 1437 y Fo(Insert)g(the)h(c)o(haracter)e(t)o(yp)q(ed.)75
+1510 y Fn(bracketed-paste-begin)e(\(\))315 1565 y Fo(This)g(function)g
+(is)g(in)o(tended)h(to)f(b)q(e)h(b)q(ound)g(to)f(the)h
+Fn(")p Fo(brac)o(k)o(eted)f(paste)p Fn(")g Fo(escap)q(e)h(sequence)315
+1620 y(sen)o(t)18 b(b)o(y)h(some)g(terminals,)f(and)g(suc)o(h)i(a)e
+(binding)h(is)f(assigned)g(b)o(y)h(default.)30 b(It)19
+b(allo)o(ws)315 1675 y(Readline)e(to)e(insert)h(the)g(pasted)g(text)g
+(as)g(a)g(single)g(unit)g(without)f(treating)g(eac)o(h)h(c)o(har-)315
+1729 y(acter)j(as)g(if)g(it)g(had)g(b)q(een)i(read)e(from)g(the)g(k)o
+(eyb)q(oard.)33 b(The)19 b(c)o(haracters)g(are)g(inserted)315
+1784 y(as)j(if)f(eac)o(h)h(one)g(w)o(as)g(b)q(ound)h(to)e
+Fn(self-insert)g Fo(instead)g(of)h(executing)g(an)o(y)g(editing)315
+1839 y(commands.)315 1903 y(Brac)o(k)o(eted)c(paste)f(sets)h(the)g
+(region)g(\(the)f(c)o(haracters)h(b)q(et)o(w)o(een)g(p)q(oin)o(t)g(and)
+g(the)g(mark\))315 1958 y(to)d(the)g(inserted)g(text.)k(It)d(sets)e
+(the)i Fe(active)g(r)n(e)n(gion)p Fo(.)75 2031 y Fn(transpose-chars)d
+(\(C-t\))315 2086 y Fo(Drag)i(the)h(c)o(haracter)f(b)q(efore)h(the)h
+(cursor)e(forw)o(ard)g(o)o(v)o(er)g(the)h(c)o(haracter)f(at)h(the)g
+(cursor,)315 2140 y(mo)o(ving)h(the)g(cursor)h(forw)o(ard)e(as)i(w)o
+(ell.)26 b(If)18 b(the)g(insertion)f(p)q(oin)o(t)g(is)g(at)g(the)h(end)
+h(of)e(the)315 2195 y(line,)11 b(then)g(this)g(transp)q(oses)f(the)h
+(last)f(t)o(w)o(o)g(c)o(haracters)g(of)h(the)g(line.)18
+b(Negativ)o(e)10 b(argumen)o(ts)315 2250 y(ha)o(v)o(e)15
+b(no)g(e\013ect.)75 2323 y Fn(transpose-words)e(\(M-t\))315
+2378 y Fo(Drag)i(the)h(w)o(ord)g(b)q(efore)g(p)q(oin)o(t)g(past)g(the)g
+(w)o(ord)f(after)h(p)q(oin)o(t,)f(mo)o(ving)g(p)q(oin)o(t)h(past)g
+(that)315 2433 y(w)o(ord)d(as)h(w)o(ell.)19 b(If)14 b(the)g(insertion)g
+(p)q(oin)o(t)f(is)h(at)g(the)g(end)h(of)e(the)i(line,)e(this)h(transp)q
+(oses)g(the)315 2487 y(last)g(t)o(w)o(o)g(w)o(ords)g(on)i(the)f(line.)
+75 2560 y Fn(upcase-word)f(\(M-u\))315 2615 y Fo(Upp)q(ercase)j(the)f
(curren)o(t)g(\(or)f(follo)o(wing\))e(w)o(ord.)22 b(With)15
-b(a)h(negativ)o(e)f(argumen)o(t,)g(upp)q(er-)315 1493
+b(a)h(negativ)o(e)f(argumen)o(t,)g(upp)q(er-)315 2670
y(case)g(the)g(previous)g(w)o(ord,)g(but)g(do)g(not)g(mo)o(v)o(e)f(the)
-i(cursor.)75 1576 y Fn(downcase-word)d(\(M-l\))315 1630
-y Fo(Lo)o(w)o(ercase)d(the)h(curren)o(t)g(\(or)f(follo)o(wing\))e(w)o
-(ord.)17 b(With)10 b(a)h(negativ)o(e)f(argumen)o(t,)g(lo)o(w)o(ercase)
-315 1685 y(the)15 b(previous)g(w)o(ord,)f(but)i(do)f(not)g(mo)o(v)o(e)f
-(the)h(cursor.)75 1768 y Fn(capitalize-word)e(\(M-c\))315
-1822 y Fo(Capitalize)c(the)i(curren)o(t)f(\(or)g(follo)o(wing\))e(w)o
+i(cursor.)p eop end
+%%Page: 22 25
+TeXDict begin 22 24 bop 75 -58 a Fo(Chapter)15 b(1:)k(Command)c(Line)h
+(Editing)1053 b(22)75 149 y Fn(downcase-word)13 b(\(M-l\))315
+204 y Fo(Lo)o(w)o(ercase)d(the)h(curren)o(t)g(\(or)f(follo)o(wing\))e
+(w)o(ord.)17 b(With)10 b(a)h(negativ)o(e)f(argumen)o(t,)g(lo)o(w)o
+(ercase)315 259 y(the)15 b(previous)g(w)o(ord,)f(but)i(do)f(not)g(mo)o
+(v)o(e)f(the)h(cursor.)75 337 y Fn(capitalize-word)e(\(M-c\))315
+392 y Fo(Capitalize)c(the)i(curren)o(t)f(\(or)g(follo)o(wing\))e(w)o
(ord.)18 b(With)10 b(a)g(negativ)o(e)g(argumen)o(t,)g(capitalize)315
-1877 y(the)15 b(previous)g(w)o(ord,)f(but)i(do)f(not)g(mo)o(v)o(e)f
-(the)h(cursor.)75 1960 y Fn(overwrite-mode)e(\(\))315
-2014 y Fo(T)l(oggle)i(o)o(v)o(erwrite)g(mo)q(de.)24 b(With)16
+447 y(the)15 b(previous)g(w)o(ord,)f(but)i(do)f(not)g(mo)o(v)o(e)f(the)
+h(cursor.)75 525 y Fn(overwrite-mode)e(\(\))315 579 y
+Fo(T)l(oggle)i(o)o(v)o(erwrite)g(mo)q(de.)24 b(With)16
b(an)g(explicit)g(p)q(ositiv)o(e)g(n)o(umeric)g(argumen)o(t,)g(switc)o
-(hes)315 2069 y(to)10 b(o)o(v)o(erwrite)f(mo)q(de.)19
+(hes)315 634 y(to)10 b(o)o(v)o(erwrite)f(mo)q(de.)19
b(With)10 b(an)h(explicit)f(non-p)q(ositiv)o(e)g(n)o(umeric)h(argumen)o
-(t,)f(switc)o(hes)h(to)315 2124 y(insert)k(mo)q(de.)20
+(t,)f(switc)o(hes)h(to)315 689 y(insert)k(mo)q(de.)20
b(This)15 b(command)g(a\013ects)g(only)g Fn(emacs)f Fo(mo)q(de;)h
-Fn(vi)g Fo(mo)q(de)h(do)q(es)g(o)o(v)o(erwrite)315 2179
+Fn(vi)g Fo(mo)q(de)h(do)q(es)g(o)o(v)o(erwrite)315 744
y(di\013eren)o(tly)l(.)j(Eac)o(h)c(call)f(to)h Fn(readline\(\))f
-Fo(starts)f(in)j(insert)e(mo)q(de.)315 2247 y(In)27 b(o)o(v)o(erwrite)d
+Fo(starts)f(in)j(insert)e(mo)q(de.)315 810 y(In)27 b(o)o(v)o(erwrite)d
(mo)q(de,)29 b(c)o(haracters)c(b)q(ound)i(to)f Fn(self-insert)f
-Fo(replace)h(the)g(text)g(at)315 2302 y(p)q(oin)o(t)j(rather)g(than)g
+Fo(replace)h(the)g(text)g(at)315 865 y(p)q(oin)o(t)j(rather)g(than)g
(pushing)g(the)h(text)f(to)f(the)i(righ)o(t.)61 b(Characters)28
-b(b)q(ound)j(to)315 2357 y Fn(backward-delete-char)12
+b(b)q(ound)j(to)315 920 y Fn(backward-delete-char)12
b Fo(replace)k(the)f(c)o(haracter)f(b)q(efore)i(p)q(oin)o(t)f(with)f(a)
-h(space.)315 2426 y(By)g(default,)g(this)f(command)h(is)g(un)o(b)q
-(ound.)75 2528 y Fd(1.4.4)30 b(Killing)20 b(And)h(Y)-5
-b(anking)75 2615 y Fn(kill-line)14 b(\(C-k\))315 2670
-y Fo(Kill)g(the)i(text)e(from)h(p)q(oin)o(t)g(to)f(the)h(end)h(of)f
-(the)g(line.)p eop end
-%%Page: 20 23
-TeXDict begin 20 22 bop 75 -58 a Fo(Chapter)15 b(1:)k(Command)c(Line)h
-(Editing)1053 b(20)75 149 y Fn(backward-kill-line)13
-b(\(C-x)h(Rubout\))315 204 y Fo(Kill)g(bac)o(kw)o(ard)h(from)f(the)i
-(cursor)e(to)h(the)g(b)q(eginning)h(of)e(the)i(curren)o(t)f(line.)75
-283 y Fn(unix-line-discard)e(\(C-u\))315 338 y Fo(Kill)h(bac)o(kw)o
-(ard)h(from)f(the)i(cursor)e(to)h(the)g(b)q(eginning)h(of)e(the)i
-(curren)o(t)f(line.)75 416 y Fn(kill-whole-line)e(\(\))315
-471 y Fo(Kill)k(all)h(c)o(haracters)f(on)h(the)h(curren)o(t)f(line,)g
+h(space.)315 986 y(By)g(default,)g(this)g(command)g(is)g(un)o(b)q
+(ound,)h(but)f(ma)o(y)g(b)q(e)h(b)q(ound)g(to)f(the)g(Insert)h(k)o(ey)f
+(on)315 1041 y(some)g(k)o(eyb)q(oards.)75 1139 y Fd(1.4.4)30
+b(Killing)20 b(And)h(Y)-5 b(anking)75 1224 y Fn(kill-line)14
+b(\(C-k\))315 1279 y Fo(Kill)e(the)h(text)g(from)f(p)q(oin)o(t)h(to)f
+(the)h(end)h(of)e(the)h(curren)o(t)g(line.)19 b(With)12
+b(a)h(negativ)o(e)f(n)o(umeric)315 1334 y(argumen)o(t,)i(kill)g(bac)o
+(kw)o(ard)g(from)h(the)g(cursor)g(to)g(the)g(b)q(eginning)g(of)g(the)g
+(line.)75 1412 y Fn(backward-kill-line)e(\(C-x)h(Rubout\))315
+1466 y Fo(Kill)19 b(bac)o(kw)o(ard)g(from)h(the)g(cursor)f(to)h(the)g
+(b)q(eginning)g(of)f(the)h(curren)o(t)g(line.)34 b(With)19
+b(a)315 1521 y(negativ)o(e)14 b(n)o(umeric)g(argumen)o(t,)g(kill)f
+(forw)o(ard)g(from)h(the)h(cursor)f(to)g(the)h(end)g(of)f(the)h(line.)
+75 1599 y Fn(unix-line-discard)e(\(C-u\))315 1654 y Fo(Kill)h(bac)o(kw)
+o(ard)h(from)f(the)i(cursor)e(to)h(the)g(b)q(eginning)h(of)e(the)i
+(curren)o(t)f(line.)75 1732 y Fn(kill-whole-line)e(\(\))315
+1787 y Fo(Kill)k(all)h(c)o(haracters)f(on)h(the)h(curren)o(t)f(line,)g
(no)g(matter)g(where)g(p)q(oin)o(t)g(is.)28 b(By)19 b(default,)315
-526 y(this)c(is)f(un)o(b)q(ound.)75 604 y Fn(kill-word)g(\(M-d\))315
-659 y Fo(Kill)g(from)g(p)q(oin)o(t)g(to)g(the)h(end)g(of)f(the)h
+1842 y(this)c(is)f(un)o(b)q(ound.)75 1920 y Fn(kill-word)g(\(M-d\))315
+1974 y Fo(Kill)g(from)g(p)q(oin)o(t)g(to)g(the)h(end)g(of)f(the)h
(curren)o(t)g(w)o(ord,)e(or)i(if)f(b)q(et)o(w)o(een)h(w)o(ords,)e(to)i
-(the)f(end)315 714 y(of)h(the)g(next)g(w)o(ord.)20 b(W)l(ord)14
+(the)f(end)315 2029 y(of)h(the)g(next)g(w)o(ord.)20 b(W)l(ord)14
b(b)q(oundaries)i(are)f(the)g(same)g(as)g Fn(forward-word)p
-Fo(.)75 793 y Fn(backward-kill-word)e(\(M-DEL\))315 847
-y Fo(Kill)h(the)g(w)o(ord)g(b)q(ehind)h(p)q(oin)o(t.)20
+Fo(.)75 2107 y Fn(backward-kill-word)e(\(M-DEL\))315
+2162 y Fo(Kill)h(the)g(w)o(ord)g(b)q(ehind)h(p)q(oin)o(t.)20
b(W)l(ord)14 b(b)q(oundaries)g(are)g(the)h(same)f(as)g
-Fn(backward-word)p Fo(.)75 926 y Fn(unix-word-rubout)f(\(C-w\))315
-981 y Fo(Kill)i(the)h(w)o(ord)f(b)q(ehind)i(p)q(oin)o(t,)e(using)h
-(white)f(space)h(as)g(a)f(w)o(ord)g(b)q(oundary)l(.)23
-b(The)16 b(killed)315 1036 y(text)f(is)f(sa)o(v)o(ed)h(on)g(the)h
-(kill-ring.)75 1114 y Fn(unix-filename-rubout)c(\(\))315
-1169 y Fo(Kill)17 b(the)i(w)o(ord)e(b)q(ehind)i(p)q(oin)o(t,)f(using)g
-(white)g(space)g(and)h(the)f(slash)g(c)o(haracter)f(as)h(the)315
-1224 y(w)o(ord)d(b)q(oundaries.)20 b(The)15 b(killed)g(text)f(is)h(sa)o
-(v)o(ed)g(on)g(the)g(kill-ring.)75 1302 y Fn(delete-horizontal-space)d
-(\(\))315 1357 y Fo(Delete)j(all)f(spaces)h(and)h(tabs)e(around)i(p)q
-(oin)o(t.)j(By)c(default,)g(this)f(is)h(un)o(b)q(ound.)75
-1436 y Fn(kill-region)f(\(\))315 1490 y Fo(Kill)g(the)i(text)e(in)h
-(the)h(curren)o(t)f(region.)k(By)c(default,)g(this)f(command)h(is)g(un)
-o(b)q(ound.)75 1569 y Fn(copy-region-as-kill)e(\(\))315
-1624 y Fo(Cop)o(y)j(the)i(text)e(in)h(the)g(region)f(to)h(the)g(kill)e
-(bu\013er,)i(so)g(it)f(can)h(b)q(e)h(y)o(ank)o(ed)f(righ)o(t)f(a)o(w)o
-(a)o(y)l(.)315 1679 y(By)f(default,)g(this)f(command)h(is)g(un)o(b)q
-(ound.)75 1757 y Fn(copy-backward-word)e(\(\))315 1812
-y Fo(Cop)o(y)19 b(the)g(w)o(ord)g(b)q(efore)g(p)q(oin)o(t)g(to)f(the)i
-(kill)e(bu\013er.)32 b(The)19 b(w)o(ord)g(b)q(oundaries)g(are)g(the)315
-1867 y(same)c(as)g Fn(backward-word)p Fo(.)j(By)d(default,)f(this)h
-(command)g(is)g(un)o(b)q(ound.)75 1945 y Fn(copy-forward-word)e(\(\))
-315 2000 y Fo(Cop)o(y)i(the)h(w)o(ord)e(follo)o(wing)g(p)q(oin)o(t)h
-(to)g(the)g(kill)g(bu\013er.)20 b(The)c(w)o(ord)f(b)q(oundaries)h(are)f
-(the)315 2055 y(same)g(as)g Fn(forward-word)p Fo(.)j(By)d(default,)g
-(this)f(command)h(is)g(un)o(b)q(ound.)75 2134 y Fn(yank)g(\(C-y\))315
-2188 y Fo(Y)l(ank)g(the)h(top)f(of)f(the)i(kill)e(ring)g(in)o(to)g(the)
-i(bu\013er)f(at)f(p)q(oin)o(t.)75 2267 y Fn(yank-pop)g(\(M-y\))315
-2322 y Fo(Rotate)j(the)g(kill-ring,)f(and)h(y)o(ank)g(the)h(new)f(top.)
+Fn(backward-word)p Fo(.)75 2240 y Fn(unix-word-rubout)f(\(C-w\))315
+2295 y Fo(Kill)i(the)i(w)o(ord)e(b)q(ehind)i(p)q(oin)o(t,)f(using)g
+(white)f(space)i(as)f(a)g(w)o(ord)f(b)q(oundary)l(,)i(sa)o(ving)e(the)
+315 2350 y(killed)f(text)h(on)g(the)h(kill-ring.)75 2428
+y Fn(unix-filename-rubout)c(\(\))315 2482 y Fo(Kill)17
+b(the)i(w)o(ord)e(b)q(ehind)i(p)q(oin)o(t,)f(using)g(white)g(space)g
+(and)h(the)f(slash)g(c)o(haracter)f(as)h(the)315 2537
+y(w)o(ord)d(b)q(oundaries,)g(sa)o(ving)f(the)h(killed)f(text)h(on)g
+(the)h(kill-ring.)75 2615 y Fn(delete-horizontal-space)c(\(\))315
+2670 y Fo(Delete)j(all)f(spaces)h(and)h(tabs)e(around)i(p)q(oin)o(t.)j
+(By)c(default,)g(this)f(is)h(un)o(b)q(ound.)p eop end
+%%Page: 23 26
+TeXDict begin 23 25 bop 75 -58 a Fo(Chapter)15 b(1:)k(Command)c(Line)h
+(Editing)1053 b(23)75 149 y Fn(kill-region)14 b(\(\))315
+204 y Fo(Kill)g(the)i(text)e(in)h(the)h(curren)o(t)f(region.)k(By)c
+(default,)g(this)f(command)h(is)g(un)o(b)q(ound.)75 277
+y Fn(copy-region-as-kill)e(\(\))315 332 y Fo(Cop)o(y)j(the)i(text)e(in)
+h(the)g(region)f(to)h(the)g(kill)e(bu\013er,)i(so)g(it)f(can)h(b)q(e)h
+(y)o(ank)o(ed)f(righ)o(t)f(a)o(w)o(a)o(y)l(.)315 387
+y(By)f(default,)g(this)f(command)h(is)g(un)o(b)q(ound.)75
+459 y Fn(copy-backward-word)e(\(\))315 514 y Fo(Cop)o(y)19
+b(the)g(w)o(ord)g(b)q(efore)g(p)q(oin)o(t)g(to)f(the)i(kill)e
+(bu\013er.)32 b(The)19 b(w)o(ord)g(b)q(oundaries)g(are)g(the)315
+569 y(same)c(as)g Fn(backward-word)p Fo(.)j(By)d(default,)f(this)h
+(command)g(is)g(un)o(b)q(ound.)75 641 y Fn(copy-forward-word)e(\(\))315
+696 y Fo(Cop)o(y)i(the)h(w)o(ord)e(follo)o(wing)g(p)q(oin)o(t)h(to)g
+(the)g(kill)g(bu\013er.)20 b(The)c(w)o(ord)f(b)q(oundaries)h(are)f(the)
+315 751 y(same)g(as)g Fn(forward-word)p Fo(.)j(By)d(default,)g(this)f
+(command)h(is)g(un)o(b)q(ound.)75 824 y Fn(yank)g(\(C-y\))315
+879 y Fo(Y)l(ank)g(the)h(top)f(of)f(the)i(kill)e(ring)g(in)o(to)g(the)i
+(bu\013er)f(at)f(p)q(oin)o(t.)75 951 y Fn(yank-pop)g(\(M-y\))315
+1006 y Fo(Rotate)j(the)g(kill-ring,)f(and)h(y)o(ank)g(the)h(new)f(top.)
26 b(Y)l(ou)17 b(can)h(only)f(do)g(this)g(if)f(the)i(prior)315
-2377 y(command)d(is)g Fn(yank)f Fo(or)h Fn(yank-pop)p
-Fo(.)75 2475 y Fd(1.4.5)30 b(Sp)r(ecifying)20 b(Numeric)h(Argumen)n(ts)
-75 2560 y Fn(digit-argument)13 b(\()p Fg(M-0)p Fn(,)i
-Fg(M-1)p Fn(,)f(...)h Fg(M--)p Fn(\))315 2615 y Fo(Add)f(this)f(digit)f
+1061 y(command)d(is)g Fn(yank)f Fo(or)h Fn(yank-pop)p
+Fo(.)75 1153 y Fd(1.4.5)30 b(Sp)r(ecifying)20 b(Numeric)h(Argumen)n(ts)
+75 1236 y Fn(digit-argument)13 b(\()p Fg(M-0)p Fn(,)i
+Fg(M-1)p Fn(,)f(...)h Fg(M--)p Fn(\))315 1291 y Fo(Add)f(this)f(digit)f
(to)h(the)h(argumen)o(t)e(already)h(accum)o(ulating,)f(or)h(start)f(a)h
-(new)h(argumen)o(t.)315 2670 y Fg(M--)h Fo(starts)f(a)h(negativ)o(e)f
-(argumen)o(t.)p eop end
-%%Page: 21 24
-TeXDict begin 21 23 bop 75 -58 a Fo(Chapter)15 b(1:)k(Command)c(Line)h
-(Editing)1053 b(21)75 149 y Fn(universal-argument)13
-b(\(\))315 204 y Fo(This)f(is)h(another)f(w)o(a)o(y)g(to)g(sp)q(ecify)h
-(an)g(argumen)o(t.)18 b(If)13 b(this)f(command)h(is)f(follo)o(w)o(ed)f
-(b)o(y)i(one)315 259 y(or)h(more)h(digits,)e(optionally)g(with)h(a)h
+(new)h(argumen)o(t.)315 1345 y Fg(M--)h Fo(starts)f(a)h(negativ)o(e)f
+(argumen)o(t.)75 1418 y Fn(universal-argument)f(\(\))315
+1473 y Fo(This)f(is)h(another)f(w)o(a)o(y)g(to)g(sp)q(ecify)h(an)g
+(argumen)o(t.)18 b(If)13 b(this)f(command)h(is)f(follo)o(w)o(ed)f(b)o
+(y)i(one)315 1528 y(or)h(more)h(digits,)e(optionally)g(with)h(a)h
(leading)f(min)o(us)g(sign,)g(those)h(digits)e(de\014ne)j(the)f(ar-)315
-314 y(gumen)o(t.)k(If)c(the)g(command)f(is)g(follo)o(w)o(ed)f(b)o(y)i
-(digits,)e(executing)h Fn(universal-argument)315 369
+1582 y(gumen)o(t.)k(If)c(the)g(command)f(is)g(follo)o(w)o(ed)f(b)o(y)i
+(digits,)e(executing)h Fn(universal-argument)315 1637
y Fo(again)h(ends)h(the)g(n)o(umeric)g(argumen)o(t,)f(but)h(is)g
(otherwise)f(ignored.)21 b(As)16 b(a)g(sp)q(ecial)f(case,)315
-423 y(if)h(this)g(command)g(is)g(immediately)f(follo)o(w)o(ed)g(b)o(y)h
-(a)g(c)o(haracter)g(that)g(is)g(neither)g(a)g(digit)315
-478 y(nor)k(min)o(us)h(sign,)g(the)f(argumen)o(t)g(coun)o(t)h(for)f
+1692 y(if)h(this)g(command)g(is)g(immediately)f(follo)o(w)o(ed)g(b)o(y)
+h(a)g(c)o(haracter)g(that)g(is)g(neither)g(a)g(digit)315
+1747 y(nor)k(min)o(us)h(sign,)g(the)f(argumen)o(t)g(coun)o(t)h(for)f
(the)g(next)h(command)g(is)f(m)o(ultiplied)f(b)o(y)315
-533 y(four.)27 b(The)17 b(argumen)o(t)g(coun)o(t)g(is)g(initially)f
+1802 y(four.)27 b(The)17 b(argumen)o(t)g(coun)o(t)g(is)g(initially)f
(one,)i(so)f(executing)g(this)g(function)h(the)f(\014rst)315
-588 y(time)d(mak)o(es)f(the)i(argumen)o(t)e(coun)o(t)h(four,)g(a)g
+1856 y(time)d(mak)o(es)f(the)i(argumen)o(t)e(coun)o(t)h(four,)g(a)g
(second)h(time)f(mak)o(es)f(the)i(argumen)o(t)e(coun)o(t)315
-643 y(sixteen,)i(and)g(so)g(on.)20 b(By)15 b(default,)f(this)h(is)g
-(not)g(b)q(ound)h(to)e(a)h(k)o(ey)l(.)75 749 y Fd(1.4.6)30
+1911 y(sixteen,)i(and)g(so)g(on.)20 b(By)15 b(default,)f(this)h(is)g
+(not)g(b)q(ound)h(to)e(a)h(k)o(ey)l(.)75 2004 y Fd(1.4.6)30
b(Letting)20 b(Readline)g(T)n(yp)r(e)h(F)-5 b(or)19 b(Y)-5
-b(ou)75 838 y Fn(complete)14 b(\(TAB\))315 893 y Fo(A)o(ttempt)c(to)h
+b(ou)75 2086 y Fn(complete)14 b(\(TAB\))315 2141 y Fo(A)o(ttempt)c(to)h
(p)q(erform)g(completion)g(on)g(the)g(text)g(b)q(efore)h(p)q(oin)o(t.)
-18 b(The)11 b(actual)g(completion)315 948 y(p)q(erformed)k(is)g
+18 b(The)11 b(actual)g(completion)315 2196 y(p)q(erformed)k(is)g
(application-sp)q(eci\014c.)20 b(The)15 b(default)g(is)g(\014lename)g
-(completion.)75 1034 y Fn(possible-completions)d(\(M-?\))315
-1089 y Fo(List)17 b(the)g(p)q(ossible)g(completions)g(of)g(the)g(text)g
+(completion.)75 2269 y Fn(possible-completions)d(\(M-?\))315
+2323 y Fo(List)17 b(the)g(p)q(ossible)g(completions)g(of)g(the)g(text)g
(b)q(efore)h(p)q(oin)o(t.)25 b(When)18 b(displa)o(ying)e(com-)315
-1143 y(pletions,)f(Readline)i(sets)f(the)g(n)o(um)o(b)q(er)h(of)e
+2378 y(pletions,)f(Readline)i(sets)f(the)g(n)o(um)o(b)q(er)h(of)e
(columns)h(used)h(for)f(displa)o(y)f(to)h(the)g(v)m(alue)g(of)315
-1198 y Fn(completion-display-width)p Fo(,)f(the)k(v)m(alue)f(of)g(the)g
+2433 y Fn(completion-display-width)p Fo(,)f(the)k(v)m(alue)f(of)g(the)g
(en)o(vironmen)o(t)g(v)m(ariable)f Fn(COLUMNS)p Fo(,)315
-1253 y(or)e(the)g(screen)h(width,)e(in)h(that)g(order.)75
-1339 y Fn(insert-completions)e(\(M-*\))315 1394 y Fo(Insert)j(all)e
+2488 y(or)e(the)g(screen)h(width,)e(in)h(that)g(order.)75
+2560 y Fn(insert-completions)e(\(M-*\))315 2615 y Fo(Insert)j(all)e
(completions)g(of)h(the)g(text)g(b)q(efore)h(p)q(oin)o(t)e(that)h(w)o
-(ould)g(ha)o(v)o(e)g(b)q(een)h(generated)315 1449 y(b)o(y)f
-Fn(possible-completions)p Fo(.)75 1535 y Fn(menu-complete)e(\(\))315
-1590 y Fo(Similar)d(to)i Fn(complete)p Fo(,)f(but)h(replaces)g(the)g(w)
-o(ord)f(to)g(b)q(e)i(completed)e(with)h(a)f(single)h(matc)o(h)315
-1645 y(from)18 b(the)h(list)f(of)g(p)q(ossible)h(completions.)30
-b(Rep)q(eated)20 b(execution)f(of)g Fn(menu-complete)315
-1699 y Fo(steps)h(through)g(the)g(list)f(of)h(p)q(ossible)g
-(completions,)g(inserting)f(eac)o(h)h(matc)o(h)f(in)h(turn.)315
-1754 y(A)o(t)e(the)g(end)h(of)f(the)h(list)e(of)h(completions,)g(the)g
-(b)q(ell)h(is)e(rung)i(\(sub)s(ject)f(to)f(the)i(setting)315
-1809 y(of)f Fn(bell-style)p Fo(\))e(and)i(the)g(original)e(text)i(is)f
-(restored.)28 b(An)19 b(argumen)o(t)e(of)g Fe(n)i Fo(mo)o(v)o(es)e
-Fe(n)315 1864 y Fo(p)q(ositions)f(forw)o(ard)g(in)i(the)f(list)f(of)h
-(matc)o(hes;)h(a)f(negativ)o(e)f(argumen)o(t)h(ma)o(y)g(b)q(e)h(used)g
-(to)315 1919 y(mo)o(v)o(e)g(bac)o(kw)o(ard)h(through)g(the)g(list.)30
-b(This)19 b(command)g(is)g(in)o(tended)g(to)g(b)q(e)h(b)q(ound)g(to)315
-1973 y Fn(TAB)p Fo(,)14 b(but)i(is)e(un)o(b)q(ound)j(b)o(y)e(default.)
-75 2060 y Fn(menu-complete-backward)d(\(\))315 2114 y
-Fo(Iden)o(tical)17 b(to)g Fn(menu-complete)p Fo(,)f(but)i(mo)o(v)o(es)e
-(bac)o(kw)o(ard)h(through)g(the)h(list)e(of)h(p)q(ossible)315
-2169 y(completions,)d(as)h(if)f Fn(menu-complete)g Fo(had)h(b)q(een)h
-(giv)o(en)f(a)g(negativ)o(e)f(argumen)o(t.)75 2255 y
-Fn(delete-char-or-list)f(\(\))315 2310 y Fo(Deletes)19
-b(the)g(c)o(haracter)g(under)h(the)g(cursor)f(if)g(not)g(at)g(the)g(b)q
-(eginning)h(or)f(end)h(of)f(the)315 2365 y(line)24 b(\(lik)o(e)g
-Fn(delete-char)p Fo(\).)47 b(If)25 b(at)f(the)h(end)g(of)g(the)g(line,)
-h(b)q(eha)o(v)o(es)f(iden)o(tically)f(to)315 2420 y Fn
-(possible-completions)p Fo(.)17 b(This)e(command)g(is)g(un)o(b)q(ound)h
-(b)o(y)f(default.)75 2526 y Fd(1.4.7)30 b(Keyb)r(oard)20
-b(Macros)75 2615 y Fn(start-kbd-macro)13 b(\(C-x)i(\(\))315
-2670 y Fo(Begin)g(sa)o(ving)f(the)i(c)o(haracters)e(t)o(yp)q(ed)i(in)o
-(to)e(the)h(curren)o(t)g(k)o(eyb)q(oard)g(macro.)p eop
-end
-%%Page: 22 25
-TeXDict begin 22 24 bop 75 -58 a Fo(Chapter)15 b(1:)k(Command)c(Line)h
-(Editing)1053 b(22)75 149 y Fn(end-kbd-macro)13 b(\(C-x)i(\)\))315
-204 y Fo(Stop)f(sa)o(ving)e(the)i(c)o(haracters)f(t)o(yp)q(ed)h(in)o
+(ould)g(ha)o(v)o(e)g(b)q(een)h(generated)315 2670 y(b)o(y)f
+Fn(possible-completions)p Fo(,)d(separated)j(b)o(y)g(a)g(space.)p
+eop end
+%%Page: 24 27
+TeXDict begin 24 26 bop 75 -58 a Fo(Chapter)15 b(1:)k(Command)c(Line)h
+(Editing)1053 b(24)75 149 y Fn(menu-complete)13 b(\(\))315
+204 y Fo(Similar)d(to)i Fn(complete)p Fo(,)f(but)h(replaces)g(the)g(w)o
+(ord)f(to)g(b)q(e)i(completed)e(with)h(a)f(single)h(matc)o(h)315
+259 y(from)20 b(the)h(list)f(of)g(p)q(ossible)h(completions.)35
+b(Rep)q(eatedly)22 b(executing)f Fn(menu-complete)315
+314 y Fo(steps)14 b(through)f(the)h(list)f(of)g(p)q(ossible)h
+(completions,)e(inserting)h(eac)o(h)h(matc)o(h)f(in)h(turn.)19
+b(A)o(t)315 369 y(the)h(end)g(of)g(the)g(list)e(of)i(completions,)f
+Fn(menu-complete)f Fo(rings)i(the)f(b)q(ell)h(\(sub)s(ject)g(to)315
+423 y(the)e(setting)g(of)g Fn(bell-style)p Fo(\))e(and)j(restores)e
+(the)i(original)d(text.)29 b(An)18 b(argumen)o(t)g(of)g
+Ff(n)315 478 y Fo(mo)o(v)o(es)f Ff(n)i Fo(p)q(ositions)e(forw)o(ard)g
+(in)h(the)g(list)f(of)h(matc)o(hes;)h(a)f(negativ)o(e)f(argumen)o(t)h
+(mo)o(v)o(es)315 533 y(bac)o(kw)o(ard)c(through)g(the)g(list.)k(This)c
+(command)h(is)f(in)o(tended)g(to)g(b)q(e)h(b)q(ound)g(to)f
+Fn(TAB)p Fo(,)g(but)315 588 y(is)h(un)o(b)q(ound)h(b)o(y)f(default.)75
+665 y Fn(menu-complete-backward)d(\(\))315 720 y Fo(Iden)o(tical)17
+b(to)g Fn(menu-complete)p Fo(,)f(but)i(mo)o(v)o(es)e(bac)o(kw)o(ard)h
+(through)g(the)h(list)e(of)h(p)q(ossible)315 775 y(completions,)g(as)h
+(if)f Fn(menu-complete)f Fo(had)i(b)q(een)h(giv)o(en)f(a)f(negativ)o(e)
+g(argumen)o(t.)27 b(This)315 830 y(command)15 b(is)g(un)o(b)q(ound)h(b)
+o(y)f(default.)75 908 y Fn(delete-char-or-list)e(\(\))315
+962 y Fo(Deletes)19 b(the)g(c)o(haracter)g(under)h(the)g(cursor)f(if)g
+(not)g(at)g(the)g(b)q(eginning)h(or)f(end)h(of)f(the)315
+1017 y(line)24 b(\(lik)o(e)f Fn(delete-char)p Fo(\).)44
+b(A)o(t)24 b(the)g(end)h(of)f(the)g(line,)h(it)f(b)q(eha)o(v)o(es)g
+(iden)o(tically)f(to)315 1072 y Fn(possible-completions)p
+Fo(.)17 b(This)e(command)g(is)g(un)o(b)q(ound)h(b)o(y)f(default.)75
+1169 y Fd(1.4.7)30 b(Keyb)r(oard)20 b(Macros)75 1254
+y Fn(start-kbd-macro)13 b(\(C-x)i(\(\))315 1309 y Fo(Begin)g(sa)o(ving)
+f(the)i(c)o(haracters)e(t)o(yp)q(ed)i(in)o(to)e(the)h(curren)o(t)g(k)o
+(eyb)q(oard)g(macro.)75 1387 y Fn(end-kbd-macro)e(\(C-x)i(\)\))315
+1442 y Fo(Stop)f(sa)o(ving)e(the)i(c)o(haracters)f(t)o(yp)q(ed)h(in)o
(to)e(the)i(curren)o(t)g(k)o(eyb)q(oard)f(macro)g(and)h(sa)o(v)o(e)f
-(the)315 259 y(de\014nition.)75 335 y Fn(call-last-kbd-macro)g(\(C-x)h
-(e\))315 390 y Fo(Re-execute)19 b(the)f(last)e(k)o(eyb)q(oard)i(macro)f
-(de\014ned,)i(b)o(y)e(making)g(the)h(c)o(haracters)e(in)i(the)315
-445 y(macro)c(app)q(ear)i(as)f(if)f(t)o(yp)q(ed)i(at)e(the)i(k)o(eyb)q
-(oard.)75 521 y Fn(print-last-kbd-macro)c(\(\))315 576
-y Fo(Prin)o(t)i(the)h(last)g(k)o(eb)q(oard)g(macro)f(de\014ned)j(in)e
-(a)g(format)f(suitable)g(for)h(the)g Fe(inputrc)j Fo(\014le.)75
-672 y Fd(1.4.8)30 b(Some)20 b(Miscellaneous)h(Commands)75
-756 y Fn(re-read-init-file)13 b(\(C-x)h(C-r\))315 811
-y Fo(Read)e(in)e(the)h(con)o(ten)o(ts)g(of)f(the)h Fe(inputrc)j
-Fo(\014le,)d(and)h(incorp)q(orate)e(an)o(y)g(bindings)h(or)g(v)m
-(ariable)315 866 y(assignmen)o(ts)j(found)i(there.)75
-942 y Fn(abort)e(\(C-g\))315 997 y Fo(Ab)q(ort)f(the)g(curren)o(t)h
+(the)315 1496 y(de\014nition.)75 1574 y Fn(call-last-kbd-macro)g(\(C-x)
+h(e\))315 1629 y Fo(Re-execute)19 b(the)f(last)e(k)o(eyb)q(oard)i
+(macro)f(de\014ned,)i(b)o(y)e(making)g(the)h(c)o(haracters)e(in)i(the)
+315 1684 y(macro)c(app)q(ear)i(as)f(if)f(t)o(yp)q(ed)i(at)e(the)i(k)o
+(eyb)q(oard.)75 1761 y Fn(print-last-kbd-macro)c(\(\))315
+1816 y Fo(Prin)o(t)i(the)h(last)f(k)o(eyb)q(oard)h(macro)g(de\014ned)h
+(in)f(a)g(format)e(suitable)i(for)f(the)h Ff(inputrc)j
+Fo(\014le.)75 1914 y Fd(1.4.8)30 b(Some)20 b(Miscellaneous)h(Commands)
+75 1999 y Fn(re-read-init-file)13 b(\(C-x)h(C-r\))315
+2053 y Fo(Read)e(in)e(the)h(con)o(ten)o(ts)g(of)f(the)h
+Ff(inputrc)j Fo(\014le,)d(and)h(incorp)q(orate)e(an)o(y)g(bindings)h
+(or)g(v)m(ariable)315 2108 y(assignmen)o(ts)j(found)i(there.)75
+2186 y Fn(abort)e(\(C-g\))315 2241 y Fo(Ab)q(ort)f(the)g(curren)o(t)h
(editing)e(command)h(and)h(ring)e(the)i(terminal's)d(b)q(ell)i(\(sub)s
-(ject)g(to)g(the)315 1052 y(setting)h(of)h Fn(bell-style)p
-Fo(\).)75 1128 y Fn(do-lowercase-version)d(\(M-A,)j(M-B,)f(M-)p
-Fg(x)p Fn(,)h(...\))315 1183 y Fo(If)j(the)f(meta\014ed)h(c)o(haracter)
-f Fe(x)j Fo(is)d(upp)q(er)i(case,)f(run)f(the)h(command)f(that)g(is)g
-(b)q(ound)i(to)315 1238 y(the)e(corresp)q(onding)f(meta\014ed)h(lo)o(w)
+(ject)g(to)g(the)315 2295 y(setting)h(of)h Fn(bell-style)p
+Fo(\).)75 2373 y Fn(do-lowercase-version)d(\(M-A,)j(M-B,)f(M-)p
+Fg(x)p Fn(,)h(...\))315 2428 y Fo(If)j(the)f(meta\014ed)h(c)o(haracter)
+f Ff(x)j Fo(is)d(upp)q(er)i(case,)f(run)f(the)h(command)f(that)g(is)g
+(b)q(ound)i(to)315 2483 y(the)e(corresp)q(onding)f(meta\014ed)h(lo)o(w)
o(er)e(case)h(c)o(haracter.)23 b(The)17 b(b)q(eha)o(vior)f(is)g
-(unde\014ned)i(if)315 1293 y Fe(x)g Fo(is)d(already)f(lo)o(w)o(er)g
-(case.)75 1369 y Fn(prefix-meta)g(\(ESC\))315 1424 y
-Fo(Metafy)k(the)h(next)g(c)o(haracter)f(t)o(yp)q(ed.)30
-b(This)19 b(is)f(for)g(k)o(eyb)q(oards)h(without)f(a)g(meta)g(k)o(ey)l
-(.)315 1478 y(T)o(yping)d(`)p Fn(ESC)f(f)p Fo(')h(is)f(equiv)m(alen)o
-(t)h(to)g(t)o(yping)f Fg(M-f)p Fo(.)75 1555 y Fn(undo)h(\(C-_)f(or)h
-(C-x)g(C-u\))315 1610 y Fo(Incremen)o(tal)g(undo,)g(separately)g(remem)
-o(b)q(ered)h(for)e(eac)o(h)h(line.)75 1686 y Fn(revert-line)f(\(M-r\))
-315 1741 y Fo(Undo)j(all)e(c)o(hanges)i(made)f(to)g(this)g(line.)24
+(unde\014ned)i(if)315 2538 y Ff(x)g Fo(is)d(already)f(lo)o(w)o(er)g
+(case.)75 2615 y Fn(prefix-meta)g(\(ESC\))315 2670 y
+Fo(Metafy)g(the)i(next)f(c)o(haracter)f(t)o(yp)q(ed.)21
+b(T)o(yping)14 b(`)p Fn(ESC)g(f)p Fo(')h(is)g(equiv)m(alen)o(t)g(to)f
+(t)o(yping)h Fg(M-f)p Fo(.)p eop end
+%%Page: 25 28
+TeXDict begin 25 27 bop 75 -58 a Fo(Chapter)15 b(1:)k(Command)c(Line)h
+(Editing)1053 b(25)75 149 y Fn(undo)15 b(\(C-_)f(or)h(C-x)g(C-u\))315
+204 y Fo(Incremen)o(tal)g(undo,)g(separately)g(remem)o(b)q(ered)h(for)e
+(eac)o(h)h(line.)75 292 y Fn(revert-line)f(\(M-r\))315
+347 y Fo(Undo)j(all)e(c)o(hanges)i(made)f(to)g(this)g(line.)24
b(This)16 b(is)g(lik)o(e)g(executing)g(the)h Fn(undo)f
-Fo(command)315 1795 y(enough)g(times)e(to)h(get)f(bac)o(k)h(to)g(the)g
-(b)q(eginning.)75 1872 y Fn(tilde-expand)f(\(M-~\))315
-1926 y Fo(P)o(erform)g(tilde)h(expansion)g(on)g(the)g(curren)o(t)g(w)o
-(ord.)75 2003 y Fn(set-mark)f(\(C-@\))315 2058 y Fo(Set)i(the)h(mark)f
-(to)f(the)i(p)q(oin)o(t.)23 b(If)17 b(a)f(n)o(umeric)g(argumen)o(t)g
-(is)f(supplied,)i(the)g(mark)e(is)h(set)315 2112 y(to)f(that)f(p)q
-(osition.)75 2189 y Fn(exchange-point-and-mark)e(\(C-x)j(C-x\))315
-2243 y Fo(Sw)o(ap)g(the)h(p)q(oin)o(t)f(with)g(the)h(mark.)k(The)c
-(curren)o(t)f(cursor)h(p)q(osition)e(is)h(set)h(to)f(the)g(sa)o(v)o(ed)
-315 2298 y(p)q(osition,)f(and)h(the)h(old)e(cursor)h(p)q(osition)f(is)h
-(sa)o(v)o(ed)g(as)g(the)g(mark.)75 2375 y Fn(character-search)e
-(\(C-]\))315 2429 y Fo(A)f(c)o(haracter)g(is)g(read)h(and)f(p)q(oin)o
-(t)g(is)g(mo)o(v)o(ed)g(to)g(the)g(next)h(o)q(ccurrence)g(of)f(that)g
-(c)o(haracter.)315 2484 y(A)j(negativ)o(e)g(coun)o(t)g(searc)o(hes)g
-(for)f(previous)h(o)q(ccurrences.)75 2560 y Fn
-(character-search-backward)d(\(M-C-]\))315 2615 y Fo(A)22
-b(c)o(haracter)g(is)g(read)g(and)h(p)q(oin)o(t)f(is)g(mo)o(v)o(ed)g(to)
-g(the)g(previous)g(o)q(ccurrence)i(of)e(that)315 2670
-y(c)o(haracter.)d(A)c(negativ)o(e)g(coun)o(t)g(searc)o(hes)g(for)f
-(subsequen)o(t)i(o)q(ccurrences.)p eop end
-%%Page: 23 26
-TeXDict begin 23 25 bop 75 -58 a Fo(Chapter)15 b(1:)k(Command)c(Line)h
-(Editing)1053 b(23)75 149 y Fn(skip-csi-sequence)13 b(\(\))315
-204 y Fo(Read)h(enough)g(c)o(haracters)f(to)g(consume)h(a)g(m)o(ulti-k)
-o(ey)e(sequence)j(suc)o(h)f(as)f(those)h(de\014ned)315
-259 y(for)k(k)o(eys)g(lik)o(e)g(Home)h(and)g(End.)30
-b(Suc)o(h)19 b(sequences)h(b)q(egin)f(with)f(a)g(Con)o(trol)f(Sequence)
-315 314 y(Indicator)h(\(CSI\),)g(usually)f(ESC-[.)29
-b(If)19 b(this)f(sequence)h(is)f(b)q(ound)h(to)f Fn("\\)p
-Fo(e[)p Fn(")p Fo(,)g(k)o(eys)g(pro-)315 369 y(ducing)e(suc)o(h)h
-(sequences)g(will)d(ha)o(v)o(e)i(no)g(e\013ect)g(unless)g(explicitly)e
-(b)q(ound)j(to)f(a)f(readline)315 423 y(command,)h(instead)f(of)h
-(inserting)f(stra)o(y)f(c)o(haracters)i(in)o(to)f(the)h(editing)f
-(bu\013er.)22 b(This)15 b(is)315 478 y(un)o(b)q(ound)h(b)o(y)g
-(default,)e(but)h(usually)g(b)q(ound)h(to)f(ESC-[.)75
-558 y Fn(insert-comment)e(\(M-#\))315 613 y Fo(Without)k(a)g(n)o
-(umeric)h(argumen)o(t,)f(the)h(v)m(alue)g(of)g(the)f
-Fn(comment-begin)f Fo(v)m(ariable)i(is)f(in-)315 667
-y(serted)f(at)f(the)h(b)q(eginning)g(of)f(the)h(curren)o(t)g(line.)21
-b(If)16 b(a)g(n)o(umeric)g(argumen)o(t)f(is)g(supplied,)315
-722 y(this)j(command)g(acts)g(as)f(a)h(toggle:)25 b(if)18
-b(the)g(c)o(haracters)g(at)f(the)i(b)q(eginning)f(of)g(the)g(line)315
-777 y(do)d(not)g(matc)o(h)g(the)g(v)m(alue)h(of)f Fn(comment-begin)p
-Fo(,)e(the)i(v)m(alue)h(is)f(inserted,)f(otherwise)h(the)315
-832 y(c)o(haracters)k(in)h Fn(comment-begin)e Fo(are)i(deleted)h(from)e
-(the)h(b)q(eginning)g(of)g(the)g(line.)34 b(In)315 887
-y(either)15 b(case,)g(the)g(line)g(is)g(accepted)g(as)g(if)g(a)g
-(newline)g(had)g(b)q(een)i(t)o(yp)q(ed.)75 966 y Fn(dump-functions)c
-(\(\))315 1021 y Fo(Prin)o(t)f(all)g(of)h(the)g(functions)g(and)h
+Fo(command)315 401 y(enough)g(times)e(to)h(get)f(bac)o(k)h(to)g(the)g
+(initial)f(state.)75 489 y Fn(tilde-expand)g(\(M-~\))315
+544 y Fo(P)o(erform)g(tilde)h(expansion)g(on)g(the)g(curren)o(t)g(w)o
+(ord.)75 632 y Fn(set-mark)f(\(C-@\))315 686 y Fo(Set)i(the)g(mark)f
+(to)g(the)h(p)q(oin)o(t.)21 b(If)16 b(a)g(n)o(umeric)g(argumen)o(t)f
+(is)g(supplied,)h(set)g(the)f(mark)h(to)315 741 y(that)e(p)q(osition.)
+75 829 y Fn(exchange-point-and-mark)e(\(C-x)j(C-x\))315
+884 y Fo(Sw)o(ap)k(the)g(p)q(oin)o(t)g(with)f(the)i(mark.)31
+b(Set)19 b(the)g(curren)o(t)h(cursor)e(p)q(osition)h(to)f(the)h(sa)o(v)
+o(ed)315 938 y(p)q(osition,)14 b(then)h(set)g(the)h(mark)e(to)h(the)g
+(old)g(cursor)g(p)q(osition.)75 1026 y Fn(character-search)e(\(C-]\))
+315 1081 y Fo(Read)k(a)f(c)o(haracter)g(and)h(mo)o(v)o(e)e(p)q(oin)o(t)
+h(to)g(the)h(next)f(o)q(ccurrence)i(of)e(that)g(c)o(haracter.)23
+b(A)315 1136 y(negativ)o(e)14 b(argumen)o(t)h(searc)o(hes)g(for)f
+(previous)h(o)q(ccurrences.)75 1223 y Fn(character-search-backward)d
+(\(M-C-]\))315 1278 y Fo(Read)j(a)g(c)o(haracter)f(and)h(mo)o(v)o(e)f
+(p)q(oin)o(t)g(to)g(the)h(previous)g(o)q(ccurrence)h(of)e(that)g(c)o
+(haracter.)315 1333 y(A)h(negativ)o(e)g(argumen)o(t)f(searc)o(hes)h
+(for)g(subsequen)o(t)g(o)q(ccurrences.)75 1421 y Fn(skip-csi-sequence)e
+(\(\))315 1475 y Fo(Read)h(enough)g(c)o(haracters)f(to)g(consume)h(a)g
+(m)o(ulti-k)o(ey)e(sequence)j(suc)o(h)f(as)f(those)h(de\014ned)315
+1530 y(for)19 b(k)o(eys)h(lik)o(e)g(Home)g(and)g(End.)35
+b(CSI)20 b(sequences)h(b)q(egin)g(with)e(a)h(Con)o(trol)e(Sequence)315
+1585 y(Indicator)g(\(CSI\),)g(usually)f(ESC-[.)29 b(If)19
+b(this)f(sequence)h(is)f(b)q(ound)h(to)f Fn("\\)p Fo(e[)p
+Fn(")p Fo(,)g(k)o(eys)g(pro-)315 1640 y(ducing)e(CSI)g(sequences)h
+(will)d(ha)o(v)o(e)i(no)g(e\013ect)f(unless)h(explicitly)e(b)q(ound)j
+(to)e(a)h(Readline)315 1695 y(command,)g(instead)f(of)h(inserting)f
+(stra)o(y)f(c)o(haracters)i(in)o(to)f(the)h(editing)f(bu\013er.)22
+b(This)15 b(is)315 1749 y(un)o(b)q(ound)h(b)o(y)g(default,)e(but)h
+(usually)g(b)q(ound)h(to)f(ESC-[.)75 1837 y Fn(insert-comment)e
+(\(M-#\))315 1892 y Fo(Without)j(a)g(n)o(umeric)h(argumen)o(t,)f
+(insert)g(the)h(v)m(alue)g(of)g(the)g Fn(comment-begin)e
+Fo(v)m(ariable)315 1947 y(at)j(the)h(b)q(eginning)g(of)f(the)h(curren)o
+(t)g(line.)30 b(If)19 b(a)g(n)o(umeric)g(argumen)o(t)f(is)g(supplied,)i
+(this)315 2001 y(command)g(acts)f(as)h(a)g(toggle:)28
+b(if)19 b(the)h(c)o(haracters)f(at)h(the)g(b)q(eginning)g(of)f(the)h
+(line)g(do)315 2056 y(not)d(matc)o(h)g(the)g(v)m(alue)g(of)g
+Fn(comment-begin)p Fo(,)f(insert)h(the)g(v)m(alue;)h(otherwise)e
+(delete)i(the)315 2111 y(c)o(haracters)13 b(in)g Fn(comment-begin)e
+Fo(from)i(the)g(b)q(eginning)h(of)f(the)g(line.)19 b(In)14
+b(either)f(case,)h(the)315 2166 y(line)h(is)g(accepted)g(as)g(if)g(a)g
+(newline)g(had)g(b)q(een)i(t)o(yp)q(ed.)75 2254 y Fn(dump-functions)c
+(\(\))315 2308 y Fo(Prin)o(t)f(all)g(of)h(the)g(functions)g(and)h
(their)f(k)o(ey)g(bindings)g(to)f(the)i(Readline)f(output)g(stream.)315
-1076 y(If)j(a)g(n)o(umeric)f(argumen)o(t)g(is)h(supplied,)g(the)g
+2363 y(If)j(a)g(n)o(umeric)f(argumen)o(t)g(is)h(supplied,)g(the)g
(output)f(is)h(formatted)e(in)i(suc)o(h)g(a)g(w)o(a)o(y)f(that)315
-1131 y(it)f(can)i(b)q(e)g(made)f(part)f(of)h(an)g Fe(inputrc)j
+2418 y(it)f(can)i(b)q(e)g(made)f(part)f(of)h(an)g Ff(inputrc)j
Fo(\014le.)i(This)15 b(command)g(is)g(un)o(b)q(ound)h(b)o(y)f(default.)
-75 1210 y Fn(dump-variables)e(\(\))315 1265 y Fo(Prin)o(t)d(all)f(of)h
+75 2506 y Fn(dump-variables)e(\(\))315 2560 y Fo(Prin)o(t)d(all)f(of)h
(the)h(settable)f(v)m(ariables)g(and)h(their)f(v)m(alues)h(to)f(the)h
-(Readline)g(output)f(stream.)315 1320 y(If)16 b(a)g(n)o(umeric)f
+(Readline)g(output)f(stream.)315 2615 y(If)16 b(a)g(n)o(umeric)f
(argumen)o(t)g(is)h(supplied,)g(the)g(output)f(is)h(formatted)e(in)i
-(suc)o(h)g(a)g(w)o(a)o(y)f(that)315 1374 y(it)f(can)i(b)q(e)g(made)f
-(part)f(of)h(an)g Fe(inputrc)j Fo(\014le.)i(This)15 b(command)g(is)g
-(un)o(b)q(ound)h(b)o(y)f(default.)75 1454 y Fn(dump-macros)f(\(\))315
-1509 y Fo(Prin)o(t)i(all)g(of)g(the)h(Readline)g(k)o(ey)g(sequences)h
-(b)q(ound)g(to)e(macros)g(and)h(the)g(strings)f(they)315
-1564 y(output.)26 b(If)18 b(a)f(n)o(umeric)g(argumen)o(t)g(is)g
-(supplied,)h(the)f(output)g(is)g(formatted)f(in)i(suc)o(h)f(a)315
-1618 y(w)o(a)o(y)d(that)g(it)h(can)g(b)q(e)g(made)g(part)g(of)f(an)h
-Fe(inputrc)j Fo(\014le.)i(This)14 b(command)h(is)g(un)o(b)q(ound)h(b)o
-(y)315 1673 y(default.)75 1753 y Fn(emacs-editing-mode)d(\(C-e\))315
-1808 y Fo(When)j(in)f Fn(vi)f Fo(command)i(mo)q(de,)f(this)f(causes)i
-(a)f(switc)o(h)f(to)h Fn(emacs)f Fo(editing)h(mo)q(de.)75
-1887 y Fn(vi-editing-mode)e(\(M-C-j\))315 1942 y Fo(When)j(in)f
+(suc)o(h)g(a)g(w)o(a)o(y)f(that)315 2670 y(it)f(can)i(b)q(e)g(made)f
+(part)f(of)h(an)g Ff(inputrc)j Fo(\014le.)i(This)15 b(command)g(is)g
+(un)o(b)q(ound)h(b)o(y)f(default.)p eop end
+%%Page: 26 29
+TeXDict begin 26 28 bop 75 -58 a Fo(Chapter)15 b(1:)k(Command)c(Line)h
+(Editing)1053 b(26)75 149 y Fn(dump-macros)14 b(\(\))315
+204 y Fo(Prin)o(t)i(all)g(of)g(the)h(Readline)g(k)o(ey)g(sequences)h(b)
+q(ound)g(to)e(macros)g(and)h(the)g(strings)f(they)315
+259 y(output)g(to)f(the)i(Readline)f(output)g(stream.)22
+b(If)16 b(a)g(n)o(umeric)g(argumen)o(t)f(is)h(supplied,)g(the)315
+314 y(output)g(is)f(formatted)g(in)h(suc)o(h)g(a)g(w)o(a)o(y)f(that)g
+(it)g(can)h(b)q(e)h(made)f(part)f(of)h(an)g Ff(inputrc)i
+Fo(\014le.)315 369 y(This)d(command)g(is)g(un)o(b)q(ound)h(b)o(y)f
+(default.)75 448 y Fn(execute-named-command)d(\(M-x\))315
+503 y Fo(Read)j(a)e(bindable)h(readline)g(command)g(name)f(from)h(the)g
+(input)g(and)g(execute)g(the)g(func-)315 558 y(tion)e(to)g(whic)o(h)h
+(it's)f(b)q(ound,)i(as)f(if)f(the)h(k)o(ey)g(sequence)h(to)e(whic)o(h)h
+(it)f(w)o(as)g(b)q(ound)i(app)q(eared)315 613 y(in)19
+b(the)f(input.)31 b(If)19 b(this)f(function)h(is)f(supplied)h(with)f(a)
+h(n)o(umeric)g(argumen)o(t,)f(it)g(passes)315 667 y(that)c(argumen)o(t)
+h(to)f(the)i(function)f(it)f(executes.)75 747 y Fn(emacs-editing-mode)f
+(\(C-e\))315 802 y Fo(When)j(in)f Fn(vi)f Fo(command)i(mo)q(de,)f(this)
+f(causes)i(a)f(switc)o(h)f(to)h Fn(emacs)f Fo(editing)h(mo)q(de.)75
+882 y Fn(vi-editing-mode)e(\(M-C-j\))315 936 y Fo(When)j(in)f
Fn(emacs)f Fo(editing)h(mo)q(de,)g(this)f(causes)i(a)f(switc)o(h)f(to)h
-Fn(vi)f Fo(editing)h(mo)q(de.)75 2062 y Fm(1.5)33 b(Readline)21
-b(vi)i(Mo)r(de)75 2142 y Fo(While)15 b(the)h(Readline)g(library)f(do)q
+Fn(vi)f Fo(editing)h(mo)q(de.)75 1057 y Fm(1.5)33 b(Readline)21
+b(vi)i(Mo)r(de)75 1137 y Fo(While)15 b(the)h(Readline)g(library)f(do)q
(es)h(not)f(ha)o(v)o(e)g(a)h(full)f(set)h(of)f Fn(vi)g
Fo(editing)g(functions,)h(it)f(do)q(es)h(con)o(tain)75
-2197 y(enough)h(to)g(allo)o(w)e(simple)h(editing)h(of)f(the)i(line.)25
+1191 y(enough)h(to)g(allo)o(w)e(simple)h(editing)h(of)f(the)i(line.)25
b(The)17 b(Readline)g Fn(vi)g Fo(mo)q(de)g(b)q(eha)o(v)o(es)g(as)g(sp)q
-(eci\014ed)h(in)75 2252 y(the)d Fh(posix)g Fo(standard.)137
-2319 y(In)g(order)g(to)f(switc)o(h)f(in)o(teractiv)o(ely)g(b)q(et)o(w)o
-(een)i Fn(emacs)e Fo(and)i Fn(vi)f Fo(editing)g(mo)q(des,)h(use)f(the)h
-(command)75 2374 y Fg(M-C-j)j Fo(\(b)q(ound)i(to)e(emacs-editing-mo)q
-(de)h(when)g(in)g Fn(vi)g Fo(mo)q(de)g(and)g(to)f(vi-editing-mo)q(de)h
-(in)g Fn(emacs)75 2428 y Fo(mo)q(de\).)h(The)15 b(Readline)h(default)f
-(is)f Fn(emacs)h Fo(mo)q(de.)137 2496 y(When)h(y)o(ou)e(en)o(ter)h(a)g
-(line)g(in)f Fn(vi)h Fo(mo)q(de,)g(y)o(ou)g(are)f(already)h(placed)g
-(in)g(`insertion')e(mo)q(de,)i(as)g(if)f(y)o(ou)75 2550
-y(had)h(t)o(yp)q(ed)g(an)g(`)p Fn(i)p Fo('.)j(Pressing)c
-Fn(ESC)h Fo(switc)o(hes)f(y)o(ou)g(in)o(to)g(`command')g(mo)q(de,)g
-(where)h(y)o(ou)g(can)f(edit)h(the)75 2605 y(text)h(of)h(the)g(line)f
-(with)h(the)g(standard)f Fn(vi)h Fo(mo)o(v)o(emen)o(t)f(k)o(eys,)g(mo)o
-(v)o(e)g(to)h(previous)f(history)g(lines)h(with)75 2660
-y(`)p Fn(k)p Fo(')d(and)i(subsequen)o(t)f(lines)g(with)g(`)p
-Fn(j)p Fo(',)f(and)h(so)g(forth.)p eop end
-%%Page: 24 27
-TeXDict begin 24 26 bop 1830 -58 a Fo(24)75 149 y Fk(App)r(endix)26
+(eci\014ed)h(in)75 1246 y(the)d Fn(sh)g Fo(description)g(in)g(the)g
+Fh(posix)g Fo(standard.)137 1313 y(In)g(order)g(to)f(switc)o(h)f(in)o
+(teractiv)o(ely)g(b)q(et)o(w)o(een)i Fn(emacs)e Fo(and)i
+Fn(vi)f Fo(editing)g(mo)q(des,)h(use)f(the)h(command)75
+1368 y Fg(M-C-j)j Fo(\(b)q(ound)i(to)e(emacs-editing-mo)q(de)h(when)g
+(in)g Fn(vi)g Fo(mo)q(de)g(and)g(to)f(vi-editing-mo)q(de)h(in)g
+Fn(emacs)75 1423 y Fo(mo)q(de\).)h(The)15 b(Readline)h(default)f(is)f
+Fn(emacs)h Fo(mo)q(de.)137 1490 y(When)h(y)o(ou)e(en)o(ter)h(a)g(line)g
+(in)f Fn(vi)h Fo(mo)q(de,)g(y)o(ou)g(are)f(already)h(placed)g(in)g
+(`insertion')e(mo)q(de,)i(as)g(if)f(y)o(ou)75 1545 y(had)h(t)o(yp)q(ed)
+g(an)g(`)p Fn(i)p Fo('.)j(Pressing)c Fn(ESC)h Fo(switc)o(hes)f(y)o(ou)g
+(in)o(to)g(`command')g(mo)q(de,)g(where)h(y)o(ou)g(can)f(edit)h(the)75
+1600 y(text)h(of)h(the)g(line)f(with)h(the)g(standard)f
+Fn(vi)h Fo(mo)o(v)o(emen)o(t)f(k)o(eys,)g(mo)o(v)o(e)g(to)h(previous)f
+(history)g(lines)h(with)75 1655 y(`)p Fn(k)p Fo(')d(and)i(subsequen)o
+(t)f(lines)g(with)g(`)p Fn(j)p Fo(',)f(and)h(so)g(forth.)p
+eop end
+%%Page: 27 30
+TeXDict begin 27 29 bop 1830 -58 a Fo(27)75 149 y Fk(App)r(endix)26
b(A)41 b(GNU)27 b(F)-7 b(ree)26 b(Do)r(cumen)n(tation)j(License)679
251 y Fo(V)l(ersion)15 b(1.3,)f(3)h(No)o(v)o(em)o(b)q(er)g(2008)195
318 y(Cop)o(yrigh)o(t)421 317 y(c)409 318 y Fl(\015)g
603 y(0.)29 b(PREAMBLE)165 670 y(The)19 b(purp)q(ose)g(of)f(this)g
(License)i(is)e(to)g(mak)o(e)g(a)g(man)o(ual,)g(textb)q(o)q(ok,)h(or)f
(other)g(functional)g(and)165 725 y(useful)d(do)q(cumen)o(t)h
-Fe(free)h Fo(in)e(the)g(sense)h(of)f(freedom:)k(to)c(assure)g(ev)o(ery)
+Ff(free)h Fo(in)e(the)g(sense)h(of)f(freedom:)k(to)c(assure)g(ev)o(ery)
o(one)f(the)i(e\013ectiv)o(e)e(freedom)165 780 y(to)h(cop)o(y)h(and)g
(redistribute)f(it,)f(with)h(or)g(without)g(mo)q(difying)g(it,)g
(either)g(commercially)f(or)i(non-)165 834 y(commercially)l(.)25
(are)i(designated,)f(as)165 2670 y(b)q(eing)i(those)f(of)g(In)o(v)m
(arian)o(t)f(Sections,)h(in)h(the)f(notice)g(that)f(sa)o(ys)h(that)g
(the)g(Do)q(cumen)o(t)g(is)g(released)p eop end
-%%Page: 25 28
-TeXDict begin 25 27 bop 75 -58 a Fo(App)q(endix)16 b(A:)f(GNU)g(F)l
-(ree)g(Do)q(cumen)o(tation)g(License)802 b(25)165 149
+%%Page: 28 31
+TeXDict begin 28 30 bop 75 -58 a Fo(App)q(endix)16 b(A:)f(GNU)g(F)l
+(ree)g(Do)q(cumen)o(tation)g(License)802 b(28)165 149
y(under)15 b(this)e(License.)20 b(If)14 b(a)g(section)f(do)q(es)h(not)g
(\014t)f(the)h(ab)q(o)o(v)o(e)g(de\014nition)g(of)f(Secondary)h(then)g
(it)f(is)165 204 y(not)j(allo)o(w)o(ed)e(to)h(b)q(e)i(designated)f(as)f
(and)h(has)f(no)165 2595 y(e\013ect)d(on)g(the)g(meaning)g(of)g(this)g
(License.)100 2670 y(2.)29 b(VERBA)l(TIM)16 b(COPYING)p
eop end
-%%Page: 26 29
-TeXDict begin 26 28 bop 75 -58 a Fo(App)q(endix)16 b(A:)f(GNU)g(F)l
-(ree)g(Do)q(cumen)o(tation)g(License)802 b(26)165 149
+%%Page: 29 32
+TeXDict begin 29 31 bop 75 -58 a Fo(App)q(endix)16 b(A:)f(GNU)g(F)l
+(ree)g(Do)q(cumen)o(tation)g(License)802 b(29)165 149
y(Y)l(ou)19 b(ma)o(y)g(cop)o(y)f(and)i(distribute)e(the)h(Do)q(cumen)o
(t)g(in)g(an)o(y)g(medium,)g(either)g(commercially)e(or)165
204 y(noncommercially)l(,)k(pro)o(vided)g(that)g(this)g(License,)i(the)
(distinct)h(from)f(that)h(of)g(the)255 2670 y(Do)q(cumen)o(t,)h(and)g
(from)f(those)h(of)f(previous)h(v)o(ersions)f(\(whic)o(h)g(should,)h
(if)g(there)g(w)o(ere)f(an)o(y)l(,)p eop end
-%%Page: 27 30
-TeXDict begin 27 29 bop 75 -58 a Fo(App)q(endix)16 b(A:)f(GNU)g(F)l
-(ree)g(Do)q(cumen)o(tation)g(License)802 b(27)255 149
+%%Page: 30 33
+TeXDict begin 30 32 bop 75 -58 a Fo(App)q(endix)16 b(A:)f(GNU)g(F)l
+(ree)g(Do)q(cumen)o(tation)g(License)802 b(30)255 149
y(b)q(e)16 b(listed)f(in)h(the)g(History)e(section)h(of)g(the)h(Do)q
(cumen)o(t\).)21 b(Y)l(ou)16 b(ma)o(y)f(use)h(the)g(same)f(title)f(as)
255 204 y(a)h(previous)g(v)o(ersion)f(if)h(the)g(original)e(publisher)j
f(ma)o(y)h(at)165 2670 y(y)o(our)i(option)f(designate)h(some)g(or)f
(all)g(of)h(these)h(sections)e(as)h(in)o(v)m(arian)o(t.)22
b(T)l(o)15 b(do)i(this,)e(add)h(their)p eop end
-%%Page: 28 31
-TeXDict begin 28 30 bop 75 -58 a Fo(App)q(endix)16 b(A:)f(GNU)g(F)l
-(ree)g(Do)q(cumen)o(tation)g(License)802 b(28)165 149
+%%Page: 31 34
+TeXDict begin 31 33 bop 75 -58 a Fo(App)q(endix)16 b(A:)f(GNU)g(F)l
+(ree)g(Do)q(cumen)o(tation)g(License)802 b(31)165 149
y(titles)16 b(to)h(the)h(list)f(of)g(In)o(v)m(arian)o(t)g(Sections)h
(in)f(the)h(Mo)q(di\014ed)g(V)l(ersion's)f(license)h(notice.)27
b(These)165 204 y(titles)14 b(m)o(ust)h(b)q(e)g(distinct)g(from)f(an)o
2615 y(do)q(cumen)o(t,)g(and)f(follo)o(w)e(this)i(License)h(in)f(all)g
(other)f(resp)q(ects)i(regarding)f(v)o(erbatim)f(cop)o(ying)g(of)165
2670 y(that)f(do)q(cumen)o(t.)p eop end
-%%Page: 29 32
-TeXDict begin 29 31 bop 75 -58 a Fo(App)q(endix)16 b(A:)f(GNU)g(F)l
-(ree)g(Do)q(cumen)o(tation)g(License)802 b(29)100 149
+%%Page: 32 35
+TeXDict begin 32 34 bop 75 -58 a Fo(App)q(endix)16 b(A:)f(GNU)g(F)l
+(ree)g(Do)q(cumen)o(tation)g(License)802 b(32)100 149
y(7.)29 b(A)o(GGREGA)l(TION)15 b(WITH)h(INDEPENDENT)e(W)o(ORKS)165
221 y(A)g(compilation)e(of)i(the)g(Do)q(cumen)o(t)g(or)f(its)h(deriv)m
(ativ)o(es)f(with)g(other)h(separate)f(and)i(indep)q(enden)o(t)165
(of)g(a)g(cop)o(y)g(of)f(some)h(or)f(all)g(of)h(the)165
2670 y(same)i(material)e(do)q(es)j(not)f(giv)o(e)f(y)o(ou)h(an)o(y)g
(righ)o(ts)f(to)g(use)i(it.)p eop end
-%%Page: 30 33
-TeXDict begin 30 32 bop 75 -58 a Fo(App)q(endix)16 b(A:)f(GNU)g(F)l
-(ree)g(Do)q(cumen)o(tation)g(License)802 b(30)77 149
+%%Page: 33 36
+TeXDict begin 33 35 bop 75 -58 a Fo(App)q(endix)16 b(A:)f(GNU)g(F)l
+(ree)g(Do)q(cumen)o(tation)g(License)802 b(33)77 149
y(10.)29 b(FUTURE)15 b(REVISIONS)j(OF)d(THIS)h(LICENSE)165
217 y(The)21 b(F)l(ree)g(Soft)o(w)o(are)e(F)l(oundation)h(ma)o(y)g
(publish)h(new,)h(revised)f(v)o(ersions)f(of)g(the)h(GNU)g(F)l(ree)165
1948 y(CC-BY-SA)d(on)f(the)g(same)g(site)f(at)h(an)o(y)f(time)h(b)q
(efore)g(August)g(1,)g(2009,)e(pro)o(vided)i(the)g(MMC)f(is)165
2002 y(eligible)g(for)h(relicensing.)p eop end
-%%Page: 31 34
-TeXDict begin 31 33 bop 75 -58 a Fo(App)q(endix)16 b(A:)f(GNU)g(F)l
-(ree)g(Do)q(cumen)o(tation)g(License)802 b(31)75 149
+%%Page: 34 37
+TeXDict begin 34 36 bop 75 -58 a Fo(App)q(endix)16 b(A:)f(GNU)g(F)l
+(ree)g(Do)q(cumen)o(tation)g(License)802 b(34)75 149
y Fm(ADDENDUM:)20 b(Ho)n(w)h(to)h(use)g(this)g(License)g(for)g(y)n(our)
h(do)r(cumen)n(ts)75 229 y Fo(T)l(o)17 b(use)h(this)e(License)i(in)g(a)
f(do)q(cumen)o(t)g(y)o(ou)g(ha)o(v)o(e)g(written,)g(include)g(a)g(cop)o
@comment %**start of header (This is for running Texinfo on a region.)
@setfilename rluserman.info
@settitle GNU Readline Library
-@include version.texi
+@include version.texi
@comment %**end of header (This is for running Texinfo on a region.)
@copying
consistency of user interface across discrete programs which provide
a command line interface.
-Copyright @copyright{} 1988--2022 Free Software Foundation, Inc.
+Copyright @copyright{} 1988--2024 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
/* Let's not step on anyone else's define for now, since we don't use this yet. */
#ifndef HS_HISTORY_VERSION
-# define HS_HISTORY_VERSION 0x0802 /* History 8.2 */
+# define HS_HISTORY_VERSION 0x0803 /* History 8.3 */
#endif
/* The structure used to store a history entry. */
my $ret;
$level--; # here we start at 0
- if ($name =~ /^appendix/ || defined(@appendix_sec_num)) {
+ if ($name =~ /^appendix/ || @appendix_sec_num) {
# appendix style
- if (defined(@appendix_sec_num)) {
+ if (@appendix_sec_num) {
&incr_sec_num($level, @appendix_sec_num);
} else {
@appendix_sec_num = ('A', 0, 0, 0);
$ret = join('.', @appendix_sec_num[0..$level]);
} else {
# normal style
- if (defined(@normal_sec_num))
+ if (@normal_sec_num)
{
&incr_sec_num($level, @normal_sec_num);
}