From 488d7edc22894d30b6de7f2d4190bf7403f63ffd Mon Sep 17 00:00:00 2001 From: Chet Ramey Date: Tue, 5 Aug 2025 09:56:27 -0400 Subject: [PATCH] fix for termcap on GNU Hurd; fix for caller setting rl_prompt to NULL; fix for event hook not reading pending input; fix to accept 4-byte UTF-8 characters beginning with 0xF4; fix for macros to include character search arguments; new function to read history from non-regular files --- INSTALL | 32 +- MANIFEST | 2 +- Makefile.in | 2 + aclocal.m4 | 10 +- configure | 17 +- configure.ac | 4 +- display.c | 6 +- doc/history.ps | 2875 ++++++++++++++++++++++---------------------- doc/history_3.ps | 25 +- doc/readline.3 | 8 +- doc/readline.ps | 186 +-- doc/readline_3.ps | 97 +- doc/rltech.texi | 5 +- doc/rluser.texi | 4 + doc/rluserman.ps | 120 +- doc/version.texi | 6 +- histexpand.c | 2 +- histfile.c | 84 +- history.c | 2 +- input.c | 6 +- isearch.c | 2 +- mbutil.c | 4 +- misc.c | 1 + posixtime.h | 2 +- readline.c | 2 +- rlmbutil.h | 2 +- rltty.c | 2 +- rlwinsize.h | 2 +- search.c | 2 +- shell.c | 2 +- shlib/Makefile.in | 2 + support/install-sh | 541 +++++++++ terminal.c | 17 +- text.c | 10 +- util.c | 2 +- vi_mode.c | 1 + 36 files changed, 2383 insertions(+), 1704 deletions(-) create mode 100755 support/install-sh diff --git a/INSTALL b/INSTALL index 2cb247a..52ba8eb 100644 --- a/INSTALL +++ b/INSTALL @@ -49,6 +49,27 @@ results of its tests to speed up reconfiguring, and a file `config.log' containing compiler output (useful mainly for debugging `configure'). +To find out more about the options and arguments that the `configure' +script understands, type + + bash-4.2$ ./configure --help + +at a shell prompt in your readline source directory. + +If you want to build readline in a directory separate from the source +directory - to build for multiple architectures, for example - just use +the full path to the configure script. The following commands will +build readline in a directory under `/usr/local/build' from the source code +in `/usr/local/src/readline/readline-8.3': + + mkdir /usr/local/build/readline-8.3 + cd /usr/local/build/readline-8.3 + bash /usr/local/src/readline/readline-8.3/configure + make + +See `Compiling For Multiple Architectures' below for more information +about building in a directory separate from the source. + If you need to do unusual things to compile readline, please try to figure out how `configure' could check whether to do them, and mail diffs or instructions to so they can @@ -98,12 +119,11 @@ Installation Names ================== By default, `make install' will install the readline libraries in -`/usr/local/lib', the include files in -`/usr/local/include/readline', the man pages in `/usr/local/man', -and the info files in `/usr/local/info'. You can specify an -installation prefix other than `/usr/local' by giving `configure' -the option `--prefix=PATH' or by supplying a value for the -DESTDIR variable when running `make install'. +`/usr/local/lib', the include files in `/usr/local/include/readline', +the man pages in `/usr/local/man', and the info files in `/usr/local/info'. +You can specify an installation prefix other than `/usr/local' by +giving `configure' the option `--prefix=PATH' or by supplying a value for +the DESTDIR variable when running `make install'. You can specify separate installation prefixes for architecture-specific files and architecture-independent files. diff --git a/MANIFEST b/MANIFEST index 149ffbb..73e95a8 100644 --- a/MANIFEST +++ b/MANIFEST @@ -92,7 +92,7 @@ shlib/Makefile.in f support/config.guess f support/config.rpath f 755 support/config.sub f -support/install.sh f 755 +support/install-sh f 755 support/mkdirs f 755 support/mkdist f support/mkinstalldirs f 755 diff --git a/Makefile.in b/Makefile.in index 30ad54b..54bd19a 100644 --- a/Makefile.in +++ b/Makefile.in @@ -37,6 +37,8 @@ INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_DATA = @INSTALL_DATA@ +install_sh = @install_sh@ + CC = @CC@ RANLIB = @RANLIB@ AR = @AR@ diff --git a/aclocal.m4 b/aclocal.m4 index ae2d8ae..8d72b67 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -934,10 +934,11 @@ AC_CACHE_VAL(bash_cv_termcap_lib, [AC_CHECK_FUNC(tgetent, bash_cv_termcap_lib=libc, [AC_CHECK_LIB(termcap, tgetent, bash_cv_termcap_lib=libtermcap, [AC_CHECK_LIB(tinfo, tgetent, bash_cv_termcap_lib=libtinfo, + [AC_CHECK_LIB(tinfow, tgetent, bash_cv_termcap_lib=libtinfow, [AC_CHECK_LIB(curses, tgetent, bash_cv_termcap_lib=libcurses, - [AC_CHECK_LIB(ncursesw, tgetent, bash_cv_termcap_lib=libncursesw, - [AC_CHECK_LIB(ncurses, tgetent, bash_cv_termcap_lib=libncurses, - bash_cv_termcap_lib=gnutermcap)])])])])])]) + [AC_CHECK_LIB(ncursesw, tgetent, bash_cv_termcap_lib=libncursesw, + [AC_CHECK_LIB(ncurses, tgetent, bash_cv_termcap_lib=libncurses, + bash_cv_termcap_lib=gnutermcap)])])])])])])]) if test "X$_bash_needmsg" = "Xyes"; then AC_MSG_CHECKING(which library has the termcap functions) fi @@ -952,6 +953,9 @@ TERMCAP_DEP= elif test $bash_cv_termcap_lib = libtinfo; then TERMCAP_LIB=-ltinfo TERMCAP_DEP= +elif test $bash_cv_termcap_lib = libtinfow; then +TERMCAP_LIB=-ltinfow +TERMCAP_DEP= elif test $bash_cv_termcap_lib = libncursesw; then TERMCAP_LIB=-lncursesw TERMCAP_DEP= diff --git a/configure b/configure index 94903e2..e74c229 100755 --- a/configure +++ b/configure @@ -1,5 +1,5 @@ #! /bin/sh -# From configure.ac for Readline 8.3, version 2.102. +# From configure.ac for Readline 8.3, version 2.103. # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.72 for readline 8.3. # @@ -679,6 +679,7 @@ SHOBJ_CC LIBOBJS CPP MAKE_SHELL +install_sh RANLIB AR INSTALL_DATA @@ -4684,6 +4685,20 @@ else fi + +# Expand $ac_aux_dir to an absolute path. +am_aux_dir=`cd "$ac_aux_dir" && pwd` + +if test x"${install_sh+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; + *) + install_sh="\${SHELL} $am_aux_dir/install-sh" + esac +fi + + MAKE_SHELL=/bin/sh diff --git a/configure.ac b/configure.ac index e22e571..5599d12 100644 --- a/configure.ac +++ b/configure.ac @@ -20,7 +20,7 @@ dnl Process this file with autoconf to produce a configure script. # You should have received a copy of the GNU General Public License # along with this program. If not, see . -AC_REVISION([for Readline 8.3, version 2.102]) +AC_REVISION([for Readline 8.3, version 2.103]) AC_INIT(readline, 8.3, bug-readline@gnu.org) @@ -131,6 +131,8 @@ dnl This allows people to set it when running configure or make test -n "$ARFLAGS" || ARFLAGS="cr" AC_PROG_RANLIB +AM_PROG_INSTALL_SH + MAKE_SHELL=/bin/sh AC_SUBST(MAKE_SHELL) diff --git a/display.c b/display.c index 9aa8c7b..5c5f58d 100644 --- a/display.c +++ b/display.c @@ -783,7 +783,7 @@ _rl_optimize_redisplay (void) /* Useful shorthand used by rl_redisplay, update_line, rl_move_cursor_relative */ #define INVIS_FIRST() (local_prompt_invis_chars[0]) -#define WRAP_OFFSET(line, offset) ((line <= prompt_last_screen_line) ? local_prompt_invis_chars[line] : 0) +#define WRAP_OFFSET(line, offset) ((line <= prompt_last_screen_line && local_prompt_invis_chars) ? local_prompt_invis_chars[line] : 0) #define W_OFFSET(line, offset) ((line) == 0 ? offset : 0) #define VIS_LLEN(l) ((l) > _rl_vis_botlin ? 0 : (vis_lbreaks[l+1] - vis_lbreaks[l])) @@ -3143,14 +3143,14 @@ rl_message (const char *format, ...) #if defined (HAVE_VSNPRINTF) bneed = vsnprintf (msg_buf, msg_bufsiz, format, args); - if (bneed >= msg_bufsiz - 1) + if (bneed > msg_bufsiz - 1) { msg_bufsiz = bneed + 1; msg_buf = xrealloc (msg_buf, msg_bufsiz); va_end (args); va_start (args, format); - vsnprintf (msg_buf, msg_bufsiz - 1, format, args); + vsnprintf (msg_buf, msg_bufsiz, format, args); } #else vsprintf (msg_buf, format, args); diff --git a/doc/history.ps b/doc/history.ps index 7b1c1b4..c34cb77 100644 --- a/doc/history.ps +++ b/doc/history.ps @@ -1,18 +1,18 @@ %!PS-Adobe-2.0 %%Creator: dvips(k) 2024.1 (TeX Live 2024) Copyright 2024 Radical Eye Software %%Title: history.dvi -%%CreationDate: Fri Dec 13 15:00:12 2024 +%%CreationDate: Wed Jun 25 20:09:16 2025 %%Pages: 25 %%PageOrder: Ascend %%BoundingBox: 0 0 612 792 -%%DocumentFonts: CMBX12 CMR10 CMTT10 CMSY10 CMCSC10 CMSL10 CMSLTT10 +%%DocumentFonts: CMR10 CMBX12 CMTT10 CMSY10 CMCSC10 CMSL10 CMSLTT10 %%+ CMSS10 CMTT9 CMR9 CMMI9 %%DocumentPaperSizes: Letter %%EndComments %DVIPSWebPage: (www.radicaleye.com) %DVIPSCommandLine: dvips -D 600 -t letter -o history.ps history.dvi %DVIPSParameters: dpi=600 -%DVIPSSource: TeX output 2024.12.13:1000 +%DVIPSSource: TeX output 2025.03.31:1028 %%BeginProcSet: tex.pro 0 0 %! /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S @@ -1085,49 +1085,51 @@ DC17E6EF8DEEBDABCD84172AEAE450A585EA54FFCABB66E652B885000A457D7D cleartomark {restore}if %%EndFont -%%BeginFont: CMR10 -%!PS-AdobeFont-1.0: CMR10 003.002 -%%Title: CMR10 +%%BeginFont: CMTT9 +%!PS-AdobeFont-1.0: CMTT9 003.002 +%%Title: CMTT9 %Version: 003.002 %%CreationDate: Mon Jul 13 16:17:00 2009 %%Creator: David M. Jones %Copyright: Copyright (c) 1997, 2009 American Mathematical Society -%Copyright: (), with Reserved Font Name CMR10. +%Copyright: (), with Reserved Font Name CMTT9. % 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/CMR10 known{/CMR10 findfont dup/UniqueID known{dup -/UniqueID get 5000793 eq exch/FontType get 1 eq and}{pop false}ifelse +FontDirectory/CMTT9 known{/CMTT9 findfont dup/UniqueID known{dup +/UniqueID get 5000831 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 /CMR10 def -/FontBBox {-40 -250 1009 750 }readonly def +/FontName /CMTT9 def +/FontBBox {-6 -233 542 698 }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\051, with Reserved Font Name CMR10.) readonly def -/FullName (CMR10) readonly def +/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMTT9.) readonly def +/FullName (CMTT9) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle 0 def -/isFixedPitch false def +/isFixedPitch true 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 13 /fl put -dup 14 /ffi put dup 33 /exclam put -dup 34 /quotedblright put +dup 34 /quotedbl put +dup 35 /numbersign put +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 43 /plus put dup 44 /comma put dup 45 /hyphen put dup 46 /period put @@ -1137,14 +1139,12 @@ dup 49 /one put dup 50 /two put 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 57 /nine put dup 58 /colon put dup 59 /semicolon put -dup 63 /question put +dup 60 /less put +dup 61 /equal put +dup 62 /greater put dup 65 /A put dup 66 /B put dup 67 /C put @@ -1154,26 +1154,19 @@ dup 70 /F put dup 71 /G put dup 72 /H put dup 73 /I put -dup 74 /J put -dup 75 /K put dup 76 /L put -dup 77 /M put dup 78 /N put -dup 79 /O put dup 80 /P put -dup 81 /Q put dup 82 /R put dup 83 /S put dup 84 /T put dup 85 /U put dup 86 /V put -dup 87 /W put -dup 88 /X put dup 89 /Y put -dup 90 /Z put dup 91 /bracketleft put -dup 92 /quotedblleft put +dup 92 /backslash put dup 93 /bracketright put +dup 95 /underscore put dup 96 /quoteleft put dup 97 /a put dup 98 /b put @@ -1184,7 +1177,6 @@ dup 102 /f put dup 103 /g put dup 104 /h put dup 105 /i put -dup 106 /j put dup 107 /k put dup 108 /l put dup 109 /m put @@ -1201,870 +1193,9 @@ dup 119 /w put dup 120 /x put dup 121 /y put dup 122 /z put -dup 123 /endash put -dup 124 /emdash put -readonly def -currentdict end -currentfile eexec -D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA -0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93 -51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71 -7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551 -E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078 -0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273 -C01924195A181D03F5054A93B71E5065F8D92FE23794D2DB9B8591E5F01442D8 -569672CF86B91C3F79C5DDC97C190EE0082814A5B5A2A5E77C790F087E729079 -24A5AC880DDED58334DD5E8DC6A0B2BD4F04B17334A74BF8FF5D88B7B678A04A -2255C050CB39A389106B0C672A1912AFA86A49EFD02E61E6509E50EE35E67944 -8FC63D91C3D2794B49A0C2993832BC4CDC8F7BD7575AD61BCDF42E2E421AA93E -3FF9E4FAD980256D8B377043A07FC75D6169338028692CCA8CD1FE92FD60AD26 -D57B7519B80A8F8DCE9CEE5CDF720AF268D3C14099498A843D76E3B6C0328F24 -D36EFE7F5C4E5B5C612786200C8DE3A41EE5F1FFAF4097653CFCDC8F4FD32E0B -03EDB3E413283B9EFB0AC33B055617005BC9B0057FD68C52D1B0E67F0C571685 -767F2AA85ADE4E0104A1C777733D5E318A22A9944336E5B98D965E50D31F357A -8B6EA5A0EA98E1B027CE68C2EDB149EDDD04ED74A1B3D206D471A0C11C11449B -DE190BBFEBC08C9E1B7513B43DA3134D6B11A2516E6E86B67F68C970A320D05E -94FEC57FB347606DF89989C33482BD09D011C55AA920319E7B26A205D3D0F004 -22466F09C0482A164CFB27EF6ED2B040ECCC3DCAF345B5A73676F193D43123B7 -72FD6CFC5E37930E61EBD5A6307E4DE70194E6384EC0D79DB6AD86D3B319A31C -8B0589D0FE28241D8ACE280D0530EE99C80723E560BB72AE9D53F4713181F491 -344B06D3027BA4E9E94D4305BE1D817197C54C8FF56CD6964165F6448ECC8A8A -64B48B4F0FD69299A137589E2491A283509B21A3A5772F75B7602A9F60AE559B -07A58436D04222C73EAEA72DE9A5A441F88D27C11F4F91255EFE280E91A4ACAC -1E98A4E5E6C57B9AE86FD218C3CD8F24A4104156A80F13821384E529783C52C8 -78B94AB3A0096090867ED32E8A30980E737922037F75F062BD83BF4F5929BC51 -CC22AEE2DBBAAA001CFFBFF41D258424FAD888FFF1BEAB796A44E3126159E120 -7E4025C676CF94888A1971AEF8B6764B3AF4A92D36FAF6FC56FD049710EE3782 -BC2CD84FE2473F133BE03C1346B875463F126DCAB15C7A9BCC9A727D23611462 -4E8D2BFD2466600285D79518712B8681ABCD69608E6AA9578F7BD771EC36E01A -5A17BC17E375020ECA59B43790ABEB9DF5F4FBBEF807E5699EFEAC563E1ACC5D -EFA336E75DE6D8248E9381BB110884FDC89C2F9A41EBBC9A8A1F98E6A41F68BE -EE30E25CA148C1EFF42DFF8C214A6537AB11F260B8C329A4947B5FC8DC9C5622 -4DF7BF4FBFB00380D47BABB03BC30627AA74103E553F55278F538EDD8C1E64CE -0F1398CA0AB5A86630139B4A7E8FC02804CAFF3830114640AE50D2FDA3B561B5 -C63AD7EE3347804CBB40FB1E77A6C89735DD870351C3A1811591AB493251B904 -314F65791963C0412377C1D02362C5E9655F1C3D4803CD379A8EF24C48218C2E -DF1165840462BF37DDE1B8D5FF09FA2C3B261E2F1A65ECFBE5D4EAD43B52C029 -EEB3948CB8A252CBAF545C8FA1C31E920E23A12DD7222CEF2D2A513BD758EA13 -DA33BF5FBF1D734653EB83DA2D374A5B9A0CE316F24EE375D6DF6BDA49954C2E -DB25A88821193636119D469BA66E5DAA9C92520FD4F84426A4E54273FA469084 -7517817A6EE3E21176D333825E88046F50B3CF6938AF9BA79A2F51398239EB91 -1A2D07F7FCD948427FF62F40FF95E39FE1A1AA8451411563FD5388472251C155 -69BDE9283B41900B21EB1190D06E6B13B7794FED020D2C1BDD205AE77B084BCE -EF628249398B496DE85B406FC2E1939EF00DFC84C07E26CF72EC401BAAE756E5 -7F6673216E7560D1C2A723CB405EE5CA474A07F61B81F8836482F73DC9516D67 -CE0CB770EAD755B6B356198B4B97EBB29C63456953270CCC8D5650C1D006E69D -38DE2DFEAB27DAD50A817F0D645D30AF5B75A7B53CBD3D2B8D87BD0A7E525AF3 -22F7ADDFCE31716914C2318260C2E2B4664893921B68C5A93334A361D94A759C -0D7B146D6FD94F0442D672BDA0F6432E18F3C5DFA37ADA378D95B75F413C9ED1 -BB5C606A3EC7DFB3F796F59B0478C13FD1900381EFE0BB5242D5B5D34D03AF1D -4BDC93EAF8020E26CA23C8B0E7DDEBBC6762A557067A4CE05A524188A8F02E2F -3625DA38DFCF381727887F5646A3995A8A38A5FB1E5D5EBB395FDD0B7C8E71AD -B48EEDB62AB2CE99D121435EFBBFCEEA69AE9ED8238B60CC7288DE33C766CDFE -15B767B4AE2E6CE0965E77272AC9F86023DA620548CFAC85BC751C44218A29C9 -849F1C2DCBDFAD895B54E51A569952ED50F82DC8A19F367E7E44643854EFD6B3 -FCAEB04E55E4661C82D31E2932611748480EF61FB2FBFB0CFB940BEA81AFCD84 -4C6A6332D7A600170E38A8EAFCD4F93DC153C43175434C86BC747348FAC61B76 -1FEC9027C1A193E55C80F1F20B5317AA0A05AAA36AE235F6E49F06E570FEE798 -84857D7552EA92EF3EFAD52DE39C2F8F43C59E3A957B7B926FC95FC4B60186DF -7F3523EE2AB74E294C8C4BCD8B4975E84849E0FBDA6C0B0F24A636DFA578B122 -CF97BC5089E21E9F5298D1C9F30CB8BAFF6A3A11BB4D9A0A5CF2B18D055C44CA -4FD4D8FE1AF3630907DE7E585AA811F9CD11FB2C8FC791851D651009FA5DF20B -3C33FD2FF848A9E3F5652BD294965A332DD3F246C91B0ADA34017FF2451D1394 -F9C3C95AAC6EC8062BE98E8914D51DA6A164AD13938693D446044859D03A949D -F9AC5DF4A000CDA98BB516D762CB9F6D44B5268FD0C26E88BC4A760C0F75A140 -DEBDECA4F511128B7D2805872160C55236F0A0FA7637FF0D4E94AC079CD3C8A7 -D03A5A56F26B0438B577C46011A10532FEBCAD14FBD6032E224F45691A726886 -56F305231EB2FCDF59C8BBFCB5DBD2D093A0E84D62AC93A2312CA69295E937C4 -8DBA1802B85F54B5E7E6D6216A918F911FF705D3B5CF055F1D873B96283A0B53 -59344D910CD396D883F6F7836BA65FAB4393A773A8F6BC298069E5BA38210EED -49C9D920F718E3FCE692527DC7CCE6963BF744F2C91BC5952564196D60574E86 -87A0FAB21F2DB2BD5A51D7FBD8FC19946D24E5A228462C4772F978E650ADCE3B -8D66B9C21279C531CA1C3A8ECE3420BB65837287A7222CC3673A2A5F8BBFDB60 -C719CD073EF9A23675198462C7C87B24CC92D6AEE5C25AC63855CC3281494342 -D28F3D2FDE0C183486769A4FD5B0143193D31FCB2C2A14E487BBD96D0BADBB64 -D1B56021C363A795BF10E2DB448261C363A54A4AC1182B470C457AA82DF3F5D1 -F4B329806141EBD53CAE309319B94133D7EBDC2D0453A905ADD207364371E178 -0A95C2686E3B34C4A978BFC0EE968C39ABA00889BC5149162C2B54483D44FD3B -5CFF41F611C7E03B94945F414560E874D7CF27FFD0630890D7D7EA66CBD15448 -229059E1C436BB33D69552B5367AB5D53591C4678D0C704DD3EA23F5D9E8A7AC -17D003C19E333E726FFFA2961F33C70F429085F7BFE3E2510F59B78F58B19CB4 -01B48E184BAD9020FECCE3AF52048A056981DAEA02AE78197E65855DDB170616 -F54278395D9EA50DC83761AE759F9CDEF9E1948E7002414FC05286ED793E6662 -3347F2A9AF8917493D7305B92CF93E8E9185F70015F5594084298A6C2F9FD3C0 -689F262AC9FEDC9B89577ECDE92F08D3142209FBCE7B5C0A840CC767BCA56C20 -4E4E545E2BE4D21C53855CEE4CD0AB35D1A604C0FFFF77DBAE4289752276559F -A05FEE65F45ECAF44E95E23FAB6052195C7948AF0B1126482D4E02D72BF8AB03 -DE0F1A632F7672AD9DDE70EDC82AA993678A82BEAD0BC2649C4707FD8509810D -364B5C6FE0E10772E95288C622C2F06C634F4DF8C7FD1432BC9310D5F24FEE3F -7AB324863D6DABAA1576E70643CA79EF4D7DF4105093D66CEE0F3B87D2164A7F -26EA05F5C4645B22D3E1BFD2219657712C168FD90DE801FB0F32759E80DEC1E1 -43CEEB19FED12D757205043FC98FEC62D6A8D8B97BC083B4A0E985AF7850D6FD -8716B9957C1C35A0675BC53DF672C425C79F43FDABAEE7D63F092CF271C9A9D7 -C41F40C4189510987887942E60A412B3EEC84C9A6E1AC7D54D528F5604B72C08 -94B7882621A5BF1F325B92FF96B80878CC550D1AE4D8196E41CB1251856609A5 -C4D3BD05A922D0D45E039D9450DEF8490A3E924E41434194910BF60BA1B08BE1 -B41824345627745541A4F1703E956328F6227D11C74946B38CFB096139979E56 -4E723B889B44C6D78673868C89912F8B4F0B4B485F1587A637B630F92E6072D5 -7F3B44EA6FD96BBD4FC28A6C1D90805E3BE3E42A7BC9C880762966C55BC04E01 -204D083AE976FAE6F37C94F27E68F8C0F28D52B17F6C0FD7C9150701FD78F8CE -B8E8DC9260E3974005EB5CA728171F482D765016C94D4ADFE4A42EF42212BC56 -7E4EEEE8B0D2A7856CD4E44F55C0BAB762F92CB8D64C17022D4BF3A47C12F5E6 -279FC23101FEE93753653CE8CEDC3B75C9CCB29BF1D4554C6120DE8EE750FCBB -E38B5D915206974962E320362E59B3F21B3AB1875703191043D03284D4467346 -CFF2F98CEB4845B73ED8E003E0DC94251B73E13A9B51A3F1430BCF6A21EB9B7A -65E17FA411F53BE6432F1506232B8159E008FA257F884A4A01AC53BE91754D78 -BF14A5B0FBFB9C31BF4908355F8A762052968DF526D118708CCB0B7CB5BEE285 -6DAB6CD2E3934178E60BECB11AAB5478623CF6C50C92F8BB5D1A583609028FA7 -B8A53B791BDC9EF76A124F3F7641857E4BEA0837CB36176EC9A522EA7F41B8D3 -63C37D1145367BD300F17B54522A834BBB74DE12BF9EB26ACE6F24A046D58F89 -4D4B7DF74875F1A0C1C9D97BE0849593D7B398EB4B00BEBC8C8D1497B6EF831A -A35380FFB7F1AFA4D888AA52C9482E8B1755CC209905F98F40D95B44D4DCBCB6 -67423D1BC2F3560FF0A8B4F0CAC352A4EE2C1D946E45AAEC8A6AD40303F3382C -DF0756BFA3B1ED64C169E56ED1C760F2FF0E24DC5C9F41306EF8D2628153D30A -5DCB0791126BEFD4947D7EF08301FE015F2B0008DFFCBF9F2D4D859FD43EC7D9 -C5BE237E9BF6665B7B1BEBB362F0C0C3A8D86010B9C97FA741C97C2E0513386C -9C26C235B14DD2A58BFDAC7B5F63DB4DA6D5D37D0098175A9071590E1DF66A3D -B8173A047C29D7D35557F06132CC920B5460B8AFC11D23D09A4E45D089F5EB51 -963FA1A6256E359D485107FD143B2BF21FDE9DA5744BC2615E86C31C89470CF0 -D06C6397D9FCCB316EA9989430240759D2C4945D941F159FC02327F34B042BAB -B5C3A47C78E8C1A6FBCD396B1A51CC4B020B8AD401841EDABACECDB482D6EC5B -72D2BFEB4556720FADD49D07307C8B22ACB7E310CA4151A85C71EEF70E8D15DE -B3B00F26E0E166C14647A65ADA228A3D1C89025BE059306565DB1B1EFC37D358 -8C1EB024254AFD049BA977BD4C2C605050E17940A89D0D4C5D963E792320F5DB -3706682E03D25D9E02487247819551465092CC22B6B56E93F3AB528038FEC3F0 -668F866707A19B0463BE706EC729D2EE1653AAC7E29BD25BFB3241D4792F5152 -ED415B4E7FA92C2EE5A22E27E8B75542C492E56D811C192E95542A6FE0BFE5A5 -69273C2ABED4300D491B92D2AECDD278404CB84B1BB1BD7AFEC858215837D118 -C0E928BE7E07CFEEB51A6D21375B772B8248C994564014015232A0DA4BEA1754 -3274F407FED0837A236371F1A32056240F2015B1E7F4B2CA72C6B58610A66F13 -407CFFBA5E0A2893C1F572D50F51286E9133B5A84239C9493B0574E77D281D01 -11D00683354A000C9700EAFBC1FD104EA19DFCB87470190E7E2CE26E3A6FD0FF -2620B87B82AC8686B6206B530F17E9348BC7D04B948348802CE53A312443DB87 -4DBBA5313A6A2A8DAB8A1CC9A594FF8C299281C0A261C8CB2226B732FBEEDE40 -2C6ACC74A1A61379E2E1CD5548CD908268A32FA83D8504C442EA0E183ADBF7FF -9FD09C037AB03516ECCA93FF048235BD11A25DB07F164512A079C5392AC7F889 -CE96AE5C8D9580BCAFCC087C35E76EED1A671E87C12E3045E15A687134736DF8 -DA984772AFD189D68571A2ED7256F1E204230E41D3D9DD876F938951714A3973 -0CA9310489F8E807C1C7A4E51AEA5BC030610A5D7263FF7E0F9FDE3E5E37A362 -5B919000BD94D978583B942EB79CF2BEAC33FEBC9A67272EB10865BA8FB75FD7 -9D280AB59F91B96C16C982DE848D76D8FA8620DFD7C80B7DEAE7264350D6FB3A -EF04794DA3305844A7CF718F6D1A4A3AFF6826173A076A1372ABFC54ED3AC6C2 -09C9287FC830556CA694E21CA5342ECA7B10C90AFC4783D841D7B1E34FA3DB7A -2B706F3E21B0FBAB23E7257962FC3BC309CEA2C7239A9D6B44CC96825115ABD2 -AF9A2566D2F3382C01569FBDB94C8D664A5DA0F7DC3DD140CA77C743D7BC1420 -324ECF9E4780280EB119885E96A6C619CE3C0C8E1E264E2DEB137E5DC8149786 -486D65667ECF47B1A1E20E9E6E4FC8323E0BC8E61BDD3BCDFC6575C69C03E31A -EFFC290472CBBD049DE3F840AEE37A2486034240F80E75D8A79E0762377DF660 -52B12EAA16D678990B11A9BFBC03C1D4FCDA9FD4FFBB3E88352438102F10B7C5 -9F04C013B6575B5E948FAB58EA691984A0E54E6B9F3F505FFFEF74D06FA1CDF3 -4B8A95904C8A2763AA8AF5B71D00F5DE09DC1CDF87A08B6D181453063E14C12D -B7BB3775A6E2A901636273D9EEB833EA8CF20FD83AE899E28DADE10EEEC20BD7 -BD93085A4B1AC80AC1AE8280C14767F1A487BD066007A0D050317BD081131A14 -6EA0898ED59E46DA7B6254BDCCBC660686E2EDA0E77A705A653733BB5C5497D0 -B130359F866CF293FB6EF0C2AC5BAA2DB0DED045E2DED3A2612D078333260359 -16CF0CCB272D34767EA069E0F0B0D42327A18529D72E890EDA6195C2688438ED -E9ACDBEED41E81CA8EB5E43C2B09CE266EFCA03F2D7FF57F12B06F9E54FCC6A6 -546676F6FFC5B8B7D3F0982B6FF0D21D949309F0C0B175CC1D0976F8C55C6AED -6E821C39041E22D91AB30922F2B2EC2746BC7DAB484991542FBC82D87B487507 -559AB466F73EE23C2D3194DC5CE4C9AE66D3164613AC5CBB3DB501B64DA7C91B -C7ED2EE9027FC0906820B35D4F2CF66C4F9CE4A884B7C07155BCA884ECA5EB3A -ABB83F84DB1F5639599DC7D3F51241AB5D95C3BCB7AB1EC90B4BC989F74FB354 -04B2D7366A34D335A47B8C00C05CB423482BF6C7970A95545424A08AFF9A035B -7F83F52B65A9799CE76E303B85664B624C65E9CA58184C7BE2BB9D9C86A4DE5A -8165EE3DA2E652B5022EE7893896BABD88931DE1D538F615787645DF5ACBBA0B -A8E5B899A37321AA7D4B283AC9234978C2DD81813A1EE5DB6EC170DAC1B6EF02 -94892635B498765C07A38D2E9DB0B7581B11056C28278F89B0E60998379C07EB -C0EAEDC32AA69B8B836F92A61AFD35688315B2C3F860632FC13E4BDFB63214BC -41CC6859EAB3AC3034449213CAB99FA1D216563419CD6D6CE4E1B56F33E6C654 -7AA9DCB5B05FC068DF02AC32408C8010AD004F6CCA9887830927F8CBCD49CDB5 -18CAC1EAFF815FF2F6F527F936948201565003022C6C7390B4E3C2B219FB4F76 -9F12BD25CA7B3B61D1A2F8DFEE795D04D5428B42FB66E0C254AF7B7A10CEF7FD -E5ADA5E217BE24851180E9A1700FBA66C7D2B0D7BFDE4F4EED1D24B821A40947 -5620363657F6D048E651A689822CF815E72FC8AE9D835BE31D1DD8B54C9A717F -4DC319B4B59AE073936EA40B070524C7E71D5A7B64436DA107749746B516E29F -E3BBCB8F8C473E706670E11E5B221716F315FF097CD1841D0069FA69EA1898FF -9F9EC2518C77806A19730C97F54BEAD604548D553D4A6EDB247853225E24E7E9 -89D71F6BC94DB986467E755CCC99069B313F5745B02B4BB608A39F0A0A732B87 -7EA2DED68219754BF1FBCA350327572D769C962EF9242132D93A5C8E9725D8D3 -AAAEC15ED0F362471AA58488620156F3474FA59CA080EA96FE995D2B3DEEADF3 -3141D157481C66507725ACA5953CBBE1ACEE7E3F02C72C6552D15EB3D612730E -61A06A43575568DC3CF3844BABF04CA767E2995196097015E0C4F622C4356B6B -F41DBAFD797A4B9D7AC22332C552043EF98913D0D9B50CA6B7CDAF903BC5C04F -D20A952BA5CC35B646ACD0A287C956B98C450051AF6AAF79DF37F8954473F8F6 -652BF03AE2AE82B99D820CF93F5FC0BA17EBD7AF90313E70594EB5C354023BFA -07912408F1757319C7288E99872B907D5AB583B082EEED8AB079C63E38B07D11 -6744856E689A479CB3A8BC081F33CB06755926204981DC0A45B3ACC18F6865BB -EE2C50DB43B62E3630FC1D9B1FFB3BFFAA6D0A20C0381ADF48E4D916BEE85BA2 -BB40F538F55C11D50F882B73913840B45161262BC8B0012694C3EF26452F9B77 -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 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -{restore}if -%%EndFont -%%BeginFont: CMTT9 -%!PS-AdobeFont-1.0: CMTT9 003.002 -%%Title: CMTT9 -%Version: 003.002 -%%CreationDate: Mon Jul 13 16:17:00 2009 -%%Creator: David M. Jones -%Copyright: Copyright (c) 1997, 2009 American Mathematical Society -%Copyright: (), with Reserved Font Name CMTT9. -% 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/CMTT9 known{/CMTT9 findfont dup/UniqueID known{dup -/UniqueID get 5000831 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 /CMTT9 def -/FontBBox {-6 -233 542 698 }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\051, with Reserved Font Name CMTT9.) readonly def -/FullName (CMTT9) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle 0 def -/isFixedPitch true def -/UnderlinePosition -100 def -/UnderlineThickness 50 def -end readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 33 /exclam put -dup 34 /quotedbl put -dup 35 /numbersign put -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 43 /plus put -dup 44 /comma put -dup 45 /hyphen put -dup 46 /period put -dup 47 /slash put -dup 48 /zero put -dup 49 /one put -dup 50 /two put -dup 51 /three put -dup 52 /four put -dup 54 /six put -dup 58 /colon put -dup 59 /semicolon put -dup 60 /less put -dup 61 /equal put -dup 62 /greater 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 71 /G put -dup 72 /H put -dup 73 /I put -dup 76 /L put -dup 78 /N put -dup 80 /P put -dup 82 /R 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 -dup 93 /bracketright put -dup 95 /underscore put -dup 96 /quoteleft 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 -dup 123 /braceleft put -dup 124 /bar put -dup 125 /braceright put +dup 123 /braceleft put +dup 124 /bar put +dup 125 /braceright put readonly def currentdict end currentfile eexec @@ -5181,55 +4312,924 @@ AE5400775223E684BFCB cleartomark {restore}if %%EndFont +%%BeginFont: CMR10 +%!PS-AdobeFont-1.0: CMR10 003.002 +%%Title: CMR10 +%Version: 003.002 +%%CreationDate: Mon Jul 13 16:17:00 2009 +%%Creator: David M. Jones +%Copyright: Copyright (c) 1997, 2009 American Mathematical Society +%Copyright: (), with Reserved Font Name CMR10. +% 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/CMR10 known{/CMR10 findfont dup/UniqueID known{dup +/UniqueID get 5000793 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 /CMR10 def +/FontBBox {-40 -250 1009 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\051, with Reserved Font Name CMR10.) readonly def +/FullName (CMR10) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle 0 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 13 /fl put +dup 14 /ffi put +dup 33 /exclam put +dup 34 /quotedblright put +dup 39 /quoteright put +dup 40 /parenleft put +dup 41 /parenright put +dup 44 /comma put +dup 45 /hyphen put +dup 46 /period put +dup 47 /slash put +dup 48 /zero put +dup 49 /one put +dup 50 /two put +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 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 +dup 68 /D put +dup 69 /E put +dup 70 /F put +dup 71 /G put +dup 72 /H put +dup 73 /I put +dup 74 /J put +dup 75 /K put +dup 76 /L put +dup 77 /M put +dup 78 /N put +dup 79 /O put +dup 80 /P put +dup 81 /Q put +dup 82 /R put +dup 83 /S put +dup 84 /T put +dup 85 /U put +dup 86 /V put +dup 87 /W put +dup 88 /X put +dup 89 /Y put +dup 90 /Z put +dup 91 /bracketleft put +dup 92 /quotedblleft put +dup 93 /bracketright put +dup 96 /quoteleft 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 106 /j 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 +dup 123 /endash put +dup 124 /emdash put +readonly def +currentdict end +currentfile eexec +D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA +0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93 +51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71 +7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551 +E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078 +0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273 +C01924195A181D03F5054A93B71E5065F8D92FE23794D2DB9B8591E5F01442D8 +569672CF86B91C3F79C5DDC97C190EE0082814A5B5A2A5E77C790F087E729079 +24A5AC880DDED58334DD5E8DC6A0B2BD4F04B17334A74BF8FF5D88B7B678A04A +2255C050CB39A389106B0C672A1912AFA86A49EFD02E61E6509E50EE35E67944 +8FC63D91C3D2794B49A0C2993832BC4CDC8F7BD7575AD61BCDF42E2E421AA93E +3FF9E4FAD980256D8B377043A07FC75D6169338028692CCA8CD1FE92FD60AD26 +D57B7519B80A8F8DCE9CEE5CDF720AF268D3C14099498A843D76E3B6C0328F24 +D36EFE7F5C4E5B5C612786200C8DE3A41EE5F1FFAF4097653CFCDC8F4FD32E0B +03EDB3E413283B9EFB0AC33B055617005BC9B0057FD68C52D1B0E67F0C571685 +767F2AA85ADE4E0104A1C777733D5E318A22A9944336E5B98D965E50D31F357A +8B6EA5A0EA98E1B027CE68C2EDB149EDDD04ED74A1B3D206D471A0C11C11449B +DE190BBFEBC08C9E1B7513B43DA3134D6B11A2516E6E86B67F68C970A320D05E +94FEC57FB347606DF89989C33482BD09D011C55AA920319E7B26A205D3D0F004 +22466F09C0482A164CFB27EF6ED2B040ECCC3DCAF345B5A73676F193D43123B7 +72FD6CFC5E37930E61EBD5A6307E4DE70194E6384EC0D79DB6AD86D3B319A31C +8B0589D0FE28241D8ACE280D0530EE99C80723E560BB72AE9D53F4713181F491 +344B06D3027BA4E9E94D4305BE1D817197C54C8FF56CD6964165F6448ECC8A8A +64B48B4F0FD69299A137589E2491A283509B21A3A5772F75B7602A9F60AE559B +07A58436D04222C73EAEA72DE9A5A441F88D27C11F4F91255EFE280E91A4ACAC +1E98A4E5E6C57B9AE86FD218C3CD8F24A4104156A80F13821384E529783C52C8 +78B94AB3A0096090867ED32E8A30980E737922037F75F062BD83BF4F5929BC51 +CC22AEE2DBBAAA001CFFBFF41D258424FAD888FFF1BEAB796A44E3126159E120 +7E4025C676CF94888A1971AEF8B6764B3AF4A92D36FAF6FC56FD049710EE3782 +BC2CD84FE2473F133BE03C1346B875463F126DCAB15C7A9BCC9A727D23611462 +4E8D2BFD2466600285D79518712B8681ABCD69608E6AA9578F7BD771EC36E01A +5A17BC17E375020ECA59B43790ABEB9DF5F4FBBEF807E5699EFEAC563E1ACC5D +EFA336E75DE6D8248E9381BB110884FDC89C2F9A41EBBC9A8A1F98E6A41F68BE +EE30E25CA148C1EFF42DFF8C214A6537AB11F260B8C329A4947B5FC8DC9C5622 +4DF7BF4FBFB00380D47BABB03BC30627AA74103E553F55278F538EDD8C1E64CE +0F1398CA0AB5A86630139B4A7E8FC02804CAFF3830114640AE50D2FDA3B561B5 +C63AD7EE3347804CBB40FB1E77A6C89735DD870351C3A1811591AB493251B904 +314F65791963C0412377C1D02362C5E9655F1C3D4803CD379A8EF24C48218C2E +DF1165840462BF37DDE1B8D5FF09FA2C3B261E2F1A65ECFBE5D4EAD43B52C029 +EEB3948CB8A252CBAF545C8FA1C31E920E23A12DD7222CEF2D2A513BD758EA13 +DA33BF5FBF1D734653EB83DA2D374A5B9A0CE316F24EE375D6DF6BDA49954C2E +DB25A88821193636119D469BA66E5DAA9C92520FD4F84426A4E54273FA469084 +7517817A6EE3E21176D333825E88046F50B3CF6938AF9BA79A2F51398239EB91 +1A2D07F7FCD948427FF62F40FF95E39FE1A1AA8451411563FD5388472251C155 +69BDE9283B41900B21EB1190D06E6B13B7794FED020D2C1BDD205AE77B084BCE +EF628249398B496DE85B406FC2E1939EF00DFC84C07E26CF72EC401BAAE756E5 +7F6673216E7560D1C2A723CB405EE5CA474A07F61B81F8836482F73DC9516D67 +CE0CB770EAD755B6B356198B4B97EBB29C63456953270CCC8D5650C1D006E69D +38DE2DFEAB27DAD50A817F0D645D30AF5B75A7B53CBD3D2B8D87BD0A7E525AF3 +22F7ADDFCE31716914C2318260C2E2B4664893921B68C5A93334A361D94A759C +0D7B146D6FD94F0442D672BDA0F6432E18F3C5DFA37ADA378D95B75F413C9ED1 +BB5C606A3EC7DFB3F796F59B0478C13FD1900381EFE0BB5242D5B5D34D03AF1D +4BDC93EAF8020E26CA23C8B0E7DDEBBC6762A557067A4CE05A524188A8F02E2F +3625DA38DFCF381727887F5646A3995A8A38A5FB1E5D5EBB395FDD0B7C8E71AD +B48EEDB62AB2CE99D121435EFBBFCEEA69AE9ED8238B60CC7288DE33C766CDFE +15B767B4AE2E6CE0965E77272AC9F86023DA620548CFAC85BC751C44218A29C9 +849F1C2DCBDFAD895B54E51A569952ED50F82DC8A19F367E7E44643854EFD6B3 +FCAEB04E55E4661C82D31E2932611748480EF61FB2FBFB0CFB940BEA81AFCD84 +4C6A6332D7A600170E38A8EAFCD4F93DC153C43175434C86BC747348FAC61B76 +1FEC9027C1A193E55C80F1F20B5317AA0A05AAA36AE235F6E49F06E570FEE798 +84857D7552EA92EF3EFAD52DE39C2F8F43C59E3A957B7B926FC95FC4B60186DF +7F3523EE2AB74E294C8C4BCD8B4975E84849E0FBDA6C0B0F24A636DFA578B122 +CF97BC5089E21E9F5298D1C9F30CB8BAFF6A3A11BB4D9A0A5CF2B18D055C44CA +4FD4D8FE1AF3630907DE7E585AA811F9CD11FB2C8FC791851D651009FA5DF20B +3C33FD2FF848A9E3F5652BD294965A332DD3F246C91B0ADA34017FF2451D1394 +F9C3C95AAC6EC8062BE98E8914D51DA6A164AD13938693D446044859D03A949D +F9AC5DF4A000CDA98BB516D762CB9F6D44B5268FD0C26E88BC4A760C0F75A140 +DEBDECA4F511128B7D2805872160C55236F0A0FA7637FF0D4E94AC079CD3C8A7 +D03A5A56F26B0438B577C46011A10532FEBCAD14FBD6032E224F45691A726886 +56F305231EB2FCDF59C8BBFCB5DBD2D093A0E84D62AC93A2312CA69295E937C4 +8DBA1802B85F54B5E7E6D6216A918F911FF705D3B5CF055F1D873B96283A0B53 +59344D910CD396D883F6F7836BA65FAB4393A773A8F6BC298069E5BA38210EED +49C9D920F718E3FCE692527DC7CCE6963BF744F2C91BC5952564196D60574E86 +87A0FAB21F2DB2BD5A51D7FBD8FC19946D24E5A228462C4772F978E650ADCE3B +8D66B9C21279C531CA1C3A8ECE3420BB65837287A7222CC3673A2A5F8BBFDB60 +C719CD073EF9A23675198462C7C87B24CC92D6AEE5C25AC63855CC3281494342 +D28F3D2FDE0C183486769A4FD5B0143193D31FCB2C2A14E487BBD96D0BADBB64 +D1B56021C363A795BF10E2DB448261C363A54A4AC1182B470C457AA82DF3F5D1 +F4B329806141EBD53CAE309319B94133D7EBDC2D0453A905ADD207364371E178 +0A95C2686E3B34C4A978BFC0EE968C39ABA00889BC5149162C2B54483D44FD3B +5CFF41F611C7E03B94945F414560E874D7CF27FFD0630890D7D7EA66CBD15448 +229059E1C436BB33D69552B5367AB5D53591C4678D0C704DD3EA23F5D9E8A7AC +17D003C19E333E726FFFA2961F33C70F429085F7BFE3E2510F59B78F58B19CB4 +01B48E184BAD9020FECCE3AF52048A056981DAEA02AE78197E65855DDB170616 +F54278395D9EA50DC83761AE759F9CDEF9E1948E7002414FC05286ED793E6662 +3347F2A9AF8917493D7305B92CF93E8E9185F70015F5594084298A6C2F9FD3C0 +689F262AC9FEDC9B89577ECDE92F08D3142209FBCE7B5C0A840CC767BCA56C20 +4E4E545E2BE4D21C53855CEE4CD0AB35D1A604C0FFFF77DBAE4289752276559F +A05FEE65F45ECAF44E95E23FAB6052195C7948AF0B1126482D4E02D72BF8AB03 +DE0F1A632F7672AD9DDE70EDC82AA993678A82BEAD0BC2649C4707FD8509810D +364B5C6FE0E10772E95288C622C2F06C634F4DF8C7FD1432BC9310D5F24FEE3F +7AB324863D6DABAA1576E70643CA79EF4D7DF4105093D66CEE0F3B87D2164A7F +26EA05F5C4645B22D3E1BFD2219657712C168FD90DE801FB0F32759E80DEC1E1 +43CEEB19FED12D757205043FC98FEC62D6A8D8B97BC083B4A0E985AF7850D6FD +8716B9957C1C35A0675BC53DF672C425C79F43FDABAEE7D63F092CF271C9A9D7 +C41F40C4189510987887942E60A412B3EEC84C9A6E1AC7D54D528F5604B72C08 +94B7882621A5BF1F325B92FF96B80878CC550D1AE4D8196E41CB1251856609A5 +C4D3BD05A922D0D45E039D9450DEF8490A3E924E41434194910BF60BA1B08BE1 +B41824345627745541A4F1703E956328F6227D11C74946B38CFB096139979E56 +4E723B889B44C6D78673868C89912F8B4F0B4B485F1587A637B630F92E6072D5 +7F3B44EA6FD96BBD4FC28A6C1D90805E3BE3E42A7BC9C880762966C55BC04E01 +204D083AE976FAE6F37C94F27E68F8C0F28D52B17F6C0FD7C9150701FD78F8CE +B8E8DC9260E3974005EB5CA728171F482D765016C94D4ADFE4A42EF42212BC56 +7E4EEEE8B0D2A7856CD4E44F55C0BAB762F92CB8D64C17022D4BF3A47C12F5E6 +279FC23101FEE93753653CE8CEDC3B75C9CCB29BF1D4554C6120DE8EE750FCBB +E38B5D915206974962E320362E59B3F21B3AB1875703191043D03284D4467346 +CFF2F98CEB4845B73ED8E003E0DC94251B73E13A9B51A3F1430BCF6A21EB9B7A +65E17FA411F53BE6432F1506232B8159E008FA257F884A4A01AC53BE91754D78 +BF14A5B0FBFB9C31BF4908355F8A762052968DF526D118708CCB0B7CB5BEE285 +6DAB6CD2E3934178E60BECB11AAB5478623CF6C50C92F8BB5D1A583609028FA7 +B8A53B791BDC9EF76A124F3F7641857E4BEA0837CB36176EC9A522EA7F41B8D3 +63C37D1145367BD300F17B54522A834BBB74DE12BF9EB26ACE6F24A046D58F89 +4D4B7DF74875F1A0C1C9D97BE0849593D7B398EB4B00BEBC8C8D1497B6EF831A +A35380FFB7F1AFA4D888AA52C9482E8B1755CC209905F98F40D95B44D4DCBCB6 +67423D1BC2F3560FF0A8B4F0CAC352A4EE2C1D946E45AAEC8A6AD40303F3382C +DF0756BFA3B1ED64C169E56ED1C760F2FF0E24DC5C9F41306EF8D2628153D30A +5DCB0791126BEFD4947D7EF08301FE015F2B0008DFFCBF9F2D4D859FD43EC7D9 +C5BE237E9BF6665B7B1BEBB362F0C0C3A8D86010B9C97FA741C97C2E0513386C +9C26C235B14DD2A58BFDAC7B5F63DB4DA6D5D37D0098175A9071590E1DF66A3D +B8173A047C29D7D35557F06132CC920B5460B8AFC11D23D09A4E45D089F5EB51 +963FA1A6256E359D485107FD143B2BF21FDE9DA5744BC2615E86C31C89470CF0 +D06C6397D9FCCB316EA9989430240759D2C4945D941F159FC02327F34B042BAB +B5C3A47C78E8C1A6FBCD396B1A51CC4B020B8AD401841EDABACECDB482D6EC5B +72D2BFEB4556720FADD49D07307C8B22ACB7E310CA4151A85C71EEF70E8D15DE +B3B00F26E0E166C14647A65ADA228A3D1C89025BE059306565DB1B1EFC37D358 +8C1EB024254AFD049BA977BD4C2C605050E17940A89D0D4C5D963E792320F5DB +3706682E03D25D9E02487247819551465092CC22B6B56E93F3AB528038FEC3F0 +668F866707A19B0463BE706EC729D2EE1653AAC7E29BD25BFB3241D4792F5152 +ED415B4E7FA92C2EE5A22E27E8B75542C492E56D811C192E95542A6FE0BFE5A5 +69273C2ABED4300D491B92D2AECDD278404CB84B1BB1BD7AFEC858215837D118 +C0E928BE7E07CFEEB51A6D21375B772B8248C994564014015232A0DA4BEA1754 +3274F407FED0837A236371F1A32056240F2015B1E7F4B2CA72C6B58610A66F13 +407CFFBA5E0A2893C1F572D50F51286E9133B5A84239C9493B0574E77D281D01 +11D00683354A000C9700EAFBC1FD104EA19DFCB87470190E7E2CE26E3A6FD0FF +2620B87B82AC8686B6206B530F17E9348BC7D04B948348802CE53A312443DB87 +4DBBA5313A6A2A8DAB8A1CC9A594FF8C299281C0A261C8CB2226B732FBEEDE40 +2C6ACC74A1A61379E2E1CD5548CD908268A32FA83D8504C442EA0E183ADBF7FF +9FD09C037AB03516ECCA93FF048235BD11A25DB07F164512A079C5392AC7F889 +CE96AE5C8D9580BCAFCC087C35E76EED1A671E87C12E3045E15A687134736DF8 +DA984772AFD189D68571A2ED7256F1E204230E41D3D9DD876F938951714A3973 +0CA9310489F8E807C1C7A4E51AEA5BC030610A5D7263FF7E0F9FDE3E5E37A362 +5B919000BD94D978583B942EB79CF2BEAC33FEBC9A67272EB10865BA8FB75FD7 +9D280AB59F91B96C16C982DE848D76D8FA8620DFD7C80B7DEAE7264350D6FB3A +EF04794DA3305844A7CF718F6D1A4A3AFF6826173A076A1372ABFC54ED3AC6C2 +09C9287FC830556CA694E21CA5342ECA7B10C90AFC4783D841D7B1E34FA3DB7A +2B706F3E21B0FBAB23E7257962FC3BC309CEA2C7239A9D6B44CC96825115ABD2 +AF9A2566D2F3382C01569FBDB94C8D664A5DA0F7DC3DD140CA77C743D7BC1420 +324ECF9E4780280EB119885E96A6C619CE3C0C8E1E264E2DEB137E5DC8149786 +486D65667ECF47B1A1E20E9E6E4FC8323E0BC8E61BDD3BCDFC6575C69C03E31A +EFFC290472CBBD049DE3F840AEE37A2486034240F80E75D8A79E0762377DF660 +52B12EAA16D678990B11A9BFBC03C1D4FCDA9FD4FFBB3E88352438102F10B7C5 +9F04C013B6575B5E948FAB58EA691984A0E54E6B9F3F505FFFEF74D06FA1CDF3 +4B8A95904C8A2763AA8AF5B71D00F5DE09DC1CDF87A08B6D181453063E14C12D +B7BB3775A6E2A901636273D9EEB833EA8CF20FD83AE899E28DADE10EEEC20BD7 +BD93085A4B1AC80AC1AE8280C14767F1A487BD066007A0D050317BD081131A14 +6EA0898ED59E46DA7B6254BDCCBC660686E2EDA0E77A705A653733BB5C5497D0 +B130359F866CF293FB6EF0C2AC5BAA2DB0DED045E2DED3A2612D078333260359 +16CF0CCB272D34767EA069E0F0B0D42327A18529D72E890EDA6195C2688438ED +E9ACDBEED41E81CA8EB5E43C2B09CE266EFCA03F2D7FF57F12B06F9E54FCC6A6 +546676F6FFC5B8B7D3F0982B6FF0D21D949309F0C0B175CC1D0976F8C55C6AED +6E821C39041E22D91AB30922F2B2EC2746BC7DAB484991542FBC82D87B487507 +559AB466F73EE23C2D3194DC5CE4C9AE66D3164613AC5CBB3DB501B64DA7C91B +C7ED2EE9027FC0906820B35D4F2CF66C4F9CE4A884B7C07155BCA884ECA5EB3A +ABB83F84DB1F5639599DC7D3F51241AB5D95C3BCB7AB1EC90B4BC989F74FB354 +04B2D7366A34D335A47B8C00C05CB423482BF6C7970A95545424A08AFF9A035B +7F83F52B65A9799CE76E303B85664B624C65E9CA58184C7BE2BB9D9C86A4DE5A +8165EE3DA2E652B5022EE7893896BABD88931DE1D538F615787645DF5ACBBA0B +A8E5B899A37321AA7D4B283AC9234978C2DD81813A1EE5DB6EC170DAC1B6EF02 +94892635B498765C07A38D2E9DB0B7581B11056C28278F89B0E60998379C07EB +C0EAEDC32AA69B8B836F92A61AFD35688315B2C3F860632FC13E4BDFB63214BC +41CC6859EAB3AC3034449213CAB99FA1D216563419CD6D6CE4E1B56F33E6C654 +7AA9DCB5B05FC068DF02AC32408C8010AD004F6CCA9887830927F8CBCD49CDB5 +18CAC1EAFF815FF2F6F527F936948201565003022C6C7390B4E3C2B219FB4F76 +9F12BD25CA7B3B61D1A2F8DFEE795D04D5428B42FB66E0C254AF7B7A10CEF7FD +E5ADA5E217BE24851180E9A1700FBA66C7D2B0D7BFDE4F4EED1D24B821A40947 +5620363657F6D048E651A689822CF815E72FC8AE9D835BE31D1DD8B54C9A717F +4DC319B4B59AE073936EA40B070524C7E71D5A7B64436DA107749746B516E29F +E3BBCB8F8C473E706670E11E5B221716F315FF097CD1841D0069FA69EA1898FF +9F9EC2518C77806A19730C97F54BEAD604548D553D4A6EDB247853225E24E7E9 +89D71F6BC94DB986467E755CCC99069B313F5745B02B4BB608A39F0A0A732B87 +7EA2DED68219754BF1FBCA350327572D769C962EF9242132D93A5C8E9725D8D3 +AAAEC15ED0F362471AA58488620156F3474FA59CA080EA96FE995D2B3DEEADF3 +3141D157481C66507725ACA5953CBBE1ACEE7E3F02C72C6552D15EB3D612730E +61A06A43575568DC3CF3844BABF04CA767E2995196097015E0C4F622C4356B6B +F41DBAFD797A4B9D7AC22332C552043EF98913D0D9B50CA6B7CDAF903BC5C04F +D20A952BA5CC35B646ACD0A287C956B98C450051AF6AAF79DF37F8954473F8F6 +652BF03AE2AE82B99D820CF93F5FC0BA17EBD7AF90313E70594EB5C354023BFA +07912408F1757319C7288E99872B907D5AB583B082EEED8AB079C63E38B07D11 +6744856E689A479CB3A8BC081F33CB06755926204981DC0A45B3ACC18F6865BB +EE2C50DB43B62E3630FC1D9B1FFB3BFFAA6D0A20C0381ADF48E4D916BEE85BA2 +BB40F538F55C11D50F882B73913840B45161262BC8B0012694C3EF26452F9B77 +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 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +{restore}if +%%EndFont TeXDict begin 40258431 52099146 1000 600 600 (history.dvi) @start /Fa 197[21 58[{}1 74.7198 /CMMI9 rf /Fb 134[41 41 1[41 1[30 30 30 1[43 38 43 4[21 43 38 1[34 43 34 1[38 13[43 10[58 14[38 1[38 5[38 38 48[{}22 74.7198 /CMR9 rf /Fc 134[39 3[39 39 39 39 2[39 39 39 39 2[39 39 2[39 -3[39 97[{}13 74.7198 /CMSLTT10 rf /Fd 167[62 3[60 46 -2[57 1[62 76 52 1[43 1[62 65 54 1[63 60 67[{}13 83.022 -/CMR10 rf /Fe 130[39 39 39 39 39 39 39 39 39 39 39 39 -39 39 39 39 39 39 39 1[39 39 39 39 39 39 39 39 39 39 -39 1[39 39 39 1[39 2[39 39 39 39 39 1[39 1[39 1[39 2[39 -39 39 39 39 39 39 39 39 2[39 39 39 39 39 3[39 1[39 39 -39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 -33[{}77 74.7198 /CMTT9 rf /Ff 134[53 53 72 53 55 39 39 -39 53 55 50 55 83 28 2[28 55 50 30 44 55 44 1[50 7[75 -4[72 55 73 2[77 75 4[36 75 2[68 3[75 20[28 1[50 29[55 -58 11[{}36 99.6264 /CMSL10 rf /Fg 214[35 35 40[{}2 90.9091 -/CMSS10 rf /Fh 133[52 52 52 52 52 52 52 52 52 52 52 52 -52 52 52 52 1[52 52 52 52 52 52 52 52 52 1[52 5[52 4[52 -52 52 2[52 52 4[52 52 2[52 3[52 22[52 42[{}37 99.6264 -/CMTT10 rf /Fi 134[48 48 48 1[48 48 48 48 2[48 48 1[48 -2[48 1[48 48 48 48 49[48 48 49[{}17 90.9091 /CMSLTT10 -rf /Fj 133[55 65 65 1[65 68 48 48 50 1[68 61 68 102 34 -2[34 68 61 37 56 68 55 68 60 9[127 3[68 5[116 74 2[46 -96 1[77 81 94 2[93 9[61 61 61 61 61 61 61 2[34 33[68 -12[{}41 109.091 /CMBX12 rf /Fk 134[48 48 66 48 51 35 -36 36 48 51 45 51 76 25 48 1[25 51 45 28 40 51 40 51 -45 3[25 1[25 40[45 45 6[45 29[51 53 11[{}31 90.9091 /CMSL10 -rf /Fl 138[56 1[42 4[56 4[27 1[58 3[54 1[56 97[{}7 90.9091 -/CMCSC10 rf /Fm 134[85 85 117 85 90 63 64 66 1[90 81 -90 134 45 2[45 90 81 49 74 90 72 90 78 10[122 124 112 -3[110 1[126 1[97 2[60 126 127 101 1[124 117 115 122 14[81 -81 49[{}38 143.462 /CMBX12 rf /Fn 242[91 13[{}1 90.9091 -/CMSY10 rf /Fo 134[71 71 97 71 75 52 53 55 1[75 67 75 -112 37 2[37 75 67 41 61 75 60 75 65 9[139 102 103 1[75 -100 1[92 1[105 128 81 2[50 105 1[85 88 103 97 96 102 -6[37 4[67 67 67 67 67 2[37 1[37 44[{}47 119.552 /CMBX12 -rf /Fp 129[48 48 48 48 48 48 48 48 48 48 48 48 48 1[48 -48 48 48 48 48 1[48 48 48 48 48 48 48 48 48 1[48 48 48 -48 48 1[48 3[48 48 48 48 1[48 48 48 1[48 2[48 48 48 48 -48 48 2[48 1[48 48 48 48 48 48 7[48 48 48 48 48 48 1[48 -48 48 48 48 48 48 48 48 48 48 33[{}72 90.9091 /CMTT10 -rf /Fq 131[91 45 40 48 48 66 48 51 35 36 36 48 51 45 -51 76 25 48 28 25 51 45 28 40 51 40 51 45 25 2[25 45 -25 56 68 68 93 68 68 66 51 67 71 62 71 68 83 57 71 47 -33 68 71 59 62 69 66 64 68 1[43 3[25 25 45 45 45 45 45 -45 45 45 45 45 45 25 30 25 2[35 35 25 4[45 25 18[76 51 -51 53 11[{}84 90.9091 /CMR10 rf /Fr 134[102 4[75 76 79 -2[97 5[54 6[108 94 11[149 6[151 1[116 3[151 152 71[{}13 -172.154 /CMBX12 rf end +3[39 97[{}13 74.7198 /CMSLTT10 rf /Fd 130[39 39 39 39 +39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 1[39 39 +39 39 39 39 39 39 39 39 39 1[39 39 39 1[39 2[39 39 39 +39 39 1[39 1[39 1[39 2[39 39 39 39 39 39 39 39 39 2[39 +39 39 39 39 3[39 1[39 39 39 39 39 39 39 39 39 39 39 39 +39 39 39 39 39 39 39 39 33[{}77 74.7198 /CMTT9 rf /Fe +134[53 53 72 53 55 39 39 39 53 55 50 55 83 28 2[28 55 +50 30 44 55 44 1[50 7[75 4[72 55 73 2[77 75 4[36 75 2[68 +3[75 20[28 1[50 29[55 58 11[{}36 99.6264 /CMSL10 rf /Ff +214[35 35 40[{}2 90.9091 /CMSS10 rf /Fg 133[52 52 52 +52 52 52 52 52 52 52 52 52 52 52 52 52 1[52 52 52 52 +52 52 52 52 52 1[52 5[52 4[52 52 52 2[52 52 4[52 52 2[52 +3[52 22[52 42[{}37 99.6264 /CMTT10 rf /Fh 134[48 48 48 +1[48 48 48 48 2[48 48 1[48 2[48 1[48 48 48 48 49[48 48 +49[{}17 90.9091 /CMSLTT10 rf /Fi 133[55 65 65 1[65 68 +48 48 50 1[68 61 68 102 34 2[34 68 61 37 56 68 55 68 +60 9[127 3[68 5[116 74 2[46 96 1[77 81 94 2[93 9[61 61 +61 61 61 61 61 2[34 33[68 12[{}41 109.091 /CMBX12 rf +/Fj 134[48 48 66 48 51 35 36 36 48 51 45 51 76 25 48 +1[25 51 45 28 40 51 40 51 45 3[25 1[25 40[45 45 6[45 +29[51 53 11[{}31 90.9091 /CMSL10 rf /Fk 138[56 1[42 4[56 +4[27 1[58 3[54 1[56 97[{}7 90.9091 /CMCSC10 rf /Fl 134[85 +85 117 85 90 63 64 66 1[90 81 90 134 45 2[45 90 81 49 +74 90 72 90 78 10[122 124 112 3[110 1[126 1[97 2[60 126 +127 101 1[124 117 115 122 14[81 81 49[{}38 143.462 /CMBX12 +rf /Fm 242[91 13[{}1 90.9091 /CMSY10 rf /Fn 134[71 71 +97 71 75 52 53 55 1[75 67 75 112 37 2[37 75 67 41 61 +75 60 75 65 9[139 102 103 1[75 100 1[92 1[105 128 81 +2[50 105 1[85 88 103 97 96 102 6[37 4[67 67 67 67 67 +2[37 1[37 44[{}47 119.552 /CMBX12 rf /Fo 129[48 48 48 +48 48 48 48 48 48 48 48 48 48 1[48 48 48 48 48 48 1[48 +48 48 48 48 48 48 48 48 1[48 48 48 48 48 1[48 3[48 48 +48 48 1[48 48 48 1[48 2[48 48 48 48 48 48 2[48 1[48 48 +48 48 48 48 7[48 48 48 48 48 48 1[48 48 48 48 48 48 48 +48 48 48 48 33[{}72 90.9091 /CMTT10 rf /Fp 131[91 45 +40 48 48 66 48 51 35 36 36 48 51 45 51 76 25 48 28 25 +51 45 28 40 51 40 51 45 25 2[25 45 25 56 68 68 93 68 +68 66 51 67 71 62 71 68 83 57 71 47 33 68 71 59 62 69 +66 64 68 1[43 3[25 25 45 45 45 45 45 45 45 45 45 45 45 +25 30 25 2[35 35 25 4[45 25 18[76 51 51 53 11[{}84 90.9091 +/CMR10 rf /Fq 134[102 4[75 76 79 2[97 5[54 6[108 94 11[149 +6[151 1[116 3[151 152 71[{}13 172.154 /CMBX12 rf /Fr +156[37 10[62 3[60 46 2[57 1[62 76 52 1[43 1[62 65 54 +1[63 60 67[{}14 83.022 /CMR10 rf end %%EndProlog %%BeginSetup %%Feature: *Resolution 600dpi @@ -5243,53 +5243,52 @@ ifelse end %%EndSetup %%Page: 1 1 -TeXDict begin 1 0 bop 150 1318 a Fr(GNU)65 b(History)h(Library)p -150 1418 3600 34 v 1920 1515 a Fq(Edition)31 b(8.3,)h(for)e -Fp(History)e(Library)h Fq(V)-8 b(ersion)31 b(8.3.)3139 -1623 y(No)m(v)m(em)m(b)s(er)g(2024)150 4927 y Fo(Chet)45 -b(Ramey)-11 b(,)46 b(Case)g(W)-11 b(estern)46 b(Reserv)l(e)g(Univ)l -(ersit)l(y)150 5068 y(Brian)f(F)-11 b(o)l(x,)45 b(F)-11 -b(ree)45 b(Soft)l(w)l(are)h(F)-11 b(oundation)p 150 5141 -3600 17 v eop end +TeXDict begin 1 0 bop 316 83 a Fr(c)150 1112 y Fq(GNU)65 +b(History)h(Library)p 150 1212 3600 34 v 1920 1308 a +Fp(Edition)31 b(8.3,)h(for)e Fo(History)e(Library)h Fp(V)-8 +b(ersion)31 b(8.3.)3145 1416 y(Decem)m(b)s(er)g(2024)150 +4927 y Fn(Chet)45 b(Ramey)-11 b(,)46 b(Case)g(W)-11 b(estern)46 +b(Reserv)l(e)g(Univ)l(ersit)l(y)150 5068 y(Brian)f(F)-11 +b(o)l(x,)45 b(F)-11 b(ree)45 b(Soft)l(w)l(are)h(F)-11 +b(oundation)p 150 5141 3600 17 v eop end %%Page: 2 2 -TeXDict begin 2 1 bop 150 4413 a Fq(This)44 b(do)s(cumen)m(t)i(describ) -s(es)e(the)i(GNU)f(History)h(library)f(\(v)m(ersion)h(8.3,)51 -b(29)46 b(No)m(v)m(em)m(b)s(er)g(2024\),)52 b(a)150 4523 -y(programming)32 b(to)s(ol)h(that)f(pro)m(vides)g(a)h(consisten)m(t)g -(user)e(in)m(terface)j(for)d(recalling)j(lines)e(of)g(previously)150 -4633 y(t)m(yp)s(ed)e(input.)150 4767 y(Cop)m(yrigh)m(t)602 -4764 y(c)577 4767 y Fn(\015)g Fq(1988{2024)35 b(F)-8 -b(ree)31 b(Soft)m(w)m(are)h(F)-8 b(oundation,)31 b(Inc.)390 -4902 y(P)m(ermission)21 b(is)f(gran)m(ted)h(to)g(cop)m(y)-8 -b(,)24 b(distribute)c(and/or)h(mo)s(dify)e(this)i(do)s(cumen)m(t)f -(under)f(the)390 5011 y(terms)25 b(of)h(the)f(GNU)h(F)-8 -b(ree)27 b(Do)s(cumen)m(tation)g(License,)g(V)-8 b(ersion)26 -b(1.3)g(or)f(an)m(y)h(later)g(v)m(ersion)390 5121 y(published)43 -b(b)m(y)h(the)h(F)-8 b(ree)46 b(Soft)m(w)m(are)g(F)-8 -b(oundation;)53 b(with)44 b(no)g(In)m(v)-5 b(arian)m(t)46 -b(Sections,)j(no)390 5230 y(F)-8 b(ron)m(t-Co)m(v)m(er)31 -b(T)-8 b(exts,)30 b(and)f(no)f(Bac)m(k-Co)m(v)m(er)k(T)-8 +TeXDict begin 2 1 bop 150 4413 a Fp(This)30 b(do)s(cumen)m(t)g(describ) +s(es)f(the)i(GNU)g(History)g(library)f(\(v)m(ersion)h(8.3,)h(30)f +(Decem)m(b)s(er)h(2024\),)g(a)f(pro-)150 4523 y(gramming)23 +b(to)s(ol)g(that)g(pro)m(vides)f(a)h(consisten)m(t)h(user)d(in)m +(terface)j(for)e(recalling)i(lines)f(of)f(previously)g(t)m(yp)s(ed)150 +4633 y(input.)150 4767 y(Cop)m(yrigh)m(t)602 4764 y(c)577 +4767 y Fm(\015)30 b Fp(1988{2025)35 b(F)-8 b(ree)31 b(Soft)m(w)m(are)h +(F)-8 b(oundation,)31 b(Inc.)390 4902 y(P)m(ermission)21 +b(is)f(gran)m(ted)h(to)g(cop)m(y)-8 b(,)24 b(distribute)c(and/or)h(mo)s +(dify)e(this)i(do)s(cumen)m(t)f(under)f(the)390 5011 +y(terms)25 b(of)h(the)f(GNU)h(F)-8 b(ree)27 b(Do)s(cumen)m(tation)g +(License,)g(V)-8 b(ersion)26 b(1.3)g(or)f(an)m(y)h(later)g(v)m(ersion) +390 5121 y(published)43 b(b)m(y)h(the)h(F)-8 b(ree)46 +b(Soft)m(w)m(are)g(F)-8 b(oundation;)53 b(with)44 b(no)g(In)m(v)-5 +b(arian)m(t)46 b(Sections,)j(no)390 5230 y(F)-8 b(ron)m(t-Co)m(v)m(er) +31 b(T)-8 b(exts,)30 b(and)f(no)f(Bac)m(k-Co)m(v)m(er)k(T)-8 b(exts.)41 b(A)29 b(cop)m(y)h(of)f(the)g(license)h(is)f(included)390 5340 y(in)h(the)h(section)g(en)m(titled)h(\\GNU)f(F)-8 b(ree)32 b(Do)s(cumen)m(tation)g(License".)p eop end %%Page: -1 3 -TeXDict begin -1 2 bop 3725 -116 a Fq(i)150 299 y Fm(T)-13 +TeXDict begin -1 2 bop 3725 -116 a Fp(i)150 299 y Fl(T)-13 b(able)53 b(of)h(Con)l(ten)l(ts)p eop end %%Page: 1 4 -TeXDict begin 1 3 bop 3705 -116 a Fq(1)150 299 y Fm(1)80 +TeXDict begin 1 3 bop 3705 -116 a Fp(1)150 299 y Fl(1)80 b(Using)53 b(History)g(In)l(teractiv)l(ely)150 508 y -Fq(This)42 b(c)m(hapter)h(describ)s(es)f(ho)m(w)g(to)h(use)g(the)f -Fl(gnu)h Fq(History)g(Library)e(in)m(teractiv)m(ely)-8 +Fp(This)42 b(c)m(hapter)h(describ)s(es)f(ho)m(w)g(to)h(use)g(the)f +Fk(gnu)h Fp(History)g(Library)e(in)m(teractiv)m(ely)-8 b(,)50 b(from)42 b(a)h(user's)150 618 y(standp)s(oin)m(t.)76 b(It)42 b(should)f(b)s(e)h(considered)g(a)g(user's)g(guide.)76 -b(F)-8 b(or)43 b(information)f(on)g(using)g(the)g Fl(gnu)150 -728 y Fq(History)36 b(Library)e(in)h(y)m(our)f(o)m(wn)i(programs,)g +b(F)-8 b(or)43 b(information)f(on)g(using)g(the)g Fk(gnu)150 +728 y Fp(History)36 b(Library)e(in)h(y)m(our)f(o)m(wn)i(programs,)g (see)f(Chapter)g(2)g([Programming)g(with)g(GNU)h(History],)150 -837 y(page)31 b(4.)150 1068 y Fo(1.1)68 b(History)46 -b(Expansion)150 1227 y Fq(The)f(History)h(library)e(pro)m(vides)i(a)f +837 y(page)31 b(4.)150 1068 y Fn(1.1)68 b(History)46 +b(Expansion)150 1227 y Fp(The)f(History)h(library)e(pro)m(vides)i(a)f (history)g(expansion)g(feature)h(that)g(is)f(similar)h(to)g(the)f (history)150 1337 y(expansion)d(pro)m(vided)g(b)m(y)g -Fp(csh)g Fq(\(also)h(referred)f(to)h(as)f(history)h(substitution)e +Fo(csh)g Fp(\(also)h(referred)f(to)h(as)f(history)h(substitution)e (where)h(appropriate\).)150 1447 y(This)30 b(section)h(describ)s(es)f (the)g(syn)m(tax)h(used)f(to)h(manipulate)g(the)f(history)h (information.)275 1576 y(History)g(expansions)f(in)m(tro)s(duce)g(w)m @@ -5304,22 +5303,22 @@ b(The)32 b(\014rst)g(is)h(to)g(determine)f(whic)m(h)h(en)m(try)f(from) (substitution.)40 b(The)28 b(second)h(is)g(to)h(select)g(p)s(ortions)e (of)h(that)150 2144 y(en)m(try)i(to)g(include)f(in)m(to)h(the)g(curren) m(t)f(one.)275 2274 y(The)k(en)m(try)h(selected)h(from)e(the)h(history) -g(is)f(called)i(the)f Fk(ev)m(en)m(t)p Fq(,)j(and)c(the)g(p)s(ortions)h +g(is)f(called)i(the)f Fj(ev)m(en)m(t)p Fp(,)j(and)c(the)g(p)s(ortions)h (of)f(that)i(en)m(try)150 2383 y(that)d(are)g(acted)g(up)s(on)e(are)i -Fk(w)m(ords)p Fq(.)46 b(V)-8 b(arious)33 b Fk(mo)s(di\014ers)i -Fq(are)d(a)m(v)-5 b(ailable)35 b(to)e(manipulate)g(the)f(selected)150 +Fj(w)m(ords)p Fp(.)46 b(V)-8 b(arious)33 b Fj(mo)s(di\014ers)i +Fp(are)d(a)m(v)-5 b(ailable)35 b(to)e(manipulate)g(the)f(selected)150 2493 y(w)m(ords.)38 b(The)24 b(en)m(try)h(is)g(split)g(in)m(to)g(w)m (ords)f(in)h(the)g(same)g(fashion)f(that)h(Bash)g(do)s(es)f(when)g (reading)h(input,)150 2602 y(so)k(that)h(sev)m(eral)g(w)m(ords)f (surrounded)d(b)m(y)j(quotes)h(are)f(considered)g(one)g(w)m(ord.)40 -b(The)29 b Fk(ev)m(en)m(t)h(designator)150 2712 y Fq(selects)37 -b(the)f(ev)m(en)m(t,)j(the)d(optional)h Fk(w)m(ord)f(designator)43 -b Fq(selects)37 b(w)m(ords)e(from)h(the)g(ev)m(en)m(t,)j(and)c(v)-5 -b(arious)150 2822 y(optional)32 b Fk(mo)s(di\014ers)g -Fq(are)f(a)m(v)-5 b(ailable)33 b(to)e(manipulate)g(the)f(selected)i(w)m +b(The)29 b Fj(ev)m(en)m(t)h(designator)150 2712 y Fp(selects)37 +b(the)f(ev)m(en)m(t,)j(the)d(optional)h Fj(w)m(ord)f(designator)43 +b Fp(selects)37 b(w)m(ords)e(from)h(the)g(ev)m(en)m(t,)j(and)c(v)-5 +b(arious)150 2822 y(optional)32 b Fj(mo)s(di\014ers)g +Fp(are)f(a)m(v)-5 b(ailable)33 b(to)e(manipulate)g(the)f(selected)i(w)m (ords.)275 2951 y(History)26 b(expansions)f(are)h(in)m(tro)s(duced)f(b) m(y)g(the)g(app)s(earance)h(of)g(the)f(history)h(expansion)f(c)m -(haracter,)150 3061 y(whic)m(h)31 b(is)g(`)p Fp(!)p Fq(')h(b)m(y)f +(haracter,)150 3061 y(whic)m(h)31 b(is)g(`)p Fo(!)p Fp(')h(b)m(y)f (default.)43 b(History)32 b(expansions)f(ma)m(y)g(app)s(ear)g(an)m (ywhere)g(in)g(the)g(input,)g(but)g(do)g(not)150 3170 y(nest.)275 3300 y(History)26 b(expansion)g(implemen)m(ts)h(shell-lik)m @@ -5335,18 +5334,18 @@ f(b)s(e)f(sub)5 b(ject)31 b(to)h(history)f(expansion,)g(since)g(bac)m (are)g(not)f(treated)i(sp)s(ecially)f(within)150 3848 y(double)g(quotes.)275 3977 y(There)25 b(is)h(a)h(sp)s(ecial)f (abbreviation)h(for)f(substitution,)g(activ)m(e)j(when)c(the)h -Fk(quic)m(k)h(substitution)e Fq(c)m(har-)150 4087 y(acter)k(\(default)f -(`)p Fp(^)p Fq('\))h(is)f(the)g(\014rst)f(c)m(haracter)i(on)f(the)g +Fj(quic)m(k)h(substitution)e Fp(c)m(har-)150 4087 y(acter)k(\(default)f +(`)p Fo(^)p Fp('\))h(is)f(the)g(\014rst)f(c)m(haracter)i(on)f(the)g (line.)40 b(It)28 b(selects)h(the)f(previous)g(history)g(list)g(en)m (try)-8 b(,)150 4197 y(using)34 b(an)g(ev)m(en)m(t)h(designator)g -(equiv)-5 b(alen)m(t)36 b(to)f Fp(!!)p Fq(,)f(and)g(substitutes)g(one)g +(equiv)-5 b(alen)m(t)36 b(to)f Fo(!!)p Fp(,)f(and)g(substitutes)g(one)g (string)g(for)g(another)h(in)e(that)150 4306 y(en)m(try)-8 b(.)40 b(It)27 b(is)g(describ)s(ed)f(b)s(elo)m(w)h(\(see)g(Section)h (1.1.1)h([Ev)m(en)m(t)f(Designators],)h(page)f(1\).)40 b(This)26 b(is)h(the)g(only)150 4416 y(history)j(expansion)h(that)g(do) s(es)f(not)g(b)s(egin)g(with)g(the)h(history)f(expansion)g(c)m -(haracter.)150 4605 y Fj(1.1.1)63 b(Ev)m(en)m(t)39 b(Designators)150 -4752 y Fq(An)g(ev)m(en)m(t)i(designator)f(is)g(a)g(reference)f(to)i(an) +(haracter.)150 4605 y Fi(1.1.1)63 b(Ev)m(en)m(t)39 b(Designators)150 +4752 y Fp(An)g(ev)m(en)m(t)i(designator)f(is)g(a)g(reference)f(to)i(an) e(en)m(try)h(in)f(the)g(history)h(list.)68 b(The)39 b(ev)m(en)m(t)i (designator)150 4862 y(consists)f(of)g(the)f(p)s(ortion)h(of)f(the)h(w) m(ord)f(b)s(eginning)g(with)g(the)h(history)f(expansion)h(c)m @@ -5354,156 +5353,158 @@ m(ord)f(b)s(eginning)g(with)g(the)h(history)f(expansion)h(c)m i(if)e(one)h(is)g(presen)m(t,)j(or)c(the)h(end)f(of)h(the)f(w)m(ord.)77 b(Unless)43 b(the)150 5081 y(reference)31 b(is)f(absolute,)i(ev)m(en)m (ts)f(are)g(relativ)m(e)i(to)e(the)f(curren)m(t)g(p)s(osition)h(in)f -(the)h(history)f(list.)150 5230 y Fp(!)432 b Fq(Start)34 +(the)h(history)f(list.)150 5230 y Fo(!)432 b Fp(Start)34 b(a)f(history)h(substitution,)g(except)g(when)f(follo)m(w)m(ed)i(b)m(y) e(a)h(space,)h(tab,)f(the)g(end)f(of)630 5340 y(the)e(line,)g(or)f(`)p -Fp(=)p Fq('.)p eop end +Fo(=)p Fp('.)p eop end %%Page: 2 5 -TeXDict begin 2 4 bop 150 -116 a Fq(Chapter)30 b(1:)41 +TeXDict begin 2 4 bop 150 -116 a Fp(Chapter)30 b(1:)41 b(Using)30 b(History)h(In)m(teractiv)m(ely)2016 b(2)150 -299 y Fp(!)p Fi(n)384 b Fq(Refer)30 b(to)i(history)e(list)h(en)m(try)f -Fk(n)p Fq(.)150 457 y Fp(!-)p Fi(n)336 b Fq(Refer)30 -b(to)i(the)e(history)g(en)m(try)h(min)m(us)f Fk(n)p Fq(.)150 -615 y Fp(!!)384 b Fq(Refer)30 b(to)i(the)e(previous)g(en)m(try)-8 -b(.)41 b(This)30 b(is)g(a)h(synon)m(ym)f(for)g(`)p Fp(!-1)p -Fq('.)150 773 y Fp(!)p Fi(string)144 b Fq(Refer)25 b(to)h(the)f(most)h +299 y Fo(!)p Fh(n)384 b Fp(Refer)30 b(to)i(history)e(list)h(en)m(try)f +Fj(n)p Fp(.)150 450 y Fo(!-)p Fh(n)336 b Fp(Refer)30 +b(to)i(the)e(history)g(en)m(try)h(min)m(us)f Fj(n)p Fp(.)150 +602 y Fo(!!)384 b Fp(Refer)30 b(to)i(the)e(previous)g(en)m(try)-8 +b(.)41 b(This)30 b(is)g(a)h(synon)m(ym)f(for)g(`)p Fo(!-1)p +Fp('.)150 753 y Fo(!)p Fh(string)144 b Fp(Refer)25 b(to)h(the)f(most)h (recen)m(t)g(command)f(preceding)g(the)g(curren)m(t)g(p)s(osition)g(in) -g(the)g(history)630 883 y(list)31 b(starting)g(with)f -Fk(string)p Fq(.)150 1041 y Fp(!?)p Fi(string)p Fp([?])630 -1150 y Fq(Refer)25 b(to)h(the)f(most)h(recen)m(t)g(command)f(preceding) +g(the)g(history)630 863 y(list)31 b(starting)g(with)f +Fj(string)p Fp(.)150 1014 y Fo(!?)p Fh(string)p Fo([?])630 +1124 y Fp(Refer)25 b(to)h(the)f(most)h(recen)m(t)g(command)f(preceding) g(the)g(curren)m(t)g(p)s(osition)g(in)g(the)g(history)630 -1260 y(list)32 b(con)m(taining)i Fk(string)p Fq(.)45 -b(The)31 b(trailing)i(`)p Fp(?)p Fq(')f(ma)m(y)g(b)s(e)f(omitted)i(if)f -(the)g Fk(string)39 b Fq(is)32 b(follo)m(w)m(ed)630 1369 +1233 y(list)32 b(con)m(taining)i Fj(string)p Fp(.)45 +b(The)31 b(trailing)i(`)p Fo(?)p Fp(')f(ma)m(y)g(b)s(e)f(omitted)i(if)f +(the)g Fj(string)39 b Fp(is)32 b(follo)m(w)m(ed)630 1343 y(immediately)39 b(b)m(y)f(a)g(newline.)63 b(If)37 b -Fk(string)45 b Fq(is)38 b(missing,)i(this)e(uses)f(the)h(string)f(from) -h(the)630 1479 y(most)31 b(recen)m(t)g(searc)m(h;)g(it)g(is)g(an)f +Fj(string)45 b Fp(is)38 b(missing,)i(this)e(uses)f(the)h(string)f(from) +h(the)630 1452 y(most)31 b(recen)m(t)g(searc)m(h;)g(it)g(is)g(an)f (error)g(if)g(there)h(is)f(no)h(previous)e(searc)m(h)i(string.)150 -1637 y Fp(^)p Fi(string1)p Fp(^)p Fi(string2)p Fp(^)630 -1747 y Fq(Quic)m(k)h(Substitution.)44 b(Rep)s(eat)32 -b(the)g(last)h(command,)f(replacing)g Fk(string1)40 b -Fq(with)31 b Fk(string2)p Fq(.)630 1856 y(Equiv)-5 b(alen)m(t)31 -b(to)g Fp(!!:s^)p Fi(string1)p Fp(^)p Fi(string2)p Fp(^)p -Fq(.)150 2014 y Fp(!#)384 b Fq(The)30 b(en)m(tire)h(command)f(line)h(t) -m(yp)s(ed)f(so)h(far.)150 2212 y Fj(1.1.2)63 b(W)-10 -b(ord)41 b(Designators)150 2359 y Fq(W)-8 b(ord)28 b(designators)h(are) +1604 y Fo(^)p Fh(string1)p Fo(^)p Fh(string2)p Fo(^)630 +1713 y Fp(Quic)m(k)h(Substitution.)44 b(Rep)s(eat)32 +b(the)g(last)h(command,)f(replacing)g Fj(string1)40 b +Fp(with)31 b Fj(string2)p Fp(.)630 1823 y(Equiv)-5 b(alen)m(t)31 +b(to)g Fo(!!:s^)p Fh(string1)p Fo(^)p Fh(string2)p Fo(^)p +Fp(.)150 1974 y Fo(!#)384 b Fp(The)30 b(en)m(tire)h(command)f(line)h(t) +m(yp)s(ed)f(so)h(far.)150 2166 y Fi(1.1.2)63 b(W)-10 +b(ord)41 b(Designators)150 2313 y Fp(W)-8 b(ord)28 b(designators)h(are) f(used)f(to)i(select)h(desired)d(w)m(ords)h(from)f(the)h(ev)m(en)m(t.) -42 b(They)27 b(are)i(optional;)h(if)e(the)150 2469 y(w)m(ord)h +42 b(They)27 b(are)i(optional;)h(if)e(the)150 2422 y(w)m(ord)h (designator)i(isn't)e(supplied,)g(the)h(history)g(expansion)f(uses)g -(the)h(en)m(tire)h(ev)m(en)m(t.)42 b(A)29 b(`)p Fp(:)p -Fq(')h(separates)150 2578 y(the)f(ev)m(en)m(t)i(sp)s(eci\014cation)e +(the)h(en)m(tire)h(ev)m(en)m(t.)42 b(A)29 b(`)p Fo(:)p +Fp(')h(separates)150 2532 y(the)f(ev)m(en)m(t)i(sp)s(eci\014cation)e (from)g(the)g(w)m(ord)g(designator.)41 b(It)29 b(ma)m(y)g(b)s(e)g -(omitted)h(if)e(the)i(w)m(ord)e(designator)150 2688 y(b)s(egins)33 -b(with)h(a)h(`)p Fp(^)p Fq(',)g(`)p Fp($)p Fq(',)g(`)p -Fp(*)p Fq(',)h(`)p Fp(-)p Fq(',)f(or)f(`)p Fp(\045)p -Fq('.)52 b(W)-8 b(ords)35 b(are)f(n)m(um)m(b)s(ered)f(from)g(the)i(b)s -(eginning)e(of)h(the)g(line,)150 2797 y(with)39 b(the)h(\014rst)f(w)m -(ord)g(b)s(eing)g(denoted)h(b)m(y)g(0)g(\(zero\).)70 -b(W)-8 b(ords)39 b(are)h(inserted)g(in)m(to)g(the)g(curren)m(t)g(line) -150 2907 y(separated)31 b(b)m(y)f(single)h(spaces.)275 -3041 y(F)-8 b(or)31 b(example,)150 3199 y Fp(!!)384 b -Fq(designates)37 b(the)f(preceding)g(command.)57 b(When)35 -b(y)m(ou)i(t)m(yp)s(e)f(this,)h(the)f(preceding)g(com-)630 -3309 y(mand)30 b(is)g(rep)s(eated)g(in)g(toto.)150 3467 -y Fp(!!:$)288 b Fq(designates)23 b(the)g(last)g(argumen)m(t)g(of)f(the) -h(preceding)f(command.)38 b(This)22 b(ma)m(y)h(b)s(e)e(shortened)630 -3576 y(to)31 b Fp(!$)p Fq(.)150 3734 y Fp(!fi:2)240 b -Fq(designates)30 b(the)g(second)f(argumen)m(t)h(of)f(the)h(most)f -(recen)m(t)i(command)e(starting)h(with)f(the)630 3844 -y(letters)j Fp(fi)p Fq(.)275 4002 y(Here)e(are)h(the)g(w)m(ord)f -(designators:)150 4160 y Fp(0)g(\(zero\))114 b Fq(The)24 -b Fp(0)p Fq(th)g(w)m(ord.)38 b(F)-8 b(or)25 b(the)g(shell,)h(and)d(man) -m(y)i(other,)h(applications,)h(this)d(is)h(the)f(command)630 -4269 y(w)m(ord.)150 4427 y Fi(n)432 b Fq(The)30 b Fk(n)p -Fq(th)g(w)m(ord.)150 4586 y Fp(^)432 b Fq(The)30 b(\014rst)f(argumen)m -(t:)42 b(w)m(ord)30 b(1.)150 4744 y Fp($)432 b Fq(The)36 -b(last)i(w)m(ord.)59 b(This)36 b(is)h(usually)f(the)h(last)g(argumen)m -(t,)i(but)d(expands)g(to)h(the)g(zeroth)630 4853 y(w)m(ord)30 -b(if)g(there)h(is)f(only)h(one)f(w)m(ord)g(in)h(the)f(line.)150 -5011 y Fp(\045)432 b Fq(The)40 b(\014rst)h(w)m(ord)f(matc)m(hed)i(b)m -(y)f(the)g(most)g(recen)m(t)h(`)p Fp(?)p Fi(string)p -Fp(?)p Fq(')d(searc)m(h,)44 b(if)d(the)g(searc)m(h)630 -5121 y(string)25 b(b)s(egins)g(with)g(a)h(c)m(haracter)h(that)f(is)g -(part)f(of)h(a)g(w)m(ord.)38 b(By)26 b(default,)h(searc)m(hes)f(b)s -(egin)630 5230 y(at)j(the)e(end)h(of)g(eac)m(h)h(line)f(and)f(pro)s -(ceed)g(to)i(the)f(b)s(eginning,)g(so)g(the)g(\014rst)f(w)m(ord)g(matc) -m(hed)630 5340 y(is)j(the)h(one)g(closest)h(to)f(the)f(end)g(of)g(the)h -(line.)p eop end +(omitted)h(if)e(the)i(w)m(ord)e(designator)150 2641 y(b)s(egins)33 +b(with)h(a)h(`)p Fo(^)p Fp(',)g(`)p Fo($)p Fp(',)g(`)p +Fo(*)p Fp(',)h(`)p Fo(-)p Fp(',)f(or)f(`)p Fo(\045)p +Fp('.)52 b(W)-8 b(ords)35 b(are)f(n)m(um)m(b)s(ered)f(from)g(the)i(b)s +(eginning)e(of)h(the)g(line,)150 2751 y(with)39 b(the)h(\014rst)e(w)m +(ord)h(b)s(eing)g(denoted)g(b)m(y)h(0)f(\(zero\).)69 +b(That)40 b(\014rst)e(w)m(ord)h(is)h(usually)f(the)g(command)150 +2861 y(w)m(ord,)31 b(and)f(the)h(argumen)m(ts)g(b)s(egin)f(with)g(the)h +(second)g(w)m(ord.)41 b(W)-8 b(ords)31 b(are)g(inserted)g(in)m(to)g +(the)g(curren)m(t)150 2970 y(line)g(separated)g(b)m(y)f(single)h +(spaces.)275 3101 y(F)-8 b(or)31 b(example,)150 3252 +y Fo(!!)384 b Fp(designates)37 b(the)f(preceding)g(command.)57 +b(When)35 b(y)m(ou)i(t)m(yp)s(e)f(this,)h(the)f(preceding)g(com-)630 +3362 y(mand)30 b(is)g(rep)s(eated)g(in)g(toto.)150 3513 +y Fo(!!:$)288 b Fp(designates)30 b(the)g(last)g(w)m(ord)f(of)g(the)h +(preceding)f(command.)40 b(This)29 b(ma)m(y)h(b)s(e)e(shortened)h(to) +630 3623 y Fo(!$)p Fp(.)150 3774 y Fo(!fi:2)240 b Fp(designates)30 +b(the)g(second)f(argumen)m(t)h(of)f(the)h(most)f(recen)m(t)i(command)e +(starting)h(with)f(the)630 3884 y(letters)j Fo(fi)p Fp(.)275 +4035 y(Here)e(are)h(the)g(w)m(ord)f(designators:)150 +4186 y Fo(0)g(\(zero\))114 b Fp(The)24 b Fo(0)p Fp(th)g(w)m(ord.)38 +b(F)-8 b(or)25 b(the)g(shell,)h(and)d(man)m(y)i(other,)h(applications,) +h(this)d(is)h(the)f(command)630 4296 y(w)m(ord.)150 4447 +y Fh(n)432 b Fp(The)30 b Fj(n)p Fp(th)g(w)m(ord.)150 +4599 y Fo(^)432 b Fp(The)30 b(\014rst)f(argumen)m(t:)42 +b(w)m(ord)30 b(1.)150 4750 y Fo($)432 b Fp(The)36 b(last)i(w)m(ord.)59 +b(This)36 b(is)h(usually)f(the)h(last)g(argumen)m(t,)i(but)d(expands)g +(to)h(the)g(zeroth)630 4860 y(w)m(ord)30 b(if)g(there)h(is)f(only)h +(one)f(w)m(ord)g(in)h(the)f(line.)150 5011 y Fo(\045)432 +b Fp(The)40 b(\014rst)h(w)m(ord)f(matc)m(hed)i(b)m(y)f(the)g(most)g +(recen)m(t)h(`)p Fo(?)p Fh(string)p Fo(?)p Fp(')d(searc)m(h,)44 +b(if)d(the)g(searc)m(h)630 5121 y(string)25 b(b)s(egins)g(with)g(a)h(c) +m(haracter)h(that)f(is)g(part)f(of)h(a)g(w)m(ord.)38 +b(By)26 b(default,)h(searc)m(hes)f(b)s(egin)630 5230 +y(at)j(the)e(end)h(of)g(eac)m(h)h(line)f(and)f(pro)s(ceed)g(to)i(the)f +(b)s(eginning,)g(so)g(the)g(\014rst)f(w)m(ord)g(matc)m(hed)630 +5340 y(is)j(the)h(one)g(closest)h(to)f(the)f(end)g(of)g(the)h(line.)p +eop end %%Page: 3 6 -TeXDict begin 3 5 bop 150 -116 a Fq(Chapter)30 b(1:)41 +TeXDict begin 3 5 bop 150 -116 a Fp(Chapter)30 b(1:)41 b(Using)30 b(History)h(In)m(teractiv)m(ely)2016 b(3)150 -299 y Fi(x)p Fp(-)p Fi(y)336 b Fq(A)30 b(range)h(of)g(w)m(ords;)f(`)p -Fp(-)p Fi(y)p Fq(')g(abbreviates)h(`)p Fp(0-)p Fi(y)p -Fq('.)150 458 y Fp(*)432 b Fq(All)28 b(of)g(the)g(w)m(ords,)g(except)h -(the)e Fp(0)p Fq(th.)40 b(This)27 b(is)g(a)h(synon)m(ym)f(for)h(`)p -Fp(1-$)p Fq('.)39 b(It)28 b(is)g(not)g(an)f(error)630 -568 y(to)k(use)f(`)p Fp(*)p Fq(')h(if)f(there)h(is)f(just)g(one)h(w)m +299 y Fh(x)p Fo(-)p Fh(y)336 b Fp(A)30 b(range)h(of)g(w)m(ords;)f(`)p +Fo(-)p Fh(y)p Fp(')g(abbreviates)h(`)p Fo(0-)p Fh(y)p +Fp('.)150 458 y Fo(*)432 b Fp(All)28 b(of)g(the)g(w)m(ords,)g(except)h +(the)e Fo(0)p Fp(th.)40 b(This)27 b(is)g(a)h(synon)m(ym)f(for)h(`)p +Fo(1-$)p Fp('.)39 b(It)28 b(is)g(not)g(an)f(error)630 +568 y(to)k(use)f(`)p Fo(*)p Fp(')h(if)f(there)h(is)f(just)g(one)h(w)m (ord)f(in)g(the)h(ev)m(en)m(t;)h(it)f(expands)e(to)j(the)e(empt)m(y)h -(string)630 677 y(in)f(that)h(case.)150 837 y Fi(x)p -Fp(*)384 b Fq(Abbreviates)31 b(`)p Fi(x)p Fp(-$)p Fq('.)150 -996 y Fi(x)p Fp(-)384 b Fq(Abbreviates)27 b(`)p Fi(x)p -Fp(-$)p Fq(')g(lik)m(e)h(`)p Fi(x)p Fp(*)p Fq(',)g(but)e(omits)i(the)f -(last)h(w)m(ord.)39 b(If)27 b(`)p Fp(x)p Fq(')g(is)g(missing,)g(it)h +(string)630 677 y(in)f(that)h(case.)150 837 y Fh(x)p +Fo(*)384 b Fp(Abbreviates)31 b(`)p Fh(x)p Fo(-$)p Fp('.)150 +996 y Fh(x)p Fo(-)384 b Fp(Abbreviates)27 b(`)p Fh(x)p +Fo(-$)p Fp(')g(lik)m(e)h(`)p Fh(x)p Fo(*)p Fp(',)g(but)e(omits)i(the)f +(last)h(w)m(ord.)39 b(If)27 b(`)p Fo(x)p Fp(')g(is)g(missing,)g(it)h (defaults)630 1106 y(to)j(0.)275 1265 y(If)i(a)h(w)m(ord)g(designator)g (is)g(supplied)f(without)h(an)g(ev)m(en)m(t)h(sp)s(eci\014cation,)h (the)e(previous)f(command)150 1375 y(is)d(used)g(as)h(the)f(ev)m(en)m -(t,)i(equiv)-5 b(alen)m(t)32 b(to)f Fp(!!)p Fq(.)150 -1574 y Fj(1.1.3)63 b(Mo)s(di\014ers)150 1721 y Fq(After)29 +(t,)i(equiv)-5 b(alen)m(t)32 b(to)f Fo(!!)p Fp(.)150 +1574 y Fi(1.1.3)63 b(Mo)s(di\014ers)150 1721 y Fp(After)29 b(the)g(optional)g(w)m(ord)g(designator,)g(y)m(ou)g(can)g(add)f(a)h (sequence)g(of)g(one)g(or)f(more)h(of)g(the)f(follo)m(wing)150 1831 y(mo)s(di\014ers,)33 b(eac)m(h)h(preceded)f(b)m(y)g(a)h(`)p -Fp(:)p Fq('.)50 b(These)33 b(mo)s(dify)-8 b(,)33 b(or)h(edit,)g(the)g +Fo(:)p Fp('.)50 b(These)33 b(mo)s(dify)-8 b(,)33 b(or)h(edit,)g(the)g (w)m(ord)f(or)g(w)m(ords)g(selected)h(from)150 1940 y(the)d(history)f -(ev)m(en)m(t.)150 2100 y Fp(h)432 b Fq(Remo)m(v)m(e)32 +(ev)m(en)m(t.)150 2100 y Fo(h)432 b Fp(Remo)m(v)m(e)32 b(a)f(trailing)g(\014lename)g(comp)s(onen)m(t,)g(lea)m(ving)h(only)e -(the)h(head.)150 2259 y Fp(t)432 b Fq(Remo)m(v)m(e)32 +(the)h(head.)150 2259 y Fo(t)432 b Fp(Remo)m(v)m(e)32 b(all)f(leading)h(\014lename)e(comp)s(onen)m(ts,)h(lea)m(ving)h(the)f -(tail.)150 2418 y Fp(r)432 b Fq(Remo)m(v)m(e)32 b(a)f(trailing)g -(su\016x)f(of)g(the)h(form)f(`)p Fp(.)p Fi(suffix)p Fq(',)f(lea)m(ving) -j(the)f(basename.)150 2578 y Fp(e)432 b Fq(Remo)m(v)m(e)32 -b(all)f(but)f(the)h(trailing)g(su\016x.)150 2737 y Fp(p)432 -b Fq(Prin)m(t)30 b(the)h(new)f(command)g(but)g(do)g(not)g(execute)i -(it.)150 2897 y Fp(s/)p Fi(old)p Fp(/)p Fi(new)p Fp(/)630 -3006 y Fq(Substitute)f Fk(new)39 b Fq(for)32 b(the)g(\014rst)f(o)s -(ccurrence)h(of)f Fk(old)36 b Fq(in)31 b(the)h(ev)m(en)m(t)h(line.)46 +(tail.)150 2418 y Fo(r)432 b Fp(Remo)m(v)m(e)32 b(a)f(trailing)g +(su\016x)f(of)g(the)h(form)f(`)p Fo(.)p Fh(suffix)p Fp(',)f(lea)m(ving) +j(the)f(basename.)150 2578 y Fo(e)432 b Fp(Remo)m(v)m(e)32 +b(all)f(but)f(the)h(trailing)g(su\016x.)150 2737 y Fo(p)432 +b Fp(Prin)m(t)30 b(the)h(new)f(command)g(but)g(do)g(not)g(execute)i +(it.)150 2897 y Fo(s/)p Fh(old)p Fo(/)p Fh(new)p Fo(/)630 +3006 y Fp(Substitute)f Fj(new)39 b Fp(for)32 b(the)g(\014rst)f(o)s +(ccurrence)h(of)f Fj(old)36 b Fp(in)31 b(the)h(ev)m(en)m(t)h(line.)46 b(An)m(y)31 b(c)m(haracter)630 3116 y(ma)m(y)k(b)s(e)e(used)h(as)g(the) -h(delimiter)g(in)f(place)h(of)f(`)p Fp(/)p Fq('.)53 b(The)33 +h(delimiter)g(in)f(place)h(of)f(`)p Fo(/)p Fp('.)53 b(The)33 b(delimiter)i(ma)m(y)g(b)s(e)f(quoted)g(in)630 3225 y -Fk(old)i Fq(and)31 b Fk(new)39 b Fq(with)31 b(a)i(single)f(bac)m -(kslash.)46 b(If)31 b(`)p Fp(&)p Fq(')h(app)s(ears)f(in)h -Fk(new)p Fq(,)g(it)g(is)g(replaced)g(with)630 3335 y -Fk(old)p Fq(.)41 b(A)30 b(single)h(bac)m(kslash)g(quotes)g(the)f(`)p -Fp(&)p Fq(')h(in)f Fk(old)k Fq(and)29 b Fk(new)p Fq(.)41 -b(If)29 b Fk(old)34 b Fq(is)d(n)m(ull,)f(it)h(is)f(set)h(to)630 -3445 y(the)f(last)g Fk(old)j Fq(substituted,)c(or,)h(if)f(no)g +Fj(old)i Fp(and)31 b Fj(new)39 b Fp(with)31 b(a)i(single)f(bac)m +(kslash.)46 b(If)31 b(`)p Fo(&)p Fp(')h(app)s(ears)f(in)h +Fj(new)p Fp(,)g(it)g(is)g(replaced)g(with)630 3335 y +Fj(old)p Fp(.)41 b(A)30 b(single)h(bac)m(kslash)g(quotes)g(the)f(`)p +Fo(&)p Fp(')h(in)f Fj(old)k Fp(and)29 b Fj(new)p Fp(.)41 +b(If)29 b Fj(old)34 b Fp(is)d(n)m(ull,)f(it)h(is)f(set)h(to)630 +3445 y(the)f(last)g Fj(old)j Fp(substituted,)c(or,)h(if)f(no)g (previous)g(history)g(substitutions)g(to)s(ok)h(place,)h(the)630 -3554 y(last)e Fk(string)36 b Fq(in)28 b(a)h(!?)p Fk(string)8 -b Fp([?])28 b Fq(searc)m(h.)40 b(If)28 b Fk(new)36 b -Fq(is)28 b(n)m(ull,)h(eac)m(h)h(matc)m(hing)f Fk(old)j -Fq(is)d(deleted.)630 3664 y(The)h(\014nal)g(delimiter)h(is)f(optional)i +3554 y(last)e Fj(string)36 b Fp(in)28 b(a)h(!?)p Fj(string)8 +b Fo([?])28 b Fp(searc)m(h.)40 b(If)28 b Fj(new)36 b +Fp(is)28 b(n)m(ull,)h(eac)m(h)h(matc)m(hing)f Fj(old)j +Fp(is)d(deleted.)630 3664 y(The)h(\014nal)g(delimiter)h(is)f(optional)i (if)e(it)h(is)g(the)f(last)h(c)m(haracter)h(on)f(the)f(input)g(line.) -150 3823 y Fp(&)432 b Fq(Rep)s(eat)31 b(the)f(previous)g(substitution.) -150 3983 y Fp(g)150 4092 y(a)432 b Fq(Cause)27 b(c)m(hanges)i(to)f(b)s +150 3823 y Fo(&)432 b Fp(Rep)s(eat)31 b(the)f(previous)g(substitution.) +150 3983 y Fo(g)150 4092 y(a)432 b Fp(Cause)27 b(c)m(hanges)i(to)f(b)s (e)f(applied)g(o)m(v)m(er)h(the)g(en)m(tire)g(ev)m(en)m(t)h(line.)40 b(This)27 b(is)g(used)g(in)g(conjunc-)630 4202 y(tion)k(with)f(`)p -Fp(s)p Fq(',)h(as)f(in)g Fp(gs/)p Fi(old)p Fp(/)p Fi(new)p -Fp(/)p Fq(,)e(or)i(with)g(`)p Fp(&)p Fq('.)150 4361 y -Fp(G)432 b Fq(Apply)30 b(the)g(follo)m(wing)i(`)p Fp(s)p -Fq(')f(or)f(`)p Fp(&)p Fq(')h(mo)s(di\014er)e(once)i(to)g(eac)m(h)h(w)m +Fo(s)p Fp(',)h(as)f(in)g Fo(gs/)p Fh(old)p Fo(/)p Fh(new)p +Fo(/)p Fp(,)e(or)i(with)g(`)p Fo(&)p Fp('.)150 4361 y +Fo(G)432 b Fp(Apply)30 b(the)g(follo)m(wing)i(`)p Fo(s)p +Fp(')f(or)f(`)p Fo(&)p Fp(')h(mo)s(di\014er)e(once)i(to)g(eac)m(h)h(w)m (ord)e(in)g(the)g(ev)m(en)m(t.)p eop end %%Page: 4 7 -TeXDict begin 4 6 bop 3705 -116 a Fq(4)150 299 y Fm(2)80 -b(Programming)54 b(with)f(GNU)h(History)150 544 y Fq(This)41 +TeXDict begin 4 6 bop 3705 -116 a Fp(4)150 299 y Fl(2)80 +b(Programming)54 b(with)f(GNU)h(History)150 544 y Fp(This)41 b(c)m(hapter)i(describ)s(es)e(ho)m(w)h(to)h(in)m(terface)g(programs)f -(that)g(y)m(ou)h(write)f(with)f(the)i Fl(gnu)e Fq(History)150 +(that)g(y)m(ou)h(write)f(with)f(the)i Fk(gnu)e Fp(History)150 654 y(Library)-8 b(.)48 b(It)33 b(should)e(b)s(e)i(considered)f(a)h (tec)m(hnical)i(guide.)48 b(F)-8 b(or)34 b(information)f(on)g(the)g(in) -m(teractiv)m(e)i(use)150 763 y(of)c Fl(gnu)f Fq(History)-8 +m(teractiv)m(e)i(use)150 763 y(of)c Fk(gnu)f Fp(History)-8 b(,)31 b(see)g(Chapter)f(1)h([Using)g(History)g(In)m(teractiv)m(ely],)i -(page)e(1.)150 1010 y Fo(2.1)68 b(In)l(tro)t(duction)45 -b(to)g(History)150 1169 y Fq(Man)m(y)31 b(programs)f(read)g(input)g +(page)e(1.)150 1010 y Fn(2.1)68 b(In)l(tro)t(duction)45 +b(to)g(History)150 1169 y Fp(Man)m(y)31 b(programs)f(read)g(input)g (from)f(the)i(user)f(a)g(line)h(at)g(a)g(time.)41 b(The)30 -b Fl(gnu)g Fq(History)h(library)f(is)g(able)150 1279 +b Fk(gnu)g Fp(History)h(library)f(is)g(able)150 1279 y(to)f(k)m(eep)h(trac)m(k)g(of)f(those)g(lines,)h(asso)s(ciate)g (arbitrary)f(data)g(with)g(eac)m(h)h(line,)f(and)g(utilize)h (information)150 1388 y(from)g(previous)g(lines)g(when)g(comp)s(osing)g @@ -5516,7 +5517,7 @@ f(history)g(list)h(en)m(tries,)i(remo)m(v)m(e)e(en)m(tries)g(from)f (an)m(y)g(en)m(try)g(in)f(the)150 1855 y(list)e(directly)-8 b(,)38 b(and)c(read)h(and)f(write)h(the)g(history)g(list)g(from)f(and)h (to)g(a)g(\014le.)54 b(In)34 b(addition,)j(a)e(history)150 -1965 y Fk(expansion)25 b Fq(function)g(is)h(a)m(v)-5 +1965 y Fj(expansion)25 b Fp(function)g(is)h(a)m(v)-5 b(ailable)28 b(whic)m(h)d(pro)m(vides)g(for)g(a)h(consisten)m(t)h(user) e(in)m(terface)h(across)g(di\013eren)m(t)150 2075 y(programs.)275 2213 y(Someone)i(using)f(programs)g(written)h(with)g(the)g(History)g @@ -5526,425 +5527,425 @@ f(commands)g(for)g(manipulating)g(the)g(text)h(of)f(previous)150 2432 y(lines)28 b(and)f(using)g(that)h(text)g(in)g(new)f(commands.)39 b(The)27 b(basic)h(history)g(manipulation)f(commands)h(are)150 2542 y(similar)j(to)g(the)f(history)h(substitution)f(pro)m(vided)g(b)m -(y)g Fp(csh)p Fq(.)275 2680 y(The)f(programmer)h(can)h(also)g(use)g +(y)g Fo(csh)p Fp(.)275 2680 y(The)f(programmer)h(can)h(also)g(use)g (the)f(Readline)h(library)-8 b(,)31 b(whic)m(h)f(includes)g(some)h (history)f(manip-)150 2790 y(ulation)h(b)m(y)f(default,)h(and)f(has)g (the)h(added)e(adv)-5 b(an)m(tage)33 b(of)d(command)g(line)h(editing.) 275 2928 y(Before)39 b(declaring)f(an)m(y)h(functions)e(using)h(an)m(y) g(functionalit)m(y)i(the)e(History)h(library)e(pro)m(vides)h(in)150 3037 y(other)29 b(co)s(de,)g(an)g(application)h(writer)f(should)e -(include)i(the)g(\014le)f Fp()23 -b Fq(in)29 b(an)m(y)g(\014le)150 3147 y(that)c(uses)f(the)h(History)g +(include)i(the)g(\014le)f Fo()23 +b Fp(in)29 b(an)m(y)g(\014le)150 3147 y(that)c(uses)f(the)h(History)g (library's)f(features.)39 b(It)25 b(supplies)e(declarations)j(for)f (all)g(of)g(the)f(library's)h(public)150 3257 y(functions)30 b(and)g(v)-5 b(ariables,)31 b(and)f(declares)h(all)g(of)g(the)f(public) -g(data)h(structures.)150 3503 y Fo(2.2)68 b(History)46 -b(Storage)150 3662 y Fq(The)30 b(history)g(list)h(is)g(an)f(arra)m(y)h +g(data)h(structures.)150 3503 y Fn(2.2)68 b(History)46 +b(Storage)150 3662 y Fp(The)30 b(history)g(list)h(is)g(an)f(arra)m(y)h (of)f(history)h(en)m(tries.)41 b(A)31 b(history)f(en)m(try)h(is)f -(declared)h(as)f(follo)m(ws:)390 3801 y Fp(typedef)46 +(declared)h(as)f(follo)m(ws:)390 3801 y Fo(typedef)46 b(void)g(*histdata_t;)390 4020 y(typedef)g(struct)g(_hist_entry)f({)485 4129 y(char)i(*line;)485 4239 y(char)g(*timestamp;)485 4349 y(histdata_t)e(data;)390 4458 y(})i(HIST_ENTRY;)275 -4596 y Fq(The)29 b(history)i(list)g(itself)g(migh)m(t)g(therefore)g(b)s -(e)f(declared)g(as)390 4735 y Fp(HIST_ENTRY)45 b(**the_history_list;) -275 4873 y Fq(The)29 b(state)j(of)f(the)f(History)h(library)f(is)h +4596 y Fp(The)29 b(history)i(list)g(itself)g(migh)m(t)g(therefore)g(b)s +(e)f(declared)g(as)390 4735 y Fo(HIST_ENTRY)45 b(**the_history_list;) +275 4873 y Fp(The)29 b(state)j(of)f(the)f(History)h(library)f(is)h (encapsulated)g(in)m(to)g(a)g(single)g(structure:)390 -5011 y Fp(/*)438 5121 y(*)47 b(A)h(structure)d(used)i(to)g(pass)f +5011 y Fo(/*)438 5121 y(*)47 b(A)h(structure)d(used)i(to)g(pass)f (around)g(the)h(current)f(state)h(of)g(the)g(history.)438 5230 y(*/)390 5340 y(typedef)f(struct)g(_hist_state)f({)p eop end %%Page: 5 8 -TeXDict begin 5 7 bop 150 -116 a Fq(Chapter)30 b(2:)41 +TeXDict begin 5 7 bop 150 -116 a Fp(Chapter)30 b(2:)41 b(Programming)30 b(with)g(GNU)h(History)1780 b(5)485 -299 y Fp(HIST_ENTRY)45 b(**entries;)g(/*)j(Pointer)d(to)j(the)f +299 y Fo(HIST_ENTRY)45 b(**entries;)g(/*)j(Pointer)d(to)j(the)f (entries)e(themselves.)g(*/)485 408 y(int)i(offset;)523 b(/*)48 b(The)f(location)e(pointer)h(within)g(this)h(array.)f(*/)485 518 y(int)h(length;)523 b(/*)48 b(Number)e(of)h(elements)e(within)i (this)f(array.)g(*/)485 628 y(int)h(size;)619 b(/*)48 b(Number)e(of)h(slots)f(allocated)g(to)h(this)f(array.)g(*/)485 737 y(int)h(flags;)390 847 y(})g(HISTORY_STATE;)275 978 -y Fq(If)c(the)h(\015ags)h(mem)m(b)s(er)e(includes)h Fp(HS_STIFLED)p -Fq(,)h(the)f(history)g(has)g(b)s(een)g(sti\015ed)g(\(limited)h(to)g(a) +y Fp(If)c(the)h(\015ags)h(mem)m(b)s(er)e(includes)h Fo(HS_STIFLED)p +Fp(,)h(the)f(history)g(has)g(b)s(een)g(sti\015ed)g(\(limited)h(to)g(a) 150 1087 y(maxim)m(um)30 b(n)m(um)m(b)s(er)f(of)i(en)m(tries\).)150 -1320 y Fo(2.3)68 b(History)46 b(F)-11 b(unctions)150 -1480 y Fq(This)33 b(section)j(describ)s(es)d(the)i(calling)g(sequence)g +1320 y Fn(2.3)68 b(History)46 b(F)-11 b(unctions)150 +1480 y Fp(This)33 b(section)j(describ)s(es)d(the)i(calling)g(sequence)g (for)f(the)g(v)-5 b(arious)34 b(functions)g(exp)s(orted)g(b)m(y)g(the)g -Fl(gnu)150 1589 y Fq(History)d(library)-8 b(.)150 1781 -y Fj(2.3.1)63 b(Initializing)40 b(History)i(and)f(State)f(Managemen)m -(t)150 1928 y Fq(This)21 b(section)i(describ)s(es)f(functions)f(used)g +Fk(gnu)150 1589 y Fp(History)d(library)-8 b(.)150 1781 +y Fi(2.3.1)63 b(Initializing)40 b(History)i(and)f(State)f(Managemen)m +(t)150 1928 y Fp(This)21 b(section)i(describ)s(es)f(functions)f(used)g (to)i(initialize)h(and)e(manage)h(the)f(state)h(of)g(the)f(History)g (library)150 2037 y(when)29 b(y)m(ou)i(w)m(an)m(t)g(to)g(use)f(the)h (history)f(functions)g(in)g(y)m(our)h(program.)3350 2210 -y([F)-8 b(unction])-3599 b Fh(void)54 b(using_history)49 -b Fg(\()p Ff(v)m(oid)p Fg(\))390 2320 y Fq(Begin)40 b(a)g(session)g +y([F)-8 b(unction])-3599 b Fg(void)54 b(using_history)49 +b Ff(\()p Fe(v)m(oid)p Ff(\))390 2320 y Fp(Begin)40 b(a)g(session)g (that)g(will)g(use)f(the)g(history)h(functions.)67 b(This)39 b(initializes)i(the)f(in)m(teractiv)m(e)390 2430 y(v)-5 -b(ariables.)3350 2603 y([F)d(unction])-3599 b Fh(HISTORY_STATE)56 -b(*)d(history_get_history_st)q(ate)f Fg(\()p Ff(v)m(oid)p -Fg(\))390 2712 y Fq(Return)30 b(a)g(structure)g(describing)g(the)h +b(ariables.)3350 2603 y([F)d(unction])-3599 b Fg(HISTORY_STATE)56 +b(*)d(history_get_history_st)q(ate)f Ff(\()p Fe(v)m(oid)p +Ff(\))390 2712 y Fp(Return)30 b(a)g(structure)g(describing)g(the)h (curren)m(t)f(state)i(of)e(the)h(input)e(history)-8 b(.)3350 -2885 y([F)g(unction])-3599 b Fh(void)54 b(history_set_history_stat)q(e) -e Fg(\()p Ff(HISTOR)-8 b(Y)p 2262 2885 30 5 v 44 w(ST)g(A)g(TE)32 -b(*state)p Fg(\))390 2995 y Fq(Set)f(the)f(state)i(of)e(the)h(history)f -(list)h(according)h(to)f Fk(state)p Fq(.)150 3186 y Fj(2.3.2)63 -b(History)41 b(List)g(Managemen)m(t)150 3333 y Fq(These)32 +2885 y([F)g(unction])-3599 b Fg(void)54 b(history_set_history_stat)q(e) +e Ff(\()p Fe(HISTOR)-8 b(Y)p 2262 2885 30 5 v 44 w(ST)g(A)g(TE)32 +b(*state)p Ff(\))390 2995 y Fp(Set)f(the)f(state)i(of)e(the)h(history)f +(list)h(according)h(to)f Fj(state)p Fp(.)150 3186 y Fi(2.3.2)63 +b(History)41 b(List)g(Managemen)m(t)150 3333 y Fp(These)32 b(functions)f(manage)i(individual)f(en)m(tries)g(on)g(the)g(history)g (list,)h(or)f(set)h(parameters)f(managing)150 3443 y(the)f(list)g -(itself.)3350 3616 y([F)-8 b(unction])-3599 b Fh(void)54 -b(add_history)48 b Fg(\()p Ff(const)34 b(c)m(har)g(*string)p -Fg(\))390 3725 y Fq(Add)i Fk(string)44 b Fq(to)38 b(the)f(end)f(of)h +(itself.)3350 3616 y([F)-8 b(unction])-3599 b Fg(void)54 +b(add_history)48 b Ff(\()p Fe(const)34 b(c)m(har)g(*string)p +Ff(\))390 3725 y Fp(Add)i Fj(string)44 b Fp(to)38 b(the)f(end)f(of)h (the)g(history)f(list,)k(and)c(set)h(the)g(asso)s(ciated)h(data)g -(\014eld)e(\(if)h(an)m(y\))390 3835 y(to)44 b Fp(NULL)p -Fq(.)79 b(If)44 b(the)f(maxim)m(um)h(n)m(um)m(b)s(er)e(of)i(history)f -(en)m(tries)i(has)e(b)s(een)g(set)h(using)f Fp(stifle_)390 -3944 y(history\(\))p Fq(,)26 b(and)i(the)g(new)g(n)m(um)m(b)s(er)e(of)j +(\014eld)e(\(if)h(an)m(y\))390 3835 y(to)44 b Fo(NULL)p +Fp(.)79 b(If)44 b(the)f(maxim)m(um)h(n)m(um)m(b)s(er)e(of)i(history)f +(en)m(tries)i(has)e(b)s(een)g(set)h(using)f Fo(stifle_)390 +3944 y(history\(\))p Fp(,)26 b(and)i(the)g(new)g(n)m(um)m(b)s(er)e(of)j (history)f(en)m(tries)h(w)m(ould)f(exceed)h(that)f(maxim)m(um,)h(this) 390 4054 y(remo)m(v)m(es)j(the)e(oldest)h(history)g(en)m(try)-8 -b(.)3350 4227 y([F)g(unction])-3599 b Fh(void)54 b(add_history_time)c -Fg(\()p Ff(const)34 b(c)m(har)g(*string)p Fg(\))390 4337 -y Fq(Change)c(the)h(time)g(stamp)f(asso)s(ciated)i(with)e(the)h(most)f -(recen)m(t)i(history)e(en)m(try)h(to)g Fk(string)p Fq(.)3350 -4510 y([F)-8 b(unction])-3599 b Fh(HIST_ENTRY)55 b(*)e(remove_history)d -Fg(\()p Ff(in)m(t)33 b(whic)m(h)p Fg(\))390 4619 y Fq(Remo)m(v)m(e)45 -b(the)e(history)h(en)m(try)f(at)h(o\013set)g Fk(whic)m(h)f -Fq(from)g(the)g(history)g(list.)80 b(This)43 b(returns)f(the)390 +b(.)3350 4227 y([F)g(unction])-3599 b Fg(void)54 b(add_history_time)c +Ff(\()p Fe(const)34 b(c)m(har)g(*string)p Ff(\))390 4337 +y Fp(Change)c(the)h(time)g(stamp)f(asso)s(ciated)i(with)e(the)h(most)f +(recen)m(t)i(history)e(en)m(try)h(to)g Fj(string)p Fp(.)3350 +4510 y([F)-8 b(unction])-3599 b Fg(HIST_ENTRY)55 b(*)e(remove_history)d +Ff(\()p Fe(in)m(t)33 b(whic)m(h)p Ff(\))390 4619 y Fp(Remo)m(v)m(e)45 +b(the)e(history)h(en)m(try)f(at)h(o\013set)g Fj(whic)m(h)f +Fp(from)g(the)g(history)g(list.)80 b(This)43 b(returns)f(the)390 4729 y(remo)m(v)m(ed)34 b(elemen)m(t)h(so)f(y)m(ou)f(can)h(free)f(the)h (line,)g(data,)h(and)e(con)m(taining)i(structure.)48 b(Since)34 b(the)390 4838 y(data)29 b(is)f(priv)-5 b(ate)29 b(to)g(y)m(our)f(application,)i(the)e(History)h(library)f(do)s(esn't)g (kno)m(w)g(ho)m(w)g(to)h(free)g(it,)g(if)390 4948 y(necessary)-8 -b(.)3350 5121 y([F)g(unction])-3599 b Fh(histdata_t)55 -b(free_history_entry)c Fg(\()p Ff(HIST)p 1992 5121 V -44 w(ENTR)-8 b(Y)33 b(*histen)m(t)p Fg(\))390 5230 y -Fq(F)-8 b(ree)29 b(the)f(history)g(en)m(try)g Fk(histen)m(t)j -Fq(and)c(an)m(y)i(history)e(library)h(priv)-5 b(ate)28 +b(.)3350 5121 y([F)g(unction])-3599 b Fg(histdata_t)55 +b(free_history_entry)c Ff(\()p Fe(HIST)p 1992 5121 V +44 w(ENTR)-8 b(Y)33 b(*histen)m(t)p Ff(\))390 5230 y +Fp(F)-8 b(ree)29 b(the)f(history)g(en)m(try)g Fj(histen)m(t)j +Fp(and)c(an)m(y)i(history)e(library)h(priv)-5 b(ate)28 b(data)h(asso)s(ciated)g(with)f(it.)390 5340 y(Returns)h(the)i (application-sp)s(eci\014c)h(data)f(so)g(the)f(caller)i(can)e(disp)s (ose)g(of)h(it.)p eop end %%Page: 6 9 -TeXDict begin 6 8 bop 150 -116 a Fq(Chapter)30 b(2:)41 +TeXDict begin 6 8 bop 150 -116 a Fp(Chapter)30 b(2:)41 b(Programming)30 b(with)g(GNU)h(History)1780 b(6)3350 -299 y([F)-8 b(unction])-3599 b Fh(HIST_ENTRY)55 b(*)e -(replace_history_entry)f Fg(\()p Ff(in)m(t)33 b(whic)m(h,)h(const)g(c)m +299 y([F)-8 b(unction])-3599 b Fg(HIST_ENTRY)55 b(*)e +(replace_history_entry)f Ff(\()p Fe(in)m(t)33 b(whic)m(h,)h(const)g(c)m (har)g(*line,)565 408 y(histdata)p 927 408 30 5 v 44 -w(t)f(data)p Fg(\))390 518 y Fq(Mak)m(e)c(the)f(history)f(en)m(try)h -(at)h(o\013set)f Fk(whic)m(h)g Fq(ha)m(v)m(e)g Fk(line)33 -b Fq(and)27 b Fk(data)p Fq(.)41 b(This)27 b(returns)f(the)i(old)g(en)m +w(t)f(data)p Ff(\))390 518 y Fp(Mak)m(e)c(the)f(history)f(en)m(try)h +(at)h(o\013set)f Fj(whic)m(h)g Fp(ha)m(v)m(e)g Fj(line)33 +b Fp(and)27 b Fj(data)p Fp(.)41 b(This)27 b(returns)f(the)i(old)g(en)m (try)390 628 y(so)37 b(the)h(caller)g(can)f(disp)s(ose)g(of)g(an)m(y)g (application-sp)s(eci\014c)i(data.)61 b(In)37 b(the)g(case)h(of)f(an)g -(in)m(v)-5 b(alid)390 737 y Fk(whic)m(h)p Fq(,)30 b(this)h(returns)e -Fp(NULL)p Fq(.)3350 951 y([F)-8 b(unction])-3599 b Fh(void)54 -b(clear_history)49 b Fg(\()p Ff(v)m(oid)p Fg(\))390 1061 -y Fq(Clear)31 b(the)f(history)h(list)g(b)m(y)f(deleting)h(all)h(the)e -(en)m(tries.)3350 1275 y([F)-8 b(unction])-3599 b Fh(void)54 -b(stifle_history)49 b Fg(\()p Ff(in)m(t)34 b(max)p Fg(\))390 -1385 y Fq(Sti\015e)j(the)f(history)h(list,)i(remem)m(b)s(ering)d(only)h -(the)f(last)i Fk(max)43 b Fq(en)m(tries.)60 b(The)36 +(in)m(v)-5 b(alid)390 737 y Fj(whic)m(h)p Fp(,)30 b(this)h(returns)e +Fo(NULL)p Fp(.)3350 951 y([F)-8 b(unction])-3599 b Fg(void)54 +b(clear_history)49 b Ff(\()p Fe(v)m(oid)p Ff(\))390 1061 +y Fp(Clear)31 b(the)f(history)h(list)g(b)m(y)f(deleting)h(all)h(the)e +(en)m(tries.)3350 1275 y([F)-8 b(unction])-3599 b Fg(void)54 +b(stifle_history)49 b Ff(\()p Fe(in)m(t)34 b(max)p Ff(\))390 +1385 y Fp(Sti\015e)j(the)f(history)h(list,)i(remem)m(b)s(ering)d(only)h +(the)f(last)i Fj(max)43 b Fp(en)m(tries.)60 b(The)36 b(history)g(list)i(will)390 1494 y(con)m(tain)32 b(only)e -Fk(max)37 b Fq(en)m(tries)31 b(at)g(a)g(time.)3350 1709 -y([F)-8 b(unction])-3599 b Fh(int)53 b(unstifle_history)e -Fg(\()p Ff(v)m(oid)p Fg(\))390 1818 y Fq(Stop)27 b(sti\015ing)h(the)f +Fj(max)37 b Fp(en)m(tries)31 b(at)g(a)g(time.)3350 1709 +y([F)-8 b(unction])-3599 b Fg(int)53 b(unstifle_history)e +Ff(\()p Fe(v)m(oid)p Ff(\))390 1818 y Fp(Stop)27 b(sti\015ing)h(the)f (history)-8 b(.)40 b(This)27 b(returns)f(the)h(previously-set)h(maxim)m (um)f(n)m(um)m(b)s(er)f(of)i(history)390 1928 y(en)m(tries)g(\(as)f -(set)g(b)m(y)g Fp(stifle_history\(\))p Fq(\).)35 b(The)27 +(set)g(b)m(y)g Fo(stifle_history\(\))p Fp(\).)35 b(The)27 b(v)-5 b(alue)27 b(is)g(p)s(ositiv)m(e)g(if)g(the)g(history)g(w)m(as)g (sti\015ed,)390 2037 y(negativ)m(e)33 b(if)d(it)h(w)m(asn't.)3350 -2251 y([F)-8 b(unction])-3599 b Fh(int)53 b(history_is_stifled)e -Fg(\()p Ff(v)m(oid)p Fg(\))390 2361 y Fq(Returns)29 b(non-zero)i(if)g +2251 y([F)-8 b(unction])-3599 b Fg(int)53 b(history_is_stifled)e +Ff(\()p Fe(v)m(oid)p Ff(\))390 2361 y Fp(Returns)29 b(non-zero)i(if)g (the)f(history)h(is)f(sti\015ed,)g(zero)i(if)e(it)h(is)f(not.)150 -2575 y Fj(2.3.3)63 b(Information)42 b(Ab)s(out)f(the)g(History)g(List) -150 2722 y Fq(These)30 b(functions)g(return)f(information)i(ab)s(out)f +2575 y Fi(2.3.3)63 b(Information)42 b(Ab)s(out)f(the)g(History)g(List) +150 2722 y Fp(These)30 b(functions)g(return)f(information)i(ab)s(out)f (the)h(en)m(tire)g(history)f(list)h(or)g(individual)e(list)i(en)m -(tries.)3350 2936 y([F)-8 b(unction])-3599 b Fh(HIST_ENTRY)55 -b(**)e(history_list)c Fg(\()p Ff(v)m(oid)p Fg(\))390 -3046 y Fq(Return)30 b(a)h Fp(NULL)e Fq(terminated)i(arra)m(y)g(of)f -Fp(HIST_ENTRY)e(*)i Fq(whic)m(h)g(is)h(the)g(curren)m(t)f(input)f +(tries.)3350 2936 y([F)-8 b(unction])-3599 b Fg(HIST_ENTRY)55 +b(**)e(history_list)c Ff(\()p Fe(v)m(oid)p Ff(\))390 +3046 y Fp(Return)30 b(a)h Fo(NULL)e Fp(terminated)i(arra)m(y)g(of)f +Fo(HIST_ENTRY)e(*)i Fp(whic)m(h)g(is)h(the)g(curren)m(t)f(input)f (history)-8 b(.)390 3156 y(Elemen)m(t)31 b(0)g(of)g(this)f(list)h(is)f -(the)h(b)s(eginning)f(of)g(time.)42 b(Return)29 b Fp(NULL)g -Fq(if)i(there)f(is)h(no)f(history)-8 b(.)3350 3370 y([F)g(unction]) --3599 b Fh(int)53 b(where_history)d Fg(\()p Ff(v)m(oid)p -Fg(\))390 3479 y Fq(Return)30 b(the)g(o\013set)i(of)e(the)h(curren)m(t) +(the)h(b)s(eginning)f(of)g(time.)42 b(Return)29 b Fo(NULL)g +Fp(if)i(there)f(is)h(no)f(history)-8 b(.)3350 3370 y([F)g(unction]) +-3599 b Fg(int)53 b(where_history)d Ff(\()p Fe(v)m(oid)p +Ff(\))390 3479 y Fp(Return)30 b(the)g(o\013set)i(of)e(the)h(curren)m(t) f(history)g(en)m(try)-8 b(.)3350 3693 y([F)g(unction])-3599 -b Fh(HIST_ENTRY)55 b(*)e(current_history)d Fg(\()p Ff(v)m(oid)p -Fg(\))390 3803 y Fq(Return)24 b(the)h(history)g(en)m(try)g(at)h(the)f +b Fg(HIST_ENTRY)55 b(*)e(current_history)d Ff(\()p Fe(v)m(oid)p +Ff(\))390 3803 y Fp(Return)24 b(the)h(history)g(en)m(try)g(at)h(the)f (curren)m(t)f(p)s(osition,)j(as)e(determined)f(b)m(y)h -Fp(where_history\(\))p Fq(.)390 3913 y(If)30 b(there)g(is)h(no)f(en)m -(try)h(there,)g(return)e Fp(NULL)p Fq(.)3350 4127 y([F)-8 -b(unction])-3599 b Fh(HIST_ENTRY)55 b(*)e(history_get)c -Fg(\()p Ff(in)m(t)33 b(o\013set)p Fg(\))390 4236 y Fq(Return)e(the)g -(history)h(en)m(try)g(at)g(p)s(osition)g Fk(o\013set)p -Fq(.)45 b(The)31 b(range)h(of)g(v)-5 b(alid)31 b(v)-5 -b(alues)32 b(of)g Fk(o\013set)j Fq(starts)390 4346 y(at)d -Fp(history_base)c Fq(and)i(ends)h(at)g Fk(history)p 1885 -4346 28 4 v 40 w(length)h Fq(-)f(1)h(\(see)g(Section)g(2.4)g([History)g +Fo(where_history\(\))p Fp(.)390 3913 y(If)30 b(there)g(is)h(no)f(en)m +(try)h(there,)g(return)e Fo(NULL)p Fp(.)3350 4127 y([F)-8 +b(unction])-3599 b Fg(HIST_ENTRY)55 b(*)e(history_get)c +Ff(\()p Fe(in)m(t)33 b(o\013set)p Ff(\))390 4236 y Fp(Return)e(the)g +(history)h(en)m(try)g(at)g(p)s(osition)g Fj(o\013set)p +Fp(.)45 b(The)31 b(range)h(of)g(v)-5 b(alid)31 b(v)-5 +b(alues)32 b(of)g Fj(o\013set)j Fp(starts)390 4346 y(at)d +Fo(history_base)c Fp(and)i(ends)h(at)g Fj(history)p 1885 +4346 28 4 v 40 w(length)h Fp(-)f(1)h(\(see)g(Section)g(2.4)g([History)g (V)-8 b(ariables],)390 4456 y(page)30 b(9\).)41 b(If)28 -b(there)i(is)f(no)g(en)m(try)g(there,)h(or)f(if)g Fk(o\013set)j -Fq(is)d(outside)g(the)h(v)-5 b(alid)29 b(range,)h(return)e -Fp(NULL)p Fq(.)3350 4670 y([F)-8 b(unction])-3599 b Fh(time_t)54 -b(history_get_time)c Fg(\()p Ff(HIST)p 1678 4670 30 5 -v 45 w(ENTR)-8 b(Y)32 b(*en)m(try)p Fg(\))390 4779 y -Fq(Return)g(the)i(time)g(stamp)f(asso)s(ciated)h(with)f(the)g(history)g -(en)m(try)h Fk(en)m(try)p Fq(.)49 b(If)33 b(the)g(timestamp)h(is)390 +b(there)i(is)f(no)g(en)m(try)g(there,)h(or)f(if)g Fj(o\013set)j +Fp(is)d(outside)g(the)h(v)-5 b(alid)29 b(range,)h(return)e +Fo(NULL)p Fp(.)3350 4670 y([F)-8 b(unction])-3599 b Fg(time_t)54 +b(history_get_time)c Ff(\()p Fe(HIST)p 1678 4670 30 5 +v 45 w(ENTR)-8 b(Y)32 b(*en)m(try)p Ff(\))390 4779 y +Fp(Return)g(the)i(time)g(stamp)f(asso)s(ciated)h(with)f(the)g(history)g +(en)m(try)h Fj(en)m(try)p Fp(.)49 b(If)33 b(the)g(timestamp)h(is)390 4889 y(missing)c(or)h(in)m(v)-5 b(alid,)31 b(return)e(0.)3350 -5103 y([F)-8 b(unction])-3599 b Fh(int)53 b(history_total_bytes)e -Fg(\()p Ff(v)m(oid)p Fg(\))390 5213 y Fq(Return)27 b(the)h(n)m(um)m(b)s +5103 y([F)-8 b(unction])-3599 b Fg(int)53 b(history_total_bytes)e +Ff(\()p Fe(v)m(oid)p Ff(\))390 5213 y Fp(Return)27 b(the)h(n)m(um)m(b)s (er)e(of)i(b)m(ytes)g(that)g(the)g(primary)e(history)i(en)m(tries)g (are)g(using.)39 b(This)27 b(function)390 5322 y(returns)i(the)i(sum)e (of)i(the)f(lengths)h(of)f(all)i(the)e(lines)h(in)f(the)g(history)-8 b(.)p eop end %%Page: 7 10 -TeXDict begin 7 9 bop 150 -116 a Fq(Chapter)30 b(2:)41 +TeXDict begin 7 9 bop 150 -116 a Fp(Chapter)30 b(2:)41 b(Programming)30 b(with)g(GNU)h(History)1780 b(7)150 -299 y Fj(2.3.4)63 b(Mo)m(ving)41 b(Around)h(the)f(History)g(List)150 -446 y Fq(These)30 b(functions)g(allo)m(w)i(the)e(curren)m(t)h(index)f +299 y Fi(2.3.4)63 b(Mo)m(ving)41 b(Around)h(the)f(History)g(List)150 +446 y Fp(These)30 b(functions)g(allo)m(w)i(the)e(curren)m(t)h(index)f (in)m(to)h(the)f(history)h(list)g(to)g(b)s(e)f(set)h(or)f(c)m(hanged.) -3350 611 y([F)-8 b(unction])-3599 b Fh(int)53 b(history_set_pos)d -Fg(\()p Ff(in)m(t)34 b(p)s(os)p Fg(\))390 721 y Fq(Set)j(the)g(curren)m -(t)f(history)g(o\013set)i(to)f Fk(p)s(os)p Fq(,)h(an)f(absolute)g +3350 611 y([F)-8 b(unction])-3599 b Fg(int)53 b(history_set_pos)d +Ff(\()p Fe(in)m(t)34 b(p)s(os)p Ff(\))390 721 y Fp(Set)j(the)g(curren)m +(t)f(history)g(o\013set)i(to)f Fj(p)s(os)p Fp(,)h(an)f(absolute)g (index)f(in)m(to)i(the)e(list.)60 b(Returns)36 b(1)h(on)390 -830 y(success,)31 b(0)g(if)f Fk(p)s(os)j Fq(is)e(less)f(than)h(zero)g +830 y(success,)31 b(0)g(if)f Fj(p)s(os)j Fp(is)e(less)f(than)h(zero)g (or)f(greater)i(than)e(the)g(n)m(um)m(b)s(er)f(of)i(history)f(en)m -(tries.)3350 996 y([F)-8 b(unction])-3599 b Fh(HIST_ENTRY)55 -b(*)e(previous_history)d Fg(\()p Ff(v)m(oid)p Fg(\))390 -1106 y Fq(Bac)m(k)30 b(up)e(the)h(curren)m(t)g(history)f(o\013set)i(to) +(tries.)3350 996 y([F)-8 b(unction])-3599 b Fg(HIST_ENTRY)55 +b(*)e(previous_history)d Ff(\()p Fe(v)m(oid)p Ff(\))390 +1106 y Fp(Bac)m(k)30 b(up)e(the)h(curren)m(t)g(history)f(o\013set)i(to) g(the)f(previous)f(history)h(en)m(try)-8 b(,)30 b(and)e(return)g(a)h(p) s(oin)m(ter)390 1215 y(to)i(that)g(en)m(try)-8 b(.)41 b(If)30 b(there)h(is)f(no)h(previous)f(en)m(try)-8 b(,)31 -b(return)e Fp(NULL)p Fq(.)3350 1381 y([F)-8 b(unction])-3599 -b Fh(HIST_ENTRY)55 b(*)e(next_history)c Fg(\()p Ff(v)m(oid)p -Fg(\))390 1490 y Fq(If)20 b(the)h(curren)m(t)f(history)h(o\013set)g +b(return)e Fo(NULL)p Fp(.)3350 1381 y([F)-8 b(unction])-3599 +b Fg(HIST_ENTRY)55 b(*)e(next_history)c Ff(\()p Fe(v)m(oid)p +Ff(\))390 1490 y Fp(If)20 b(the)h(curren)m(t)f(history)h(o\013set)g (refers)g(to)g(a)g(v)-5 b(alid)21 b(history)f(en)m(try)-8 b(,)24 b(incremen)m(t)d(the)g(curren)m(t)f(history)390 1600 y(o\013set.)41 b(If)27 b(the)g(p)s(ossibly-incremen)m(ted)g (history)h(o\013set)g(refers)f(to)h(a)f(v)-5 b(alid)28 b(history)f(en)m(try)-8 b(,)29 b(return)390 1709 y(a)i(p)s(oin)m(ter)f -(to)h(that)g(en)m(try;)g(otherwise,)g(return)e Fp(NULL)p -Fq(.)150 1896 y Fj(2.3.5)63 b(Searc)m(hing)40 b(the)h(History)h(List) -150 2043 y Fq(These)23 b(functions)h(searc)m(h)g(the)g(history)g(list)g +(to)h(that)g(en)m(try;)g(otherwise,)g(return)e Fo(NULL)p +Fp(.)150 1896 y Fi(2.3.5)63 b(Searc)m(hing)40 b(the)h(History)h(List) +150 2043 y Fp(These)23 b(functions)h(searc)m(h)g(the)g(history)g(list)g (for)f(en)m(tries)i(con)m(taining)g(a)f(sp)s(eci\014c)g(string.)38 b(Searc)m(hing)24 b(ma)m(y)150 2153 y(b)s(e)37 b(p)s(erformed)f(b)s (oth)h(forw)m(ard)g(and)g(bac)m(kw)m(ard)h(from)f(the)h(curren)m(t)f (history)h(p)s(osition.)62 b(The)37 b(searc)m(h)150 2262 -y(ma)m(y)28 b(b)s(e)f Fk(anc)m(hored)p Fq(,)h(meaning)g(that)g(the)g +y(ma)m(y)28 b(b)s(e)f Fj(anc)m(hored)p Fp(,)h(meaning)g(that)g(the)g (string)f(m)m(ust)h(matc)m(h)g(at)g(the)g(b)s(eginning)f(of)g(a)h (history)g(en)m(try)-8 b(.)3350 2428 y([F)g(unction])-3599 -b Fh(int)53 b(history_search)d Fg(\()p Ff(const)34 b(c)m(har)g -(*string,)e(in)m(t)i(direction)p Fg(\))390 2537 y Fq(Searc)m(h)29 -b(the)g(history)g(for)g Fk(string)p Fq(,)g(starting)h(at)f(the)g -(curren)m(t)g(history)g(o\013set.)41 b(If)28 b Fk(direction)i -Fq(is)f(less)390 2647 y(than)40 b(0,)j(then)c(the)h(searc)m(h)h(is)f +b Fg(int)53 b(history_search)d Ff(\()p Fe(const)34 b(c)m(har)g +(*string,)e(in)m(t)i(direction)p Ff(\))390 2537 y Fp(Searc)m(h)29 +b(the)g(history)g(for)g Fj(string)p Fp(,)g(starting)h(at)f(the)g +(curren)m(t)g(history)g(o\013set.)41 b(If)28 b Fj(direction)i +Fp(is)f(less)390 2647 y(than)40 b(0,)j(then)c(the)h(searc)m(h)h(is)f (through)f(previous)h(en)m(tries,)j(otherwise)d(through)g(subsequen)m -(t)390 2756 y(en)m(tries.)i(If)30 b Fk(string)38 b Fq(is)30 +(t)390 2756 y(en)m(tries.)i(If)30 b Fj(string)38 b Fp(is)30 b(found,)g(then)g(the)g(curren)m(t)h(history)f(index)g(is)g(set)h(to)h (that)f(history)f(en)m(try)-8 b(,)390 2866 y(and)22 b -Fp(history_search)c Fq(returns)j(the)i(o\013set)g(in)f(the)h(line)g(of) -f(the)h(en)m(try)f(where)g Fk(string)30 b Fq(w)m(as)23 +Fo(history_search)c Fp(returns)j(the)i(o\013set)g(in)f(the)h(line)g(of) +f(the)h(en)m(try)f(where)g Fj(string)30 b Fp(w)m(as)23 b(found.)390 2976 y(Otherwise,)30 b(nothing)h(is)f(c)m(hanged,)h(and)f (this)g(returns)f(-1.)3350 3141 y([F)-8 b(unction])-3599 -b Fh(int)53 b(history_search_prefix)f Fg(\()p Ff(const)34 -b(c)m(har)g(*string,)f(in)m(t)g(direction)p Fg(\))390 -3251 y Fq(Searc)m(h)41 b(the)g(history)f(for)g Fk(string)p -Fq(,)k(starting)d(at)g(the)g(curren)m(t)f(history)h(o\013set.)72 +b Fg(int)53 b(history_search_prefix)f Ff(\()p Fe(const)34 +b(c)m(har)g(*string,)f(in)m(t)g(direction)p Ff(\))390 +3251 y Fp(Searc)m(h)41 b(the)g(history)f(for)g Fj(string)p +Fp(,)k(starting)d(at)g(the)g(curren)m(t)f(history)h(o\013set.)72 b(The)40 b(searc)m(h)h(is)390 3360 y(anc)m(hored:)49 b(matc)m(hing)36 b(history)e(en)m(tries)i(m)m(ust)e(b)s(egin)g(with)g -Fk(string)p Fq(.)54 b(If)34 b Fk(direction)h Fq(is)f(less)h(than)390 +Fj(string)p Fp(.)54 b(If)34 b Fj(direction)h Fp(is)f(less)h(than)390 3470 y(0,)d(then)e(the)h(searc)m(h)h(is)f(through)f(previous)g(en)m (tries,)i(otherwise)g(through)e(subsequen)m(t)g(en)m(tries.)390 -3579 y(If)h Fk(string)40 b Fq(is)31 b(found,)g(then)h(the)g(curren)m(t) +3579 y(If)h Fj(string)40 b Fp(is)31 b(found,)g(then)h(the)g(curren)m(t) f(history)h(index)f(is)h(set)g(to)h(that)f(en)m(try)-8 b(,)33 b(and)e(the)h(return)390 3689 y(v)-5 b(alue)31 b(is)f(0.)41 b(Otherwise,)31 b(nothing)f(is)g(c)m(hanged,)i(and)d(this) i(returns)e(-1.)3350 3855 y([F)-8 b(unction])-3599 b -Fh(int)53 b(history_search_pos)e Fg(\()p Ff(const)34 +Fg(int)53 b(history_search_pos)e Ff(\()p Fe(const)34 b(c)m(har)g(*string,)f(in)m(t)g(direction,)g(in)m(t)g(p)s(os)p -Fg(\))390 3964 y Fq(Searc)m(h)h(for)g Fk(string)42 b -Fq(in)34 b(the)h(history)f(list,)i(starting)f(at)g Fk(p)s(os)p -Fq(,)g(an)f(absolute)h(index)e(in)m(to)j(the)e(list.)390 -4074 y(If)i Fk(direction)g Fq(is)g(negativ)m(e,)k(the)c(searc)m(h)h -(pro)s(ceeds)f(bac)m(kw)m(ard)g(from)g Fk(p)s(os)p Fq(,)h(otherwise)f +Ff(\))390 3964 y Fp(Searc)m(h)h(for)g Fj(string)42 b +Fp(in)34 b(the)h(history)f(list,)i(starting)f(at)g Fj(p)s(os)p +Fp(,)g(an)f(absolute)h(index)e(in)m(to)j(the)e(list.)390 +4074 y(If)i Fj(direction)g Fp(is)g(negativ)m(e,)k(the)c(searc)m(h)h +(pro)s(ceeds)f(bac)m(kw)m(ard)g(from)g Fj(p)s(os)p Fp(,)h(otherwise)f (forw)m(ard.)390 4183 y(Returns)c(the)h(index)g(in)f(the)h(history)g -(list)h(of)f(the)g(history)g(elemen)m(t)i(where)d Fk(string)41 -b Fq(w)m(as)33 b(found,)390 4293 y(or)d(-1)h(otherwise.)150 -4480 y Fj(2.3.6)63 b(Managing)41 b(the)g(History)h(File)150 -4627 y Fq(The)26 b(History)h(library)f(can)h(read)g(the)f(history)h +(list)h(of)f(the)g(history)g(elemen)m(t)i(where)d Fj(string)41 +b Fp(w)m(as)33 b(found,)390 4293 y(or)d(-1)h(otherwise.)150 +4480 y Fi(2.3.6)63 b(Managing)41 b(the)g(History)h(File)150 +4627 y Fp(The)26 b(History)h(library)f(can)h(read)g(the)f(history)h (from)f(and)g(write)h(it)g(to)g(a)g(\014le.)40 b(This)26 b(section)h(do)s(cumen)m(ts)150 4736 y(the)k(functions)e(for)i (managing)g(a)g(history)f(\014le.)3350 4902 y([F)-8 b(unction])-3599 -b Fh(int)53 b(read_history)c Fg(\()p Ff(const)34 b(c)m(har)g -(*\014lename)p Fg(\))390 5011 y Fq(Add)g(the)h(con)m(ten)m(ts)h(of)f -Fk(\014lename)k Fq(to)d(the)f(history)f(list,)j(one)e(en)m(try)f(at)i -(a)f(time.)54 b(If)34 b Fk(\014lename)40 b Fq(is)390 -5121 y Fp(NULL)p Fq(,)33 b(this)h(reads)f(from)g Fp(~/.history)p -Fq(,)e(if)j(it)g(exists.)50 b(This)33 b(attempts)h(to)g(determine)g +b Fg(int)53 b(read_history)c Ff(\()p Fe(const)34 b(c)m(har)g +(*\014lename)p Ff(\))390 5011 y Fp(Add)g(the)h(con)m(ten)m(ts)h(of)f +Fj(\014lename)k Fp(to)d(the)f(history)f(list,)j(one)e(en)m(try)f(at)i +(a)f(time.)54 b(If)34 b Fj(\014lename)40 b Fp(is)390 +5121 y Fo(NULL)p Fp(,)33 b(this)h(reads)f(from)g Fo(~/.history)p +Fp(,)e(if)j(it)g(exists.)50 b(This)33 b(attempts)h(to)g(determine)g (whether)390 5230 y(the)23 b(history)h(\014le)f(includes)g(timestamp)h (information,)h(and)d(assigns)i(timestamps)g(to)g(the)f(history)390 5340 y(en)m(tries)31 b(it)g(reads)f(if)h(so.)41 b(Returns)29 -b(0)i(if)f(successful,)g(or)h Fp(errno)e Fq(if)h(not.)p +b(0)i(if)f(successful,)g(or)h Fo(errno)e Fp(if)h(not.)p eop end %%Page: 8 11 -TeXDict begin 8 10 bop 150 -116 a Fq(Chapter)30 b(2:)41 +TeXDict begin 8 10 bop 150 -116 a Fp(Chapter)30 b(2:)41 b(Programming)30 b(with)g(GNU)h(History)1780 b(8)3350 -299 y([F)-8 b(unction])-3599 b Fh(int)53 b(read_history_range)e -Fg(\()p Ff(const)34 b(c)m(har)g(*\014lename,)g(in)m(t)f(from,)g(in)m(t) -g(to)p Fg(\))390 408 y Fq(Read)28 b(a)g(range)h(of)f(lines)g(from)f -Fk(\014lename)p Fq(,)i(adding)e(them)h(to)h(the)f(history)g(list.)40 -b(Start)28 b(reading)g(at)390 518 y(line)f Fk(from)e -Fq(and)h(end)f(at)i Fk(to)p Fq(.)41 b(If)25 b Fk(from)h -Fq(is)g(zero,)i(start)f(at)g(the)f(b)s(eginning.)39 b(If)26 -b Fk(to)31 b Fq(is)c(less)f(than)g Fk(from)p Fq(,)390 +299 y([F)-8 b(unction])-3599 b Fg(int)53 b(read_history_range)e +Ff(\()p Fe(const)34 b(c)m(har)g(*\014lename,)g(in)m(t)f(from,)g(in)m(t) +g(to)p Ff(\))390 408 y Fp(Read)28 b(a)g(range)h(of)f(lines)g(from)f +Fj(\014lename)p Fp(,)i(adding)e(them)h(to)h(the)f(history)g(list.)40 +b(Start)28 b(reading)g(at)390 518 y(line)f Fj(from)e +Fp(and)h(end)f(at)i Fj(to)p Fp(.)41 b(If)25 b Fj(from)h +Fp(is)g(zero,)i(start)f(at)g(the)f(b)s(eginning.)39 b(If)26 +b Fj(to)31 b Fp(is)c(less)f(than)g Fj(from)p Fp(,)390 628 y(this)33 b(reads)h(un)m(til)g(the)f(end)g(of)h(the)g(\014le.)50 b(This)33 b(attempts)h(to)h(determine)e(whether)g(the)h(history)390 737 y(\014le)d(includes)f(timestamp)h(information,)h(and)e(assigns)h (timestamps)g(to)g(the)g(history)g(en)m(tries)g(it)390 -847 y(reads)f(if)h(so.)41 b(If)30 b Fk(\014lename)35 -b Fq(is)c Fp(NULL)p Fq(,)e(this)i(reads)f(from)g Fp(~/.history)p -Fq(,)e(if)i(it)h(exists.)42 b(Returns)29 b(0)i(if)390 -956 y(successful,)f(or)h Fp(errno)e Fq(if)h(not.)3350 -1156 y([F)-8 b(unction])-3599 b Fh(int)53 b(write_history)d -Fg(\()p Ff(const)34 b(c)m(har)g(*\014lename)p Fg(\))390 -1265 y Fq(W)-8 b(rite)34 b(the)f(curren)m(t)g(history)g(to)g -Fk(\014lename)p Fq(,)h(o)m(v)m(erwriting)g Fk(\014lename)k -Fq(if)33 b(necessary)-8 b(.)49 b(This)32 b(writes)390 -1375 y(timestamp)37 b(information)g(if)g(the)g Fp -(history_write_timestamps)30 b Fq(v)-5 b(ariable)38 b(is)e(set)i(to)f +847 y(reads)f(if)h(so.)41 b(If)30 b Fj(\014lename)35 +b Fp(is)c Fo(NULL)p Fp(,)e(this)i(reads)f(from)g Fo(~/.history)p +Fp(,)e(if)i(it)h(exists.)42 b(Returns)29 b(0)i(if)390 +956 y(successful,)f(or)h Fo(errno)e Fp(if)h(not.)3350 +1156 y([F)-8 b(unction])-3599 b Fg(int)53 b(write_history)d +Ff(\()p Fe(const)34 b(c)m(har)g(*\014lename)p Ff(\))390 +1265 y Fp(W)-8 b(rite)34 b(the)f(curren)m(t)g(history)g(to)g +Fj(\014lename)p Fp(,)h(o)m(v)m(erwriting)g Fj(\014lename)k +Fp(if)33 b(necessary)-8 b(.)49 b(This)32 b(writes)390 +1375 y(timestamp)37 b(information)g(if)g(the)g Fo +(history_write_timestamps)30 b Fp(v)-5 b(ariable)38 b(is)e(set)i(to)f (a)g(non-)390 1484 y(zero)31 b(v)-5 b(alue.)43 b(If)30 -b Fk(\014lename)36 b Fq(is)31 b Fp(NULL)p Fq(,)e(then)i(write)g(the)g -(history)f(list)i(to)f Fp(~/.history)p Fq(.)39 b(Returns)30 -b(0)390 1594 y(on)g(success,)h(or)f Fp(errno)f Fq(on)i(a)f(read)h(or)f +b Fj(\014lename)36 b Fp(is)31 b Fo(NULL)p Fp(,)e(then)i(write)g(the)g +(history)f(list)i(to)f Fo(~/.history)p Fp(.)39 b(Returns)30 +b(0)390 1594 y(on)g(success,)h(or)f Fo(errno)f Fp(on)i(a)f(read)h(or)f (write)h(error.)3350 1793 y([F)-8 b(unction])-3599 b -Fh(int)53 b(append_history)d Fg(\()p Ff(in)m(t)33 b(nelemen)m(ts,)i -(const)f(c)m(har)f(*\014lename)p Fg(\))390 1903 y Fq(App)s(end)39 -b(the)h(last)i Fk(nelemen)m(ts)j Fq(of)c(the)f(history)h(list)g(to)g -Fk(\014lename)p Fq(.)72 b(This)40 b(writes)g(timestamp)390 -2012 y(information)30 b(if)f(the)h Fp(history_write_timestamps)23 -b Fq(v)-5 b(ariable)30 b(is)f(set)h(to)h(a)e(non-zero)h(v)-5 -b(alue.)41 b(If)390 2122 y Fk(\014lename)d Fq(is)33 b -Fp(NULL)p Fq(,)g(then)g(app)s(end)e(to)i Fp(~/.history)p -Fq(.)46 b(Returns)32 b(0)h(on)g(success,)h(or)f Fp(errno)f -Fq(on)h(a)390 2232 y(read)d(or)h(write)f(error.)3350 -2431 y([F)-8 b(unction])-3599 b Fh(int)53 b(history_truncate_file)f -Fg(\()p Ff(const)34 b(c)m(har)g(*\014lename,)f(in)m(t)h(nlines)p -Fg(\))390 2540 y Fq(T)-8 b(runcate)39 b(the)f(history)h(\014le)f -Fk(\014lename)p Fq(,)j(lea)m(ving)f(only)f(the)g(last)g -Fk(nlines)j Fq(lines.)65 b(If)38 b Fk(\014lename)44 b -Fq(is)390 2650 y Fp(NULL)p Fq(,)29 b(this)i(truncates)f -Fp(~/.history)p Fq(.)38 b(Returns)30 b(0)h(on)f(success,)h(or)f -Fp(errno)f Fq(on)h(failure.)150 2857 y Fj(2.3.7)63 b(History)41 -b(Expansion)150 3004 y Fq(These)30 b(functions)g(implemen)m(t)h +Fg(int)53 b(append_history)d Ff(\()p Fe(in)m(t)33 b(nelemen)m(ts,)i +(const)f(c)m(har)f(*\014lename)p Ff(\))390 1903 y Fp(App)s(end)39 +b(the)h(last)i Fj(nelemen)m(ts)j Fp(of)c(the)f(history)h(list)g(to)g +Fj(\014lename)p Fp(.)72 b(This)40 b(writes)g(timestamp)390 +2012 y(information)30 b(if)f(the)h Fo(history_write_timestamps)23 +b Fp(v)-5 b(ariable)30 b(is)f(set)h(to)h(a)e(non-zero)h(v)-5 +b(alue.)41 b(If)390 2122 y Fj(\014lename)d Fp(is)33 b +Fo(NULL)p Fp(,)g(then)g(app)s(end)e(to)i Fo(~/.history)p +Fp(.)46 b(Returns)32 b(0)h(on)g(success,)h(or)f Fo(errno)f +Fp(on)h(a)390 2232 y(read)d(or)h(write)f(error.)3350 +2431 y([F)-8 b(unction])-3599 b Fg(int)53 b(history_truncate_file)f +Ff(\()p Fe(const)34 b(c)m(har)g(*\014lename,)f(in)m(t)h(nlines)p +Ff(\))390 2540 y Fp(T)-8 b(runcate)39 b(the)f(history)h(\014le)f +Fj(\014lename)p Fp(,)j(lea)m(ving)f(only)f(the)g(last)g +Fj(nlines)j Fp(lines.)65 b(If)38 b Fj(\014lename)44 b +Fp(is)390 2650 y Fo(NULL)p Fp(,)29 b(this)i(truncates)f +Fo(~/.history)p Fp(.)38 b(Returns)30 b(0)h(on)f(success,)h(or)f +Fo(errno)f Fp(on)h(failure.)150 2857 y Fi(2.3.7)63 b(History)41 +b(Expansion)150 3004 y Fp(These)30 b(functions)g(implemen)m(t)h (history)f(expansion.)3350 3203 y([F)-8 b(unction])-3599 -b Fh(int)53 b(history_expand)d Fg(\()p Ff(const)34 b(c)m(har)g -(*string,)e(c)m(har)i(**output)p Fg(\))390 3313 y Fq(Expand)f -Fk(string)p Fq(,)j(placing)f(the)f(result)h(in)m(to)g -Fk(output)p Fq(,)g(a)g(p)s(oin)m(ter)f(to)h(a)g(string)f(\(see)i +b Fg(int)53 b(history_expand)d Ff(\()p Fe(const)34 b(c)m(har)g +(*string,)e(c)m(har)i(**output)p Ff(\))390 3313 y Fp(Expand)f +Fj(string)p Fp(,)j(placing)f(the)f(result)h(in)m(to)g +Fj(output)p Fp(,)g(a)g(p)s(oin)m(ter)f(to)h(a)g(string)f(\(see)i (Section)f(1.1)390 3422 y([History)c(In)m(teraction],)i(page)e(1\).)41 -b(Returns:)390 3593 y Fp(0)432 b Fq(If)37 b(no)g(expansions)g(to)s(ok)i +b(Returns:)390 3593 y Fo(0)432 b Fp(If)37 b(no)g(expansions)g(to)s(ok)i (place)f(\(or,)i(if)d(the)h(only)f(c)m(hange)i(in)e(the)g(text)i(w)m (as)f(the)870 3702 y(remo)m(v)-5 b(al)31 b(of)g(escap)s(e)f(c)m (haracters)i(preceding)e(the)g(history)g(expansion)g(c)m(haracter\);) -390 3869 y Fp(1)432 b Fq(if)30 b(expansions)g(did)g(tak)m(e)i(place;) -390 4036 y Fp(-1)384 b Fq(if)30 b(there)h(w)m(as)g(an)f(error)g(in)g -(expansion;)390 4203 y Fp(2)432 b Fq(if)28 b(the)f(returned)g(line)g +390 3869 y Fo(1)432 b Fp(if)30 b(expansions)g(did)g(tak)m(e)i(place;) +390 4036 y Fo(-1)384 b Fp(if)30 b(there)h(w)m(as)g(an)f(error)g(in)g +(expansion;)390 4203 y Fo(2)432 b Fp(if)28 b(the)f(returned)g(line)g (should)g(b)s(e)g(displa)m(y)m(ed,)i(but)e(not)h(executed,)h(as)f(with) -f(the)h Fp(:p)870 4313 y Fq(mo)s(di\014er)h(\(see)j(Section)f(1.1.3)h +f(the)h Fo(:p)870 4313 y Fp(mo)s(di\014er)h(\(see)j(Section)f(1.1.3)h ([Mo)s(di\014ers],)e(page)i(3\).)390 4483 y(If)f(an)g(error)g(o)s -(ccurred)g(during)f(expansion,)i(then)f Fk(output)i Fq(con)m(tains)g(a) +(ccurred)g(during)f(expansion,)i(then)f Fj(output)i Fp(con)m(tains)g(a) e(descriptiv)m(e)i(error)e(mes-)390 4593 y(sage.)3350 -4792 y([F)-8 b(unction])-3599 b Fh(char)54 b(*)e(get_history_event)f -Fg(\()p Ff(const)34 b(c)m(har)g(*string,)e(in)m(t)h(*cindex,)h(in)m(t) -565 4902 y(qc)m(har)p Fg(\))390 5011 y Fq(Returns)26 +4792 y([F)-8 b(unction])-3599 b Fg(char)54 b(*)e(get_history_event)f +Ff(\()p Fe(const)34 b(c)m(har)g(*string,)e(in)m(t)h(*cindex,)h(in)m(t) +565 4902 y(qc)m(har)p Ff(\))390 5011 y Fp(Returns)26 b(the)g(text)i(of)f(the)g(history)f(ev)m(en)m(t)i(b)s(eginning)e(at)h -Fk(string)35 b Fp(+)26 b Fk(*cindex)p Fq(.)40 b(Mo)s(di\014es)26 -b Fk(*cindex)390 5121 y Fq(to)g(p)s(oin)m(t)f(to)h(after)g(the)f(ev)m +Fj(string)35 b Fo(+)26 b Fj(*cindex)p Fp(.)40 b(Mo)s(di\014es)26 +b Fj(*cindex)390 5121 y Fp(to)g(p)s(oin)m(t)f(to)h(after)g(the)f(ev)m (en)m(t)i(sp)s(eci\014er.)39 b(A)m(t)26 b(function)f(en)m(try)-8 -b(,)27 b Fk(cindex)32 b Fq(p)s(oin)m(ts)25 b(to)h(the)f(index)g(in)m -(to)390 5230 y Fk(string)30 b Fq(where)21 b(the)h(history)g(ev)m(en)m -(t)h(sp)s(eci\014cation)f(b)s(egins.)38 b Fk(qc)m(har)28 -b Fq(is)22 b(a)g(c)m(haracter)i(that)e(is)g(allo)m(w)m(ed)390 +b(,)27 b Fj(cindex)32 b Fp(p)s(oin)m(ts)25 b(to)h(the)f(index)g(in)m +(to)390 5230 y Fj(string)30 b Fp(where)21 b(the)h(history)g(ev)m(en)m +(t)h(sp)s(eci\014cation)f(b)s(egins.)38 b Fj(qc)m(har)28 +b Fp(is)22 b(a)g(c)m(haracter)i(that)e(is)g(allo)m(w)m(ed)390 5340 y(to)31 b(end)f(the)g(ev)m(en)m(t)i(sp)s(eci\014cation)f(in)g (addition)f(to)h(the)g(\\normal")g(terminating)g(c)m(haracters.)p eop end %%Page: 9 12 -TeXDict begin 9 11 bop 150 -116 a Fq(Chapter)30 b(2:)41 +TeXDict begin 9 11 bop 150 -116 a Fp(Chapter)30 b(2:)41 b(Programming)30 b(with)g(GNU)h(History)1780 b(9)3350 -299 y([F)-8 b(unction])-3599 b Fh(char)54 b(**)e(history_tokenize)f -Fg(\()p Ff(const)34 b(c)m(har)g(*string)p Fg(\))390 408 -y Fq(Return)c(an)h(arra)m(y)g(of)g(tok)m(ens)h(parsed)e(out)h(of)g -Fk(string)p Fq(,)h(m)m(uc)m(h)e(as)i(the)f(shell)g(migh)m(t.)43 +299 y([F)-8 b(unction])-3599 b Fg(char)54 b(**)e(history_tokenize)f +Ff(\()p Fe(const)34 b(c)m(har)g(*string)p Ff(\))390 408 +y Fp(Return)c(an)h(arra)m(y)g(of)g(tok)m(ens)h(parsed)e(out)h(of)g +Fj(string)p Fp(,)h(m)m(uc)m(h)e(as)i(the)f(shell)g(migh)m(t.)43 b(The)30 b(tok)m(ens)390 518 y(are)h(split)g(on)f(the)h(c)m(haracters)h -(in)e(the)h Fk(history)p 2006 518 28 4 v 40 w(w)m(ord)p -2241 518 V 39 w(delimiters)k Fq(v)-5 b(ariable,)32 b(and)e(shell)g +(in)e(the)h Fj(history)p 2006 518 28 4 v 40 w(w)m(ord)p +2241 518 V 39 w(delimiters)k Fp(v)-5 b(ariable,)32 b(and)e(shell)g (quoting)390 628 y(con)m(v)m(en)m(tions)i(are)f(ob)s(ey)m(ed)g(as)f (describ)s(ed)g(b)s(elo)m(w.)3350 815 y([F)-8 b(unction])-3599 -b Fh(char)54 b(*)e(history_arg_extract)f Fg(\()p Ff(in)m(t)34 +b Fg(char)54 b(*)e(history_arg_extract)f Ff(\()p Fe(in)m(t)34 b(\014rst,)f(in)m(t)g(last,)g(const)h(c)m(har)f(*string)p -Fg(\))390 924 y Fq(Extract)41 b(a)g(string)f(segmen)m(t)i(consisting)f -(of)f(the)h Fk(\014rst)g Fq(through)f Fk(last)j Fq(argumen)m(ts)e -(presen)m(t)f(in)390 1034 y Fk(string)p Fq(.)h(This)29 -b(splits)i Fk(string)38 b Fq(in)m(to)31 b(argumen)m(ts)g(using)f -Fp(history_tokenize)p Fq(.)150 1277 y Fo(2.4)68 b(History)46 -b(V)-11 b(ariables)150 1436 y Fq(This)26 b(section)i(describ)s(es)e +Ff(\))390 924 y Fp(Extract)41 b(a)g(string)f(segmen)m(t)i(consisting)f +(of)f(the)h Fj(\014rst)g Fp(through)f Fj(last)j Fp(argumen)m(ts)e +(presen)m(t)f(in)390 1034 y Fj(string)p Fp(.)h(This)29 +b(splits)i Fj(string)38 b Fp(in)m(to)31 b(argumen)m(ts)g(using)f +Fo(history_tokenize)p Fp(.)150 1277 y Fn(2.4)68 b(History)46 +b(V)-11 b(ariables)150 1436 y Fp(This)26 b(section)i(describ)s(es)e (the)h(externally-visible)i(v)-5 b(ariables)28 b(exp)s(orted)e(b)m(y)h -(the)g Fl(gnu)g Fq(History)g(Library)-8 b(.)3371 1624 -y([V)g(ariable])-3598 b Fh(int)53 b(history_base)390 -1733 y Fq(The)30 b(logical)j(o\013set)e(of)g(the)f(\014rst)g(en)m(try)g +(the)g Fk(gnu)g Fp(History)g(Library)-8 b(.)3371 1624 +y([V)g(ariable])-3598 b Fg(int)53 b(history_base)390 +1733 y Fp(The)30 b(logical)j(o\013set)e(of)g(the)f(\014rst)g(en)m(try)g (in)h(the)f(history)g(list.)3371 1921 y([V)-8 b(ariable])-3598 -b Fh(int)53 b(history_length)390 2030 y Fq(The)30 b(n)m(um)m(b)s(er)f +b Fg(int)53 b(history_length)390 2030 y Fp(The)30 b(n)m(um)m(b)s(er)f (of)h(en)m(tries)i(curren)m(tly)e(stored)h(in)f(the)g(history)g(list.) -3371 2217 y([V)-8 b(ariable])-3598 b Fh(int)53 b(history_max_entries) -390 2327 y Fq(The)45 b(maxim)m(um)h(n)m(um)m(b)s(er)f(of)h(history)g +3371 2217 y([V)-8 b(ariable])-3598 b Fg(int)53 b(history_max_entries) +390 2327 y Fp(The)45 b(maxim)m(um)h(n)m(um)m(b)s(er)f(of)h(history)g (en)m(tries.)88 b(This)45 b(m)m(ust)h(b)s(e)f(c)m(hanged)i(using)e -Fp(stifle_)390 2437 y(history\(\))p Fq(.)3371 2624 y([V)-8 -b(ariable])-3598 b Fh(int)53 b(history_write_timesta)q(mps)390 -2733 y Fq(If)44 b(non-zero,)49 b(timestamps)c(are)g(written)g(to)g(the) +Fo(stifle_)390 2437 y(history\(\))p Fp(.)3371 2624 y([V)-8 +b(ariable])-3598 b Fg(int)53 b(history_write_timesta)q(mps)390 +2733 y Fp(If)44 b(non-zero,)49 b(timestamps)c(are)g(written)g(to)g(the) g(history)f(\014le,)49 b(so)c(they)f(can)h(b)s(e)f(preserv)m(ed)390 2843 y(b)s(et)m(w)m(een)31 b(sessions.)41 b(The)30 b(default)g(v)-5 b(alue)31 b(is)f(0,)h(meaning)g(that)g(timestamps)g(are)g(not)f(sa)m(v) m(ed.)390 2979 y(The)41 b(curren)m(t)g(timestamp)h(format)g(uses)f(the) -h(v)-5 b(alue)42 b(of)f Fk(history)p 2697 2979 V 41 w(commen)m(t)p -3098 2979 V 41 w(c)m(har)48 b Fq(to)42 b(delimit)390 +h(v)-5 b(alue)42 b(of)f Fj(history)p 2697 2979 V 41 w(commen)m(t)p +3098 2979 V 41 w(c)m(har)48 b Fp(to)42 b(delimit)390 3089 y(timestamp)h(en)m(tries)g(in)f(the)g(history)h(\014le.)76 b(If)42 b(that)h(v)-5 b(ariable)43 b(do)s(es)f(not)g(ha)m(v)m(e)i(a)f (v)-5 b(alue)42 b(\(the)390 3198 y(default\),)31 b(the)g(history)f (library)g(will)h(not)f(write)h(timestamps.)3371 3385 -y([V)-8 b(ariable])-3598 b Fh(char)54 b(history_expansion_char)390 -3495 y Fq(The)35 b(c)m(haracter)i(that)e(in)m(tro)s(duces)g(a)h +y([V)-8 b(ariable])-3598 b Fg(char)54 b(history_expansion_char)390 +3495 y Fp(The)35 b(c)m(haracter)i(that)e(in)m(tro)s(duces)g(a)h (history)f(ev)m(en)m(t.)57 b(The)34 b(default)i(is)f(`)p -Fp(!)p Fq('.)56 b(Setting)35 b(this)h(to)g(0)390 3605 +Fo(!)p Fp('.)56 b(Setting)35 b(this)h(to)g(0)390 3605 y(inhibits)30 b(history)g(expansion.)3371 3792 y([V)-8 -b(ariable])-3598 b Fh(char)54 b(history_subst_char)390 -3901 y Fq(The)40 b(c)m(haracter)i(that)g(in)m(v)m(ok)m(es)g(w)m(ord)f +b(ariable])-3598 b Fg(char)54 b(history_subst_char)390 +3901 y Fp(The)40 b(c)m(haracter)i(that)g(in)m(v)m(ok)m(es)g(w)m(ord)f (substitution)f(if)h(found)e(at)i(the)g(start)g(of)g(a)g(line.)72 -b(The)390 4011 y(default)31 b(is)f(`)p Fp(^)p Fq('.)3371 -4198 y([V)-8 b(ariable])-3598 b Fh(char)54 b(history_comment_char)390 -4308 y Fq(During)34 b(tok)m(enization,)39 b(if)c(this)g(c)m(haracter)h +b(The)390 4011 y(default)31 b(is)f(`)p Fo(^)p Fp('.)3371 +4198 y([V)-8 b(ariable])-3598 b Fg(char)54 b(history_comment_char)390 +4308 y Fp(During)34 b(tok)m(enization,)39 b(if)c(this)g(c)m(haracter)h (app)s(ears)e(as)h(the)g(\014rst)f(c)m(haracter)i(of)f(a)g(w)m(ord,)h (then)390 4418 y(it)44 b(and)e(all)j(subsequen)m(t)d(c)m(haracters)j (up)d(to)i(a)g(newline)f(are)h(ignored,)i(suppressing)c(history)390 4527 y(expansion)30 b(for)g(the)h(remainder)f(of)g(the)h(line.)41 b(This)29 b(is)i(disabled)f(b)m(y)g(default.)3371 4714 -y([V)-8 b(ariable])-3598 b Fh(char)54 b(*)e(history_word_delimiter)q(s) -390 4824 y Fq(The)27 b(c)m(haracters)i(that)f(separate)h(tok)m(ens)f -(for)f Fp(history_tokenize\(\))p Fq(.)35 b(The)27 b(default)h(v)-5 -b(alue)28 b(is)f Fp(")390 4934 y(\\t\\n\(\)<>;&|")p Fq(.)3371 -5121 y([V)-8 b(ariable])-3598 b Fh(char)54 b(*)e -(history_search_delimit)q(er_)q(cha)q(rs)390 5230 y Fq(The)26 +y([V)-8 b(ariable])-3598 b Fg(char)54 b(*)e(history_word_delimiter)q(s) +390 4824 y Fp(The)27 b(c)m(haracters)i(that)f(separate)h(tok)m(ens)f +(for)f Fo(history_tokenize\(\))p Fp(.)35 b(The)27 b(default)h(v)-5 +b(alue)28 b(is)f Fo(")390 4934 y(\\t\\n\(\)<>;&|")p Fp(.)3371 +5121 y([V)-8 b(ariable])-3598 b Fg(char)54 b(*)e +(history_search_delimit)q(er_)q(cha)q(rs)390 5230 y Fp(The)26 b(list)g(of)g(additional)h(c)m(haracters)h(whic)m(h)e(can)g(delimit)h (a)f(history)g(searc)m(h)h(string,)g(in)f(addition)390 -5340 y(to)31 b(space,)g(T)-8 b(AB,)32 b(`)p Fp(:)p Fq(')e(and)g(`)p -Fp(?)p Fq(')g(in)g(the)h(case)g(of)g(a)g(substring)e(searc)m(h.)41 +5340 y(to)31 b(space,)g(T)-8 b(AB,)32 b(`)p Fo(:)p Fp(')e(and)g(`)p +Fo(?)p Fp(')g(in)g(the)h(case)g(of)g(a)g(substring)e(searc)m(h.)41 b(The)30 b(default)h(is)f(empt)m(y)-8 b(.)p eop end %%Page: 10 13 -TeXDict begin 10 12 bop 150 -116 a Fq(Chapter)30 b(2:)41 +TeXDict begin 10 12 bop 150 -116 a Fp(Chapter)30 b(2:)41 b(Programming)30 b(with)g(GNU)h(History)1734 b(10)3371 -299 y([V)-8 b(ariable])-3598 b Fh(char)54 b(*)e(history_no_expand_char) -q(s)390 408 y Fq(The)29 b(list)i(of)f(c)m(haracters)h(whic)m(h)e +299 y([V)-8 b(ariable])-3598 b Fg(char)54 b(*)e(history_no_expand_char) +q(s)390 408 y Fp(The)29 b(list)i(of)f(c)m(haracters)h(whic)m(h)e (inhibit)h(history)g(expansion)f(if)h(found)e(immediately)j(follo)m -(wing)390 518 y Fk(history)p 672 518 28 4 v 40 w(expansion)p -1104 518 V 40 w(c)m(har)p Fq(.)41 b(The)30 b(default)g(is)h(space,)g -(tab,)g(newline,)f(carriage)i(return,)e(and)g(`)p Fp(=)p -Fq('.)3371 696 y([V)-8 b(ariable])-3598 b Fh(int)53 b +(wing)390 518 y Fj(history)p 672 518 28 4 v 40 w(expansion)p +1104 518 V 40 w(c)m(har)p Fp(.)41 b(The)30 b(default)g(is)h(space,)g +(tab,)g(newline,)f(carriage)i(return,)e(and)g(`)p Fo(=)p +Fp('.)3371 696 y([V)-8 b(ariable])-3598 b Fg(int)53 b (history_quotes_inhibi)q(t_ex)q(pan)q(sio)q(n)390 806 -y Fq(If)33 b(non-zero,)j(the)d(history)h(expansion)f(co)s(de)h +y Fp(If)33 b(non-zero,)j(the)d(history)h(expansion)f(co)s(de)h (implemen)m(ts)g(shell-lik)m(e)i(quoting:)48 b(single-quoted)390 916 y(w)m(ords)37 b(are)h(not)g(scanned)f(for)g(the)h(history)f (expansion)g(c)m(haracter)i(or)f(the)f(history)h(commen)m(t)390 @@ -5952,44 +5953,44 @@ y Fq(If)33 b(non-zero,)j(the)d(history)h(expansion)f(co)s(de)h (ha)m(v)m(e)h(history)f(expansion)g(p)s(erformed,)i(since)390 1135 y(single)31 b(quotes)g(are)g(not)f(sp)s(ecial)h(within)f(double)g (quotes.)41 b(The)30 b(default)h(v)-5 b(alue)30 b(is)h(0.)3371 -1313 y([V)-8 b(ariable])-3598 b Fh(int)53 b(history_quoting_state)390 -1423 y Fq(An)27 b(application)j(ma)m(y)e(set)g(this)g(v)-5 +1313 y([V)-8 b(ariable])-3598 b Fg(int)53 b(history_quoting_state)390 +1423 y Fp(An)27 b(application)j(ma)m(y)e(set)g(this)g(v)-5 b(ariable)29 b(to)f(indicate)h(that)g(the)f(curren)m(t)f(line)h(b)s (eing)g(expanded)390 1532 y(is)h(sub)5 b(ject)28 b(to)i(existing)f -(quoting.)41 b(If)28 b(set)h(to)h(`)p Fp(')p Fq(',)f(history)g +(quoting.)41 b(If)28 b(set)h(to)h(`)p Fo(')p Fp(',)f(history)g (expansion)f(assumes)h(that)g(the)g(line)g(is)390 1642 y(single-quoted)36 b(and)e(inhibit)g(expansion)g(un)m(til)h(it)g(reads) g(an)f(unquoted)g(closing)i(single)f(quote;)390 1751 -y(if)k(set)h(to)h(`)p Fp(")p Fq(',)h(history)d(expansion)g(assumes)h +y(if)k(set)h(to)h(`)p Fo(")p Fp(',)h(history)d(expansion)g(assumes)h (the)f(line)h(is)f(double)h(quoted)f(un)m(til)h(it)g(reads)f(an)390 1861 y(unquoted)d(closing)j(double)e(quote.)62 b(If)37 b(set)h(to)g(0,)i(the)d(default,)j(history)d(expansion)g(assumes)390 1971 y(the)29 b(line)h(is)f(not)g(quoted)h(and)e(treats)i(quote)g(c)m (haracters)h(within)d(the)i(line)f(as)g(describ)s(ed)f(ab)s(o)m(v)m(e.) 390 2080 y(This)33 b(is)h(only)f(e\013ectiv)m(e)k(if)c -Fk(history)p 1621 2080 V 40 w(quotes)p 1916 2080 V 41 -w(inhibit)p 2220 2080 V 40 w(expansion)g Fq(is)h(set.)51 +Fj(history)p 1621 2080 V 40 w(quotes)p 1916 2080 V 41 +w(inhibit)p 2220 2080 V 40 w(expansion)g Fp(is)h(set.)51 b(This)33 b(is)h(in)m(tended)f(for)390 2190 y(use)d(b)m(y)g (applications)i(lik)m(e)g(Bash)e(whic)m(h)g(allo)m(w)i(quoted)f (strings)f(to)h(span)e(m)m(ultiple)j(lines.)3371 2368 -y([V)-8 b(ariable])-3598 b Fh(rl_linebuf_func_t)57 b(*)c +y([V)-8 b(ariable])-3598 b Fg(rl_linebuf_func_t)57 b(*)c (history_inhibit_expans)q(ion)q(_fu)q(ncti)q(on)390 2478 -y Fq(This)32 b(should)h(b)s(e)f(set)i(to)g(the)g(address)e(of)i(a)f +y Fp(This)32 b(should)h(b)s(e)f(set)i(to)g(the)g(address)e(of)i(a)f (function)g(that)h(tak)m(es)h(t)m(w)m(o)g(argumen)m(ts:)46 -b(a)34 b Fp(char)29 b(*)390 2587 y Fq(\()p Fk(string)8 -b Fq(\))27 b(and)f(an)g Fp(int)g Fq(index)g(in)m(to)i(that)f(string)f -(\()p Fk(i)5 b Fq(\).)40 b(It)27 b(should)f(return)f(a)i(non-zero)g(v) +b(a)34 b Fo(char)29 b(*)390 2587 y Fp(\()p Fj(string)8 +b Fp(\))27 b(and)f(an)g Fo(int)g Fp(index)g(in)m(to)i(that)f(string)f +(\()p Fj(i)5 b Fp(\).)40 b(It)27 b(should)f(return)f(a)i(non-zero)g(v) -5 b(alue)27 b(if)g(the)390 2697 y(history)i(expansion)g(starting)h(at) -g Fk(string[i])j Fq(should)28 b(not)i(b)s(e)e(p)s(erformed;)h(zero)h +g Fj(string[i])j Fp(should)28 b(not)i(b)s(e)e(p)s(erformed;)h(zero)h (if)f(the)g(expansion)390 2806 y(should)i(b)s(e)g(done.)45 b(It)32 b(is)g(in)m(tended)g(for)g(use)g(b)m(y)f(applications)i(lik)m (e)h(Bash)e(that)g(use)g(the)g(history)390 2916 y(expansion)e(c)m (haracter)i(for)e(additional)i(purp)s(oses.)39 b(By)30 b(default,)h(this)f(v)-5 b(ariable)31 b(is)g(set)g(to)g -Fp(NULL)p Fq(.)150 3153 y Fo(2.5)68 b(History)46 b(Programming)g -(Example)150 3312 y Fq(The)30 b(follo)m(wing)i(program)e(demonstrates)h -(simple)f(use)g(of)h(the)f Fl(gnu)g Fq(History)h(Library)-8 -b(.)390 3422 y Fe(#include)41 b()390 3509 y(#include)g +Fo(NULL)p Fp(.)150 3153 y Fn(2.5)68 b(History)46 b(Programming)g +(Example)150 3312 y Fp(The)30 b(follo)m(wing)i(program)e(demonstrates)h +(simple)f(use)g(of)h(the)f Fk(gnu)g Fp(History)h(Library)-8 +b(.)390 3422 y Fd(#include)41 b()390 3509 y(#include)g ()390 3684 y(int)390 3771 y(main)f(\(int)g(argc,)h (char)f(**argv\))390 3858 y({)468 3945 y(char)h(line[1024],)g(*t;)468 4032 y(int)f(len,)g(done)h(=)e(0;)468 4207 y(line[0])i(=)f(0;)468 @@ -6001,9 +6002,9 @@ y(fflush)g(\(stdout\);)625 4817 y(t)f(=)f(fgets)i(\(line,)f(sizeof)h y(if)g(\(t[len)h(-)e(1])h(==)f('\\n'\))861 5253 y(t[len)h(-)g(1])f(=)h ('\\0';)704 5340 y(})p eop end %%Page: 11 14 -TeXDict begin 11 13 bop 150 -116 a Fq(Chapter)30 b(2:)41 +TeXDict begin 11 13 bop 150 -116 a Fp(Chapter)30 b(2:)41 b(Programming)30 b(with)g(GNU)h(History)1734 b(11)625 -386 y Fe(if)40 b(\(!t\))704 473 y(strcpy)g(\(line,)h("quit"\);)625 +386 y Fd(if)40 b(\(!t\))704 473 y(strcpy)g(\(line,)h("quit"\);)625 648 y(if)f(\(line[0]\))704 735 y({)782 822 y(char)g(*expansion;)782 909 y(int)g(result;)782 1083 y(result)h(=)e(history_expand)k(\(line,)d (&expansion\);)782 1171 y(if)g(\(result\))861 1258 y(fprintf)h @@ -6035,23 +6036,23 @@ y({)1096 4658 y(free)f(\(entry->line\);)1096 4745 y(free)g(\(entry\);) 5181 y(fprintf)h(\(stderr,)g("non-numeric)h(arg)e(given)g(to)g (`delete'\\n"\);)861 5268 y(})p eop end %%Page: 12 15 -TeXDict begin 12 14 bop 150 -116 a Fq(Chapter)30 b(2:)41 +TeXDict begin 12 14 bop 150 -116 a Fp(Chapter)30 b(2:)41 b(Programming)30 b(with)g(GNU)h(History)1734 b(12)704 -299 y Fe(})547 386 y(})390 473 y(})p eop end +299 y Fd(})547 386 y(})390 473 y(})p eop end %%Page: 13 16 -TeXDict begin 13 15 bop 3659 -116 a Fq(13)150 299 y Fm(App)t(endix)52 +TeXDict begin 13 15 bop 3659 -116 a Fp(13)150 299 y Fl(App)t(endix)52 b(A)81 b(GNU)54 b(F)-13 b(ree)53 b(Do)t(cumen)l(tation)e(License)1359 -502 y Fq(V)-8 b(ersion)31 b(1.3,)g(3)g(No)m(v)m(em)m(b)s(er)h(2008)390 -635 y(Cop)m(yrigh)m(t)842 632 y(c)817 635 y Fn(\015)e -Fq(2000,)j(2001,)f(2002,)g(2007,)h(2008)f(F)-8 b(ree)31 +502 y Fp(V)-8 b(ersion)31 b(1.3,)g(3)g(No)m(v)m(em)m(b)s(er)h(2008)390 +635 y(Cop)m(yrigh)m(t)842 632 y(c)817 635 y Fm(\015)e +Fp(2000,)j(2001,)f(2002,)g(2007,)h(2008)f(F)-8 b(ree)31 b(Soft)m(w)m(are)h(F)-8 b(oundation,)31 b(Inc.)390 745 -y Fp(http://fsf.org/)390 964 y Fq(Ev)m(ery)m(one)g(is)g(p)s(ermitted)f +y Fo(http://fsf.org/)390 964 y Fp(Ev)m(ery)m(one)g(is)g(p)s(ermitted)f (to)h(cop)m(y)g(and)f(distribute)g(v)m(erbatim)h(copies)390 1074 y(of)g(this)f(license)h(do)s(cumen)m(t,)g(but)e(c)m(hanging)j(it)f (is)f(not)h(allo)m(w)m(ed.)199 1207 y(0.)61 b(PREAMBLE)330 1340 y(The)37 b(purp)s(ose)e(of)i(this)g(License)h(is)f(to)h(mak)m(e)g (a)g(man)m(ual,)h(textb)s(o)s(ok,)h(or)d(other)g(functional)h(and)330 -1450 y(useful)29 b(do)s(cumen)m(t)h Fk(free)36 b Fq(in)29 +1450 y(useful)29 b(do)s(cumen)m(t)h Fj(free)36 b Fp(in)29 b(the)i(sense)f(of)g(freedom:)41 b(to)31 b(assure)e(ev)m(ery)m(one)j (the)e(e\013ectiv)m(e)j(freedom)330 1559 y(to)f(cop)m(y)g(and)f (redistribute)g(it,)h(with)g(or)f(without)g(mo)s(difying)g(it,)i @@ -6121,7 +6122,7 @@ b(\\In)m(v)-5 b(arian)m(t)27 b(Sections")g(are)f(certain)g(Secondary)g b(Sections,)i(in)d(the)h(notice)h(that)f(sa)m(ys)g(that)g(the)g(Do)s (cumen)m(t)g(is)g(released)p eop end %%Page: 14 17 -TeXDict begin 14 16 bop 150 -116 a Fq(App)s(endix)29 +TeXDict begin 14 16 bop 150 -116 a Fp(App)s(endix)29 b(A:)h(GNU)h(F)-8 b(ree)32 b(Do)s(cumen)m(tation)g(License)1603 b(14)330 299 y(under)26 b(this)i(License.)40 b(If)27 b(a)h(section)h(do)s(es)f(not)f(\014t)h(the)g(ab)s(o)m(v)m(e)h @@ -6161,23 +6162,23 @@ b(is)f(not)h(T)-8 b(ransparen)m(t)34 b(if)g(used)g(for)g(an)m(y)g (substan)m(tial)h(amoun)m(t)g(of)g(text.)53 b(A)35 b(cop)m(y)g(that)g (is)330 2134 y(not)c(\\T)-8 b(ransparen)m(t")31 b(is)f(called)i (\\Opaque".)330 2285 y(Examples)53 b(of)g(suitable)h(formats)f(for)g(T) --8 b(ransparen)m(t)53 b(copies)h(include)f(plain)g Fl(asci)r(i)g -Fq(without)330 2395 y(markup,)37 b(T)-8 b(exinfo)36 b(input)f(format,)j +-8 b(ransparen)m(t)53 b(copies)h(include)f(plain)g Fk(asci)r(i)g +Fp(without)330 2395 y(markup,)37 b(T)-8 b(exinfo)36 b(input)f(format,)j (LaT)1759 2414 y(E)1810 2395 y(X)e(input)f(format,)j -Fd(SGML)f Fq(or)f Fd(XML)g Fq(using)g(a)g(publicly)330 -2504 y(a)m(v)-5 b(ailable)42 b Fd(DTD)p Fq(,)h(and)c -(standard-conforming)g(simple)h Fd(HTML)p Fq(,)i(P)m(ostScript)e(or)f -Fd(PDF)h Fq(designed)330 2614 y(for)e(h)m(uman)f(mo)s(di\014cation.)65 +Fr(SGML)f Fp(or)f Fr(XML)g Fp(using)g(a)g(publicly)330 +2504 y(a)m(v)-5 b(ailable)42 b Fr(DTD)p Fp(,)h(and)c +(standard-conforming)g(simple)h Fr(HTML)p Fp(,)i(P)m(ostScript)e(or)f +Fr(PDF)h Fp(designed)330 2614 y(for)e(h)m(uman)f(mo)s(di\014cation.)65 b(Examples)38 b(of)h(transparen)m(t)f(image)h(formats)g(include)f -Fd(PNG)p Fq(,)i Fd(X)n(CF)330 2724 y Fq(and)e Fd(JPG)p -Fq(.)64 b(Opaque)38 b(formats)h(include)f(proprietary)h(formats)f(that) +Fr(PNG)p Fp(,)i Fr(X)n(CF)330 2724 y Fp(and)e Fr(JPG)p +Fp(.)64 b(Opaque)38 b(formats)h(include)f(proprietary)h(formats)f(that) h(can)g(b)s(e)f(read)h(and)f(edited)330 2833 y(only)54 b(b)m(y)f(proprietary)h(w)m(ord)f(pro)s(cessors,)59 b -Fd(SGML)54 b Fq(or)f Fd(XML)h Fq(for)g(whic)m(h)f(the)h -Fd(DTD)g Fq(and/or)330 2943 y(pro)s(cessing)61 b(to)s(ols)h(are)f(not)g +Fr(SGML)54 b Fp(or)f Fr(XML)h Fp(for)g(whic)m(h)f(the)h +Fr(DTD)g Fp(and/or)330 2943 y(pro)s(cessing)61 b(to)s(ols)h(are)f(not)g (generally)i(a)m(v)-5 b(ailable,)71 b(and)60 b(the)h(mac)m -(hine-generated)j Fd(HTML)p Fq(,)330 3052 y(P)m(ostScript)31 -b(or)f Fd(PDF)h Fq(pro)s(duced)d(b)m(y)j(some)f(w)m(ord)g(pro)s +(hine-generated)j Fr(HTML)p Fp(,)330 3052 y(P)m(ostScript)31 +b(or)f Fr(PDF)h Fp(pro)s(duced)d(b)m(y)j(some)f(w)m(ord)g(pro)s (cessors)g(for)g(output)g(purp)s(oses)f(only)-8 b(.)330 3203 y(The)34 b(\\Title)h(P)m(age")i(means,)e(for)f(a)h(prin)m(ted)f(b) s(o)s(ok,)h(the)f(title)i(page)f(itself,)h(plus)e(suc)m(h)f(follo)m @@ -6215,7 +6216,7 @@ b(Disclaimers)f(ma)m(y)g(ha)m(v)m(e)g(is)f(v)m(oid)g(and)f(has)h(no)330 5189 y(e\013ect)32 b(on)e(the)h(meaning)f(of)h(this)f(License.)199 5340 y(2.)61 b(VERBA)-8 b(TIM)31 b(COPYING)p eop end %%Page: 15 18 -TeXDict begin 15 17 bop 150 -116 a Fq(App)s(endix)29 +TeXDict begin 15 17 bop 150 -116 a Fp(App)s(endix)29 b(A:)h(GNU)h(F)-8 b(ree)32 b(Do)s(cumen)m(tation)g(License)1603 b(15)330 299 y(Y)-8 b(ou)39 b(ma)m(y)f(cop)m(y)h(and)e(distribute)h (the)g(Do)s(cumen)m(t)h(in)f(an)m(y)g(medium,)h(either)g(commercially)h @@ -6308,7 +6309,7 @@ b(in)f(the)h(Title)h(P)m(age)g(\(and)f(on)f(the)h(co)m(v)m(ers,)i(if)e (ersions)h(\(whic)m(h)g(should,)g(if)g(there)g(w)m(ere)g(an)m(y)-8 b(,)p eop end %%Page: 16 19 -TeXDict begin 16 18 bop 150 -116 a Fq(App)s(endix)29 +TeXDict begin 16 18 bop 150 -116 a Fp(App)s(endix)29 b(A:)h(GNU)h(F)-8 b(ree)32 b(Do)s(cumen)m(tation)g(License)1603 b(16)510 299 y(b)s(e)31 b(listed)h(in)f(the)g(History)h(section)g(of)g (the)f(Do)s(cumen)m(t\).)45 b(Y)-8 b(ou)32 b(ma)m(y)g(use)f(the)g(same) @@ -6390,7 +6391,7 @@ b(arran)m(t)m(y)32 b(Disclaimers.)330 5121 y(If)h(the)g(Mo)s(di\014ed)g b(arian)m(t.)48 b(T)-8 b(o)33 b(do)f(this,)h(add)f(their)p eop end %%Page: 17 20 -TeXDict begin 17 19 bop 150 -116 a Fq(App)s(endix)29 +TeXDict begin 17 19 bop 150 -116 a Fp(App)s(endix)29 b(A:)h(GNU)h(F)-8 b(ree)32 b(Do)s(cumen)m(tation)g(License)1603 b(17)330 299 y(titles)37 b(to)f(the)f(list)h(of)g(In)m(v)-5 b(arian)m(t)36 b(Sections)g(in)f(the)h(Mo)s(di\014ed)f(V)-8 @@ -6478,7 +6479,7 @@ b(ma)m(y)g(extract)h(a)f(single)g(do)s(cumen)m(t)f(from)g(suc)m(h)g(a)h (other)g(resp)s(ects)f(regarding)h(v)m(erbatim)g(cop)m(ying)h(of)330 5340 y(that)d(do)s(cumen)m(t.)p eop end %%Page: 18 21 -TeXDict begin 18 20 bop 150 -116 a Fq(App)s(endix)29 +TeXDict begin 18 20 bop 150 -116 a Fp(App)s(endix)29 b(A:)h(GNU)h(F)-8 b(ree)32 b(Do)s(cumen)m(tation)g(License)1603 b(18)199 299 y(7.)61 b(A)m(GGREGA)-8 b(TION)32 b(WITH)e(INDEPENDENT)h (W)m(ORKS)330 441 y(A)d(compilation)i(of)e(the)g(Do)s(cumen)m(t)h(or)f @@ -6566,7 +6567,7 @@ b(ha)m(v)m(e)h(receiv)m(ed)h(copies)e(or)h(righ)m(ts)f(from)g(y)m(ou)g (the)330 5340 y(same)31 b(material)h(do)s(es)e(not)g(giv)m(e)i(y)m(ou)f (an)m(y)g(righ)m(ts)f(to)i(use)e(it.)p eop end %%Page: 19 22 -TeXDict begin 19 21 bop 150 -116 a Fq(App)s(endix)29 +TeXDict begin 19 21 bop 150 -116 a Fp(App)s(endix)29 b(A:)h(GNU)h(F)-8 b(ree)32 b(Do)s(cumen)m(tation)g(License)1603 b(19)154 299 y(10.)61 b(FUTURE)30 b(REVISIONS)f(OF)i(THIS)e(LICENSE)330 433 y(The)41 b(F)-8 b(ree)43 b(Soft)m(w)m(are)f(F)-8 @@ -6576,7 +6577,7 @@ b(License)e(from)g(time)h(to)g(time.)46 b(Suc)m(h)31 b(new)h(v)m(ersions)g(will)h(b)s(e)e(similar)h(in)g(spirit)330 653 y(to)j(the)g(presen)m(t)f(v)m(ersion,)i(but)e(ma)m(y)h(di\013er)f (in)g(detail)h(to)g(address)f(new)g(problems)f(or)i(concerns.)330 -762 y(See)c Fp(http://www.gnu.org/copy)o(left)o(/)p Fq(.)330 +762 y(See)c Fo(http://www.gnu.org/copy)o(left)o(/)p Fp(.)330 897 y(Eac)m(h)f(v)m(ersion)g(of)g(the)f(License)h(is)g(giv)m(en)g(a)g (distinguishing)f(v)m(ersion)h(n)m(um)m(b)s(er.)39 b(If)29 b(the)g(Do)s(cumen)m(t)330 1006 y(sp)s(eci\014es)45 b(that)h(a)g @@ -6633,16 +6634,16 @@ g(under)330 3895 y(CC-BY-SA)30 b(on)g(the)h(same)f(site)h(at)g(an)m(y)g (time)g(b)s(efore)e(August)h(1,)h(2009,)h(pro)m(vided)e(the)g(MMC)h(is) 330 4005 y(eligible)h(for)e(relicensing.)p eop end %%Page: 20 23 -TeXDict begin 20 22 bop 150 -116 a Fq(App)s(endix)29 +TeXDict begin 20 22 bop 150 -116 a Fp(App)s(endix)29 b(A:)h(GNU)h(F)-8 b(ree)32 b(Do)s(cumen)m(tation)g(License)1603 -b(20)150 299 y Fo(ADDENDUM:)45 b(Ho)l(w)h(to)f(use)g(this)h(License)f -(for)g(y)l(our)g(do)t(cumen)l(ts)150 458 y Fq(T)-8 b(o)35 +b(20)150 299 y Fn(ADDENDUM:)45 b(Ho)l(w)h(to)f(use)g(this)h(License)f +(for)g(y)l(our)g(do)t(cumen)l(ts)150 458 y Fp(T)-8 b(o)35 b(use)f(this)h(License)g(in)f(a)h(do)s(cumen)m(t)g(y)m(ou)f(ha)m(v)m(e) i(written,)g(include)f(a)f(cop)m(y)i(of)f(the)f(License)h(in)g(the)150 568 y(do)s(cumen)m(t)30 b(and)g(put)g(the)g(follo)m(wing)i(cop)m(yrigh) m(t)g(and)e(license)h(notices)g(just)f(after)h(the)g(title)h(page:)468 -680 y Fe(Copyright)42 b(\(C\))79 b Fc(year)g(your)40 -b(name)p Fe(.)468 767 y(Permission)i(is)e(granted)g(to)g(copy,)h +680 y Fd(Copyright)42 b(\(C\))79 b Fc(year)g(your)40 +b(name)p Fd(.)468 767 y(Permission)i(is)e(granted)g(to)g(copy,)h (distribute)g(and/or)g(modify)f(this)g(document)468 854 y(under)h(the)f(terms)g(of)g(the)g(GNU)g(Free)g(Documentation)i (License,)f(Version)g(1.3)468 941 y(or)f(any)g(later)g(version)h @@ -6650,15 +6651,15 @@ y(under)h(the)f(terms)g(of)g(the)g(GNU)g(Free)g(Documentation)i 1029 y(with)g(no)e(Invariant)j(Sections,)f(no)f(Front-Cover)h(Texts,)g (and)f(no)f(Back-Cover)468 1116 y(Texts.)80 b(A)40 b(copy)g(of)g(the)f (license)i(is)f(included)h(in)f(the)g(section)g(entitled)h(``GNU)468 -1203 y(Free)g(Documentation)h(License''.)275 1337 y Fq(If)d(y)m(ou)h +1203 y(Free)g(Documentation)h(License''.)275 1337 y Fp(If)d(y)m(ou)h (ha)m(v)m(e)h(In)m(v)-5 b(arian)m(t)41 b(Sections,)i(F)-8 b(ron)m(t-Co)m(v)m(er)42 b(T)-8 b(exts)41 b(and)e(Bac)m(k-Co)m(v)m(er)k (T)-8 b(exts,)43 b(replace)e(the)150 1447 y(\\with)6 b(.)22 b(.)g(.)12 b(T)-8 b(exts.")41 b(line)31 b(with)f(this:)547 -1559 y Fe(with)40 b(the)g(Invariant)h(Sections)g(being)g -Fc(list)f(their)g(titles)p Fe(,)h(with)547 1646 y(the)f(Front-Cover)i -(Texts)e(being)g Fc(list)p Fe(,)h(and)f(with)g(the)g(Back-Cover)h -(Texts)547 1733 y(being)f Fc(list)p Fe(.)275 1868 y Fq(If)34 +1559 y Fd(with)40 b(the)g(Invariant)h(Sections)g(being)g +Fc(list)f(their)g(titles)p Fd(,)h(with)547 1646 y(the)f(Front-Cover)i +(Texts)e(being)g Fc(list)p Fd(,)h(and)f(with)g(the)g(Back-Cover)h +(Texts)547 1733 y(being)f Fc(list)p Fd(.)275 1868 y Fp(If)34 b(y)m(ou)i(ha)m(v)m(e)g(In)m(v)-5 b(arian)m(t)36 b(Sections)g(without)f (Co)m(v)m(er)h(T)-8 b(exts,)38 b(or)d(some)g(other)h(com)m(bination)g (of)g(the)150 1978 y(three,)31 b(merge)g(those)g(t)m(w)m(o)g @@ -6671,15 +6672,15 @@ b(as)g(the)g(GNU)150 2331 y(General)31 b(Public)f(License,)i(to)f(p)s (ermit)e(their)i(use)f(in)g(free)g(soft)m(w)m(are.)p eop end %%Page: 21 24 -TeXDict begin 21 23 bop 150 -116 a Fq(App)s(endix)29 -b(B:)i(Concept)f(Index)2391 b(21)150 100 y Fm(App)t(endix)52 -b(B)81 b(Concept)51 b(Index)146 434 y Fo(A)150 550 y +TeXDict begin 21 23 bop 150 -116 a Fp(App)s(endix)29 +b(B:)i(Concept)f(Index)2391 b(21)150 100 y Fl(App)t(endix)52 +b(B)81 b(Concept)51 b(Index)146 434 y Fn(A)150 550 y Fb(anc)n(hored)26 b(searc)n(h)12 b Fa(:)i(:)f(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)g(:)g(:)h(:)f(:)27 b Fb(7)146 782 y Fo(E)150 +g(:)g(:)g(:)g(:)g(:)h(:)f(:)27 b Fb(7)146 782 y Fn(E)150 898 y Fb(ev)n(en)n(t)e(designators)7 b Fa(:)14 b(:)f(:)h(:)f(:)g(:)g(:) g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)22 b Fb(1)146 1140 y Fo(H)150 +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)22 b Fb(1)146 1140 y Fn(H)150 1256 y Fb(history)k(ev)n(en)n(ts)12 b Fa(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:) g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)27 b Fb(1)150 @@ -6690,38 +6691,38 @@ b Fa(:)d(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)31 b Fb(7)p eop end %%Page: 22 25 -TeXDict begin 22 24 bop 150 -116 a Fq(App)s(endix)29 +TeXDict begin 22 24 bop 150 -116 a Fp(App)s(endix)29 b(C:)h(F)-8 b(unction)31 b(and)f(V)-8 b(ariable)32 b(Index)1832 -b(22)150 100 y Fm(App)t(endix)52 b(C)81 b(F)-13 b(unction)52 -b(and)h(V)-13 b(ariable)53 b(Index)150 400 y Fe(history_base)10 +b(22)150 100 y Fl(App)t(endix)52 b(C)81 b(F)-13 b(unction)52 +b(and)h(V)-13 b(ariable)53 b(Index)150 400 y Fd(history_base)10 b Fa(:)16 b(:)d(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)25 b Fb(9)150 487 y Fe(history_comment_char)7 b Fa(:)17 +g(:)25 b Fb(9)150 487 y Fd(history_comment_char)7 b Fa(:)17 b(:)c(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)22 b Fb(9)150 574 y Fe +(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)22 b Fb(9)150 574 y Fd (history_expansion_char)i Fa(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)34 -b Fb(9)150 661 y Fe(history_inhibit_expansion_fun)q(ctio)q(n)26 +b Fb(9)150 661 y Fd(history_inhibit_expansion_fun)q(ctio)q(n)26 b Fa(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)34 b Fb(10)150 -749 y Fe(history_length)25 b Fa(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g +749 y Fd(history_length)25 b Fa(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)37 b Fb(9)150 836 y Fe(history_max_entries)9 +f(:)g(:)g(:)g(:)g(:)37 b Fb(9)150 836 y Fd(history_max_entries)9 b Fa(:)18 b(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)24 b Fb(9)150 -923 y Fe(history_no_expand_chars)14 b Fa(:)k(:)13 b(:)h(:)f(:)g(:)g(:)g +923 y Fd(history_no_expand_chars)14 b Fa(:)k(:)13 b(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)28 -b Fb(10)150 1010 y Fe(history_quotes_inhibit_expans)q(ion)9 +b Fb(10)150 1010 y Fd(history_quotes_inhibit_expans)q(ion)9 b Fa(:)18 b(:)c(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)22 -b Fb(10)150 1097 y Fe(history_quoting_state)i Fa(:)13 +b Fb(10)150 1097 y Fd(history_quoting_state)i Fa(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)33 b Fb(10)150 1184 y Fe +(:)g(:)g(:)h(:)f(:)33 b Fb(10)150 1184 y Fd (history_search_delimiter_char)q(s)15 b Fa(:)k(:)13 b(:)g(:)h(:)f(:)g -(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)30 b Fb(9)150 1272 y Fe +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)30 b Fb(9)150 1272 y Fd (history_subst_char)12 b Fa(:)17 b(:)c(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -27 b Fb(9)150 1359 y Fe(history_word_delimiters)16 b +27 b Fb(9)150 1359 y Fd(history_word_delimiters)16 b Fa(:)i(:)c(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)31 b Fb(9)150 1446 y Fe(history_write_timestamps)13 +(:)f(:)g(:)g(:)g(:)31 b Fb(9)150 1446 y Fd(history_write_timestamps)13 b Fa(:)19 b(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)g(:)h(:)28 b Fb(9)p eop end %%Trailer diff --git a/doc/history_3.ps b/doc/history_3.ps index 9ec1747..f74c4bc 100644 --- a/doc/history_3.ps +++ b/doc/history_3.ps @@ -1,6 +1,6 @@ %!PS-Adobe-3.0 %%Creator: groff version 1.23.0 -%%CreationDate: Fri Dec 13 10:00:12 2024 +%%CreationDate: Wed Jun 25 16:09:16 2025 %%DocumentNeededResources: font Times-Italic %%+ font Times-Roman %%+ font Times-Bold @@ -273,7 +273,7 @@ BP (HIST)128.935 E(OR)-.18 E(Y)-.18 E F1(\(3\))1.27 E/F2 10.95/Times-Bold@0 SF -.219(NA)72 84 S(ME).219 E F1(history \255 GNU History Library)108 96 Q F2(COPYRIGHT)72 112.8 Q F1(The GNU History Library is Cop)108 124.8 Q -(yright \251 1989-2024 by the Free Softw)-.1 E(are F)-.1 E +(yright \251 1989-2025 by the Free Softw)-.1 E(are F)-.1 E (oundation, Inc.)-.15 E F2(DESCRIPTION)72 141.6 Q F1(Man)108 153.6 Q 2.81(yp)-.15 G .31(rograms read input from the user a line at a time.) -2.81 F .309(The GNU History library is able to k)5.309 F .309 @@ -377,8 +377,7 @@ E F1 .496(is follo)3.216 F .496(wed immediately by a ne)-.25 F 2.996 (wline. If)-.25 F F0(string)2.996 E F1(is)2.996 E .039(missing, this us\ es the string from the most recent search; it is an error if there is n\ o pre)144 717.6 R .04(vious search)-.25 F(string.)144 729.6 Q -(GNU History 8.3)72 768 Q(2024 No)126.385 E -.15(ve)-.15 G(mber 29).15 E -(1)190.545 E 0 Cg EP +(GNU History 8.3)72 768 Q(2024 December 31)126.795 E(1)190.955 E 0 Cg EP %%Page: 2 2 %%BeginPageSetup BP @@ -504,7 +503,7 @@ E F4(:s)A F1(\232, an)A 2.5(yd)-.15 G (OGRAMMING WITH HIST)-.329 E(OR)-.197 E 2.738(YF)-.383 G(UNCTIONS)-2.738 E F1(This section describes ho)108 712.8 Q 2.5(wt)-.25 G 2.5(ou)-2.5 G (se the History library in other programs.)-2.5 E(GNU History 8.3)72 768 -Q(2024 No)126.385 E -.15(ve)-.15 G(mber 29).15 E(2)190.545 E 0 Cg EP +Q(2024 December 31)126.795 E(2)190.955 E 0 Cg EP %%Page: 3 3 %%BeginPageSetup BP @@ -580,8 +579,8 @@ F0(HIST)108 684 Q(OR)-.18 E(Y_ST)-.18 E -.37(AT)-.5 G 2.5(E*).37 G F2 E F1(\()4.166 E F0(HIST)A(OR)-.18 E(Y_ST)-.18 E -.37(AT)-.5 G 2.5(E*).37 G(state)-2.5 E F1(\))1.666 E (Set the state of the history list according to)108 724.8 Q F0(state)2.5 -E F1(.)A(GNU History 8.3)72 768 Q(2024 No)126.385 E -.15(ve)-.15 G -(mber 29).15 E(3)190.545 E 0 Cg EP +E F1(.)A(GNU History 8.3)72 768 Q(2024 December 31)126.795 E(3)190.955 E +0 Cg EP %%Page: 4 4 %%BeginPageSetup BP @@ -678,8 +677,7 @@ ed with the history entry passed as the ar)108 660 Q(gument.)-.18 E F0 (Return the number of bytes that the primary history entries are using.) 108 688.8 R .391(This function returns the sum of the)5.392 F (lengths of all the lines in the history)108 700.8 Q(.)-.65 E -(GNU History 8.3)72 768 Q(2024 No)126.385 E -.15(ve)-.15 G(mber 29).15 E -(4)190.545 E 0 Cg EP +(GNU History 8.3)72 768 Q(2024 December 31)126.795 E(4)190.955 E 0 Cg EP %%Page: 5 5 %%BeginPageSetup BP @@ -805,8 +803,8 @@ Q F2(append_history)2.5 E F1(\()4.166 E F0(int nelements,)A(const c) 2.758 E F2(NULL)2.759 E F1 2.759(,t)C(hen)-2.759 E F0(\001/.history) 2.759 E F1(is)2.759 E 2.5(truncated. Returns)108 722.4 R 2.5(0o)2.5 G 2.5(ns)-2.5 G(uccess, or)-2.5 E F2(err)2.5 E(no)-.15 E F1(on f)2.5 E -(ailure.)-.1 E(GNU History 8.3)72 768 Q(2024 No)126.385 E -.15(ve)-.15 G -(mber 29).15 E(5)190.545 E 0 Cg EP +(ailure.)-.1 E(GNU History 8.3)72 768 Q(2024 December 31)126.795 E(5) +190.955 E 0 Cg EP %%Page: 6 6 %%BeginPageSetup BP @@ -910,7 +908,7 @@ F2(history_w)2.5 E(ord_delimiters)-.1 E F1 (ault is space, tab, ne)-.1 E(wline,)-.25 E F2(\\r)2.5 E F1 2.5(,a)C(nd) -2.5 E F2(=)2.5 E F1(.)A F0 -.15(ch)108 720 S(ar *).15 E F2 (history_sear)2.5 E(ch_delimiter_chars)-.18 E F1(GNU History 8.3)72 768 -Q(2024 No)126.385 E -.15(ve)-.15 G(mber 29).15 E(6)190.545 E 0 Cg EP +Q(2024 December 31)126.795 E(6)190.955 E 0 Cg EP %%Page: 7 7 %%BeginPageSetup BP @@ -994,8 +992,7 @@ E(eadline)-.37 E F1(@)A F0(gnu.or)A(g)-.37 E F1 -.2 E F1(.)A(Comments and b)108 588 Q (ug reports concerning this manual page should be directed to)-.2 E F0 -.15(ch)2.5 G(et.r).15 E(ame)-.15 E(y@case)-.3 E(.edu)-.15 E F1(.).25 E -(GNU History 8.3)72 768 Q(2024 No)126.385 E -.15(ve)-.15 G(mber 29).15 E -(7)190.545 E 0 Cg EP +(GNU History 8.3)72 768 Q(2024 December 31)126.795 E(7)190.955 E 0 Cg EP %%Trailer end %%EOF diff --git a/doc/readline.3 b/doc/readline.3 index f66e21a..dac6618 100644 --- a/doc/readline.3 +++ b/doc/readline.3 @@ -6,9 +6,9 @@ .\" Case Western Reserve University .\" chet.ramey@case.edu .\" -.\" Last Change: Mon Dec 30 11:27:47 EST 2024 +.\" Last Change: Tue Jul 15 10:19:29 EDT 2025 .\" -.TH READLINE 3 "2024 December 30" "GNU Readline 8.3" +.TH READLINE 3 "2024 July 15" "GNU Readline 8.3" .\" .ie \n(.g \{\ .ds ' \(aq @@ -473,6 +473,10 @@ Type .Q "stty \-a" at a \fBbash\fP prompt to see your current terminal settings, including the special control characters (usually \fBcchars\fP). +This binding takes place on each call to \fBreadline\fP, +so changes made by +.Q stty +can take effect. .TP .B blink\-matching\-paren (Off) If set to \fBOn\fP, \fBreadline\fP attempts to briefly move the cursor to an diff --git a/doc/readline.ps b/doc/readline.ps index 9afd0d2..a984b5a 100644 --- a/doc/readline.ps +++ b/doc/readline.ps @@ -1,7 +1,7 @@ %!PS-Adobe-2.0 %%Creator: dvips(k) 2024.1 (TeX Live 2024) Copyright 2024 Radical Eye Software %%Title: readline.dvi -%%CreationDate: Fri Dec 13 15:00:12 2024 +%%CreationDate: Wed Jun 25 20:09:16 2025 %%Pages: 89 %%PageOrder: Ascend %%BoundingBox: 0 0 612 792 @@ -12,7 +12,7 @@ %DVIPSWebPage: (www.radicaleye.com) %DVIPSCommandLine: dvips -D 600 -t letter -o readline.ps readline.dvi %DVIPSParameters: dpi=600 -%DVIPSSource: TeX output 2024.12.13:1000 +%DVIPSSource: TeX output 2025.03.31:1028 %%BeginProcSet: tex.pro 0 0 %! /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S @@ -6704,20 +6704,19 @@ ifelse %%Page: 1 1 TeXDict begin 1 0 bop 150 1318 a Fu(GNU)65 b(Readline)g(Library)p 150 1418 3600 34 v 1873 1515 a Ft(Edition)30 b(8.3,)i(for)e -Fs(Readline)e(Library)h Ft(V)-8 b(ersion)31 b(8.3.)3139 -1623 y(No)m(v)m(em)m(b)s(er)g(2024)150 4927 y Fr(Chet)45 -b(Ramey)-11 b(,)46 b(Case)g(W)-11 b(estern)46 b(Reserv)l(e)g(Univ)l -(ersit)l(y)150 5068 y(Brian)f(F)-11 b(o)l(x,)45 b(F)-11 -b(ree)45 b(Soft)l(w)l(are)h(F)-11 b(oundation)p 150 5141 -3600 17 v eop end +Fs(Readline)e(Library)h Ft(V)-8 b(ersion)31 b(8.3.)3145 +1623 y(Decem)m(b)s(er)g(2024)150 4927 y Fr(Chet)45 b(Ramey)-11 +b(,)46 b(Case)g(W)-11 b(estern)46 b(Reserv)l(e)g(Univ)l(ersit)l(y)150 +5068 y(Brian)f(F)-11 b(o)l(x,)45 b(F)-11 b(ree)45 b(Soft)l(w)l(are)h(F) +-11 b(oundation)p 150 5141 3600 17 v eop end %%Page: 2 2 -TeXDict begin 2 1 bop 150 4413 a Ft(This)22 b(man)m(ual)h(describ)s(es) -g(the)g(GNU)g(Readline)h(Library)e(\(v)m(ersion)i(8.3,)h(29)f(No)m(v)m -(em)m(b)s(er)g(2024\),)j(a)c(library)150 4523 y(whic)m(h)39 +TeXDict begin 2 1 bop 150 4413 a Ft(This)23 b(man)m(ual)g(describ)s(es) +g(the)h(GNU)g(Readline)g(Library)e(\(v)m(ersion)j(8.3,)h(30)e(Decem)m +(b)s(er)g(2024\),)k(a)23 b(library)150 4523 y(whic)m(h)39 b(aids)g(in)g(the)g(consistency)h(of)g(user)e(in)m(terface)j(across)f (discrete)g(programs)e(whic)m(h)h(pro)m(vide)h(a)150 4633 y(command)30 b(line)h(in)m(terface.)150 4767 y(Cop)m(yrigh)m(t)602 -4764 y(c)577 4767 y Fq(\015)f Ft(1988{2024)35 b(F)-8 +4764 y(c)577 4767 y Fq(\015)f Ft(1988{2025)35 b(F)-8 b(ree)31 b(Soft)m(w)m(are)h(F)-8 b(oundation,)31 b(Inc.)390 4902 y(P)m(ermission)21 b(is)f(gran)m(ted)h(to)g(cop)m(y)-8 b(,)24 b(distribute)c(and/or)h(mo)s(dify)e(this)i(do)s(cumen)m(t)f @@ -7264,14 +7263,14 @@ b(This)37 b(v)-5 b(ariable)38 b(is)f(reset)h(to)1110 2436 y(tained)40 b(from)f(the)h(terminal's)g(terminfo)g(description.)68 b(A)40 b(sample)f(v)-5 b(alue)1110 2545 y(migh)m(t)31 b(b)s(e)f(`)p Fs(\\e[01;33m)p Ft('.)630 2710 y Fs -(active-region-end-color)1110 2819 y Ft(A)48 b(string)g(v)-5 -b(ariable)48 b(that)h Fs(")p Ft(undo)s(es)p Fs(")d Ft(the)i(e\013ects)h -(of)f Fs(active-region-)1110 2929 y(start-color)36 b -Ft(and)i(restores)h Fs(")p Ft(normal)p Fs(")f Ft(terminal)h(displa)m(y) -g(app)s(earance)1110 3039 y(after)26 b(displa)m(ying)h(text)f(in)g(the) -g(activ)m(e)i(region.)40 b(This)25 b(string)h(m)m(ust)f(not)h(tak)m(e) -1110 3148 y(up)e(an)m(y)h(ph)m(ysical)h(c)m(haracter)h(p)s(ositions)d -(on)h(the)h(displa)m(y)-8 b(,)27 b(so)e(it)g(should)f(con-)1110 +(active-region-end-color)1110 2819 y Ft(A)48 b(string)h(v)-5 +b(ariable)49 b(that)g(\\undo)s(es")f(the)h(e\013ects)g(of)g +Fs(active-region-)1110 2929 y(start-color)36 b Ft(and)j(restores)h +(\\normal")g(terminal)g(displa)m(y)g(app)s(earance)1110 +3039 y(after)26 b(displa)m(ying)h(text)f(in)g(the)g(activ)m(e)i +(region.)40 b(This)25 b(string)h(m)m(ust)f(not)h(tak)m(e)1110 +3148 y(up)e(an)m(y)h(ph)m(ysical)h(c)m(haracter)h(p)s(ositions)d(on)h +(the)h(displa)m(y)-8 b(,)27 b(so)e(it)g(should)f(con-)1110 3258 y(sist)29 b(only)h(of)f(terminal)h(escap)s(e)f(sequences.)41 b(It)29 b(is)g(output)g(to)h(the)f(terminal)1110 3367 y(after)36 b(displa)m(ying)g(the)g(text)h(in)e(the)h(activ)m(e)i @@ -7858,9 +7857,9 @@ b Fk(HH)1110 4852 y Ft(\(one)31 b(or)f(t)m(w)m(o)i(hex)e(digits\).)630 (or)f(double)g(quotes)h(m)m(ust)f(b)s(e)g(used)f(to)630 5121 y(indicate)d(a)f(macro)g(de\014nition.)45 b(Unquoted)32 b(text)g(is)g(assumed)f(to)i(b)s(e)e(a)h(function)g(name.)630 -5230 y(Tthe)24 b(bac)m(kslash)g(escap)s(es)h(describ)s(ed)e(ab)s(o)m(v) -m(e)i(are)f(expanded)f(in)h(the)g(macro)h(b)s(o)s(dy)-8 -b(.)37 b(Bac)m(k-)630 5340 y(slash)g(will)h(quote)h(an)m(y)f(other)f(c) +5230 y(The)27 b(bac)m(kslash)h(escap)s(es)g(describ)s(ed)e(ab)s(o)m(v)m +(e)i(are)g(expanded)f(in)g(the)g(macro)h(b)s(o)s(dy)-8 +b(.)39 b(Bac)m(k-)630 5340 y(slash)e(will)h(quote)h(an)m(y)f(other)f(c) m(haracter)j(in)d(the)h(macro)g(text,)j(including)c(`)p Fs(")p Ft(')h(and)f(`)p Fs(')p Ft('.)p eop end %%Page: 14 18 @@ -7979,8 +7978,8 @@ h(binding,)e(v)-5 b(ariable)27 b(assignmen)m(t,)i(and)150 %%Page: 16 20 TeXDict begin 16 19 bop 150 -116 a Ft(Chapter)30 b(1:)41 b(Command)29 b(Line)i(Editing)2107 b(16)390 408 y Fs(#)47 -b(This)g(file)g(controls)e(the)i(behaviour)e(of)j(line)e(input)h -(editing)e(for)390 518 y(#)i(programs)f(that)h(use)g(the)f(GNU)h +b(This)g(file)g(controls)e(the)i(behavior)f(of)h(line)g(input)f +(editing)g(for)390 518 y(#)h(programs)f(that)h(use)g(the)f(GNU)h (Readline)f(library.)93 b(Existing)390 628 y(#)47 b(programs)f(include) g(FTP,)g(Bash,)h(and)g(GDB.)390 737 y(#)390 847 y(#)g(You)g(can)g (re-read)f(the)h(inputrc)f(file)g(with)h(C-x)g(C-r.)390 @@ -8108,58 +8107,60 @@ b(Command)29 b(Line)i(Editing)2107 b(19)630 299 y(not)27 b(tak)m(e)i(up)e(more)g(than)g(one)g(ph)m(ysical)h(line)g(or)f(if)g (the)h(length)f(of)h(the)f(curren)m(t)g(Readline)630 408 y(line)k(is)f(not)h(greater)g(than)f(the)h(length)g(of)f(the)h -(prompt)e(plus)h(the)g(screen)h(width.)150 564 y Fs(clear-display)c -(\(M-C-l\))630 674 y Ft(Clear)33 b(the)g(screen)g(and,)h(if)e(p)s +(prompt)e(plus)h(the)g(screen)h(width.)150 556 y Fs(clear-display)c +(\(M-C-l\))630 665 y Ft(Clear)33 b(the)g(screen)g(and,)h(if)e(p)s (ossible,)i(the)f(terminal's)g(scrollbac)m(k)i(bu\013er,)e(then)f -(redra)m(w)630 784 y(the)f(curren)m(t)f(line,)h(lea)m(ving)h(the)e +(redra)m(w)630 775 y(the)f(curren)m(t)f(line,)h(lea)m(ving)h(the)e (curren)m(t)h(line)f(at)h(the)g(top)g(of)f(the)h(screen.)150 -940 y Fs(clear-screen)c(\(C-l\))630 1049 y Ft(Clear)35 +922 y Fs(clear-screen)c(\(C-l\))630 1032 y Ft(Clear)35 b(the)f(screen,)i(then)e(redra)m(w)g(the)h(curren)m(t)f(line,)i(lea)m -(ving)g(the)f(curren)m(t)f(line)h(at)g(the)630 1159 y(top)c(of)f(the)h -(screen.)150 1315 y Fs(redraw-current-line)25 b(\(\))630 -1424 y Ft(Refresh)30 b(the)g(curren)m(t)h(line.)41 b(By)30 -b(default,)h(this)f(is)h(un)m(b)s(ound.)150 1620 y Fi(1.4.2)63 +(ving)g(the)f(curren)m(t)f(line)h(at)g(the)630 1141 y(top)e(of)h(the)f +(screen.)49 b(If)33 b(giv)m(en)h(a)g(n)m(umeric)f(argumen)m(t,)i(this)e +(refreshes)f(the)i(curren)m(t)f(line)630 1251 y(without)d(clearing)i +(the)f(screen.)150 1398 y Fs(redraw-current-line)25 b(\(\))630 +1508 y Ft(Refresh)30 b(the)g(curren)m(t)h(line.)41 b(By)30 +b(default,)h(this)f(is)h(un)m(b)s(ound.)150 1695 y Fi(1.4.2)63 b(Commands)42 b(F)-10 b(or)41 b(Manipulating)h(The)f(History)150 -1790 y Fs(accept-line)27 b(\(Newline)h(or)i(Return\))630 -1900 y Ft(Accept)h(the)g(line)f(regardless)h(of)f(where)g(the)g(cursor) +1861 y Fs(accept-line)27 b(\(Newline)h(or)i(Return\))630 +1970 y Ft(Accept)h(the)g(line)f(regardless)h(of)f(where)g(the)g(cursor) f(is.)41 b(If)30 b(this)g(line)g(is)h(non-empt)m(y)-8 -b(,)31 b(y)m(ou)630 2010 y(can)36 b(add)f(it)i(to)f(the)g(history)g +b(,)31 b(y)m(ou)630 2080 y(can)36 b(add)f(it)i(to)f(the)g(history)g (list)h(using)e Fs(add_history\(\))p Ft(.)54 b(If)35 -b(this)h(line)g(is)g(a)g(mo)s(di\014ed)630 2119 y(history)30 +b(this)h(line)g(is)g(a)g(mo)s(di\014ed)630 2189 y(history)30 b(line,)h(then)f(restore)h(the)g(history)f(line)h(to)g(its)g(original)g -(state.)150 2275 y Fs(previous-history)26 b(\(C-p\))630 -2385 y Ft(Mo)m(v)m(e)h(`bac)m(k')f(through)f(the)g(history)g(list,)i +(state.)150 2337 y Fs(previous-history)26 b(\(C-p\))630 +2446 y Ft(Mo)m(v)m(e)h(`bac)m(k')f(through)f(the)g(history)g(list,)i (fetc)m(hing)f(the)f(previous)f(command.)39 b(This)24 -b(ma)m(y)630 2494 y(also)31 b(b)s(e)f(b)s(ound)e(to)j(the)g(up)e(arro)m -(w)i(k)m(ey)g(on)f(some)h(k)m(eyb)s(oards.)150 2650 y -Fs(next-history)c(\(C-n\))630 2760 y Ft(Mo)m(v)m(e)k(`forw)m(ard')d +b(ma)m(y)630 2556 y(also)31 b(b)s(e)f(b)s(ound)e(to)j(the)g(up)e(arro)m +(w)i(k)m(ey)g(on)f(some)h(k)m(eyb)s(oards.)150 2703 y +Fs(next-history)c(\(C-n\))630 2813 y Ft(Mo)m(v)m(e)k(`forw)m(ard')d (through)g(the)h(history)f(list,)i(fetc)m(hing)f(the)g(next)g(command.) -40 b(This)27 b(ma)m(y)630 2870 y(also)k(b)s(e)f(b)s(ound)e(to)j(the)g +40 b(This)27 b(ma)m(y)630 2922 y(also)k(b)s(e)f(b)s(ound)e(to)j(the)g (do)m(wn)f(arro)m(w)g(k)m(ey)i(on)e(some)h(k)m(eyb)s(oards.)150 -3026 y Fs(beginning-of-history)25 b(\(M-<\))630 3135 +3069 y Fs(beginning-of-history)25 b(\(M-<\))630 3179 y Ft(Mo)m(v)m(e)32 b(to)g(the)e(\014rst)g(line)g(in)h(the)f(history)-8 -b(.)150 3291 y Fs(end-of-history)26 b(\(M->\))630 3401 +b(.)150 3326 y Fs(end-of-history)26 b(\(M->\))630 3436 y Ft(Mo)m(v)m(e)32 b(to)g(the)e(end)g(of)g(the)h(input)e(history)-8 b(,)31 b(i.e.,)h(the)f(line)f(curren)m(tly)h(b)s(eing)f(en)m(tered.)150 -3557 y Fs(reverse-search-history)24 b(\(C-r\))630 3666 +3583 y Fs(reverse-search-history)24 b(\(C-r\))630 3693 y Ft(Searc)m(h)31 b(bac)m(kw)m(ard)h(starting)g(at)g(the)f(curren)m(t)g (line)g(and)g(mo)m(ving)h(`up')e(through)h(the)g(his-)630 -3776 y(tory)26 b(as)h(necessary)-8 b(.)40 b(This)25 b(is)i(an)f +3802 y(tory)26 b(as)h(necessary)-8 b(.)40 b(This)25 b(is)i(an)f (incremen)m(tal)h(searc)m(h.)40 b(This)25 b(command)h(sets)h(the)f -(region)630 3886 y(to)31 b(the)g(matc)m(hed)g(text)g(and)f(activ)-5 -b(ates)33 b(the)d(region.)150 4042 y Fs(forward-search-history)24 -b(\(C-s\))630 4151 y Ft(Searc)m(h)44 b(forw)m(ard)f(starting)h(at)h +(region)630 3912 y(to)31 b(the)g(matc)m(hed)g(text)g(and)f(activ)-5 +b(ates)33 b(the)d(region.)150 4059 y Fs(forward-search-history)24 +b(\(C-s\))630 4169 y Ft(Searc)m(h)44 b(forw)m(ard)f(starting)h(at)h (the)e(curren)m(t)h(line)g(and)f(mo)m(ving)h(`do)m(wn')g(through)f(the) -630 4261 y(history)38 b(as)g(necessary)-8 b(.)65 b(This)38 +630 4278 y(history)38 b(as)g(necessary)-8 b(.)65 b(This)38 b(is)g(an)g(incremen)m(tal)h(searc)m(h.)65 b(This)37 -b(command)h(sets)h(the)630 4370 y(region)31 b(to)g(the)g(matc)m(hed)g +b(command)h(sets)h(the)630 4388 y(region)31 b(to)g(the)g(matc)m(hed)g (text)g(and)f(activ)-5 b(ates)33 b(the)d(region.)150 -4526 y Fs(non-incremental-reverse-)o(sear)o(ch-h)o(ist)o(ory)24 -b(\(M-p\))630 4636 y Ft(Searc)m(h)31 b(bac)m(kw)m(ard)h(starting)g(at)g +4535 y Fs(non-incremental-reverse-)o(sear)o(ch-h)o(ist)o(ory)24 +b(\(M-p\))630 4645 y Ft(Searc)m(h)31 b(bac)m(kw)m(ard)h(starting)g(at)g (the)f(curren)m(t)g(line)g(and)g(mo)m(ving)h(`up')e(through)h(the)g -(his-)630 4746 y(tory)36 b(as)g(necessary)h(using)e(a)i(non-incremen)m +(his-)630 4754 y(tory)36 b(as)g(necessary)h(using)e(a)i(non-incremen)m (tal)g(searc)m(h)f(for)g(a)g(string)g(supplied)f(b)m(y)h(the)630 -4855 y(user.)k(The)30 b(searc)m(h)h(string)f(ma)m(y)h(matc)m(h)g(an)m +4864 y(user.)k(The)30 b(searc)m(h)h(string)f(ma)m(y)h(matc)m(h)g(an)m (ywhere)g(in)f(a)h(history)f(line.)150 5011 y Fs (non-incremental-forward-)o(sear)o(ch-h)o(ist)o(ory)24 b(\(M-n\))630 5121 y Ft(Searc)m(h)44 b(forw)m(ard)f(starting)h(at)h @@ -8485,10 +8486,10 @@ y(format,)j(writing)f(information)h(on)f(separate)i(lines:)705 3782 y Fq(\017)60 b Ft(the)31 b(n)m(um)m(b)s(er)e(of)h(matc)m(hes)i Fk(N)10 b Ft(;)705 3914 y Fq(\017)60 b Ft(the)31 b(w)m(ord)f(b)s(eing)g (completed;)705 4045 y Fq(\017)60 b Fk(S)5 b Ft(:)p Fk(E)p -Ft(,)25 b(where)d(S)h(and)f(E)h(are)h(the)f(start)h(and)e(end)h -(o\013sets)h(of)f(the)g(w)m(ord)g(in)g(the)g(Readline)810 -4155 y(line)31 b(bu\013er;)e(then)705 4287 y Fq(\017)60 -b Ft(eac)m(h)32 b(matc)m(h,)f(one)g(p)s(er)e(line)630 +Ft(,)24 b(where)e Fk(S)27 b Ft(and)22 b Fk(E)28 b Ft(are)23 +b(the)f(start)h(and)f(end)g(o\013sets)h(of)g(the)f(w)m(ord)h(in)f(the)g +(Readline)810 4155 y(line)31 b(bu\013er;)e(then)705 4287 +y Fq(\017)60 b Ft(eac)m(h)32 b(matc)m(h,)f(one)g(p)s(er)e(line)630 4441 y(If)j(there)h(are)g(no)f(matc)m(hes,)j(the)e(\014rst)e(line)i (will)g(b)s(e)f(\\0",)j(and)d(this)g(command)g(do)s(es)h(not)630 4551 y(prin)m(t)42 b(an)m(y)h(output)e(after)i(the)g @@ -8678,10 +8679,10 @@ b(c)m(hapter)i(describ)s(es)e(the)h(in)m(terface)h(b)s(et)m(w)m(een)g Fr(2.1)68 b(Basic)45 b(Beha)l(vior)150 1276 y Ft(Man)m(y)39 b(programs)e(pro)m(vide)h(a)h(command)f(line)g(in)m(terface,)k(suc)m(h) 37 b(as)i Fs(mail)p Ft(,)g Fs(ftp)p Ft(,)g(and)e Fs(sh)p -Ft(.)63 b(F)-8 b(or)39 b(suc)m(h)150 1386 y(programs,)29 -b(the)f(default)h(b)s(eha)m(viour)f(of)h(Readline)g(is)g(su\016cien)m -(t.)40 b(This)28 b(section)i(describ)s(es)d(ho)m(w)i(to)g(use)150 -1496 y(Readline)i(in)f(the)h(simplest)f(w)m(a)m(y)i(p)s(ossible,)e(p)s +Ft(.)63 b(F)-8 b(or)39 b(suc)m(h)150 1386 y(programs,)33 +b(the)f(default)g(b)s(eha)m(vior)h(of)f(Readline)h(is)f(su\016cien)m +(t.)47 b(This)31 b(section)j(describ)s(es)d(ho)m(w)h(to)h(use)150 +1496 y(Readline)e(in)f(the)h(simplest)f(w)m(a)m(y)i(p)s(ossible,)e(p)s (erhaps)e(to)j(replace)h(calls)f(in)f(y)m(our)h(co)s(de)f(to)h Fs(fgets\(\))p Ft(.)275 1633 y(The)38 b(function)g Fs(readline\(\))e Ft(prin)m(ts)i(a)i(prompt)d Fk(prompt)j Ft(and)e(then)h(reads)f(and)g @@ -8753,26 +8754,25 @@ y(/*)i(If)f(the)g(line)f(has)h(any)g(text)g(in)g(it,)629 1943 y(save)f(it)h(on)h(the)f(history.)e(*/)485 2052 y(if)j(\(line_read)d(&&)i(*line_read\))581 2162 y(add_history)e (\(line_read\);)485 2381 y(return)i(\(line_read\);)390 -2491 y(})275 2622 y Ft(This)30 b(function)h(giv)m(es)i(the)e(user)g -(the)g(default)h(b)s(eha)m(viour)f(of)g Fs(TAB)g Ft(completion:)43 -b(\014lename)32 b(comple-)150 2732 y(tion.)40 b(If)28 -b(y)m(ou)g(do)g(not)g(w)m(an)m(t)h(Readline)f(to)h(complete)g -(\014lenames,)g(y)m(ou)f(can)g(c)m(hange)h(the)f(binding)f(of)h(the)150 -2841 y Fs(TAB)h Ft(k)m(ey)j(with)e Fs(rl_bind_key\(\))p -Ft(.)390 2973 y Fs(int)47 b(rl_bind_key)e(\(int)h Fl(key)p -Fs(,)h(rl_command_func_t)c(*)p Fl(function)p Fs(\);)275 -3104 y(rl_bind_key\(\))29 b Ft(tak)m(es)35 b(t)m(w)m(o)g(argumen)m(ts:) -47 b Fk(k)m(ey)c Ft(is)33 b(the)h(c)m(haracter)h(that)f(y)m(ou)g(w)m -(an)m(t)g(to)g(bind,)g(and)150 3214 y Fk(function)39 -b Ft(is)f(the)h(address)f(of)h(the)g(function)g(to)g(call)i(when)c -Fk(k)m(ey)48 b Ft(is)39 b(pressed.)65 b(Binding)38 b -Fs(TAB)g Ft(to)i Fs(rl_)150 3324 y(insert\(\))c Ft(mak)m(es)k -Fs(TAB)e Ft(insert)g(itself.)67 b Fs(rl_bind_key\(\))35 -b Ft(returns)j(non-zero)h(if)g Fk(k)m(ey)47 b Ft(is)39 -b(not)g(a)g(v)-5 b(alid)150 3433 y(ASCI)s(I)29 b(c)m(haracter)j(co)s -(de)e(\(b)s(et)m(w)m(een)i(0)f(and)e(255\).)275 3565 -y(Th)m(us,)g(to)i(disable)g(the)f(default)h Fs(TAB)e -Ft(b)s(eha)m(vior,)i(the)g(follo)m(wing)g(su\016ces:)390 +2491 y(})275 2622 y Ft(This)21 b(function)i(giv)m(es)h(the)f(user)e +(the)i(default)g(b)s(eha)m(vior)g(of)g Fs(TAB)e Ft(completion:)39 +b(\014lename)22 b(completion.)150 2732 y(If)31 b(y)m(ou)g(do)g(not)g(w) +m(an)m(t)h(Readline)g(to)f(complete)i(\014lenames,)e(y)m(ou)h(can)f(c)m +(hange)h(the)f(binding)f(of)i(the)f Fs(TAB)150 2841 y +Ft(k)m(ey)g(with)f Fs(rl_bind_key\(\))p Ft(.)390 2973 +y Fs(int)47 b(rl_bind_key)e(\(int)h Fl(key)p Fs(,)h(rl_command_func_t)c +(*)p Fl(function)p Fs(\);)275 3104 y(rl_bind_key\(\))29 +b Ft(tak)m(es)35 b(t)m(w)m(o)g(argumen)m(ts:)47 b Fk(k)m(ey)c +Ft(is)33 b(the)h(c)m(haracter)h(that)f(y)m(ou)g(w)m(an)m(t)g(to)g +(bind,)g(and)150 3214 y Fk(function)39 b Ft(is)f(the)h(address)f(of)h +(the)g(function)g(to)g(call)i(when)c Fk(k)m(ey)48 b Ft(is)39 +b(pressed.)65 b(Binding)38 b Fs(TAB)g Ft(to)i Fs(rl_)150 +3324 y(insert\(\))c Ft(mak)m(es)k Fs(TAB)e Ft(insert)g(itself.)67 +b Fs(rl_bind_key\(\))35 b Ft(returns)j(non-zero)h(if)g +Fk(k)m(ey)47 b Ft(is)39 b(not)g(a)g(v)-5 b(alid)150 3433 +y(ASCI)s(I)29 b(c)m(haracter)j(co)s(de)e(\(b)s(et)m(w)m(een)i(0)f(and)e +(255\).)275 3565 y(Th)m(us,)g(to)i(disable)g(the)f(default)h +Fs(TAB)e Ft(b)s(eha)m(vior,)i(the)g(follo)m(wing)g(su\016ces:)390 3696 y Fs(rl_bind_key)45 b(\('\\t',)h(rl_insert\);)275 3828 y Ft(This)25 b(co)s(de)i(should)e(b)s(e)h(executed)h(once)g(at)g (the)g(start)g(of)f(y)m(our)h(program;)g(y)m(ou)g(migh)m(t)g(write)g(a) @@ -9349,7 +9349,7 @@ b Fh(void)54 b(rl_free_keymap)49 b Fg(\()p Ff(Keymap)34 b(k)m(eymap)p Fg(\))390 1209 y Ft(F)-8 b(ree)32 b(all)g(storage)g(asso) s(ciated)g(with)f Fk(k)m(eymap)p Ft(.)42 b(This)30 b(calls)i Fs(rl_discard_keymap)26 b Ft(to)32 b(free)f(sub-)390 -1318 y(ordindate)f(k)m(eymaps)h(and)f(macros.)3350 1499 +1318 y(ordinate)g(k)m(eymaps)g(and)e(macros.)3350 1499 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_empty_keymap)d Fg(\()p Ff(Keymap)34 b(k)m(eymap)p Fg(\))390 1609 y Ft(Return)c (non-zero)h(if)g(there)g(are)g(no)f(k)m(eys)i(b)s(ound)c(to)k @@ -9806,14 +9806,14 @@ Ft(.)3350 4507 y([F)-8 b(unction])-3599 b Fh(void)54 b(rl_restore_prompt)c Fg(\()p Ff(v)m(oid)p Fg(\))390 4617 y Ft(Restore)44 b(the)e(lo)s(cal)i(Readline)g(prompt)d(displa)m(y) i(state)h(sa)m(v)m(ed)g(b)m(y)f(the)f(most)h(recen)m(t)h(call)g(to)390 -4726 y Fs(rl_save_prompt)p Ft(.)g(if)33 b(y)m(ou)g(called)g -Fs(rl_save_prompt)c Ft(to)34 b(sa)m(v)m(e)g(the)f(prompt)f(b)s(efore)g -(a)h(call)h(to)390 4836 y Fs(rl_message)p Ft(,)24 b(y)m(ou)i(should)e -(call)j(this)e(function)g(b)s(efore)g(the)g(corresp)s(onding)g(call)h -(to)g Fs(rl_clear_)390 4945 y(message)p Ft(.)3350 5121 -y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_expand_prompt)e -Fg(\()p Ff(c)m(har)34 b(*prompt)p Fg(\))390 5230 y Ft(Expand)41 -b(an)m(y)j(sp)s(ecial)f(c)m(haracter)h(sequences)f(in)g +4726 y Fs(rl_save_prompt)p Ft(.)e(If)32 b(y)m(ou)g(called)i +Fs(rl_save_prompt)28 b Ft(to)33 b(sa)m(v)m(e)h(the)e(prompt)f(b)s +(efore)h(a)h(call)g(to)390 4836 y Fs(rl_message)p Ft(,)24 +b(y)m(ou)i(should)e(call)j(this)e(function)g(b)s(efore)g(the)g(corresp) +s(onding)g(call)h(to)g Fs(rl_clear_)390 4945 y(message)p +Ft(.)3350 5121 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_expand_prompt) +e Fg(\()p Ff(c)m(har)34 b(*prompt)p Fg(\))390 5230 y +Ft(Expand)41 b(an)m(y)j(sp)s(ecial)f(c)m(haracter)h(sequences)f(in)g Fk(prompt)g Ft(and)f(set)i(up)d(the)i(lo)s(cal)h(Readline)390 5340 y(prompt)35 b(redispla)m(y)h(v)-5 b(ariables.)57 b(This)35 b(function)h(is)g(called)h(b)m(y)e Fs(readline\(\))p diff --git a/doc/readline_3.ps b/doc/readline_3.ps index 142dc95..d516db2 100644 --- a/doc/readline_3.ps +++ b/doc/readline_3.ps @@ -1,6 +1,6 @@ %!PS-Adobe-3.0 %%Creator: groff version 1.23.0 -%%CreationDate: Fri Dec 13 10:00:12 2024 +%%CreationDate: Wed Jun 25 16:09:16 2025 %%DocumentNeededResources: font Times-Italic %%+ font Times-Roman %%+ font Times-Bold @@ -280,7 +280,7 @@ F1(\(3\)).73 E/F2 10.95/Times-Bold@0 SF -.219(NA)72 84 S(ME).219 E F1 108 148.8 Q(eadline/history)-.18 E(.h>)-.7 E F0 -.15(ch)108 165.6 S (ar *).15 E F3 -.18(re)108 177.6 S(adline).18 E F1(\()2.5 E F0(const c)A (har *pr)-.15 E(ompt)-.45 E F1(\);)A F2(COPYRIGHT)72 194.4 Q F1 -(Readline is Cop)108 206.4 Q(yright \251 1989\2552024 Free Softw)-.1 E +(Readline is Cop)108 206.4 Q(yright \251 1989\2552025 Free Softw)-.1 E (are F)-.1 E(oundation, Inc.)-.15 E F2(DESCRIPTION)72 223.2 Q F3 -.18 (re)108 235.2 S(adline).18 E F1 .06 (reads a line from the terminal and return it, using)2.56 F F3(pr)2.56 E @@ -387,8 +387,8 @@ F0 1.174(kill ring)B F1 6.174(.C)C(onsecuti)-6.174 E 1.474 -.15(ve k) (xt into one unit,)-.15 F .567(which can be yank)108 715.2 R .567 (ed all at once.)-.1 F .567(Commands which do not kill te)5.567 F .567 (xt separate the chunks of te)-.15 F .567(xt on the kill)-.15 F(ring.) -108 727.2 Q(GNU Readline 8.3)72 768 Q(2024 No)120.835 E -.15(ve)-.15 G -(mber 29).15 E(1)190.545 E 0 Cg EP +108 727.2 Q(GNU Readline 8.3)72 768 Q(2024 December 30)121.245 E(1) +190.955 E 0 Cg EP %%Page: 2 2 %%BeginPageSetup BP @@ -499,8 +499,8 @@ R(xample,)-.15 E F0(C\255u)2.654 E F1 .314(is ag)3.064 F .315 (The full set of GNU Emacs style escape sequences a)108 684 Q -.25(va) -.2 G(ilable when specifying k).25 E .3 -.15(ey s)-.1 H(equences is).15 E F3<5c43ad>144 696 Q F1 2.5(Ac)180 696 S(ontrol pre\214x.)-2.5 E -(GNU Readline 8.3)72 768 Q(2024 No)120.835 E -.15(ve)-.15 G(mber 29).15 -E(2)190.545 E 0 Cg EP +(GNU Readline 8.3)72 768 Q(2024 December 30)121.245 E(2)190.955 E 0 Cg +EP %%Page: 3 3 %%BeginPageSetup BP @@ -617,8 +617,8 @@ E F1(ne)144 722.4 Q -.15(ve)-.25 G 3.954(rr).15 G 1.454(ings the bell.) -3.954 F 1.454(If set to)6.454 F F2(visible)3.954 E F1(,)A F2 -.18(re) 3.954 G(adline).18 E F1 1.454(uses a visible bell if one is a)3.954 F -.25(va)-.2 G 3.953(ilable. If).25 F 1.453(set to)3.953 F -(GNU Readline 8.3)72 768 Q(2024 No)120.835 E -.15(ve)-.15 G(mber 29).15 -E(3)190.545 E 0 Cg EP +(GNU Readline 8.3)72 768 Q(2024 December 30)121.245 E(3)190.955 E 0 Cg +EP %%Page: 4 4 %%BeginPageSetup BP @@ -736,8 +736,8 @@ F2(On)3.209 E F1(,)A F2 -.18(re)3.209 G(adline).18 E F1 .709(inhibits w) 3.209 F .709(ord completion.)-.1 F .708 (Completion characters are inserted into the line)5.709 F(as if the)144 708 Q 2.5(yh)-.15 G(ad been mapped to)-2.5 E F2(self-insert)2.5 E F1(.)A -(GNU Readline 8.3)72 768 Q(2024 No)120.835 E -.15(ve)-.15 G(mber 29).15 -E(4)190.545 E 0 Cg EP +(GNU Readline 8.3)72 768 Q(2024 December 30)121.245 E(4)190.955 E 0 Cg +EP %%Page: 5 5 %%BeginPageSetup BP @@ -865,8 +865,8 @@ F2(horizontal\255scr)108 660 Q(oll\255mode \(Off\))-.18 E F1 .848 e when it becomes longer than the screen width rather than wrapping)144 684 R(to a ne)144 696 Q 2.5(wl)-.25 G 2.5(ine. This)-2.5 F (setting is automatically enabled for terminals of height 1.)2.5 E -(GNU Readline 8.3)72 768 Q(2024 No)120.835 E -.15(ve)-.15 G(mber 29).15 -E(5)190.545 E 0 Cg EP +(GNU Readline 8.3)72 768 Q(2024 December 30)121.245 E(5)190.955 E 0 Cg +EP %%Page: 6 6 %%BeginPageSetup BP @@ -982,8 +982,8 @@ G(adline).18 E F1 .773 5.663(.B)C 3.163(yd)-5.663 G(ef)-3.163 E .663 (ault, history lines may be modi\214ed and retain indi)-.1 F .663 (vidual undo lists across calls)-.25 F(to)144 720 Q F2 -.18(re)2.5 G -(adline\(\)).18 E F1(.)A(GNU Readline 8.3)72 768 Q(2024 No)120.835 E --.15(ve)-.15 G(mber 29).15 E(6)190.545 E 0 Cg EP +(adline\(\)).18 E F1(.)A(GNU Readline 8.3)72 768 Q(2024 December 30) +121.245 E(6)190.955 E 0 Cg EP %%Page: 7 7 %%BeginPageSetup BP @@ -1095,7 +1095,7 @@ minal and the portion of the terminal)-.05 F .16 (his allo)-5.159 F(ws)-.25 E F0(xterm)3.429 E F1 .159(to match both) 2.979 F F0(xterm)3.429 E F1(and)2.979 E F0(xterm\255256color)3.429 E F1 2.659(,f).73 G(or)-2.659 E(instance.)180 703.2 Q(GNU Readline 8.3)72 768 -Q(2024 No)120.835 E -.15(ve)-.15 G(mber 29).15 E(7)190.545 E 0 Cg EP +Q(2024 December 30)121.245 E(7)190.955 E 0 Cg EP %%Page: 8 8 %%BeginPageSetup BP @@ -1214,7 +1214,7 @@ E F2 -.18(re)2.5 G(adline).18 E F1(uses an)2.5 E 2.5(yr)-.15 G entire search string before starting to search for matching history en\ tries.)108 717.6 R(The search string may be typed by the user or be par\ t of the contents of the current line.)108 729.6 Q(GNU Readline 8.3)72 -768 Q(2024 No)120.835 E -.15(ve)-.15 G(mber 29).15 E(8)190.545 E 0 Cg EP +768 Q(2024 December 30)121.245 E(8)190.955 E 0 Cg EP %%Page: 9 9 %%BeginPageSetup BP @@ -1296,7 +1296,7 @@ Q F1 1.499(Clear the screen and, if possible, the terminal')144 489.6 R 108 513.6 Q(een \(C\255l\))-.18 E F1 1.36(Clear the screen, then redra) 144 525.6 R 3.86(wt)-.15 G 1.36(he current line, lea)-3.86 F 1.36 (ving the current line at the top of the screen.)-.2 F -.4(Wi)144 537.6 -S(th an ar).4 E +S(th a numeric ar).4 E (gument, refresh the current line without clearing the screen.)-.18 E F3 -.18(re)108 549.6 S(draw\255curr).18 E(ent\255line)-.18 E F1 (Refresh the current line.)144 561.6 Q F3(Commands f)87 578.4 Q @@ -1319,8 +1319,7 @@ S(th an ar).4 E .214(ard in the list.)-.1 F .214(This may also be bound)5.214 F (to the do)144 698.4 Q(wn arro)-.25 E 2.5(wk)-.25 G .3 -.15(ey o)-2.6 H 2.5(ns).15 G(ome k)-2.5 E -.15(ey)-.1 G(boards.).15 E(GNU Readline 8.3) -72 768 Q(2024 No)120.835 E -.15(ve)-.15 G(mber 29).15 E(9)190.545 E 0 Cg -EP +72 768 Q(2024 December 30)121.245 E(9)190.955 E 0 Cg EP %%Page: 10 10 %%BeginPageSetup BP @@ -1431,8 +1430,7 @@ E .503 -.15(ve c)-.25 H .203(alls to).15 F F2(yank\255last\255ar)2.703 E (through the history \(back or forw)144 720 R 2.919(ard\). This)-.1 F .419(uses the history e)2.919 F .418(xpansion f)-.15 F .418 (acilities to e)-.1 F .418(xtract the last)-.15 F(GNU Readline 8.3)72 -768 Q(2024 No)120.835 E -.15(ve)-.15 G(mber 29).15 E(10)185.545 E 0 Cg -EP +768 Q(2024 December 30)121.245 E(10)185.955 E 0 Cg EP %%Page: 11 11 %%BeginPageSetup BP @@ -1497,10 +1495,10 @@ without treating each character as if it had been read from the k)144 472.8 R 2.872(oc)-.1 G .373(haracters before point.)-2.872 F(Ne)5.373 E -.05(ga)-.15 G(ti).05 E .673 -.15(ve a)-.25 H -.2(r-).15 G(guments ha) 144 484.8 Q .3 -.15(ve n)-.2 H 2.5(oe).15 G -.25(ff)-2.5 G(ect.).25 E F2 -(transpose\255w)108 496.8 Q(ords \(M\255t\))-.1 E F1 .024(Drag the w)144 -508.8 R .024(ord before point past the w)-.1 F .023(ord after point, mo) --.1 F .023(ving point o)-.15 F -.15(ve)-.15 G 2.523(rt).15 G .023(hat w) --2.523 F .023(ord as well.)-.1 F .023(If point)5.023 F +(transpose\255w)108 496.8 Q(ords \(M\255t\))-.1 E F1 .099(Drag the w)144 +508.8 R .099(ord before point past the w)-.1 F .099(ord after point, mo) +-.1 F .099(ving point past that w)-.15 F .099(ord as well.)-.1 F .098 +(If point)5.098 F (is at the end of the line, this transposes the last tw)144 520.8 Q 2.5 (ow)-.1 G(ords on the line.)-2.6 E F2(upcase\255w)108 532.8 Q (ord \(M\255u\))-.1 E F1 1.698(Uppercase the current \(or follo)144 @@ -1538,8 +1536,8 @@ F(ferently)-.25 E 6.894(.E)-.65 G 1.894(ach call to)-6.894 F F0 -.37(re) .773(replace the character before point)3.273 F .52(with a space.)144 724.8 R .52(By def)5.52 F .52(ault, this command is unbound, b)-.1 F .52 (ut may be bound to the Insert k)-.2 F .82 -.15(ey o)-.1 H 3.02(ns).15 G -(ome)-3.02 E(GNU Readline 8.3)72 768 Q(2024 No)120.835 E -.15(ve)-.15 G -(mber 29).15 E(11)185.545 E 0 Cg EP +(ome)-3.02 E(GNU Readline 8.3)72 768 Q(2024 December 30)121.245 E(11) +185.955 E 0 Cg EP %%Page: 12 12 %%BeginPageSetup BP @@ -1629,8 +1627,8 @@ E F1 .779(This is another w)144 621.6 R .779(ay to specify an ar)-.1 F (cuting this function the \214rst time mak).15 F .823(es the ar)-.1 F (gument)-.18 E(count four)144 693.6 Q 2.5(,as)-.4 G(econd time mak)-2.5 E(es the ar)-.1 E(gument count sixteen, and so on.)-.18 E -(GNU Readline 8.3)72 768 Q(2024 No)120.835 E -.15(ve)-.15 G(mber 29).15 -E(12)185.545 E 0 Cg EP +(GNU Readline 8.3)72 768 Q(2024 December 30)121.245 E(12)185.955 E 0 Cg +EP %%Page: 13 13 %%BeginPageSetup BP @@ -1703,14 +1701,15 @@ G 3.32(sb).15 G(ackw)-3.32 E .82 (wing format, writing information on sepa-)-.25 F(rate lines:)144 432 Q <83>144 448.8 Q(the number of matches)180 448.8 Q F0(N)2.5 E F1(;)A<83> 144 460.8 Q(the w)180 460.8 Q(ord being completed;)-.1 E<83>144 472.8 Q -F0(S)180 472.8 Q F1(:)A F0(E)A F1 3.252(,w)C .753 -(here S and E are the start and end of)-3.252 F .753(fsets of the w)-.25 -F .753(ord in the)-.1 F F2 -.18(re)3.253 G(adline).18 E F1 .753(line b) -3.253 F(uf)-.2 E(fer;)-.25 E(then)180 484.8 Q<83>144 496.8 Q -(each match, one per line)180 496.8 Q .195(If there are no matches, the\ - \214rst line will be \2310\232, and this command does not print an)144 -513.6 R 2.695(yo)-.15 G .195(utput after)-2.695 F(the)144 525.6 Q F0(S) -2.704 E F1(:)A F0(E)A F1 5.204(.I)C 2.704(ft)-5.204 G .204 +F0(S)180 472.8 Q F1(:)A F0(E)A F1 3.283(,w)C(here)-3.283 E F0(S)3.283 E +F1(and)3.284 E F0(E)3.284 E F1 .784(are the start and end of)3.284 F +.784(fsets of the w)-.25 F .784(ord in the)-.1 F F2 -.18(re)3.284 G +(adline).18 E F1 .784(line b)3.284 F(uf)-.2 E(fer;)-.25 E(then)180 484.8 +Q<83>144 496.8 Q(each match, one per line)180 496.8 Q .195(If there are\ + no matches, the \214rst line will be \2310\232, and this command does \ +not print an)144 513.6 R 2.695(yo)-.15 G .195(utput after)-2.695 F(the) +144 525.6 Q F0(S)2.704 E F1(:)A F0(E)A F1 5.204(.I)C 2.704(ft)-5.204 G +.204 (here is only a single match, this prints a single line containing it.) -2.704 F .205(If there is more than)5.205 F .233(one match, this prints\ the common pre\214x of the matches, which may be empty)144 537.6 R @@ -1734,8 +1733,8 @@ R F0(N)3.344 E F1 .844(lines after the line containing)3.344 F F0(S) (Ke)87 672 S(yboard Macr).25 E(os)-.18 E(start\255kbd\255macr)108 684 Q 2.5(o\()-.18 G(C\255x \()-2.5 E(\)).833 E F1(Be)144 696 Q(gin sa)-.15 E (ving the characters typed into the current k)-.2 E -.15(ey)-.1 G -(board macro.).15 E(GNU Readline 8.3)72 768 Q(2024 No)120.835 E -.15(ve) --.15 G(mber 29).15 E(13)185.545 E 0 Cg EP +(board macro.).15 E(GNU Readline 8.3)72 768 Q(2024 December 30)121.245 E +(13)185.955 E 0 Cg EP %%Page: 14 14 %%BeginPageSetup BP @@ -1839,8 +1838,8 @@ F(uf)-.2 E(fer)-.25 E 5.297(.T)-.55 G .297(his is)-5.297 F (output stream.)2.973 F .473(If a numeric ar)5.473 F(gu-)-.18 E (ment is supplied, the output is formatted in such a w)144 724.8 Q (ay that it can be made part of an)-.1 E F0(inputr)2.5 E(c)-.37 E F1 -(\214le.)2.5 E(GNU Readline 8.3)72 768 Q(2024 No)120.835 E -.15(ve)-.15 -G(mber 29).15 E(14)185.545 E 0 Cg EP +(\214le.)2.5 E(GNU Readline 8.3)72 768 Q(2024 December 30)121.245 E(14) +185.955 E 0 Cg EP %%Page: 15 15 %%BeginPageSetup BP @@ -1914,8 +1913,8 @@ E 2.5("C-M" accept-line)151.2 554.4 R 2.5("C-N" ne)151.2 566.4 R 151.2 674.4 R 2.5("C-]" character)151.2 686.4 R(-search)-.2 E 2.5 ("C-_" undo)151.2 698.4 R 3.333("")151.2 710.4 S(to "/")-.833 E (self-insert)5 E 2.5("0" to)151.2 722.4 R 2.5("9" self-insert)2.5 F -(GNU Readline 8.3)72 768 Q(2024 No)120.835 E -.15(ve)-.15 G(mber 29).15 -E(15)185.545 E 0 Cg EP +(GNU Readline 8.3)72 768 Q(2024 December 30)121.245 E(15)185.955 E 0 Cg +EP %%Page: 16 16 %%BeginPageSetup BP @@ -1959,8 +1958,8 @@ R(ord)-.1 E 2.5("M-F" forw)151.2 525.6 R(ard-w)-.1 E(ord)-.1 E 2.5 (ord)-.1 E 2.5("M-_" yank-last-ar)151.2 669.6 R(g)-.18 E (Emacs Control-X bindings)151.2 686.4 Q 2.5("C-XC-G" abort)151.2 703.2 R 2.5("C-XC-R" re-read-init-\214le)151.2 715.2 R 2.5("C-XC-U" undo)151.2 -727.2 R(GNU Readline 8.3)72 768 Q(2024 No)120.835 E -.15(ve)-.15 G -(mber 29).15 E(16)185.545 E 0 Cg EP +727.2 R(GNU Readline 8.3)72 768 Q(2024 December 30)121.245 E(16)185.955 +E 0 Cg EP %%Page: 17 17 %%BeginPageSetup BP @@ -2002,7 +2001,7 @@ F1(\(3\)).73 E 2.5("C-XC-X" e)151.2 84 R(xchange-point-and-mark)-.15 E 679.2 R 2.5("&" vi-tilde-e)151.2 691.2 R(xpand)-.15 E 2.5 ("*" vi-complete)151.2 703.2 R 2.5("+" ne)151.2 715.2 R(xt-history)-.15 E 2.5("," vi-char)151.2 727.2 R(-search)-.2 E(GNU Readline 8.3)72 768 Q -(2024 No)120.835 E -.15(ve)-.15 G(mber 29).15 E(17)185.545 E 0 Cg EP +(2024 December 30)121.245 E(17)185.955 E 0 Cg EP %%Page: 18 18 %%BeginPageSetup BP @@ -2037,8 +2036,8 @@ F1(\(3\)).73 E 2.5("-" pre)151.2 84 R(vious-history)-.25 E 2.5 ("t" vi-char)151.2 624 R(-search)-.2 E 2.5("u" vi-undo)151.2 636 R 2.5 ("w" vi-ne)151.2 648 R(xt-w)-.15 E(ord)-.1 E 2.5("x" vi-delete)151.2 660 R 2.5("y" vi-yank-to)151.2 672 R 2.5("|" vi-column)151.2 684 R 2.5 -("\001" vi-change-case)151.2 696 R(GNU Readline 8.3)72 768 Q(2024 No) -120.835 E -.15(ve)-.15 G(mber 29).15 E(18)185.545 E 0 Cg EP +("\001" vi-change-case)151.2 696 R(GNU Readline 8.3)72 768 Q +(2024 December 30)121.245 E(18)185.955 E 0 Cg EP %%Page: 19 19 %%BeginPageSetup BP @@ -2078,7 +2077,7 @@ G(ni)-2.5 E -.15(ve)-.25 G(rsity).15 E(chet.rame)108 230.4 Q(y@case.edu) -.15(ch)2.5 G(et.r).15 E(ame)-.15 E(y@case)-.3 E(.edu)-.15 E F1(.).25 E F2 -.11(BU)72 345.6 S(GS).11 E F1(It')108 357.6 Q 2.5(st)-.55 G (oo big and too slo)-2.5 E -.65(w.)-.25 G(GNU Readline 8.3)72 768 Q -(2024 No)120.835 E -.15(ve)-.15 G(mber 29).15 E(19)185.545 E 0 Cg EP +(2024 December 30)121.245 E(19)185.955 E 0 Cg EP %%Trailer end %%EOF diff --git a/doc/rltech.texi b/doc/rltech.texi index c8965ef..ccf7427 100644 --- a/doc/rltech.texi +++ b/doc/rltech.texi @@ -2098,7 +2098,10 @@ 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. +A value of @samp{?} means list the possible completions, +but to insert a single completion if the last completion failed to find +any matches. +@samp{|} unconditionally lists 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, diff --git a/doc/rluser.texi b/doc/rluser.texi index 704b88f..6affd6d 100644 --- a/doc/rluser.texi +++ b/doc/rluser.texi @@ -495,6 +495,10 @@ Readline equivalents. These override the default Readline bindings described here. Type @samp{stty -a} at a Bash prompt to see your current terminal settings, including the special control characters (usually @code{cchars}). +This binding takes place on each call to @code{readline()}, +so changes made by +@samp{stty} +can take effect. @item blink-matching-paren @vindex blink-matching-paren diff --git a/doc/rluserman.ps b/doc/rluserman.ps index 7f93d3a..06f3902 100644 --- a/doc/rluserman.ps +++ b/doc/rluserman.ps @@ -1,7 +1,7 @@ %!PS-Adobe-2.0 %%Creator: dvips(k) 2024.1 (TeX Live 2024) Copyright 2024 Radical Eye Software %%Title: rluserman.dvi -%%CreationDate: Fri Dec 13 15:00:12 2024 +%%CreationDate: Wed Jun 25 20:09:16 2025 %%Pages: 38 %%PageOrder: Ascend %%BoundingBox: 0 0 612 792 @@ -12,7 +12,7 @@ %DVIPSWebPage: (www.radicaleye.com) %DVIPSCommandLine: dvips -D 600 -t letter -o rluserman.ps rluserman.dvi %DVIPSParameters: dpi=600 -%DVIPSSource: TeX output 2024.12.13:1000 +%DVIPSSource: TeX output 2025.03.31:1028 %%BeginProcSet: tex.pro 0 0 %! /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S @@ -5246,20 +5246,20 @@ ifelse TeXDict begin 1 0 bop 150 1318 a Fp(GNU)65 b(Readline)g(Library)g(User) g(In)-5 b(terface)p 150 1418 3600 34 v 1873 1515 a Fo(Edition)30 b(8.3,)i(for)e Fn(Readline)e(Library)h Fo(V)-8 b(ersion)31 -b(8.3.)3139 1623 y(No)m(v)m(em)m(b)s(er)g(2024)150 4927 -y Fm(Chet)45 b(Ramey)-11 b(,)46 b(Case)g(W)-11 b(estern)46 -b(Reserv)l(e)g(Univ)l(ersit)l(y)150 5068 y(Brian)f(F)-11 -b(o)l(x,)45 b(F)-11 b(ree)45 b(Soft)l(w)l(are)h(F)-11 -b(oundation)p 150 5141 3600 17 v eop end +b(8.3.)3145 1623 y(Decem)m(b)s(er)g(2024)150 4927 y Fm(Chet)45 +b(Ramey)-11 b(,)46 b(Case)g(W)-11 b(estern)46 b(Reserv)l(e)g(Univ)l +(ersit)l(y)150 5068 y(Brian)f(F)-11 b(o)l(x,)45 b(F)-11 +b(ree)45 b(Soft)l(w)l(are)h(F)-11 b(oundation)p 150 5141 +3600 17 v eop end %%Page: 2 2 TeXDict begin 2 1 bop 150 4413 a Fo(This)29 b(man)m(ual)g(describ)s(es) g(the)h(end)e(user)h(in)m(terface)i(of)f(the)f(GNU)h(Readline)g -(Library)f(\(v)m(ersion)h(8.3,)h(29)150 4523 y(No)m(v)m(em)m(b)s(er)39 -b(2024\),)j(a)c(library)g(whic)m(h)g(aids)g(in)f(the)h(consistency)h -(of)f(user)f(in)m(terface)j(across)e(discrete)150 4633 +(Library)f(\(v)m(ersion)h(8.3,)h(30)150 4523 y(Decem)m(b)s(er)39 +b(2024\),)k(a)c(library)f(whic)m(h)g(aids)g(in)g(the)h(consistency)g +(of)g(user)e(in)m(terface)j(across)f(discrete)150 4633 y(programs)30 b(whic)m(h)g(pro)m(vide)h(a)f(command)g(line)h(in)m (terface.)150 4767 y(Cop)m(yrigh)m(t)602 4764 y(c)577 -4767 y Fl(\015)f Fo(1988{2024)35 b(F)-8 b(ree)31 b(Soft)m(w)m(are)h(F) +4767 y Fl(\015)f Fo(1988{2025)35 b(F)-8 b(ree)31 b(Soft)m(w)m(are)h(F) -8 b(oundation,)31 b(Inc.)390 4902 y(P)m(ermission)21 b(is)f(gran)m(ted)h(to)g(cop)m(y)-8 b(,)24 b(distribute)c(and/or)h(mo)s (dify)e(this)i(do)s(cumen)m(t)f(under)f(the)390 5011 @@ -5706,14 +5706,14 @@ b(This)37 b(v)-5 b(ariable)38 b(is)f(reset)h(to)1110 2436 y(tained)40 b(from)f(the)h(terminal's)g(terminfo)g(description.)68 b(A)40 b(sample)f(v)-5 b(alue)1110 2545 y(migh)m(t)31 b(b)s(e)f(`)p Fn(\\e[01;33m)p Fo('.)630 2710 y Fn -(active-region-end-color)1110 2819 y Fo(A)48 b(string)g(v)-5 -b(ariable)48 b(that)h Fn(")p Fo(undo)s(es)p Fn(")d Fo(the)i(e\013ects)h -(of)f Fn(active-region-)1110 2929 y(start-color)36 b -Fo(and)i(restores)h Fn(")p Fo(normal)p Fn(")f Fo(terminal)h(displa)m(y) -g(app)s(earance)1110 3039 y(after)26 b(displa)m(ying)h(text)f(in)g(the) -g(activ)m(e)i(region.)40 b(This)25 b(string)h(m)m(ust)f(not)h(tak)m(e) -1110 3148 y(up)e(an)m(y)h(ph)m(ysical)h(c)m(haracter)h(p)s(ositions)d -(on)h(the)h(displa)m(y)-8 b(,)27 b(so)e(it)g(should)f(con-)1110 +(active-region-end-color)1110 2819 y Fo(A)48 b(string)h(v)-5 +b(ariable)49 b(that)g(\\undo)s(es")f(the)h(e\013ects)g(of)g +Fn(active-region-)1110 2929 y(start-color)36 b Fo(and)j(restores)h +(\\normal")g(terminal)g(displa)m(y)g(app)s(earance)1110 +3039 y(after)26 b(displa)m(ying)h(text)f(in)g(the)g(activ)m(e)i +(region.)40 b(This)25 b(string)h(m)m(ust)f(not)h(tak)m(e)1110 +3148 y(up)e(an)m(y)h(ph)m(ysical)h(c)m(haracter)h(p)s(ositions)d(on)h +(the)h(displa)m(y)-8 b(,)27 b(so)e(it)g(should)f(con-)1110 3258 y(sist)29 b(only)h(of)f(terminal)h(escap)s(e)f(sequences.)41 b(It)29 b(is)g(output)g(to)h(the)f(terminal)1110 3367 y(after)36 b(displa)m(ying)g(the)g(text)h(in)e(the)h(activ)m(e)i @@ -6300,9 +6300,9 @@ b Ff(HH)1110 4852 y Fo(\(one)31 b(or)f(t)m(w)m(o)i(hex)e(digits\).)630 (or)f(double)g(quotes)h(m)m(ust)f(b)s(e)g(used)f(to)630 5121 y(indicate)d(a)f(macro)g(de\014nition.)45 b(Unquoted)32 b(text)g(is)g(assumed)f(to)i(b)s(e)e(a)h(function)g(name.)630 -5230 y(Tthe)24 b(bac)m(kslash)g(escap)s(es)h(describ)s(ed)e(ab)s(o)m(v) -m(e)i(are)f(expanded)f(in)h(the)g(macro)h(b)s(o)s(dy)-8 -b(.)37 b(Bac)m(k-)630 5340 y(slash)g(will)h(quote)h(an)m(y)f(other)f(c) +5230 y(The)27 b(bac)m(kslash)h(escap)s(es)g(describ)s(ed)e(ab)s(o)m(v)m +(e)i(are)g(expanded)f(in)g(the)g(macro)h(b)s(o)s(dy)-8 +b(.)39 b(Bac)m(k-)630 5340 y(slash)e(will)h(quote)h(an)m(y)f(other)f(c) m(haracter)j(in)d(the)h(macro)g(text,)j(including)c(`)p Fn(")p Fo(')h(and)f(`)p Fn(')p Fo('.)p eop end %%Page: 14 17 @@ -6421,8 +6421,8 @@ h(binding,)e(v)-5 b(ariable)27 b(assignmen)m(t,)i(and)150 %%Page: 16 19 TeXDict begin 16 18 bop 150 -116 a Fo(Chapter)30 b(1:)41 b(Command)29 b(Line)i(Editing)2107 b(16)390 408 y Fn(#)47 -b(This)g(file)g(controls)e(the)i(behaviour)e(of)j(line)e(input)h -(editing)e(for)390 518 y(#)i(programs)f(that)h(use)g(the)f(GNU)h +b(This)g(file)g(controls)e(the)i(behavior)f(of)h(line)g(input)f +(editing)g(for)390 518 y(#)h(programs)f(that)h(use)g(the)f(GNU)h (Readline)f(library.)93 b(Existing)390 628 y(#)47 b(programs)f(include) g(FTP,)g(Bash,)h(and)g(GDB.)390 737 y(#)390 847 y(#)g(You)g(can)g (re-read)f(the)h(inputrc)f(file)g(with)h(C-x)g(C-r.)390 @@ -6550,58 +6550,60 @@ b(Command)29 b(Line)i(Editing)2107 b(19)630 299 y(not)27 b(tak)m(e)i(up)e(more)g(than)g(one)g(ph)m(ysical)h(line)g(or)f(if)g (the)h(length)f(of)h(the)f(curren)m(t)g(Readline)630 408 y(line)k(is)f(not)h(greater)g(than)f(the)h(length)g(of)f(the)h -(prompt)e(plus)h(the)g(screen)h(width.)150 564 y Fn(clear-display)c -(\(M-C-l\))630 674 y Fo(Clear)33 b(the)g(screen)g(and,)h(if)e(p)s +(prompt)e(plus)h(the)g(screen)h(width.)150 556 y Fn(clear-display)c +(\(M-C-l\))630 665 y Fo(Clear)33 b(the)g(screen)g(and,)h(if)e(p)s (ossible,)i(the)f(terminal's)g(scrollbac)m(k)i(bu\013er,)e(then)f -(redra)m(w)630 784 y(the)f(curren)m(t)f(line,)h(lea)m(ving)h(the)e +(redra)m(w)630 775 y(the)f(curren)m(t)f(line,)h(lea)m(ving)h(the)e (curren)m(t)h(line)f(at)h(the)g(top)g(of)f(the)h(screen.)150 -940 y Fn(clear-screen)c(\(C-l\))630 1049 y Fo(Clear)35 +922 y Fn(clear-screen)c(\(C-l\))630 1032 y Fo(Clear)35 b(the)f(screen,)i(then)e(redra)m(w)g(the)h(curren)m(t)f(line,)i(lea)m -(ving)g(the)f(curren)m(t)f(line)h(at)g(the)630 1159 y(top)c(of)f(the)h -(screen.)150 1315 y Fn(redraw-current-line)25 b(\(\))630 -1424 y Fo(Refresh)30 b(the)g(curren)m(t)h(line.)41 b(By)30 -b(default,)h(this)f(is)h(un)m(b)s(ound.)150 1620 y Fd(1.4.2)63 +(ving)g(the)f(curren)m(t)f(line)h(at)g(the)630 1141 y(top)e(of)h(the)f +(screen.)49 b(If)33 b(giv)m(en)h(a)g(n)m(umeric)f(argumen)m(t,)i(this)e +(refreshes)f(the)i(curren)m(t)f(line)630 1251 y(without)d(clearing)i +(the)f(screen.)150 1398 y Fn(redraw-current-line)25 b(\(\))630 +1508 y Fo(Refresh)30 b(the)g(curren)m(t)h(line.)41 b(By)30 +b(default,)h(this)f(is)h(un)m(b)s(ound.)150 1695 y Fd(1.4.2)63 b(Commands)42 b(F)-10 b(or)41 b(Manipulating)h(The)f(History)150 -1790 y Fn(accept-line)27 b(\(Newline)h(or)i(Return\))630 -1900 y Fo(Accept)h(the)g(line)f(regardless)h(of)f(where)g(the)g(cursor) +1861 y Fn(accept-line)27 b(\(Newline)h(or)i(Return\))630 +1970 y Fo(Accept)h(the)g(line)f(regardless)h(of)f(where)g(the)g(cursor) f(is.)41 b(If)30 b(this)g(line)g(is)h(non-empt)m(y)-8 -b(,)31 b(y)m(ou)630 2010 y(can)36 b(add)f(it)i(to)f(the)g(history)g +b(,)31 b(y)m(ou)630 2080 y(can)36 b(add)f(it)i(to)f(the)g(history)g (list)h(using)e Fn(add_history\(\))p Fo(.)54 b(If)35 -b(this)h(line)g(is)g(a)g(mo)s(di\014ed)630 2119 y(history)30 +b(this)h(line)g(is)g(a)g(mo)s(di\014ed)630 2189 y(history)30 b(line,)h(then)f(restore)h(the)g(history)f(line)h(to)g(its)g(original)g -(state.)150 2275 y Fn(previous-history)26 b(\(C-p\))630 -2385 y Fo(Mo)m(v)m(e)h(`bac)m(k')f(through)f(the)g(history)g(list,)i +(state.)150 2337 y Fn(previous-history)26 b(\(C-p\))630 +2446 y Fo(Mo)m(v)m(e)h(`bac)m(k')f(through)f(the)g(history)g(list,)i (fetc)m(hing)f(the)f(previous)f(command.)39 b(This)24 -b(ma)m(y)630 2494 y(also)31 b(b)s(e)f(b)s(ound)e(to)j(the)g(up)e(arro)m -(w)i(k)m(ey)g(on)f(some)h(k)m(eyb)s(oards.)150 2650 y -Fn(next-history)c(\(C-n\))630 2760 y Fo(Mo)m(v)m(e)k(`forw)m(ard')d +b(ma)m(y)630 2556 y(also)31 b(b)s(e)f(b)s(ound)e(to)j(the)g(up)e(arro)m +(w)i(k)m(ey)g(on)f(some)h(k)m(eyb)s(oards.)150 2703 y +Fn(next-history)c(\(C-n\))630 2813 y Fo(Mo)m(v)m(e)k(`forw)m(ard')d (through)g(the)h(history)f(list,)i(fetc)m(hing)f(the)g(next)g(command.) -40 b(This)27 b(ma)m(y)630 2870 y(also)k(b)s(e)f(b)s(ound)e(to)j(the)g +40 b(This)27 b(ma)m(y)630 2922 y(also)k(b)s(e)f(b)s(ound)e(to)j(the)g (do)m(wn)f(arro)m(w)g(k)m(ey)i(on)e(some)h(k)m(eyb)s(oards.)150 -3026 y Fn(beginning-of-history)25 b(\(M-<\))630 3135 +3069 y Fn(beginning-of-history)25 b(\(M-<\))630 3179 y Fo(Mo)m(v)m(e)32 b(to)g(the)e(\014rst)g(line)g(in)h(the)f(history)-8 -b(.)150 3291 y Fn(end-of-history)26 b(\(M->\))630 3401 +b(.)150 3326 y Fn(end-of-history)26 b(\(M->\))630 3436 y Fo(Mo)m(v)m(e)32 b(to)g(the)e(end)g(of)g(the)h(input)e(history)-8 b(,)31 b(i.e.,)h(the)f(line)f(curren)m(tly)h(b)s(eing)f(en)m(tered.)150 -3557 y Fn(reverse-search-history)24 b(\(C-r\))630 3666 +3583 y Fn(reverse-search-history)24 b(\(C-r\))630 3693 y Fo(Searc)m(h)31 b(bac)m(kw)m(ard)h(starting)g(at)g(the)f(curren)m(t)g (line)g(and)g(mo)m(ving)h(`up')e(through)h(the)g(his-)630 -3776 y(tory)26 b(as)h(necessary)-8 b(.)40 b(This)25 b(is)i(an)f +3802 y(tory)26 b(as)h(necessary)-8 b(.)40 b(This)25 b(is)i(an)f (incremen)m(tal)h(searc)m(h.)40 b(This)25 b(command)h(sets)h(the)f -(region)630 3886 y(to)31 b(the)g(matc)m(hed)g(text)g(and)f(activ)-5 -b(ates)33 b(the)d(region.)150 4042 y Fn(forward-search-history)24 -b(\(C-s\))630 4151 y Fo(Searc)m(h)44 b(forw)m(ard)f(starting)h(at)h +(region)630 3912 y(to)31 b(the)g(matc)m(hed)g(text)g(and)f(activ)-5 +b(ates)33 b(the)d(region.)150 4059 y Fn(forward-search-history)24 +b(\(C-s\))630 4169 y Fo(Searc)m(h)44 b(forw)m(ard)f(starting)h(at)h (the)e(curren)m(t)h(line)g(and)f(mo)m(ving)h(`do)m(wn')g(through)f(the) -630 4261 y(history)38 b(as)g(necessary)-8 b(.)65 b(This)38 +630 4278 y(history)38 b(as)g(necessary)-8 b(.)65 b(This)38 b(is)g(an)g(incremen)m(tal)h(searc)m(h.)65 b(This)37 -b(command)h(sets)h(the)630 4370 y(region)31 b(to)g(the)g(matc)m(hed)g +b(command)h(sets)h(the)630 4388 y(region)31 b(to)g(the)g(matc)m(hed)g (text)g(and)f(activ)-5 b(ates)33 b(the)d(region.)150 -4526 y Fn(non-incremental-reverse-)o(sear)o(ch-h)o(ist)o(ory)24 -b(\(M-p\))630 4636 y Fo(Searc)m(h)31 b(bac)m(kw)m(ard)h(starting)g(at)g +4535 y Fn(non-incremental-reverse-)o(sear)o(ch-h)o(ist)o(ory)24 +b(\(M-p\))630 4645 y Fo(Searc)m(h)31 b(bac)m(kw)m(ard)h(starting)g(at)g (the)f(curren)m(t)g(line)g(and)g(mo)m(ving)h(`up')e(through)h(the)g -(his-)630 4746 y(tory)36 b(as)g(necessary)h(using)e(a)i(non-incremen)m +(his-)630 4754 y(tory)36 b(as)g(necessary)h(using)e(a)i(non-incremen)m (tal)g(searc)m(h)f(for)g(a)g(string)g(supplied)f(b)m(y)h(the)630 -4855 y(user.)k(The)30 b(searc)m(h)h(string)f(ma)m(y)h(matc)m(h)g(an)m +4864 y(user.)k(The)30 b(searc)m(h)h(string)f(ma)m(y)h(matc)m(h)g(an)m (ywhere)g(in)f(a)h(history)f(line.)150 5011 y Fn (non-incremental-forward-)o(sear)o(ch-h)o(ist)o(ory)24 b(\(M-n\))630 5121 y Fo(Searc)m(h)44 b(forw)m(ard)f(starting)h(at)h @@ -6927,10 +6929,10 @@ y(format,)j(writing)f(information)h(on)f(separate)i(lines:)705 3782 y Fl(\017)60 b Fo(the)31 b(n)m(um)m(b)s(er)e(of)h(matc)m(hes)i Ff(N)10 b Fo(;)705 3914 y Fl(\017)60 b Fo(the)31 b(w)m(ord)f(b)s(eing)g (completed;)705 4045 y Fl(\017)60 b Ff(S)5 b Fo(:)p Ff(E)p -Fo(,)25 b(where)d(S)h(and)f(E)h(are)h(the)f(start)h(and)e(end)h -(o\013sets)h(of)f(the)g(w)m(ord)g(in)g(the)g(Readline)810 -4155 y(line)31 b(bu\013er;)e(then)705 4287 y Fl(\017)60 -b Fo(eac)m(h)32 b(matc)m(h,)f(one)g(p)s(er)e(line)630 +Fo(,)24 b(where)e Ff(S)27 b Fo(and)22 b Ff(E)28 b Fo(are)23 +b(the)f(start)h(and)f(end)g(o\013sets)h(of)g(the)f(w)m(ord)h(in)f(the)g +(Readline)810 4155 y(line)31 b(bu\013er;)e(then)705 4287 +y Fl(\017)60 b Fo(eac)m(h)32 b(matc)m(h,)f(one)g(p)s(er)e(line)630 4441 y(If)j(there)h(are)g(no)f(matc)m(hes,)j(the)e(\014rst)e(line)i (will)g(b)s(e)f(\\0",)j(and)d(this)g(command)g(do)s(es)h(not)630 4551 y(prin)m(t)42 b(an)m(y)h(output)e(after)i(the)g diff --git a/doc/version.texi b/doc/version.texi index 9faa386..52bde74 100644 --- a/doc/version.texi +++ b/doc/version.texi @@ -5,7 +5,7 @@ Copyright (C) 1988-2025 Free Software Foundation, Inc. @set EDITION 8.3 @set VERSION 8.3 -@set UPDATED 30 December 2024 -@set UPDATED-MONTH December 2024 +@set UPDATED 15 July 2025 +@set UPDATED-MONTH July 2025 -@set LASTCHANGE Mon Dec 30 11:27:03 EST 2024 +@set LASTCHANGE Tue Jul 15 10:18:40 EDT 2025 diff --git a/histexpand.c b/histexpand.c index 085b454..c8e6741 100644 --- a/histexpand.c +++ b/histexpand.c @@ -1,6 +1,6 @@ /* histexpand.c -- history expansion. */ -/* Copyright (C) 1989-2021,2023-2024 Free Software Foundation, Inc. +/* Copyright (C) 1989-2021,2023-2025 Free Software Foundation, Inc. This file contains the GNU History Library (History), a set of routines for managing the text of previously typed lines. diff --git a/histfile.c b/histfile.c index 11bdd84..235243c 100644 --- a/histfile.c +++ b/histfile.c @@ -58,6 +58,7 @@ # include #endif +#include #include #if defined (__EMX__) @@ -145,6 +146,9 @@ static int histfile_backup (const char *, const char *); static int histfile_restore (const char *, const char *); static int history_rename (const char *, const char *); +static int history_write_slow (int, HIST_ENTRY **, int, int); +static ssize_t history_read_slow (int, char **); + /* Return the string that should be used in the place of this filename. This only matters when you don't specify the filename to read_history (), or write_history (). */ @@ -258,6 +262,69 @@ read_history (const char *filename) return (read_history_range (filename, 0, -1)); } +#define RBUFSIZE 4096 + +/* Read from a non-regular file until EOF, assuming we can't trust the file + size as reported by fstat. */ +static ssize_t +history_read_slow (int fd, char **bufp) +{ + char *ret, *r; + size_t retsize, retlen; + char rbuf[RBUFSIZE]; + ssize_t nr, nw; + + if (bufp == 0) + return -1; + + retsize = RBUFSIZE; + ret = malloc(retsize); + if (ret == 0) + return -1; + retlen = 0; + + while (nr = read (fd, rbuf, sizeof (rbuf))) + { + if (nr < 0) + { + free (ret); + *bufp = NULL; + return -1; + } + + if (retlen >= retsize - nr - 1) + { + retsize *= 2; + r = realloc (ret, retsize); + if (r == 0) + { + free(ret); + *bufp = NULL; + return -1; + } + ret = r; + } + memcpy (ret + retlen, rbuf, nr); + retlen += nr; + } + if (retlen + 1 >= retsize) + { + retsize += 1; + r = realloc (ret, retsize); + if (r == 0) + { + free (ret); + *bufp = NULL; + return -1; + } + ret = r; + } + ret[retlen] = '\0'; + + *bufp = ret; + return (ssize_t)retlen; +} + /* Read a range of lines from FILENAME, adding them to the history list. Start reading at the FROM'th line and end at the TO'th. If FROM is zero, start at the beginning. If TO is less than FROM, read @@ -294,12 +361,15 @@ read_history_range (const char *filename, int from, int to) if (S_ISREG (finfo.st_mode) == 0) { -#ifdef EFTYPE - errno = EFTYPE; -#else - errno = EINVAL; -#endif - goto error_and_exit; + chars_read = history_read_slow (file, &buffer); + if (chars_read == 0) + { + free (buffer); + free (input); + close (file); + return 0; + } + goto after_file_read; } else { @@ -341,6 +411,8 @@ read_history_range (const char *filename, int from, int to) chars_read = read (file, buffer, file_size); #endif + +after_file_read: if (chars_read < 0) { error_and_exit: diff --git a/history.c b/history.c index 2d0400b..f695f36 100644 --- a/history.c +++ b/history.c @@ -1,6 +1,6 @@ /* history.c -- standalone history library */ -/* Copyright (C) 1989-2024 Free Software Foundation, Inc. +/* Copyright (C) 1989-2025 Free Software Foundation, Inc. This file contains the GNU History Library (History), a set of routines for managing the text of previously typed lines. diff --git a/input.c b/input.c index e6a39e2..3383edb 100644 --- a/input.c +++ b/input.c @@ -261,13 +261,16 @@ rl_gather_tyi (void) input = 0; tty = fileno (rl_instream); - /* Move this up here to give it first shot, but it can't set chars_avail */ + /* Move this up here to give it first shot, but it can't set chars_avail, + so we assume a single character is available. */ /* XXX - need rl_chars_available_hook? */ if (rl_input_available_hook) { result = (*rl_input_available_hook) (); if (result == 0) result = -1; + else + chars_avail = 1; } #if defined (HAVE_PSELECT) || defined (HAVE_SELECT) @@ -285,6 +288,7 @@ rl_gather_tyi (void) #endif if (result <= 0) return 0; /* Nothing to read. */ + result = -1; /* there is something, so check how many chars below */ } #endif diff --git a/isearch.c b/isearch.c index e5faf9b..7b845c2 100644 --- a/isearch.c +++ b/isearch.c @@ -6,7 +6,7 @@ /* */ /* **************************************************************** */ -/* Copyright (C) 1987-2021,2023 Free Software Foundation, Inc. +/* Copyright (C) 1987-2021,2023,2025 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. diff --git a/mbutil.c b/mbutil.c index 5243fd7..b1b83b6 100644 --- a/mbutil.c +++ b/mbutil.c @@ -121,7 +121,7 @@ _rl_utf8_mblen (const char *s, size_t n) return 3; } } - else if (c < 0xf4) + else if (c <= 0xf4) { if (n == 1) return -2; @@ -584,6 +584,7 @@ _rl_find_prev_mbchar (const char *string, int seed, int flags) #endif } +#if defined (HANDLE_MULTIBYTE) /* Compare the first N characters of S1 and S2 without regard to case. If FLAGS&1, apply the mapping specified by completion-map-case and make `-' and `_' equivalent. Returns 1 if the strings are equal. */ @@ -658,3 +659,4 @@ _rl_mb_charcasecmp (const char *s1, mbstate_t *ps1, const char *s2, mbstate_t *p return 1; return (wc1 == wc2); } +#endif diff --git a/misc.c b/misc.c index 49ed74b..34c22b8 100644 --- a/misc.c +++ b/misc.c @@ -137,6 +137,7 @@ _rl_arg_dispatch (_rl_arg_cxt cxt, int c) else { key = _rl_bracketed_read_key (); + /* XXX - add to macro def? */ rl_restore_prompt (); rl_clear_message (); RL_UNSETSTATE(RL_STATE_NUMERICARG); diff --git a/posixtime.h b/posixtime.h index 692f6ea..883fba7 100644 --- a/posixtime.h +++ b/posixtime.h @@ -1,6 +1,6 @@ /* posixtime.h -- wrapper for time.h, sys/times.h mess. */ -/* Copyright (C) 1999-2022 Free Software Foundation, Inc. +/* Copyright (C) 1999-2025 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. diff --git a/readline.c b/readline.c index e77f89d..33b6c13 100644 --- a/readline.c +++ b/readline.c @@ -1,7 +1,7 @@ /* readline.c -- a general facility for reading lines of input with emacs style editing and completion. */ -/* Copyright (C) 1987-2024 Free Software Foundation, Inc. +/* Copyright (C) 1987-2025 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. diff --git a/rlmbutil.h b/rlmbutil.h index 607a262..473ccb1 100644 --- a/rlmbutil.h +++ b/rlmbutil.h @@ -1,6 +1,6 @@ /* rlmbutil.h -- utility functions for multibyte characters. */ -/* Copyright (C) 2001-2024 Free Software Foundation, Inc. +/* Copyright (C) 2001-2025 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. diff --git a/rltty.c b/rltty.c index 9681775..2d10efd 100644 --- a/rltty.c +++ b/rltty.c @@ -1,7 +1,7 @@ /* rltty.c -- functions to prepare and restore the terminal for readline's use. */ -/* Copyright (C) 1992-2023 Free Software Foundation, Inc. +/* Copyright (C) 1992-2025 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. diff --git a/rlwinsize.h b/rlwinsize.h index 3d1c97f..eaf7fbf 100644 --- a/rlwinsize.h +++ b/rlwinsize.h @@ -1,7 +1,7 @@ /* rlwinsize.h -- an attempt to isolate some of the system-specific defines for `struct winsize' and TIOCGWINSZ. */ -/* Copyright (C) 1997-2009 Free Software Foundation, Inc. +/* Copyright (C) 1997-2025 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. diff --git a/search.c b/search.c index a7ab947..6f4d21b 100644 --- a/search.c +++ b/search.c @@ -1,6 +1,6 @@ /* search.c - code for non-incremental searching in emacs and vi modes. */ -/* Copyright (C) 1992-2024 Free Software Foundation, Inc. +/* Copyright (C) 1992-2025 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. diff --git a/shell.c b/shell.c index 6f943de..becb8cf 100644 --- a/shell.c +++ b/shell.c @@ -1,7 +1,7 @@ /* shell.c -- readline utility functions that are normally provided by bash when readline is linked as part of the shell. */ -/* Copyright (C) 1997-2009,2017,2021 Free Software Foundation, Inc. +/* Copyright (C) 1997-2025 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. diff --git a/shlib/Makefile.in b/shlib/Makefile.in index a9a5b9c..6039efe 100644 --- a/shlib/Makefile.in +++ b/shlib/Makefile.in @@ -38,6 +38,8 @@ INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_DATA = @INSTALL_DATA@ +install_sh = @install_sh@ + CC = @CC@ RANLIB = @RANLIB@ AR = @AR@ diff --git a/support/install-sh b/support/install-sh new file mode 100755 index 0000000..8a76989 --- /dev/null +++ b/support/install-sh @@ -0,0 +1,541 @@ +#!/bin/sh +# install - install a program, script, or datafile + +scriptversion=2024-12-03.03; # UTC + +# This originates from X11R5 (mit/util/scripts/install.sh), which was +# later released in X11R6 (xc/config/util/install.sh) with the +# following copyright and license. +# +# Copyright (C) 1994 X Consortium +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to +# deal in the Software without restriction, including without limitation the +# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +# sell copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- +# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +# +# Except as contained in this notice, the name of the X Consortium shall not +# be used in advertising or otherwise to promote the sale, use or other deal- +# ings in this Software without prior written authorization from the X Consor- +# tium. +# +# +# FSF changes to this file are in the public domain. +# +# Calling this script install-sh is preferred over install.sh, to prevent +# 'make' implicit rules from creating a file called install from it +# when there is no Makefile. +# +# This script is compatible with the BSD install script, but was written +# from scratch. + +tab=' ' +nl=' +' +IFS=" $tab$nl" + +# Set DOITPROG to "echo" to test this script. + +doit=${DOITPROG-} +doit_exec=${doit:-exec} + +# Put in absolute file names if you don't have them in your path; +# or use environment vars. + +chgrpprog=${CHGRPPROG-chgrp} +chmodprog=${CHMODPROG-chmod} +chownprog=${CHOWNPROG-chown} +cmpprog=${CMPPROG-cmp} +cpprog=${CPPROG-cp} +mkdirprog=${MKDIRPROG-mkdir} +mvprog=${MVPROG-mv} +rmprog=${RMPROG-rm} +stripprog=${STRIPPROG-strip} + +posix_mkdir= + +# Desired mode of installed file. +mode=0755 + +# Create dirs (including intermediate dirs) using mode 755. +# This is like GNU 'install' as of coreutils 8.32 (2020). +mkdir_umask=22 + +backupsuffix= +chgrpcmd= +chmodcmd=$chmodprog +chowncmd= +mvcmd=$mvprog +rmcmd="$rmprog -f" +stripcmd= + +src= +dst= +dir_arg= +dst_arg= + +copy_on_change=false +is_target_a_directory=possibly + +usage="\ +Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE + or: $0 [OPTION]... SRCFILES... DIRECTORY + or: $0 [OPTION]... -t DIRECTORY SRCFILES... + or: $0 [OPTION]... -d DIRECTORIES... + +In the 1st form, copy SRCFILE to DSTFILE. +In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. +In the 4th, create DIRECTORIES. + +Options: + --help display this help and exit. + --version display version info and exit. + + -c (ignored) + -C install only if different (preserve data modification time) + -d create directories instead of installing files. + -g GROUP $chgrpprog installed files to GROUP. + -m MODE $chmodprog installed files to MODE. + -o USER $chownprog installed files to USER. + -p pass -p to $cpprog. + -s $stripprog installed files. + -S SUFFIX attempt to back up existing files, with suffix SUFFIX. + -t DIRECTORY install into DIRECTORY. + -T report an error if DSTFILE is a directory. + +Environment variables override the default commands: + CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG + RMPROG STRIPPROG + +By default, rm is invoked with -f; when overridden with RMPROG, +it's up to you to specify -f if you want it. + +If -S is not specified, no backups are attempted. + +Report bugs to . +GNU Automake home page: . +General help using GNU software: ." + +while test $# -ne 0; do + case $1 in + -c) ;; + + -C) copy_on_change=true;; + + -d) dir_arg=true;; + + -g) chgrpcmd="$chgrpprog $2" + shift;; + + --help) echo "$usage"; exit $?;; + + -m) mode=$2 + case $mode in + *' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*) + echo "$0: invalid mode: $mode" >&2 + exit 1;; + esac + shift;; + + -o) chowncmd="$chownprog $2" + shift;; + + -p) cpprog="$cpprog -p";; + + -s) stripcmd=$stripprog;; + + -S) backupsuffix="$2" + shift;; + + -t) + is_target_a_directory=always + dst_arg=$2 + # Protect names problematic for 'test' and other utilities. + case $dst_arg in + -* | [=\(\)!]) dst_arg=./$dst_arg;; + esac + shift;; + + -T) is_target_a_directory=never;; + + --version) echo "$0 (GNU Automake) $scriptversion"; exit $?;; + + --) shift + break;; + + -*) echo "$0: invalid option: $1" >&2 + exit 1;; + + *) break;; + esac + shift +done + +# We allow the use of options -d and -T together, by making -d +# take the precedence; this is for compatibility with GNU install. + +if test -n "$dir_arg"; then + if test -n "$dst_arg"; then + echo "$0: target directory not allowed when installing a directory." >&2 + exit 1 + fi +fi + +if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then + # When -d is used, all remaining arguments are directories to create. + # When -t is used, the destination is already specified. + # Otherwise, the last argument is the destination. Remove it from $@. + for arg + do + if test -n "$dst_arg"; then + # $@ is not empty: it contains at least $arg. + set fnord "$@" "$dst_arg" + shift # fnord + fi + shift # arg + dst_arg=$arg + # Protect names problematic for 'test' and other utilities. + case $dst_arg in + -* | [=\(\)!]) dst_arg=./$dst_arg;; + esac + done +fi + +if test $# -eq 0; then + if test -z "$dir_arg"; then + echo "$0: no input file specified." >&2 + exit 1 + fi + # It's OK to call 'install-sh -d' without argument. + # This can happen when creating conditional directories. + exit 0 +fi + +if test -z "$dir_arg"; then + if test $# -gt 1 || test "$is_target_a_directory" = always; then + if test ! -d "$dst_arg"; then + echo "$0: $dst_arg: Is not a directory." >&2 + exit 1 + fi + fi +fi + +if test -z "$dir_arg"; then + do_exit='(exit $ret); exit $ret' + trap "ret=129; $do_exit" 1 + trap "ret=130; $do_exit" 2 + trap "ret=141; $do_exit" 13 + trap "ret=143; $do_exit" 15 + + # Set umask so as not to create temps with too-generous modes. + # However, 'strip' requires both read and write access to temps. + case $mode in + # Optimize common cases. + *644) cp_umask=133;; + *755) cp_umask=22;; + + *[0-7]) + if test -z "$stripcmd"; then + u_plus_rw= + else + u_plus_rw='% 200' + fi + cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; + *) + if test -z "$stripcmd"; then + u_plus_rw= + else + u_plus_rw=,u+rw + fi + cp_umask=$mode$u_plus_rw;; + esac +fi + +for src +do + # Protect names problematic for 'test' and other utilities. + case $src in + -* | [=\(\)!]) src=./$src;; + esac + + if test -n "$dir_arg"; then + dst=$src + dstdir=$dst + test -d "$dstdir" + dstdir_status=$? + # Don't chown directories that already exist. + if test $dstdir_status = 0; then + chowncmd="" + fi + else + + # Waiting for this to be detected by the "$cpprog $src $dsttmp" command + # might cause directories to be created, which would be especially bad + # if $src (and thus $dsttmp) contains '*'. + if test ! -f "$src" && test ! -d "$src"; then + echo "$0: $src does not exist." >&2 + exit 1 + fi + + if test -z "$dst_arg"; then + echo "$0: no destination specified." >&2 + exit 1 + fi + dst=$dst_arg + + # If destination is a directory, append the input filename. + if test -d "$dst"; then + if test "$is_target_a_directory" = never; then + echo "$0: $dst_arg: Is a directory" >&2 + exit 1 + fi + dstdir=$dst + dstbase=`basename "$src"` + case $dst in + */) dst=$dst$dstbase;; + *) dst=$dst/$dstbase;; + esac + dstdir_status=0 + else + dstdir=`dirname "$dst"` + test -d "$dstdir" + dstdir_status=$? + fi + fi + + case $dstdir in + */) dstdirslash=$dstdir;; + *) dstdirslash=$dstdir/;; + esac + + obsolete_mkdir_used=false + + if test $dstdir_status != 0; then + case $posix_mkdir in + '') + # With -d, create the new directory with the user-specified mode. + # Otherwise, rely on $mkdir_umask. + if test -n "$dir_arg"; then + mkdir_mode=-m$mode + else + mkdir_mode= + fi + + posix_mkdir=false + # The $RANDOM variable is not portable (e.g., dash). Use it + # here however when possible just to lower collision chance. + tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ + + trap ' + ret=$? + rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null + exit $ret + ' 0 + + # Because "mkdir -p" follows existing symlinks and we likely work + # directly in world-writable /tmp, make sure that the '$tmpdir' + # directory is successfully created first before we actually test + # 'mkdir -p'. + if (umask $mkdir_umask && + $mkdirprog $mkdir_mode "$tmpdir" && + exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1 + then + if test -z "$dir_arg" || { + # Check for POSIX incompatibility with -m. + # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or + # other-writable bit of parent directory when it shouldn't. + # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. + test_tmpdir="$tmpdir/a" + ls_ld_tmpdir=`ls -ld "$test_tmpdir"` + case $ls_ld_tmpdir in + d????-?r-*) different_mode=700;; + d????-?--*) different_mode=755;; + *) false;; + esac && + $mkdirprog -m$different_mode -p -- "$test_tmpdir" && { + ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"` + test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" + } + } + then posix_mkdir=: + fi + rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" + else + # Remove any dirs left behind by ancient mkdir implementations. + rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null + fi + trap '' 0;; + esac + + if + $posix_mkdir && ( + umask $mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" + ) + then : + else + + # mkdir does not conform to POSIX, + # or it failed possibly due to a race condition. Create the + # directory the slow way, step by step, checking for races as we go. + + case $dstdir in + /*) prefix='/';; + [-=\(\)!]*) prefix='./';; + *) prefix='';; + esac + + oIFS=$IFS + IFS=/ + set -f + set fnord $dstdir + shift + set +f + IFS=$oIFS + + prefixes= + + for d + do + test X"$d" = X && continue + + prefix=$prefix$d + if test -d "$prefix"; then + prefixes= + else + if $posix_mkdir; then + (umask $mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break + # Don't fail if two instances are running concurrently. + test -d "$prefix" || exit 1 + else + case $prefix in + *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; + *) qprefix=$prefix;; + esac + prefixes="$prefixes '$qprefix'" + fi + fi + prefix=$prefix/ + done + + if test -n "$prefixes"; then + # Don't fail if two instances are running concurrently. + (umask $mkdir_umask && + eval "\$doit_exec \$mkdirprog $prefixes") || + test -d "$dstdir" || exit 1 + obsolete_mkdir_used=true + fi + fi + fi + + if test -n "$dir_arg"; then + { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && + { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && + { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || + test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 + else + + # Make a couple of temp file names in the proper directory. + dsttmp=${dstdirslash}_inst.$$_ + rmtmp=${dstdirslash}_rm.$$_ + + # Trap to clean up those temp files at exit. + trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 + + # Copy the file name to the temp name. + (umask $cp_umask && + { test -z "$stripcmd" || { + # Create $dsttmp read-write so that cp doesn't create it read-only, + # which would cause strip to fail. + if test -z "$doit"; then + : >"$dsttmp" # No need to fork-exec 'touch'. + else + $doit touch "$dsttmp" + fi + } + } && + $doit_exec $cpprog "$src" "$dsttmp") && + + # and set any options; do chmod last to preserve setuid bits. + # + # If any of these fail, we abort the whole thing. If we want to + # ignore errors from any of these, just make sure not to ignore + # errors from the above "$doit $cpprog $src $dsttmp" command. + # + { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && + { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && + { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && + { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && + + # If -C, don't bother to copy if it wouldn't change the file. + if $copy_on_change && + old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && + new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && + set -f && + set X $old && old=:$2:$4:$5:$6 && + set X $new && new=:$2:$4:$5:$6 && + set +f && + test "$old" = "$new" && + $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 + then + rm -f "$dsttmp" + else + # If $backupsuffix is set, and the file being installed + # already exists, attempt a backup. Don't worry if it fails, + # e.g., if mv doesn't support -f. + if test -n "$backupsuffix" && test -f "$dst"; then + $doit $mvcmd -f "$dst" "$dst$backupsuffix" 2>/dev/null + fi + + # Rename the file to the real destination. + $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || + + # The rename failed, perhaps because mv can't rename something else + # to itself, or perhaps because mv is so ancient that it does not + # support -f. + { + # Now remove or move aside any old file at destination location. + # We try this two ways since rm can't unlink itself on some + # systems and the destination file might be busy for other + # reasons. In this case, the final cleanup might fail but the new + # file should still install successfully. + { + test ! -f "$dst" || + $doit $rmcmd "$dst" 2>/dev/null || + { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && + { $doit $rmcmd "$rmtmp" 2>/dev/null; :; } + } || + { echo "$0: cannot unlink or rename $dst" >&2 + (exit 1); exit 1 + } + } && + + # Now rename the file to the real destination. + $doit $mvcmd "$dsttmp" "$dst" + } + fi || exit 1 + + trap '' 0 + fi +done + +# Local variables: +# eval: (add-hook 'before-save-hook 'time-stamp nil t) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC0" +# time-stamp-end: "; # UTC" +# End: diff --git a/terminal.c b/terminal.c index e644e09..50fb904 100644 --- a/terminal.c +++ b/terminal.c @@ -1,6 +1,6 @@ /* terminal.c -- controlling the terminal with termcap. */ -/* Copyright (C) 1996-2023 Free Software Foundation, Inc. +/* Copyright (C) 1996-2025 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -105,17 +105,12 @@ static int tcap_initialized; /* Systems for which PC/BC/UP are defined in the curses library and need an extern definition here. */ #if !defined (__linux__) && !defined (__gnu_hurd__) && !defined (NCURSES_VERSION) -# define NEED_EXTERN_PC -#endif /* !__linux__ && !__gnu_hurd__ && !NCURSES_VERSION */ - -#if defined (__EMX__) -# define NEED_EXTERN_PC -#endif - -#if defined (NEED_EXTERN_PC) -extern -# endif /* NEED_EXTERN_PC */ +# if defined (__EMX__) || defined (NEED_EXTERN_PC) +extern +# endif /* __EMX__ || NEED_EXTERN_PC */ char PC, *BC, *UP; +#endif /* !__linux__ && !NCURSES_VERSION */ + /* Some strings to control terminal actions. These are output by tputs (). */ char *_rl_term_clreol; diff --git a/text.c b/text.c index e8d4f5f..d842589 100644 --- a/text.c +++ b/text.c @@ -1786,13 +1786,17 @@ static int _rl_char_search (int count, int fdir, int bdir) { char mbchar[MB_LEN_MAX]; - int mb_len; + int mb_len, i; mb_len = _rl_read_mbchar (mbchar, MB_LEN_MAX); if (mb_len <= 0) return 1; + if (RL_ISSTATE (RL_STATE_MACRODEF)) + for (i = 0; i < mb_len; i++) + _rl_add_macro_char (mbchar[i]); + if (count < 0) return (_rl_char_search_internal (-count, bdir, mbchar, mb_len)); else @@ -1805,9 +1809,13 @@ _rl_char_search (int count, int fdir, int bdir) int c; c = _rl_bracketed_read_key (); + if (c < 0) return 1; + if (RL_ISSTATE (RL_STATE_MACRODEF)) + _rl_add_macro_char (c); + if (count < 0) return (_rl_char_search_internal (-count, bdir, c)); else diff --git a/util.c b/util.c index 908a05f..c8c23de 100644 --- a/util.c +++ b/util.c @@ -1,6 +1,6 @@ /* util.c -- readline utility functions */ -/* Copyright (C) 1987-2017 Free Software Foundation, Inc. +/* Copyright (C) 1987-2025 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. diff --git a/vi_mode.c b/vi_mode.c index 762a214..4028c08 100644 --- a/vi_mode.c +++ b/vi_mode.c @@ -1833,6 +1833,7 @@ _rl_vi_callback_char_search (_rl_callback_generic_arg *data) if (c <= 0) { + /* XXX - unset _rl_callback_func here? */ RL_UNSETSTATE (RL_STATE_CHARSEARCH); return -1; } -- 2.47.2