aboutsummaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
Diffstat (limited to 'doc')
-rw-r--r--doc/Makefile.am115
-rw-r--r--doc/Makefile.in875
-rw-r--r--doc/am-utils.dvibin0 -> 622072 bytes
-rw-r--r--doc/am-utils.info8897
-rw-r--r--doc/am-utils.info-17645
-rw-r--r--doc/am-utils.info-2bin0 -> 76982 bytes
-rw-r--r--doc/am-utils.ps18222
-rw-r--r--doc/am-utils.texi281
-rw-r--r--doc/hlfsd.ps2718
-rwxr-xr-xdoc/mdate-sh224
-rw-r--r--doc/stamp-vti8
-rw-r--r--doc/texinfo.tex5565
-rw-r--r--doc/version.texi8
13 files changed, 43189 insertions, 1369 deletions
diff --git a/doc/Makefile.am b/doc/Makefile.am
new file mode 100644
index 000000000000..6e1e6b66a008
--- /dev/null
+++ b/doc/Makefile.am
@@ -0,0 +1,115 @@
+## Process this file with automake to produce Makefile.in
+
+# Package: am-utils
+# Level: Makefile for doc/ directory
+# Author: Erez Zadok
+
+@SET_MAKE@
+
+info_TEXINFOS = am-utils.texi
+
+EXTRA_DIST = hlfsd.ps
+
+# force generation of 'letter' format PS and embed Type-3 fonts
+# (our European allies may object...)
+DVIPS = dvips -t letter -Pcmz
+
+# Force version.texi to be rebuilt regardless of maintainer mode
+$(srcdir)/version.texi: am-utils.texi $(top_srcdir)/configure.ac
+ @(set `$(SHELL) $(srcdir)/mdate-sh $(srcdir)/am-utils.texi`; \
+ echo "@set UPDATED $$1 $$2 $$3"; \
+ echo "@set UPDATED-MONTH $$2 $$3"; \
+ echo "@set EDITION $(VERSION)"; \
+ echo "@set VERSION $(VERSION)") > vti.tmp
+ @cmp -s vti.tmp $(srcdir)/version.texi \
+ || (echo "Updating $(srcdir)/version.texi"; \
+ cp vti.tmp $(srcdir)/version.texi)
+ -@rm -f vti.tmp
+
+# include dvi/ps in distribution
+dist-hook: $(distdir)/am-utils.dvi $(distdir)/am-utils.ps
+
+$(distdir)/am-utils.dvi: am-utils.dvi
+ install -c -m 644 $< $@
+
+$(distdir)/am-utils.ps: am-utils.ps
+ install -c -m 644 $< $@
+
+# a special target for making Postscript files
+ps: am-utils.dvi am-utils.ps
+
+am-utils-clean: clean maintainer-clean-aminfo maintainer-clean-vti
+
+# personal rule for Erez Zadok to generate and install html docs
+alldocs: ps install-NEWS install-INSTALL install-ChangeLog install-AUTHORS install-tasks install-autofs install-y2k install-ldap install-osx install-BUGS install-FAQ install-html install-ps install-MIRRORS install-attrcache install-sun2amd
+
+AMU_HTML_TOP=$(HOME)/proj/www/docs/am-utils
+install-html: $(AMU_HTML_TOP)/am-utils-all.html
+$(AMU_HTML_TOP)/am-utils-all.html: am-utils.texi
+ texi2html -Verbose -expand info -number -out_file am-utils-all.html $<
+ texi2html -frames -Verbose -expand info -number -split chapter $<
+ mv am-utils-all.html am-utils/*.html $(AMU_HTML_TOP)
+ chmod -R a+r $(AMU_HTML_TOP)
+
+install-ps: $(AMU_HTML_TOP)/am-utils.ps
+$(AMU_HTML_TOP)/am-utils.ps: am-utils.ps
+ install -c -m 644 $< $@
+
+install-NEWS: $(AMU_HTML_TOP)/NEWS.txt
+$(AMU_HTML_TOP)/NEWS.txt: $(top_srcdir)/NEWS
+ install -c -m 644 $< $@
+
+install-INSTALL: $(AMU_HTML_TOP)/INSTALL.txt
+$(AMU_HTML_TOP)/INSTALL.txt: $(top_srcdir)/INSTALL
+ install -c -m 644 $< $@
+
+install-ChangeLog: $(AMU_HTML_TOP)/ChangeLog.txt
+$(AMU_HTML_TOP)/ChangeLog.txt: $(top_srcdir)/ChangeLog
+ sed 's/@.*>$$/@...>/g' < $< > $@
+ chmod 644 $@
+
+install-AUTHORS: $(AMU_HTML_TOP)/AUTHORS.txt
+$(AMU_HTML_TOP)/AUTHORS.txt: $(top_srcdir)/AUTHORS
+ install -c -m 644 $< $@
+
+install-tasks: $(AMU_HTML_TOP)/tasks.txt
+$(AMU_HTML_TOP)/tasks.txt: $(top_srcdir)/tasks
+ install -c -m 644 $< $@
+
+install-autofs: $(AMU_HTML_TOP)/autofs.txt
+$(AMU_HTML_TOP)/autofs.txt: $(top_srcdir)/README.autofs
+ install -c -m 644 $< $@
+
+install-y2k: $(AMU_HTML_TOP)/y2k.txt
+$(AMU_HTML_TOP)/y2k.txt: $(top_srcdir)/README.y2k
+ install -c -m 644 $< $@
+
+install-attrcache: $(AMU_HTML_TOP)/attrcache.txt
+$(AMU_HTML_TOP)/attrcache.txt: $(top_srcdir)/README.attrcache
+ install -c -m 644 $< $@
+
+install-sun2amd: $(AMU_HTML_TOP)/sun2amd.txt
+$(AMU_HTML_TOP)/sun2amd.txt: $(top_srcdir)/README.sun2amd
+ install -c -m 644 $< $@
+
+install-ldap: $(AMU_HTML_TOP)/ldap.txt
+$(AMU_HTML_TOP)/ldap.txt: $(top_srcdir)/README.ldap
+ install -c -m 644 $< $@
+
+install-osx: $(AMU_HTML_TOP)/osx.txt
+$(AMU_HTML_TOP)/osx.txt: $(top_srcdir)/README.osx
+ install -c -m 644 $< $@
+
+install-BUGS: $(AMU_HTML_TOP)/BUGS.txt
+$(AMU_HTML_TOP)/BUGS.txt: $(top_srcdir)/BUGS
+ install -c -m 644 $< $@
+
+install-FAQ: $(AMU_HTML_TOP)/FAQ.txt
+$(AMU_HTML_TOP)/FAQ.txt: $(top_srcdir)/FAQ
+ install -c -m 644 $< $@
+
+install-MIRRORS: $(AMU_HTML_TOP)/MIRRORS.txt $(AMU_HTML_TOP)/MIRRORS.html
+$(AMU_HTML_TOP)/MIRRORS.txt: $(top_srcdir)/MIRRORS.txt
+ install -c -m 644 $< $@
+$(AMU_HTML_TOP)/MIRRORS.html: $(top_srcdir)/MIRRORS.html
+ install -c -m 644 $< $@
diff --git a/doc/Makefile.in b/doc/Makefile.in
new file mode 100644
index 000000000000..e875fffba271
--- /dev/null
+++ b/doc/Makefile.in
@@ -0,0 +1,875 @@
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+# Package: am-utils
+# Level: Makefile for doc/ directory
+# Author: Erez Zadok
+VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = doc
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
+ $(top_srcdir)/mkinstalldirs mdate-sh $(srcdir)/version.texi \
+ $(srcdir)/stamp-vti texinfo.tex
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 $(top_srcdir)/vers.m4 \
+ $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
+SOURCES =
+DIST_SOURCES =
+AM_V_DVIPS = $(am__v_DVIPS_@AM_V@)
+am__v_DVIPS_ = $(am__v_DVIPS_@AM_DEFAULT_V@)
+am__v_DVIPS_0 = @echo " DVIPS " $@;
+am__v_DVIPS_1 =
+AM_V_MAKEINFO = $(am__v_MAKEINFO_@AM_V@)
+am__v_MAKEINFO_ = $(am__v_MAKEINFO_@AM_DEFAULT_V@)
+am__v_MAKEINFO_0 = @echo " MAKEINFO" $@;
+am__v_MAKEINFO_1 =
+AM_V_INFOHTML = $(am__v_INFOHTML_@AM_V@)
+am__v_INFOHTML_ = $(am__v_INFOHTML_@AM_DEFAULT_V@)
+am__v_INFOHTML_0 = @echo " INFOHTML" $@;
+am__v_INFOHTML_1 =
+AM_V_TEXI2DVI = $(am__v_TEXI2DVI_@AM_V@)
+am__v_TEXI2DVI_ = $(am__v_TEXI2DVI_@AM_DEFAULT_V@)
+am__v_TEXI2DVI_0 = @echo " TEXI2DVI" $@;
+am__v_TEXI2DVI_1 =
+AM_V_TEXI2PDF = $(am__v_TEXI2PDF_@AM_V@)
+am__v_TEXI2PDF_ = $(am__v_TEXI2PDF_@AM_DEFAULT_V@)
+am__v_TEXI2PDF_0 = @echo " TEXI2PDF" $@;
+am__v_TEXI2PDF_1 =
+AM_V_texinfo = $(am__v_texinfo_@AM_V@)
+am__v_texinfo_ = $(am__v_texinfo_@AM_DEFAULT_V@)
+am__v_texinfo_0 = -q
+am__v_texinfo_1 =
+AM_V_texidevnull = $(am__v_texidevnull_@AM_V@)
+am__v_texidevnull_ = $(am__v_texidevnull_@AM_DEFAULT_V@)
+am__v_texidevnull_0 = > /dev/null
+am__v_texidevnull_1 =
+INFO_DEPS = $(srcdir)/am-utils.info
+am__TEXINFO_TEX_DIR = $(srcdir)
+DVIS = am-utils.dvi
+PDFS = am-utils.pdf
+PSS = am-utils.ps
+HTMLS = am-utils.html
+TEXINFOS = am-utils.texi
+TEXI2DVI = texi2dvi
+TEXI2PDF = $(TEXI2DVI) --pdf --batch
+MAKEINFOHTML = $(MAKEINFO) --html
+AM_MAKEINFOHTMLFLAGS = $(AM_MAKEINFOFLAGS)
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+am__installdirs = "$(DESTDIR)$(infodir)"
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+ test -z "$$files" \
+ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+ $(am__cd) "$$dir" && rm -f $$files; }; \
+ }
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMD_FS_OBJS = @AMD_FS_OBJS@
+AMD_INFO_OBJS = @AMD_INFO_OBJS@
+AMTAR = @AMTAR@
+AMU_AUTOFS_PROT_HEADER = @AMU_AUTOFS_PROT_HEADER@
+AMU_CFLAGS = @AMU_CFLAGS@
+AMU_LIB_OBJS = @AMU_LIB_OBJS@
+AMU_NFS_PROT_HEADER = @AMU_NFS_PROT_HEADER@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LEX = @LEX@
+LEXLIB = @LEXLIB@
+LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIBTOOL_DEPS = @LIBTOOL_DEPS@
+LIBTOOL_LDFLAGS = @LIBTOOL_LDFLAGS@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+UNMOUNT_PROGRAM = @UNMOUNT_PROGRAM@
+VERSION = @VERSION@
+WRAPLIB = @WRAPLIB@
+YACC = @YACC@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+am_utils_unmount_args = @am_utils_unmount_args@
+am_utils_unmount_call = @am_utils_unmount_call@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+info_TEXINFOS = am-utils.texi
+EXTRA_DIST = hlfsd.ps
+
+# force generation of 'letter' format PS and embed Type-3 fonts
+# (our European allies may object...)
+DVIPS = dvips -t letter -Pcmz
+AMU_HTML_TOP = $(HOME)/proj/www/docs/am-utils
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .dvi .html .info .pdf .ps .texi
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnu doc/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+.texi.info:
+ $(AM_V_MAKEINFO)restore=: && backupdir="$(am__leading_dot)am$$$$" && \
+ am__cwd=`pwd` && $(am__cd) $(srcdir) && \
+ rm -rf $$backupdir && mkdir $$backupdir && \
+ if ($(MAKEINFO) --version) >/dev/null 2>&1; then \
+ for f in $@ $@-[0-9] $@-[0-9][0-9] $(@:.info=).i[0-9] $(@:.info=).i[0-9][0-9]; do \
+ if test -f $$f; then mv $$f $$backupdir; restore=mv; else :; fi; \
+ done; \
+ else :; fi && \
+ cd "$$am__cwd"; \
+ if $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \
+ -o $@ $<; \
+ then \
+ rc=0; \
+ $(am__cd) $(srcdir); \
+ else \
+ rc=$$?; \
+ $(am__cd) $(srcdir) && \
+ $$restore $$backupdir/* `echo "./$@" | sed 's|[^/]*$$||'`; \
+ fi; \
+ rm -rf $$backupdir; exit $$rc
+
+.texi.dvi:
+ $(AM_V_TEXI2DVI)TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
+ MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \
+ $(TEXI2DVI) $(AM_V_texinfo) --build-dir=$(@:.dvi=.t2d) -o $@ $(AM_V_texidevnull) \
+ $<
+
+.texi.pdf:
+ $(AM_V_TEXI2PDF)TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
+ MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \
+ $(TEXI2PDF) $(AM_V_texinfo) --build-dir=$(@:.pdf=.t2p) -o $@ $(AM_V_texidevnull) \
+ $<
+
+.texi.html:
+ $(AM_V_MAKEINFO)rm -rf $(@:.html=.htp)
+ $(AM_V_at)if $(MAKEINFOHTML) $(AM_MAKEINFOHTMLFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \
+ -o $(@:.html=.htp) $<; \
+ then \
+ rm -rf $@ && mv $(@:.html=.htp) $@; \
+ else \
+ rm -rf $(@:.html=.htp); exit 1; \
+ fi
+$(srcdir)/am-utils.info: am-utils.texi $(srcdir)/version.texi
+am-utils.dvi: am-utils.texi $(srcdir)/version.texi
+am-utils.pdf: am-utils.texi $(srcdir)/version.texi
+am-utils.html: am-utils.texi $(srcdir)/version.texi
+$(srcdir)/stamp-vti: am-utils.texi $(top_srcdir)/configure
+ @(dir=.; test -f ./am-utils.texi || dir=$(srcdir); \
+ set `$(SHELL) $(srcdir)/mdate-sh $$dir/am-utils.texi`; \
+ echo "@set UPDATED $$1 $$2 $$3"; \
+ echo "@set UPDATED-MONTH $$2 $$3"; \
+ echo "@set EDITION $(VERSION)"; \
+ echo "@set VERSION $(VERSION)") > vti.tmp
+ @cmp -s vti.tmp $(srcdir)/version.texi \
+ || (echo "Updating $(srcdir)/version.texi"; \
+ cp vti.tmp $(srcdir)/version.texi)
+ -@rm -f vti.tmp
+ @cp $(srcdir)/version.texi $@
+
+mostlyclean-vti:
+ -rm -f vti.tmp
+
+maintainer-clean-vti:
+@MAINTAINER_MODE_TRUE@ -rm -f $(srcdir)/stamp-vti $(srcdir)/version.texi
+.dvi.ps:
+ $(AM_V_DVIPS)TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
+ $(DVIPS) $(AM_V_texinfo) -o $@ $<
+
+uninstall-dvi-am:
+ @$(NORMAL_UNINSTALL)
+ @list='$(DVIS)'; test -n "$(dvidir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " rm -f '$(DESTDIR)$(dvidir)/$$f'"; \
+ rm -f "$(DESTDIR)$(dvidir)/$$f"; \
+ done
+
+uninstall-html-am:
+ @$(NORMAL_UNINSTALL)
+ @list='$(HTMLS)'; test -n "$(htmldir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " rm -rf '$(DESTDIR)$(htmldir)/$$f'"; \
+ rm -rf "$(DESTDIR)$(htmldir)/$$f"; \
+ done
+
+uninstall-info-am:
+ @$(PRE_UNINSTALL)
+ @if test -d '$(DESTDIR)$(infodir)' && $(am__can_run_installinfo); then \
+ list='$(INFO_DEPS)'; \
+ for file in $$list; do \
+ relfile=`echo "$$file" | sed 's|^.*/||'`; \
+ echo " install-info --info-dir='$(DESTDIR)$(infodir)' --remove '$(DESTDIR)$(infodir)/$$relfile'"; \
+ if install-info --info-dir="$(DESTDIR)$(infodir)" --remove "$(DESTDIR)$(infodir)/$$relfile"; \
+ then :; else test ! -f "$(DESTDIR)$(infodir)/$$relfile" || exit 1; fi; \
+ done; \
+ else :; fi
+ @$(NORMAL_UNINSTALL)
+ @list='$(INFO_DEPS)'; \
+ for file in $$list; do \
+ relfile=`echo "$$file" | sed 's|^.*/||'`; \
+ relfile_i=`echo "$$relfile" | sed 's|\.info$$||;s|$$|.i|'`; \
+ (if test -d "$(DESTDIR)$(infodir)" && cd "$(DESTDIR)$(infodir)"; then \
+ echo " cd '$(DESTDIR)$(infodir)' && rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9]"; \
+ rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9]; \
+ else :; fi); \
+ done
+
+uninstall-pdf-am:
+ @$(NORMAL_UNINSTALL)
+ @list='$(PDFS)'; test -n "$(pdfdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " rm -f '$(DESTDIR)$(pdfdir)/$$f'"; \
+ rm -f "$(DESTDIR)$(pdfdir)/$$f"; \
+ done
+
+uninstall-ps-am:
+ @$(NORMAL_UNINSTALL)
+ @list='$(PSS)'; test -n "$(psdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " rm -f '$(DESTDIR)$(psdir)/$$f'"; \
+ rm -f "$(DESTDIR)$(psdir)/$$f"; \
+ done
+
+dist-info: $(INFO_DEPS)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+ list='$(INFO_DEPS)'; \
+ for base in $$list; do \
+ case $$base in \
+ $(srcdir)/*) base=`echo "$$base" | sed "s|^$$srcdirstrip/||"`;; \
+ esac; \
+ if test -f $$base; then d=.; else d=$(srcdir); fi; \
+ base_i=`echo "$$base" | sed 's|\.info$$||;s|$$|.i|'`; \
+ for file in $$d/$$base $$d/$$base-[0-9] $$d/$$base-[0-9][0-9] $$d/$$base_i[0-9] $$d/$$base_i[0-9][0-9]; do \
+ if test -f $$file; then \
+ relfile=`expr "$$file" : "$$d/\(.*\)"`; \
+ test -f "$(distdir)/$$relfile" || \
+ cp -p $$file "$(distdir)/$$relfile"; \
+ else :; fi; \
+ done; \
+ done
+
+mostlyclean-aminfo:
+ -rm -rf am-utils.t2d am-utils.t2p
+
+clean-aminfo:
+ -test -z "am-utils.dvi am-utils.pdf am-utils.ps am-utils.html" \
+ || rm -rf am-utils.dvi am-utils.pdf am-utils.ps am-utils.html
+
+maintainer-clean-aminfo:
+ @list='$(INFO_DEPS)'; for i in $$list; do \
+ i_i=`echo "$$i" | sed 's|\.info$$||;s|$$|.i|'`; \
+ echo " rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]"; \
+ rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]; \
+ done
+tags TAGS:
+
+ctags CTAGS:
+
+cscope cscopelist:
+
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$(top_distdir)" distdir="$(distdir)" \
+ dist-info dist-hook
+check-am: all-am
+check: check-am
+all-am: Makefile $(INFO_DEPS)
+installdirs:
+ for dir in "$(DESTDIR)$(infodir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-aminfo clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am: $(DVIS)
+
+html: html-am
+
+html-am: $(HTMLS)
+
+info: info-am
+
+info-am: $(INFO_DEPS)
+
+install-data-am: install-info-am
+
+install-dvi: install-dvi-am
+
+install-dvi-am: $(DVIS)
+ @$(NORMAL_INSTALL)
+ @list='$(DVIS)'; test -n "$(dvidir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(dvidir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(dvidir)" || exit 1; \
+ fi; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; \
+ done | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(dvidir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(dvidir)" || exit $$?; \
+ done
+install-exec-am:
+
+install-html-am: $(HTMLS)
+ @$(NORMAL_INSTALL)
+ @list='$(HTMLS)'; list2=; test -n "$(htmldir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(htmldir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(htmldir)" || exit 1; \
+ fi; \
+ for p in $$list; do \
+ if test -f "$$p" || test -d "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ $(am__strip_dir) \
+ d2=$$d$$p; \
+ if test -d "$$d2"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(htmldir)/$$f'"; \
+ $(MKDIR_P) "$(DESTDIR)$(htmldir)/$$f" || exit 1; \
+ echo " $(INSTALL_DATA) '$$d2'/* '$(DESTDIR)$(htmldir)/$$f'"; \
+ $(INSTALL_DATA) "$$d2"/* "$(DESTDIR)$(htmldir)/$$f" || exit $$?; \
+ else \
+ list2="$$list2 $$d2"; \
+ fi; \
+ done; \
+ test -z "$$list2" || { echo "$$list2" | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(htmldir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(htmldir)" || exit $$?; \
+ done; }
+install-info: install-info-am
+
+install-info-am: $(INFO_DEPS)
+ @$(NORMAL_INSTALL)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+ list='$(INFO_DEPS)'; test -n "$(infodir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(infodir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(infodir)" || exit 1; \
+ fi; \
+ for file in $$list; do \
+ case $$file in \
+ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+ esac; \
+ if test -f $$file; then d=.; else d=$(srcdir); fi; \
+ file_i=`echo "$$file" | sed 's|\.info$$||;s|$$|.i|'`; \
+ for ifile in $$d/$$file $$d/$$file-[0-9] $$d/$$file-[0-9][0-9] \
+ $$d/$$file_i[0-9] $$d/$$file_i[0-9][0-9] ; do \
+ if test -f $$ifile; then \
+ echo "$$ifile"; \
+ else : ; fi; \
+ done; \
+ done | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(infodir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(infodir)" || exit $$?; done
+ @$(POST_INSTALL)
+ @if $(am__can_run_installinfo); then \
+ list='$(INFO_DEPS)'; test -n "$(infodir)" || list=; \
+ for file in $$list; do \
+ relfile=`echo "$$file" | sed 's|^.*/||'`; \
+ echo " install-info --info-dir='$(DESTDIR)$(infodir)' '$(DESTDIR)$(infodir)/$$relfile'";\
+ install-info --info-dir="$(DESTDIR)$(infodir)" "$(DESTDIR)$(infodir)/$$relfile" || :;\
+ done; \
+ else : ; fi
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am: $(PDFS)
+ @$(NORMAL_INSTALL)
+ @list='$(PDFS)'; test -n "$(pdfdir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(pdfdir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(pdfdir)" || exit 1; \
+ fi; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; \
+ done | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pdfdir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(pdfdir)" || exit $$?; done
+install-ps-am: $(PSS)
+ @$(NORMAL_INSTALL)
+ @list='$(PSS)'; test -n "$(psdir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(psdir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(psdir)" || exit 1; \
+ fi; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; \
+ done | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(psdir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(psdir)" || exit $$?; done
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-aminfo \
+ maintainer-clean-generic maintainer-clean-vti
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-aminfo mostlyclean-generic \
+ mostlyclean-libtool mostlyclean-vti
+
+pdf: pdf-am
+
+pdf-am: $(PDFS)
+
+ps-am: $(PSS)
+
+uninstall-am: uninstall-dvi-am uninstall-html-am uninstall-info-am \
+ uninstall-pdf-am uninstall-ps-am
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-am clean clean-aminfo clean-generic \
+ clean-libtool cscopelist-am ctags-am dist-hook dist-info \
+ distclean distclean-generic distclean-libtool distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-ps install-ps-am install-strip \
+ installcheck installcheck-am installdirs maintainer-clean \
+ maintainer-clean-aminfo maintainer-clean-generic \
+ maintainer-clean-vti mostlyclean mostlyclean-aminfo \
+ mostlyclean-generic mostlyclean-libtool mostlyclean-vti pdf \
+ pdf-am ps ps-am tags-am uninstall uninstall-am \
+ uninstall-dvi-am uninstall-html-am uninstall-info-am \
+ uninstall-pdf-am uninstall-ps-am
+
+
+@SET_MAKE@
+
+# Force version.texi to be rebuilt regardless of maintainer mode
+$(srcdir)/version.texi: am-utils.texi $(top_srcdir)/configure.ac
+ @(set `$(SHELL) $(srcdir)/mdate-sh $(srcdir)/am-utils.texi`; \
+ echo "@set UPDATED $$1 $$2 $$3"; \
+ echo "@set UPDATED-MONTH $$2 $$3"; \
+ echo "@set EDITION $(VERSION)"; \
+ echo "@set VERSION $(VERSION)") > vti.tmp
+ @cmp -s vti.tmp $(srcdir)/version.texi \
+ || (echo "Updating $(srcdir)/version.texi"; \
+ cp vti.tmp $(srcdir)/version.texi)
+ -@rm -f vti.tmp
+
+# include dvi/ps in distribution
+dist-hook: $(distdir)/am-utils.dvi $(distdir)/am-utils.ps
+
+$(distdir)/am-utils.dvi: am-utils.dvi
+ install -c -m 644 $< $@
+
+$(distdir)/am-utils.ps: am-utils.ps
+ install -c -m 644 $< $@
+
+# a special target for making Postscript files
+ps: am-utils.dvi am-utils.ps
+
+am-utils-clean: clean maintainer-clean-aminfo maintainer-clean-vti
+
+# personal rule for Erez Zadok to generate and install html docs
+alldocs: ps install-NEWS install-INSTALL install-ChangeLog install-AUTHORS install-tasks install-autofs install-y2k install-ldap install-osx install-BUGS install-FAQ install-html install-ps install-MIRRORS install-attrcache install-sun2amd
+install-html: $(AMU_HTML_TOP)/am-utils-all.html
+$(AMU_HTML_TOP)/am-utils-all.html: am-utils.texi
+ texi2html -Verbose -expand info -number -out_file am-utils-all.html $<
+ texi2html -frames -Verbose -expand info -number -split chapter $<
+ mv am-utils-all.html am-utils/*.html $(AMU_HTML_TOP)
+ chmod -R a+r $(AMU_HTML_TOP)
+
+install-ps: $(AMU_HTML_TOP)/am-utils.ps
+$(AMU_HTML_TOP)/am-utils.ps: am-utils.ps
+ install -c -m 644 $< $@
+
+install-NEWS: $(AMU_HTML_TOP)/NEWS.txt
+$(AMU_HTML_TOP)/NEWS.txt: $(top_srcdir)/NEWS
+ install -c -m 644 $< $@
+
+install-INSTALL: $(AMU_HTML_TOP)/INSTALL.txt
+$(AMU_HTML_TOP)/INSTALL.txt: $(top_srcdir)/INSTALL
+ install -c -m 644 $< $@
+
+install-ChangeLog: $(AMU_HTML_TOP)/ChangeLog.txt
+$(AMU_HTML_TOP)/ChangeLog.txt: $(top_srcdir)/ChangeLog
+ sed 's/@.*>$$/@...>/g' < $< > $@
+ chmod 644 $@
+
+install-AUTHORS: $(AMU_HTML_TOP)/AUTHORS.txt
+$(AMU_HTML_TOP)/AUTHORS.txt: $(top_srcdir)/AUTHORS
+ install -c -m 644 $< $@
+
+install-tasks: $(AMU_HTML_TOP)/tasks.txt
+$(AMU_HTML_TOP)/tasks.txt: $(top_srcdir)/tasks
+ install -c -m 644 $< $@
+
+install-autofs: $(AMU_HTML_TOP)/autofs.txt
+$(AMU_HTML_TOP)/autofs.txt: $(top_srcdir)/README.autofs
+ install -c -m 644 $< $@
+
+install-y2k: $(AMU_HTML_TOP)/y2k.txt
+$(AMU_HTML_TOP)/y2k.txt: $(top_srcdir)/README.y2k
+ install -c -m 644 $< $@
+
+install-attrcache: $(AMU_HTML_TOP)/attrcache.txt
+$(AMU_HTML_TOP)/attrcache.txt: $(top_srcdir)/README.attrcache
+ install -c -m 644 $< $@
+
+install-sun2amd: $(AMU_HTML_TOP)/sun2amd.txt
+$(AMU_HTML_TOP)/sun2amd.txt: $(top_srcdir)/README.sun2amd
+ install -c -m 644 $< $@
+
+install-ldap: $(AMU_HTML_TOP)/ldap.txt
+$(AMU_HTML_TOP)/ldap.txt: $(top_srcdir)/README.ldap
+ install -c -m 644 $< $@
+
+install-osx: $(AMU_HTML_TOP)/osx.txt
+$(AMU_HTML_TOP)/osx.txt: $(top_srcdir)/README.osx
+ install -c -m 644 $< $@
+
+install-BUGS: $(AMU_HTML_TOP)/BUGS.txt
+$(AMU_HTML_TOP)/BUGS.txt: $(top_srcdir)/BUGS
+ install -c -m 644 $< $@
+
+install-FAQ: $(AMU_HTML_TOP)/FAQ.txt
+$(AMU_HTML_TOP)/FAQ.txt: $(top_srcdir)/FAQ
+ install -c -m 644 $< $@
+
+install-MIRRORS: $(AMU_HTML_TOP)/MIRRORS.txt $(AMU_HTML_TOP)/MIRRORS.html
+$(AMU_HTML_TOP)/MIRRORS.txt: $(top_srcdir)/MIRRORS.txt
+ install -c -m 644 $< $@
+$(AMU_HTML_TOP)/MIRRORS.html: $(top_srcdir)/MIRRORS.html
+ install -c -m 644 $< $@
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/doc/am-utils.dvi b/doc/am-utils.dvi
new file mode 100644
index 000000000000..9fe4ff7e4dde
--- /dev/null
+++ b/doc/am-utils.dvi
Binary files differ
diff --git a/doc/am-utils.info b/doc/am-utils.info
new file mode 100644
index 000000000000..3a01684f240c
--- /dev/null
+++ b/doc/am-utils.info
@@ -0,0 +1,8897 @@
+This is am-utils.info, produced by makeinfo version 5.2 from
+am-utils.texi.
+
+INFO-DIR-SECTION Administration
+START-INFO-DIR-ENTRY
+* Am-utils: (am-utils). The Amd automounter suite of utilities
+END-INFO-DIR-ENTRY
+
+
+File: am-utils.info, Node: Top, Next: License, Up: (DIR)
+
+Am-utils (4.4BSD Automounter Utilities) User Manual
+For version 6.2, 28 October 2014
+
+ Erez Zadok
+(Originally by Jan-Simon Pendry and Nick Williams)
+
+ Copyright (C) 1997-2014 Erez Zadok
+Copyright (C) 1989 Jan-Simon Pendry
+Copyright (C) 1989 Imperial College of Science, Technology & Medicine
+Copyright (C) 1989 The Regents of the University of California.
+All Rights Reserved.
+
+ Permission to copy this document, or any portion of it, as necessary
+for use of this software is granted provided this copyright notice and
+statement of permission are included.
+
+ Am-utils is the 4.4BSD Automounter Tool Suite, which includes the Amd
+automounter, the Amq query and control program, the Hlfsd daemon, and
+other tools. This Info file describes how to use and understand the
+tools within Am-utils.
+
+* Menu:
+
+* License:: Explains the terms and conditions for using
+ and distributing Am-utils.
+* Distrib:: How to get the latest Am-utils distribution.
+* AddInfo:: How to get additional information.
+* Intro:: An introduction to Automounting concepts.
+* History:: History of am-utils' development.
+* Overview:: An overview of Amd.
+* Supported Platforms:: Machines and Systems supported by Amd.
+* Mount Maps:: Details of mount maps.
+* Amd Command Line Options:: All the Amd command line options explained.
+* Filesystem Types:: The different mount types supported by Amd.
+* Amd Configuration File:: The amd.conf file syntax and meaning.
+* Run-time Administration:: How to start, stop and control Amd.
+* FSinfo:: The FSinfo filesystem management tool.
+* Hlfsd:: The Home-Link Filesystem server.
+* Assorted Tools:: Other tools which come with am-utils.
+* Examples:: Some examples showing how Amd might be used.
+* Internals:: Implementation details.
+* Acknowledgments & Trademarks:: Legal Notes.
+
+Indexes
+* Index:: An item for each concept.
+
+
+File: am-utils.info, Node: License, Next: Distrib, Prev: Top, Up: Top
+
+License
+*******
+
+Am-utils is not in the public domain; it is copyrighted and there are
+restrictions on its distribution.
+
+ Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the
+ distribution.
+
+ 3. Neither the name of the University nor the names of its
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+THE POSSIBILITY OF SUCH DAMAGE.
+
+
+File: am-utils.info, Node: Distrib, Next: AddInfo, Prev: License, Up: Top
+
+Source Distribution
+*******************
+
+The Am-utils home page is located in
+ <http://www.am-utils.org/>
+
+ You can get the latest distribution version of Am-utils from
+ <ftp://ftp.am-utils.org/pub/am-utils/am-utils.tar.gz>
+
+ Additional alpha, beta, and release distributions are available in
+ <ftp://ftp.am-utils.org/pub/am-utils/>.
+
+ Revision 5.2 was part of the 4.3BSD Reno distribution.
+
+ Revision 5.3bsdnet, a late alpha version of 5.3, was part of the BSD
+network version 2 distribution
+
+ Revision 6.0 was made independently by Erez Zadok at the Computer
+Science Department of Columbia University (http://www.cs.columbia.edu/),
+as part of his PhD thesis work
+(http://www.fsl.cs.sunysb.edu/docs/zadok-thesis-proposal/). Am-utils
+(especially version 6.1) continues to be developed and maintained at the
+Computer Science Department (http://www.cs.sunysb.edu/) of Stony Brook
+University (http://www.stonybrook.edu/), as a service to the user
+community.
+
+ *Note History::, for more details.
+
+
+File: am-utils.info, Node: AddInfo, Next: Intro, Prev: Distrib, Up: Top
+
+Getting Additional Information
+******************************
+
+Bug Reports
+===========
+
+Before reporting a bug, see if it is a known one in the bugs
+(http://www.am-utils.org/docs/am-utils/BUGS.txt) file.
+
+ If you find a problem and hopefully you can reproduce it, please
+describe it in detail and submit a bug report
+(https://bugzilla.filesystems.org/) via Bugzilla
+(http://www.bugzilla.org/). Alternatively, you can send your bug report
+to the "am-utils" list (see <http://www.am-utils.org/> under "Mailing
+Lists") quoting the details of the release and your configuration.
+These details can be obtained by running the command 'amd -v'. It would
+greatly help if you could provide a reproducible procedure for detecting
+the bug you are reporting.
+
+ Providing working patches is highly encouraged. Every patch
+incorporated, however small, will get its author an honorable mention in
+the authors file (http://www.am-utils.org/docs/am-utils/AUTHORS.txt).
+
+Mailing Lists
+=============
+
+There are several mailing lists for people interested in keeping
+up-to-date with developments.
+
+ 1. The users mailing list, 'am-utils' is for
+
+ - announcements of alpha and beta releases of am-utils
+ - reporting of bugs and patches
+ - discussions of new features for am-utils
+ - implementation and porting issues
+
+ To subscribe, visit <http://www.am-utils.org/> under "Mailing
+ Lists." After subscribing, you can post a message to this list.
+ To avoid as much spam as possible, only subscribers to this list
+ may post to it.
+
+ Subscribers of 'am-utils' are most helpful if they have the time
+ and resources to test new and development versions of amd, on as
+ many different platforms as possible. They should also be prepared
+ to learn and use the GNU Autoconf, Automake, and Libtool packages,
+ as needed; and of course, become familiar with the complex code in
+ the am-utils package. In other words, subscribers on this list
+ should hopefully be able to contribute meaningfully to the
+ development of amd.
+
+ Note that this 'am-utils' list used to be called 'amd-dev' before
+ January 1st, 2004. Please use the new name, 'am-utils'.
+
+ 2. The announcements mailing list, 'am-utils-announce' is for
+ announcements only (mostly new releases). To subscribe, visit
+ <http://www.am-utils.org/> under "Mailing Lists." This list is
+ read-only: only am-utils developers may post to it.
+
+ 3. We distribute nightly CVS snapshots in
+ <ftp://ftp.am-utils.org/pub/am-utils/snapshots/daily/>. If you
+ like to get email notices of commits to the am-utils CVS
+ repository, subscribe to the CVS logs mailing list, 'am-utils-cvs'
+ at <http://www.am-utils.org/> under "Mailing Lists."
+
+ 4. The older list which was used to user discussions, 'amd-workers',
+ is defunct as of January 2004. (Its last address was <amd-workers
+ AT majordomo.glue.umd.edu>.) Don't use 'amd-workers': use the
+ newer, more active 'am-utils' list.
+
+ 5. For completeness, there's a developers-only closed list called
+ 'am-utils-developers' (see <http://www.am-utils.org/> under
+ "Mailing Lists").
+
+Am-utils Book
+=============
+
+Erez Zadok (http://www.cs.sunysb.edu/~ezk) wrote a book
+(http://www.fsl.cs.sunysb.edu/docs/amd-book/), titled Linux NFS and
+Automounter Administration, ISBN 0-7821-2739-8, (Sybex, 2001). The book
+is full of details and examples that go beyond what this manual has.
+The book also covers NFS in great detail. Although the book is geared
+toward Linux users, it is general enough for any Unix administrator and
+contains specific sections for non-Linux systems.
+
+
+File: am-utils.info, Node: Intro, Next: History, Prev: AddInfo, Up: Top
+
+Introduction
+************
+
+An "automounter" maintains a cache of mounted filesystems. Filesystems
+are mounted on demand when they are first referenced, and unmounted
+after a period of inactivity.
+
+ Amd may be used as a replacement for Sun's automounter. The choice
+of which filesystem to mount can be controlled dynamically with
+"selectors". Selectors allow decisions of the form "hostname is THIS,"
+or "architecture is not THAT." Selectors may be combined arbitrarily.
+Amd also supports a variety of filesystem types, including NFS, UFS and
+the novel "program" filesystem. The combination of selectors and
+multiple filesystem types allows identical configuration files to be
+used on all machines thus reducing the administrative overhead.
+
+ Amd ensures that it will not hang if a remote server goes down.
+Moreover, Amd can determine when a remote server has become inaccessible
+and then mount replacement filesystems as and when they become
+available.
+
+ Amd contains no proprietary source code and has been ported to
+numerous flavors of Unix.
+
+
+File: am-utils.info, Node: History, Next: Overview, Prev: Intro, Up: Top
+
+History
+*******
+
+The Amd package has been without an official maintainer since 1992.
+Several people have stepped in to maintain it unofficially. Most
+notable were the 'upl' (Unofficial Patch Level) releases of Amd, created
+by me (Erez Zadok (http://www.cs.sunysb.edu/~ezk)), and available from
+<ftp://ftp.am-utils.org/pub/amd/>. The last such unofficial release was
+'upl102'.
+
+ Through the process of patching and aging, it was becoming more and
+more apparent that Amd was in much need of revitalizing. Maintaining
+Amd had become a difficult task. I took it upon myself to cleanup the
+code, so that it would be easier to port to new platforms, add new
+features, keep up with the many new feature requests, and deal with the
+never ending stream of bug reports.
+
+ I have been working on such a release of Amd on and off since January
+of 1996. The new suite of tools is currently named "am-utils"
+(AutoMounter Utilities), in line with GNU naming conventions, befitting
+the contents of the package. In October of 1996 I had received enough
+offers to help me with this task that I decided to make a mailing list
+for this group of people. Around the same time, Amd had become a
+necessary part of my PhD thesis work, resulting in more work performed
+on am-utils.
+
+ Am-utils version 6.0 was numbered with a major new release number to
+distinguish it from the last official release of Amd (5.x). Many new
+features have been added such as a GNU 'configure' system, NFS Version
+3, a run-time configuration file ('amd.conf'), many new ports, more
+scripts and programs, as well as numerous bug fixes. Another reason for
+the new major release number was to alert users of am-utils that
+user-visible interfaces may have changed. In order to make Amd work
+well for the next 10 years, and be easier to maintain, it was necessary
+to remove old or unused features, change various syntax files, etc.
+However, great care was taken to ensure the maximum possible backwards
+compatibility.
+
+ Am-utils version 6.1 has autofs support for Linux and Solaris 2.5+ as
+the major new feature, in addition to several other minor new features.
+The autofs support is completely transparent to the end-user, aside from
+the fact that '/bin/pwd' now always returns the correct amd-ified path.
+The administrator can easily switch between NFS and autofs mounts by
+changing one parameter in 'amd.conf'. Autofs support and maintenance
+was developed in conjunction with Ion Badulescu <ionut AT badula.org>.
+
+
+File: am-utils.info, Node: Overview, Next: Supported Platforms, Prev: History, Up: Top
+
+1 Overview
+**********
+
+Amd maintains a cache of mounted filesystems. Filesystems are
+"demand-mounted" when they are first referenced, and unmounted after a
+period of inactivity. Amd may be used as a replacement for Sun's
+automount(8) program. It contains no proprietary source code and has
+been ported to numerous flavors of Unix. *Note Supported Platforms::.
+
+ Amd was designed as the basis for experimenting with filesystem
+layout and management. Although Amd has many direct applications it is
+loaded with additional features which have little practical use. At
+some point the infrequently used components may be removed to streamline
+the production system.
+
+ Amd supports the notion of "replicated" filesystems by evaluating
+each member of a list of possible filesystem locations one by one. Amd
+checks that each cached mapping remains valid. Should a mapping be lost
+- such as happens when a fileserver goes down - Amd automatically
+selects a replacement should one be available.
+
+* Menu:
+
+* Fundamentals::
+* Filesystems and Volumes::
+* Volume Naming::
+* Volume Binding::
+* Operational Principles::
+* Mounting a Volume::
+* Automatic Unmounting::
+* Keep-alives::
+* Non-blocking Operation::
+
+
+File: am-utils.info, Node: Fundamentals, Next: Filesystems and Volumes, Prev: Overview, Up: Overview
+
+1.1 Fundamentals
+================
+
+The fundamental concept behind Amd is the ability to separate the name
+used to refer to a file from the name used to refer to its physical
+storage location. This allows the same files to be accessed with the
+same name regardless of where in the network the name is used. This is
+very different from placing '/n/hostname' in front of the pathname since
+that includes location dependent information which may change if files
+are moved to another machine.
+
+ By placing the required mappings in a centrally administered
+database, filesystems can be re-organized without requiring changes to
+configuration files, shell scripts and so on.
+
+
+File: am-utils.info, Node: Filesystems and Volumes, Next: Volume Naming, Prev: Fundamentals, Up: Overview
+
+1.2 Filesystems and Volumes
+===========================
+
+Amd views the world as a set of fileservers, each containing one or more
+filesystems where each filesystem contains one or more "volumes". Here
+the term "volume" is used to refer to a coherent set of files such as a
+user's home directory or a TeX distribution.
+
+ In order to access the contents of a volume, Amd must be told in
+which filesystem the volume resides and which host owns the filesystem.
+By default the host is assumed to be local and the volume is assumed to
+be the entire filesystem. If a filesystem contains more than one
+volume, then a "sublink" is used to refer to the sub-directory within
+the filesystem where the volume can be found.
+
+
+File: am-utils.info, Node: Volume Naming, Next: Volume Binding, Prev: Filesystems and Volumes, Up: Overview
+
+1.3 Volume Naming
+=================
+
+Volume names are defined to be unique across the entire network. A
+volume name is the pathname to the volume's root as known by the users
+of that volume. Since this name uniquely identifies the volume
+contents, all volumes can be named and accessed from each host, subject
+to administrative controls.
+
+ Volumes may be replicated or duplicated. Replicated volumes contain
+identical copies of the same data and reside at two or more locations in
+the network. Each of the replicated volumes can be used
+interchangeably. Duplicated volumes each have the same name but contain
+different, though functionally identical, data. For example, '/vol/tex'
+might be the name of a TeX distribution which varied for each machine
+architecture.
+
+ Amd provides facilities to take advantage of both replicated and
+duplicated volumes. Configuration options allow a single set of
+configuration data to be shared across an entire network by taking
+advantage of replicated and duplicated volumes.
+
+ Amd can take advantage of replacement volumes by mounting them as
+required should an active fileserver become unavailable.
+
+
+File: am-utils.info, Node: Volume Binding, Next: Operational Principles, Prev: Volume Naming, Up: Overview
+
+1.4 Volume Binding
+==================
+
+Unix implements a namespace of hierarchically mounted filesystems. Two
+forms of binding between names and files are provided. A "hard link"
+completes the binding when the name is added to the filesystem. A "soft
+link" delays the binding until the name is accessed. An "automounter"
+adds a further form in which the binding of name to filesystem is
+delayed until the name is accessed.
+
+ The target volume, in its general form, is a tuple (host, filesystem,
+sublink) which can be used to name the physical location of any volume
+in the network.
+
+ When a target is referenced, Amd ignores the sublink element and
+determines whether the required filesystem is already mounted. This is
+done by computing the local mount point for the filesystem and checking
+for an existing filesystem mounted at the same place. If such a
+filesystem already exists then it is assumed to be functionally
+identical to the target filesystem. By default there is a one-to-one
+mapping between the pair (host, filesystem) and the local mount point so
+this assumption is valid.
+
+
+File: am-utils.info, Node: Operational Principles, Next: Mounting a Volume, Prev: Volume Binding, Up: Overview
+
+1.5 Operational Principles
+==========================
+
+Amd operates by introducing new mount points into the namespace. These
+are called "automount" points. The kernel sees these automount points
+as NFS filesystems being served by Amd. Having attached itself to the
+namespace, Amd is now able to control the view the rest of the system
+has of those mount points. RPC calls are received from the kernel one
+at a time.
+
+ When a "lookup" call is received Amd checks whether the name is
+already known. If it is not, the required volume is mounted. A
+symbolic link pointing to the volume root is then returned. Once the
+symbolic link is returned, the kernel will send all other requests
+direct to the mounted filesystem.
+
+ If a volume is not yet mounted, Amd consults a configuration
+"mount-map" corresponding to the automount point. Amd then makes a
+runtime decision on what and where to mount a filesystem based on the
+information obtained from the map.
+
+ Amd does not implement all the NFS requests; only those relevant to
+name binding such as "lookup", "readlink" and "readdir". Some other
+calls are also implemented but most simply return an error code; for
+example "mkdir" always returns "read-only filesystem".
+
+
+File: am-utils.info, Node: Mounting a Volume, Next: Automatic Unmounting, Prev: Operational Principles, Up: Overview
+
+1.6 Mounting a Volume
+=====================
+
+Each automount point has a corresponding mount map. The mount map
+contains a list of key-value pairs. The key is the name of the volume
+to be mounted. The value is a list of locations describing where the
+filesystem is stored in the network. In the source for the map the
+value would look like
+
+ location1 location2 ... locationN
+
+ Amd examines each location in turn. Each location may contain
+"selectors" which control whether Amd can use that location. For
+example, the location may be restricted to use by certain hosts. Those
+locations which cannot be used are ignored.
+
+ Amd attempts to mount the filesystem described by each remaining
+location until a mount succeeds or Amd can no longer proceed. The
+latter can occur in three ways:
+
+ * If none of the locations could be used, or if all of the locations
+ caused an error, then the last error is returned.
+
+ * If a location could be used but was being mounted in the background
+ then Amd marks that mount as being "in progress" and continues with
+ the next request; no reply is sent to the kernel.
+
+ * Lastly, one or more of the mounts may have been "deferred". A
+ mount is deferred if extra information is required before the mount
+ can proceed. When the information becomes available the mount will
+ take place, but in the mean time no reply is sent to the kernel.
+ If the mount is deferred, Amd continues to try any remaining
+ locations.
+
+ Once a volume has been mounted, Amd establishes a "volume mapping"
+which is used to satisfy subsequent requests.
+
+
+File: am-utils.info, Node: Automatic Unmounting, Next: Keep-alives, Prev: Mounting a Volume, Up: Overview
+
+1.7 Automatic Unmounting
+========================
+
+To avoid an ever increasing number of filesystem mounts, Amd removes
+volume mappings which have not been used recently. A time-to-live
+interval is associated with each mapping and when that expires the
+mapping is removed. When the last reference to a filesystem is removed,
+that filesystem is unmounted. If the unmount fails, for example the
+filesystem is still busy, the mapping is re-instated and its
+time-to-live interval is extended. The global default for this grace
+period is controlled by the '-w' command-line option (*note -w: -w
+Option.) or the amd.conf parameter 'dismount_interval' (*note
+dismount_interval Parameter::). It is also possible to set this value
+on a per-mount basis (*note opts: opts Option.).
+
+ Filesystems can be forcefully timed out using the Amq command. *Note
+Run-time Administration::. Note that on new enough systems that support
+forced unmounts, such as Linux, Amd can try to use the umount2(2) system
+call to force the unmount, if the regular umount(2) system call failed
+in a way that indicates that the mount point is hung or stale. *Note
+forced_unmounts Parameter::.
+
+
+File: am-utils.info, Node: Keep-alives, Next: Non-blocking Operation, Prev: Automatic Unmounting, Up: Overview
+
+1.8 Keep-alives
+===============
+
+Use of some filesystem types requires the presence of a server on
+another machine. If a machine crashes then it is of no concern to
+processes on that machine that the filesystem is unavailable. However,
+to processes on a remote host using that machine as a fileserver this
+event is important. This situation is most widely recognized when an
+NFS server crashes and the behavior observed on client machines is that
+more and more processes hang. In order to provide the possibility of
+recovery, Amd implements a "keep-alive" interval timer for some
+filesystem types. Currently only NFS makes use of this service.
+
+ The basis of the NFS keep-alive implementation is the observation
+that most sites maintain replicated copies of common system data such as
+manual pages, most or all programs, system source code and so on. If
+one of those servers goes down it would be reasonable to mount one of
+the others as a replacement.
+
+ The first part of the process is to keep track of which fileservers
+are up and which are down. Amd does this by sending RPC requests to the
+servers' NFS 'NullProc' and checking whether a reply is returned. While
+the server state is uncertain the requests are re-transmitted at three
+second intervals and if no reply is received after four attempts the
+server is marked down. If a reply is received the fileserver is marked
+up and stays in that state for 30 seconds at which time another NFS ping
+is sent. This interval is configurable and can even be turned off using
+the ping option. *Note opts Option::.
+
+ Once a fileserver is marked down, requests continue to be sent every
+30 seconds in order to determine when the fileserver comes back up.
+During this time any reference through Amd to the filesystems on that
+server fail with the error "Operation would block". If a replacement
+volume is available then it will be mounted, otherwise the error is
+returned to the user.
+
+ Although this action does not protect user files, which are unique on
+the network, or processes which do not access files via Amd or already
+have open files on the hung filesystem, it can prevent most new
+processes from hanging.
+
+
+File: am-utils.info, Node: Non-blocking Operation, Prev: Keep-alives, Up: Overview
+
+1.9 Non-blocking Operation
+==========================
+
+Since there is only one instance of Amd for each automount point, and
+usually only one instance on each machine, it is important that it is
+always available to service kernel calls. Amd goes to great lengths to
+ensure that it does not block in a system call. As a last resort Amd
+will fork before it attempts a system call that may block indefinitely,
+such as mounting an NFS filesystem. Other tasks such as obtaining
+filehandle information for an NFS filesystem, are done using a purpose
+built non-blocking RPC library which is integrated with Amd's task
+scheduler. This library is also used to implement NFS keep-alives
+(*note Keep-alives::).
+
+ Whenever a mount is deferred or backgrounded, Amd must wait for it to
+complete before replying to the kernel. However, this would cause Amd
+to block waiting for a reply to be constructed. Rather than do this,
+Amd simply "drops" the call under the assumption that the kernel RPC
+mechanism will automatically retry the request.
+
+
+File: am-utils.info, Node: Supported Platforms, Next: Mount Maps, Prev: Overview, Up: Top
+
+2 Supported Platforms
+*********************
+
+Am-utils has been ported to a wide variety of machines and operating
+systems. Am-utils's code works for little-endian and big-endian
+machines, as well as 32 bit and 64 bit architectures. Furthermore, when
+Am-utils ports to an Operating System on one architecture, it is
+generally readily portable to the same Operating System on all platforms
+on which it is available.
+
+ See the 'INSTALL' in the distribution for more specific details on
+building and/or configuring for some systems.
+
+
+File: am-utils.info, Node: Mount Maps, Next: Amd Command Line Options, Prev: Supported Platforms, Up: Top
+
+3 Mount Maps
+************
+
+Amd has no built-in knowledge of machines or filesystems. External
+"mount-maps" are used to provide the required information.
+Specifically, Amd needs to know when and under what conditions it should
+mount filesystems.
+
+ The map entry corresponding to the requested name contains a list of
+possible locations from which to resolve the request. Each location
+specifies filesystem type, information required by that filesystem (for
+example the block special device in the case of UFS), and some
+information describing where to mount the filesystem (*note fs
+Option::). A location may also contain "selectors" (*note Selectors::).
+
+* Menu:
+
+* Map Types::
+* Key Lookup::
+* Location Format::
+
+
+File: am-utils.info, Node: Map Types, Next: Key Lookup, Prev: Mount Maps, Up: Mount Maps
+
+3.1 Map Types
+=============
+
+A mount-map provides the run-time configuration information to Amd.
+Maps can be implemented in many ways. Some of the forms supported by
+Amd are regular files, ndbm databases, NIS maps, the "Hesiod" name
+server, and even the password file.
+
+ A mount-map "name" is a sequence of characters. When an automount
+point is created a handle on the mount-map is obtained. For each map
+type configured, Amd attempts to reference the map of the appropriate
+type. If a map is found, Amd notes the type for future use and deletes
+the reference, for example closing any open file descriptors. The
+available maps are configured when Amd is built and can be displayed by
+running the command 'amd -v'.
+
+ When using an Amd configuration file (*note Amd Configuration File::)
+and the keyword 'map_type' (*note map_type Parameter::), you may force
+the map used to any type.
+
+ By default, Amd caches data in a mode dependent on the type of map.
+This is the same as specifying 'cache:=mapdefault' and selects a
+suitable default cache mode depending on the map type. The individual
+defaults are described below. The CACHE option can be specified on
+automount points to alter the caching behavior (*note Automount
+Filesystem::).
+
+ The following map types have been implemented, though some are not
+available on all machines. Run the command 'amd -v' to obtain a list of
+map types configured on your machine.
+
+* Menu:
+
+* File maps::
+* ndbm maps::
+* NIS maps::
+* NIS+ maps::
+* Hesiod maps::
+* Password maps::
+* Union maps::
+* LDAP maps::
+* Executable maps::
+
+
+File: am-utils.info, Node: File maps, Next: ndbm maps, Prev: Map Types, Up: Map Types
+
+3.1.1 File maps
+---------------
+
+When Amd searches a file for a map entry it does a simple scan of the
+file and supports both comments and continuation lines.
+
+ Continuation lines are indicated by a backslash character ('\') as
+the last character of a line in the file. The backslash, newline
+character _and any leading white space on the following line_ are
+discarded. A maximum line length of 2047 characters is enforced after
+continuation lines are read but before comments are stripped. Each line
+must end with a newline character; that is newlines are terminators, not
+separators. The following examples illustrate this:
+
+ key valA valB; \
+ valC
+
+ specifies _three_ locations, and is identical to
+
+ key valA valB; valC
+
+ However,
+
+ key valA valB;\
+ valC
+
+ specifies only _two_ locations, and is identical to
+
+ key valA valB;valC
+
+ After a complete line has been read from the file, including
+continuations, Amd determines whether there is a comment on the line. A
+comment begins with a hash ("'#'") character and continues to the end of
+the line. There is no way to escape or change the comment lead-in
+character.
+
+ Note that continuation lines and comment support "only" apply to file
+maps, or ndbm maps built with the 'mk-amd-map' program.
+
+ When caching is enabled, file maps have a default cache mode of 'all'
+(*note Automount Filesystem::).
+
+
+File: am-utils.info, Node: ndbm maps, Next: NIS maps, Prev: File maps, Up: Map Types
+
+3.1.2 ndbm maps
+---------------
+
+An ndbm map may be used as a fast access form of a file map. The
+program, 'mk-amd-map', converts a normal map file into an ndbm database.
+This program supports the same continuation and comment conventions that
+are provided for file maps. Note that ndbm format files may _not_ be
+sharable across machine architectures. The notion of speed generally
+only applies to large maps; a small map, less than a single disk block,
+is almost certainly better implemented as a file map.
+
+ ndbm maps have a default cache mode of 'all' (*note Automount
+Filesystem::).
+
+
+File: am-utils.info, Node: NIS maps, Next: NIS+ maps, Prev: ndbm maps, Up: Map Types
+
+3.1.3 NIS maps
+--------------
+
+When using NIS (formerly YP), an Amd map is implemented directly by the
+underlying NIS map. Comments and continuation lines are _not_ supported
+in the automounter and must be stripped when constructing the NIS
+server's database.
+
+ NIS maps have a default cache mode of 'all' (*note Automount
+Filesystem::).
+
+ The following rule illustrates what could be added to your NIS
+'Makefile', in this case causing the 'amd.home' map to be rebuilt:
+ $(YPTSDIR)/amd.home.time: $(ETCDIR)/amd.home
+ -@sed -e "s/#.*$$//" -e "/^$$/d" $(ETCDIR)/amd.home | \
+ awk '{ \
+ for (i = 1; i <= NF; i++) \
+ if (i == NF) { \
+ if (substr($$i, length($$i), 1) == "\\") \
+ printf("%s", substr($$i, 1, length($$i) - 1)); \
+ else \
+ printf("%s\n", $$i); \
+ } \
+ else \
+ printf("%s ", $$i); \
+ }' | \
+ $(MAKEDBM) - $(YPDBDIR)/amd.home; \
+ touch $(YPTSDIR)/amd.home.time; \
+ echo "updated amd.home"; \
+ if [ ! $(NOPUSH) ]; then \
+ $(YPPUSH) amd.home; \
+ echo "pushed amd.home"; \
+ else \
+ : ; \
+ fi
+
+ Here '$(YPTSDIR)' contains the time stamp files, and '$(YPDBDIR)'
+contains the dbm format NIS files.
+
+
+File: am-utils.info, Node: NIS+ maps, Next: Hesiod maps, Prev: NIS maps, Up: Map Types
+
+3.1.4 NIS+ maps
+---------------
+
+NIS+ maps do not support cache mode 'all' and, when caching is enabled,
+have a default cache mode of 'inc'.
+
+ XXX: FILL IN WITH AN EXAMPLE.
+
+
+File: am-utils.info, Node: Hesiod maps, Next: Password maps, Prev: NIS+ maps, Up: Map Types
+
+3.1.5 Hesiod maps
+-----------------
+
+When the map name begins with the string 'hesiod.' lookups are made
+using the "Hesiod" name server. The string following the dot is used as
+a name qualifier and is prepended with the key being located. The
+entire string is then resolved in the 'automount' context, or the
+amd.conf parameter 'hesiod_base' (*note hesiod_base Parameter::). For
+example, if the key is 'jsp' and map name is 'hesiod.homes' then
+"Hesiod" is asked to resolve 'jsp.homes.automount'.
+
+ Hesiod maps do not support cache mode 'all' and, when caching is
+enabled, have a default cache mode of 'inc' (*note Automount
+Filesystem::).
+
+ The following is an example of a "Hesiod" map entry:
+
+ jsp.homes.automount HS TXT "rfs:=/home/charm;rhost:=charm;sublink:=jsp"
+ njw.homes.automount HS TXT "rfs:=/home/dylan/dk2;rhost:=dylan;sublink:=njw"
+
+
+File: am-utils.info, Node: Password maps, Next: Union maps, Prev: Hesiod maps, Up: Map Types
+
+3.1.6 Password maps
+-------------------
+
+The password map support is unlike the four previous map types. When
+the map name is the string '/etc/passwd' Amd can lookup a user name in
+the password file and re-arrange the home directory field to produce a
+usable map entry.
+
+ Amd assumes the home directory has the format
+'/anydir/dom1/../domN/login'. It breaks this string into a map entry
+where '${rfs}' has the value '/anydir/domN', '${rhost}' has the value
+'domN.....dom1', and '${sublink}' has the value login.
+
+ Thus if the password file entry was
+
+ /home/achilles/jsp
+
+ the map entry used by Amd would be
+
+ rfs:=/home/achilles;rhost:=achilles;sublink:=jsp
+
+ Similarly, if the password file entry was
+
+ /home/cc/sugar/mjh
+
+ the map entry used by Amd would be
+
+ rfs:=/home/sugar;rhost:=sugar.cc;sublink:=mhj
+
+
+File: am-utils.info, Node: Union maps, Next: LDAP maps, Prev: Password maps, Up: Map Types
+
+3.1.7 Union maps
+----------------
+
+The union map support is provided specifically for use with the union
+filesystem, *note Union Filesystem::.
+
+ It is identified by the string 'union:' which is followed by a colon
+separated list of directories. The directories are read in order, and
+the names of all entries are recorded in the map cache. Later
+directories take precedence over earlier ones. The union filesystem
+type then uses the map cache to determine the union of the names in all
+the directories.
+
+
+File: am-utils.info, Node: LDAP maps, Next: Executable maps, Prev: Union maps, Up: Map Types
+
+3.1.8 LDAP maps
+---------------
+
+LDAP (Lightweight Directory Access Protocol) maps do not support cache
+mode 'all' and, when caching is enabled, have a default cache mode of
+'inc'.
+
+ For example, an Amd map 'amd.home' that looks as follows:
+
+ /defaults opts:=rw,intr;type:=link
+
+ zing -rhost:=shekel \
+ host==shekel \
+ host!=shekel;type:=nfs
+when converted to LDAP (*note amd2ldif::), will result in the following
+LDAP database:
+ $ amd2ldif amd.home CUCS < amd.home
+ dn: cn=amdmap timestamp, CUCS
+ cn : amdmap timestamp
+ objectClass : amdmapTimestamp
+ amdmapTimestamp: 873071363
+
+ dn: cn=amdmap amd.home[/defaults], CUCS
+ cn : amdmap amd.home[/defaults]
+ objectClass : amdmap
+ amdmapName : amd.home
+ amdmapKey : /defaults
+ amdmapValue : opts:=rw,intr;type:=link
+
+ dn: cn=amdmap amd.home[], CUCS
+ cn : amdmap amd.home[]
+ objectClass : amdmap
+ amdmapName : amd.home
+ amdmapKey :
+ amdmapValue :
+
+ dn: cn=amdmap amd.home[zing], CUCS
+ cn : amdmap amd.home[zing]
+ objectClass : amdmap
+ amdmapName : amd.home
+ amdmapKey : zing
+ amdmapValue : -rhost:=shekel host==shekel host!=shekel;type:=nfs
+
+
+File: am-utils.info, Node: Executable maps, Prev: LDAP maps, Up: Map Types
+
+3.1.9 Executable maps
+---------------------
+
+An executable map is a dynamic map in which the keys and values for the
+maps are generated on the fly by a program or script. The program is
+expected to take a single parameter argument which is the key to lookup.
+If the key is found, the program should print on stdout the key-value
+pair that were found; if the key was not found, nothing should be
+printed out. Below is an sample of such a map script:
+
+ #!/bin/sh
+ # executable map example
+ case "$1" in
+ "/defaults" )
+ echo "/defaults type:=nfs;rfs:=filer"
+ ;;
+ "a" )
+ echo "a type:=nfs;fs:=/tmp"
+ ;;
+ "b" )
+ echo "b type:=link;fs:=/usr/local"
+ ;;
+ * ) # no match, echo nothing
+ ;;
+ esac
+
+ *Note exec_map_timeout Parameter::.
+
+
+File: am-utils.info, Node: Key Lookup, Next: Location Format, Prev: Map Types, Up: Mount Maps
+
+3.2 How keys are looked up
+==========================
+
+The key is located in the map whose type was determined when the
+automount point was first created. In general the key is a pathname
+component. In some circumstances this may be modified by variable
+expansion (*note Variable Expansion::) and prefixing. If the automount
+point has a prefix, specified by the PREF option, then that is prepended
+to the search key before the map is searched.
+
+ If the map cache is a 'regexp' cache then the key is treated as an
+egrep-style regular expression, otherwise a normal string comparison is
+made.
+
+ If the key cannot be found then a "wildcard" match is attempted. Amd
+repeatedly strips the basename from the key, appends '/*' and attempts a
+lookup. Finally, Amd attempts to locate the special key '*'.
+
+ For example, the following sequence would be checked if
+'home/dylan/dk2' was being located:
+
+ home/dylan/dk2
+ home/dylan/*
+ home/*
+ *
+
+ At any point when a wildcard is found, Amd proceeds as if an exact
+match had been found and the value field is then used to resolve the
+mount request, otherwise an error code is propagated back to the kernel.
+(*note Filesystem Types::).
+
+
+File: am-utils.info, Node: Location Format, Prev: Key Lookup, Up: Mount Maps
+
+3.3 Location Format
+===================
+
+The value field from the lookup provides the information required to
+mount a filesystem. The information is parsed according to the syntax
+shown below.
+
+ location-list:
+ location-selection
+ location-list white-space || white-space location-selection
+ location-selection:
+ location
+ location-selection white-space location
+ location:
+ location-info
+ -location-info
+ -
+ location-info:
+ sel-or-opt
+ location-info;sel-or-opt
+ ;
+ sel-or-opt:
+ selection
+ opt-ass
+ selection:
+ selector==value
+ selector!=value
+ opt-ass:
+ option:=value
+ white-space:
+ space
+ tab
+
+ Note that unquoted whitespace is not allowed in a location
+description. White space is only allowed, and is mandatory, where shown
+with non-terminal white-space.
+
+ A "location-selection" is a list of possible volumes with which to
+satisfy the request. Each "location-selection" is tried sequentially,
+until either one succeeds or all fail. This, by the way, is different
+from the historically documented behavior, which claimed (falsely, at
+least for last 3 years) that Amd would attempt to mount all
+"location-selection"s in parallel and the first one to succeed would be
+used.
+
+ "location-selection"s are optionally separated by the '||' operator.
+The effect of this operator is to prevent use of location-selections to
+its right if any of the location-selections on its left were selected,
+whether or not any of them were successfully mounted (*note
+Selectors::).
+
+ The location-selection, and singleton "location-list",
+'type:=ufs;dev:=/dev/xd1g' would inform Amd to mount a UFS filesystem
+from the block special device '/dev/xd1g'.
+
+ The "sel-or-opt" component is either the name of an option required
+by a specific filesystem, or it is the name of a built-in, predefined
+selector such as the architecture type. The value may be quoted with
+double quotes '"', for example 'type:="ufs";dev:="/dev/xd1g"'. These
+quotes are stripped when the value is parsed and there is no way to get
+a double quote into a value field. Double quotes are used to get white
+space into a value field, which is needed for the program filesystem
+(*note Program Filesystem::).
+
+* Menu:
+
+* Map Defaults::
+* Variable Expansion::
+* Selectors::
+* Map Options::
+
+
+File: am-utils.info, Node: Map Defaults, Next: Variable Expansion, Prev: Location Format, Up: Location Format
+
+3.3.1 Map Defaults
+------------------
+
+A location beginning with a dash '-' is used to specify default values
+for subsequent locations. Any previously specified defaults in the
+location-list are discarded. The default string can be empty in which
+case no defaults apply.
+
+ The location '-fs:=/mnt;opts:=ro' would set the local mount point to
+'/mnt' and cause mounts to be read-only by default. Defaults specified
+this way are appended to, and so override, any global map defaults given
+with '/defaults').
+
+
+File: am-utils.info, Node: Variable Expansion, Next: Selectors, Prev: Map Defaults, Up: Location Format
+
+3.3.2 Variable Expansion
+------------------------
+
+To allow generic location specifications Amd does variable expansion on
+each location and also on some of the option strings. Any option or
+selector appearing in the form '$"var"' is replaced by the current value
+of that option or selector. For example, if the value of '${key}' was
+'bin', '${autodir}' was '/a' and '${fs}' was '${autodir}/local/${key}'
+then after expansion '${fs}' would have the value '/a/local/bin'. Any
+environment variable can be accessed in a similar way.
+
+ Two pathname operators are available when expanding a variable. If
+the variable name begins with '/' then only the last component of the
+pathname is substituted. For example, if '${path}' was '/foo/bar' then
+'${/path}' would be expanded to 'bar'. Similarly, if the variable name
+ends with '/' then all but the last component of the pathname is
+substituted. In the previous example, '${path/}' would be expanded to
+'/foo'.
+
+ Two domain name operators are also provided. If the variable name
+begins with '.' then only the domain part of the name is substituted.
+For example, if '${rhost}' was 'swan.doc.ic.ac.uk' then '${.rhost}'
+would be expanded to 'doc.ic.ac.uk'. Similarly, if the variable name
+ends with '.' then only the host component is substituted. In the
+previous example, '${rhost.}' would be expanded to 'swan'.
+
+ Variable expansion is a two phase process. Before a location is
+parsed, all references to selectors, eg '${path}', are expanded. The
+location is then parsed, selections are evaluated and option assignments
+recorded. If there were no selections or they all succeeded the
+location is used and the values of the following options are expanded in
+the order given: SUBLINK, RFS, FS, OPTS, REMOPTS, MOUNT and UNMOUNT.
+
+ Note that expansion of option values is done after "all" assignments
+have been completed and not in a purely left to right order as is done
+by the shell. This generally has the desired effect but care must be
+taken if one of the options references another, in which case the
+ordering can become significant.
+
+ There are two special cases concerning variable expansion:
+
+ 1. before a map is consulted, any selectors in the name received from
+ the kernel are expanded. For example, if the request from the
+ kernel was for '${arch}.bin' and the machine architecture was
+ 'vax', the value given to '${key}' would be 'vax.bin'.
+
+ 2. the value of '${rhost}' is expanded and normalized before the other
+ options are expanded. The normalization process strips any local
+ sub-domain components. For example, if '${domain}' was
+ 'Berkeley.EDU' and '${rhost}' was initially 'snow.Berkeley.EDU',
+ after the normalization it would simply be 'snow'. Hostname
+ normalization is currently done in a _case-dependent_ manner.
+
+
+File: am-utils.info, Node: Selectors, Next: Map Options, Prev: Variable Expansion, Up: Location Format
+
+3.3.3 Selectors
+---------------
+
+Selectors are used to control the use of a location. It is possible to
+share a mount map between many machines in such a way that filesystem
+location, architecture and operating system differences are hidden from
+the users. A selector of the form 'arch==sun3;os==sunos4' would only
+apply on Sun-3s running SunOS 4.x.
+
+ Selectors can be negated by using '!=' instead of '=='. For example
+to select a location on all non-Vax machines the selector 'arch!=vax'
+would be used.
+
+ Selectors are evaluated left to right. If a selector fails then that
+location is ignored. Thus the selectors form a conjunction and the
+locations form a disjunction. If all the locations are ignored or
+otherwise fail then Amd uses the "error" filesystem (*note Error
+Filesystem::). This is equivalent to having a location 'type:=error' at
+the end of each mount-map entry.
+
+ The default value of many of the selectors listed here can be
+overridden by an Amd command line switch or in an Amd configuration
+file. *Note Amd Configuration File::.
+
+ The following selectors are currently implemented.
+
+* Menu:
+
+* arch Selector Variable::
+* autodir Selector Variable::
+* byte Selector Variable::
+* cluster Selector Variable::
+* domain Selector Variable::
+* dollar Selector Variable::
+* host Selector Variable::
+* hostd Selector Variable::
+* karch Selector Variable::
+* os Selector Variable::
+* osver Selector Variable::
+* full_os Selector Variable::
+* vendor Selector Variable::
+
+* key Selector Variable::
+* map Selector Variable::
+* netnumber Selector Variable::
+* network Selector Variable::
+* path Selector Variable::
+* wire Selector Variable::
+* uid Selector Variable::
+* gid Selector Variable::
+
+* exists Selector Function::
+* false Selector Function::
+* netgrp Selector Function::
+* netgrpd Selector Function::
+* in_network Selector Function::
+* true Selector Function::
+* xhost Selector Function::
+
+
+File: am-utils.info, Node: arch Selector Variable, Next: autodir Selector Variable, Prev: Selectors, Up: Selectors
+
+3.3.3.1 arch Selector Variable
+..............................
+
+The machine architecture which was automatically determined at compile
+time. The architecture type can be displayed by running the command
+'amd -v'. You can override this value also using the '-A' command line
+option. *Note Supported Platforms::.
+
+
+File: am-utils.info, Node: autodir Selector Variable, Next: byte Selector Variable, Prev: arch Selector Variable, Up: Selectors
+
+3.3.3.2 autodir Selector Variable
+.................................
+
+The default directory under which to mount filesystems. This may be
+changed by the '-a' command line option. *Note fs Option::.
+
+
+File: am-utils.info, Node: byte Selector Variable, Next: cluster Selector Variable, Prev: autodir Selector Variable, Up: Selectors
+
+3.3.3.3 byte Selector Variable
+..............................
+
+The machine's byte ordering. This is either 'little', indicating
+little-endian, or 'big', indicating big-endian. One possible use is to
+share 'rwho' databases (*note rwho servers::). Another is to share ndbm
+databases, however this use can be considered a courageous juggling act.
+
+
+File: am-utils.info, Node: cluster Selector Variable, Next: domain Selector Variable, Prev: byte Selector Variable, Up: Selectors
+
+3.3.3.4 cluster Selector Variable
+.................................
+
+This is provided as a hook for the name of the local cluster. This can
+be used to decide which servers to use for copies of replicated
+filesystems. '${cluster}' defaults to the value of '${domain}' unless a
+different value is set with the '-C' command line option.
+
+
+File: am-utils.info, Node: domain Selector Variable, Next: dollar Selector Variable, Prev: cluster Selector Variable, Up: Selectors
+
+3.3.3.5 domain Selector Variable
+................................
+
+The local domain name as specified by the '-d' command line option.
+*Note host Selector Variable::.
+
+
+File: am-utils.info, Node: dollar Selector Variable, Next: host Selector Variable, Prev: domain Selector Variable, Up: Selectors
+
+3.3.3.6 dollar Selector Variable
+................................
+
+This is a special variable, whose sole purpose is to produce a literal
+dollar sign in the value of another variable. For example, if you have
+a remote file system whose name is '/disk$s', you can mount it by
+setting the remote file system variable as follows:
+
+ rfs:=/disk${dollar}s
+
+
+File: am-utils.info, Node: host Selector Variable, Next: hostd Selector Variable, Prev: dollar Selector Variable, Up: Selectors
+
+3.3.3.7 host Selector Variable
+..............................
+
+The local hostname as determined by gethostname(2). If no domain name
+was specified on the command line and the hostname contains a period '.'
+then the string before the period is used as the host name, and the
+string after the period is assigned to '${domain}'. For example, if the
+hostname is 'styx.doc.ic.ac.uk' then 'host' would be 'styx' and 'domain'
+would be 'doc.ic.ac.uk'. 'hostd' would be 'styx.doc.ic.ac.uk'.
+
+
+File: am-utils.info, Node: hostd Selector Variable, Next: karch Selector Variable, Prev: host Selector Variable, Up: Selectors
+
+3.3.3.8 hostd Selector Variable
+...............................
+
+This resolves to the '${host}' and '${domain}' concatenated with a '.'
+inserted between them if required. If '${domain}' is an empty string
+then '${host}' and '${hostd}' will be identical.
+
+
+File: am-utils.info, Node: karch Selector Variable, Next: os Selector Variable, Prev: hostd Selector Variable, Up: Selectors
+
+3.3.3.9 karch Selector Variable
+...............................
+
+This is provided as a hook for the kernel architecture. This is used on
+SunOS 4 and SunOS 5, for example, to distinguish between different
+'/usr/kvm' volumes. '${karch}' defaults to the "machine" value gotten
+from uname(2). If the uname(2) system call is not available, the value
+of '${karch}' defaults to that of '${arch}'. Finally, a different value
+can be set with the '-k' command line option.
+
+
+File: am-utils.info, Node: os Selector Variable, Next: osver Selector Variable, Prev: karch Selector Variable, Up: Selectors
+
+3.3.3.10 os Selector Variable
+.............................
+
+The operating system. Like the machine architecture, this is
+automatically determined at compile time. The operating system name can
+be displayed by running the command 'amd -v'. *Note Supported
+Platforms::.
+
+
+File: am-utils.info, Node: osver Selector Variable, Next: full_os Selector Variable, Prev: os Selector Variable, Up: Selectors
+
+3.3.3.11 osver Selector Variable
+................................
+
+The operating system version. Like the machine architecture, this is
+automatically determined at compile time. The operating system name can
+be displayed by running the command 'amd -v'. *Note Supported
+Platforms::.
+
+
+File: am-utils.info, Node: full_os Selector Variable, Next: vendor Selector Variable, Prev: osver Selector Variable, Up: Selectors
+
+3.3.3.12 full_os Selector Variable
+..................................
+
+The full name of the operating system, including its version. This
+value is automatically determined at compile time. The full operating
+system name and version can be displayed by running the command 'amd
+-v'. *Note Supported Platforms::.
+
+
+File: am-utils.info, Node: vendor Selector Variable, Next: key Selector Variable, Prev: full_os Selector Variable, Up: Selectors
+
+3.3.3.13 vendor Selector Variable
+.................................
+
+The name of the vendor of the operating system. This value is
+automatically determined at compile time. The name of the vendor can be
+displayed by running the command 'amd -v'. *Note Supported Platforms::.
+
+
+
+
+ The following selectors are also provided. Unlike the other
+selectors, they vary for each lookup. Note that when the name from the
+kernel is expanded prior to a map lookup, these selectors are all
+defined as empty strings.
+
+
+File: am-utils.info, Node: key Selector Variable, Next: map Selector Variable, Prev: vendor Selector Variable, Up: Selectors
+
+3.3.3.14 key Selector Variable
+..............................
+
+The name being resolved. For example, if '/home' is an automount point,
+then accessing '/home/foo' would set '${key}' to the string 'foo'. The
+key is prefixed by the PREF option set in the parent mount point. The
+default prefix is an empty string. If the prefix was 'blah/' then
+'${key}' would be set to 'blah/foo'.
+
+
+File: am-utils.info, Node: map Selector Variable, Next: netnumber Selector Variable, Prev: key Selector Variable, Up: Selectors
+
+3.3.3.15 map Selector Variable
+..............................
+
+The name of the mount map being used.
+
+
+File: am-utils.info, Node: netnumber Selector Variable, Next: network Selector Variable, Prev: map Selector Variable, Up: Selectors
+
+3.3.3.16 netnumber Selector Variable
+....................................
+
+This selector is identical to the 'in_network' selector function, see
+*note in_network Selector Function::. It will match either the name or
+number of any network interface on which this host is connected to. The
+names and numbers of all attached interfaces are available from the
+output of 'amd -v'.
+
+
+File: am-utils.info, Node: network Selector Variable, Next: path Selector Variable, Prev: netnumber Selector Variable, Up: Selectors
+
+3.3.3.17 network Selector Variable
+..................................
+
+This selector is identical to the 'in_network' selector function, see
+*note in_network Selector Function::. It will match either the name or
+number of any network interface on which this host is connected to. The
+names and numbers of all attached interfaces are available from the
+output of 'amd -v'.
+
+
+File: am-utils.info, Node: path Selector Variable, Next: wire Selector Variable, Prev: network Selector Variable, Up: Selectors
+
+3.3.3.18 path Selector Variable
+...............................
+
+The full pathname of the name being resolved. For example '/home/foo'
+in the example above.
+
+
+File: am-utils.info, Node: wire Selector Variable, Next: uid Selector Variable, Prev: path Selector Variable, Up: Selectors
+
+3.3.3.19 wire Selector Variable
+...............................
+
+This selector is identical to the 'in_network' selector function, see
+*note in_network Selector Function::. It will match either the name or
+number of any network interface on which this host is connected to. The
+names and numbers of all attached interfaces are available from the
+output of 'amd -v'.
+
+
+File: am-utils.info, Node: uid Selector Variable, Next: gid Selector Variable, Prev: wire Selector Variable, Up: Selectors
+
+3.3.3.20 uid Selector Variable
+..............................
+
+This selector provides the numeric effective user ID (UID) of the user
+which last accessed an automounted path name. This simple example shows
+how floppy mounting can be assigned only to machine owners:
+
+ floppy -type:=pcfs \
+ uid==2301;host==shekel;dev:=/dev/floppy \
+ uid==6712;host==titan;dev=/dev/fd0 \
+ uid==0;dev:=/dev/fd0c \
+ type:=error
+
+ The example allows two machine owners to mount floppies on their
+designated workstations, allows the root user to mount on any host, and
+otherwise forces an error.
+
+
+File: am-utils.info, Node: gid Selector Variable, Next: exists Selector Function, Prev: uid Selector Variable, Up: Selectors
+
+3.3.3.21 gid Selector Variable
+..............................
+
+This selector provides the numeric effective group ID (GID) of the user
+which last accessed an automounted path name.
+
+
+
+ The following boolean functions are selectors which take an argument
+ARG. They return a value of true or false, and thus do not need to be
+compared with a value. Each of these may be negated by prepending '!'
+to their name.
+
+
+File: am-utils.info, Node: exists Selector Function, Next: false Selector Function, Prev: gid Selector Variable, Up: Selectors
+
+3.3.3.22 exists Selector Function
+.................................
+
+If the file listed by ARG exists (via lstat(2)), this function evaluates
+to true. Otherwise it evaluates to false.
+
+
+File: am-utils.info, Node: false Selector Function, Next: netgrp Selector Function, Prev: exists Selector Function, Up: Selectors
+
+3.3.3.23 false Selector Function
+................................
+
+Always evaluates to false. ARG is ignored.
+
+
+File: am-utils.info, Node: netgrp Selector Function, Next: netgrpd Selector Function, Prev: false Selector Function, Up: Selectors
+
+3.3.3.24 netgrp Selector Function
+.................................
+
+The argument ARG of this selector is a netgroup name followed optionally
+by a comma and a host name. If the host name is not specified, it
+defaults to '${host}'. If the host name (short name) is a member of the
+netgroup, this selector evaluates to true. Otherwise it evaluates to
+false.
+
+ For example, suppose you have a netgroup 'ppp-hosts', and for reasons
+of performance, these have a local '/home' partition, while all other
+clients on the faster network can access a shared home directory. A
+common map to use for both might look like the following:
+
+ home/* netgrp(ppp-hosts);type:=link;fs:=/local/${key} \
+ !netgrp(ppp-hosts);type:=nfs;rhost:=serv1;rfs:=/remote/${key}
+
+ A more complex example that takes advantage of the two argument
+netgrp mount selector is given in the following scenario. Suppose one
+wants to mount the local scratch space from a each host under
+'scratch/<hostname>' and some hosts have their scratch space in a
+different path than others. Hosts in the netgroup 'apple-hosts' have
+their scratch space in the '/apple' path, where hosts in the netgroup
+'cherry-hosts' have their scratch space in the '/cherry' path. For
+hosts that are neither in the 'apple-hosts' or 'cherry-hosts' netgroups
+we want to make a symlink pointing to nowhere but provide a descriptive
+error message in the link destination:
+
+ scratch/* netgrp(apple-hosts,${/key});type:=nfs;rhost:=${/key};\
+ rfs:="/apple" \
+ netgrp(cherry-hosts,${/key});type:=nfs;rhost:=${/key};\
+ rfs:="/cherry" \
+ type:=link;rfs:="no local partition for ${/key}"
+
+
+File: am-utils.info, Node: netgrpd Selector Function, Next: in_network Selector Function, Prev: netgrp Selector Function, Up: Selectors
+
+3.3.3.25 netgrpd Selector Function
+..................................
+
+The argument ARG of this selector is a netgroup name followed optionally
+by a comma and a host name. If the host name is not specified, it
+defaults to '${hostd}'. If the host name (fully-qualified name) is a
+member of the netgroup, this selector evaluates to true. Otherwise it
+evaluates to false.
+
+ The 'netgrpd' function uses fully-qualified host names to match
+netgroup names, while the 'netgrp' function (*note netgrp Selector
+Function::) uses short host names.
+
+
+File: am-utils.info, Node: in_network Selector Function, Next: true Selector Function, Prev: netgrpd Selector Function, Up: Selectors
+
+3.3.3.26 in_network Selector Function
+.....................................
+
+This selector matches against any network name or number with an
+optional netmask. First, if the current host has any network interface
+that is locally attached to the network specified in ARG (either via
+name or number), this selector evaluates to true.
+
+ Second, 'in_network' supports a network/netmask syntax such as
+'128.59.16.0/255.255.255.0', '128.59.16.0/24', '128.59.16.0/0xffffff00',
+or '128.59.16.0/'. Using the last form, Amd will match the specified
+network number against the default netmasks of each of the locally
+attached interfaces.
+
+ If the selector does not match, it evaluates to false.
+
+ For example, suppose you have two servers that have an exportable
+'/opt' that smaller clients can NFS mount. The two servers are say,
+'serv1' on network 'foo-net.site.com' and 'serv2' on network
+'123.4.5.0'. You can write a map to be used by all clients that will
+attempt to mount the closest one as follows:
+
+ opt in_network(foo-net.site.com);rhost:=serv1;rfs:=/opt \
+ in_network(123.4.5.0);rhost:=serv2;rfs:=/opt \
+ rhost:=fallback-server
+
+
+File: am-utils.info, Node: true Selector Function, Next: xhost Selector Function, Prev: in_network Selector Function, Up: Selectors
+
+3.3.3.27 true Selector Function
+...............................
+
+Always evaluates to true. ARG is ignored.
+
+
+File: am-utils.info, Node: xhost Selector Function, Prev: true Selector Function, Up: Selectors
+
+3.3.3.28 xhost Selector Function
+................................
+
+This function compares ARG against the current hostname, similarly to
+the *note host Selector Variable::. However, this function will also
+match if ARG is a CNAME (DNS Canonical Name, or alias) for the current
+host's name.
+
+
+File: am-utils.info, Node: Map Options, Prev: Selectors, Up: Location Format
+
+3.3.4 Map Options
+-----------------
+
+Options are parsed concurrently with selectors. The difference is that
+when an option is seen the string following the ':=' is recorded for
+later use. As a minimum the TYPE option must be specified. Each
+filesystem type has other options which must also be specified. *Note
+Filesystem Types::, for details on the filesystem specific options.
+
+ Superfluous option specifications are ignored and are not reported as
+errors.
+
+ The following options apply to more than one filesystem type.
+
+* Menu:
+
+* addopts Option::
+* delay Option::
+* fs Option::
+* opts Option::
+* remopts Option::
+* sublink Option::
+* type Option::
+
+
+File: am-utils.info, Node: addopts Option, Next: delay Option, Prev: Map Options, Up: Map Options
+
+3.3.4.1 addopts Option
+......................
+
+This option adds additional options to default options normally
+specified in the '/defaults' entry or the defaults of the key entry
+being processed (*note opts Option::). Normally when you specify 'opts'
+in both the '/defaults' and the map entry, the latter overrides the
+former completely. But with 'addopts' it will append the options and
+override any conflicting ones.
+
+ 'addopts' also overrides the value of the 'remopts' option (*note
+remopts Option::), which unless specified defaults to the value of
+'opts'.
+
+ Options which start with 'no' will override those with the same name
+that do not start with 'no' and vice verse. Special handling is given
+to inverted options such as 'soft' and 'hard', 'bg' and 'fg', 'ro' and
+'rw', etc.
+
+ For example, if the default options specified were
+ opts:=rw,nosuid,intr,rsize=1024,wsize=1024,quota,posix
+
+ and the ones specified in a map entry were
+
+ addopts:=grpid,suid,ro,rsize=2048,quota,nointr
+
+ then the actual options used would be
+
+ wsize=1024,posix,grpid,suid,ro,rsize=2048,quota,nointr
+
+
+File: am-utils.info, Node: delay Option, Next: fs Option, Prev: addopts Option, Up: Map Options
+
+3.3.4.2 delay Option
+....................
+
+The delay, in seconds, before an attempt will be made to mount from the
+current location. Auxiliary data, such as network address, file handles
+and so on are computed regardless of this value.
+
+ A delay can be used to implement the notion of primary and secondary
+file servers. The secondary servers would have a delay of a few
+seconds, thus giving the primary servers a chance to respond first.
+
+
+File: am-utils.info, Node: fs Option, Next: opts Option, Prev: delay Option, Up: Map Options
+
+3.3.4.3 fs Option
+.................
+
+The local mount point. The semantics of this option vary between
+filesystems.
+
+ For NFS and UFS filesystems the value of '${fs}' is used as the local
+mount point. For other filesystem types it has other meanings which are
+described in the section describing the respective filesystem type. It
+is important that this string uniquely identifies the filesystem being
+mounted. To satisfy this requirement, it should contain the name of the
+host on which the filesystem is resident and the pathname of the
+filesystem on the local or remote host.
+
+ The reason for requiring the hostname is clear if replicated
+filesystems are considered. If a fileserver goes down and a replacement
+filesystem is mounted then the "local" mount point "must" be different
+from that of the filesystem which is hung. Some encoding of the
+filesystem name is required if more than one filesystem is to be mounted
+from any given host.
+
+ If the hostname is first in the path then all mounts from a
+particular host will be gathered below a single directory. If that
+server goes down then the hung mount points are less likely to be
+accidentally referenced, for example when getcwd(3) traverses the
+namespace to find the pathname of the current directory.
+
+ The 'fs' option defaults to '${autodir}/${rhost}${rfs}'. In
+addition, 'rhost' defaults to the local host name ('${host}') and 'rfs'
+defaults to the value of '${path}', which is the full path of the
+requested file; '/home/foo' in the example above (*note Selectors::).
+'${autodir}' defaults to '/a' but may be changed with the '-a' command
+line option. Sun's automounter defaults to '/tmp_mnt'. Note that there
+is no '/' between the '${rhost}' and '${rfs}' since '${rfs}' begins with
+a '/'.
+
+
+File: am-utils.info, Node: opts Option, Next: remopts Option, Prev: fs Option, Up: Map Options
+
+3.3.4.4 opts Option
+...................
+
+The options to pass to the mount system call. A leading '-' is silently
+ignored. The mount options supported generally correspond to those used
+by mount(8) and are listed below. Some additional pseudo-options are
+interpreted by Amd and are also listed.
+
+ Unless specifically overridden, each of the system default mount
+options applies. Any options not recognized are ignored. If no options
+list is supplied the string 'rw,defaults' is used and all the system
+default mount options apply. Options which are not applicable for a
+particular operating system are silently ignored. For example, only
+4.4BSD is known to implement the 'compress' and 'spongy' options.
+
+'acdirmax=N'
+ Set the maximum directory attribute cache timeout to N.
+
+'acdirmin=N'
+ Set the minimum directory attribute cache timeout to N.
+
+'acregmax=N'
+ Set the maximum file attribute cache timeout to N.
+
+'acregmin=N'
+ Set the minimum file attribute cache timeout to N.
+
+'actimeo=N'
+ Set the overall attribute cache timeout to N.
+
+'auto'
+'ignore'
+ Ignore this mount by df(1).
+
+'cache'
+ Allow data to be cached from a remote server for this mount.
+
+'closesession'
+ For UDF mounts, close the session when unmounting.
+
+'compress'
+ Use NFS compression protocol.
+
+'defperm'
+ Ignore the permission mode bits, and default file permissions to
+ 0555, UID 0, and GID 0. Useful for CD-ROMs formatted as ISO-9660.
+
+'dev'
+ Allow local special devices on this filesystem.
+
+'dirmask=N'
+ For PCFS mounts, specify the maximum file permissions for
+ directories in the file system. See the 'mask' option's
+ description for more details. The mask value of N can be specified
+ in decimal, octal, or hexadecimal.
+
+'dumbtimr'
+ Turn off the dynamic retransmit timeout estimator. This may be
+ useful for UDP mounts that exhibit high retry rates, since it is
+ possible that the dynamically estimated timeout interval is too
+ short.
+
+'extatt'
+ Enable extended attributes in ISO-9660 file systems.
+
+'fsid'
+ Set ID of filesystem.
+
+'gens'
+ Enable generations in ISO-9660 file systems. Generations allow you
+ to see all versions of a given file.
+
+'gmtoff=N'
+ For UDF mounts, set the time zone offset from UTC to N seconds,
+ with positive values indicating east of the Prime Meridian. If not
+ set, the user's current time zone will be used.
+
+'group=N'
+ For PCFS and UDF mounts, set the group of the files in the file
+ system to N (which can either be a group name or a GID number).
+ The default group is the group of the directory on which the file
+ system is being mounted.
+
+'grpid'
+ Use BSD directory group-id semantics.
+
+'int'
+'intr'
+ Allow keyboard interrupts on hard mounts.
+
+'lock'
+ Use the NFS locking protocol (default)
+
+'longname'
+ For PCFS mounts, force Win95 long names.
+
+'mask=N'
+ For PCFS mounts, specify the maximum file permissions for files in
+ the file system. For example, a mask of 755 specifies that, by
+ default, the owner should have read, write, and execute permissions
+ for files, but others should only have read and execute
+ permissions. Only the nine low-order bits of mask are used. The
+ default mask is taken from the directory on which the file system
+ is being mounted. The mask value of N can be specified in decimal,
+ octal, or hexadecimal.
+
+'multi'
+ Perform multi-component lookup on files.
+
+'maxgroups'
+ Set the maximum number of groups to allow for this mount.
+
+'nfsv3'
+ Use NFS Version 3 for this mount.
+
+'noac'
+ Turn off the attribute cache.
+
+'noauto'
+ This option is used by the mount command in '/etc/fstab' or
+ '/etc/vfstab' and means not to mount this file system when mount -a
+ is used.
+
+'nocache'
+ Do not allow data to be cached from a remote server for this mount.
+
+'nocasetrans'
+ Don't do case translation. Useful for CD-ROMS formatted as
+ ISO-9660.
+
+'noconn'
+ Don't make a connection on datagram transports.
+
+'nocto'
+ No close-to-open consistency.
+
+'nodefperm'
+ Do not ignore the permission mode bits. Useful for CD-ROMS
+ formatted as ISO-9660.
+
+'nodev'
+'nodevs'
+ Don't allow local special devices on this filesystem.
+
+'noexec'
+ Don't allow program execution.
+
+'noint'
+ Do not allow keyboard interrupts for this mount
+
+'nojoliet'
+ Turn off the Joliet extensions. Useful for CD-ROMS formatted as
+ ISO-9660.
+
+'nolock'
+ Do not use the NFS locking protocol
+
+'nomnttab'
+ This option is used internally to tell Amd that a Solaris 8 system
+ using mntfs is in use.
+
+'norrip'
+ Turn off using of the Rock Ridge Interchange Protocol (RRIP)
+ extensions to ISO-9660.
+
+'nosub'
+ Disallow mounts beneath this mount.
+
+'nosuid'
+ Don't allow set-uid or set-gid executables on this filesystem.
+
+'noversion'
+ Strip the extension ';#' from the version string of files recorded
+ on an ISO-9660 CD-ROM.
+
+'nowin95'
+ For PCFS mounts, completely ignore Win95 entries.
+
+'optionstr'
+ Under Solaris 8, provide the kernel a string of options to parse
+ and show as part of the special in-kernel mount file system.
+
+'overlay'
+ Overlay this mount on top of an existing mount, if any.
+
+'pgthresh=N'
+ Set the paging threshold to N kilobytes.
+
+'port=N'
+ Set the NFS port to N.
+
+'posix'
+ Turn on POSIX static pathconf for mounts.
+
+'private'
+ Use local locking instead of the NLM protocol, useful for IRIX 6
+ only.
+
+'proplist'
+ Support property lists (ACLs) for this mount, useful primarily for
+ Tru64 UNIX.
+
+'proto=S'
+ Use transport protocol S for NFS (can be '"tcp"' or '"udp"').
+
+'quota'
+ Enable quota checking on this mount.
+
+'rdonly'
+'ro'
+ Mount this filesystem readonly.
+
+'resvport'
+ Use a reserved port (smaller than 1024) for remote NFS mounts.
+ Most systems assume that, but some allow for mounts to occur on
+ non-reserved ports. This causes problems when such a system tries
+ to NFS mount one that requires reserved ports. It is recommended
+ that this option always be on.
+
+'retrans=n'
+ The number of NFS retransmits made before a user error is generated
+ by a 'soft' mounted filesystem, and before a 'hard' mounted
+ filesystem reports 'NFS server "yoyo" not responding still trying'.
+
+'retry'
+ Set the NFS retry counter.
+
+'rrcaseins'
+ Enable the Rock Ridge Interchange Protocol (RRIP) case insensitive
+ extensions. Useful for CD-ROMS formatted as ISO-9660.
+
+'rrip'
+ Uses the Rock Ridge Interchange Protocol (RRIP) extensions to
+ ISO-9660.
+
+'rsize=N'
+ The NFS read packet size. You may need to set this if you are
+ using NFS/UDP through a gateway or a slow link.
+
+'rw'
+ Allow reads and writes on this filesystem.
+
+'sessionnr=N'
+ For multisession UDF mounts, use session number N when mounting.
+
+'shortname'
+ For PCFS mounts, force old DOS short names only.
+
+'soft'
+ Give up after "retrans" retransmissions.
+
+'spongy'
+ Like 'soft' for status requests, and 'hard' for data transfers.
+
+'suid'
+ Allow set-uid programs on this mount.
+
+'symttl'
+ Turn off the symbolic link cache time-to-live.
+
+'sync'
+ Perform synchronous filesystem operations on this mount.
+
+'tcp'
+ Use TCP/IP instead of UDP/IP, ignored if the NFS implementation
+ does not support TCP/IP mounts.
+
+'timeo=N'
+ The NFS timeout, in tenth-seconds, before a request is
+ retransmitted.
+
+'user=N'
+ For PCFS and UDF mounts, set the owner of the files in the file
+ system to N (which can either be a user name or a UID number). The
+ default owner is the owner of the directory on which the file
+ system is being mounted.
+
+'vers=N'
+ Use NFS protocol version number N (can be 2 or 3).
+
+'wsize=N'
+ The NFS write packet size. You may need to set this if you are
+ using NFS/UDP through a gateway or a slow link.
+
+ The following options are implemented by Amd, rather than being
+passed to the kernel.
+
+'nounmount'
+ Configures the mount so that its time-to-live will never expire.
+ This is the default for non-network based filesystem types (such as
+ mounting local disks, floppies, and CD-ROMs). See also the related
+ unmount option.
+
+'ping=N'
+ The interval, in seconds, between keep-alive pings. When four
+ consecutive pings have failed the mount point is marked as hung.
+ This interval defaults to 30 seconds; if the ping interval is set
+ to zero, Amd will use the default 30-second interval. If the
+ interval is set to -1 (or any other negative value), no pings are
+ sent and the host is assumed to be always up, which can cause
+ unmounts to hang See the softlookup option for a better
+ alternative. Turning pings off can be useful in NFS-HA
+ (High-Availability) sites where the NFS service rarely goes down.
+ Setting the ping value to a large value can reduce the amount of
+ NFS_NULL chatter on your network considerably, especially in large
+ sites.
+
+ Note that if you have multiple Amd entries using the same file
+ server, and each entry sets a different value of N, then each time
+ Amd mounts a new entry, the ping value will be re-evaluated (and
+ updated, turned off, or turned back on as needed). Finally, note
+ that NFS_NULL pings are sent for both UDP and TCP mounts, because
+ even a hung TCP mount can cause user processes to hang.
+
+'public'
+ Use WebNFS multi-component lookup on the public file handle instead
+ of the mount protocol to obtain NFS file handles, as documented in
+ the WebNFS Client Specification, RFC 2054. This means that Amd
+ will not attempt to contact the remote portmapper or remote mountd
+ daemon, and will only connect to the well-known NFS port 2049 or
+ the port specified with the port mount option, thus making it
+ easier to use NFS through a firewall.
+
+'retry=N'
+ The number of times to retry the mount system call.
+
+'softlookup'
+ Configures Amd's behavior with respect to already-mounted shares
+ from NFS fileservers that are unreachable. If softlookup is
+ specified, trying to access such a share will result in an error
+ (EIO, which is changed from the ENOENT 6.0 used to return). If it
+ is not specified, a regular symlink is provided and the access will
+ probably hang in the NFS filesystem.
+
+ The default behavior depends on whether the mount is 'soft' or
+ 'hard'; softlookup can be used to change this default. This is
+ changed from 6.0 which always behaved as if softlookup was
+ specified.
+
+'unmount'
+ Configures the mount so that its time-to-live will indeed expire
+ (and thus may be automatically unmounted). This is also the
+ default for network-based filesystem types (e.g., NFS). This option
+ is useful for removable local media such as CD-ROMs, USB drives,
+ etc. so they can expire when not in use, and get unmounted (such
+ drives can get work out when they keep spinning). See also the
+ related nounmount option.
+
+'utimeout=N'
+ The interval, in seconds, that looked up and mounted map entries
+ are cached. After that period of time, Amd will attempt to unmount
+ the entries. If, however, the unmount fails (with EBUSY), then Amd
+ will extend the mount's time-to-live by the utimeout value before
+ the next unmount attempt is made. In fact the interval is extended
+ before the unmount is attempted, to avoid thrashing. The default
+ value is 120 seconds (two minutes) or as set by the '-w' command
+ line option.
+
+'xlatecookie'
+ Translate directory cookies between 32-long and 64-long lengths.
+
+
+File: am-utils.info, Node: remopts Option, Next: sublink Option, Prev: opts Option, Up: Map Options
+
+3.3.4.5 remopts Option
+......................
+
+This option has the same use as '${opts}' but applies only when the
+remote host is on a non-local network. For example, when using NFS
+across a gateway it is often necessary to use smaller values for the
+data read and write sizes. This can simply be done by specifying the
+small values in REMOPTS. When a non-local host is accessed, the smaller
+sizes will automatically be used.
+
+ Amd determines whether a host is local by examining the network
+interface configuration at startup. Any interface changes made after
+Amd has been started will not be noticed. The likely effect will be
+that a host may incorrectly be declared non-local.
+
+ Unless otherwise set, the value of '${remopts}' is the same as the
+value of '${opts}'.
+
+
+File: am-utils.info, Node: sublink Option, Next: type Option, Prev: remopts Option, Up: Map Options
+
+3.3.4.6 sublink Option
+......................
+
+The subdirectory within the mounted filesystem to which the reference
+should point. This can be used to prevent duplicate mounts in cases
+where multiple directories in the same mounted filesystem are used.
+
+
+File: am-utils.info, Node: type Option, Prev: sublink Option, Up: Map Options
+
+3.3.4.7 type Option
+...................
+
+The filesystem type to be used. *Note Filesystem Types::, for a full
+description of each type.
+
+
+File: am-utils.info, Node: Amd Command Line Options, Next: Filesystem Types, Prev: Mount Maps, Up: Top
+
+4 Amd Command Line Options
+**************************
+
+Many of Amd's parameters can be set from the command line. The command
+line is also used to specify automount points and maps.
+
+ The general format of a command line is
+
+ amd [options] [{ directory map-name [-map-options] } ...]
+
+ For each directory and map-name given or specified in the 'amd.conf'
+file, Amd establishes an automount point. The "map-options" may be any
+sequence of options or selectors--*note Location Format::. The
+"map-options" apply only to Amd's mount point.
+
+ 'type:=toplvl;cache:=mapdefault;fs:=${map}' is the default value for
+the map options. Default options for a map are read from a special
+entry in the map whose key is the string '/defaults'. When default
+options are given they are prepended to any options specified in the
+mount-map locations as explained in *note Map Defaults::.
+
+ The "options" are any combination of those listed below.
+
+ Once the command line has been parsed, the automount points are
+mounted. The mount points are created if they do not already exist, in
+which case they will be removed when Amd exits. Finally, Amd
+disassociates itself from its controlling terminal and forks into the
+background.
+
+ Note: Even if Amd has been built with '-DDEBUG' (via 'configure
+--enable-debug'), it will still background itself and disassociate
+itself from the controlling terminal. To use a debugger it is necessary
+to specify '-D daemon' on the command line. However, even with all of
+this, mounts and unmounts are performed in the background, and Amd will
+always fork before doing them. Therefore, debugging what happens
+closely during un/mounts is more challenging.
+
+ _All_ of Amd's command options (save '-F' and '-T') can be specified
+in the 'amd.conf' file. *Note Amd Configuration File::. If Amd is
+invoked without any command line options, it will default to using the
+configuration file '/etc/amd.conf', if one exists.
+
+* Menu:
+
+* -a Option:: Automount directory.
+* -c Option:: Cache timeout interval.
+* -d Option:: Domain name.
+* -k Option:: Kernel architecture.
+* -l Option:: Log file.
+* -n Option:: Hostname normalization.
+* -o Option:: Operating system version.
+* -p Option:: Output process id.
+* -r Option:: Restart existing mounts.
+* -t Option:: Kernel RPC timeout.
+* -v Option:: Version information.
+* -w Option:: Wait interval after failed unmount.
+* -x Option:: Log options.
+* -y Option:: NIS domain.
+* -A Option:: Operating system Architecture.
+* -C Option:: Cluster name.
+* -D Option:: Debug flags.
+* -F Option:: Amd configuration file.
+* -H Option:: Show brief help.
+* -O Option:: Operating system name.
+* -S Option:: Lock executable pages in memory.
+* -T Option:: Set tag for configuration file.
+
+
+File: am-utils.info, Node: -a Option, Next: -c Option, Prev: Amd Command Line Options, Up: Amd Command Line Options
+
+4.1 '-a' DIRECTORY
+==================
+
+Specifies the default mount directory. This option changes the variable
+'${autodir}' which otherwise defaults to '/a'. For example, some sites
+prefer '/amd' or '/n'.
+
+ amd -a /amd ...
+
+
+File: am-utils.info, Node: -c Option, Next: -d Option, Prev: -a Option, Up: Amd Command Line Options
+
+4.2 '-c' CACHE-INTERVAL
+=======================
+
+Selects the period, in seconds, for which a name is cached by Amd. If
+no reference is made to the volume in this period, Amd discards the
+volume name to filesystem mapping.
+
+ Once the last reference to a filesystem has been removed, Amd
+attempts to unmount the filesystem. If the unmount fails the interval
+is extended by a further period as specified by the '-w' command line
+option or by the 'utimeout' mount option.
+
+ The default "cache-interval" is 300 seconds (five minutes).
+
+
+File: am-utils.info, Node: -d Option, Next: -k Option, Prev: -c Option, Up: Amd Command Line Options
+
+4.3 '-d' DOMAIN
+===============
+
+Specifies the host's domain. This sets the internal variable
+'${domain}' and affects the '${hostd}' variable.
+
+ If this option is not specified and the hostname already contains the
+local domain then that is used, otherwise the default value of
+'${domain}' is 'unknown.domain'.
+
+ For example, if the local domain was 'doc.ic.ac.uk', Amd could be
+started as follows:
+
+ amd -d doc.ic.ac.uk ...
+
+
+File: am-utils.info, Node: -k Option, Next: -l Option, Prev: -d Option, Up: Amd Command Line Options
+
+4.4 '-k' KERNEL-ARCHITECTURE
+============================
+
+Specifies the kernel architecture of the system. This is usually the
+output of 'uname -m' (the "machine" value gotten from uname(2)). If the
+uname(2) system call is not available, the value of '${karch}' defaults
+to that of '${arch}'.
+
+ The only effect of this option is to set the variable '${karch}'.
+
+ This option would be used as follows:
+
+ amd -k `arch -k` ...
+
+
+File: am-utils.info, Node: -l Option, Next: -n Option, Prev: -k Option, Up: Amd Command Line Options
+
+4.5 '-l' LOG-OPTION
+===================
+
+Selects the form of logging to be made. Several special "log-options"
+are recognized.
+
+ 1. If "log-option" is the string 'syslog', Amd will use the syslog(3)
+ mechanism. If your system supports syslog facilities, then the
+ default facility used is 'LOG_DAEMON'.
+
+ 2. When using syslog, if you wish to change the facility, append its
+ name to the log option name, delimited by a single colon. For
+ example, if "log-options" is the string 'syslog:local7' then Amd
+ will log messages via syslog(3) using the 'LOG_LOCAL7' facility.
+ If the facility name specified is not recognized, Amd will default
+ to 'LOG_DAEMON'. Note: while you can use any syslog facility
+ available on your system, it is generally a bad idea to use those
+ reserved for other services such as 'kern', 'lpr', 'cron', etc.
+
+ 3. If "log-option" is the string '/dev/stderr', Amd will use standard
+ error, which is also the default target for log messages. To
+ implement this, Amd simulates the effect of the '/dev/fd' driver.
+
+ Any other string is taken as a filename to use for logging. Log
+messages are appended to the file if it already exists, otherwise a new
+file is created. The file is opened once and then held open, rather
+than being re-opened for each message.
+
+ Normally, when long-running daemons hold an open file descriptor on a
+log file, it is impossible to "rotate" the log file and compress older
+logs on a daily basis. The daemon needs to be told to discard (via
+close(2)) its file handle, and re-open the log file. This is done using
+'amq -l' log-option. *Note Amq -l option::.
+
+ If the 'syslog' option is specified but the system does not support
+syslog or if the named file cannot be opened or created, Amd will use
+standard error. Error messages generated before Amd has finished
+parsing the command line are printed on standard error.
+
+ Since Amd tends to generate a lot of logging information (especially
+if debugging was turned on), and due to it being an important program
+running on the system, it is usually best to log to a separate disk
+file. In that case Amd would be started as follows:
+
+ amd -l /var/log/amd ...
+
+
+File: am-utils.info, Node: -n Option, Next: -o Option, Prev: -l Option, Up: Amd Command Line Options
+
+4.6 '-n'
+========
+
+Normalizes the remote hostname before using it. Normalization is done
+by replacing the value of '${rhost}' with the (generally fully
+qualified) primary name returned by a hostname lookup.
+
+ This option should be used if several names are used to refer to a
+single host in a mount map.
+
+
+File: am-utils.info, Node: -o Option, Next: -p Option, Prev: -n Option, Up: Amd Command Line Options
+
+4.7 '-o' OP-SYS-VER
+===================
+
+Overrides the compiled-in version number of the operating system, with
+OP-SYS-VER. Useful when the built-in version is not desired for
+backward compatibility reasons. For example, if the built-in version is
+'2.5.1', you can override it to '5.5.1', and use older maps that were
+written with the latter in mind.
+
+
+File: am-utils.info, Node: -p Option, Next: -r Option, Prev: -o Option, Up: Amd Command Line Options
+
+4.8 '-p'
+========
+
+Causes Amd's process id to be printed on standard output. This can be
+redirected to a suitable file for use with kill:
+
+ amd -p > /var/run/amd.pid ...
+
+ This option only has an affect if Amd is running in daemon mode. If
+Amd is started with the '-D daemon' debug flag, this option is ignored.
+
+
+File: am-utils.info, Node: -r Option, Next: -t Option, Prev: -p Option, Up: Amd Command Line Options
+
+4.9 '-r'
+========
+
+Tells Amd to restart existing mounts (*note Inheritance Filesystem::).
+
+
+File: am-utils.info, Node: -t Option, Next: -v Option, Prev: -r Option, Up: Amd Command Line Options
+
+4.10 '-t' TIMEOUT.RETRANSMIT
+============================
+
+Specifies the RPC "timeout" interval and the "retransmit" counter used
+by the kernel to communicate to Amd. These are used to set the 'timeo'
+and 'retrans' mount options, respectively. The default timeout is 0.8
+seconds, and the default number of retransmissions is 11.
+
+ Amd relies on the kernel RPC retransmit mechanism to trigger mount
+retries. The values of these parameters change the overall retry
+interval. Too long an interval gives poor interactive response; too
+short an interval causes excessive retries.
+
+
+File: am-utils.info, Node: -v Option, Next: -w Option, Prev: -t Option, Up: Amd Command Line Options
+
+4.11 '-v'
+=========
+
+Print version information on standard error and then exit. The output
+is of the form:
+
+ Copyright (c) 1997-1999 Erez Zadok
+ Copyright (c) 1990 Jan-Simon Pendry
+ Copyright (c) 1990 Imperial College of Science, Technology & Medicine
+ Copyright (c) 1990 The Regents of the University of California.
+ am-utils version 6.0a15 (build 61).
+ Built by ezk@example.com on date Wed Oct 22 15:21:03 EDT 1997.
+ cpu=sparc (big-endian), arch=sun4, karch=sun4u.
+ full_os=solaris2.5.1, os=sos5, osver=5.5.1, vendor=sun.
+ Map support for: root, passwd, union, nisplus, nis, ndbm, file, error.
+ AMFS: nfs, link, nfsx, nfsl, host, linkx, program, union, inherit,
+ ufs, lofs, hsfs, pcfs, auto, direct, toplvl, error.
+ FS: autofs, cachefs, cdfs, lofs, nfs, nfs3, pcfs, tfs, tmpfs, udf, ufs.
+ Network 1: wire="mcl-lab-net.cs.columbia.edu" (netnumber=128.59.13).
+ Network 2: wire="14-net.cs.columbia.edu" (netnumber=128.59.14).
+ Network 3: wire="old-net.cs.columbia.edu" (netnumber=128.59.16).
+
+ The information includes the version number, number of times Amd was
+compiled on the local system, release date and name of the release.
+Following come the cpu type, byte ordering, and the architecture and
+kernel architecture as '${arch}' and '${karch}', respectively. The next
+line lists the operating system full name, short name, version, and
+vendor. These four values correspond to the variables '${full_os}',
+'${os}', '${osver}', and '${vendor}', respectively. *Note Supported
+Platforms::.
+
+ Then come a list of map types supported, filesystems internally
+supported by Amd (AMFS), and generic filesystems available (FS). Finally
+all known networks (if any) of this host are listed by name and number.
+They are available via the variables '${wire}' or '${network}', and
+'${netnumber}' (*note Selectors::) or the 'in_network' selector function
+(*note in_network Selector Function::).
+
+
+File: am-utils.info, Node: -w Option, Next: -x Option, Prev: -v Option, Up: Amd Command Line Options
+
+4.12 '-w' WAIT-TIMEOUT
+======================
+
+Selects the interval in seconds between unmount attempts after the
+initial time-to-live has expired.
+
+ This defaults to 120 seconds (two minutes).
+
+
+File: am-utils.info, Node: -x Option, Next: -y Option, Prev: -w Option, Up: Amd Command Line Options
+
+4.13 '-x' OPTS
+==============
+
+Specifies the type and verbosity of log messages. "opts" is a comma
+separated list selected from the following options:
+
+'fatal'
+ Fatal errors (cannot be turned off)
+'error'
+ Non-fatal errors (cannot be turned off)
+'user'
+ Non-fatal user errors
+'warn'
+ Recoverable errors
+'warning'
+ Alias for 'warn'
+'info'
+ Information messages
+'map'
+ Mount map usage
+'stats'
+ Additional statistics
+'all'
+ All of the above
+'defaults'
+ An alias for "fatal,error,user,warning,info".
+
+ Initially a set of default logging flags is enabled. This is as if
+'-x defaults' or '-x fatal,error,user,warning,info' had been selected.
+The command line is parsed and logging is controlled by the '-x' option.
+The very first set of logging flags is saved and can not be subsequently
+disabled using Amq. This default set of options is useful for general
+production use.
+
+ The 'info' messages include details of what is mounted and unmounted
+and when filesystems have timed out. If you want to have the default
+set of messages without the 'info' messages then you simply need '-x
+noinfo'. The messages given by 'user' relate to errors in the mount
+maps, so these are useful when new maps are installed. The following
+table lists the syslog priorities used for each of the message types.
+
+'fatal'
+ 'LOG_CRIT'
+'error'
+ 'LOG_ERR'
+'user'
+ 'LOG_WARNING'
+'warning'
+ 'LOG_WARNING'
+'info'
+ 'LOG_INFO'
+'debug'
+ 'LOG_DEBUG'
+'map'
+ 'LOG_DEBUG'
+'stats'
+ 'LOG_INFO'
+
+ The options can be prefixed by the string 'no' to indicate that this
+option should be turned off. For example, to obtain all but 'info'
+messages the option '-x all,noinfo' would be used.
+
+ If Amd was built with debugging enabled the 'debug' option is
+automatically enabled regardless of the command line options.
+
+
+File: am-utils.info, Node: -y Option, Next: -A Option, Prev: -x Option, Up: Amd Command Line Options
+
+4.14 '-y' NIS-DOMAIN
+====================
+
+Selects an alternate NIS domain. This is useful for debugging and
+cross-domain shared mounting. If this flag is specified, Amd
+immediately attempts to bind to a server for this domain.
+
+
+File: am-utils.info, Node: -A Option, Next: -C Option, Prev: -y Option, Up: Amd Command Line Options
+
+4.15 '-A' ARCHITECTURE
+======================
+
+Specifies the OS architecture of the system. The only effect of this
+option is to set the variable '${arch}'.
+
+ This option would be used as follows:
+
+ amd -A i386 ...
+
+
+File: am-utils.info, Node: -C Option, Next: -D Option, Prev: -A Option, Up: Amd Command Line Options
+
+4.16 '-C' CLUSTER-NAME
+======================
+
+Specifies the name of the cluster of which the local machine is a
+member. The only effect is to set the variable '${cluster}'. The
+"cluster-name" is will usually obtained by running another command which
+uses a database to map the local hostname into a cluster name.
+'${cluster}' can then be used as a selector to restrict mounting of
+replicated data. If this option is not given, '${cluster}' has the same
+value as '${domain}'. This would be used as follows:
+
+ amd -C `clustername` ...
+
+
+File: am-utils.info, Node: -D Option, Next: -F Option, Prev: -C Option, Up: Amd Command Line Options
+
+4.17 '-D' OPTS
+==============
+
+Controls the verbosity and coverage of the debugging trace; "opts" is a
+comma separated list of debugging options. The '-D' option is only
+available if Amd was compiled with '-DDEBUG', or configured with
+'configure --enable-debug'. The memory debugging facilities ('mem') are
+only available if Amd was compiled with '-DDEBUG_MEM' (in addition to
+'-DDEBUG'), or configured with 'configure --enable-debug=mem'.
+
+ The most common options to use are '-D trace' and '-D test' (which
+turns on all the useful debug options). As usual, every option can be
+prefixed with 'no' to turn it off.
+
+'all'
+ all options (excluding hrtime and mtab)
+'defaults'
+ "sensible" default options (all-excluding hrtime, mtab, and
+ xdrtrace)
+'test'
+ full debug options plus mtab,nodaemon,nofork,noamq
+'amq'
+ register Amd with the RPC portmapper, for Amq
+'daemon'
+ enter daemon mode
+'fork'
+ fork child worker (hlfsd only)
+'full'
+ program trace
+'hrtime'
+ print high resolution time stamps (only if syslog(3) is not used)
+'info'
+ info service specific debugging (hesiod, nis, etc.) In the case of
+ hesiod maps, turns on the hesiod RES_DEBUG internal debugging
+ option.
+'mem'
+ trace memory allocations. Needs to be explicitly enabled at
+ compile time with -enable-debug=mem.
+'mtab'
+ use local mount-table file (defaults to '/tmp/mtab', *note
+ debug_mtab_file Parameter::)
+'readdir'
+ show readdir progress
+'str'
+ debug string munging
+'trace'
+ trace RPC protocol and NFS mount arguments
+'xdrtrace'
+ trace XDR routines
+
+ You may also refer to the program source for a more detailed
+explanation of the available options.
+
+
+File: am-utils.info, Node: -F Option, Next: -H Option, Prev: -D Option, Up: Amd Command Line Options
+
+4.18 '-F' CONF-FILE
+===================
+
+Specify an Amd configuration file CONF-FILE to use. For a description
+of the format and syntax, *note Amd Configuration File::. This
+configuration file is used to specify any options in lieu of typing many
+of them on the command line. The 'amd.conf' file includes directives
+for every command line option Amd has, and many more that are only
+available via the configuration file facility. The configuration file
+specified by this option is processed after all other options had been
+processed, regardless of the actual location of this option on the
+command line.
+
+
+File: am-utils.info, Node: -H Option, Next: -O Option, Prev: -F Option, Up: Amd Command Line Options
+
+4.19 '-H'
+=========
+
+Print a brief help and usage string.
+
+
+File: am-utils.info, Node: -O Option, Next: -S Option, Prev: -H Option, Up: Amd Command Line Options
+
+4.20 '-O' OP-SYS-NAME
+=====================
+
+Overrides the compiled-in name of the operating system, with
+OP-SYS-NAME. Useful when the built-in name is not desired for backward
+compatibility reasons. For example, if the build in name is 'sunos5',
+you can override it to the old name 'sos5', and use older maps which
+were written with the latter in mind.
+
+
+File: am-utils.info, Node: -S Option, Next: -T Option, Prev: -O Option, Up: Amd Command Line Options
+
+4.21 '-S'
+=========
+
+Do _not_ lock the running executable pages of Amd into memory. To
+improve Amd's performance, systems that support the plock(3) or
+mlockall(2) call lock the Amd process into memory. This way there is
+less chance the operating system will schedule, page out, and swap the
+Amd process as needed. This tends to improve Amd's performance, at the
+cost of reserving the memory used by the Amd process (making it
+unavailable for other processes). If this behavior is not desired, use
+the '-S' option.
+
+
+File: am-utils.info, Node: -T Option, Prev: -S Option, Up: Amd Command Line Options
+
+4.22 '-T' TAG
+=============
+
+Specify a tag to use with 'amd.conf'. All map entries tagged with TAG
+will be processed. Map entries that are not tagged are always
+processed. Map entries that are tagged with a tag other than TAG will
+not be processed.
+
+
+File: am-utils.info, Node: Filesystem Types, Next: Amd Configuration File, Prev: Amd Command Line Options, Up: Top
+
+5 Filesystem Types
+******************
+
+To mount a volume, Amd must be told the type of filesystem to be used.
+Each filesystem type typically requires additional information such as
+the fileserver name for NFS.
+
+ From the point of view of Amd, a "filesystem" is anything that can
+resolve an incoming name lookup. An important feature is support for
+multiple filesystem types. Some of these filesystems are implemented in
+the local kernel and some on remote fileservers, whilst the others are
+implemented internally by Amd.
+
+ The two common filesystem types are UFS and NFS. Four other user
+accessible filesystems ('link', 'program', 'auto' and 'direct') are also
+implemented internally by Amd and these are described below. There are
+two additional filesystem types internal to Amd which are not directly
+accessible to the user ('inherit' and 'error'). Their use is described
+since they may still have an effect visible to the user.
+
+* Menu:
+
+* Network Filesystem:: A single NFS filesystem.
+* Network Host Filesystem:: NFS mount a host's entire export tree.
+* Network Filesystem Group:: An atomic group of NFS filesystems.
+* Unix Filesystem:: Native disk filesystem.
+* Caching Filesystem:: Caching from remote server filesystem.
+* CD-ROM Filesystem:: ISO9660 CD ROM.
+* UDF Filesystem:: Universal Disk Format filesystem.
+* Loopback Filesystem:: Local loopback-mount filesystem.
+* Memory/RAM Filesystem:: A memory or RAM-based filesystem.
+* Null Filesystem:: 4.4BSD's loopback-mount filesystem.
+* Floppy Filesystem:: MS-DOS Floppy filesystem.
+* Translucent Filesystem:: The directory merging filesystem.
+* Shared Memory+Swap Filesystem:: Sun's tmpfs filesystem.
+* User ID Mapping Filesystem:: 4.4BSD's umapfs filesystem.
+* Program Filesystem:: Generic Program mounts.
+* Symbolic Link Filesystem:: Local link.
+* Symbolic Link Filesystem II:: Local link referencing existing filesystem.
+* NFS-Link Filesystem:: Link if path exists, NFS otherwise.
+* Automount Filesystem::
+* Direct Automount Filesystem::
+* Union Filesystem::
+* Error Filesystem::
+* Top-level Filesystem::
+* Root Filesystem::
+* Inheritance Filesystem::
+
+
+File: am-utils.info, Node: Network Filesystem, Next: Network Host Filesystem, Prev: Filesystem Types, Up: Filesystem Types
+
+5.1 Network Filesystem ('nfs')
+==============================
+
+The "nfs" ('type:=nfs') filesystem type provides access to Sun's NFS.
+
+The following options must be specified:
+
+'rhost'
+ the remote fileserver. This must be an entry in the hosts
+ database. IP addresses are not accepted. The default value is
+ taken from the local host name ('${host}') if no other value is
+ specified.
+
+'rfs'
+ the remote filesystem. If no value is specified for this option,
+ an internal default of '${path}' is used.
+
+ NFS mounts require a two stage process. First, the "file handle" of
+the remote file system must be obtained from the server. Then a mount
+system call must be done on the local system. Amd keeps a cache of file
+handles for remote file systems. The cache entries have a lifetime of a
+few minutes.
+
+ If a required file handle is not in the cache, Amd sends a request to
+the remote server to obtain it.
+
+ Historically, this documentation has maintained that Amd will try all
+the locations in parallel and use the first one which responds with a
+valid file handle. This has not been the case for quite some time,
+however. Instead, Amd will go through each location, one by one, and
+will only skip to the next one if the previous one either fails or times
+out.
+
+An NFS entry might be:
+
+ jsp host!=charm;type:=nfs;rhost:=charm;rfs:=/home/charm;sublink:=jsp
+
+ The mount system call and any unmount attempts are always done in a
+new task to avoid the possibility of blocking Amd.
+
+
+File: am-utils.info, Node: Network Host Filesystem, Next: Network Filesystem Group, Prev: Network Filesystem, Up: Filesystem Types
+
+5.2 Network Host Filesystem ('host')
+====================================
+
+The "host" ('type:=host') filesystem allows access to the entire export
+tree of an NFS server. The implementation is layered above the 'nfs'
+implementation so keep-alives work in the same way. The only option
+which needs to be specified is 'rhost' which is the name of the
+fileserver to mount.
+
+ The 'host' filesystem type works by querying the mount daemon on the
+given fileserver to obtain its export list. Amd then obtains
+filehandles for each of the exported filesystems. Any errors at this
+stage cause that particular filesystem to be ignored. Finally each
+filesystem is mounted. Again, errors are logged but ignored. One
+common reason for mounts to fail is that the mount point does not exist.
+Although Amd attempts to automatically create the mount point, it may be
+on a remote filesystem to which Amd does not have write permission.
+
+ When an attempt to unmount a 'host' filesystem mount fails, Amd
+remounts any filesystems which had successfully been unmounted. To do
+this Amd queries the mount daemon again and obtains a fresh copy of the
+export list. Amd then tries to mount any exported filesystems which are
+not currently mounted.
+
+ Sun's automounter provides a special '-hosts' map. To achieve the
+same effect with Amd requires two steps. First a mount map must be
+created as follows:
+
+ * type:=host;rhost:=${key};fs:=${autodir}/${rhost}/root
+
+and then start Amd with the following command
+
+ amd /net net.map
+
+where 'net.map' is the name of map described above. Note that the value
+of '${fs}' is overridden in the map. This is done to avoid a clash
+between the mount tree and any other filesystem already mounted from the
+same fileserver.
+
+ If different mount options are needed for different hosts then
+additional entries can be added to the map, for example
+
+ host2 opts:=ro,nosuid,soft
+
+would soft mount 'host2' read-only.
+
+
+File: am-utils.info, Node: Network Filesystem Group, Next: Unix Filesystem, Prev: Network Host Filesystem, Up: Filesystem Types
+
+5.3 Network Filesystem Group ('nfsx')
+=====================================
+
+The "nfsx" ('type:=nfsx') filesystem allows a group of filesystems to be
+mounted from a single NFS server. The implementation is layered above
+the 'nfs' implementation so keep-alives work in the same way.
+
+ _WARNING_: 'nfsx' is meant to be a "last resort" kind of solution.
+It is racy and poorly supported. The authors _highly_ recommend that
+other solutions be considered before relying on it.
+
+ The options are the same as for the 'nfs' filesystem with one
+difference for 'rfs', as explained below.
+
+The following options should be specified:
+
+'rhost'
+ the remote fileserver. The default value is taken from the local
+ host name ('${host}') if no other value is specified.
+
+'rfs'
+ is a list of filesystems to mount, and must be specified. The list
+ is in the form of a comma separated strings.
+
+For example:
+
+ pub type:=nfsx;rhost:=gould;\
+ rfs:=/public,/,graphics,usenet;fs:=${autodir}/${rhost}/root
+
+ The first string defines the root of the tree, and is applied as a
+prefix to the remaining members of the list which define the individual
+filesystems. The first string is _not_ used as a filesystem name. A
+serial operation is used to determine the local mount points to ensure a
+consistent layout of a tree of mounts.
+
+ Here, the _three_ filesystems, '/public', '/public/graphics' and
+'/public/usenet', would be mounted.
+
+ A local mount point, '${fs}', _must_ be specified. The default local
+mount point will not work correctly in the general case. A suggestion
+is to use 'fs:=${autodir}/${rhost}/root'.
+
+
+File: am-utils.info, Node: Unix Filesystem, Next: Caching Filesystem, Prev: Network Filesystem Group, Up: Filesystem Types
+
+5.4 Unix Filesystem ('ufs', 'xfs', or 'efs')
+============================================
+
+The "ufs" ('type:=ufs') filesystem type provides access to the system's
+standard disk filesystem--usually a derivative of the Berkeley Fast
+Filesystem.
+
+The following option must be specified:
+
+'dev'
+ the block special device to be mounted.
+
+ A UFS entry might be:
+
+ jsp host==charm;type:=ufs;dev:=/dev/sd0d;sublink:=jsp
+
+ UFS is the default Unix disk-based file system, which Am-utils picks
+up during the autoconfiguration phase. Some systems have more than one
+type, such as IRIX, that comes with EFS (Extent File System) and XFS
+(Extended File System). In those cases, you may explicitly set the file
+system type, by using entries such:
+
+ ez1 type:=efs;dev:=/dev/xd0a
+ ez2 type:=xfs;dev:=/dev/sd3c
+
+ The UFS/XFS/EFS filesystems are never timed out by default, i.e.
+they will never be unmounted by Amd. If automatic unmounting is
+desired, the "unmount" option should be added to the mount options for
+the entry.
+
+
+File: am-utils.info, Node: Caching Filesystem, Next: CD-ROM Filesystem, Prev: Unix Filesystem, Up: Filesystem Types
+
+5.5 Caching Filesystem ('cachefs')
+==================================
+
+The "cachefs" ('type:=cachefs') filesystem caches files from one
+location onto another, presumably providing faster access. It is
+particularly useful to cache from a larger and remote (slower) NFS
+partition to a smaller and local (faster) UFS directory.
+
+The following options must be specified:
+
+'cachedir'
+ the directory where the cache is stored.
+'rfs'
+ the path name to the "back file system" to be cached from.
+'fs'
+ the "front file system" mount point to the cached files, where Amd
+ will set a symbolic link pointing to.
+
+ A CacheFS entry for, say, the '/import' Amd mount point, might be:
+
+ copt type:=cachefs;cachedir:=/cache;rfs:=/import/opt;fs:=/n/import/copt
+
+ Access to the pathname '/import/copt' will follow a symbolic link to
+'/n/import/copt'. The latter is the mount point for a caching file
+system, that caches from '/import/opt' to '/cache'.
+
+ The cachefs filesystem is never timed out by default, i.e. it will
+never be unmounted by Amd. If automatic unmounting is desired, the
+"unmount" option should be added to the mount options for the entry.
+
+ Caveats:
+ 1. This file system is currently only implemented for Solaris 2.x!
+ 2. Before being used for the first time, the cache directory must be
+ initialized with 'cfsadmin -c CACHEDIR'. See the manual page for
+ cfsadmin(1M) for more information.
+ 3. The "back file system" mounted must be a complete file system, not
+ a subdirectory thereof; otherwise you will get an error "Invalid
+ Argument".
+ 4. If Amd aborts abnormally, the state of the cache may be
+ inconsistent, requiring running the command 'fsck -F cachefs
+ CACHEDIR'. Otherwise you will get the error "No Space Left on
+ Device".
+
+
+File: am-utils.info, Node: CD-ROM Filesystem, Next: UDF Filesystem, Prev: Caching Filesystem, Up: Filesystem Types
+
+5.6 CD-ROM Filesystem ('cdfs')
+==============================
+
+The "cdfs" ('type:=cdfs') filesystem mounts a CD-ROM with an ISO9660
+format filesystem on it.
+
+The following option must be specified:
+
+'dev'
+ the block special device to be mounted.
+
+ Some operating systems will fail to mount read-only CDs unless the
+'ro' option is specified. A cdfs entry might be:
+
+ cdfs os==sunos4;type:=cdfs;dev:=/dev/sr0 \
+ os==sunos5;addopts:=ro;type:=cdfs;dev:=/dev/dsk/c0t6d0s2
+
+
+File: am-utils.info, Node: UDF Filesystem, Next: Loopback Filesystem, Prev: CD-ROM Filesystem, Up: Filesystem Types
+
+5.7 CD-ROM Filesystem ('udf')
+=============================
+
+The "udf" ('type:=udf') filesystem mounts media with a Universal Disk
+Format (UDF) filesystem on it, e.g., a video DVD.
+
+The following option must be specified:
+
+'dev'
+ the block special device to be mounted.
+
+ Some operating systems will fail to mount read-only media unless the
+'ro' option is specified. A udf entry might be:
+
+ udf os==sunos4;type:=udf;dev:=/dev/sr0 \
+ os==sunos5;addopts:=ro;type:=udf;dev:=/dev/dsk/c0t6d0s2
+
+
+File: am-utils.info, Node: Loopback Filesystem, Next: Memory/RAM Filesystem, Prev: UDF Filesystem, Up: Filesystem Types
+
+5.8 Loopback Filesystem ('lofs')
+================================
+
+The "lofs" ('type:=lofs') filesystem is also called the loopback
+filesystem. It mounts a local directory on another, thus providing
+mount-time binding to another location (unlike symbolic links).
+
+ The loopback filesystem is particularly useful within the context of
+a chroot-ed directory (via chroot(2)), to provide access to directories
+otherwise inaccessible.
+
+The following option must be specified:
+
+'rfs'
+ the pathname to be mounted on top of '${fs}'.
+
+ Usually, the FTP server runs in a chroot-ed environment, for security
+reasons. In this example, lofs is used to provide a subdirectory within
+a user's home directory, also available for public ftp.
+
+ lofs type:=lofs;rfs:=/home/ezk/myftpdir;fs:=/usr/ftp/pub/ezk
+
+
+File: am-utils.info, Node: Memory/RAM Filesystem, Next: Null Filesystem, Prev: Loopback Filesystem, Up: Filesystem Types
+
+5.9 Memory/RAM Filesystem ('mfs')
+=================================
+
+The "mfs" ('type:=mfs') filesystem is available in 4.4BSD, Linux, and
+other systems. It creates a filesystem in a portion of the system's
+memory, thus providing very fast file (volatile) access.
+
+ XXX: THIS FILESYSTEM IS NOT IMPLEMENTED YET!
+
+
+File: am-utils.info, Node: Null Filesystem, Next: Floppy Filesystem, Prev: Memory/RAM Filesystem, Up: Filesystem Types
+
+5.10 Null Filesystem ('nullfs')
+===============================
+
+The "nullfs" ('type:=nullfs') filesystem is available from 4.4BSD, and
+is very similar to the loopback filesystem, "lofs".
+
+ XXX: THIS FILESYSTEM IS NOT IMPLEMENTED YET!
+
+
+File: am-utils.info, Node: Floppy Filesystem, Next: Translucent Filesystem, Prev: Null Filesystem, Up: Filesystem Types
+
+5.11 Floppy Filesystem ('pcfs')
+===============================
+
+The "pcfs" ('type:=pcfs') filesystem mounts a floppy previously
+formatted for the MS-DOS format.
+
+The following option must be specified:
+
+'dev'
+ the block special device to be mounted.
+
+ A pcfs entry might be:
+
+ pcfs os==sunos4;type:=pcfs;dev:=/dev/fd0 \
+ os==sunos5;type:=pcfs;dev:=/dev/diskette
+
+
+File: am-utils.info, Node: Translucent Filesystem, Next: Shared Memory+Swap Filesystem, Prev: Floppy Filesystem, Up: Filesystem Types
+
+5.12 Translucent Filesystem ('tfs')
+===================================
+
+The "tfs" ('type:=tfs') filesystem is an older version of the 4.4BSD
+"unionfs".
+
+ XXX: THIS FILESYSTEM IS NOT IMPLEMENTED YET!
+
+
+File: am-utils.info, Node: Shared Memory+Swap Filesystem, Next: User ID Mapping Filesystem, Prev: Translucent Filesystem, Up: Filesystem Types
+
+5.13 Shared Memory+Swap Filesystem ('tmpfs')
+============================================
+
+The "tmpfs" ('type:=tmpfs') filesystem shares memory between a the swap
+device and the rest of the system. It is generally used to provide a
+fast access '/tmp' directory, one that uses memory that is otherwise
+unused. This filesystem is available in SunOS 4.x and 5.x.
+
+ XXX: THIS FILESYSTEM IS NOT IMPLEMENTED YET!
+
+
+File: am-utils.info, Node: User ID Mapping Filesystem, Next: Program Filesystem, Prev: Shared Memory+Swap Filesystem, Up: Filesystem Types
+
+5.14 User ID Mapping Filesystem ('umapfs')
+==========================================
+
+The "umapfs" ('type:=umapfs') filesystem maps User IDs of file
+ownership, and is available from 4.4BSD.
+
+ XXX: THIS FILESYSTEM IS NOT IMPLEMENTED YET!
+
+
+File: am-utils.info, Node: Program Filesystem, Next: Symbolic Link Filesystem, Prev: User ID Mapping Filesystem, Up: Filesystem Types
+
+5.15 Program Filesystem ('program')
+===================================
+
+The "program" ('type:=program') filesystem type allows a program to be
+run whenever a mount or unmount is required. This allows easy addition
+of support for other filesystem types, such as MIT's Remote Virtual Disk
+(RVD) which has a programmatic interface via the commands 'rvdmount' and
+'rvdunmount'.
+
+Both of the following options must be specified:
+
+'mount'
+ the program which will perform the mount.
+
+'unmount'
+'umount'
+ the program which will perform the unmount. For convenience, you
+ may use either 'unmount' or 'umount' but not both. If neither is
+ defined, Amd will default to 'umount ${fs}' (the actual unmount
+ program pathname will be automatically determined at the time GNU
+ 'configure' runs.)
+
+ The exit code from these two programs is interpreted as a Unix error
+code. As usual, exit code zero indicates success. To execute the
+program, Amd splits the string on whitespace to create an array of
+substrings. Single quotes ''' can be used to quote whitespace if that
+is required in an argument. There is no way to escape or change the
+single quote character.
+
+ To run e.g. the program 'rvdmount' with a host name and filesystem
+as arguments, it would be specified by
+'fs:=${autodir}${path};type:=program;mount:="/etc/rvdmount rvdmount
+fserver ${fs}";unmount:="/etc/rdvumount rvdumount ${fs}"'.
+
+ The first element in the array is taken as the pathname of the
+program to execute. The other members of the array form the argument
+vector to be passed to the program, "including argument zero". The
+array is exactly the same as the array passed to the execv() system call
+(man execv for details). The split string must have at least two
+elements. The programs are directly executed by Amd, not via a shell.
+Therefore, if a script is to be used as a mount/umount program, it
+"must" begin with a '#!' interpreter specification.
+
+ Often, this program mount type is used for Samba mounts, where you
+need a double slash in pathnames. However, Amd normalizes sequences of
+slashes into one slash. Therefore, you must use an escaped slash,
+preceded by an escaped backslash. So to get a double slash in the mount
+command, you need the eight character sequence '\\\/\\\/' in your map.
+For example:
+
+ 'mount="/sbin/mount mount -r -t smbfs -o-N,-Ihostname
+\\\/\\\/guest@venus/mp3"'
+
+ If a filesystem type is to be heavily used, it may be worthwhile
+adding a new filesystem type into Amd, but for most uses the program
+filesystem should suffice.
+
+ When the program is run, standard input and standard error are
+inherited from the current values used by Amd. Standard output is a
+duplicate of standard error. The value specified with the '-l' command
+line option has no effect on standard error.
+
+ Amd guarantees that the mountpoint will be created before calling the
+mount program, and that it will be removed after the umount program
+returns success.
+
+
+File: am-utils.info, Node: Symbolic Link Filesystem, Next: Symbolic Link Filesystem II, Prev: Program Filesystem, Up: Filesystem Types
+
+5.16 Symbolic Link Filesystem ('link')
+======================================
+
+Each filesystem type creates a symbolic link to point from the volume
+name to the physical mount point. The 'link' filesystem does the same
+without any other side effects. This allows any part of the machines
+name space to be accessed via Amd.
+
+ One common use for the symlink filesystem is '/homes' which can be
+made to contain an entry for each user which points to their
+(auto-mounted) home directory. Although this may seem rather expensive,
+it provides a great deal of administrative flexibility.
+
+The following option must be defined:
+
+'fs'
+ The value of FS option specifies the destination of the link, as
+ modified by the SUBLINK option. If SUBLINK is non-null, it is
+ appended to '${fs}''/' and the resulting string is used as the
+ target.
+
+ The 'link' filesystem can be thought of as identical to the 'ufs'
+filesystem but without actually mounting anything.
+
+ An example entry might be:
+
+ jsp host==charm;type:=link;fs:=/home/charm;sublink:=jsp
+ which would return a symbolic link pointing to '/home/charm/jsp'.
+
+
+File: am-utils.info, Node: Symbolic Link Filesystem II, Next: NFS-Link Filesystem, Prev: Symbolic Link Filesystem, Up: Filesystem Types
+
+5.17 Symbolic Link Filesystem II ('linkx')
+==========================================
+
+The "linkx" ('type:=linkx') filesystem type is identical to 'link' with
+the exception that the target of the link must exist. Existence is
+checked with the lstat(2) system call.
+
+ The 'linkx' filesystem type is particularly useful for wildcard map
+entries. In this case, a list of possible targets can be given and Amd
+will choose the first one which exists on the local machine.
+
+
+File: am-utils.info, Node: NFS-Link Filesystem, Next: Automount Filesystem, Prev: Symbolic Link Filesystem II, Up: Filesystem Types
+
+5.18 NFS-Link Filesystem ('nfsl')
+=================================
+
+The "nfsl" ('type:=nfsl') filesystem type is a combination of two
+others: 'link' and 'nfs'. If the local host name is equal to the value
+of '${rhost}' _and_ the target pathname listed in '${fs}' exists, 'nfsl'
+will behave exactly as 'type:=link', and refer to the target as a
+symbolic link. If the local host name is not equal to the value of
+'${rhost}', or if the target of the link does not exist, Amd will treat
+it as 'type:=nfs', and will mount a remote pathname for it.
+
+ The 'nfsl' filesystem type is particularly useful as a shorthand for
+the more cumbersome and yet one of the most popular Amd entries. For
+example, you can simplify all map entries that look like:
+
+ zing -fs:=/n/shekel/u/zing \
+ host!=shekel;type:=nfs;rhost:=shekel;rfs:=${fs} \
+ host==shekel;type:=link
+
+ or
+
+ zing -fs:=/n/shekel/u/zing \
+ exists(${fs});type:=link \
+ !exists(${fs});type:=nfs;rhost:=shekel;rfs:=${fs}
+
+ into a shorter form
+
+ zing type:=nfsl;fs:=/n/shekel/u/zing;rhost:=shekel;rfs:=${fs}
+
+ Not just does it make the maps smaller and simpler, but it avoids
+possible mistakes that often happen when forgetting to set up the two
+entries (one for 'type:=nfs' and the other for 'type:=link') necessary
+to perform transparent mounts of existing or remote mounts.
+
+
+File: am-utils.info, Node: Automount Filesystem, Next: Direct Automount Filesystem, Prev: NFS-Link Filesystem, Up: Filesystem Types
+
+5.19 Automount Filesystem ('auto')
+==================================
+
+The "auto" ('type:=auto') filesystem type creates a new automount point
+below an existing automount point. Top-level automount points appear as
+system mount points. An automount mount point can also appear as a
+sub-directory of an existing automount point. This allows some
+additional structure to be added, for example to mimic the mount tree of
+another machine.
+
+ The following options may be specified:
+
+'cache'
+ specifies whether the data in this mount-map should be cached. The
+ default value is 'none', in which case no caching is done in order
+ to conserve memory.
+
+ However, better performance and reliability can be obtained by
+ caching some or all of a mount-map.
+
+ If the cache option specifies 'all', the entire map is enumerated
+ when the mount point is created.
+
+ If the cache option specifies 'inc', caching is done incrementally
+ as and when data is required. Some map types do not support cache
+ mode 'all', in which case 'inc' is used whenever 'all' is
+ requested.
+
+ Caching can be entirely disabled by using cache mode 'none'.
+
+ If the cache option specifies 'regexp' then the entire map will be
+ enumerated and each key will be treated as an egrep-style regular
+ expression. The order in which a cached map is searched does not
+ correspond to the ordering in the source map so the regular
+ expressions should be mutually exclusive to avoid confusion.
+
+ Each mount map type has a default cache type, usually 'inc', which
+ can be selected by specifying 'mapdefault'.
+
+ The cache mode for a mount map can only be selected on the command
+ line. Starting Amd with the command:
+
+ amd /homes hesiod.homes -cache:=inc
+
+ will cause '/homes' to be automounted using the "Hesiod" name
+ server with local incremental caching of all successfully resolved
+ names.
+
+ All cached data is forgotten whenever Amd receives a 'SIGHUP'
+ signal and, if cache 'all' mode was selected, the cache will be
+ reloaded. This can be used to inform Amd that a map has been
+ updated. In addition, whenever a cache lookup fails and Amd needs
+ to examine a map, the map's modify time is examined. If the cache
+ is out of date with respect to the map then it is flushed as if a
+ 'SIGHUP' had been received.
+
+ An additional option ('sync') may be specified to force Amd to
+ check the map's modify time whenever a cached entry is being used.
+ For example, an incremental, synchronized cache would be created by
+ the following command:
+
+ amd /homes hesiod.homes -cache:=inc,sync
+
+'fs'
+ specifies the name of the mount map to use for the new mount point.
+
+ Arguably this should have been specified with the '${rfs}' option
+ but we are now stuck with it due to historical accident.
+
+'pref'
+ alters the name that is looked up in the mount map. If '${pref}',
+ the "prefix", is non-null then it is prepended to the name
+ requested by the kernel "before" the map is searched. The default
+ prefix is the prefix of the parent map (if any) with name of the
+ auto node appended to it. That means if you want no prefix you
+ must say so in the map: 'pref:=null'.
+
+'opts'
+ Normally, 'auto' style maps are not browsable even if you turn on
+ directory browsability (*note browsable_dirs Parameter::). To
+ enable browsing entries in 'auto' maps, specify 'opts:=browsable'
+ or 'opts:=fullybrowsable' in the description of this map.
+
+ The server 'dylan.doc.ic.ac.uk' has two user disks: '/dev/dsk/2s0'
+and '/dev/dsk/5s0'. These are accessed as '/home/dylan/dk2' and
+'/home/dylan/dk5' respectively. Since '/home' is already an automount
+point, this naming is achieved with the following map entries:
+
+ dylan type:=auto;fs:=${map};pref:=${key}/
+ dylan/dk2 type:=ufs;dev:=/dev/dsk/2s0
+ dylan/dk5 type:=ufs;dev:=/dev/dsk/5s0
+
+
+File: am-utils.info, Node: Direct Automount Filesystem, Next: Union Filesystem, Prev: Automount Filesystem, Up: Filesystem Types
+
+5.20 Direct Automount Filesystem ('direct')
+===========================================
+
+The "direct" ('type:=direct') filesystem is almost identical to the
+automount filesystem. Instead of appearing to be a directory of mount
+points, it appears as a symbolic link to a mounted filesystem. The
+mount is done at the time the link is accessed. *Note Automount
+Filesystem::, for a list of required options.
+
+ Direct automount points are created by specifying the 'direct'
+filesystem type on the command line:
+
+ amd ... /usr/man auto.direct -type:=direct
+
+ where 'auto.direct' would contain an entry such as:
+
+ usr/man -type:=nfs;rfs:=/usr/man \
+ rhost:=man-server1 rhost:=man-server2
+
+ In this example, 'man-server1' and 'man-server2' are file servers
+which export copies of the manual pages. Note that the key which is
+looked up is the name of the automount point without the leading '/'.
+
+ Note that the implementation of the traditional "direct" filesystem
+is essentially a hack (pretending that the root of an NFS filesystem is
+a symlink) and many modern operating systems get very unhappy about it.
+For example, Linux kernel 2.4+ completely disallows it, and Solaris 2.8
+fails to unmount it when Amd shuts down. Therefore, the use of the
+traditional "direct" filesystem is strongly discouraged; it is only
+semi-supported, at best.
+
+ The autofs implementations that permit direct mounts are fully
+supported, however. That currently includes all versions of Solaris.
+Linux autofs does NOT support direct mounts at all.
+
+
+File: am-utils.info, Node: Union Filesystem, Next: Error Filesystem, Prev: Direct Automount Filesystem, Up: Filesystem Types
+
+5.21 Union Filesystem ('union')
+===============================
+
+The "union" ('type:=union') filesystem type allows the contents of
+several directories to be merged and made visible in a single directory.
+This can be used to overcome one of the major limitations of the Unix
+mount mechanism which only allows complete directories to be mounted.
+
+ For example, supposing '/tmp' and '/var/tmp' were to be merged into a
+new directory called '/mtmp', with files in '/var/tmp' taking
+precedence. The following command could be used to achieve this effect:
+
+ amd ... /mtmp union:/tmp:/var/tmp -type:=union
+
+ Currently, the unioned directories must _not_ be automounted. That
+would cause a deadlock. This seriously limits the current usefulness of
+this filesystem type and the problem will be addressed in a future
+release of Amd.
+
+ Files created in the union directory are actually created in the last
+named directory. This is done by creating a wildcard entry which points
+to the correct directory. The wildcard entry is visible if the union
+directory is listed, so allowing you to see which directory has
+priority.
+
+ The files visible in the union directory are computed at the time Amd
+is started, and are not kept up-to-date with respect to the underlying
+directories. Similarly, if a link is removed, for example with the 'rm'
+command, it will be lost forever.
+
+
+File: am-utils.info, Node: Error Filesystem, Next: Top-level Filesystem, Prev: Union Filesystem, Up: Filesystem Types
+
+5.22 Error Filesystem ('error')
+===============================
+
+The "error" ('type:=error') filesystem type is used internally as a
+catch-all in the case where none of the other filesystems was selected,
+or some other error occurred. Lookups and mounts always fail with "No
+such file or directory". All other operations trivially succeed.
+
+ The error filesystem is not directly accessible.
+
+
+File: am-utils.info, Node: Top-level Filesystem, Next: Root Filesystem, Prev: Error Filesystem, Up: Filesystem Types
+
+5.23 Top-level Filesystem ('toplvl')
+====================================
+
+The "toplvl" ('type:=toplvl') filesystems is derived from the 'auto'
+filesystem and is used to mount the top-level automount nodes. Requests
+of this type are automatically generated from the command line
+arguments.
+
+
+File: am-utils.info, Node: Root Filesystem, Next: Inheritance Filesystem, Prev: Top-level Filesystem, Up: Filesystem Types
+
+5.24 Root Filesystem ('root')
+=============================
+
+The "root" ('type:=root') filesystem type acts as an internal
+placeholder onto which Amd can pin 'toplvl' mounts. Only one node of
+this type need ever exist and one is created automatically during
+startup. The effect of having more than one root node is undefined.
+
+ The root filesystem is not directly accessible.
+
+
+File: am-utils.info, Node: Inheritance Filesystem, Prev: Root Filesystem, Up: Filesystem Types
+
+5.25 Inheritance Filesystem ('inherit')
+=======================================
+
+The "inheritance" ('type:=inherit') filesystem is not directly
+accessible. Instead, internal mount nodes of this type are
+automatically generated when Amd is started with the '-r' option. At
+this time the system mount table is scanned to locate any filesystems
+which are already mounted. If any reference to these filesystems is
+made through Amd then instead of attempting to mount it, Amd simulates
+the mount and "inherits" the filesystem. This allows a new version of
+Amd to be installed on a live system simply by killing the old daemon
+with 'SIGTERM' and starting the new one.
+
+ This filesystem type is not generally visible externally, but it is
+possible that the output from 'amq -m' may list 'inherit' as the
+filesystem type. This happens when an inherit operation cannot be
+completed for some reason, usually because a fileserver is down.
+
+
+File: am-utils.info, Node: Amd Configuration File, Next: Run-time Administration, Prev: Filesystem Types, Up: Top
+
+6 Amd Configuration File
+************************
+
+The 'amd.conf' file is the configuration file for Amd, as part of the
+am-utils suite. This file contains runtime configuration information
+for the Amd automounter program.
+
+* Menu:
+
+* File Format::
+* The Global Section::
+* Regular Map Sections::
+* Common Parameters::
+* Global Parameters::
+* Regular Map Parameters::
+* amd.conf Examples::
+
+
+File: am-utils.info, Node: File Format, Next: The Global Section, Prev: Amd Configuration File, Up: Amd Configuration File
+
+6.1 File Format
+===============
+
+The 'amd.conf' file consists of sections and parameters. A section
+begins with the name of the section in square brackets '[]' and
+continues until the next section begins or the end of the file is
+reached. Sections contain parameters of the form 'name = value'.
+
+ The file is line-based -- that is, each newline-terminated line
+represents either a comment, a section name or a parameter. No
+line-continuation syntax is available.
+
+ Section names, parameter names and their values are case sensitive.
+
+ Only the first equals sign in a parameter is significant. Whitespace
+before or after the first equals sign is discarded. Leading, trailing
+and internal whitespace in section and parameter names is irrelevant.
+Leading and trailing whitespace in a parameter value is discarded.
+Internal whitespace within a parameter value is not allowed, unless the
+whole parameter value is quoted with double quotes as in 'name = "some
+value"'.
+
+ Any line beginning with a pound sign '#' is ignored, as are lines
+containing only whitespace.
+
+ The values following the equals sign in parameters are all either a
+string (no quotes needed if string does not include spaces) or a
+boolean, which may be given as 'yes'/'no'. Case is significant in all
+values. Some items such as cache timeouts are numeric.
+
+
+File: am-utils.info, Node: The Global Section, Next: Regular Map Sections, Prev: File Format, Up: Amd Configuration File
+
+6.2 The Global Section
+======================
+
+The global section must be specified as '[global]'. Parameters in this
+section either apply to Amd as a whole, or to all other regular map
+sections which follow. There should be only one global section defined
+in one configuration file.
+
+ It is highly recommended that this section be specified first in the
+configuration file. If it is not, then regular map sections which
+precede it will not use global values defined later.
+
+
+File: am-utils.info, Node: Regular Map Sections, Next: Common Parameters, Prev: The Global Section, Up: Amd Configuration File
+
+6.3 Regular Map Sections
+========================
+
+Parameters in regular (non-global) sections apply to a single map entry.
+For example, if the map section '[/homes]' is defined, then all
+parameters following it will be applied to the '/homes' Amd-managed
+mount point.
+
+
+File: am-utils.info, Node: Common Parameters, Next: Global Parameters, Prev: Regular Map Sections, Up: Amd Configuration File
+
+6.4 Common Parameters
+=====================
+
+These parameters can be specified either in the global or a map-specific
+section. Entries specified in a map-specific section override the
+default value or one defined in the global section. If such a common
+parameter is specified only in the global section, it is applicable to
+all regular map sections that follow.
+
+* Menu:
+
+* autofs_use_lofs Parameter::
+* browsable_dirs Parameter::
+* map_defaults Parameter::
+* map_options Parameter::
+* map_type Parameter::
+* mount_type Parameter::
+* search_path Parameter::
+* selectors_in_defaults Parameter::
+* sun_map_syntax Parameter::
+
+
+File: am-utils.info, Node: autofs_use_lofs Parameter, Next: browsable_dirs Parameter, Prev: Common Parameters, Up: Common Parameters
+
+6.4.1 autofs_use_lofs Parameter
+-------------------------------
+
+(type=string, default='yes'). When set to 'yes', Amd's autofs code will
+use lofs-type (loopback) mounts for 'type:=link' mounts, as well as
+several other cases that require local references. This has the
+advantage that Amd does not use a secondary mount point and users do not
+see external pathnames (the infamous '/bin/pwd' problem, where it
+reports a different path than the user chdir'ed into). One of the
+disadvantages of using this option is that the autofs code is relatively
+new and the in-place mounts have not been throughly tested.
+
+ If this option is set to 'no', then Amd's autofs code will use
+symlinks instead of lofs-type mounts for local references. This has the
+advantage of using simpler (more stable) code, but at the expense of
+negating one of autofs's big advantages: the hiding of Amd's internal
+paths. Note that symlinks are not supported in all autofs
+implementations, especially those derived from Solaris Autofs v1. Also,
+on Solaris 2.6 and newer, autofs symlinks are not cached, resulting in
+repeated up-call requests to Amd.
+
+
+File: am-utils.info, Node: browsable_dirs Parameter, Next: map_defaults Parameter, Prev: autofs_use_lofs Parameter, Up: Common Parameters
+
+6.4.2 browsable_dirs Parameter
+------------------------------
+
+(type=string, default='no'). If 'yes', then Amd's top-level mount
+points will be browsable to readdir(3) calls. This means you could run
+for example ls(1) and see what keys are available to mount in that
+directory. Not all entries are made visible to readdir(3): the
+'/defaults' entry, wildcard entries, and those with a '/' in them are
+not included. If you specify 'full' to this option, all but the
+'/defaults' entry will be visible. Note that if you run a command which
+will attempt to stat(2) the entries, such as often done by 'ls -l' or
+'ls -F', Amd will attempt to mount every entry in that map. This is
+often called a "mount storm".
+
+ Note that mount storms are mostly avoided by using autofs mounts
+('mount_type = autofs').
+
+
+File: am-utils.info, Node: map_defaults Parameter, Next: map_options Parameter, Prev: browsable_dirs Parameter, Up: Common Parameters
+
+6.4.3 map_defaults Parameter
+----------------------------
+
+(type=string, default to empty). This option sets a string to be used
+as the map's '/defaults' entry, overriding any '/defaults' specified in
+the map. This allows local users to override a given map's defaults
+without modifying maps globally (which is impossible in sites where the
+maps are managed by a different administrative group).
+
+
+File: am-utils.info, Node: map_options Parameter, Next: map_type Parameter, Prev: map_defaults Parameter, Up: Common Parameters
+
+6.4.4 map_options Parameter
+---------------------------
+
+(type=string, default no options). This option is the same as
+specifying map options on the command line to Amd, such as 'cache:=all'.
+
+
+File: am-utils.info, Node: map_type Parameter, Next: mount_type Parameter, Prev: map_options Parameter, Up: Common Parameters
+
+6.4.5 map_type Parameter
+------------------------
+
+(type=string, default search all map types). If specified, Amd will
+initialize the map only for the type given. This is useful to avoid the
+default map search type used by Amd which takes longer and can have
+undesired side-effects such as initializing NIS even if not used.
+Possible values are
+
+'file'
+ plain files
+'hesiod'
+ Hesiod name service from MIT
+'ldap'
+ Lightweight Directory Access Protocol
+'ndbm'
+ (New) dbm style hash files
+'nis'
+ Network Information Services (version 2)
+'nisplus'
+ Network Information Services Plus (version 3)
+'passwd'
+ local password files
+'union'
+ union maps
+
+
+File: am-utils.info, Node: mount_type Parameter, Next: search_path Parameter, Prev: map_type Parameter, Up: Common Parameters
+
+6.4.6 mount_type Parameter
+--------------------------
+
+(type=string, default='nfs'). All Amd mount types default to NFS. That
+is, Amd is an NFS server on the map mount points, for the local host it
+is running on. If 'autofs' is specified, Amd will be an autofs server
+for those mount points.
+
+
+File: am-utils.info, Node: search_path Parameter, Next: selectors_in_defaults Parameter, Prev: mount_type Parameter, Up: Common Parameters
+
+6.4.7 search_path Parameter
+---------------------------
+
+(type=string, default no search path). This provides a
+(colon-delimited) search path for file maps. Using a search path, sites
+can allow for local map customizations and overrides, and can
+distributed maps in several locations as needed.
+
+
+File: am-utils.info, Node: selectors_in_defaults Parameter, Next: sun_map_syntax Parameter, Prev: search_path Parameter, Up: Common Parameters
+
+6.4.8 selectors_in_defaults Parameter
+-------------------------------------
+
+(type=boolean, default='no'). If 'yes', then the '/defaults' entry of
+maps will search for and process any selectors before setting defaults
+for all other keys in that map. Useful when you want to set different
+options for a complete map based on some parameters. For example, you
+may want to better the NFS performance over slow slip-based networks as
+follows:
+
+ /defaults \
+ wire==slip-net;opts:=intr,rsize=1024,wsize=1024 \
+ wire!=slip-net;opts:=intr,rsize=8192,wsize=8192
+
+ Deprecated form: selectors_on_default.
+
+
+File: am-utils.info, Node: sun_map_syntax Parameter, Prev: selectors_in_defaults Parameter, Up: Common Parameters
+
+6.4.9 sun_map_syntax Parameter
+------------------------------
+
+(type=boolean, default='no'). If 'yes', then Amd will parse the map
+according to the Sun Automount syntax.
+
+
+File: am-utils.info, Node: Global Parameters, Next: Regular Map Parameters, Prev: Common Parameters, Up: Amd Configuration File
+
+6.5 Global Parameters
+=====================
+
+The following parameters are applicable to the '[global]' section only.
+
+* Menu:
+
+* arch Parameter::
+* auto_attrcache Parameter::
+* auto_dir Parameter::
+* cache_duration Parameter::
+* cluster Parameter::
+* debug_mtab_file Parameter::
+* debug_options Parameter::
+* dismount_interval Parameter::
+* domain_strip Parameter::
+* exec_map_timeout Parameter::
+* forced_unmounts Parameter::
+* full_os Parameter::
+* fully_qualified_hosts Parameter::
+* hesiod_base Parameter::
+* karch Parameter::
+* ldap_base Parameter::
+* ldap_cache_maxmem Parameter::
+* ldap_cache_seconds Parameter::
+* ldap_hostports Parameter::
+* ldap_proto_version Parameter::
+* local_domain Parameter::
+* localhost_address Parameter::
+* log_file Parameter::
+* log_options Parameter::
+* map_reload_interval Parameter::
+* nfs_allow_any_interface Parameter::
+* nfs_allow_insecure_port Parameter::
+* nfs_proto Parameter::
+* nfs_retransmit_counter Parameter::
+* nfs_retransmit_counter_udp Parameter::
+* nfs_retransmit_counter_tcp Parameter::
+* nfs_retransmit_counter_toplvl Parameter::
+* nfs_retry_interval Parameter::
+* nfs_retry_interval_udp Parameter::
+* nfs_retry_interval_tcp Parameter::
+* nfs_retry_interval_toplvl Parameter::
+* nfs_vers Parameter::
+* nis_domain Parameter::
+* normalize_hostnames Parameter::
+* normalize_slashes Parameter::
+* os Parameter::
+* osver Parameter::
+* pid_file Parameter::
+* plock Parameter::
+* portmap_program Parameter::
+* preferred_amq_port Parameter::
+* print_pid Parameter::
+* print_version Parameter::
+* restart_mounts Parameter::
+* show_statfs_entries Parameter::
+* truncate_log Parameter::
+* unmount_on_exit Parameter::
+* use_tcpwrappers Parameter::
+* vendor Parameter::
+
+
+File: am-utils.info, Node: arch Parameter, Next: auto_attrcache Parameter, Prev: Global Parameters, Up: Global Parameters
+
+6.5.1 arch Parameter
+--------------------
+
+(type=string, default to compiled in value). Same as the '-A' option to
+Amd. Allows you to override the value of the arch Amd variable.
+
+
+File: am-utils.info, Node: auto_attrcache Parameter, Next: auto_dir Parameter, Prev: arch Parameter, Up: Global Parameters
+
+6.5.2 auto_attrcache Parameter
+------------------------------
+
+(type=numeric, default=0). Specify in seconds (or units of 0.1 seconds,
+depending on the OS), what is the (kernel-side) NFS attribute cache
+timeout for Amd's own automount points. A value of 0 is supposed to
+turn off attribute caching, meaning that Amd will be consulted via a
+kernel-RPC each time someone stat()'s the mount point (which could be
+abused as a denial-of-service attack).
+
+ _WARNING_: Amd depends on being able to turn off the NFS attribute
+cache of the client OS. If it cannot be turned off, then users may get
+ESTALE errors or symlinks that point to the wrong places. This is more
+likely under heavy use of Amd, for example if your system is
+experiencing frequent map changes or frequent mounts/unmounts.
+Therefore, under normal circumstances, this parameter should remain set
+to 0, to ensure that the attribute cache is indeed off.
+
+ Unfortunately, some kernels (e.g., certain BSDs) don't have a way to
+turn off the NFS attribute cache. Setting this parameter to 0 is
+supposed to turn off attribute caching entirely, but unfortunately it
+does not; instead, the attribute cache is set to some internal
+hard-coded default (usually anywhere from 5-30 seconds). If you suspect
+that your OS doesn't have a reliable way of turning off the attribute
+cache, then it is better to set this parameter to the smallest possible
+non-zero value (set 'auto_attrcache=1' in your 'amd.conf'). This will
+not eliminate the problem, but reduce the risk window somewhat. The
+best solutions are (1) to use Amd in Autofs mode, if it's supported in
+your OS, and (2) talk to your OS vendor to support a true 'noac' flag.
+See the README.attrcache
+(http://www.am-utils.org/docs/am-utils/attrcache.txt) document for more
+details.
+
+ If you are able to turn off the attribute cache on your OS, alas,
+Amd's performance may degrade (when not using Autofs) because every
+traversal of an automounter-controlled pathname will result in a lookup
+request from the kernel to Amd. Under heavy loads, for example when
+using recursive tools like 'find', 'rdist', or 'rsync', this performance
+degradation can be noticeable. There are two possible solutions that
+some administrators have chosen to improve performance:
+
+ 1. First, you can turn off unmounting using the 'nounmount' mount
+ option. This will ensure that no Amd symlink could ever change,
+ thereby the kernel's attribute cache and Amd will always be in
+ sync. However, this method will cause the number of mounts to keep
+ growing, even if some are no longer in use; this has the
+ disadvantage that your system could be more susceptible to hangs if
+ even one of those accumulating mounts hangs due to a downed server.
+
+ 2. Second, you can turn on attribute caching carefully by setting a
+ small automounter attribute cache value (say, one second), and a
+ relatively large dismount interval (say, one hour). (*Note
+ dismount_interval Parameter::.) For example, you can set this in
+ your 'amd.conf':
+
+ [global]
+ auto_attrcache = 1
+ dismount_interval = 3600
+
+ This has the benefit of using the kernel's attribute cache and thus
+ improving performance. The disadvantage with this option is that
+ the window of vulnerability is not eliminated entirely: it is only
+ made smaller.
+
+
+File: am-utils.info, Node: auto_dir Parameter, Next: cache_duration Parameter, Prev: auto_attrcache Parameter, Up: Global Parameters
+
+6.5.3 auto_dir Parameter
+------------------------
+
+(type=string, default='/a'). Same as the '-a' option to Amd. This sets
+the private directory where Amd will create sub-directories for its real
+mount points.
+
+
+File: am-utils.info, Node: cache_duration Parameter, Next: cluster Parameter, Prev: auto_dir Parameter, Up: Global Parameters
+
+6.5.4 cache_duration Parameter
+------------------------------
+
+(type=numeric, default=300). Same as the '-c' option to Amd. Sets the
+duration in seconds that looked-up or mounted map entries remain in the
+cache.
+
+
+File: am-utils.info, Node: cluster Parameter, Next: debug_mtab_file Parameter, Prev: cache_duration Parameter, Up: Global Parameters
+
+6.5.5 cluster Parameter
+-----------------------
+
+(type=string, default no cluster). Same as the '-C' option to Amd.
+Specifies the alternate HP-UX cluster to use.
+
+
+File: am-utils.info, Node: debug_mtab_file Parameter, Next: debug_options Parameter, Prev: cluster Parameter, Up: Global Parameters
+
+6.5.6 debug_mtab_file Parameter
+-------------------------------
+
+(type=string, default="/tmp/mtab"). Path to mtab file that is used by
+Amd to store a list of mounted file systems during debug-mtab mode.
+This option only applies to systems that store mtab information on disk.
+
+
+File: am-utils.info, Node: debug_options Parameter, Next: dismount_interval Parameter, Prev: debug_mtab_file Parameter, Up: Global Parameters
+
+6.5.7 debug_options Parameter
+-----------------------------
+
+(type=string, default no debug options). Same as the '-D' option to
+Amd. Specify any debugging options for Amd. Works only if am-utils was
+configured for debugging using the '--enable-debug' option. The
+additional 'mem' option can be turned on via '--enable-debug=mem'.
+Otherwise debugging options are ignored. Options are comma delimited,
+and can be preceded by the string 'no' to negate their meaning. You can
+get the list of supported debugging and logging options by running 'amd
+-H'. Possible values those listed for the -D option. *Note -D
+Option::.
+
+
+File: am-utils.info, Node: dismount_interval Parameter, Next: domain_strip Parameter, Prev: debug_options Parameter, Up: Global Parameters
+
+6.5.8 dismount_interval Parameter
+---------------------------------
+
+(type=numeric, default=120). Same as the '-w' option to Amd. Specify
+in seconds, the time between attempts to dismount file systems that have
+exceeded their cached times.
+
+
+File: am-utils.info, Node: domain_strip Parameter, Next: exec_map_timeout Parameter, Prev: dismount_interval Parameter, Up: Global Parameters
+
+6.5.9 domain_strip Parameter
+----------------------------
+
+(type=boolean, default='yes'). If 'yes', then the domain name part
+referred to by '${rhost}' is stripped off. This is useful to keep logs
+and smaller. If 'no', then the domain name part is left changed. This
+is useful when using multiple domains with the same maps (as you may
+have hosts whose domain-stripped name is identical).
+
+
+File: am-utils.info, Node: exec_map_timeout Parameter, Next: forced_unmounts Parameter, Prev: domain_strip Parameter, Up: Global Parameters
+
+6.5.10 exec_map_timeout Parameter
+---------------------------------
+
+(type=numeric, default=10). The timeout in seconds that Amd will wait
+for an executable map program before an answer is returned from that
+program (or script). This value should be set to as small as possible
+while still allowing normal replies to be returned before the timer
+expires, because during the time that the executable map program is
+queried, Amd is essentially waiting and is thus not responding to any
+other queries. *Note Executable maps::.
+
+
+File: am-utils.info, Node: forced_unmounts Parameter, Next: full_os Parameter, Prev: exec_map_timeout Parameter, Up: Global Parameters
+
+6.5.11 forced_unmounts Parameter
+--------------------------------
+
+(type=boolean, default='no'). Sometimes, mount points are hung due to
+unrecoverable conditions, such as when NFS servers migrate, change their
+IP address, are down permanently, or due to hardware failures, and more.
+In this case, attempting to unmount an existing mount point, or even
+just to stat(2) it, results in one of three fatal errors: EIO, ESTALE,
+or EBUSY. At that point, Amd can do little to recover that hung point
+(in fact, the OS cannot automatically recover either). For that reason,
+some OSs support special kinds of forced unmounts, which must be used
+very carefully: they will force an unmount immediately (or lazily on
+Linux), which could result in application data loss. However, that may
+be the only way to recover the entire host (without rebooting). Once a
+hung mount point is forced out, Amd can then re-mount a replacement one
+(if available), bringing a mostly-hung system back to operation and
+avoiding a potentially costly reboot.
+
+ If the 'forced_unmounts' option is set to 'yes', and the client OS
+supports forced or lazy unmounts, then Amd will attempt to use them if
+it gets any of the three serious error conditions listed above. Note
+that Amd will force the unmount of mount points that returned EBUSY only
+for 'type:=toplvl' mounts (*note Top-level Filesystem::): that is, Amd's
+own mount points. This is useful to recover from a previously hung Amd,
+and to ensure that an existing Amd can shutdown cleanly even if some
+processes are keeping its mount points busy (i.e., when a user's shell
+process uses 'cd' to set its CWD to Amd's own mount point).
+
+ If this option is set to 'no' (the default), then Amd will not
+attempt this special recovery procedure.
+
+
+File: am-utils.info, Node: full_os Parameter, Next: fully_qualified_hosts Parameter, Prev: forced_unmounts Parameter, Up: Global Parameters
+
+6.5.12 full_os Parameter
+------------------------
+
+(type=string, default to compiled in value). The full name of the
+operating system, along with its version. Allows you to override the
+compiled-in full name and version of the operating system. Useful when
+the compiled-in name is not desired. For example, the full operating
+system name on linux comes up as 'linux', but you can override it to
+'linux-2.2.5'.
+
+
+File: am-utils.info, Node: fully_qualified_hosts Parameter, Next: hesiod_base Parameter, Prev: full_os Parameter, Up: Global Parameters
+
+6.5.13 fully_qualified_hosts Parameter
+--------------------------------------
+
+(type=string, default='no'). If 'yes', Amd will perform RPC
+authentication using fully-qualified host names. This is necessary for
+some systems, and especially when performing cross-domain mounting. For
+this function to work, the Amd variable '${hostd}' is used, requiring
+that '${domain}' not be null.
+
+
+File: am-utils.info, Node: hesiod_base Parameter, Next: karch Parameter, Prev: fully_qualified_hosts Parameter, Up: Global Parameters
+
+6.5.14 hesiod_base Parameter
+----------------------------
+
+(type=string, default='automount'). Specify the base name for hesiod
+maps.
+
+
+File: am-utils.info, Node: karch Parameter, Next: ldap_base Parameter, Prev: hesiod_base Parameter, Up: Global Parameters
+
+6.5.15 karch Parameter
+----------------------
+
+(type=string, default to karch of the system). Same as the '-k' option
+to Amd. Allows you to override the kernel-architecture of your system.
+Useful for example on Sun (Sparc) machines, where you can build one Amd
+binary, and run it on multiple machines, yet you want each one to get
+the correct karch variable set (for example, sun4c, sun4m, sun4u, etc.)
+Note that if not specified, Amd will use uname(2) to figure out the
+kernel architecture of the machine.
+
+
+File: am-utils.info, Node: ldap_base Parameter, Next: ldap_cache_maxmem Parameter, Prev: karch Parameter, Up: Global Parameters
+
+6.5.16 ldap_base Parameter
+--------------------------
+
+(type=string, default not set). Specify the base name for LDAP. This
+often includes LDAP-specific values such as country and organization.
+
+
+File: am-utils.info, Node: ldap_cache_maxmem Parameter, Next: ldap_cache_seconds Parameter, Prev: ldap_base Parameter, Up: Global Parameters
+
+6.5.17 ldap_cache_maxmem Parameter
+----------------------------------
+
+(type=numeric, default=131072). Specify the maximum memory Amd should
+use to cache LDAP entries.
+
+
+File: am-utils.info, Node: ldap_cache_seconds Parameter, Next: ldap_hostports Parameter, Prev: ldap_cache_maxmem Parameter, Up: Global Parameters
+
+6.5.18 ldap_cache_seconds Parameter
+-----------------------------------
+
+(type=numeric, default=0). Specify the number of seconds to keep
+entries in the cache.
+
+
+File: am-utils.info, Node: ldap_hostports Parameter, Next: ldap_proto_version Parameter, Prev: ldap_cache_seconds Parameter, Up: Global Parameters
+
+6.5.19 ldap_hostports Parameter
+-------------------------------
+
+(type=string, default not set). Specify the LDAP host and port values.
+
+
+File: am-utils.info, Node: ldap_proto_version Parameter, Next: local_domain Parameter, Prev: ldap_hostports Parameter, Up: Global Parameters
+
+6.5.20 ldap_proto_version Parameter
+-----------------------------------
+
+(type=numeric, default=2). Specify the LDAP protocol version to use.
+With a value of 3 will use LDAPv3 protocol.
+
+
+File: am-utils.info, Node: local_domain Parameter, Next: localhost_address Parameter, Prev: ldap_proto_version Parameter, Up: Global Parameters
+
+6.5.21 local_domain Parameter
+-----------------------------
+
+(type=string, default no sub-domain). Same as the '-d' option to Amd.
+Specify the local domain name. If this option is not given the domain
+name is determined from the hostname, by removing the first component of
+the fully-qualified host name.
+
+
+File: am-utils.info, Node: localhost_address Parameter, Next: log_file Parameter, Prev: local_domain Parameter, Up: Global Parameters
+
+6.5.22 localhost_address Parameter
+----------------------------------
+
+(type=string, default to localhost or 127.0.0.1). Specify the name or
+IP address for Amd to use when connecting the sockets for the local NFS
+server and the RPC server. This defaults to 127.0.0.1 or whatever the
+host reports as its local address. This parameter is useful on hosts
+with multiple addresses where you want to force Amd to connect to a
+specific address.
+
+
+File: am-utils.info, Node: log_file Parameter, Next: log_options Parameter, Prev: localhost_address Parameter, Up: Global Parameters
+
+6.5.23 log_file Parameter
+-------------------------
+
+(type=string, default='stderr'). Same as the '-l' option to Amd.
+Specify a file name to log Amd events to. If the string '/dev/stderr'
+is specified, Amd will send its events to the standard error file
+descriptor.
+
+ If the string 'syslog' is given, Amd will record its events with the
+system logger syslogd(8). If your system supports syslog facilities,
+then the default facility used is 'LOG_DAEMON'.
+
+ When using syslog, if you wish to change the facility, append its
+name to the option name, delimited by a single colon. For example, if
+it is the string 'syslog:local7' then Amd will log messages via
+syslog(3) using the 'LOG_LOCAL7' facility. If the facility name
+specified is not recognized, Amd will default to 'LOG_DAEMON'. Note:
+while you can use any syslog facility available on your system, it is
+generally a bad idea to use those reserved for other services such as
+'kern', 'lpr', 'cron', etc.
+
+
+File: am-utils.info, Node: log_options Parameter, Next: map_reload_interval Parameter, Prev: log_file Parameter, Up: Global Parameters
+
+6.5.24 log_options Parameter
+----------------------------
+
+(type=string, default="defaults"). Same as the '-x' option to Amd.
+Specify any logging options for Amd. Options are comma delimited, and
+can be preceded by the string 'no' to negate their meaning. The 'debug'
+logging option is only available if am-utils was configured with
+'--enable-debug'. You can get the list of supported debugging options
+by running 'amd -H'. Possible values are:
+
+'all'
+ all messages
+'defaults'
+ an alias for "fatal,error,user,warning,info"
+'debug'
+ debug messages
+'error'
+ non-fatal system errors (cannot be turned off)
+'fatal'
+ fatal errors (cannot be turned off)
+'info'
+ information
+'map'
+ map errors
+'stats'
+ additional statistical information
+'user'
+ non-fatal user errors
+'warn'
+ warnings
+'warning'
+ warnings
+
+
+File: am-utils.info, Node: map_reload_interval Parameter, Next: nfs_allow_any_interface Parameter, Prev: log_options Parameter, Up: Global Parameters
+
+6.5.25 map_reload_interval Parameter
+------------------------------------
+
+(type=numeric, default=3600). The number of seconds that Amd will wait
+before it checks to see if any maps have changed at their source (NIS
+servers, LDAP servers, files, etc.). Amd will reload only those maps
+that have changed.
+
+
+File: am-utils.info, Node: nfs_allow_any_interface Parameter, Next: nfs_allow_insecure_port Parameter, Prev: map_reload_interval Parameter, Up: Global Parameters
+
+6.5.26 nfs_allow_any_interface Parameter
+----------------------------------------
+
+(type=string, default='no'). Normally Amd accepts local NFS packets
+only from 127.0.0.1. If this parameter is set to 'yes', then amd will
+accept local NFS packets from any local interface; this is useful on
+hosts that may have multiple interfaces where the system is forced to
+send all outgoing packets (even those bound to the same host) via an
+address other than 127.0.0.1.
+
+
+File: am-utils.info, Node: nfs_allow_insecure_port Parameter, Next: nfs_proto Parameter, Prev: nfs_allow_any_interface Parameter, Up: Global Parameters
+
+6.5.27 nfs_allow_insecure_port Parameter
+----------------------------------------
+
+(type=string, default='no'). Normally Amd will refuse requests coming
+from unprivileged ports (i.e., ports >= 1024 on Unix systems), so that
+only privileged users and the kernel can send NFS requests to it.
+However, some kernels (certain versions of Darwin, MacOS X, and Linux)
+have bugs that cause them to use unprivileged ports in certain
+situations, which causes Amd to stop dead in its tracks. This parameter
+allows Amd to operate normally even on such systems, at the expense of a
+slight decrease in the security of its operations. If you see messages
+like "ignoring request from foo:1234, port not reserved" in your Amd
+log, try enabling this parameter and give it another go.
+
+
+File: am-utils.info, Node: nfs_proto Parameter, Next: nfs_retransmit_counter Parameter, Prev: nfs_allow_insecure_port Parameter, Up: Global Parameters
+
+6.5.28 nfs_proto Parameter
+--------------------------
+
+(type=string, default to trying version tcp then udp). By default, Amd
+tries 'tcp' and then 'udp'. This option forces the overall NFS protocol
+used to TCP or UDP. It overrides what is in the Amd maps, and is useful
+when Amd is compiled with TCP support in NFSv2/NFSv3 that may not be
+stable. With this option you can turn off the complete usage of TCP for
+NFS dynamically (without having to recompile Amd), and use UDP only,
+until such time as TCP support is desired again.
+
+
+File: am-utils.info, Node: nfs_retransmit_counter Parameter, Next: nfs_retransmit_counter_udp Parameter, Prev: nfs_proto Parameter, Up: Global Parameters
+
+6.5.29 nfs_retransmit_counter Parameter
+---------------------------------------
+
+(type=numeric, default=11). Same as the retransmit part of the '-t'
+timeout.retransmit option to Amd. Specifies the number of NFS
+retransmissions that the kernel will use to communicate with Amd using
+either UDP or TCP mounts. *Note -t Option::.
+
+
+File: am-utils.info, Node: nfs_retransmit_counter_udp Parameter, Next: nfs_retransmit_counter_tcp Parameter, Prev: nfs_retransmit_counter Parameter, Up: Global Parameters
+
+6.5.30 nfs_retransmit_counter_udp Parameter
+-------------------------------------------
+
+(type=numeric, default=11). Same as the nfs_retransmit_counter
+parameter, but applied globally only to UDP mounts. *Note
+nfs_retransmit_counter Parameter::.
+
+
+File: am-utils.info, Node: nfs_retransmit_counter_tcp Parameter, Next: nfs_retransmit_counter_toplvl Parameter, Prev: nfs_retransmit_counter_udp Parameter, Up: Global Parameters
+
+6.5.31 nfs_retransmit_counter_tcp Parameter
+-------------------------------------------
+
+(type=numeric, default=11). Same as the nfs_retransmit_counter
+parameter, but applied globally only to TCP mounts. *Note
+nfs_retransmit_counter Parameter::.
+
+
+File: am-utils.info, Node: nfs_retransmit_counter_toplvl Parameter, Next: nfs_retry_interval Parameter, Prev: nfs_retransmit_counter_tcp Parameter, Up: Global Parameters
+
+6.5.32 nfs_retransmit_counter_toplvl Parameter
+----------------------------------------------
+
+(type=numeric, default=11). Same as the nfs_retransmit_counter
+parameter, applied only for Amd's top-level UDP mounts. On some systems
+it is useful to set this differently than the OS default, so as to
+better tune Amd's responsiveness under heavy scheduler loads. *Note
+nfs_retransmit_counter Parameter::.
+
+
+File: am-utils.info, Node: nfs_retry_interval Parameter, Next: nfs_retry_interval_udp Parameter, Prev: nfs_retransmit_counter_toplvl Parameter, Up: Global Parameters
+
+6.5.33 nfs_retry_interval Parameter
+-----------------------------------
+
+(type=numeric, default=8). Same as the timeout part of the '-t'
+timeout.retransmit option to Amd. Specifies the NFS timeout interval,
+in _tenths_ of seconds, between NFS/RPC retries (for UDP or TCP). This
+is the value that the kernel will use to communicate with Amd. *Note -t
+Option::.
+
+ Amd relies on the kernel RPC retransmit mechanism to trigger mount
+retries. The values of the nfs_retransmit_counter and the
+nfs_retry_interval parameters change the overall retry interval. Too
+long an interval gives poor interactive response; too short an interval
+causes excessive retries.
+
+
+File: am-utils.info, Node: nfs_retry_interval_udp Parameter, Next: nfs_retry_interval_tcp Parameter, Prev: nfs_retry_interval Parameter, Up: Global Parameters
+
+6.5.34 nfs_retry_interval_udp Parameter
+---------------------------------------
+
+(type=numeric, default=8). Same as the nfs_retry_interval parameter,
+but applied globally only to UDP mounts. *Note nfs_retry_interval
+Parameter::.
+
+
+File: am-utils.info, Node: nfs_retry_interval_tcp Parameter, Next: nfs_retry_interval_toplvl Parameter, Prev: nfs_retry_interval_udp Parameter, Up: Global Parameters
+
+6.5.35 nfs_retry_interval_tcp Parameter
+---------------------------------------
+
+(type=numeric, default=8). Same as the nfs_retry_interval parameter,
+but applied globally only to TCP mounts. *Note nfs_retry_interval
+Parameter::.
+
+
+File: am-utils.info, Node: nfs_retry_interval_toplvl Parameter, Next: nfs_vers Parameter, Prev: nfs_retry_interval_tcp Parameter, Up: Global Parameters
+
+6.5.36 nfs_retry_interval_toplvl Parameter
+------------------------------------------
+
+(type=numeric, default=8). Same as the nfs_retry_interval parameter,
+applied only for Amd's top-level UDP mounts. On some systems it is
+useful to set this differently than the OS default, so as to better tune
+Amd's responsiveness under heavy scheduler loads. *Note
+nfs_retry_interval Parameter::.
+
+
+File: am-utils.info, Node: nfs_vers Parameter, Next: nis_domain Parameter, Prev: nfs_retry_interval_toplvl Parameter, Up: Global Parameters
+
+6.5.37 nfs_vers Parameter
+-------------------------
+
+(type=numeric, default to trying version 3 then 2). By default, Amd
+tries version 3 and then version 2. This option forces the overall NFS
+protocol used to version 3 or 2. It overrides what is in the Amd maps,
+and is useful when Amd is compiled with NFSv3 support that may not be
+stable. With this option you can turn off the complete usage of NFSv3
+dynamically (without having to recompile Amd), and use NFSv2 only, until
+such time as NFSv3 support is desired again.
+
+
+File: am-utils.info, Node: nis_domain Parameter, Next: normalize_hostnames Parameter, Prev: nfs_vers Parameter, Up: Global Parameters
+
+6.5.38 nis_domain Parameter
+---------------------------
+
+(type=string, default to local NIS domain name). Same as the '-y'
+option to Amd. Specify an alternative NIS domain from which to fetch
+the NIS maps. The default is the system domain name. This option is
+ignored if NIS support is not available.
+
+
+File: am-utils.info, Node: normalize_hostnames Parameter, Next: normalize_slashes Parameter, Prev: nis_domain Parameter, Up: Global Parameters
+
+6.5.39 normalize_hostnames Parameter
+------------------------------------
+
+(type=boolean, default='no'). Same as the '-n' option to Amd. If
+'yes', then the name referred to by '${rhost}' is normalized relative to
+the host database before being used. The effect is to translate aliases
+into "official" names.
+
+
+File: am-utils.info, Node: normalize_slashes Parameter, Next: os Parameter, Prev: normalize_hostnames Parameter, Up: Global Parameters
+
+6.5.40 normalize_slashes Parameter
+----------------------------------
+
+(type=boolean, default='yes'). If 'yes' then amd will condense all
+multiple '/' (slash) characters into one and remove all trailing
+slashes. If 'no', then amd will not touch strings that may contain
+repeated or trailing slashes. The latter is sometimes useful with SMB
+mounts, which often require multiple slash characters in pathnames.
+
+
+File: am-utils.info, Node: os Parameter, Next: osver Parameter, Prev: normalize_slashes Parameter, Up: Global Parameters
+
+6.5.41 os Parameter
+-------------------
+
+(type=string, default to compiled in value). Same as the '-O' option to
+Amd. Allows you to override the compiled-in name of the operating
+system. Useful when the built-in name is not desired for backward
+compatibility reasons. For example, if the built-in name is 'sunos5',
+you can override it to 'sos5', and use older maps which were written
+with the latter in mind.
+
+
+File: am-utils.info, Node: osver Parameter, Next: pid_file Parameter, Prev: os Parameter, Up: Global Parameters
+
+6.5.42 osver Parameter
+----------------------
+
+(type=string, default to compiled in value). Same as the '-o' option to
+Amd. Allows you to override the compiled-in version number of the
+operating system. Useful when the built-in version is not desired for
+backward compatibility reasons. For example, if the build in version is
+'2.5.1', you can override it to '5.5.1', and use older maps that were
+written with the latter in mind.
+
+
+File: am-utils.info, Node: pid_file Parameter, Next: plock Parameter, Prev: osver Parameter, Up: Global Parameters
+
+6.5.43 pid_file Parameter
+-------------------------
+
+(type=string, default='/dev/stdout'). Specify a file to store the
+process ID of the running daemon into. If not specified, Amd will print
+its process id onto the standard output. Useful for killing Amd after
+it had run. Note that the PID of a running Amd can also be retrieved
+via Amq (*note Amq -p option::).
+
+ This file is used only if the 'print_pid' option is on (*note
+print_pid Parameter::).
+
+
+File: am-utils.info, Node: plock Parameter, Next: portmap_program Parameter, Prev: pid_file Parameter, Up: Global Parameters
+
+6.5.44 plock Parameter
+----------------------
+
+(type=boolean, default='yes'). Same as the '-S' option to Amd. If
+'yes', lock the running executable pages of Amd into memory. To improve
+Amd's performance, systems that support the plock(3) or mlockall(2) call
+can lock the Amd process into memory. This way there is less chance the
+operating system will schedule, page out, and swap the Amd process as
+needed. This improves Amd's performance, at the cost of reserving the
+memory used by the Amd process (making it unavailable for other
+processes).
+
+
+File: am-utils.info, Node: portmap_program Parameter, Next: preferred_amq_port Parameter, Prev: plock Parameter, Up: Global Parameters
+
+6.5.45 portmap_program Parameter
+--------------------------------
+
+(type=numeric, default=300019). Specify an alternate Port-mapper RPC
+program number, other than the official number. This is useful when
+running multiple Amd processes. For example, you can run another Amd in
+"test" mode, without affecting the primary Amd process in any way. For
+safety reasons, the alternate program numbers that can be specified must
+be in the range 300019-300029, inclusive. Amq has an option '-P' which
+can be used to specify an alternate program number of an Amd to contact.
+In this way, amq can fully control any number of Amd processes running
+on the same host.
+
+
+File: am-utils.info, Node: preferred_amq_port Parameter, Next: print_pid Parameter, Prev: portmap_program Parameter, Up: Global Parameters
+
+6.5.46 preferred_amq_port Parameter
+-----------------------------------
+
+(type=numeric, default=0). Specify an alternate Port-mapper RPC port
+number for Amd's Amq service. This is used for both UDP and TCP.
+Setting this value to 0 (or not defining it) will cause Amd to select an
+arbitrary port number. Setting the Amq RPC service port to a specific
+number is useful in firewalled or NAT'ed environments, where you need to
+know which port Amd will listen on.
+
+
+File: am-utils.info, Node: print_pid Parameter, Next: print_version Parameter, Prev: preferred_amq_port Parameter, Up: Global Parameters
+
+6.5.47 print_pid Parameter
+--------------------------
+
+(type=boolean, default='no'). Same as the '-p' option to Amd. If
+'yes', Amd will print its process ID upon starting.
+
+
+File: am-utils.info, Node: print_version Parameter, Next: restart_mounts Parameter, Prev: print_pid Parameter, Up: Global Parameters
+
+6.5.48 print_version Parameter
+------------------------------
+
+(type=boolean, default='no'). Same as the '-v' option to Amd, but the
+version prints and Amd continues to run. If 'yes', Amd will print its
+version information string, which includes some configuration and
+compilation values.
+
+
+File: am-utils.info, Node: restart_mounts Parameter, Next: show_statfs_entries Parameter, Prev: print_version Parameter, Up: Global Parameters
+
+6.5.49 restart_mounts Parameter
+-------------------------------
+
+(type=boolean, default='no'). Same as the '-r' option to Amd. If 'yes'
+Amd will scan the mount table to determine which file systems are
+currently mounted. Whenever one of these would have been auto-mounted,
+Amd inherits it.
+
+
+File: am-utils.info, Node: show_statfs_entries Parameter, Next: truncate_log Parameter, Prev: restart_mounts Parameter, Up: Global Parameters
+
+6.5.50 show_statfs_entries Parameter
+------------------------------------
+
+(type=boolean), default='no'). If 'yes', then all maps which are
+browsable will also show the number of entries (keys) they have when
+df(1) runs. (This is accomplished by returning non-zero values to the
+statfs(2) system call).
+
+
+File: am-utils.info, Node: truncate_log Parameter, Next: unmount_on_exit Parameter, Prev: show_statfs_entries Parameter, Up: Global Parameters
+
+6.5.51 truncate_log Parameter
+-----------------------------
+
+(type=boolean), default='no'). If 'yes', then Amd will truncate the log
+file (if it's a regular file) on startup. This could be useful when
+conducting extensive testing on Amd maps (or Amd itself) and you don't
+want to see log data from a previous run in the same file.
+
+
+File: am-utils.info, Node: unmount_on_exit Parameter, Next: use_tcpwrappers Parameter, Prev: truncate_log Parameter, Up: Global Parameters
+
+6.5.52 unmount_on_exit Parameter
+--------------------------------
+
+(type=boolean, default='no'). If 'yes', then Amd will attempt to
+unmount all file systems which it knows about. Normally it leaves all
+(esp. NFS) mounted file systems intact. Note that Amd does not know
+about file systems mounted before it starts up, unless the
+'restart_mounts' option is used (*note restart_mounts Parameter::).
+
+
+File: am-utils.info, Node: use_tcpwrappers Parameter, Next: vendor Parameter, Prev: unmount_on_exit Parameter, Up: Global Parameters
+
+6.5.53 use_tcpwrappers Parameter
+--------------------------------
+
+(type=boolean), default='yes'). If 'yes', then amd will use the
+tcpwrappers (tcpd/librwap) library (if available) to control access to
+Amd via the '/etc/hosts.allow' and '/etc/hosts.deny' files. Amd will
+verify that the host running Amq is authorized to connect. The 'amd'
+service name must used in the '/etc/hosts.allow' and '/etc/hosts.deny'
+files. For example, to allow only localhost to connect to Amd, add this
+line to '/etc/hosts.allow':
+
+ amd: localhost
+
+ and this line to '/etc/hosts.deny':
+
+ amd: ALL
+
+ Consult the man pages for hosts_access(5) for more information on
+using the tcpwrappers access-control library.
+
+ Note that in particular, you should not configure your 'hosts.allow'
+file to spawn a command for Amd: that will cause Amd to not be able to
+'waitpid' on the child process ID of any background un/mount that Amd
+issued, resulting in a confused Amd that does not know what happened to
+those background un/mount requests.
+
+
+File: am-utils.info, Node: vendor Parameter, Prev: use_tcpwrappers Parameter, Up: Global Parameters
+
+6.5.54 vendor Parameter
+-----------------------
+
+(type=string, default to compiled in value). The name of the vendor of
+the operating system. Overrides the compiled-in vendor name. Useful
+when the compiled-in name is not desired. For example, most Intel based
+systems set the vendor name to 'unknown', but you can set it to
+'redhat'.
+
+
+File: am-utils.info, Node: Regular Map Parameters, Next: amd.conf Examples, Prev: Global Parameters, Up: Amd Configuration File
+
+6.6 Regular Map Parameters
+==========================
+
+The following parameters are applicable only to regular map sections.
+
+* Menu:
+
+* map_name Parameter::
+* tag Parameter::
+
+
+File: am-utils.info, Node: map_name Parameter, Next: tag Parameter, Prev: Regular Map Parameters, Up: Regular Map Parameters
+
+6.6.1 map_name Parameter
+------------------------
+
+(type=string, must be specified). Name of the map where the keys are
+located.
+
+
+File: am-utils.info, Node: tag Parameter, Prev: map_name Parameter, Up: Regular Map Parameters
+
+6.6.2 tag Parameter
+-------------------
+
+(type=string, default no tag). Each map entry in the configuration file
+can be tagged. If no tag is specified, that map section will always be
+processed by Amd. If it is specified, then Amd will process the map if
+the '-T' option was given to Amd, and the value given to that
+command-line option matches that in the map section.
+
+
+File: am-utils.info, Node: amd.conf Examples, Prev: Regular Map Parameters, Up: Amd Configuration File
+
+6.7 amd.conf Examples
+=====================
+
+The following is the actual 'amd.conf' file I used at the Computer
+Science Department of Columbia University.
+
+ # GLOBAL OPTIONS SECTION
+ [ global ]
+ normalize_hostnames = no
+ print_pid = no
+ #pid_file = /var/run/amd.pid
+ restart_mounts = yes
+ #unmount_on_exit = yes
+ auto_dir = /n
+ log_file = /var/log/amd
+ log_options = all
+ #debug_options = defaults
+ plock = no
+ selectors_in_defaults = yes
+ # config.guess picks up "sunos5" and I don't want to edit my maps yet
+ os = sos5
+ # if you print_version after setting up "os", it will show it.
+ print_version = no
+ map_type = file
+ search_path = /etc/amdmaps:/usr/lib/amd:/usr/local/AMD/lib
+ browsable_dirs = yes
+ fully_qualified_hosts = no
+
+ # DEFINE AN AMD MOUNT POINT
+ [ /u ]
+ map_name = amd.u
+
+ [ /proj ]
+ map_name = amd.proj
+
+ [ /src ]
+ map_name = amd.src
+
+ [ /misc ]
+ map_name = amd.misc
+
+ [ /import ]
+ map_name = amd.import
+
+ [ /tftpboot/.amd ]
+ tag = tftpboot
+ map_name = amd.tftpboot
+
+
+File: am-utils.info, Node: Run-time Administration, Next: FSinfo, Prev: Amd Configuration File, Up: Top
+
+7 Run-time Administration
+*************************
+
+* Menu:
+
+* Starting Amd::
+* Stopping Amd::
+* Restarting Amd::
+* Controlling Amd::
+
+
+File: am-utils.info, Node: Starting Amd, Next: Stopping Amd, Prev: Run-time Administration, Up: Run-time Administration
+
+7.1 Starting Amd
+================
+
+Amd is best started from '/etc/rc.local' on BSD systems, or from the
+appropriate start-level script in '/etc/init.d' on System V systems.
+
+ if [ -f /usr/local/sbin/ctl-amd ]; then
+ /usr/local/sbin/ctl-amd start; (echo -n ' amd') > /dev/console
+ fi
+
+The shell script, 'ctl-amd' is used to start, stop, or restart Amd. It
+is a relatively generic script. All options you want to set should not
+be made in this script, but rather updated in the 'amd.conf' file.
+*Note Amd Configuration File::.
+
+ If you do not wish to use an Amd configuration file, you may start
+Amd manually. For example, getting the map entries via NIS:
+
+ amd -r -l /var/log/amd `ypcat -k auto.master`
+
+
+File: am-utils.info, Node: Stopping Amd, Next: Restarting Amd, Prev: Starting Amd, Up: Run-time Administration
+
+7.2 Stopping Amd
+================
+
+Amd stops in response to two signals.
+
+'SIGTERM'
+ causes the top-level automount points to be unmounted and then Amd
+ to exit. Any automounted filesystems are left mounted. They can
+ be recovered by restarting Amd with the '-r' command line option.
+
+'SIGINT'
+ causes Amd to attempt to unmount any filesystems which it has
+ automounted, in addition to the actions of 'SIGTERM'. This signal
+ is primarily used for debugging.
+
+ Actions taken for other signals are undefined.
+
+ The easiest and safest way to stop Amd, without having to find its
+process ID by hand, is to use the 'ctl-amd' script, as with:
+
+ ctl-amd stop
+
+
+File: am-utils.info, Node: Restarting Amd, Next: Controlling Amd, Prev: Stopping Amd, Up: Run-time Administration
+
+7.3 Restarting Amd
+==================
+
+Before Amd can be started, it is vital to ensure that no other Amd
+processes are managing any of the mount points, and that the previous
+process(es) have terminated cleanly. When a terminating signal is set
+to Amd, the automounter does _not_ terminate right then. Rather, it
+starts by unmounting all of its managed mount mounts in the background,
+and then terminates. It usually takes a few seconds for this process to
+happen, but it can take an arbitrarily longer time. If two or more Amd
+processes attempt to manage the same mount point, it usually will result
+in a system lockup.
+
+ The easiest and safest way to restart Amd, without having to find its
+process ID by hand, sending it the 'SIGTERM' signal, waiting for Amd to
+die cleanly, and verifying so, is to use the 'ctl-amd' script, as with:
+
+ ctl-amd restart
+
+ The script will locate the process ID of Amd, kill it, and wait for
+it to die cleanly before starting a new instance of the automounter.
+'ctl-amd' will wait for a total of 30 seconds for Amd to die, and will
+check once every 5 seconds if it had.
+
+
+File: am-utils.info, Node: Controlling Amd, Prev: Restarting Amd, Up: Run-time Administration
+
+7.4 Controlling Amd
+===================
+
+It is sometimes desirable or necessary to exercise external control over
+some of Amd's internal state. To support this requirement, Amd
+implements an RPC interface which is used by the "Amq" program. A
+variety of information is available.
+
+ Amq generally applies an operation, specified by a single letter
+option, to a list of mount points. The default operation is to obtain
+statistics about each mount point. This is similar to the output shown
+above but includes information about the number and type of accesses to
+each mount point.
+
+* Menu:
+
+* Amq default:: Default command behavior.
+* Amq -f option:: Flushing the map cache.
+* Amq -h option:: Controlling a non-local host.
+* Amq -H option:: Print help message.
+* Amq -l option:: Controlling the log file.
+* Amq -m option:: Obtaining mount statistics.
+* Amq -p option:: Getting Amd's process ID.
+* Amq -P option:: Contacting alternate Amd processes.
+* Amq -q option:: Suppress synchronous unmounting errors.
+* Amq -s option:: Obtaining global statistics.
+* Amq -T option:: Use TCP transport.
+* Amq -U option:: Use UDP transport.
+* Amq -u option:: Forcing volumes to time out.
+* Amq -v option:: Version information.
+* Amq -w option:: Print Amd current working directory.
+* Other Amq options:: Three other special options.
+
+
+File: am-utils.info, Node: Amq default, Next: Amq -f option, Prev: Controlling Amd, Up: Controlling Amd
+
+7.4.1 Amq default information
+-----------------------------
+
+With no arguments, "Amq" obtains a brief list of all existing mounts
+created by Amd. This is different from the list displayed by df(1)
+since the latter only includes system mount points.
+
+The output from this option includes the following information:
+
+ * the automount point,
+ * the filesystem type,
+ * the mount map or mount information,
+ * the internal, or system mount point.
+
+For example:
+
+ / root "root" sky:(pid75)
+ /homes toplvl /usr/local/etc/amd.homes /homes
+ /home toplvl /usr/local/etc/amd.home /home
+ /homes/jsp nfs charm:/home/charm /a/charm/home/charm/jsp
+ /homes/phjk nfs toytown:/home/toytown /a/toytown/home/toytown/ai/phjk
+
+If an argument is given then statistics for that volume name will be
+output. For example:
+
+ What Uid Getattr Lookup RdDir RdLnk Statfs Mounted@
+ /homes 0 1196 512 22 0 30 90/09/14 12:32:55
+ /homes/jsp 0 0 0 0 1180 0 90/10/13 12:56:58
+
+'What'
+ the volume name.
+
+'Uid'
+ ignored.
+
+'Getattr'
+ the count of NFS "getattr" requests on this node. This should only
+ be non-zero for directory nodes.
+
+'Lookup'
+ the count of NFS "lookup" requests on this node. This should only
+ be non-zero for directory nodes.
+
+'RdDir'
+ the count of NFS "readdir" requests on this node. This should only
+ be non-zero for directory nodes.
+
+'RdLnk'
+ the count of NFS "readlink" requests on this node. This should be
+ zero for directory nodes.
+
+'Statfs'
+ the count of NFS "statfs" requests on this node. This should only
+ be non-zero for top-level automount points.
+
+'Mounted@'
+ the date and time the volume name was first referenced.
+
+
+File: am-utils.info, Node: Amq -f option, Next: Amq -h option, Prev: Amq default, Up: Controlling Amd
+
+7.4.2 Amq '-f' option
+---------------------
+
+The '-f' option causes Amd to flush the internal mount map cache. This
+is useful for example in Hesiod maps since Amd will not automatically
+notice when they have been updated. The map cache can also be
+synchronized with the map source by using the 'sync' option (*note
+Automount Filesystem::).
+
+
+File: am-utils.info, Node: Amq -h option, Next: Amq -H option, Prev: Amq -f option, Up: Controlling Amd
+
+7.4.3 Amq '-h' option
+---------------------
+
+By default the local host is used. In an HP-UX cluster the root server
+is used since that is the only place in the cluster where Amd will be
+running. To query Amd on another host the '-h' option should be used.
+
+
+File: am-utils.info, Node: Amq -H option, Next: Amq -l option, Prev: Amq -h option, Up: Controlling Amd
+
+7.4.4 Amq '-H' option
+---------------------
+
+Print a brief help and usage string.
+
+
+File: am-utils.info, Node: Amq -l option, Next: Amq -m option, Prev: Amq -H option, Up: Controlling Amd
+
+7.4.5 Amq '-l' option
+---------------------
+
+Tell Amd to use log_file as the log file name. For security reasons,
+this _must_ be the same log file which Amd used when started. This
+option is therefore only useful to refresh Amd's open file handle on the
+log file, so that it can be rotated and compressed via daily cron jobs.
+
+
+File: am-utils.info, Node: Amq -m option, Next: Amq -p option, Prev: Amq -l option, Up: Controlling Amd
+
+7.4.6 Amq '-m' option
+---------------------
+
+The '-m' option displays similar information about mounted filesystems,
+rather than automount points. The output includes the following
+information:
+
+ * the mount information,
+ * the mount point,
+ * the filesystem type,
+ * the number of references to this filesystem,
+ * the server hostname,
+ * the state of the file server,
+ * any error which has occurred.
+
+ For example:
+
+ "root" truth:(pid602) root 1 localhost is up
+ hesiod.home /home toplvl 1 localhost is up
+ hesiod.vol /vol toplvl 1 localhost is up
+ hesiod.homes /homes toplvl 1 localhost is up
+ amy:/home/amy /a/amy/home/amy nfs 5 amy is up
+ swan:/home/swan /a/swan/home/swan nfs 0 swan is up (Permission denied)
+ ex:/home/ex /a/ex/home/ex nfs 0 ex is down
+
+ When the reference count is zero the filesystem is not mounted but
+the mount point and server information is still being maintained by Amd.
+
+
+File: am-utils.info, Node: Amq -p option, Next: Amq -P option, Prev: Amq -m option, Up: Controlling Amd
+
+7.4.7 Amq '-p' option
+---------------------
+
+Return the process ID of the remote or locally running Amd. Useful when
+you need to send a signal to the local Amd process, and would rather not
+have to search through the process table. This option is used in the
+'ctl-amd' script.
+
+
+File: am-utils.info, Node: Amq -P option, Next: Amq -q option, Prev: Amq -p option, Up: Controlling Amd
+
+7.4.8 Amq '-P' option
+---------------------
+
+Contact an alternate running Amd that had registered itself on a
+different RPC PROGRAM_NUMBER and apply all other operations to that
+instance of the automounter. This is useful when you run multiple
+copies of Amd, and need to manage each one separately. If not
+specified, Amq will use the default program number for Amd, 300019. For
+security reasons, the only alternate program numbers Amd can use range
+from 300019 to 300029, inclusive.
+
+ For example, to kill an alternate running Amd:
+
+ kill `amq -p -P 300020`
+
+
+File: am-utils.info, Node: Amq -q option, Next: Amq -s option, Prev: Amq -P option, Up: Controlling Amd
+
+7.4.9 Amq '-q' option
+---------------------
+
+Suppress any error messages produced when a synchronous unmount fails.
+See *note Amq -u option::.
+
+
+File: am-utils.info, Node: Amq -s option, Next: Amq -T option, Prev: Amq -q option, Up: Controlling Amd
+
+7.4.10 Amq '-s' option
+----------------------
+
+The '-s' option displays global statistics. If any other options are
+specified or any filesystems named then this option is ignored. For
+example:
+
+ requests stale mount mount unmount
+ deferred fhandles ok failed failed
+ 1054 1 487 290 7017
+
+'Deferred requests'
+ are those for which an immediate reply could not be constructed.
+ For example, this would happen if a background mount was required.
+
+'Stale filehandles'
+ counts the number of times the kernel passes a stale filehandle to
+ Amd. Large numbers indicate problems.
+
+'Mount ok'
+ counts the number of automounts which were successful.
+
+'Mount failed'
+ counts the number of automounts which failed.
+
+'Unmount failed'
+ counts the number of times a filesystem could not be unmounted.
+ Very large numbers here indicate that the time between unmount
+ attempts should be increased.
+
+
+File: am-utils.info, Node: Amq -T option, Next: Amq -U option, Prev: Amq -s option, Up: Controlling Amd
+
+7.4.11 Amq '-T' option
+----------------------
+
+The '-T' option causes the Amq to contact Amd using the TCP transport
+only (connection oriented). Normally, Amq will use TCP first, and if
+that failed, will try UDP.
+
+
+File: am-utils.info, Node: Amq -U option, Next: Amq -u option, Prev: Amq -T option, Up: Controlling Amd
+
+7.4.12 Amq '-U' option
+----------------------
+
+The '-U' option causes the Amq to contact Amd using the UDP transport
+only (connectionless). Normally, Amq will use TCP first, and if that
+failed, will try UDP.
+
+
+File: am-utils.info, Node: Amq -u option, Next: Amq -v option, Prev: Amq -U option, Up: Controlling Amd
+
+7.4.13 Amq '-u' option
+----------------------
+
+The '-u' option causes the time-to-live interval of the named mount
+points to be expired, thus causing an unmount attempt. This is the only
+safe way to unmount an automounted filesystem. If '-u' is repeated,
+then Amd will attempt to unmount the filesystem synchronously. This
+makes things like
+
+ amq -uu /t/cd0d && eject cd0
+
+work as expected. Any error messages this might produce can be
+suppressed with the '-q' option. See *note Amq -q option::.
+
+
+File: am-utils.info, Node: Amq -v option, Next: Amq -w option, Prev: Amq -u option, Up: Controlling Amd
+
+7.4.14 Amq '-v' option
+----------------------
+
+The '-v' option displays the version of Amd in a similar way to Amd's
+'-v' option.
+
+
+File: am-utils.info, Node: Amq -w option, Next: Other Amq options, Prev: Amq -v option, Up: Controlling Amd
+
+7.4.15 Amq '-w' option
+----------------------
+
+The '-w' option translates a full pathname as returned by getpwd(3) into
+a short Amd pathname that goes through its mount points. This option
+requires that Amd is running.
+
+
+File: am-utils.info, Node: Other Amq options, Prev: Amq -w option, Up: Controlling Amd
+
+7.4.16 Other Amq options
+------------------------
+
+Two other operations are implemented. These modify the state of Amd as
+a whole, rather than any particular filesystem. The '-x' and '-D'
+options have exactly the same effect as Amd's corresponding command line
+options.
+
+ When Amd receives the '-x' flag, it disallows turning off the 'fatal'
+or 'error' flags. Both are on by default. They are mandatory so that
+Amd could report important errors, including errors relating to turning
+flags on/off.
+
+
+File: am-utils.info, Node: FSinfo, Next: Hlfsd, Prev: Run-time Administration, Up: Top
+
+8 FSinfo
+********
+
+XXX: this chapter should be reviewed by someone knowledgeable with
+fsinfo.
+
+* Menu:
+
+* FSinfo Overview:: Introduction to FSinfo.
+* Using FSinfo:: Basic concepts.
+* FSinfo Grammar:: Language syntax, semantics and examples.
+* FSinfo host definitions:: Defining a new host.
+* FSinfo host attributes:: Definable host attributes.
+* FSinfo filesystems:: Defining locally attached filesystems.
+* FSinfo static mounts:: Defining additional static mounts.
+* FSinfo automount definitions::
+* FSinfo Command Line Options::
+* FSinfo errors::
+
+
+File: am-utils.info, Node: FSinfo Overview, Next: Using FSinfo, Prev: FSinfo, Up: FSinfo
+
+8.1 FSinfo overview
+===================
+
+FSinfo is a filesystem management tool. It has been designed to work
+with Amd to help system administrators keep track of the ever increasing
+filesystem namespace under their control.
+
+ The purpose of FSinfo is to generate all the important standard
+filesystem data files from a single set of input data. Starting with a
+single data source guarantees that all the generated files are
+self-consistent. One of the possible output data formats is a set of
+Amd maps which can be used among the set of hosts described in the input
+data.
+
+ FSinfo implements a declarative language. This language is
+specifically designed for describing filesystem namespace and physical
+layouts. The basic declaration defines a mounted filesystem including
+its device name, mount point, and all the volumes and access
+permissions. FSinfo reads this information and builds an internal map
+of the entire network of hosts. Using this map, many different data
+formats can be produced including '/etc/fstab', '/etc/exports', Amd
+mount maps and '/etc/bootparams'.
+
+
+File: am-utils.info, Node: Using FSinfo, Next: FSinfo Grammar, Prev: FSinfo Overview, Up: FSinfo
+
+8.2 Using FSinfo
+================
+
+The basic strategy when using FSinfo is to gather all the information
+about all disks on all machines into one set of declarations. For each
+machine being managed, the following data is required:
+
+ * Hostname
+ * List of all filesystems and, optionally, their mount points.
+ * Names of volumes stored on each filesystem.
+ * NFS export information for each volume.
+ * The list of static filesystem mounts.
+
+ The following information can also be entered into the same
+configuration files so that all data can be kept in one place.
+
+ * List of network interfaces
+ * IP address of each interface
+ * Hardware address of each interface
+ * Dumpset to which each filesystem belongs
+ * and more ...
+
+ To generate Amd mount maps, the automount tree must also be defined
+(*note FSinfo automount definitions::). This will have been designed at
+the time the volume names were allocated. Some volume names will not be
+automounted, so FSinfo needs an explicit list of which volumes should be
+automounted.
+
+ Hostnames are required at several places in the FSinfo language. It
+is important to stick to either fully qualified names or unqualified
+names. Using a mixture of the two will inevitably result in confusion.
+
+ Sometimes volumes need to be referenced which are not defined in the
+set of hosts being managed with FSinfo. The required action is to add a
+dummy set of definitions for the host and volume names required. Since
+the files generated for those particular hosts will not be used on them,
+the exact values used is not critical.
+
+
+File: am-utils.info, Node: FSinfo Grammar, Next: FSinfo host definitions, Prev: Using FSinfo, Up: FSinfo
+
+8.3 FSinfo grammar
+==================
+
+FSinfo has a relatively simple grammar. Distinct syntactic constructs
+exist for each of the different types of data, though they share a
+common flavor. Several conventions are used in the grammar fragments
+below.
+
+ The notation, list(xxx), indicates a list of zero or more xxx's. The
+notation, opt(xxx), indicates zero or one xxx. Items in double quotes,
+eg "host", represent input tokens. Items in angle brackets, eg
+<HOSTNAME>, represent strings in the input. Strings need not be in
+double quotes, except to differentiate them from reserved words. Quoted
+strings may include the usual set of C "\" escape sequences with one
+exception: a backslash-newline-whitespace sequence is squashed into a
+single space character. To defeat this feature, put a further backslash
+at the start of the second line.
+
+ At the outermost level of the grammar, the input consists of a
+sequence of host and automount declarations. These declarations are all
+parsed before they are analyzed. This means they can appear in any
+order and cyclic host references are possible.
+
+ fsinfo : list(fsinfo_attr) ;
+
+ fsinfo_attr : host | automount ;
+
+* Menu:
+
+* FSinfo host definitions::
+* FSinfo automount definitions::
+
+
+File: am-utils.info, Node: FSinfo host definitions, Next: FSinfo host attributes, Prev: FSinfo Grammar, Up: FSinfo
+
+8.4 FSinfo host definitions
+===========================
+
+A host declaration consists of three parts: a set of machine attribute
+data, a list of filesystems physically attached to the machine, and a
+list of additional statically mounted filesystems.
+
+ host : "host" host_data list(filesystem) list(mount) ;
+
+ Each host must be declared in this way exactly once. Such things as
+the hardware address, the architecture and operating system types and
+the cluster name are all specified within the "host data".
+
+ All the disks the machine has should then be described in the "list
+of filesystems". When describing disks, you can specify what "volname"
+the disk/partition should have and all such entries are built up into a
+dictionary which can then be used for building the automounter maps.
+
+ The "list of mounts" specifies all the filesystems that should be
+statically mounted on the machine.
+
+* Menu:
+
+* FSinfo host attributes::
+* FSinfo filesystems::
+* FSinfo static mounts::
+
+
+File: am-utils.info, Node: FSinfo host attributes, Next: FSinfo filesystems, Prev: FSinfo host definitions, Up: FSinfo host definitions
+
+8.5 FSinfo host attributes
+==========================
+
+The host data, "host_data", always includes the "hostname". In
+addition, several other host attributes can be given.
+
+ host_data : <HOSTNAME>
+ | "{" list(host_attrs) "}" <HOSTNAME>
+ ;
+
+ host_attrs : host_attr "=" <STRING>
+ | netif
+ ;
+
+ host_attr : "config"
+ | "arch"
+ | "os"
+ | "cluster"
+ ;
+
+ The "hostname" is, typically, the fully qualified hostname of the
+machine.
+
+ Examples:
+
+ host dylan.doc.ic.ac.uk
+
+ host {
+ os = hpux
+ arch = hp300
+ } dougal.doc.ic.ac.uk
+
+ The options that can be given as host attributes are shown below.
+
+* Menu:
+
+* FSinfo netif Option:: FSinfo host netif.
+* FSinfo config Option:: FSinfo host config.
+* FSinfo arch Option:: FSinfo host arch.
+* FSinfo os Option:: FSinfo host os.
+* FSinfo cluster Option:: FSinfo host cluster.
+
+
+File: am-utils.info, Node: FSinfo netif Option, Next: FSinfo config Option, Up: FSinfo host attributes
+
+8.5.1 netif Option
+------------------
+
+This defines the set of network interfaces configured on the machine.
+The interface attributes collected by FSinfo are the IP address, subnet
+mask and hardware address. Multiple interfaces may be defined for hosts
+with several interfaces by an entry for each interface. The values
+given are sanity checked, but are currently unused for anything else.
+
+ netif : "netif" <STRING> "{" list(netif_attrs) "}" ;
+
+ netif_attrs : netif_attr "=" <STRING> ;
+
+ netif_attr : "inaddr" | "netmask" | "hwaddr" ;
+
+ Examples:
+
+ netif ie0 {
+ inaddr = 129.31.81.37
+ netmask = 0xfffffe00
+ hwaddr = "08:00:20:01:a6:a5"
+ }
+
+ netif ec0 { }
+
+
+File: am-utils.info, Node: FSinfo config Option, Next: FSinfo arch Option, Prev: FSinfo netif Option, Up: FSinfo host attributes
+
+8.5.2 config Option
+-------------------
+
+This option allows you to specify configuration variables for the
+startup scripts ('rc' scripts). A simple string should immediately
+follow the keyword.
+
+ Example:
+
+ config "NFS_SERVER=true"
+ config "ZEPHYR=true"
+
+ This option is currently unsupported.
+
+
+File: am-utils.info, Node: FSinfo arch Option, Next: FSinfo os Option, Prev: FSinfo config Option, Up: FSinfo host attributes
+
+8.5.3 arch Option
+-----------------
+
+This defines the architecture of the machine. For example:
+
+ arch = hp300
+
+ This is intended to be of use when building architecture specific
+mountmaps, however, the option is currently unsupported.
+
+
+File: am-utils.info, Node: FSinfo os Option, Next: FSinfo cluster Option, Prev: FSinfo arch Option, Up: FSinfo host attributes
+
+8.5.4 os Option
+---------------
+
+This defines the operating system type of the host. For example:
+
+ os = hpux
+
+ This information is used when creating the 'fstab' files, for example
+in choosing which format to use for the 'fstab' entries within the file.
+
+
+File: am-utils.info, Node: FSinfo cluster Option, Prev: FSinfo os Option, Up: FSinfo host attributes
+
+8.5.5 cluster Option
+--------------------
+
+This is used for specifying in which cluster the machine belongs. For
+example:
+
+ cluster = "theory"
+
+ The cluster is intended to be used when generating the automount
+maps, although it is currently unsupported.
+
+
+File: am-utils.info, Node: FSinfo filesystems, Next: FSinfo static mounts, Prev: FSinfo host attributes, Up: FSinfo host definitions
+
+8.6 FSinfo filesystems
+======================
+
+The list of physically attached filesystems follows the machine
+attributes. These should define all the filesystems available from this
+machine, whether exported or not. In addition to the device name,
+filesystems have several attributes, such as filesystem type, mount
+options, and 'fsck' pass number which are needed to generate 'fstab'
+entries.
+
+ filesystem : "fs" <DEVICE> "{" list(fs_data) "}" ;
+
+ fs_data : fs_data_attr "=" <STRING>
+ | mount
+ ;
+
+ fs_data_attr
+ : "fstype" | "opts" | "passno"
+ | "freq" | "dumpset" | "log"
+ ;
+
+ Here, <DEVICE> is the device name of the disk (for example,
+'/dev/dsk/2s0'). The device name is used for building the mount maps
+and for the 'fstab' file. The attributes that can be specified are
+shown in the following section.
+
+ The FSinfo configuration file for 'dylan.doc.ic.ac.uk' is listed
+below.
+
+ host dylan.doc.ic.ac.uk
+
+ fs /dev/dsk/0s0 {
+ fstype = swap
+ }
+
+ fs /dev/dsk/0s0 {
+ fstype = hfs
+ opts = rw,noquota,grpid
+ passno = 0;
+ freq = 1;
+ mount / { }
+ }
+
+ fs /dev/dsk/1s0 {
+ fstype = hfs
+ opts = defaults
+ passno = 1;
+ freq = 1;
+ mount /usr {
+ local {
+ exportfs "dougal eden dylan zebedee brian"
+ volname /nfs/hp300/local
+ }
+ }
+ }
+
+ fs /dev/dsk/2s0 {
+ fstype = hfs
+ opts = defaults
+ passno = 1;
+ freq = 1;
+ mount default {
+ exportfs "toytown_clients hangers_on"
+ volname /home/dylan/dk2
+ }
+ }
+
+ fs /dev/dsk/3s0 {
+ fstype = hfs
+ opts = defaults
+ passno = 1;
+ freq = 1;
+ mount default {
+ exportfs "toytown_clients hangers_on"
+ volname /home/dylan/dk3
+ }
+ }
+
+ fs /dev/dsk/5s0 {
+ fstype = hfs
+ opts = defaults
+ passno = 1;
+ freq = 1;
+ mount default {
+ exportfs "toytown_clients hangers_on"
+ volname /home/dylan/dk5
+ }
+ }
+
+* Menu:
+
+* FSinfo fstype Option:: FSinfo filesystems fstype.
+* FSinfo opts Option:: FSinfo filesystems opts.
+* FSinfo passno Option:: FSinfo filesystems passno.
+* FSinfo freq Option:: FSinfo filesystems freq.
+* FSinfo mount Option:: FSinfo filesystems mount.
+* FSinfo dumpset Option:: FSinfo filesystems dumpset.
+* FSinfo log Option:: FSinfo filesystems log.
+
+
+File: am-utils.info, Node: FSinfo fstype Option, Next: FSinfo opts Option, Up: FSinfo filesystems
+
+8.6.1 fstype Option
+-------------------
+
+This specifies the type of filesystem being declared and will be placed
+into the 'fstab' file as is. The value of this option will be handed to
+'mount' as the filesystem type--it should have such values as '4.2',
+'nfs' or 'swap'. The value is not examined for correctness.
+
+ There is one special case. If the filesystem type is specified as
+'export' then the filesystem information will not be added to the host's
+'fstab' information, but it will still be visible on the network. This
+is useful for defining hosts which contain referenced volumes but which
+are not under full control of FSinfo.
+
+ Example:
+
+ fstype = swap
+
+
+File: am-utils.info, Node: FSinfo opts Option, Next: FSinfo passno Option, Prev: FSinfo fstype Option, Up: FSinfo filesystems
+
+8.6.2 opts Option
+-----------------
+
+This defines any options that should be given to mount(8) in the 'fstab'
+file. For example:
+
+ opts = rw,nosuid,grpid
+
+
+File: am-utils.info, Node: FSinfo passno Option, Next: FSinfo freq Option, Prev: FSinfo opts Option, Up: FSinfo filesystems
+
+8.6.3 passno Option
+-------------------
+
+This defines the fsck(8) pass number in which to check the filesystem.
+This value will be placed into the 'fstab' file.
+
+ Example:
+
+ passno = 1
+
+
+File: am-utils.info, Node: FSinfo freq Option, Next: FSinfo mount Option, Prev: FSinfo passno Option, Up: FSinfo filesystems
+
+8.6.4 freq Option
+-----------------
+
+This defines the interval (in days) between dumps. The value is placed
+as is into the 'fstab' file.
+
+ Example:
+
+ freq = 3
+
+
+File: am-utils.info, Node: FSinfo mount Option, Next: FSinfo dumpset Option, Prev: FSinfo freq Option, Up: FSinfo filesystems
+
+8.6.5 mount Option
+------------------
+
+This defines the mountpoint at which to place the filesystem. If the
+mountpoint of the filesystem is specified as 'default', then the
+filesystem will be mounted in the automounter's tree under its volume
+name and the mount will automatically be inherited by the automounter.
+
+ Following the mountpoint, namespace information for the filesystem
+may be described. The options that can be given here are 'exportfs',
+'volname' and 'sel'.
+
+ The format is:
+
+ mount : "mount" vol_tree ;
+
+ vol_tree : list(vol_tree_attr) ;
+
+ vol_tree_attr
+ : <STRING> "{" list(vol_tree_info) vol_tree "}" ;
+
+ vol_tree_info
+ : "exportfs" <EXPORT-DATA>
+ | "volname" <VOLNAME>
+ | "sel" <SELECTOR-LIST>
+ ;
+
+ Example:
+
+ mount default {
+ exportfs "dylan dougal florence zebedee"
+ volname /vol/andrew
+ }
+
+ In the above example, the filesystem currently being declared will
+have an entry placed into the 'exports' file allowing the filesystem to
+be exported to the machines 'dylan', 'dougal', 'florence' and 'zebedee'.
+The volume name by which the filesystem will be referred to remotely, is
+'/vol/andrew'. By declaring the mountpoint to be 'default', the
+filesystem will be mounted on the local machine in the automounter tree,
+where Amd will automatically inherit the mount as '/vol/andrew'.
+
+'exportfs'
+ a string defining which machines the filesystem may be exported to.
+ This is copied, as is, into the 'exports' file--no sanity checking
+ is performed on this string.
+
+'volname'
+ a string which declares the remote name by which to reference the
+ filesystem. The string is entered into a dictionary and allows you
+ to refer to this filesystem in other places by this volume name.
+
+'sel'
+ a string which is placed into the automounter maps as a selector
+ for the filesystem.
+
+
+File: am-utils.info, Node: FSinfo dumpset Option, Next: FSinfo log Option, Prev: FSinfo mount Option, Up: FSinfo filesystems
+
+8.6.6 dumpset Option
+--------------------
+
+This provides support for Imperial College's local file backup tools and
+is not documented further here.
+
+
+File: am-utils.info, Node: FSinfo log Option, Prev: FSinfo dumpset Option, Up: FSinfo filesystems
+
+8.6.7 log Option
+----------------
+
+Specifies the log device for the current filesystem. This is ignored if
+not required by the particular filesystem type.
+
+
+File: am-utils.info, Node: FSinfo static mounts, Next: FSinfo automount definitions, Prev: FSinfo filesystems, Up: FSinfo host definitions
+
+8.7 FSinfo static mounts
+========================
+
+Each host may also have a number of statically mounted filesystems. For
+example, the host may be a diskless workstation in which case it will
+have no 'fs' declarations. In this case the 'mount' declaration is used
+to determine from where its filesystems will be mounted. In addition to
+being added to the 'fstab' file, this information can also be used to
+generate a suitable 'bootparams' file.
+
+ mount : "mount" <VOLNAME> list(localinfo) ;
+
+ localinfo : localinfo_attr <STRING> ;
+
+ localinfo_attr
+ : "as"
+ | "from"
+ | "fstype"
+ | "opts"
+ ;
+
+ The filesystem specified to be mounted will be searched for in the
+dictionary of volume names built when scanning the list of hosts'
+definitions.
+
+ The attributes have the following semantics:
+'from MACHINE'
+ mount the filesystem from the machine with the hostname of
+ "machine".
+
+'as MOUNTPOINT'
+ mount the filesystem locally as the name given, in case this is
+ different from the advertised volume name of the filesystem.
+
+'opts OPTIONS'
+ native mount(8) options.
+
+'fstype TYPE'
+ type of filesystem to be mounted.
+
+ An example:
+
+ mount /export/exec/hp300/local as /usr/local
+
+ If the mountpoint specified is either '/' or 'swap', the machine will
+be considered to be booting off the net and this will be noted for use
+in generating a 'bootparams' file for the host which owns the
+filesystems.
+
+
+File: am-utils.info, Node: FSinfo automount definitions, Next: FSinfo Command Line Options, Prev: FSinfo static mounts, Up: FSinfo
+
+8.8 Defining an Amd Mount Map in FSinfo
+=======================================
+
+The maps used by Amd can be constructed from FSinfo by defining all the
+automount trees. FSinfo takes all the definitions found and builds one
+map for each top level tree.
+
+ The automount tree is usually defined last. A single automount
+configuration will usually apply to an entire management domain. One
+'automount' declaration is needed for each Amd automount point. FSinfo
+determines whether the automount point is "direct" (*note Direct
+Automount Filesystem::) or "indirect" (*note Top-level Filesystem::).
+Direct automount points are distinguished by the fact that there is no
+underlying "automount_tree".
+
+ automount : "automount" opt(auto_opts) automount_tree ;
+
+ auto_opts : "opts" <MOUNT-OPTIONS> ;
+
+ automount_tree
+ : list(automount_attr)
+ ;
+
+ automount_attr
+ : <STRING> "=" <VOLNAME>
+ | <STRING> "->" <SYMLINK>
+ | <STRING> "{" automount_tree "}"
+ ;
+
+ If <MOUNT-OPTIONS> is given, then it is the string to be placed in
+the maps for Amd for the 'opts' option.
+
+ A "map" is typically a tree of filesystems, for example 'home'
+normally contains a tree of filesystems representing other machines in
+the network.
+
+ A map can either be given as a name representing an already defined
+volume name, or it can be a tree. A tree is represented by placing
+braces after the name. For example, to define a tree '/vol', the
+following map would be defined:
+
+ automount /vol { }
+
+ Within a tree, the only items that can appear are more maps. For
+example:
+
+ automount /vol {
+ andrew { }
+ X11 { }
+ }
+
+ In this case, FSinfo will look for volumes named '/vol/andrew' and
+'/vol/X11' and a map entry will be generated for each. If the volumes
+are defined more than once, then FSinfo will generate a series of
+alternate entries for them in the maps.
+
+ Instead of a tree, either a link (NAME '->' DESTINATION) or a
+reference can be specified (NAME '=' DESTINATION). A link creates a
+symbolic link to the string specified, without further processing the
+entry. A reference will examine the destination filesystem and optimize
+the reference. For example, to create an entry for 'njw' in the
+'/homes' map, either of the two forms can be used:
+
+ automount /homes {
+ njw -> /home/dylan/njw
+ }
+
+ or
+
+ automount /homes {
+ njw = /home/dylan/njw
+ }
+
+ In the first example, when '/homes/njw' is referenced from Amd, a
+link will be created leading to '/home/dylan/njw' and the automounter
+will be referenced a second time to resolve this filename. The map
+entry would be:
+
+ njw type:=link;fs:=/home/dylan/njw
+
+ In the second example, the destination directory is analyzed and
+found to be in the filesystem '/home/dylan' which has previously been
+defined in the maps. Hence the map entry will look like:
+
+ njw rhost:=dylan;rfs:=/home/dylan;sublink:=njw
+
+ Creating only one symbolic link, and one access to Amd.
+
+
+File: am-utils.info, Node: FSinfo Command Line Options, Next: FSinfo errors, Prev: FSinfo automount definitions, Up: FSinfo
+
+8.9 FSinfo Command Line Options
+===============================
+
+FSinfo is started from the command line by using the command:
+
+ fsinfo [options] files ...
+
+ The input to FSinfo is a single set of definitions of machines and
+automount maps. If multiple files are given on the command-line, then
+the files are concatenated together to form the input source. The files
+are passed individually through the C pre-processor before being parsed.
+
+ Several options define a prefix for the name of an output file. If
+the prefix is not specified no output of that type is produced. The
+suffix used will correspond either to the hostname to which a file
+belongs, or to the type of output if only one file is produced.
+Dumpsets and the 'bootparams' file are in the latter class. To put the
+output into a subdirectory simply put a '/' at the end of the prefix,
+making sure that the directory has already been made before running
+Fsinfo.
+
+* Menu:
+
+* -a FSinfo Option:: Amd automount directory:
+* -b FSinfo Option:: Prefix for bootparams files.
+* -d FSinfo Option:: Prefix for dumpset data files.
+* -e FSinfo Option:: Prefix for exports files.
+* -f FSinfo Option:: Prefix for fstab files.
+* -h FSinfo Option:: Local hostname.
+* -m FSinfo Option:: Prefix for automount maps.
+* -q FSinfo Option:: Ultra quiet mode.
+* -v FSinfo Option:: Verbose mode.
+* -I FSinfo Option:: Define new #include directory.
+* -D-FSinfo Option:: Define macro.
+* -U FSinfo Option:: Undefine macro.
+
+
+File: am-utils.info, Node: -a FSinfo Option, Next: -b FSinfo Option, Prev: FSinfo Command Line Options, Up: FSinfo Command Line Options
+
+8.9.1 '-a' AUTODIR
+------------------
+
+Specifies the directory name in which to place the automounter's
+mountpoints. This defaults to '/a'. Some sites have the autodir set to
+be '/amd', and this would be achieved by:
+
+ fsinfo -a /amd ...
+
+
+File: am-utils.info, Node: -b FSinfo Option, Next: -d FSinfo Option, Prev: -a FSinfo Option, Up: FSinfo Command Line Options
+
+8.9.2 '-b' BOOTPARAMS
+---------------------
+
+This specifies the prefix for the 'bootparams' filename. If it is not
+given, then the file will not be generated. The 'bootparams' file will
+be constructed for the destination machine and will be placed into a
+file named 'bootparams' and prefixed by this string. The file generated
+contains a list of entries describing each diskless client that can boot
+from the destination machine.
+
+ As an example, to create a 'bootparams' file in the directory
+'generic', the following would be used:
+
+ fsinfo -b generic/ ...
+
+
+File: am-utils.info, Node: -d FSinfo Option, Next: -e FSinfo Option, Prev: -b FSinfo Option, Up: FSinfo Command Line Options
+
+8.9.3 '-d' DUMPSETS
+-------------------
+
+This specifies the prefix for the 'dumpsets' file. If it is not
+specified, then the file will not be generated. The file will be for
+the destination machine and will be placed into a filename 'dumpsets',
+prefixed by this string. The 'dumpsets' file is for use by Imperial
+College's local backup system.
+
+ For example, to create a 'dumpsets' file in the directory 'generic',
+then you would use the following:
+
+ fsinfo -d generic/ ...
+
+
+File: am-utils.info, Node: -e FSinfo Option, Next: -f FSinfo Option, Prev: -d FSinfo Option, Up: FSinfo Command Line Options
+
+8.9.4 '-e' EXPORTFS
+-------------------
+
+Defines the prefix for the 'exports' files. If it is not given, then
+the file will not be generated. For each machine defined in the
+configuration files as having disks, an 'exports' file is constructed
+and given a filename determined by the name of the machine, prefixed
+with this string. If a machine is defined as diskless, then no
+'exports' file will be created for it. The files contain entries for
+directories on the machine that may be exported to clients.
+
+ Example: To create the 'exports' files for each diskfull machine and
+place them into the directory 'exports':
+
+ fsinfo -e exports/ ...
+
+
+File: am-utils.info, Node: -f FSinfo Option, Next: -h FSinfo Option, Prev: -e FSinfo Option, Up: FSinfo Command Line Options
+
+8.9.5 '-f' FSTAB
+----------------
+
+This defines the prefix for the 'fstab' files. The files will only be
+created if this prefix is defined. For each machine defined in the
+configuration files, a 'fstab' file is created with the filename
+determined by prefixing this string with the name of the machine. These
+files contain entries for filesystems and partitions to mount at boot
+time.
+
+ Example, to create the files in the directory 'fstabs':
+
+ fsinfo -f fstabs/ ...
+
+
+File: am-utils.info, Node: -h FSinfo Option, Next: -m FSinfo Option, Prev: -f FSinfo Option, Up: FSinfo Command Line Options
+
+8.9.6 '-h' HOSTNAME
+-------------------
+
+Defines the hostname of the destination machine to process for. If this
+is not specified, it defaults to the local machine name, as returned by
+gethostname(2).
+
+ Example:
+
+ fsinfo -h dylan.doc.ic.ac.uk ...
+
+
+File: am-utils.info, Node: -m FSinfo Option, Next: -q FSinfo Option, Prev: -h FSinfo Option, Up: FSinfo Command Line Options
+
+8.9.7 '-m' MOUNT-MAPS
+---------------------
+
+Defines the prefix for the automounter files. The maps will only be
+produced if this prefix is defined. The mount maps suitable for the
+network defined by the configuration files will be placed into files
+with names calculated by prefixing this string to the name of each map.
+
+ For example, to create the automounter maps and place them in the
+directory 'automaps':
+
+ fsinfo -m automaps/ ...
+
+
+File: am-utils.info, Node: -q FSinfo Option, Next: -v FSinfo Option, Prev: -m FSinfo Option, Up: FSinfo Command Line Options
+
+8.9.8 '-q'
+----------
+
+Selects quiet mode. FSinfo suppress the "running commentary" and only
+outputs any error messages which are generated.
+
+
+File: am-utils.info, Node: -v FSinfo Option, Next: -D-FSinfo Option, Prev: -q FSinfo Option, Up: FSinfo Command Line Options
+
+8.9.9 '-v'
+----------
+
+Selects verbose mode. When this is activated, the program will display
+more messages, and display all the information discovered when
+performing the semantic analysis phase. Each verbose message is output
+to 'stdout' on a line starting with a '#' character.
+
+
+File: am-utils.info, Node: -D-FSinfo Option, Next: -I FSinfo Option, Prev: -v FSinfo Option, Up: FSinfo Command Line Options
+
+8.9.10 '-D' NAME[=defn]
+-----------------------
+
+Defines a symbol "name" for the preprocessor when reading the
+configuration files. Equivalent to '#define' directive.
+
+
+File: am-utils.info, Node: -I FSinfo Option, Next: -U FSinfo Option, Prev: -D-FSinfo Option, Up: FSinfo Command Line Options
+
+8.9.11 '-I' DIRECTORY
+---------------------
+
+This option is passed into the preprocessor for the configuration files.
+It specifies directories in which to find include files
+
+
+File: am-utils.info, Node: -U FSinfo Option, Prev: -I FSinfo Option, Up: FSinfo Command Line Options
+
+8.9.12 '-U' NAME
+----------------
+
+Removes any initial definition of the symbol "name". Inverse of the
+'-D' option.
+
+
+File: am-utils.info, Node: FSinfo errors, Prev: FSinfo Command Line Options, Up: FSinfo
+
+8.10 Errors produced by FSinfo
+==============================
+
+The following table documents the errors and warnings which FSinfo may
+produce.
+
+" expected
+ Occurs if an unescaped newline is found in a quoted string.
+
+ambiguous mount: VOLUME is a replicated filesystem
+ If several filesystems are declared as having the same volume name,
+ they will be considered replicated filesystems. To mount a
+ replicated filesystem statically, a specific host will need to be
+ named, to say which particular copy to try and mount, else this
+ error will result.
+
+can't open FILENAME for writing
+ Occurs if any errors are encountered when opening an output file.
+
+cannot determine localname since volname VOLUME is not uniquely defined
+ If a volume is replicated and an attempt is made to mount the
+ filesystem statically without specifying a local mountpoint, FSinfo
+ cannot calculate a mountpoint, as the desired pathname would be
+ ambiguous.
+
+DEVICE has duplicate exportfs data
+ Produced if the 'exportfs' option is used multiple times within the
+ same branch of a filesystem definition. For example, if you
+ attempt to set the 'exportfs' data at different levels of the
+ mountpoint directory tree.
+
+dump frequency for HOST:DEVICE is non-zero
+ Occurs if DEVICE has its 'fstype' declared to be 'swap' or 'export'
+ and the 'dump' option is set to a value greater than zero. Swap
+ devices should not be dumped.
+
+duplicate host HOSTNAME!
+ If a host has more than one definition.
+
+end of file within comment
+ A comment was unterminated before the end of one of the
+ configuration files.
+
+FILENAME: cannot open for reading
+ If a file specified on the command line as containing configuration
+ data could not be opened.
+
+FILESYSTEM has a volname but no exportfs data
+ Occurs when a volume name is declared for a file system, but the
+ string specifying what machines the filesystem can be exported to
+ is missing.
+
+fs field "FIELD-NAME" already set
+ Occurs when multiple definitions are given for one of the
+ attributes of a host's filesystem.
+
+host field "FIELD-NAME" already set
+ If duplicate definitions are given for any of the fields with a
+ host definition.
+
+HOST:DEVICE has more than one mount point
+ Occurs if the mount option for a host's filesystem specifies
+ multiple trees at which to place the mountpoint.
+
+HOST:DEVICE has no mount point
+ Occurs if the 'mount' option is not specified for a host's
+ filesystem.
+
+HOST:DEVICE needs field "FIELD-NAME"
+ Occurs when a filesystem is missing a required field. FIELD-NAME
+ could be one of 'fstype', 'opts', 'passno' or 'mount'.
+
+HOST:mount field specified for swap partition
+ Occurs if a mountpoint is given for a filesystem whose type is
+ declared to be 'swap'.
+
+malformed IP dotted quad: ADDRESS
+ If the Internet address of an interface is incorrectly specified.
+ An Internet address definition is handled to inet_addr(3N) to see
+ if it can cope. If not, then this message will be displayed.
+
+malformed netmask: NETMASK
+ If the netmask cannot be decoded as though it were a hexadecimal
+ number, then this message will be displayed. It will typically be
+ caused by incorrect characters in the NETMASK value.
+
+mount field "FIELD-NAME" already set
+ Occurs when a static mount has multiple definitions of the same
+ field.
+
+mount tree field "FIELD-NAME" already set
+ Occurs when the FIELD-NAME is defined more than once during the
+ definition of a filesystems mountpoint.
+
+netif field FIELD-NAME already set
+ Occurs if you attempt to define an attribute of an interface more
+ than once.
+
+network booting requires both root and swap areas
+ Occurs if a machine has mount declarations for either the root
+ partition or the swap area, but not both. You cannot define a
+ machine to only partially boot via the network.
+
+no disk mounts on HOSTNAME
+ If there are no static mounts, nor local disk mounts specified for
+ a machine, this message will be displayed.
+
+no volname given for HOST:DEVICE
+ Occurs when a filesystem is defined to be mounted on 'default', but
+ no volume name is given for the file system, then the mountpoint
+ cannot be determined.
+
+not allowed '/' in a directory name
+ Occurs when a pathname with multiple directory elements is
+ specified as the name for an automounter tree. A tree should only
+ have one name at each level.
+
+pass number for HOST:DEVICE is non-zero
+ Occurs if DEVICE has its 'fstype' declared to be 'swap' or 'export'
+ and the fsck(8) pass number is set. Swap devices should not be
+ fsck'd. *Note FSinfo fstype Option::.
+
+sub-directory DIRECTORY of DIRECTORY-TREE starts with '/'
+ Within the filesystem specification for a host, if an element
+ DIRECTORY of the mountpoint begins with a '/' and it is not the
+ start of the tree.
+
+sub-directory of DIRECTORY-TREE is named "default"
+ 'default' is a keyword used to specify if a mountpoint should be
+ automatically calculated by FSinfo. If you attempt to specify a
+ directory name as this, it will use the filename of 'default' but
+ will produce this warning.
+
+unknown \ sequence
+ Occurs if an unknown escape sequence is found inside a string.
+ Within a string, you can give the standard C escape sequences for
+ strings, such as newlines and tab characters.
+
+unknown directory attribute
+ If an unknown keyword is found while reading the definition of a
+ host's filesystem mount option.
+
+unknown filesystem attribute
+ Occurs if an unrecognized keyword is used when defining a host's
+ filesystems.
+
+unknown host attribute
+ Occurs if an unrecognized keyword is used when defining a host.
+
+unknown mount attribute
+ Occurs if an unrecognized keyword is found while parsing the list
+ of static mounts.
+
+unknown volname VOLUME automounted [ on name ]
+ Occurs if VOLUME is used in a definition of an automount map but
+ the volume name has not been declared during the host filesystem
+ definitions.
+
+volname VOLUME is unknown
+ Occurs if an attempt is made to mount or reference a volume name
+ which has not been declared during the host filesystem definitions.
+
+volname VOLUME not exported from MACHINE
+ Occurs if you attempt to mount the volume VOLUME from a machine
+ which has not declared itself to have such a filesystem available.
+
+
+File: am-utils.info, Node: Hlfsd, Next: Assorted Tools, Prev: FSinfo, Up: Top
+
+9 Hlfsd
+*******
+
+Hlfsd is a daemon which implements a filesystem containing a symbolic
+link to subdirectory within a user's home directory, depending on the
+user which accessed that link. It was primarily designed to redirect
+incoming mail to users' home directories, so that it can be read from
+anywhere. It was designed and implemented by Erez Zadok
+(http://www.cs.sunysb.edu/~ezk) and Alexander Dupuy <dupuy AT
+cs.columbia.edu>, at the Computer Science Department
+(http://www.cs.columbia.edu/) of Columbia University
+(http://www.columbia.edu/). A paper
+(http://www.fsl.cs.sunysb.edu/docs/hlfsd/hlfsd.html) on Hlfsd was
+presented at the Usenix LISA VII conference in 1993.
+
+ Hlfsd operates by mounting itself as an NFS server for the directory
+containing linkname, which defaults to '/hlfs/home'. Lookups within
+that directory are handled by Hlfsd, which uses the password map to
+determine how to resolve the lookup. The directory will be created if
+it doesn't already exist. The symbolic link will be to the accessing
+user's home directory, with subdir appended to it. If not specified,
+subdir defaults to '.hlfsdir'. This directory will also be created if
+it does not already exist.
+
+ A 'SIGTERM' sent to Hlfsd will cause it to shutdown. A 'SIGHUP' will
+flush the internal caches, and reload the password map. It will also
+close and reopen the log file, to enable the original log file to be
+removed or rotated. A 'SIGUSR1' will cause it to dump its internal
+table of user IDs and home directories to the file '/tmp/hlfsddump'.
+
+* Menu:
+
+* Introduction to Hlfsd::
+* Background to Mail Delivery::
+* Using Hlfsd::
+
+
+File: am-utils.info, Node: Introduction to Hlfsd, Next: Background to Mail Delivery, Prev: Hlfsd, Up: Hlfsd
+
+9.1 Introduction to Hlfsd
+=========================
+
+Electronic mail has become one of the major applications for many
+computer networks, and use of this service is expected to increase over
+time, as networks proliferate and become faster. Providing a convenient
+environment for users to read, compose, and send electronic mail has
+become a requirement for systems administrators (SAs).
+
+ Widely used methods for handling mail usually require users to be
+logged into a designated "home" machine, where their mailbox files
+reside. Only on that one machine can they read newly arrived mail.
+Since users have to be logged into that system to read their mail, they
+often find it convenient to run all of their other processes on that
+system as well, including memory and CPU-intensive jobs. For example,
+in our department, we have allocated and configured several
+multi-processor servers to handle such demanding CPU/memory
+applications, but these were underutilized, in large part due to the
+inconvenience of not being able to read mail on those machines. (No
+home directories were located on these designated CPU-servers, since we
+did not want NFS service for users' home directories to have to compete
+with CPU-intensive jobs. At the same time, we discouraged users from
+running demanding applications on their home machines.)
+
+ Many different solutions have been proposed to allow users to read
+their mail on any host. However, all of these solutions fail in one or
+more of several ways:
+
+ * they introduce new single points of failure
+
+ * they require using different mail transfer agents (MTAs) or user
+ agents (UAs)
+
+ * they do not solve the problem for all cases, i.e. the solution is
+ only partially successful for a particular environment.
+
+ We have designed a simple filesystem, called the "Home-Link File
+System", to provide the ability to deliver mail to users' home
+directories, without modification to mail-related applications. We have
+endeavored to make it as stable as possible. Of great importance to us
+was to make sure the HLFS daemon, 'hlfsd' , would not hang under any
+circumstances, and would take the next-best action when faced with
+problems. Compared to alternative methods, Hlfsd is a stable, more
+general solution, and easier to install/use. In fact, in some ways, we
+have even managed to improve the reliability and security of mail
+service.
+
+ Our server implements a small filesystem containing a symbolic link
+to a subdirectory of the invoking user's home directory, and named
+symbolic links to users' mailbox files.
+
+ The Hlfsd server finds out the UID of the process that is accessing
+its mount point, and resolves the pathname component 'home' as a
+symbolic link to a subdirectory within the home directory given by the
+UID's entry in the password file. If the GID of the process that
+attempts to access a mailbox file is a special one (called HLFS_GID),
+then the server maps the name of the _next_ pathname component directly
+to the user's mailbox. This is necessary so that access to a mailbox
+file by users other than the owner can succeed. The server has safety
+features in case of failures such as hung filesystems or home directory
+filesystems that are inaccessible or full.
+
+ On most of our machines, mail gets delivered to the directory
+'/var/spool/mail'. Many programs, including UAs, depend on that path.
+Hlfsd creates a directory '/mail', and mounts itself on top of that
+directory. Hlfsd implements the path name component called 'home',
+pointing to a subdirectory of the user's home directory. We have made
+'/var/spool/mail' a symbolic link to '/mail/home', so that accessing
+'/var/spool/mail' actually causes access to a subdirectory within a
+user's home directory.
+
+ The following table shows an example of how resolving the pathname
+'/var/mail/NAME' to '/users/ezk/.mailspool/NAME' proceeds.
+
+Resolving Component Pathname left to resolve Value if symbolic link
+
+/ var/mail/NAME
+
+var/ mail/NAME
+
+mail@ /mail/home/NAME mail@ -> /mail/home
+
+/ mail/home/NAME
+
+mail/ home/NAME
+
+home@ NAME home@ ->
+ /users/ezk/.mailspool
+
+/ users/ezk/.mailspool/NAME
+
+users/ ezk/.mailspool/NAME
+
+ezk/ .mailspool/NAME
+
+.mailspool/ NAME
+
+NAME
+
+
+File: am-utils.info, Node: Background to Mail Delivery, Next: Using Hlfsd, Prev: Introduction to Hlfsd, Up: Hlfsd
+
+9.2 Background to Mail Delivery
+===============================
+
+This section provides an in-depth discussion of why available methods
+for delivering mail to home directories are not as good as the one used
+by Hlfsd.
+
+* Menu:
+
+* Single-Host Mail Spool Directory::
+* Centralized Mail Spool Directory::
+* Distributed Mail Spool Service::
+* Why Deliver Into the Home Directory?::
+
+
+File: am-utils.info, Node: Single-Host Mail Spool Directory, Next: Centralized Mail Spool Directory, Prev: Background to Mail Delivery, Up: Background to Mail Delivery
+
+9.2.1 Single-Host Mail Spool Directory
+--------------------------------------
+
+The most common method for mail delivery is for mail to be appended to a
+mailbox file in a standard spool directory on the designated "mail home"
+machine of the user. The greatest advantage of this method is that it
+is the default method most vendors provide with their systems, thus very
+little (if any) configuration is required on the SA's part. All they
+need to set up are mail aliases directing mail to the host on which the
+user's mailbox file is assigned. (Otherwise, mail is delivered locally,
+and users find mailboxes on many machines.)
+
+ As users become more sophisticated, and aided by windowing systems,
+they find themselves logging in on multiple hosts at once, performing
+several tasks concurrently. They ask to be able to read their mail on
+any host on the network, not just the one designated as their "mail
+home".
+
+
+File: am-utils.info, Node: Centralized Mail Spool Directory, Next: Distributed Mail Spool Service, Prev: Single-Host Mail Spool Directory, Up: Background to Mail Delivery
+
+9.2.2 Centralized Mail Spool Directory
+--------------------------------------
+
+A popular method for providing mail readability from any host is to have
+all mail delivered to a mail spool directory on a designated
+"mail-server" which is exported via NFS to all of the hosts on the
+network. Configuring such a system is relatively easy. On most
+systems, the bulk of the work is a one-time addition to one or two
+configuration files in '/etc'. The file-server's spool directory is
+then hard-mounted across every machine on the local network. In small
+environments with only a handful of hosts this can be an acceptable
+solution. In our department, with a couple of hundred active hosts and
+thousands of mail messages processed daily, this was deemed completely
+unacceptable, as it introduced several types of problems:
+
+Scalability and Performance
+
+ As more and more machines get added to the network, more mail
+ traffic has to go over NFS to and from the mail-server. Users like
+ to run mail-watchers, and read their mail often. The stress on the
+ shared infrastructure increases with every user and host added;
+ loads on the mail server would most certainly be high since all
+ mail delivery goes through that one machine.(1) This leads to
+ lower reliability and performance. To reduce the number of
+ concurrent connections between clients and the server host, some
+ SAs have resorted to automounting the mail-spool directory. But
+ this solution only makes things worse: since users often run mail
+ watchers, and many popular applications such as 'trn', 'emacs',
+ 'csh' or 'ksh' check periodically for new mail, the automounted
+ directory would be effectively permanently mounted. If it gets
+ unmounted automatically by the automounter program, it is most
+ likely to get mounted shortly afterwards, consuming more I/O
+ resources by the constant cycle of mount and umount calls.
+
+Reliability
+
+ The mail-server host and its network connectivity must be very
+ reliable. Worse, since the spool directory has to be
+ hard-mounted,(2) many processes which access the spool directory
+ (various shells, 'login', 'emacs', etc.) would be hung as long as
+ connectivity to the mail-server is severed. To improve
+ reliability, SAs may choose to backup the mail-server's spool
+ partition several times a day. This may make things worse since
+ reading or delivering mail while backups are in progress may cause
+ backups to be inconsistent; more backups consume more backup-media
+ resources, and increase the load on the mail-server host.
+
+ ---------- Footnotes ----------
+
+ (1) Delivery via NFS-mounted filesystems may require usage of
+'rpc.lockd' and 'rpc.statd' to provide distributed file-locking, both of
+which are widely regarded as unstable and unreliable. Furthermore, this
+will degrade performance, as local processes as well as remote 'nfsd'
+processes are kept busy.
+
+ (2) No SA in their right minds would soft-mount read/write partitions
+-- the chances for data loss are too great.
+
+
+File: am-utils.info, Node: Distributed Mail Spool Service, Next: Why Deliver Into the Home Directory?, Prev: Centralized Mail Spool Directory, Up: Background to Mail Delivery
+
+9.2.3 Distributed Mail Spool Service
+------------------------------------
+
+Despite the existence of a few systems that support delivery to users'
+home directories, mail delivery to home directories hasn't caught on.
+We believe the main reason is that there are too many programs that
+"know" where mailbox files reside. Besides the obvious (the delivery
+program '/bin/mail' and mail readers like '/usr/ucb/Mail', 'mush', 'mm',
+etc.), other programs that know mailbox location are login, from, almost
+every shell, 'xbiff', 'xmailbox', and even some programs not directly
+related to mail, such as 'emacs' and 'trn'. Although some of these
+programs can be configured to look in different directories with the use
+of environment variables and other resources, many of them cannot. The
+overall porting work is significant.
+
+ Other methods that have yet to catch on require the use of a special
+mail-reading server, such as IMAP or POP. The main disadvantage of these
+systems is that UAs need to be modified to use these services -- a long
+and involved task. That is why they are not popular at this time.
+
+ Several other ideas have been proposed and even used in various
+environments. None of them is robust. They are mostly very
+specialized, inflexible, and do not extend to the general case. Some of
+the ideas are plain bad, potentially leading to lost or corrupt mail:
+
+automounters
+
+ Using an automounter such as Amd to provide a set of symbolic links
+ from the normal spool directory to user home directories is not
+ sufficient. UAs rename, unlink, and recreate the mailbox as a
+ regular file, therefore it must be a real file, not a symbolic
+ link. Furthermore, it must reside in a real directory which is
+ writable by the UAs and MTAs. This method may also require
+ populating '/var/spool/mail' with symbolic links and making sure
+ they are updated. Making Amd manage that directory directly fails,
+ since many various lock files need to be managed as well. Also,
+ Amd does not provide all of the NFS operations which are required
+ to write mail such as write, create, remove, and unlink.
+
+'$MAIL'
+
+ Setting this variable to an automounted directory pointing to the
+ user's mail spool host only solves the problem for those programs
+ which know and use '$MAIL'. Many programs don't, therefore this
+ solution is partial and of limited flexibility. Also, it requires
+ the SAs or the users to set it themselves -- an added level of
+ inconvenience and possible failures.
+
+/bin/mail
+
+ Using a different mail delivery agent could be the solution. One
+ such example is 'hdmail'. However, 'hdmail' still requires
+ modifying all UAs, the MTA's configuration, installing new daemons,
+ and changing login scripts. This makes the system less upgradable
+ or compatible with others, and adds one more complicated system for
+ SAs to deal with. It is not a complete solution because it still
+ requires each user have their '$MAIL' variable setup correctly, and
+ that every program use this variable.
+
+
+File: am-utils.info, Node: Why Deliver Into the Home Directory?, Prev: Distributed Mail Spool Service, Up: Background to Mail Delivery
+
+9.2.4 Why Deliver Into the Home Directory?
+------------------------------------------
+
+There are several major reasons why SAs might want to deliver mail
+directly into the users' home directories:
+
+Location
+
+ Many mail readers need to move mail from the spool directory to the
+ user's home directory. It speeds up this operation if the two are
+ on the same filesystem. If for some reason the user's home
+ directory is inaccessible, it isn't that useful to be able to read
+ mail, since there is no place to move it to. In some cases, trying
+ to move mail to a non-existent or hung filesystem may result in
+ mail loss.
+
+Distribution
+
+ Having all mail spool directories spread among the many more
+ filesystems minimizes the chances that complete environments will
+ grind to a halt when a single server is down. It does increase the
+ chance that there will be someone who is not able to read their
+ mail when a machine is down, but that is usually preferred to
+ having no one be able to read their mail because a centralized mail
+ server is down. The problem of losing some mail due to the
+ (presumably) higher chances that a user's machine is down is
+ minimized in HLFS.
+
+Security
+
+ Delivering mail to users' home directories has another advantage --
+ enhanced security and privacy. Since a shared system mail spool
+ directory has to be world-readable and searchable, any user can see
+ whether other users have mail, when they last received new mail, or
+ when they last read their mail. Programs such as 'finger' display
+ this information, which some consider an infringement of privacy.
+ While it is possible to disable this feature of 'finger' so that
+ remote users cannot see a mailbox file's status, this doesn't
+ prevent local users from getting the information. Furthermore,
+ there are more programs which make use of this information. In
+ shared environments, disabling such programs has to be done on a
+ system-wide basis, but with mail delivered to users' home
+ directories, users less concerned with privacy who do want to let
+ others know when they last received or read mail can easily do so
+ using file protection bits.
+
+ In summary, delivering mail to home directories provides users the
+functionality sought, and also avoids most of the problems just
+discussed.
+
+
+File: am-utils.info, Node: Using Hlfsd, Prev: Background to Mail Delivery, Up: Hlfsd
+
+9.3 Using Hlfsd
+===============
+
+* Menu:
+
+* Controlling Hlfsd::
+* Hlfsd Options::
+* Hlfsd Files::
+
+
+File: am-utils.info, Node: Controlling Hlfsd, Next: Hlfsd Options, Prev: Using Hlfsd, Up: Using Hlfsd
+
+9.3.1 Controlling Hlfsd
+-----------------------
+
+Much the same way Amd is controlled by 'ctl-amd', so does Hlfsd get
+controlled by the 'ctl-hlfsd' script:
+
+ctl-hlfsd start
+ Start a new Hlfsd.
+
+ctl-hlfsd stop
+ Stop a running Hlfsd.
+
+ctl-hlfsd restart
+ Stop a running Hlfsd, wait for 10 seconds, and then start a new
+ one. It is hoped that within 10 seconds, the previously running
+ Hlfsd terminate properly; otherwise, starting a second one could
+ cause system lockup.
+
+ For example, on our systems, we start Hlfsd within 'ctl-hlfsd' as
+follows on Solaris 2 systems:
+
+ hlfsd -a /var/alt_mail -x all -l /var/log/hlfsd /mail/home .mailspool
+
+ The directory '/var/alt_mail' is a directory in the root partition
+where alternate mail will be delivered into, when it cannot be delivered
+into the user's home directory.
+
+ Normal mail gets delivered into '/var/mail', but on our systems, that
+is a symbolic link to '/mail/home'. '/mail' is managed by Hlfsd, which
+creates a dynamic symlink named 'home', pointing to the subdirectory
+'.mailspool' _within_ the accessing user's home directory. This results
+in mail which normally should go to '/var/mail/$USER', to go to
+'$HOME/.mailspool/$USER'.
+
+ Hlfsd does not create the '/var/mail' symlink. This needs to be
+created (manually) once on each host, by the system administrators, as
+follows:
+
+ mv /var/mail /var/alt_mail
+ ln -s /mail/home /var/mail
+
+ Hlfsd also responds to the following signals:
+
+ A 'SIGHUP' signal sent to Hlfsd will force it to reload the password
+map immediately.
+
+ A 'SIGUSR1' signal sent to Hlfsd will cause it to dump its internal
+password map to the file '/usr/tmp/hlfsd.dump.XXXXXX', where 'XXXXXX'
+will be replaced by a random string generated by mktemp(3) or (the more
+secure) mkstemp(3).
+
+
+File: am-utils.info, Node: Hlfsd Options, Next: Hlfsd Files, Prev: Controlling Hlfsd, Up: Using Hlfsd
+
+9.3.2 Hlfsd Options
+-------------------
+
+-a ALT_DIR
+ Alternate directory. The name of the directory to which the
+ symbolic link returned by Hlfsd will point, if it cannot access the
+ home directory of the user. This defaults to '/var/hlfs'. This
+ directory will be created if it doesn't exist. It is expected that
+ either users will read these files, or the system administrators
+ will run a script to resend this "lost mail" to its owner.
+
+-c CACHE-INTERVAL
+ Caching interval. Hlfsd will cache the validity of home
+ directories for this interval, in seconds. Entries which have been
+ verified within the last CACHE-INTERVAL seconds will not be
+ verified again, since the operation could be expensive, and the
+ entries are most likely still valid. After the interval has
+ expired, Hlfsd will re-verify the validity of the user's home
+ directory, and reset the cache time-counter. The default value for
+ CACHE-INTERVAL is 300 seconds (5 minutes).
+
+-f
+ Force fast startup. This option tells Hlfsd to skip startup-time
+ consistency checks such as existence of mount directory, alternate
+ spool directory, symlink to be hidden under the mount directory,
+ their permissions and validity.
+
+-g GROUP
+ Set the special group HLFS_GID to GROUP. Programs such as
+ '/usr/ucb/from' or '/usr/sbin/in.comsat', which access the
+ mailboxes of other users, must be setgid 'HLFS_GID' to work
+ properly. The default group is 'hlfs'. If no group is provided,
+ and there is no group 'hlfs', this feature is disabled.
+
+-h
+ Help. Print a brief help message, and exit.
+
+-i RELOAD-INTERVAL
+ Map-reloading interval. Each RELOAD-INTERVAL seconds, Hlfsd will
+ reload the password map. Hlfsd needs the password map for the UIDs
+ and home directory pathnames. Hlfsd schedules a 'SIGALRM' to
+ reload the password maps. A 'SIGHUP' sent to Hlfsd will force it
+ to reload the maps immediately. The default value for
+ RELOAD-INTERVAL is 900 seconds (15 minutes.)
+
+-l LOGFILE
+ Specify a log file to which Hlfsd will record events. If LOGFILE
+ is the string 'syslog' then the log messages will be sent to the
+ system log daemon by syslog(3), using the 'LOG_DAEMON' facility.
+ This is also the default.
+
+-n
+ No verify. Hlfsd will not verify the validity of the symbolic link
+ it will be returning, or that the user's home directory contains
+ sufficient disk-space for spooling. This can speed up Hlfsd at the
+ cost of possibly returning symbolic links to home directories which
+ are not currently accessible or are full. By default, Hlfsd
+ validates the symbolic-link in the background. The '-n' option
+ overrides the meaning of the '-c' option, since no caching is
+ necessary.
+
+-o MOUNT-OPTIONS
+ Mount options which Hlfsd will use to mount itself on top of
+ DIRNAME. By default, MOUNT-OPTIONS is set to 'ro'. If the system
+ supports symbolic-link caching, default options are set to
+ 'ro,nocache'.
+
+-p
+ Print PID. Outputs the process-id of Hlfsd to standard output where
+ it can be saved into a file.
+
+-v
+ Version. Displays version information to standard error.
+
+-x LOG-OPTIONS
+ Specify run-time logging options. The options are a comma
+ separated list chosen from: 'fatal', 'error', 'user', 'warn',
+ 'info', 'map', 'stats', 'all'.
+
+-C
+ Force Hlfsd to run on systems that cannot turn off the NFS
+ attribute-cache. Use of this option on those systems is
+ discouraged, as it may result in loss or misdelivery of mail. The
+ option is ignored on systems that can turn off the attribute-cache.
+
+-D LOG-OPTIONS
+ Select from a variety of debugging options. Prefixing an option
+ with the string 'no' reverses the effect of that option. Options
+ are cumulative. The most useful option is 'all'. Since this
+ option is only used for debugging other options are not documented
+ here. A fuller description is available in the program source.
+
+-P PASSWORD-FILE
+ Read the user-name, user-id, and home directory information from
+ the file PASSWORD-FILE. Normally, Hlfsd will use getpwent(3) to
+ read the password database. This option allows you to override the
+ default database, and is useful if you want to map users' mail
+ files to a directory other than their home directory. Only the
+ username, uid, and home-directory fields of the file PASSWORD-FILE
+ are read and checked. All other fields are ignored. The file
+ PASSWORD-FILE must otherwise be compliant with Unix Version 7
+ colon-delimited format passwd(4).
+
+
+File: am-utils.info, Node: Hlfsd Files, Prev: Hlfsd Options, Up: Using Hlfsd
+
+9.3.3 Hlfsd Files
+-----------------
+
+The following files are used by Hlfsd:
+
+'/hlfs'
+ directory under which Hlfsd mounts itself and manages the symbolic
+ link 'home'.
+
+'.hlfsdir'
+ default sub-directory in the user's home directory, to which the
+ 'home' symbolic link returned by Hlfsd points.
+
+'/var/hlfs'
+ directory to which 'home' symbolic link returned by Hlfsd points if
+ it is unable to verify the that user's home directory is
+ accessible.
+
+'/usr/tmp/hlfsd.dump.XXXXXX'
+ file to which Hlfsd will dump its internal password map when it
+ receives the 'SIGUSR1' signal. 'XXXXXX' will be replaced by a
+ random string generated by mktemp(3) or (the more secure)
+ mkstemp(3).
+
+ For discussion on other files used by Hlfsd, see *Note lostaltmail::,
+and *note lostaltmail.conf-sample::.
+
+
+File: am-utils.info, Node: Assorted Tools, Next: Examples, Prev: Hlfsd, Up: Top
+
+10 Assorted Tools
+*****************
+
+The following are additional utilities and scripts included with
+am-utils, and get installed.
+
+* Menu:
+
+* am-eject::
+* amd.conf-sample::
+* amd2ldif::
+* amd2sun::
+* automount2amd::
+* ctl-amd::
+* ctl-hlfsd::
+* fix-amd-map::
+* fixmount::
+* fixrmtab::
+* lostaltmail::
+* lostaltmail.conf-sample::
+* mk-amd-map::
+* pawd::
+* redhat-ctl-amd::
+* wait4amd::
+* wait4amd2die::
+* wire-test::
+
+
+File: am-utils.info, Node: am-eject, Next: amd.conf-sample, Prev: Assorted Tools, Up: Assorted Tools
+
+10.1 am-eject
+=============
+
+A shell script unmounts a floppy or CD-ROM that is automounted, and then
+attempts to eject the removable device.
+
+
+File: am-utils.info, Node: amd.conf-sample, Next: amd2ldif, Prev: am-eject, Up: Assorted Tools
+
+10.2 amd.conf-sample
+====================
+
+A sample Amd configuration file. *Note Amd Configuration File::.
+
+
+File: am-utils.info, Node: amd2ldif, Next: amd2sun, Prev: amd.conf-sample, Up: Assorted Tools
+
+10.3 amd2ldif
+=============
+
+A script to convert Amd maps to LDAP input files. Use it as follows:
+
+ amd2ldif mapname base < amd.mapfile > mapfile.ldif
+
+
+File: am-utils.info, Node: amd2sun, Next: automount2amd, Prev: amd2ldif, Up: Assorted Tools
+
+10.4 amd2sun
+============
+
+A script to convert Amd maps to Sun Automounter maps. Use it as follows
+
+ amd2sun < amd.mapfile > auto_mapfile
+
+
+File: am-utils.info, Node: automount2amd, Next: ctl-amd, Prev: amd2sun, Up: Assorted Tools
+
+10.5 automount2amd
+==================
+
+A script to convert old Sun Automounter maps to Amd maps.
+
+ Say you have the Sun automount file auto.foo, with these two lines:
+ home earth:/home
+ moon -ro,intr server:/proj/images
+ Running
+ automount2amd auto.foo > amd.foo
+
+ will produce the Amd map amd.foo with this content:
+
+ # generated by automount2amd on Sat Aug 14 17:59:32 US/Eastern 1999
+
+ /defaults \\
+ type:=nfs;opts:=rw,grpid,nosuid,utimeout=600
+
+ home \
+ host==earth;type:=link;fs:=/home \\
+ rhost:=earth;rfs:=/home
+
+ moon \
+ -addopts:=ro,intr \\
+ host==server;type:=link;fs:=/proj/images \\
+ rhost:=server;rfs:=/proj/images
+
+ This perl script will use the following /default entry
+ type:=nfs;opts:=rw,grpid,nosuid,utimeout=600
+ If you wish to override that, define the $DEFAULTS environment
+variable, or modify the script.
+
+ If you wish to generate Amd maps using the hostd (*note hostd
+Selector Variable::) Amd map syntax, then define the environment
+variable $DOMAIN or modify the script.
+
+ Note that automount2amd does not understand the syntax in newer Sun
+Automount maps, those used with autofs.
+
+
+File: am-utils.info, Node: ctl-amd, Next: ctl-hlfsd, Prev: automount2amd, Up: Assorted Tools
+
+10.6 ctl-amd
+============
+
+A script to start, stop, or restart Amd. Use it as follows:
+
+ctl-amd start
+ Start a new Amd process.
+ctl-amd stop
+ Stop the running Amd.
+ctl-amd restart
+ Stop the running Amd (if any), safely wait for it to terminate, and
+ then start a new process -- only if the previous one died cleanly.
+
+ *Note Run-time Administration::, for more details.
+
+
+File: am-utils.info, Node: ctl-hlfsd, Next: fix-amd-map, Prev: ctl-amd, Up: Assorted Tools
+
+10.7 ctl-hlfsd
+==============
+
+A script for controlling Hlfsd, much the same way 'ctl-amd' controls
+Amd. Use it as follows:
+
+ctl-hlfsd start
+ Start a new Hlfsd process.
+ctl-hlfsd stop
+ Stop the running Hlfsd.
+ctl-hlfsd restart
+ Stop the running Hlfsd (if any), wait for 10 seconds for it to
+ terminate, and then start a new process -- only if the previous one
+ died cleanly.
+
+ *Note Hlfsd::, for more details.
+
+
+File: am-utils.info, Node: fix-amd-map, Next: fixmount, Prev: ctl-hlfsd, Up: Assorted Tools
+
+10.8 fix-amd-map
+================
+
+Am-utils changed some of the syntax and default values of some
+variables. For example, the default value for '${os}' for Solaris 2.x
+(aka SunOS 5.x) systems used to be 'sos5', it is now more automatically
+generated from 'config.guess' and its value is 'sunos5'.
+
+ This script converts older Amd maps to new ones. Use it as follows:
+
+ fix-amd-map < old.map > new.map
+
+
+File: am-utils.info, Node: fixmount, Next: fixrmtab, Prev: fix-amd-map, Up: Assorted Tools
+
+10.9 fixmount
+=============
+
+'fixmount' is a variant of showmount(8) that can delete bogus mount
+entries in remote mountd(8) daemons. This is useful to cleanup
+otherwise ever-accumulating "junk". Use it for example:
+
+ fixmount -r host
+
+ See the online manual page for 'fixmount' for more details of its
+usage.
+
+
+File: am-utils.info, Node: fixrmtab, Next: lostaltmail, Prev: fixmount, Up: Assorted Tools
+
+10.10 fixrmtab
+==============
+
+A script to invalidate '/etc/rmtab' entries for hosts named. Also
+restart mountd for changes to take effect. Use it for example:
+
+ fixrmtab host1 host2 ...
+
+
+File: am-utils.info, Node: lostaltmail, Next: lostaltmail.conf-sample, Prev: fixrmtab, Up: Assorted Tools
+
+10.11 lostaltmail
+=================
+
+A script used with Hlfsd to resend any "lost" mail. Hlfsd redirects
+mail which cannot be written into the user's home directory to an
+alternate directory. This is useful to continue delivering mail, even
+if the user's file system was unavailable, full, or over quota. But,
+the mail which gets delivered to the alternate directory needs to be
+resent to its respective users. This is what the 'lostaltmail' script
+does.
+
+ Use it as follows:
+
+ lostaltmail
+
+ This script needs a configuration file 'lostaltmail.conf' set up with
+the right parameters to properly work. *Note Hlfsd::, for more details.
+
+
+File: am-utils.info, Node: lostaltmail.conf-sample, Next: mk-amd-map, Prev: lostaltmail, Up: Assorted Tools
+
+10.12 lostaltmail.conf-sample
+=============================
+
+This is a text file with configuration parameters needed for the
+'lostaltmail' script. The script includes comments explaining each of
+the configuration variables. See it for more information. Also *note
+Hlfsd:: for general information.
+
+
+File: am-utils.info, Node: mk-amd-map, Next: pawd, Prev: lostaltmail.conf-sample, Up: Assorted Tools
+
+10.13 mk-amd-map
+================
+
+This program converts a normal Amd map file into an ndbm database with
+the same prefix as the named file. Use it as follows:
+
+ mk-amd-map mapname
+
+
+File: am-utils.info, Node: pawd, Next: redhat-ctl-amd, Prev: mk-amd-map, Up: Assorted Tools
+
+10.14 pawd
+==========
+
+Pawd is used to print the current working directory, adjusted to reflect
+proper paths that can be reused to go through the automounter for the
+shortest possible path. In particular, the path printed back does not
+include any of Amd's local mount points. Using them is unsafe, because
+Amd may unmount managed file systems from the mount points, and thus
+including them in paths may not always find the files within.
+
+ Without any arguments, Pawd will print the automounter adjusted
+current working directory. With any number of arguments, it will print
+the adjusted path of each one of the arguments.
+
+
+File: am-utils.info, Node: redhat-ctl-amd, Next: wait4amd, Prev: pawd, Up: Assorted Tools
+
+10.15 redhat-ctl-amd
+====================
+
+This script is similar to ctl-amd (*note ctl-amd::) but is intended for
+Red Hat Linux systems. You can safely copy redhat-ctl-amd onto
+'/etc/rc.d/init.d/amd'. The script supplied by Am-utils is usually
+better than the one provided by Red Hat, because the Red Hat script does
+not correctly kill Amd processes: it is too quick to kill the wrong
+processes, leaving stale or hung mount points behind.
+
+
+File: am-utils.info, Node: wait4amd, Next: wait4amd2die, Prev: redhat-ctl-amd, Up: Assorted Tools
+
+10.16 wait4amd
+==============
+
+A script to wait for Amd to start on a particular host before performing
+an arbitrary command. The command is executed repeatedly, with 1 second
+intervals in between. You may interrupt the script using '^C' (or
+whatever keyboard sequence your terminal's 'intr' function is bound to).
+
+ Examples:
+
+wait4amd saturn amq -p -h saturn
+ When Amd is up on host 'saturn', get the process ID of that running
+ Amd.
+wait4amd pluto rlogin pluto
+ Remote login to host 'pluto' when Amd is up on that host. It is
+ generally necessary to wait for Amd to properly start and
+ initialize on a remote host before logging in to it, because
+ otherwise user home directories may not be accessible across the
+ network.
+wait4amd pluto
+ A short-hand version of the previous command, since the most useful
+ reason for this script is to login to a remote host. I use it very
+ often when testing out new versions of Amd, and need to reboot hung
+ hosts.
+
+
+File: am-utils.info, Node: wait4amd2die, Next: wire-test, Prev: wait4amd, Up: Assorted Tools
+
+10.17 wait4amd2die
+==================
+
+This script is used internally by 'ctl-amd' when used to restart Amd.
+It waits for Amd to terminate. If it detected that Amd terminated
+cleanly, this script will return an exist status of zero. Otherwise, it
+will return a non-zero exit status.
+
+ The script tests for Amd's existence once every 5 seconds, six times,
+for a total of 30 seconds. It will return a zero exist status as soon
+as it detects that Amd dies.
+
+
+File: am-utils.info, Node: wire-test, Prev: wait4amd2die, Up: Assorted Tools
+
+10.18 wire-test
+===============
+
+A simple program to test if some of the most basic networking functions
+in am-util's library 'libamu' work. It also tests the combination of
+NFS protocol and version number that are supported from the current
+host, to a remote one.
+
+ For example, in this test a machine which only supports NFS Version 2
+is contacting a remote host that can support the same version, but using
+both UDP and TCP. If no host name is specified, 'wire-test' will try
+'localhost'.
+
+ $ wire-test moisil
+ Network name is "mcl-lab-net.cs.columbia.edu"
+ Network number is "128.59.13"
+ Network name is "old-net.cs.columbia.edu"
+ Network number is "128.59.16"
+ My IP address is 0x7f000001.
+ NFS Version and protocol tests to host "moisil"...
+ testing vers=2, proto="udp" -> found version 2.
+ testing vers=3, proto="udp" -> failed!
+ testing vers=2, proto="tcp" -> found version 2.
+ testing vers=3, proto="tcp" -> failed!
+
+
+File: am-utils.info, Node: Examples, Next: Internals, Prev: Assorted Tools, Up: Top
+
+11 Examples
+***********
+
+* Menu:
+
+* User Filesystems::
+* Home Directories::
+* Architecture Sharing::
+* Wildcard Names::
+* rwho servers::
+* /vol::
+* /defaults with selectors::
+* /tftpboot in a chroot-ed environment::
+
+
+File: am-utils.info, Node: User Filesystems, Next: Home Directories, Prev: Examples, Up: Examples
+
+11.1 User Filesystems
+=====================
+
+With more than one fileserver, the directories most frequently
+cross-mounted are those containing user home directories. A common
+convention used at Imperial College is to mount the user disks under
+/home/machine.
+
+ Typically, the '/etc/fstab' file contained a long list of entries
+such as:
+
+ machine:/home/machine /home/machine nfs ...
+
+ for each fileserver on the network.
+
+ There are numerous problems with this system. The mount list can
+become quite large and some of the machines may be down when a system is
+booted. When a new fileserver is installed, '/etc/fstab' must be
+updated on every machine, the mount directory created and the filesystem
+mounted.
+
+ In many environments most people use the same few workstations, but
+it is convenient to go to a colleague's machine and access your own
+files. When a server goes down, it can cause a process on a client
+machine to hang. By minimizing the mounted filesystems to only include
+those actively being used, there is less chance that a filesystem will
+be mounted when a server goes down.
+
+ The following is a short extract from a map taken from a research
+fileserver at Imperial College.
+
+ Note the entry for 'localhost' which is used for users such as the
+operator ('opr') who have a home directory on most machine as
+'/home/localhost/opr'.
+
+ /defaults opts:=rw,intr,grpid,nosuid
+ charm host!=${key};type:=nfs;rhost:=${key};rfs:=/home/${key} \
+ host==${key};type:=ufs;dev:=/dev/xd0g
+ #
+ ...
+
+ #
+ localhost type:=link;fs:=${host}
+ ...
+ #
+ # dylan has two user disks so have a
+ # top directory in which to mount them.
+ #
+ dylan type:=auto;fs:=${map};pref:=${key}/
+ #
+ dylan/dk2 host!=dylan;type:=nfs;rhost:=dylan;rfs:=/home/${key} \
+ host==dylan;type:=ufs;dev:=/dev/dsk/2s0
+ #
+ dylan/dk5 host!=dylan;type:=nfs;rhost:=dylan;rfs:=/home/${key} \
+ host==dylan;type:=ufs;dev:=/dev/dsk/5s0
+ ...
+ #
+ toytown host!=${key};type:=nfs;rhost:=${key};rfs:=/home/${key} \
+ host==${key};type:=ufs;dev:=/dev/xy1g
+ ...
+ #
+ zebedee host!=${key};type:=nfs;rhost:=${key};rfs:=/home/${key} \
+ host==${key};type:=ufs;dev:=/dev/dsk/1s0
+ #
+ # Just for access...
+ #
+ gould type:=auto;fs:=${map};pref:=${key}/
+ gould/staff host!=gould;type:=nfs;rhost:=gould;rfs:=/home/${key}
+ #
+ gummo host!=${key};type:=nfs;rhost:=${key};rfs:=/home/${key}
+ ...
+
+ This map is shared by most of the machines listed so on those systems
+any of the user disks is accessible via a consistent name. Amd is
+started with the following command
+
+ amd /home amd.home
+
+ Note that when mounting a remote filesystem, the "automounted" mount
+point is referenced, so that the filesystem will be mounted if it is not
+yet (at the time the remote 'mountd' obtains the file handle).
+
+
+File: am-utils.info, Node: Home Directories, Next: Architecture Sharing, Prev: User Filesystems, Up: Examples
+
+11.2 Home Directories
+=====================
+
+One convention for home directories is to locate them in '/homes' so
+user 'jsp''s home directory is '/homes/jsp'. With more than a single
+fileserver it is convenient to spread user files across several
+machines. All that is required is a mount-map which converts login
+names to an automounted directory.
+
+ Such a map might be started by the command:
+
+ amd /homes amd.homes
+
+ where the map 'amd.homes' contained the entries:
+
+ /defaults type:=link # All the entries are of type:=link
+ jsp fs:=/home/charm/jsp
+ njw fs:=/home/dylan/dk5/njw
+ ...
+ phjk fs:=/home/toytown/ai/phjk
+ sjv fs:=/home/ganymede/sjv
+
+ Whenever a login name is accessed in '/homes' a symbolic link appears
+pointing to the real location of that user's home directory. In this
+example, '/homes/jsp' would appear to be a symbolic link pointing to
+'/home/charm/jsp'. Of course, '/home' would also be an automount point.
+
+ This system causes an extra level of symbolic links to be used.
+Although that turns out to be relatively inexpensive, an alternative is
+to directly mount the required filesystems in the '/homes' map. The
+required map is simple, but long, and its creation is best automated.
+The entry for 'jsp' could be:
+
+ jsp -sublink:=${key};rfs:=/home/charm \
+ host==charm;type:=ufs;dev:=/dev/xd0g \
+ host!=charm;type:=nfs;rhost:=charm
+
+ This map can become quite big if it contains a large number of
+entries. By combining two other features of Amd it can be greatly
+simplified.
+
+ First the UFS partitions should be mounted under the control of
+'/etc/fstab', taking care that they are mounted in the same place that
+Amd would have automounted them. In most cases this would be something
+like '/a/"host"/home/"host"' and '/etc/fstab' on host 'charm' would have
+a line:
+
+ /dev/xy0g /a/charm/home/charm 4.2 rw,nosuid,grpid 1 5
+
+ The map can then be changed to:
+
+ /defaults type:=nfs;sublink:=${key};opts:=rw,intr,nosuid,grpid
+ jsp rhost:=charm;rfs:=/home/charm
+ njw rhost:=dylan;rfs:=/home/dylan/dk5
+ ...
+ phjk rhost:=toytown;rfs:=/home/toytown;sublink:=ai/${key}
+ sjv rhost:=ganymede;rfs:=/home/ganymede
+
+ This map operates as usual on a remote machine (ie '${host}' not
+equal to '${rhost}'). On the machine where the filesystem is stored (ie
+'${host}' equal to '${rhost}'), Amd will construct a local filesystem
+mount point which corresponds to the name of the locally mounted UFS
+partition. If Amd is started with the '-r' option then instead of
+attempting an NFS mount, Amd will simply inherit the UFS mount (*note
+Inheritance Filesystem::). If '-r' is not used then a loopback NFS
+mount will be made. This type of mount is known to cause a deadlock on
+many systems.
+
+
+File: am-utils.info, Node: Architecture Sharing, Next: Wildcard Names, Prev: Home Directories, Up: Examples
+
+11.3 Architecture Sharing
+=========================
+
+Often a filesystem will be shared by machines of different
+architectures. Separate trees can be maintained for the executable
+images for each architecture, but it may be more convenient to have a
+shared tree, with distinct subdirectories.
+
+ A shared tree might have the following structure on the fileserver
+(called 'fserver' in the example):
+
+ local/tex
+ local/tex/fonts
+ local/tex/lib
+ local/tex/bin
+ local/tex/bin/sun3
+ local/tex/bin/sun4
+ local/tex/bin/hp9000
+ ...
+
+ In this example, the subdirectories of 'local/tex/bin' should be
+hidden when accessed via the automount point (conventionally '/vol'). A
+mount-map for '/vol' to achieve this would look like:
+
+ /defaults sublink:=${/key};rhost:=fserver;type:=link
+ tex type:=auto;fs:=${map};pref:=${key}/
+ tex/fonts host!=fserver;type:=nfs;rfs:=/vol/tex \
+ host==fserver;fs:=/usr/local/tex
+ tex/lib host!=fserver;type:=nfs;rfs:=/vol/tex \
+ host==fserver;fs:=/usr/local/tex
+ tex/bin -sublink:=${/key}/${arch} \
+ host!=fserver;type:=nfs;rfs:=/vol/tex \
+ host:=fserver;fs:=/usr/local/tex
+
+ When '/vol/tex/bin' is referenced, the current machine architecture
+is automatically appended to the path by the '${sublink}' variable.
+This means that users can have '/vol/tex/bin' in their 'PATH' without
+concern for architecture dependencies.
+
+
+File: am-utils.info, Node: Wildcard Names, Next: rwho servers, Prev: Architecture Sharing, Up: Examples
+
+11.4 Wildcard Names & Replicated Servers
+========================================
+
+By using the wildcard facility, Amd can "overlay" an existing directory
+with additional entries. The system files are usually mounted under
+'/usr'. If instead, Amd is mounted on '/usr', additional names can be
+overlayed to augment or replace names in the "master" '/usr'. A map to
+do this would have the form:
+
+ local type:=auto;fs:=local-map
+ share type:=auto;fs:=share-map
+ * -type:=nfs;rfs:=/export/exec/${arch};sublink:="${key}" \
+ rhost:=fserv1 rhost:=fserv2 rhost:=fserv3
+
+ Note that the assignment to '${sublink}' is surrounded by double
+quotes to prevent the incoming key from causing the map to be
+misinterpreted. This map has the effect of directing any access to
+'/usr/local' or '/usr/share' to another automount point.
+
+ In this example, it is assumed that the '/usr' files are replicated
+on three fileservers: 'fserv1', 'fserv2' and 'fserv3'. For any
+references other than to 'local' and 'share' one of the servers is used
+and a symbolic link to ${autodir}/${rhost}/export/exec/${arch}/whatever
+is returned once an appropriate filesystem has been mounted.
+
+
+File: am-utils.info, Node: rwho servers, Next: /vol, Prev: Wildcard Names, Up: Examples
+
+11.5 'rwho' servers
+===================
+
+The '/usr/spool/rwho' directory is a good candidate for automounting.
+For efficiency reasons it is best to capture the rwho data on a small
+number of machines and then mount that information onto a large number
+of clients. The data written into the rwho files is byte order
+dependent so only servers with the correct byte ordering can be used by
+a client:
+
+ /defaults type:=nfs
+ usr/spool/rwho -byte==little;rfs:=/usr/spool/rwho \
+ rhost:=vaxA rhost:=vaxB \
+ || -rfs:=/usr/spool/rwho \
+ rhost:=sun4 rhost:=hp300
+
+
+File: am-utils.info, Node: /vol, Next: /defaults with selectors, Prev: rwho servers, Up: Examples
+
+11.6 '/vol'
+===========
+
+'/vol' is used as a catch-all for volumes which do not have other
+conventional names.
+
+ Below is part of the '/vol' map for the domain 'doc.ic.ac.uk'. The
+'r+d' tree is used for new or experimental software that needs to be
+available everywhere without installing it on all the fileservers.
+Users wishing to try out the new software then simply include
+'/vol/r+d/{bin,ucb}' in their path.
+
+ The main tree resides on one host 'gould.doc.ic.ac.uk', which has
+different 'bin', 'etc', 'lib' and 'ucb' sub-directories for each machine
+architecture. For example, '/vol/r+d/bin' for a Sun-4 would be stored
+in the sub-directory 'bin/sun4' of the filesystem '/usr/r+d'. When it
+was accessed a symbolic link pointing to '/a/gould/usr/r+d/bin/sun4'
+would be returned.
+
+ /defaults type:=nfs;opts:=rw,grpid,nosuid,intr,soft
+ wp -opts:=rw,grpid,nosuid;rhost:=charm \
+ host==charm;type:=link;fs:=/usr/local/wp \
+ host!=charm;type:=nfs;rfs:=/vol/wp
+ ...
+ #
+ src -opts:=rw,grpid,nosuid;rhost:=charm \
+ host==charm;type:=link;fs:=/usr/src \
+ host!=charm;type:=nfs;rfs:=/vol/src
+ #
+ r+d type:=auto;fs:=${map};pref:=r+d/
+ # per architecture bin,etc,lib&ucb...
+ r+d/bin rhost:=gould.doc.ic.ac.uk;rfs:=/usr/r+d;sublink:=${/key}/${arch}
+ r+d/etc rhost:=gould.doc.ic.ac.uk;rfs:=/usr/r+d;sublink:=${/key}/${arch}
+ r+d/include rhost:=gould.doc.ic.ac.uk;rfs:=/usr/r+d;sublink:=${/key}
+ r+d/lib rhost:=gould.doc.ic.ac.uk;rfs:=/usr/r+d;sublink:=${/key}/${arch}
+ r+d/man rhost:=gould.doc.ic.ac.uk;rfs:=/usr/r+d;sublink:=${/key}
+ r+d/src rhost:=gould.doc.ic.ac.uk;rfs:=/usr/r+d;sublink:=${/key}
+ r+d/ucb rhost:=gould.doc.ic.ac.uk;rfs:=/usr/r+d;sublink:=${/key}/${arch}
+ # hades pictures
+ pictures -opts:=rw,grpid,nosuid;rhost:=thpfs \
+ host==thpfs;type:=link;fs:=/nbsd/pictures \
+ host!=thpfs;type:=nfs;rfs:=/nbsd;sublink:=pictures
+ # hades tools
+ hades -opts:=rw,grpid,nosuid;rhost:=thpfs \
+ host==thpfs;type:=link;fs:=/nbsd/hades \
+ host!=thpfs;type:=nfs;rfs:=/nbsd;sublink:=hades
+ # bsd tools for hp.
+ bsd -opts:=rw,grpid,nosuid;arch==hp9000;rhost:=thpfs \
+ host==thpfs;type:=link;fs:=/nbsd/bsd \
+ host!=thpfs;type:=nfs;rfs:=/nbsd;sublink:=bsd
+
+
+File: am-utils.info, Node: /defaults with selectors, Next: /tftpboot in a chroot-ed environment, Prev: /vol, Up: Examples
+
+11.7 '/defaults' with selectors
+===============================
+
+It is sometimes useful to have different defaults for a given map. To
+achieve this, the '/defaults' entry must be able to process normal
+selectors. This feature is turned on by setting 'selectors_in_defaults
+= yes' in the 'amd.conf' file. *Note selectors_in_defaults Parameter::.
+
+ In this example, I set different default NFS mount options for hosts
+which are running over a slower network link. By setting a smaller size
+for the NFS read and write buffer sizes, you can greatly improve remote
+file service performance.
+
+ /defaults \
+ wire==slip-net;opts:=rw,intr,rsize=1024,wsize=1024,timeo=20,retrans=10 \
+ wire!=slip-net;opts:=rw,intr
+
+
+File: am-utils.info, Node: /tftpboot in a chroot-ed environment, Prev: /defaults with selectors, Up: Examples
+
+11.8 '/tftpboot' in a chroot-ed environment
+===========================================
+
+In this complex example, we attempt to run an Amd process _inside_ a
+chroot-ed environment. 'tftpd' (Trivial FTP) is used to trivially
+retrieve files used to boot X-Terminals, Network Printers, Network
+routers, diskless workstations, and other such devices. For security
+reasons, 'tftpd' (and also 'ftpd') processes are run using the chroot(2)
+system call. This provides an environment for these processes, where
+access to any files outside the directory where the chroot-ed process
+runs is denied.
+
+ For example, if you start 'tftpd' on your system with
+
+ chroot /tftpboot /usr/sbin/tftpd
+
+then the 'tftpd' process will not be able to access any files outside
+'/tftpboot'. This ensures that no one can retrieve files such as
+'/etc/passwd' and run password crackers on it.
+
+ Since the TFTP service works by broadcast, it is necessary to have at
+least one TFTP server running on each subnet. If you have lots of files
+that you need to make available for 'tftp', and many subnets, it could
+take significant amounts of disk space on each host serving them.
+
+ A solution we implemented at Columbia University was to have every
+host run 'tftpd', but have those servers retrieve the boot files from
+two replicated servers. Those replicated servers have special
+partitions dedicated to the many network boot files.
+
+ We start Amd as follows:
+
+ amd /tftpboot/.amd amd.tftpboot
+
+ That is, Amd is serving the directory '/tftpboot/.amd'. The 'tftp'
+server runs inside '/tftpboot' and is chroot-ed in that directory too.
+The 'amd.tftpboot' map looks like:
+
+ #
+ # Amd /tftpboot directory -> host map
+ #
+
+ /defaults opts:=nosuid,ro,intr,soft;fs:=/tftpboot/import;type:=nfs
+
+ tp host==lol;rfs:=/n/lol/import/tftpboot;type:=lofs \
+ host==ober;rfs:=/n/ober/misc/win/tftpboot;type:=lofs \
+ rhost:=ober;rfs:=/n/ober/misc/win/tftpboot \
+ rhost:=lol;rfs:=/n/lol/import/tftpboot
+
+ To help understand this example, I list a few of the file entries
+that are created inside '/tftpboot':
+
+ $ ls -la /tftpboot
+ dr-xr-xr-x 2 root 512 Aug 30 23:11 .amd
+ drwxrwsr-x 12 root 512 Aug 30 08:00 import
+ lrwxrwxrwx 1 root 33 Feb 27 1997 adminpr.cfg -> ./.amd/tp/hplj/adminpr.cfg
+ lrwxrwxrwx 1 root 22 Dec 5 1996 tekxp -> ./.amd/tp/xterms/tekxp
+ lrwxrwxrwx 1 root 1 Dec 5 1996 tftpboot -> .
+
+ Here is an explanation of each of the entries listed above:
+
+'.amd'
+ This is the Amd mount point. Note that you do not need to run a
+ separate Amd process for the TFTP service. The chroot(2) system
+ call only protects against file access, but the same process can
+ still serve files and directories inside and outside the chroot-ed
+ environment, because Amd itself was not run in chroot-ed mode.
+
+'import'
+ This is the mount point where Amd will mount the directories
+ containing the boot files. The map is designed so that remote
+ directories will be NFS mounted (even if they are already mounted
+ elsewhere), and local directories are loopback mounted (since they
+ are not accessible outside the chroot-ed '/tftpboot' directory).
+
+'adminpr.cfg'
+'tekxp'
+ Two manually created symbolic links to directories _inside_ the
+ Amd-managed directory. The crossing of the component 'tp' will
+ cause Amd to automount one of the remote replicas. Once crossed,
+ access to files inside proceeds as usual. The 'adminpr.cfg' is a
+ configuration file for an HP Laser-Jet 4si printer, and the 'tekxp'
+ is a directory for Tektronix X-Terminal boot files.
+
+'tftpboot'
+ This innocent looking symlink is important. Usually, when devices
+ boot via the TFTP service, they perform the 'get file' command to
+ retrieve FILE. However, some devices assume that 'tftpd' does not
+ run in a chroot-ed environment, but rather "unprotected", and thus
+ use a full pathname for files to retrieve, as in 'get
+ /tftpboot/file'. This symlink effectively strips out the leading
+ '/tftpboot/'.
+
+
+File: am-utils.info, Node: Internals, Next: Acknowledgments & Trademarks, Prev: Examples, Up: Top
+
+12 Internals
+************
+
+Note that there are more error and logging messages possible than are
+listed here. Most of them are self-explanatory. Refer to the program
+sources for more details on the rest.
+
+* Menu:
+
+* Log Messages::
+
+
+File: am-utils.info, Node: Log Messages, Prev: Internals, Up: Internals
+
+12.1 Log Messages
+=================
+
+In the following sections a brief explanation is given of some of the
+log messages made by Amd. Where the message is in 'typewriter' font, it
+corresponds exactly to the message produced by Amd. Words in "italic"
+are replaced by an appropriate string. Variables, '${var}', indicate
+that the value of the appropriate variable is output.
+
+ Log messages are either sent directly to a file, or logged via the
+syslog(3) mechanism. *Note log_file Parameter::. In either case,
+entries in the file are of the form:
+ date-string hostname amd[pid] message
+
+* Menu:
+
+* Fatal errors::
+* Info messages::
+
+
+File: am-utils.info, Node: Fatal errors, Next: Info messages, Prev: Log Messages, Up: Log Messages
+
+12.1.1 Fatal errors
+-------------------
+
+Amd attempts to deal with unusual events. Whenever it is not possible
+to deal with such an error, Amd will log an appropriate message and, if
+it cannot possibly continue, will either exit or abort. These messages
+are selected by '-x fatal' on the command line. When syslog(3) is being
+used, they are logged with level 'LOG_FATAL'. Even if Amd continues to
+operate it is likely to remain in a precarious state and should be
+restarted at the earliest opportunity.
+
+Attempting to inherit not-a-filesystem
+ The prototype mount point created during a filesystem restart did
+ not contain a reference to the restarted filesystem. This error
+ "should never happen".
+
+Can't bind to domain "NIS-domain"
+ A specific NIS domain was requested on the command line, but no
+ server for that domain is available on the local net.
+
+Can't determine IP address of this host (hostname)
+ When Amd starts it determines its own IP address. If this lookup
+ fails then Amd cannot continue. The hostname it looks up is that
+ obtained returned by gethostname(2) system call.
+
+Can't find root file handle for automount point
+ Amd creates its own file handles for the automount points. When it
+ mounts itself as a server, it must pass these file handles to the
+ local kernel. If the filehandle is not obtainable the mount point
+ is ignored. This error "should never happen".
+
+Must be root to mount filesystems (euid = euid)
+ To prevent embarrassment, Amd makes sure it has appropriate system
+ privileges. This amounts to having an euid of 0. The check is
+ made after argument processing complete to give non-root users a
+ chance to access the '-v' option.
+
+No work to do - quitting
+ No automount points were given on the command line and so there is
+ no work to do.
+
+Out of memory
+ While attempting to malloc some memory, the memory space available
+ to Amd was exhausted. This is an unrecoverable error.
+
+Out of memory in realloc
+ While attempting to realloc some memory, the memory space available
+ to Amd was exhausted. This is an unrecoverable error.
+
+cannot create rpc/udp service
+ Either the NFS or AMQ endpoint could not be created.
+
+gethostname: description
+ The gethostname(2) system call failed during startup.
+
+host name is not set
+ The gethostname(2) system call returned a zero length host name.
+ This can happen if Amd is started in single user mode just after
+ booting the system.
+
+ifs_match called!
+ An internal error occurred while restarting a pre-mounted
+ filesystem. This error "should never happen".
+
+mount_afs: description
+ An error occurred while Amd was mounting itself.
+
+run_rpc failed
+ Somehow the main NFS server loop failed. This error "should never
+ happen".
+
+unable to free rpc arguments in amqprog_1
+ The incoming arguments to the AMQ server could not be free'ed.
+
+unable to free rpc arguments in nfs_program_1
+ The incoming arguments to the NFS server could not be free'ed.
+
+unable to register (AMQ_PROGRAM, AMQ_VERSION, udp)
+ The AMQ server could not be registered with the local portmapper or
+ the internal RPC dispatcher.
+
+unable to register (NFS_PROGRAM, NFS_VERSION, 0)
+ The NFS server could not be registered with the internal RPC
+ dispatcher.
+
+ XXX: This section needs to be updated
+
+
+File: am-utils.info, Node: Info messages, Prev: Fatal errors, Up: Log Messages
+
+12.1.2 Info messages
+--------------------
+
+Amd generates information messages to record state changes. These
+messages are selected by '-x info' on the command line. When syslog(3)
+is being used, they are logged with level 'LOG_INFO'.
+
+ The messages listed below can be generated and are in a format
+suitable for simple statistical analysis. "mount-info" is the string
+that is displayed by "Amq" in its mount information column and placed in
+the system mount table.
+
+"${path}" forcibly timed out
+ An automount point has been timed out by the Amq command.
+
+"${path}" has timed out
+ No access to the automount point has been made within the timeout
+ period.
+
+Filehandle denied for "${rhost}:${rfs}"
+ The mount daemon refused to return a file handle for the requested
+ filesystem.
+
+Filehandle error for "${rhost}:${rfs}": description
+ The mount daemon gave some other error for the requested
+ filesystem.
+
+Finishing with status exit-status
+ Amd is about to exit with the given exit status.
+
+Re-synchronizing cache for map ${map}
+ The named map has been modified and the internal cache is being
+ re-synchronized.
+
+file server ${rhost} is down - timeout of "${path}" ignored
+ An automount point has timed out, but the corresponding file server
+ is known to be down. This message is only produced once for each
+ mount point for which the server is down.
+
+file server ${rhost} type nfs is down
+ An NFS file server that was previously up is now down.
+
+file server ${rhost} type nfs is up
+ An NFS file server that was previously down is now up.
+
+file server ${rhost} type nfs starts down
+ A new NFS file server has been referenced and is known to be down.
+
+file server ${rhost} type nfs starts up
+ A new NFS file server has been referenced and is known to be up.
+
+mount of "${path}" on ${fs} timed out
+ Attempts to mount a filesystem for the given automount point have
+ failed to complete within 30 seconds.
+
+mount-info mounted fstype ${type} on ${fs}
+ A new file system has been mounted.
+
+mount-info restarted fstype ${type} on ${fs}
+ Amd is using a pre-mounted filesystem to satisfy a mount request.
+
+mount-info unmounted fstype ${type} from ${fs}
+ A file system has been unmounted.
+
+mount-info unmounted fstype ${type} from ${fs} link ${fs}/${sublink}
+ A file system of which only a sub-directory was in use has been
+ unmounted.
+
+restarting mount-info on ${fs}
+ A pre-mounted file system has been noted.
+
+ XXX: This section needs to be updated
+
+
+File: am-utils.info, Node: Acknowledgments & Trademarks, Next: Index, Prev: Internals, Up: Top
+
+Acknowledgments & Trademarks
+****************************
+
+Many thanks to the Am-Utils Users mailing list through the months
+developing am-utils. These members have contributed to the discussions,
+ideas, code and documentation, and subjected their systems to alpha
+quality code. Special thanks go to those authors
+(http://www.am-utils.org/docs/am-utils/AUTHORS.txt) who have submitted
+patches, and especially to the maintainers:
+
+ * Erez Zadok (http://www.cs.sunysb.edu/~ezk)
+ * Ion Badulescu <ionut AT badula.org>
+ * Rainer Orth <ro AT techfak.uni-bielefeld.de>
+ * Nick Williams <nick.williams AT morganstanley.com>
+
+ Thanks to the Formal Methods Group at Imperial College for suffering
+patiently while Amd was being developed on their machines.
+
+ Thanks to the many people who have helped with the development of
+Amd, especially Piete Brooks at the Cambridge University Computing Lab
+for many hours of testing, experimentation and discussion.
+
+ Thanks to the older Amd Workers <amd-workers AT
+majordomo.glue.umd.edu> mailing list (now defunct) members for many
+suggestions and bug reports to Amd.
+
+ * DEC, VAX and Ultrix are registered trademarks of Digital Equipment
+ Corporation.
+ * AIX and IBM are registered trademarks of International Business
+ Machines Corporation.
+ * Sun, NFS and SunOS are registered trademarks of Sun Microsystems,
+ Inc.
+ * UNIX is a registered trademark in the USA and other countries,
+ exclusively licensed through X/Open Company, Ltd.
+ * All other registered trademarks are owned by their respective
+ owners.
+
+
+File: am-utils.info, Node: Index, Prev: Acknowledgments & Trademarks, Up: Top
+
+Index
+*****
+
+
+* Menu:
+
+* !exists, boolean mount selector: exists Selector Function.
+ (line 6)
+* !false, boolean mount selector: false Selector Function.
+ (line 6)
+* !in_network, boolean mount selector: in_network Selector Function.
+ (line 6)
+* !netgrp, boolean mount selector: netgrp Selector Function.
+ (line 6)
+* !netgrpd, boolean mount selector: netgrpd Selector Function.
+ (line 6)
+* !true, boolean mount selector: true Selector Function.
+ (line 6)
+* !xhost, boolean mount selector: xhost Selector Function.
+ (line 6)
+* /defaults with selectors: /defaults with selectors.
+ (line 6)
+* /etc/passwd maps: Password maps. (line 6)
+* /etc/rc.local additions: Starting Amd. (line 6)
+* /tftpboot in a chroot-ed environment: /tftpboot in a chroot-ed environment.
+ (line 6)
+* /vol: /vol. (line 6)
+* Additions to /etc/rc.local: Starting Amd. (line 6)
+* addopts, mount option: addopts Option. (line 6)
+* Aliased hostnames: -n Option. (line 6)
+* Alternate locations: Mounting a Volume. (line 6)
+* am-eject: am-eject. (line 6)
+* Am-utils book: AddInfo. (line 79)
+* Amd book: AddInfo. (line 79)
+* Amd command line options: Amd Command Line Options.
+ (line 6)
+* Amd configuration file: -F Option. (line 6)
+* Amd Configuration File: Amd Configuration File.
+ (line 6)
+* Amd configuration file; specifying name: -F Option. (line 6)
+* Amd's PID: Amq -p option. (line 6)
+* Amd's process ID: Amq -p option. (line 6)
+* amd.conf: Amd Configuration File.
+ (line 6)
+* amd.conf common parameters: Common Parameters. (line 6)
+* amd.conf examples: amd.conf Examples. (line 6)
+* amd.conf file: -F Option. (line 6)
+* amd.conf file format: File Format. (line 6)
+* amd.conf global parameters: Global Parameters. (line 6)
+* amd.conf global section: The Global Section. (line 6)
+* amd.conf regular map parameters: Regular Map Parameters.
+ (line 6)
+* amd.conf regular map sections: Regular Map Sections.
+ (line 6)
+* amd.conf-sample: amd.conf-sample. (line 6)
+* amd2ldif: amd2ldif. (line 6)
+* amd2sun: amd2sun. (line 6)
+* Amq command: Run-time Administration.
+ (line 6)
+* arch Parameter: arch Parameter. (line 6)
+* arch Selector Variable: arch Selector Variable.
+ (line 6)
+* arch, FSinfo host attribute: FSinfo arch Option. (line 6)
+* arch, mount selector: arch Selector Variable.
+ (line 6)
+* Architecture dependent volumes: Architecture Sharing.
+ (line 6)
+* Architecture sharing: Architecture Sharing.
+ (line 6)
+* Architecture specific mounts: rwho servers. (line 6)
+* Assorted Tools: Assorted Tools. (line 6)
+* Atomic NFS mounts: Network Filesystem Group.
+ (line 6)
+* auto, filesystem type: Automount Filesystem.
+ (line 6)
+* autodir Selector Variable: autodir Selector Variable.
+ (line 6)
+* autodir, mount selector: autodir Selector Variable.
+ (line 6)
+* autofs_use_lofs Parameter: autofs_use_lofs Parameter.
+ (line 6)
+* Automatic generation of user maps: Password maps. (line 6)
+* Automount directory: -a Option. (line 6)
+* Automount filesystem: Automount Filesystem.
+ (line 6)
+* automount2amd: automount2amd. (line 6)
+* Automounter book: AddInfo. (line 79)
+* Automounter configuration maps: Mount Maps. (line 6)
+* Automounter fundamentals: Fundamentals. (line 6)
+* auto_attrcache Parameter: auto_attrcache Parameter.
+ (line 6)
+* auto_dir Parameter: auto_dir Parameter. (line 6)
+* Background mounts: Mounting a Volume. (line 6)
+* Background to Mail Delivery: Background to Mail Delivery.
+ (line 6)
+* Binding names to filesystems: Volume Binding. (line 6)
+* book: AddInfo. (line 79)
+* bootparams, FSinfo prefix: -b FSinfo Option. (line 6)
+* browsable_dirs Parameter: browsable_dirs Parameter.
+ (line 6)
+* Bug reports: AddInfo. (line 9)
+* byte Selector Variable: byte Selector Variable.
+ (line 6)
+* byte, mount selector: byte Selector Variable.
+ (line 6)
+* Cache interval: -c Option. (line 6)
+* cache, mount map option: Automount Filesystem.
+ (line 15)
+* cachedir, mount option: Caching Filesystem. (line 13)
+* cachefs, filesystem type: Caching Filesystem. (line 6)
+* cache_duration Parameter: cache_duration Parameter.
+ (line 6)
+* Caching Filesystem: Caching Filesystem. (line 6)
+* Catch-all mount point: /vol. (line 6)
+* CD-ROM Filesystem: CD-ROM Filesystem. (line 6)
+* CD-ROM Filesystem <1>: UDF Filesystem. (line 6)
+* cdfs, filesystem type: CD-ROM Filesystem. (line 6)
+* Centralized Mail Spool Directory: Centralized Mail Spool Directory.
+ (line 6)
+* Changing the interval before a filesystem times out: -c Option.
+ (line 6)
+* chroot; /tftpboot example: /tftpboot in a chroot-ed environment.
+ (line 6)
+* Cluster names: -C Option. (line 6)
+* cluster Parameter: cluster Parameter. (line 6)
+* cluster Selector Variable: cluster Selector Variable.
+ (line 6)
+* cluster, FSinfo host attribute: FSinfo cluster Option.
+ (line 6)
+* cluster, mount selector: cluster Selector Variable.
+ (line 6)
+* CNAMEs: xhost Selector Function.
+ (line 6)
+* Command line options, Amd: Amd Command Line Options.
+ (line 6)
+* Command line options, FSinfo: FSinfo Command Line Options.
+ (line 6)
+* config, FSinfo host attribute: FSinfo config Option.
+ (line 6)
+* Configuration file; tags: -T Option. (line 6)
+* Configuration map types: Map Types. (line 6)
+* Controlling Amd: Controlling Amd. (line 6)
+* Controlling Hlfsd: Controlling Hlfsd. (line 6)
+* Creating a pid file: -p Option. (line 6)
+* ctl-amd: ctl-amd. (line 6)
+* ctl-amd <1>: Starting Amd. (line 6)
+* ctl-hlfsd: Controlling Hlfsd. (line 6)
+* ctl-hlfsd <1>: ctl-hlfsd. (line 6)
+* Debug options: -D Option. (line 6)
+* Debugging a new Amd configuration: Amq -P option. (line 6)
+* debugging hesiod resolver service: -D Option. (line 35)
+* Debugging options via Amq: Other Amq options. (line 6)
+* debug_mtab_file Parameter: debug_mtab_file Parameter.
+ (line 6)
+* debug_options Parameter: debug_options Parameter.
+ (line 6)
+* Defining a host, FSinfo: FSinfo host definitions.
+ (line 6)
+* Defining an Amd mount map, FSinfo: FSinfo automount definitions.
+ (line 6)
+* Defining host attributes, FSinfo: FSinfo host attributes.
+ (line 6)
+* delay, mount option: delay Option. (line 6)
+* Delaying mounts from specific locations: delay Option. (line 6)
+* Determining the map type: Map Types. (line 6)
+* dev, mount option: Unix Filesystem. (line 12)
+* dev, mount option <1>: CD-ROM Filesystem. (line 11)
+* dev, mount option <2>: UDF Filesystem. (line 11)
+* dev, mount option <3>: Floppy Filesystem. (line 11)
+* Direct automount filesystem: Direct Automount Filesystem.
+ (line 6)
+* direct, filesystem type: Direct Automount Filesystem.
+ (line 6)
+* Discovering version information: -v Option. (line 6)
+* Discovering what is going on at run-time: Controlling Amd. (line 6)
+* Disk filesystems: Unix Filesystem. (line 6)
+* dismount_interval Parameter: dismount_interval Parameter.
+ (line 6)
+* Displaying brief help: -H Option. (line 6)
+* Displaying brief help <1>: Amq -H option. (line 6)
+* Displaying the process id: -p Option. (line 6)
+* Distributed Mail Spool Service: Distributed Mail Spool Service.
+ (line 6)
+* dollar Selector Variable: dollar Selector Variable.
+ (line 6)
+* Domain name: -d Option. (line 6)
+* domain Selector Variable: domain Selector Variable.
+ (line 6)
+* Domain stripping: Variable Expansion. (line 6)
+* domain, mount selector: domain Selector Variable.
+ (line 6)
+* Domainname operators: Variable Expansion. (line 6)
+* domain_strip Parameter: domain_strip Parameter.
+ (line 6)
+* dumpset, FSinfo filesystems option: FSinfo dumpset Option.
+ (line 6)
+* dumpset, FSinfo prefix: -d FSinfo Option. (line 6)
+* Duplicated volumes: Volume Naming. (line 6)
+* EFS: Unix Filesystem. (line 6)
+* efs, filesystem type: Unix Filesystem. (line 6)
+* Environment variables: Variable Expansion. (line 6)
+* Error filesystem: Error Filesystem. (line 6)
+* error, filesystem type: Error Filesystem. (line 6)
+* Example of architecture specific mounts: rwho servers. (line 6)
+* Example of mounting home directories: Home Directories. (line 6)
+* Executable maps: Executable maps. (line 6)
+* exec_map_timeout Parameter: exec_map_timeout Parameter.
+ (line 6)
+* exists Selector Function: exists Selector Function.
+ (line 6)
+* exists, boolean mount selector: exists Selector Function.
+ (line 6)
+* export, FSinfo special fstype: FSinfo fstype Option.
+ (line 6)
+* exportfs, FSinfo mount option: FSinfo mount Option. (line 6)
+* exports, FSinfo prefix: -e FSinfo Option. (line 6)
+* false Selector Function: false Selector Function.
+ (line 6)
+* false, boolean mount selector: false Selector Function.
+ (line 6)
+* File map syntactic conventions: File maps. (line 6)
+* File maps: File maps. (line 6)
+* Fileserver: Filesystems and Volumes.
+ (line 6)
+* Filesystem: Filesystems and Volumes.
+ (line 6)
+* Filesystem info package: FSinfo. (line 6)
+* Filesystem type; auto: Automount Filesystem.
+ (line 6)
+* Filesystem type; cachefs: Caching Filesystem. (line 6)
+* Filesystem type; cdfs: CD-ROM Filesystem. (line 6)
+* Filesystem type; direct: Direct Automount Filesystem.
+ (line 6)
+* Filesystem type; efs: Unix Filesystem. (line 6)
+* Filesystem type; error: Error Filesystem. (line 6)
+* Filesystem type; host: Network Host Filesystem.
+ (line 6)
+* Filesystem type; inherit: Inheritance Filesystem.
+ (line 6)
+* Filesystem type; link: Symbolic Link Filesystem.
+ (line 6)
+* Filesystem type; linkx: Symbolic Link Filesystem II.
+ (line 6)
+* Filesystem type; lofs: Loopback Filesystem. (line 6)
+* Filesystem type; mfs: Memory/RAM Filesystem.
+ (line 6)
+* Filesystem type; nfs: Network Filesystem. (line 6)
+* Filesystem type; nfsl: NFS-Link Filesystem. (line 6)
+* Filesystem type; nfsx: Network Filesystem Group.
+ (line 6)
+* Filesystem type; nullfs: Null Filesystem. (line 6)
+* Filesystem type; pcfs: Floppy Filesystem. (line 6)
+* Filesystem type; program: Program Filesystem. (line 6)
+* Filesystem type; root: Root Filesystem. (line 6)
+* Filesystem type; tfs: Translucent Filesystem.
+ (line 6)
+* Filesystem type; tmpfs: Shared Memory+Swap Filesystem.
+ (line 6)
+* Filesystem type; toplvl: Top-level Filesystem.
+ (line 6)
+* Filesystem type; udf: UDF Filesystem. (line 6)
+* Filesystem type; ufs: Unix Filesystem. (line 6)
+* Filesystem type; umapfs: User ID Mapping Filesystem.
+ (line 6)
+* Filesystem type; union: Union Filesystem. (line 6)
+* Filesystem type; xfs: Unix Filesystem. (line 6)
+* Filesystem types: Filesystem Types. (line 6)
+* fix-amd-map: fix-amd-map. (line 6)
+* fixmount: fixmount. (line 6)
+* fixrmtab: fixrmtab. (line 6)
+* Flat file maps: File maps. (line 6)
+* Floppy Filesystem: Floppy Filesystem. (line 6)
+* Flushing the map cache: Amq -f option. (line 6)
+* forced_unmounts Parameter: forced_unmounts Parameter.
+ (line 6)
+* Forcing Amq to use a TCP transport: Amq -T option. (line 6)
+* Forcing Amq to use a UDP transport: Amq -U option. (line 6)
+* Forcing filesystem to time out: Amq -u option. (line 6)
+* freq, FSinfo filesystems option: FSinfo freq Option. (line 6)
+* fs, mount option: fs Option. (line 6)
+* FSinfo: FSinfo. (line 6)
+* FSinfo arch host attribute: FSinfo arch Option. (line 6)
+* FSinfo automount definitions: FSinfo automount definitions.
+ (line 6)
+* FSinfo cluster host attribute: FSinfo cluster Option.
+ (line 6)
+* FSinfo command line options: FSinfo Command Line Options.
+ (line 6)
+* FSinfo config host attribute: FSinfo config Option.
+ (line 6)
+* FSinfo dumpset filesystems option: FSinfo dumpset Option.
+ (line 6)
+* FSinfo error messages: FSinfo errors. (line 6)
+* FSinfo filesystems: FSinfo filesystems. (line 6)
+* FSinfo freq filesystems option: FSinfo freq Option. (line 6)
+* FSinfo fstype filesystems option: FSinfo fstype Option.
+ (line 6)
+* FSinfo grammar: FSinfo Grammar. (line 6)
+* FSinfo host attributes: FSinfo host attributes.
+ (line 6)
+* FSinfo host definitions: FSinfo host definitions.
+ (line 6)
+* FSinfo log filesystems option: FSinfo log Option. (line 6)
+* FSinfo mount filesystems option: FSinfo mount Option. (line 6)
+* FSinfo opts filesystems option: FSinfo opts Option. (line 6)
+* FSinfo os host attribute: FSinfo os Option. (line 6)
+* FSinfo overview: FSinfo Overview. (line 6)
+* FSinfo passno filesystems option: FSinfo passno Option.
+ (line 6)
+* FSinfo static mounts: FSinfo static mounts.
+ (line 6)
+* fstab, FSinfo prefix: -f FSinfo Option. (line 6)
+* fstype, FSinfo filesystems option: FSinfo fstype Option.
+ (line 6)
+* fully_qualified_hosts Parameter: fully_qualified_hosts Parameter.
+ (line 6)
+* full_os Parameter: full_os Parameter. (line 6)
+* full_os Selector Variable: full_os Selector Variable.
+ (line 6)
+* full_os, mount selector: full_os Selector Variable.
+ (line 6)
+* Generic volume name: /vol. (line 6)
+* Getting Additional Information: AddInfo. (line 5)
+* Getting real working directory: Amq -w option. (line 6)
+* gid Selector Variable: gid Selector Variable.
+ (line 6)
+* gid, mount selector: gid Selector Variable.
+ (line 6)
+* Global statistics: Amq -s option. (line 6)
+* Grammar, FSinfo: FSinfo Grammar. (line 6)
+* Help; showing from Amd: -H Option. (line 6)
+* Help; showing from Amq: Amq -H option. (line 6)
+* Hesiod maps: Hesiod maps. (line 6)
+* Hesiod; turning on RES_DEBUG: -D Option. (line 35)
+* hesiod_base Parameter: hesiod_base Parameter.
+ (line 6)
+* History: History. (line 6)
+* Hlfsd: Hlfsd. (line 6)
+* Hlfsd Files: Hlfsd Files. (line 6)
+* Hlfsd Options: Hlfsd Options. (line 6)
+* Hlfsd; background: Background to Mail Delivery.
+ (line 6)
+* Hlfsd; controlling: Controlling Hlfsd. (line 6)
+* Hlfsd; Files: Hlfsd Files. (line 6)
+* Hlfsd; introduction: Introduction to Hlfsd.
+ (line 6)
+* Hlfsd; Options: Hlfsd Options. (line 6)
+* Hlfsd; using: Using Hlfsd. (line 6)
+* Hlfsd; Why Deliver Into the Home Directory?: Why Deliver Into the Home Directory?.
+ (line 6)
+* Home directories: Home Directories. (line 6)
+* Home-Link Filesystem: Hlfsd. (line 6)
+* host Selector Variable: host Selector Variable.
+ (line 6)
+* host, filesystem type: Network Host Filesystem.
+ (line 6)
+* host, mount selector: host Selector Variable.
+ (line 6)
+* hostd Selector Variable: hostd Selector Variable.
+ (line 6)
+* hostd, mount selector: hostd Selector Variable.
+ (line 6)
+* Hostname normalization: -n Option. (line 6)
+* hostname, FSinfo command line option: -h FSinfo Option. (line 6)
+* How keys are looked up: Key Lookup. (line 6)
+* How locations are parsed: Location Format. (line 6)
+* How to access environment variables in maps: Variable Expansion.
+ (line 6)
+* How to discover your version of Amd: -v Option. (line 6)
+* How to mount a local disk: Unix Filesystem. (line 6)
+* How to mount a UFS filesystems: Unix Filesystem. (line 6)
+* How to mount all NFS exported filesystems: Network Host Filesystem.
+ (line 6)
+* How to mount an atomic group of NFS filesystems: Network Filesystem Group.
+ (line 6)
+* How to mount and NFS filesystem: Network Filesystem. (line 6)
+* How to reference an existing part of the local name space: Symbolic Link Filesystem II.
+ (line 6)
+* How to reference part of the local name space: Symbolic Link Filesystem.
+ (line 6)
+* How to select log messages: -x Option. (line 6)
+* How to set default map parameters: Map Defaults. (line 6)
+* How to set map cache parameters: Automount Filesystem.
+ (line 6)
+* How to start a direct automount point: Direct Automount Filesystem.
+ (line 6)
+* How to start an indirect automount point: Automount Filesystem.
+ (line 6)
+* How variables are expanded: Variable Expansion. (line 6)
+* inherit, filesystem type: Inheritance Filesystem.
+ (line 6)
+* Inheritance filesystem: Inheritance Filesystem.
+ (line 6)
+* Interval before a filesystem times out: -c Option. (line 6)
+* Introduction: Intro. (line 6)
+* Introduction to Hlfsd: Introduction to Hlfsd.
+ (line 6)
+* in_network Selector Function: in_network Selector Function.
+ (line 6)
+* in_network, boolean mount selector: in_network Selector Function.
+ (line 6)
+* karch Parameter: karch Parameter. (line 6)
+* karch Selector Variable: karch Selector Variable.
+ (line 6)
+* karch, mount selector: karch Selector Variable.
+ (line 6)
+* Keep-alives: Keep-alives. (line 6)
+* Key lookup: Key Lookup. (line 6)
+* key Selector Variable: key Selector Variable.
+ (line 6)
+* key, mount selector: key Selector Variable.
+ (line 6)
+* Killing and starting Amd: Restarting Amd. (line 6)
+* LDAP maps: LDAP maps. (line 6)
+* ldap_base Parameter: ldap_base Parameter. (line 6)
+* ldap_cache_maxmem Parameter: ldap_cache_maxmem Parameter.
+ (line 6)
+* ldap_cache_seconds Parameter: ldap_cache_seconds Parameter.
+ (line 6)
+* ldap_hostports Parameter: ldap_hostports Parameter.
+ (line 6)
+* ldap_proto_version Parameter: ldap_proto_version Parameter.
+ (line 6)
+* License Information: License. (line 6)
+* Lightweight Directory Access Protocol: LDAP maps. (line 6)
+* link, filesystem type: Symbolic Link Filesystem.
+ (line 6)
+* linkx, filesystem type: Symbolic Link Filesystem II.
+ (line 6)
+* Listing currently mounted filesystems: Controlling Amd. (line 6)
+* localhost_address Parameter: localhost_address Parameter.
+ (line 6)
+* local_domain Parameter: local_domain Parameter.
+ (line 6)
+* Location format: Location Format. (line 6)
+* Location lists: Mounting a Volume. (line 6)
+* locking executable pages in memory: -S Option. (line 6)
+* lofs, filesystem type: Loopback Filesystem. (line 6)
+* Log file, resetting: Amq -l option. (line 6)
+* Log filename: -l Option. (line 6)
+* Log message selection: -x Option. (line 6)
+* log, FSinfo filesystems option: FSinfo log Option. (line 6)
+* Logging options via Amq: Other Amq options. (line 6)
+* log_file Parameter: log_file Parameter. (line 6)
+* log_options Parameter: log_options Parameter.
+ (line 6)
+* Looking up keys: Key Lookup. (line 6)
+* Loopback Filesystem: Loopback Filesystem. (line 6)
+* lostaltmail: lostaltmail. (line 6)
+* lostaltmail.conf-sample: lostaltmail.conf-sample.
+ (line 6)
+* lostaltmail; configuration file: lostaltmail.conf-sample.
+ (line 6)
+* Mailing lists: AddInfo. (line 29)
+* Map cache options: Automount Filesystem.
+ (line 6)
+* Map cache synchronizing: Automount Filesystem.
+ (line 6)
+* Map cache types: Automount Filesystem.
+ (line 6)
+* Map cache, flushing: Amq -f option. (line 6)
+* Map defaults: Map Defaults. (line 6)
+* Map entry format: Location Format. (line 6)
+* Map lookup: Key Lookup. (line 6)
+* Map options: Map Options. (line 6)
+* map Selector Variable: map Selector Variable.
+ (line 6)
+* Map types: Map Types. (line 6)
+* map, mount selector: map Selector Variable.
+ (line 6)
+* maps, FSinfo command line option: -m FSinfo Option. (line 6)
+* map_defaults Parameter: map_defaults Parameter.
+ (line 6)
+* map_name Parameter: map_name Parameter. (line 6)
+* map_options Parameter: map_options Parameter.
+ (line 6)
+* map_reload_interval Parameter: map_reload_interval Parameter.
+ (line 6)
+* map_type Parameter: map_type Parameter. (line 6)
+* Memory/RAM Filesystem: Memory/RAM Filesystem.
+ (line 6)
+* mfs, filesystem type: Memory/RAM Filesystem.
+ (line 6)
+* mk-amd-map: mk-amd-map. (line 6)
+* mlockall; using: -S Option. (line 6)
+* Mount a filesystem under program control: Program Filesystem.
+ (line 6)
+* Mount flags; acdirmax: opts Option. (line 19)
+* Mount flags; acdirmin: opts Option. (line 22)
+* Mount flags; acregmax: opts Option. (line 25)
+* Mount flags; acregmin: opts Option. (line 28)
+* Mount flags; actimeo: opts Option. (line 31)
+* Mount flags; auto: opts Option. (line 34)
+* Mount flags; cache: opts Option. (line 38)
+* Mount flags; closesession: opts Option. (line 41)
+* Mount flags; compress: opts Option. (line 44)
+* Mount flags; defperm: opts Option. (line 47)
+* Mount flags; dev: opts Option. (line 51)
+* Mount flags; dirmask: opts Option. (line 54)
+* Mount flags; dumbtimr: opts Option. (line 60)
+* Mount flags; extatt: opts Option. (line 66)
+* Mount flags; fsid: opts Option. (line 69)
+* Mount flags; gens: opts Option. (line 72)
+* Mount flags; gmtoff: opts Option. (line 76)
+* Mount flags; group: opts Option. (line 81)
+* Mount flags; grpid: opts Option. (line 87)
+* Mount flags; ignore: opts Option. (line 35)
+* Mount flags; int: opts Option. (line 90)
+* Mount flags; intr: opts Option. (line 91)
+* Mount flags; lock: opts Option. (line 94)
+* Mount Flags; longname: opts Option. (line 97)
+* Mount Flags; longname <1>: opts Option. (line 249)
+* Mount flags; mask: opts Option. (line 100)
+* Mount flags; maxgroups: opts Option. (line 113)
+* Mount flags; multi: opts Option. (line 110)
+* Mount flags; nfsv3: opts Option. (line 116)
+* Mount flags; noac: opts Option. (line 119)
+* Mount flags; noauto: opts Option. (line 122)
+* Mount flags; nocache: opts Option. (line 127)
+* Mount flags; nocasetrans: opts Option. (line 130)
+* Mount flags; noconn: opts Option. (line 134)
+* Mount flags; nocto: opts Option. (line 137)
+* Mount flags; nodefperm: opts Option. (line 140)
+* Mount flags; nodev: opts Option. (line 144)
+* Mount flags; nodevs: opts Option. (line 145)
+* Mount flags; noexec: opts Option. (line 148)
+* Mount flags; noint: opts Option. (line 151)
+* Mount flags; nojoliet: opts Option. (line 154)
+* Mount flags; nolock: opts Option. (line 158)
+* Mount flags; nomnttab: opts Option. (line 161)
+* Mount flags; norrip: opts Option. (line 165)
+* Mount flags; nosub: opts Option. (line 169)
+* Mount flags; nosuid: opts Option. (line 172)
+* Mount flags; nounmount: opts Option. (line 291)
+* Mount flags; noversion: opts Option. (line 175)
+* Mount Flags; nowin95: opts Option. (line 179)
+* Mount flags; optionstr: opts Option. (line 182)
+* Mount flags; overlay: opts Option. (line 186)
+* Mount flags; pgthresh: opts Option. (line 189)
+* Mount flags; ping: opts Option. (line 297)
+* Mount flags; port: opts Option. (line 192)
+* Mount flags; posix: opts Option. (line 195)
+* Mount flags; private: opts Option. (line 198)
+* Mount flags; proplist: opts Option. (line 202)
+* Mount flags; proto: opts Option. (line 206)
+* Mount flags; public: opts Option. (line 318)
+* Mount flags; quota: opts Option. (line 209)
+* Mount flags; rdonly: opts Option. (line 212)
+* Mount flags; resvport: opts Option. (line 216)
+* Mount flags; retrans: opts Option. (line 223)
+* Mount flags; retry: opts Option. (line 228)
+* Mount flags; retry=N: opts Option. (line 327)
+* Mount flags; ro: opts Option. (line 213)
+* Mount flags; rrcaseins: opts Option. (line 231)
+* Mount flags; rrip: opts Option. (line 235)
+* Mount flags; rsize: opts Option. (line 239)
+* Mount flags; rw: opts Option. (line 243)
+* Mount Flags; sessionnr: opts Option. (line 246)
+* Mount flags; soft: opts Option. (line 252)
+* Mount flags; softlookup: opts Option. (line 330)
+* Mount flags; spongy: opts Option. (line 255)
+* Mount flags; suid: opts Option. (line 258)
+* Mount flags; symttl: opts Option. (line 261)
+* Mount flags; sync: opts Option. (line 264)
+* Mount flags; tcp: opts Option. (line 267)
+* Mount flags; timeo: opts Option. (line 271)
+* Mount flags; unmount: opts Option. (line 343)
+* Mount flags; user: opts Option. (line 275)
+* Mount flags; utimeout=N: opts Option. (line 352)
+* Mount flags; vers: opts Option. (line 281)
+* Mount flags; wsize: opts Option. (line 284)
+* Mount flags; xlatecookie: opts Option. (line 362)
+* Mount home directories: Home Directories. (line 6)
+* Mount information: Mount Maps. (line 6)
+* Mount map option; cache: Automount Filesystem.
+ (line 15)
+* Mount map types: Map Types. (line 6)
+* Mount maps: Mount Maps. (line 6)
+* Mount option; addopts: addopts Option. (line 6)
+* Mount option; cachedir: Caching Filesystem. (line 13)
+* Mount option; delay: delay Option. (line 6)
+* Mount option; dev: Unix Filesystem. (line 12)
+* Mount option; dev <1>: CD-ROM Filesystem. (line 11)
+* Mount option; dev <2>: UDF Filesystem. (line 11)
+* Mount option; dev <3>: Floppy Filesystem. (line 11)
+* Mount option; fs: fs Option. (line 6)
+* Mount option; mount: Program Filesystem. (line 14)
+* Mount option; opts: opts Option. (line 6)
+* Mount option; remopts: remopts Option. (line 6)
+* Mount option; rfs: Network Filesystem. (line 16)
+* Mount option; rfs <1>: Loopback Filesystem. (line 16)
+* Mount option; rhost: Network Filesystem. (line 10)
+* Mount option; sublink: sublink Option. (line 6)
+* Mount option; type: type Option. (line 6)
+* Mount option; umount: Program Filesystem. (line 17)
+* Mount option; unmount: Program Filesystem. (line 17)
+* Mount retries: Mounting a Volume. (line 6)
+* Mount selector; arch: arch Selector Variable.
+ (line 6)
+* Mount selector; autodir: autodir Selector Variable.
+ (line 6)
+* Mount selector; byte: byte Selector Variable.
+ (line 6)
+* Mount selector; cluster: cluster Selector Variable.
+ (line 6)
+* Mount selector; domain: domain Selector Variable.
+ (line 6)
+* Mount selector; exists: exists Selector Function.
+ (line 6)
+* Mount selector; false: false Selector Function.
+ (line 6)
+* Mount selector; full_os: full_os Selector Variable.
+ (line 6)
+* Mount selector; gid: gid Selector Variable.
+ (line 6)
+* Mount selector; host: host Selector Variable.
+ (line 6)
+* Mount selector; hostd: hostd Selector Variable.
+ (line 6)
+* Mount selector; in_network: in_network Selector Function.
+ (line 6)
+* Mount selector; karch: karch Selector Variable.
+ (line 6)
+* Mount selector; key: key Selector Variable.
+ (line 6)
+* Mount selector; map: map Selector Variable.
+ (line 6)
+* Mount selector; netgrp: netgrp Selector Function.
+ (line 6)
+* Mount selector; netgrpd: netgrpd Selector Function.
+ (line 6)
+* Mount selector; netnumber: netnumber Selector Variable.
+ (line 6)
+* Mount selector; network: network Selector Variable.
+ (line 6)
+* Mount selector; os: os Selector Variable.
+ (line 6)
+* Mount selector; osver: osver Selector Variable.
+ (line 6)
+* Mount selector; path: path Selector Variable.
+ (line 6)
+* Mount selector; true: true Selector Function.
+ (line 6)
+* Mount selector; uid: uid Selector Variable.
+ (line 6)
+* Mount selector; vendor: vendor Selector Variable.
+ (line 6)
+* Mount selector; wire: wire Selector Variable.
+ (line 6)
+* Mount selector; xhost: xhost Selector Function.
+ (line 6)
+* mount system call: opts Option. (line 6)
+* mount system call flags: opts Option. (line 6)
+* Mount types: Filesystem Types. (line 6)
+* mount, FSinfo filesystems option: FSinfo mount Option. (line 6)
+* mount, mount option: Program Filesystem. (line 14)
+* Mounting a local disk: Unix Filesystem. (line 6)
+* Mounting a remote part of the name space if target is missing: NFS-Link Filesystem.
+ (line 6)
+* Mounting a UFS filesystem: Unix Filesystem. (line 6)
+* Mounting a volume: Mounting a Volume. (line 6)
+* Mounting an atomic group of NFS filesystems: Network Filesystem Group.
+ (line 6)
+* Mounting an existing part of the local name space: Symbolic Link Filesystem II.
+ (line 6)
+* Mounting an NFS filesystem: Network Filesystem. (line 6)
+* Mounting entire export trees: Network Host Filesystem.
+ (line 6)
+* Mounting part of the local name space: Symbolic Link Filesystem.
+ (line 6)
+* Mounting user filesystems: User Filesystems. (line 6)
+* mount_type Parameter: mount_type Parameter.
+ (line 6)
+* Multiple Amd processes: Amq -P option. (line 6)
+* Multiple-threaded server: Non-blocking Operation.
+ (line 6)
+* Namespace: Volume Binding. (line 6)
+* ndbm maps: ndbm maps. (line 6)
+* netgrp Selector Function: netgrp Selector Function.
+ (line 6)
+* netgrp, boolean mount selector: netgrp Selector Function.
+ (line 6)
+* netgrpd Selector Function: netgrpd Selector Function.
+ (line 6)
+* netgrpd, boolean mount selector: netgrpd Selector Function.
+ (line 6)
+* netnumber Selector Variable: netnumber Selector Variable.
+ (line 6)
+* netnumber, mount selector: netnumber Selector Variable.
+ (line 6)
+* Network filesystem group: Network Filesystem Group.
+ (line 6)
+* Network host filesystem: Network Host Filesystem.
+ (line 6)
+* network Selector Variable: network Selector Variable.
+ (line 6)
+* network, mount selector: network Selector Variable.
+ (line 6)
+* Network-wide naming: Volume Naming. (line 6)
+* NFS: Network Filesystem. (line 6)
+* NFS ping: Keep-alives. (line 6)
+* NFS V.3 support: Supported Platforms. (line 6)
+* nfs, filesystem type: Network Filesystem. (line 6)
+* NFS-Link filesystem II: NFS-Link Filesystem. (line 6)
+* nfsl, filesystem type: NFS-Link Filesystem. (line 6)
+* nfsx, filesystem type: Network Filesystem Group.
+ (line 6)
+* nfs_allow_any_interface Parameter: nfs_allow_any_interface Parameter.
+ (line 6)
+* nfs_allow_insecure_port Parameter: nfs_allow_insecure_port Parameter.
+ (line 6)
+* nfs_proto Parameter: nfs_proto Parameter. (line 6)
+* nfs_retransmit_counter Parameter: nfs_retransmit_counter Parameter.
+ (line 6)
+* nfs_retransmit_counter Parameter <1>: nfs_retransmit_counter_udp Parameter.
+ (line 6)
+* nfs_retransmit_counter Parameter <2>: nfs_retransmit_counter_tcp Parameter.
+ (line 6)
+* nfs_retransmit_counter Parameter <3>: nfs_retransmit_counter_toplvl Parameter.
+ (line 6)
+* nfs_retransmit_counter_tcp Parameter: nfs_retransmit_counter_tcp Parameter.
+ (line 6)
+* nfs_retransmit_counter_toplvl Parameter: nfs_retransmit_counter_toplvl Parameter.
+ (line 6)
+* nfs_retransmit_counter_udp Parameter: nfs_retransmit_counter_udp Parameter.
+ (line 6)
+* nfs_retry_interval Parameter: nfs_retry_interval Parameter.
+ (line 6)
+* nfs_retry_interval Parameter <1>: nfs_retry_interval_udp Parameter.
+ (line 6)
+* nfs_retry_interval Parameter <2>: nfs_retry_interval_tcp Parameter.
+ (line 6)
+* nfs_retry_interval Parameter <3>: nfs_retry_interval_toplvl Parameter.
+ (line 6)
+* nfs_retry_interval_tcp Parameter: nfs_retry_interval_tcp Parameter.
+ (line 6)
+* nfs_retry_interval_toplvl Parameter: nfs_retry_interval_toplvl Parameter.
+ (line 6)
+* nfs_retry_interval_udp Parameter: nfs_retry_interval_udp Parameter.
+ (line 6)
+* nfs_vers Parameter: nfs_vers Parameter. (line 6)
+* NIS (YP) domain name: -y Option. (line 6)
+* NIS (YP) maps: NIS maps. (line 6)
+* NIS+ maps: NIS+ maps. (line 6)
+* nis_domain Parameter: nis_domain Parameter.
+ (line 6)
+* Nodes generated on a restart: Inheritance Filesystem.
+ (line 6)
+* Non-blocking operation: Non-blocking Operation.
+ (line 6)
+* normalize_hostnames Parameter: normalize_hostnames Parameter.
+ (line 6)
+* normalize_slashes Parameter: normalize_slashes Parameter.
+ (line 6)
+* Normalizing hostnames: -n Option. (line 6)
+* Null Filesystem: Null Filesystem. (line 6)
+* nullfs, filesystem type: Null Filesystem. (line 6)
+* Obtaining the source code: Distrib. (line 6)
+* Operating System name: -O Option. (line 6)
+* Operating System version: -o Option. (line 6)
+* Operational principles: Operational Principles.
+ (line 6)
+* opts, FSinfo filesystems option: FSinfo opts Option. (line 6)
+* opts, mount option: opts Option. (line 6)
+* os Parameter: os Parameter. (line 6)
+* os Selector Variable: os Selector Variable.
+ (line 6)
+* os, FSinfo host attribute: FSinfo os Option. (line 6)
+* os, mount selector: os Selector Variable.
+ (line 6)
+* osver Parameter: osver Parameter. (line 6)
+* osver Selector Variable: osver Selector Variable.
+ (line 6)
+* osver, mount selector: osver Selector Variable.
+ (line 6)
+* Overriding defaults on the command line: Amd Command Line Options.
+ (line 6)
+* Overriding or adding options to a mount: addopts Option. (line 6)
+* Overriding the default mount point: fs Option. (line 6)
+* Overriding the local domain name: -d Option. (line 6)
+* Overriding the NIS (YP) domain name: -y Option. (line 6)
+* Passing parameters to the mount system call: opts Option. (line 6)
+* passno, FSinfo filesystems option: FSinfo passno Option.
+ (line 6)
+* Password file maps: Password maps. (line 6)
+* path Selector Variable: path Selector Variable.
+ (line 6)
+* path, mount selector: path Selector Variable.
+ (line 6)
+* Pathname operators: Variable Expansion. (line 6)
+* pawd: pawd. (line 6)
+* pcfs, filesystem type: Floppy Filesystem. (line 6)
+* Picking up existing mounts: -r Option. (line 6)
+* pid file, creating with -p option: -p Option. (line 6)
+* PID; Amd: Amq -p option. (line 6)
+* pid_file Parameter: pid_file Parameter. (line 6)
+* plock Parameter: plock Parameter. (line 6)
+* plock; using: -S Option. (line 6)
+* portmap_program Parameter: portmap_program Parameter.
+ (line 6)
+* preferred_amq_port Parameter: preferred_amq_port Parameter.
+ (line 6)
+* Primary server: delay Option. (line 6)
+* print_pid Parameter: print_pid Parameter. (line 6)
+* print_version Parameter: print_version Parameter.
+ (line 6)
+* Process id: -p Option. (line 6)
+* process id of Amd daemon: -p Option. (line 6)
+* Process ID; Amd: Amq -p option. (line 6)
+* Program filesystem: Program Filesystem. (line 6)
+* program, filesystem type: Program Filesystem. (line 6)
+* Querying an alternate host: Amq -h option. (line 6)
+* quiet, FSinfo command line option: -q FSinfo Option. (line 6)
+* redhat-ctl-amd: redhat-ctl-amd. (line 6)
+* Referencing an existing part of the local name space: Symbolic Link Filesystem II.
+ (line 6)
+* Referencing an existing part of the name space if target exists: NFS-Link Filesystem.
+ (line 6)
+* Referencing part of the local name space: Symbolic Link Filesystem.
+ (line 6)
+* Regular expressions in maps: Automount Filesystem.
+ (line 6)
+* remopts, mount option: remopts Option. (line 6)
+* Replacement volumes: Volume Naming. (line 6)
+* Replicated volumes: Volume Naming. (line 6)
+* Resetting the Amd log file: Amq -l option. (line 6)
+* Resolving aliased hostnames: -n Option. (line 6)
+* Restarting Amd: Restarting Amd. (line 6)
+* Restarting existing mounts: -r Option. (line 6)
+* restart_mounts Parameter: restart_mounts Parameter.
+ (line 6)
+* rfs, mount option: Network Filesystem. (line 16)
+* rfs, mount option <1>: Loopback Filesystem. (line 16)
+* rhost, mount option: Network Filesystem. (line 10)
+* Root filesystem: Root Filesystem. (line 6)
+* root, filesystem type: Root Filesystem. (line 6)
+* RPC Program numbers; Amd: Amq -P option. (line 6)
+* RPC retries: Non-blocking Operation.
+ (line 6)
+* Run-time administration: Run-time Administration.
+ (line 6)
+* Running multiple Amd: Amq -P option. (line 6)
+* rwho servers: rwho servers. (line 6)
+* search_path Parameter: search_path Parameter.
+ (line 6)
+* Secondary server: delay Option. (line 6)
+* sel, FSinfo mount option: FSinfo mount Option. (line 6)
+* Selecting specific log messages: -x Option. (line 6)
+* Selector; arch: arch Selector Variable.
+ (line 6)
+* Selector; autodir: autodir Selector Variable.
+ (line 6)
+* Selector; byte: byte Selector Variable.
+ (line 6)
+* Selector; cluster: cluster Selector Variable.
+ (line 6)
+* Selector; domain: domain Selector Variable.
+ (line 6)
+* Selector; exists: exists Selector Function.
+ (line 6)
+* Selector; false: false Selector Function.
+ (line 6)
+* Selector; full_os: full_os Selector Variable.
+ (line 6)
+* Selector; gid: gid Selector Variable.
+ (line 6)
+* Selector; host: host Selector Variable.
+ (line 6)
+* Selector; hostd: hostd Selector Variable.
+ (line 6)
+* Selector; in_network: in_network Selector Function.
+ (line 6)
+* Selector; karch: karch Selector Variable.
+ (line 6)
+* Selector; key: key Selector Variable.
+ (line 6)
+* Selector; map: map Selector Variable.
+ (line 6)
+* Selector; netgrp: netgrp Selector Function.
+ (line 6)
+* Selector; netgrpd: netgrpd Selector Function.
+ (line 6)
+* Selector; netnumber: netnumber Selector Variable.
+ (line 6)
+* Selector; network: network Selector Variable.
+ (line 6)
+* Selector; os: os Selector Variable.
+ (line 6)
+* Selector; osver: osver Selector Variable.
+ (line 6)
+* Selector; path: path Selector Variable.
+ (line 6)
+* Selector; true: true Selector Function.
+ (line 6)
+* Selector; uid: uid Selector Variable.
+ (line 6)
+* Selector; vendor: vendor Selector Variable.
+ (line 6)
+* Selector; wire: wire Selector Variable.
+ (line 6)
+* Selector; xhost: xhost Selector Function.
+ (line 6)
+* Selectors: Selectors. (line 6)
+* selectors on default: /defaults with selectors.
+ (line 6)
+* selectors_in_defaults Parameter: selectors_in_defaults Parameter.
+ (line 6)
+* Server crashes: Keep-alives. (line 6)
+* Setting a delay on a mount location: delay Option. (line 6)
+* Setting additional options on a mount location: addopts Option.
+ (line 6)
+* Setting Amd's RPC parameters: -t Option. (line 6)
+* Setting debug flags: -D Option. (line 6)
+* Setting default map parameters: Map Defaults. (line 6)
+* Setting map cache parameters: Automount Filesystem.
+ (line 6)
+* Setting map options: Map Options. (line 6)
+* Setting system mount options: opts Option. (line 6)
+* Setting system mount options for non-local networks: remopts Option.
+ (line 6)
+* Setting the Amd log file via Amq: Amq -l option. (line 6)
+* Setting the cluster name: -C Option. (line 6)
+* Setting the default mount directory: -a Option. (line 6)
+* Setting the filesystem type option: type Option. (line 6)
+* Setting the interval before a filesystem times out: -c Option.
+ (line 6)
+* Setting the interval between unmount attempts: -w Option. (line 6)
+* Setting the Kernel architecture: -k Option. (line 6)
+* Setting the local domain name: -d Option. (line 6)
+* Setting the local mount point: fs Option. (line 6)
+* Setting the log file: -l Option. (line 6)
+* Setting the NIS (YP) domain name: -y Option. (line 6)
+* Setting the operating system architecture: -A Option. (line 6)
+* Setting the Operating System name: -O Option. (line 6)
+* Setting the Operating System version: -o Option. (line 6)
+* Setting the sublink option: sublink Option. (line 6)
+* shared libraries: Supported Platforms. (line 6)
+* Shared Memory and Swap Filesystem: Shared Memory+Swap Filesystem.
+ (line 6)
+* Sharing a fileserver between architectures: Architecture Sharing.
+ (line 6)
+* show_statfs_entries Parameter: show_statfs_entries Parameter.
+ (line 6)
+* SIGHUP signal: Automount Filesystem.
+ (line 6)
+* SIGINT signal: Stopping Amd. (line 6)
+* SIGTERM signal: Stopping Amd. (line 6)
+* Single-Host Mail Spool Directory: Single-Host Mail Spool Directory.
+ (line 6)
+* Source code distribution: Distrib. (line 6)
+* Starting Amd: Starting Amd. (line 6)
+* Statically mounts filesystems, FSinfo: FSinfo static mounts.
+ (line 6)
+* Statistics: Amq -s option. (line 6)
+* Stopping Amd: Stopping Amd. (line 6)
+* Stripping the local domain name: Variable Expansion. (line 6)
+* sublink: Filesystems and Volumes.
+ (line 6)
+* sublink, mount option: sublink Option. (line 6)
+* sun_map_syntax Parameter: sun_map_syntax Parameter.
+ (line 6)
+* Supported Platforms: Supported Platforms. (line 6)
+* Symbolic link filesystem: Symbolic Link Filesystem.
+ (line 6)
+* Symbolic link filesystem II: Symbolic Link Filesystem II.
+ (line 6)
+* Symlink if target exists, NFS otherwise: NFS-Link Filesystem.
+ (line 6)
+* symlink, link filesystem type: Symbolic Link Filesystem.
+ (line 6)
+* symlink, linkx filesystem type: Symbolic Link Filesystem II.
+ (line 6)
+* symlink, nfsl filesystem type: NFS-Link Filesystem. (line 6)
+* Synchronizing the map cache: Automount Filesystem.
+ (line 6)
+* syslog: -l Option. (line 6)
+* syslog facility; specifying an alternate: -l Option. (line 13)
+* syslog priorities: -x Option. (line 6)
+* tag Parameter: tag Parameter. (line 6)
+* Tags for Amd configuration file: -T Option. (line 6)
+* TCP: nfs_retransmit_counter_tcp Parameter.
+ (line 6)
+* TCP <1>: nfs_retry_interval_tcp Parameter.
+ (line 6)
+* TCP; using with Amq: Amq -T option. (line 6)
+* tfs, filesystem type: Translucent Filesystem.
+ (line 6)
+* The mount system call: opts Option. (line 6)
+* tmpfs, filesystem type: Shared Memory+Swap Filesystem.
+ (line 6)
+* Top level filesystem: Top-level Filesystem.
+ (line 6)
+* toplvl, filesystem type: Top-level Filesystem.
+ (line 6)
+* Translucent Filesystem: Translucent Filesystem.
+ (line 6)
+* true Selector Function: true Selector Function.
+ (line 6)
+* true, boolean mount selector: true Selector Function.
+ (line 6)
+* truncate_log Parameter: truncate_log Parameter.
+ (line 6)
+* type, mount option: type Option. (line 6)
+* Types of configuration map: Map Types. (line 6)
+* Types of filesystem: Filesystem Types. (line 6)
+* Types of mount map: Map Types. (line 6)
+* udf, filesystem type: UDF Filesystem. (line 6)
+* UDP: nfs_retransmit_counter_udp Parameter.
+ (line 6)
+* UDP <1>: nfs_retransmit_counter_toplvl Parameter.
+ (line 6)
+* UDP <2>: nfs_retry_interval_udp Parameter.
+ (line 6)
+* UDP <3>: nfs_retry_interval_toplvl Parameter.
+ (line 6)
+* UDP; using with Amq: Amq -U option. (line 6)
+* UFS: Unix Filesystem. (line 6)
+* ufs, filesystem type: Unix Filesystem. (line 6)
+* uid Selector Variable: uid Selector Variable.
+ (line 6)
+* uid, mount selector: uid Selector Variable.
+ (line 6)
+* umapfs, filesystem type: User ID Mapping Filesystem.
+ (line 6)
+* umount, mount option: Program Filesystem. (line 17)
+* Union file maps: Union maps. (line 6)
+* Union filesystem: Union Filesystem. (line 6)
+* union, filesystem type: Union Filesystem. (line 6)
+* Unix filesystem: Unix Filesystem. (line 6)
+* Unix namespace: Volume Binding. (line 6)
+* unmount attempt backoff interval: -w Option. (line 6)
+* unmount, mount option: Program Filesystem. (line 17)
+* Unmounting a filesystem: Amq -q option. (line 6)
+* Unmounting a filesystem <1>: Amq -u option. (line 6)
+* unmount_on_exit Parameter: unmount_on_exit Parameter.
+ (line 6)
+* User filesystems: User Filesystems. (line 6)
+* User ID Mapping Filesystem: User ID Mapping Filesystem.
+ (line 6)
+* User maps, automatic generation: Password maps. (line 6)
+* use_tcpwrappers Parameter: use_tcpwrappers Parameter.
+ (line 6)
+* Using FSinfo: Using FSinfo. (line 6)
+* Using Hlfsd: Using Hlfsd. (line 6)
+* Using syslog to log errors: -l Option. (line 6)
+* Using the password file as a map: Password maps. (line 6)
+* Variable expansion: Variable Expansion. (line 6)
+* vendor Parameter: vendor Parameter. (line 6)
+* vendor Selector Variable: vendor Selector Variable.
+ (line 6)
+* vendor, mount selector: vendor Selector Variable.
+ (line 6)
+* verbose, FSinfo command line option: -v FSinfo Option. (line 6)
+* Version information: -v Option. (line 6)
+* Version information at run-time: Amq -v option. (line 6)
+* volname, FSinfo mount option: FSinfo mount Option. (line 6)
+* Volume: Filesystems and Volumes.
+ (line 6)
+* Volume binding: Volume Binding. (line 6)
+* Volume names: Volume Naming. (line 6)
+* wait4amd: wait4amd. (line 6)
+* wait4amd2die: wait4amd2die. (line 6)
+* Why Deliver Into the Home Directory?: Why Deliver Into the Home Directory?.
+ (line 6)
+* Wildcards in maps: Key Lookup. (line 6)
+* wire Selector Variable: wire Selector Variable.
+ (line 6)
+* wire, mount selector: wire Selector Variable.
+ (line 6)
+* wire-test: wire-test. (line 6)
+* XFS: Unix Filesystem. (line 6)
+* xfs, filesystem type: Unix Filesystem. (line 6)
+* xhost Selector Function: xhost Selector Function.
+ (line 6)
+* xhost, boolean mount selector: xhost Selector Function.
+ (line 6)
+* YP domain name: -y Option. (line 6)
+
+
+
+Tag Table:
+Node: Top222
+Node: License2377
+Node: Distrib4022
+Node: AddInfo5121
+Node: Intro8875
+Node: History10010
+Node: Overview12574
+Node: Fundamentals13875
+Node: Filesystems and Volumes14656
+Node: Volume Naming15484
+Node: Volume Binding16749
+Node: Operational Principles17963
+Node: Mounting a Volume19310
+Node: Automatic Unmounting21052
+Node: Keep-alives22332
+Node: Non-blocking Operation24631
+Node: Supported Platforms25757
+Node: Mount Maps26388
+Node: Map Types27220
+Node: File maps28895
+Node: ndbm maps30432
+Node: NIS maps31117
+Node: NIS+ maps32594
+Node: Hesiod maps32864
+Node: Password maps33824
+Node: Union maps34762
+Node: LDAP maps35369
+Node: Executable maps36754
+Node: Key Lookup37654
+Node: Location Format38968
+Node: Map Defaults41709
+Node: Variable Expansion42337
+Node: Selectors45289
+Node: arch Selector Variable47321
+Node: autodir Selector Variable47757
+Node: byte Selector Variable48092
+Node: cluster Selector Variable48578
+Node: domain Selector Variable49052
+Node: dollar Selector Variable49359
+Node: host Selector Variable49851
+Node: hostd Selector Variable50472
+Node: karch Selector Variable50862
+Node: os Selector Variable51462
+Node: osver Selector Variable51867
+Node: full_os Selector Variable52288
+Node: vendor Selector Variable52741
+Node: key Selector Variable53388
+Node: map Selector Variable53904
+Node: netnumber Selector Variable54141
+Node: network Selector Variable54659
+Node: path Selector Variable55174
+Node: wire Selector Variable55468
+Node: uid Selector Variable55968
+Node: gid Selector Variable56729
+Node: exists Selector Function57274
+Node: false Selector Function57594
+Node: netgrp Selector Function57843
+Node: netgrpd Selector Function59653
+Node: in_network Selector Function60339
+Node: true Selector Function61638
+Node: xhost Selector Function61886
+Node: Map Options62280
+Node: addopts Option63025
+Node: delay Option64241
+Node: fs Option64788
+Node: opts Option66659
+Node: remopts Option78491
+Node: sublink Option79377
+Node: type Option79739
+Node: Amd Command Line Options79961
+Node: -a Option82860
+Node: -c Option83213
+Node: -d Option83858
+Node: -k Option84401
+Node: -l Option84945
+Node: -n Option87276
+Node: -o Option87692
+Node: -p Option88154
+Node: -r Option88583
+Node: -t Option88782
+Node: -v Option89472
+Node: -w Option91535
+Node: -x Option91840
+Node: -y Option93801
+Node: -A Option94140
+Node: -C Option94471
+Node: -D Option95122
+Node: -F Option96936
+Node: -H Option97654
+Node: -O Option97821
+Node: -S Option98286
+Node: -T Option98913
+Node: Filesystem Types99256
+Node: Network Filesystem101622
+Node: Network Host Filesystem103272
+Node: Network Filesystem Group105371
+Node: Unix Filesystem107142
+Node: Caching Filesystem108309
+Node: CD-ROM Filesystem110232
+Node: UDF Filesystem110852
+Node: Loopback Filesystem111494
+Node: Memory/RAM Filesystem112429
+Node: Null Filesystem112872
+Node: Floppy Filesystem113236
+Node: Translucent Filesystem113756
+Node: Shared Memory+Swap Filesystem114100
+Node: User ID Mapping Filesystem114662
+Node: Program Filesystem115049
+Node: Symbolic Link Filesystem118170
+Node: Symbolic Link Filesystem II119448
+Node: NFS-Link Filesystem120063
+Node: Automount Filesystem121602
+Node: Direct Automount Filesystem125752
+Node: Union Filesystem127451
+Node: Error Filesystem128962
+Node: Top-level Filesystem129483
+Node: Root Filesystem129899
+Node: Inheritance Filesystem130410
+Node: Amd Configuration File131447
+Node: File Format131960
+Node: The Global Section133427
+Node: Regular Map Sections134035
+Node: Common Parameters134439
+Node: autofs_use_lofs Parameter135198
+Node: browsable_dirs Parameter136465
+Node: map_defaults Parameter137415
+Node: map_options Parameter137955
+Node: map_type Parameter138284
+Node: mount_type Parameter139094
+Node: search_path Parameter139522
+Node: selectors_in_defaults Parameter139966
+Node: sun_map_syntax Parameter140736
+Node: Global Parameters141028
+Node: arch Parameter142878
+Node: auto_attrcache Parameter143189
+Node: auto_dir Parameter146697
+Node: cache_duration Parameter147049
+Node: cluster Parameter147397
+Node: debug_mtab_file Parameter147701
+Node: debug_options Parameter148118
+Node: dismount_interval Parameter148893
+Node: domain_strip Parameter149282
+Node: exec_map_timeout Parameter149825
+Node: forced_unmounts Parameter150500
+Node: full_os Parameter152410
+Node: fully_qualified_hosts Parameter152972
+Node: hesiod_base Parameter153501
+Node: karch Parameter153778
+Node: ldap_base Parameter154417
+Node: ldap_cache_maxmem Parameter154748
+Node: ldap_cache_seconds Parameter155066
+Node: ldap_hostports Parameter155381
+Node: ldap_proto_version Parameter155673
+Node: local_domain Parameter156009
+Node: localhost_address Parameter156468
+Node: log_file Parameter157051
+Node: log_options Parameter158159
+Node: map_reload_interval Parameter159148
+Node: nfs_allow_any_interface Parameter159612
+Node: nfs_allow_insecure_port Parameter160243
+Node: nfs_proto Parameter161172
+Node: nfs_retransmit_counter Parameter161863
+Node: nfs_retransmit_counter_udp Parameter162355
+Node: nfs_retransmit_counter_tcp Parameter162782
+Node: nfs_retransmit_counter_toplvl Parameter163216
+Node: nfs_retry_interval Parameter163798
+Node: nfs_retry_interval_udp Parameter164633
+Node: nfs_retry_interval_tcp Parameter165031
+Node: nfs_retry_interval_toplvl Parameter165436
+Node: nfs_vers Parameter165983
+Node: nis_domain Parameter166656
+Node: normalize_hostnames Parameter167103
+Node: normalize_slashes Parameter167565
+Node: os Parameter168119
+Node: osver Parameter168661
+Node: pid_file Parameter169215
+Node: plock Parameter169795
+Node: portmap_program Parameter170479
+Node: preferred_amq_port Parameter171280
+Node: print_pid Parameter171889
+Node: print_version Parameter172208
+Node: restart_mounts Parameter172640
+Node: show_statfs_entries Parameter173084
+Node: truncate_log Parameter173539
+Node: unmount_on_exit Parameter174023
+Node: use_tcpwrappers Parameter174571
+Node: vendor Parameter175741
+Node: Regular Map Parameters176186
+Node: map_name Parameter176498
+Node: tag Parameter176761
+Node: amd.conf Examples177236
+Node: Run-time Administration178744
+Node: Starting Amd178991
+Node: Stopping Amd179846
+Node: Restarting Amd180652
+Node: Controlling Amd181890
+Node: Amq default183376
+Node: Amq -f option185343
+Node: Amq -h option185795
+Node: Amq -H option186165
+Node: Amq -l option186359
+Node: Amq -m option186799
+Node: Amq -p option187957
+Node: Amq -P option188348
+Node: Amq -q option189027
+Node: Amq -s option189282
+Node: Amq -T option190374
+Node: Amq -U option190700
+Node: Amq -u option191021
+Node: Amq -v option191638
+Node: Amq -w option191880
+Node: Other Amq options192216
+Node: FSinfo192813
+Node: FSinfo Overview193550
+Node: Using FSinfo194734
+Node: FSinfo Grammar196435
+Node: FSinfo host definitions197803
+Node: FSinfo host attributes198920
+Node: FSinfo netif Option200094
+Node: FSinfo config Option200921
+Node: FSinfo arch Option201365
+Node: FSinfo os Option201742
+Node: FSinfo cluster Option202139
+Node: FSinfo filesystems202508
+Node: FSinfo fstype Option205506
+Node: FSinfo opts Option206286
+Node: FSinfo passno Option206579
+Node: FSinfo freq Option206902
+Node: FSinfo mount Option207201
+Node: FSinfo dumpset Option209294
+Node: FSinfo log Option209575
+Node: FSinfo static mounts209836
+Node: FSinfo automount definitions211511
+Node: FSinfo Command Line Options214736
+Node: -a FSinfo Option216375
+Node: -b FSinfo Option216763
+Node: -d FSinfo Option217464
+Node: -e FSinfo Option218080
+Node: -f FSinfo Option218865
+Node: -h FSinfo Option219474
+Node: -m FSinfo Option219861
+Node: -q FSinfo Option220440
+Node: -v FSinfo Option220715
+Node: -D-FSinfo Option221131
+Node: -I FSinfo Option221432
+Node: -U FSinfo Option221739
+Node: FSinfo errors221964
+Node: Hlfsd228561
+Node: Introduction to Hlfsd230278
+Node: Background to Mail Delivery235180
+Node: Single-Host Mail Spool Directory235679
+Node: Centralized Mail Spool Directory236771
+Ref: Centralized Mail Spool Directory-Footnote-1239625
+Ref: Centralized Mail Spool Directory-Footnote-2239932
+Node: Distributed Mail Spool Service240050
+Node: Why Deliver Into the Home Directory?243340
+Node: Using Hlfsd245891
+Node: Controlling Hlfsd246081
+Node: Hlfsd Options248002
+Node: Hlfsd Files252796
+Node: Assorted Tools253712
+Node: am-eject254216
+Node: amd.conf-sample254467
+Node: amd2ldif254679
+Node: amd2sun254937
+Node: automount2amd255180
+Node: ctl-amd256491
+Node: ctl-hlfsd256981
+Node: fix-amd-map257513
+Node: fixmount258022
+Node: fixrmtab258439
+Node: lostaltmail258731
+Node: lostaltmail.conf-sample259492
+Node: mk-amd-map259909
+Node: pawd260204
+Node: redhat-ctl-amd260932
+Node: wait4amd261472
+Node: wait4amd2die262583
+Node: wire-test263143
+Node: Examples264231
+Node: User Filesystems264539
+Node: Home Directories267701
+Node: Architecture Sharing270704
+Node: Wildcard Names272302
+Node: rwho servers273608
+Node: /vol274353
+Node: /defaults with selectors276944
+Node: /tftpboot in a chroot-ed environment277800
+Node: Internals282074
+Node: Log Messages282413
+Node: Fatal errors283132
+Node: Info messages286641
+Node: Acknowledgments & Trademarks289272
+Node: Index290961
+
+End Tag Table
diff --git a/doc/am-utils.info-1 b/doc/am-utils.info-1
new file mode 100644
index 000000000000..37ac0b5e53e4
--- /dev/null
+++ b/doc/am-utils.info-1
@@ -0,0 +1,7645 @@
+This is ../../doc/am-utils.info, produced by makeinfo version 4.8 from
+../../doc/am-utils.texi.
+
+INFO-DIR-SECTION Administration
+START-INFO-DIR-ENTRY
+* Am-utils: (am-utils). The Amd automounter suite of utilities
+END-INFO-DIR-ENTRY
+
+
+File: am-utils.info, Node: Top, Next: License, Up: (DIR)
+
+ Am-utils (4.4BSD Automounter Utilities) User Manual
+For version 6.2-rc1, 21 November 2010
+
+ Erez Zadok
+(Originally by Jan-Simon Pendry and Nick Williams)
+
+ Copyright (C) 1997-2009 Erez Zadok
+Copyright (C) 1989 Jan-Simon Pendry
+Copyright (C) 1989 Imperial College of Science, Technology & Medicine
+Copyright (C) 1989 The Regents of the University of California.
+All Rights Reserved.
+
+ Permission to copy this document, or any portion of it, as necessary
+for use of this software is granted provided this copyright notice and
+statement of permission are included.
+
+ Am-utils is the 4.4BSD Automounter Tool Suite, which includes the Amd
+automounter, the Amq query and control program, the Hlfsd daemon, and
+other tools. This Info file describes how to use and understand the
+tools within Am-utils.
+
+* Menu:
+
+* License:: Explains the terms and conditions for using
+ and distributing Am-utils.
+* Distrib:: How to get the latest Am-utils distribution.
+* AddInfo:: How to get additional information.
+* Intro:: An introduction to Automounting concepts.
+* History:: History of am-utils' development.
+* Overview:: An overview of Amd.
+* Supported Platforms:: Machines and Systems supported by Amd.
+* Mount Maps:: Details of mount maps.
+* Amd Command Line Options:: All the Amd command line options explained.
+* Filesystem Types:: The different mount types supported by Amd.
+* Amd Configuration File:: The amd.conf file syntax and meaning.
+* Run-time Administration:: How to start, stop and control Amd.
+* FSinfo:: The FSinfo filesystem management tool.
+* Hlfsd:: The Home-Link Filesystem server.
+* Assorted Tools:: Other tools which come with am-utils.
+* Examples:: Some examples showing how Amd might be used.
+* Internals:: Implementation details.
+* Acknowledgments & Trademarks:: Legal Notes.
+
+Indexes
+* Index:: An item for each concept.
+
+
+File: am-utils.info, Node: License, Next: Distrib, Prev: Top, Up: Top
+
+License
+*******
+
+Am-utils is not in the public domain; it is copyrighted and there are
+restrictions on its distribution.
+
+ Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the
+ distribution.
+
+ 3. All advertising materials mentioning features or use of this
+ software must display the following acknowledgment:
+
+ "This product includes software developed by the University of
+ California, Berkeley and its contributors, as well as the Trustees
+ of Columbia University."
+
+ 4. Neither the name of the University nor the names of its
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+
+ THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS
+BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+THE POSSIBILITY OF SUCH DAMAGE.
+
+
+File: am-utils.info, Node: Distrib, Next: AddInfo, Prev: License, Up: Top
+
+Source Distribution
+*******************
+
+The Am-utils home page is located in
+ `http://www.am-utils.org/'
+
+ You can get the latest distribution version of Am-utils from
+ `ftp://ftp.am-utils.org/pub/am-utils/am-utils.tar.gz'
+
+ Additional alpha, beta, and release distributions are available in
+ `ftp://ftp.am-utils.org/pub/am-utils/'.
+
+ Revision 5.2 was part of the 4.3BSD Reno distribution.
+
+ Revision 5.3bsdnet, a late alpha version of 5.3, was part of the BSD
+network version 2 distribution
+
+ Revision 6.0 was made independently by Erez Zadok at the Computer
+Science Department of Columbia University (http://www.cs.columbia.edu/),
+as part of his PhD thesis work
+(http://www.fsl.cs.sunysb.edu/docs/zadok-thesis-proposal/). Am-utils
+(especially version 6.1) continues to be developed and maintained at the
+Computer Science Department (http://www.cs.sunysb.edu/) of Stony Brook
+University (http://www.stonybrook.edu/), as a service to the user
+community.
+
+ *Note History::, for more details.
+
+
+File: am-utils.info, Node: AddInfo, Next: Intro, Prev: Distrib, Up: Top
+
+Getting Additional Information
+******************************
+
+Bug Reports
+===========
+
+Before reporting a bug, see if it is a known one in the bugs
+(http://www.am-utils.org/docs/am-utils/BUGS.txt) file.
+
+ If you find a problem and hopefully you can reproduce it, please
+describe it in detail and submit a bug report
+(https://bugzilla.filesystems.org/) via Bugzilla
+(http://www.bugzilla.org/). Alternatively, you can send your bug
+report to the "am-utils" list (see `http://www.am-utils.org/' under
+"Mailing Lists") quoting the details of the release and your
+configuration. These details can be obtained by running the command
+`amd -v'. It would greatly help if you could provide a reproducible
+procedure for detecting the bug you are reporting.
+
+ Providing working patches is highly encouraged. Every patch
+incorporated, however small, will get its author an honorable mention in
+the authors file (http://www.am-utils.org/docs/am-utils/AUTHORS.txt).
+
+Mailing Lists
+=============
+
+There are several mailing lists for people interested in keeping
+up-to-date with developments.
+
+ 1. The users mailing list, `am-utils' is for
+
+ - announcements of alpha and beta releases of am-utils
+
+ - reporting of bugs and patches
+
+ - discussions of new features for am-utils
+
+ - implementation and porting issues
+
+ To subscribe, visit `http://www.am-utils.org/' under "Mailing
+ Lists." After subscribing, you can post a message to this list.
+ To avoid as much spam as possible, only subscribers to this list
+ may post to it.
+
+ Subscribers of `am-utils' are most helpful if they have the time
+ and resources to test new and development versions of amd, on as
+ many different platforms as possible. They should also be
+ prepared to learn and use the GNU Autoconf, Automake, and Libtool
+ packages, as needed; and of course, become familiar with the
+ complex code in the am-utils package. In other words, subscribers
+ on this list should hopefully be able to contribute meaningfully
+ to the development of amd.
+
+ Note that this `am-utils' list used to be called `amd-dev' before
+ January 1st, 2004. Please use the new name, `am-utils'.
+
+ 2. The announcements mailing list, `am-utils-announce' is for
+ announcements only (mostly new releases). To subscribe, visit
+ `http://www.am-utils.org/' under "Mailing Lists." This list is
+ read-only: only am-utils developers may post to it.
+
+ 3. We distribute nightly CVS snapshots in
+ `ftp://ftp.am-utils.org/pub/am-utils/snapshots/daily/'. If you
+ like to get email notices of commits to the am-utils CVS
+ repository, subscribe to the CVS logs mailing list, `am-utils-cvs'
+ at `http://www.am-utils.org/' under "Mailing Lists."
+
+ 4. The older list which was used to user discussions, `amd-workers',
+ is defunct as of January 2004. (Its last address was <amd-workers
+ AT majordomo.glue.umd.edu>.) Don't use `amd-workers': use the
+ newer, more active `am-utils' list.
+
+ 5. For completeness, there's a developers-only closed list called
+ `am-utils-developers' (see `http://www.am-utils.org/' under
+ "Mailing Lists").
+
+
+Am-utils Book
+=============
+
+Erez Zadok (http://www.cs.sunysb.edu/~ezk) wrote a book
+(http://www.fsl.cs.sunysb.edu/docs/amd-book/), titled Linux NFS and
+Automounter Administration, ISBN 0-7821-2739-8, (Sybex, 2001). The
+book is full of details and examples that go beyond what this manual
+has. The book also covers NFS in great detail. Although the book is
+geared toward Linux users, it is general enough for any Unix
+administrator and contains specific sections for non-Linux systems.
+
+
+File: am-utils.info, Node: Intro, Next: History, Prev: AddInfo, Up: Top
+
+Introduction
+************
+
+An "automounter" maintains a cache of mounted filesystems. Filesystems
+are mounted on demand when they are first referenced, and unmounted
+after a period of inactivity.
+
+ Amd may be used as a replacement for Sun's automounter. The choice
+of which filesystem to mount can be controlled dynamically with
+"selectors". Selectors allow decisions of the form "hostname is THIS,"
+or "architecture is not THAT." Selectors may be combined arbitrarily.
+Amd also supports a variety of filesystem types, including NFS, UFS and
+the novel "program" filesystem. The combination of selectors and
+multiple filesystem types allows identical configuration files to be
+used on all machines thus reducing the administrative overhead.
+
+ Amd ensures that it will not hang if a remote server goes down.
+Moreover, Amd can determine when a remote server has become
+inaccessible and then mount replacement filesystems as and when they
+become available.
+
+ Amd contains no proprietary source code and has been ported to
+numerous flavors of Unix.
+
+
+File: am-utils.info, Node: History, Next: Overview, Prev: Intro, Up: Top
+
+History
+*******
+
+The Amd package has been without an official maintainer since 1992.
+Several people have stepped in to maintain it unofficially. Most
+notable were the `upl' (Unofficial Patch Level) releases of Amd,
+created by me (Erez Zadok (http://www.cs.sunysb.edu/~ezk)), and
+available from `ftp://ftp.am-utils.org/pub/amd/'. The last such
+unofficial release was `upl102'.
+
+ Through the process of patching and aging, it was becoming more and
+more apparent that Amd was in much need of revitalizing. Maintaining
+Amd had become a difficult task. I took it upon myself to cleanup the
+code, so that it would be easier to port to new platforms, add new
+features, keep up with the many new feature requests, and deal with the
+never ending stream of bug reports.
+
+ I have been working on such a release of Amd on and off since
+January of 1996. The new suite of tools is currently named "am-utils"
+(AutoMounter Utilities), in line with GNU naming conventions, befitting
+the contents of the package. In October of 1996 I had received enough
+offers to help me with this task that I decided to make a mailing list
+for this group of people. Around the same time, Amd had become a
+necessary part of my PhD thesis work, resulting in more work performed
+on am-utils.
+
+ Am-utils version 6.0 was numbered with a major new release number to
+distinguish it from the last official release of Amd (5.x). Many new
+features have been added such as a GNU `configure' system, NFS Version
+3, a run-time configuration file (`amd.conf'), many new ports, more
+scripts and programs, as well as numerous bug fixes. Another reason
+for the new major release number was to alert users of am-utils that
+user-visible interfaces may have changed. In order to make Amd work
+well for the next 10 years, and be easier to maintain, it was necessary
+to remove old or unused features, change various syntax files, etc.
+However, great care was taken to ensure the maximum possible backwards
+compatibility.
+
+ Am-utils version 6.1 has autofs support for Linux and Solaris 2.5+ as
+the major new feature, in addition to several other minor new features.
+The autofs support is completely transparent to the end-user, aside
+from the fact that `/bin/pwd' now always returns the correct amd-ified
+path. The administrator can easily switch between NFS and autofs
+mounts by changing one parameter in `amd.conf'. Autofs support and
+maintenance was developed in conjunction with Ion Badulescu <ionut AT
+badula.org>.
+
+
+File: am-utils.info, Node: Overview, Next: Supported Platforms, Prev: History, Up: Top
+
+1 Overview
+**********
+
+Amd maintains a cache of mounted filesystems. Filesystems are
+"demand-mounted" when they are first referenced, and unmounted after a
+period of inactivity. Amd may be used as a replacement for Sun's
+automount(8) program. It contains no proprietary source code and has
+been ported to numerous flavors of Unix. *Note Supported Platforms::.
+
+ Amd was designed as the basis for experimenting with filesystem
+layout and management. Although Amd has many direct applications it is
+loaded with additional features which have little practical use. At
+some point the infrequently used components may be removed to streamline
+the production system.
+
+ Amd supports the notion of "replicated" filesystems by evaluating
+each member of a list of possible filesystem locations one by one. Amd
+checks that each cached mapping remains valid. Should a mapping be
+lost - such as happens when a fileserver goes down - Amd automatically
+selects a replacement should one be available.
+
+* Menu:
+
+* Fundamentals::
+* Filesystems and Volumes::
+* Volume Naming::
+* Volume Binding::
+* Operational Principles::
+* Mounting a Volume::
+* Automatic Unmounting::
+* Keep-alives::
+* Non-blocking Operation::
+
+
+File: am-utils.info, Node: Fundamentals, Next: Filesystems and Volumes, Prev: Overview, Up: Overview
+
+1.1 Fundamentals
+================
+
+The fundamental concept behind Amd is the ability to separate the name
+used to refer to a file from the name used to refer to its physical
+storage location. This allows the same files to be accessed with the
+same name regardless of where in the network the name is used. This is
+very different from placing `/n/hostname' in front of the pathname
+since that includes location dependent information which may change if
+files are moved to another machine.
+
+ By placing the required mappings in a centrally administered
+database, filesystems can be re-organized without requiring changes to
+configuration files, shell scripts and so on.
+
+
+File: am-utils.info, Node: Filesystems and Volumes, Next: Volume Naming, Prev: Fundamentals, Up: Overview
+
+1.2 Filesystems and Volumes
+===========================
+
+Amd views the world as a set of fileservers, each containing one or
+more filesystems where each filesystem contains one or more "volumes".
+Here the term "volume" is used to refer to a coherent set of files such
+as a user's home directory or a TeX distribution.
+
+ In order to access the contents of a volume, Amd must be told in
+which filesystem the volume resides and which host owns the filesystem.
+By default the host is assumed to be local and the volume is assumed to
+be the entire filesystem. If a filesystem contains more than one
+volume, then a "sublink" is used to refer to the sub-directory within
+the filesystem where the volume can be found.
+
+
+File: am-utils.info, Node: Volume Naming, Next: Volume Binding, Prev: Filesystems and Volumes, Up: Overview
+
+1.3 Volume Naming
+=================
+
+Volume names are defined to be unique across the entire network. A
+volume name is the pathname to the volume's root as known by the users
+of that volume. Since this name uniquely identifies the volume
+contents, all volumes can be named and accessed from each host, subject
+to administrative controls.
+
+ Volumes may be replicated or duplicated. Replicated volumes contain
+identical copies of the same data and reside at two or more locations in
+the network. Each of the replicated volumes can be used
+interchangeably. Duplicated volumes each have the same name but contain
+different, though functionally identical, data. For example,
+`/vol/tex' might be the name of a TeX distribution which varied for
+each machine architecture.
+
+ Amd provides facilities to take advantage of both replicated and
+duplicated volumes. Configuration options allow a single set of
+configuration data to be shared across an entire network by taking
+advantage of replicated and duplicated volumes.
+
+ Amd can take advantage of replacement volumes by mounting them as
+required should an active fileserver become unavailable.
+
+
+File: am-utils.info, Node: Volume Binding, Next: Operational Principles, Prev: Volume Naming, Up: Overview
+
+1.4 Volume Binding
+==================
+
+Unix implements a namespace of hierarchically mounted filesystems. Two
+forms of binding between names and files are provided. A "hard link"
+completes the binding when the name is added to the filesystem. A
+"soft link" delays the binding until the name is accessed. An
+"automounter" adds a further form in which the binding of name to
+filesystem is delayed until the name is accessed.
+
+ The target volume, in its general form, is a tuple (host, filesystem,
+sublink) which can be used to name the physical location of any volume
+in the network.
+
+ When a target is referenced, Amd ignores the sublink element and
+determines whether the required filesystem is already mounted. This is
+done by computing the local mount point for the filesystem and checking
+for an existing filesystem mounted at the same place. If such a
+filesystem already exists then it is assumed to be functionally
+identical to the target filesystem. By default there is a one-to-one
+mapping between the pair (host, filesystem) and the local mount point so
+this assumption is valid.
+
+
+File: am-utils.info, Node: Operational Principles, Next: Mounting a Volume, Prev: Volume Binding, Up: Overview
+
+1.5 Operational Principles
+==========================
+
+Amd operates by introducing new mount points into the namespace. These
+are called "automount" points. The kernel sees these automount points
+as NFS filesystems being served by Amd. Having attached itself to the
+namespace, Amd is now able to control the view the rest of the system
+has of those mount points. RPC calls are received from the kernel one
+at a time.
+
+ When a "lookup" call is received Amd checks whether the name is
+already known. If it is not, the required volume is mounted. A
+symbolic link pointing to the volume root is then returned. Once the
+symbolic link is returned, the kernel will send all other requests
+direct to the mounted filesystem.
+
+ If a volume is not yet mounted, Amd consults a configuration
+"mount-map" corresponding to the automount point. Amd then makes a
+runtime decision on what and where to mount a filesystem based on the
+information obtained from the map.
+
+ Amd does not implement all the NFS requests; only those relevant to
+name binding such as "lookup", "readlink" and "readdir". Some other
+calls are also implemented but most simply return an error code; for
+example "mkdir" always returns "read-only filesystem".
+
+
+File: am-utils.info, Node: Mounting a Volume, Next: Automatic Unmounting, Prev: Operational Principles, Up: Overview
+
+1.6 Mounting a Volume
+=====================
+
+Each automount point has a corresponding mount map. The mount map
+contains a list of key-value pairs. The key is the name of the volume
+to be mounted. The value is a list of locations describing where the
+filesystem is stored in the network. In the source for the map the
+value would look like
+
+ location1 location2 ... locationN
+
+ Amd examines each location in turn. Each location may contain
+"selectors" which control whether Amd can use that location. For
+example, the location may be restricted to use by certain hosts. Those
+locations which cannot be used are ignored.
+
+ Amd attempts to mount the filesystem described by each remaining
+location until a mount succeeds or Amd can no longer proceed. The
+latter can occur in three ways:
+
+ * If none of the locations could be used, or if all of the locations
+ caused an error, then the last error is returned.
+
+ * If a location could be used but was being mounted in the
+ background then Amd marks that mount as being "in progress" and
+ continues with the next request; no reply is sent to the kernel.
+
+ * Lastly, one or more of the mounts may have been "deferred". A
+ mount is deferred if extra information is required before the
+ mount can proceed. When the information becomes available the
+ mount will take place, but in the mean time no reply is sent to
+ the kernel. If the mount is deferred, Amd continues to try any
+ remaining locations.
+
+ Once a volume has been mounted, Amd establishes a "volume mapping"
+which is used to satisfy subsequent requests.
+
+
+File: am-utils.info, Node: Automatic Unmounting, Next: Keep-alives, Prev: Mounting a Volume, Up: Overview
+
+1.7 Automatic Unmounting
+========================
+
+To avoid an ever increasing number of filesystem mounts, Amd removes
+volume mappings which have not been used recently. A time-to-live
+interval is associated with each mapping and when that expires the
+mapping is removed. When the last reference to a filesystem is removed,
+that filesystem is unmounted. If the unmount fails, for example the
+filesystem is still busy, the mapping is re-instated and its
+time-to-live interval is extended. The global default for this grace
+period is controlled by the `-w' command-line option (*note -w: -w
+Option.) or the amd.conf parameter `dismount_interval' (*note
+dismount_interval Parameter::). It is also possible to set this value
+on a per-mount basis (*note opts: opts Option.).
+
+ Filesystems can be forcefully timed out using the Amq command.
+*Note Run-time Administration::. Note that on new enough systems that
+support forced unmounts, such as Linux, Amd can try to use the
+umount2(2) system call to force the unmount, if the regular umount(2)
+system call failed in a way that indicates that the mount point is hung
+or stale. *Note forced_unmounts Parameter::.
+
+
+File: am-utils.info, Node: Keep-alives, Next: Non-blocking Operation, Prev: Automatic Unmounting, Up: Overview
+
+1.8 Keep-alives
+===============
+
+Use of some filesystem types requires the presence of a server on
+another machine. If a machine crashes then it is of no concern to
+processes on that machine that the filesystem is unavailable. However,
+to processes on a remote host using that machine as a fileserver this
+event is important. This situation is most widely recognized when an
+NFS server crashes and the behavior observed on client machines is that
+more and more processes hang. In order to provide the possibility of
+recovery, Amd implements a "keep-alive" interval timer for some
+filesystem types. Currently only NFS makes use of this service.
+
+ The basis of the NFS keep-alive implementation is the observation
+that most sites maintain replicated copies of common system data such as
+manual pages, most or all programs, system source code and so on. If
+one of those servers goes down it would be reasonable to mount one of
+the others as a replacement.
+
+ The first part of the process is to keep track of which fileservers
+are up and which are down. Amd does this by sending RPC requests to the
+servers' NFS `NullProc' and checking whether a reply is returned.
+While the server state is uncertain the requests are re-transmitted at
+three second intervals and if no reply is received after four attempts
+the server is marked down. If a reply is received the fileserver is
+marked up and stays in that state for 30 seconds at which time another
+NFS ping is sent. This interval is configurable and can even be turned
+off using the ping option. *Note opts Option::.
+
+ Once a fileserver is marked down, requests continue to be sent every
+30 seconds in order to determine when the fileserver comes back up.
+During this time any reference through Amd to the filesystems on that
+server fail with the error "Operation would block". If a replacement
+volume is available then it will be mounted, otherwise the error is
+returned to the user.
+
+ Although this action does not protect user files, which are unique on
+the network, or processes which do not access files via Amd or already
+have open files on the hung filesystem, it can prevent most new
+processes from hanging.
+
+
+File: am-utils.info, Node: Non-blocking Operation, Prev: Keep-alives, Up: Overview
+
+1.9 Non-blocking Operation
+==========================
+
+Since there is only one instance of Amd for each automount point, and
+usually only one instance on each machine, it is important that it is
+always available to service kernel calls. Amd goes to great lengths to
+ensure that it does not block in a system call. As a last resort Amd
+will fork before it attempts a system call that may block indefinitely,
+such as mounting an NFS filesystem. Other tasks such as obtaining
+filehandle information for an NFS filesystem, are done using a purpose
+built non-blocking RPC library which is integrated with Amd's task
+scheduler. This library is also used to implement NFS keep-alives
+(*note Keep-alives::).
+
+ Whenever a mount is deferred or backgrounded, Amd must wait for it
+to complete before replying to the kernel. However, this would cause
+Amd to block waiting for a reply to be constructed. Rather than do
+this, Amd simply "drops" the call under the assumption that the kernel
+RPC mechanism will automatically retry the request.
+
+
+File: am-utils.info, Node: Supported Platforms, Next: Mount Maps, Prev: Overview, Up: Top
+
+2 Supported Platforms
+*********************
+
+Am-utils has been ported to a wide variety of machines and operating
+systems. Am-utils's code works for little-endian and big-endian
+machines, as well as 32 bit and 64 bit architectures. Furthermore, when
+Am-utils ports to an Operating System on one architecture, it is
+generally readily portable to the same Operating System on all
+platforms on which it is available.
+
+ See the `INSTALL' in the distribution for more specific details on
+building and/or configuring for some systems.
+
+
+File: am-utils.info, Node: Mount Maps, Next: Amd Command Line Options, Prev: Supported Platforms, Up: Top
+
+3 Mount Maps
+************
+
+Amd has no built-in knowledge of machines or filesystems. External
+"mount-maps" are used to provide the required information.
+Specifically, Amd needs to know when and under what conditions it
+should mount filesystems.
+
+ The map entry corresponding to the requested name contains a list of
+possible locations from which to resolve the request. Each location
+specifies filesystem type, information required by that filesystem (for
+example the block special device in the case of UFS), and some
+information describing where to mount the filesystem (*note fs
+Option::). A location may also contain "selectors" (*note Selectors::).
+
+* Menu:
+
+* Map Types::
+* Key Lookup::
+* Location Format::
+
+
+File: am-utils.info, Node: Map Types, Next: Key Lookup, Prev: Mount Maps, Up: Mount Maps
+
+3.1 Map Types
+=============
+
+A mount-map provides the run-time configuration information to Amd.
+Maps can be implemented in many ways. Some of the forms supported by
+Amd are regular files, ndbm databases, NIS maps, the "Hesiod" name
+server, and even the password file.
+
+ A mount-map "name" is a sequence of characters. When an automount
+point is created a handle on the mount-map is obtained. For each map
+type configured, Amd attempts to reference the map of the appropriate
+type. If a map is found, Amd notes the type for future use and deletes
+the reference, for example closing any open file descriptors. The
+available maps are configured when Amd is built and can be displayed by
+running the command `amd -v'.
+
+ When using an Amd configuration file (*note Amd Configuration File::)
+and the keyword `map_type' (*note map_type Parameter::), you may force
+the map used to any type.
+
+ By default, Amd caches data in a mode dependent on the type of map.
+This is the same as specifying `cache:=mapdefault' and selects a
+suitable default cache mode depending on the map type. The individual
+defaults are described below. The CACHE option can be specified on
+automount points to alter the caching behavior (*note Automount
+Filesystem::).
+
+ The following map types have been implemented, though some are not
+available on all machines. Run the command `amd -v' to obtain a list
+of map types configured on your machine.
+
+* Menu:
+
+* File maps::
+* ndbm maps::
+* NIS maps::
+* NIS+ maps::
+* Hesiod maps::
+* Password maps::
+* Union maps::
+* LDAP maps::
+* Executable maps::
+
+
+File: am-utils.info, Node: File maps, Next: ndbm maps, Prev: Map Types, Up: Map Types
+
+3.1.1 File maps
+---------------
+
+When Amd searches a file for a map entry it does a simple scan of the
+file and supports both comments and continuation lines.
+
+ Continuation lines are indicated by a backslash character (`\') as
+the last character of a line in the file. The backslash, newline
+character _and any leading white space on the following line_ are
+discarded. A maximum line length of 2047 characters is enforced after
+continuation lines are read but before comments are stripped. Each
+line must end with a newline character; that is newlines are
+terminators, not separators. The following examples illustrate this:
+
+ key valA valB; \
+ valC
+
+ specifies _three_ locations, and is identical to
+
+ key valA valB; valC
+
+ However,
+
+ key valA valB;\
+ valC
+
+ specifies only _two_ locations, and is identical to
+
+ key valA valB;valC
+
+ After a complete line has been read from the file, including
+continuations, Amd determines whether there is a comment on the line.
+A comment begins with a hash ("`#'") character and continues to the end
+of the line. There is no way to escape or change the comment lead-in
+character.
+
+ Note that continuation lines and comment support "only" apply to
+file maps, or ndbm maps built with the `mk-amd-map' program.
+
+ When caching is enabled, file maps have a default cache mode of
+`all' (*note Automount Filesystem::).
+
+
+File: am-utils.info, Node: ndbm maps, Next: NIS maps, Prev: File maps, Up: Map Types
+
+3.1.2 ndbm maps
+---------------
+
+An ndbm map may be used as a fast access form of a file map. The
+program, `mk-amd-map', converts a normal map file into an ndbm database.
+This program supports the same continuation and comment conventions that
+are provided for file maps. Note that ndbm format files may _not_ be
+sharable across machine architectures. The notion of speed generally
+only applies to large maps; a small map, less than a single disk block,
+is almost certainly better implemented as a file map.
+
+ ndbm maps have a default cache mode of `all' (*note Automount
+Filesystem::).
+
+
+File: am-utils.info, Node: NIS maps, Next: NIS+ maps, Prev: ndbm maps, Up: Map Types
+
+3.1.3 NIS maps
+--------------
+
+When using NIS (formerly YP), an Amd map is implemented directly by the
+underlying NIS map. Comments and continuation lines are _not_
+supported in the automounter and must be stripped when constructing the
+NIS server's database.
+
+ NIS maps have a default cache mode of `all' (*note Automount
+Filesystem::).
+
+ The following rule illustrates what could be added to your NIS
+`Makefile', in this case causing the `amd.home' map to be rebuilt:
+ $(YPTSDIR)/amd.home.time: $(ETCDIR)/amd.home
+ -@sed -e "s/#.*$$//" -e "/^$$/d" $(ETCDIR)/amd.home | \
+ awk '{ \
+ for (i = 1; i <= NF; i++) \
+ if (i == NF) { \
+ if (substr($$i, length($$i), 1) == "\\") \
+ printf("%s", substr($$i, 1, length($$i) - 1)); \
+ else \
+ printf("%s\n", $$i); \
+ } \
+ else \
+ printf("%s ", $$i); \
+ }' | \
+ $(MAKEDBM) - $(YPDBDIR)/amd.home; \
+ touch $(YPTSDIR)/amd.home.time; \
+ echo "updated amd.home"; \
+ if [ ! $(NOPUSH) ]; then \
+ $(YPPUSH) amd.home; \
+ echo "pushed amd.home"; \
+ else \
+ : ; \
+ fi
+
+ Here `$(YPTSDIR)' contains the time stamp files, and `$(YPDBDIR)'
+contains the dbm format NIS files.
+
+
+File: am-utils.info, Node: NIS+ maps, Next: Hesiod maps, Prev: NIS maps, Up: Map Types
+
+3.1.4 NIS+ maps
+---------------
+
+NIS+ maps do not support cache mode `all' and, when caching is enabled,
+have a default cache mode of `inc'.
+
+ XXX: FILL IN WITH AN EXAMPLE.
+
+
+File: am-utils.info, Node: Hesiod maps, Next: Password maps, Prev: NIS+ maps, Up: Map Types
+
+3.1.5 Hesiod maps
+-----------------
+
+When the map name begins with the string `hesiod.' lookups are made
+using the "Hesiod" name server. The string following the dot is used
+as a name qualifier and is prepended with the key being located. The
+entire string is then resolved in the `automount' context, or the
+amd.conf parameter `hesiod_base' (*note hesiod_base Parameter::). For
+example, if the key is `jsp' and map name is `hesiod.homes' then
+"Hesiod" is asked to resolve `jsp.homes.automount'.
+
+ Hesiod maps do not support cache mode `all' and, when caching is
+enabled, have a default cache mode of `inc' (*note Automount
+Filesystem::).
+
+ The following is an example of a "Hesiod" map entry:
+
+ jsp.homes.automount HS TXT "rfs:=/home/charm;rhost:=charm;sublink:=jsp"
+ njw.homes.automount HS TXT "rfs:=/home/dylan/dk2;rhost:=dylan;sublink:=njw"
+
+
+File: am-utils.info, Node: Password maps, Next: Union maps, Prev: Hesiod maps, Up: Map Types
+
+3.1.6 Password maps
+-------------------
+
+The password map support is unlike the four previous map types. When
+the map name is the string `/etc/passwd' Amd can lookup a user name in
+the password file and re-arrange the home directory field to produce a
+usable map entry.
+
+ Amd assumes the home directory has the format
+`/anydir/dom1/../domN/login'. It breaks this string into a map entry
+where `${rfs}' has the value `/anydir/domN', `${rhost}' has the value
+`domN.....dom1', and `${sublink}' has the value login.
+
+ Thus if the password file entry was
+
+ /home/achilles/jsp
+
+ the map entry used by Amd would be
+
+ rfs:=/home/achilles;rhost:=achilles;sublink:=jsp
+
+ Similarly, if the password file entry was
+
+ /home/cc/sugar/mjh
+
+ the map entry used by Amd would be
+
+ rfs:=/home/sugar;rhost:=sugar.cc;sublink:=mhj
+
+
+File: am-utils.info, Node: Union maps, Next: LDAP maps, Prev: Password maps, Up: Map Types
+
+3.1.7 Union maps
+----------------
+
+The union map support is provided specifically for use with the union
+filesystem, *note Union Filesystem::.
+
+ It is identified by the string `union:' which is followed by a colon
+separated list of directories. The directories are read in order, and
+the names of all entries are recorded in the map cache. Later
+directories take precedence over earlier ones. The union filesystem
+type then uses the map cache to determine the union of the names in all
+the directories.
+
+
+File: am-utils.info, Node: LDAP maps, Next: Executable maps, Prev: Union maps, Up: Map Types
+
+3.1.8 LDAP maps
+---------------
+
+LDAP (Lightweight Directory Access Protocol) maps do not support cache
+mode `all' and, when caching is enabled, have a default cache mode of
+`inc'.
+
+ For example, an Amd map `amd.home' that looks as follows:
+
+ /defaults opts:=rw,intr;type:=link
+
+ zing -rhost:=shekel \
+ host==shekel \
+ host!=shekel;type:=nfs
+ when converted to LDAP (*note amd2ldif::), will result in the
+following LDAP database:
+ $ amd2ldif amd.home CUCS < amd.home
+ dn: cn=amdmap timestamp, CUCS
+ cn : amdmap timestamp
+ objectClass : amdmapTimestamp
+ amdmapTimestamp: 873071363
+
+ dn: cn=amdmap amd.home[/defaults], CUCS
+ cn : amdmap amd.home[/defaults]
+ objectClass : amdmap
+ amdmapName : amd.home
+ amdmapKey : /defaults
+ amdmapValue : opts:=rw,intr;type:=link
+
+ dn: cn=amdmap amd.home[], CUCS
+ cn : amdmap amd.home[]
+ objectClass : amdmap
+ amdmapName : amd.home
+ amdmapKey :
+ amdmapValue :
+
+ dn: cn=amdmap amd.home[zing], CUCS
+ cn : amdmap amd.home[zing]
+ objectClass : amdmap
+ amdmapName : amd.home
+ amdmapKey : zing
+ amdmapValue : -rhost:=shekel host==shekel host!=shekel;type:=nfs
+
+
+File: am-utils.info, Node: Executable maps, Prev: LDAP maps, Up: Map Types
+
+3.1.9 Executable maps
+---------------------
+
+An executable map is a dynamic map in which the keys and values for the
+maps are generated on the fly by a program or script. The program is
+expected to take a single parameter argument which is the key to
+lookup. If the key is found, the program should print on stdout the
+key-value pair that were found; if the key was not found, nothing
+should be printed out. Below is an sample of such a map script:
+
+ #!/bin/sh
+ # executable map example
+ case "$1" in
+ "/defaults" )
+ echo "/defaults type:=nfs;rfs:=filer"
+ ;;
+ "a" )
+ echo "a type:=nfs;fs:=/tmp"
+ ;;
+ "b" )
+ echo "b type:=link;fs:=/usr/local"
+ ;;
+ * ) # no match, echo nothing
+ ;;
+ esac
+
+ *Note exec_map_timeout Parameter::.
+
+
+File: am-utils.info, Node: Key Lookup, Next: Location Format, Prev: Map Types, Up: Mount Maps
+
+3.2 How keys are looked up
+==========================
+
+The key is located in the map whose type was determined when the
+automount point was first created. In general the key is a pathname
+component. In some circumstances this may be modified by variable
+expansion (*note Variable Expansion::) and prefixing. If the automount
+point has a prefix, specified by the PREF option, then that is
+prepended to the search key before the map is searched.
+
+ If the map cache is a `regexp' cache then the key is treated as an
+egrep-style regular expression, otherwise a normal string comparison is
+made.
+
+ If the key cannot be found then a "wildcard" match is attempted.
+Amd repeatedly strips the basename from the key, appends `/*' and
+attempts a lookup. Finally, Amd attempts to locate the special key `*'.
+
+ For example, the following sequence would be checked if
+`home/dylan/dk2' was being located:
+
+ home/dylan/dk2
+ home/dylan/*
+ home/*
+ *
+
+ At any point when a wildcard is found, Amd proceeds as if an exact
+match had been found and the value field is then used to resolve the
+mount request, otherwise an error code is propagated back to the kernel.
+(*note Filesystem Types::).
+
+
+File: am-utils.info, Node: Location Format, Prev: Key Lookup, Up: Mount Maps
+
+3.3 Location Format
+===================
+
+The value field from the lookup provides the information required to
+mount a filesystem. The information is parsed according to the syntax
+shown below.
+
+ location-list:
+ location-selection
+ location-list white-space || white-space location-selection
+ location-selection:
+ location
+ location-selection white-space location
+ location:
+ location-info
+ -location-info
+ -
+ location-info:
+ sel-or-opt
+ location-info;sel-or-opt
+ ;
+ sel-or-opt:
+ selection
+ opt-ass
+ selection:
+ selector==value
+ selector!=value
+ opt-ass:
+ option:=value
+ white-space:
+ space
+ tab
+
+ Note that unquoted whitespace is not allowed in a location
+description. White space is only allowed, and is mandatory, where
+shown with non-terminal white-space.
+
+ A "location-selection" is a list of possible volumes with which to
+satisfy the request. Each "location-selection" is tried sequentially,
+until either one succeeds or all fail. This, by the way, is different
+from the historically documented behavior, which claimed (falsely, at
+least for last 3 years) that Amd would attempt to mount all
+"location-selection"s in parallel and the first one to succeed would be
+used.
+
+ "location-selection"s are optionally separated by the `||' operator.
+The effect of this operator is to prevent use of location-selections
+to its right if any of the location-selections on its left were
+selected, whether or not any of them were successfully mounted (*note
+Selectors::).
+
+ The location-selection, and singleton "location-list",
+`type:=ufs;dev:=/dev/xd1g' would inform Amd to mount a UFS filesystem
+from the block special device `/dev/xd1g'.
+
+ The "sel-or-opt" component is either the name of an option required
+by a specific filesystem, or it is the name of a built-in, predefined
+selector such as the architecture type. The value may be quoted with
+double quotes `"', for example `type:="ufs";dev:="/dev/xd1g"'. These
+quotes are stripped when the value is parsed and there is no way to get
+a double quote into a value field. Double quotes are used to get white
+space into a value field, which is needed for the program filesystem
+(*note Program Filesystem::).
+
+* Menu:
+
+* Map Defaults::
+* Variable Expansion::
+* Selectors::
+* Map Options::
+
+
+File: am-utils.info, Node: Map Defaults, Next: Variable Expansion, Prev: Location Format, Up: Location Format
+
+3.3.1 Map Defaults
+------------------
+
+A location beginning with a dash `-' is used to specify default values
+for subsequent locations. Any previously specified defaults in the
+location-list are discarded. The default string can be empty in which
+case no defaults apply.
+
+ The location `-fs:=/mnt;opts:=ro' would set the local mount point to
+`/mnt' and cause mounts to be read-only by default. Defaults specified
+this way are appended to, and so override, any global map defaults
+given with `/defaults').
+
+
+File: am-utils.info, Node: Variable Expansion, Next: Selectors, Prev: Map Defaults, Up: Location Format
+
+3.3.2 Variable Expansion
+------------------------
+
+To allow generic location specifications Amd does variable expansion on
+each location and also on some of the option strings. Any option or
+selector appearing in the form `$"var"' is replaced by the current
+value of that option or selector. For example, if the value of
+`${key}' was `bin', `${autodir}' was `/a' and `${fs}' was
+`${autodir}/local/${key}' then after expansion `${fs}' would have the
+value `/a/local/bin'. Any environment variable can be accessed in a
+similar way.
+
+ Two pathname operators are available when expanding a variable. If
+the variable name begins with `/' then only the last component of the
+pathname is substituted. For example, if `${path}' was `/foo/bar' then
+`${/path}' would be expanded to `bar'. Similarly, if the variable name
+ends with `/' then all but the last component of the pathname is
+substituted. In the previous example, `${path/}' would be expanded to
+`/foo'.
+
+ Two domain name operators are also provided. If the variable name
+begins with `.' then only the domain part of the name is substituted.
+For example, if `${rhost}' was `swan.doc.ic.ac.uk' then `${.rhost}'
+would be expanded to `doc.ic.ac.uk'. Similarly, if the variable name
+ends with `.' then only the host component is substituted. In the
+previous example, `${rhost.}' would be expanded to `swan'.
+
+ Variable expansion is a two phase process. Before a location is
+parsed, all references to selectors, eg `${path}', are expanded. The
+location is then parsed, selections are evaluated and option assignments
+recorded. If there were no selections or they all succeeded the
+location is used and the values of the following options are expanded in
+the order given: SUBLINK, RFS, FS, OPTS, REMOPTS, MOUNT and UNMOUNT.
+
+ Note that expansion of option values is done after "all" assignments
+have been completed and not in a purely left to right order as is done
+by the shell. This generally has the desired effect but care must be
+taken if one of the options references another, in which case the
+ordering can become significant.
+
+ There are two special cases concerning variable expansion:
+
+ 1. before a map is consulted, any selectors in the name received from
+ the kernel are expanded. For example, if the request from the
+ kernel was for `${arch}.bin' and the machine architecture was
+ `vax', the value given to `${key}' would be `vax.bin'.
+
+ 2. the value of `${rhost}' is expanded and normalized before the
+ other options are expanded. The normalization process strips any
+ local sub-domain components. For example, if `${domain}' was
+ `Berkeley.EDU' and `${rhost}' was initially `snow.Berkeley.EDU',
+ after the normalization it would simply be `snow'. Hostname
+ normalization is currently done in a _case-dependent_ manner.
+
+
+File: am-utils.info, Node: Selectors, Next: Map Options, Prev: Variable Expansion, Up: Location Format
+
+3.3.3 Selectors
+---------------
+
+Selectors are used to control the use of a location. It is possible to
+share a mount map between many machines in such a way that filesystem
+location, architecture and operating system differences are hidden from
+the users. A selector of the form `arch==sun3;os==sunos4' would only
+apply on Sun-3s running SunOS 4.x.
+
+ Selectors can be negated by using `!=' instead of `=='. For example
+to select a location on all non-Vax machines the selector `arch!=vax'
+would be used.
+
+ Selectors are evaluated left to right. If a selector fails then that
+location is ignored. Thus the selectors form a conjunction and the
+locations form a disjunction. If all the locations are ignored or
+otherwise fail then Amd uses the "error" filesystem (*note Error
+Filesystem::). This is equivalent to having a location `type:=error'
+at the end of each mount-map entry.
+
+ The default value of many of the selectors listed here can be
+overridden by an Amd command line switch or in an Amd configuration
+file. *Note Amd Configuration File::.
+
+ The following selectors are currently implemented.
+
+* Menu:
+
+* arch Selector Variable::
+* autodir Selector Variable::
+* byte Selector Variable::
+* cluster Selector Variable::
+* domain Selector Variable::
+* dollar Selector Variable::
+* host Selector Variable::
+* hostd Selector Variable::
+* karch Selector Variable::
+* os Selector Variable::
+* osver Selector Variable::
+* full_os Selector Variable::
+* vendor Selector Variable::
+
+* key Selector Variable::
+* map Selector Variable::
+* netnumber Selector Variable::
+* network Selector Variable::
+* path Selector Variable::
+* wire Selector Variable::
+* uid Selector Variable::
+* gid Selector Variable::
+
+* exists Selector Function::
+* false Selector Function::
+* netgrp Selector Function::
+* netgrpd Selector Function::
+* in_network Selector Function::
+* true Selector Function::
+* xhost Selector Function::
+
+
+File: am-utils.info, Node: arch Selector Variable, Next: autodir Selector Variable, Prev: Selectors, Up: Selectors
+
+3.3.3.1 arch Selector Variable
+..............................
+
+The machine architecture which was automatically determined at compile
+time. The architecture type can be displayed by running the command
+`amd -v'. You can override this value also using the `-A' command line
+option. *Note Supported Platforms::.
+
+
+File: am-utils.info, Node: autodir Selector Variable, Next: byte Selector Variable, Prev: arch Selector Variable, Up: Selectors
+
+3.3.3.2 autodir Selector Variable
+.................................
+
+The default directory under which to mount filesystems. This may be
+changed by the `-a' command line option. *Note fs Option::.
+
+
+File: am-utils.info, Node: byte Selector Variable, Next: cluster Selector Variable, Prev: autodir Selector Variable, Up: Selectors
+
+3.3.3.3 byte Selector Variable
+..............................
+
+The machine's byte ordering. This is either `little', indicating
+little-endian, or `big', indicating big-endian. One possible use is to
+share `rwho' databases (*note rwho servers::). Another is to share
+ndbm databases, however this use can be considered a courageous
+juggling act.
+
+
+File: am-utils.info, Node: cluster Selector Variable, Next: domain Selector Variable, Prev: byte Selector Variable, Up: Selectors
+
+3.3.3.4 cluster Selector Variable
+.................................
+
+This is provided as a hook for the name of the local cluster. This can
+be used to decide which servers to use for copies of replicated
+filesystems. `${cluster}' defaults to the value of `${domain}' unless
+a different value is set with the `-C' command line option.
+
+
+File: am-utils.info, Node: domain Selector Variable, Next: dollar Selector Variable, Prev: cluster Selector Variable, Up: Selectors
+
+3.3.3.5 domain Selector Variable
+................................
+
+The local domain name as specified by the `-d' command line option.
+*Note host Selector Variable::.
+
+
+File: am-utils.info, Node: dollar Selector Variable, Next: host Selector Variable, Prev: domain Selector Variable, Up: Selectors
+
+3.3.3.6 dollar Selector Variable
+................................
+
+This is a special variable, whose sole purpose is to produce a literal
+dollar sign in the value of another variable. For example, if you have
+a remote file system whose name is `/disk$s', you can mount it by
+setting the remote file system variable as follows:
+
+ rfs:=/disk${dollar}s
+
+
+File: am-utils.info, Node: host Selector Variable, Next: hostd Selector Variable, Prev: dollar Selector Variable, Up: Selectors
+
+3.3.3.7 host Selector Variable
+..............................
+
+The local hostname as determined by gethostname(2). If no domain name
+was specified on the command line and the hostname contains a period
+`.' then the string before the period is used as the host name, and the
+string after the period is assigned to `${domain}'. For example, if
+the hostname is `styx.doc.ic.ac.uk' then `host' would be `styx' and
+`domain' would be `doc.ic.ac.uk'. `hostd' would be `styx.doc.ic.ac.uk'.
+
+
+File: am-utils.info, Node: hostd Selector Variable, Next: karch Selector Variable, Prev: host Selector Variable, Up: Selectors
+
+3.3.3.8 hostd Selector Variable
+...............................
+
+This resolves to the `${host}' and `${domain}' concatenated with a `.'
+inserted between them if required. If `${domain}' is an empty string
+then `${host}' and `${hostd}' will be identical.
+
+
+File: am-utils.info, Node: karch Selector Variable, Next: os Selector Variable, Prev: hostd Selector Variable, Up: Selectors
+
+3.3.3.9 karch Selector Variable
+...............................
+
+This is provided as a hook for the kernel architecture. This is used on
+SunOS 4 and SunOS 5, for example, to distinguish between different
+`/usr/kvm' volumes. `${karch}' defaults to the "machine" value gotten
+from uname(2). If the uname(2) system call is not available, the value
+of `${karch}' defaults to that of `${arch}'. Finally, a different
+value can be set with the `-k' command line option.
+
+
+File: am-utils.info, Node: os Selector Variable, Next: osver Selector Variable, Prev: karch Selector Variable, Up: Selectors
+
+3.3.3.10 os Selector Variable
+.............................
+
+The operating system. Like the machine architecture, this is
+automatically determined at compile time. The operating system name can
+be displayed by running the command `amd -v'. *Note Supported
+Platforms::.
+
+
+File: am-utils.info, Node: osver Selector Variable, Next: full_os Selector Variable, Prev: os Selector Variable, Up: Selectors
+
+3.3.3.11 osver Selector Variable
+................................
+
+The operating system version. Like the machine architecture, this is
+automatically determined at compile time. The operating system name can
+be displayed by running the command `amd -v'. *Note Supported
+Platforms::.
+
+
+File: am-utils.info, Node: full_os Selector Variable, Next: vendor Selector Variable, Prev: osver Selector Variable, Up: Selectors
+
+3.3.3.12 full_os Selector Variable
+..................................
+
+The full name of the operating system, including its version. This
+value is automatically determined at compile time. The full operating
+system name and version can be displayed by running the command `amd
+-v'. *Note Supported Platforms::.
+
+
+File: am-utils.info, Node: vendor Selector Variable, Next: key Selector Variable, Prev: full_os Selector Variable, Up: Selectors
+
+3.3.3.13 vendor Selector Variable
+.................................
+
+The name of the vendor of the operating system. This value is
+automatically determined at compile time. The name of the vendor can be
+displayed by running the command `amd -v'. *Note Supported Platforms::.
+
+
+
+
+ The following selectors are also provided. Unlike the other
+selectors, they vary for each lookup. Note that when the name from the
+kernel is expanded prior to a map lookup, these selectors are all
+defined as empty strings.
+
+
+File: am-utils.info, Node: key Selector Variable, Next: map Selector Variable, Prev: vendor Selector Variable, Up: Selectors
+
+3.3.3.14 key Selector Variable
+..............................
+
+The name being resolved. For example, if `/home' is an automount
+point, then accessing `/home/foo' would set `${key}' to the string
+`foo'. The key is prefixed by the PREF option set in the parent mount
+point. The default prefix is an empty string. If the prefix was
+`blah/' then `${key}' would be set to `blah/foo'.
+
+
+File: am-utils.info, Node: map Selector Variable, Next: netnumber Selector Variable, Prev: key Selector Variable, Up: Selectors
+
+3.3.3.15 map Selector Variable
+..............................
+
+The name of the mount map being used.
+
+
+File: am-utils.info, Node: netnumber Selector Variable, Next: network Selector Variable, Prev: map Selector Variable, Up: Selectors
+
+3.3.3.16 netnumber Selector Variable
+....................................
+
+This selector is identical to the `in_network' selector function, see
+*Note in_network Selector Function::. It will match either the name or
+number of any network interface on which this host is connected to.
+The names and numbers of all attached interfaces are available from the
+output of `amd -v'.
+
+
+File: am-utils.info, Node: network Selector Variable, Next: path Selector Variable, Prev: netnumber Selector Variable, Up: Selectors
+
+3.3.3.17 network Selector Variable
+..................................
+
+This selector is identical to the `in_network' selector function, see
+*Note in_network Selector Function::. It will match either the name or
+number of any network interface on which this host is connected to.
+The names and numbers of all attached interfaces are available from the
+output of `amd -v'.
+
+
+File: am-utils.info, Node: path Selector Variable, Next: wire Selector Variable, Prev: network Selector Variable, Up: Selectors
+
+3.3.3.18 path Selector Variable
+...............................
+
+The full pathname of the name being resolved. For example `/home/foo'
+in the example above.
+
+
+File: am-utils.info, Node: wire Selector Variable, Next: uid Selector Variable, Prev: path Selector Variable, Up: Selectors
+
+3.3.3.19 wire Selector Variable
+...............................
+
+This selector is identical to the `in_network' selector function, see
+*Note in_network Selector Function::. It will match either the name or
+number of any network interface on which this host is connected to.
+The names and numbers of all attached interfaces are available from the
+output of `amd -v'.
+
+
+File: am-utils.info, Node: uid Selector Variable, Next: gid Selector Variable, Prev: wire Selector Variable, Up: Selectors
+
+3.3.3.20 uid Selector Variable
+..............................
+
+This selector provides the numeric effective user ID (UID) of the user
+which last accessed an automounted path name. This simple example shows
+how floppy mounting can be assigned only to machine owners:
+
+ floppy -type:=pcfs \
+ uid==2301;host==shekel;dev:=/dev/floppy \
+ uid==6712;host==titan;dev=/dev/fd0 \
+ uid==0;dev:=/dev/fd0c \
+ type:=error
+
+ The example allows two machine owners to mount floppies on their
+designated workstations, allows the root user to mount on any host, and
+otherwise forces an error.
+
+
+File: am-utils.info, Node: gid Selector Variable, Next: exists Selector Function, Prev: uid Selector Variable, Up: Selectors
+
+3.3.3.21 gid Selector Variable
+..............................
+
+This selector provides the numeric effective group ID (GID) of the user
+which last accessed an automounted path name.
+
+
+
+ The following boolean functions are selectors which take an argument
+ARG. They return a value of true or false, and thus do not need to be
+compared with a value. Each of these may be negated by prepending `!'
+to their name.
+
+
+File: am-utils.info, Node: exists Selector Function, Next: false Selector Function, Prev: gid Selector Variable, Up: Selectors
+
+3.3.3.22 exists Selector Function
+.................................
+
+If the file listed by ARG exists (via lstat(2)), this function
+evaluates to true. Otherwise it evaluates to false.
+
+
+File: am-utils.info, Node: false Selector Function, Next: netgrp Selector Function, Prev: exists Selector Function, Up: Selectors
+
+3.3.3.23 false Selector Function
+................................
+
+Always evaluates to false. ARG is ignored.
+
+
+File: am-utils.info, Node: netgrp Selector Function, Next: netgrpd Selector Function, Prev: false Selector Function, Up: Selectors
+
+3.3.3.24 netgrp Selector Function
+.................................
+
+The argument ARG of this selector is a netgroup name followed
+optionally by a comma and a host name. If the host name is not
+specified, it defaults to `${host}'. If the host name (short name) is
+a member of the netgroup, this selector evaluates to true. Otherwise
+it evaluates to false.
+
+ For example, suppose you have a netgroup `ppp-hosts', and for
+reasons of performance, these have a local `/home' partition, while all
+other clients on the faster network can access a shared home directory.
+A common map to use for both might look like the following:
+
+ home/* netgrp(ppp-hosts);type:=link;fs:=/local/${key} \
+ !netgrp(ppp-hosts);type:=nfs;rhost:=serv1;rfs:=/remote/${key}
+
+ A more complex example that takes advantage of the two argument
+netgrp mount selector is given in the following scenario. Suppose one
+wants to mount the local scratch space from a each host under
+`scratch/<hostname>' and some hosts have their scratch space in a
+different path than others. Hosts in the netgroup `apple-hosts' have
+their scratch space in the `/apple' path, where hosts in the netgroup
+`cherry-hosts' have their scratch space in the `/cherry' path. For
+hosts that are neither in the `apple-hosts' or `cherry-hosts' netgroups
+we want to make a symlink pointing to nowhere but provide a descriptive
+error message in the link destination:
+
+ scratch/* netgrp(apple-hosts,${/key});type:=nfs;rhost:=${/key};\
+ rfs:="/apple" \
+ netgrp(cherry-hosts,${/key});type:=nfs;rhost:=${/key};\
+ rfs:="/cherry" \
+ type:=link;rfs:="no local partition for ${/key}"
+
+
+File: am-utils.info, Node: netgrpd Selector Function, Next: in_network Selector Function, Prev: netgrp Selector Function, Up: Selectors
+
+3.3.3.25 netgrpd Selector Function
+..................................
+
+The argument ARG of this selector is a netgroup name followed
+optionally by a comma and a host name. If the host name is not
+specified, it defaults to `${hostd}'. If the host name
+(fully-qualified name) is a member of the netgroup, this selector
+evaluates to true. Otherwise it evaluates to false.
+
+ The `netgrpd' function uses fully-qualified host names to match
+netgroup names, while the `netgrp' function (*note netgrp Selector
+Function::) uses short host names.
+
+
+File: am-utils.info, Node: in_network Selector Function, Next: true Selector Function, Prev: netgrpd Selector Function, Up: Selectors
+
+3.3.3.26 in_network Selector Function
+.....................................
+
+This selector matches against any network name or number with an
+optional netmask. First, if the current host has any network interface
+that is locally attached to the network specified in ARG (either via
+name or number), this selector evaluates to true.
+
+ Second, `in_network' supports a network/netmask syntax such as
+`128.59.16.0/255.255.255.0', `128.59.16.0/24',
+`128.59.16.0/0xffffff00', or `128.59.16.0/'. Using the last form, Amd
+will match the specified network number against the default netmasks of
+each of the locally attached interfaces.
+
+ If the selector does not match, it evaluates to false.
+
+ For example, suppose you have two servers that have an exportable
+`/opt' that smaller clients can NFS mount. The two servers are say,
+`serv1' on network `foo-net.site.com' and `serv2' on network
+`123.4.5.0'. You can write a map to be used by all clients that will
+attempt to mount the closest one as follows:
+
+ opt in_network(foo-net.site.com);rhost:=serv1;rfs:=/opt \
+ in_network(123.4.5.0);rhost:=serv2;rfs:=/opt \
+ rhost:=fallback-server
+
+
+File: am-utils.info, Node: true Selector Function, Next: xhost Selector Function, Prev: in_network Selector Function, Up: Selectors
+
+3.3.3.27 true Selector Function
+...............................
+
+Always evaluates to true. ARG is ignored.
+
+
+File: am-utils.info, Node: xhost Selector Function, Prev: true Selector Function, Up: Selectors
+
+3.3.3.28 xhost Selector Function
+................................
+
+This function compares ARG against the current hostname, similarly to
+the *Note host Selector Variable::. However, this function will also
+match if ARG is a CNAME (DNS Canonical Name, or alias) for the current
+host's name.
+
+
+File: am-utils.info, Node: Map Options, Prev: Selectors, Up: Location Format
+
+3.3.4 Map Options
+-----------------
+
+Options are parsed concurrently with selectors. The difference is that
+when an option is seen the string following the `:=' is recorded for
+later use. As a minimum the TYPE option must be specified. Each
+filesystem type has other options which must also be specified. *Note
+Filesystem Types::, for details on the filesystem specific options.
+
+ Superfluous option specifications are ignored and are not reported
+as errors.
+
+ The following options apply to more than one filesystem type.
+
+* Menu:
+
+* addopts Option::
+* delay Option::
+* fs Option::
+* opts Option::
+* remopts Option::
+* sublink Option::
+* type Option::
+
+
+File: am-utils.info, Node: addopts Option, Next: delay Option, Prev: Map Options, Up: Map Options
+
+3.3.4.1 addopts Option
+......................
+
+This option adds additional options to default options normally
+specified in the `/defaults' entry or the defaults of the key entry
+being processed (*note opts Option::). Normally when you specify
+`opts' in both the `/defaults' and the map entry, the latter overrides
+the former completely. But with `addopts' it will append the options
+and override any conflicting ones.
+
+ `addopts' also overrides the value of the `remopts' option (*note
+remopts Option::), which unless specified defaults to the value of
+`opts'.
+
+ Options which start with `no' will override those with the same name
+that do not start with `no' and vice verse. Special handling is given
+to inverted options such as `soft' and `hard', `bg' and `fg', `ro' and
+`rw', etc.
+
+ For example, if the default options specified were
+ opts:=rw,nosuid,intr,rsize=1024,wsize=1024,quota,posix
+
+ and the ones specified in a map entry were
+
+ addopts:=grpid,suid,ro,rsize=2048,quota,nointr
+
+ then the actual options used would be
+
+ wsize=1024,posix,grpid,suid,ro,rsize=2048,quota,nointr
+
+
+File: am-utils.info, Node: delay Option, Next: fs Option, Prev: addopts Option, Up: Map Options
+
+3.3.4.2 delay Option
+....................
+
+The delay, in seconds, before an attempt will be made to mount from the
+current location. Auxiliary data, such as network address, file handles
+and so on are computed regardless of this value.
+
+ A delay can be used to implement the notion of primary and secondary
+file servers. The secondary servers would have a delay of a few
+seconds, thus giving the primary servers a chance to respond first.
+
+
+File: am-utils.info, Node: fs Option, Next: opts Option, Prev: delay Option, Up: Map Options
+
+3.3.4.3 fs Option
+.................
+
+The local mount point. The semantics of this option vary between
+filesystems.
+
+ For NFS and UFS filesystems the value of `${fs}' is used as the
+local mount point. For other filesystem types it has other meanings
+which are described in the section describing the respective filesystem
+type. It is important that this string uniquely identifies the
+filesystem being mounted. To satisfy this requirement, it should
+contain the name of the host on which the filesystem is resident and the
+pathname of the filesystem on the local or remote host.
+
+ The reason for requiring the hostname is clear if replicated
+filesystems are considered. If a fileserver goes down and a
+replacement filesystem is mounted then the "local" mount point "must"
+be different from that of the filesystem which is hung. Some encoding
+of the filesystem name is required if more than one filesystem is to be
+mounted from any given host.
+
+ If the hostname is first in the path then all mounts from a
+particular host will be gathered below a single directory. If that
+server goes down then the hung mount points are less likely to be
+accidentally referenced, for example when getcwd(3) traverses the
+namespace to find the pathname of the current directory.
+
+ The `fs' option defaults to `${autodir}/${rhost}${rfs}'. In
+addition, `rhost' defaults to the local host name (`${host}') and `rfs'
+defaults to the value of `${path}', which is the full path of the
+requested file; `/home/foo' in the example above (*note Selectors::).
+`${autodir}' defaults to `/a' but may be changed with the `-a' command
+line option. Sun's automounter defaults to `/tmp_mnt'. Note that
+there is no `/' between the `${rhost}' and `${rfs}' since `${rfs}'
+begins with a `/'.
+
+
+File: am-utils.info, Node: opts Option, Next: remopts Option, Prev: fs Option, Up: Map Options
+
+3.3.4.4 opts Option
+...................
+
+The options to pass to the mount system call. A leading `-' is
+silently ignored. The mount options supported generally correspond to
+those used by mount(8) and are listed below. Some additional
+pseudo-options are interpreted by Amd and are also listed.
+
+ Unless specifically overridden, each of the system default mount
+options applies. Any options not recognized are ignored. If no
+options list is supplied the string `rw,defaults' is used and all the
+system default mount options apply. Options which are not applicable
+for a particular operating system are silently ignored. For example,
+only 4.4BSD is known to implement the `compress' and `spongy' options.
+
+`acdirmax=N'
+ Set the maximum directory attribute cache timeout to N.
+
+`acdirmin=N'
+ Set the minimum directory attribute cache timeout to N.
+
+`acregmax=N'
+ Set the maximum file attribute cache timeout to N.
+
+`acregmin=N'
+ Set the minimum file attribute cache timeout to N.
+
+`actimeo=N'
+ Set the overall attribute cache timeout to N.
+
+`auto'
+`ignore'
+ Ignore this mount by df(1).
+
+`cache'
+ Allow data to be cached from a remote server for this mount.
+
+`closesession'
+ For UDF mounts, close the session when unmounting.
+
+`compress'
+ Use NFS compression protocol.
+
+`defperm'
+ Ignore the permission mode bits, and default file permissions to
+ 0555, UID 0, and GID 0. Useful for CD-ROMs formatted as ISO-9660.
+
+`dev'
+ Allow local special devices on this filesystem.
+
+`dirmask=N'
+ For PCFS mounts, specify the maximum file permissions for
+ directories in the file system. See the `mask' option's
+ description for more details. The mask value of N can be
+ specified in decimal, octal, or hexadecimal.
+
+`dumbtimr'
+ Turn off the dynamic retransmit timeout estimator. This may be
+ useful for UDP mounts that exhibit high retry rates, since it is
+ possible that the dynamically estimated timeout interval is too
+ short.
+
+`extatt'
+ Enable extended attributes in ISO-9660 file systems.
+
+`fsid'
+ Set ID of filesystem.
+
+`gens'
+ Enable generations in ISO-9660 file systems. Generations allow
+ you to see all versions of a given file.
+
+`gmtoff=N'
+ For UDF mounts, set the time zone offset from UTC to N seconds,
+ with positive values indicating east of the Prime Meridian. If not
+ set, the user's current time zone will be used.
+
+`group=N'
+ For PCFS and UDF mounts, set the group of the files in the file
+ system to N (which can either be a group name or a GID number).
+ The default group is the group of the directory on which the file
+ system is being mounted.
+
+`grpid'
+ Use BSD directory group-id semantics.
+
+`int'
+`intr'
+ Allow keyboard interrupts on hard mounts.
+
+`lock'
+ Use the NFS locking protocol (default)
+
+`longname'
+ For PCFS mounts, force Win95 long names.
+
+`mask=N'
+ For PCFS mounts, specify the maximum file permissions for files in
+ the file system. For example, a mask of 755 specifies that, by
+ default, the owner should have read, write, and execute
+ permissions for files, but others should only have read and
+ execute permissions. Only the nine low-order bits of mask are
+ used. The default mask is taken from the directory on which the
+ file system is being mounted. The mask value of N can be
+ specified in decimal, octal, or hexadecimal.
+
+`multi'
+ Perform multi-component lookup on files.
+
+`maxgroups'
+ Set the maximum number of groups to allow for this mount.
+
+`nfsv3'
+ Use NFS Version 3 for this mount.
+
+`noac'
+ Turn off the attribute cache.
+
+`noauto'
+ This option is used by the mount command in `/etc/fstab' or
+ `/etc/vfstab' and means not to mount this file system when mount -a
+ is used.
+
+`nocache'
+ Do not allow data to be cached from a remote server for this mount.
+
+`nocasetrans'
+ Don't do case translation. Useful for CD-ROMS formatted as
+ ISO-9660.
+
+`noconn'
+ Don't make a connection on datagram transports.
+
+`nocto'
+ No close-to-open consistency.
+
+`nodefperm'
+ Do not ignore the permission mode bits. Useful for CD-ROMS
+ formatted as ISO-9660.
+
+`nodev'
+`nodevs'
+ Don't allow local special devices on this filesystem.
+
+`noexec'
+ Don't allow program execution.
+
+`noint'
+ Do not allow keyboard interrupts for this mount
+
+`nojoliet'
+ Turn off the Joliet extensions. Useful for CD-ROMS formatted as
+ ISO-9660.
+
+`nolock'
+ Do not use the NFS locking protocol
+
+`nomnttab'
+ This option is used internally to tell Amd that a Solaris 8 system
+ using mntfs is in use.
+
+`norrip'
+ Turn off using of the Rock Ridge Interchange Protocol (RRIP)
+ extensions to ISO-9660.
+
+`nosub'
+ Disallow mounts beneath this mount.
+
+`nosuid'
+ Don't allow set-uid or set-gid executables on this filesystem.
+
+`noversion'
+ Strip the extension `;#' from the version string of files recorded
+ on an ISO-9660 CD-ROM.
+
+`nowin95'
+ For PCFS mounts, completely ignore Win95 entries.
+
+`optionstr'
+ Under Solaris 8, provide the kernel a string of options to parse
+ and show as part of the special in-kernel mount file system.
+
+`overlay'
+ Overlay this mount on top of an existing mount, if any.
+
+`pgthresh=N'
+ Set the paging threshold to N kilobytes.
+
+`port=N'
+ Set the NFS port to N.
+
+`posix'
+ Turn on POSIX static pathconf for mounts.
+
+`private'
+ Use local locking instead of the NLM protocol, useful for IRIX 6
+ only.
+
+`proplist'
+ Support property lists (ACLs) for this mount, useful primarily for
+ Tru64 UNIX.
+
+`proto=S'
+ Use transport protocol S for NFS (can be `"tcp"' or `"udp"').
+
+`quota'
+ Enable quota checking on this mount.
+
+`rdonly'
+`ro'
+ Mount this filesystem readonly.
+
+`resvport'
+ Use a reserved port (smaller than 1024) for remote NFS mounts.
+ Most systems assume that, but some allow for mounts to occur on
+ non-reserved ports. This causes problems when such a system
+ tries to NFS mount one that requires reserved ports. It is
+ recommended that this option always be on.
+
+`retrans=n'
+ The number of NFS retransmits made before a user error is
+ generated by a `soft' mounted filesystem, and before a `hard'
+ mounted filesystem reports `NFS server "yoyo" not responding still
+ trying'.
+
+`retry'
+ Set the NFS retry counter.
+
+`rrcaseins'
+ Enable the Rock Ridge Interchange Protocol (RRIP) case insensitive
+ extensions. Useful for CD-ROMS formatted as ISO-9660.
+
+`rrip'
+ Uses the Rock Ridge Interchange Protocol (RRIP) extensions to
+ ISO-9660.
+
+`rsize=N'
+ The NFS read packet size. You may need to set this if you are
+ using NFS/UDP through a gateway or a slow link.
+
+`rw'
+ Allow reads and writes on this filesystem.
+
+`sessionnr=N'
+ For multisession UDF mounts, use session number N when mounting.
+
+`shortname'
+ For PCFS mounts, force old DOS short names only.
+
+`soft'
+ Give up after "retrans" retransmissions.
+
+`spongy'
+ Like `soft' for status requests, and `hard' for data transfers.
+
+`suid'
+ Allow set-uid programs on this mount.
+
+`symttl'
+ Turn off the symbolic link cache time-to-live.
+
+`sync'
+ Perform synchronous filesystem operations on this mount.
+
+`tcp'
+ Use TCP/IP instead of UDP/IP, ignored if the NFS implementation
+ does not support TCP/IP mounts.
+
+`timeo=N'
+ The NFS timeout, in tenth-seconds, before a request is
+ retransmitted.
+
+`user=N'
+ For PCFS and UDF mounts, set the owner of the files in the file
+ system to N (which can either be a user name or a UID number). The
+ default owner is the owner of the directory on which the file
+ system is being mounted.
+
+`vers=N'
+ Use NFS protocol version number N (can be 2 or 3).
+
+`wsize=N'
+ The NFS write packet size. You may need to set this if you are
+ using NFS/UDP through a gateway or a slow link.
+
+
+ The following options are implemented by Amd, rather than being
+passed to the kernel.
+
+`nounmount'
+ Configures the mount so that its time-to-live will never expire.
+ This is the default for non-network based filesystem types (such as
+ mounting local disks, floppies, and CD-ROMs). See also the related
+ unmount option.
+
+`ping=N'
+ The interval, in seconds, between keep-alive pings. When four
+ consecutive pings have failed the mount point is marked as hung.
+ This interval defaults to 30 seconds; if the ping interval is set
+ to zero, Amd will use the default 30-second interval. If the
+ interval is set to -1 (or any other negative value), no pings are
+ sent and the host is assumed to be always up, which can cause
+ unmounts to hang See the softlookup option for a better
+ alternative. Turning pings off can be useful in NFS-HA
+ (High-Availability) sites where the NFS service rarely goes down.
+ Setting the ping value to a large value can reduce the amount of
+ NFS_NULL chatter on your network considerably, especially in large
+ sites.
+
+ Note that if you have multiple Amd entries using the same file
+ server, and each entry sets a different value of N, then each time
+ Amd mounts a new entry, the ping value will be re-evaluated (and
+ updated, turned off, or turned back on as needed). Finally, note
+ that NFS_NULL pings are sent for both UDP and TCP mounts, because
+ even a hung TCP mount can cause user processes to hang.
+
+`public'
+ Use WebNFS multi-component lookup on the public file handle
+ instead of the mount protocol to obtain NFS file handles, as
+ documented in the WebNFS Client Specification, RFC 2054. This
+ means that Amd will not attempt to contact the remote portmapper
+ or remote mountd daemon, and will only connect to the well-known
+ NFS port 2049 or the port specified with the port mount option,
+ thus making it easier to use NFS through a firewall.
+
+`retry=N'
+ The number of times to retry the mount system call.
+
+`softlookup'
+ Configures Amd's behavior with respect to already-mounted shares
+ from NFS fileservers that are unreachable. If softlookup is
+ specified, trying to access such a share will result in an error
+ (EIO, which is changed from the ENOENT 6.0 used to return). If it
+ is not specified, a regular symlink is provided and the access
+ will probably hang in the NFS filesystem.
+
+ The default behavior depends on whether the mount is 'soft' or
+ 'hard'; softlookup can be used to change this default. This is
+ changed from 6.0 which always behaved as if softlookup was
+ specified.
+
+`unmount'
+ Configures the mount so that its time-to-live will indeed expire
+ (and thus may be automatically unmounted). This is also the
+ default for network-based filesystem types (e.g., NFS). This
+ option is useful for removable local media such as CD-ROMs, USB
+ drives, etc. so they can expire when not in use, and get unmounted
+ (such drives can get work out when they keep spinning). See also
+ the related nounmount option.
+
+`utimeout=N'
+ The interval, in seconds, that looked up and mounted map entries
+ are cached. After that period of time, Amd will attempt to unmount
+ the entries. If, however, the unmount fails (with EBUSY), then
+ Amd will extend the mount's time-to-live by the utimeout value
+ before the next unmount attempt is made. In fact the interval is
+ extended before the unmount is attempted, to avoid thrashing. The
+ default value is 120 seconds (two minutes) or as set by the `-w'
+ command line option.
+
+`xlatecookie'
+ Translate directory cookies between 32-long and 64-long lengths.
+
+
+
+File: am-utils.info, Node: remopts Option, Next: sublink Option, Prev: opts Option, Up: Map Options
+
+3.3.4.5 remopts Option
+......................
+
+This option has the same use as `${opts}' but applies only when the
+remote host is on a non-local network. For example, when using NFS
+across a gateway it is often necessary to use smaller values for the
+data read and write sizes. This can simply be done by specifying the
+small values in REMOPTS. When a non-local host is accessed, the
+smaller sizes will automatically be used.
+
+ Amd determines whether a host is local by examining the network
+interface configuration at startup. Any interface changes made after
+Amd has been started will not be noticed. The likely effect will be
+that a host may incorrectly be declared non-local.
+
+ Unless otherwise set, the value of `${remopts}' is the same as the
+value of `${opts}'.
+
+
+File: am-utils.info, Node: sublink Option, Next: type Option, Prev: remopts Option, Up: Map Options
+
+3.3.4.6 sublink Option
+......................
+
+The subdirectory within the mounted filesystem to which the reference
+should point. This can be used to prevent duplicate mounts in cases
+where multiple directories in the same mounted filesystem are used.
+
+
+File: am-utils.info, Node: type Option, Prev: sublink Option, Up: Map Options
+
+3.3.4.7 type Option
+...................
+
+The filesystem type to be used. *Note Filesystem Types::, for a full
+description of each type.
+
+
+File: am-utils.info, Node: Amd Command Line Options, Next: Filesystem Types, Prev: Mount Maps, Up: Top
+
+4 Amd Command Line Options
+**************************
+
+Many of Amd's parameters can be set from the command line. The command
+line is also used to specify automount points and maps.
+
+ The general format of a command line is
+
+ amd [options] [{ directory map-name [-map-options] } ...]
+
+ For each directory and map-name given or specified in the `amd.conf'
+file, Amd establishes an automount point. The "map-options" may be any
+sequence of options or selectors--*note Location Format::. The
+"map-options" apply only to Amd's mount point.
+
+ `type:=toplvl;cache:=mapdefault;fs:=${map}' is the default value for
+the map options. Default options for a map are read from a special
+entry in the map whose key is the string `/defaults'. When default
+options are given they are prepended to any options specified in the
+mount-map locations as explained in *Note Map Defaults::.
+
+ The "options" are any combination of those listed below.
+
+ Once the command line has been parsed, the automount points are
+mounted. The mount points are created if they do not already exist, in
+which case they will be removed when Amd exits. Finally, Amd
+disassociates itself from its controlling terminal and forks into the
+background.
+
+ Note: Even if Amd has been built with `-DDEBUG' (via `configure
+--enable-debug'), it will still background itself and disassociate
+itself from the controlling terminal. To use a debugger it is
+necessary to specify `-D daemon' on the command line. However, even
+with all of this, mounts and unmounts are performed in the background,
+and Amd will always fork before doing them. Therefore, debugging what
+happens closely during un/mounts is more challenging.
+
+ _All_ of Amd's command options (save `-F' and `-T') can be specified
+in the `amd.conf' file. *Note Amd Configuration File::. If Amd is
+invoked without any command line options, it will default to using the
+configuration file `/etc/amd.conf', if one exists.
+
+* Menu:
+
+* -a Option:: Automount directory.
+* -c Option:: Cache timeout interval.
+* -d Option:: Domain name.
+* -k Option:: Kernel architecture.
+* -l Option:: Log file.
+* -n Option:: Hostname normalization.
+* -o Option:: Operating system version.
+* -p Option:: Output process id.
+* -r Option:: Restart existing mounts.
+* -t Option:: Kernel RPC timeout.
+* -v Option:: Version information.
+* -w Option:: Wait interval after failed unmount.
+* -x Option:: Log options.
+* -y Option:: NIS domain.
+* -A Option:: Operating system Architecture.
+* -C Option:: Cluster name.
+* -D Option:: Debug flags.
+* -F Option:: Amd configuration file.
+* -H Option:: Show brief help.
+* -O Option:: Operating system name.
+* -S Option:: Lock executable pages in memory.
+* -T Option:: Set tag for configuration file.
+
+
+File: am-utils.info, Node: -a Option, Next: -c Option, Prev: Amd Command Line Options, Up: Amd Command Line Options
+
+4.1 `-a' DIRECTORY
+==================
+
+Specifies the default mount directory. This option changes the variable
+`${autodir}' which otherwise defaults to `/a'. For example, some sites
+prefer `/amd' or `/n'.
+
+ amd -a /amd ...
+
+
+File: am-utils.info, Node: -c Option, Next: -d Option, Prev: -a Option, Up: Amd Command Line Options
+
+4.2 `-c' CACHE-INTERVAL
+=======================
+
+Selects the period, in seconds, for which a name is cached by Amd. If
+no reference is made to the volume in this period, Amd discards the
+volume name to filesystem mapping.
+
+ Once the last reference to a filesystem has been removed, Amd
+attempts to unmount the filesystem. If the unmount fails the interval
+is extended by a further period as specified by the `-w' command line
+option or by the `utimeout' mount option.
+
+ The default "cache-interval" is 300 seconds (five minutes).
+
+
+File: am-utils.info, Node: -d Option, Next: -k Option, Prev: -c Option, Up: Amd Command Line Options
+
+4.3 `-d' DOMAIN
+===============
+
+Specifies the host's domain. This sets the internal variable
+`${domain}' and affects the `${hostd}' variable.
+
+ If this option is not specified and the hostname already contains the
+local domain then that is used, otherwise the default value of
+`${domain}' is `unknown.domain'.
+
+ For example, if the local domain was `doc.ic.ac.uk', Amd could be
+started as follows:
+
+ amd -d doc.ic.ac.uk ...
+
+
+File: am-utils.info, Node: -k Option, Next: -l Option, Prev: -d Option, Up: Amd Command Line Options
+
+4.4 `-k' KERNEL-ARCHITECTURE
+============================
+
+Specifies the kernel architecture of the system. This is usually the
+output of `uname -m' (the "machine" value gotten from uname(2)). If
+the uname(2) system call is not available, the value of `${karch}'
+defaults to that of `${arch}'.
+
+ The only effect of this option is to set the variable `${karch}'.
+
+ This option would be used as follows:
+
+ amd -k `arch -k` ...
+
+
+File: am-utils.info, Node: -l Option, Next: -n Option, Prev: -k Option, Up: Amd Command Line Options
+
+4.5 `-l' LOG-OPTION
+===================
+
+Selects the form of logging to be made. Several special "log-options"
+are recognized.
+
+ 1. If "log-option" is the string `syslog', Amd will use the syslog(3)
+ mechanism. If your system supports syslog facilities, then the
+ default facility used is `LOG_DAEMON'.
+
+ 2. When using syslog, if you wish to change the facility, append its
+ name to the log option name, delimited by a single colon. For
+ example, if "log-options" is the string `syslog:local7' then Amd
+ will log messages via syslog(3) using the `LOG_LOCAL7' facility.
+ If the facility name specified is not recognized, Amd will default
+ to `LOG_DAEMON'. Note: while you can use any syslog facility
+ available on your system, it is generally a bad idea to use those
+ reserved for other services such as `kern', `lpr', `cron', etc.
+
+ 3. If "log-option" is the string `/dev/stderr', Amd will use standard
+ error, which is also the default target for log messages. To
+ implement this, Amd simulates the effect of the `/dev/fd' driver.
+
+ Any other string is taken as a filename to use for logging. Log
+messages are appended to the file if it already exists, otherwise a new
+file is created. The file is opened once and then held open, rather
+than being re-opened for each message.
+
+ Normally, when long-running daemons hold an open file descriptor on a
+log file, it is impossible to "rotate" the log file and compress older
+logs on a daily basis. The daemon needs to be told to discard (via
+close(2)) its file handle, and re-open the log file. This is done
+using `amq -l' log-option. *Note Amq -l option::.
+
+ If the `syslog' option is specified but the system does not support
+syslog or if the named file cannot be opened or created, Amd will use
+standard error. Error messages generated before Amd has finished
+parsing the command line are printed on standard error.
+
+ Since Amd tends to generate a lot of logging information (especially
+if debugging was turned on), and due to it being an important program
+running on the system, it is usually best to log to a separate disk
+file. In that case Amd would be started as follows:
+
+ amd -l /var/log/amd ...
+
+
+File: am-utils.info, Node: -n Option, Next: -o Option, Prev: -l Option, Up: Amd Command Line Options
+
+4.6 `-n'
+========
+
+Normalizes the remote hostname before using it. Normalization is done
+by replacing the value of `${rhost}' with the (generally fully
+qualified) primary name returned by a hostname lookup.
+
+ This option should be used if several names are used to refer to a
+single host in a mount map.
+
+
+File: am-utils.info, Node: -o Option, Next: -p Option, Prev: -n Option, Up: Amd Command Line Options
+
+4.7 `-o' OP-SYS-VER
+===================
+
+Overrides the compiled-in version number of the operating system, with
+OP-SYS-VER. Useful when the built-in version is not desired for
+backward compatibility reasons. For example, if the built-in version is
+`2.5.1', you can override it to `5.5.1', and use older maps that were
+written with the latter in mind.
+
+
+File: am-utils.info, Node: -p Option, Next: -r Option, Prev: -o Option, Up: Amd Command Line Options
+
+4.8 `-p'
+========
+
+Causes Amd's process id to be printed on standard output. This can be
+redirected to a suitable file for use with kill:
+
+ amd -p > /var/run/amd.pid ...
+
+ This option only has an affect if Amd is running in daemon mode. If
+Amd is started with the `-D daemon' debug flag, this option is ignored.
+
+
+File: am-utils.info, Node: -r Option, Next: -t Option, Prev: -p Option, Up: Amd Command Line Options
+
+4.9 `-r'
+========
+
+Tells Amd to restart existing mounts (*note Inheritance Filesystem::).
+
+
+File: am-utils.info, Node: -t Option, Next: -v Option, Prev: -r Option, Up: Amd Command Line Options
+
+4.10 `-t' TIMEOUT.RETRANSMIT
+============================
+
+Specifies the RPC "timeout" interval and the "retransmit" counter used
+by the kernel to communicate to Amd. These are used to set the `timeo'
+and `retrans' mount options, respectively. The default timeout is 0.8
+seconds, and the default number of retransmissions is 11.
+
+ Amd relies on the kernel RPC retransmit mechanism to trigger mount
+retries. The values of these parameters change the overall retry
+interval. Too long an interval gives poor interactive response; too
+short an interval causes excessive retries.
+
+
+File: am-utils.info, Node: -v Option, Next: -w Option, Prev: -t Option, Up: Amd Command Line Options
+
+4.11 `-v'
+=========
+
+Print version information on standard error and then exit. The output
+is of the form:
+
+ Copyright (c) 1997-1999 Erez Zadok
+ Copyright (c) 1990 Jan-Simon Pendry
+ Copyright (c) 1990 Imperial College of Science, Technology & Medicine
+ Copyright (c) 1990 The Regents of the University of California.
+ am-utils version 6.0a15 (build 61).
+ Built by ezk@example.com on date Wed Oct 22 15:21:03 EDT 1997.
+ cpu=sparc (big-endian), arch=sun4, karch=sun4u.
+ full_os=solaris2.5.1, os=sos5, osver=5.5.1, vendor=sun.
+ Map support for: root, passwd, union, nisplus, nis, ndbm, file, error.
+ AMFS: nfs, link, nfsx, nfsl, host, linkx, program, union, inherit,
+ ufs, lofs, hsfs, pcfs, auto, direct, toplvl, error.
+ FS: autofs, cachefs, cdfs, lofs, nfs, nfs3, pcfs, tfs, tmpfs, udf, ufs.
+ Network 1: wire="mcl-lab-net.cs.columbia.edu" (netnumber=128.59.13).
+ Network 2: wire="14-net.cs.columbia.edu" (netnumber=128.59.14).
+ Network 3: wire="old-net.cs.columbia.edu" (netnumber=128.59.16).
+
+ The information includes the version number, number of times Amd was
+compiled on the local system, release date and name of the release.
+Following come the cpu type, byte ordering, and the architecture and
+kernel architecture as `${arch}' and `${karch}', respectively. The
+next line lists the operating system full name, short name, version,
+and vendor. These four values correspond to the variables
+`${full_os}', `${os}', `${osver}', and `${vendor}', respectively.
+*Note Supported Platforms::.
+
+ Then come a list of map types supported, filesystems internally
+supported by Amd (AMFS), and generic filesystems available (FS).
+Finally all known networks (if any) of this host are listed by name and
+number. They are available via the variables `${wire}' or
+`${network}', and `${netnumber}' (*note Selectors::) or the `in_network'
+selector function (*note in_network Selector Function::).
+
+
+File: am-utils.info, Node: -w Option, Next: -x Option, Prev: -v Option, Up: Amd Command Line Options
+
+4.12 `-w' WAIT-TIMEOUT
+======================
+
+Selects the interval in seconds between unmount attempts after the
+initial time-to-live has expired.
+
+ This defaults to 120 seconds (two minutes).
+
+
+File: am-utils.info, Node: -x Option, Next: -y Option, Prev: -w Option, Up: Amd Command Line Options
+
+4.13 `-x' OPTS
+==============
+
+Specifies the type and verbosity of log messages. "opts" is a comma
+separated list selected from the following options:
+
+`fatal'
+ Fatal errors (cannot be turned off)
+
+`error'
+ Non-fatal errors (cannot be turned off)
+
+`user'
+ Non-fatal user errors
+
+`warn'
+ Recoverable errors
+
+`warning'
+ Alias for `warn'
+
+`info'
+ Information messages
+
+`map'
+ Mount map usage
+
+`stats'
+ Additional statistics
+
+`all'
+ All of the above
+
+`defaults'
+ An alias for "fatal,error,user,warning,info".
+
+ Initially a set of default logging flags is enabled. This is as if
+`-x defaults' or `-x fatal,error,user,warning,info' had been selected.
+The command line is parsed and logging is controlled by the `-x'
+option. The very first set of logging flags is saved and can not be
+subsequently disabled using Amq. This default set of options is useful
+for general production use.
+
+ The `info' messages include details of what is mounted and unmounted
+and when filesystems have timed out. If you want to have the default
+set of messages without the `info' messages then you simply need `-x
+noinfo'. The messages given by `user' relate to errors in the mount
+maps, so these are useful when new maps are installed. The following
+table lists the syslog priorities used for each of the message types.
+
+`fatal'
+ `LOG_CRIT'
+
+`error'
+ `LOG_ERR'
+
+`user'
+ `LOG_WARNING'
+
+`warning'
+ `LOG_WARNING'
+
+`info'
+ `LOG_INFO'
+
+`debug'
+ `LOG_DEBUG'
+
+`map'
+ `LOG_DEBUG'
+
+`stats'
+ `LOG_INFO'
+
+ The options can be prefixed by the string `no' to indicate that this
+option should be turned off. For example, to obtain all but `info'
+messages the option `-x all,noinfo' would be used.
+
+ If Amd was built with debugging enabled the `debug' option is
+automatically enabled regardless of the command line options.
+
+
+File: am-utils.info, Node: -y Option, Next: -A Option, Prev: -x Option, Up: Amd Command Line Options
+
+4.14 `-y' NIS-DOMAIN
+====================
+
+Selects an alternate NIS domain. This is useful for debugging and
+cross-domain shared mounting. If this flag is specified, Amd
+immediately attempts to bind to a server for this domain.
+
+
+File: am-utils.info, Node: -A Option, Next: -C Option, Prev: -y Option, Up: Amd Command Line Options
+
+4.15 `-A' ARCHITECTURE
+======================
+
+Specifies the OS architecture of the system. The only effect of this
+option is to set the variable `${arch}'.
+
+ This option would be used as follows:
+
+ amd -A i386 ...
+
+
+File: am-utils.info, Node: -C Option, Next: -D Option, Prev: -A Option, Up: Amd Command Line Options
+
+4.16 `-C' CLUSTER-NAME
+======================
+
+Specifies the name of the cluster of which the local machine is a
+member. The only effect is to set the variable `${cluster}'. The
+"cluster-name" is will usually obtained by running another command
+which uses a database to map the local hostname into a cluster name.
+`${cluster}' can then be used as a selector to restrict mounting of
+replicated data. If this option is not given, `${cluster}' has the
+same value as `${domain}'. This would be used as follows:
+
+ amd -C `clustername` ...
+
+
+File: am-utils.info, Node: -D Option, Next: -F Option, Prev: -C Option, Up: Amd Command Line Options
+
+4.17 `-D' OPTS
+==============
+
+Controls the verbosity and coverage of the debugging trace; "opts" is a
+comma separated list of debugging options. The `-D' option is only
+available if Amd was compiled with `-DDEBUG', or configured with
+`configure --enable-debug'. The memory debugging facilities (`mem')
+are only available if Amd was compiled with `-DDEBUG_MEM' (in addition
+to `-DDEBUG'), or configured with `configure --enable-debug=mem'.
+
+ The most common options to use are `-D trace' and `-D test' (which
+turns on all the useful debug options). As usual, every option can be
+prefixed with `no' to turn it off.
+
+`all'
+ all options (excluding hrtime and mtab)
+
+`defaults'
+ "sensible" default options (all-excluding hrtime, mtab, and
+ xdrtrace)
+
+`test'
+ full debug options plus mtab,nodaemon,nofork,noamq
+
+`amq'
+ register Amd with the RPC portmapper, for Amq
+
+`daemon'
+ enter daemon mode
+
+`fork'
+ fork child worker (hlfsd only)
+
+`full'
+ program trace
+
+`hrtime'
+ print high resolution time stamps (only if syslog(3) is not used)
+
+`info'
+ info service specific debugging (hesiod, nis, etc.) In the case of
+ hesiod maps, turns on the hesiod RES_DEBUG internal debugging
+ option.
+
+`mem'
+ trace memory allocations. Needs to be explicitly enabled at
+ compile time with -enable-debug=mem.
+
+`mtab'
+ use local mount-table file (defaults to `/tmp/mtab', *note
+ debug_mtab_file Parameter::)
+
+`readdir'
+ show readdir progress
+
+`str'
+ debug string munging
+
+`trace'
+ trace RPC protocol and NFS mount arguments
+
+`xdrtrace'
+ trace XDR routines
+
+ You may also refer to the program source for a more detailed
+explanation of the available options.
+
+
+File: am-utils.info, Node: -F Option, Next: -H Option, Prev: -D Option, Up: Amd Command Line Options
+
+4.18 `-F' CONF-FILE
+===================
+
+Specify an Amd configuration file CONF-FILE to use. For a description
+of the format and syntax, *note Amd Configuration File::. This
+configuration file is used to specify any options in lieu of typing
+many of them on the command line. The `amd.conf' file includes
+directives for every command line option Amd has, and many more that
+are only available via the configuration file facility. The
+configuration file specified by this option is processed after all other
+options had been processed, regardless of the actual location of this
+option on the command line.
+
+
+File: am-utils.info, Node: -H Option, Next: -O Option, Prev: -F Option, Up: Amd Command Line Options
+
+4.19 `-H'
+=========
+
+Print a brief help and usage string.
+
+
+File: am-utils.info, Node: -O Option, Next: -S Option, Prev: -H Option, Up: Amd Command Line Options
+
+4.20 `-O' OP-SYS-NAME
+=====================
+
+Overrides the compiled-in name of the operating system, with
+OP-SYS-NAME. Useful when the built-in name is not desired for backward
+compatibility reasons. For example, if the build in name is `sunos5',
+you can override it to the old name `sos5', and use older maps which
+were written with the latter in mind.
+
+
+File: am-utils.info, Node: -S Option, Next: -T Option, Prev: -O Option, Up: Amd Command Line Options
+
+4.21 `-S'
+=========
+
+Do _not_ lock the running executable pages of Amd into memory. To
+improve Amd's performance, systems that support the plock(3) or
+mlockall(2) call lock the Amd process into memory. This way there is
+less chance the operating system will schedule, page out, and swap the
+Amd process as needed. This tends to improve Amd's performance, at the
+cost of reserving the memory used by the Amd process (making it
+unavailable for other processes). If this behavior is not desired, use
+the `-S' option.
+
+
+File: am-utils.info, Node: -T Option, Prev: -S Option, Up: Amd Command Line Options
+
+4.22 `-T' TAG
+=============
+
+Specify a tag to use with `amd.conf'. All map entries tagged with TAG
+will be processed. Map entries that are not tagged are always
+processed. Map entries that are tagged with a tag other than TAG will
+not be processed.
+
+
+File: am-utils.info, Node: Filesystem Types, Next: Amd Configuration File, Prev: Amd Command Line Options, Up: Top
+
+5 Filesystem Types
+******************
+
+To mount a volume, Amd must be told the type of filesystem to be used.
+Each filesystem type typically requires additional information such as
+the fileserver name for NFS.
+
+ From the point of view of Amd, a "filesystem" is anything that can
+resolve an incoming name lookup. An important feature is support for
+multiple filesystem types. Some of these filesystems are implemented
+in the local kernel and some on remote fileservers, whilst the others
+are implemented internally by Amd.
+
+ The two common filesystem types are UFS and NFS. Four other user
+accessible filesystems (`link', `program', `auto' and `direct') are
+also implemented internally by Amd and these are described below.
+There are two additional filesystem types internal to Amd which are not
+directly accessible to the user (`inherit' and `error'). Their use is
+described since they may still have an effect visible to the user.
+
+* Menu:
+
+* Network Filesystem:: A single NFS filesystem.
+* Network Host Filesystem:: NFS mount a host's entire export tree.
+* Network Filesystem Group:: An atomic group of NFS filesystems.
+* Unix Filesystem:: Native disk filesystem.
+* Caching Filesystem:: Caching from remote server filesystem.
+* CD-ROM Filesystem:: ISO9660 CD ROM.
+* UDF Filesystem:: Universal Disk Format filesystem.
+* Loopback Filesystem:: Local loopback-mount filesystem.
+* Memory/RAM Filesystem:: A memory or RAM-based filesystem.
+* Null Filesystem:: 4.4BSD's loopback-mount filesystem.
+* Floppy Filesystem:: MS-DOS Floppy filesystem.
+* Translucent Filesystem:: The directory merging filesystem.
+* Shared Memory+Swap Filesystem:: Sun's tmpfs filesystem.
+* User ID Mapping Filesystem:: 4.4BSD's umapfs filesystem.
+* Program Filesystem:: Generic Program mounts.
+* Symbolic Link Filesystem:: Local link.
+* Symbolic Link Filesystem II:: Local link referencing existing filesystem.
+* NFS-Link Filesystem:: Link if path exists, NFS otherwise.
+* Automount Filesystem::
+* Direct Automount Filesystem::
+* Union Filesystem::
+* Error Filesystem::
+* Top-level Filesystem::
+* Root Filesystem::
+* Inheritance Filesystem::
+
+
+File: am-utils.info, Node: Network Filesystem, Next: Network Host Filesystem, Prev: Filesystem Types, Up: Filesystem Types
+
+5.1 Network Filesystem (`nfs')
+==============================
+
+The "nfs" (`type:=nfs') filesystem type provides access to Sun's NFS.
+
+The following options must be specified:
+
+`rhost'
+ the remote fileserver. This must be an entry in the hosts
+ database. IP addresses are not accepted. The default value is
+ taken from the local host name (`${host}') if no other value is
+ specified.
+
+`rfs'
+ the remote filesystem. If no value is specified for this option,
+ an internal default of `${path}' is used.
+
+ NFS mounts require a two stage process. First, the "file handle" of
+the remote file system must be obtained from the server. Then a mount
+system call must be done on the local system. Amd keeps a cache of
+file handles for remote file systems. The cache entries have a
+lifetime of a few minutes.
+
+ If a required file handle is not in the cache, Amd sends a request
+to the remote server to obtain it.
+
+ Historically, this documentation has maintained that Amd will try
+all the locations in parallel and use the first one which responds with
+a valid file handle. This has not been the case for quite some time,
+however. Instead, Amd will go through each location, one by one, and
+will only skip to the next one if the previous one either fails or
+times out.
+
+An NFS entry might be:
+
+ jsp host!=charm;type:=nfs;rhost:=charm;rfs:=/home/charm;sublink:=jsp
+
+ The mount system call and any unmount attempts are always done in a
+new task to avoid the possibility of blocking Amd.
+
+
+File: am-utils.info, Node: Network Host Filesystem, Next: Network Filesystem Group, Prev: Network Filesystem, Up: Filesystem Types
+
+5.2 Network Host Filesystem (`host')
+====================================
+
+The "host" (`type:=host') filesystem allows access to the entire export
+tree of an NFS server. The implementation is layered above the `nfs'
+implementation so keep-alives work in the same way. The only option
+which needs to be specified is `rhost' which is the name of the
+fileserver to mount.
+
+ The `host' filesystem type works by querying the mount daemon on the
+given fileserver to obtain its export list. Amd then obtains
+filehandles for each of the exported filesystems. Any errors at this
+stage cause that particular filesystem to be ignored. Finally each
+filesystem is mounted. Again, errors are logged but ignored. One
+common reason for mounts to fail is that the mount point does not exist.
+Although Amd attempts to automatically create the mount point, it may
+be on a remote filesystem to which Amd does not have write permission.
+
+ When an attempt to unmount a `host' filesystem mount fails, Amd
+remounts any filesystems which had successfully been unmounted. To do
+this Amd queries the mount daemon again and obtains a fresh copy of the
+export list. Amd then tries to mount any exported filesystems which
+are not currently mounted.
+
+ Sun's automounter provides a special `-hosts' map. To achieve the
+same effect with Amd requires two steps. First a mount map must be
+created as follows:
+
+ * type:=host;rhost:=${key};fs:=${autodir}/${rhost}/root
+
+and then start Amd with the following command
+
+ amd /net net.map
+
+where `net.map' is the name of map described above. Note that the
+value of `${fs}' is overridden in the map. This is done to avoid a
+clash between the mount tree and any other filesystem already mounted
+from the same fileserver.
+
+ If different mount options are needed for different hosts then
+additional entries can be added to the map, for example
+
+ host2 opts:=ro,nosuid,soft
+
+would soft mount `host2' read-only.
+
+
+File: am-utils.info, Node: Network Filesystem Group, Next: Unix Filesystem, Prev: Network Host Filesystem, Up: Filesystem Types
+
+5.3 Network Filesystem Group (`nfsx')
+=====================================
+
+The "nfsx" (`type:=nfsx') filesystem allows a group of filesystems to
+be mounted from a single NFS server. The implementation is layered
+above the `nfs' implementation so keep-alives work in the same way.
+
+ _WARNING_: `nfsx' is meant to be a "last resort" kind of solution.
+It is racy and poorly supported. The authors _highly_ recommend that
+other solutions be considered before relying on it.
+
+ The options are the same as for the `nfs' filesystem with one
+difference for `rfs', as explained below.
+
+The following options should be specified:
+
+`rhost'
+ the remote fileserver. The default value is taken from the local
+ host name (`${host}') if no other value is specified.
+
+`rfs'
+ is a list of filesystems to mount, and must be specified. The
+ list is in the form of a comma separated strings.
+
+For example:
+
+ pub type:=nfsx;rhost:=gould;\
+ rfs:=/public,/,graphics,usenet;fs:=${autodir}/${rhost}/root
+
+ The first string defines the root of the tree, and is applied as a
+prefix to the remaining members of the list which define the individual
+filesystems. The first string is _not_ used as a filesystem name. A
+serial operation is used to determine the local mount points to ensure
+a consistent layout of a tree of mounts.
+
+ Here, the _three_ filesystems, `/public', `/public/graphics' and
+`/public/usenet', would be mounted.
+
+ A local mount point, `${fs}', _must_ be specified. The default
+local mount point will not work correctly in the general case. A
+suggestion is to use `fs:=${autodir}/${rhost}/root'.
+
+
+File: am-utils.info, Node: Unix Filesystem, Next: Caching Filesystem, Prev: Network Filesystem Group, Up: Filesystem Types
+
+5.4 Unix Filesystem (`ufs', `xfs', or `efs')
+============================================
+
+The "ufs" (`type:=ufs') filesystem type provides access to the system's
+standard disk filesystem--usually a derivative of the Berkeley Fast
+Filesystem.
+
+The following option must be specified:
+
+`dev'
+ the block special device to be mounted.
+
+ A UFS entry might be:
+
+ jsp host==charm;type:=ufs;dev:=/dev/sd0d;sublink:=jsp
+
+ UFS is the default Unix disk-based file system, which Am-utils picks
+up during the autoconfiguration phase. Some systems have more than one
+type, such as IRIX, that comes with EFS (Extent File System) and XFS
+(Extended File System). In those cases, you may explicitly set the file
+system type, by using entries such:
+
+ ez1 type:=efs;dev:=/dev/xd0a
+ ez2 type:=xfs;dev:=/dev/sd3c
+
+ The UFS/XFS/EFS filesystems are never timed out by default, i.e. they
+will never be unmounted by Amd. If automatic unmounting is desired, the
+"unmount" option should be added to the mount options for the entry.
+
+
+File: am-utils.info, Node: Caching Filesystem, Next: CD-ROM Filesystem, Prev: Unix Filesystem, Up: Filesystem Types
+
+5.5 Caching Filesystem (`cachefs')
+==================================
+
+The "cachefs" (`type:=cachefs') filesystem caches files from one
+location onto another, presumably providing faster access. It is
+particularly useful to cache from a larger and remote (slower) NFS
+partition to a smaller and local (faster) UFS directory.
+
+The following options must be specified:
+
+`cachedir'
+ the directory where the cache is stored.
+
+`rfs'
+ the path name to the "back file system" to be cached from.
+
+`fs'
+ the "front file system" mount point to the cached files, where Amd
+ will set a symbolic link pointing to.
+
+ A CacheFS entry for, say, the `/import' Amd mount point, might be:
+
+ copt type:=cachefs;cachedir:=/cache;rfs:=/import/opt;fs:=/n/import/copt
+
+ Access to the pathname `/import/copt' will follow a symbolic link to
+`/n/import/copt'. The latter is the mount point for a caching file
+system, that caches from `/import/opt' to `/cache'.
+
+ The cachefs filesystem is never timed out by default, i.e. it will
+never be unmounted by Amd. If automatic unmounting is desired, the
+"unmount" option should be added to the mount options for the entry.
+
+ Caveats:
+ 1. This file system is currently only implemented for Solaris 2.x!
+
+ 2. Before being used for the first time, the cache directory must be
+ initialized with `cfsadmin -c CACHEDIR'. See the manual page for
+ cfsadmin(1M) for more information.
+
+ 3. The "back file system" mounted must be a complete file system, not
+ a subdirectory thereof; otherwise you will get an error "Invalid
+ Argument".
+
+ 4. If Amd aborts abnormally, the state of the cache may be
+ inconsistent, requiring running the command `fsck -F cachefs
+ CACHEDIR'. Otherwise you will get the error "No Space Left on
+ Device".
+
+
+File: am-utils.info, Node: CD-ROM Filesystem, Next: UDF Filesystem, Prev: Caching Filesystem, Up: Filesystem Types
+
+5.6 CD-ROM Filesystem (`cdfs')
+==============================
+
+The "cdfs" (`type:=cdfs') filesystem mounts a CD-ROM with an ISO9660
+format filesystem on it.
+
+The following option must be specified:
+
+`dev'
+ the block special device to be mounted.
+
+ Some operating systems will fail to mount read-only CDs unless the
+`ro' option is specified. A cdfs entry might be:
+
+ cdfs os==sunos4;type:=cdfs;dev:=/dev/sr0 \
+ os==sunos5;addopts:=ro;type:=cdfs;dev:=/dev/dsk/c0t6d0s2
+
+
+File: am-utils.info, Node: UDF Filesystem, Next: Loopback Filesystem, Prev: CD-ROM Filesystem, Up: Filesystem Types
+
+5.7 CD-ROM Filesystem (`udf')
+=============================
+
+The "udf" (`type:=udf') filesystem mounts media with a Universal Disk
+Format (UDF) filesystem on it, e.g., a video DVD.
+
+The following option must be specified:
+
+`dev'
+ the block special device to be mounted.
+
+ Some operating systems will fail to mount read-only media unless the
+`ro' option is specified. A udf entry might be:
+
+ udf os==sunos4;type:=udf;dev:=/dev/sr0 \
+ os==sunos5;addopts:=ro;type:=udf;dev:=/dev/dsk/c0t6d0s2
+
+
+File: am-utils.info, Node: Loopback Filesystem, Next: Memory/RAM Filesystem, Prev: UDF Filesystem, Up: Filesystem Types
+
+5.8 Loopback Filesystem (`lofs')
+================================
+
+The "lofs" (`type:=lofs') filesystem is also called the loopback
+filesystem. It mounts a local directory on another, thus providing
+mount-time binding to another location (unlike symbolic links).
+
+ The loopback filesystem is particularly useful within the context of
+a chroot-ed directory (via chroot(2)), to provide access to directories
+otherwise inaccessible.
+
+The following option must be specified:
+
+`rfs'
+ the pathname to be mounted on top of `${fs}'.
+
+ Usually, the FTP server runs in a chroot-ed environment, for security
+reasons. In this example, lofs is used to provide a subdirectory within
+a user's home directory, also available for public ftp.
+
+ lofs type:=lofs;rfs:=/home/ezk/myftpdir;fs:=/usr/ftp/pub/ezk
+
+
+File: am-utils.info, Node: Memory/RAM Filesystem, Next: Null Filesystem, Prev: Loopback Filesystem, Up: Filesystem Types
+
+5.9 Memory/RAM Filesystem (`mfs')
+=================================
+
+The "mfs" (`type:=mfs') filesystem is available in 4.4BSD, Linux, and
+other systems. It creates a filesystem in a portion of the system's
+memory, thus providing very fast file (volatile) access.
+
+ XXX: THIS FILESYSTEM IS NOT IMPLEMENTED YET!
+
+
+File: am-utils.info, Node: Null Filesystem, Next: Floppy Filesystem, Prev: Memory/RAM Filesystem, Up: Filesystem Types
+
+5.10 Null Filesystem (`nullfs')
+===============================
+
+The "nullfs" (`type:=nullfs') filesystem is available from 4.4BSD, and
+is very similar to the loopback filesystem, "lofs".
+
+ XXX: THIS FILESYSTEM IS NOT IMPLEMENTED YET!
+
+
+File: am-utils.info, Node: Floppy Filesystem, Next: Translucent Filesystem, Prev: Null Filesystem, Up: Filesystem Types
+
+5.11 Floppy Filesystem (`pcfs')
+===============================
+
+The "pcfs" (`type:=pcfs') filesystem mounts a floppy previously
+formatted for the MS-DOS format.
+
+The following option must be specified:
+
+`dev'
+ the block special device to be mounted.
+
+ A pcfs entry might be:
+
+ pcfs os==sunos4;type:=pcfs;dev:=/dev/fd0 \
+ os==sunos5;type:=pcfs;dev:=/dev/diskette
+
+
+File: am-utils.info, Node: Translucent Filesystem, Next: Shared Memory+Swap Filesystem, Prev: Floppy Filesystem, Up: Filesystem Types
+
+5.12 Translucent Filesystem (`tfs')
+===================================
+
+The "tfs" (`type:=tfs') filesystem is an older version of the 4.4BSD
+"unionfs".
+
+ XXX: THIS FILESYSTEM IS NOT IMPLEMENTED YET!
+
+
+File: am-utils.info, Node: Shared Memory+Swap Filesystem, Next: User ID Mapping Filesystem, Prev: Translucent Filesystem, Up: Filesystem Types
+
+5.13 Shared Memory+Swap Filesystem (`tmpfs')
+============================================
+
+The "tmpfs" (`type:=tmpfs') filesystem shares memory between a the swap
+device and the rest of the system. It is generally used to provide a
+fast access `/tmp' directory, one that uses memory that is otherwise
+unused. This filesystem is available in SunOS 4.x and 5.x.
+
+ XXX: THIS FILESYSTEM IS NOT IMPLEMENTED YET!
+
+
+File: am-utils.info, Node: User ID Mapping Filesystem, Next: Program Filesystem, Prev: Shared Memory+Swap Filesystem, Up: Filesystem Types
+
+5.14 User ID Mapping Filesystem (`umapfs')
+==========================================
+
+The "umapfs" (`type:=umapfs') filesystem maps User IDs of file
+ownership, and is available from 4.4BSD.
+
+ XXX: THIS FILESYSTEM IS NOT IMPLEMENTED YET!
+
+
+File: am-utils.info, Node: Program Filesystem, Next: Symbolic Link Filesystem, Prev: User ID Mapping Filesystem, Up: Filesystem Types
+
+5.15 Program Filesystem (`program')
+===================================
+
+The "program" (`type:=program') filesystem type allows a program to be
+run whenever a mount or unmount is required. This allows easy addition
+of support for other filesystem types, such as MIT's Remote Virtual
+Disk (RVD) which has a programmatic interface via the commands
+`rvdmount' and `rvdunmount'.
+
+Both of the following options must be specified:
+
+`mount'
+ the program which will perform the mount.
+
+`unmount'
+
+`umount'
+ the program which will perform the unmount. For convenience, you
+ may use either `unmount' or `umount' but not both. If neither is
+ defined, Amd will default to `umount ${fs}' (the actual unmount
+ program pathname will be automatically determined at the time GNU
+ `configure' runs.)
+
+ The exit code from these two programs is interpreted as a Unix error
+code. As usual, exit code zero indicates success. To execute the
+program, Amd splits the string on whitespace to create an array of
+substrings. Single quotes `'' can be used to quote whitespace if that
+is required in an argument. There is no way to escape or change the
+single quote character.
+
+ To run e.g. the program `rvdmount' with a host name and filesystem as
+arguments, it would be specified by
+`fs:=${autodir}${path};type:=program;mount:="/etc/rvdmount rvdmount
+fserver ${fs}";unmount:="/etc/rdvumount rvdumount ${fs}"'.
+
+ The first element in the array is taken as the pathname of the
+program to execute. The other members of the array form the argument
+vector to be passed to the program, "including argument zero". The
+array is exactly the same as the array passed to the execv() system call
+(man execv for details). The split string must have at least two
+elements. The programs are directly executed by Amd, not via a shell.
+Therefore, if a script is to be used as a mount/umount program, it
+"must" begin with a `#!' interpreter specification.
+
+ Often, this program mount type is used for Samba mounts, where you
+need a double slash in pathnames. However, Amd normalizes sequences of
+slashes into one slash. Therefore, you must use an escaped slash,
+preceded by an escaped backslash. So to get a double slash in the
+mount command, you need the eight character sequence `\\\/\\\/' in your
+map. For example:
+
+ `mount="/sbin/mount mount -r -t smbfs -o-N,-Ihostname
+\\\/\\\/guest@venus/mp3"'
+
+ If a filesystem type is to be heavily used, it may be worthwhile
+adding a new filesystem type into Amd, but for most uses the program
+filesystem should suffice.
+
+ When the program is run, standard input and standard error are
+inherited from the current values used by Amd. Standard output is a
+duplicate of standard error. The value specified with the `-l' command
+line option has no effect on standard error.
+
+ Amd guarantees that the mountpoint will be created before calling
+the mount program, and that it will be removed after the umount program
+returns success.
+
+
+File: am-utils.info, Node: Symbolic Link Filesystem, Next: Symbolic Link Filesystem II, Prev: Program Filesystem, Up: Filesystem Types
+
+5.16 Symbolic Link Filesystem (`link')
+======================================
+
+Each filesystem type creates a symbolic link to point from the volume
+name to the physical mount point. The `link' filesystem does the same
+without any other side effects. This allows any part of the machines
+name space to be accessed via Amd.
+
+ One common use for the symlink filesystem is `/homes' which can be
+made to contain an entry for each user which points to their
+(auto-mounted) home directory. Although this may seem rather expensive,
+it provides a great deal of administrative flexibility.
+
+The following option must be defined:
+
+`fs'
+ The value of FS option specifies the destination of the link, as
+ modified by the SUBLINK option. If SUBLINK is non-null, it is
+ appended to `${fs}'`/' and the resulting string is used as the
+ target.
+
+ The `link' filesystem can be thought of as identical to the `ufs'
+filesystem but without actually mounting anything.
+
+ An example entry might be:
+
+ jsp host==charm;type:=link;fs:=/home/charm;sublink:=jsp
+ which would return a symbolic link pointing to `/home/charm/jsp'.
+
+
+File: am-utils.info, Node: Symbolic Link Filesystem II, Next: NFS-Link Filesystem, Prev: Symbolic Link Filesystem, Up: Filesystem Types
+
+5.17 Symbolic Link Filesystem II (`linkx')
+==========================================
+
+The "linkx" (`type:=linkx') filesystem type is identical to `link' with
+the exception that the target of the link must exist. Existence is
+checked with the lstat(2) system call.
+
+ The `linkx' filesystem type is particularly useful for wildcard map
+entries. In this case, a list of possible targets can be given and Amd
+will choose the first one which exists on the local machine.
+
+
+File: am-utils.info, Node: NFS-Link Filesystem, Next: Automount Filesystem, Prev: Symbolic Link Filesystem II, Up: Filesystem Types
+
+5.18 NFS-Link Filesystem (`nfsl')
+=================================
+
+The "nfsl" (`type:=nfsl') filesystem type is a combination of two
+others: `link' and `nfs'. If the local host name is equal to the value
+of `${rhost}' _and_ the target pathname listed in `${fs}' exists,
+`nfsl' will behave exactly as `type:=link', and refer to the target as
+a symbolic link. If the local host name is not equal to the value of
+`${rhost}', or if the target of the link does not exist, Amd will treat
+it as `type:=nfs', and will mount a remote pathname for it.
+
+ The `nfsl' filesystem type is particularly useful as a shorthand for
+the more cumbersome and yet one of the most popular Amd entries. For
+example, you can simplify all map entries that look like:
+
+ zing -fs:=/n/shekel/u/zing \
+ host!=shekel;type:=nfs;rhost:=shekel;rfs:=${fs} \
+ host==shekel;type:=link
+
+ or
+
+ zing -fs:=/n/shekel/u/zing \
+ exists(${fs});type:=link \
+ !exists(${fs});type:=nfs;rhost:=shekel;rfs:=${fs}
+
+ into a shorter form
+
+ zing type:=nfsl;fs:=/n/shekel/u/zing;rhost:=shekel;rfs:=${fs}
+
+ Not just does it make the maps smaller and simpler, but it avoids
+possible mistakes that often happen when forgetting to set up the two
+entries (one for `type:=nfs' and the other for `type:=link') necessary
+to perform transparent mounts of existing or remote mounts.
+
+
+File: am-utils.info, Node: Automount Filesystem, Next: Direct Automount Filesystem, Prev: NFS-Link Filesystem, Up: Filesystem Types
+
+5.19 Automount Filesystem (`auto')
+==================================
+
+The "auto" (`type:=auto') filesystem type creates a new automount point
+below an existing automount point. Top-level automount points appear
+as system mount points. An automount mount point can also appear as a
+sub-directory of an existing automount point. This allows some
+additional structure to be added, for example to mimic the mount tree of
+another machine.
+
+ The following options may be specified:
+
+`cache'
+ specifies whether the data in this mount-map should be cached.
+ The default value is `none', in which case no caching is done in
+ order to conserve memory.
+
+ However, better performance and reliability can be obtained by
+ caching some or all of a mount-map.
+
+ If the cache option specifies `all', the entire map is enumerated
+ when the mount point is created.
+
+ If the cache option specifies `inc', caching is done incrementally
+ as and when data is required. Some map types do not support cache
+ mode `all', in which case `inc' is used whenever `all' is
+ requested.
+
+ Caching can be entirely disabled by using cache mode `none'.
+
+ If the cache option specifies `regexp' then the entire map will be
+ enumerated and each key will be treated as an egrep-style regular
+ expression. The order in which a cached map is searched does not
+ correspond to the ordering in the source map so the regular
+ expressions should be mutually exclusive to avoid confusion.
+
+ Each mount map type has a default cache type, usually `inc', which
+ can be selected by specifying `mapdefault'.
+
+ The cache mode for a mount map can only be selected on the command
+ line. Starting Amd with the command:
+
+ amd /homes hesiod.homes -cache:=inc
+
+ will cause `/homes' to be automounted using the "Hesiod" name
+ server with local incremental caching of all successfully resolved
+ names.
+
+ All cached data is forgotten whenever Amd receives a `SIGHUP'
+ signal and, if cache `all' mode was selected, the cache will be
+ reloaded. This can be used to inform Amd that a map has been
+ updated. In addition, whenever a cache lookup fails and Amd needs
+ to examine a map, the map's modify time is examined. If the cache
+ is out of date with respect to the map then it is flushed as if a
+ `SIGHUP' had been received.
+
+ An additional option (`sync') may be specified to force Amd to
+ check the map's modify time whenever a cached entry is being used.
+ For example, an incremental, synchronized cache would be created
+ by the following command:
+
+ amd /homes hesiod.homes -cache:=inc,sync
+
+`fs'
+ specifies the name of the mount map to use for the new mount point.
+
+ Arguably this should have been specified with the `${rfs}' option
+ but we are now stuck with it due to historical accident.
+
+`pref'
+ alters the name that is looked up in the mount map. If `${pref}',
+ the "prefix", is non-null then it is prepended to the name
+ requested by the kernel "before" the map is searched. The default
+ prefix is the prefix of the parent map (if any) with name of the
+ auto node appended to it. That means if you want no prefix you
+ must say so in the map: `pref:=null'.
+
+`opts'
+ Normally, `auto' style maps are not browsable even if you turn on
+ directory browsability (*note browsable_dirs Parameter::). To
+ enable browsing entries in `auto' maps, specify `opts:=browsable'
+ or `opts:=fullybrowsable' in the description of this map.
+
+
+ The server `dylan.doc.ic.ac.uk' has two user disks: `/dev/dsk/2s0'
+and `/dev/dsk/5s0'. These are accessed as `/home/dylan/dk2' and
+`/home/dylan/dk5' respectively. Since `/home' is already an automount
+point, this naming is achieved with the following map entries:
+
+ dylan type:=auto;fs:=${map};pref:=${key}/
+ dylan/dk2 type:=ufs;dev:=/dev/dsk/2s0
+ dylan/dk5 type:=ufs;dev:=/dev/dsk/5s0
+
+
+File: am-utils.info, Node: Direct Automount Filesystem, Next: Union Filesystem, Prev: Automount Filesystem, Up: Filesystem Types
+
+5.20 Direct Automount Filesystem (`direct')
+===========================================
+
+The "direct" (`type:=direct') filesystem is almost identical to the
+automount filesystem. Instead of appearing to be a directory of mount
+points, it appears as a symbolic link to a mounted filesystem. The
+mount is done at the time the link is accessed. *Note Automount
+Filesystem::, for a list of required options.
+
+ Direct automount points are created by specifying the `direct'
+filesystem type on the command line:
+
+ amd ... /usr/man auto.direct -type:=direct
+
+ where `auto.direct' would contain an entry such as:
+
+ usr/man -type:=nfs;rfs:=/usr/man \
+ rhost:=man-server1 rhost:=man-server2
+
+ In this example, `man-server1' and `man-server2' are file servers
+which export copies of the manual pages. Note that the key which is
+looked up is the name of the automount point without the leading `/'.
+
+ Note that the implementation of the traditional "direct" filesystem
+is essentially a hack (pretending that the root of an NFS filesystem is
+a symlink) and many modern operating systems get very unhappy about it.
+For example, Linux kernel 2.4+ completely disallows it, and Solaris 2.8
+fails to unmount it when Amd shuts down. Therefore, the use of the
+traditional "direct" filesystem is strongly discouraged; it is only
+semi-supported, at best.
+
+ The autofs implementations that permit direct mounts are fully
+supported, however. That currently includes all versions of Solaris.
+Linux autofs does NOT support direct mounts at all.
+
+
+File: am-utils.info, Node: Union Filesystem, Next: Error Filesystem, Prev: Direct Automount Filesystem, Up: Filesystem Types
+
+5.21 Union Filesystem (`union')
+===============================
+
+The "union" (`type:=union') filesystem type allows the contents of
+several directories to be merged and made visible in a single
+directory. This can be used to overcome one of the major limitations
+of the Unix mount mechanism which only allows complete directories to
+be mounted.
+
+ For example, supposing `/tmp' and `/var/tmp' were to be merged into
+a new directory called `/mtmp', with files in `/var/tmp' taking
+precedence. The following command could be used to achieve this effect:
+
+ amd ... /mtmp union:/tmp:/var/tmp -type:=union
+
+ Currently, the unioned directories must _not_ be automounted. That
+would cause a deadlock. This seriously limits the current usefulness of
+this filesystem type and the problem will be addressed in a future
+release of Amd.
+
+ Files created in the union directory are actually created in the last
+named directory. This is done by creating a wildcard entry which points
+to the correct directory. The wildcard entry is visible if the union
+directory is listed, so allowing you to see which directory has
+priority.
+
+ The files visible in the union directory are computed at the time
+Amd is started, and are not kept up-to-date with respect to the
+underlying directories. Similarly, if a link is removed, for example
+with the `rm' command, it will be lost forever.
+
+
+File: am-utils.info, Node: Error Filesystem, Next: Top-level Filesystem, Prev: Union Filesystem, Up: Filesystem Types
+
+5.22 Error Filesystem (`error')
+===============================
+
+The "error" (`type:=error') filesystem type is used internally as a
+catch-all in the case where none of the other filesystems was selected,
+or some other error occurred. Lookups and mounts always fail with "No
+such file or directory". All other operations trivially succeed.
+
+ The error filesystem is not directly accessible.
+
+
+File: am-utils.info, Node: Top-level Filesystem, Next: Root Filesystem, Prev: Error Filesystem, Up: Filesystem Types
+
+5.23 Top-level Filesystem (`toplvl')
+====================================
+
+The "toplvl" (`type:=toplvl') filesystems is derived from the `auto'
+filesystem and is used to mount the top-level automount nodes.
+Requests of this type are automatically generated from the command line
+arguments.
+
+
+File: am-utils.info, Node: Root Filesystem, Next: Inheritance Filesystem, Prev: Top-level Filesystem, Up: Filesystem Types
+
+5.24 Root Filesystem (`root')
+=============================
+
+The "root" (`type:=root') filesystem type acts as an internal
+placeholder onto which Amd can pin `toplvl' mounts. Only one node of
+this type need ever exist and one is created automatically during
+startup. The effect of having more than one root node is undefined.
+
+ The root filesystem is not directly accessible.
+
+
+File: am-utils.info, Node: Inheritance Filesystem, Prev: Root Filesystem, Up: Filesystem Types
+
+5.25 Inheritance Filesystem (`inherit')
+=======================================
+
+The "inheritance" (`type:=inherit') filesystem is not directly
+accessible. Instead, internal mount nodes of this type are
+automatically generated when Amd is started with the `-r' option. At
+this time the system mount table is scanned to locate any filesystems
+which are already mounted. If any reference to these filesystems is
+made through Amd then instead of attempting to mount it, Amd simulates
+the mount and "inherits" the filesystem. This allows a new version of
+Amd to be installed on a live system simply by killing the old daemon
+with `SIGTERM' and starting the new one.
+
+ This filesystem type is not generally visible externally, but it is
+possible that the output from `amq -m' may list `inherit' as the
+filesystem type. This happens when an inherit operation cannot be
+completed for some reason, usually because a fileserver is down.
+
+
+File: am-utils.info, Node: Amd Configuration File, Next: Run-time Administration, Prev: Filesystem Types, Up: Top
+
+6 Amd Configuration File
+************************
+
+The `amd.conf' file is the configuration file for Amd, as part of the
+am-utils suite. This file contains runtime configuration information
+for the Amd automounter program.
+
+* Menu:
+
+* File Format::
+* The Global Section::
+* Regular Map Sections::
+* Common Parameters::
+* Global Parameters::
+* Regular Map Parameters::
+* amd.conf Examples::
+
+
+File: am-utils.info, Node: File Format, Next: The Global Section, Prev: Amd Configuration File, Up: Amd Configuration File
+
+6.1 File Format
+===============
+
+The `amd.conf' file consists of sections and parameters. A section
+begins with the name of the section in square brackets `[]' and
+continues until the next section begins or the end of the file is
+reached. Sections contain parameters of the form `name = value'.
+
+ The file is line-based -- that is, each newline-terminated line
+represents either a comment, a section name or a parameter. No
+line-continuation syntax is available.
+
+ Section names, parameter names and their values are case sensitive.
+
+ Only the first equals sign in a parameter is significant. Whitespace
+before or after the first equals sign is discarded. Leading, trailing
+and internal whitespace in section and parameter names is irrelevant.
+Leading and trailing whitespace in a parameter value is discarded.
+Internal whitespace within a parameter value is not allowed, unless the
+whole parameter value is quoted with double quotes as in `name = "some
+value"'.
+
+ Any line beginning with a pound sign `#' is ignored, as are lines
+containing only whitespace.
+
+ The values following the equals sign in parameters are all either a
+string (no quotes needed if string does not include spaces) or a
+boolean, which may be given as `yes'/`no'. Case is significant in all
+values. Some items such as cache timeouts are numeric.
+
+
+File: am-utils.info, Node: The Global Section, Next: Regular Map Sections, Prev: File Format, Up: Amd Configuration File
+
+6.2 The Global Section
+======================
+
+The global section must be specified as `[global]'. Parameters in this
+section either apply to Amd as a whole, or to all other regular map
+sections which follow. There should be only one global section defined
+in one configuration file.
+
+ It is highly recommended that this section be specified first in the
+configuration file. If it is not, then regular map sections which
+precede it will not use global values defined later.
+
+
+File: am-utils.info, Node: Regular Map Sections, Next: Common Parameters, Prev: The Global Section, Up: Amd Configuration File
+
+6.3 Regular Map Sections
+========================
+
+Parameters in regular (non-global) sections apply to a single map entry.
+For example, if the map section `[/homes]' is defined, then all
+parameters following it will be applied to the `/homes' Amd-managed
+mount point.
+
+
+File: am-utils.info, Node: Common Parameters, Next: Global Parameters, Prev: Regular Map Sections, Up: Amd Configuration File
+
+6.4 Common Parameters
+=====================
+
+These parameters can be specified either in the global or a map-specific
+section. Entries specified in a map-specific section override the
+default value or one defined in the global section. If such a common
+parameter is specified only in the global section, it is applicable to
+all regular map sections that follow.
+
+* Menu:
+
+* autofs_use_lofs Parameter::
+* browsable_dirs Parameter::
+* map_defaults Parameter::
+* map_options Parameter::
+* map_type Parameter::
+* mount_type Parameter::
+* search_path Parameter::
+* selectors_in_defaults Parameter::
+* sun_map_syntax Parameter::
+
+
+File: am-utils.info, Node: autofs_use_lofs Parameter, Next: browsable_dirs Parameter, Prev: Common Parameters, Up: Common Parameters
+
+6.4.1 autofs_use_lofs Parameter
+-------------------------------
+
+(type=string, default=`yes'). When set to `yes', Amd's autofs code
+will use lofs-type (loopback) mounts for `type:=link' mounts, as well
+as several other cases that require local references. This has the
+advantage that Amd does not use a secondary mount point and users do
+not see external pathnames (the infamous `/bin/pwd' problem, where it
+reports a different path than the user chdir'ed into). One of the
+disadvantages of using this option is that the autofs code is
+relatively new and the in-place mounts have not been throughly tested.
+
+ If this option is set to `no', then Amd's autofs code will use
+symlinks instead of lofs-type mounts for local references. This has
+the advantage of using simpler (more stable) code, but at the expense
+of negating one of autofs's big advantages: the hiding of Amd's
+internal paths. Note that symlinks are not supported in all autofs
+implementations, especially those derived from Solaris Autofs v1.
+Also, on Solaris 2.6 and newer, autofs symlinks are not cached,
+resulting in repeated up-call requests to Amd.
+
+
+File: am-utils.info, Node: browsable_dirs Parameter, Next: map_defaults Parameter, Prev: autofs_use_lofs Parameter, Up: Common Parameters
+
+6.4.2 browsable_dirs Parameter
+------------------------------
+
+(type=string, default=`no'). If `yes', then Amd's top-level mount
+points will be browsable to readdir(3) calls. This means you could run
+for example ls(1) and see what keys are available to mount in that
+directory. Not all entries are made visible to readdir(3): the
+`/defaults' entry, wildcard entries, and those with a `/' in them are
+not included. If you specify `full' to this option, all but the
+`/defaults' entry will be visible. Note that if you run a command
+which will attempt to stat(2) the entries, such as often done by `ls
+-l' or `ls -F', Amd will attempt to mount every entry in that map.
+This is often called a "mount storm".
+
+ Note that mount storms are mostly avoided by using autofs mounts
+(`mount_type = autofs').
+
+
+File: am-utils.info, Node: map_defaults Parameter, Next: map_options Parameter, Prev: browsable_dirs Parameter, Up: Common Parameters
+
+6.4.3 map_defaults Parameter
+----------------------------
+
+(type=string, default to empty). This option sets a string to be used
+as the map's `/defaults' entry, overriding any `/defaults' specified in
+the map. This allows local users to override a given map's defaults
+without modifying maps globally (which is impossible in sites where the
+maps are managed by a different administrative group).
+
+
+File: am-utils.info, Node: map_options Parameter, Next: map_type Parameter, Prev: map_defaults Parameter, Up: Common Parameters
+
+6.4.4 map_options Parameter
+---------------------------
+
+(type=string, default no options). This option is the same as
+specifying map options on the command line to Amd, such as `cache:=all'.
+
+
+File: am-utils.info, Node: map_type Parameter, Next: mount_type Parameter, Prev: map_options Parameter, Up: Common Parameters
+
+6.4.5 map_type Parameter
+------------------------
+
+(type=string, default search all map types). If specified, Amd will
+initialize the map only for the type given. This is useful to avoid the
+default map search type used by Amd which takes longer and can have
+undesired side-effects such as initializing NIS even if not used.
+Possible values are
+
+`file'
+ plain files
+
+`hesiod'
+ Hesiod name service from MIT
+
+`ldap'
+ Lightweight Directory Access Protocol
+
+`ndbm'
+ (New) dbm style hash files
+
+`nis'
+ Network Information Services (version 2)
+
+`nisplus'
+ Network Information Services Plus (version 3)
+
+`passwd'
+ local password files
+
+`union'
+ union maps
+
+
+File: am-utils.info, Node: mount_type Parameter, Next: search_path Parameter, Prev: map_type Parameter, Up: Common Parameters
+
+6.4.6 mount_type Parameter
+--------------------------
+
+(type=string, default=`nfs'). All Amd mount types default to NFS.
+That is, Amd is an NFS server on the map mount points, for the local
+host it is running on. If `autofs' is specified, Amd will be an autofs
+server for those mount points.
+
+
+File: am-utils.info, Node: search_path Parameter, Next: selectors_in_defaults Parameter, Prev: mount_type Parameter, Up: Common Parameters
+
+6.4.7 search_path Parameter
+---------------------------
+
+(type=string, default no search path). This provides a
+(colon-delimited) search path for file maps. Using a search path,
+sites can allow for local map customizations and overrides, and can
+distributed maps in several locations as needed.
+
+
+File: am-utils.info, Node: selectors_in_defaults Parameter, Next: sun_map_syntax Parameter, Prev: search_path Parameter, Up: Common Parameters
+
+6.4.8 selectors_in_defaults Parameter
+-------------------------------------
+
+(type=boolean, default=`no'). If `yes', then the `/defaults' entry of
+maps will search for and process any selectors before setting defaults
+for all other keys in that map. Useful when you want to set different
+options for a complete map based on some parameters. For example, you
+may want to better the NFS performance over slow slip-based networks as
+follows:
+
+ /defaults \
+ wire==slip-net;opts:=intr,rsize=1024,wsize=1024 \
+ wire!=slip-net;opts:=intr,rsize=8192,wsize=8192
+
+ Deprecated form: selectors_on_default.
+
+
+File: am-utils.info, Node: sun_map_syntax Parameter, Prev: selectors_in_defaults Parameter, Up: Common Parameters
+
+6.4.9 sun_map_syntax Parameter
+------------------------------
+
+(type=boolean, default=`no'). If `yes', then Amd will parse the map
+according to the Sun Automount syntax.
+
+
+File: am-utils.info, Node: Global Parameters, Next: Regular Map Parameters, Prev: Common Parameters, Up: Amd Configuration File
+
+6.5 Global Parameters
+=====================
+
+The following parameters are applicable to the `[global]' section only.
+
+* Menu:
+
+* arch Parameter::
+* auto_attrcache Parameter::
+* auto_dir Parameter::
+* cache_duration Parameter::
+* cluster Parameter::
+* debug_mtab_file Parameter::
+* debug_options Parameter::
+* dismount_interval Parameter::
+* domain_strip Parameter::
+* exec_map_timeout Parameter::
+* forced_unmounts Parameter::
+* full_os Parameter::
+* fully_qualified_hosts Parameter::
+* hesiod_base Parameter::
+* karch Parameter::
+* ldap_base Parameter::
+* ldap_cache_maxmem Parameter::
+* ldap_cache_seconds Parameter::
+* ldap_hostports Parameter::
+* ldap_proto_version Parameter::
+* local_domain Parameter::
+* localhost_address Parameter::
+* log_file Parameter::
+* log_options Parameter::
+* map_reload_interval Parameter::
+* nfs_allow_any_interface Parameter::
+* nfs_allow_insecure_port Parameter::
+* nfs_proto Parameter::
+* nfs_retransmit_counter Parameter::
+* nfs_retransmit_counter_udp Parameter::
+* nfs_retransmit_counter_tcp Parameter::
+* nfs_retransmit_counter_toplvl Parameter::
+* nfs_retry_interval Parameter::
+* nfs_retry_interval_udp Parameter::
+* nfs_retry_interval_tcp Parameter::
+* nfs_retry_interval_toplvl Parameter::
+* nfs_vers Parameter::
+* nis_domain Parameter::
+* normalize_hostnames Parameter::
+* normalize_slashes Parameter::
+* os Parameter::
+* osver Parameter::
+* pid_file Parameter::
+* plock Parameter::
+* portmap_program Parameter::
+* preferred_amq_port Parameter::
+* print_pid Parameter::
+* print_version Parameter::
+* restart_mounts Parameter::
+* show_statfs_entries Parameter::
+* truncate_log Parameter::
+* unmount_on_exit Parameter::
+* use_tcpwrappers Parameter::
+* vendor Parameter::
+
+
+File: am-utils.info, Node: arch Parameter, Next: auto_attrcache Parameter, Prev: Global Parameters, Up: Global Parameters
+
+6.5.1 arch Parameter
+--------------------
+
+(type=string, default to compiled in value). Same as the `-A' option
+to Amd. Allows you to override the value of the arch Amd variable.
+
+
+File: am-utils.info, Node: auto_attrcache Parameter, Next: auto_dir Parameter, Prev: arch Parameter, Up: Global Parameters
+
+6.5.2 auto_attrcache Parameter
+------------------------------
+
+(type=numeric, default=0). Specify in seconds (or units of 0.1
+seconds, depending on the OS), what is the (kernel-side) NFS attribute
+cache timeout for Amd's own automount points. A value of 0 is supposed
+to turn off attribute caching, meaning that Amd will be consulted via a
+kernel-RPC each time someone stat()'s the mount point (which could be
+abused as a denial-of-service attack).
+
+ _WARNING_: Amd depends on being able to turn off the NFS attribute
+cache of the client OS. If it cannot be turned off, then users may get
+ESTALE errors or symlinks that point to the wrong places. This is more
+likely under heavy use of Amd, for example if your system is
+experiencing frequent map changes or frequent mounts/unmounts.
+Therefore, under normal circumstances, this parameter should remain set
+to 0, to ensure that the attribute cache is indeed off.
+
+ Unfortunately, some kernels (e.g., certain BSDs) don't have a way to
+turn off the NFS attribute cache. Setting this parameter to 0 is
+supposed to turn off attribute caching entirely, but unfortunately it
+does not; instead, the attribute cache is set to some internal
+hard-coded default (usually anywhere from 5-30 seconds). If you
+suspect that your OS doesn't have a reliable way of turning off the
+attribute cache, then it is better to set this parameter to the
+smallest possible non-zero value (set `auto_attrcache=1' in your
+`amd.conf'). This will not eliminate the problem, but reduce the risk
+window somewhat. The best solutions are (1) to use Amd in Autofs mode,
+if it's supported in your OS, and (2) talk to your OS vendor to support
+a true `noac' flag. See the README.attrcache
+(http://www.am-utils.org/docs/am-utils/attrcache.txt) document for more
+details.
+
+ If you are able to turn off the attribute cache on your OS, alas,
+Amd's performance may degrade (when not using Autofs) because every
+traversal of an automounter-controlled pathname will result in a lookup
+request from the kernel to Amd. Under heavy loads, for example when
+using recursive tools like `find', `rdist', or `rsync', this
+performance degradation can be noticeable. There are two possible
+solutions that some administrators have chosen to improve performance:
+
+ 1. First, you can turn off unmounting using the `nounmount' mount
+ option. This will ensure that no Amd symlink could ever change,
+ thereby the kernel's attribute cache and Amd will always be in
+ sync. However, this method will cause the number of mounts to keep
+ growing, even if some are no longer in use; this has the
+ disadvantage that your system could be more susceptible to hangs
+ if even one of those accumulating mounts hangs due to a downed
+ server.
+
+ 2. Second, you can turn on attribute caching carefully by setting a
+ small automounter attribute cache value (say, one second), and a
+ relatively large dismount interval (say, one hour). (*Note
+ dismount_interval Parameter::.) For example, you can set this in
+ your `amd.conf':
+
+ [global]
+ auto_attrcache = 1
+ dismount_interval = 3600
+
+ This has the benefit of using the kernel's attribute cache and thus
+ improving performance. The disadvantage with this option is that
+ the window of vulnerability is not eliminated entirely: it is only
+ made smaller.
+
+
+
+File: am-utils.info, Node: auto_dir Parameter, Next: cache_duration Parameter, Prev: auto_attrcache Parameter, Up: Global Parameters
+
+6.5.3 auto_dir Parameter
+------------------------
+
+(type=string, default=`/a'). Same as the `-a' option to Amd. This
+sets the private directory where Amd will create sub-directories for
+its real mount points.
+
+
+File: am-utils.info, Node: cache_duration Parameter, Next: cluster Parameter, Prev: auto_dir Parameter, Up: Global Parameters
+
+6.5.4 cache_duration Parameter
+------------------------------
+
+(type=numeric, default=300). Same as the `-c' option to Amd. Sets the
+duration in seconds that looked-up or mounted map entries remain in the
+cache.
+
+
+File: am-utils.info, Node: cluster Parameter, Next: debug_mtab_file Parameter, Prev: cache_duration Parameter, Up: Global Parameters
+
+6.5.5 cluster Parameter
+-----------------------
+
+(type=string, default no cluster). Same as the `-C' option to Amd.
+Specifies the alternate HP-UX cluster to use.
+
+
+File: am-utils.info, Node: debug_mtab_file Parameter, Next: debug_options Parameter, Prev: cluster Parameter, Up: Global Parameters
+
+6.5.6 debug_mtab_file Parameter
+-------------------------------
+
+(type=string, default="/tmp/mtab"). Path to mtab file that is used by
+Amd to store a list of mounted file systems during debug-mtab mode.
+This option only applies to systems that store mtab information on disk.
+
+
+File: am-utils.info, Node: debug_options Parameter, Next: dismount_interval Parameter, Prev: debug_mtab_file Parameter, Up: Global Parameters
+
+6.5.7 debug_options Parameter
+-----------------------------
+
+(type=string, default no debug options). Same as the `-D' option to
+Amd. Specify any debugging options for Amd. Works only if am-utils
+was configured for debugging using the `--enable-debug' option. The
+additional `mem' option can be turned on via `--enable-debug=mem'.
+Otherwise debugging options are ignored. Options are comma delimited,
+and can be preceded by the string `no' to negate their meaning. You
+can get the list of supported debugging and logging options by running
+`amd -H'. Possible values those listed for the -D option. *Note -D
+Option::.
+
+
+File: am-utils.info, Node: dismount_interval Parameter, Next: domain_strip Parameter, Prev: debug_options Parameter, Up: Global Parameters
+
+6.5.8 dismount_interval Parameter
+---------------------------------
+
+(type=numeric, default=120). Same as the `-w' option to Amd. Specify
+in seconds, the time between attempts to dismount file systems that
+have exceeded their cached times.
+
+
+File: am-utils.info, Node: domain_strip Parameter, Next: exec_map_timeout Parameter, Prev: dismount_interval Parameter, Up: Global Parameters
+
+6.5.9 domain_strip Parameter
+----------------------------
+
+(type=boolean, default=`yes'). If `yes', then the domain name part
+referred to by `${rhost}' is stripped off. This is useful to keep logs
+and smaller. If `no', then the domain name part is left changed. This
+is useful when using multiple domains with the same maps (as you may
+have hosts whose domain-stripped name is identical).
+
+
+File: am-utils.info, Node: exec_map_timeout Parameter, Next: forced_unmounts Parameter, Prev: domain_strip Parameter, Up: Global Parameters
+
+6.5.10 exec_map_timeout Parameter
+---------------------------------
+
+(type=numeric, default=10). The timeout in seconds that Amd will wait
+for an executable map program before an answer is returned from that
+program (or script). This value should be set to as small as possible
+while still allowing normal replies to be returned before the timer
+expires, because during the time that the executable map program is
+queried, Amd is essentially waiting and is thus not responding to any
+other queries. *Note Executable maps::.
+
+
+File: am-utils.info, Node: forced_unmounts Parameter, Next: full_os Parameter, Prev: exec_map_timeout Parameter, Up: Global Parameters
+
+6.5.11 forced_unmounts Parameter
+--------------------------------
+
+(type=boolean, default=`no'). Sometimes, mount points are hung due to
+unrecoverable conditions, such as when NFS servers migrate, change
+their IP address, are down permanently, or due to hardware failures,
+and more. In this case, attempting to unmount an existing mount point,
+or even just to stat(2) it, results in one of three fatal errors: EIO,
+ESTALE, or EBUSY. At that point, Amd can do little to recover that hung
+point (in fact, the OS cannot automatically recover either). For that
+reason, some OSs support special kinds of forced unmounts, which must
+be used very carefully: they will force an unmount immediately (or
+lazily on Linux), which could result in application data loss.
+However, that may be the only way to recover the entire host (without
+rebooting). Once a hung mount point is forced out, Amd can then
+re-mount a replacement one (if available), bringing a mostly-hung
+system back to operation and avoiding a potentially costly reboot.
+
+ If the `forced_unmounts' option is set to `yes', and the client OS
+supports forced or lazy unmounts, then Amd will attempt to use them if
+it gets any of the three serious error conditions listed above. Note
+that Amd will force the unmount of mount points that returned EBUSY
+only for `type:=toplvl' mounts (*note Top-level Filesystem::): that is,
+Amd's own mount points. This is useful to recover from a previously
+hung Amd, and to ensure that an existing Amd can shutdown cleanly even
+if some processes are keeping its mount points busy (i.e., when a
+user's shell process uses `cd' to set its CWD to Amd's own mount point).
+
+ If this option is set to `no' (the default), then Amd will not
+attempt this special recovery procedure.
+
+
+File: am-utils.info, Node: full_os Parameter, Next: fully_qualified_hosts Parameter, Prev: forced_unmounts Parameter, Up: Global Parameters
+
+6.5.12 full_os Parameter
+------------------------
+
+(type=string, default to compiled in value). The full name of the
+operating system, along with its version. Allows you to override the
+compiled-in full name and version of the operating system. Useful when
+the compiled-in name is not desired. For example, the full operating
+system name on linux comes up as `linux', but you can override it to
+`linux-2.2.5'.
+
+
+File: am-utils.info, Node: fully_qualified_hosts Parameter, Next: hesiod_base Parameter, Prev: full_os Parameter, Up: Global Parameters
+
+6.5.13 fully_qualified_hosts Parameter
+--------------------------------------
+
+(type=string, default=`no'). If `yes', Amd will perform RPC
+authentication using fully-qualified host names. This is necessary for
+some systems, and especially when performing cross-domain mounting. For
+this function to work, the Amd variable `${hostd}' is used, requiring
+that `${domain}' not be null.
+
+
+File: am-utils.info, Node: hesiod_base Parameter, Next: karch Parameter, Prev: fully_qualified_hosts Parameter, Up: Global Parameters
+
+6.5.14 hesiod_base Parameter
+----------------------------
+
+(type=string, default=`automount'). Specify the base name for hesiod
+maps.
+
+
+File: am-utils.info, Node: karch Parameter, Next: ldap_base Parameter, Prev: hesiod_base Parameter, Up: Global Parameters
+
+6.5.15 karch Parameter
+----------------------
+
+(type=string, default to karch of the system). Same as the `-k' option
+to Amd. Allows you to override the kernel-architecture of your system.
+Useful for example on Sun (Sparc) machines, where you can build one
+Amd binary, and run it on multiple machines, yet you want each one to
+get the correct karch variable set (for example, sun4c, sun4m, sun4u,
+etc.) Note that if not specified, Amd will use uname(2) to figure out
+the kernel architecture of the machine.
+
+
+File: am-utils.info, Node: ldap_base Parameter, Next: ldap_cache_maxmem Parameter, Prev: karch Parameter, Up: Global Parameters
+
+6.5.16 ldap_base Parameter
+--------------------------
+
+(type=string, default not set). Specify the base name for LDAP. This
+often includes LDAP-specific values such as country and organization.
+
+
+File: am-utils.info, Node: ldap_cache_maxmem Parameter, Next: ldap_cache_seconds Parameter, Prev: ldap_base Parameter, Up: Global Parameters
+
+6.5.17 ldap_cache_maxmem Parameter
+----------------------------------
+
+(type=numeric, default=131072). Specify the maximum memory Amd should
+use to cache LDAP entries.
+
+
+File: am-utils.info, Node: ldap_cache_seconds Parameter, Next: ldap_hostports Parameter, Prev: ldap_cache_maxmem Parameter, Up: Global Parameters
+
+6.5.18 ldap_cache_seconds Parameter
+-----------------------------------
+
+(type=numeric, default=0). Specify the number of seconds to keep
+entries in the cache.
+
+
+File: am-utils.info, Node: ldap_hostports Parameter, Next: ldap_proto_version Parameter, Prev: ldap_cache_seconds Parameter, Up: Global Parameters
+
+6.5.19 ldap_hostports Parameter
+-------------------------------
+
+(type=string, default not set). Specify the LDAP host and port values.
+
+
+File: am-utils.info, Node: ldap_proto_version Parameter, Next: local_domain Parameter, Prev: ldap_hostports Parameter, Up: Global Parameters
+
+6.5.20 ldap_proto_version Parameter
+-----------------------------------
+
+(type=numeric, default=2). Specify the LDAP protocol version to use.
+With a value of 3 will use LDAPv3 protocol.
+
+
+File: am-utils.info, Node: local_domain Parameter, Next: localhost_address Parameter, Prev: ldap_proto_version Parameter, Up: Global Parameters
+
+6.5.21 local_domain Parameter
+-----------------------------
+
+(type=string, default no sub-domain). Same as the `-d' option to Amd.
+Specify the local domain name. If this option is not given the domain
+name is determined from the hostname, by removing the first component
+of the fully-qualified host name.
+
+
+File: am-utils.info, Node: localhost_address Parameter, Next: log_file Parameter, Prev: local_domain Parameter, Up: Global Parameters
+
+6.5.22 localhost_address Parameter
+----------------------------------
+
+(type=string, default to localhost or 127.0.0.1). Specify the name or
+IP address for Amd to use when connecting the sockets for the local NFS
+server and the RPC server. This defaults to 127.0.0.1 or whatever the
+host reports as its local address. This parameter is useful on hosts
+with multiple addresses where you want to force Amd to connect to a
+specific address.
+
+
+File: am-utils.info, Node: log_file Parameter, Next: log_options Parameter, Prev: localhost_address Parameter, Up: Global Parameters
+
+6.5.23 log_file Parameter
+-------------------------
+
+(type=string, default=`stderr'). Same as the `-l' option to Amd.
+Specify a file name to log Amd events to. If the string `/dev/stderr'
+is specified, Amd will send its events to the standard error file
+descriptor.
+
+ If the string `syslog' is given, Amd will record its events with the
+system logger syslogd(8). If your system supports syslog facilities,
+then the default facility used is `LOG_DAEMON'.
+
+ When using syslog, if you wish to change the facility, append its
+name to the option name, delimited by a single colon. For example, if
+it is the string `syslog:local7' then Amd will log messages via
+syslog(3) using the `LOG_LOCAL7' facility. If the facility name
+specified is not recognized, Amd will default to `LOG_DAEMON'. Note:
+while you can use any syslog facility available on your system, it is
+generally a bad idea to use those reserved for other services such as
+`kern', `lpr', `cron', etc.
+
+
+File: am-utils.info, Node: log_options Parameter, Next: map_reload_interval Parameter, Prev: log_file Parameter, Up: Global Parameters
+
+6.5.24 log_options Parameter
+----------------------------
+
+(type=string, default="defaults"). Same as the `-x' option to Amd.
+Specify any logging options for Amd. Options are comma delimited, and
+can be preceded by the string `no' to negate their meaning. The
+`debug' logging option is only available if am-utils was configured
+with `--enable-debug'. You can get the list of supported debugging
+options by running `amd -H'. Possible values are:
+
+`all'
+ all messages
+
+`defaults'
+ an alias for "fatal,error,user,warning,info"
+
+`debug'
+ debug messages
+
+`error'
+ non-fatal system errors (cannot be turned off)
+
+`fatal'
+ fatal errors (cannot be turned off)
+
+`info'
+ information
+
+`map'
+ map errors
+
+`stats'
+ additional statistical information
+
+`user'
+ non-fatal user errors
+
+`warn'
+ warnings
+
+`warning'
+ warnings
+
+
+File: am-utils.info, Node: map_reload_interval Parameter, Next: nfs_allow_any_interface Parameter, Prev: log_options Parameter, Up: Global Parameters
+
+6.5.25 map_reload_interval Parameter
+------------------------------------
+
+(type=numeric, default=3600). The number of seconds that Amd will wait
+before it checks to see if any maps have changed at their source (NIS
+servers, LDAP servers, files, etc.). Amd will reload only those maps
+that have changed.
+
+
+File: am-utils.info, Node: nfs_allow_any_interface Parameter, Next: nfs_allow_insecure_port Parameter, Prev: map_reload_interval Parameter, Up: Global Parameters
+
+6.5.26 nfs_allow_any_interface Parameter
+----------------------------------------
+
+(type=string, default=`no'). Normally Amd accepts local NFS packets
+only from 127.0.0.1. If this parameter is set to `yes', then amd will
+accept local NFS packets from any local interface; this is useful on
+hosts that may have multiple interfaces where the system is forced to
+send all outgoing packets (even those bound to the same host) via an
+address other than 127.0.0.1.
+
+
+File: am-utils.info, Node: nfs_allow_insecure_port Parameter, Next: nfs_proto Parameter, Prev: nfs_allow_any_interface Parameter, Up: Global Parameters
+
+6.5.27 nfs_allow_insecure_port Parameter
+----------------------------------------
+
+(type=string, default=`no'). Normally Amd will refuse requests coming
+from unprivileged ports (i.e., ports >= 1024 on Unix systems), so that
+only privileged users and the kernel can send NFS requests to it.
+However, some kernels (certain versions of Darwin, MacOS X, and Linux)
+have bugs that cause them to use unprivileged ports in certain
+situations, which causes Amd to stop dead in its tracks. This
+parameter allows Amd to operate normally even on such systems, at the
+expense of a slight decrease in the security of its operations. If you
+see messages like "ignoring request from foo:1234, port not reserved"
+in your Amd log, try enabling this parameter and give it another go.
+
+
+File: am-utils.info, Node: nfs_proto Parameter, Next: nfs_retransmit_counter Parameter, Prev: nfs_allow_insecure_port Parameter, Up: Global Parameters
+
+6.5.28 nfs_proto Parameter
+--------------------------
+
+(type=string, default to trying version tcp then udp). By default, Amd
+tries `tcp' and then `udp'. This option forces the overall NFS
+protocol used to TCP or UDP. It overrides what is in the Amd maps, and
+is useful when Amd is compiled with TCP support in NFSv2/NFSv3 that may
+not be stable. With this option you can turn off the complete usage of
+TCP for NFS dynamically (without having to recompile Amd), and use UDP
+only, until such time as TCP support is desired again.
+
+
+File: am-utils.info, Node: nfs_retransmit_counter Parameter, Next: nfs_retransmit_counter_udp Parameter, Prev: nfs_proto Parameter, Up: Global Parameters
+
+6.5.29 nfs_retransmit_counter Parameter
+---------------------------------------
+
+(type=numeric, default=11). Same as the retransmit part of the `-t'
+timeout.retransmit option to Amd. Specifies the number of NFS
+retransmissions that the kernel will use to communicate with Amd using
+either UDP or TCP mounts. *Note -t Option::.
+
+
+File: am-utils.info, Node: nfs_retransmit_counter_udp Parameter, Next: nfs_retransmit_counter_tcp Parameter, Prev: nfs_retransmit_counter Parameter, Up: Global Parameters
+
+6.5.30 nfs_retransmit_counter_udp Parameter
+-------------------------------------------
+
+(type=numeric, default=11). Same as the nfs_retransmit_counter
+parameter, but applied globally only to UDP mounts. *Note
+nfs_retransmit_counter Parameter::.
+
+
+File: am-utils.info, Node: nfs_retransmit_counter_tcp Parameter, Next: nfs_retransmit_counter_toplvl Parameter, Prev: nfs_retransmit_counter_udp Parameter, Up: Global Parameters
+
+6.5.31 nfs_retransmit_counter_tcp Parameter
+-------------------------------------------
+
+(type=numeric, default=11). Same as the nfs_retransmit_counter
+parameter, but applied globally only to TCP mounts. *Note
+nfs_retransmit_counter Parameter::.
+
+
+File: am-utils.info, Node: nfs_retransmit_counter_toplvl Parameter, Next: nfs_retry_interval Parameter, Prev: nfs_retransmit_counter_tcp Parameter, Up: Global Parameters
+
+6.5.32 nfs_retransmit_counter_toplvl Parameter
+----------------------------------------------
+
+(type=numeric, default=11). Same as the nfs_retransmit_counter
+parameter, applied only for Amd's top-level UDP mounts. On some
+systems it is useful to set this differently than the OS default, so as
+to better tune Amd's responsiveness under heavy scheduler loads. *Note
+nfs_retransmit_counter Parameter::.
+
+
+File: am-utils.info, Node: nfs_retry_interval Parameter, Next: nfs_retry_interval_udp Parameter, Prev: nfs_retransmit_counter_toplvl Parameter, Up: Global Parameters
+
+6.5.33 nfs_retry_interval Parameter
+-----------------------------------
+
+(type=numeric, default=8). Same as the timeout part of the `-t'
+timeout.retransmit option to Amd. Specifies the NFS timeout interval,
+in _tenths_ of seconds, between NFS/RPC retries (for UDP or TCP). This
+is the value that the kernel will use to communicate with Amd. *Note
+-t Option::.
+
+ Amd relies on the kernel RPC retransmit mechanism to trigger mount
+retries. The values of the nfs_retransmit_counter and the
+nfs_retry_interval parameters change the overall retry interval. Too
+long an interval gives poor interactive response; too short an interval
+causes excessive retries.
+
+
+File: am-utils.info, Node: nfs_retry_interval_udp Parameter, Next: nfs_retry_interval_tcp Parameter, Prev: nfs_retry_interval Parameter, Up: Global Parameters
+
+6.5.34 nfs_retry_interval_udp Parameter
+---------------------------------------
+
+(type=numeric, default=8). Same as the nfs_retry_interval parameter,
+but applied globally only to UDP mounts. *Note nfs_retry_interval
+Parameter::.
+
+
+File: am-utils.info, Node: nfs_retry_interval_tcp Parameter, Next: nfs_retry_interval_toplvl Parameter, Prev: nfs_retry_interval_udp Parameter, Up: Global Parameters
+
+6.5.35 nfs_retry_interval_tcp Parameter
+---------------------------------------
+
+(type=numeric, default=8). Same as the nfs_retry_interval parameter,
+but applied globally only to TCP mounts. *Note nfs_retry_interval
+Parameter::.
+
+
+File: am-utils.info, Node: nfs_retry_interval_toplvl Parameter, Next: nfs_vers Parameter, Prev: nfs_retry_interval_tcp Parameter, Up: Global Parameters
+
+6.5.36 nfs_retry_interval_toplvl Parameter
+------------------------------------------
+
+(type=numeric, default=8). Same as the nfs_retry_interval parameter,
+applied only for Amd's top-level UDP mounts. On some systems it is
+useful to set this differently than the OS default, so as to better
+tune Amd's responsiveness under heavy scheduler loads. *Note
+nfs_retry_interval Parameter::.
+
+
+File: am-utils.info, Node: nfs_vers Parameter, Next: nis_domain Parameter, Prev: nfs_retry_interval_toplvl Parameter, Up: Global Parameters
+
+6.5.37 nfs_vers Parameter
+-------------------------
+
+(type=numeric, default to trying version 3 then 2). By default, Amd
+tries version 3 and then version 2. This option forces the overall NFS
+protocol used to version 3 or 2. It overrides what is in the Amd maps,
+and is useful when Amd is compiled with NFSv3 support that may not be
+stable. With this option you can turn off the complete usage of NFSv3
+dynamically (without having to recompile Amd), and use NFSv2 only,
+until such time as NFSv3 support is desired again.
+
+
+File: am-utils.info, Node: nis_domain Parameter, Next: normalize_hostnames Parameter, Prev: nfs_vers Parameter, Up: Global Parameters
+
+6.5.38 nis_domain Parameter
+---------------------------
+
+(type=string, default to local NIS domain name). Same as the `-y'
+option to Amd. Specify an alternative NIS domain from which to fetch
+the NIS maps. The default is the system domain name. This option is
+ignored if NIS support is not available.
+
+
+File: am-utils.info, Node: normalize_hostnames Parameter, Next: normalize_slashes Parameter, Prev: nis_domain Parameter, Up: Global Parameters
+
+6.5.39 normalize_hostnames Parameter
+------------------------------------
+
+(type=boolean, default=`no'). Same as the `-n' option to Amd. If
+`yes', then the name referred to by `${rhost}' is normalized relative
+to the host database before being used. The effect is to translate
+aliases into "official" names.
+
+
+File: am-utils.info, Node: normalize_slashes Parameter, Next: os Parameter, Prev: normalize_hostnames Parameter, Up: Global Parameters
+
+6.5.40 normalize_slashes Parameter
+----------------------------------
+
+(type=boolean, default=`yes'). If `yes' then amd will condense all
+multiple `/' (slash) characters into one and remove all trailing
+slashes. If `no', then amd will not touch strings that may contain
+repeated or trailing slashes. The latter is sometimes useful with SMB
+mounts, which often require multiple slash characters in pathnames.
+
+
+File: am-utils.info, Node: os Parameter, Next: osver Parameter, Prev: normalize_slashes Parameter, Up: Global Parameters
+
+6.5.41 os Parameter
+-------------------
+
+(type=string, default to compiled in value). Same as the `-O' option
+to Amd. Allows you to override the compiled-in name of the operating
+system. Useful when the built-in name is not desired for backward
+compatibility reasons. For example, if the built-in name is `sunos5',
+you can override it to `sos5', and use older maps which were written
+with the latter in mind.
+
+
+File: am-utils.info, Node: osver Parameter, Next: pid_file Parameter, Prev: os Parameter, Up: Global Parameters
+
+6.5.42 osver Parameter
+----------------------
+
+(type=string, default to compiled in value). Same as the `-o' option
+to Amd. Allows you to override the compiled-in version number of the
+operating system. Useful when the built-in version is not desired for
+backward compatibility reasons. For example, if the build in version
+is `2.5.1', you can override it to `5.5.1', and use older maps that
+were written with the latter in mind.
+
+
+File: am-utils.info, Node: pid_file Parameter, Next: plock Parameter, Prev: osver Parameter, Up: Global Parameters
+
+6.5.43 pid_file Parameter
+-------------------------
+
+(type=string, default=`/dev/stdout'). Specify a file to store the
+process ID of the running daemon into. If not specified, Amd will
+print its process id onto the standard output. Useful for killing Amd
+after it had run. Note that the PID of a running Amd can also be
+retrieved via Amq (*note Amq -p option::).
+
+ This file is used only if the `print_pid' option is on (*note
+print_pid Parameter::).
+
+
+File: am-utils.info, Node: plock Parameter, Next: portmap_program Parameter, Prev: pid_file Parameter, Up: Global Parameters
+
+6.5.44 plock Parameter
+----------------------
+
+(type=boolean, default=`yes'). Same as the `-S' option to Amd. If
+`yes', lock the running executable pages of Amd into memory. To
+improve Amd's performance, systems that support the plock(3) or
+mlockall(2) call can lock the Amd process into memory. This way there
+is less chance the operating system will schedule, page out, and swap
+the Amd process as needed. This improves Amd's performance, at the
+cost of reserving the memory used by the Amd process (making it
+unavailable for other processes).
+
+
+File: am-utils.info, Node: portmap_program Parameter, Next: preferred_amq_port Parameter, Prev: plock Parameter, Up: Global Parameters
+
+6.5.45 portmap_program Parameter
+--------------------------------
+
+(type=numeric, default=300019). Specify an alternate Port-mapper RPC
+program number, other than the official number. This is useful when
+running multiple Amd processes. For example, you can run another Amd
+in "test" mode, without affecting the primary Amd process in any way.
+For safety reasons, the alternate program numbers that can be specified
+must be in the range 300019-300029, inclusive. Amq has an option `-P'
+which can be used to specify an alternate program number of an Amd to
+contact. In this way, amq can fully control any number of Amd
+processes running on the same host.
+
+
+File: am-utils.info, Node: preferred_amq_port Parameter, Next: print_pid Parameter, Prev: portmap_program Parameter, Up: Global Parameters
+
+6.5.46 preferred_amq_port Parameter
+-----------------------------------
+
+(type=numeric, default=0). Specify an alternate Port-mapper RPC port
+number for Amd's Amq service. This is used for both UDP and TCP.
+Setting this value to 0 (or not defining it) will cause Amd to select
+an arbitrary port number. Setting the Amq RPC service port to a
+specific number is useful in firewalled or NAT'ed environments, where
+you need to know which port Amd will listen on.
+
+
+File: am-utils.info, Node: print_pid Parameter, Next: print_version Parameter, Prev: preferred_amq_port Parameter, Up: Global Parameters
+
+6.5.47 print_pid Parameter
+--------------------------
+
+(type=boolean, default=`no'). Same as the `-p' option to Amd. If
+`yes', Amd will print its process ID upon starting.
+
+
+File: am-utils.info, Node: print_version Parameter, Next: restart_mounts Parameter, Prev: print_pid Parameter, Up: Global Parameters
+
+6.5.48 print_version Parameter
+------------------------------
+
+(type=boolean, default=`no'). Same as the `-v' option to Amd, but the
+version prints and Amd continues to run. If `yes', Amd will print its
+version information string, which includes some configuration and
+compilation values.
+
+
+File: am-utils.info, Node: restart_mounts Parameter, Next: show_statfs_entries Parameter, Prev: print_version Parameter, Up: Global Parameters
+
+6.5.49 restart_mounts Parameter
+-------------------------------
+
+(type=boolean, default=`no'). Same as the `-r' option to Amd. If
+`yes' Amd will scan the mount table to determine which file systems are
+currently mounted. Whenever one of these would have been auto-mounted,
+Amd inherits it.
+
+
+File: am-utils.info, Node: show_statfs_entries Parameter, Next: truncate_log Parameter, Prev: restart_mounts Parameter, Up: Global Parameters
+
+6.5.50 show_statfs_entries Parameter
+------------------------------------
+
+(type=boolean), default=`no'). If `yes', then all maps which are
+browsable will also show the number of entries (keys) they have when
+df(1) runs. (This is accomplished by returning non-zero values to the
+statfs(2) system call).
+
+
+File: am-utils.info, Node: truncate_log Parameter, Next: unmount_on_exit Parameter, Prev: show_statfs_entries Parameter, Up: Global Parameters
+
+6.5.51 truncate_log Parameter
+-----------------------------
+
+(type=boolean), default=`no'). If `yes', then Amd will truncate the
+log file (if it's a regular file) on startup. This could be useful
+when conducting extensive testing on Amd maps (or Amd itself) and you
+don't want to see log data from a previous run in the same file.
+
+
+File: am-utils.info, Node: unmount_on_exit Parameter, Next: use_tcpwrappers Parameter, Prev: truncate_log Parameter, Up: Global Parameters
+
+6.5.52 unmount_on_exit Parameter
+--------------------------------
+
+(type=boolean, default=`no'). If `yes', then Amd will attempt to
+unmount all file systems which it knows about. Normally it leaves all
+(esp. NFS) mounted file systems intact. Note that Amd does not know
+about file systems mounted before it starts up, unless the
+`restart_mounts' option is used (*note restart_mounts Parameter::).
+
+
+File: am-utils.info, Node: use_tcpwrappers Parameter, Next: vendor Parameter, Prev: unmount_on_exit Parameter, Up: Global Parameters
+
+6.5.53 use_tcpwrappers Parameter
+--------------------------------
+
+(type=boolean), default=`yes'). If `yes', then amd will use the
+tcpwrappers (tcpd/librwap) library (if available) to control access to
+Amd via the `/etc/hosts.allow' and `/etc/hosts.deny' files. Amd will
+verify that the host running Amq is authorized to connect. The `amd'
+service name must used in the `/etc/hosts.allow' and `/etc/hosts.deny'
+files. For example, to allow only localhost to connect to Amd, add
+this line to `/etc/hosts.allow':
+
+ amd: localhost
+
+ and this line to `/etc/hosts.deny':
+
+ amd: ALL
+
+ Consult the man pages for hosts_access(5) for more information on
+using the tcpwrappers access-control library.
+
+ Note that in particular, you should not configure your `hosts.allow'
+file to spawn a command for Amd: that will cause Amd to not be able to
+`waitpid' on the child process ID of any background un/mount that Amd
+issued, resulting in a confused Amd that does not know what happened to
+those background un/mount requests.
+
+
+File: am-utils.info, Node: vendor Parameter, Prev: use_tcpwrappers Parameter, Up: Global Parameters
+
+6.5.54 vendor Parameter
+-----------------------
+
+(type=string, default to compiled in value). The name of the vendor of
+the operating system. Overrides the compiled-in vendor name. Useful
+when the compiled-in name is not desired. For example, most Intel based
+systems set the vendor name to `unknown', but you can set it to
+`redhat'.
+
+
+File: am-utils.info, Node: Regular Map Parameters, Next: amd.conf Examples, Prev: Global Parameters, Up: Amd Configuration File
+
+6.6 Regular Map Parameters
+==========================
+
+The following parameters are applicable only to regular map sections.
+
+* Menu:
+
+* map_name Parameter::
+* tag Parameter::
+
+
+File: am-utils.info, Node: map_name Parameter, Next: tag Parameter, Prev: Regular Map Parameters, Up: Regular Map Parameters
+
+6.6.1 map_name Parameter
+------------------------
+
+(type=string, must be specified). Name of the map where the keys are
+located.
+
+
+File: am-utils.info, Node: tag Parameter, Prev: map_name Parameter, Up: Regular Map Parameters
+
+6.6.2 tag Parameter
+-------------------
+
+(type=string, default no tag). Each map entry in the configuration file
+can be tagged. If no tag is specified, that map section will always be
+processed by Amd. If it is specified, then Amd will process the map if
+the `-T' option was given to Amd, and the value given to that
+command-line option matches that in the map section.
+
+
+File: am-utils.info, Node: amd.conf Examples, Prev: Regular Map Parameters, Up: Amd Configuration File
+
+6.7 amd.conf Examples
+=====================
+
+The following is the actual `amd.conf' file I used at the Computer
+Science Department of Columbia University.
+
+ # GLOBAL OPTIONS SECTION
+ [ global ]
+ normalize_hostnames = no
+ print_pid = no
+ #pid_file = /var/run/amd.pid
+ restart_mounts = yes
+ #unmount_on_exit = yes
+ auto_dir = /n
+ log_file = /var/log/amd
+ log_options = all
+ #debug_options = defaults
+ plock = no
+ selectors_in_defaults = yes
+ # config.guess picks up "sunos5" and I don't want to edit my maps yet
+ os = sos5
+ # if you print_version after setting up "os", it will show it.
+ print_version = no
+ map_type = file
+ search_path = /etc/amdmaps:/usr/lib/amd:/usr/local/AMD/lib
+ browsable_dirs = yes
+ fully_qualified_hosts = no
+
+ # DEFINE AN AMD MOUNT POINT
+ [ /u ]
+ map_name = amd.u
+
+ [ /proj ]
+ map_name = amd.proj
+
+ [ /src ]
+ map_name = amd.src
+
+ [ /misc ]
+ map_name = amd.misc
+
+ [ /import ]
+ map_name = amd.import
+
+ [ /tftpboot/.amd ]
+ tag = tftpboot
+ map_name = amd.tftpboot
+
+
+File: am-utils.info, Node: Run-time Administration, Next: FSinfo, Prev: Amd Configuration File, Up: Top
+
+7 Run-time Administration
+*************************
+
+* Menu:
+
+* Starting Amd::
+* Stopping Amd::
+* Restarting Amd::
+* Controlling Amd::
+
+
+File: am-utils.info, Node: Starting Amd, Next: Stopping Amd, Prev: Run-time Administration, Up: Run-time Administration
+
+7.1 Starting Amd
+================
+
+Amd is best started from `/etc/rc.local' on BSD systems, or from the
+appropriate start-level script in `/etc/init.d' on System V systems.
+
+ if [ -f /usr/local/sbin/ctl-amd ]; then
+ /usr/local/sbin/ctl-amd start; (echo -n ' amd') > /dev/console
+ fi
+
+The shell script, `ctl-amd' is used to start, stop, or restart Amd. It
+is a relatively generic script. All options you want to set should not
+be made in this script, but rather updated in the `amd.conf' file.
+*Note Amd Configuration File::.
+
+ If you do not wish to use an Amd configuration file, you may start
+Amd manually. For example, getting the map entries via NIS:
+
+ amd -r -l /var/log/amd `ypcat -k auto.master`
+
+
+File: am-utils.info, Node: Stopping Amd, Next: Restarting Amd, Prev: Starting Amd, Up: Run-time Administration
+
+7.2 Stopping Amd
+================
+
+Amd stops in response to two signals.
+
+`SIGTERM'
+ causes the top-level automount points to be unmounted and then Amd
+ to exit. Any automounted filesystems are left mounted. They can
+ be recovered by restarting Amd with the `-r' command line option.
+
+`SIGINT'
+ causes Amd to attempt to unmount any filesystems which it has
+ automounted, in addition to the actions of `SIGTERM'. This signal
+ is primarily used for debugging.
+
+ Actions taken for other signals are undefined.
+
+ The easiest and safest way to stop Amd, without having to find its
+process ID by hand, is to use the `ctl-amd' script, as with:
+
+ ctl-amd stop
+
+
+File: am-utils.info, Node: Restarting Amd, Next: Controlling Amd, Prev: Stopping Amd, Up: Run-time Administration
+
+7.3 Restarting Amd
+==================
+
+Before Amd can be started, it is vital to ensure that no other Amd
+processes are managing any of the mount points, and that the previous
+process(es) have terminated cleanly. When a terminating signal is set
+to Amd, the automounter does _not_ terminate right then. Rather, it
+starts by unmounting all of its managed mount mounts in the background,
+and then terminates. It usually takes a few seconds for this process
+to happen, but it can take an arbitrarily longer time. If two or more
+Amd processes attempt to manage the same mount point, it usually will
+result in a system lockup.
+
+ The easiest and safest way to restart Amd, without having to find
+its process ID by hand, sending it the `SIGTERM' signal, waiting for Amd
+to die cleanly, and verifying so, is to use the `ctl-amd' script, as
+with:
+
+ ctl-amd restart
+
+ The script will locate the process ID of Amd, kill it, and wait for
+it to die cleanly before starting a new instance of the automounter.
+`ctl-amd' will wait for a total of 30 seconds for Amd to die, and will
+check once every 5 seconds if it had.
+
+
+File: am-utils.info, Node: Controlling Amd, Prev: Restarting Amd, Up: Run-time Administration
+
+7.4 Controlling Amd
+===================
+
+It is sometimes desirable or necessary to exercise external control
+over some of Amd's internal state. To support this requirement, Amd
+implements an RPC interface which is used by the "Amq" program. A
+variety of information is available.
+
+ Amq generally applies an operation, specified by a single letter
+option, to a list of mount points. The default operation is to obtain
+statistics about each mount point. This is similar to the output shown
+above but includes information about the number and type of accesses to
+each mount point.
+
+* Menu:
+
+* Amq default:: Default command behavior.
+* Amq -f option:: Flushing the map cache.
+* Amq -h option:: Controlling a non-local host.
+* Amq -H option:: Print help message.
+* Amq -l option:: Controlling the log file.
+* Amq -m option:: Obtaining mount statistics.
+* Amq -p option:: Getting Amd's process ID.
+* Amq -P option:: Contacting alternate Amd processes.
+* Amq -q option:: Suppress synchronous unmounting errors.
+* Amq -s option:: Obtaining global statistics.
+* Amq -T option:: Use TCP transport.
+* Amq -U option:: Use UDP transport.
+* Amq -u option:: Forcing volumes to time out.
+* Amq -v option:: Version information.
+* Amq -w option:: Print Amd current working directory.
+* Other Amq options:: Three other special options.
+
+
+File: am-utils.info, Node: Amq default, Next: Amq -f option, Prev: Controlling Amd, Up: Controlling Amd
+
+7.4.1 Amq default information
+-----------------------------
+
+With no arguments, "Amq" obtains a brief list of all existing mounts
+created by Amd. This is different from the list displayed by df(1)
+since the latter only includes system mount points.
+
+The output from this option includes the following information:
+
+ * the automount point,
+
+ * the filesystem type,
+
+ * the mount map or mount information,
+
+ * the internal, or system mount point.
+
+For example:
+
+ / root "root" sky:(pid75)
+ /homes toplvl /usr/local/etc/amd.homes /homes
+ /home toplvl /usr/local/etc/amd.home /home
+ /homes/jsp nfs charm:/home/charm /a/charm/home/charm/jsp
+ /homes/phjk nfs toytown:/home/toytown /a/toytown/home/toytown/ai/phjk
+
+If an argument is given then statistics for that volume name will be
+output. For example:
+
+ What Uid Getattr Lookup RdDir RdLnk Statfs Mounted@
+ /homes 0 1196 512 22 0 30 90/09/14 12:32:55
+ /homes/jsp 0 0 0 0 1180 0 90/10/13 12:56:58
+
+`What'
+ the volume name.
+
+`Uid'
+ ignored.
+
+`Getattr'
+ the count of NFS "getattr" requests on this node. This should
+ only be non-zero for directory nodes.
+
+`Lookup'
+ the count of NFS "lookup" requests on this node. This should only
+ be non-zero for directory nodes.
+
+`RdDir'
+ the count of NFS "readdir" requests on this node. This should only
+ be non-zero for directory nodes.
+
+`RdLnk'
+ the count of NFS "readlink" requests on this node. This should be
+ zero for directory nodes.
+
+`Statfs'
+ the count of NFS "statfs" requests on this node. This should only
+ be non-zero for top-level automount points.
+
+`Mounted@'
+ the date and time the volume name was first referenced.
+
+
+File: am-utils.info, Node: Amq -f option, Next: Amq -h option, Prev: Amq default, Up: Controlling Amd
+
+7.4.2 Amq `-f' option
+---------------------
+
+The `-f' option causes Amd to flush the internal mount map cache. This
+is useful for example in Hesiod maps since Amd will not automatically
+notice when they have been updated. The map cache can also be
+synchronized with the map source by using the `sync' option (*note
+Automount Filesystem::).
+
+
+File: am-utils.info, Node: Amq -h option, Next: Amq -H option, Prev: Amq -f option, Up: Controlling Amd
+
+7.4.3 Amq `-h' option
+---------------------
+
+By default the local host is used. In an HP-UX cluster the root server
+is used since that is the only place in the cluster where Amd will be
+running. To query Amd on another host the `-h' option should be used.
+
+
+File: am-utils.info, Node: Amq -H option, Next: Amq -l option, Prev: Amq -h option, Up: Controlling Amd
+
+7.4.4 Amq `-H' option
+---------------------
+
+Print a brief help and usage string.
+
+
+File: am-utils.info, Node: Amq -l option, Next: Amq -m option, Prev: Amq -H option, Up: Controlling Amd
+
+7.4.5 Amq `-l' option
+---------------------
+
+Tell Amd to use log_file as the log file name. For security reasons,
+this _must_ be the same log file which Amd used when started. This
+option is therefore only useful to refresh Amd's open file handle on
+the log file, so that it can be rotated and compressed via daily cron
+jobs.
+
+
+File: am-utils.info, Node: Amq -m option, Next: Amq -p option, Prev: Amq -l option, Up: Controlling Amd
+
+7.4.6 Amq `-m' option
+---------------------
+
+The `-m' option displays similar information about mounted filesystems,
+rather than automount points. The output includes the following
+information:
+
+ * the mount information,
+
+ * the mount point,
+
+ * the filesystem type,
+
+ * the number of references to this filesystem,
+
+ * the server hostname,
+
+ * the state of the file server,
+
+ * any error which has occurred.
+
+ For example:
+
+ "root" truth:(pid602) root 1 localhost is up
+ hesiod.home /home toplvl 1 localhost is up
+ hesiod.vol /vol toplvl 1 localhost is up
+ hesiod.homes /homes toplvl 1 localhost is up
+ amy:/home/amy /a/amy/home/amy nfs 5 amy is up
+ swan:/home/swan /a/swan/home/swan nfs 0 swan is up (Permission denied)
+ ex:/home/ex /a/ex/home/ex nfs 0 ex is down
+
+ When the reference count is zero the filesystem is not mounted but
+the mount point and server information is still being maintained by Amd.
+
+
+File: am-utils.info, Node: Amq -p option, Next: Amq -P option, Prev: Amq -m option, Up: Controlling Amd
+
+7.4.7 Amq `-p' option
+---------------------
+
+Return the process ID of the remote or locally running Amd. Useful
+when you need to send a signal to the local Amd process, and would
+rather not have to search through the process table. This option is
+used in the `ctl-amd' script.
+
+
+File: am-utils.info, Node: Amq -P option, Next: Amq -q option, Prev: Amq -p option, Up: Controlling Amd
+
+7.4.8 Amq `-P' option
+---------------------
+
+Contact an alternate running Amd that had registered itself on a
+different RPC PROGRAM_NUMBER and apply all other operations to that
+instance of the automounter. This is useful when you run multiple
+copies of Amd, and need to manage each one separately. If not
+specified, Amq will use the default program number for Amd, 300019.
+For security reasons, the only alternate program numbers Amd can use
+range from 300019 to 300029, inclusive.
+
+ For example, to kill an alternate running Amd:
+
+ kill `amq -p -P 300020`
+
+
+File: am-utils.info, Node: Amq -q option, Next: Amq -s option, Prev: Amq -P option, Up: Controlling Amd
+
+7.4.9 Amq `-q' option
+---------------------
+
+Suppress any error messages produced when a synchronous unmount fails.
+See *Note Amq -u option::.
+
+
+File: am-utils.info, Node: Amq -s option, Next: Amq -T option, Prev: Amq -q option, Up: Controlling Amd
+
+7.4.10 Amq `-s' option
+----------------------
+
+The `-s' option displays global statistics. If any other options are
+specified or any filesystems named then this option is ignored. For
+example:
+
+ requests stale mount mount unmount
+ deferred fhandles ok failed failed
+ 1054 1 487 290 7017
+
+`Deferred requests'
+ are those for which an immediate reply could not be constructed.
+ For example, this would happen if a background mount was required.
+
+`Stale filehandles'
+ counts the number of times the kernel passes a stale filehandle to
+ Amd. Large numbers indicate problems.
+
+`Mount ok'
+ counts the number of automounts which were successful.
+
+`Mount failed'
+ counts the number of automounts which failed.
+
+`Unmount failed'
+ counts the number of times a filesystem could not be unmounted.
+ Very large numbers here indicate that the time between unmount
+ attempts should be increased.
+
+
+File: am-utils.info, Node: Amq -T option, Next: Amq -U option, Prev: Amq -s option, Up: Controlling Amd
+
+7.4.11 Amq `-T' option
+----------------------
+
+The `-T' option causes the Amq to contact Amd using the TCP transport
+only (connection oriented). Normally, Amq will use TCP first, and if
+that failed, will try UDP.
+
+
+File: am-utils.info, Node: Amq -U option, Next: Amq -u option, Prev: Amq -T option, Up: Controlling Amd
+
+7.4.12 Amq `-U' option
+----------------------
+
+The `-U' option causes the Amq to contact Amd using the UDP transport
+only (connectionless). Normally, Amq will use TCP first, and if that
+failed, will try UDP.
+
+
+File: am-utils.info, Node: Amq -u option, Next: Amq -v option, Prev: Amq -U option, Up: Controlling Amd
+
+7.4.13 Amq `-u' option
+----------------------
+
+The `-u' option causes the time-to-live interval of the named mount
+points to be expired, thus causing an unmount attempt. This is the
+only safe way to unmount an automounted filesystem. If `-u' is
+repeated, then Amd will attempt to unmount the filesystem
+synchronously. This makes things like
+
+ amq -uu /t/cd0d && eject cd0
+
+work as expected. Any error messages this might produce can be
+suppressed with the `-q' option. See *Note Amq -q option::.
+
+
+File: am-utils.info, Node: Amq -v option, Next: Amq -w option, Prev: Amq -u option, Up: Controlling Amd
+
+7.4.14 Amq `-v' option
+----------------------
+
+The `-v' option displays the version of Amd in a similar way to Amd's
+`-v' option.
+
+
+File: am-utils.info, Node: Amq -w option, Next: Other Amq options, Prev: Amq -v option, Up: Controlling Amd
+
+7.4.15 Amq `-w' option
+----------------------
+
+The `-w' option translates a full pathname as returned by getpwd(3)
+into a short Amd pathname that goes through its mount points. This
+option requires that Amd is running.
+
+
+File: am-utils.info, Node: Other Amq options, Prev: Amq -w option, Up: Controlling Amd
+
+7.4.16 Other Amq options
+------------------------
+
+Two other operations are implemented. These modify the state of Amd as
+a whole, rather than any particular filesystem. The `-x' and `-D'
+options have exactly the same effect as Amd's corresponding command
+line options.
+
+ When Amd receives the `-x' flag, it disallows turning off the
+`fatal' or `error' flags. Both are on by default. They are mandatory
+so that Amd could report important errors, including errors relating to
+turning flags on/off.
+
+
+File: am-utils.info, Node: FSinfo, Next: Hlfsd, Prev: Run-time Administration, Up: Top
+
+8 FSinfo
+********
+
+XXX: this chapter should be reviewed by someone knowledgeable with
+fsinfo.
+
+* Menu:
+
+* FSinfo Overview:: Introduction to FSinfo.
+* Using FSinfo:: Basic concepts.
+* FSinfo Grammar:: Language syntax, semantics and examples.
+* FSinfo host definitions:: Defining a new host.
+* FSinfo host attributes:: Definable host attributes.
+* FSinfo filesystems:: Defining locally attached filesystems.
+* FSinfo static mounts:: Defining additional static mounts.
+* FSinfo automount definitions::
+* FSinfo Command Line Options::
+* FSinfo errors::
+
+
+File: am-utils.info, Node: FSinfo Overview, Next: Using FSinfo, Prev: FSinfo, Up: FSinfo
+
+8.1 FSinfo overview
+===================
+
+FSinfo is a filesystem management tool. It has been designed to work
+with Amd to help system administrators keep track of the ever
+increasing filesystem namespace under their control.
+
+ The purpose of FSinfo is to generate all the important standard
+filesystem data files from a single set of input data. Starting with a
+single data source guarantees that all the generated files are
+self-consistent. One of the possible output data formats is a set of
+Amd maps which can be used among the set of hosts described in the
+input data.
+
+ FSinfo implements a declarative language. This language is
+specifically designed for describing filesystem namespace and physical
+layouts. The basic declaration defines a mounted filesystem including
+its device name, mount point, and all the volumes and access
+permissions. FSinfo reads this information and builds an internal map
+of the entire network of hosts. Using this map, many different data
+formats can be produced including `/etc/fstab', `/etc/exports', Amd
+mount maps and `/etc/bootparams'.
+
+
+File: am-utils.info, Node: Using FSinfo, Next: FSinfo Grammar, Prev: FSinfo Overview, Up: FSinfo
+
+8.2 Using FSinfo
+================
+
+The basic strategy when using FSinfo is to gather all the information
+about all disks on all machines into one set of declarations. For each
+machine being managed, the following data is required:
+
+ * Hostname
+
+ * List of all filesystems and, optionally, their mount points.
+
+ * Names of volumes stored on each filesystem.
+
+ * NFS export information for each volume.
+
+ * The list of static filesystem mounts.
+
+ The following information can also be entered into the same
+configuration files so that all data can be kept in one place.
+
+ * List of network interfaces
+
+ * IP address of each interface
+
+ * Hardware address of each interface
+
+ * Dumpset to which each filesystem belongs
+
+ * and more ...
+
+ To generate Amd mount maps, the automount tree must also be defined
+(*note FSinfo automount definitions::). This will have been designed at
+the time the volume names were allocated. Some volume names will not be
+automounted, so FSinfo needs an explicit list of which volumes should
+be automounted.
+
+ Hostnames are required at several places in the FSinfo language. It
+is important to stick to either fully qualified names or unqualified
+names. Using a mixture of the two will inevitably result in confusion.
+
+ Sometimes volumes need to be referenced which are not defined in the
+set of hosts being managed with FSinfo. The required action is to add a
+dummy set of definitions for the host and volume names required. Since
+the files generated for those particular hosts will not be used on them,
+the exact values used is not critical.
+
+
+File: am-utils.info, Node: FSinfo Grammar, Next: FSinfo host definitions, Prev: Using FSinfo, Up: FSinfo
+
+8.3 FSinfo grammar
+==================
+
+FSinfo has a relatively simple grammar. Distinct syntactic constructs
+exist for each of the different types of data, though they share a
+common flavor. Several conventions are used in the grammar fragments
+below.
+
+ The notation, list(xxx), indicates a list of zero or more xxx's.
+The notation, opt(xxx), indicates zero or one xxx. Items in double
+quotes, eg "host", represent input tokens. Items in angle brackets, eg
+<HOSTNAME>, represent strings in the input. Strings need not be in
+double quotes, except to differentiate them from reserved words.
+Quoted strings may include the usual set of C "\" escape sequences with
+one exception: a backslash-newline-whitespace sequence is squashed into
+a single space character. To defeat this feature, put a further
+backslash at the start of the second line.
+
+ At the outermost level of the grammar, the input consists of a
+sequence of host and automount declarations. These declarations are
+all parsed before they are analyzed. This means they can appear in any
+order and cyclic host references are possible.
+
+ fsinfo : list(fsinfo_attr) ;
+
+ fsinfo_attr : host | automount ;
+
+* Menu:
+
+* FSinfo host definitions::
+* FSinfo automount definitions::
+
+
+File: am-utils.info, Node: FSinfo host definitions, Next: FSinfo host attributes, Prev: FSinfo Grammar, Up: FSinfo
+
+8.4 FSinfo host definitions
+===========================
+
+A host declaration consists of three parts: a set of machine attribute
+data, a list of filesystems physically attached to the machine, and a
+list of additional statically mounted filesystems.
+
+ host : "host" host_data list(filesystem) list(mount) ;
+
+ Each host must be declared in this way exactly once. Such things as
+the hardware address, the architecture and operating system types and
+the cluster name are all specified within the "host data".
+
+ All the disks the machine has should then be described in the "list
+of filesystems". When describing disks, you can specify what "volname"
+the disk/partition should have and all such entries are built up into a
+dictionary which can then be used for building the automounter maps.
+
+ The "list of mounts" specifies all the filesystems that should be
+statically mounted on the machine.
+
+* Menu:
+
+* FSinfo host attributes::
+* FSinfo filesystems::
+* FSinfo static mounts::
+
+
+File: am-utils.info, Node: FSinfo host attributes, Next: FSinfo filesystems, Prev: FSinfo host definitions, Up: FSinfo host definitions
+
+8.5 FSinfo host attributes
+==========================
+
+The host data, "host_data", always includes the "hostname". In
+addition, several other host attributes can be given.
+
+ host_data : <HOSTNAME>
+ | "{" list(host_attrs) "}" <HOSTNAME>
+ ;
+
+ host_attrs : host_attr "=" <STRING>
+ | netif
+ ;
+
+ host_attr : "config"
+ | "arch"
+ | "os"
+ | "cluster"
+ ;
+
+ The "hostname" is, typically, the fully qualified hostname of the
+machine.
+
+ Examples:
+
+ host dylan.doc.ic.ac.uk
+
+ host {
+ os = hpux
+ arch = hp300
+ } dougal.doc.ic.ac.uk
+
+ The options that can be given as host attributes are shown below.
+
+* Menu:
+
+* FSinfo netif Option:: FSinfo host netif.
+* FSinfo config Option:: FSinfo host config.
+* FSinfo arch Option:: FSinfo host arch.
+* FSinfo os Option:: FSinfo host os.
+* FSinfo cluster Option:: FSinfo host cluster.
+
+
+File: am-utils.info, Node: FSinfo netif Option, Next: FSinfo config Option, Up: FSinfo host attributes
+
+8.5.1 netif Option
+------------------
+
+This defines the set of network interfaces configured on the machine.
+The interface attributes collected by FSinfo are the IP address, subnet
+mask and hardware address. Multiple interfaces may be defined for
+hosts with several interfaces by an entry for each interface. The
+values given are sanity checked, but are currently unused for anything
+else.
+
+ netif : "netif" <STRING> "{" list(netif_attrs) "}" ;
+
+ netif_attrs : netif_attr "=" <STRING> ;
+
+ netif_attr : "inaddr" | "netmask" | "hwaddr" ;
+
+ Examples:
+
+ netif ie0 {
+ inaddr = 129.31.81.37
+ netmask = 0xfffffe00
+ hwaddr = "08:00:20:01:a6:a5"
+ }
+
+ netif ec0 { }
+
+
+File: am-utils.info, Node: FSinfo config Option, Next: FSinfo arch Option, Prev: FSinfo netif Option, Up: FSinfo host attributes
+
+8.5.2 config Option
+-------------------
+
+This option allows you to specify configuration variables for the
+startup scripts (`rc' scripts). A simple string should immediately
+follow the keyword.
+
+ Example:
+
+ config "NFS_SERVER=true"
+ config "ZEPHYR=true"
+
+ This option is currently unsupported.
+
+
+File: am-utils.info, Node: FSinfo arch Option, Next: FSinfo os Option, Prev: FSinfo config Option, Up: FSinfo host attributes
+
+8.5.3 arch Option
+-----------------
+
+This defines the architecture of the machine. For example:
+
+ arch = hp300
+
+ This is intended to be of use when building architecture specific
+mountmaps, however, the option is currently unsupported.
+
+
+File: am-utils.info, Node: FSinfo os Option, Next: FSinfo cluster Option, Prev: FSinfo arch Option, Up: FSinfo host attributes
+
+8.5.4 os Option
+---------------
+
+This defines the operating system type of the host. For example:
+
+ os = hpux
+
+ This information is used when creating the `fstab' files, for
+example in choosing which format to use for the `fstab' entries within
+the file.
+
+
+File: am-utils.info, Node: FSinfo cluster Option, Prev: FSinfo os Option, Up: FSinfo host attributes
+
+8.5.5 cluster Option
+--------------------
+
+This is used for specifying in which cluster the machine belongs. For
+example:
+
+ cluster = "theory"
+
+ The cluster is intended to be used when generating the automount
+maps, although it is currently unsupported.
+
+
+File: am-utils.info, Node: FSinfo filesystems, Next: FSinfo static mounts, Prev: FSinfo host attributes, Up: FSinfo host definitions
+
+8.6 FSinfo filesystems
+======================
+
+The list of physically attached filesystems follows the machine
+attributes. These should define all the filesystems available from this
+machine, whether exported or not. In addition to the device name,
+filesystems have several attributes, such as filesystem type, mount
+options, and `fsck' pass number which are needed to generate `fstab'
+entries.
+
+ filesystem : "fs" <DEVICE> "{" list(fs_data) "}" ;
+
+ fs_data : fs_data_attr "=" <STRING>
+ | mount
+ ;
+
+ fs_data_attr
+ : "fstype" | "opts" | "passno"
+ | "freq" | "dumpset" | "log"
+ ;
+
+ Here, <DEVICE> is the device name of the disk (for example,
+`/dev/dsk/2s0'). The device name is used for building the mount maps
+and for the `fstab' file. The attributes that can be specified are
+shown in the following section.
+
+ The FSinfo configuration file for `dylan.doc.ic.ac.uk' is listed
+below.
+
+ host dylan.doc.ic.ac.uk
+
+ fs /dev/dsk/0s0 {
+ fstype = swap
+ }
+
+ fs /dev/dsk/0s0 {
+ fstype = hfs
+ opts = rw,noquota,grpid
+ passno = 0;
+ freq = 1;
+ mount / { }
+ }
+
+ fs /dev/dsk/1s0 {
+ fstype = hfs
+ opts = defaults
+ passno = 1;
+ freq = 1;
+ mount /usr {
+ local {
+ exportfs "dougal eden dylan zebedee brian"
+ volname /nfs/hp300/local
+ }
+ }
+ }
+
+ fs /dev/dsk/2s0 {
+ fstype = hfs
+ opts = defaults
+ passno = 1;
+ freq = 1;
+ mount default {
+ exportfs "toytown_clients hangers_on"
+ volname /home/dylan/dk2
+ }
+ }
+
+ fs /dev/dsk/3s0 {
+ fstype = hfs
+ opts = defaults
+ passno = 1;
+ freq = 1;
+ mount default {
+ exportfs "toytown_clients hangers_on"
+ volname /home/dylan/dk3
+ }
+ }
+
+ fs /dev/dsk/5s0 {
+ fstype = hfs
+ opts = defaults
+ passno = 1;
+ freq = 1;
+ mount default {
+ exportfs "toytown_clients hangers_on"
+ volname /home/dylan/dk5
+ }
+ }
+
+* Menu:
+
+* FSinfo fstype Option:: FSinfo filesystems fstype.
+* FSinfo opts Option:: FSinfo filesystems opts.
+* FSinfo passno Option:: FSinfo filesystems passno.
+* FSinfo freq Option:: FSinfo filesystems freq.
+* FSinfo mount Option:: FSinfo filesystems mount.
+* FSinfo dumpset Option:: FSinfo filesystems dumpset.
+* FSinfo log Option:: FSinfo filesystems log.
+
+
+File: am-utils.info, Node: FSinfo fstype Option, Next: FSinfo opts Option, Up: FSinfo filesystems
+
+8.6.1 fstype Option
+-------------------
+
+This specifies the type of filesystem being declared and will be placed
+into the `fstab' file as is. The value of this option will be handed
+to `mount' as the filesystem type--it should have such values as `4.2',
+`nfs' or `swap'. The value is not examined for correctness.
+
+ There is one special case. If the filesystem type is specified as
+`export' then the filesystem information will not be added to the
+host's `fstab' information, but it will still be visible on the
+network. This is useful for defining hosts which contain referenced
+volumes but which are not under full control of FSinfo.
+
+ Example:
+
+ fstype = swap
+
+
+File: am-utils.info, Node: FSinfo opts Option, Next: FSinfo passno Option, Prev: FSinfo fstype Option, Up: FSinfo filesystems
+
+8.6.2 opts Option
+-----------------
+
+This defines any options that should be given to mount(8) in the
+`fstab' file. For example:
+
+ opts = rw,nosuid,grpid
+
+
+File: am-utils.info, Node: FSinfo passno Option, Next: FSinfo freq Option, Prev: FSinfo opts Option, Up: FSinfo filesystems
+
+8.6.3 passno Option
+-------------------
+
+This defines the fsck(8) pass number in which to check the filesystem.
+This value will be placed into the `fstab' file.
+
+ Example:
+
+ passno = 1
+
+
+File: am-utils.info, Node: FSinfo freq Option, Next: FSinfo mount Option, Prev: FSinfo passno Option, Up: FSinfo filesystems
+
+8.6.4 freq Option
+-----------------
+
+This defines the interval (in days) between dumps. The value is placed
+as is into the `fstab' file.
+
+ Example:
+
+ freq = 3
+
+
+File: am-utils.info, Node: FSinfo mount Option, Next: FSinfo dumpset Option, Prev: FSinfo freq Option, Up: FSinfo filesystems
+
+8.6.5 mount Option
+------------------
+
+This defines the mountpoint at which to place the filesystem. If the
+mountpoint of the filesystem is specified as `default', then the
+filesystem will be mounted in the automounter's tree under its volume
+name and the mount will automatically be inherited by the automounter.
+
+ Following the mountpoint, namespace information for the filesystem
+may be described. The options that can be given here are `exportfs',
+`volname' and `sel'.
+
+ The format is:
+
+ mount : "mount" vol_tree ;
+
+ vol_tree : list(vol_tree_attr) ;
+
+ vol_tree_attr
+ : <STRING> "{" list(vol_tree_info) vol_tree "}" ;
+
+ vol_tree_info
+ : "exportfs" <EXPORT-DATA>
+ | "volname" <VOLNAME>
+ | "sel" <SELECTOR-LIST>
+ ;
+
+ Example:
+
+ mount default {
+ exportfs "dylan dougal florence zebedee"
+ volname /vol/andrew
+ }
+
+ In the above example, the filesystem currently being declared will
+have an entry placed into the `exports' file allowing the filesystem to
+be exported to the machines `dylan', `dougal', `florence' and
+`zebedee'. The volume name by which the filesystem will be referred to
+remotely, is `/vol/andrew'. By declaring the mountpoint to be
+`default', the filesystem will be mounted on the local machine in the
+automounter tree, where Amd will automatically inherit the mount as
+`/vol/andrew'.
+
+`exportfs'
+ a string defining which machines the filesystem may be exported to.
+ This is copied, as is, into the `exports' file--no sanity checking
+ is performed on this string.
+
+`volname'
+ a string which declares the remote name by which to reference the
+ filesystem. The string is entered into a dictionary and allows
+ you to refer to this filesystem in other places by this volume
+ name.
+
+`sel'
+ a string which is placed into the automounter maps as a selector
+ for the filesystem.
+
+
+
+File: am-utils.info, Node: FSinfo dumpset Option, Next: FSinfo log Option, Prev: FSinfo mount Option, Up: FSinfo filesystems
+
+8.6.6 dumpset Option
+--------------------
+
+This provides support for Imperial College's local file backup tools and
+is not documented further here.
+
+
+File: am-utils.info, Node: FSinfo log Option, Prev: FSinfo dumpset Option, Up: FSinfo filesystems
+
+8.6.7 log Option
+----------------
+
+Specifies the log device for the current filesystem. This is ignored if
+not required by the particular filesystem type.
+
+
+File: am-utils.info, Node: FSinfo static mounts, Next: FSinfo automount definitions, Prev: FSinfo filesystems, Up: FSinfo host definitions
+
+8.7 FSinfo static mounts
+========================
+
+Each host may also have a number of statically mounted filesystems. For
+example, the host may be a diskless workstation in which case it will
+have no `fs' declarations. In this case the `mount' declaration is
+used to determine from where its filesystems will be mounted. In
+addition to being added to the `fstab' file, this information can also
+be used to generate a suitable `bootparams' file.
+
+ mount : "mount" <VOLNAME> list(localinfo) ;
+
+ localinfo : localinfo_attr <STRING> ;
+
+ localinfo_attr
+ : "as"
+ | "from"
+ | "fstype"
+ | "opts"
+ ;
+
+ The filesystem specified to be mounted will be searched for in the
+dictionary of volume names built when scanning the list of hosts'
+definitions.
+
+ The attributes have the following semantics:
+`from MACHINE'
+ mount the filesystem from the machine with the hostname of
+ "machine".
+
+`as MOUNTPOINT'
+ mount the filesystem locally as the name given, in case this is
+ different from the advertised volume name of the filesystem.
+
+`opts OPTIONS'
+ native mount(8) options.
+
+`fstype TYPE'
+ type of filesystem to be mounted.
+
+ An example:
+
+ mount /export/exec/hp300/local as /usr/local
+
+ If the mountpoint specified is either `/' or `swap', the machine
+will be considered to be booting off the net and this will be noted for
+use in generating a `bootparams' file for the host which owns the
+filesystems.
+
+
+File: am-utils.info, Node: FSinfo automount definitions, Next: FSinfo Command Line Options, Prev: FSinfo static mounts, Up: FSinfo
+
+8.8 Defining an Amd Mount Map in FSinfo
+=======================================
+
+The maps used by Amd can be constructed from FSinfo by defining all the
+automount trees. FSinfo takes all the definitions found and builds one
+map for each top level tree.
+
+ The automount tree is usually defined last. A single automount
+configuration will usually apply to an entire management domain. One
+`automount' declaration is needed for each Amd automount point. FSinfo
+determines whether the automount point is "direct" (*note Direct
+Automount Filesystem::) or "indirect" (*note Top-level Filesystem::).
+Direct automount points are distinguished by the fact that there is no
+underlying "automount_tree".
+
+ automount : "automount" opt(auto_opts) automount_tree ;
+
+ auto_opts : "opts" <MOUNT-OPTIONS> ;
+
+ automount_tree
+ : list(automount_attr)
+ ;
+
+ automount_attr
+ : <STRING> "=" <VOLNAME>
+ | <STRING> "->" <SYMLINK>
+ | <STRING> "{" automount_tree "}"
+ ;
+
+ If <MOUNT-OPTIONS> is given, then it is the string to be placed in
+the maps for Amd for the `opts' option.
+
+ A "map" is typically a tree of filesystems, for example `home'
+normally contains a tree of filesystems representing other machines in
+the network.
+
+ A map can either be given as a name representing an already defined
+volume name, or it can be a tree. A tree is represented by placing
+braces after the name. For example, to define a tree `/vol', the
+following map would be defined:
+
+ automount /vol { }
+
+ Within a tree, the only items that can appear are more maps. For
+example:
+
+ automount /vol {
+ andrew { }
+ X11 { }
+ }
+
+ In this case, FSinfo will look for volumes named `/vol/andrew' and
+`/vol/X11' and a map entry will be generated for each. If the volumes
+are defined more than once, then FSinfo will generate a series of
+alternate entries for them in the maps.
+
+ Instead of a tree, either a link (NAME `->' DESTINATION) or a
+reference can be specified (NAME `=' DESTINATION). A link creates a
+symbolic link to the string specified, without further processing the
+entry. A reference will examine the destination filesystem and
+optimize the reference. For example, to create an entry for `njw' in
+the `/homes' map, either of the two forms can be used:
+
+ automount /homes {
+ njw -> /home/dylan/njw
+ }
+
+ or
+
+ automount /homes {
+ njw = /home/dylan/njw
+ }
+
+ In the first example, when `/homes/njw' is referenced from Amd, a
+link will be created leading to `/home/dylan/njw' and the automounter
+will be referenced a second time to resolve this filename. The map
+entry would be:
+
+ njw type:=link;fs:=/home/dylan/njw
+
+ In the second example, the destination directory is analyzed and
+found to be in the filesystem `/home/dylan' which has previously been
+defined in the maps. Hence the map entry will look like:
+
+ njw rhost:=dylan;rfs:=/home/dylan;sublink:=njw
+
+ Creating only one symbolic link, and one access to Amd.
+
+
+File: am-utils.info, Node: FSinfo Command Line Options, Next: FSinfo errors, Prev: FSinfo automount definitions, Up: FSinfo
+
+8.9 FSinfo Command Line Options
+===============================
+
+FSinfo is started from the command line by using the command:
+
+ fsinfo [options] files ...
+
+ The input to FSinfo is a single set of definitions of machines and
+automount maps. If multiple files are given on the command-line, then
+the files are concatenated together to form the input source. The files
+are passed individually through the C pre-processor before being parsed.
+
+ Several options define a prefix for the name of an output file. If
+the prefix is not specified no output of that type is produced. The
+suffix used will correspond either to the hostname to which a file
+belongs, or to the type of output if only one file is produced.
+Dumpsets and the `bootparams' file are in the latter class. To put the
+output into a subdirectory simply put a `/' at the end of the prefix,
+making sure that the directory has already been made before running
+Fsinfo.
+
+* Menu:
+
+* -a FSinfo Option:: Amd automount directory:
+* -b FSinfo Option:: Prefix for bootparams files.
+* -d FSinfo Option:: Prefix for dumpset data files.
+* -e FSinfo Option:: Prefix for exports files.
+* -f FSinfo Option:: Prefix for fstab files.
+* -h FSinfo Option:: Local hostname.
+* -m FSinfo Option:: Prefix for automount maps.
+* -q FSinfo Option:: Ultra quiet mode.
+* -v FSinfo Option:: Verbose mode.
+* -I FSinfo Option:: Define new #include directory.
+* -D-FSinfo Option:: Define macro.
+* -U FSinfo Option:: Undefine macro.
+
+
+File: am-utils.info, Node: -a FSinfo Option, Next: -b FSinfo Option, Prev: FSinfo Command Line Options, Up: FSinfo Command Line Options
+
+8.9.1 `-a' AUTODIR
+------------------
+
+Specifies the directory name in which to place the automounter's
+mountpoints. This defaults to `/a'. Some sites have the autodir set
+to be `/amd', and this would be achieved by:
+
+ fsinfo -a /amd ...
+
+
+File: am-utils.info, Node: -b FSinfo Option, Next: -d FSinfo Option, Prev: -a FSinfo Option, Up: FSinfo Command Line Options
+
+8.9.2 `-b' BOOTPARAMS
+---------------------
+
+This specifies the prefix for the `bootparams' filename. If it is not
+given, then the file will not be generated. The `bootparams' file will
+be constructed for the destination machine and will be placed into a
+file named `bootparams' and prefixed by this string. The file
+generated contains a list of entries describing each diskless client
+that can boot from the destination machine.
+
+ As an example, to create a `bootparams' file in the directory
+`generic', the following would be used:
+
+ fsinfo -b generic/ ...
+
+
+File: am-utils.info, Node: -d FSinfo Option, Next: -e FSinfo Option, Prev: -b FSinfo Option, Up: FSinfo Command Line Options
+
+8.9.3 `-d' DUMPSETS
+-------------------
+
+This specifies the prefix for the `dumpsets' file. If it is not
+specified, then the file will not be generated. The file will be for
+the destination machine and will be placed into a filename `dumpsets',
+prefixed by this string. The `dumpsets' file is for use by Imperial
+College's local backup system.
+
+ For example, to create a `dumpsets' file in the directory `generic',
+then you would use the following:
+
+ fsinfo -d generic/ ...
+
+
+File: am-utils.info, Node: -e FSinfo Option, Next: -f FSinfo Option, Prev: -d FSinfo Option, Up: FSinfo Command Line Options
+
+8.9.4 `-e' EXPORTFS
+-------------------
+
+Defines the prefix for the `exports' files. If it is not given, then
+the file will not be generated. For each machine defined in the
+configuration files as having disks, an `exports' file is constructed
+and given a filename determined by the name of the machine, prefixed
+with this string. If a machine is defined as diskless, then no
+`exports' file will be created for it. The files contain entries for
+directories on the machine that may be exported to clients.
+
+ Example: To create the `exports' files for each diskfull machine and
+place them into the directory `exports':
+
+ fsinfo -e exports/ ...
+
+
+File: am-utils.info, Node: -f FSinfo Option, Next: -h FSinfo Option, Prev: -e FSinfo Option, Up: FSinfo Command Line Options
+
+8.9.5 `-f' FSTAB
+----------------
+
+This defines the prefix for the `fstab' files. The files will only be
+created if this prefix is defined. For each machine defined in the
+configuration files, a `fstab' file is created with the filename
+determined by prefixing this string with the name of the machine. These
+files contain entries for filesystems and partitions to mount at boot
+time.
+
+ Example, to create the files in the directory `fstabs':
+
+ fsinfo -f fstabs/ ...
+
+
+File: am-utils.info, Node: -h FSinfo Option, Next: -m FSinfo Option, Prev: -f FSinfo Option, Up: FSinfo Command Line Options
+
+8.9.6 `-h' HOSTNAME
+-------------------
+
+Defines the hostname of the destination machine to process for. If this
+is not specified, it defaults to the local machine name, as returned by
+gethostname(2).
+
+ Example:
+
+ fsinfo -h dylan.doc.ic.ac.uk ...
+
+
+File: am-utils.info, Node: -m FSinfo Option, Next: -q FSinfo Option, Prev: -h FSinfo Option, Up: FSinfo Command Line Options
+
+8.9.7 `-m' MOUNT-MAPS
+---------------------
+
+Defines the prefix for the automounter files. The maps will only be
+produced if this prefix is defined. The mount maps suitable for the
+network defined by the configuration files will be placed into files
+with names calculated by prefixing this string to the name of each map.
+
+ For example, to create the automounter maps and place them in the
+directory `automaps':
+
+ fsinfo -m automaps/ ...
+
+
+File: am-utils.info, Node: -q FSinfo Option, Next: -v FSinfo Option, Prev: -m FSinfo Option, Up: FSinfo Command Line Options
+
+8.9.8 `-q'
+----------
+
+Selects quiet mode. FSinfo suppress the "running commentary" and only
+outputs any error messages which are generated.
+
+
+File: am-utils.info, Node: -v FSinfo Option, Next: -D-FSinfo Option, Prev: -q FSinfo Option, Up: FSinfo Command Line Options
+
+8.9.9 `-v'
+----------
+
+Selects verbose mode. When this is activated, the program will display
+more messages, and display all the information discovered when
+performing the semantic analysis phase. Each verbose message is output
+to `stdout' on a line starting with a `#' character.
+
+
+File: am-utils.info, Node: -D-FSinfo Option, Next: -I FSinfo Option, Prev: -v FSinfo Option, Up: FSinfo Command Line Options
+
+8.9.10 `-D' NAME[=defn]
+-----------------------
+
+Defines a symbol "name" for the preprocessor when reading the
+configuration files. Equivalent to `#define' directive.
+
+
+File: am-utils.info, Node: -I FSinfo Option, Next: -U FSinfo Option, Prev: -D-FSinfo Option, Up: FSinfo Command Line Options
+
+8.9.11 `-I' DIRECTORY
+---------------------
+
+This option is passed into the preprocessor for the configuration files.
+It specifies directories in which to find include files
+
+
+File: am-utils.info, Node: -U FSinfo Option, Prev: -I FSinfo Option, Up: FSinfo Command Line Options
+
+8.9.12 `-U' NAME
+----------------
+
+Removes any initial definition of the symbol "name". Inverse of the
+`-D' option.
+
+
+File: am-utils.info, Node: FSinfo errors, Prev: FSinfo Command Line Options, Up: FSinfo
+
+8.10 Errors produced by FSinfo
+==============================
+
+The following table documents the errors and warnings which FSinfo may
+produce.
+
+" expected
+ Occurs if an unescaped newline is found in a quoted string.
+
+ambiguous mount: VOLUME is a replicated filesystem
+ If several filesystems are declared as having the same volume
+ name, they will be considered replicated filesystems. To mount a
+ replicated filesystem statically, a specific host will need to be
+ named, to say which particular copy to try and mount, else this
+ error will result.
+
+can't open FILENAME for writing
+ Occurs if any errors are encountered when opening an output file.
+
+cannot determine localname since volname VOLUME is not uniquely defined
+ If a volume is replicated and an attempt is made to mount the
+ filesystem statically without specifying a local mountpoint,
+ FSinfo cannot calculate a mountpoint, as the desired pathname
+ would be ambiguous.
+
+DEVICE has duplicate exportfs data
+ Produced if the `exportfs' option is used multiple times within the
+ same branch of a filesystem definition. For example, if you
+ attempt to set the `exportfs' data at different levels of the
+ mountpoint directory tree.
+
+dump frequency for HOST:DEVICE is non-zero
+ Occurs if DEVICE has its `fstype' declared to be `swap' or
+ `export' and the `dump' option is set to a value greater than
+ zero. Swap devices should not be dumped.
+
+duplicate host HOSTNAME!
+ If a host has more than one definition.
+
+end of file within comment
+ A comment was unterminated before the end of one of the
+ configuration files.
+
+FILENAME: cannot open for reading
+ If a file specified on the command line as containing
+ configuration data could not be opened.
+
+FILESYSTEM has a volname but no exportfs data
+ Occurs when a volume name is declared for a file system, but the
+ string specifying what machines the filesystem can be exported to
+ is missing.
+
+fs field "FIELD-NAME" already set
+ Occurs when multiple definitions are given for one of the
+ attributes of a host's filesystem.
+
+host field "FIELD-NAME" already set
+ If duplicate definitions are given for any of the fields with a
+ host definition.
+
+HOST:DEVICE has more than one mount point
+ Occurs if the mount option for a host's filesystem specifies
+ multiple trees at which to place the mountpoint.
+
+HOST:DEVICE has no mount point
+ Occurs if the `mount' option is not specified for a host's
+ filesystem.
+
+HOST:DEVICE needs field "FIELD-NAME"
+ Occurs when a filesystem is missing a required field. FIELD-NAME
+ could be one of `fstype', `opts', `passno' or `mount'.
+
+HOST:mount field specified for swap partition
+ Occurs if a mountpoint is given for a filesystem whose type is
+ declared to be `swap'.
+
+malformed IP dotted quad: ADDRESS
+ If the Internet address of an interface is incorrectly specified.
+ An Internet address definition is handled to inet_addr(3N) to see
+ if it can cope. If not, then this message will be displayed.
+
+malformed netmask: NETMASK
+ If the netmask cannot be decoded as though it were a hexadecimal
+ number, then this message will be displayed. It will typically be
+ caused by incorrect characters in the NETMASK value.
+
+mount field "FIELD-NAME" already set
+ Occurs when a static mount has multiple definitions of the same
+ field.
+
+mount tree field "FIELD-NAME" already set
+ Occurs when the FIELD-NAME is defined more than once during the
+ definition of a filesystems mountpoint.
+
+netif field FIELD-NAME already set
+ Occurs if you attempt to define an attribute of an interface more
+ than once.
+
+network booting requires both root and swap areas
+ Occurs if a machine has mount declarations for either the root
+ partition or the swap area, but not both. You cannot define a
+ machine to only partially boot via the network.
+
+no disk mounts on HOSTNAME
+ If there are no static mounts, nor local disk mounts specified for
+ a machine, this message will be displayed.
+
+no volname given for HOST:DEVICE
+ Occurs when a filesystem is defined to be mounted on `default', but
+ no volume name is given for the file system, then the mountpoint
+ cannot be determined.
+
+not allowed '/' in a directory name
+ Occurs when a pathname with multiple directory elements is
+ specified as the name for an automounter tree. A tree should only
+ have one name at each level.
+
+pass number for HOST:DEVICE is non-zero
+ Occurs if DEVICE has its `fstype' declared to be `swap' or
+ `export' and the fsck(8) pass number is set. Swap devices should
+ not be fsck'd. *Note FSinfo fstype Option::.
+
+sub-directory DIRECTORY of DIRECTORY-TREE starts with '/'
+ Within the filesystem specification for a host, if an element
+ DIRECTORY of the mountpoint begins with a `/' and it is not the
+ start of the tree.
+
+sub-directory of DIRECTORY-TREE is named "default"
+ `default' is a keyword used to specify if a mountpoint should be
+ automatically calculated by FSinfo. If you attempt to specify a
+ directory name as this, it will use the filename of `default' but
+ will produce this warning.
+
+unknown \ sequence
+ Occurs if an unknown escape sequence is found inside a string.
+ Within a string, you can give the standard C escape sequences for
+ strings, such as newlines and tab characters.
+
+unknown directory attribute
+ If an unknown keyword is found while reading the definition of a
+ host's filesystem mount option.
+
+unknown filesystem attribute
+ Occurs if an unrecognized keyword is used when defining a host's
+ filesystems.
+
+unknown host attribute
+ Occurs if an unrecognized keyword is used when defining a host.
+
+unknown mount attribute
+ Occurs if an unrecognized keyword is found while parsing the list
+ of static mounts.
+
+unknown volname VOLUME automounted [ on name ]
+ Occurs if VOLUME is used in a definition of an automount map but
+ the volume name has not been declared during the host filesystem
+ definitions.
+
+volname VOLUME is unknown
+ Occurs if an attempt is made to mount or reference a volume name
+ which has not been declared during the host filesystem definitions.
+
+volname VOLUME not exported from MACHINE
+ Occurs if you attempt to mount the volume VOLUME from a machine
+ which has not declared itself to have such a filesystem available.
+
+
+
+File: am-utils.info, Node: Hlfsd, Next: Assorted Tools, Prev: FSinfo, Up: Top
+
+9 Hlfsd
+*******
+
+Hlfsd is a daemon which implements a filesystem containing a symbolic
+link to subdirectory within a user's home directory, depending on the
+user which accessed that link. It was primarily designed to redirect
+incoming mail to users' home directories, so that it can be read from
+anywhere. It was designed and implemented by Erez Zadok
+(http://www.cs.sunysb.edu/~ezk) and Alexander Dupuy <dupuy AT
+cs.columbia.edu>, at the Computer Science Department
+(http://www.cs.columbia.edu/) of Columbia University
+(http://www.columbia.edu/). A paper
+(http://www.fsl.cs.sunysb.edu/docs/hlfsd/hlfsd.html) on Hlfsd was
+presented at the Usenix LISA VII conference in 1993.
+
+ Hlfsd operates by mounting itself as an NFS server for the directory
+containing linkname, which defaults to `/hlfs/home'. Lookups within
+that directory are handled by Hlfsd, which uses the password map to
+determine how to resolve the lookup. The directory will be created if
+it doesn't already exist. The symbolic link will be to the accessing
+user's home directory, with subdir appended to it. If not specified,
+subdir defaults to `.hlfsdir'. This directory will also be created if
+it does not already exist.
+
+ A `SIGTERM' sent to Hlfsd will cause it to shutdown. A `SIGHUP'
+will flush the internal caches, and reload the password map. It will
+also close and reopen the log file, to enable the original log file to
+be removed or rotated. A `SIGUSR1' will cause it to dump its internal
+table of user IDs and home directories to the file `/tmp/hlfsddump'.
+
+* Menu:
+
+* Introduction to Hlfsd::
+* Background to Mail Delivery::
+* Using Hlfsd::
+
+
+File: am-utils.info, Node: Introduction to Hlfsd, Next: Background to Mail Delivery, Prev: Hlfsd, Up: Hlfsd
+
+9.1 Introduction to Hlfsd
+=========================
+
+Electronic mail has become one of the major applications for many
+computer networks, and use of this service is expected to increase over
+time, as networks proliferate and become faster. Providing a convenient
+environment for users to read, compose, and send electronic mail has
+become a requirement for systems administrators (SAs).
+
+ Widely used methods for handling mail usually require users to be
+logged into a designated "home" machine, where their mailbox files
+reside. Only on that one machine can they read newly arrived mail.
+Since users have to be logged into that system to read their mail, they
+often find it convenient to run all of their other processes on that
+system as well, including memory and CPU-intensive jobs. For example,
+in our department, we have allocated and configured several
+multi-processor servers to handle such demanding CPU/memory
+applications, but these were underutilized, in large part due to the
+inconvenience of not being able to read mail on those machines. (No
+home directories were located on these designated CPU-servers, since we
+did not want NFS service for users' home directories to have to compete
+with CPU-intensive jobs. At the same time, we discouraged users from
+running demanding applications on their home machines.)
+
+ Many different solutions have been proposed to allow users to read
+their mail on any host. However, all of these solutions fail in one or
+more of several ways:
+
+ * they introduce new single points of failure
+
+ * they require using different mail transfer agents (MTAs) or user
+ agents (UAs)
+
+ * they do not solve the problem for all cases, i.e. the solution is
+ only partially successful for a particular environment.
+
+
+ We have designed a simple filesystem, called the "Home-Link File
+System", to provide the ability to deliver mail to users' home
+directories, without modification to mail-related applications. We have
+endeavored to make it as stable as possible. Of great importance to us
+was to make sure the HLFS daemon, `hlfsd' , would not hang under any
+circumstances, and would take the next-best action when faced with
+problems. Compared to alternative methods, Hlfsd is a stable, more
+general solution, and easier to install/use. In fact, in some ways, we
+have even managed to improve the reliability and security of mail
+service.
+
+ Our server implements a small filesystem containing a symbolic link
+to a subdirectory of the invoking user's home directory, and named
+symbolic links to users' mailbox files.
+
+ The Hlfsd server finds out the UID of the process that is accessing
+its mount point, and resolves the pathname component `home' as a
+symbolic link to a subdirectory within the home directory given by the
+UID's entry in the password file. If the GID of the process that
+attempts to access a mailbox file is a special one (called HLFS_GID),
+then the server maps the name of the _next_ pathname component directly
+to the user's mailbox. This is necessary so that access to a mailbox
+file by users other than the owner can succeed. The server has safety
+features in case of failures such as hung filesystems or home directory
+filesystems that are inaccessible or full.
+
+ On most of our machines, mail gets delivered to the directory
+`/var/spool/mail'. Many programs, including UAs, depend on that path.
+Hlfsd creates a directory `/mail', and mounts itself on top of that
+directory. Hlfsd implements the path name component called `home',
+pointing to a subdirectory of the user's home directory. We have made
+`/var/spool/mail' a symbolic link to `/mail/home', so that accessing
+`/var/spool/mail' actually causes access to a subdirectory within a
+user's home directory.
+
+ The following table shows an example of how resolving the pathname
+`/var/mail/NAME' to `/users/ezk/.mailspool/NAME' proceeds.
+
+Resolving Component Pathname left to resolve Value if symbolic link
+/ var/mail/NAME
+var/ mail/NAME
+mail@ /mail/home/NAME mail@ -> /mail/home
+/ mail/home/NAME
+mail/ home/NAME
+home@ NAME home@ ->
+ /users/ezk/.mailspool
+/ users/ezk/.mailspool/NAME
+users/ ezk/.mailspool/NAME
+ezk/ .mailspool/NAME
+.mailspool/ NAME
+NAME
+
+
+File: am-utils.info, Node: Background to Mail Delivery, Next: Using Hlfsd, Prev: Introduction to Hlfsd, Up: Hlfsd
+
+9.2 Background to Mail Delivery
+===============================
+
+This section provides an in-depth discussion of why available methods
+for delivering mail to home directories are not as good as the one used
+by Hlfsd.
+
+* Menu:
+
+* Single-Host Mail Spool Directory::
+* Centralized Mail Spool Directory::
+* Distributed Mail Spool Service::
+* Why Deliver Into the Home Directory?::
+
+
+File: am-utils.info, Node: Single-Host Mail Spool Directory, Next: Centralized Mail Spool Directory, Prev: Background to Mail Delivery, Up: Background to Mail Delivery
+
+9.2.1 Single-Host Mail Spool Directory
+--------------------------------------
+
+The most common method for mail delivery is for mail to be appended to a
+mailbox file in a standard spool directory on the designated "mail
+home" machine of the user. The greatest advantage of this method is
+that it is the default method most vendors provide with their systems,
+thus very little (if any) configuration is required on the SA's part.
+All they need to set up are mail aliases directing mail to the host on
+which the user's mailbox file is assigned. (Otherwise, mail is
+delivered locally, and users find mailboxes on many machines.)
+
+ As users become more sophisticated, and aided by windowing systems,
+they find themselves logging in on multiple hosts at once, performing
+several tasks concurrently. They ask to be able to read their mail on
+any host on the network, not just the one designated as their "mail
+home".
+
+
+File: am-utils.info, Node: Centralized Mail Spool Directory, Next: Distributed Mail Spool Service, Prev: Single-Host Mail Spool Directory, Up: Background to Mail Delivery
+
+9.2.2 Centralized Mail Spool Directory
+--------------------------------------
+
+A popular method for providing mail readability from any host is to have
+all mail delivered to a mail spool directory on a designated
+"mail-server" which is exported via NFS to all of the hosts on the
+network. Configuring such a system is relatively easy. On most
+systems, the bulk of the work is a one-time addition to one or two
+configuration files in `/etc'. The file-server's spool directory is
+then hard-mounted across every machine on the local network. In small
+environments with only a handful of hosts this can be an acceptable
+solution. In our department, with a couple of hundred active hosts and
+thousands of mail messages processed daily, this was deemed completely
+unacceptable, as it introduced several types of problems:
+
+Scalability and Performance
+ As more and more machines get added to the network, more mail
+ traffic has to go over NFS to and from the mail-server. Users like
+ to run mail-watchers, and read their mail often. The stress on the
+ shared infrastructure increases with every user and host added;
+ loads on the mail server would most certainly be high since all
+ mail delivery goes through that one machine.(1) This leads to
+ lower reliability and performance. To reduce the number of
+ concurrent connections between clients and the server host, some
+ SAs have resorted to automounting the mail-spool directory. But
+ this solution only makes things worse: since users often run mail
+ watchers, and many popular applications such as `trn', `emacs',
+ `csh' or `ksh' check periodically for new mail, the automounted
+ directory would be effectively permanently mounted. If it gets
+ unmounted automatically by the automounter program, it is most
+ likely to get mounted shortly afterwards, consuming more I/O
+ resources by the constant cycle of mount and umount calls.
+
+Reliability
+ The mail-server host and its network connectivity must be very
+ reliable. Worse, since the spool directory has to be
+ hard-mounted,(2) many processes which access the spool directory
+ (various shells, `login', `emacs', etc.) would be hung as long as
+ connectivity to the mail-server is severed. To improve
+ reliability, SAs may choose to backup the mail-server's spool
+ partition several times a day. This may make things worse since
+ reading or delivering mail while backups are in progress may cause
+ backups to be inconsistent; more backups consume more backup-media
+ resources, and increase the load on the mail-server host.
+
+
+ ---------- Footnotes ----------
+
+ (1) Delivery via NFS-mounted filesystems may require usage of
+`rpc.lockd' and `rpc.statd' to provide distributed file-locking, both
+of which are widely regarded as unstable and unreliable. Furthermore,
+this will degrade performance, as local processes as well as remote
+`nfsd' processes are kept busy.
+
+ (2) No SA in their right minds would soft-mount read/write
+partitions -- the chances for data loss are too great.
+
+
+File: am-utils.info, Node: Distributed Mail Spool Service, Next: Why Deliver Into the Home Directory?, Prev: Centralized Mail Spool Directory, Up: Background to Mail Delivery
+
+9.2.3 Distributed Mail Spool Service
+------------------------------------
+
+Despite the existence of a few systems that support delivery to users'
+home directories, mail delivery to home directories hasn't caught on.
+We believe the main reason is that there are too many programs that
+"know" where mailbox files reside. Besides the obvious (the delivery
+program `/bin/mail' and mail readers like `/usr/ucb/Mail', `mush',
+`mm', etc.), other programs that know mailbox location are login, from,
+almost every shell, `xbiff', `xmailbox', and even some programs not
+directly related to mail, such as `emacs' and `trn'. Although some of
+these programs can be configured to look in different directories with
+the use of environment variables and other resources, many of them
+cannot. The overall porting work is significant.
+
+ Other methods that have yet to catch on require the use of a special
+mail-reading server, such as IMAP or POP. The main disadvantage of
+these systems is that UAs need to be modified to use these services --
+a long and involved task. That is why they are not popular at this
+time.
+
+ Several other ideas have been proposed and even used in various
+environments. None of them is robust. They are mostly very
+specialized, inflexible, and do not extend to the general case. Some of
+the ideas are plain bad, potentially leading to lost or corrupt mail:
+
+automounters
+ Using an automounter such as Amd to provide a set of symbolic links
+ from the normal spool directory to user home directories is not
+ sufficient. UAs rename, unlink, and recreate the mailbox as a
+ regular file, therefore it must be a real file, not a symbolic
+ link. Furthermore, it must reside in a real directory which is
+ writable by the UAs and MTAs. This method may also require
+ populating `/var/spool/mail' with symbolic links and making sure
+ they are updated. Making Amd manage that directory directly
+ fails, since many various lock files need to be managed as well.
+ Also, Amd does not provide all of the NFS operations which are
+ required to write mail such as write, create, remove, and unlink.
+
+`$MAIL'
+ Setting this variable to an automounted directory pointing to the
+ user's mail spool host only solves the problem for those programs
+ which know and use `$MAIL'. Many programs don't, therefore this
+ solution is partial and of limited flexibility. Also, it requires
+ the SAs or the users to set it themselves -- an added level of
+ inconvenience and possible failures.
+
+/bin/mail
+ Using a different mail delivery agent could be the solution. One
+ such example is `hdmail'. However, `hdmail' still requires
+ modifying all UAs, the MTA's configuration, installing new
+ daemons, and changing login scripts. This makes the system less
+ upgradable or compatible with others, and adds one more
+ complicated system for SAs to deal with. It is not a complete
+ solution because it still requires each user have their `$MAIL'
+ variable setup correctly, and that every program use this variable.
+
+
+
+File: am-utils.info, Node: Why Deliver Into the Home Directory?, Prev: Distributed Mail Spool Service, Up: Background to Mail Delivery
+
+9.2.4 Why Deliver Into the Home Directory?
+------------------------------------------
+
+There are several major reasons why SAs might want to deliver mail
+directly into the users' home directories:
+
+Location
+ Many mail readers need to move mail from the spool directory to the
+ user's home directory. It speeds up this operation if the two are
+ on the same filesystem. If for some reason the user's home
+ directory is inaccessible, it isn't that useful to be able to read
+ mail, since there is no place to move it to. In some cases,
+ trying to move mail to a non-existent or hung filesystem may
+ result in mail loss.
+
+Distribution
+ Having all mail spool directories spread among the many more
+ filesystems minimizes the chances that complete environments will
+ grind to a halt when a single server is down. It does increase
+ the chance that there will be someone who is not able to read
+ their mail when a machine is down, but that is usually preferred
+ to having no one be able to read their mail because a centralized
+ mail server is down. The problem of losing some mail due to the
+ (presumably) higher chances that a user's machine is down is
+ minimized in HLFS.
+
+Security
+ Delivering mail to users' home directories has another advantage --
+ enhanced security and privacy. Since a shared system mail spool
+ directory has to be world-readable and searchable, any user can see
+ whether other users have mail, when they last received new mail,
+ or when they last read their mail. Programs such as `finger'
+ display this information, which some consider an infringement of
+ privacy. While it is possible to disable this feature of `finger'
+ so that remote users cannot see a mailbox file's status, this
+ doesn't prevent local users from getting the information.
+ Furthermore, there are more programs which make use of this
+ information. In shared environments, disabling such programs has
+ to be done on a system-wide basis, but with mail delivered to
+ users' home directories, users less concerned with privacy who do
+ want to let others know when they last received or read mail can
+ easily do so using file protection bits.
+
+
+ In summary, delivering mail to home directories provides users the
+functionality sought, and also avoids most of the problems just
+discussed.
+
+
+File: am-utils.info, Node: Using Hlfsd, Prev: Background to Mail Delivery, Up: Hlfsd
+
+9.3 Using Hlfsd
+===============
+
+* Menu:
+
+* Controlling Hlfsd::
+* Hlfsd Options::
+* Hlfsd Files::
+
+
+File: am-utils.info, Node: Controlling Hlfsd, Next: Hlfsd Options, Prev: Using Hlfsd, Up: Using Hlfsd
+
+9.3.1 Controlling Hlfsd
+-----------------------
+
+Much the same way Amd is controlled by `ctl-amd', so does Hlfsd get
+controlled by the `ctl-hlfsd' script:
+
+ctl-hlfsd start
+ Start a new Hlfsd.
+
+ctl-hlfsd stop
+ Stop a running Hlfsd.
+
+ctl-hlfsd restart
+ Stop a running Hlfsd, wait for 10 seconds, and then start a new
+ one. It is hoped that within 10 seconds, the previously running
+ Hlfsd terminate properly; otherwise, starting a second one could
+ cause system lockup.
+
+
+ For example, on our systems, we start Hlfsd within `ctl-hlfsd' as
+follows on Solaris 2 systems:
+
+ hlfsd -a /var/alt_mail -x all -l /var/log/hlfsd /mail/home .mailspool
+
+ The directory `/var/alt_mail' is a directory in the root partition
+where alternate mail will be delivered into, when it cannot be delivered
+into the user's home directory.
+
+ Normal mail gets delivered into `/var/mail', but on our systems,
+that is a symbolic link to `/mail/home'. `/mail' is managed by Hlfsd,
+which creates a dynamic symlink named `home', pointing to the
+subdirectory `.mailspool' _within_ the accessing user's home directory.
+This results in mail which normally should go to `/var/mail/`$USER'',
+to go to ``$HOME'/.mailspool/`$USER''.
+
+ Hlfsd does not create the `/var/mail' symlink. This needs to be
+created (manually) once on each host, by the system administrators, as
+follows:
+
+ mv /var/mail /var/alt_mail
+ ln -s /mail/home /var/mail
+
+ Hlfsd also responds to the following signals:
+
+ A `SIGHUP' signal sent to Hlfsd will force it to reload the password
+map immediately.
+
+ A `SIGUSR1' signal sent to Hlfsd will cause it to dump its internal
+password map to the file `/usr/tmp/hlfsd.dump.XXXXXX', where `XXXXXX'
+will be replaced by a random string generated by mktemp(3) or (the more
+secure) mkstemp(3).
+
+
+File: am-utils.info, Node: Hlfsd Options, Next: Hlfsd Files, Prev: Controlling Hlfsd, Up: Using Hlfsd
+
+9.3.2 Hlfsd Options
+-------------------
+
+-a ALT_DIR
+ Alternate directory. The name of the directory to which the
+ symbolic link returned by Hlfsd will point, if it cannot access
+ the home directory of the user. This defaults to `/var/hlfs'.
+ This directory will be created if it doesn't exist. It is
+ expected that either users will read these files, or the system
+ administrators will run a script to resend this "lost mail" to its
+ owner.
+
+-c CACHE-INTERVAL
+ Caching interval. Hlfsd will cache the validity of home
+ directories for this interval, in seconds. Entries which have
+ been verified within the last CACHE-INTERVAL seconds will not be
+ verified again, since the operation could be expensive, and the
+ entries are most likely still valid. After the interval has
+ expired, Hlfsd will re-verify the validity of the user's home
+ directory, and reset the cache time-counter. The default value
+ for CACHE-INTERVAL is 300 seconds (5 minutes).
+
+-f
+ Force fast startup. This option tells Hlfsd to skip startup-time
+ consistency checks such as existence of mount directory, alternate
+ spool directory, symlink to be hidden under the mount directory,
+ their permissions and validity.
+
+-g GROUP
+ Set the special group HLFS_GID to GROUP. Programs such as
+ `/usr/ucb/from' or `/usr/sbin/in.comsat', which access the
+ mailboxes of other users, must be setgid `HLFS_GID' to work
+ properly. The default group is `hlfs'. If no group is provided,
+ and there is no group `hlfs', this feature is disabled.
+
+-h
+ Help. Print a brief help message, and exit.
+
+-i RELOAD-INTERVAL
+ Map-reloading interval. Each RELOAD-INTERVAL seconds, Hlfsd will
+ reload the password map. Hlfsd needs the password map for the
+ UIDs and home directory pathnames. Hlfsd schedules a `SIGALRM' to
+ reload the password maps. A `SIGHUP' sent to Hlfsd will force it
+ to reload the maps immediately. The default value for
+ RELOAD-INTERVAL is 900 seconds (15 minutes.)
+
+-l LOGFILE
+ Specify a log file to which Hlfsd will record events. If LOGFILE
+ is the string `syslog' then the log messages will be sent to the
+ system log daemon by syslog(3), using the `LOG_DAEMON' facility.
+ This is also the default.
+
+-n
+ No verify. Hlfsd will not verify the validity of the symbolic link
+ it will be returning, or that the user's home directory contains
+ sufficient disk-space for spooling. This can speed up Hlfsd at the
+ cost of possibly returning symbolic links to home directories
+ which are not currently accessible or are full. By default, Hlfsd
+ validates the symbolic-link in the background. The `-n' option
+ overrides the meaning of the `-c' option, since no caching is
+ necessary.
+
+-o MOUNT-OPTIONS
+ Mount options which Hlfsd will use to mount itself on top of
+ DIRNAME. By default, MOUNT-OPTIONS is set to `ro'. If the system
+ supports symbolic-link caching, default options are set to
+ `ro,nocache'.
+
+-p
+ Print PID. Outputs the process-id of Hlfsd to standard output
+ where it can be saved into a file.
+
+-v
+ Version. Displays version information to standard error.
+
+-x LOG-OPTIONS
+ Specify run-time logging options. The options are a comma
+ separated list chosen from: `fatal', `error', `user', `warn',
+ `info', `map', `stats', `all'.
+
+-C
+ Force Hlfsd to run on systems that cannot turn off the NFS
+ attribute-cache. Use of this option on those systems is
+ discouraged, as it may result in loss or misdelivery of mail. The
+ option is ignored on systems that can turn off the attribute-cache.
+
+-D LOG-OPTIONS
+ Select from a variety of debugging options. Prefixing an option
+ with the string `no' reverses the effect of that option. Options
+ are cumulative. The most useful option is `all'. Since this
+ option is only used for debugging other options are not documented
+ here. A fuller description is available in the program source.
+
+-P PASSWORD-FILE
+ Read the user-name, user-id, and home directory information from
+ the file PASSWORD-FILE. Normally, Hlfsd will use getpwent(3) to
+ read the password database. This option allows you to override the
+ default database, and is useful if you want to map users' mail
+ files to a directory other than their home directory. Only the
+ username, uid, and home-directory fields of the file PASSWORD-FILE
+ are read and checked. All other fields are ignored. The file
+ PASSWORD-FILE must otherwise be compliant with Unix Version 7
+ colon-delimited format passwd(4).
+
+
+
+File: am-utils.info, Node: Hlfsd Files, Prev: Hlfsd Options, Up: Using Hlfsd
+
+9.3.3 Hlfsd Files
+-----------------
+
+The following files are used by Hlfsd:
+
+`/hlfs'
+ directory under which Hlfsd mounts itself and manages the symbolic
+ link `home'.
+
+`.hlfsdir'
+ default sub-directory in the user's home directory, to which the
+ `home' symbolic link returned by Hlfsd points.
+
+`/var/hlfs'
+ directory to which `home' symbolic link returned by Hlfsd points
+ if it is unable to verify the that user's home directory is
+ accessible.
+
+`/usr/tmp/hlfsd.dump.XXXXXX'
+ file to which Hlfsd will dump its internal password map when it
+ receives the `SIGUSR1' signal. `XXXXXX' will be replaced by a
+ random string generated by mktemp(3) or (the more secure)
+ mkstemp(3).
+
+
+ For discussion on other files used by Hlfsd, see *Note
+lostaltmail::, and *Note lostaltmail.conf-sample::.
+
+
+File: am-utils.info, Node: Assorted Tools, Next: Examples, Prev: Hlfsd, Up: Top
+
+10 Assorted Tools
+*****************
+
+The following are additional utilities and scripts included with
+am-utils, and get installed.
+
+* Menu:
+
+* am-eject::
+* amd.conf-sample::
+* amd2ldif::
+* amd2sun::
+* automount2amd::
+* ctl-amd::
+* ctl-hlfsd::
+* expn::
+* fix-amd-map::
+* fixmount::
+* fixrmtab::
+* lostaltmail::
+* lostaltmail.conf-sample::
+* mk-amd-map::
+* pawd::
+* redhat-ctl-amd::
+* wait4amd::
+* wait4amd2die::
+* wire-test::
+
+
+File: am-utils.info, Node: am-eject, Next: amd.conf-sample, Prev: Assorted Tools, Up: Assorted Tools
+
+10.1 am-eject
+=============
+
+A shell script unmounts a floppy or CD-ROM that is automounted, and
+then attempts to eject the removable device.
+
+
+File: am-utils.info, Node: amd.conf-sample, Next: amd2ldif, Prev: am-eject, Up: Assorted Tools
+
+10.2 amd.conf-sample
+====================
+
+A sample Amd configuration file. *Note Amd Configuration File::.
+
+
+File: am-utils.info, Node: amd2ldif, Next: amd2sun, Prev: amd.conf-sample, Up: Assorted Tools
+
+10.3 amd2ldif
+=============
+
+A script to convert Amd maps to LDAP input files. Use it as follows:
+
+ amd2ldif mapname base < amd.mapfile > mapfile.ldif
+
+
+File: am-utils.info, Node: amd2sun, Next: automount2amd, Prev: amd2ldif, Up: Assorted Tools
+
+10.4 amd2sun
+============
+
+A script to convert Amd maps to Sun Automounter maps. Use it as follows
+
+ amd2sun < amd.mapfile > auto_mapfile
+
+
+File: am-utils.info, Node: automount2amd, Next: ctl-amd, Prev: amd2sun, Up: Assorted Tools
+
+10.5 automount2amd
+==================
+
+A script to convert old Sun Automounter maps to Amd maps.
+
+ Say you have the Sun automount file auto.foo, with these two lines:
+ home earth:/home
+ moon -ro,intr server:/proj/images
+ Running
+ automount2amd auto.foo > amd.foo
+
+ will produce the Amd map amd.foo with this content:
+
+ # generated by automount2amd on Sat Aug 14 17:59:32 US/Eastern 1999
+
+ /defaults \\
+ type:=nfs;opts:=rw,grpid,nosuid,utimeout=600
+
+ home \
+ host==earth;type:=link;fs:=/home \\
+ rhost:=earth;rfs:=/home
+
+ moon \
+ -addopts:=ro,intr \\
+ host==server;type:=link;fs:=/proj/images \\
+ rhost:=server;rfs:=/proj/images
+
+ This perl script will use the following /default entry
+ type:=nfs;opts:=rw,grpid,nosuid,utimeout=600
+ If you wish to override that, define the $DEFAULTS environment
+variable, or modify the script.
+
+ If you wish to generate Amd maps using the hostd (*note hostd
+Selector Variable::) Amd map syntax, then define the environment
+variable $DOMAIN or modify the script.
+
+ Note that automount2amd does not understand the syntax in newer Sun
+Automount maps, those used with autofs.
+
+
+File: am-utils.info, Node: ctl-amd, Next: ctl-hlfsd, Prev: automount2amd, Up: Assorted Tools
+
+10.6 ctl-amd
+============
+
+A script to start, stop, or restart Amd. Use it as follows:
+
+ctl-amd start
+ Start a new Amd process.
+
+ctl-amd stop
+ Stop the running Amd.
+
+ctl-amd restart
+ Stop the running Amd (if any), safely wait for it to terminate, and
+ then start a new process -- only if the previous one died cleanly.
+
+ *Note Run-time Administration::, for more details.
+
+
+File: am-utils.info, Node: ctl-hlfsd, Next: expn, Prev: ctl-amd, Up: Assorted Tools
+
+10.7 ctl-hlfsd
+==============
+
+A script for controlling Hlfsd, much the same way `ctl-amd' controls
+Amd. Use it as follows:
+
+ctl-hlfsd start
+ Start a new Hlfsd process.
+
+ctl-hlfsd stop
+ Stop the running Hlfsd.
+
+ctl-hlfsd restart
+ Stop the running Hlfsd (if any), wait for 10 seconds for it to
+ terminate, and then start a new process -- only if the previous one
+ died cleanly.
+
+ *Note Hlfsd::, for more details.
+
+
+File: am-utils.info, Node: expn, Next: fix-amd-map, Prev: ctl-hlfsd, Up: Assorted Tools
+
+10.8 expn
+=========
+
+A script to expand email addresses into their full name. It is
+generally useful when using with the `lostaltmail' script, but is a
+useful tools otherwise.
+
+ $ expn -v ezk@example.com
+ ezk@example.com ->
+ ezk@shekel.example.com
+ ezk@shekel.example.com ->
+ Erez Zadok <"| /usr/local/mh/lib/slocal -user ezk || exit 75>
+ Erez Zadok <\ezk>
+ Erez Zadok </u/zing/ezk/.mailspool/backup>
+
+
+File: am-utils.info, Node: fix-amd-map, Next: fixmount, Prev: expn, Up: Assorted Tools
+
+10.9 fix-amd-map
+================
+
+Am-utils changed some of the syntax and default values of some
+variables. For example, the default value for `${os}' for Solaris 2.x
+(aka SunOS 5.x) systems used to be `sos5', it is now more automatically
+generated from `config.guess' and its value is `sunos5'.
+
+ This script converts older Amd maps to new ones. Use it as follows:
+
+ fix-amd-map < old.map > new.map
+
+
+File: am-utils.info, Node: fixmount, Next: fixrmtab, Prev: fix-amd-map, Up: Assorted Tools
+
+10.10 fixmount
+==============
+
+`fixmount' is a variant of showmount(8) that can delete bogus mount
+entries in remote mountd(8) daemons. This is useful to cleanup
+otherwise ever-accumulating "junk". Use it for example:
+
+ fixmount -r host
+
+ See the online manual page for `fixmount' for more details of its
+usage.
+
+
+File: am-utils.info, Node: fixrmtab, Next: lostaltmail, Prev: fixmount, Up: Assorted Tools
+
+10.11 fixrmtab
+==============
+
+A script to invalidate `/etc/rmtab' entries for hosts named. Also
+restart mountd for changes to take effect. Use it for example:
+
+ fixrmtab host1 host2 ...
+
+
+File: am-utils.info, Node: lostaltmail, Next: lostaltmail.conf-sample, Prev: fixrmtab, Up: Assorted Tools
+
+10.12 lostaltmail
+=================
+
+A script used with Hlfsd to resend any "lost" mail. Hlfsd redirects
+mail which cannot be written into the user's home directory to an
+alternate directory. This is useful to continue delivering mail, even
+if the user's file system was unavailable, full, or over quota. But,
+the mail which gets delivered to the alternate directory needs to be
+resent to its respective users. This is what the `lostaltmail' script
+does.
+
+ Use it as follows:
+
+ lostaltmail
+
+ This script needs a configuration file `lostaltmail.conf' set up
+with the right parameters to properly work. *Note Hlfsd::, for more
+details.
+
+
+File: am-utils.info, Node: lostaltmail.conf-sample, Next: mk-amd-map, Prev: lostaltmail, Up: Assorted Tools
+
+10.13 lostaltmail.conf-sample
+=============================
+
+This is a text file with configuration parameters needed for the
+`lostaltmail' script. The script includes comments explaining each of
+the configuration variables. See it for more information. Also *note
+Hlfsd:: for general information.
+
+
+File: am-utils.info, Node: mk-amd-map, Next: pawd, Prev: lostaltmail.conf-sample, Up: Assorted Tools
+
+10.14 mk-amd-map
+================
+
+This program converts a normal Amd map file into an ndbm database with
+the same prefix as the named file. Use it as follows:
+
+ mk-amd-map mapname
+
+
+File: am-utils.info, Node: pawd, Next: redhat-ctl-amd, Prev: mk-amd-map, Up: Assorted Tools
+
+10.15 pawd
+==========
+
+Pawd is used to print the current working directory, adjusted to
+reflect proper paths that can be reused to go through the automounter
+for the shortest possible path. In particular, the path printed back
+does not include any of Amd's local mount points. Using them is
+unsafe, because Amd may unmount managed file systems from the mount
+points, and thus including them in paths may not always find the files
+within.
+
+ Without any arguments, Pawd will print the automounter adjusted
+current working directory. With any number of arguments, it will print
+the adjusted path of each one of the arguments.
+
+
+File: am-utils.info, Node: redhat-ctl-amd, Next: wait4amd, Prev: pawd, Up: Assorted Tools
+
+10.16 redhat-ctl-amd
+====================
+
+This script is similar to ctl-amd (*note ctl-amd::) but is intended for
+Red Hat Linux systems. You can safely copy redhat-ctl-amd onto
+`/etc/rc.d/init.d/amd'. The script supplied by Am-utils is usually
+better than the one provided by Red Hat, because the Red Hat script
+does not correctly kill Amd processes: it is too quick to kill the
+wrong processes, leaving stale or hung mount points behind.
+
+
+File: am-utils.info, Node: wait4amd, Next: wait4amd2die, Prev: redhat-ctl-amd, Up: Assorted Tools
+
+10.17 wait4amd
+==============
+
+A script to wait for Amd to start on a particular host before
+performing an arbitrary command. The command is executed repeatedly,
+with 1 second intervals in between. You may interrupt the script using
+`^C' (or whatever keyboard sequence your terminal's `intr' function is
+bound to).
+
+ Examples:
+
+wait4amd saturn amq -p -h saturn
+ When Amd is up on host `saturn', get the process ID of that
+ running Amd.
+
+wait4amd pluto rlogin pluto
+ Remote login to host `pluto' when Amd is up on that host. It is
+ generally necessary to wait for Amd to properly start and
+ initialize on a remote host before logging in to it, because
+ otherwise user home directories may not be accessible across the
+ network.
+
+wait4amd pluto
+ A short-hand version of the previous command, since the most useful
+ reason for this script is to login to a remote host. I use it very
+ often when testing out new versions of Amd, and need to reboot hung
+ hosts.
+
+
+File: am-utils.info, Node: wait4amd2die, Next: wire-test, Prev: wait4amd, Up: Assorted Tools
+
+10.18 wait4amd2die
+==================
+
+This script is used internally by `ctl-amd' when used to restart Amd.
+It waits for Amd to terminate. If it detected that Amd terminated
+cleanly, this script will return an exist status of zero. Otherwise,
+it will return a non-zero exit status.
+
+ The script tests for Amd's existence once every 5 seconds, six
+times, for a total of 30 seconds. It will return a zero exist status as
+soon as it detects that Amd dies.
+
+
+File: am-utils.info, Node: wire-test, Prev: wait4amd2die, Up: Assorted Tools
+
+10.19 wire-test
+===============
+
+A simple program to test if some of the most basic networking functions
+in am-util's library `libamu' work. It also tests the combination of
+NFS protocol and version number that are supported from the current
+host, to a remote one.
+
+ For example, in this test a machine which only supports NFS Version
+2 is contacting a remote host that can support the same version, but
+using both UDP and TCP. If no host name is specified, `wire-test' will
+try `localhost'.
+
+ $ wire-test moisil
+ Network name is "mcl-lab-net.cs.columbia.edu"
+ Network number is "128.59.13"
+ Network name is "old-net.cs.columbia.edu"
+ Network number is "128.59.16"
+ My IP address is 0x7f000001.
+ NFS Version and protocol tests to host "moisil"...
+ testing vers=2, proto="udp" -> found version 2.
+ testing vers=3, proto="udp" -> failed!
+ testing vers=2, proto="tcp" -> found version 2.
+ testing vers=3, proto="tcp" -> failed!
+
+
+File: am-utils.info, Node: Examples, Next: Internals, Prev: Assorted Tools, Up: Top
+
+11 Examples
+***********
+
+* Menu:
+
+* User Filesystems::
+* Home Directories::
+* Architecture Sharing::
+* Wildcard Names::
+* rwho servers::
+* /vol::
+* /defaults with selectors::
+* /tftpboot in a chroot-ed environment::
+
+
+File: am-utils.info, Node: User Filesystems, Next: Home Directories, Prev: Examples, Up: Examples
+
+11.1 User Filesystems
+=====================
+
+With more than one fileserver, the directories most frequently
+cross-mounted are those containing user home directories. A common
+convention used at Imperial College is to mount the user disks under
+/home/machine.
+
+ Typically, the `/etc/fstab' file contained a long list of entries
+such as:
+
+ machine:/home/machine /home/machine nfs ...
+
+ for each fileserver on the network.
+
+ There are numerous problems with this system. The mount list can
+become quite large and some of the machines may be down when a system is
+booted. When a new fileserver is installed, `/etc/fstab' must be
+updated on every machine, the mount directory created and the filesystem
+mounted.
+
+ In many environments most people use the same few workstations, but
+it is convenient to go to a colleague's machine and access your own
+files. When a server goes down, it can cause a process on a client
+machine to hang. By minimizing the mounted filesystems to only include
+those actively being used, there is less chance that a filesystem will
+be mounted when a server goes down.
+
+ The following is a short extract from a map taken from a research
+fileserver at Imperial College.
+
+ Note the entry for `localhost' which is used for users such as the
+operator (`opr') who have a home directory on most machine as
+`/home/localhost/opr'.
+
+ /defaults opts:=rw,intr,grpid,nosuid
+ charm host!=${key};type:=nfs;rhost:=${key};rfs:=/home/${key} \
+ host==${key};type:=ufs;dev:=/dev/xd0g
+ #
+ ...
+
+ #
+ localhost type:=link;fs:=${host}
+ ...
+ #
+ # dylan has two user disks so have a
+ # top directory in which to mount them.
+ #
+ dylan type:=auto;fs:=${map};pref:=${key}/
+ #
+ dylan/dk2 host!=dylan;type:=nfs;rhost:=dylan;rfs:=/home/${key} \
+ host==dylan;type:=ufs;dev:=/dev/dsk/2s0
+ #
+ dylan/dk5 host!=dylan;type:=nfs;rhost:=dylan;rfs:=/home/${key} \
+ host==dylan;type:=ufs;dev:=/dev/dsk/5s0
+ ...
+ #
+ toytown host!=${key};type:=nfs;rhost:=${key};rfs:=/home/${key} \
+ host==${key};type:=ufs;dev:=/dev/xy1g
+ ...
+ #
+ zebedee host!=${key};type:=nfs;rhost:=${key};rfs:=/home/${key} \
+ host==${key};type:=ufs;dev:=/dev/dsk/1s0
+ #
+ # Just for access...
+ #
+ gould type:=auto;fs:=${map};pref:=${key}/
+ gould/staff host!=gould;type:=nfs;rhost:=gould;rfs:=/home/${key}
+ #
+ gummo host!=${key};type:=nfs;rhost:=${key};rfs:=/home/${key}
+ ...
+
+ This map is shared by most of the machines listed so on those
+systems any of the user disks is accessible via a consistent name. Amd
+is started with the following command
+
+ amd /home amd.home
+
+ Note that when mounting a remote filesystem, the "automounted" mount
+point is referenced, so that the filesystem will be mounted if it is
+not yet (at the time the remote `mountd' obtains the file handle).
+
+
+File: am-utils.info, Node: Home Directories, Next: Architecture Sharing, Prev: User Filesystems, Up: Examples
+
+11.2 Home Directories
+=====================
+
+One convention for home directories is to locate them in `/homes' so
+user `jsp''s home directory is `/homes/jsp'. With more than a single
+fileserver it is convenient to spread user files across several
+machines. All that is required is a mount-map which converts login
+names to an automounted directory.
+
+ Such a map might be started by the command:
+
+ amd /homes amd.homes
+
+ where the map `amd.homes' contained the entries:
+
+ /defaults type:=link # All the entries are of type:=link
+ jsp fs:=/home/charm/jsp
+ njw fs:=/home/dylan/dk5/njw
+ ...
+ phjk fs:=/home/toytown/ai/phjk
+ sjv fs:=/home/ganymede/sjv
+
+ Whenever a login name is accessed in `/homes' a symbolic link
+appears pointing to the real location of that user's home directory. In
+this example, `/homes/jsp' would appear to be a symbolic link pointing
+to `/home/charm/jsp'. Of course, `/home' would also be an automount
+point.
+
+ This system causes an extra level of symbolic links to be used.
+Although that turns out to be relatively inexpensive, an alternative is
+to directly mount the required filesystems in the `/homes' map. The
+required map is simple, but long, and its creation is best automated.
+The entry for `jsp' could be:
+
+ jsp -sublink:=${key};rfs:=/home/charm \
+ host==charm;type:=ufs;dev:=/dev/xd0g \
+ host!=charm;type:=nfs;rhost:=charm
+
+ This map can become quite big if it contains a large number of
+entries. By combining two other features of Amd it can be greatly
+simplified.
+
+ First the UFS partitions should be mounted under the control of
+`/etc/fstab', taking care that they are mounted in the same place that
+Amd would have automounted them. In most cases this would be something
+like `/a/"host"/home/"host"' and `/etc/fstab' on host `charm' would
+have a line:
+
+ /dev/xy0g /a/charm/home/charm 4.2 rw,nosuid,grpid 1 5
+
+ The map can then be changed to:
+
+ /defaults type:=nfs;sublink:=${key};opts:=rw,intr,nosuid,grpid
+ jsp rhost:=charm;rfs:=/home/charm
+ njw rhost:=dylan;rfs:=/home/dylan/dk5
+ ...
+ phjk rhost:=toytown;rfs:=/home/toytown;sublink:=ai/${key}
+ sjv rhost:=ganymede;rfs:=/home/ganymede
+
+ This map operates as usual on a remote machine (ie `${host}' not
+equal to `${rhost}'). On the machine where the filesystem is stored
+(ie `${host}' equal to `${rhost}'), Amd will construct a local
+filesystem mount point which corresponds to the name of the locally
+mounted UFS partition. If Amd is started with the `-r' option then
+instead of attempting an NFS mount, Amd will simply inherit the UFS
+mount (*note Inheritance Filesystem::). If `-r' is not used then a
+loopback NFS mount will be made. This type of mount is known to cause
+a deadlock on many systems.
+
+
+File: am-utils.info, Node: Architecture Sharing, Next: Wildcard Names, Prev: Home Directories, Up: Examples
+
+11.3 Architecture Sharing
+=========================
+
+Often a filesystem will be shared by machines of different
+architectures. Separate trees can be maintained for the executable
+images for each architecture, but it may be more convenient to have a
+shared tree, with distinct subdirectories.
+
+ A shared tree might have the following structure on the fileserver
+(called `fserver' in the example):
+
+ local/tex
+ local/tex/fonts
+ local/tex/lib
+ local/tex/bin
+ local/tex/bin/sun3
+ local/tex/bin/sun4
+ local/tex/bin/hp9000
+ ...
+
+ In this example, the subdirectories of `local/tex/bin' should be
+hidden when accessed via the automount point (conventionally `/vol').
+A mount-map for `/vol' to achieve this would look like:
+
+ /defaults sublink:=${/key};rhost:=fserver;type:=link
+ tex type:=auto;fs:=${map};pref:=${key}/
+ tex/fonts host!=fserver;type:=nfs;rfs:=/vol/tex \
+ host==fserver;fs:=/usr/local/tex
+ tex/lib host!=fserver;type:=nfs;rfs:=/vol/tex \
+ host==fserver;fs:=/usr/local/tex
+ tex/bin -sublink:=${/key}/${arch} \
+ host!=fserver;type:=nfs;rfs:=/vol/tex \
+ host:=fserver;fs:=/usr/local/tex
+
+ When `/vol/tex/bin' is referenced, the current machine architecture
+is automatically appended to the path by the `${sublink}' variable.
+This means that users can have `/vol/tex/bin' in their `PATH' without
+concern for architecture dependencies.
+
+
+File: am-utils.info, Node: Wildcard Names, Next: rwho servers, Prev: Architecture Sharing, Up: Examples
+
+11.4 Wildcard Names & Replicated Servers
+========================================
+
+By using the wildcard facility, Amd can "overlay" an existing directory
+with additional entries. The system files are usually mounted under
+`/usr'. If instead, Amd is mounted on `/usr', additional names can be
+overlayed to augment or replace names in the "master" `/usr'. A map to
+do this would have the form:
+
+ local type:=auto;fs:=local-map
+ share type:=auto;fs:=share-map
+ * -type:=nfs;rfs:=/export/exec/${arch};sublink:="${key}" \
+ rhost:=fserv1 rhost:=fserv2 rhost:=fserv3
+
+ Note that the assignment to `${sublink}' is surrounded by double
+quotes to prevent the incoming key from causing the map to be
+misinterpreted. This map has the effect of directing any access to
+`/usr/local' or `/usr/share' to another automount point.
+
+ In this example, it is assumed that the `/usr' files are replicated
+on three fileservers: `fserv1', `fserv2' and `fserv3'. For any
+references other than to `local' and `share' one of the servers is used
+and a symbolic link to ${autodir}/${rhost}/export/exec/${arch}/whatever
+is returned once an appropriate filesystem has been mounted.
+
+
+File: am-utils.info, Node: rwho servers, Next: /vol, Prev: Wildcard Names, Up: Examples
+
+11.5 `rwho' servers
+===================
+
+The `/usr/spool/rwho' directory is a good candidate for automounting.
+For efficiency reasons it is best to capture the rwho data on a small
+number of machines and then mount that information onto a large number
+of clients. The data written into the rwho files is byte order
+dependent so only servers with the correct byte ordering can be used by
+a client:
+
+ /defaults type:=nfs
+ usr/spool/rwho -byte==little;rfs:=/usr/spool/rwho \
+ rhost:=vaxA rhost:=vaxB \
+ || -rfs:=/usr/spool/rwho \
+ rhost:=sun4 rhost:=hp300
+
+
+File: am-utils.info, Node: /vol, Next: /defaults with selectors, Prev: rwho servers, Up: Examples
+
+11.6 `/vol'
+===========
+
+`/vol' is used as a catch-all for volumes which do not have other
+conventional names.
+
+ Below is part of the `/vol' map for the domain `doc.ic.ac.uk'. The
+`r+d' tree is used for new or experimental software that needs to be
+available everywhere without installing it on all the fileservers.
+Users wishing to try out the new software then simply include
+`/vol/r+d/{bin,ucb}' in their path.
+
+ The main tree resides on one host `gould.doc.ic.ac.uk', which has
+different `bin', `etc', `lib' and `ucb' sub-directories for each
+machine architecture. For example, `/vol/r+d/bin' for a Sun-4 would be
+stored in the sub-directory `bin/sun4' of the filesystem `/usr/r+d'.
+When it was accessed a symbolic link pointing to
+`/a/gould/usr/r+d/bin/sun4' would be returned.
+
+ /defaults type:=nfs;opts:=rw,grpid,nosuid,intr,soft
+ wp -opts:=rw,grpid,nosuid;rhost:=charm \
+ host==charm;type:=link;fs:=/usr/local/wp \
+ host!=charm;type:=nfs;rfs:=/vol/wp
+ ...
+ #
+ src -opts:=rw,grpid,nosuid;rhost:=charm \
+ host==charm;type:=link;fs:=/usr/src \
+ host!=charm;type:=nfs;rfs:=/vol/src
+ #
+ r+d type:=auto;fs:=${map};pref:=r+d/
+ # per architecture bin,etc,lib&ucb...
+ r+d/bin rhost:=gould.doc.ic.ac.uk;rfs:=/usr/r+d;sublink:=${/key}/${arch}
+ r+d/etc rhost:=gould.doc.ic.ac.uk;rfs:=/usr/r+d;sublink:=${/key}/${arch}
+ r+d/include rhost:=gould.doc.ic.ac.uk;rfs:=/usr/r+d;sublink:=${/key}
+ r+d/lib rhost:=gould.doc.ic.ac.uk;rfs:=/usr/r+d;sublink:=${/key}/${arch}
+ r+d/man rhost:=gould.doc.ic.ac.uk;rfs:=/usr/r+d;sublink:=${/key}
+ r+d/src rhost:=gould.doc.ic.ac.uk;rfs:=/usr/r+d;sublink:=${/key}
+ r+d/ucb rhost:=gould.doc.ic.ac.uk;rfs:=/usr/r+d;sublink:=${/key}/${arch}
+ # hades pictures
+ pictures -opts:=rw,grpid,nosuid;rhost:=thpfs \
+ host==thpfs;type:=link;fs:=/nbsd/pictures \
+ host!=thpfs;type:=nfs;rfs:=/nbsd;sublink:=pictures
+ # hades tools
+ hades -opts:=rw,grpid,nosuid;rhost:=thpfs \
+ host==thpfs;type:=link;fs:=/nbsd/hades \
+ host!=thpfs;type:=nfs;rfs:=/nbsd;sublink:=hades
+ # bsd tools for hp.
+ bsd -opts:=rw,grpid,nosuid;arch==hp9000;rhost:=thpfs \
+ host==thpfs;type:=link;fs:=/nbsd/bsd \
+ host!=thpfs;type:=nfs;rfs:=/nbsd;sublink:=bsd
+
+
+File: am-utils.info, Node: /defaults with selectors, Next: /tftpboot in a chroot-ed environment, Prev: /vol, Up: Examples
+
+11.7 `/defaults' with selectors
+===============================
+
+It is sometimes useful to have different defaults for a given map. To
+achieve this, the `/defaults' entry must be able to process normal
+selectors. This feature is turned on by setting `selectors_in_defaults
+= yes' in the `amd.conf' file. *Note selectors_in_defaults Parameter::.
+
+ In this example, I set different default NFS mount options for hosts
+which are running over a slower network link. By setting a smaller size
+for the NFS read and write buffer sizes, you can greatly improve remote
+file service performance.
+
+ /defaults \
+ wire==slip-net;opts:=rw,intr,rsize=1024,wsize=1024,timeo=20,retrans=10 \
+ wire!=slip-net;opts:=rw,intr
+
+
+File: am-utils.info, Node: /tftpboot in a chroot-ed environment, Prev: /defaults with selectors, Up: Examples
+
+11.8 `/tftpboot' in a chroot-ed environment
+===========================================
+
+In this complex example, we attempt to run an Amd process _inside_ a
+chroot-ed environment. `tftpd' (Trivial FTP) is used to trivially
+retrieve files used to boot X-Terminals, Network Printers, Network
+routers, diskless workstations, and other such devices. For security
+reasons, `tftpd' (and also `ftpd') processes are run using the
+chroot(2) system call. This provides an environment for these
+processes, where access to any files outside the directory where the
+chroot-ed process runs is denied.
+
+ For example, if you start `tftpd' on your system with
+
+ chroot /tftpboot /usr/sbin/tftpd
+
+then the `tftpd' process will not be able to access any files outside
+`/tftpboot'. This ensures that no one can retrieve files such as
+`/etc/passwd' and run password crackers on it.
+
+ Since the TFTP service works by broadcast, it is necessary to have at
+least one TFTP server running on each subnet. If you have lots of files
+that you need to make available for `tftp', and many subnets, it could
+take significant amounts of disk space on each host serving them.
+
+ A solution we implemented at Columbia University was to have every
+host run `tftpd', but have those servers retrieve the boot files from
+two replicated servers. Those replicated servers have special
+partitions dedicated to the many network boot files.
+
+ We start Amd as follows:
+
+ amd /tftpboot/.amd amd.tftpboot
+
+ That is, Amd is serving the directory `/tftpboot/.amd'. The `tftp'
+server runs inside `/tftpboot' and is chroot-ed in that directory too.
+The `amd.tftpboot' map looks like:
+
+ #
+ # Amd /tftpboot directory -> host map
+ #
+
+ /defaults opts:=nosuid,ro,intr,soft;fs:=/tftpboot/import;type:=nfs
+
+ tp host==lol;rfs:=/n/lol/import/tftpboot;type:=lofs \
+ host==ober;rfs:=/n/ober/misc/win/tftpboot;type:=lofs \
+ rhost:=ober;rfs:=/n/ober/misc/win/tftpboot \
+ rhost:=lol;rfs:=/n/lol/import/tftpboot
+
+ To help understand this example, I list a few of the file entries
+that are created inside `/tftpboot':
+
+ $ ls -la /tftpboot
+ dr-xr-xr-x 2 root 512 Aug 30 23:11 .amd
+ drwxrwsr-x 12 root 512 Aug 30 08:00 import
+ lrwxrwxrwx 1 root 33 Feb 27 1997 adminpr.cfg -> ./.amd/tp/hplj/adminpr.cfg
+ lrwxrwxrwx 1 root 22 Dec 5 1996 tekxp -> ./.amd/tp/xterms/tekxp
+ lrwxrwxrwx 1 root 1 Dec 5 1996 tftpboot -> .
+
+ Here is an explanation of each of the entries listed above:
+
+`.amd'
+ This is the Amd mount point. Note that you do not need to run a
+ separate Amd process for the TFTP service. The chroot(2) system
+ call only protects against file access, but the same process can
+ still serve files and directories inside and outside the chroot-ed
+ environment, because Amd itself was not run in chroot-ed mode.
+
+`import'
+ This is the mount point where Amd will mount the directories
+ containing the boot files. The map is designed so that remote
+ directories will be NFS mounted (even if they are already mounted
+ elsewhere), and local directories are loopback mounted (since they
+ are not accessible outside the chroot-ed `/tftpboot' directory).
+
+`adminpr.cfg'
+`tekxp'
+ Two manually created symbolic links to directories _inside_ the
+ Amd-managed directory. The crossing of the component `tp' will
+ cause Amd to automount one of the remote replicas. Once crossed,
+ access to files inside proceeds as usual. The `adminpr.cfg' is a
+ configuration file for an HP Laser-Jet 4si printer, and the `tekxp'
+ is a directory for Tektronix X-Terminal boot files.
+
+`tftpboot'
+ This innocent looking symlink is important. Usually, when devices
+ boot via the TFTP service, they perform the `get file' command to
+ retrieve FILE. However, some devices assume that `tftpd' does not
+ run in a chroot-ed environment, but rather "unprotected", and thus
+ use a full pathname for files to retrieve, as in `get
+ /tftpboot/file'. This symlink effectively strips out the leading
+ `/tftpboot/'.
+
+
+
+File: am-utils.info, Node: Internals, Next: Acknowledgments & Trademarks, Prev: Examples, Up: Top
+
+12 Internals
+************
+
+Note that there are more error and logging messages possible than are
+listed here. Most of them are self-explanatory. Refer to the program
+sources for more details on the rest.
+
+* Menu:
+
+* Log Messages::
+
+
+File: am-utils.info, Node: Log Messages, Prev: Internals, Up: Internals
+
+12.1 Log Messages
+=================
+
+In the following sections a brief explanation is given of some of the
+log messages made by Amd. Where the message is in `typewriter' font,
+it corresponds exactly to the message produced by Amd. Words in
+"italic" are replaced by an appropriate string. Variables, `${var}',
+indicate that the value of the appropriate variable is output.
+
+ Log messages are either sent directly to a file, or logged via the
+syslog(3) mechanism. *Note log_file Parameter::. In either case,
+entries in the file are of the form:
+ date-string hostname amd[pid] message
+
+* Menu:
+
+* Fatal errors::
+* Info messages::
+
+
+File: am-utils.info, Node: Fatal errors, Next: Info messages, Prev: Log Messages, Up: Log Messages
+
+12.1.1 Fatal errors
+-------------------
+
+Amd attempts to deal with unusual events. Whenever it is not possible
+to deal with such an error, Amd will log an appropriate message and, if
+it cannot possibly continue, will either exit or abort. These messages
+are selected by `-x fatal' on the command line. When syslog(3) is
+being used, they are logged with level `LOG_FATAL'. Even if Amd
+continues to operate it is likely to remain in a precarious state and
+should be restarted at the earliest opportunity.
+
+Attempting to inherit not-a-filesystem
+ The prototype mount point created during a filesystem restart did
+ not contain a reference to the restarted filesystem. This error
+ "should never happen".
+
+Can't bind to domain "NIS-domain"
+ A specific NIS domain was requested on the command line, but no
+ server for that domain is available on the local net.
+
+Can't determine IP address of this host (hostname)
+ When Amd starts it determines its own IP address. If this lookup
+ fails then Amd cannot continue. The hostname it looks up is that
+ obtained returned by gethostname(2) system call.
+
+Can't find root file handle for automount point
+ Amd creates its own file handles for the automount points. When it
+ mounts itself as a server, it must pass these file handles to the
+ local kernel. If the filehandle is not obtainable the mount point
+ is ignored. This error "should never happen".
+
+Must be root to mount filesystems (euid = euid)
+ To prevent embarrassment, Amd makes sure it has appropriate system
+ privileges. This amounts to having an euid of 0. The check is
+ made after argument processing complete to give non-root users a
+ chance to access the `-v' option.
+
+No work to do - quitting
+ No automount points were given on the command line and so there is
+ no work to do.
+
+Out of memory
+ While attempting to malloc some memory, the memory space available
+ to Amd was exhausted. This is an unrecoverable error.
+
+Out of memory in realloc
+ While attempting to realloc some memory, the memory space
+ available to Amd was exhausted. This is an unrecoverable error.
+
+cannot create rpc/udp service
+ Either the NFS or AMQ endpoint could not be created.
+
+gethostname: description
+ The gethostname(2) system call failed during startup.
+
+host name is not set
+ The gethostname(2) system call returned a zero length host name.
+ This can happen if Amd is started in single user mode just after
+ booting the system.
+
+ifs_match called!
+ An internal error occurred while restarting a pre-mounted
+ filesystem. This error "should never happen".
+
+mount_afs: description
+ An error occurred while Amd was mounting itself.
+
+run_rpc failed
+ Somehow the main NFS server loop failed. This error "should never
+ happen".
+
+unable to free rpc arguments in amqprog_1
+ The incoming arguments to the AMQ server could not be free'ed.
+
+unable to free rpc arguments in nfs_program_1
+ The incoming arguments to the NFS server could not be free'ed.
+
+unable to register (AMQ_PROGRAM, AMQ_VERSION, udp)
+ The AMQ server could not be registered with the local portmapper
+ or the internal RPC dispatcher.
+
+unable to register (NFS_PROGRAM, NFS_VERSION, 0)
+ The NFS server could not be registered with the internal RPC
+ dispatcher.
+
+
+ XXX: This section needs to be updated
+
+
+File: am-utils.info, Node: Info messages, Prev: Fatal errors, Up: Log Messages
+
+12.1.2 Info messages
+--------------------
+
+Amd generates information messages to record state changes. These
+messages are selected by `-x info' on the command line. When syslog(3)
+is being used, they are logged with level `LOG_INFO'.
+
+ The messages listed below can be generated and are in a format
+suitable for simple statistical analysis. "mount-info" is the string
+that is displayed by "Amq" in its mount information column and placed
+in the system mount table.
+
+"${path}" forcibly timed out
+ An automount point has been timed out by the Amq command.
+
+"${path}" has timed out
+ No access to the automount point has been made within the timeout
+ period.
+
+Filehandle denied for "${rhost}:${rfs}"
+ The mount daemon refused to return a file handle for the requested
+ filesystem.
+
+Filehandle error for "${rhost}:${rfs}": description
+ The mount daemon gave some other error for the requested
+ filesystem.
+
+Finishing with status exit-status
+ Amd is about to exit with the given exit status.
+
+Re-synchronizing cache for map ${map}
+ The named map has been modified and the internal cache is being
+ re-synchronized.
+
+file server ${rhost} is down - timeout of "${path}" ignored
+ An automount point has timed out, but the corresponding file
+ server is known to be down. This message is only produced once
+ for each mount point for which the server is down.
+
+file server ${rhost} type nfs is down
+ An NFS file server that was previously up is now down.
+
+file server ${rhost} type nfs is up
+ An NFS file server that was previously down is now up.
+
+file server ${rhost} type nfs starts down
+ A new NFS file server has been referenced and is known to be down.
+
+file server ${rhost} type nfs starts up
+ A new NFS file server has been referenced and is known to be up.
+
+mount of "${path}" on ${fs} timed out
+ Attempts to mount a filesystem for the given automount point have
+ failed to complete within 30 seconds.
+
+mount-info mounted fstype ${type} on ${fs}
+ A new file system has been mounted.
+
+mount-info restarted fstype ${type} on ${fs}
+ Amd is using a pre-mounted filesystem to satisfy a mount request.
+
+mount-info unmounted fstype ${type} from ${fs}
+ A file system has been unmounted.
+
+mount-info unmounted fstype ${type} from ${fs} link ${fs}/${sublink}
+ A file system of which only a sub-directory was in use has been
+ unmounted.
+
+restarting mount-info on ${fs}
+ A pre-mounted file system has been noted.
+
+
+ XXX: This section needs to be updated
+
+
+File: am-utils.info, Node: Acknowledgments & Trademarks, Next: Index, Prev: Internals, Up: Top
+
+Acknowledgments & Trademarks
+****************************
+
+Many thanks to the Am-Utils Users mailing list through the months
+developing am-utils. These members have contributed to the
+discussions, ideas, code and documentation, and subjected their systems
+to alpha quality code. Special thanks go to those authors
+(http://www.am-utils.org/docs/am-utils/AUTHORS.txt) who have submitted
+patches, and especially to the maintainers:
+
+ * Erez Zadok (http://www.cs.sunysb.edu/~ezk)
+
+ * Ion Badulescu <ionut AT badula.org>
+
+ * Rainer Orth <ro AT techfak.uni-bielefeld.de>
+
+ * Nick Williams <nick.williams AT morganstanley.com>
+
+ Thanks to the Formal Methods Group at Imperial College for suffering
+patiently while Amd was being developed on their machines.
+
+ Thanks to the many people who have helped with the development of
+Amd, especially Piete Brooks at the Cambridge University Computing Lab
+for many hours of testing, experimentation and discussion.
+
+ Thanks to the older Amd Workers <amd-workers AT
+majordomo.glue.umd.edu> mailing list (now defunct) members for many
+suggestions and bug reports to Amd.
+
+ * DEC, VAX and Ultrix are registered trademarks of Digital Equipment
+ Corporation.
+
+ * AIX and IBM are registered trademarks of International Business
+ Machines Corporation.
+
+ * Sun, NFS and SunOS are registered trademarks of Sun Microsystems,
+ Inc.
+
+ * UNIX is a registered trademark in the USA and other countries,
+ exclusively licensed through X/Open Company, Ltd.
+
+ * All other registered trademarks are owned by their respective
+ owners.
+
diff --git a/doc/am-utils.info-2 b/doc/am-utils.info-2
new file mode 100644
index 000000000000..f03af323a76b
--- /dev/null
+++ b/doc/am-utils.info-2
Binary files differ
diff --git a/doc/am-utils.ps b/doc/am-utils.ps
new file mode 100644
index 000000000000..17f46c8be7f7
--- /dev/null
+++ b/doc/am-utils.ps
@@ -0,0 +1,18222 @@
+%!PS-Adobe-2.0
+%%Creator: dvips(k) 5.993 Copyright 2013 Radical Eye Software
+%%Title: am-utils.dvi
+%%CreationDate: Thu Oct 30 10:58:23 2014
+%%Pages: 138
+%%PageOrder: Ascend
+%%BoundingBox: 0 0 612 792
+%%DocumentFonts: CMBX12 CMR10 CMSY10 CMTI10 CMR7 CMR9 CMTT9 CMTT10
+%%+ CMSL10 CMB10 CMTT12 CMSLTT10 CMBXTI10 CMBXSL10 CMMI9 CMSL9 CMMI12
+%%+ CMMI10
+%%DocumentPaperSizes: Letter
+%%EndComments
+%DVIPSWebPage: (www.radicaleye.com)
+%DVIPSCommandLine: dvips -t letter -Pcmz -o am-utils.ps am-utils.dvi
+%DVIPSParameters: dpi=600
+%DVIPSSource: TeX output 2014.10.30:1058
+%%BeginProcSet: tex.pro 0 0
+%!
+/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
+N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72
+mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0
+0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{
+landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize
+mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[
+matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round
+exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{
+statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0]
+N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin
+/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array
+/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2
+array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N
+df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A
+definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get
+}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub}
+B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr
+1 add N}if}B/CharBuilder{save 3 1 roll S A/base get 2 index get S
+/BitMaps get S get/Cd X pop/ctr 0 N Cdx 0 Cx Cy Ch sub Cx Cw add Cy
+setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx sub Cy .1 sub]{Ci}imagemask
+restore}B/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn
+/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put
+}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{
+bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A
+mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{
+SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{
+userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X
+1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4
+index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N
+/dir 0 def/dyy{/dir 0 def}B/dyt{/dir 1 def}B/dty{/dir 2 def}B/dtt{/dir 3
+def}B/p{dir 2 eq{-90 rotate show 90 rotate}{dir 3 eq{-90 rotate show 90
+rotate}{show}ifelse}ifelse}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0
+N/Ry 0 N/V{}B/RV/v{/Ry X/Rx X V}B statusdict begin/product where{pop
+false[(Display)(NeXT)(LaserWriter 16/600)]{A length product length le{A
+length product exch 0 exch getinterval eq{pop true exit}if}{pop}ifelse}
+forall}{false}ifelse end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{
+BDot}imagemask grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat
+{BDot}imagemask grestore}}ifelse B/QV{gsave newpath transform round exch
+round exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0
+rlineto fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B
+/M{S p delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}
+B/g{0 M}B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p
+-3 w}B/n{p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{
+0 S rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end
+
+%%EndProcSet
+%%BeginProcSet: texps.pro 0 0
+%!
+TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2
+index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll
+exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]FontType 0
+ne{/Metrics exch def dict begin Encoding{exch dup type/integertype ne{
+pop pop 1 sub dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get
+div def}ifelse}forall Metrics/Metrics currentdict end def}{{1 index type
+/nametype eq{exit}if exch pop}loop}ifelse[2 index currentdict end
+definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{dup
+sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1 roll
+mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def dup[
+exch{dup CharStrings exch known not{pop/.notdef/Encoding true def}if}
+forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def}def
+end
+
+%%EndProcSet
+%%BeginFont: CMMI10
+%!PS-AdobeFont-1.0: CMMI10 003.002
+%%Title: CMMI10
+%Version: 003.002
+%%CreationDate: Mon Jul 13 16:17:00 2009
+%%Creator: David M. Jones
+%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
+%Copyright: (<http://www.ams.org>), with Reserved Font Name CMMI10.
+% 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/CMMI10 known{/CMMI10 findfont dup/UniqueID known{dup
+/UniqueID get 5087385 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 /CMMI10 def
+/FontBBox {-32 -250 1048 750 }readonly def
+/PaintType 0 def
+/FontInfo 10 dict dup begin
+/version (003.002) readonly def
+/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMMI10.) readonly def
+/FullName (CMMI10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.04 def
+/isFixedPitch false def
+/UnderlinePosition -100 def
+/UnderlineThickness 50 def
+/ascent 750 def
+end readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 58 /period put
+readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846AB284BCF8B0411B772DE5CE3C05EF98F858322DCEA45E0874C5
+45D25FE192539D9CDA4BAA46D9C431465E6ABF4E4271F89EDED7F37BE4B31FB4
+7934F62D1F46E8671F6290D6FFF601D4937BF71C22D60FB800A15796421E3AA7
+72C500501D8B10C0093F6467C553250F7C27B2C3D893772614A846374A85BC4E
+BEC0B0A89C4C161C3956ECE25274B962C854E535F418279FE26D8F83E38C5C89
+974E9A224B3CBEF90A9277AF10E0C7CAC8DC11C41DC18B814A7682E5F0248674
+11453BC81C443407AF41AF8A831A85A700CFC65E2181BCBFBC7878DFBD546AC2
+1EF6CC527FEEA044B7C8E686367E920F575AD585387358FFF41BCB212922791C
+7B0BD3BED7C6D8F3D9D52D0F181CD4D164E75851D04F64309D810A0DEA1E257B
+0D7633CEFE93FEF9D2FB7901453A46F8ACA007358D904E0189AE7B7221545085
+EDD3D5A3CEACD6023861F13C8A345A68115425E94B8FDCCEC1255454EC3E7A37
+404F6C00A3BCCF851B929D4FE66B6D8FD1C0C80130541609759F18EF07BCD133
+78CBC4A0D8A796A2574260C6A952CA73D9EB5C28356F5C90D1A59DC788762BFF
+A1B6F0614958D09751C0DB2309406F6B4489125B31C5DD365B2F140CB5E42CEE
+88BE11C7176E6BBC90D24E40956279FBDC9D89A6C4A1F4D27EC57F496602FBC4
+C854143903A53EF1188D117C49F8B6F2498B4698C25F2C5E8D8BD833206F88FC
+BD5B495EB993A26B6055BD0BBA2B3DDFD462C39E022D4A1760C845EA448DED88
+98C44BAAB85CD0423E00154C4741240EB3A2290B67144A4C80C88BE3D59AD760
+E553DAC4E8BA00B06398B1D0DFE96FB89449D4AE18CE8B27AFE75D2B84EFDB44
+143FD887F8FB364D000651912E40B0BAEDDA5AD57A3BC0E411E1AD908C77DCE3
+981985F98E258A9BB3A1B845FC4A21BCC54559E51BC0E6C22F0C38540F8C9490
+88A0E23EA504FA79F8960CC9D58611C519D3ACDC63FB2FBCAE6674357D7F2285
+4BCC9F54D3DA421D744D3A341DA3B494BB526C0734E1A8FC71501745399F7683
+FD17EC3044419A88C3979FD2ABA5B0130907B145A8462AAF0A9B511D2C8A7C7F
+347FF6AC057E6512902BFD2918E2CD31DE615F5D643764E900B60287670AE18F
+FDE15545D8BC69591A8CBBB275AFFC9B14BD68DF0AAB32268FB84844D4DBC7BB
+C591C1AC5102C50A9C7BAAA848DA88B0519F0F5F0813BF055CF0E3C86F633A04
+B779D2E8E656DB1E09A66A85FE21CA8BA5523F472A229E83F2C4E91ABA46C733
+F3C7B5775B06C97782BC225C46385BEBDC61572458EFC5CF4190AB7A9C1C92DA
+29F84BAACF552089195966E3AD9E57CC914D20B6962BE80429A16D4DF1ECAA66
+36C4343FADF0B2B48F12E2EB8443C4AA29D00949255F3968617F98B8ABD4CC12
+048B838EE243A21AC808BD295195E4AE9027005F52258BFCA915C8D9AED9A2C0
+80814F79CF943FBE3594C530A22A92E11BE80FCEC1684C4F56712D5846B0749C
+9B54A979B315222F209DEE72583B03093EC38F7C5B9F9BCB21DBE8EDDAE9BE8B
+75ACE6B12A31083AC8348EC84D1D29D2297A266284B7E9734E207DAF59A25F4E
+4AA38509E993C5394FED76E6A2F25462685C4C86C6E8CFC9863338EC1428BDFC
+74616BB1BC8948B0ED4C87C15B4405F3A7796F9DB3798FFFE8BD0A94E834817B
+D5E9812E308D0CC920470A6F2CD088FCB80462BF7CB3F039A7DF3DAF5B2B5355
+E083A385CD2EAF0FC181E40E96DD7E9AB9EF5C7E6866A13B8A54718E950FE097
+EF0951A357114F18CE9933D28B3A77AA71E3CE884661F13284BCED5D5FD1A86D
+543E588FF473DC2CF9A4DC312500135F29C2D0174B32018C8DBD40EF9A232883
+710A1F2AB2CD11312300ACDF789A9B7B93D2035D81D1C84984D92D78A53A00C6
+EDA94B24BBAC1AD17774A4E07E6F74ABD90415965616AD540C8ECD8C3A44EE4F
+7F4F6BB6238C5062D63FA59B7BF08BE93FAEA70A2AB08FBEAAF7DBF56B95FD93
+03CA406543BA6C9527D0DF01F5108D31A51778A5EB1C93F27B72B46146A353A2
+01CACBC829603B9989A87CF64528682CCBA0562A8165B185C58A5C6BB72F5E89
+500ACCAAB8ECEFBB2640E99EAEEC4EA979AA793D013D61D8ACF8784FF8D9398F
+F6A252A709324FB39509F0B3A4E725E82F53543383C6765BE556CC897C758208
+AA3AD37B0406E4A79F8F0A6C1983FC73E71CD858C0DB66ED66D5D992978614EE
+1EA91EBE191E082EBA1FC040AF19A2202575C2EBEB8058833E3520FA03D2F915
+85C1ED337E457B9FEEB0C6EF2735EFDA6E0D05FA641BCF698AC6B97751E8306C
+4DF00A39B8581FF53DB8F8525FDB196D85950906CCB59B8EF171349AA3B567B1
+6A00819947A995FB383C3C1709C9A2C113B2E40BB832B7D4A0FBA0B16A2C455F
+55809CC425C403E9668DC66BE45B71A81C332FD4DB279D22A2959962304A8F18
+085893DAC61317D24A8F198FDAB95F3B86F0AFD35047B868A9A17037A2829A02
+BAB042F75F349E197A7EED41984C2859754CAFD0251439921C248B463B516951
+2E1322C80D73F9CBCAA63A585450275AC2492E4D3FB78E800F788254DB5E610D
+CF788DF5C70FF99892BCDF16133E34B24B77C8F097F546B87C603DDB8998B66E
+BACB68BA27462AF54AA405682EC96D701F0D474DECD5F95CA2102DF639EB169E
+D518162C2BAE45FF698B6DE15FC6E7DE48C336C40A670FD26952A6BAB09115E1
+991F0073419F2CC2A1C08BE91096936AA0C37E4ED3CCCEE235476074B8FF1125
+6BDE3701F85532D8BB64CCC927CC335281C95EA689706F0AC717DC2CF680C754
+E5EFD7FA4BB8880B2B727A964C876D4A223069D4E6001771F0E23EAD2A4BBC80
+E76675297B2EF05F52BF4E71B3EE2BE3048CF088C79540113C66AE98B2FD3CB1
+B0741A215FD070882C52765009D7D711DAA2508F19AE7DDA15229A856AC49BC3
+4DDF40814FF96500E4B9B02D412E94623C5FDCC76C0FB8E42DF56A904FE49D65
+1DA7C53901B2EA71AB658A464D3ABDE27D9DB8D9E0B48F64E61A2495AD5D8DAB
+B5E72424AD017DF37964AF911BD7FA21A5EB4775DC8E95EF0C0EB856B00D89D7
+8172A1DE8530767D317B8256103E53CFB877E10686A04F5A08F8DC58D843DEBA
+FD5F40597588663D103689F6EB3EB14D06E18C8078F2538B43E712DF491FC5C6
+AF639256C8C6134B64D560D8476DEA6329D995E46CC4BC78841C59E73648B47E
+BFA7DE0846422F738454AE77E822A083405289247BD7C478BE4974F742CD6051
+E99FBB1D1B3FBABFEE855174734EE45E87D0AADF32B1283B911162A9955847FD
+38944D70584FAA6B1A7191C5C134B73F98EB632B69E2F0C0F94156787C34C8A3
+7622A029D58F9626B74F8A8A1F3803E0BC20E0EADEB1E99B70F1BD9F980FB751
+2A842843DE42EB142A84D5D3138629AE9EAF6F3479C423E8829C8816FA6EFA27
+DCE5580E65AA9854B1C64163DC318420CD993C15BFD76A8BA1182860A6B03D6D
+22B8CF43CFE6C8AB27C64842E239CAE707D3086BADDE1D7C94E3BC96319470D6
+8D26915C575CFDD03271D6BB9DE86A0EB6EEA6E768B224A626C62A9AB48A6EDB
+44F70BB5AF991CDF9736D65933E81CC57A78F623F33EC9AF535F2F25FA4EEC90
+D50DB7E87F31E971A75A33A301CA6013EEC5A4E179D695B33DADF2C98364434A
+42926776000B610E17524162253F6FA638D6581C18F99EA0BD1D2E24D2424ADF
+C05010D08192485153DD03930C7BF45237593E484F9851E6D464FA10FECA5D9E
+0C8CCC97DE029030900CDBB491C5CF226DBF903CFE7735D939C3FDF3A20B70CE
+66579B28B99313FEE914E295388C7BC8E055A2E54EA3A8206D3C8F4F7C0BA5E6
+E519419FD8CE215F7B8E9BEC604A9E3FE272A0328A24E31997C8A91E0946BCF1
+6943A97CBED2AB9FC636B49828BBB8B89E0BBC2653796431224895ABA5DAC41E
+1854BD9764E86147FD7624F736F40DE3B7582EDDFD15C2BDE3F22B5A54D7DF10
+B87A1301CE85CFC061689A890A321412A13314AE96DCD3EDA75035FDD8F4AB9B
+897A2C68263A68457032C469987970648BA2D88B1C5375DFEAA35A917B8A952E
+EE670427942AEDB3CB599C5746180E392837D371E15D860620ABDB6AA7772C40
+A5E346661673ACA530BE3D8E3FFB895E5DA3DC23B1B43C080C77F7E47847F0F3
+F3AA5CA9E4BF75FC5EBD18D19F21A7DAA3B11CABC6E4070A15F7DBC8B05EB6AA
+A02EF1B078EB66D61D6AFE41DA9B36FE7EC9EF94D1EA26282A9871E2CACB3126
+2AD49C2D9B50A6E47D8F2CCAD50992D1B430979A45FD9E76182A19964BB2A1F6
+51779A2B258DC1DF4C2F3074621286831F3848AC152DDD2BA561E6586ADA88D3
+598A2CE2CD048F027CE0008B828BD915887D7785341E8305DF2346ADB76BE99F
+87B02173BDC334E9221C8DF54114A6B24C1C5340299512FA6C8C51AB4C8778CE
+178CEF531C6D1B5FF0A1BE8EFF767F959BD4C345C52699A29A17B2A230842BF6
+4B011217D6D24EDAC3F6D53482786F1CA33169B90ECD499407D37CE9B70DDF78
+7B7547B32952535BA9ACD1E244447AE3FCED3AF28717083CF9590A09780984D6
+AF0743C82AE4FB3E2BB2856A4153A3967A023FFC35382D6C22D84A924900B6A6
+3DDD400E6D2418DA6C27F2FA34C075C902B89EBAE658B3C9A18EEE449DA5A379
+337DE95CB7AB3F0970CF1A5D8FAD8090E495570FDFB2FBBA79244780D8035547
+C5A55BB21A2270F724BF5D442CDC5BB9F09BE0CAE59B1C2270F0BDACE698F2C5
+DE8F66BFB9634904B161F5BA2B1950048300D69BABD312D58D89C4ED527AF7BA
+7DA2478EDC2CDEE3473DD8A8ED9D891CD1FC21F23013228BB3281B71FCE959BD
+6F8E9059D682A7FCC5265A0620992D4FA8D78377EB34CE3ECA070EE3707239BC
+98907DB0120CE42ABA32CF97127E28382BDDFD685674279F588D4F951216C355
+821361790F64C2CC720DE97E8ECB57326C43EE47367628E05769E106868B54F4
+C33C9951908DF6FC4F5ED2C7787BD8FA591BBB3E9C6C1DA94CC5E38D9B20C886
+7D237572FF46DD896A4D6163408EA6CEFAC398EE041EAE29D577E75326CA17A6
+B072D47A7B13EC441CE6DAA042ECD02134CBFA6809A435050413817193DAEB16
+A5882C8AEA44BCF36E74E9ECCDFE7E19FF5A5DD7A94E5AB4F8702C3DA7F42325
+23C808670A0490F5B373DADE40814FF9650241D3D69C91FBC5ECE728F827D9BF
+C928602E05477903449E079164CA39859C4BCA60C579F490AA455F82B5050BB3
+969AFB478E0D4A257B3356EA3CD62051FCE6C6B1929CFF85BFDF166BEF658E10
+3A55E007F38EBBB248B3F0B8ED1925106B499B762E45113AE1AC9DE09644C84B
+9C08034B297314EE69BC32DB6E7D7FB9913CE5AC17E7335979E9DCCE2BAB3725
+1976155551F9706A576FE0E3ADCCF72C87683291528ECB749CB0ED291966E239
+B5E3630676BD409E08F85BC1AEC9A2D4135376284A96EA24431243BD6FE8B966
+95F11A4BB53F392E0AEFEA623064FF8A7002367B0A515635CB2D2DDFB9B4A8D7
+FE721754E81BBA548848A235B91AD4E4F7DB19CCE2F61D277FC00AB956EB93BE
+44AB4970CA56BF59506C94ED160FB1E25D3DF2988A532BDB787BFB8539D22986
+FDC378AC31444E63C4727FEE121A43751043849E6DCAC5B59D0FC703AAFBBFD4
+E8B7C268F21615AD02CE9DABEFA27B5FE6A6441B619539CAB1F810F1263447AA
+633F5DAF483752EF1A0421740E3A811D2D2898CBF53E7F686C9223FD7235F02D
+6F90D2D48CC20AB87778DE3C6FB335E0F0EC20B5DC5B65223FE117526DE2C72F
+FE839DF93CB2A7D66CD900CB325F891E311BEC932F703FB4FEFA29DB8B9C88DD
+375EC71B3D58C7BC59ADA91971A3BDA1ADEA629CE6CC92BD542CDDFAA7706FB2
+6CDDE2DF07E56D6741916AE8E8744339816F3E6C38062747AA9FDA2A2678A6B7
+EFEA870AA3A4D71B25EE3013EAB1DBA34401B867C7A41AE51E0421D41D3BB83C
+E120C8FEABA6E5DEC53A689C21426D4BBCB68CB37568761C360E6D4E3596FB7D
+F4DEC7918E58C0293D12D6DDA7E9DCDAAD7C939F55CD1BC4A228B31E9A904156
+DA6B40B08E6ACE674618B768DD681C772A3E55FE096CF949CF3B0460ABDCD891
+D17B37B355B29AB5137899C036F31DA026244FA25FB798FBE5105BDA29F46538
+D3D3AC1001A7BCECE64DE94FFE6C354166A0F97256137BDFA07F6E22A3D1D2F4
+9588DBAE95E895BC5E64DDCBBAA8D0A22C229B42CB717FC711E7E9DF793DF80B
+9F14754585A3C7E17F37B32924B9F9870DA8635E3E18BD1DCD81EDF01834D9C6
+B33F23C956C2FCBFA47D84422F583459D827D1E120B97694D12F1F54D02379C0
+D288F7104F3FFCF4F76E3494F4ACBD1BE3A15543CC680924C78A473F8E311ADF
+8FE00A04C6C393DE61AD3EDA5BC031E2353076A2489391B52632387CA28A7B93
+FBB065A6EF3658AE80B1ADA47E9B2539E73A71FA75645F85ED8ECC257FB4CF26
+B6C912DE9D0F9899E70BECCB934AD32CF49A093371A9F73DE6255EBC39DE1E7F
+00D0CBDABD4D0383977E694890E71FBE5C376BE5F3A80C28987417504F515C50
+909F3D31178BB9B1D085BE514F71B910A9085BD6122DDC72A150BFE266920E49
+5661BCB4BAB51D6DEFE32B616963DBD989FCDD1637B294CE4E288655FBEFA1BF
+7F25BBF8CF17C2D5FD161A7C2CC9CC7490D9BF15A1D35B3BFA43ADE256E88BDA
+BD490D92907C57BAC408A575EC84D6AEE070148C7C9A91C03B09FDBD792E8FF0
+C0B886AAD2EDD86541E5E579359D40E3AC312ACD3D8FD49F71BD533DDF8859B1
+BAF17F1884E331DD07CEEF93B71D492AEBAADF7A263450A7A72210CE630A0D37
+BF024BDC09ACC882816B8C22C62AE38A3A8D0F6EBC2B1B2C0B8161A8B076DD5D
+4B779C0788546BB4CF57332230D237856B00D79C28A7C01D11F44B7304F69075
+94B97A745DA43D1BE561372CE611C345A843834E46AD9DDB16CABCD3FA33D6F1
+F6B5C0497F5EE5400B305CDC16A7EC286AA4D45D0EEBB9DA06AC9C5294D68EC9
+E4DC3CA2B92CE8FC0526184A86EDC7AB34D67E60AC12D9CA8FD300235EC968BA
+92C6FBDA47572BC5600F25249F60AD287CBDAE980E747FCBE7EE5CD323E733F0
+63553B494D3DDEB9CC1480B5C3BB79A28E419AA65B18CB297AB383419E890E2A
+CE6F98C9900CCB4675280A10CF060B8D220DDA1BE55DFA65715EABCC1AFAA271
+B1F8732341613E17B231231A0D24D4D7FC198AE04D89A99C4536217769C6FBD9
+5EE24A6302F97438F7C0E311C878F674B4477A5ADA3952CDE4055AC408B8174E
+86F8FB797646DFFFE0ECA25D1BAB9A9F71F3926D3D85AA63E7A8C931D71E79E0
+AF1EAC26FADE468F4FF7F3861D14C10E3BE1F9EAFD6D3A544E8108D5DAB5B180
+3950C74818BC8AF4758A108F462EF1826647A49667F5E482038C54716856D9BC
+35F29922846D2148F92F943E951D7438C73D6A60459A8003174036C64E1629CD
+155D47FD04B03C023AD67CD5A70C98AB556EEAB8C48169706E5B352F6505D580
+AC945171BFE62E81F8F500438AC3B64D857BA5BC54C2C4BBB237F8FA51296255
+E66A92A61FE13FDE781D393557EB72CEBAD86511035F775FAC39A0479CCD400F
+226709118F887F47CC2ECC8F79816D4A945B2845F50AFD62D8C9A9BBF4739496
+9E644BC9F7B04803B7EE75A09EAE94365F6F374B4FCEB0B506C76297564B9B6B
+8B812BC3A33929AA94692572B010E6210AEAA312BDFC88BF302244AB9D587A9B
+919823FD01DE12438D960944D1977800FEB49E638C32E5B188B1CA033E0C37EE
+A142F746367888AA119535F0CCAF7EAA461B790EB089D2D6962E28A398439BB7
+9C9943654D7A2D765B46BC0DD1F915327F369162E1BA1BA83110B93F442905E0
+523BFF5E279508A98568CD5CFD18FABBE9D17265A9081E7BF64155A2CE3C0DF7
+88D00671AD65654709589BAD7EA65BBA811387ABA5CA0BC3F66D3D48597A0D1D
+2C268375DF47CCF62166262AE4840AB03BF49BE67A05EF66328EC729F03CA5FF
+AD3937FC053E223303565DC771ACF32E63DFB96D5030E787961D72D02C195C66
+B48E9AF0309DC169CFE8D16E2818DA94693A18F027DEA0D916672480464F7E22
+CA6E431FE38D3FC019BDD229E064B72C545C61C6EA55984565CCA88ACB01F744
+3B4593CC8944C70F30925FB48A16342CC26D444F54CA15E5A624C4A2DAA2AEF8
+404145BBA339F2A2D6FC2F3ECE54387761CA1213C8D56FF96E37C6147CA44B84
+262EA87E7CC10D931E6B5B80D7F09813498497AA84ACB4AC69BC6C8481ED2953
+084F560D7B1CF90555E69BD2AF7C5D944E8E3506165014652462BE1BC81CA341
+E1B0725159D36DA0FFF3577D1DEBC5D91AE683FB0384
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+{restore}if
+%%EndFont
+%%BeginFont: CMMI12
+%!PS-AdobeFont-1.0: CMMI12 003.002
+%%Title: CMMI12
+%Version: 003.002
+%%CreationDate: Mon Jul 13 16:17:00 2009
+%%Creator: David M. Jones
+%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
+%Copyright: (<http://www.ams.org>), with Reserved Font Name CMMI12.
+% 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/CMMI12 known{/CMMI12 findfont dup/UniqueID known{dup
+/UniqueID get 5087386 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 /CMMI12 def
+/FontBBox {-31 -250 1026 750 }readonly def
+/PaintType 0 def
+/FontInfo 10 dict dup begin
+/version (003.002) readonly def
+/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMMI12.) readonly def
+/FullName (CMMI12) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.04 def
+/isFixedPitch false def
+/UnderlinePosition -100 def
+/UnderlineThickness 50 def
+/ascent 750 def
+end readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 58 /period put
+readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846AB284BCF8B0411B772DE5CE3C05EF98F858322DCEA45E0874C5
+45D25FE192539D9CDA4BAA46D9C431465E6ABF4E4271F89EDED7F37BE4B31FB4
+7934F62D1F46E8671F6290D6FFF601D4937BF71C22D60FB800A15796421E3AA7
+72C500501D8B10C0093F6467C553250F7C27B2C3D893772614A846374A85BC4E
+BEC0B0A89C4C161C3956ECE25274B962C854E535F418279FE26D8F83E38C5C89
+974E9A224B3CBEF90A9277AF10E0C7CAC8DC11C41DC18B814A7682E5F0248674
+11453BC81C443407AF41AF8A831A85A700CFC65E2181BCBFBFE3573BF464E2BE
+882A715BE109B49A15C32F62CF5C10257E5EA12C24F72137EB63297C28625AC3
+2274038691582D6D75FE8F895A0813982793297E49CC9B54053BA2ABD429156A
+7FFCD7B19DAA44E2107720921B74185AE507AC33141819511A6AC20BC20FB541
+0B5AAEC5743673E9E39C1976D5E6EB4E4D8E2B31BEA302E5AF1B2FBCEC6D9E69
+987970648B9276232093695D55A806D87648B1749CB537E78BB08AA83A5001F7
+609CD1D17FFA1043EB3807AF0B596AF38C91A9675E2A53196FEF45849C95F7DC
+182A5EC0EC4435A8A4B6E1CDBF9A5AF457564EA72BF85228EB6FD244F2511F5A
+CA9B71A65D53CC06EF5F7EC3A85106139A4D312378BC22183C09A229577B793A
+1B7422611C03E84BF809F46C62CE52D3AE29CE01C32B202ACDAA5B72733EB0AE
+C31D7EF7BA88D2D14F85313F7A8B9B7A5B124B03AB923744D336C969E5CE304D
+3AD977A46664479EDEFB69F113024E761C05FA48A54072DF9E12C2F352ACB3E6
+D04F6EEFFDE209E7FA3DA22E5B1D1409461F4286B7F4F8251B44E5CB7805762E
+E129FF4A06A7458F3191926B1CAF70E32C6571AD2DC07C34FF62840896F4D200
+761B1A7FA356526D1E3AB4C542AF13623BAEB9F61B1BEEF79A9205B1FEFDAE24
+8799D516A9ACC30BC0139C63C9A0523E9D5439213B67D490C96F902958779B8F
+68BD8E9FDDCE8A3A2E35877DB6C94B7612382ED8F218EB1157D2ADD090A2448D
+10B99FBC9211C5629ED1C61C74FE93041E5AA03EA4AC3FFDA00C2B6E719CFAA4
+262FE17F66804A6B54D3669836EE4367D2A2991580C5564463C973CA0DA38AC6
+922716E13B4A807B50304B8826CEFEAA47C305FC07EB2AF25FA7945797237B16
+56CDE17AB0834F5C97E0CC5741B061C6FF3A8DD1A79B9A173B66A6A750538E26
+32FBC92E75BA15CFFE22A7302F47908547007402569158F62C29BA2956534FEA
+7DACF1E507AC309DAE8C325F2A6023D2FBD81EF42146BFCE6A16A6310A650460
+7B07BB7647C8760FADDF0DBBCD3DA6CC4645D1732DB3A22D8B76E1D2D48E4D4A
+46F4BEB80CE65F3517283A1AE08391FD1C10ED452133706BC6725AABC80107FD
+754A8BA47B0281D479F052CE26A723EFFACB79B213041A536542AB334769A2BF
+88505D82C498ABDD5A73EB539530F47CAC52825D16A969C8BB56D4A7F2830B8F
+CB63B92B576E7BD922A4B25E634751F8A3B7C4EBAFCB373EDC8B8281B1D1371A
+7844E9AD990CFF09F0D7ED73A5CF873D2D5C9E8A9923CFA31E1A4B4CCCC40760
+8B3AC8FC3C88BC08BD7407725281BB879A1A822D94997826418F1B89D303F2C0
+BE7A0102E6F529630CBF1BC5BF3E4578C164A3DDE45E62A957EF3FB7F0FBBA6B
+CA1E79A1ED195B6A11CFB345B663C5E72FA55D80476F604F6C4257B51686AE25
+8F7D159FE605DDA0AC74BAA5034F29FFFD403070013C6E2D8EF6A0990D91173B
+D5A3AEB98B64E412991505C3CB7C2CDE13C091FEB3DFBCAF30C4C19511102300
+135BD5D444BB55692013F52056908DFAB2ABFACE81A58423ACEC59344CEF7D4A
+C5A3EFFFFF70759BC3E593D878281225060B97D1BEE6B26EED90571FEAFA1812
+1115C0EEC892F5DE6FDD68321A0B3F10A2D771B79BD85476AF6018472A499A86
+07D64CFF4550866AFE590C471C80EB12CB3A989A60BC7BED39097C12D9286E39
+14C7952C4C64820B4DE44A1827B7B0B535244E93FDB80036D6332F90F95B472D
+7031E7E3819E881BD0313CFA112EB3AAE943C99C47635CCA7E34DC0306C04E5D
+2E9F60FF037EB11602BE74E8E6B711392E866E3E55D988F7C856417A2B9C186D
+639819B4786D039B77F8578EF63C088FF28BD08D8353031445C8498A8F445BC3
+D08923D32AC04BF3CAFEFCCC1E77EA894F4E846F47EF62D6841B8D8576FEAE8F
+90044626869D04D61D64D56E8C51AF8C18D6CC3FEF3B6C4F7D56FE3260354948
+10104F69B117FB8269292579A7D52FED688C663B643D8D99F13956612271073E
+1A337AED059B7A93819A28CDF01569CBEB51069D22ADAE25C47355560F402B2E
+8C9900DA82B79C64497C8494F42FABE5AC41791C2010D98FB7E593C744F250DC
+D837DB0EAA4F75D0016970F3AE8359878A08CF9A697A06C5EA945819151265B9
+1A12122B98F79185DF852257BB4798E7DC03712EA6ED34F6E6AE1476788DBC33
+9229FADB8D581BE1A63F596698DBD6DB98A092F67197A4FD4A50B648F2691875
+EE2495D6BB310078F516785A0CEC7EB6E8305FDBAEB1D15690409FE32DD9CFAE
+DBD3866FB63EBCAAB73E3E4BE5D7F3AA44793938AAF3F8341683F0790F1D46A3
+60CE083F9BEDDA22E0639A92393960F86602216FA51E2754BC2F4CD0BDECE3D8
+FFAB7E0E49613DD4956C9A10AEA798BDA1F756C755BEC12147ADECAB0FB73B7D
+203A11D84DD2AB5AA98FD38C1C2573570FD49A4924A94A106D2A7D850E793608
+FB135853E8C4204441CDBE697FD0CB330B1C3596F32D2BCBF263237EAB362D09
+DA6F531B40384DC91F30674760CA7B64BA1968F6A7FC9EBEF431A1AFC5E76D7F
+2D44DCB7F61C7F6B16196B3E8B47343F572DBA8B8B21B43E35BB6B2DD5C7982D
+244FD4304D254D6CCB5E8CF70E77F50812F41A988EEB3B26BF0F6F69BBA18077
+31134B5A5823D10FEF6201D045AEE7A24E0F25376E9FC66340C56C05F6CD810B
+724D85CC4BB8D789834A447CBBA159565D08BA5793D8599035BB5063271518E8
+F6C50E7DCE71B1D186270DDC860C6DC0CD506010EB5B1FDF6BE47A9A18CC15D7
+D657E58BED9EECAD5CE5D49F63139A39BC52C6584BB2C3264D51BD584B40F8EA
+AFCD8B83F548594386EB2B05CE803105E84931DC6E7A1398073D48E130E0D907
+CD0F1ECC3254EDF5D4DDBF44415DC9BA66C673820CDB0FDF033D59BE2B5EFCEF
+01FF9D33EDC88F8D522E07F1689D024DBCD09A16A63519E1764C8630FF36058D
+CFC07027E0ECDA01E0E85B166C613B22F587B4D355EB018BA93E92A36007B4DA
+287FF5A91F7D8A0EDF5554ACCF45AC8066E88865C5692E63EB99CAC81367B605
+8E6C19EB98EBFE0D2D161B447B9A70CDD1122C7B78A413369016E6D8481E2AE9
+9AA97B5DD0ACC9B0820F7742CEB2F46F89F3E2092621969A88DC0156B4F941A1
+6BF1546D4B136657C47B082A8A35FE96016BAF3D9679B8C32EDDD6AE6DF3BFB5
+7854074FA019707FC22BFA82299E72ADF9A980AE29A8E2434277E58B01F6B03C
+192E1E25DADD49F6E3F69799AE62B56E00B60A031BF8721DB8B2CB6D4A4C15CA
+AB1FDE010AB7DC0DDED977389B101B8E53A949222FAA126656E02817DD32B0D4
+A49516CEC2B97EA7C78FD66229B044EB92F502384BCC6CCDFFF995EABE3BB7A9
+50D5D1AED861E7D3BA8D333026C673C5762712E763E59261426044583D789C67
+A606B96F97663F92BF104CE02FBFDFC521EC0D6670B7D4F85A229F51426DE912
+3B729C4A535FB7C88D0A5E78074751B58885DD6BDD2DD9E9C83F105E8CF63DDF
+CA7DB39D0319CA7CC2E73F42747F007574DE25AE1538B4D493D22D0D5F0F80C6
+5F6FA3937C8391DE2F0116F81DB2DB0EF751EC838A7F85F163A6F48804E84B96
+8D715EF25B7E2A5CAECC558D80F421052A1D698F3B8452AC27E30A4E6226E3CE
+084C8A83ADA0818A110923CF7AC7AD4CB92AE4ABBE0A9EC1FF935FD02774C1F7
+92A278E513012AD17722A23C55EF82E18F8847B5CCE47F4FE3EC508BA563F7B2
+AE56C94285A18DED4D432FB0CEFC05A20BC17DDF9FF919C724810A8ED7358A27
+97EC93C1A13C443A91947FE1F6F528EA7B628917FA7E554A1D7B31ED46C5ABCF
+92BA57961C8876DB4041305EBB029B03D8351D5E2819FF87E97ED214D8F1CEF5
+7F7668DDE223721C0B810F4A4AC81CA4EAC86EAE546E1B15D91E626FB9A31824
+5BFF17C4E79FD56ADBF6DBF01BAF6453A81EBDCB38A5FC0FD0FF0646B3B0D199
+13E2E59A1B5CAB6DE5329BE389BA0E2A2AB55CA40B711ED746C24F1E48892E76
+6DACF7DA163CDC90CF076763008E7A899870CDED5A80758E6177BE6B93B07EB1
+5800A3BF7B9AAC3FA825CE594EF5B7546B181375FA8F37608DF17856D2F8EBD5
+6030A9E6F6BEAF224AD2AEF76D03B023E2FCB922CB8E3C6816AABB61FE6E4F83
+F21B4935102C860ECA03DBEFCA461F0E5B93E5A8D18440BCF7D1D6252A24CB6E
+A64FDAC8B67C4888519AA368D9C4A8C08C7155DF5BACD75C5196C571C3C456C4
+7CE8D90215FA6EE8CDD72C48740F7F5930EC3632DB63A9C8D2DA125088C0F05A
+9FC83D16B7F53163F4EB6FF372C6C3115F1E68EB35967D11126EDEDF0BF80817
+E68A698183B3EB0A207DB43786E1B9D289359D75AD5E465328CAA90E712C2962
+AE2A466173F2FF30EB535A6054BB0B875DC8552C16B49DF17CF84D98D35497BD
+F55E273FCBB0C735899529A69990E09149FBD2DDE64B7FA8D50AE83925DF03C8
+0B63EA158FBABB12A028803DA4B9DD6C48C0FEC469C4E730729F4BB420D5B003
+1918B4AE9CF35CFD31E8E62A44C0484E3D00143BF1D330235E821E5CFEAB4D31
+7CB4604DB1F310457FCF9075A3527279644D908DE847CCD00B6F50DBDEF91D3E
+38238CAF550FDCABA2C3A46237218DCC5A09AFAF69997E1EBDA7EFE6FC99ECC8
+5D4AFD5EE35FE2346BE79B499EC8EC436868154A947D13BC02C780EBA4B9E64F
+3026F1BF5DC1F8D64FEA1281EA40B4BC355638A3A59BD9055BCBB232FA45EA0B
+B405131B64F105814019BC55466EE78E9E9ABB62DB30EA452F7EFD7196C76A85
+15B2CFCD89922CADC0F392B0C54A231F3999AEFB53C24EB0C63B0C8A1A1ABB6B
+AAB2F93E5ECC7AB90EADA320E918106BAAFC1F8C425C617639984629018BA674
+6FF4F338AC43E23BC3740542911C058D43A49A11CB3A0CC8E3088BB5BA6048D6
+CC2AD250DE956BFBE83BB24C945C20D9C22E7105983F284EF478F9B68BFB0322
+EEB7D62802CBAAEFF1C2332159DCC7243EA40CE15C734EA905E04C476B178B82
+A08ABCB0B86A7330C75E62EE7844C9E22DDB013ADDF20AFE08122EE1B930A81D
+806A0F8CC584CB7FF5F56F9B35E5FF78FD93E7E4A40C64537464EAA275FE88F4
+461FC6A467C8A69B9A9FBC10D44AC1B753D313A8E7D97F5FAEB60F82855658D1
+4DCEE043C8FCDFD8A29DD091F3BA55874A458B2B8989F35055C72FC411382361
+9AADC717E602B48D7C9521D3971A6F7EB19D539445DDE9EFBC5B58FA9E5E426C
+172C45CDA24985FC4632287FC3B15849DEB56F5A061993AB10A6BC59868534E6
+69888175053108B77E4978D971B4EC57224C0F93EEA4C15AE92254140A94704E
+ED5666FC06C5341F643F779CC88A9E81891565C63B6F7F6286E664F4E0A48690
+356DC96F1B98026C563700772485B83BFA06435D4E0793EF822F423C93FBACA0
+E5D889D2B76771C6F0EE997A5DB43C2F6921132890406E3C33F6F159B14C5D78
+7C151BDFFDD02B697315F191B5490073EB418A4FF2A398C68D44F0CD1B87CF9C
+B52F12728B72F94D752D23151196A256908135C87991E508B8906CE2539DCA8A
+31F86809C8C6C18A09F6129BD7CDC6B37E76B648788056851F22BD3E3B5772FF
+EC01D822B57FFDB3BAE624F05531292641FD6A7E3666152D18F6C653048DD7D7
+98A942C840C4A0FA662F260B21C64214152BB86F03662A330109C5AC0A5EBA30
+C6201F558858130703DF76AF4FBBEE069BDE45C0D9467077D85FFED4F9BA9C61
+AED87D67CDCA453A6528AC5BA153E1039D9CCC556CEA5CBB542265FF54A1B208
+E0E13740E7E7C26AA00AEE909F8F3ADC2726081A744D8EF6BB711BF5F611A900
+76F91C26A338DA13A7160A9F42410CCEB3190000D963D036FDA05A29F598EF40
+8FAE6F8E7E6F50C99C3304A573501C13A00023085F057DF331E3354CBE65D573
+CAE73BF15B3B96B502E0AAF2B4A86237E98A997AAEFFF4227D5A26E8972C48E7
+761F430733E6EF8AB2D903C17FAFBFA21C25F8A0AC157D397BF3CC1AE7598F0A
+2BE4FB46B29443CE57F41FD5F91122E9D86F903E94D5B55E2BB95949C156D138
+89883BEFD634311F9280C7F028DCA6408D3A682DF5B55B9F7ABF08F019190F60
+D39E4F0E80F0594235B09A5320109638B938633A2C196E4ED2B43DCD8643C3CF
+C6123B076B7F73352F906D96FDE0FBF50CCCA432712C574D5857838BAC30B485
+D25024EB254A7EFE57D1DF0892C275CDB3DF77602F0FED0FAEBC644BCACA04B8
+B424DB125E487794CAB36E01B5E1A26F5E1E97A739AA36D77A12F5B45338EB39
+AF36CEBDED55DCBFCF497FD475FC6BAB5530AD6153C6BD982564EE8712185F1F
+D5EA7ADF4104661168A01994C1FD773A50C8AD6A3E4D332E4D59521BB8BBC6C3
+866EB4AC3EA4532477E6CBF6BBF0860031C3B916AA25E3492670EA67F55CF4FD
+207C684A0DDB6F4AD21B2909CBA71BCE2E762012B0927BA72367A6AE0AF87F73
+756C9BC85E4EDE35317E2CCCD138C02C7A8013AFDC1A48C3A4BB8EF257BDEEA7
+60E012F54D12D31D18DC59D5E526F12567B8688B4B67E16B56713870300016BD
+A3B9DA87FDC865246AF8E94316799110D86B1DDADB8A673402D4226C519C058A
+1D1E5A5778584FC28AF12819B1924060BC4F54B1054EA6AB0149E04B8C4302D4
+A56D8A347EB5D3D2A0E12CF7E35059BDB53D9FF6BD25F6D9619BC4669CFC1048
+C6C9978B8751B840F27D82A69075832BE59F55C1737CBB1220FB8FF691FDBDF3
+03BD7D225A9372AC221C38245E48320E1CCF898D9EEDD678E5B8C65B7F588321
+1A3953EEB9B39EA9A8CB72DB08C3E9234DFFF5FDF9DF804C021D57E97DA7622B
+97F4CB6E0EB640E0DC9EA15C5193F92A3A7565F4C7A4C9CC327F7CD2C44900AE
+D9E76FFE62FC37FA376E77131B566AE67C3E09DA80F198BBB995EE8FA47EEDB8
+4B467C6C7DB8AEA745CF8C56B8BE56534E9C56FCB2B7006426DFE93D728FA4CF
+94F131C549814E54ECE7C914C5FE8E4961D3437CE7475D03534B62650F551D97
+201C794AA877445DBEB11C85ADF6119B05360700F8CEDE4766E3A1D7A35CDDC7
+9ABF7C619E3868A39D1852DBE1EEAF5D7898C78323873AC005542B68C43C5000
+CC58F675EB595F87C879694751494676465891E8A897158B481F11A171CCBBD7
+29603F00210CFD7FF31FE3D273933ECC34AFBCC4108D9B76D9ECE63EA06CF939
+4799092A54A749DACB82C1424E9879672C8BC084C360014C9C1B6D5D65C68AED
+66CE329C3AD712C0A36BE7EF03FDF339CAA2E0336D387A693B1DFAB5D5164E31
+14755A158168962C9B399F8F1DF3FF5060D7464D5071058C30C572A2BC7DEE53
+84BD7614A4BEC4C84E18CF7EC81C811724463BD46CECA5FB57B0F55EAE20CC74
+6AD815D1897B037C197D2456797B992C20C70B663BF99FE28C513B4E221C8E12
+49779F8C0AE8517048ADDF7CDF0D698E3EFE60071C4997B7F5EF12B6CB65390C
+224F13FBB99FFC034C0710F05019899689B6D3350BBA65C7CE7C2AB03D81B9A5
+5F3D65E4D462DAB189006669F7390A78A1B8908A4C913B15DB8827DFF15BB9A4
+A6037DDB643103B937257A7DAB025F09D53FBBC2BCB6B0BCD8D56B2B2784E498
+1F6CF8470DCC892AD0CFE11578718948BABF9C1427084643B66BB9181094E29D
+5FBE37708E1D8A6B7518A96876844CB66954227A7A6AF28DD075A462526DD5D6
+40EECC56FA366106E55C7068997B54B7F0D03AC1AD45D28C67C7ECA99DBEDB1C
+E18A79C353113E2E05B837E703278B202112B1C69E42A69D64B62F0E7D8F7E5B
+C1F93F0F99EC20EF312046F4B0CD7DAB31E422070B629A7FA96583CF3F1519CD
+CF08806F40ACD7BB5C960F21E9DA7FB3C72CBA0801ADE83DF738A4EC94F2977D
+2B95A166BA4AE28CAD1E37FBBF49D342CDB4DF615E2C5F3076313AC517C350DE
+710F5D52DE31DF69864D29DABF14234DF13904BA4333B0D714EEA55CDD79DE45
+FF5D64259C877191547076B1C7684CD252C0337BD9DF66CDC5DBAA4F3102F2E8
+FE48385C55727B80D11F3BE0B7568AA9356FB2B180A6B1392D620DED02F0B736
+5F4399FB9D32DFBC8ED942AD311C82250DA8BFE98D65
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+{restore}if
+%%EndFont
+%%BeginFont: CMSL9
+%!PS-AdobeFont-1.0: CMSL9 003.002
+%%Title: CMSL9
+%Version: 003.002
+%%CreationDate: Mon Jul 13 16:17:00 2009
+%%Creator: David M. Jones
+%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
+%Copyright: (<http://www.ams.org>), with Reserved Font Name CMSL9.
+% 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/CMSL9 known{/CMSL9 findfont dup/UniqueID known{dup
+/UniqueID get 5000797 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 /CMSL9 def
+/FontBBox {-61 -250 1150 750 }readonly def
+/PaintType 0 def
+/FontInfo 9 dict dup begin
+/version (003.002) readonly def
+/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMSL9.) readonly def
+/FullName (CMSL9) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -9.46 def
+/isFixedPitch false def
+/UnderlinePosition -100 def
+/UnderlineThickness 50 def
+end readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 110 /n put
+readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7
+5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99
+8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716
+EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C
+02CE8D8B07183838330C0284BD419CBDAE42B141D3D4BE492473F240CEED931D
+46E9F999C5CB3235E2C6DAAA2C0169E1991BEAEA0D704BF49CEA3E98E8C2361A
+4B60D020D325E4C2450F3BCF59223103D20DB6943DE1BA6FC706FFBAD8F64C4B
+4198909DF28702E889F2DFA1FB9AA175E65D5B8FD3EC28297FC91D644E95B337
+039276A8EF44BBF9AE8C27910AC03F70F9022CCBACD01DF6D2A5247F8050414D
+20008C564BD55A841F12DDF816DBFC3D5CA2AAC9A64235CACF7F17A81AB28785
+F6C95B135A2B9A4B15795B114AFC7FBDEA4B5A49E61ABF7CF1CE129C2F4882A5
+4DECB2F07A9C7EEB2D3B896F5C5C77290881B0C903969A059671DBE2BBC2B72C
+6ED6DF41413AD37609C430EA2BCB630D41BCA9439CBBAC12FECD18D1A7C7A123
+D7613A87CD73488E2EE66DBD78440949A0919E0EED78EBA35409DFF589EA71E4
+CB9C7669FBD96E7DEA501605AA8868B98243F09DF73C4DD85720F14DB4FF402C
+B689D1131CAA96A50D26ED450D7D1E9D2D05885B63872B0906AB8429EE94B494
+DBD181BF2A622D5193FE630D1427270C6B456D2EF8A9C4045A90B4584BC95F58
+0FA668DE006C18595C16BD20CE73928B39A8CFCB9C58B38EB2E72BD69E2326E8
+951C60E3E55537FBB804363D3D608A3D7FD71A5CA0B37F2E7FD34C2524BD3A92
+8686BBEDBC07D7AE6D4ECC940EDB5ED234445D98A6BF7F92B23AB7B501D79148
+BDB9DE83AC86873C061F07A012168DC92B1C7C52AE2041696895D7200DB28B90
+2A6396CF1CD6B827E309CF79F68DCC92A12F4C0762671E025D60AE1F591C57C0
+580F521B41B8187F057C40C03EF9AB27DC90A3CA0434E7A4ECED9F83A32A37E9
+ECE1016828B54008F73DB0C48B407095D800DDFEBD044EE8AC9535B9092C3EBF
+37135F79983DB2F3AF9509D57A11092EE30FDF9FD10599C4D18C926D2DB941F5
+E19D1B4CAFECE138CF9991DA0B109AA841106C89DC7E2872AF52937AB85DC1B7
+06BCFC4705747CAE32E061EDE0C1EDB35E7ED8A307C241F6E11EC14DCCF04745
+693C30DECFEC4087B692D0495AB3870D0D5F001CC29F0CE5C0FFEF417D3F89EA
+3D4BF5398AB7DDBFF6AA1DA49B856654F9D529C29E67884A48119148CCDCFAD4
+09C7B4CD263DEB25029A0D2EF53EC59675A76DF70757D71BC30E82E94327DC96
+828162ADCC70CCF0FE0CA9DC088B0C1FAF498DEE93C7038403B742D393F882F7
+8F2C37565E266274E4033F4DD024DEA90D24B0E5FA96A0B6FCCCA0DB9F268E10
+646C4507F1BBE75F5D014C264AD9F50CE4892C9189F6A60C26012F5EC8B4839B
+57BEE5B2F0F79AA8873BF61D8017AB3CEDA5006F838B436212C115DCCC1BD581
+EB86C4C67F97934C9B0BB46DF9A2BA09C06429F74490BBC6DE00898CDB1C83A4
+3EFF3810104D7B96E70F0BC9DAEB019BD56DC293CCB28EFE9FCD1E571B5D85C6
+55D79A0F4F26FF98AE764742D28B64DF642A9BEC15EE85929EEC9E662F74C8D3
+ED995C8BC3CEF54656E4E3CBD3E91C3323A4AE755C0A56DE2FDEB64FF2F8F5C5
+6600C9A94E6E8348E7E47181565B47180E8010A29F962A609C15689E75D53934
+44FFA7BB0763642336FDFBF8C45704A6BA10AE06C7CB62CF4FA17D50A99F180D
+A936DABA5F2E625A45BFB670DC5D54045D83CF071531537896D2AF608FC6BC85
+70484384898B04B5E9F40F731468FF4FAC27206984BF54177F19BB899C758A66
+E8CC1B6324C99E5CAD172B3FCC901312307AF69D3D933A5041DA93BC8F65A816
+73073444397A754A4C6D1768B4F9BE952FC835E60D9412DFB62B0891943F00AB
+002038C0E22D22599A13AECE302C3A5EEA58DC8B781B1E558B49948EBC949C06
+71D5C102B91B352CC3CD453A76742F8A9E244279E71838CD79E556AADC6D4A56
+A66FBA05A2C284F74B053F79445F1A9C0ADA5261942C15B0C20D8F9A9899999B
+70620939956A7A011E9A9A53F7FDF15BA0174FA85221383B6EB2AB94AA55DC86
+637A0871674885F5F937AB1ECBF5149F3C469B9A454DE86E0949396DF314E6A8
+9E4044B3F11425647AF7D1EB89E42D8BDA43A1E6A7B991E9B6D5776B2A6BBE1C
+573A4780B1486ADE26A9B12CCBB73DBC87A1F171AB0F013A5409A4945406C1AB
+92C082211B597EC3AB4A56DEB6851336AC9E65F84C79E2466170EF9360A210DC
+5D71686D5B88A0B3B789240D722438315E667DB5425554C9B2BED3C3FB5A6AEA
+07DE5132A1732AA95FB309BB86A87003524F9FE1072307B2EE046921520699C8
+61DB4364F342F5A7D29F4B1D0EB04F86B259BC2ED0FA22F8E5A54A7E876A6327
+E01E22A5B40897CBB71F36F02BA648AA1D06662637C1CA48C469C80A6168EC23
+966863583673A6B291A18A56941AD768683B85FE2BA65EA4D0EDDAA2833443C5
+337C537671D74C30BD343EAFAA0A4F0B8DBB62E35E926782EAEBEE313F92538C
+99E3E620CE7832FCFAFE3B051975E7E76BFB1085A9CD2194FC119E2AC91DD517
+5E17AB570B33A27CE5E2FEF0356A6B0E32D7584AE7B9041A452EC64CACB10799
+E694FEDB87CCB82C288FE809B0F4997FA9A6C1683B29CA03E15C017F3A301543
+5581AC58C6A9A0E34FF5E77A091A7ADB44B597A1EA5768B34F869521006A10D7
+67E462E70A2C20021683FBABC1DAEB1CE1DD7FAE43721306492770BEEFC96FD5
+8F69C60D81082136FD9F9A7FC0910E9D36E483131E95B1587F1725E2E80031C4
+730FD118482964289E153B9B91B91FF190C86B020AAA97CB7DE843C54827D4DB
+365741D530D33F46CA483DD183480CB148E24C0039E44EAE0CD7433BBA81C8D0
+766EDBB15B4DE1A5AE8000881CF01BCC835FC20D1F8250E66BE78265D3B437F1
+FB7CB10A2CEDB6A6814AD48C365F51C1C55ACBFE2BF4BEAD06C6E86FD2FF4DB7
+CB7DCCC01CA2DEEAC1E8AE4D6546CE8B6D704A38E895C32CF7B644A04E1D2AE1
+A5C759FF1CA4A832A93060DC5570245A5D769988A86731B3137A5AB0688B2E7E
+58189EC3A60C138DF4277831397B4EBE4F1B390182F2EAF332200C7F6A9FF312
+02D1A0451EA9DDA7B5BB217441ED2A88B2B63C7D27F2EE65EB4E6FD20348CA54
+75D79E0207093C987CB79C04708CA8500DA58A27F21FD95E2C9E02926710D013
+BC2F118CF2A43B2820C29758EFEB5DB30BAFB0E087D0BC0C42F36AFDF491B640
+4D01F38F9218CF25BEB38AB91D7E943E8EC9A9A9277F02EF057B51AB3989AEE6
+7945CA22634DB32DECC1E18D9901A37A05B3395F9E28E2BD394C86CE470CF465
+D9FAFCB4747C5E168C9EA017D8F1901989F076173D61AAB8D0ECA85ED04E2012
+DFA4B89525947FCB6B4A17FD9805E5EAA888326C3281B34CF76152D047ADA492
+1E1ABC03289F49D682133D46D304A02905E397F0678A469DCDC8CC516263AF58
+913BC2874DC4407E53FFE8CEE90056387A32B169ADEB0F7ABFA9AA5A6229C998
+5644C47AF6930AA016CAA265C7B05691604F04FBDFD43BA3D2F3FD36CA761BA2
+5BC7445B4F6380C06A40EFCB4A6A9D501B1ECA0AAD0CBA97C6D726F6DA2E076F
+6CEBD3EB8096C9AFAAC641A3F87066A882064C2B0C21DA8926CEE57C9AEAF611
+31C99FE3E6D3B691BD55AB8D488CDAAA0E8C2A72B057CFF65C1EEF0EA031A2C9
+D9E38DF696C11600B8D9EE07DF6CFF3CB112342020771F124BED5059D8D97E56
+7E1A057552227D80D3CC51C011D736F8A19622D3E72E232CEACDDDB126E2CA6D
+96A143BC63A0066505D5BCC353E086279229E01CD8F69EEF69E26823E4B7FFEF
+589476CED8547DC0C3F7F1702A169FCAFA3D88EAC3ED08DF8043324B6D6BB481
+4FC534FF50FFEA0D3F8A93D9D40929FAD7202AB500C047B2F013BB351040B8E6
+BC513403629AF692145E59A5E518DE768B5210BED9D72CA2B8A36DEEF730C755
+5332F126F59EA348E5366FCCCB88E7AD4E1E2EC21F240F12867716FCE6907AFE
+5F3F6EC4E155096E6418CB525E1BB0C61E23553A1AEF9268D81A76BE23A2D85D
+8C72FCB6662EAFADE3C325A39BFA1A1EE05A1B8075AB66047A293976A626B5C9
+09F95D42CF9357E3522EEB028AD48174D14938C5E11E5B808FDF747B41C2D5BA
+11FAF9F65E4F82EE60CACFC23CA860BB47FBEF3463B622BA9DB82CAF75640993
+F6339111A1303156DEBA684B5940BB59DDE383BF01CF444028F9FB60AEF34959
+38176F1EB5353F1CE8248098FC760ACC07B2139DDECA158DA9D69FE374E63E14
+418A2FB18595442E81D18CF85321316601DB24DE54DBBCE0E8CEF81F3A4EC5B7
+9D05894A70BDC5117AFA0B642974B4A826FA64D8334CD2D19D16DF9E617384FA
+E42A517F62C0A5B34EAA7AB7772716E31261598E3BB2DC426E52EA2AC31B74C3
+39C33EBA019EC687B7FF694AF4E7DC3018B122C6B01985FBF7317B9C29E340D2
+EBAE10F30F8A0840753F4A73FE5917DF79EFB4A9DDEBDBF5A309472E5FC89571
+E0BF21A3CF13CD2FE84CC0A3313A6A2AFA92E750EA8E11DFE6EFB4BCD50B5FCF
+EBDBCCAD8010D14C36C91F0629DFEFBD7EF7AA277BEA1170302E60C4FDECFACB
+979C35A026B703DBBEAFDB89A50243A657ECCF9A16D0491EF3453F946AE188F1
+CD7AD2FCAC0A2ED2A868974D5D51371395D509B71925AAF535F3246AA9EE6899
+52A7C6CACAFEB437C5B31AA73F58CA48766DF6C4D806641CF424AEA5160998CB
+C73E1D4869A5D7BB4662F4A73743BBFD8EFFB371A8DC5606B1A0C7F70C025FF4
+7E8B362860D6864E7B7F85D215C547543D7B039AA07F8135BD4441D393A86D21
+A73E30D863F36CF991BB022A8D74BEF4C88A19AF37BF8241E6C6827C328E13CE
+410F2105A94702F1B5F575A2710A271BA244D1787DC15FFCCCD7D666E900E8F9
+1F5EDE7531043AA339CCF97481BE36E53409E4EE454F72B42C8DA78E6B241850
+060CE2C0933EFA45E4901952B819BF14C9ED7D15797506FF81065E7D46789EDA
+34005123FF1CEDF111B2E3145E502612930E8E26408F6A8E2409BF62650FEBB1
+A15C98097CE83852D3782249D763092DE94C6C05A6912970B3A809578A69D8D0
+792BD8107C1ECA0954BB1709C73F2879EAE3994927EAC8BFA1BFF11AFB382F3F
+8680EBE0DA5F5143C37C9EE4DF21A8EC23BB3D1ABACC474568FEC8E229641B9B
+CC19408FC1CA59F56B1AA815C3AF151514045BB4E2634B60543CFF6AB61AAA9F
+175C9630D68F336CE178ABA458EF07937EE412AC56EB8EAD8DEACEB5D5FCA45E
+58A297DF1E7E9AB7105DDCA38557A7508416A159A10864809C853F0FEB49D79C
+CA26EAE48112337D5F62A60A3EB9C86444A9DF4FFBE9F3763E683683CB429E14
+896C43487C3B9EFBC14CB09540F13B6140834F87027F5A31F166BD26DCF19BCA
+C3EF4B6BD6A610C9D38C2ADEA1F63D5C9AB59A146FCD9473B2FEF9A0F37BF9C2
+C9A9176CF23425B2ADEF0399F608CC71FAAEBFA07185EE94EF4A7E3F8D43A31B
+855C4ED42ABF17F10C5744F64FFE51D0784DA589EC2942CA9506128F5F951667
+CFDBF28184F69C38FD418D02F5E1F546E74A74549CE962F00423A86AC4BCCA5A
+2383D83000B802CE258BC8BE22881518B4A485D8EE33C632F38041B8CA5D469A
+75104DD5B7E7375023F6F8FDF4E348EFB00B1A55C10B394DCAAB87BE84D3142F
+D172E17115A09F29319329E22E652967C67C621145C510B7617103DFF2970DCB
+CF2EFC9B820F2C78FB902021E93E19E48A09F24C71D8E5181AE8C654D72F513B
+A0452A4B5232F15926FCDFDCD8D8CF64F9BF15A5533033986E3C326A5C5504CA
+560D50EF0EC5CC5409E928EC541EE0A931CC159C55C03ACDA7C177C05D72F0F2
+DAECFDD9476118467C0689C7F55AF0312F3F8680B6332B017194B74FE9034D35
+F2B42CFAB4497533786EBA218D3BA699DEEC1D3600822826BC34DC5002EC67E3
+6C5EA3AE332D4D4E995E1216D755B07417CCE2F0E0A8C50870CFA33A95A050EC
+8A230B446E9C46DCC4FD1185500AD432AC3F41C61133A366AD8F23260136B72F
+0AD4AC80AB5AE776A81D2D57E0C3AD28CD8A38065134E3A416FC75A3CA4BFC7F
+1ED5DD3E0F890042FA257E06F3073E832475FF9D42FD462E1394961ADA8B71B8
+2E0BD527786511AF2A9F3058A619E78C01317DD19DD7D3B3D8D3F6E39CBD39F2
+5F60F1A5C6DB389EA554ED283B8C8AEF1013C917AF69950C5D1FFAD294DFEC71
+001ACB3870E1B541E2D892EF72F7E726E029973283E6218AE2660379B977014E
+FD1B97E4D4341F9831D4F399DBDD11F6E717803BCA06C842EB23D668C89765BC
+4F89F7C2C0919D983174D1DA69D4AA27AF05C43F513B856C15DE6B199F093EBF
+2A46A47422A444FEEF7384ACC9CC0161582E336CCB0762CD88B7A21386C797CA
+E6CF26EDF6133C0E4D6A3972556721AB5DCBE1F2EC8CB180A557601A8B86BDE5
+45A50319A3621DE010389CBD16A32C6F2BFE2F107F0FE17AF448D49DDF247E9E
+C130F3D414B5F046AAC808607530239BCFB5C871899C24FAE159506652DAFA4C
+F2F2B61CB88E9E320D85838E8343213CFED5A5354DF5CF0756908C5676A8C919
+74D26319709A29BB17C7590C405817EFD042D75A95BA4504C99161A4CDBF7AC2
+D1DDE99FDA9C04BA88D54B0741705BAE7EFA68EF7AF6B99F31AD9FC16B60E685
+79EE02CCEE2B5702DADE3EEE8A81C3EBF75D9D909621A2EE707EA0E2855F64C4
+B251718FDA71EDAF082C65647AAE6E7E5835CD5BEB23418066783DF21F9CEAB2
+A0BC38217D5BEE9F31AF8206693ECC93B3879D12A067A92CDFEA59A190ECA4F1
+039D4AB46180D368A71F1DCAF637E51EA61EDF0CD2D4378427258422A8F3B770
+33D6C0FDD0434525E105EB38284F189FAB7AE3C546379E200264E1711EE50B04
+B21CB5CF0DA936E5816392BE2A89A4D15F0F4A39DE5232BE9E00BC2B24B1BC2C
+C355DACA7371CBA346313DD7C5655314AB9A098321B406208CAFD741E8833C49
+8328588853B1F2E38498DD13E948689B0FEEC5DDBEF9576C29DB283E22AE9376
+66D6B4B443AFBFE40E6F01D2699F28A28EFE45B108562244C2DE591147882E0C
+2B776020075A39CDC9CA5D353D7DE2CAD3BFE5E76D7D81BAE3A7954A7E7096ED
+8C92D4A787E0403D8469511A39E8AB2BAC7F9D098FE2D4E79416E0F3EBC990E9
+9B9C27467FE13DCEE8999D4430730A053AF37FB0988B9F02981C0666C336F163
+D4C810E2C19CBB865A1F18E5E1FF007825A7DCC19B445300AD85D72A15D58C14
+ECF0B0475EA6B10BA5073D0CF7511E072DC938B969D4196B1A94CD8E5F09B49D
+94A4BE1C06A910D35A724596E0F862468FEE5373F69F7C9C4418F0B487393E01
+9CCA7B80E94FAA33F5100209C10240F00D9C2DC3035008AFFA5150A269CBECA4
+04CC805A1D6D590CC4FDFF6EAC2E81F770407A354C7B4AF0B07EA45B15F23EE7
+9B4B0F8C84156170A3B688A3E45B4F21E7B35B96BD6C371EF75F5D07408D5C37
+0225DBBB43DE22AE5D0A5FCEB5684FEB86C566FE98E712D2692B82A49F30059F
+0463647E0C8FBEF6EE2C2DF00BC5D44086CB8BF2C8C06235659D485187975B49
+4E4179A596BD5A43F8408D849C05AD1B5FDAF83B330E9871F06C6A970F56CF5D
+180F38F2D30C06AF91EE5FADB3952CDC2C512818687629130EE49177B25855D6
+3D888ED4F0EA504279AF45B4232877F40E32014DA3D8CAED305B081ABC08CC4D
+BB16719F966E48CA12609401CE98EA9E96EAE15514C346482612685E241C5927
+0331DB08A5D8B5A8FB8D1D54A5B5F6FA72DABD6F0BE35D3BB7C8F2A54DFDE784
+B13C19BBBA2F94973EE4F7F6CB902A72B9B93CBF9D29631E96E2DAC881903407
+023C9720B78295A435E9CE18B233FFC1BB425B1D5F4CACEEA1762D3819379399
+929BD5F4B48C7D2832A3448D52A815CF28BD6F218735BBAF016A2EE24710CB45
+0ECC40D367E42DD13968CB56997A12C25A7CB7182527E7AAE5C474381DE815AB
+3ED796B8189A3FD6A6A2F4C640AEBCBCB9E9FC8151B3E4FA582D436CD840101C
+747A3560F26848856690059568E7152658606B53530B49E23DA393F395C517C2
+7182284DDB029F630959676DB16748FFAC3210A24B8F88AC3226991126CF6CCC
+A1930FB79834C1A95F74F933AA791313646330ED4D7EA626E563ED03717A2985
+9B34F4BE716BC533AA939346AEA304A207CC59F3506FF0FB132EE026ABC86D74
+86020CF86E97802AC0DE49124FA4FB0A50E1768B1494712B35B3CFAA3466D18C
+D413950CBE1D5B8E596DD141440A30D571B421AC87E6F7D2181C79C00E3B6F4C
+E1B24485B9FD20E9BE97DAD36913A44642D0B19F0F9DCD951E41D7D1FABD5CB6
+0EA13F968B8F98B840DBE368D33A4E8EE55BA9406037645F3C85DE777D042CD7
+CD3BE01D749AC8C3671E885252D78F90692BBA06F306A3A4AFA26C59F6B734C0
+2C114F0129DB0BD2FA95451151DDE40243A54BB1DF9CF6DBBF33629B2F94
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+{restore}if
+%%EndFont
+%%BeginFont: CMMI9
+%!PS-AdobeFont-1.0: CMMI9 003.002
+%%Title: CMMI9
+%Version: 003.002
+%%CreationDate: Mon Jul 13 16:17:00 2009
+%%Creator: David M. Jones
+%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
+%Copyright: (<http://www.ams.org>), with Reserved Font Name CMMI9.
+% 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/CMMI9 known{/CMMI9 findfont dup/UniqueID known{dup
+/UniqueID get 5087384 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 /CMMI9 def
+/FontBBox {-29 -250 1075 750 }readonly def
+/PaintType 0 def
+/FontInfo 10 dict dup begin
+/version (003.002) readonly def
+/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMMI9.) readonly def
+/FullName (CMMI9) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.04 def
+/isFixedPitch false def
+/UnderlinePosition -100 def
+/UnderlineThickness 50 def
+/ascent 750 def
+end readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 58 /period put
+readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846AB284BCF8B0411B772DE5CE3C05EF98F858322DCEA45E0874C5
+45D25FE192539D9CDA4BAA46D9C431465E6ABF4E4271F89EDED7F37BE4B31FB4
+7934F62D1F46E8671F6290D6FFF601D4937BF71C22D60FB800A15796421E3AA7
+72C500501D8B10C0093F6467C553250F7C27B2C3D893772614A846374A85BC4E
+BEC0B0A89C4C161C3956ECE25274B962C854E535F418279FE26D8F83E38C5C89
+974E9A224B3CBEF90A9277AF10E0C7CAC8DC11C41DC18B814A7682E5F0248674
+11453BC81C443407AF41AF8A831A85A700CFC65E2181BCBFBD07FC5A8862A8DB
+7E2B90C16137614CDAFB584A32E50C0935109679E31306B8BDD29F1756946A67
+7A7C2D9BA6FAB9B20A424AA0E6F4BA64C2801C2FB5A1156CBEED0ACB95F697B8
+BC2A6E6AA7EB1F9FD8E3C9B1A16697EE1F0E7400421A7765AB218FC837A49365
+82DC6B2C877A7DA84A81E6126EE96DB25C17A207D3020A045DCDAA064360DFFC
+E3CD50E21ED239D2A6450D04F879A26443ADEB6A20ACC504989876476C7D1A74
+91564FEA1F4CC2C8C8FDF666DB537F315AE1886C73CB5B00E67E7B398A6C018E
+540EAEE98BB8136C4F044EDD63C33431D2CF9740F051DF365A4045D9D8782112
+7BB5D494D9235BA98CF2F30CB119F5A904C32AD04C960C43FC1F5FD8DA7D90D8
+93AFB59F3FF4F796481AE2A7548F948FECFC6C127C4D3F159B08F206AE8C296D
+EE470DB2F879EA79475E029D22D7A8535C09A18689DB0609CC233E5199C02756
+972CC9C94D9FCE264DEE5D75C8D651E4E2D1189AD9588CB815722BB5EE3C379A
+6F31C2E6AE1AE4CCEB29766190AFA20EA937114978752189F1A9F42B39483149
+796FCFA123BA9CCD1D9BE28289660BCAE16C40B5B504058D55CFCBFB4F4E3D94
+DDBF39F157E63946534DA81C018B1C01B9F10DDB55E0A5C2B3985ED1977C039B
+D6755EA42CD09E27751E159C30B93F376DBE61CD3AED34BA36A768F232EB3B80
+E3E6B77C4A48D408217818E398B83D995AB6BC871F20991DF57313D6EB0C793D
+0F28088EBDB7F38DAF7E01AAB3476EC24D7BB38A9889A7D3038D930FF4289B83
+F54A7BE1E2D98A3822098D2E4D067A0D400C20C0B2B4BBD74C13ED1B827490F9
+ECF48F8C3994C1C5AAC9CF783BFA4F307528F51EAB55F961808A42ED53F00C97
+72A432EAEDCFCFB622389BDA707B6ACC9433B065CF29EBFE93AD14B8ECD5F47F
+F073F11822C49B8BE924CDFA6348C3A75E9BB9BF3F31C41716B34794B28CDAC9
+4DB8B087E180A9B3B17680F73D9C12C8D86A922C948093629F5D7F542ED882A1
+692F4F6696865E53E3E2DD43B2D5E8C989CFAA5CA5C4C5999045E170BDE9921C
+BACD6F2863F5553EAB2BA2D4A9034729EC0C4201DE90DA89B0A27C5A5C974109
+4E37BFB3F46B3A506169FB0C68E1CAFC844419A8D261A1FD86A3BB78E33D5FB1
+CFC687A5975987CE45155E5FDFAF0CC5FD5568CB1C26212F92E88255F0549F59
+41B33125946DE43436BEC00804063FBF03EC796E3361B1C852EC3038D107F80A
+9198968265D5488B26D7670B22C2D75EDFFD1B7B4AAFA36DFD94640C9D0E2D20
+5BCA18683EFB91834A3939AB8EB60E2F09655BE003582634C52770DA9668C292
+2E02929D812EE2B0CC65F020064AD5BDAC5F5693B30508F40ED8E20E87149BD5
+8DD41AFF83FD1944804017DC5A04512E593549FFFAE501131CE2FDB65EFD0B8B
+33809CBAEE411B3941C241550B9C30DD28088708F1C0CC3125CBEDCD985EAD28
+03313741F67DB5744A87B381147D5BA70AE1145C27F794854628D87D6C1ECCA1
+749E3465B950175D3C3F40E344297BD92D3190041A4392033A79BEAEAABB8DBE
+CC14E39612F43721CFAE6F79074429221CA588AA2501DE520A464DE157A03AFE
+3C082FAE7628FC0C57FFC61D0330AE6332D20FDBB09BF36848FE05E782D6379F
+64F9C82C45402481B0A35989027F9756BF5A79DA2D96E10F39167ADB4305578F
+90B509B6891338FA1D67DCFD61804AA6621526B2EE4769589A2646581712AC05
+DA6E98D16494F07D612743058F54FEE516BD89A8EC3E03F9D7F905175D3412C8
+F7329077FD6EB25213F3CAC94BA0C3363B759401B6EF7548C7D709F3241D030D
+4EB46A1AE81863C412BDDAEA6084C37143A4C5E41BC646315B1CD09F934186CF
+49D1D8239E363A435307030BD79536B50B723A39DD763DB539F24A10DDA12BD4
+E467339D2D6DB177D6FC539FA77D2DE4118EBAC161E928749F7C753ADEF86117
+58619F1155C563DF2E11ACA8347908B98113AED58FCD0394150EEC94B7F986EE
+88BF7171D208D8F1774B1DD478F0C2958AE372D257E7EDF0F6B5D6059CC4D5D3
+B00FCBD2E9CBE79235B9A5A3E943CC27AABB58728C95C7DBD4F4A1F8A4DA99AE
+7377B0CC0BFBD454794398AE0D5F7281771FFE87B25A819F36E692286A42D776
+01794A43CA9BB30FB8FFDAAF014F909A369E34C2F6C75B7D4EB9DB0580E33F46
+19654443AFF8384B95600B86FF8E41FEFD032355626D60C7507C058EF832DF41
+194B48A36F11082D1DCF4723E21401E0C7447AABFAB4639B26E3D2730E348F55
+53EBFF39CDD03E06E2FA5FB379603C879EDB7E1A10F89695C9C47DEEE52BE0A3
+F446F187AB9D7E93E6F9387F21129034F36DF40605D28FD526AF82CA9D232BE4
+412567F06B38ECCD496EF40A7B243E46C9FEBA4F1BF4B1ECA029C5EC239353D6
+C0B100BF7E7DB33BD1277DE104F15AA19F37340A777741AD1AD693BC76DA48CC
+C6F83CD84591ECFEE375979972B0FAC4C10B625E4BFB261B9FFFA83C31DA0108
+4FFB6377466E9739E0EB64424BD9FC7239C7DD834EC6788A0F97FE714AF92831
+E1BA36A8A9E24739F1DC82DC26CC3CE28C210AA7C569B19E1784D663A0CA4E81
+AFF43E86D6F5F63778847700072CEB77A4EB946DC1F23DBC00BCE773203F76DF
+00F0B085F31420672974DDC642D885E95BA6BBE43E1CA8ABF464D9881CDECC7A
+E98E31B9754C9B72A8BD5CF6D4D214DBC3BA7A0CDF6635953F5AC1E7639C4A91
+C7AECE4C75CA3389C348F656FC2CC96C84C85A926237B6504DB51937C9CFCDAC
+B75C31ED570D180757884E27757783DB2D5F35ECC48C496CDA342D49AA947BF8
+2FDAD2F19DFE8CD1C76A8FA08F33681F3E12E229D7DAB45BE3A3F258B5ED4980
+F15340CF20D965252843E026803E8AEE736EC41CCA82167401977AB719AA2F50
+0B791EEAA82027B3C712D2EB9D14BF8F94FBDE2227609BCAC41EC08DE2BAC023
+28352F913F7DF08D4E1C66E83F764578B22B4EB7191E852B91ADCCB1BCFDB1F4
+E63DFD152E86FA9DE9BC8908130EFDE29CC4401339C05B5B9764CF8EFF14951A
+C6C13AF979546996BF22F2B96D3D585B90CD27DADEC78914DA48432C6ACBDD42
+20EF583FD41F2F6D6D10C3DF7DD077304B5940BB0462656E306CBD91EB9B756B
+7014B1884A36201EC582FC9345C386043DD2818FC301EF78791C1D7854F8FACE
+5DE9801DE9F59D5B4271E003AB897B2EF49501589D681D59CFFD9B03F722EEF4
+74ABD29997515DA3591496B62666744EA76DCA45504F8075C0652D6779DBEAE4
+90430C2945FBD60AD53B51DDBEFC7ED703C418B4B244C8FFA5A3C1B7600C5A55
+3EBDB93C16AC191C3A28EB2279BD3F0D67C826BC6A73D3C0AD02262368AB4621
+98A1605F2887BC5880E1AF2780330E0FD01D7CAACBB0F008A42C427F38236066
+54799594E515B289044BAC4DADF8B3686B4372C5110201221FDA923F131E07E7
+93C44BAD406838BA4D1C277EF74098B8C0EDC41EEDD58C195D7DFF5FEDBF96FC
+19CEBC6C3006DD2CBF76916B4298BB915663C2F61AFD7747E03A03BD7280197A
+9DA590E3D081C6F53DBF94E8D6FDDDD910A70AB18A0F6D48A590FFAB314D6CFD
+E3FB20C1F3C91063F00726A2C13A3D48323F9854839405E5A29D66A43E6E2B84
+A8B3765F1D817071D4D6FF42BC785C2D11AB2B9452F141696CE19C6AFB9777DB
+107D6E22D8CC6C26440BC48248AD8805C4329D46BF433741CB519B21663392DA
+5DC7FC9BF37E5BC396BFADD7263D09F6B4D69594AB386B7BDFCF3BACB97A0E08
+22013E716E642592A20136CF9CFD61D4E515D80E06A4CB4FC9D9B916C93CEA95
+B83B98C48CF36C1D02291D4F5C0419338D64E33C90C90EDD2BA3B96D70FAFE0D
+403A060CFF448D3E28A9B1E3916018465E86095BAAB4706CF7ED350D7C554789
+D7F4FE5F180767DE8739259E68CF142040BE1E2E8C6152DE3417C1FAEA7584B6
+20781DC4A9796431EE713DAC4E713C839D7A4FDC8AB6BFEFFE767AFD8B67FDA6
+943AD387E5D3BCB09039ADB64ECC2BE2620C6EC269E708DD06C311F450099E33
+AF46AEC644222E7DC4DBB9371EE12CFBC4F9B27AB46AD1DA96CE006E1DF8291F
+A550A93026CBFFC1087B134EC6EA76F5E109CDA58FF47338A0039A786A575F70
+B8A03A4F9C8D07A4C856C77D9BCC8E3EAA740172D0C2D0A15BA35C9E5717D7FA
+2691774DDE730BB9D7C70D7AE103DB8D35F3728470C76EBA0E670634E1A0BA84
+2FA102BAD7271DF2680D86A4CA6FC353869987700E5E3FD778165456033D624F
+E9B3E80EBF431ACC934AA0357E824B8AD73E222B510DE8445C55C07C8E5DE46D
+E478F832BDDECAF2EBB11941DCF84CCD887043FAED9AA90D12BC8CA9A0C8D94F
+8D3BF1F80B14B6CAE6BB1C6AA405AA64BB94D5A82CFEA548BA070796A02F9642
+87326D066101435AB9EB40BA9EA9E61B363F5F5E3B924369796E8B78DE3414A4
+2B79C6A13ECB2F34E6299658D07D2B3DEF3D4383CE009A927F0EF5C196652842
+D96B857AB5E905201E7E8BA21A5EBED1FC6863BA9A1A6E5390407F75055E2EEC
+512FBDB3E82CEA13663F1A1944DA072C765D8CED06AB461470C5723BDC1271D4
+4D1D049D3EB131743F1EC9A6ADDAA038ACA2C41D139DC6A84EC3C61AC7F1E559
+6155CC2F49171F6E07CF56D721D9728E87FC7DCBCAC46455A3694C765FE807E9
+9CBC2D304AF37E0F28CCB22F239541B53A4D24D09C662559267467EA487BD33A
+0BEFD4899B581D20582930703A868655C31BE935364CA6A95FBCB22CB714C040
+9718824DFE97929D0482430726CCB5A5307957DD2432A9B6271E849148DEB76B
+FAA290FF6D0B18DC5B76407852E81C105EC6CFAB0F620C6DC9DA555A33C167B1
+430A8BC338BFC7D75B7099CC906AD923FA107C74D3FBB719D77A4E5A685FF9D8
+56424EE4AA074434B809D894ED50F6A60A035C5223EA25DD8983B9B34210DABE
+718D7B2BEB293FF1B63CFB1CBDAFC69552963D90F5E3FF533A3FDBB626E9FAA3
+F3C119E5E01C7BFF832A033C3515BF049E29558B1DAD652F2888E339E67D15AE
+95F9BD14E3253DFE9072B24C0E7E85025B71096AF51C86AECB2921126A43156B
+EC812B32B1164BD9B2B947D503C015616DBF2024F5C8CB3236C1DCA653D661FE
+6B1C19A22D272A176B7F1B7F9E67AF40DB0EFD4940E58B2A050249CA4E55CAF7
+6ACFD84FB46FEF952D18552B3972D79D808B4C263B8C7E1BB647A2D03E102867
+630D5C3F2C917F765A4F6FB8106BA6A9D0093E27A4CB6049C2371287D94B5111
+6E7020776EBD744C6C920464BBBC0AC206033E8240017F8CCB112596ECD7CAFA
+89950CF43FD87ACA750C03A778A37FBCE9C82C2F5ABB135BB02DA8E8C0D24475
+3BEA9D79372D0022FF1ABD378C151417DBC69FE5C9CA38D23A3900E34BF924A2
+90777ACDC37930B67DD44A2E76DDBD9B89598D5F626BFD325A978D277265DA47
+38CFAF16E7FF1946E15F41CA73F7B4B02E5AE8FC4C37B115BC567E4EEEFEFC34
+EC8974B1465AE57759EDDA28DD38A9210871D35D331AE1BE6097C3EC21C770C9
+B25D040B2ECCC3AEB1EA1BF99E0C2C0F192C13BB9152CFCF75332E03F9CEC376
+9B8C285A35F53655BE38713E09AE34BA2DA9C06FA42A6FD2D00CBF2AFD2BADB9
+1571629C65DA38A431710CF5B01FCA68E8B8569922FBC3F9B64A5509B6F677AF
+1B97E91FFFEB6308AB68AC58F9BA43DB5E764021E75B56170EB44C2C0A7DB86C
+62B8982256D3621EBE3DB3994DBF5C5A14CF34B4AF3BD5697F8E3203085DE9D5
+84B0598169760B925463E93DC87CE70AF4C2DF0F4287D2F2069847BCCF7A37A2
+AD451D5ACE4DBCCB2E14D5DF38B226952E7446BF87BEC736EF3D5AE793304618
+D66D3299AB9F9CA1D13F134FAEDF36750046E27706C7CBD8E0877BB6276E5196
+BC2A355D109C0253644918E1CC11B717DE6FBDA201E769812752888CD66268F6
+4ACF4A9449378F9F9923D584BA1B51F33663BE7A306887BC14A37E3C5A4654E6
+531D6EB63DE3946BD8BA95CFB037991174F36D61D842071E6625605CAA350A24
+FE551025D10871FE0E2599A63900C8520EF4911C53A03897C8BEE152451708E2
+43FCF4E700C583A5E8DBCC03BF9CAB864DBD19E1760945DEA0EC0BA38BEA8256
+D3A8D4F70F6685A99C6BD2BA8B412A26C002D76138CFCC7DF6802931E5D97BA6
+0151F6A4C572235B4196B22B7B2D14B32886DF0D2CA8A277ABAAC53B63F64CE4
+E4C088192AAB674497E8AF81961359C389B51F4A257373D907C615030BFBEF53
+DBD99058FD06E352450B658478C10454AC8FC0232B70D5CB916981978053E358
+99D322A07294748BA427FFD1E45C909171017B52B7C742FD77A8560852D819DD
+8DD53211A14D7B2FD11E42941722FD3985D627FDAF87EB57326A0D290B5077D1
+8A4230BEB40523A8565F95E0D44F036A571DB698EDD9D94FEC9512369E5E5E73
+A3CA5C142617944F4F99C0697ED088ACAC007FCE06E5A6EDE7D0E03A3399DCE5
+362271BC31533866BA79FD1FB3F608B22CCD4111FFB1BA35D920A23AD157C6B3
+C3DAE11069D5E46DEDA7158C6478D8B8C0D9DC237CDF0CC6633911673C43FB79
+E4F9B7F27495201E5ADE66255BC2CBE9D9F237DECB62A19D62CB41A1C92432D2
+07F0629E913A71B3F1AAF8B8C5AC66D3C8605A48F8913E39C859E163DB1DBC8F
+0ACFEE80A40B6172032E95A76B752B873FB4DF23CF3A655AF1A1B88C8DC156C6
+190DE72973950565454C0A188A33395FD3D529A88F2B578356DE8EBBC12F04C4
+5B899F667D9E6F3A4EC6DD8DE71FD4C2E2B6D56823EE4E0526679D71FF1B868D
+F261489F06F97B010CCBE640E2F57BA3DC3332B329F7958394BA9777D833AB50
+005E8E9232547104065ACE33396772B0E0BD66D2C6CC54DEDD071E444D8C95F8
+6F88B31E20FDB80F77C83151B7E25BD3736B4F9BDC52EE78C41E9475E5A6D94C
+D348AB42F5E36B4F167D29EBDFBD43B03F77EB296B06A36880FF17D412E77EA9
+F2E7C25FD05E16BEC6732681EA21AC3FF6893B93FC09316A370CDDB86D9E6087
+F6042C3F9ECD742778389170F5F041329782FB9F9702F7533E51F355F71825AE
+2BF4F8FE50D413AC9A20C41B42537FDBE8DDC5A5C793D3760C1EE13716068752
+F0AF10812250BEDFB4D7133FD58F4587BACD572505C84A7D3802D27443175FE0
+0D89C3398B55176D8642AFBAB5CBCDFD6220C8488564B4306D74A58CD2921AAD
+73CF803C754DAC2F30A5324886E273064FA51781D5BC596BFEDDCE3982EA1AA2
+62CA7BAA1B16C6EBB99B2AAC4E6C9CEFB3D10F19987045C4918DB239E6E63D79
+5F44B9D097118D081153AFF96E5EB39CBFBB99A3BE30909F614869031358EB98
+F07A97EA78AE50375941B2474DB46AF3305F2B208D45921F93743A6CB8AC584F
+6BEBE25ECAADD5A789EF60C9F54446687E7B030DA3E5243189F02BA46BFD28B7
+DC14822E136AC7E40CE20458DDBF356488045C95907363864CD6943643BF0109
+EE027A3091C11EA392EA91320EBFEA3B857370AD8EB86D73F035A476F7058222
+E8CDE78CA1AA9EA69A8AA6EBFF3E67324C567B914134DE042D6F8F18A9373107
+536E8D90189917D343F5299024239E2EC1D2D177D82DC8E344A7CF2AC71AEC18
+36F139E7A4EB59A67192BCA9ED0EB25DE13032F6FEAFC3B1F4FC81BB0EDC41DF
+B9EB92618667C59EA499B788CD26C2137D70F1B0AF793AF5AD0D0941F2E746E3
+F5A7F0288BC1EE11E982EAAE763CA422D72FBBC0D754AD58FBF92629DC8866A0
+431213513744DB48E52EFC89C83FEB082588E4F30D7DA77BB598E51CAE7E4900
+5CD570C914EFBA426BAFF7A56FC775ECF5BE13F2C42E51EF96784E5201C0B64C
+074AC229FF0BFDF71E6D5E08D8755D2C12B770B6466A9C9C61C15582DCD2FF78
+E9E74DC2B1CAA344EC0339EBFF92CD2CC1D62E2FA8FF15E7459A83C6CFA58A77
+2F1A40BD276E76B675FD6834052B33BF9190F04DF6AA5FA3BB7D77A88DD5B600
+324C5E28216F47682EC29EABF35BA842BA2294A3D72B126EBB852AB741186C9F
+FC84B12DC4A6CEC08F2D03EE61B65C845841EE17F1B765649A
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+{restore}if
+%%EndFont
+%%BeginFont: CMBXSL10
+%!PS-AdobeFont-1.0: CMBXSL10 003.002
+%%Title: CMBXSL10
+%Version: 003.002
+%%CreationDate: Mon Jul 13 16:17:00 2009
+%%Creator: David M. Jones
+%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
+%Copyright: (<http://www.ams.org>), with Reserved Font Name CMBXSL10.
+% 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/CMBXSL10 known{/CMBXSL10 findfont dup/UniqueID known{dup
+/UniqueID get 5000770 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 /CMBXSL10 def
+/FontBBox {-75 -250 1278 750 }readonly def
+/PaintType 0 def
+/FontInfo 9 dict dup begin
+/version (003.002) readonly def
+/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMBXSL10.) readonly def
+/FullName (CMBXSL10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Bold) readonly def
+/ItalicAngle -9.46 def
+/isFixedPitch false def
+/UnderlinePosition -100 def
+/UnderlineThickness 50 def
+end readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 12 /fi put
+dup 45 /hyphen put
+dup 46 /period put
+dup 73 /I put
+dup 78 /N put
+dup 83 /S 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 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
+readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7
+5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99
+8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716
+EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C
+02CE8D8B07183838330C0284BD419CBDAE42B141D3D4BE492473F240CEED931D
+46E9F999C5CB3235E2C6DAAA2C0169E1991BEAEA0D704BF49CEA3E98E8C2361A
+4B60D020D325E4C2450F3BCF59223103D20DB6943DE1BA619611FE47D989A127
+23FB8D3CE03AA31DE5B2AEA44CB0DBA4454FAA35FBF2CC78E7022A63E409C86F
+82BBFDF42A3410D9F2C118CA6B8ED47BD5309A98237DBCCCCDBEF685978C7A4E
+29096343C6B4B0A3EF314ED605DBA20120F7F91A600F218B048B1B45F9BF1787
+47B825D2ECA3EF8014A30C1F1AE2177B9D1C2C00589036A95A3A14D167B3BD80
+9B911E43B4BF9A5385C143465B5C29F98E8F72194A1805D0AE78C063493F1A61
+B275BB4014B301A6F2165DA0E9873B001D58CCBE9553DC9D39CBB83D14C5F30F
+7727F68B99C5EE4900833AEE4A5993A0FC2CF162B5D297C40FAB4F1A1757CA20
+FEC9211AFA367CD1EA33E5F3A002FC752A820E72D0ECC92169D2CE3319BFF252
+6D6B6DC1B38076C0D1BF0653177BF356845D99A092B380A6BE59FAD5097437B4
+B2D77CA380BD52DA199B683F31344CF687BA469775C4D0505EAFABB09121C06A
+0721D241F4C3B7B89E33AA7287D020AD5CF9DC48DBF61C3DB309779E2C012898
+067760688150EEFEED80DF165963A8A7F414ED95C9CA299D8DB1BF3AD81D3272
+96A04E03E47CAA94314F526F2639DBB65AB5B2E6E262101D62BE84A858A0E74D
+4C9BE1073C6D026B05435D09090650452885D6A994574E9BFA7096A5C724BCF4
+DA65A7C993A8E606F990E5603A301B0B34C01EF5F75B24E4B1BE3565296E3C11
+01440E0F357D949E5F7746516FAF7D4A8154B8378E74E9B4A9D4AF724EE59167
+1FB5EAF72B4734150B6098C155EB2D004CB8E6B9D6B044E912BB002520952E5B
+76652357ABA15C52B1EF1D0EA822F5AF2FC01332544D31C304B99A7EC07EB5B5
+A6734B6F394DC9FAB93957806E89C83607B6C5D99C7EC7D259545AC5B5B45998
+B1195203A9B57818BD94D27E435D22890EB9E98E94E9B4E85091B6D9A048AE56
+C79199A418D4A4B54A3B49E3715D13867BB80226DC475F2B9D453CE2803F317F
+212BF8EADA6D9533C5ED69532EED1BA6E0265689DE59548EDD71E868A90D32B1
+6203C7A485E7395FCA25862CDC41FC95D2937902FB7B0E57F28514AA41812349
+4D46E5454E3D0F76F1F8799751C9D2A40619862491179B6EC48928A6CC7BF686
+4A6A352C5075199AD244C84B0CD88E0B3E3C06CF7F3E3FBB1652B20E86FD777C
+0F5181A84E06C20699514A10399ED4C74EDC08DFFA4BA4AD034FE30242D7A13F
+6B28038CBDEA1B237611941D4D74662358DC81C5F09E90B19B9BB90646A5CD84
+7CEE1A0498B4EF9E2981EC93BA22349D02D5515D6D522261FB1FD1F4AC54DDC5
+B3CE6AEEAD7FA3939606065D026065DEBE96A67D52BCEADA5FFC0105290F1E65
+E9F58249CE6A4D8B43F2750ED8FB171E5367A0ADA62D519E45FFEFF2F7C972AC
+CE8EA90398A3CC0FDE8E1E6D61550969CEA4E098BACFC432C6586E260A8A7340
+A42AD4D48C268B00C537E0CDD1AAD0DAF25C0C1ECFD95D8AC93DF2DECE8B163A
+970E969BD0D459A7FC0CE22EDCFCDEEEB2A6AB796BF4C6B3A3A1FA7F1CEAC940
+3770E3101DDCA2774CE6402F25736AA8594F3EF46A1C8641FC853094B8B6361A
+B5DEC0C11A7CD0A9098BCD6757AE5C0BCABDF0A563516F54C844E9A8CAEB7E3A
+1A857CCD94CAAD638A24AADBB6914B7A6777F03F38416DE2251A301939D0197B
+710B71A954FEE67A337BD9FFD1E24C93BD05D135C91F655B13C0281EF1CABB88
+350856AF15671CA42F9CC2CEDBF44E16201158DD9591379F957B8B5E0619BF0A
+2F1217E3CD6DBAC23EDDD083D3561778ADB6B3B41A5483F9B14AB9F1E842F3CA
+FB07530D50EEA00D145E8DF3594306E6F3F15DAAE11160228A72C0212B0AB34A
+5A023221E587663C5F57EE8C07E7C3856F18CB5068A99DEAAFF38F3219E66353
+CCF06B5B8C7BAB0DE9F6D34920ECD903B6F29F55E243FB03A9010A1EE0AAE80B
+544CEB34E2CD33958763BD1AA4CA3FBC1A8E142AC1778C1FB5E1A0ADE4C85FC0
+577F95315BBF93AFDEEC87B6ACF04993BA0C6F4C2F41D3C275CA5301B9BBCD53
+6DF5F04D3D274E585AFA5DF0AB12275200C3243C68338DBC6D602D917691D5BA
+66EA6E0935F983C17878C5BE7863E43ED5A6381E4497C232206A874988050530
+13582874DE50002AABA8F4668FEE41606A1F55951F1C73EB24CBAA10023A0594
+2B047FA36655C3419BB37D85E77DD7C20DE940B0F3CDF30ED7C673679423CBA4
+3DAAFC4007418D97EA06548F1C828FAB2EE4A82FEF9C134E1FE4529CB285FE76
+513F6CAAC29098175B3576B61FA11C0336C7C9124BD7EC4657C740B4E3B7699A
+C3E34064F16A1CC95DEF76BF18E59C83275F7B3A9BC29C0D5A58030753CA9085
+2D80186F7A4297E9C8A247460BAB02AAE954C4F3BA93E9CB0331C01BB5F6233D
+D7C16E466A9E47B9F885D90DA5902CF732798999032FD981B40DB8E0EF5003B6
+C65A1E7C582B1DD0371B4CA5B83085A8998987780DC5374F7EE2950241A1A949
+28723C54FF45FABBA03A96535C1418D435E21E037B512AF0230B43E7B08E9D4A
+3880D36694D69E4ABDB743DFF2AC7E0BECCBA723F1BD97A7BD0F15F529A25F5A
+EC4CB3BA061ECFFD5F3B24BF47C0E5EB6DD00C3719834B39139264B015956DD4
+065DA2C0083EAE5AC3266E43AAA9EC138303EDBE89047AC1C195B5D2BA2BD941
+79675752B9C38193AAC08D6A77FBE6AD78E30DF4FB0750411678A09CC4200DB2
+998EF9C1C0ED0DF84333F17D137A2EA91A6CA839E4424E16924120FA88FC3872
+D047D33C96C5E86C1AA3CF2C4E5A19DAF637CBAC603FBBE081AA75C450D0C046
+90BC2073BAF3F80FA5BC75899F816F10D4064F2EEF6F93A14376BB0B8DE9F1ED
+35DAFFCEFEE32B6C5F2B5662DE55DA71C09913F807E56C7245D2CFB98905FF46
+FE06EC6F67875F0BF76FB657C1EBCF3B103461073C013CB1C542713051451686
+5552DEAE78E2AB2D755666DCFD303C99317FC15BAA0BC10F73275663D2F809ED
+4DDB1B2411B04CDFA157D97CAD68A1E8B8E3CCB65A716C6FCB1058069D2A4DB2
+ED0C0DFB0D289F9C317AC3D26BAB2D27B63A2174375C925D07F545D72617746E
+16075887DFDA21E607DD0B95F106A9D71AAC44C329A8ED819BA14531D1B1AEFD
+1DAE19FD47166DC04CC43AD5860EDD0C1AECA5244421584C7C7B15062D18B72C
+3346EB569B01712286C1CA7457E60F226CB76F1A84778E5330D1E655010EB1E4
+91DC41B7929C00FF8D6ABF9128CCCE14FEA601D7F38B5ADE44B54BFFE55DFA69
+1FDA161B827DCA1F776A70B0C261C9941411FF495E9C6763F36E5930209CF748
+3006886740734794F7C34916F5AA57AA52E695AD2B6E8F298DBFD1E6FC18B43B
+D83EBCA758026B807835A38F67B7CA00F98C9DEDD806FB199384BB9C398564BB
+FD96D5216D7DA3AAAAD9E4861197A8F5B845AF73107DF2B2BFB5995F5D37F315
+0F8D57F5B19F4808BDD5149D4BE130635CC1883B9386BDB72BBD4E443C0C58C6
+7198B76A1C3DA1F1EA89D2EC03E51A1062B02D759782BBF14DC2D3576D195B7E
+7D3219497DB5157B9ACD5C2F679DBB1B78C5C4AE62AA0DF53D460EB26942666E
+3E352E3979AB565D0FB7858AE92AD9EFEF93C1EE625A86B3DE0A6987C57584C4
+96C70AEC1F756AB06377C0670719F69E8E6F6049445FA455979A9DB932D8E3F9
+CF497FE6FEB2B11760E1E3C4EC413CD7AC258DE320395187E169983EE3D70ADB
+3D537EE8DE003E82EBC1796B32F4EF3FE44F1A525A12EFB424306BA94C86CBD7
+C54625B34D2843367826C9442C4C3BFB2D0704ED0A2EF39E5239B69CCB634232
+0DC447796AA45B3EF93FDD1B01CCD4165D6445DB7FF83912E7658FDC2C94067E
+14DBCEDA6BC17CB328EF6C6D14412B3247FF398A28D562B12C8CE9C2CC0A3CEE
+EE82F5AEBAA2A5A9788A7D6989E168E0D09EECB9F600F76B8D8E3552106C521F
+181DE503B54FF37EFD9DCF28AC8E78E910EE07388FF83134C1A1FD42E1A9B363
+55BFF2C2AF9E370952B83E851E61F1115A383B07B3CFCBA2179553C4D4CC39EC
+34E794DD86C88309A73844F30766EF81ADF312E8635DE363FA6DA144BDC46ADB
+5520643EABD269D11D855B6182B22322855654A96593E06569C2738FBED3D121
+A69637EA4D9B7CA7FBCCB602071757763960F553FEC7301CB8DFDCAAB337ED9A
+28B87793420921CE113A6A7527575600948E79659B6C462F31F9E357DC9CD171
+604B019484607482111986F445D2F27FA7C5236F11B441115A612CF9D8CAA0B8
+FB5B55105D4508F04DFCC322FD1D757B85208D8E61A9BF129FC6C0A21F95D255
+B7BCA9B3D1EB5C8CE770E994ECDEF86B1BB748EDB28BBCA513D356F09B05B1C7
+4DC4AEF1C3195667D0CB049D9DB6021B37C71E17EF1AAECF7D363726AF7CE2CB
+5A9EDAC73FAEEDD92245237B30A41713A3C4C529A0637444E1964D42DB1771C0
+C919AD6CF1F53CC676B875B5108EAF8DF7E1DCD276BF66E5A1FC86C20A98E416
+E76D9A1406329F4B87D98D0CD723AF857544EDADD685D5DAEE7E9ED34B2BEDE0
+412CD3F767784112E6FAA1D37E0DB11C8ADE8264C72AE2AFDA288B5F459F03E2
+E6E304B7F802F0CE74DF546E23FCDF5D2DEF6C71677A92DDB72E9EC147232DCD
+74258408AD2C500BFED63C9C11C7BCFE269717108EF28632EAEB3C491FFF6FD4
+232C44B6D460AC5B98CDD11A803A60D5171D15EFDD5D6493B4310DE1658F63B8
+653C266367CF559737D1144A3B7FF678EFC2AE92F007041C84F3B83F06C419B3
+DE9A46CD81E79F58EDEEAEFEBE0B4286E16DB4220896313ADB393D108EB7A801
+F4C1AA72E692723894F8297E5F7F2C243A39C86A17141D49ABC74CCF39B5BB14
+521484D6650D966E07BA302DB3FACB3B3CDF0FB8E462133A100343D2BFDF0917
+089E15B3F816FE265305E7BC74E5C42880D07AC427FCDE3A97D9EA708B8CDC47
+E3273D36ADD09D918C67863636F7691AEE8124277370E2C978B28875B3331EB7
+3EC09FBAD0B580CCB0ECE516632AFCDDBEC0D5FB07C6A0FA8C9A575CE6A35F0C
+D5909BDEBB85588F39872B83604384359C53F8834CF023C4E5D0369F7C750DA3
+6CA9A630C585983E6F34D0D5DD525C150435886CFD6EFA24E2E11743205D19FF
+894ADEB319330567D4446F5A57A65E5CD1BFDE88B1607DCFD4434C4060177909
+D5B237182A9F5222C6E703E7466081109F174FCD114178AAC5ECDDE219E2CC51
+13BCD8346390B298214B0A71802051E1FB0D7D4FB99449091A543B2AFCCC221F
+933480C39BAC30809A01BDE3BD8F5C807F2C04397EF137B2356E862D87FF9999
+6091AB1207AA093DB743E8B71AF23E4AA4A1667FCBACEC07CC0DC7F20CF37264
+BD54315960B5DF38077F91E483BE83A5F5A12B05439134AC7F67E0E1A1F2AFD1
+7564C21BD5F263CE9488D335A6F00B2806077327FEAAAA246F136E26FACF6DAB
+78C542E0D16931870AF95D962153B335747B32E46C890C1327C8E01140005A30
+14D736D4338EAD5B3CE7760B0008C418C80508C44B9E5E8B58B6B770CFBD7AFF
+85631CCA1EACB7836580F3D889D9055FF808F29CEF9EBFF7FF904F89D6655DD9
+A7097E2A27C19A0C47E710FE7143A2EE1E642DA6AF5606305C2ABCA4DB9AE966
+057C124757B094B5B1226702B1A7FA4F082F8F1BBF841ABBC29F760ED72E0474
+6EC76895D4D5D78D2E09B73E0B6CAD2CBF7B2583C1B6AED6B208DD582795177D
+F4976908582A253CE329AF84DB80D2DDB23C02C659F99C0BD70849B40C4BEE2C
+41C3118E5444CBE7DE1E57DA268C9C6E0DA8F2FC33D7193F0F4ECB83DFBB9BEC
+8D0098C10134FC5C2700A90A9F0707AD75762FB063F620B691C478FF88F78B48
+6E7FA772C06E3F86B94555D981ED92FDF2AB8DF1B9C1F9ACA180098D876E0B5A
+1F44D53A4341AD0C3C0837B8A595932EFBECEBA6BDEFFBEE967E474E173F9990
+71689C1A7E23255D793557A022726053B5BDBC9C333926D714FF8D6261E492DF
+9C905DD66DD1B7E17E714A44C1E073DEADF6A250B765872BF96E047B297580C2
+7AD1714D8A2CE93346D0A972CBA8BAE026BC1646F8FED5C9A3366E73A2A65FE7
+FBED4A8447BA4CEF3F25E20EEC13F5448DAB2B1768BE14A2F1FE90117079DE58
+883A86E7759A3F8723901E70ED76DFDAB6DB2A2597F3CDED02E1418E33EF2FC5
+EB86072BA97DB0B4A87BF21354EB8FA680BD07FBAFCF8CB2FA44A9BAD1EC8D56
+92B12A0390E550E272449546A95AEA075538359DF87234050BF5B6FA86634E62
+8DCE90F5947772B834D3DCB5BBFEF9F5FACCAC5EA302813FA76A0C7E8D4A6904
+110E7D164FDDA1F2F9E867052945E5697F3E7B3F3E44A159FDBB940D942C4352
+0B6760DAD2D26E5568604EAF88278A7842315D062BC8B723D19B35D5913264C3
+313D68F88A1F063D0C1B5D51296C7C2878C5A016C6ADB672F6148EA484B43564
+7794900EFC313CA6FB90D3165695C194440F715875B1817B511A9255D75A7EC5
+343BAF3115503E2B7B7550688CAA306B175B35F1A17D821F4168E5F8CAA50058
+E5700ECA8751C8446A91C1EF58E6D8DE3DC3D7F89FACF39E5063C470F80C7D74
+0FC48D67A51EB34ADB4BF49F04166E3C8CC5EDBA32684D760CF5DE8E3B15FB7C
+922BB6866719F75F5E4B35FE0BCFC50117E820A707A9D45377BCBB9B5057C58D
+4D9ED248BECB7D749CEAA982166F4E8FB3617654D46DA66F2766FFD0404ADC34
+8BBE5CB78623985F7BFE0B05C802F028D9F4A944F3077E85EB1E953656F07BE4
+0F600F17273A582064E98C77B6ED4F49B086E2E83E8E7DBE8CD9DA174B491718
+22CA13ECD8ED6CADAD41E56BAE142C7EA81CE7041B17CE25ECC4E7B836A6D283
+1DA602B8E74347810EE746CFF2019AC296C137E34D2078D6CD89D12714FA8056
+C200294B7D43A678EEC4B09C0DFBEBC9899763B21F281A278D4A67701DB89D78
+6ACABDE84A78A9647F68CA1F1D96237BA5496E840C270C2DC9320668EB83864C
+340DC520D9DE1F6C6035EFD0273406A14DBA72D0D484CF006F559C114020ACA0
+BC9E1822EFDFEC07866913956D0BF90C5B0F96B6C17799153E59603FB415CBAC
+3AAD5512EDA753DE8EA7B4FFE9135A8C70416899F5B6D1765B03ACAC1F8F970B
+F2D937AE6BCB694DBD3DF0DB2B53FCFDB8EEDFBC7BB80246F7173B3193C0FD9B
+B5C1F2C3B3A9AA1B4EA166322660DD848C4922FA4FEE272BA1AE64BEEEB19CC8
+75B268712AFF8D4F245C2F081EDE4E619321F341B217198E7A7B6B39B5A13807
+CB970AD03277FDBDBF29235C600E20CCD4D4153A4601248829F857509717222C
+2C9535E05DEBDEDE4DADE6DDCB343C2E715573B2182AF3875528120B42DFDA77
+3CED4E091F4E99FC1C8F33832569ADB8233C781B31FF37868723D053307300F1
+E113E908473FBE39ED75A931C290E7EFAF4C89D4CD22F63852EC30831D61D1DE
+3815A6D18FBCD15F28EEA75AE50BD0B237E8CB0870CAC5DDC13DA58DBD060D31
+93FC92E6C4CEF3BCFD81CE6B3679BFC5855796CDFA8A26D63A659A2FF7A1A7E3
+18A7F76FF80E846A2D647D38E827FFAF54BD5A9221EEB416A475EABF4EF0409B
+1CA55A851C245BF7207AA563AC26D4A6704EBCBE96D74CD377454EFEC21F1B21
+DAB103778EB687FE78363891EBE1950C13B31CB7B479C4A853CAD2A1D8712BC2
+B1B314822712AE69CBA9DC280B3C3FBAA0F80687D6383CA5789537FD7B85CE2F
+E02D8A3FA89D5E2B938ED8DA31BAEEBE739FFA32545089856E54B3031EF5BA89
+90633918F5A211CC9414A94BE79E288460B4921D3608C16D646A7B27917D3DBF
+F4EE78BA30853A9B90DDDF7AF372B76FE598D19AC35D7C05C65CCF78C7DDD293
+EB63D5E7C466E528CCAF3FD907BDCD78C5867AB1E7D01E3D35D5A085CB8653CF
+6211D6F89B3F9D78E0A2FD3FA71C28EDFC157F6E4B9BB5CC61C9EB26AAF44545
+91BFE11940EFF64F610E0387E2694CA97578BD38F3DADCBD623C58374137C818
+9393336984A0495B5A0D718CEDE16D73B579C041D8B41E63A28E978DEBFFFF40
+694400CE3B5D2096968EB872DD5072FCA0361DD5DE63F9ECB0FB9E91BB992D36
+23BD32F494696A001357CBE2004B465F859A3472D2A03B84614E5343253FEB54
+B34E5E5817CA28B23B16678308DAFE22C9D15B022D3BAA85B991F9CFD6858633
+EE0DCABD173E1580183009B0828E8FF1FFF83FDB4A95D6A158B3E5D9FC01F185
+A5ABD1D76B2A8003A70D7A81DAFE2CE988AA2699371B95488CF47975FA4B5BC5
+E84FD3283873B79CF201FF0012FFBF6DADA98CDCA8E483C408D6725AC10C47A9
+9F1D4A268905CA667E0A786C37A8D1182DDE9E6A7CBBF05CE5335060ABA3F05D
+42B73E6FA2E320A896E652D0DD4BB640A1EDE60772D9C3646666CCF4745F102D
+019ADECF30CB26436B6BFAB2B6153E692648A9414DCF682E2DDA1D7624780839
+72F8A22F5C568BB27232D840C18E0B46723AB882E578478F9B50A1456E4AF0E5
+B347F30A9663CF6CFAAEEF268A7CF6BFC5BEF74ECEA7B594440161F1C72EE64C
+5B25FE9BD22A2F25B07E600E7FE724E13ACCC9EB4515043C41804990807075E6
+7EB8AE1748D292EA0881CC22208276E2DAA2ED7A53F38F87E573A5A0D6284FAD
+B6B5ABDA37F979B7DC4751399B2F5011C7D03E825030E75102395738420346A2
+000543B174992DB8D542BE6132F2FEF79A2EB9E98EC281B2C3887C10605D24A4
+C18BF42793BCD25A46802F9C81BA6317E686E03E0646820E8B18BF4F409FC76A
+714F15734621D4900D67B38CFFE439100A546BA3C70D5EFE7C4DAC35E6384C4C
+A3F8B00FE097D3037806AC2948090234A6955776B88CD128BCC4CFBF5028C143
+DA7F7FC5D70A3A64AE46AC6CD038F46FA85F62BB5D98BAF8E11CCD2AB520840A
+34635EA134C54B4DFA64CDE0FCC613CC1EFE48C3797E71488544E0C0EF8C4E03
+5E34FB6BBE82E3EE1DBE74A7FDB4DA1380D407DFC8BAC020140D75ECF1CFBA5B
+D08E9036C468EE1552BCDA18155DDC6BCD5E8D98A5012EC17D044C600621E6B3
+E026A951149C2E79C7A0CFB59C07D0447808B07867A2275B23A986E4DD5C0161
+0ACDE97925E9C97E925A95C086C25525AE0E2C1C3C93CBE00A715CC59039932F
+BC255CCFADAA10007F3B047756CAE95214191D8D7B25706C16E4F3BAAE68D39C
+BCACAC4DDA95901F452F6F4C2EA99E2089BFE05450CBCFEF754BF4F21710D28C
+E5DA8668E556ED2C2E95398C0BE97B97308965C6F283BB81F4E064B5AA46C153
+88F5B5C883C18AA44D6F95958A50488721F1B2CAAF5EE592E99766494D30BB8D
+7750655F4B447C839AE24ECE491F06613556A8001B0EEC248D1BABA839F6DE48
+BE9805152EEC267C23A54C49075F9810C30D277432929110152FF0799015C476
+D258E7C70ECF610C95C6AD5C3AED0B07C564B390773BB67910A9CFA50DE3D3B2
+0FE14C757F1B513AAF9F10B2CDB64CB711DED55DF29F1F041D368712C4B06111
+C53406BA25404604751B5A071D66A8CF00D98A58DBB1A04CA1B25B10173771CC
+AF1C685AE00CD44944A74DA7A40FB522F70BC9C7A0FBE747E77EF1406508AD8D
+9E6FB2EDA80AA90D86D80E5E524D0C83FEBF438CAE1FDABA4B5C00664A5BA5E1
+337FB49864419852232BF806F0FAEF860A11D0A77759B03AC0F6C4CAEFC51ED1
+2946C196E28A28804E623B9D977137B65D620EDE87C057BB0AA3B89C22DD1484
+F2A395163AB7A4EEA9E9A8665EC1CFADBE7185E4648D2FFF89768BB620792E4A
+8C1BF96AF51EF3C198FF81A8C2C6157D242E04F46DC7DCDE287202D58879F59B
+AA2C2B0AC0C88B696135FFFCB30F8C7D9A0E91BC60571087A0FD2C8149582F92
+F1CD88CAF92CD09CBFAE266A3B9EDF3E51127B4766DD00F0F23207EAA7B78781
+183B3111BEE47C11A2D72D59436648E533F1946E9653A1FF3C4E06665DB62563
+19C5385E933941256C69BB1A9558A17F0580A6FE87B45E906D8D0774FF944BAA
+D928B2FD4E00B2BFFFD195360A85CD6F487196778E8F0CEF7B2983F034E190F9
+350465B06572CF2A9E270CE6BF6E7452A9A276CC1CFA7E26B1BDAD09BA697299
+3BF21DA93935213A573DEB70381AFE3A49AAC339380919CBF954214418DA6F99
+88BC1BC75696F762EED6AEBD5982F8BF0520361EB40182CD71A94EC435E1C64F
+5532F9ACF4925A368DB63C7A430F412612C56EC74C52017CAC81690DDAE2F8A7
+3D623E51CF35A1881432D7F3B24842B868472F5F3E8E75843834A2D684CAB955
+344DBE9FF5EDC88C5B249C581655F8EF0D424829501B0CE72F550D003AB62F6F
+2B11043004293ABC34DA864E48C379BE77731FB2231577ED282CDF16370B1171
+9EF79F899149B7CE954A34A237BBCCAF6C7363A70E524588EEB74546DF78BE92
+71403ADA0F00E2EE7315D8B6924962178AA6161AF3C0452DBD77D7A5A3930EEE
+8ABE99F592FC2EEC4102EB8F4039752C779D0383CB28FAE81DD1A3EDC0F49761
+913CCCC27E6A324E36E302B0773A57A56EB549DF4AB0F974E93C7546CE843143
+58F538DE67FA58BEC66212A7BE13BB35EECDFA0D38574F94B1226BD21B098FEE
+042892DD1414DE9BABCABAC32603003BEBB126658BDC68DA5614E480D3BA958C
+AF8BD225F2B8476941433DCE2F15CB15FC247C4FD7F56B928F86B6A951B0D4F6
+83FCF0F69A12CC35D25948B936D6AB72FFD65E61A29B994C4DF7B36D145C1FE4
+3F6A0D840F9311C6AAAFCCE8F228199A2F0D663223394E0B9E6A2CDF604A1E52
+1A4B4B520379E6E84077F39FEA473944EB277157C5F26C6D02757915A4E4D493
+70B63D48A618686CEF97190CAAAFECB2F402578E251E67F87B504C4E4E4BD5CC
+767CA044A80EFAE5858A8C61614C1E6E5DE2F1342058241B4F66A3711FD193B6
+20D2E4C587BB0448D87F333816C7FBD38747B4912F4E8DED0A73ABD78731E478
+DECB3246AB1A893BF2571112AB7520299E851534408FAC53EA7E0279A622F64A
+40CAA2011AFB58D396453413B8AE53B3CB9A845ECBD4A78A409769B5ECCBAC36
+FA45D7142633904962340FB966F78278159F9E8063D646B68F8ECFC5FF8EC8EA
+942885782811B66CE93F2D476129476B35E7C290DB5F1600855C2C8797B81B8A
+049925996BFD098AAEEA778B6846F706164F94BC57345D787EB5ED3A3E248BE3
+966B82967D8A650FFC93C535FD2ADF8870CD96B9EEFCE608BC3D58EAF228C512
+AFEE8232441545B24D21044554447849A564D3311BB27735EC295012B094F9A5
+A2551A3B74E6D419C740C2E7431AFF16DB4CF2740DE96F4564DD39BB33055999
+6E77F3D59BCC55DC14178B61206A62451F734353C1755033FD8BB559B54B2633
+1501C4257518F5145AA5EDB3271F217D863F4B4AB9E35335115F303F16E9E6FE
+EB223F1C070E5BE61783D5D6DB0AE319A37D3EC895094D2BCFDC6CA29D753185
+8967FAA748D26BC8CB8FA180002A86C0F6EE9E844AAD12F816FDDD07FB58A27E
+A6B90A126A9393253B356377EA2FEE05830F0558E0C648EBF34ADFCF970580BE
+CE3E2179351CC0B2913602BD05BB7049DC69D8843CFA724643E243D06849636A
+F295327C764E1D4ADCF89688E0355E527D61B75D6E36848A8C401882C298D8A6
+927A802360D51F9B2DD3764BBB063DDB85202DEECC8CF7567B580C04CAE21D61
+AA60BBC5AE3241847E7756F1D084EED83896BC1000832F018BF6CCDC2F2E2E70
+60C689080CFAC3F1658FAD569F0B2263CBD57BCC8D48112D47829F7FC68B28F6
+9D6788002291BB5FA4FFE226174B878F5CB3DF446E87B10FC45D4FE01DEC9A35
+DCFC9E0A3322DB7DAAF168A534DF153CBF71550818217BF44A016D6D5160C396
+CEE74EE563A9A0DC648602DFFB488EBB29B2939059EA5B16611891DB0ED5ECC2
+5446A187D8BFFB122ADCC102DE61267189E9F77CE8BDAE8B426BB57EF5D76C04
+D7AAF522EBA524F933E077728F4C8E05358A8602AD8C2991EC116CFE9E23476F
+340446988110D676E870E2306E1FED72CA76386E1D860BF9A454B6BA79A01699
+9BD2814D57A9EA5FF86EF714EBCD06DFEC2741D59B8836C91A91F06C3496B6E9
+F9E13371FEDF71325A44C74CC1F98971DAD7AAF8C8F59CDEC4F67F5513F691CD
+C0E9A7F8FF181E21699AB8E7A620555EE2ADC9EF96E84285D88B482D0869A5C2
+1451F5FDA79B84D62FC7C0E21E98AAC0264B3FD4E0EC1CC6012744806F7D781D
+2663CD9CB6261BA301043B497684B3908F94D2251DAB15EE40D97A1E9F554D45
+31E599A848AE8CDEFBC568C1869D19EDE309A6604C49D6F39100C866E12EDD12
+974B1C38AC6F0C01A80D50A5AEF8491739144835299F0811423805871E411170
+0C6CBFC768043511ACB5FCB07A68E6A5BEE9D2DB6CD55FE58C0F6BCC869DA036
+66A62E8A42287B863CAAAE8895D09017B6464EFF55098549D44BDD88C4CE234A
+F9B4A8EDA8197165EB81DF2CD49C9FC0E6CEEBF7774F0341AC8400668FF23A14
+B09E7ED0E7FE7A502CE8536DA1ECDD842D963560AFCFC69FC719AE430BC63ED5
+4C9D7DE9A1935EAE40F226DEB87AB40C2E86EFB9D5F8A3DEEE39DDA64E77EC94
+014655AF410534A116840C069140B21D5BF3AEE9CCF9EEE161A7742F1A5DA36D
+4743C2E07F5AD41A1EFC56CF49E16C1C1BEED692F35679436A8DEEF82034B07C
+AA074F26B0A532893A86D0081BFF53E7C9DED945745597870D545E38865407ED
+05DDD8F3BF4527DA9513502ECCBC13E4E6E8357BAFC2B7B2F5990A3F7C3440E5
+F746B6A0046AFEFBE7E711DF33F775D0ADC43433CE78B6E9BD96F3115FC8DE41
+4AFA0D0F9898C01A61302CE01ECBB92E3FE852BEBFD65A07AC061EA3219C4029
+B3E4F18D2B7611C124558FABB1B7B2591154D51E9FB46682B6FC368B1F6A2950
+99ABEE0C1C22667E4362F28B911F37B37B4F6687AFE146E1F13D801C553558E4
+08B32797E788B89BE01B199B835F029E38A98A02DC53B0C113E7EAAB115A940B
+95BC297FB350151F18A2B7AAAFE23A5878263995ED04F71FA07949A4341933A5
+F6EAF32DDEFD511391E4D4A557FBB942DD29C067AD9DBA677B27861F1247D79C
+E3C75688D2EC3F9E24A28EA0AF20C58EA668530BE32123DD266079AC351CEB33
+60212FB8C563BF8D35EDD113B4113E132F6F9FFF8F65FBDD768C3D637CD0A6D8
+C014BD65006FBF73019428DF942856F2077D866100B868B192999E64CC15D525
+5EA716BC7345999ACB15FAD541418EE57443D67C04CC5373A8BDA1126794B5EA
+EB794F25F4435E1DFCF3D4C260057A6A692561D6608E03AF452F525AD82ABAA0
+CF0D8C2C4B73036E48764E07E3ADA4FEE899FD5A0ED4CDC78257247E1D7E1D42
+EBD74B2B5FDCB2A8461C7B7904DE9CDC4A971EDAC5DAE8C5E58A57D635AB32D4
+187615AAD0C04ACF08B0A3B162C70C9CEE5B2C3E7380AF786BF395CBEBBD2921
+2B424CA0BDE0C303EDFFD6D1BC651499C59454D14EF77E7349EDF35BD16A3B18
+5BBEBCA512448A2F88E0A4AEE2D1D558E3D04DE9FB68988A7BB2BF3B1DB48756
+35D41CC3E98B37F3603A59201C66309AFA22A841325F89B35331B39AE70D97B9
+9C97D3C63285536A87C3A8D506758BE23F1D543FBD5CFE653EDAF1DC6AA37081
+202527962AA2DBF33D707C437FCA2C6D0BDB6C3C8D261E7D11242A0542741288
+BBC0BACBD2827D9BFDAF39239B462E9F10AF5C0E0F55C6869123E0A71CC6EA21
+24F124742C14566E8D7D731215A5BAF842967CD28B2BB5C9375145AB8B718A53
+5C352DBC27A507CDE58231096555348C2B9B5D571D1382CF63E06449E580897B
+1F9A3B89FE1AA78BA19A60D70E33C8D7F00C7B195334AC50C88A6A233FFF4A28
+6B63C58DACBD6F61F4DF90ACAD7B3AED7AEF8988A29CFF06CA1A0A843EA8CF02
+E7C270F41885D9525795D1737907BF3AAEFA71E17195C8A0351F0A25202A5C43
+B1B6FC95656ABE77FCC2D1879212FFDB5A4439F03D5DF48C62809CFE71B99F39
+79D191C74544F0CCF69DF9E07119665F52F5747C5E97839C2C761A624BA8B94C
+F9109BC3F888EDC85454DC75D1114D748984E2DAD65DB0DDC35F22C1057C0628
+454440634B2466DCD378881D6858D04C25DF9CDF854FF82B4606E198E7A5988E
+2665B8CD699369DDC582B75D9F76FDF680B191F066EF071F905333655652CAD3
+D3D815360B10EC3294A845D48FCFB6683BCD20BB5C73A6046D3D8B2D6D907AC0
+C4FE8FBCCFA3ECA95AAC1F3E5563899112E6298288601F1E2B0CC248510A8521
+792C3158E8DE36AA27049B701CAEB367E22A1F7B354C85C2F95A468ACE3F5845
+2D40C02F6033E18A13FAD73B5E5CE81223ABA27089B2DD476AAAB4C43D31D10C
+8BEE8352E305C086897ADD7A4F5FF0FE9266735221F487B8BF1059662339D1E6
+CFB7275ED5890AD46805A8BD16665EAA367DBAC0FD66E1670F2EE9B9316E4754
+DEE9FFB246D64C23DA5E703BA2C0E077EB6F418D42302E6F615C56134595DB4D
+9CD10F96709B21CC85F7F10A2537F0AC1A660E889DEB7C4DDF1E6BC07C56120F
+405BB4CC05C381CD461ABAEC74C432D4EF99EF4D908A159FCE9A2C6DF7E755EC
+84B294DEB9BA3C9C782C1A2DCFB5D364E28FB7E4FB400E0514AB41291D03D737
+908A49B5FF8BD840CF42E262790CD00D19CFEBF7C899277A846303B14FF50B14
+F64B81D17E6CCF6820971CF9F85C26360ECA8ED190F8DBC7167EDCC4CD1539AB
+A71F22652DCA55585C8AABDCB166B1665FAB19EB277A7636D883C05DEDE41728
+271B6A58375A5B6723C40AF669814BF03A7C7F9A78A0F058EB0A895C84E7A8F9
+8838FFC484F30112FE6840441257E06FC3A4C1B7E47315676DB89B4C07647433
+595A405CD47F15535AA65CA09FB0B2C93EBA923590FB5D7730D153A05B100550
+F1B74EAB6B80A87E72CA48DAB3AEB92F8E8569A7B1B84B5829C461AB3A6920C6
+6E3A27F73355740272AB237721BDCFAD78574010319D2476DE3DA5782A971CD0
+A440BE4C9F007334FA119905A4A036333DFFBE344823E7A8033E96452676225F
+0CEE0E7BC245469D64C7311FFE67A8E63744871C23F9619A65A0990ED9E09CC9
+4422FBFA7F662E8ABD6948BB673CCDCDCA1B536AA7F4857D7F45FF0D32A0309D
+AA46E728088B4B6A2C56727356AD68E142270D328945B8D55CA38673C1A0E32D
+C31001A80535F6C7506980DFC69E859757AAADD84CF61BFD151B6C0B58D5F365
+9ABA2F7DCBA670F0AAE7F6FC1A315276B03A42668BECEAFE1E46BB743424536F
+29A914D40715AEAD5540298CE232A7C3D676C5284641D89797551C2B5CD472A3
+E8F4E9B794586A9CD11CBE73FE6E442D44B7B50E60D2A441AA072934968A085D
+E2C8ADE8B71CD577A5E7D217EFD875540E6DFF444BE94A2DEBE10DB883D67489
+6FC65BCF055F1678EEBFDCD3F2B168741ECC4E932A226F2D6502E487F75AE667
+D4B5865BD41A41C2B5FFAD3660B0358C380924797EB0359C4065725F7A36C0F2
+9A3A5E121129C7F5984E0B72B6244A50FECC3AF5D7A3F27370069BA175B90E89
+A6BE9F0BEA7A7E25968DB6C275E4C90FFF164E4339399EDA03F74E37D4C4D67D
+B304AD334877948E785A33F5D1F95F6F763C6618C9557FEEF62B264233405745
+2C6C2430799326D1958B40D565EA455AD1C2BB4AF77C8F18365752F3555E9351
+93C595DC5C7627551D97C89FC674A4FE6F2AAA6CEA232A2189E806989E7DBAE4
+0005C45BA977B82C3E6197C18457F53EF59AC7B5A8D05769FDF2871F38BBF1E5
+F2EB446FE889E03A64B089CFB51E1F890F4677DC691221C900272C0DD67F5F8A
+E566C0391E00791E18B6E7A1D547A44D084248315DC7DD18496D92D9A9017B3C
+31D1F98D62966DC47FED1B94ECA7BE286FCBC47DD196448BC27EEA81A9706A30
+A97BA8BD81047D0179518B7676EDF5D62F91C53BD054E23A8E0F45BCBD9746CD
+C6EE844AB041C2ACA702675A5D6B00AB2986AD1B5E6DEB491B257045CFDEB4FB
+217C8669C8BAD3C99B870B461EAC8E7B5B64D70975FAE88D0ACE5BD8E461B174
+E0A3A99449BBEE004AC29F3290B6B5519065D7431F7E3DC7811D126C0EB3E79F
+3D2A38FF95EA1A744C576043C901058FA7C72DB752E315D4C16EA30ED5E64AED
+46F01E59BA974C9781FC7276ECFD8BB9F1A9EB72939C730C36F335B337278131
+6E0CB304F4A4675D9FF2F69EB68409275C222C9238A80030753D60604FC66AB6
+CB17CD94B67B
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+{restore}if
+%%EndFont
+%%BeginFont: CMBXTI10
+%!PS-AdobeFont-1.0: CMBXTI10 003.002
+%%Title: CMBXTI10
+%Version: 003.002
+%%CreationDate: Mon Jul 13 16:17:00 2009
+%%Creator: David M. Jones
+%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
+%Copyright: (<http://www.ams.org>), with Reserved Font Name CMBXTI10.
+% 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/CMBXTI10 known{/CMBXTI10 findfont dup/UniqueID known{dup
+/UniqueID get 5000771 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 /CMBXTI10 def
+/FontBBox {-29 -250 1274 754 }readonly def
+/PaintType 0 def
+/FontInfo 9 dict dup begin
+/version (003.002) readonly def
+/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMBXTI10.) readonly def
+/FullName (CMBXTI10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Bold) readonly def
+/ItalicAngle -14.04 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 61 /equal put
+dup 65 /A put
+dup 70 /F put
+dup 83 /S put
+dup 91 /bracketleft put
+dup 93 /bracketright put
+dup 100 /d put
+dup 101 /e put
+dup 102 /f put
+dup 105 /i put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 113 /q put
+readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7
+5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99
+8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716
+EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C
+02CE8D8B07183838330C0284BD419CBDAE42B141D3D4BE492473F240CEED931D
+46E9F999C5CB3235E2C6DAAA2C0169E1991BEAEA0D704BF49CEA3E98E8C2361A
+4B60D020D325E4C2450F3BCF59223103D20DB6943DE1BA61972029CF9B4E1F6A
+FFF97E53D6378FFF9043566D67519B5C031015C0D52A7B292D219A2BEE49FA56
+820ED09A28447A71C5CC595AB286EE693EC741AEABDAB0688F7B46D9D584CB99
+DEB048F0C0723F0D7FB57C896218D2AA0AA4DE241ABD632E25F0B47243CB7DA2
+EE53CCAF1682D9B580006432DD7D53D06E90B3457FDBE18179DE415DACAF00EB
+4E01CB49CE25429F8BD45069477DE90EDC87EAC15285D321569F8C19AB5100B1
+DF31636EF29DDEB4BFA2AD85B83CC7112220D70E69D5A39BC3558F067A93C6D8
+7A78976F7B93A589F0271A034D1A8BBBF082841719E2901720E89568E9376AEF
+8D41ABE4BAF9E79809F5BCACF29858F8675E37804758D58F8909027A00CCCC32
+5441C72BCB031D09077BA9F778BDF52F172C2EE62F0B98EF852ACE037C6240B2
+671C0F01B7D4A9276A8F6DE3B6BFC2C34DC309E5888E249E398CD60549DDB61E
+7E36890B1E37E26126485E49114B7CB938E2733D9A14288C3A763D326D7D9183
+46B970D455050FB97612BDB2EB29E7D71C909B10CA1D479176652712C112376B
+085E9F99C9A488C8876954EFB7520CF97D08AD84341FB55764879C5CDF8EEFF7
+DD31DB564110A07119E52453B778531FE181D09D1A9799D7AF4773AAF77EFF2C
+2091194E301CD88C97CCA29AAED2CD68ACCD8CCE44B9F24889A83048B7208BAA
+84E136C58F9DAAF73815C6025DB64C45014BC472358DC014D243D189ECB1EEB3
+267345D1FF4B6A01246CCF5FA90BB355E3734A7C774DE68C01B5F356D645C4E0
+1D0B7734E05EA28AC6A9BB2123EF3C6E27F52982A7612A352213C6AE3E80A819
+2304A70DB8A2441DC5321ACE962C6480AF736920B64A2B433DCC3519EC8B577A
+30B0819700A2281212CAC280A0DCC50E78295B98B2DF97A78BDA1879E6B70C10
+7BD15FE29C4EB1D5A33037F0AC9BF8CC1FE88C52CD114EB33F1C6F8ED88EF98F
+DD0C3913DFB36147F581C91CE83CD73A0D012F3D0FFB162C0F4597ADC8D93911
+0DC6D68F9FE702FD0EAC5039D462756551C379C5F4DBFE05AD2D1BE0EB389AE2
+391E461DC4455E0D3C3E46F3FE9BEF488730D71ACAA63BEE72367C52C4F84766
+C24E13D1E63791B4838161AEF8D0134145BBFA4D848CFFF1DED6814A7215F4F3
+3E2D654C27F3279DBB22A568B7BD1D5A9D75C7778D36C36BDBE32C8FAE4A9209
+20AF8B705A77CFF4AA9ECCF6011F0A359556ADBEBDAF5BB706FE6FF4A745D841
+102279B66CE0C842DF8C2673ADAE354B2811C48DB05994388AE4053F4651A884
+48DBEBF20FD05DB617F8FECB667B748BB5741D6EB62DDDD0FC58537EAAD6FC22
+A11ED24D34827C3446C8FB81E4A0E904206A1053AA9E718B0405C6A7B8B893E9
+30E7A31B9AF8A56B5EFE72FB5AEEA79D56E19E037BB4ABCEE079ADB53CA546CF
+D98F7B38973CE3A6DFB315E87DD1E60C34344656D76C16E1DDA43C2ED276458B
+11D7F4CF3692525C0D8B6307A2993F400760275A8648A0048E0C406279D48045
+D77A92E99F9CB5C05E8202416EB6FF308C4C979895211450BCA82B19B33E7240
+CEC18204C09AB3D7F8025C0C909BC03A1851287ABDB975A32C3FD8A1C99DD90D
+4B1CE2F5DDCF140D4D5A19F33241D27E8EBEF4ED569AAC255E47813F31B30109
+7075766D5BC1731B082531F3D132A937717EF67F496813139E8E263C088F62D3
+DE0EA4ADAF3C088F562B0BACDC184DA3BD0D5A8A4B8EB487D0B6F1B74A969942
+91CE8CC7A33670BBDB3F1E1D791F7F1D3A3F3183F2410DEF99EB932CA80FD931
+C62D09A0ECF271B5BA043C9A214CE631CF8239ED0640BD134737A3E31B851DBA
+912B507F72B80DD9CDD23A697F91D66E59346FA3A75726C386827D910714C989
+5464B041E69F4B87290BAD381600AE0A976148CBEC8DADBFDF0CBD7148C3AAA1
+7AE2EB15686E1AF68B4C90130F795E86C9AB88556E429EC943147DF363029B81
+4C637900FBA19DD98792F4CC9888AEFBF9F7765B817ABE83494CA3FBDC79CA03
+86CB628F75612209DE9CA4D585565E9509D5DDB8C00A229F07918B062265AB29
+176657CBBF2382A219E573667B14687647DAA7E9203FEB4CC94B10B57F4B1143
+C4962B6A888D62093A1D49E2C7D65C29C500B61E810BFB94DC2DDBCCD8B6C61A
+911C2643F55E9E2101B1DC7D7176F7743492AE7CB84D460E8C00E91E5486117B
+D9ABA9E16D1606705A0F698EDED5AA877A2CE7EEF25ED1D97EB348115CE5BF26
+8A48BE961CDFC6F543BC89DAF665A681908ECD8CAD545D0A72C9C184CE67F6BD
+7B51399925DE379BC59E9155A30C67D73D01BCBB1886F8276AAE58B2422DEBA8
+266CADC83429DAF4F80CB25E0BF455CD7863CFFEA9E318FD043908D427CC07DD
+683F6D977680E9B4F6333D4BE7E729F4D15C07C917862B47F0DB2E31500ED372
+A556A8B617FADDA12A2F62DA2D9AB46479FFBE4FA42D9B8D597CCF4E6D04B418
+8A9B523F4678DB40E7F325F81C1EB345D71849E57B059653CAAC7D9D56CB2E3D
+D4F532A2D674BDBDE970D9211A3EEEB005128BBB5E0C313B42554F058EA1D180
+BFBC9521FADB7DE03EAFE314CDA873C3532CDDB83EB0A6A7454EE85A4C36AF2E
+895BE8309FEA168B73C6AEB2D454B234F1E2EB554C7406B79A859F6B303BE795
+B6B4DBF104E75838F3EFBCF85E0B865779B016AC38272F8BBACDEB13164EB282
+B59BFEB1E3392885916FEEF86A8A975DB9BFFF17B9E2173CD18264BB14CF5633
+FD4BA46D7692CF7CEAB7EAE80385566061315F8DB8A7F495E68D4008B09BAF99
+DF4275727F08C5FC58BE9A084B267D0BA62A907F22C466A3A79CEA6C207177AE
+B1254F0810E6092DE5DB1BD3F238EF705DD4E806E0EB1988F2AC92EFB8843064
+3CC3CA506D9AAA0CA559AE7157603D34BEC19D6019F0566974BB835DA172FE37
+C15C0367C8FC164184648BAB678D37871F7F610EDAFE3F49289C6320F9CC113D
+44775EDE28FEF4E14EB5B426C06058FD32AD12B42A2FFA0D9CF0C7BDFB6D7C4D
+72F4FDB716D7C8E7DE84F614487ADF4DF5F304370043B25E07445F8C65109708
+EB771F62E01350B7C9B659D05305CC3E4D94378BFADFD8D94E5704FEB2BAF58A
+5B874C7EBCED806F068E93D4DB888B325CE246D02D1220ABF55CE646DFB45F07
+CB8488F229A5562968B079C2CE2067B22B98904D977E3EAA82A6BD44135A6F07
+36E3252FDCE218EB5DB8773E2DAFFD1DAD53671EB3D83A275D011BF5D501A22D
+407AE09257CD21297B617E0443FBDAA297D37F66AC436DB78B410E79A002233A
+0D7DA619CCA9DA4714325A51CB0BBE9EB6CEA352BB1A0A2FF83610B2A17E1948
+0E9285E1570CFCB8EC7E1D691A72611D336DE5C6626A1D1D2DF363A1D781DBE6
+1235F1D1805CC2A8C670005F84FD468167F8640B12929CF347538B94EB37DA39
+904D4763D93E757AE2B4C775D98E23BA983E35992A292A04976544EC462CA656
+E5EC37EE8EE46BF1C3B0B4C912DF05AE1535CC654000B06BCDC95D9C6B5F36F8
+FD8A0EB31A02C2B863DEBF8FEDBC57D5F93D2604321FA66070D14FED60441E09
+999B90A5FB715347583A35314381554031BCE4E6E73AD3FCBB61ED0D4C015863
+119C1D945E981AF3F38C81EB3A350A70A63EB06119965C90D7EBA669359FCBDF
+A87C4DB920F8F3D99C73A0DF7E10D3C410696D679CBFAE831E3E99FEF6C038F6
+69C58E1EB6F60FF587F5EC561629EF429734CB886AF914AC3E6BC04F21D73F18
+4CA12D7E033B301C181D15101A986BB95132DABEE082A617520CF95EC9069499
+A02F073D7DBE41726B51FC05A9348953495B4CDE8D0A8F8C04D07ABEB3BA0076
+3A80F2E3B5804947E690DB3A7B3BC6C48A67F5D45F5C658FECFF28790B709385
+D24D02FC3B0C9F9AB04E168BAC78F0837D9BD402C1ABFA84148FD815240108CD
+511E50FB8E64F20058EE54E4ED45181AD9BB777DEE3303C4991EF8EC56B6C278
+CE63F6C2FF92308A25B9AFDB4585A808AB3F03D8A15A20FFE399DEE429C959F8
+B3DFDF81433C41CEAC874479A2C51F9FAEAAD5B7B23230B99523FB256896A85A
+8C48C057A70DE745F753B4183AAA6F84B4ACAB090F33CC2C31186D1D8A0218A7
+4E1987D86B9C3602BA294CD29FEECE4187523CF511FD075692B1C080A5A22281
+BAAA4EA701D7573D083E2F6EDEA3D49FEAFF2CBF989703E83828E6C7E324558A
+FB73E3388F0B0E6A97EDED5A9553DD33DBBBBAF2174A562AE2B8A4B6E7D13E90
+FF9B7D650231CBF9EE48DBDB00AEE2E0FEBF8D6778F19CBCB8766A0ACC9BCE26
+59771BFA97CE7BA811A3A6C8CBEE899839E525DA2ECDF66CD99FCED902AA102D
+92CD9A279453BA74EF8C0CF32C11A412A05CFA2C187833F885F359DCEA34EE24
+E90F7F107A23D9EE269C15A647916F56C32543AD5F81D90C84B8305E5BFEF1F3
+B356CEEB5BAC54AA00DC9C6F03B4AFCF7AA4D31964377525A661FBB743D39964
+47AFBF76C8FA874BCBB374B02C538AC626004EC8E1E9030D60C4A097CDAFC143
+732FB7431008CF28ABEC4529F4689720D4EF580676CA855FFEDDC66B7C1DF07D
+B89EE98C0DB6FAA5551ADE4D674B51E4E3FA4B24A3DB5196E01C6CA1DF5D669A
+3C0FC57DC1F576C2BA14D5DE284614AF3276E3A1159CBF8D40426A60E8C5DD42
+6F1307222DAA8AA78BEE55C27E26013120FB5471CB33CA4FB642B1C386018EE3
+D4424CA411F49CD569CDACB51AB9BB5E66E1E13ED5F8BE0E912BC13C7B23E10C
+042C33DA19656264D7473B4E0C3DABE14F9F94450D1113C88EEC18CFEE640A6D
+9A40DA9CCED6EC5E2E9F1B357DA635C3A2C5A23874E496B868FD0260D30F1780
+878A900B90637A1237C63D83335A3FD4A664321C048BF2273F9C4AE3161E1F06
+E6EA5F3F15CFED43C622E0D7E245EDFB866398DFF2EC994674767B7F3DD853CA
+356A3607C7BF8F9C6889EB9942ABE469EF88368742FB5C41D06125D2042EEA41
+4B344AC718FEAEB308302F5607C06852A30CF778D236EC90CA10934C629FD598
+90176264DBF9C1AEB33A6028B9EF09B06BCB182DA58ECCAA4E2E1FBB13868C98
+CEB61223E9658EBF003AC67493587A156EFBE73EC88CCDD55C9C10CDFC52F7A7
+B274D631DBB5D629F41AC8760741953A6B90C6E9E4D2C79702C59EECDC65D894
+8317D67808CFBD81953AD32837A42EBBE48F77D6B387E272855E54ACD32D3377
+E19724B3BB370A71C633C3A41A0523FC219EFD5310EB3CB5FC93F0F9E6BFB115
+17E2B901016CE8DD44BFA8590EDEA88F5229FFDB83E401034C826F038D58C19E
+54704A4E2E36B7738FC6F80DF4D82A5285853C49F9689363392536C3BA25C00B
+7885E7DC3951E9B5D22414C9E9A264954CCCFAF8BCE70CFFD4F726263EBEBB70
+D52A58B3D6BD029F555A630D687C7E7103C8B8F2B33EA41732D6FB7FA999CCA0
+185A13C8BD80A2762AB9919C3E9FC07556BA8C7149B4CC5B58DBE84297E3E8D2
+B34591D9FCAC659C0FE115F34ABA807DD94410AF8F532418382EF8F7980E1598
+A97A61926B809FD771B2795C69E6B1F15FF0EED329FB793FA3FAF0580ED07F51
+B0E1BC1401EA5026897990CF09F9750268AF812E89DA551EC14B457836CD38E5
+C07179A3EE0ABD3A85C693ACA829A5E492FD4F1BF12725544FBC81FAA2004784
+DB367184315C68BEE9FBB1D68F91C9D0901BAD3BDA4FFFC203C232276A495EF1
+B2B82F36FE36716733F0E993B19407744C067324BDD2D5641977B1A118DBB844
+104397F963CA2E01B7155CB84BB642FC315C028FE4502335F761A9DDBEF7ADE1
+ABE87D31AF848A5285BD8328ED3E8A2A608590DA11968AA8C0D8010329A9E172
+AAC2C7D0061B14EDAD1142FEBD3DDC0ED20023CF06BB146B3F58A6A197DDA1CB
+2533B236FAF2825E8DFE70B79A0938D79664C1D26B4412FD10C76729CB22392E
+8976960ABED0A03D5FDDC7C5C2C6221BA1FA08020B88FD9AA0CE8B5FD26D58A6
+79339A2AE6730746B8413B6E05361755FBF11FBFA4974CC1AF36136803DB8282
+A7F5429327B875D0FD222835C7AB82049CBDA6AD1731F6D06AD2A20027765CF6
+2F7E4BE9521465A7C3E968DBCF95F2C62EB3829CE6DFE845EE20E8EA89CA6C46
+BA14E5A920D8E28A4008C210F747622AE31F5F9036C70FA52BFFF08A4BAB3D5E
+A2EF6E8656F89058F4A67933AF30E9A16467D563B2782268E2568868F677650A
+74F415289CBAC0DECDF828485066AC07C011623DE9643DDE39840B1A739B33ED
+3EC705C13DFB191472987059E5017002D278168B5280FA2E26C6D51CA663B384
+F5CFF4A6232F5F68E185231EEA239904319E180F91DA98A63B38E16E138D2DCB
+CFEFA5F3E5AC6FE764A3A9F3EB622117662AFD26A124933CB1E04AAB53923AF5
+D9DD972536C4904A1602040545A9AD4904D867C1D0AB907D733EDC19EC093391
+3B0EE96E8578527FD3D1204A25982635CCA01A9B101A843F6C373AC4C8E39E39
+BB13AE6A0EA170B59987488481D38806D429E902801F9CE25EEDEB6012CC9EBA
+0736820F82C640CD8C7D852D9EFFE6F769D7FDE1DD628861FF628BC0BA8EF127
+26F83D7FCE6ED8785DBCE502DD0571A76D88B7FAC1E2DB24DB97394937A1EA17
+031078EE07D00B554B9C892C68B624D3900266E8850287243BE44F11F86E95DC
+00E89C5C47F573C0A7F1CD0CCD26498334C7D37A3AF4457CA805446A74344597
+8D8C3D25FBA2350A878E23DE65D49E9E5F819484DC1B85ED2BDFF923216C101F
+D8F411C1443AD7BCF5E90FDD6BD29899C86EB3ECC82832FE75A59EB3FA696F26
+96A450E2504A473123A8D24956ABEF5ADAF5B3BB57FFA5364214AC0E9E245CCF
+431DFB8A7A5104BD97D5E5104CA9A05774D0FCA9EC0458BD7289794FF19FD00E
+2D05086336902514F5CF8141307C037E5D2E30B62D1C8A5A7682BC941A5445D8
+A17F5670554AD4AE24EB95524CEBF2599D5D00AEDEE2B5537F869A46BF093296
+C77F86ED5658C3DD3AB9C25850624A53F6573A51C7AD9F43EB8320DFA31F7F58
+E0FDFA9FF640DB5B55FB5C4E014A8C50E062F13D573C845231F98CDE7414BD44
+0AD4CE9E00FB39BC93C3D1C8F5FEC652FC28AD9EF814CD964DEFC5813828B0A3
+8AB0E0BE6E3CD60259B8A50F95CB02EB685DDE048D73DB0460985EB16DA749DE
+3EE1625182EDC552F104E547D22E62501D9D4EABC09531E6457B7AB148FFBAC7
+927318F8BE99EAE5AC9E6AE81081E236187C2D384A92494DE6BD1FDCC5A79413
+609F865C6067EB60B83B1E0D49D2CABF88F252377787534037AEA74A842CF21A
+5514F3A89A00EEA33793D63040EC2E1231C04026B8DFE67E0E0B460E3BC6E60F
+71AB1C05F295F617829255BBBAD68D6D7E5AEE12DAD835A693A661AD9923BB65
+C781B9085640D3A5317C312DD3C6159C15D8DAA3A592C9F4B4AB648B160E4B3B
+D2E3DD475573570F5EE110AE5BCA3C499513061F202DB76ECBB5316F21F04195
+4B9EFF754A628ECC2B68077CD6072C630CB99421BA3D0D1DA24CC09B8D42E8EC
+B52EBAA0E16DE13F0F2E235292A0063ED390D9A8E685160134E931F924D150C3
+B1E315CCC86F2AC29D02D0D98DEB83DFC7531128E0AB55B5F7D161A44DE01547
+38DE065666440E46D94CC4AC21C42F362D222A5CEB4FE9FAC0892ABAA08F3A3A
+B76A22CF73E343BADA5C89355A821C67A626C0FA6F8742178B9562543607FA64
+8F9FC0971734B99E476E36E9127419F27469DD3BA6A1D82680155B46073D42A8
+AAE4A6F8B0B2ED3A99469BCF9EBD004DB631F105D77CDF18A2EDA5801DE620C8
+987AF2A7C5BAB3F09769CB0CCA5B1CFA6A01DC0EDDAF693D168F9CD580D7AD66
+A2DE7D9CAFBA0562AB6D20C4F2D4F37A3B26398A1D5AD2F84F0E1339008A37D7
+6973B67E1EDE40002AA5F65AFD81A00CA4343ACD98C94B6D69CFF950270DC1AB
+3B2964A1A9472237596E8DC4F671A68F8B02EF2EF44976FF68DF0865B18F403D
+6A88CDF4E0C8D41C64B9B1DEB72F0E9058E479B457EA8FCE8009D30DFEB19A02
+D18CA44689E5D8C529CC5ED9063DF88E60ECE39B16BB1DC5670D0AFA76DB664A
+C90B081062A258628F5357A01AE05B363D5D81799CE0AC2652496AB5216C1056
+3A49E606C88B30FC6EB350824BA11FE289406AEDBF4C62820D54C94ADE5220C5
+CFE7D6A51B5641AAC362D10C7E4B867BD72CB65FB76351A33757FD8DCEA2C82D
+1C8753030D688E9E94B6488345D3CD9AEB41C852C0C84CAA0169E8D4F35B1A2C
+633BFF44293BDC2F54B614745D2CABE90F1E988F4ABF11764D1DEA90BF39A7E3
+794DA0B4E6CCD8BF43A72EC1B7E051869B47C9D1F5449D19E78F48AE1F8AA487
+35AAEE3BFE98295D2C27443256CC6555DA1A22700A871D17C2B782C6F934253D
+1584E0224CF7087BF6E2F03AA7191BFC52CE956D8D8488FA468A1A412D374C8E
+ACE6808DFCA061E6A7B768076BEAC635460D277ED05B6A05617774D3E0CD8180
+B4DF56F7214BCA9CF05739F1E1EFF3DC00F311A2CA3C0D82FAC439E0FAD4407D
+B654BA4F1D5B9CCAA27357AA2143EE05748D87B78BFECE60EB44758A3FCDFE2A
+58996CD2EC5E04BE533984DBBB5E8FC03A0C16F7721F30034437D13C9DDD5DC1
+52A5E4ADA9BA5FA9D04B0FE29FEBC2FB36C963577CF1BF8F6AE6FA995DE61A98
+001C95E723CF77639349C64146DFB14542144100DB9244F5A4E3CCC922356073
+9995968DA12C7BA6298D386975E4BDC1C23480B11C3E92D85060703810D54224
+5C8CA76176EF03E8CED5E4CF67712236A523809FF502B2876EB4E17702B6662E
+4ECBED9CF50A81EEA31A76AC26844AB9F6097CFB414C61DCF2BD5486D10FC596
+673C91EA47556A9904FB4B92753B0306AE4404D75B8EA49CCD5B930FFE4F671A
+793C42DC7F1744D7EBE712CAA9DA28449F0681DB8BF7876C89EB9AD406D89DA4
+24619CFA6FCB66F243A85A8AAA17FC475DCE1F3D668EFD372FA8C88EE26F6FD9
+DD8CE099722433FCC27434566BA2501432B1755CB658DE405C665E111F92A23C
+5B9B2670C72348E14C13C210E5FE82CB751F86917610F736F7293A3B0D73D16F
+553C5339E48BF928CDA4FA733CB66326D94B42525BEF18AD26619E1EBB71D616
+BF57F4287F4E850126F82D2324BB9B83FB9B0D64D5A93D986A90ADE11ED3BF26
+23997E645570ED785D5F2CF414570FAAB2811C2EF4E3114F70B1DF1C13D3697A
+761091E0CE4766DAC5220ED404E80B56B7614014AFD64FC2DA8709EC6BF80A82
+384DFD26F076FDBB7F01BC04193BFC329EB97EA88AE980409B4D23CFB03FB249
+21D76D35F6B9B1AFB7FD88B514F3C7F9F6FF9E02F0CEC82427BF2F3E51D0958B
+A54E06CC421C99D8C7DBC206C06E887CEA9AD233393E60FF1D8F0557939D1CED
+BD433DCD672A3E7F01219BA7FB5BF50A2D237E5C9C9278BCC6E91BF6EB86AD4C
+9F549DFAC4DB086A57946CEB86AB30986DFEF4C2286C8C78BA165B77318971D7
+BCB5F3FBF89C212CE2FE76473F6F00E25CAAAABBD569EE866127C9ACB6A05D40
+67A3942F542D284B9691D63FA54515CA19BD34018B0315F03E172525841122C7
+36965B84019305C69FE9649095CF0970AFE5BAB3C1347E8D9ED65AA45E440E2F
+52A9CDC315852151D3BF4BA765D6A67A48B1E66EF4FDDE1C3877469E1E2853D1
+5DE5FEE0F61DB250C0BAAA9CBE7D3C3023F76662852E4CC618E0D790C8821D66
+EC2DD46874AA3742EBB1556AED8EB2876F1C87756D1D1EB1FE5DB569E1125667
+E16E78A866B232AC4BC895963507AA8F23DC77E29F46CEEAB1B5EF1B6764039C
+75F6784DF3D4BCCF3638857C2539204009A5EC7024157C7184A59AF0C879FCC4
+34ED2DEE1BBFDCA7729BD0C1D6992AB2C559AF317784186F483DBAF6BF62690B
+03F6F8354944C93C9ED11130752971A7D0C2025E6153A68EA9426DA1A0F4441E
+AF5A92410B9174881C430D9ABB9E5C20600CC01CEDB420B9E37807628D97FAC0
+58B8FF3742A06D5E52DBDB7E7A02B1719C111B53B9F1E38502FA70B0D1A3EBD0
+9CEE033829957788C1AC36D2F6A3A931511C21DB33BDA383C2C5146027BBF167
+8A160AB6FAEDA3831B8575668FC61C9DA553C2906CB57D91810892C8D89DF85C
+F43F5A8034A4551EAD4E0FBF7A701B9D54FC11448FB37F843FC0462101343332
+B67E9B1929073C93EBF8AF8D27BC41E4C4286E7E94EB5FE9C333442D88553B24
+A0318FD22953BE3926EB07C900AB8448ECAFA063AC179E4B0300E597B6D38821
+B3D8888B74D05EAEE83D45EA12CB299DEEEAA71F5021ADAAC6E602DA48F5E2C4
+5D90397AFA4FAB7C62F406649EAB135AFE71F12EA63E8C4ECAB3CF6DAD5F588A
+AD4D85255A3FA3586C3C83C5E0BC04744EAD5ED2E4767C8ED53EEA84DE8DCDDA
+53A8E7A35F3CECC7EC3AF65AF81F9E7DA3999FC2DF98A819BBE2D6A770E40072
+C9E006B459D32170CCDAE55C0211E6326ACA70F87C0F2D266839FBBF47270998
+D06E699FF0D2AE1DA92A91888AD93416F2805826E4A5B5C3B7D715E2A03DAFC2
+31AC936929E78EB03A2438637206A7941CF01E139CB0DAEA480577D810887B64
+66F20492456922991760A1D18179EF8A78B47477470CDCBC8A0C490159701EA7
+8186308A2AA16B6F0F3C41B3E006CDDE225157237FE4C47ECFFC32A47F34308B
+A76616B07CECCD93B4DEB850DFF693D897DE31C431EE1E4043C38B6C1EE1012D
+6A8A173B8ABEFA6254FCB1426922AB1D2FF049A3C265C74A6EEDBD83A48A043F
+BE0F850C5C09132A031550435A996AFC745357B46FE3BDEDCEFE1BD4903EE143
+F0FF843076EB572A3B7E37E263C7E30DDCE31BD9E6526019082E62A30D63CC56
+41E6B759E2925B0D92B97A572D3A7F7C25E9BC0235B5593BC8D5F837B42F43B3
+0E29106F54CE550E7FBC23ED70AE2E837D717B41D89FD168801B598E9A233568
+024CCD95C63C9D16C8E9BFF1E3752481180172FA79993E8A58B548F8791F7AD5
+4A0804A78DAC8F79D0A19B6A4A15241E8FFD158E4797D2933CE1AB0F56DB2930
+0015644AC05ECE1979E023706394AE106C46DB5A08801C802D5F1B46E913E0C6
+1A6C12FA686D2495AEDE1946EED1FFDE10DFEE9BFCE3362029FEDC0E021C8C9E
+C0F568ADFBA2954CFD986A743793615324567E964EE55FB2CE49E34F10024001
+03F1B9796AF520E8EFBAE693EA3DA1F181E0AD4DC7F43536A052E30212D39C9E
+825262F88BD8E7C0ACFA39D87D3A71448794E5E6F539C0F7DB5514B664960912
+70309109045CC5DDC40558C0138F6418C63DD8B2853A7F23717BFB8A25C5A370
+F629960154D3B7427B868F9C0C3D149C55C59671257AFE7FBC2CC84A65CDFCE1
+CCF7BA98DAE5CD28C56080C98229FDE7DA18A20AE3879238119B96A1F8A1D437
+C0CC88941ED7E6F12B5886DA4080534A28693C5BEB4793C5F1BA61B5165FED8F
+D34310333128846E4DD8591F080E0069833A45342B060E0E2457AAB8F951AA08
+25CE5D4D5AF8312C4E8F05B34529C24087526F6FE1571C0434CDF8814FE4227D
+67D56871473F11405648360A742988B40BE14FDB7902ABF683532BF45642BD5D
+DC6A1B064F099B7946D0FE95B37F1D32AA4DCB7A3A530C6112395236FE412787
+45ED32211603666269B3512888E1F2E4AB97CABE59BC577CAB851A24F580AC42
+926DC6BDEB4796B0FB3EC68F9C8C5A5763025B4C7D86863CB972E27560AB3FD6
+1AA5ED035E240CDFF5A0442FFE1870446DF44E32EFA80FA286198E1828928421
+928836CF2023832E156B05E143AE513148CA1AEF0947E1FD3D01FA07A5265266
+86D6126DFD440C848234F62F5CCDE70C7E90152EA0970C373D125FFBEA8A33E8
+568DB7D3B123F3995B5DF14676815A082F2277B21956B4A9EBCD63227F7E92B7
+1A1FE741749F088A39A82F4D79E716DD87E8D3B63E0CB235FF13E66E1A8A0E27
+3E8C7D6724F8513278CD60683CF6F2477DF75186EC4B7C37902F3CD6315EB0D2
+A165D23C0A7664C16A0C31C3461EB0C8C1391CC587ABA8EDF3CA24451FEF33F5
+89143E3FF347FA0D1A1181E94C2F60B63F7E4D
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+{restore}if
+%%EndFont
+%%BeginFont: CMTT12
+%!PS-AdobeFont-1.0: CMTT12 003.002
+%%Title: CMTT12
+%Version: 003.002
+%%CreationDate: Mon Jul 13 16:17:00 2009
+%%Creator: David M. Jones
+%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
+%Copyright: (<http://www.ams.org>), with Reserved Font Name CMTT12.
+% 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/CMTT12 known{/CMTT12 findfont dup/UniqueID known{dup
+/UniqueID get 5000833 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 /CMTT12 def
+/FontBBox {-1 -234 524 695 }readonly def
+/PaintType 0 def
+/FontInfo 9 dict dup begin
+/version (003.002) readonly def
+/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMTT12.) readonly def
+/FullName (CMTT12) 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 43 /plus put
+dup 45 /hyphen put
+dup 47 /slash put
+dup 65 /A put
+dup 67 /C put
+dup 68 /D put
+dup 70 /F put
+dup 72 /H put
+dup 73 /I put
+dup 79 /O put
+dup 80 /P put
+dup 83 /S put
+dup 84 /T put
+dup 85 /U put
+dup 95 /underscore put
+dup 97 /a put
+dup 98 /b put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 102 /f put
+dup 103 /g put
+dup 104 /h put
+dup 105 /i put
+dup 107 /k put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 113 /q put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 118 /v put
+dup 119 /w put
+dup 120 /x put
+dup 121 /y put
+dup 122 /z put
+readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7
+5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99
+8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716
+EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C
+02CE8D8B07183838330C0284BD419CBDAE42B141D3D4BE492473F240CEED931D
+46E9F999C5CB3235E2C6DAAA2C0169E1991BEAEA0D704BF49CEA3E98E8C2361A
+4B60D020D325E4C2450F3BCF59223103D20DB6943DE1B57D05DA0555DF933BB0
+7B42D264831116C06C79335D519461E7B0E870A6715E3D74A08D1BCF86E3BCC3
+A43FC6BAD1C68BD9D4AFCC06D845FD1F1E70D7A47F0BBCAECE8396E04591E5E3
+4797F646AFEEB7DB548183F0B74C9BB6BA2AA04E7F5950EC8AE97C741D4B2C5C
+A8E7A8DF5A36A30B5A7592D95E1DBC63EF33C92FE459792CED29E2B8B6919251
+75EF62089BD7D44A6E1F9B62EC802FBE62B821DA1C3B2DDED45D27964AD29ED0
+9FB7868F3A8FEADA87A8E42D52C1EB7229D7C79B60BDA263F2BDB025AE14A507
+098FA274206BACFB4A0A7257D5998EE8F0FDCA79CB61DD1FC59DADD11E16BF02
+ECDFD706CDA1E72054D4EB55AF7BA9F19955886BC0BD6E0E3FE3769C94AF3581
+DFB2BCD67FE2892AF07E858A01280194D8DD7332B3D0A585C87FAB056C2EAA9B
+5AD48D1C9F00CEF8EF0D1408DBE1C03D04B231D7B8D5D998FE0CD7EE19828EF2
+F988EBF6DDBFEE00F04A4A1F4E1A55DED7EF3AACEAB5005F1962C724A017C914
+2936E2E0DF26A55ACD7DD836C6035CBF07981C1BCE3615064F0540A1034C69B4
+E3908E76EF8925D486DF0B4A8E1F02D8AA99585A7C31847AB9382F83880C1C21
+C496AB2DF8E7BD4643B28B704B5F6B53429D3EE940A79135F5BF0396E5B46F23
+42AF406C26D12BEA7A41F332AEB75DF43C15334CF4651A99F602036946B1B91D
+4BB0D2E51C20216D892C8173241AC8FD15A37C3CDD8AB4FB67D8565AFA61C068
+95E3D6E46D7C09BBD09428207D506AD43C693F3C3D787F6A5C39084AE45E81C9
+830900DB50DAD10A17E118FB5E9680B5194716A788FF7514A1167DD1A305FBE3
+FC1F39A39F5613D50934419B95A4A2FE1B6C18912CECB86726926F6B77B5C3AF
+F38F85F974A2D2145BE010EBB4A390B842BC222AD4A0B7FDD882668C04C51F19
+13FF91E7CFA0A0F4E99A1944B272E0291BBF3F9ADFCF3F625B87377AFEBD9F11
+6385726E908BAB7D1357504048C0F5B26251A1FA52F08BAE1D64B9FC32A684AE
+896F3DD0AAE9624050D4DFDA25E581FB2630E8840AC5322D38B92F3E77B55CE2
+91ACB8321BE53A2C7D274D63CF0C68AC833BAF4B22B26EFC197D4A893A5AE492
+660D995DA9294C16BED1113CBCC18AFCB5968175E80C2933E0819A4A08551900
+25B0DFBC2D9DF1A90608429E8B3099D91FD4D7A1205D9D7610C2595E5B089E1B
+9A97FEF3E03191AC688AE6DD3081EF8B5ED16BDB4BB5A2DF3DBCA0A1E8C65A6C
+64698927D6C6C1B404819E48BF00F1A7393FD6C0751A7D639E32C569264A6A91
+743A0907C329A0C3A6443795FAEC0EECC7A182BF5B61D4CFD11CB1A45974AAF7
+D96E1339E870A52661736E23FCEEB2667DCB46511CC8EFA223B4FB7B82B0FE55
+260761FD65EE42917D1A75254CC1B76D48E5482ECB6A404512C0D1712825C900
+E3BE134172F220E3D5FF79E0EF803BFD0F383080F7FBB719527DE06908E1C4EA
+C52F3ED6F59A5AB6BC6C911B29E8B2EFB8E2803754885E1E7661B5DB7E22CC39
+6474B690FF22FD05C8FC76D9F1E401D38D7CAA87889D645EBAC777E74D67AC2A
+F585234C9A178972FD22A53C30542A41DCAE9BE4EBBBC7D566AF47622B58D9A6
+747D50F92115F2F49073B029FF93228CE3F7247DF4E7965E0DCE73D00D068136
+89AA29884DD3E28645458A98279C9E40E2965048EF85AE8B996ED28E3F2D07D2
+AEBB17CB7F08B40D32AEE2AACD7332CF2BEF2B16F07879EE73A1F787D4A6AE9F
+EE690C5A95CBCCC5F4F0154EB1CC2792B877C66A151919A78E1740C75964FE3E
+BE44DD1E517344F7C1EFA681912AB3812DDC6307173911F1819D6778811F0E0E
+C72393FAE86EC0E706F108F6383904E25738CFEFBCF08149F28EE7205B118D12
+A74E18BF57F52D7855C8F9BA7206C98FD30C2559E95DBBC2BC2156A6B3821D88
+40D4EEAD72FDABCA5DD02C72552BC343419E5CEEEBC3574D3CE1B7151411455F
+5F91CA2409BDCCC061BC1825A962D95EECCCD811BD72B0E5482D46D001D38411
+26F4838631F65D1B43554F8E89A1A9681C149655560D2161EDD6551727D3D920
+2C1D066E165BF3304C8CEEB03EFC66F7FF50A50F401FD0612C0569CD3CF8650F
+ED334831C5D5607F83B90817694CB55D8DB6AA399021452B433F646E861B47D3
+4159B39E89DD2A4679E2D492E32D137E10DD991AB139B81A47BAEE25FA1448A3
+539233D75A694210FF620A0E329DEE37A95182714C0DE91FB9908AA821ED5298
+1E58CDFE3BA3DAFB96FE7AA6003C7CAD8E12ECA7752E0477CCD579B881848B26
+A268A9D08F7B3BA3C6BBC1F9927794E928382AA025512A3018FA1E96954EC65A
+76F6F6C1C4E1BBAAB3BB3CC016E3D87D28AE4A25E30FDFDE966F3C59C3A1CA92
+74F1730A5E60573CF6DA96A0860D32C03719F35AC5B15BD09F2B10A5C33C3E13
+6B8E5F0BF9AF326F201D889FE1A6781380E1DBE3C61FAE505ED209A3ECDF8ACA
+D8E959DFCEB5178AED0E6510CA43DE8837DCB576439282789EC4060F59CAA676
+2ED058A98A901D8F3425E3950614F61FB047299933B5E3E15E9FB7E21C4E66B6
+9B8C895E643E7243924FF2603354092738338A343C207F89FFFD2EC3DB20C726
+B40FBD245567FC3C49F342FD2023EB8BBF81928CEDF5238C7393DD611F3CE69B
+CA70928269A0B8657576645DC353A878B64269CF4899B707F8B38CACEF0D33D5
+266A8E40CD77A788F4D29F036545A6D2705159B8E05872B9FC9DFB7CB7183BF5
+E36EB22D212C3FF8C5C493F9C130524F9C6492AE915DDFE7F92AAC1802FB29A4
+3A2560D14901EEE20ED11A0EC9B37EDC3A26F82E5A311D6175987AA25D8EB6D3
+CF43D3808A85384B995EE42C83C81A59418DA55E930887B684F7D0D57210D618
+D9817BB2328E101B11201CC423CC64CDD1C9D5C2268F6743009993E2416A630E
+36743267FD628955811D46F36F29A540CA318D0A9F699C94F817276A57E5DE54
+7738C2A5A0485815370D0E54AA6EF59295F619BEA77AE54EDBDF33D2839B7032
+B535E68560363AC55A312852770DAB7DF0FB6C827292809755E6DEFBA55B7DEB
+5F15A8DB29A3CF7B9EF568554F4ED131B36B09F94A7BB56CE7210ED0EF05B93D
+9246588BF9DABB020DB80DC2998B147D3416B8959BAAA5665E626FAB9E5D89E8
+3963F69D0BD25F14C28D0BAE6CCE6990D022B688E5CDF0E219258D72BEE010A2
+33049CD73BEF29E2AE90D510AAFCE1040F333065875A2016AC243372E24A090A
+EA997CD36A8AF2D807716FFCCCEE22CE8452A086BE6D4F76D8B33B952EB8388A
+EFC55AAF2DB60EED39C8C21745B1E6A7824EBFE02093327B5AF6C807AC91493A
+093437C593AB125421C8112ED4766171529E0E1972EBF2BEFF8EFD2069B48374
+F7717D70F16D27C43F9A8B36464D5B3FCBA74E293C910ED4E3EEC877642AB87E
+1213043E81FE72CA6D1FEF847516E4C133AD4392FA1F9D10472EFED198B7540B
+69389362E4E2DDD7A3DE49228D40C70B5D5CD09D503351FA953C8197F0FA8613
+5F02055012A0CC1C2A4A1FC344FE2608541524BA207CEE37F635D0F81FBBC340
+8D0EC42FD8D53757C6B05CCB2ED736AB82C24BE95078B8231B81F0D430D55A91
+066BEE61F5F1AB6E4C43E7555D34031EE5EBB1DE13A51325A524D676161BBAF0
+F3D800435C23BB2DE410C0BE70115CF8DB63365F8E98B68A78A193632B956EB8
+79083806F9E9AF8A030B45FADCB026901B60DED50482EBC75716D40C3781D3CA
+853C3D30A487AFDE854FEF17D6D7501EC1956BE366CC8A6225C423A1CB69A9D6
+8FAA6C1303884E475057B697A139A9CEA4998816072B532A5CCE0F0EE63C9CBF
+125CF0C2F886EE502C4F153E55B1CA4E63FAD8A5D878C8947AFCFDB58CE92F45
+546444F77455C9FF9CAEA98912B5FAB430A362459352ADC09D6F33A4CCD5115C
+EED05B17E419CC43B6E96EA3E8B8C2008E1E5B0B7F2897EF80C414ACD2FA1A63
+13FEB8086DD9B182B9E954C1602E2BA3DC67452A1447F8CBF2E602AF847CEAAD
+3690C5D7F6D9C3A36E4E97E4238E9E957A9C048BE694814407476A47EA101CDF
+CAF70948A4492B984EF31771AF6C09436277484854CB53528D18F8CA870EA327
+6BA4FEE2DDEE73477BD31F60A68E7D300F28AC56D1B99D973D051F50BD82B034
+B3CAABD38F8770918CCA3634F53FAC47D650688CD79C0D0FC90F46FBDD4FF03C
+D32E1CCA3D6104A45E02F634648D34AB0961C3F8AFCBA6549512354AE0A23AE4
+1E5387863CD0A80EE891785422CFB03B5DAB5285F9A543181573DF2B1DC9D646
+3BBCAB63A69F2BEDAFCE9792B38ED5551E63D83817806E2D67AC2BBA3CAF4F27
+50217D4E8A7E2E5B8353918CD1120C3999773282F473A4B67F46CD58A4243357
+8CFDD2DDA8529016695EC69A53C800B6215468E7AABF7B644363B49F51001B83
+D4BF6E78558FE99F6806461F36C00F471915859716C961D525D1134D0F5F20DC
+64095D4421980749AADBEDF2A2DBD3F45562EB6D6DDC808954E6F044B5A4248D
+EF3D2784C8A796CD49474D8B934E63BCADB96319DB0446739FD80016BF6AE156
+21193769D28F49B95896B687E838B299CC6444219B169DCE9AAD90642C379111
+05E60D823C12AC1D0415E8113E970948DCEC9FADE51358D78DC2088AAD263602
+357ED1053A26CC55C3D43FDE5B09C61EFF727CE507833C8AF50F6CE925C0AFD5
+D99BA6A48D449DCCC20AEFB89643C9128E698784BEFBB03C4BE02CC6726ED901
+DD9F7ECDA95F4113EA796F8DF13EFACA434842C3B12E242381862FBC4C72B3DA
+139F03A3093DB04366072D9EE7EA42314E7FC27DE0897C9097B4CB333A054B4B
+C5703039796E724BC9A9A578B3BC555E88507E79695E18D618E0C9A86223B6DA
+20963556C1B8F36A2AD954805BDD1E04A0E27E4EA9FF7984D5FDFBDA881C1808
+73281B73EE3C7CDFCCA30942715E19033F5935AB39093534E253F92184EA0596
+432D1BF1BEB2EE8F50817ECD001777B2DB1C34117315C88003A6B7EBD05E57C7
+ADB60C89FD2B50EFD6E68BBD0CF5D0F0A14A8A070ABBDC84C9526B3DBC521593
+CF83BF5395B66EB48751BA38ED3F4EBB41CCD6D0F6483FF47F79790C7795154C
+DD3E3AC30F6388D48E82550481A593C9D2FAF77FFEC9861891F72B971D023529
+AF1B3402A9E636D72DF774600E7429726F604570591369BAF0B18E4616EE698D
+CB6317A9B16D74B58EC252BC22248C03071345E77593B21046FA74671BF1DBFF
+B803A1330FFE43CB883E1F948A6FAC7473252A75C80DAA33EA98A6577ED9F49C
+663294DFAB013652D9338FF5E403DCAC17233F151A658CA4938304A8B1EDAC93
+A1E2BD08D3A33327DC5911171AB994ECEF7D0097812C4461C6FDF5003C6A7352
+3FD2AAF0DE7C6254E81E32A677ABC722F2B9FBF886816D42DA317EDDF7D71E64
+4CE37A79213CA18DC53C25B292AFA324C00B9DD1BC99C4C5C79B31EA88138491
+388DB54EE9B729576F1FD8293542C6F77DF630FEB758CE29FDDBD5CFC07764D0
+A34E4C935EA53F56BF265EDB4D063CD97832A1B56C63118A600F83AF3F8820FC
+B93A318A3B4237E50DAF7979A3E29F515CD092A36465796AA766A9BB9F8C9556
+E4A04723E37B9343D45FBBF78236F393925D6E341FE8F0682EA660F94CF6A8F0
+818034CB18283370C21DC66F773185EDD1006A20564846F929B2E3C55E9F1701
+72AF310C2E6AECE2E3F43197C4902B83ADC1A5CB4D945BB44268E6E3F15DDCF5
+FF51B10BC1495EDC109FCA7F0BCEA15FC3CBB1E61418B4ADFF29318D834047E7
+A71EF44294DD0E355FD2E3A18ACAC4285DFEB063EB542AA9827E6EF3B42DC4CD
+CF342DB6FCE53042C53B46DDFEE27C2CAC8E8A58273FA825CDAED680103E6715
+CBBEF8516BF2CCC0447669CD72E6C2717F9DD859C0800761A6A97459D1291E6F
+D0CF2FCF36B092BB3E458ADE09271393D68216896D5A3AB597C8E6353CDEC22E
+E52AEA31D2A7D83F5AD283CA222A9DECCC20EFEBB584606CCA21E82CFE553296
+3E9E5985A086E40A3BE7892BCE84447EE9FDB1B2CAB274CC6FEBEC581AE90DF0
+1979571030B8DCAAC750D2B545883F8EF2832B06AB727905E13168CAC487182D
+3EFB72022A271CADF7735F588BA1208CA46BEAE3A1DC629C25769571B50DE693
+29018EF3A3DB8E52DA3BBE248D13600583E73602E5B3FB95445125CE8E0DC083
+CF3CAFD4F213EB7D7B4A0C6A9FBD44F72227CDB561DE8B822EE2124BFB2A971D
+24A11F3888D9AE3487C85D6B0595F0B0E7B2C9F195C5034C459352F8149CF382
+1B9D38969CC6724437F5633DAC83376A3D2F8E7ED5991E783595FB8E3211B5BF
+499083E8F5F63266C57D6708AAA2179D2D7DC0011D4907E7EF755A51CE594746
+45D30CCFA0E462473B8D9875AC17F7C6022792422572FACF98C6BDED9B64CFCD
+9AB417BCA3B35EDE7C28C44E80CA72B22B01B88DF8C2A614311C55A25B50239D
+64261483FD6E44B7B8BEDDC3E5BAB2A5A93DADA0FFEA367F53780BD612AB585F
+A8033298213B1F5FCD4F0384BF967D55A07A16F6E217C2699C78BFAA8D12A215
+A0CBE9E2F7535E44A19D1F6C8DB10CF2719293DF85488F8C779C62E9660B2F21
+8379CF1EC103F5F6E23B5D18B57CF2ED9A5094386F3E359A889453730F860C72
+CA3926A45B8DC5B2133EA457DF0B2B6EC96D8D347F3724B3169FDD1B1117B24F
+AC6DD538CE8A8AD3996B734293194C6BBD506463843A58630A679B4A8CDAC0A1
+FBCA04D0FC9512A0FFADBC0120CD61B561156A3BF89D89608011F9E44748F0B0
+0A9F9A38E42DF84EC560D23B3625B1EDDFA55E398827AD4687F409C431299959
+2BB044E2F074C42494B3B4B4D3DEC0DE0DE49BA4835CBEAE7ADEC59F05ACB84A
+3B805E4EF25AD968C77955EDE53044811E7BAFE7A1DE3F9490357DF5A60B0E0E
+D9C378208E2E94EB44C4FEA646D79762B34D9A9F85E21330CADA992918DF86C5
+B4B920F2AA64F8B1A9BF4AAAE41A55512039868A56CA91D1A82A6CCDC1204179
+0F203BFD20CA6660F74E4ADB872A3F24F1CC7BA9CC1AF421BA3F0CDC9F2FB7CA
+FF03D95CE4E77D6B472272E6511BD0987BD1D79EB78791E359D0B1E9B5603AAB
+6300C17BBEFCF3D8667430220C69134581BE78A0303A5851252C58A66AFDD021
+32BC1F847125021FCC6709D196FC5665271B9468FF6EDA5464F026B4C50EEB25
+44889452C2AECEE0B9D7C9621A52B5B5F26513D60DF0C57731F5A9F6E53DFEFB
+E66C8B62E714163873A8039565EEE682ED6BFA713FC448D5158534EE24A7387F
+8D4E6886CC32DAD5A1DB60F21A9C4DF2A09A93215D2C143A55B5117EDF492A38
+A0637A8356CF0DCD4DCD3941E2A71408E50E6C8B9AF962F2A076FCCECFFF69E4
+D37B24809B121F0CAE6E2D2A796A685E4C00FC798D168FDEA90D01D8CAA3A407
+A56EC022CB542283D1874328CA95169FE66DB457514A0BB5A1902C2658C06D45
+E63C9A870C0E137E733B4093631B76F2066DC299C17A85CA2EF179F635315419
+35444E8AC0A7869370CFEBFBF15831FEC5C1A317B14C78E6D67AFFDE2F8DECAE
+1305B711A69292FC5F1FEAF2692CFF286096B0AF4FE9364F9E9E44C564242290
+44F23D1F3A4C07918008EA5FA57894BED508E5E1D8AB600832BF81135FEE4B58
+4B79801AA7E5573FE7A8B7F5960C4EF1074B2E6C3E98928C7221E86FAAD58997
+9211523D7C18789F6C202666B2134C30EDC7F9790872905C61984CCDB0170A11
+5BC1D2A370B27A6A48DBE8751398EAE7DC82A353BC05D061A3A4C8C5D6335A31
+91EB4A8128F6C4B05490C10BF86F41D417C0977DD62C1367FBF78E0C118F0A02
+18286759CC91FC289B010EAB2DB805C8761BC54880E8F3B5331B025A856FC35C
+9486605130750E0037B62D65C1B6F9DA250BE4C900F04B16CD71D84FA31ECC5E
+C2121398F09257636D6A92E93D04DAE611935C262CDBBBF6837F596F59165F46
+BBB0EBBE9105EB3A44693AB62C2BA9FF98CF9FD300B0B60EDED0F2B8AAD12D6A
+65096E4A366056D52BD2F2246735C8FE3FCDC1ED26BC73840DCBE9AF6740C6D9
+9B5C54882A6E2F90E075CD32FA79D1F52FAD0AB9815F70404E7BA14C2ECFB8B3
+E62E9B31B64C9D437C0950C7C292EE756993ADBC4C742F7D37443A20E3A90C96
+D0731621A733AEF3F95C6AF2B1D2A3CCC38973687DA79842DF889CA53FEFDAFC
+7CC2E40CA87C08DB1E13911553B31503D68751EEC6A254A8C3A114D6FB36BE8E
+794E0AF2060978400B0FECE2D624A0A5EEF711EEEA5447F616770B87FC8DFBC1
+E636517C1B86E4C057B5DEBBE5D7E3DCA6A260CA1B9CD9F7845B43BF41805D1D
+BFEE4F3B8CFC685C9E56CC0EC688B420E59970D7C218D8CF585E8086FC68064F
+88CE8E32A954E45CC4F619EFB0732BF8709D15579D90C8B76AAE238F691E93E2
+D3176C3AAA6AA280ADEE4F18913C3086D933D8F5A689F0F04F532E76D6319CC8
+92B514094520B05AAD331620D75FDC88AC8769AEDC02EBB6B3E1FCA24B3D00E8
+B27F55596D07B471ADF26840D9E875D88D0162CB3ECA013F6FC0B2E586A15CB3
+D02940B0572CFB5DEFA7857F2924DC7F6A948A7AB500B38252B7E81C94EA1C40
+4AF8A6FB75DFB51799B02E6996FAD42F473FB9E335EF8EABF17171440A0EAD9D
+A0B21149D9274B60E778CEADED256456F7ACBBE986973697B17E5A22DC6E08B3
+8961E97C2A61FA22F1CA39808DF13B3025CD8D202910CC01C552B6983A792C8B
+99BED5E77E07C36E694D5BA37D732AA07AB0AFAA1A4E354B4A22AEFCB694557C
+1212E24F4DFDC63B9E539FABA1EA6C0EB7E771957D3C939FA52015BCD632E1B2
+E1679804758449129ADEDBC2D8AEEA8A1751EB8D3F61A2162A3D2D4A0ED6E691
+1ACF802DB5644ECE9B0A29DDE0CE43273257E4EB193C5370A8C7537B6D65F02D
+E8FCDA87BE43213456ADA7A455F3E900A334DB9B39614070899F2CEC919C75F5
+BBDBAE266D880ED1EA73C2655D3CE425C1502DC3E1EAE4A08F472F34182FB9B3
+BA9F93FDF48C2208AF3FC70817E03E37C4AB03ABC3CD3A585F143F037F016FC7
+81DCC46D88F25568EC3E0D42430FCF9776E855AA5F476885CDD3EF82834EA92D
+53FCBF51D868043BF755FF40E98487E98AF362109FE3B4C116100BB426D1F62E
+2FECF0ABBC07986C6B68FC80875314610F51DAFA53D7CE985DF3BBC478DDF2C1
+6BE508B6675995710E621ACE0823A4714FDDD4B1A12F5C9CC6D8B92A15E307F3
+735DA252E816736F352A9B6355A002EEF550989C6C6689C5B7D6
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+{restore}if
+%%EndFont
+%%BeginFont: CMSLTT10
+%!PS-AdobeFont-1.0: CMSLTT10 003.002
+%%Title: CMSLTT10
+%Version: 003.002
+%%CreationDate: Mon Jul 13 16:17:00 2009
+%%Creator: David M. Jones
+%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
+%Copyright: (<http://www.ams.org>), with Reserved Font Name CMSLTT10.
+% 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/CMSLTT10 known{/CMSLTT10 findfont dup/UniqueID known{dup
+/UniqueID get 5000800 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 /CMSLTT10 def
+/FontBBox {-20 -233 617 696 }readonly def
+/PaintType 0 def
+/FontInfo 9 dict dup begin
+/version (003.002) readonly def
+/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMSLTT10.) readonly def
+/FullName (CMSLTT10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -9.46 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 40 /parenleft put
+dup 41 /parenright put
+dup 45 /hyphen put
+dup 46 /period put
+dup 49 /one put
+dup 50 /two put
+dup 65 /A put
+dup 69 /E put
+dup 73 /I put
+dup 77 /M put
+dup 78 /N put
+dup 83 /S put
+dup 91 /bracketleft put
+dup 93 /bracketright put
+dup 95 /underscore 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 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
+readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846AB284BCF8B0411B772DE5CE33C33655F6FF751F340A8D6C01E3
+2E02C24E186BA91B34A1F538959D4450CB683EAE5B034D030186901B458D3777
+6B3942BD2E07121385120248891AEC2EB33C4E3A0CF00828D0F130C31A918C18
+979FE94379C648EF21ABF659253E43CD1253866F157F1DF85AE7E8714F061B1E
+ABA3AD094FE8D6293916FA82EE4F486C7E513A06D4C9BE44306A8287970B4ABF
+B6D1F9274A5A0BB6ECF713ADBD1260D5D6C4420D357FD486470A74B2F0621B59
+A9373ABECDBF32FA68AABB66FAB0C970A3354A335FEDDA1C288245E6C890B8DA
+3D0EB953283ABFE372221EEB1586B0167F634E3F29CADCAB484B81A243CE1E3F
+D5106AD6BDB1AEC91123377F816711CB9D5140120FEA84B8205B79D1569509FC
+6B671211985CEF51691C45A168740BD826464B2CB0ABC575E7D453161328F80F
+3AF1C99EC219010EC6C95E0A8D1909719CF18BE424967E90DF67537220E60C3C
+4345B154D08F9EA684710E659DFFB0BA1B7FDDCD519305900A5E1CDA219A6C90
+DF8BD712A3686DAB90344E8784C7A9AF3318550285039B701B9FA1D3A3C3B6C2
+753F1E794A3463A173C99A9EC0E2AB5737134CEC2C97CD6A37E38692ADB4B131
+54697B7BBBB23680C72CE96066D8007B90AF0FC5958232AB4F21826691E9874D
+107F47DAC1026298D787989BD77CB43A09FC95F6997DB00D8483AE9C2716CBD3
+7CDF02DA34FDA2F0754ED0968270E118DDD8BAAAA65C41D699E2BCC2556AA231
+328187D2F50FD518CF458B0BA1F7DBAF4B231CFD61D5DC56335B53C3013BCCC9
+85690E19E992ACE55EEF2BA7A75DEE6DC33933C226FC1494269B7CA4CBAE987C
+2C787386400172AE3F44AE47115F4117EED866713BDDCA4A7AF658C49F913CB7
+308635000043F63BA210410A66E192289592882C477B2EEA0B2A339F0E7CF450
+CA0EF79D3A6C28598825CA03FD688DA60C95EF707C6E67CB7E57DE7A80545195
+739ACBDF27069F34C9E0216C3D17CFE7A652B910FCC9B9AECC2E646809C22D93
+FAFAD465DE794755AFF5BEC17160C9563B5C51D07022E2D3A256FB5CACE131D6
+F4B30F591A0419D957D8F0DCAA0A8D65A8D83422AD7C2613FF13A302E152B312
+3F1ABB45E42084EAC894FE335C07324849C9736D00C872C4551997DB889AF17A
+A52C5AA77DEB548B0103B77F65717F70B90C1BBAEA7BCB4959F32851A9882A3F
+55673F24103D6BF7FB3AD3EC3CC50FD8FBB4A6B13C3D278174320713A7B327CC
+A71F01E50840B33D0FC3F5F6A6F2B0F2D0E38494B1C73096A430510F927235FB
+69E931DA8CE5415EE88D0248565E3347353621A48F7948AC9EAB5F5057541B50
+82BA955D90BBC82E582FD71904445A59186022FB928015235B60830DA59813D0
+8DA3FC306C43FF8BB2CB6772B1F7BA3C1AA4B2343E7DA7E065EA53A4E5E28DC8
+0790F2D5CFB203CB135A08DCC9702B59A63290444F202756E55B9FB053F773D6
+0F69C63E74DE593E49186FF4304E8FA76C3E3006358DE549E946DB69431981E8
+1261C9C9A884E4EC708F69E6AF5D22C5BAC49F2AE85903E3D48D03B7B97054F1
+D2937A0C685D912D6D20A75A77712164DCBF8FE4D5460DACE139C5A934EEA09F
+B94DBF168A4BC03A9D689936D833018FF43837DF9519AD10F357F00BC068E737
+170FC9FC6715165F733A0B6FADB9ABB48B845167DBE6D771C916577FC2132863
+767DC6E3D460E779254194AA690983184D934F5E858C1176B3862B69B42EBE7D
+EC9AC4E020085D474093F7694C8A8C2025D4B0163E29320C384D62A9F3FBCB1F
+AB5A374EF3DBA48AC2147A207AEFE8B78BECEBC55C97B538F3A0FF4589D171E3
+826342C8A5186224FEE54E4C6AD5EB02BCB4088B132FA1A48362824BEF161235
+8E661DCFDFD8429C65CCEF63902D0E07C2FEC1DC2756D942F13FECCB7E8A8048
+345338F24B7808E46A04A915C111F939E2669A12FAC0BA4F74B832EAC83EABEE
+67E2817C058E69C2010F2572FDD15194CD8DF0FE9F827D349C0444A18D1A86FD
+802BC120A5114FA3523C221242C7E767B0AAF6AD15DA1561CE8EB18A2401D71E
+20481FA5F1E247CB5288F47795A6A3A3BB186E89EAAC4A54AC91405427136127
+5B151203426830F7CADABDB3FF63B40CA29CF8E667E71615869978E99E6F3F07
+0170EACDE3DC62DC05681D7680E2E96C30002AE34A4E5EAEDF88577601A82C36
+22D625A03B0451D7BBAAAE0C396711500E94A482EA787495073F16A76D1657DC
+4EA7C7B83BC30CE7F145B65B6E2ADC207D192CE3B5FEF7031F4BD64F57E1BEFF
+CCFFE06F1E4ECA48B442DF413766A70DA626359183A9B24C70419487423C816B
+4BCB067E661E47E172563090D6328BD738D2B0FE41A0C1D7A47576A79BAFC880
+0473229D134F998909898301CEF50A82B627A9A06DF59D0B9C530EC5D877F1E5
+220D3A1ABD2ACBFDF1933F92B3137B22B9F95A961D93B729307749A50D8A6403
+7AD0F9C40743E39B8D198CFCF7C033D99440D46D821D97545B930EF92E7AE005
+27F2FC766FDD4790FD1913C7A13328E73E587618ABD9008022C5C6C23935CEFE
+B5ECA2CEBA1D25DD846B48423F7186E03B1F61C8F1D5AC95CE03C83B2F221300
+7A761D6CB5F7F9251D3F9A7F4B25B99EE7A1347ED3059A811A82A35A033E9B07
+A4FB2A95009576F48665605C478E5F6C1B135016FEB4AE6A6BE4B4359836E04D
+45AA11366992162973FB6266547C2E570B8F56F6D992D2C0F63950A16839FE10
+F56E59D93A37573E3268C5892C9F3358753D1FAD6379E82BE740FA17236E96F7
+C53A2FF785FAB86AD17EB1DE8A6AA9C69B91C9D9B43B5188E51F6939FEC21B65
+AF17DCE95DD3BA4F1DD51F0BD5E5869A1ECA7398B6E664EB0D189181E9C23012
+DC1E54C146842A90909DBEC03B79B58909205F2CB2A7F83C66B437D7F7DB9781
+FF0C67F004E979C95B706D8D85255CCD827CF6196D847DB380B56980109E96CA
+997157BE78A4F758CE59D78158A854EF2C20099438F74777D3B0298D45BA86D4
+3C0AC30C984718FD62ABA0567AF0A70C1DD41953E3E7212D5C562085177E650A
+2ACD49940551E3F7619B4CC31DBF67AC15D938619B95DBF66E6D1300B1BB8605
+31C4011379FB5388CA49E4A9BD6C921560CB8D513F8716A0733D2A7D77E62D22
+A69B54E9048CA168D210816E613CF6357706EF6B118A1263B858B7E19AA98891
+43BD675B06C893579957BAB97199ACB82C080593ECB8B66A7334779CC16E4D0D
+4AF365CA6AF9727AE29417B61A5FD52452873B1D666044F8E7C1F6C6AA3397B5
+94A5780F4005FB5E41698FADD1594B505A58253D68D2AE3320E22165D198050E
+425820CC0A43FF1D61F168D87CDD30C14D387610B6CDB63BAA39B3EC9B3CA616
+FF1CC679227749DED3DDEA26B4D97C633090DCB8D8A6E5E07E3579E4A99BF1D5
+51E43D1D7F139C9CB1D76D8F693A3F23A74EFBE79F01E0B850BC6B6C7F62C2E9
+859469A144853434895D73DA6BD2B348A48BA80E79327ABD96539F2EA2209852
+E1BF6B0B819D7C68A9A1D0F6F39416E3EC4AC21DCD3C51D3B5B8D417EFAE165F
+2A7E0B76E558AC9F685A76FEC7E3C73CD607D9025DE6113BE5D0401887A53910
+82A813B026A502B51D484797D9D7E79A25B6624940AEDB4A15F2C73CA1AF60FA
+22D15BFBF268EB044FAE17822511AC6580D1D74DBA3C3335217780B29FEE792D
+200B00B8CD888A8BFF15D938FC758BB5CD9B3E08E1AC6CD1669E663BE86711A5
+892684DFCAF70C11E803164994BDAD89128AAD6461D4558AC2ECA3E05EB56D32
+0290AB16A6DF7133DDCBDEAE89C6CD83552792E23CBF567D57E46548EEB0A140
+437492B53C14419B6FE7E64AC23923A9E85F56A9DF209DC4E6BCAF1E045F9CA3
+BB904BFA150F4083C18B0CB5580450CDB657EA768E71222C71DA911A722AB9D9
+E18B6847F417125C40EA8A0CA1F551A4548712D098209C78DF9C3F78605E5402
+DA2DBE2218E49B819296D5AC88D17DDBA982E171733D1E9E295B3157C9B90BF1
+CE68CB185947D1E3D7544155B741296D14B064BEFD3E6AF25C74006CF6800551
+80FCAAEE6FC9105E1674EDFE68C45617D8D3E2264CD395EE94EDD017EB85884F
+FDF530EDF4F3F14750CA066F149E688FAF8EF4B5FE6AB515CD298E8D170346CA
+9B32BAD1D86DC147BD12EBEDF6CE1E749C5B48314F512470A568C172C35CFA41
+031E34586A89404CB5372D7B2C7A6D96F420D4D7C2D4C08184F4AF86B4536A90
+9367598424112A7B05D7107B23695CBCD569002290599E0FF4EC5C852C31F5F3
+9BD56BB840DC17DEEA579E7A7A9F764788D4E3774BD523D21267869224D68891
+4523070E80A123B58F7B579866332FC38A41A5915EC06F2D14FBE4A6CAF59AEB
+57E98D661637EBB885AA5D74AD429CCFF64E5149815E7350118E6385F4C74E0B
+2EB474A6DED021D429F01C9B0634A09250C40E22B3BFE1B7246D18116D585F39
+0E06E9B5F27A6CB77C8E9462189CB900CFEF08F798CAE15FBD94587F33816EE9
+03FB2DA6826EB69D8C284AB9F7B00630D0420EB6E35E0E288BA25F5C2345C067
+22412633898AF99C2FB232D1469025BF262B567F29A05F4816FE8EEF5F02BD79
+06202F6A1E3E5D4B3C91BA8D5FF53D5136BF70E5FAEF441A7310CA83721711FC
+39EE48BFB2FF287234B1A6102AF146B10A632A53AF97E11FFAC3A2A86BBAE3BD
+E0459ECF0305366078066F2CC628A3918E775E4236651B3D817AF1684B07A163
+A0142D16F55D2FB5F2255A8813B8E54EF3E801E95A4A226AB8C0476AC5EDCAD6
+9258ACB6F7C0CBDD298A0B816560622A1871FBE2FAEBFE697A8216A0D8FE30C6
+B1BA6C3E975F78182743842E7F851064037394142AC91B2530FB1D511EB20F3F
+79EDD8B7E1579D35F6E7B2883C47A46B6C1A458BECD6BE58AAFD834A7D82A553
+2FE4E66878E4699856DEDE964F454638F768AEDB595A883E380408F558015FB5
+8720954ECE2704AFAD4D62E8BB2657C4FA920D72248B3F762B2F12D125B796AA
+1C4BD6B42D766EC1C9B2C7AA4B6A3474BF753742DE8AB76D0AB0DD9A20EE2DCA
+0F34CB25995ED3183759CA83ABC32B8BDF0B06EF169252587971F7D37463BFA2
+BE36B2E45559DD73DE7CBE29DE92B9BE6B9F8093F934BA311D81E18A8DA92FC3
+312E3FAB43C53E803975981F0076EBB8F257C123908450661B6FA79E7ECE98F3
+B0A94E0DE3A4DCC8E0FEC106CDEDAA297A75BF1E40F3C2419BF72A644F452E2F
+9A8793810319885EB3AB23B1E80E8B62A889311355C73722C18E62711A7E6A16
+A5B923408444B13F6522FECA9A60B067EE332B83E1A69CD835C9D69B5D8859D6
+91F9276863D2E2E8193641E4239F4ED15E2C482C735BF5434BAA454EC2830C1F
+7CF766DAC9E924F17F03093132627673BA3D99DC2DBFC89E5BA032C16D3C1C8D
+78B3C464081044DB53C7A29E925F4157EEEE928C8E28EDA5F0A4BB6E0042D8AC
+7595C350645118172D04FBF06B2C9A9F3603A54B57999E2960C993724CCD6A09
+766BDF73F66E07FCA9BD09079CE8010E6CFECBE2E5DE1EA4E280AB78D5184C11
+016385007CB5AC0BC95955A1E88EA1A1D8EFEA886007708BA063F556D9284D4D
+C764E75CECA51BEE3D35DFCEBF6175953D30FDAC00F23B1721A1DD577945B5E3
+8176A21A649D907B5F63C71718ECF32ECCF1B26BF15AF694F1045CF98FC75278
+E9782ACD3D83CBDBEE690D29B3176E745AAE436382D258CB22F3DEDD02E441FC
+6A9931AC2F61156DE258DAAD5EDAD41E6C0DFC902173168BB4F51DFA7EA615C8
+B0F92FDB118378CBAC3D56B6B9BB0883C0C14EAA67396AAA7987222A132B7959
+44FC1E9D6DB6D549DFBEF8D2DD8C53DD3B66935FC239E74E2C440CCA13C068EB
+C4A3B69F499F573D076E2C92E24F2C69B806591B0807CD903E078683854963EE
+5125C3640860CEF37BE186DB781475554BFE6C528A9633AD5772BD53244E24AB
+42CA2D1123AF45FA257940CE611D83014DF04E60220E9AF27CB2A2247BBB004A
+F5722A5EF058FDC7DC2B6ED1406649DBAA58DF2ED3A91483D60F11C4A39BAF57
+CB1E320A987B790672CDD3E3BEF4A67032244DED2FF4588B2072CDABFEB36009
+9F4BCBEE16F811A44CEC77F8AE873C90C0F4C975E51014ECBD45A56A63F034C2
+82212977023A132E5C88AAA826D841FDE9CBCE7A01E4B6F0EBDDB9A69EFEBD72
+0B41EDA807CEDB791084047624BC11CE10B7A0A311272EFC9E013FA374D97EA5
+F7998FD908748CA72D8CABFD0F01220C2114D3B462B22FB71A23B284B1CBC7D9
+EA20BE71F8ACCED21F096009A14A7C7B51450BA51514707EB46B9FAAB31CFBEA
+E1DDA6F5D9AF0B6E7D05A1EEEEECD606427B0F2363D1B882B50140466B9D3CBD
+D00DB06DDD1BD4681E367DAA4B7C405C6281B67FFF794041738FC6A01D261CDD
+F6E0A330985F2CA782CBCC02B6F4EE5993434F656B91A51CC03B1D73FFA6629F
+14F6075EBFD83B702D8844A96CFB5C14051595BC7DB2218156A6DEDA5C98CAD8
+BEB5284D9D9F86406A8C1AE85857185991C360E5F44DEF352A1F301207BE94C2
+9A3A11BA468FACB3FA2D683419C44EFDD7C8F1079659F3ABD89D7F168B1591E5
+6105F9B3FA481BA953CD34CCFE73E427D3AFC46E5C58C2981198BA284DB8B37A
+6647BEAA561799877DD6858FCA71CA6003F2961FAA529906673EA94D82D78116
+4DAC81011FD175DA707C1E15D4B6FF19F8720A4E05E6E103E2DE880FA9C192BE
+C5ABE7C311C2ECCBCE8F9713DBA74AEC37A61C8F21F271B35F0F7C88B182525B
+A4183377597ACDA9A6E2F181725D427795B975BC4168A408D292CAA484BD1B8C
+9DC62E737ABC805C8FCB7E96454DA032B601345570EAE0379BDA84BB6D15D780
+42FA1E068A7D62F152B43B788513E13724666FAB4E2B4F04B0448194E46582CE
+7389BAF0D1DD4435BAA6B82AC305C04686B89FD51197C721D941BD2893596024
+1598E6C2BD84527EDA6FAB782033E4BB4F964FBACD96CAEC3F3CF89CBABF6B4D
+4D3AD14A03D4BE931632BB03BC2B92842FAD51A19A756892D5B978DB695D0540
+CC9D030C612E2B201D60D09F56332DD0BA1351EE62816C21A35C33DC11B37BE4
+D2F164ACD836A5CA1553CBC733E3B159860454B17064B4E22D3764FF6293BC81
+CFA3B2325C8E072857F6FF4ADAA8818247D431A28D3C5FDFBFB24A6CAA327AC1
+0B3630C84ED9F0D33B8255A3CAA9C5A0C79F7BF6BA3B9801C3BD0B30AEF7CCA9
+92F25E332EA97A7CC653C93D1497992D6B76363885B92ADE34C2A33E30A3B1A0
+57E9C16D8CEC189565808D3FAC92973C71CDE74DE9D8781CCAF88747758014C4
+5B62667D4D2CC5EBEBE77C5AD00C6A69D1819F5A786964501E077EB3BBEA52A4
+57729AEDF35253F7E1D31F2DD1587BC15CCFC1B0CA930DA83E2031B099A38158
+8D1849E7145AC74777A3C7136DEABB0C787E5A218309A65EC7D128147EDE3AE0
+C0AC039B56F767A22555CFCC12DCBC7F5A5A3B4E86EF5A69EEA93DF0BAF2A3F3
+7504F5C6A7A67388D2F9045BD755BEB7DFBC2EED679497EBEC808BE20FDCB5C7
+B586463BBB898DECCCF7249E9047DA943FAF0718A2050FCFDF8A4C2029FBA674
+EA64003AC03A847185936FC375CC67B3006EA681F61F640C3640A78D0C7FF521
+D477981E23E5956BAF42252463FDBEC49BB560A9428D248B0C5250CFA2A49CD9
+DBCEF73123C13BA382D3CF6A7B8A8CA3191D379A659F0E2C6E9CAFE9DA2AC074
+F622E397A2F7C73347364AE249B11AE2C34AA7F0D27B5F35D548D5AD1228597D
+D16A478C901D3A34D870BA39F770885B7DE62298F0114752435050E99EA4E5E0
+56B965EA185E8DF96B9FE97EE23DD45AADBFE02B427222B9FC99DA94FB2648B8
+46BD30F881BAD3820DCA4D8093BA0FE70E03482CC063B751439125623FA7AE40
+52DB2A380D89D5E37BF264CC73DA9A1540031587F481A0F146C6ED6F3F2957FA
+19477F075ACF608CD94CE466C1FC3EDAEA3ED25C96FE89A7CBFE528A33C4E84D
+465FE6FB031B48D904C5120D428D6B51F3232847CB0B7521E5CEA887FFC56F02
+0882B3BB7F5B0B954E7078DE3E31D8AE65F9EA55F4C169DB7C35DB9645617AFE
+078E03BF9A1BCE4E489AC9495A1E6CC7D1FFDCC03CEC1A32490186FE8B53B09B
+DBA7F0E23C8F5E5270D039B409D504203A458EEF12C035039A8AA12C719C0339
+F766BE6275511D585F82E9D4AC9B5424312755C4B74383FD094BBB24817D6525
+EE62456392E5DCAD0A0157A4A033E440AA014D5682606312F72248E13C43EC3F
+BBC9B4A2CF19A4AC6ED7F561EC37127BD0D3662E05BA4DE5509060B1D607170F
+C8460BF557910870B904BFFD042752C0B839FF9E5E90361BBA35589BACDEAAFE
+C68C5831BD0F19419A684DD99D772D60BFF26CF80783E4368C5C13299DD502FE
+D5C4F8531E38EF4CDB97BC705E96485E6D35BC2603CD9EE98FCF9B0FDA17BB84
+3142E3FF4FFC6659855C63098409C680B968E62B3C844B47A888865DFA5ED6E4
+C1FA4A0FB50571B5D725646B993DEB64F9ABEE8A48BD11B9CBD9AE34F156E228
+23DAC3CB78C6A1E9232D4996EC0B3E354A8F91DF44706B8039AF6926089B2B25
+13319955BED0EBA7AAD416F6535C0E67D552DD835BF562A721CD611DC83CB870
+78B91C225D2D9257028A6740F41D53FFC9DF6A78C60273537F39C4B5C54C842C
+13EF382CC1264E605BAF1A1B05F76691ECDDAF62075D2918AC24EBDCB511BDBB
+0E2AACB54639B139B80694ED8C1DFB01107C7C02DB3AB07427648B23172EE2D3
+E6535D0BCA1A12479ABEAC1BD1069C741BD27558A9F66284C40A235BF964F52D
+A771B568E46EFF531B6B97BC34944013A8AB6B5FEB974419727866916CBC12F1
+8A7BE66AFC5C360D1E3848C09837EA8239F8F259179D8EB0B619D648DF1D11CE
+A849C3EFFFB5EBE2D73FA6ACF8B403795F3514497DA130E595B38D3D863B0BEE
+D55DA19ABAF9C6BD350E43BDBDED9BDCF6B44A2552C20E9CEB05A298D998B774
+8476B250FB715B630DB854FC61132515E70254516FF4F53DA66933054518026C
+5FAEB55E8B9076A9F7B9EFF133F747989AB682837AADA967879FCD83354EED2B
+284C01A3D9563743D7ACA76618301059980E3492C6B98718DB19E18BAFE3E9E7
+2C4FFF814D0255EC6F4F964BE331971FB6094C6F8E3923115DAE3DBC55136E12
+84B72DDD7471BD6C8C4960A6DC0CFB3312E0CBB7F34D36D3EE822A639B1212FF
+B7EADDFF3F4813BAE8FAB7587B69635234EC141D612D70AC6811BBBE3F0098D6
+F806084BB9DC19C1820C8987078D0DB4564C350DA70B451D20F253458D1E1047
+D655C5B24A155CC87375F3E6C1BD983E8ED2BDC9228B5333E5F9FCF661E09563
+DAE46BB56DEA5853CF550B43D7D944154C2AD57013AC16A488B866986BF721EE
+47C207FBA2CDD3F5477B7C100C22C5A37087376D5E3CC30A7F4CE59EB8928739
+3BA0BC9D2F66A32CFCCEA46055F299289C85DD09EB37ACADDEF7A2A75F58A1CD
+6AF20F4724BEED00E16ACD4644AED0A41716A931ECF342CD9414515292C6A4F4
+AA74D46CB2B3A57A7E797391A8E7A7F0A13D72E2C57F5B2E0B3E7B90F8641136
+BCF7D63EEEADA8138D22031843F08FE8F43F0E70C99D9D5C562DC5C04C537265
+9625A77870E60BC52EC75BFD72BAAE1A9CAAD6556CE58273851D451895DDFC5A
+16757856062B113CA381205EB13D2C4AB7345F20B07E981C0A8BB67A94C20A45
+5A7C6B8A026C94857AC6D321808D028CEAF3CC1178288790674DCF90CD16CEE1
+E63FAC87379135D927F9F5654BDDF2DBF22C138FD4028EC3A72A2693E4953D0C
+AA806FB69BF4B9A0A960A17AD6375E33B06477A14F6F80799ED1E9DDBEB58E31
+B20B75251C15BE4F143FFFD8626EF296876B1831CBEA3A90CF1B9112E5908DDE
+75628C36D2B768B3311F82EE580A709FDA978F1C96058751E678BFA4FCB9246F
+F4C01242FC57F38555D9FFE24F3AC97B27E4166BA8C0AF8CF3EEAC6D0743CD0B
+C01D7F942C53C32615228DDBF3EA394AD76B81BD9830D3BEB991580936BE0D46
+0129D4896D6DD59373D597C77D74B38EB4FE3C66E2A45CFDA0FAB956B95E70A7
+2719FE90361417A6A1340F9C60B7C30AABD2B7B7C525884F038FFAC7FEFE6086
+73B27472CBB55C92A1EF1E882047E8FE40AB6275060737ADAF27066B111BE867
+AFEF4460587B0851D56FA282D9B9506914EAD6946D863FF4E7857292F369DE44
+B2A848D0982A23DEE389018B121D46DA634399D291C8C2D1CB4C7DD7F1E04810
+6156C0E43F04F5589F3C65E5AB798928701EBC852047F80B3597920BA6FB0789
+715CD59D491DAAD25CE8A4DAAC52459CEF1200230F6AFF966B499D95D6E27631
+B6C929E1557F5FFAA4491326884581E6169675434B4908945D27B2DE19A45E4A
+165B12353FD16BC15B3C71C41C7DBEC0C17FFEEF01EB1E03901328D0ADF58327
+6C230129C1BBF9F812F8A2EC67AFD29780F9FBAE34A2093CB25E6AE8F971F12C
+D5C7ACB53EF3CE8AFB6A500CCE717DC15EE257E77751B54946122EDA7F4170C2
+17840F2E180033022A09B437B9FA5375E14BFA5A032797ABAFBA197CF652248B
+4468EE76D1049572EF6E1A12CC033B025186BB3FBFF48ABA0962A559B76355DC
+2A1E467DE63BD1E2E735020BB467267BD10F0C0C9359D0A79E7751139B665005
+E55A2AE8E3A5F3736027D37488FA9486C0386E143E70FAC69487CAC13F6C44D1
+F5F85E49968D2D2E2B74502DA4D834362A63F8BA86587DD2EEB84787786B1B7D
+1D404B8A7B1B9ED03F8966E23F4E3EE96AB4E71014861D09AB3FC066C819371D
+154514D3104C475B45AE44395975B134DB27C959C04316F825A806609AF296E6
+00113C1050E299A387489C86AA2E1C3F8A8381D3C6C9A060EA66123322264111
+5DEFD7938B8AFF3F9521234CD01384678C3C49A5CF7A9CBD980836BAC99190ED
+6ED29E1F879CC5CED40C39D21E3E8E543237DB5731FBAE92BAC586F9E3877A83
+C5250BD454334CFAF4EF43F7C78C5B5A0BC12A2995E68A4833A7000F81600841
+50A0AAA4F4C426290E7D3B6A4C1B978E5646C4C791ED648102056F1CB80420D3
+69AC63C6A0F628D2A7953881E037F5596E9DEF81A74BBEAE1DD8C7B82FED3AEE
+93F8ABB60ED5703BDFA22E4C49A366DE4C791408FE97F6FB462BB7C83E00155B
+0FDE1DB0D7C132C509E6E063C229F74199D60E0EDE1F6E678093C44B8874F416
+CD50E4C9D23E3B36AE4A2191FE823DD2773AE81D80FB4DF7D501591CD6FC5106
+E34CC73731C512D80B91A01568B3118FC6BEA17DB7F9A0471B12213FE62DDDE3
+EB4E74B90C6D38D3D06227D5265C51219E8B228435FA88157A5769E5A66DB6E5
+555C273EF5BE1A4158BDE1A3EDC1DDA96FB7A3329A2F692A4994B349CD09B28E
+F509061397915CB94FB6B3DABC6748CBA47F93F02016786E4F42A5022FF9E6D9
+AE3CDC5441CA4EB69F886154AC8412DB779F09ABFF9472C2627C93855DAC68EC
+6F46C39BDD1650CD480FA2DC7629DE84E72755BC93E954C7AAC0E09B83C7A79F
+324C4546EBA46A36393DBDB92CEF308E1F36FE7285627E2B4581F0D2312B91FA
+881548AE75A37684975181D855D8B92BE32D7B1631DD1EC85683CE199B6F94ED
+1FD9BA9B31C06108D2DDF642BA2F648D241F80FC04C48DEDC45C4C4F5D8B4C1B
+16E0DB9B7F7377BB3ED639FFB083B739E2F0B1CF6F596CE4EE298719A6400FB4
+3C260F25AC0C5AECCA446CACD6AA79C3BF6FB187112A82D2E2783CDE80497FA1
+8613C192805EF410965283A557A996D0EACE42E5C500F697A13A08BD42659968
+A9DC7DF175937F28671B5F52DFA37804414392692DCD5A8E62B2669674E3CDC9
+57CC36D6A3973A3710D79F0894932D4555702484339CC23A1B7288CC9EA46F3D
+612125771AD4BBB05B103758C67FEED5D5F045BCC0AC408B08472C41EBC495B1
+05DDBBC7D784970BAA4A48DFEBBCF155DCCABE80E81E281822CA8CACBA58ABE6
+DF154189FB731D5182EB10B6C1A6D5250933CAFB2D617923CD5C3DB63BF9A4BB
+175B5F4783AC666D1CED74EF145E767F01AB3D80483DB3A180EC4B8DDC1440D3
+6B176B57419369568B57BAA00E8EE1799A98DDED48E09423B817B233FA8F9530
+E97570FE725A136636E49F3397436FDC762C0837AF091FD302CD7DC2440151B4
+4CF03135C91B2CCFDE75D2CF834E45B944B22A6BF213839E96F1E34550FE1F93
+E93BAC489A8FC08BA99DCAB746DC16E215F9AD53C0FC4C8C7F220E13745F2296
+7EF5441D2B172653508BC86DE8E94619D33A51DF000618D0A8B8BE946434A72E
+2C3C5B8CF1FB9C1DDF8844835D46FBFA0B3C45BB04D85E85650DBC73550AA3C5
+545C13219BDFE5D824F855D288F3EF9261C4D328A567E4F1F738698EA5FFE787
+387CA91D86A87329061F1A816375E5F5456738E49FC7A167F17F594D7E061053
+C80AB2B0CACB43E946F1D6FBD96D66BFD51FE8A4F9A979860749260D9FD56027
+A13CB1BF58151A09CA05655B54FDB196F800450DFD0B20B1857F95340EDC4171
+07B846D46D8F4209BD4D28ABFBA8A2D48670EAD9D31590F0B1ACA88177515494
+369C323C3FB95EE60E3A4117DC19D99FA9DE55AB6DBFCF9A8D8A35676AB731C0
+31C986C622336D6891B429E8E1CE0993EB580C254AFD7CDBA4ECEB4E55ABD3C9
+31C6BB8EDD2F1ACACDA87918CD99C3E28E733B4F058C991024DA275145EA9861
+E05DB59C6E6BA0177ADF45D2B82B402CDA46546996D516499E16827EBD492AE5
+5FC1B0D2EF6D85A925A1F944A5422F100725F4C75D3DAEA3FA3153816166C812
+DFC70ED798C8C31AFEF5906C4E670DEB1F7196857B93AB319CE62C4F4344209E
+7E75A6E0263F8B6C4D537D22D47D98015DB6616B56BE9702B5C3116CDE88E42E
+BFC6B27C709A6B9104FD20A452E38876793C34CBA110A5A96AF3A06149087ED3
+613790F48F0FD9AA5901DD508CD58CAB92CA9A71F8D8A89AE99DA8CDE7A466F8
+23A450BB524CA5AF7D1406F8740287F7E01F7F408B5122A36DFCA7E18A0F70FB
+0DFCCD07D0EF1F8EA73E246B6DD73B3326991F40F77852E020AB366D9E129E24
+6BDC636BEB33577339D33AE3BA737B25CF6C699335173CD1750A3116BE541BED
+D34292B2C996F215A33BAAB5C6E494EAC2E39903CB0A939FC76BCA004EF72927
+1B3E2922092752EA6C9250F8C3FF11780202C126A1B78B5A3A549C3FE2F8C087
+6D0E37264E00E9A3466754BC98FF45B478F943769E0632233C7EF859D18FE124
+0C85051E0670D705C6EF3EDA2CB4631B109311C2AAAC5816A12254FF417B749D
+9B7CFBC5B9F2A922366A94B8695C4F616A27F16184FB60A80D6C0DA575A9BE99
+46B57D29B9AB35B9520416789831B0D712066987D3D28F23FE06905313A2D2B7
+BF10F098997808BEAE6B74865A45D3C82099216CA4A45930970CDAF7AE8445ED
+A017F8D672F6D92C8EA6C5DC2389FC9F206E910C4FE2E0AB709C767431076CB5
+C1FC39BA356A210E0F914821907F123B2FA1EABC744E4B89EB952096EE045C00
+B2D220B301E7FDE29E5A55EAD0550D79E5E4E289E961211216EFED1EDE5455FF
+D7766B317B33206CDF1E624B810A7016D6B3DA4AA53FFE9F9DC62E184D0F7EF6
+1CBD3D50A61FC07D91CED2E3715B962D46633328E4DA161E9B1FFDA051500AD5
+4C6245F6389992E51B91E9E7E2FEFF0D8A7BF68CE7AD485776C22A02FF6BDA14
+F56214F109B9AA5879BDBC1B043E06E82D12F09F09AFA5434EADE81002951E91
+FE31B49958A4DDDE739A231CBA8977817BAC0F45411C570A1441C93BB2327AD8
+4FBB3EA83BFF54FACABF774639C79BC9355BCF5FA8D36A033B339CEB8797B8A0
+46800B23E7687AF81400951627825E300A394A9E1DD2C08258D117C20A4BAA74
+06684A210F3A6A3BA6F0FE9810DD81F80D6A048E9C4DD30891AC9CDFCC4E2AEF
+4FF9E423C8862DF5D6618C102D902E6C8247B497B490F31E4B4CDDA794E6ECB8
+78D61FF40484476A96131857648A506DD569EDC2C6E9FC9033E9F06930E0516C
+7315A9E60F7378AA94A7F8906029166E0183790F63717BFE0AE27DA091F9D455
+32070F4526A22E921D41C247D10F0FEF3C945EF48A36DE9D31698D0739003C1D
+8A04F3F21A095DBD46ED849083472F995403B63D6FFC407C82C2033C3EDC3911
+0B576D08EB7DCD82B4251EE886FC25B156CC7C4DD59F9E3380C8D066B92BB4E2
+F2FB8255B28286D05798EC34C792DC9703AB1342B97AD53D609F551BBD470750
+E5FF72B40F6BE56FF7D6E683FE3DF1C6FA05749426D6529E85736ABF68C93E28
+8B88B6D8A4846DFB334C94701220D52F068EF8BE935BD06B357E4FE1AC79819D
+54D0AD91B53E239F022507EAE8ED96EF89BBAA1304C6DA975D7C7D826CC7AA12
+D092775B7716F9D7502791AB17084915B170B7C33B1EFE969C369C117F6015C2
+96181A2ACD802FD33D257BA1D02DF147D6D0B2EE72A5000FB4CD3D03E994BEDD
+9AF4D7C5589A1ABBE772439B815AF6FC7A0C41BDA57B6A126FC4EE04F1ECF8F6
+3BB264A12CB2F9E3EB0A4F5236DC33B375D4F53FBFE22C28703329779F682B7A
+8138A74A949807B907BC57B02B574692B4E5FF3A459319DA599AA5F0EEF9DF9E
+9129E83B9857C6E24295C9E861A2162E22514AF3DA7346EFDE8BF3F770BD1246
+B9BF31B7F0A89F1C9077FEF49E693B565EA9FA9905C2C2FE3F7D879BDF57572D
+5381D0CCBCBE05B8156C8D55A6625568BE3D2EC4EEECBDC98920D0BF25178F5A
+948DA51DCA179C7DD444EA3F94170DF7F52C5BA6C2BDE18DA4D960D689845C62
+B6C197EAEC465757EE02E52637E3E43FD753BEFE8388FEDAD46835058A0943FB
+13A2B382B1725C586F1B6FB31505F568E71314F44237C16A5635F8650EB36983
+4ADC522636D5B7FB6E1A57697EC6CF0406D6260E990513F82FB14334BE9DC2F9
+9C6687EE798662BF8DE93E70AC31BA02BFA9ADACBA9EDD72C3F2287991A25003
+9A6FA34E839DEB49A73B4C93E3C49F71BF00677A432BAD8844C046CE9BD4AC05
+5A43413BC60AA816393C401CAC6E13441E6706A1827EB6D1943E2A0BCEE1F1CC
+8F6EF670F1511A102240147F1F067E4FFBB9FAEEC88BD41DBAA8F8DE600D7AD7
+C81F769BEF76B5ECC819400041C98218608971FCF86E050B3575AD28C03AECA5
+230B42E73C4342FA176D04942E2A4818F9A8B98982A73D803DEB0B5A98EBBBB7
+0F6A3A9576AE39BC6E98D5871F3AAD6C2752E56959371504847741E408072840
+243BEF3DD0132A9CAFF54A235344DD051860469773AA2DA7B9A5902E7B7239E5
+3BD878BD01359055FBC4D5BA3758BA0B2DCBC088F4C336870F347D53A502DA2D
+7B0EBC7B396815CECCA181A83D58B5288307F73834DAF2EF24A48D0A3509CE93
+1435DAC75D33AD45284322350A04C5DDF9E903BC7861F075EF5582A3E2F9E7CB
+984B6077E94FC56B022240F9757C34144785AB0227611BF204EE320D7BDF63CC
+47FEC8B529E62AED421309C87348506C7688C161628CE45C538677F469C6352D
+B3D8F62F47AD3AD7AD449ECE8A10F831F4BF1D2B577C381734E669134E561AF7
+E5F15C67DF0A4EA669C81A6AFF514C976049C0B45DA1AF6B1BC6625B9225596B
+B3F51F7D7A89608F74CD86B93505A26B0E1256976F208BF9334D74E714E8F7D6
+5AB93C176D33E399F93F520426AAAA3C42704298B52F34C75CAF2D06357A29E7
+1B989E1D3716AC598199C8E1DBA03B8D18C9419A442B745A68D5F002B49BBBA9
+14A81AE724E46182215F61D066493B2B89E48FCDF8D590C69228CD12EB8848F2
+D28F4B6B17ECCC9B2C134CDC97F9C6EB02C17F4F8BABCB075560A29913DC97B8
+840DBA07B832A01384B92869CDED9E23B07E507096935A364CB6AE358802E768
+DC26898AC7335D3C36102F1CAF9D5AECAC77F88DCDC1708B2D2E9FB92A6217BA
+7B6D599CDE73FEC9D0816914D705B36FC365FF544077CD2A00CB7FE5115A2EEF
+7D9E87C8866F436A43B9C3CC68725D5883E3EBCDFFB3F4B9A476CB4DB222BAEF
+4E34332B99BF94549B2C6617CF8CB2E4D90F172B4AA995908DCE151A4E37B7DC
+E184DFBCFF5BB49D666F15666380404D0D080A4E8F30C5FBCCC7DF324142119A
+8744AD777793781813135C8A84469FC5767EA03FE7151560E0F1E6446C0D3121
+965F6B09D1555176BEE33DCC36BCEBDA768F4DFA83181D23F6736496508827AA
+1C91D4F7056E7E238D05F50C9F0982980353B002F7615D267B2A81C713665241
+40AD5ABF1EFAD9929DE587789D382F7C244B42280ADCCCD9782C72A06FD7DE53
+FD31DB6EFE80367AC7417E9F11B1F468190DBF9276698E291C45C6DD20D29EAE
+F9AA8359DADAECC00FFE42F8EC0B2F4D50A5756097E8A916E7135F08B43DF400
+AD5D80381E696D906610BCA102AB81944B246EC0DD1C8FE103E5A6489F6E88
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+{restore}if
+%%EndFont
+%%BeginFont: CMBX12
+%!PS-AdobeFont-1.0: CMBX12 003.002
+%%Title: CMBX12
+%Version: 003.002
+%%CreationDate: Mon Jul 13 16:17:00 2009
+%%Creator: David M. Jones
+%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
+%Copyright: (<http://www.ams.org>), with Reserved Font Name CMBX12.
+% 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/CMBX12 known{/CMBX12 findfont dup/UniqueID known{dup
+/UniqueID get 5000769 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 /CMBX12 def
+/FontBBox {-53 -251 1139 750 }readonly def
+/PaintType 0 def
+/FontInfo 9 dict dup begin
+/version (003.002) readonly def
+/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMBX12.) readonly def
+/FullName (CMBX12) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Bold) 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 12 /fi put
+dup 33 /exclam put
+dup 38 /ampersand 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 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 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 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
+readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA
+0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93
+51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71
+7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551
+E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078
+0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273
+C01924195A181D03F5054A93B71E5065F8D92FE23794D2D43A151FEE81296FBE
+0CF37DF6A338C826464BA5198991445EC4BE80971DB687336AE8F74B516E333D
+2D8AB74D362C559AAE6ACFAE49AEEF4F52E28C869222C1301D041E7A0BC1B608
+1BF728EF9E98F3A12EB2714E7F16B14E055FE1FA0EEFB058860ACADEDA9D0E4C
+42E3C6F1E4869471BFAA3760175F3FBD842755A9D7847EBF605F18293B42F557
+FBE2715002669091BB033E1AAD657532F34F7C66E4F04D63ABB07E6CB9D9AEAE
+78EDE8B79DD9BC87A1FF445EAA05B5572BB880E69F4DE1F82D7F0E9980AB0C18
+22C448B0B1722D3CC33C56FF287CECB80658B3AF5E7675BE82CEFF3DAD5942EE
+A03C955FF979E41E54BCFB5316A9AB8945C403A73180D0961416EC9C92F49811
+4B91BC4C788392994587517718521E416D469F69952149FF7F9224377EBA1065
+4A727BF806A112A7B45B0A1BA1D5A23683960575368D9EAC8C04753BF7465AF7
+95F25C258C63E4FDFFD0B412FD381946AA38C0B961652BCEC30322C47BF4755D
+9F91880688AF066E32FFB22E1A52DE741307AD3ED830D6BAA1D1F562919666DC
+5E8FD9862AC8600B0AE0BC7FC779252AAC57248744ACC8A8AAFA836BCF09B0DF
+9253DFBB1CB77EA8A59D42D1B18FF25E9AED72FA62FEC3F126F030F5D7DED9C3
+CF60FE890BA4A48E39E687BFFAEAB96AE542A6387F6624486037C8924002A511
+BEE5FBFD780AC1D4BEC3FBC47A930BAD0280D444259528B6C565DE11DE36BB65
+9BADC55C1EDA1A80458E98896D782DFB5C137897419602809F9BF8CA39F00C68
+EFB9E076FB324C2963F23CBFED28B9EF70EAA4E4B903225D1F199A7162AB239A
+D92D71C18B1B682D04C6A48926275BCB16D413B2A0E953E1257E0B12D8B717CE
+2EC84CFBC046A4338A69F454A469B12118E562B4F56C5FFB3CA5D357513E6FFE
+947A564B229C7FD873057D5C7CDF03E958294A1003B37D8DF565A70A00A3734B
+0138AE5277D383D10C2BD853EF806D3CCDC47739F0E374A3DF3B63638B949ED6
+4EC25869DC1C0B1F4DBDFFCC97382841D8F10F3635C792139A1EC462FDBA379C
+BE0990CA2E70FE73137AFBBF30CA54954D7E7377CC50BDD780DDD4C7FDC77AD2
+F3EB1169F14A0041F18160F43C24FAF556DB5D621709FBC544CE55424F7446D4
+6AC07A51C8CD5161AB0AD5084A96FB35D77F1CA155147DEF8D7A590EA6939514
+D4A226588295CE0007BA8A550895511C8D80BBE5CDFB8A50D249C3BDCA974415
+F5557914A9B805782F399E4078DDB6264F1A49A9A5BA45E284A5196E9828EBA8
+481D357B8D9E6ECA631A6204439FDFACE7D7E6A2392726107CB7D2517CD19A24
+FBE592C119626DB221BBB635B6EB84845C16A9585282E34958B961F4A543AF9D
+419B6A9105BF185FC767712D923437BE08A9C0EB92AB6792DBDC671029B6FCA6
+7F717FCE379C0F3B51C6CF042A762ED04898FBB4B0105C3C4ADDDC18C51BAA3B
+70A93666669547081D9246732CFF74C83EE90DA17F5B4F8BAF47FE4D81590988
+2858C9B96071341FA0A0D23BDD4947FC9BC2297913CFBD4FD6CA4303AB3179AE
+0203F1BD502065F90CE9BEA3B52DAFE4A29446082EA0E6B1D7AF1F31D0AD02CC
+9A7FACE2CA86E5FE0F6A425B28A5940ECA306891CECDB3CFC7A5BBC76B5D9E8A
+C754379ADE80B4D72CE493010317BF21A0CF4A0A55C1246218839DCA3F4D626D
+1F4161D38F54AD5142C1CEE95C61D8BB10FAD4B772F4955777AFDE8AE5A837C2
+A2BBB11D0BF5DA2E63D0B75ED421DBA9C789B281B01846B65DC572BA69591969
+21265DB722AE86BD8CAA3D887C975A617ACEDDFB7AAB341F47532AC0F354A530
+7662C089DA3939588774FFA16FC4A52555DED6D6F51DE718BF5F345C23C90198
+17B77CB8B5D53A5CE7A79F3E286B6A59F3F6178AC8BF15C0A15C1A8A95D03B60
+30EBE53DE328CE085CD9A1D49C69AA299C5B58B24334A546F6E274C1B534DC8F
+3289553F560C2F81E413ADB92FA0E7DD1C2F39D5FD268EBA97AB7335ECF28257
+96B4EADB7D0778706CB41C7E9C882760E7670936774A1088FFB2011115FDADB3
+B69EBD5108760762521C25C968C3E282DC3400001AC8FB1EA27FF643E3025950
+1D617BB8BB321281708E496277E11DD3AE0023DA9F25AD06B39C7CF527FED27B
+57397E88D3DF70EE4FCCEFC8A0927D6B05517E571B3E70ECC99F3CBA32CCD4DE
+B8BF22626B6C94FE65598A88AB90D238461EBD9A098DADEA4091AF1CDD7560EC
+8E1B9BC2321686E1759E6B8A270C8CB4A254F7368039602EAEAB86ED21CDED91
+8F2DB9889F46981C494C7EAF5E819B91C129F0740B8002B510014985E5791F59
+B16879CC6521D8E9F1C4C1890AC85A78022BE614BEFF318AB2616F0C3F02405E
+BB425D1555472A2642BA7686E431DC3FB8A1688B76660D9957C3FDE8D58109AC
+21B1234C9DDF3F0FAF93BCF7B2F88A001F23162E1A13E5E9118D51B485B70A91
+D0CBC39CF44413FD8686D9030782DAB58064F5B987E0402AF5B264B17BD31BD4
+FDF63951BECD73ACA6138854EF35B062D01F33073850D9C09A818828C581241F
+A625AB3638081DD0F00F946BE5450D38489CECEA4E66B4D85CC8AE0157E2AEE4
+A22A9313829F24D573101D84CC1784D1CED7DFAD5DD966601370C6CCBB723082
+A86BBAF0A5D867D0D2E3CA16E14E5109A29EF02649C47E12E88B3B397D65CACA
+DEB9940B92100744D686066F8250FF30E5F13D81428EE238A2E4E07ACE0F5C38
+7D79D4A336D0D26AF9C2B84088ED8ECDF94A1E3FADB45AFDAB46CAD6FF950B0F
+07AA2CDF82374DA76C56D29C80138841EB13F0D02ADD32F88B23E282ECC845F9
+BB9AAECE9CDC644AC2D49577A92307A83A99434F6493156DF25DBF0FCF2EC21E
+8C50A312C3D19E0609C0038554CF4FEF3ACEB7A833FD54B06EF0D617C2971C89
+E4C06075B09B84A4F78A82152B9A9C540B1D881313C2C74F20ED064A9606EC2C
+B56D7BB4797F1EEF4A9B13579CCF311FA4A4DFA62D80FDB7F535CC6526D1AAE5
+45C008EAF024B48C377522F74D939A475970533E645B1BFA81997549AFF26F67
+2AAE6C2EFA357DB3B525276EF330905688777057F4E4CBF584520A534A8587E5
+5A8360891E75A15205E8ADAC4A4E5A6E27D0C4A7D492216E4BC023AB027F37AF
+A8DC7579BA50204D5F45A51460C5BD8A5A7F87668CA6451137F2F59E117BBE28
+5C40820882A5546FA76F0CF49F8A6EC445F0647CC3227C400F56E7E9B84A6975
+E85E243CC1666DBAFF4E07EEAF3AF71BDACB30DAEA792F2B8504CAB071544F01
+5D66243D529C479D276FE22F7E275D9E7FA9C6EECA18716B2F213916E32C1D94
+6E32397B41AC6779543218E506569E3544803BBF9B404A983EBA62A494187B30
+8D3DFA4E1237A2E5E08224A60492C09ADAD8775B7CDB830520829BA164209ACB
+BCDEB2D574CEBFB7AE4BE72DF4EB1945FEF2458761AD8DCC0D378AEB7DA002C6
+9C14A665DAAA532B0ABA98D7BFB5A6151FF6703385AF7AE8FD315A492FCCDBCB
+B825707F9566B3B4943A3C61C3DEFDC31A843A2D67AB06891F3E110DD8C73D3B
+B5E4151B51D9F13905D7D94DB9ABBFCAF35F43B6EEE256B1A80ED6D1739D8D5E
+8C767F6F0E8704C5345D028A2A6DAFD9BB7AA048B8B895FE9423A7ACE858BADD
+595CB074A128DAFE08FDFFD6BDAC0114159A702FDCBF8013804B0CAEAD7AF38E
+FAF086A3248AD4FCA1401A85AE2F72E3E6956DC0996FE8ADB18F89B14A208A15
+13F81AF73D0DB72F78C4DA634ADE3C73756CAE6AF2E149C26316DFD93370BE1A
+FB4A79F77A67C07CB0A53C78367F21661D4AFE9E27328E077B522B50FD9AE2E3
+DA087BE481515B5DD7BF894A96A84A6C78874100505B7DDE1D22EFCE8D58B3AB
+313AB5495F72E2CA4E6AE22C0CB854302B9990372F1661D9F0A517F90686F248
+C5643008B3D29F7296E5C8FD4049886662EFDD4106E17C879F5D41CE84F87E89
+F6A3117C968B95A35940CC29C43E1E0DEF51C1E46B676301F40D59615C3F73DD
+DE37B72FF7105DB84227DA5241583272AB1C3CD97AE11C1EE98FFDB5E5F44844
+8FC41BEA5C54B26341AFF6830D9D0A5A2901B0653D8BD0746838194D240FF753
+E99750D3383373F453723D86BE97B571B8B84D8696089B5CFDD53E6C562A2197
+A8C4FB0CC690C27761A816B441029D3D306245052E0C41B53025D8CB7267CFE3
+C17FDFE348E765326F91AEB700CC49162DF748171214252CBC821493DD01AA20
+417D66DF47EBEFFF3E9BB2B0A2BE7D9B8C68BD570FC2EB0FA54CECC318F04C43
+19598BDE93F2F13DC7847354C99059AB20593EE51E94F9D4E9241869D605AAF4
+9D9B5FD88C3798A039A67993C5EC68B6326B132E647F67EACCA7F7AE7F718D85
+12666E90D7C73EF210E344964A38228B236679A2B18F5E081234CAA2458F8D83
+3F0CA308D19663CB12EB904076EF88E556407C33C9380A6A3D68A9EFE65387C1
+A1BCD2D26DFD2AC0881EC30E81C0A4E76C244A2BD822EE88C4A60B480D107E68
+90E419A1F512E865BA922A7830909BC2611A80931CB2E9344529586726614D94
+3AC5200FB9FF68AD9686506C5EFA8788C0AD0251AFE7F95E84683380CDB421C5
+B1A783B6D5F3A6BD1BC1C14B363DB01C87C0796DCDD5BECF41A1A9F43183CF6B
+82C2AE49F0BFDC5DEF7729F2E638EE6EA9E4D059EB9BB1B992AD8C82D501A550
+1BF73CBBFE740179B54E193E84A55DCD61B343C1852780FFB44248FC9426AC94
+AA2B3FE20FBA30F6C4D1E0FF3EDCDD8C0F57CCB50CDB0EFE2E04A8927E239C1D
+9B026C7929BB48461D4D695FFC766C8A0E545B1BCC2AA068D1865333108E7985
+2D93F9B00EA0A90939D0D3840D59B6CC0CE2C147B2E1A9A4F14270FE3ACF51D5
+99F7349106165AD627CBBB0ABA01ECC6D3A14C1DC1ED23A9DB9865BB4396C51A
+31ECD001EAC94B33C34E29C5611148EF3E55DD61813470B8F3CE32564C749414
+3C93C77EA5A3538A0B5AE3FC4DA32813B06772E0E48E25BB39F3F6FDCC077E86
+F86FA50E18FD19EB2F37311CE87F18F3BC85CE7FD71CA92D5C3264E34E04A2E5
+70C79D99F54D6C6D9D527AE45EBB48411221134587D2253E7C8ED7658EDCA34E
+5E768DD14E0200470F73C44D006CE8CB35DE1CA3EC10ADC668B0662A7774C891
+84EC95A31DD872F0728D9F65CA80940080E04630BE4DEC77A2C49E3913C39978
+BF145F8832AF2C4385EBCDB15F9D32C22CBA0CF950877717D6F1591D7C0B8047
+8C9BFCB16AF7124ED83137695F3D69228DB633053208C29E0ABA1B06A7FB3EE7
+5625CB44927E2DA6E038A6E62DEBDA2D96A03177982D8FA33BAAF4426E05F4B7
+9C1748B3FF7691F9888E7FF864A10B9DF761A41E6B5CFAD2BDD7E1C4924AC97B
+F4B352705316DD1A58637CC12D71C18A5CA691AB2AA8F171590EC24582B1123E
+94D4DC587D8F99E18A711776BF4013C96446BFECFEE4C809EA94B169088024DE
+0CBD20199A915AA406F0BD5F3D63D1467C49B4691AEBBB35ED6624F2D7BB74BC
+E80FD92B9FD04DD9C2BE9B6FD29EC7EC07FAB447511C61DD299C783BC09AE2A4
+7B3CBCA6A20C6631D06D0B2E2482A50612BB7C29B7E7D0A205EB0E8436702581
+596BC996ABD58CD8D5BAAE4B1478195CAFF98FE0141287296C4EFB8D2E7A8442
+F0A3AA9F9264329982532295A176BA1867EF732BBAC49AF485D9D0F7130F617E
+7F7DEEF935874D55A22240F8EDE4F247D5F73481373A392D40A8076BD91079E1
+1CE5998BA13D48D56B49A92B4A18430E316405D2E2E391B496A1934671FF1785
+AF42BA3B2D14B8E04014437FD194455C50289DFBA61B5C377BCBDADA48E82DEE
+4E70EF5E9DC03064907BCB8BE4D59DE069FB0C0CB140DA54708E630767313F9F
+744594AD8A499CFEF733E640A11FD74E46A749F9C7D18D49251BF85C6EB4668D
+67598C31A8F90922FEAEAD4B83B6E7184567DC798E4BA1C4C9B3461A478D63CA
+054F13B502DACB674EB49D6BB935E5EC82BF99FDA7D47C581AD7F940DF4FC6FA
+6C6D25D647033AC69505F0CAC58DE99087F365531A6283CB89CB644688963C3B
+8B2203A94294E58739EF23C7803630A1F9121D62BE1977DE2F41687C8CAF87FE
+CBD7AD3B98E0D95C8C6E1A7CCB0E09465AA874DC90A0F5DB2C5E7C130297FD39
+EFE63B0350B5139D09E6864D22C3F1150B29196E40EEF9723E71158B7ECFB8E4
+C426FEDCD439420B7F1C251FADA347C9A2C49738B5A17922E1EA93CA7B125B76
+57449EAA9C1D591CAD327D0E98EF2D44D614EE9ED49DD31ACAC0B956620B6BA5
+5BF6D08CA7541059D5ED2EF00AE2EE95488F5645BF6837D9241C0D3959B7580F
+C9ECB2BCF3E65C07D52EC9CFB21C11CD4C883E44C173214C900C44D2E1E43DD1
+CE8DFE3DA93C38B548BC4EC46FF91F30CFB97525E1FD4E77686433B20BABF8D2
+848C1CDF1BCF185CFD7A81D2D4BB826E837E2AF35CFC4F419F698DB0C43E9F9C
+B0FB628AC9A3CBE9B1FF4A067016E70333E78B32AB2D89C483834B31F5808FDB
+77492E099F1504DABCA5722C7860CDCEDB2DDEB512FFCC7D287F4945FD711F28
+87BC3D36173566B81FC2C1290C717A09697DAC6072408E20926D39270121CE58
+3EF97CE12EDD7F87F2C8CFE36C3C0400869C0D813B71C425343EE0CDF717BDD8
+409D5297D0F8F7FDEB0257C0A391F5635E0DB1116058942FF3E7C94D5F2873A7
+A3B0ADAFC3835AF2BE474E6741319BC6695FB37F59AEE388F81F6E66F910000B
+72E6BA7531B4378CEFEEDC79CCF4947BA1703823B5AB4F4AD73D9615C66C489D
+99D68E49C9BF765B7FC547BAB9640D51D5A7A2396507AB5A4DFF3D14F52422CD
+8FCFEAA06A56C6C7FFCD29C9A7A59DDD2A909A9363FE5F1E9629616D25ED38CB
+E754C059E4379318CC491C3B1A90128693AC53F80F8210FAEA7EE638902A7D3C
+82B95B3F5AE340EC1B648DBB9FB679D6E80B7F426D8671FE7136D97F51E2D2F3
+C9CE9183E4061CA40091A2A70DBB9ECBB19CE3F65ADD0FB346B54BAB182E2CD0
+EAF4C0F402C25573FB344EA771B297BEB615FCD0595172E84ED2A62FF8962634
+23C19076C2A9ECEED5135994EB397303A9619C76DC55E032DA83FBA441BD484A
+59F70A5110A8927F6239A14D4E223E189A5462E4A92EAEFFA4B961A2A32B320F
+C2B4E8C1821FA67A655B5042C15E4DE1FB3652B55078DB123573C4E986B19DB0
+1C5131F3DFAB271C30A5476B4A19D8FC922E31879C34BAED94C07A4841B8209C
+403369FB8E842610D1EB4662B6171A4465FD0E819964F62EC5B0ADC92F08CF90
+1DE0B410FFBAD16F6D355E8AD72CCF67961EDB6CDA82398021007C2D0462E893
+75EB0710AE4A6CDD15077C9DEFC5774EF4A657734D703CE42174259B58E5277E
+0DF26BF59AF8D1A3E7DC12E3C12AA4B67CF35B19962F6950C2020B698D971B35
+82FF84E72F72FBB0C54A112BADBAE6C4CAA358BDE6A705AB59332C3850CA3D25
+C7564499BC1319121CE0D93218210C68080AFF33420E3CB3A48BF9EB66BC07C8
+A79D8CD8E78C200FF7CFA3DAED0B9E87E6141C88B436D8FCBA50AC195FCBB9BC
+9512B95FE3A37FFAAB39850FCEBD4D50A243EA416E73F53B4B00F3B6EAE0CA06
+0693AFFF8191C1AD2A5129C8A8DDDD492F8EC8B7B93CCD6D4F240785E515C128
+D7AC38F14C1FF204DB89A8805F8D737644DED6E8EC6A58365DFAC56200AA22A9
+8F20DE1C232DE4E818CB9D2D3330ADFD72C1B5146849142B447900FDB1DA01E5
+C1BD63FB69472D782C659F7862671FEDEEAED3617266DBD34AC593EF6F483D5D
+AE56A502F9E66041D58C14FD6E83DEDA7DBA041726D78EFCF51152DE72B51F2B
+B65060004FC8F67755EBA2F10A2D3E496FA3BC3B664ED03F496AC074B7425C21
+18FE971025F8553EDFEFBDA53A475B36DBAB73D08985749FD3B0F0C32108EF87
+BE0C8DA94598691F774407E4D36D336BC9883D0FBB46C8D8F786780BC5EACB9A
+0875E368521C0D91FEFF40A3E10837B4D590E004A9E766ED62BB3DD2E2AF78CC
+29F6C250577DF1B0AD91FFC3E1EA731CF4249F91143B7224DC344849D03139B1
+D53B4AD7FF13D2A79C2C38E0D09590B499936C87E9D0D71B2B06D74B7A1D388B
+5A56C9FF8C4D4EC2F469549C5E2F62303BFFAC463C9C30FF7F2B77E7671C5CDF
+EE067A2E64F5A763104D3EA3320E15C45999E0A4D002EE072875ADAC6F228DFE
+893664E7C2CCD757F6DFB1ACAA9F5922492B573B6536B34F3B931B8C1C761E00
+BDEF6A0D88FB24D30FF643DE610795E1730133715D14FDCA813C62188C66D7D1
+2CE172CFC1203106790E648D9A19213A88589F54603BE7A45DD5AFD1BECB8C59
+A9F476D3D6856884E41B17FB36AA81CB3DE0F664F06B5C8BC3FD00F170165DF4
+889A551DAF6B144FCB5EC9D9A64C261A7BFFB3FF437B2C44E06EC1D1D83451AB
+97BBD3AD1A2D1032BD4E945842F0C8A23866E08FF7DEC3675C07595EC2307447
+3CE67B718147E3D776CDFF0685A731C4F0BCA79545E43068CFCC09A82A5DCC8C
+606574A06D7DF8359C48409FE7BE5CDE96693BF7C2E3D4639862BD3612E066A1
+E7DD5995A6B5C278DEB8830481EE006A0665E152198978ABC35805453F047D07
+92C26F6FDF1F85F53D93DAD407E6922EF30EEDB860B0642CF93AB926A88E0DEE
+32A737D1F5311C9B7F833F9310591F1D0BE6149EB5190C11C8C18EC06274F938
+2A42C2B1799BBD8BDEFC45D98E7FD1C2FFC3FD255266851B3C7A63D84F3752AD
+82EDC93D2948E49073D227D198734273D128A0A12BCDAA91E5D01A29B1A8D781
+0B988527AB0B508E4B963CE88D309892E2A9BF3A7EAD6F472F3E04724D4D4A96
+D2B4EE4E911A99CB73FC1DACCD3EE4FEB966FD2AAE3538690347F14E3CD1DE70
+9D1EB5183C7697095D418BE45D54B489B2686E18AC326796E14811F41A5708EC
+D8511EEBB544D2DF73EDD7A2C9989A646D961D8D8F8BF1158FB64C7D1E28698C
+37F1DF9AECE840DF37763F27E05141AC2B359264B3C107C6677050F68ED9EF82
+11DC13E6CDDF53EB762A2C21C4799DE276E420EF5DAAC04626D85E894880D414
+36478626DABAA37B10794497E8BBCDCB8DB86B41E52E9A02A13D622A41795775
+E1735F63CC8A90417E3144934862FE464F9893EAF4F152A1AC9CD3FF21ACE679
+40D0D4DA919145891A43C4DDAF1BC40FF88BD64EAC162007871C9FEEC8CE3ADA
+CDE7A2870D65D3FAE3A7BF4376DDD98B027151AE330E3A04913E0D54A10959E1
+0354C64D0E7BCCB5F3594C437FD71C54056951441E332124ACE8F97AE3B06514
+EDB7C61B1A737F63FBFDBA7CBAEEA27A135C581B0E7F8996E75DD02A4A21AD2D
+E746F12B7AC864DC740B5E92F7538732653FEFDFA7EC1E405D0FBEAD3264B373
+07E3F79ED28CDC17F37288ADAB10502675D4BA86A30E8457BBB45C5F3BEFC2E1
+EEF278E4D2E90BD650E73C2E078239B82B0CD5015DB0864747B5B3B3CC9CE515
+2D8122E87B1848A5C598FCBC89713814A7E38DB260F7FFB7A1045AB4E2154F71
+06366E2AA8AF61AF86EB140D8E2AF1D7550E5E7E67A42CB2FD1D4BE8A989267C
+82A70DE3B8E5973DCA059064A56620BFCDD7F0C539C300FF0DB1E036E1A5466B
+0CE24780821FA175999099EBDD6CC0823F052125FAFE0A6D131667F66B1EEDD7
+8A6E349CD2AA41AE4913210B39E63B8F5585E9C4C3AD0ADCEA673E5CF58161D2
+0BCB9CD67645EDD9D47D13303B126C82D1AD76B6EF34BF0D80EB14BCCD018735
+7742ED45D0849802032470BE69D0F29638855AD86ACDF9CF496B77EC71C98023
+494DCF8386390113BF944E378AA844309608A343F99A6B8EB324DAFE5B40BD46
+259290CCB55FDDFE03FDE645AA75AF70CE2B2D17346648FF5E2A0779F90744F3
+2B4C6E63E259AB8ACC8CA228AC024DFC6EDE5910FAD1161218CC2A26FBCE02ED
+7114800131BFF1A471EDB6F75033EE982392B99862BB480865E119F9DC25B953
+676A4151DF7D5DB5AD77538460C62A894F08BC6D1CB491775DA0C7DAE67A2147
+2E695EFFD20A986768B0FEB519FB45AB4C9646FC12B7C24AC6420B720F705AD2
+FADF1CF61F699B6F877D5176D5A1ACD2DA07D8883593BAD8E11BDD892C31876A
+1CFCE58D61061811714EEA4E1B297D1257B5DFC014FFAF290EC9F364311E8A4A
+1CF70133065F98877948CA4CF92F1B6D651D3A3040DB261F700107EFD73E6696
+015389B08ADF2AF810E246BF84DBEBA67912F19EB02D56444D5AC54BD915405F
+D1CA86A8D4E5BC9E80C98F52EFA769492DB35C8714F406CE705620C7A925D8DE
+CD301EA6A0808C7578BD698FEEF34B659C870C16515C038A2A12F37ED374A506
+ADEBC4A5181DC9A7E353E233A79CF4DD98959D3058ED2F142968F0F754CB5804
+D3F5A480F1201026ECF1B65EA15F251292AC42D07617712643BB25BE7361AFCB
+D6AF1346A63DBEC81AC30DD75D784A398C8A23432FA3B3FB9F453D4BCA6D0250
+8A7D76651D69F9C671B992634E15CCDD0B94E4B7898B1F1BF60F028DF27DB79E
+18FE369A12ECB949FC1CB579F49978F1EEFDC575B41DE40FC80F89133283EAE7
+77D7E2BDC78240C2F13634FA7B629A2F4F08C464D175A1B13A0EA5EAFD6709DB
+0589B5E0FCC791151DFB2B93568B2926D3012A5611D8BD2731B7E0A7B9F59E6A
+4F34699AC9A81E865FBB09B460D0E68AEB62C049DA1275A0CB159752899BBE1B
+9DA90164653F5BFC6AA899ABF74000377916DE5CB881D56F270E8C77059DD8A0
+AA459026D0162CEC5726F18C8DBF50E392BE5040709888251882CD643CEF6592
+CBD4A2507F2ABF43E472447814AA0CEB7BBB79DD7948DAE1D2D2BBF0F564A14A
+724DCF78BF69F1569D5F26CCDF86B0545F9FED95FEA745BC8B5CCCB776DA6A1D
+99CBFD6AD6BF7783AF1593A0CE325548A5A1BCA7BF08AA50FE72BC49D3A42CA8
+98DFE4666C91E47881E5802FBF22B9A518D132087207CE2AB116C5F0880B7713
+21231D5BAD399D6D1E0A128BBB5CD640FD7341A722ABD437914FFBFA90F34E60
+A8653C4669A8E6ED8CED960803ED32422558C79AE9D8C29B6FA68C8BB79C79DA
+4B55BB7BE4E60C033CB0B5312170FE24004C1A60E9C09F561C107F4A6DC6ED32
+3FA525F10FA64BA967D9CD570744BA71CB37C2FC688DA603E70B9CE5717269C6
+26B6F70B9E3458202B6D53F5DE9D270C09A6B0BAB006BB77484674BC19A7E28D
+7EE1CD477A89DC4D9AF4EC4E97F0B2C1A138F60E2C26E882D4FF6143BBF824F9
+DA8A8B8B5C461CEB83B15320D61E444A5B5F1559BE1D0C203EC7922346901C2A
+3F2773824B7D3E0F5A7FFCC8ACAAC4DA47E47B38BECF963777EC093FF816B7F7
+D4E55F987DE03D69076D754736AB04558237FAB836C5CD42F5EFBD75C29479C7
+67FA9B03C1817130BF95EEDEFEEC39D8A3D2FCD470EA9A399D3046E4C37032B1
+AA722959C7EE34D6BCB3301CA9B795626F80790F7BC4FA803A0C93AF4C51A40E
+B1C2AB064AAE20735A284247FCAB1A9DF196EAADA25601057E2D283C3A24A8A0
+B8C4A10F24623B7E96A8F125D328A790BCA086CDFF4A1499B507364D86A8283D
+D794F16D4DC55C08068E9C1F53D560F0F72592D571ADA44C012FE3F480E646FB
+EDB1F0D2C42CABC8BC5F9DB66A4680A741AB652DC11CC65D8506436DC3B2DC70
+ED408388621938E8047F4E0F35C1A75925C487E6B84F925F81FDA16055A0A883
+44F025D04C907023603D440D1EBA08BFD8BC7F2661AC6E397A75F4317DFF336A
+93619D1D26DBF7032ABE5D26CD95F7025AA968FE67D54FB39388E49DDA07C6F3
+6239EAE5448E87EF2F4E18383309FDEF46018DA8602DD74B1C15DE210C10BE36
+9A0717FA02FB9DE0A39976987498B30D19EED5DB031ADD2D341617D276C5C840
+33D1DE8C093F46183665579513A5947BCD6AA712A70A118E59FECE45A486E8C9
+44CFCA95A1D12A54075170538EDECD9D335E8561D273D97922501D58FB070294
+B5158F3BF400049DFF30181D0C4EE55C31AC3820DA0ED3B8797D782127F95E28
+146FD2070C0EAFD170BE3DF83A7A366C50BA54C1F25443DD241FFD299307AB61
+9CB4188CE6B4F01F427485DD5FD5CB52DEC2AAAE364CAFF2EEC54D8A389F179A
+2837EA5471B4C6FDA07EE5991E5EE77CCF044DA226D8CDD60A758532E17DAC7E
+B594D8AB95DD5CC437500CAFC02A6FE90C2E836AC1070DD9AFA18D1F97DD2523
+64F16B8D30458CAD76873A8EE2DF8EBCC31B91EC1C8033BCCD624B4426EF1575
+55E485509F27C1FA5D20C9C7D68793B013481B8D0BABD90CD5812E6D25E19227
+58BE9C3462612FF2D63B85B4FB4402840E6F82C9B8195E649FB0575B289F043B
+8B77501858195F376A74FDFEDB5B84730AC9B3A9E51F448D4E502B593104BB01
+F86678BA8C57DD7CF8A3881229D2ADB7FE87ED14B0E2890EEF4970846A8DC9AA
+18FB9C4118F0BAD64B00B6B4CC33B96BC2EE3C8D8238ED3FE63EE98EF579F575
+C3D043E88706F02F74B4A49493C40392EA239F0DAE231AA144B33E2D681410F0
+4BFE691801AC48BBC8691FF4D8B64E747B4C6EE014C4A4193148B91D0DB1A4FD
+79CCD3870338BA216737439EF9DF46167FA7BA73731580A82A98A20F94363E76
+A5EC5F4FDA6C53ABABC8C471ED3C35FEB8E33C40BFF82205BFDCF80180EE6DC7
+1CC3318349073DEA28DAF06D50A58E62EFEFA920967BEE38EC686D908FB1EB9A
+A0FE7B183081D31DAFB64B4EE328964401A5F51CFBD45B75E13CBFE48D68ADCF
+693B6E77F76D49E57EB690A61B8906CE8283F8C03D1D8B5EAE74AD91F1BEECA7
+22DB6A4BB56C1C8DB14D050EE0A9CC51BDDD01D4AB1AB2F73DB06ECB7B5D7D1C
+59E7CC3173DE2FD707B9ED9C08419B4B19F3D15F6C72ACA4FDCACCCCEEB36E00
+386E48B088AEAE3F5B06F433CC3B9BEA425AEB7D999A2831C2918F65D93C8C6B
+B0B74F2618A713A3D1904B3588AFA8C22B03C7D5322B9D22A0974CD71EA76499
+66D71A9F77D78F92D20851C244E7BDB33B64FD1B9D0C039078B6398BEE615C9B
+2DEFDE4FA33952E9124C7FDCD03E65D29C987C89CB18770CFE33D954ABD40351
+4BD5AC8913B26A9779891217E396C11A1E01F6068DFA6F44BA53F4DDE9522D64
+BA41C2A2CF93AA67D616B93062E6D28D7DC40CEB6B7A89C02597FB343CA2B2C6
+4D9BC7507409E04772445358B54012CA4237C660297D142D4900CE95DC94E8A1
+86D80D8B6B85928E93F57926DA47106C9B4ACA822CD15D2ED1D90EC7A954BD9F
+410AE34670504ACED29CE013D1638B6E0E3C393C3463E49DCD2F745CC17AF865
+71CF4687F70E7BF56F8AD2D29AC73F61D37E8102B7F122C0602FF48E2974A931
+ECB75D056DCFADD0594E06904FF1CDC5C944756DF651D83139B1147E8CD2B2C2
+A536FCAE2F37589A15C2C21A0716F90C92B140370DEFF1742015F9B9EE1F1EC1
+CD491EB6C9898CF96894453D61D2642CDB6B5639087DA35F4D40B8E4F7AC27E3
+D57DBD28962989CCACA2D727F48FD2D41DEFC7E9CA3C4DEE3B9C837B040DBE95
+8410B8F83BB55A818FBEED479BFC7D3E50BFE54FE57A855C4B1522EE827FCFA2
+ADFDAC521DE52BAAFFBE5672174790B8924BE188F9D862840DCA8031FD7B1B19
+1706B8A4927F2F2C7CAD88B29D2E65401F6552AB89D458DFC844D694F4383C57
+01AC437C3BFFC0050B3DB5D47E7E94D7B448551E3E1B1A60D9C5DE254BC26085
+19641215539EED6682138AE46BB635E18A1744EC662E976897DF72BABCE68DAC
+47BA710027B642E42032984302EB1804F20D46B20F6382F66B23906D38FE78EE
+1A985B58093352097A1E1635E73909A8493A16D1C0751DCCB0304E7922430B49
+7FA7729F527E7EF4DA1879CA920E720A5F462BDC22C8DC5FE3E463E35E86FA41
+848E009DD76F249747E2B963BB4C2FBFEBD208D0E9FEFC8FF7B91AB9C9DE1FEF
+E511C85D8B794EF9FE03CDD2DFDB6F8A6B65FE3A5783D8ABFA2150F3FC9E20FE
+B24DAF767F6529C49AE81C0DE7687EA08B7693B646A290FF27877BCCD13A3F7E
+A61DFC1C0B11BE2DBB0FC4448C6811B5D92E4DA2F6363E2ABE6B08C189FFE74A
+35E9DD6F7F215F65CC0400923C10BE696757F179606FD528165877079244B754
+EB22ADC684F2F6370AE1BB50042C71DCB9BF36948A5A08C64807ABE73FFD24E9
+6BBCC2E1CCDFD0C5DC915A754128EBD432F2D8F9818C181144EFD3217620DA55
+B484D0F3D1206B2A8AEE513A374A01659B1D8E56125D2C4370BA8414DB87E7CF
+7AA30EEEFA43118A7652A2AD83E94D71840392EB75A5832C04A895770FC9E967
+7B98530E842C023E289FA396888052BF816B2652F13FDB77C03E9F606581EE20
+7A69D18623008DEF5560596885A0824F9E136C3152458EBE6F99BE7B40A522B9
+4E261C73FE921253460FF3D1C42EA040C5C0B6F6ACC1E8753B7E4694F0E30E38
+80C5864814C7E47F7601E09BC84BC148428F963F731EE927B6E1D9F9F01FA1FC
+43DF9A0143E2EC57DBD6998C83993DB0A7C0B4173C5D65D2424C07B94E0227E4
+AD9DF96B930DD7757271B376AD5FE37EE31510CDE992E890F1FC78B7432CAA32
+775E10472ED267FC838B559DB03A3434705C52CB54013F9327A5633D7155EC61
+C4CB4903AE749D807C2C06DB959005024A58296D811D178707B0F334FC8397F9
+7A0B08F37C0D8D1FE0893CF6F67FDA177E81065FC0E9E65ADA6D42049469F06F
+C653050F2E3405E46B2871B1094017CABB6B434079CD284554D0E2E0AFD30250
+102CF7EA153DAF872A53032C385303FC7DE433AE4D24D6F686B0FA5AC3BB2BDD
+047374694DE5A362E96B59038BCF515CE71331D7A35B9166BC3D4C74ED1A7A76
+6020A3D0FA733BA61E068E0570AE7F7F45E4B1F7A45BE99D88E07D0E806CB7D1
+3B816FF7DF36BC14A4DE16BE30FDF83BFD438BE9D3B5B54597916454EF758EF6
+249984D62754ECEA96A17FEF4A0CD2AE4958909737579D6A775F48EDBFD418DB
+DF948918C3A90378349C491082B975BA40A3CEFE71567B4AE8D1BB5068925312
+FAA5CE3AEF7B405703D418D5D189E29A1073791826535FED529CF64D4C49F73A
+2EAA4A88EA27E0BC3507CC289FBC9C00C8A001F7FABFE565F3CC71110504338E
+274D6F121652D139D813E3CD473C7988923951A6C8207C47DF996999F9FC9194
+95BB2ABCD743951245938534B36B644BF29F117F5C7BB7F7C0954BEA05563516
+7E0AE1B9E6991357DA0EE7BD51AC6E772718DB43B39671EB672D9D4D94AA3379
+146F9B0719DB0F1EC98D7244ADC71E4E513F440295A85991878683FA193B0129
+984C2A6C3978E025270594DB448F0686FEBFEF9AD64F16B93583F09E65A8E995
+05DA3980A733BDC7CECA95AAF98B6DF10D6BE094555DDE6BE55992DF8AF6D105
+99FCA4DC709354B9C9D2533EC1E1AA1248F309C91D15F606DC53C2F53319350B
+7587411FAB8A0EDC2415DD190AC5536244E41F5245B5E5167D55B514E05AA8D4
+D6863FA30CCD8F8EE4A51E2A23CE37BAE08EC95DED642A56BCDA283A930D6D75
+12BBBBBD1EB184C3D98CADF1E924E67CFB2E9A77BD2E00821F8DCF5D12F4ADE4
+BD13F91E13CE5E7F7316512A57731ABF30ED4281C5072765D84E2F3A46E4E10C
+4F7A9C298DE9EBD700645B8031785301FDCC4A8323BA1EF11FE979DCB815A960
+EDA4BF85C02C6CA6EAED5DA56194000CB323C8B410BD1EF3DCAB934E830007C0
+166B2121ED6639F927F7EDBA48813D605C76C41836BD120742F9F204197622DC
+7F1D61A2D7F47758348DCD460E3E6FCE3F81DB21EF498FCE3B874B1D8707BC2C
+95445D4AB29B3AF7C23157CFCBE00688B8650304FC2A6F6730D54CDFDA797B3B
+710297C5039A4FE7CC2CDD6F1A695D5251F6CD371436BE01A9C8E5D2F37570D2
+8EAFF212D75F3524A80CA384F6ACE423148A019691EEDD21125EDFB9FE05FD54
+7B614070AC1681762F9F84C82D2BC76283C5836E80C844ADFACC90606582BA81
+3D91AE4F8372020FDEF361B674A588C9D2F0854BFCD985DFD1527EB54BC4AB36
+B9D3CFD9B1D30B170F850B587C64C45CABB4C4FC816D293BB6EBA068246F367E
+8883E41CA44AE55AA48126046203638AC9C178360A1CEE26CFDFA0C1CE6A9E5A
+9B2A6B3BD88DF8735806C1EDE45D52A0CB110A027F4A5BA45D741B89F4A98B7E
+E314F3CBFAB61532DB817476169CA1F883864A3BD99F705FB63FBE643C185260
+77A53C567D14424D984F21226226B8102C751A7FEB05E3E7120F46A73E603224
+71CFE1432CB337B69D2180815348FDF14A2B3758BB1F5ED44B5BBF262478EB1E
+06BC8ED967EB122C4465DC42E9FF04A360905CDCD702337A1F67775F17D4C76B
+06D922AEA2117FECA4B208556EDE98EF55A562A79AE85E143EA087214EE43AAE
+63F7C1E1C0E3ACA7327ABFDC224ADE4249CD4F6DD29CFE584C90E945153395AB
+DC9BC59E692BF1FB1A5ECD924E092795C795CEEA8C2D325276E80A7DA6F2E5C1
+FD00CCB0220351ABCFD30D648BF30029914EF8A228551482F3DAAF2CC231D14A
+A595DFFD62EC0511CF8DFD40FA3117AA650316B1A74ED6C9F3FDC1C542AD9363
+042701069A7BCD56FD354774418CBFDD70E10D7AFF01978EC3DEAD020C81FF45
+D9FF64C0A8959C2D66D9A2417DA8C13EEBEBA6BAB5711D0378A2142809127EFC
+58F5F1D0270FBF7329AE923A63BD777DF591721CA4FB9CEE88A1D2305E3AAFA1
+FB979F2E065911230A17DA47304FCE167427A979A9EF25D5E3D6FBF6B752DFDD
+39EB6B5D36DF372012A5FEC444F39AA0E50D8D65D832D84FB8FA08B76B5F9BB2
+B064EDC0485F274C418A3C7DF5B1EDCAAA36597EA69161FC4B62D766B257DB2E
+8B54496A9C93D58940D845AF4A4C940BC7942373DC934839256E6EDECD810752
+A4B37563BF65380BC0EE38A14FB447F71ED3F9E632EF18019BC56C76ECEB8AD5
+FD51BD172B686860C0A695983FDA1496522D5363C712E38405AF7EFA310CBF10
+418269AEBBC209096D47761DCCF0B478ED7B1691F838CC8A6E246C193DB66709
+84A5EE70C1401C156BA2A21B5C32F91F24AC1970AA22777B9D51C9C885EBE85D
+D8F20E3309B44D74D5C939413123E13525E29C5968786543F7492E3EF33A39DB
+671E8E97FCA2FF42B86BDE0CD722C5AA77176E46EA0B18CB5A3D470D3DFE703D
+C5CF58F145BD3167D9AC4A08FD88BB4B3F1DD65C1D378F17C64D02A50B0FDF55
+CCCC26C238C0AD8861FC65CEDFA0A9B467ED1C590A107EA029210C0154884266
+AC8686EC1930D65451ECF07AADB56C823252FF94D8E38A822DDE00CD8EFA1007
+9C901A657F5500480FAE0E6C7AFA5299DF5A5BDFE3675CA991726DDBB75BA067
+41F596DECC196EF804FE217DF9307D0EC75E704313D2BF805634B27385EAAB1C
+FE8261D21B0EF45BAF83ADFFB6750C76069BDAFA4E6FC925E960355114357CB1
+68D06E40D76446EC38DED9963D7CD42C227135C2561793DAE12F4FFBA4D4C3C5
+629CE9608B75445BB664F35B1E069C2C08C6F32A9AF360A592640AD701B13A9A
+50BAFC9D31F6DFF26FC95FD58307CD51C4D8AE11644E86B380A55E7CD2CD6724
+F29ED560432DF6303424A426BE264A7E80E51A51E8E40BE689C903AA1D890AAE
+4B4E0489A2B0FB4155F7BA802FE26EDD9A685DEE6C47D89AE852F18DBD523A1D
+60D95DA7E4E562B68AF0A6A4546B0F1CAD87DAFA109B7D76FDE7096B7B39FDA8
+D644A3FDFF859FBB858ECD611D5854FC3C795D3EEA91F63214013A7852088394
+4EBB1555F39791D314B88FBF04874D48127F8D8E91057E08D13A0288F059AB34
+20F6503057DAE612A48693D3A940CA57EB3CACB3553FCBDA818018273A09EC88
+8C7D570402D2D04B3AD6073350064A7A5D275582B549912E3D819F72A39F3F58
+5FA48CA5370D39AC431EE7B38D572664871BEA58347AE0317334590C4DC93DD4
+D467BAA7E66AEA2278AE204AE155E176C56A2DEB505DA944FDA9C451F1989B80
+3E4154AEB4589B5E3668944E5D6D5C7A756BC888354799DEC8B08813F32C44F7
+654CC63E6FA74DA815EB670EE85179B54567EFB90D604426C1FFDB57E5983C3E
+A112881C86A63151736851F85BE19DC23AB256D48D28018CCE9CC44A3BE04AD3
+B8F532AE02E5B7186A5D37BA9D41F56DB5E82B49DF454C350B70F1A0AC2D0392
+B66B28B6AEBD215F93E55E2D2DB6BDA940F938CC9E96E942E6E1F92298F8179F
+F4A585322917FD6AAE07D982F9D57C2E3464FCFE13D603D52F88573BEDCBD3AD
+DCAE8A1403FBD708142A6542D9EBA6F112F5FDAD1136ADD3127854C86CCEE50A
+6CE710F5AD0A153A855C1057CF67E04DCB4AE311C50B006C8B6D4927219D650E
+3DFED3F6BF822FF4D35B5D43317D4414860E71C89E0DB61998C66A004576B9A5
+C4C85D6BBC8070F7A6980F29C8BA3F1A255E34B30A6BA28CA780749004B601BC
+E3FF62937ABDEF6C86C3E086F8D97F66E4D20C122974B49CA76B7A9ECB249E9A
+80A6DDD776D3B036701C263E5B113EF8B0ECDD93C4C1D52E624630681CC63ED2
+392B37C7416109CCEFEC324F781EC139EEBFD814FB9DE477BE861F58B227782B
+F51ABF4D9B91335D76381053DD504747DA2E529BB89F8A676B6E689A8642B8BF
+72769D84B0E514EB11B75D410D1F1E7AF509E647D7EC2E0A2CD0AC650C1401F1
+726ED87EF7B12798A5A9F6BB4D8C51FB0B3D7D068C730DDE8A8FE69A76EEE31D
+201F9DA234D4117CBFE072028C5794AF125EF994E1E7205E2E261F900514FB0B
+01C114F1DDBA6D09F575BDD7F01DB0D37CF6F0F3AD48AD48DDC89A71CBFBB808
+1957A547F8F6477533AAF177212184C29ACB62EC99D7F69E69C1D28C80FFBF5A
+A6FD0E99266EAFB5A3DDF48D2533975B2446246FE37E718586439354BEB0DF5A
+FFA82A460E8F0837F7BC3FC16CEB3641CDDA067F6188BA7EB6F906CFA799A193
+2A49161F1089334717417AE584546C7A59B8F35BF23D434DBF850223DD3F688D
+B7A77D5B518B3571BE9C202C5BFEC09DC66B2E00A6AD88F8C2ED068D856534BA
+E5EF47969E2D436D681739997265BC7E403A40574357B52247E109F1A89A714F
+99BF346C7A804288B02490F09718696253DE335835989449FF0DCA69302671F9
+342D0CF58C4E585F44E59FAB522F45B7AFDA9C45483B4BF6AA3F5D91B418AE80
+E626E5815A6E04FA79D90D4674A0FC4197CB902A58E4F00D33D331D4CE43CE7E
+BADF30A6B143F45B8B64E4B414521B1C5B2851B23F334463DB3E890AB1C71BCE
+9F6473F4EF9CDF6BF164006A2C27833B59D464FAE796E61EECFA37FD82FAE0C5
+74F1EFD4DD9C270AADED73FEEB88F0B66508CA35006B358922A43683E8030F63
+B65BAEFA554D250471CD0B99EECFC46C196F293330537621080EC31470F2CE00
+54940E4D73E533D322C8A1092DAE200DC11770D5FD0CE298739C76300191885A
+3E07555BFD8269FDB9EFF2F2846526CB8C071C30838AC6979FC9423B819A8716
+F883338A8424F5903C84F8809CA84C62080B2B7B2D3AE2BB77D19817BA632258
+599344D0D3A66695BFDB71BE0D16173652C333095D034810BC18F31566D2BF0D
+3CE81C9E1F171CA5BD367AD983BC78D282B9090C220B52DDADC22F2A1BC5A6E4
+A73732E0C400ADFDB18A2B77B1847976F1B1FDE74FD569F5A7022756B980AE21
+0622F6504013EAAF9916181B22009E01226F19C184AEAA11DAC94EE10E91805B
+A819970CCC0B03609C5CE80A93FEA61864BC388AB73B4D121C6A720C9313A7FA
+9F21ABC701757BEE65B77E07B40F96DD390687F21AFF1A111C82110B8549EABA
+085E3D43574ECE5BCC730BEB6ECEB57CD14FE86AB85627927198693CAC18B540
+4DC1FFCCB9B681FCF6D086DDC7171FAC77B9D61492DB0085FDF35A8ECC0427DB
+FF4CCB36C662C7BB5E4BB0E7CEA464B9E27E898312CBBEBF96827DE131C5B41C
+0B976300A045347CF81F18C1636D6B4D6D280BED855B37C4730307BC8B9A682B
+BC3970B02FB9C84E5FB9A2F5E739005407AE254B445C4D64035847F118828A75
+1233505680CEC030C93BD833ED42CF7D241CDEBF8D1D6CF111E27D19BB8EF608
+0C79A4B6FC9F3B4F0F9C3C6BB808F47E3C598D3EBD701555865899115453EDFD
+F7F5A9C141D641F8ADE5DC4AC1F13AC3B546F79DC1E2EC94092F7CAB85CBF872
+70BA6CD16AADB58A1D1A272724F59B94B56DE9A79894890B0CC7BF40A64A65AD
+27891302FCDFB261FA3C8A3CAD261F54AE8E54777CC403B6D6A91155BA52A2E5
+68B853DBC40076CB80744FAC13B3B1323F00AD567382D9ADBBCE41AE3D57E2EA
+11DDA0CB7CBB6C31534E27B9DEB545E46939E948887335DD4D55BC81D6257206
+A9B632D610C4C1F70B29BEBD1B0712C01AA0FB78594B5F3926CD47F8CD8500A1
+8BB7DDE8A2CB3931E0F1B2DEE9DEA833721C590A6603D0C79F5C0A5962A606B9
+3EE0C31BE07F1F722A01CAF198BE3649DDB02E0F9B6E36EB6354E99152446EA9
+2FFE9D50A898A2E711C05260A0ED20674DCE544895C0AED9DCECF2C24BA07CD5
+1F627DC3037683E13778352EFC07ED80F3C912F7B6736E5B66EC82E13B3A1E4F
+7D4A0242ADBD70157874649D94B6B8492A81CC937C92740503BEA09462446346
+1463E4E73AA554CE233ABA775BCDDCA985F26E453FB589266D4F53590DA1E6EE
+F04F39C38C7E883C5ED937CDAC7E24D9DFBFA0190725AD073FAF519A6A93F725
+190C5037FE1E8C27C1AE113EAF5CB9C945AB188EBD7EC5ED38F068A778F69F3F
+5BD61A346E752877A6DA8897CBFADB12AA96D16B2007914347345CCBF496AF37
+0D1AB45E2B162BB39AF0E131C5123273C031B4A9E5C9EEF039800E91B2A7809B
+6D6A2EE2B4DE73C2402DF80AE6DB9F37F56DD425133EB6AFDC4A77E34B2DC170
+7B7222AE1C93D619D7006CB160613E51C6A4AFFD5D22BF26BCFE7786AB9ED4B7
+56C2583A2958E2CE2906B547534E115EBA83F379CF4EC4B9D41C4A6A03DFB922
+FF0E579FCD369947BDEE3690EC15BA34E4C0709DAA033F27F965429C1A073613
+6DAFADA5B9A833088DFC3C56373BDEF5823E057A55A91ABB53978373B51F238F
+07A5D627E21A253D2D25C668E2B8F1846F792222C45900B0B7829438CC33B014
+E86E138CA318462DF720C9A4AC9B32D0079F10DD525397053E9E4AD9FF03B54D
+831C1474D29B4474EB59B5DFD51DEA01064407113530A9B0A2F97270CF2AA8EC
+0E785328170C1E376712F4CE8278B4365A2C958EA1923A979A74702338B376BC
+C7925C5790E31FADB224E6E8D709F27D72BB7493E581D4C8582C82A13E082A37
+E9534ED92BB053E4AD3D670A176A022629E99C020F99778DE2512E68011D1553
+FF7A6559EB277904B3D7A1CCCDE15B0670163DB50DFEA2330F06DE08F1EAD35A
+24ADDCFC7F90FE967E29F366B0E306D547A968AC0577F8FFE78DE139726E58A2
+8B0B9104227821930081D349C487201E6B9AC58FDCD36C5840E3D477C12EDAD8
+2AFA6799BC1EBF1CB30009AA874E26D8C193F149A0CBBF73FA82475737EDB814
+8675A0D6DCC9A6BE18C4409CA8C456BE8F98F4154FDB773A7D9E97B7FA3D4E84
+E0BE4BCFACCAF51ABC470496E521901CE30CEE4B2E1BE357EBF82135BDC61728
+E71728296AC47595637FD8D378E20A283915A1F7283C0F8C263BCC6DFEEC5FAD
+F1541B5E3D82839B168E8937E95F33F5119826171E45A64DE30A4E5F1771837E
+41FA56129AE1D0A3CA45734BDD58CE444B50919FC0602A8F2659C6D4DB7D7F65
+5630ACA155E6980B99B56AAE43D080278D8F111DBFAA0E3E783D09F4BB99430D
+7A2EF5B6052274FD8BA93307AF794C6D99BD3782C73D522D9B86F21862458523
+B7EAE8207DE381B9EBA40D7BF5A4F9DE80761DD3789482A057F4573C13317D7B
+6D4541028323904B6F53750B29F9DF3E94EB5E7CF421D07822DF32231D02FB23
+DA1158227E6BEB8A5B836B79E6C23E758476C1B24D745473BEC0AC4C3C243DD2
+DB91EFBFC45B826C95BDD11063CA3672AAC2ED367EE2631A3BC2ADA463D68355
+D6E18ECE7455EDEA610D52B71918930C5965A9880525DA7F5E4A42D934B2F16A
+22FBE81A21599200ADD90034643C64302803839C2CFC76F12AACE5D09D9EE7E7
+E6B3126A94B53CCA246F1F148885ACBD78E5D5E7563FFF359EC7BDAA03AD035A
+5647A509A84C3E147EE0D5B270C463062D3DADED3251E9EB39852715A6B2472F
+61EE3690C85E55DB5595B1395B2B76813A7AEE70A3DB66B0E54C8872B1FFF47C
+FA5157A5F6D569BBF01BC9D2F670A4E5CD4F261DC6F0B9E7E6A06CFF4591883B
+4C35B5088839B08B9BA1FC0CBFC9243CABF131FC4F71C8B0A312C5C9A48196E9
+DA7B05945A3C44BA0A645383630B6CF6DC16ACFCD32614479D2D3C09503CF485
+EC36262E337012B115D23E3E68E21612AF0A10C7D151B9272A3D322D31FC1E7A
+E7DACC531E6F60143C1357BD6D6C036FE595A1609EE72E0E199A7ADD2BC05B02
+279DF5D1444B7E1343990F5B48305D5416EBB2552F644065FCF745AA286AC02F
+6D7E776095855AAECC3AB55A0EA3464854056407B511AD419AC3BE6B36640313
+2DBAA5D48CA0AA8E4B319798E34A6178785E1402D61FB24D46C01BD4365863E0
+18866692A07FB49C4890D700CEF556B2278AAF1637A634E355A2A42FDCE3C59C
+55D05D44BAF0F94E5606ACB5D6BE1A3C974C02708DC86BCFDD33C16B2327369B
+4B0BA4F8A37E635837D5F144E3162D54C3B6AD0A547AD27CB4CB7296290C6EA5
+533D98C134A448224260B47AA36DF51ABF3DF5B59E0EDE3061FAEF76CB67674B
+F0E8B16818F6466165A72D3ED4BCCD5CFE88837706E42E5C9E93791FDD745EB3
+B286AFA4AD2770B475135F73BE02493BF6FEF427C9B0E9957BFF6DAC3504238B
+DC13B7DF63EB3385DAE107A31A398623668E3B43140146DBFC5F6EDC37106F33
+A3716DE7511FDD7831E1BDD527D4149AA558B772074B9435E0DB43386B8D1C13
+BF427D3AA473E76566F254A07E7E9E45198DDC9E8D821E977CB37BEBAD9615E1
+88FFA3CE13D967E6C63C0F3643519F4479FD6F04E58678D2213CA6DC3A6200FE
+CCEB9CDDC576D0B6B234C800DEB59BFAF975AB06928C62E40E8FAC68ABEAB86E
+4D18BBADE6B337DD2AE3290C3D50ECC6DDC0EF0ACC05AF046CAFC8C0CD6F3E8B
+66381374652D4ECC1C6249A6E4F58A7A4CAC16EEF22A24DC1D6649A3851C3B6E
+97C8D5893942D77FFE1C8C052B3E7C54178AFE9EA5D877B56F6FC99CDA8226D8
+B81E505EA652F9EDE06C95F785D1E7D076EF6CF7E5DCC7DB907170307B578994
+A932EA3B080BD9FDBDC930DFFEBB8544A3D9C39A96A95724136FB0C13B498F8F
+495661C0A7EB992E347D2D98C811411BA808699CAACE2AFD0DC64B5A57DDAD10
+3AB05ACB3FAABE62A199C89D599BE191D79A5EF7AC92CED857B6B24646BD237F
+F0EA46912A93FF9E2D5486F345AEC92682714CE019885CDF55E3DC8EE13D2618
+73C3021435DA0095D14FEA289139AC7BCE4724C7334ED9094148BB33DB83F7DB
+B808F911F136A943FE232B6C7E26D595C3C82CA3794815ECEFA6D7C365C06C7A
+EC7BD737B800FF0A77734A6D10515394157BC33611366EAF3914EEF47E0EEF3B
+591E8EB9207D416F9D491A2737C197C24A192579D88BB29DFE693914DD3C2B1A
+CE51D144872132A5DEB31099D6B746E60B054A576905EAACD10749FB4337B6EA
+FE50176C6C6FAB93BF36F2D3F46D5DD755DD5D77A0D1C83005958336203B60D0
+E5EB63DACBBE3FEBD068D131C7F30218CFB314F5634586D16D6B35FF336870BE
+8E9565D67960A15E1B55E0FA6FA5A6DBF73615AC3A1E8B082103E38B4DAA4E6E
+5495DB7D0C0CC18D0E15D971670EBDEDDAE95F8AD6C58F2315D8C186325CD94B
+F7F5657F936CAD5F5E1BEA31AA55F22169948EDF19ACA6A179F136D79F2A6AF2
+E8C9899071A0C89605C07B6B1E5521C6FF911AEB9ECD6BE357216475DD7103CE
+32A29AC7F5146887844E93A3A648AD95C4C7275FBABBF42573F48A613A4CB978
+4C76E3F68623840C1527A9740B65C51DCB439988157D951C712368E0670C41EA
+AF0F8BE942AB4D6AED1625F12392E2B0E40FBF55B52A0E8B47FC7B0F5BCF73E9
+5EF73227133242C46F1AC0CF941BB55963CE263286F9D5D8263CB587F15C88E7
+05C01C22D8A71F66D953C7507A895CE52B8B3DCC30F3A541F7618DF04C81F957
+2C1027D21854620432B266A48DACC327D1B0AB83C9DE60EAC7859252A40FB150
+BECE12386A134EDD8DEF3EBAC4B5C6696AA7BBC19D09EF1FD218A8EA05FABFC0
+4B0942FA695459DABCED26525036F33247BA2BA3368C6DD4C8CA1D5C01D9B3B5
+FD304E3F9DE3A710C5703C1DF5CE0D29E8D035BA52E72DB718809D2581384767
+C171E0D4E347A8C26AD87F3F999418F040DEABBB7C76C9E612A1060E01DA0686
+62F9FF662C5786FE89FFAF5C96C422CC89113843F099603578072BBB3A655AB9
+3315644BE81F4CB010F0F7C2382E7D2547C9B478C2FB5A5627B74D528D533F72
+A46ED4A78862E0A747E3706D1887936140E7CC36F03FFDCE8B869A83D384224F
+12FF7A51511121E49EE3C26B066892BCF072F9B3C623CAC68349FF4F4E011C88
+7557E4E53D46D86CFE091E5763456D305179BA96D4C42B00DDD5D4D033BB37DB
+FB1501302172F3558809031FE6CCC482B38986ABA5599B6997FEEF0E54F6017C
+D1D1A714B08468E1D14B6D05D2BA752B39C3FEA00CF50BB3EB65797043D3259A
+D2FF2A33512C1074AEA3774B38C0B1FF31C335202E89644BE3C40B2202309DD1
+AD6445D23839209C8D1F6BDB8718F13B9A3EC1E391E35833CB34C89B1A104017
+1EC030724C9F8696F139101A598A68DFE19B77270BE5CBBFCC32B0AF2295A0A6
+3330B787115155F10901229BE684BA334F344F25AEC27472A745F8B4ABDF16CC
+2763F158E0B0F5120C237FEBFEF9D59CA060963F6CDB695DCF231A2E124759BA
+AF86619805E8E3D760CBB61E69565221A4E7634039A646834CFF7BBB9610D5D5
+AAB87F9A7B59E254398AF2EDD0FFD5007F7DAB5B540377F87AEC0242D5A0CC31
+B6A2047EAC5C84CBBFC81F72AB47C22B4BB75B11B0B4675FE96854C68DE8D2F0
+152F7DD738FC06FFB771A214A26FF2C4E9AAD52FFB07FF8D7AE112DFB13810CA
+1646C38BFF016C1D1102315D23441E265E44399F999B74CBC060CCB7474A76F2
+B238A1ADFD5F65A1AAF4AF9619D0BA728A84E09785BC5215136E470E900BA0FC
+2C6DFBA0942172B67091BFA5D010936A7A0554429AFE914D8E8EA4FE75B50467
+202F9D9F0A0AF8B8068714B3716382F2AE1EF9F84DABDBC3B872D7BFE2B72556
+21217EC7F346799B1E14156E31F001E8ACDE478FB145ED361352A311101C069A
+DFCA7E6B6F092186B1861A4D6842A8AC93FC38EB0CACCC2079F938191F245C88
+2842EAE3AB6477153697BB5969793E3DEAFDF2099A9D71121CDC99FD86A83C0F
+AD7732EA87CF8A01F85CD5E10411736273BCA87DF75405D51C6FACF01EF31886
+6EC19677C49DC6C3805479862B68A3298BBC93B642589B20E2E3E0F2A70D1EC1
+D78A27C09572DAE66829CFD64CE427020122D12F5C2F00FC1A7A65F31455740D
+D1409A921F130A2F008CF55C45F74A43ABF508F5181A8745D42A60EA68390C63
+2E56BA5F9098DF94F812C8AB6C527AF859A92373BEEC41C3B9D2FC85C4EC48F6
+F097F39A1D5B823B24D8EB2019B86A1CC0D4BD0DBAA106AA7961D16A1C84F9AA
+0BE46AD3D95A403592D2D2F330CFA5B456F38E0A2CE542D7AA69E45E93E7D0DE
+0AE5B2295A189E4943DF4431FD14857189DD0FF98325BE736D2FE98B63423C88
+7427EAE0556062EAB9CA75000686992F88974F2F6D56C6FF9052F8D385207FCB
+CF4C9F7D58BBD08DC68A2F65C6E8D854B85A49C1F92A00C7799DF09B52D2DB68
+0C3F9620A71FE3A18C491FE7E32B7B6B3325E5F18FCC6F5688A357376D558212
+0B0D2E7EA1004E4E3EBE8A4F514D658A402EAF1B0A33C1A54130CF5E9E7134AA
+223B2CE8D2D846253C1720D60D9D2C5039CEEAAEE40774A3B34AF9D04DEDCA6C
+7F67BABF8A5A2B5C4EAFEA041339DBF8E1456F393F8FFEE22096F171EB2109CD
+DEE0E9B18BD9500397221E6EAFC123146368E5D16469AE5E5A9557CDCD5E9641
+EBC95996E0EF421B80F6BC2D2C0FAFB0BB0FEAF328360457C051E9A7FA0186CB
+FFBDD1C2C5817AD89399E5B127D646FA113ED7DCAF5C395B5E79B36922B7E811
+85AA224C22F856433A9E2C54B8930440DEB33138C324501123AED7451E78901F
+643B963CD336D57078A9C6F25803171024B0781C1223CD72FA7545114CB65125
+309335776B4E33549FFDA2E774ACF692D104DB8B916D1ED3FF79E4702E76A5BD
+5D4CACBD50F149C2EEBDC7FEF64310F731DEE7D567A6C9E717CBB6B4F0EA8F3A
+1CE3EA370D8985CA1D03A5CC031E08219D87C258B510FCCAF0D891AEC87D20D9
+69066562A097
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+{restore}if
+%%EndFont
+%%BeginFont: CMB10
+%!PS-AdobeFont-1.0: CMB10 003.002
+%%Title: CMB10
+%Version: 003.002
+%%CreationDate: Mon Jul 13 16:17:00 2009
+%%Creator: David M. Jones
+%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
+%Copyright: (<http://www.ams.org>), with Reserved Font Name CMB10.
+% 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/CMB10 known{/CMB10 findfont dup/UniqueID known{dup
+/UniqueID get 5000761 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 /CMB10 def
+/FontBBox {-62 -250 1011 750 }readonly def
+/PaintType 0 def
+/FontInfo 9 dict dup begin
+/version (003.002) readonly def
+/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMB10.) readonly def
+/FullName (CMB10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Bold) 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 36 /dollar put
+dup 50 /two 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 73 /I put
+dup 76 /L put
+dup 77 /M put
+dup 78 /N put
+dup 79 /O put
+dup 80 /P put
+dup 82 /R put
+dup 83 /S put
+dup 84 /T put
+dup 85 /U put
+dup 86 /V put
+dup 88 /X 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 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
+readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA
+0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93
+51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71
+7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551
+E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078
+0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273
+C01924195A181D03F5054A93B71E5065F8D92FE23794D2D432E1428FB6D5BDAF
+3F02C975AA4E0072BE5F8CC7D3D59BA3FD04709FC9E52189F55C7747056EDBF5
+F85CCBDB1DDE9F9163AC7158EE8DBFBE8D94A46510118ECE6A280C4872F448F2
+E6A6B36AE3224FA448DAF204D1C998D010C6BF52DDCC45831DF1EC22528B00C7
+70525CAC9F6BAD892E7D5C81295A2AEFA8A5E4B6BA2C4EF61FD3FECFA2A8551B
+DC84DAC597222341E762620D3D3C1A4AFF2F6D68C4813004318FDBBDE23AE224
+617F7BC1F3846943E915624D6BBFC555E2EDD013F190492F03CB64E5F2403723
+7A2D4652BFFAD1FAA1DBA4538F2C3E608367BF95E09B853A2BBF9930D9B3BE46
+0BFBEF05DA75DF3D8E11A09D472A9E45C626428A1A599C111ADDEC7A4E70407A
+014F792395A2A12303EF51698D487854EA15000AB08BCCA8B2E35A5018F5460C
+9B223315D7B838BFEB224E8D1DC9A0C1077DA31F5FCE0D9D499EB0507B90E9A0
+1F92FB5FBB8D40568C1E8B8CD6E1DD27CAE6E107AEAC5696CFEB19091B40FD77
+7A4B4F0F261702BFF5E2320C62EB5C6E9DDE142E9FC7DEAB99D90297AE0F15A7
+04C0E3B39FBC85CB6B92BDA7917698230B5374D9159807ED1D07947D95802693
+A856C84812ABD3EBA336B88CC8F37288CAB59790B0882A4ED6815FF6D7A1BB35
+5C7B7437D2ED76E806813478007886ED1009A1E73CCE210FFA69A20D6E05A713
+F6EFAB133D146B0EBD547CD29FFE7870973C1E71854C1C643BADC69974BE360A
+4CF84FAB098EA3DCD2DD8B2FAAD19429B0ACC7C312B03E6446F1C1D51E6AB45F
+72F11FFA078DF3196EA970B24B1BE607571795A2FDC2EE7194E9422C483799EE
+23E16A737951BB935EE2C2BF008B6190E0138D551E75C9E6D0EA48E64E9750C4
+BAAE32B894BE25D092CFAE894230430E43C585D0F06636C8D56BB80A4597A0AA
+547FBCF12821C20F0E62369E1A9CD2343B8A8647B2FBB1F4C86CAB1F7A14669B
+69DC857F9BC7538A864E523C2DF7C830315E0907CB17C8FB6E412A2A9E88317C
+0026A6A402B36BDC433015AEBAD775835E5ADB4EE75FD8CA06C199E000CEDF93
+00692F29C5394DEE45DFF2D42872B1370C8D4A14E144FF36163C849F9339AB97
+EA87BD445733162A34E609BA1E92DC92F9AC892E7A0B39AB0FFE517856491695
+56155FF0C2B231EF1314CD4A146EDB1CA9AF7DD546CACDE1E6B49BF0D4ACBC09
+55C85E2D38DF84E0B779642F7E9C26CE19EDBF328104B9E803D1B03F3FC24C4C
+9EF0D27C8E5AFA420A63981C000A0C1F0B3D3F853FF300EEC524C586376AF998
+DF4ED5AA16D8E298C159C2A3E33048D4EF192A11287F69B11BE24D49A033B334
+83CB8783383F92EFB9E3BE84CEF37796BA4211E534B0360970B9C57EA7CB54FB
+F582789A83113ADD2415B3F84AC4ECA15DC70878A32559198DAE67B083B0EE6D
+68A92511FA8FD6BA88A42769E3FBBBBDFDAD61F99A6C274B48CB044D16FD5953
+44F1503D8D1D6DBAC41C1246A71EBCEE5B1F0DCE3EE7E3A99792DD8FFBD94DD4
+3A5ED347A62D301B6739AD2BCCC7C57378C29FA5A83759E7AC6F1505DF6C0E16
+71587914F698608AD93ABEC43611DE709ABC3F1C0A1343CBED5F09DDB4FACE0A
+8BBA9DE5B85FE9B4365358DFE877BBFD9AF08BC60BAD7C41433BBDBA17EA9A7B
+92F76358612FE44F43A85588DAACCF7846ECF5C58B22F18120F895317609AFA1
+06E88CA1D73C4CD5098CF44093207C31F46977B6D22665AACAD5A169906640F6
+3DFFEB3937BD6CE1501C52783743F8F6110DF43ECF512D49A55379432CAB1C33
+7C38B7A38DDB91F0683A052378CBED8BDE4E6DC32FFF6D723A4D1469D32AEDA9
+FBF89B9604656DD0D44ADFAC39BA893808676E1E08444CE56F6CAFF3E93D8D41
+F164049193BA11AF94B43515BC79D6A538C00B08FB518EB67C27E73380A651DC
+4B244E8A2E4ED405EA5C7EEDDB09D44C458A883C839B98D9D6A2209516E0310C
+AD777536190ED06F47EB2ED61C53A2E0AD0CA4E4035324DE75F272B1CA6BC1FB
+B912807B7331D932DADA30F1975A1C9A8B55604EEE8A0CB514C6CAEECAF9C46B
+5D5563E8934B421EA1CCE3B96412D78DBEEABA59FC603CC6ECF65BDB5B66EAF9
+14B852CC04286EBEDD560713090BC417A10BB834944E007F45B61AD6E6150B9C
+10A6FBA56C1B45EA5F9A5379B1A0788513DD4100B82BD61D89E6841A26B362B1
+D4762EAF4FF3BEABD882700BE9832115405728C5292BE942F871661EB0E6B29D
+430CB271A090B6F5399184F21ED6728171B1783C982E61DB7C0BF90CBC1482CE
+C6982B4F0AA39076B64CCA5A71BE73CA65F2CB60B89AFACA957EF8E6429F2182
+CA36220F80EEC5D01AD7061DF45CC5109D9F0B7E2B6DB9D6C6326A45DC6C05D1
+E81B636A82592D99C7B7ADA0E958A0D7570BFF1830017A6241AD62C53D4CB36C
+583672FBA265142DCE545F4855CA3D9E528143AAC66EBC9527B76EE43B4F4E2B
+B209BD265D6AEF18D168CA7BA2CEC40DF86FF352029597A5A3B2941D467DF229
+50C788D4276C5B400F360AB596E35983262A215047C9714912B2E69CABC0DBDF
+BF6925E19EDF3A6638CF5794722C8B92C6DCF5853DF288B9DA52A2152F98227C
+FC04D3C318E7D942E9D33582A490888F0C1CC1A8C4474091B4956222DE467632
+33CF5DB7DA165B59A648AC6945687B0ADB83EF5B286CC469B2C9E4AE92ACAE8E
+86E4C62A092B8F6C05EB2ED346DAA7C573A03760ADB3CD55B6C794FF4463BAC4
+2F4A738F9C4237107C503A7EBF4F4BB4380DBB64F5F5C9B268111752FD2204CF
+F25085683D071FB4149A64426859D407936A3D1E2C627652C126D8F9264E2919
+960ACB9DD61BDF973492CDB1FD20EA81E06BECF5E164A8ABAC12926DE1CBC0FC
+6693737B4875F465B5623C899FE129B3A52A2BDF104F8B8429890AC870580C7D
+B078A9E26C322D1A8AC1C6B2BF340813D989EE8D054882B965905D33EC3F4278
+DC41BE055E0E5F73B5A1F45E9E69718F5E155B4EA30B28BD28C52C6C322F2E84
+674CE600D699CEE1D2CFB7212BD8168B45824890273A0AAE4757D112980DF2DC
+C3026300B4BBC9B081817AC7F4D48B309E66CC7455708C772A08EF6FAC829363
+E27AEBC3E7D0A91984C05935B16E102E81D6AAAC347E38EBA40125543263BCA6
+9C6F4AD6BF8C3A90279FCA4A99D9290C3B8E0DEBB4B2DF932F66FD47AAC3094B
+7582FF8265CFF8BBC7F79C8C74B1FF94B26F3817A39B5FFC6BB562BF6DBF9CEC
+31CC3BE4D7E431D41D55D96C4F020486F993781828E9E8850192F9F6BA350AAA
+5E292210B0EFA4061EC8BD6EE15E3FAA4AB2F54110D17D29BA32C0D28559FF32
+D164DCC98EAC78822D6D6AC6F4871D47290A11C83670374F072A9DC723096C89
+EA584D43BBB13584D9B8B1820C415DA2E0DCA1B50655E81B47B9AC8343DD8FAF
+95F4771ABF81361EBFA9259EE8901F31C21E95DD22FE04BDB77D23DA561FFCE5
+A7708647AAF65FBA2FD95E843D839E5734D4C08A215180C7244924E002A965D8
+AB29470A1B86065B4133A9A6EBA05EF1AC67DFB5ED8DD8C11450233D2624EFEF
+3E6D3DCA7E23ADF174BC83AF25A1D7529E52D39C27DA86A2DF4BE4F8A96361CE
+7025BC1954C75A765ABC95B4AFE0AF5474653E6808F85893BE6ECA1A37F8B666
+05A9E9FBAADB0DD86848D6FC48A1000FAB396F756513798E09D29ED6DBCC8466
+40181BB71C92CAAF8E240E16304DB9F4B0FB6880004A0F9AF6228E60646647D1
+669577DA709B4FDB8721B95B07B4599652A303FFCEBF858A41F08BF3B83EBD31
+74EFA947A8ABFC7467D6CC544B655A7BD4B6A4F5EA9BF11CFC9CDCE14FEEDEC5
+9116A3FEF962932F8B105BC4C51744916E8976815AC286B1E682D83091E9C533
+839223A68B9D977C41107F597E05C3D8C1C3E79542A990B0E8E22F34BBDD8E47
+B6C2CAF54B72E8F0E8A41DB343934FD2C33B6D77AF2E9061C4E76BF258CFD615
+30AEAECE9D04569D358541C346C922A01D017BCE85D4F083AA9B6939D85EEF29
+335D1BDCC9E6D5F7F58EC2BA2D8CE50CCB38AE6A2DE2F695B76831F8F591BEC4
+EC6391563D18E4169151F552B5E1601B1DDA6F93E5C8B5F4FE63F5E002AA3C15
+E0C8DE2C735EE00E9A2A01530FF37B7FEB0FB182A4E381CF1BBC80D743209814
+F99002980CEBCBE3E677005766CE1D0AF4DCC9F103499D1961771FFBF01B833F
+1701EF6EB1A381A287F73E519C01084241335905661B2E8B86B398C88F39BBC5
+09FACC1344E15CC7685708BCB3F43EAD4E24A84AA0687FCE0A2178D9BA84EBB9
+68E8A727DAF9A0B28A7CA3B119798603F9BBC6728C5A6B4BFC84C95DC4F36839
+C2649E364CEA39A4EDBBA4C0E27C61648D38CA46B64E8CE797CA3464C80214EE
+28A1E58B387AE0A663A39F04F57899ED62FB0E542EA108AC32490B4B2BC068F6
+2087BE9C9C3CBFDD80F2E632BC4C971A79A0A3C3A5607B997223A9F6373EE51F
+C58EBEE7756A391C91758A1F6567F532A5EB762A2927F57CF9F0E845E4F66B3D
+8100D1795B706FD32944CEF24A054650EC911A54A22F4F35E3034AC70F07C98B
+8DD43BE9F7D68C50D6449791F5331A189706D9CD18417348B9F296D8D01368E3
+2523FCC0EF33B998FE925B4CC7BE329B32D6AF791BFFACB60E4874412C8C8676
+34914A453A592C7614AEE5001DF3E5E8D9335A155C65174B940E1AE61ACBCBD8
+A41D7E1C6FC0680E094ECF65C60CE714E6EB2A1897D8A3F39FF58D64EF7E9A41
+4CD8E55BE32CE8CA29239A9BE3FD6B1DD5CA5A035AB1FE57CAFACB8A39B6A877
+C853BE6BAAEF5714982FBFA414EC128B61326B60D83076E690FDCBE3D2AD256B
+FA7A15B804402826684AAD933E94853CD0CDEA3CCA7DC833E486F431EC4764DB
+F3FB244DB99FA0CA2FA14DFA75A326385B3AF92AF8E4C6D437DC3DCC07FAF25B
+6C0F270333ED377B08E498BC3004C25C7A991DAC9A3E0D1FC43E2EB6996C7269
+7A864CEF35FE312DD8F87E37AC69490299CEF9B059EC7E7492D1D6E5640E0AC6
+35B97F7A629B6B7CDF3BF86D2B518EA807B03E4F79DEA59C84D98E4C94102EE3
+71A29649ED75F5ED02EFEED8064E2D54E8F9CA0C4284B987B81B7F41FD7DCAC4
+FB9C3ED70774F9FD09F3321CE1D0319C1129F5868DABBD183045984748C8A3E4
+53E085818729A1353B13C78E63E837DE483E9E2ABFDAD16534420BE4D7976D35
+F56B86EEB90F663E9778A6E0CD698E6324EC2D19901972B74EDAB8F4073E4F37
+89082F08735E8345BA167B2B76C77703C586CA5DAF41C0DD0E231184DECD8A9C
+DE8FD239B6CC636507A5BE6EE5283C06A1D8D59E98A31AA76F4D358DBC641DE2
+ECE3D9F2D262FE2E878E909A950A7642A3F59995519D541B96D459F24F12682A
+9AE61FC08CF436D9DF060DAAA90884A1281B370A2F824704B5347FEC65E14E7E
+3D212E29723427BBB12C1CB91B28CA47D6FA8259A875EDAE4B49C33B2F73938A
+784C1E7A7F21873CAD55A868A1451B070A3F259A983293289B131E07C903D7A6
+3CC66CEF8C4D2B6736282896A2683EEB944B67240CAC5FBD8A1392A875245A9E
+2611B511909A041846063E465473D41958104E92519C0F86706AD640FC6CEA10
+620C9718C4589D9D562D8810CF6F461B776D5A1B040F8272D43C029C2A695D2E
+86CF508C4AB11104E575E13C2EF56914E241279BE0558CD3D59D25BF13CE8212
+3D7AD1F25FA5A9155AA06306C7CD0F49E3498856318B0ADF279731E1769839EF
+98657EE73CF07B0585EECB67F5FF609E0E3DA1B78F6A8FBE2F2E0C051237AB4B
+1587DD72BBFD962E865EAE0CAF1A5C592F5019C7533BAF297C0F78F3287838D6
+CEBFC8B5969486A5134DA76B4961C8056E1EF1F2AD17F19D7998175D66B3149A
+2CF21CCABA281EA0345EF50C1EBE7004ED495C6D03963B639A66638A43C049C6
+DCD311B5F86EBC814BE42D432EEC87B861FCBA9C8729FA5AE87E20C5B30B8E5A
+BB41189A42B9853CA408BA01A559CAB722AAC3DA28E70AD79E1BBC8B6FCC937C
+180B5C2E20B03D3FBAC60C83F765CDCDB3146FE5C0B02911F6E120D63EDFB0B0
+86CCF83C2AB62922450206D3701588B54A8B232126BE120432E6BB2E25C50B13
+708D742A44E20176C54FF89F4589B10D5396C94625AEA1914AC168899FE7AE9A
+7D90DA67A5EF3DDA25CCBB18DBAC3AF4AB889528A381542185821B96CCFB4302
+987611DD5B5B8514FDD7F5148D1BAC9C34567F75EDAB317E0B8A7A76604A42F3
+1D46332C4791006DD1AB657308CDBBC7314592707EB163326E345C2C5EA05B33
+01FEA5B7A346E6B1B6EF58B692150C6116B149B6A26B493674337A9C1CB4F42B
+A7A80AC587F9BBD7A487F407EBBF9978840A01B5E7E772DF7EF28481E7AD14F2
+424816AAA958320A0E6F318C757A474F7B05AC0F570094372CDE877B479AE3F4
+90C257A2B3F443DE43D8A58594BE8D4B5C7E5E075ACFB1AFAD4C06415266E168
+FB38C1CA256287953EDAB1D40537A3633CB52FECF3D35BEB8C2C6CBEECB54BBA
+CD6E043EEF68A21D7639FAB8D1006B1119CF92350D9773502F7554B4B3036EA3
+D747596506FC674DC01ADEA9B45ADC43B9E6947235E9BA30FF462252038D91D1
+D908E9132A946FD03B86A08885AC44CEE72F0E27AA63A901F2DCCB86D87702D9
+A66F35F06D6640115B075B0260FB116E24E795E24DAE988CD48A95FFD3116E92
+63D02221D272531186E2AAB74496FB78A4064C9C9772608C49D46E40FE28088E
+B5109171E7AF69599BD8BC1186C196EB11FB4132F5C9FC1395220392E17B66E2
+32215E54E9483196341D6DC691FCCEFBD00DFF4C095FA8AB36A374BD5E1F5082
+730A698AAB7B57A5399196ABCF7B7963E2970CCAC5E9A5EC552CDBE1E2EE1968
+B81CF5BDDFF9D385C9C1FFD726A0C52A4CB0C8121E77AEA16157C1EDCD1AEFF5
+5607E8F5C44072DC54332B95AF28417E2D45B4685F270821EB6C455AC147F938
+50CC9F7F2006D933D0664AADBF5D7E3E6DAD57527AB59DDD13BCA392B059FAD2
+E7833AD00F62EB89CD7BECA9DD479F7CD7C981859EF43CBB1EC1681081B58A39
+2CEC9FEC039082771E1BF48968431F72817C8156D0D6B65DD33D472BCC49496D
+1F5FB1796892C6A45BCC65BECF41D8604B811824739647D87A7B28FDB3574478
+9807DA2557F411E0BA7479F31B9E3BBE6F3CAAA653883A9D2BEF2073F47F057A
+CFD20BE1371F17F5B6F0A9520F2EFCC3C04A24EC272C43E1F587ACDAFEAD7076
+6139D04FD9A50F67301D7765109C76D6270D2DECC94017A877EF386AC7F625C0
+ABCA9A6D15D71AF7A5889403DDB83EDE87EF5A69EEA97995CC1601160B296750
+32AD8D65A456F5471AD4536F1AF41A4D370203F897686CAE7C89577D3A843E90
+9C08CF3E3D489625256DA5E0984BF971E0D8D251AE5B09C17883CE07750051DF
+770B920AABB2E80A4944EF613891B4EC3F9E214339AEDFDD5DD15240933DC82C
+D878BCB743ACBB562A41BBD86191E1129718826681FD12981D4159C7432DC3D9
+AD4C6C478EEEA0A34030BDD0B9122E8AE5F0B473AC5A48346D56C2DE42815D19
+FE378D252960D3F56654B31C58CBBBE0D634FF6EB81295809AF12222C58345C0
+459551E6B0D1C8B641C3DF17E4F255F0FF2ECE261A420B8AEDFA1491B0B34866
+FE02115A4112CD7C54DBA9F8C4743994B028B708C01494CF33A584A783A2696D
+228555A71EC8AAA7D1B9A9D2DFEF198832EB46F464A6A07BCE44699387D975AB
+4AADB1E2882A00FB05DEE27084854A1EB6343204139222A29A3A4117DD69219A
+26CB0FE7CAC82BAD55AD174D38A317072BBBB3CFCB08EDC07A3A78A397E95820
+907D96BB4B92ED7DBAD6C2DC672BF913ED44A41A2D1A0B1D0386C7635309B468
+D87BCDD58149F0B2290AA93E62BD2A8CEDF96932D061B19D7AA8B61516F4B27F
+185B4E0F7E975F0A6A6B82E17EBD5D7629F4D1A07CF828887B47657CD2BDCFF7
+6ACBF8E287610C88AF5F8C4CECF4B393F9380E840D897C76574F2A196BC52EAA
+E1409464B9A39EEEFBCC9AE78C0FDC812991309B7CC5D8837D5C61442D7AE3D4
+9D5E76B648E4B617D1FCB40BD5F7F3294B6E56FA99164500A4FF96010A182BB7
+678E71AFB828441ABFBDB43191A456A9262FBEB2BB0CB22E14FFF5BBE1ADB11C
+3CBF23EA23BA8B5633D693082F597CE9E9216487F4957C8E087DE742AE37B7E4
+8BDBC9713120CD357BD9EA7CA5BF35199C112392F13C60DEDCB86C9808BEB59A
+B6D07A78E0B37684AEDA11B18E62CE1C1CC6BFB23E4B0B5A5D23CE7D4B8C3713
+95B6CBEBA34419E412ACB6B308EF9EC8523E5889C19AA33C1BF473EAA2875AFD
+CFC2D9316366B5AD9E4059853B09DBB67BED93318AB0191A3B4B4EFD5FB284EB
+BD6C118E86926E25AC33EA5F2DB721222010D3BBEF9C65224EB68A4982E0787D
+75606832144E39DEBFF111E8C618A4253212D8D2E1FBD10C8CB698D73F9D89D4
+C61BD43C7779EC7ABC6B86A2A13D605301845BF98ADE49E61E63B5673A5B9715
+902F7E66A0DA5E3CB803A51844CA11EAC9A47618FD849520E7FDB6EE2927770B
+3278A10A2662886E6450281B34D47DFDD2B0E3164C9C507F54F3E241871469B6
+153532B5718352E4CE45237012C6DC80144D6D39B11082FC686CAB1A1C43E60E
+F8F69C76AAAA6B8EB45A70B7616BAE1148B5A073C984785E914A5E4C8A3839E7
+1DAE01CA4A9D52AF0B9419DE91A3A4625D67BD9939F599610DFD66BD56E6B40C
+C44F7636E35396BC7B211570FB29D0051181E7B6CB1392BB799060AB63C6FDE3
+D5FAF2269503621044738D2269FF88CAEE9080DDF10F91C8A24CEC75ECAAD3E1
+242302D5160530BB2398687333FF951DE7EA92E6D5E3F31A8357053210AE0D8C
+ECFC2E9D6C591AFF798908A4DD729CA6EDAC3A493156301A8EB727DEA06AA495
+568D6862C4CE9A960A32F08A2E218BD633DFFB159F8CA8988875878450645209
+F00721492A558C21580D1FEC3CD53BF52FC68D4D5610CE47917D88661C4DED20
+98777991D0C48B70F84369DEBF355AC1485CC1BC5BCDB040BB5AD58A6CC00597
+A84D5CBA51F7BB58B1B24CF800164EF70681A969EDFCB9D115D3375F4D587CE8
+5BB02ADDBCFC19FD803F361FE7CEEA92A4B3EC546ED4E31327D1D1D7200C4FB4
+DEB233B893F6909E9C67A0201E5E9C5E40F155CD7643CFE9F667DCAFB8FC61B2
+3F12408E28E29940C8562C247E78003757ED746F5626941FB1EF68B3A0ADA4B9
+29246BD445D617889EF7EC4169DA872E7D177F16CB702287053EB6F41DF338FE
+2E3C63E8B13E4D77C2A80D870BD0FA1255552E787EB3A7F7C3CA8BE2B3E32A42
+0FC63C5E1097C7C5D25EE9D241E246AA9D379B31839DB9F37ECDBCD8945E501F
+A15E6D6458BB7713540C8FC1F059F6194D4D8AAC0BA70FC4C4EC42A3D0B5EE01
+BBE4C21AA9B428730EB414AED91F3C83661FF87B5DFA44F55D0A956A66B224D0
+4EFBD62018E620CAAFCE329EBFEC6DD8463AAD5641AB760FD7EDCA1038FEA46B
+3F9EDC07858B0392FB7EB4669BC01D3714142741AF170FEB86955408E3BCF2BA
+3292ADEFA983E17FCF004E967B1E6F92CFC11449185727DDDEAD4EB9C69687F0
+743B7FDB0E85A2D9FEBE13435FD0F76317443098F811BA362643C83F14F006F0
+C781C5708A1A2895A261C5DEA9DDB8A62526EBDD3FEC7A79DA57D59E5E1A2677
+E3BAF4754B17203F051D46782049C00F6F90F1C70545C9DF7A1BF3137DED5D90
+65FFF5B11E91CA6DFB5C2C809D89A5CA1913F7C09B2D8100EACCE5E77E380469
+8A946B2EADE027BC7EDD1EB01BF316901632451F6E8D4197FA21667FC688BEC7
+798A11889D4F124E77077B91EFCC91757E93AE1F1882FB228A1EC4BC0CCEB165
+8C1F123C6165E4ECB848D9326985DC273B2450DB35D89F10B8397176DEFAEFB0
+CBA6DFF210B0686D07A7E53E144BEB3CAF40E066A44CA2FCB606131D558BDD78
+29B412158D4F08C8AA5D515D4B635D3328B5DC3154F1900B3E19513E002EB7CE
+3FF4855B58ADBDE085A3430F2AACEDECB6209212919A74DE7BFCECCD5963CAC4
+BA81CF577493054DFB888D975FC5A08A4EA66366328C5D2D77582B3953568BA5
+5E58F59C374DC60B0847B88F4CF7259DB0C14E4C977FEA2AA7593A618964800C
+9B860C81D8E9B88839399A9F6B25FE30BF4400559940841F7AC6545A00DC2616
+F8F7280760B223FB1F2A0D69F52ABDCB677065EC8D63FF3BF8CE6188F9485687
+B4D2F0B850693EC9036D77F85EE5C34CC6B22A2EA4A4B05C7B43841C90A61759
+56C54E38146B586A486D30961EA20770F7144F57D27F3D57402A7A2DCE25217E
+2F8E38FF8981676AEF58AE9DEFCF02CA1C3869C5463870AF2D4F8AFCDC4002AB
+906DEFFC4F2B5A2EB25C979B3F60B499923032F035ACD9894986293A55433354
+0D3F6111AABA5AADAD802051A76CBB4FA5CEC3E5A626C88DA9991C35E272DD32
+2362E9D64C19A374F65419B2F93F7CD52FE4C3A84B54901C2A3EC9BEABB06ED8
+332E1D08B7C9E05F5E6C2138D03B9F01EB8DD0543ACF4F0760F9C09EC5CE5507
+D614B3524A79E654AFD92A3438DB7722FEFEBB51CC054B99418C1A4DB77F78AE
+57A98F094533C8423490AD0C8F5A4BBCC09FBEAF4F8B8604BF902A191206D99A
+E0105D61F9DED26AD5C83245A5D5D38E1C9327C906CF8F3471A4F3E96FD5B3A9
+031433D8C13985D726271182C056842A9A136E33D5FBA96E48EBF36878AB791F
+CE76813B07AE0785870FEA4DA7CBFDCC25A715BFB2EDADDA16E630EF75FA0E1C
+87C1834CA0C263D65C5E844B928CAC964D7CC2E30597AAEEEC19BD06BF7104F4
+0C15125A8F576B8439775B5AE33D3E77D4369F6281D09250E200E6848B972EEA
+2724ECD99142A80F59147184A97A341890667C9358E5EEFEFED9BCFD1145E828
+3BC97B539284C1439769066F323B234EF98312F10AED0A44595F2AA6484A7B03
+AA6DDAF68E2F83A4C21F5ED6DC2F0A01F9BFDC19C6B069752D5A239DC39D3BFA
+9B7F91286B2AD8E8B936096BA0F1DBC2E5F979D68395F467E2CA21F2557F119C
+CAA5CFB54382CE55BA29E93296931EB376FFC289741AB563FFF1083807002E52
+37275945E8423495ABC2E3F35CD3407D7F7C2A485F42566370118909E7E15B62
+7E07DAFA81946BB8A722B7EB73A34DE7A1DAEED306AF4459CE09DA1DBAA8F8DE
+600D7AA34D3D96B7821B1F43E7F143AFED15225D1321D107139B3CDDE2FF7CF7
+B216FCC3715AB0800B63D065D1E4B6231CA19A4B9D8B4F8F92A9122FF0964D57
+8F88B6D96752DD60072A521C1A0A5954111F4070011EE188B00F7E31813213EC
+342457D788A82185440942F60B00F8CC22D145B5EE1AEC95C2D0C5FFE36F4DFA
+6A998DD2540EEAE0B7E9698CC553D68E3388593FD61E5A0DC9D8D44A332F17D5
+8546673D09BA62FF58182BF6ABCAD84B144CD55D9CFF5C1172C41C1BA70D2C61
+DFF2F4DCFC90064DBFBA4103335CD8F9E14AED55920D95B1D8901F622607BE17
+446737667C137705EF41FB62CD51B09A7A24F123AC2F2E79820EC315CE58FC68
+8AD86BBDC8672F595E8D80E51F9531B769C12859878CB39055681B02B78F4FEB
+834471227FC57ADB89CD1EA7AD15ABDA0FDEBD84727BBBEDDF0053A322AB0334
+C93E7493D670A492E3ED941DFCD3F57F96CBCBCD0B6E9FAC1F407CEE741493D9
+F8484CE5DBF94690DE4165603D03DFDEF92CF232AE44685800FDB58B6917598D
+867F7C9880B7E17E1FB9A89AB69229CA49EE164E9B814CC433367929443F1550
+9561FCDFF0379905C440286E63649863EE305812E4C9280737E24A291CA1EECA
+5DBEF06289C092553436188B9EF4F6832F359775EE28617C88337BCF254F74C3
+47B2203433CD9064EE4E70F9C415B69380EFF37480AFC2DDBD0B37EFC3830B98
+AC07EF542A32030207A3A639D79AD1EE523192CB802D06B80DEEEFDA62442B48
+A2A4D1FE3D737097A2563B1892BADB84416081702E8DF58F8D990E6FE3C45F6C
+5921F3B67F8C36F89B63809AF0EC3E1057B65DB92EF0B7C78EBA2BDDB87F4711
+21030102B43BA0EB147C7F9F2B9AB5014A50E78A22C3D815080118789921449A
+AF9D2431D1C490EF0D5F0B576940BD144691C1CF43AD978AC33E199C45FE8EA2
+45C0F0665E3A7D3C9E1C7836751D520F7FFC19D2CBA570DAFD8AE8E37B771C52
+1886D30059BD0B2B6256497B4207C6D31798479567D3AD00B4987ED44F9837A5
+2910C9146E88155F8409D66EDCD9B50DFB0E5FC887504FC66738DCB4F7F387F5
+A0DD3576BDBC0899C7107D2E560DD1872688FC2EDC016C5257890524FC5F96C7
+4BA7A721A4E5C2BF67D9286766DC58636D4D7E115AECA23D8BAFEB03044A9AE1
+25D3F59D9092FC9DB77E40BF8CDB69450E171834DBF860EE6A6DD0D98C9E1BD5
+597F4DE6D9300042D3C88567AD949FD2B2E9DF963E373BCD4DDAB6A7D38D75C4
+A7581398BCF6777DA2829B2C5E2B68765FA98366168DD63468E3763A5350A1DE
+6C0097EC1BC55241C0292CB88539378E94EE8D06C1FCF2BE88FF5B48971FB8DD
+F037A006ECCA1E00056469DBFA668E645D6A45C288D71F98F8569002BD11CC87
+01A84B25FB5AE0E222E2C317D2581C11ED87C3E0385300C46EC11AEEBCDAB12D
+FEE54947BE64962E4956234EC02B5973A5CA2CAD799E26996F508405689E7B5C
+05C27E89C7AB57C86EF478EFEA00D9D0185EBF01A7BA7621E101EB3623DD912A
+8CD17CD8F82DA4B445D38171E362CED10EB0C54E60CBE9C5AEB395A7667F9055
+3407C9378DD3C7283E7885EE6C9070FE422CA06DDE0216D3BE07B94794182BED
+586179B3F36B8273678CE3DBB4A967B37BF338214ED5130EB0D253B6E6678F19
+2D6101EDAA3A067E0F7273081377D14CF0D242FA2F80B1271BAE89DAD9398F73
+750AD6D3E2D152BE902FA9740B61ABB5387ABB8B979A6BD4227A92327F76D23B
+DF9017082AE9AAE268B1AB38A7F5AEA128D5289F186E5D3B1A8E0F87CAB05916
+DEE5D8CE5E72287C2CD934DDD6BDD182D579CD75CB640C0D2D01B9923216DD98
+83346D48B3CC369E6B98349BD21E4F8ED2F973B3C651B27939C8237FD7FD9B66
+C585049E8E3E764CBB077AB171CE61EB8EC939DEFDEE63FED7E748FFB2C331D1
+80B9C914B37911FBD20F0F8C9808F31CE7629B14562C114D5012AD06B483A25B
+3DB247257D489A78A8245284167A316462C6B8077A36D392C338FEA07C027CC7
+2E3F214252BF10148250871B8313FDF664B8DF10140574A6007DB67D83A848F7
+D5F75A18F41E76C59098F8FFFA481A95552E8E0672D256FDA935DC6747451A6C
+49088DEEB16D194C5EA1534ADCE131DD2D91F490A5D0B4DB46EFC1925D337A1D
+C24376934AAC82F3D112DA6BFEFC20052C9B5DC529C625A72DB318D8EBEAC952
+96E8071979405D60D7FAF7E3D0D7D8336F998B379B066DCF40C1A2C5C45BF30A
+6749AB7AF9EB9693E9777750F39AA1C46B1FC0E2FA21E36D911894A98527CDB2
+5EB4BD28C0D099088C49CF8913D238A72D09D314FE27BFBAB1EDC80F10E66CFE
+645A3816E3BA6E1D3265BDFBDCD2170EA98FB8030C00A7C98F8737069509F978
+DB25D556A7B5AE6C6A5C9CEE26DEF479D1247220762EB41D8C727441A9F3EC60
+2ED96C5227060CDBB855BDEC32C78B49DE50BA6ADE3AD5145DF4C782E80992AC
+A4B543508276A4053079EB88FCD0E45A360736C7776A26495A72D2E07E72B816
+E337CAA6FD52DC2B7EE3F54FEA6653EC47FDE9E4A52C3184E2A156B60FD079AE
+14B6494E5E290B2C0BF5304D2FA210DE1DB9961DEFE5434D4BE0C3DD1D2CC5A9
+88C90C05A8B64220A2E61C48BD8C761583458A0ED1641B012649B91E7F8DC891
+94ECFCDF168DF7C9681F099BB6E35A9BF75D60C000DE0B078A016AB5ABA068EF
+FCD143ECAE06B650053C57A8D7AB8281AE28D3437AAFFA097D6951BBCAFBDDCF
+9E498A149CB2FC73EF2F1C2900D80AC6B1E41FA1ECD7192A0E1D054EA6D151AC
+06DC6C5CBEDC2E3281B22A22DCF18259C267E4A5FD6AC7AB48BD68DFC144723F
+5403453E3745BEFEB6C1E09697F6847081CC5A5E069021AAD9D8015F5791A53D
+712942D16D23F4E09844CAA126E2AED0DA19A42DA3428A621F44ED4823D99BAE
+AEA96787819B135365570D3BF8305ADA22BC96F952A2D5FA7BB69528F6210DA7
+9A8055313C72AC6336F11489A9AFC2805722C28B09B96E77F005D897D94425BB
+816174C79F1B20DF4B5AB55603F58400944A07C45790122873E5B18EAA9CA6DD
+6370082D7981EBF6E67974E65BFB7FC70547FF81BF0CD8CE8CC3B022A67A6B0A
+A17FD6A6C0DBCEE188D73F115263AD392D35110CB271866F3D58068676C006C9
+B3E3701C7C65B1ECEE49C8D8CD253CE976768B167E9AF54270F3BDBC9B152AE6
+9BD35B1E52C1B4B0FCE2B1BA52B27FCE9D33E4964BD3417C3167002ACA1C42FD
+BB88762DB64B32DB303594BCB4BE2350B3637E91557931BBB325C2524F091AD1
+03BEFEBB3B6C97E130D27ECC503F59F5FF5215A9FAAFC8475E0DD1312EB7CAF3
+11471DE45B8BB5905A586916FB9241630B5C3688D1C5AE3917F885127EAC04CC
+B68C6F6EBD82BDD59B857C79E1D2523E3A1011FD1BAB993EA7E939DA259DA6CC
+03E8D4FFF6972F9C7EB703D5639655047CE49FA33063751052BD38E9D188460C
+82FB9D223C50123BE4FD903329511DC56EB26792BD81BC551D150EE7EF6D4F65
+3C9FFC06347DDC85116D54A3A2EDE65F55BD6760126A7986B7FB6F84B3E43B61
+76D4296225700B5B5E983046EDCCDF7CCCF0B5CEE63CC2D5CC11982C59E46D60
+BAB14FBFBC9FFB3E7845A73EB2841CC4AD982A01EB4F0294B226C30BEEEC6685
+2ADE8377F7DFB2CDD296D3FF458B6512A06A9555330AF840189ECA8B15D50AF3
+16B99E8EC8AA5A67885DAE6F728FBB08DC9C78410A8B73DAD7AD1754D00BD61E
+3546FA1D88183A56C02ED41EBD674DA3A4C88C09C2CDC6E0242857286E269353
+990FDA1EFFACDB30634F534044CB042130F04E27AEFE4AA526BD39E4F4C6D10E
+F401AA71A05FD8183323A147A0E22E36D4094943F28DCBDB34650C4CE56B3678
+FEE60124112F5F2848857C2C9EDCAF2FADD656D70B478699E2B285DD0618F356
+33D67317DF823138B51982F6B8BB4A8018E0F4CF6409865CC8CF29A8597D13CE
+251766A081D26BB39980AA95302D06BCB0936FFC53B6CF1C4A940AFB16BD3110
+365C94061D5147BE972DAA8D73F39D33C0EC474E7CE6AF8E5C9AA395483F57C7
+2945B519E0A54EF5D55F13F0F63B343781C6BFF8ADE1256F38A59192B44E3722
+B6667C39C9CF9E29C215FD49A984B7EAEE1810341318C969F807EFA8C9389898
+1B2CC42B2B53A1DDB583751B6B9FA03FC043BC39D3B81B7E42C1831BAE782BD8
+07149775830F1A8899FEE941FC7512FD59696EDD228A805BE022768F865F17F4
+6435E84B15BF7781A14BB59ADEF331B218DAA2FFC6E2F8FF54F4914C1CA96DC4
+64FF3A505E84126E1BB149FC718A6138E97FD19BE25625BD0982613B732E0980
+697B8388D492DFA29FC9560172C44B0A3711632F2C591FB446614B6B189063A3
+D2739871A6DBFEC105CC00AF3971052DC66B6D01089154C982DA3B4D0EBF1117
+7772757A5E2480EA67360A79A36833844AA3B608C3F67D444D82F71D4587ECB7
+DD5669305AE938708BFB434150109CE7242986B2F97C45A1893532DA407FC9B6
+7C206AD054EC1D71967CD7C44E79889A96D0FE101594293CA7F8377BA2C153BC
+AC36E8CB98B7E84FDE64887E6AA4AC907CC6188688FF1284071A4187ABBC2D5C
+56BAED2400148CD610188C26866EDE8F3CBB6AE91C3D1C1150DE4FE26EF9E592
+EBB899825EECB2BA831C5EA6F2C1713A5D408480DF5B2B191ACA97ACC55AA53C
+3A3AA40C54E02AA971065B5E218A87BF4C15C294798494464FC95C2B25ADEED9
+2E8BED31C8A4F01F59754B2E7BF23A4FC6A818B0E67CDF559EFD49C50E75A5F9
+1C686F430395E868C1EF47D38AC6959B122A930E991C5436C8B95A96086485BD
+1899F58FCBBDC8F13991ABD51E0D142B8DEE60B22EF277ED8D71FDC7522C3AD0
+1F901617B3D251ADF218FA88EE4361B25B425AE66029788518614987E1387CB5
+F28413772F8E86BD296651F1610F49406649F8DBFD7951372C0EFD7EE09A72AD
+67FE2BF88CEA10F0641AAE9BA7B1A6CF0A916B2CFBDB9E32843E2C72D4FB59F4
+990024AFDB73416CDF446702EAB53BE1472FCB1F02615E8E33BA0A81FA39E6F5
+09058CAC70155EE496AB64AB70E30CBF4BF7AC91D3077766914FCE0CD6C27650
+FA8E1633BB529B43CFEFBD5AB0F71FED4DE291535DC02E108E8DDDE44B543E02
+C8A34BEC9BF136EDD1AA819181663989FCE0340D07EAB456E2C1DD2E983EA5C6
+274757C04C1E821A80F784C0CF41D798603BDFD2B0FB35DF50396FAF8D276894
+07E10BD6A4C9B68EC252BC22248C0307134AE79EA5333CC488490A0EE5D474C9
+1C64238EDF9349A0EEE586E4BF17FF5DE7692EC7339A45D64DAF13A6F8E5FB6B
+2EECB29F2D3CC14963117A1E007AEF17A018CEE82F8E574A788C1220553E1F03
+A4E00881190632AD2DBCC51375DE2DBF69522F7DB433530D17FE0FA9FAAAF059
+A48D273D089AEBDA9AFFDEAC24F85ED48A6887CEEE576D4181FA8A761A83797F
+09D647063F7DEB5F26F9DAC9F993331F082D0FFC96470D90714327397AFA3200
+CEFC5B47C47A653F18112DD1BE45873FB10C0DBE9BC869CC62EAFA19CD9AF9B9
+7002E4ADD8075A204A5D72BBDCB6D5564C7990B39EA5FB340AFBEA88C847262A
+684259F3CAEDA8E37A4E079661AB4E38C92ACF9971DACB89C71CF4E7F10E1E1C
+56C21AD0C54E0D7AE4597C7F635CD2E81D0D710D7970DFA95490F064FE38551D
+34643EBFAC54605650E72787180E36AC1835CDEAA2E2DDD0EB3FE15CDFCB93C0
+A6A0E41B463F6B0B61AD5A9E4A60061DA6B1387AE250D3E55BA156B7075B81C6
+76A00EEE4F88A2D73E8B0E3927A2EC44FB402BF162991569AC91FDA9DBDAE416
+0207804263DA45AFBBEEBC0964515507791392AED240CDD9E4E088FD22FB70A5
+70B25D7A8740AACCC08A8111AD8CC62646BF6254DEC81C8546B281F1036817F1
+A957F1244C6B5E423831702AB4563A892D8D9B8A30B500A94021F2F0BBF8FE1A
+A67B1F7B6850AAB3E69A702181D5892FB8354806401FBCEDBE3DB9A105496242
+AA8C323262269B273E662776064E8739266B1BCE9908A78DDA1A2D3670B19D72
+7B0BA89D9F3B9442386ECDED1CF5CB320CBA6A728F0E34346909016FD231E9E9
+809781CC21425E343EFA770B3B7470768A2F8B2EC1242A8D5CA5EA96C73DF1D8
+8BDA8766770C84FA936CFE15298FB58DBB29EA9ACDCDFD5830A49CFD36F99410
+2CFBFA860BEDBD70A42E03CDCDCC461FCA1502DF250754EE0CC6D329D9D35C23
+9E60634036ED72727FA15A7BD41B9260D21128FB9BF61C94B11CAFD4AFDA373C
+4CD0A2175F0B9518C505F1D080FD4F2B3B68C2121987E7D5A7E3896EF597CAD1
+E54FB5A0B0C6B4F60D6147A4205BEF37C9A78BD12C72947336647D109A405613
+63BD8F590AF30F050CDF851984E191D65E7A4BC01792EDE37AD8359B9088C30F
+F0E44AE233BB9B3A568EF5615587C0D8D7F10C9B18BCC808FA1BE622A7687F4C
+0BB70BF45E45837DE8BCBCB4D478D3E9363869F60002E4C6EDF77332AAF56994
+8EC5F1F5A71D12F852EED1C60B1D0452155DD02B30D575A07A5154BAC033C47B
+290C6D30B27A1ED8732A6BABFD06B8240CA93F73B08F889AEC992B425E6D3C76
+949431521D090388879556546CFF6FA8BAF91A68E8D8EBA33AFE5DE2FD8755C3
+E55A470D8CCFDD2C8CE3D70C75C098B9DEA904CF4BFA87DC02C49310070758AB
+3D4EA6801F8254FC80851D5D176D161A4198B1F002C5D4851EF3F88DA5D31A22
+C8B32B582B085E23FAE02D6D5D58A27419F31E5A942286CBBA82839DB0DEEA88
+F29EEF59D94D1051BE274B2A2095A7AA91C7C26ABA1D18031ABC759759DB26AE
+E80455C7E5F8BA0DF98DFE1E1419B3C44396DF7EBACFCC4FDE67AD8528C3FD4E
+EBD27F543B889D99A8B5EB4291CC55629A16E5796B248F51033C0094D6A9F6ED
+013200BECFB63ACFB95B4882601F7FCE4785CA35E65B7F77886D56DB6405C312
+4C83CB05FCFBCD52658AA4BC12C09129D50BB55C6741DB9BD1026B39DB211214
+99119871CF94985837BF91C41A4FBD6F263111F2221B66346BF8E6665396428A
+67B1950E5BA890E4F2BEA94CC87E470375F469B724E871EE9CB7508384CEF157
+602E49E91FD4CC89D01DE4F3D968C3921566E2F88B2DBF8E88B5D4E89B70762F
+7B7719EC279BFA985C84CE1C999A07F80EBE9DDE3562252C134EAA079ABF560A
+B0F42F07FEB72D886081C46A497BA02794B251F96E3F3E9C6C9AC10E89CC6D84
+56709E6D955F5C38871C39A2C79C68F779F21B74C439E3E0B8EF9A4C283C393C
+F6513F2C01648A51555A2D4E1A1239EF6F992DC241B9B25EE96E4E8F0B56818B
+5FDEC10DA7459212EAAA099F9D2095B952C9C874E24E1D1CCCA8AF77AB700D37
+C6DAEF7429F669936D98F8D97B6E6F6F7F6B079B90AB87E4466F6666A0D168C9
+37758133B47DFADF4A83054540AC383E4D898439D05F98DE1A8EB489C9980904
+28B677D05CEDA7FDAB5782C9A382CD622F9D48354A0148068BF9A7CC7C21EA45
+5BFBBE1B5CDE740FCC1C429304F8EBC0D87DEDC0A2AF4E0F9F87CA02D36DC21F
+20AB81263AE25DCF0AE79806808157F9EAA0E0718DE23C424C87E4CDAAFD9883
+0AFD72C51670ED446B82FB83A4253770E8AE5CF57AD6734B1EE816FE4F9131B0
+456F28F8F963A38412272F954C70611005400A637FFA5E3B64F452CC04259AF1
+B95F1A978AAD80E7A9E2AAF1F3BAAD7051B00605BA0A2484F70A771692C5770A
+BD6C7392A051ADB493ECF58A5E18375FAA647641656124C43D1D4717C7C7E97A
+F0E9F78963557D93EDE7C134DECEE31AED58CA0ECA56F0C6D03B22B37FF44B1A
+87110E210D7B041A8026761AFBBE21F29F390BCE0DEA14CFE2B7827EEA8279DC
+B366DD637E773A46F632496A35E100B89C3ADBFCC45851B8212045E127A2AC15
+CA268B6C40CA3461CF4A8BD9D95911478828F13429676658218462ABEC668D4D
+8CC8A36E04E3A66F90268F53253CF1E2475754F227371029C0144EBC4057
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+{restore}if
+%%EndFont
+%%BeginFont: CMSL10
+%!PS-AdobeFont-1.0: CMSL10 003.002
+%%Title: CMSL10
+%Version: 003.002
+%%CreationDate: Mon Jul 13 16:17:00 2009
+%%Creator: David M. Jones
+%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
+%Copyright: (<http://www.ams.org>), with Reserved Font Name CMSL10.
+% This Font Software is licensed under the SIL Open Font License, Version 1.1.
+% This license is in the accompanying file OFL.txt, and is also
+% available with a FAQ at: http://scripts.sil.org/OFL.
+%%EndComments
+FontDirectory/CMSL10 known{/CMSL10 findfont dup/UniqueID known{dup
+/UniqueID get 5000798 eq exch/FontType get 1 eq and}{pop false}ifelse
+{save true}{false}ifelse}{false}ifelse
+11 dict begin
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
+/FontName /CMSL10 def
+/FontBBox {-62 -250 1123 750 }readonly def
+/PaintType 0 def
+/FontInfo 9 dict dup begin
+/version (003.002) readonly def
+/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMSL10.) readonly def
+/FullName (CMSL10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -9.46 def
+/isFixedPitch false def
+/UnderlinePosition -100 def
+/UnderlineThickness 50 def
+end readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 12 /fi put
+dup 45 /hyphen put
+dup 46 /period put
+dup 65 /A put
+dup 70 /F put
+dup 72 /H put
+dup 73 /I put
+dup 76 /L put
+dup 78 /N put
+dup 83 /S put
+dup 97 /a put
+dup 98 /b put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 102 /f put
+dup 103 /g put
+dup 104 /h put
+dup 105 /i put
+dup 107 /k put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 113 /q put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 118 /v put
+dup 119 /w put
+dup 120 /x put
+dup 121 /y put
+dup 122 /z put
+readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7
+5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99
+8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716
+EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C
+02CE8D8B07183838330C0284BD419CBDAE42B141D3D4BE492473F240CEED931D
+46E9F999C5CB3235E2C6DAAA2C0169E1991BEAEA0D704BF49CEA3E98E8C2361A
+4B60D020D325E4C2450F3BCF59223103D20DB6943DE1BA6FC8D4362C3CE32E0D
+DCE118A7394CB72B56624142B74A3863C1D054C7CB14F89CBAFF08A4162FC384
+7FEDA760DD8E09028C461D7C8C765390E13667DD233EA2E20063634941F668C0
+C14657504A30C0C298F341B0EC9D1247E084CC760B7D4F27874744CDC5D76814
+25E2367955EA15B0B5CD2C4A0B21F3653FCC70D32D6AC6E28FB470EB246D6ED5
+7872201EF784EE43930DC4801FC99043C93D789F5ED9A09946EC104C430B5581
+299CB76590919D5538B16837F966CF6B213D6E40238F55B4E0F715DBD2A8B8B8
+80A4B633D128EB01BB783569E827F83AF61665C0510C7EA8E6FC89A30B0BC0EB
+5A53E5E67EF62D8855F6606E421BD351916549C569C7368AAFB714E22A023584
+8B1D6B52FC6F635E44058690002C6BA02CEC21C54CC8875B408A8BB84F445894
+5D6B3E4841CA20AF852A660FE9C832F773691DC6F7197FF3DEAEE97418A5ED2F
+F2AE65300416227CD3BB03C29003C770CD7D2A7A2E4C1DCA193651C2CDDBF93B
+966938788694BFB562AB0010268955FC3555E5984CCAB0A9B7590C77C9BC713E
+A29E5BD7193A4E971D1752DDD0F0AA4648E7E87BBCE66A1E836C715C408B07A5
+9EB56BEFD4596706CF839BA4CFA90CAD4038C1E006B51913279A2C31FBEE5BD4
+A7D74F9103CE6124F5B439CB860987DF44FE17EF88EF1BF62C67060D25696BCD
+94ADF08F04E349CEBDF9D3389D870D94CC05E393B3F4362A13A6A672EE5E8F5A
+DFE7046AFE3EBAEA58FFEBA4A47BF61F92E2003756DA643CCF2C9DFCCAB62669
+E3C2A18D690B64D907F50BCA155A85E47C3A6954C6FF7ACA36D8DFCE777B7929
+5F5D5F787B9C247ABF13D6D7B4A8F06BA25CCB342F8A5071325CDA86AD71BA23
+8A9695C7D1D50D0AAC267AB7CDBA7AAF46A264B7B081B7E79AD937FEE4969FD5
+155A99E652461EFFB4BD010E5885631E2B2497D6B8C43CE77D7D47FE201DD46E
+4482FFDCE150A1183C22C004A0AF0E1F42AA6804E038E1DFC8B0A3CE26B52038
+44D2E7F759DA5C252489E5525963D68BC27C82247BEB18818C7D4CF0BC5CC97D
+8C701034B8DF798DD4CE36C3F8B1FD40B2DA14EA75583852875031AF8C909EE0
+04495FDCD04B05A5EFEBA56A8CAC1F57F1B8AB91FB25C81CD51EE69D6E0F52CC
+A0E12CF7E3187D67DF71A599FFD895FAA7BF80E2E6B96592BE77AE96905BAF0F
+F547355A36C443797DDA7C414AA606CF9153E03450B77D1BA4088D739DF55F07
+111B9E11AF37F45B6EDE6D7AC126E05886A57C83886DA87761BE600DEECD1344
+8A82BD652BE7ABFE6A0F50ED7C6F4EE12CDFD80CA7A5518692F267C51C3FE76C
+567BB8DDBE09A2AF901F79AD02B435287CB8057B3D5EE6655071F67B00438728
+C4C3EBD648BAF650993AFE5E2B29074A99ED0FB725D9B8CE8B0292B08A280214
+C3AF252BEEAD30C88F72E322FAC3E9D78A1038F5DFC41F7BF1AE3744A0677094
+51B77C2D630B67853FE5E975A395C06A4D4DA744040B272C2B88D8B7ED3A2C01
+66F503C9DFD3C7DDAC865900D2A4F2CDF517F449851DB1963468D0266D7A3E58
+9F6B2A1843E6444274F16A9930302DACD8D2BC4588765099A86BCCD8A31DF0E6
+2853114DFF2D19F812F19AE6C2E419D7AC1BC024D1195074FD0C6717BFB389A4
+4D5428E7BB2E4F9E9FDEDED7BDCBDD3460805AEA0B5F6460C2FDF19273CE5BA7
+5D3AAE0DB94C6AFA8339646191C23B0149E7CBF136FC4C844E025A38935DF256
+0A0A6466A45EE8B9B23B6A055856FB084F87C73BA28F1883E3B184CD813C72F9
+233B78CA4E125ABD26F29B92CD9DF39D6FDC2A217E2B6B45D9B0A4D536790A5D
+BC0903069565A442FA7466414D948AC432C6B75D8D0E1DBB217CA3DC38A52DEF
+62E9D5AE9E753956C13819D93148C7683BE4F71B80BC066D8C19FC807FB1C086
+B49215DCF56A91A42089F0D063B9981925691F7DDE3237403AC714F5CC3ACA88
+DB2F1DD205578C00472FD70C8BA4F752E3923ACF3164D442A6B639902ED060D0
+C5777BC20F9A3BDA60FA3BC986C38136FBD2E8F910E32EF36377C9CC187F4AFA
+CCEC423DB925B378522B748BDF12D523804CABA83CB5A7ED69FAB9AAB75EE8FC
+38D9866E3754C4E2F2B9AEFA804044D878DED0E114EA0E9682FCF38F6628E63D
+FE1C1B5615E54FAE8684566EDC4B616F76EEFD6207E0386F06D3BFFA26425F24
+303CC7C8A8D7021E7D09B202616988287838C3DBCE3179B4FB5C726E603A47F2
+8248CB508F327D1291CF3F08F7C88298DC2D0F778D24304EFCF6E074182BF5B1
+8E6551811FD6991971692108E289B61053D6DCBA2925B3903E8916EBD09D97A2
+C6D08E89DE4C0CDF7185E1E00DF456B249F0BFC686E04FDAAD2772DC2C39DD53
+9C23A41471267F53A87E5C2B8CBCDB66CE0B9844BC506428E6150B48D2FA6363
+4FDB2CEDFBAE0B7DBCE4D83E29B2955F8966272CB865EDB360C8A8C19EC62A29
+03066483E4083524A1E8D80FE3867BC1AA91753C26ACBE8489AB0E3330206212
+93E07ED473DBF457EB8489E66FB4B8ED8A9EA8911CF9308CFE3E6D6F36810EE8
+91CCB11BD548617B2C683C354452B9229E7C9E68828BBEC324420DF7C188CCE0
+FBB514547553A7E9B38AC265783891F42DA472388569C8E7594F7E8810895A27
+06E456902A8D9F65CA808F1FD475D011C4572F8A654BA01D67942226A663D179
+95149FFF41A9F55AE84EEB9A6A39C017D7E4FD6EFEEE7FF3CE847CDB064A4954
+9DCD273B810E0F259501BA4003A3EC1ABA6E13D24C0B57FF82D6DF077833B6A2
+7EA54801BA81DB961C261689C0887FAD83771E55D3D137AFBB21779397E11972
+6C6CA922F45AFA5C0526863A5AD8B9C0775CCBA17FFD37A44CED4710884DBC31
+5C9D3F5441595B86CF7CA2EEE42AE87896E9E60EBF5F35C2B7FDBF9A9CDAE262
+3F48396F0F741E9DDF1D4FEF75E68AFB020D06CC29B3A7B2ED819D1AABC12B91
+CA2A65F1AFDDA2F3FB322E0268DBBA024663E49EFF076455338FE31A16B04EC1
+797EAB0B49AFFB906A0690A1E8E2F5314773E1CCFFF43E6FB3875AC907F0C5D0
+DCB9BCC127014D472463560CA0CB1C2CE614D94177C7A52A5B089316689C8112
+CA57E35D716D956DBF9013B1E5B9626456B1433C8C15FA906458F957133B9E19
+8D46DC3AC015F7602538C2AE3927C6DDBACF38E59220C2F5AF36B68DE9117C51
+04CF7DF32B1AF55B87D1D8A5F4BCFEC66F63B32B6548DEDA3AAB06C5310E4757
+78AFF947DA22809B360FE535506A554DDDE5A6F2411246653710ECE5CD3185BE
+730520A766C47E1ED01890059882BE1432586864E1A86A7F586438C8DD35C00F
+021A741ED47E0F16DB6070ED0C50038632CA4AC2975578A8372A080CC0447C79
+CEABDF2BCD5E78564247B0F0025F556DA8FB62125227849EACFB724A4AE3EF57
+90C07A5B27D2E59425F56BF8AD84C5F5310FEB1BC73D536339FC2E6A5BE2DAFD
+97FC835E0D52F680F80ACA37DB498AACF152B9B44626CD89E3302C3EE1623EE0
+F998FA78305960AAB9F483F731F5F67A8C963C23DB8E48FB804EF8B86FAFE7F9
+4C09641915FA7E3930AC922682313408BC1607C76751CEEAFD660206A39CF394
+40ABE2A313AB7D5FD6444E219DC5C26734D322BA268D330AC17959A390D6C8E7
+3A155095BDD66516DAD5D65519A7FB871ECDA77061EFB21F359158B4470EF79B
+362C35C06B85C9A9505C8361939C6AC013F2CFE8EEF46FD8CB4452AAB3EF1FA7
+DC066557BADC2ADDDF7DDC2A0E1DD4A357E27A2073427EACF9B9035DA5272136
+7DF37E26D96ED4B2ACD60596E039BCB15E259C72FEB3344E3EEE3D4F17DF4233
+04C1416BCADE80BD483DD8C9AF979E1C7D50C4CF015870703F88B92C4FE46AB8
+DE6717B55C460C805B391B84333097E116F4A51F631FAFAB34CFC925BEE8B72B
+C9FD5F5A79D8F2295FBFAE649DC6AB47794AC7D73431FFE5BE992F2B5AC67049
+B5208251C0E442385A9FACF25E3A98D7F5D4C2A1ABDC600AABE84769CA83350F
+9B87F71CEAD3600E02FF9AC03C1B5C21C84F911511A0CF0111BAC7605EE31229
+3C526A79D943D92E1CC3C38ABE82D560CFD4172F318030852A5FCC0534B8B3FE
+D7365987C8B48A072907B26CDC2108130A33233E8E0BB5FDF14FB55098A10EA2
+B51AD9EFB119F82B08D256D396D3263FBD9DBF172D43A90ACD1A31F3E89E8571
+74BE98B9560E2CD661A2F93C69FEA3FF26B00772AE2C2C24B98D3D122EA2AA8A
+44652CCDF4EF4F01CA7D62A976E23E8A86291F43BFAF38FD9C325E70F9C36CB5
+A181DAD30156E98339E6A0498D3420B7BB3B4E651A9090D4A17604AE386273A8
+3D4AE8CC18345E6E19DF06BA848F203F74B161D6A8882991CBA7385F308696A1
+BEEB0130D938A764B98A2001A38489B1334025EA848CA44A116D64926D460D64
+01159E77EA7ED9ECE7BA77635BE564A4ED89315BDFF54ACE6AA1A26591D13CD4
+6D6425CA7933769B842192858D10998509396829263290A3A7CFEBBDA3EE6CDD
+DF1E492AECDFF7941B53573F01F623CA0A5ECC9D05A3D0954F7AE8CE94AC3B2A
+CD4E27519B2E16F033EB732AA024BBAF74626DB55DC74B1FDDB07FAE98B4AC5C
+683CFD8744F361838D343B657EBF52DEEE7AEA7565C5BEEFE455DDDBC4DCCA7D
+87D6D769C5ECCF14118A14A85A86865777C8E28F953160D5E82844AE54D541DF
+550D5F1519E183E0C42BE88F0458CE8087F2CD4B1B49A8E9E3D127C4A4CB74A6
+2E73BF4CC317781D03FF04BC36AC0E4AF99E2ACAD20F6F8029DE8A035DAB40DB
+17D237850BCDD05931FF4B0FE2D0B79EC5A88FE0236271CCB075BD194AA25AFB
+3FB93A5206F61A14602E4EB6F1C31C654527CE0C02D04314DF9AFD710D0EBB9E
+F8721B97F5FB18E27507E1F800B5509A58A1A8296C72B7B73F99B6CFE42E9C2F
+B63B3555475E562672645CD374BCDE937A9B05A157FB3E74C8297507253E957B
+1A9DC421946734CEFA3D5EE357DAC7E9DE17A5BDDEF6B2D2A740BC58128FC514
+61154664412BA1C05209EC992A77B7CA45AB7C0EEBF590A5B5652866008CDEF7
+124A3003AE6A7CF9DF3C72750CBD281358CD2FF25B162B78CBB971DB3477F8D2
+ECA3EE9CBC90323B2C236E375337EA0848CD7CB5781A2B0A42DE7E4D99DB2746
+0B26796CEE129D23C76794B7CE21C13C7D4A998B752C8CF43A4821B736EBE246
+D2A2BD7BA3351FBCD1B0A501EC1EAABE60D06DA2FE39BE1F0AD629769FDDC933
+F9D02F9686EC8C2D7455C26AF4DD3F6860B2289E3A30E1C254AD17D731CB73B2
+BF4DFE90CAEECE3ED0CD3FB4C8F4C7BE1C056AB4E9B95781A8968E3CC1010003
+75DFBC4AB9F6B27C5A9AD88D94441A8ADF09EB275E5F0E5E6F3BFEA0FA8C308A
+8593ABA0645ECA8FDC3F0E264B35D4B0DDB86B93CD8A047FC409E18196B501C3
+B003622999C47BAC04FD1ABD8AD359C977766E9643EF3BD6385306B08EE3E13E
+7DA5A06AE33D17A3D574C6390DB6E9429754B210F0C349C359559C7EAA2350BD
+F61D4D8A92B1AF697BC620FA0351E67E0D9F41A95A47EE0BF210C2C48691901F
+F905F65693DCB85BE412F097480F6A7266AE0A928729DA0F691CBFFF3B276EA7
+322BCD2206D96E3DAFDFB992CA8F2955F0E8B882729DFF840569D12E4DA1775E
+523AA734552AAB6F2F16B89B39F1A3FF0E07EA08D13E612F201716C67F327017
+6C041760DA30374434808273062C1FFA2C47B3FB578807BC26537F542040FF77
+66C995EF3E8B08B09FCD3EE89C30F157158A739606D2CEAA26694A4F1CEA6633
+B54933141CB85C60AB262E2D4E824A3B85C2BEF810DD774F296AB37D0BAE7182
+5648CD18556ACB124246A75474B232D712C2358908B5D9A76F82C626BFDE01A1
+093B8FA6AA0B32F2CDEF737B28BC0448FF816DDB5812131DA0DD5979D77C3838
+B978CC3F6778A4BFCE9A7087EFB19749285AE4C92B99A6649DA349A2E0889D72
+6D4FC664522F06C8C4D86D30BA43ED4E42211217D01636A4E17E2A132D26F394
+EC34EA12D84594AED9C6CDBBC0908860F39B240FA7D7B3003DB10322498691CF
+A294C0FC7ACC0BAD1EED3E9D60AAE3F7429695892D1A21CEBF062C6129B33966
+8B2EF6E932F9891DE6028B81C5E9B23278D35B7F0D83989BCBA25E20E9D503DE
+144DC485F09A4EFA1268AC5E4B551C5B2F1D51E9B9B9C0FEE585204F869D0BE0
+7287D7570A12940A47C1F51AC6134F03B415C30E147C49F89228855D093EE55F
+172711F37776E97A99CC4B36E2F10713E36FB279FD3FA5A0EB9F3938F42E2BB9
+254EB8F0C0F30391735019E02BFDA21D9813C6A22279B898EAF01AA892B14DC6
+5912B9275167AB46EBC420836CC1A5F38A4EB47C039A7BCA62BC3FCE4199FC71
+011DD6E5FFA0F3D7F04AC02AF91B9249B9F993AE346572329DA852115BEF8460
+B94690E790003586F473F37EAB5AC2922F5F663EE2C3C0C336A8DB71650631AC
+0A923A389AC911CB215EC2EC7D50CF8AEFD59EBFFA53A9F1FFB7E6215F17093E
+3975F186FE23BB5FA5474C11408FABD223E1E6F62035B5A5C1AEFD8899F00FFB
+E729C2D5FD551E80716CEA4E8281660286A802AAE8D5834F37F2EAC46297E57E
+993B09251DD7789D3467417E393B7DEABD06676B96241B0E43ED1A1A9FC3B12E
+0D34B2B0792B79AA648FE9450C3B209FB6D7D91F50C52A5DAB0BC81A8B698BD9
+18946EFF691912D7348D48FE68CD876FC6F71F81165D0C3272DA1A992308D9E0
+ED6D0A4DAD679AF495F62B78D462B463BD4A40931172290C615B3B3B6B47E45F
+CEBB85E0A6AB6832067CA6D403C239530D07F199788AA4DD52553836851C5228
+1072406F6D7323A334E7A7FCA588897C4FBA6D4F7DEB65525EFB74E539C988C3
+A685A98752F7198E77E456A545F0D23A1BEF81EF58B02D289CF980A3F17BEC8A
+6F83DD90C4A917EB0E5E2B444A608E2E9D2FF80620E16AC1D7775C0A10C1299B
+BEE0E1AB24C50647E5CA1DA65CFF3B2C295F0644CA7826E1DC6FADEA93D66A20
+DE852F20AD224D28DB900519EB1569837139C833F24B799F7EBE3FDC14235323
+1D0BCD4991C861F38DF413A5A5588B73AEC3BBFDB885CE17BB3E97B4E6A79761
+93EC8418C2BC4725CD61B5E30C07352F647C3FD50083878C13CFAC241DDCB082
+E53703D182068727F9EB6FACEC25F6D901D7309ED7370867E34E267519E22D62
+4FC7093448BD0D6B1C43D318A3E14C92032325C132AE0FF7ED707E1FA4A955FB
+F5224BE0045CB14ECC321D0F333FE24EEFCC504F7C756451D7693C3E6CA87526
+4912E1B6DB935BDE76FBFAFCA4ED473F1D2618812CFF25A6859C626A216603C1
+361BE3E071FCFEC2D4BF2FEBDE07DBD56A1BFF8303901168FA06488BA6B76F36
+95B0A90D7724E9ADB567C2ADC65CF3482CF47FD1D16F70AA19A97D0F9EFC611C
+AEA5E1ACCDA7FB2DF05E9480936281484BC329F0B771775E73F7FD72FE3F45F0
+50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81
+88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932
+AB7916D44EC2210CB941B1422DEB13896DD78CB7B7F400EA5A6CD639D9CC828F
+52311A11F2A84E566DE98826F1E28D55FB08ED70950205DE52C207CF14238446
+084FB4DCE04C781858BB4E0744C023EB0B563769751AF1D807EED20E4AFFDC46
+3C1510C782FD92902761F7557FEF701AA67B20A9B019C760B2BBA8A048BA3681
+35DB440925CABA05B8A13B2D30D14FA875D3E200A018C78BE2E930457BC33AD2
+FE3610314A268E9A30EB41F7C771758410E7D1179567B22CFF76517901CB7805
+FA27AE1A2E9ACFC032BA907F1AF9F3739F063D8D05B59B2A9DF0298F4DDA361D
+AB34185C68A03BAB8BE3D59EB3A023876736CBA133B1C24238BB910C11D2A802
+4C89FB5DC745489AA54CBF2A115403A2E98751715251D4CF99D8DB478D5DF8C3
+99B81268F3A0B7F1525935D612E451BA79C3718B5791AC67DF9ADFAE70D5E721
+38B593307B759B93438FB3E33D96A0580B31738D67E5C5AB1146586CECC08760
+14AB760C7C21AAEFABB7FFADFC6389E90076DBCF3BD5F74234755BE9293363B1
+F7EA844934135DE6DE4D26E7F2C99C7E1164A2E3654F90B813D1453D986E2405
+2EA180F0CEA444B4857A747EBCFC6DDB637486F5A5AE16148571E499D182BB81
+DEB49F6CFBC4D18746B5697D8AE1F5534FF6C09B5C5637A341FB1BB23FA18217
+77D26349A9AC48EB629DC410166EB663CF31E3093A55663BD38E4F04584FA60E
+D7C7425FB71EDEC1C80BDE47B3E83DE0851C5106ABA8F35EC0188EFD92AA691F
+AF721708D14F8CFA5AB6A1615308A033EB3CFDA0F370EB436A5AE5C44511AB17
+076BD3143DFE029C8EAD5D8A5543CF46DA7BF981B40FE4EBB9491A397F28C1D6
+247A3C4671AA2B7BE8CC6D33D8396AAF78EC4E706DDEA0667C6BE0F5F12C1FE5
+084B2B6C597CD2C063F3084A57065713A7022E38388AA2FCFC26EA5ED708339B
+22BC369EC09120D4BD38332B233F979E5C488B20DF8DF204744381DACC167EA7
+5508FAD00D535763EDEBE25251DB37170511E101A84F8F7942EDA1155EDF9B10
+68A4AC9924F5457CD7A6EDA332A3A53C53E2F52C0DB7B9DC05696CA66332E95A
+13C227FD6C61CB97FB562C26C291810D028160393DA609500F37F14F1AC48B0D
+89A09B8F2DBBBF5670E9300283AE5AC540D4C45B3E3C63751B5F14AA05124BFB
+787A0690AF15EAB81F9D94845CA695DA88703376A6B1D2A1026507A5109C1A1B
+2A189F1537A35CD611AE034B1AA9CFF3F36CFAF9D74F8D0CABAFCC25003BD095
+D310D8646D8CD531A6B0565AD4961421EFE59555DA8386EED0FDA0CFA59A2E41
+7639F9386417BFA3B4A7FFDE3AD252804489B074A9FBBE07FE42B557B2334A12
+76591D9907007E9A07BE6D7F66F2B3B96A4EC3AE3752214CF74C1BED294FEFAD
+A0610FE99D3910107572FB70A4BA0586077A61315ECAF56CCEF26C7C6D97C581
+01B71CA1AFCF5496195814C0429BF0CE653E901EAE38EB76557B37E65D53E05E
+1BA563354764CCAA6D938C516AA8038787594291797303D2E8D8ECB5948EB632
+DA40ED0DEB1F00CBC50C48358D7AADDD364C96DEE7260832B9673CA921E6DD4D
+F3A67CC937C2D4BB22668D131D79365CE9C060FC3AF0E91748E9B794A19817C6
+97596DEA5ABFC3C7487AB58C62AA9F3BCC70637A417AECE7A72667A918AC43E2
+0818846B93CD5FD08538BD6163B4B6F4C14AB9EAADB180176D9037898BEB18A6
+233F14130B020603DA4AB501D9896C070839A14124FD96F9AF09D7A81786E976
+F9609FA0B538BBE52DB0AD9421173210852F5548EC8701EF5D1AB5EF5E52E2EE
+14067CE07244EE3A0CDDF811B66241F775B00994BC9FF19B86B5271507475DA7
+94F778D791D466329AFE809E4D674EAEDA78576DA618286F48144D1DD6035305
+95EB92DCEF4836638876793BD718A1370DBBAF742CEB117C70EC52EDC7AA6850
+CAB66A51919C3ADD670CD8F054EEFC739034C8EC408D1486D40DA29F2D571A5B
+79423563A95D0748C158BFFFB2AC0AA4F168B466B12A52EAADB1800797A79CFF
+D793F95CA2E49570681A16A807036294539198CCBADD85DED868C5A3D75C9545
+17523791838529514AA22D2163919884BEEFE8812A4E83C47C9F9661295B4FF1
+309EC57707BA268F7475F350368A93CAE64A9538953969C0E1D4508D3283A6A8
+475FB96BDD92C2E4665925ECE5B6215243CABA2726474161D8617708952B34C7
+090BF0203307E38B07DF33EAD31B6310D3D6E3B8577C66BB3B4582F17750CA0B
+05B0B84F990822DECB3DF4CD67AFAE8898016EDAF6168364E038A952D8EE6065
+3589E36AA1F9908B6969429C3E4C9366A032613A6A12360C06648BD306D7CFB9
+1326C2CF718B38502828FEF7550DC7C34125C0BA247886B4F9045B0933D64D96
+96E09D7955D68F52E5DCD78650BAF14255BB291E5458A50DD3051E30B17941E3
+6CA9F933FC641646400D02423BC26FEC94CB17600E24CEA1AE03FFC757043849
+515F8FB8DE6E41F3395CEFC8F33259F6977A024B98DE7413C15732798A9CCB1C
+BB369041FE4075D04CC2BD8F11F8EFCC9AAC2F21A04C38B93612C4E50369A649
+1CAC07D5362BC88E52038E11ED55FE68A1BABD253D61A9F5AB6BB0939CCDD8A6
+065FDC32BB6A3F4715FB0C204D3A89DBDFF23FE625AB852F889D5C150CD3D21B
+5490A90FFA8BEE76D938D399267D8615ED94C15E78D8FF22462ABA8A9A8ED2FE
+EF1E07245FC1D657AA227116FF79F744A84540BFD3E46F4C9D1E9C6203629726
+F52129A664140028CE71932143B164EDE92251CB958E2E275B1F92CCA30DA6D4
+282537E96B51177AE8E42E31C2E37FD9D46C54D8961A1D9324E787AD1F691B57
+D7B00FCF5F246CFDDE0909E4F27C8D498FE7A03694709F02AC582C44439DB228
+D261FFA0E8CD3A325273985FFDBA3713E988A24B0B0D9E0CD78C7C46DBDF9A6F
+0EC10623D4469FEAC3955B6BBE60612B54A432682CBBD4460081EC60AD91CE41
+C78982297E8FFA539FCF5E6004481FB8BE804548EB9AC9FED4921A72BDF7D622
+84B63FF4A6B57E9BA917514B83352095761EF805DD50136719A178360DE95AF2
+D8B753FC58FE737A098A7AB374806CB866A051A355702D88C6C8BD1AD8A10A2E
+298EB9EDBA604839099D34ED16168F9526A21B264BBB50B7885898C86DF6C561
+0D3FC16A727BAE7321E598C936DBCCC93088CBF0CF4D5D2911479E3B149F0E45
+031312B0D2D9278355C330F6501F70CEEDD232BB7C2AD7155DBBADA044FC9475
+B6927EF8AD337B2897A27FE59DC59C42F9EFB93C68A892913FE62F9592D88AFC
+A5584446062FBF20D959819038F5F286B38431C2927EE914AA53FC262F5FECD2
+5C98B8D9BB25C3590C5BE08A73247A7B56C2DCD15155CB4D64DB83D6545C37B9
+7454DC342013A4FBA22033AD1FE40E3EB03544F985AFA427F7357C59667B806A
+6AFD584340B5218DBCB76AC1CD195EB3F410225AC0F111A7AE786B832E730EF4
+49FB4AD55B3B7684889262C35AFA6DE85F8992B30FE514217BF48A45CD0424D8
+26BB690432605575AFABF729071B3B2FCA3BDB9E89C3FA92F6E53D3D9D4BF40A
+74E19202D19625ACF34698A11A0AD8AB9663E44F32856EBD791EA8831DB449A1
+54BA004DD23167CA8A83A9038002D83B632A3AF8EF94702C96EA8159E408A08C
+B2E287C5B602F1D6A1BECBD11F25D75DB60D965F5D260D9E2995415F4C96154D
+160B9F7EC4E7276A2AA30D013006A4AFA052F5FD974B6082A015884EF6134C8B
+04AB3A9348B597D9AB86A95949E3536502AC8EFC6AFFDF25E570018FFD41C026
+3C9798F8FA888CA4FBFD1DDF345218CE4D579A2D417BE36C5607C2534C828172
+A8097642C1D9EC06D67EAB4AD2E6C25FBA3C111DB923DC7CFC4E104A5A72EF28
+2035D339C9458B015BA99605E3BB9D69345C3AAD288119C4E5088C4BDFCD6ADD
+9F3A0DD2D6DAE5C2E929F5D789879E2903CB8EB9DE86D5DA10130D005FD4EE69
+43EE1044194D2F8BF9C5D762A23A56B6DF8D9ADA8925A847F06E2D0603127172
+C776BB61063A2AAA4E817BF0AF87B2C106096E0CA57467B4913744BB8C222D79
+62A376AC13A7B257F85D5223B6B0748706E2043E8DBB52E3C10DA74116ADEC2C
+B595AFC80AB39145C296606E1550AD9CA55C260D0DBC67D56120EA0C84392C56
+013F095E70EB4E72B1C47FB0AE04A1C376BF67F607F5F944B5491D52259BE39E
+FAAED8474A5DEFB33D98D033EAD9FCD7DCB1FEF0DAB956FFD73C8D0B7E42AC99
+69BE895284B6868020BDF853B1B1861E8EB6DC4F58D0223E785BC022A3E653AC
+ABF4F2ED813E15ABC1B3C73A391E6EA54BB1F75FAA15D70FCE08795F64EE8538
+C94956B41083F438950DAE03F0A7BB2F757DBD4602EF8142E251072240F2BE0D
+2642BDDB51555BA53AC4586EA084447ADAE8966261EEC7BA502F6E795FCA21C9
+257FEED3842DD00B78CA1DB4673796FAB080467B3BD8489BA6A294729CE192A9
+63776F9420A69211538577BE81BE864B6377F2D10D57C18C3E0D42D357AE256B
+B32BB476235A22C15A5E81E60B9AC6C362F1104F1004F72FC48EE8DF34F88064
+260366526985F953E883EA7F2EDA7685CC901A9D9D38B55FE3D97012D9879EC0
+1F58BEC344C5355AA1DA5695ED1FC3F694DFB862AE16760B6CF51D615E6082C7
+4174BF63C3E676A29810461781D6E564D4C2333E1C34FF1FEBF8C408D38DD6D5
+E691272CFBEE210BFAE8F5F752A36C017F248755FE3BFE7C0D8519B5E54F2C3C
+4A0A7B10D01B9E1F085CC68AFE86C51DE7BD646488A8B253576B157D490CCB62
+F6AD2EDB1C8CFBA78F9ADA84BC10D20048C085718ACE6D357B610A707A6B47E2
+C0F702CC9EA532DED8A164303A0D3D1F2BFFB9857045CABEF3C0F588CB4A2943
+77CEECE9CF8E3CC5334A2A568DAA888C01F4E3DB32C186D05C0A9CEE85205815
+898D52102E42AFE02A22B2A6A3340F1AC41C70826CDD3CDC763253FB45401E67
+5FA13740848DF61F10C5FBB66E3B747FF222D45A9A51D740B3A9FCC5B4139D67
+0F095067B6E5B395859F9445A6784D1BB9644A3DF9EC65F5D2A67533C1DE70F4
+B0ED850678AA4B4AF5CEF0D470B7C3FF361CB5075F67F213CB0EE1A8573E6BB5
+7A27E3AB68E1E14E9FC007272B02E945A306E0353D9D2380D1C7FE7727D0F445
+6F052B9520AC661A47F9A04F987750DB3D244F9C93EA92C2A40CC751A9F531CA
+3948B4572A19CA583B62D2FCC389ACB3FE434E2BE9755FC56DEE41BFEF4A7410
+D63679719D502054901F8C7920892239EC25C31C3921194034187F6105173BB8
+A3D90DF3AE26F0A08BC7FCEC23016879063AC946451DF0AE66A7E4EDE32D48CB
+03174C819477EA02F100A05A17D9FC92C698D500FF43E2307D6DE5669238310E
+3E238ED8CEC1144088B0A94D82C70CBE5052BC37C7DD988AD0CADE5D01A3217D
+131F276240F1FD5370DB5115D333C1FC65DBA0663264DF19276C25109BBADF02
+2BB4CE8F31DD49B5F15559186214BCF32E458C56F69731393C52A64C05C8826A
+C96C4BC76FED847B9C0CC9BF31394CAA0C420C4D94602AA143062D48B0C71CF0
+AC40B52AAEF7BEC6DA87EEBE1452F7B430C1C2A08737BEBB5BB6E9EE7F706C43
+4F2E286084BA675876D00DA1C27AE89B20230D36E8D1EC8EDC520C241AD505C4
+38CC5ABF4FD5F5B6BD5B1893CD5166E0BF04DC81FE35CEC4721E1F5F380C2F24
+9D05E37C9BF64CCA6A95A4533F68125965FE4D9069A751489B937BFA454253C0
+B6C13F04A360EDFB36B3B17DCE39E6A4A19D4869483A5B142C781072CFAF2D94
+159B84801AD08F23FEB80878FFF29AA2FD191559070831D3805B6DA9B18554A6
+45E6D7E57C5E9E29D4FADFC983411B39922660B825FDE0F71EE12429182E0FF7
+67418B836E8AE79430A6CB937C32B35B80BDEADB9D236570399E94850F5A18A2
+2075DECD24BAA8184EB9FEA0EC9F2E055A43760C8E0E62FA052BA6C3625C1819
+2A7E601C656CF7EA41DA678861D6D5A83C34E4D41A550BE9D614852C62BEC8B7
+625E510D16796451A79F4041BAF27F33DCB056DB0E70A29F28F0DBCEB869655E
+CEF5717200A06922027A5A30C9295A1CFAAA22A2777B6DB6A196C092284540B5
+C1F82CCD7161ABC0ED164D1A6D1493B82912491C23196D994E807861ED28460C
+5B9140D6F756A565719A8DBDD4A1E9D8CB40BA06285B3D3DCF79F180E5C45147
+B3193C49B03DB48340EF2D9046AE3957AAB282B2347ABB43E5E747DAEC5D8455
+401FBEF7AEE3D54ED6CBBFDDEFCB6642A2A230EE6A15318C44D7343F0230AEA7
+9D6BDCB7805CED3FDA57C3CD466B9014F89ED4B5A9000FB13B0F5DC9AB75AB52
+768255C4F17A3AAF05B341CE41C769FE8EC787C22133D3FD0C8BD0F353518865
+68A5781043A367B035CAC1BFE7A440A72085F5B782FA9FDD2EFCA376F9EEFF9B
+B49BADF01746836C57B783C8228B393BD1EB97E75FD9A82F9A6A0E2FBE8D1F25
+AC5E23C43961AB9D446CF0D54CD926D1B30D025B2BEE45FBC2713BA92EF31419
+7FEE59A8548C344D31A3EEEF58FA66C9F1B639DA472AFA6D3EF7DD27263D4991
+54B73C122869C3EDB7229ACFC865F69B2654EDD7E36A036D9DECF0AF073A3DD6
+7FA20D79289BE45B07FC07663B3C5522E7189D21235C253C1B626B7B9D661496
+AF057D290B0F7D2E2D321F6942088273CEA890F53BC86F56A0476B5B0CF6963F
+5FCD1373D9493326A4F4F7D874C882A359B74C8FD33D4659B92B4E3AEC418CF1
+6A7F014DE126300478E92A5A7571D1732A38A34C158A94DDD2D61DE9CC7ECDE4
+AD98258ECC73C5100D21C825A8BFB291A44772F405DFACE0C9D47DBB9E7697AB
+248574E26F303FF92F95783B9BDBFC1167D1E44E3A81DA8DA7C119A9F74B794B
+BA51AA8E2D24E00263AB7DD41165CB3C26A06A9FA32F636EEF59A6F1F4A3EE38
+936FC137DA37B82EF5F9C95318C27FC900659A48E0B98625B00ACD3EFFA6588C
+B2D898AA32F3FC6D6115C04BD57FB4A132F5046D171E73D4B6352AD4D22EF591
+753D208AADD4623AD408F490DC41EB8FCD29AF0580DC95B6A7A254D94D1AFCF5
+F2DABCA2A407E66394079EC9616DA3084F74CDFF526EF8B5338337D5F7DD323F
+E4474BE07CC66F03D008E99F00084714AFB764158ED48090F6B5FDB768805978
+3A2247278B0CDBCFFE1050D424A8E87893B466F526D2B496D683313BA6CBBD8E
+C3A61177B575C70A084B5197A370FA21A5421D4F5735501B21C4B75186F1F753
+D9AA778CEA1BEA72A6897F5696C187C606B1C16011BEF3937CA935541BD97DDC
+449E7BE42101F2128B0052D3BECDA392A8C619402C67696357E70B8E4A03C5E7
+22D6C67779CF54FC6E32174DCDFF354416D5A89B7E3CFA20495ADA8102130D4C
+CB8C85334605E0AFBDFA13F14BD4DFF236FE72F48875DF249401F4D7254ED2FC
+F87B8A5688F50EE4852EC4841D5F0C31987A06905FE4EFBB2F699B206AAC1877
+8645DBAD979736EF8486EA309351B6D5CD92CA41AAFD91A8C05C7CC6990B8DBE
+2B1B3A222D53B1D4EFDBB9D9D8674C77539B6E852AD34F1A3971CE9CB379B381
+25EEE09E50AE97CD2638885FD3F8F25AD8081B298B206C30F4319C34FC91B532
+C93D03A19EA7EAB9A71D733CD2C7C2B623D58214B161282982855996F855A0D2
+B540549FBE2FE586E8447567C36BDA6D77EEAF286184572376A28A13E76A13A6
+6B012FB1D820520134F7E52C151EC2BD17002B83E4629C04F3E5DE30A3AE03F8
+FD54C49EA8C7588F8F8B22263BB663B0648D94CDD1E45B1A752CCA4A54A46EFA
+A1A2EF7ED93A0CF0E9C42DB85FD4D24DB03D75B39E034F3C0AFADE00C025F63A
+4175AA1573391D94C70AAE9B18AB8AFE9F3A7684BC6522CD63EDEC2BE31B1558
+ACA5F0E9A6EBF6DE7F932A925B3F0295DCF8F42DADC5B82F563417836180C501
+9CC86EBFD0165D3D5A36E5931FA09FD67B2AE7E160E1776893744406AFCC0D8D
+88CB84A53826EBB677FC6B7E19EC14544E2AC2F71AE2AC1CC81F3EC30FA53060
+3F8376A7E97952D42A8207FDA96BA5B54F80FFD6FD7C510C15AD3F36B1B68871
+A3A29B73E59402DC9B0734AA48D45E01993F929B0536AE7B9EED7C8A1B8857C6
+34408F7634B67DEA1E1F0C7B3E69DD8C708B028A2B01174EBF0AB9599B08EB39
+1E237422046D9868361FDDF72E3F89059FFCFE7577F271B4FA51116FB2CEC639
+13AC8DEF722DF26BE4FC91665CBC6D4AB2B6DAD99FD2D3F177D42E1CC0978C8E
+C2AE2C06F32BBD9DF765EAD1C4A9DDDC692BAAAE616523E29DDBBF12654191D0
+59B05FBC99C90D293EFE501F5849384854ED8306D5C078BDD453172527FA3DA3
+370C451B6CF832CBB6AC559F5BB6B39EB428FDE992B2CC3FB1EE31DA9E707000
+BD8FE099797698D46E085D6B51FD3E71BC80A691CDD9F7CD1E25EA3BFD7F14B2
+54365BDB8E03AA0A586807ACC892CA1BCCC8324A01BEC2383E671FB7F9E813CE
+F2C47395CEB94573BB3F6C9A9AA983CD9DFF57D74B427660050FDE9ED1B316CF
+D54347D28EBAB313C3D67C0021943AAA26008723C1353ED8638714AE6B2E9839
+CB96AADF278C4915DCB843E768A4B5D65241A0675B14B6B90AADE94D7B84D796
+891ECD7D1559B6C16E01A39FB7F421C74EBF305488891C99B514FE49F1992EB8
+5401795A7EDFC84652941A09AB5A195AC712326B68778610258184AC79DA20C5
+F57C812EBD28EEBB0472616FCA22FC9D25CC8ABAF3118F891BD2C39824A41C2C
+239C4C7C68F9D407F24164BE5CDA92606BC7DB79B2808B22DD1C621AE54155E4
+E7083D57EAFB74221FC4FEBD9B20EBB88658368FD86485770E043333D711B877
+CE3BC7A8EE7E80D50CF48834A3D3B462AF969D04D6041B7BEF4BB80E56A04DD1
+81AEC1B19F0152D4143506782FE1AF64E5C5096728BE4695B5CBFCF8A8B5DF82
+A929C82E3E5C824DA55127163E668DFF9F1BC8D31AB95A3C474885E5754575A1
+7195D959CEFC2B0E5A82372EE5B315A27665A7BB489DBDE7EF653B2660DFE657
+E4FFB017376B62B88A00E2507A149D3683CD23E84248F318F26E9469772BBB9F
+DDAB49478EB11FD0964A573116D94F8338EA686BB68017D89CE5911162AE5985
+C683935AC9446F72A92211E7E56C434AF230775D22E19A857EC8ED76D825754C
+D8A0A5264C54761E49B6D4EAAD652E6D5E754B9A3B3DA4DF3E0A7FD06A2A04E1
+5AF7502C3FBEAD486B8B31B93EDAD55159D39119279761B18FE2AC4ABD9F97D1
+7F4AFAD6C60DDF0458F49D1A9F0E68278AA94C11D9A6A30D6938E734CB4FDD16
+36A8CA32612F995984F9B90EC9D22D0D4ABF8A9BD10F701EE8034F7DC40459FF
+B0753DF686A7B5DB75BA4E70CD7BB8ECECB491B9A43A8E93FB4BF1BFA19FD039
+49A12905C976C28C1575F756A8CAF785059D9321EA37CF995CDD51E9246437E6
+07BB805FC4F7C5DD09A009674D3973F49EE8D48333F8F013F3BD82079EEC7D6C
+8824C8E4015B43D67C55300E3BA1C9FFA4C02C994851EFD26468AF15655A7767
+09838F0AD3E0501EB516FB655847C1BA4FE8C2151F1018D91C8A61C477A965D0
+CFBEAF56C8F507727DF7A9EF2452D195BEC9F39A6CF8FF502FC723B70A36BEA3
+4040DD7A4DAC8074E19799FC4D70D4BAF0D7AA67E64BBD2B0D3473E1C30C3F85
+D7D598B7C66C58480D64FE7D0AB720D4103EBF355FF28A39C18B3F73DCB1A0D7
+A4913A802711853285F072230C0736E414BC3ED848986E0C0CCDB36324822CF1
+C8E8AF5FF4A95D25B3361F9E4BCC2BCBA75FFBB99090B92E766368CB7A5D664F
+9B533541B3D31252B0C4D8EC2F94585A9496746EA801B8BE21D200B5EB53E801
+DEF4B0C077DABD6B3F1ACC79BC86CFEF776FBE58504314550FC5F0C62EE4BD3F
+30C41B85B9FF225CE177B4F59312D2E147CFE4794B95958BB136F673B03D86DC
+ECB4C3797FD01990D0F4F31365489C54D00E6A8431654C3EDA912B1DCA6B6046
+6CDD53B2C790A44DB3E78C7667375092605E2F346B02DD54C624DF0A1E515B5B
+C01B0A007D124D01C06BF5D6CBE757E77188A3BCD1BDA52B1E6818490B27F0B4
+17B333200E2E230AF0218F32FEA43FF9AC871E1EAE4D3DE9DB566FBFF3FF83D0
+01FE6657253A734B5F0ED966A6B8E5BFCF0AF27958C1CA8950F5FF4D4EA4E6EB
+20A8DEE161EF94070394E1D903F4EFCF72773519A9F03D4799B254BBE2440945
+6F23590D35B0B8EB1F74EF96BF0FD8651A2A9CC3FB7B12241003B6D679868ADA
+0ACC5F19131220FB167F28909CE789213798D0D1087C4FE5E395A4E402134E50
+01BAB5D66ECFB2D0A9B08AC076EA28E08F9B23B6AAB48B81863033D28D51181A
+559FAFB080780520A57AA7D880BCA67A66235971B4AC13F9EA518EA159AA79CF
+D874CD6C92F75EFAD168943322B4C6CD760D23DD5725E39E39244E499353BE4C
+0B5962697CE6B3F91836006E6DBF57FE202BCEEEF10C506FFF37280A98988485
+C10BFC0EA8EA01678085AA719A8B583BCFEA994585C6F202ADD0E1C9F95072EF
+2E4B05806FE7EA5FE5958F7C302B900F62F8D04E3BC190F4BC7DFE51D8690574
+867FD00A589C9F3DDEDFC13418BB3F8B4E08DBFA36AFF3C71C6AF45924E48535
+27B6718772BA4A412BB698814C7507B037C628C3A41A99D4F1B4114A42E91B10
+E70D668B951C96F2392B5683F9AAB1F5349A30F73E4AFC3FF8E7F34D40B89074
+0C1F8FC10F3F73CAF36F38F2C074E7F41233D6451C2AA290DC869F461DE35803
+7A784DB838D6EF78B651E3CD7A5DEA6667962086D827507312998264C84AD9E1
+C39662E04CFF9DC5059F7FBEEA4678789944C078973E25214A7515485E7E086E
+BE742EAC82565D42E20A9B93612D24A52EF1804A1CCE5A0EED89ED0CA21400C7
+D3867C05AB56B25C8ACD4BBAFEEF1CDDAC327F38FB3F8745471892E0CFB462F7
+783D404D97B81E3C830925B60DADAAF96E88CFDE8EB64E1E18830639DF6F6122
+2F4336C16A134E941E86C57CEFFCC3FE1856BE6292257080855AE7942E450561
+ABE545D68CA8C58554FE4943BA31E95BE3B422954471703ECD34D3280116EA5E
+C8DC1409B67475A2DC4190456ECDE536073315B301A723EE59734A1849968249
+6A07FEB36DBFB14C182D9527B083FFB800A2857B6E3D54A14D65B8FCCB3893C7
+60095B2D100D88A8E56D21CB18DDCC32CC7C375FE16F243F803990CEB8A9B1E8
+2C4E96016325D46052AFB7662A72C0A6962B72ED268AE77D1CFCB44D89240565
+1286D8CB73EB596D5A745D2753A949C9033575C1DFD48006099AE09D4F00C5BD
+7994228D24ED46E25230B81EF53D05E2BBF1C4BF75A6E18AB871476DB304E42B
+CF24FB70CEA5386C26636AB9362A458DC1C2E3FE99
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+{restore}if
+%%EndFont
+%%BeginFont: CMTT10
+%!PS-AdobeFont-1.0: CMTT10 003.002
+%%Title: CMTT10
+%Version: 003.002
+%%CreationDate: Mon Jul 13 16:17:00 2009
+%%Creator: David M. Jones
+%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
+%Copyright: (<http://www.ams.org>), with Reserved Font Name CMTT10.
+% 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/CMTT10 known{/CMTT10 findfont dup/UniqueID known{dup
+/UniqueID get 5000832 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 /CMTT10 def
+/FontBBox {-4 -233 537 696 }readonly def
+/PaintType 0 def
+/FontInfo 9 dict dup begin
+/version (003.002) readonly def
+/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMTT10.) readonly def
+/FullName (CMTT10) 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 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 60 /less put
+dup 61 /equal put
+dup 62 /greater put
+dup 64 /at 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 /backslash put
+dup 93 /bracketright put
+dup 94 /asciicircum 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 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 /braceleft put
+dup 124 /bar put
+dup 125 /braceright put
+dup 126 /asciitilde put
+readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA
+0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93
+51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71
+7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551
+E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078
+0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273
+C01924195A181D03F5054A93B71E5065F8D92FE23794DDF2E5ECEBA191DB82B3
+7A69521B0C4D40495B5D9CE7A3AF33D17EE69979B82B715BAD8A5904C5DE0260
+6C15950CCF6E188A0CDF841EB68E5A2F88253E382140F87C87E55C9EA93B8C89
+14A36CDF630D6BE7CD36DBDCE22B21778E8648B97B7EC6742EB5114BDF0454B0
+0EA7B1FE236C84C0E5308C871F67B973892890557AA12E00B2C20C71F516C397
+3F3BBD14A1D0149CA064391056E45E9470FC7F6F556ABC82653B3C8049AB5CF4
+BA83C8F2158C236B2FFD4208846013BAF4165E8BB8D334C8FF2E8D74AF5DAB2F
+D44788869B08399421AAA900ECC6A2D594641C121660D4B5F512938994C18DD0
+FCD9B008F68F0351D21ED735B2740CB1E0C1CCD25EB548C35B844601D98828DB
+556F71D07E081A593FF12DAF83676492A0FFE16E95717A07082B43A966C1EE8F
+8A59E1255E1705C43A23CF29A5E4A6547C93F1680A870EE7BAD8CF74D838CD5E
+F806911D8FE4262ED8E7F5BC58B92C9C6D74F8AD45FBB021EC7E97393018B9DB
+B1B84E7B243ADB05ADD3F1DB3692ADC5D47FEC7DF93080669E63281F1576B673
+125EDF08016664BE73364F65389F7C3B66623AD1754ECBEF9E5CE6948D933787
+A5674279ACB2EBECD3B4E6361419AB32028A27670C9F3E18B746A10B00AF6D77
+4EC00E3BE521C02A99AE5BAA98F793EB1228952BE67934B91472E01AF7B816BC
+56D7F19F631A1927846D800C107B1E9CBFF9D2DD513B4A8CE2E0DFD77B1ED178
+E43FA7052765E9FAF89989D490D8FEF6C536EC0D4AE27A74F474B98DA9E6B92F
+15E063DB260571979A5DE2423920CE1F59F56EB11E00E3BB9D466A8263E1E385
+2014BEFDA8D1EA3EDA04BE32AEE6CD15C5C010A1DF7F705A2C0C18E87C8DCCE9
+05D9163181CBA56C0FAC8C06A2990554C8E759D076B01BBEADE3B5FB8B551390
+6C8E4A2A1C6E7D9C708614626F3770C0AB7DD2027469C77975C27576065862AD
+04E5E50CEBE907E3E991FA0C627302C0E207B4D5992BEBAB5853AD1C0D271728
+C76F40A79392ACCA7358F948AC65DC823CFDA59E1FF69CEBB6B7EC3CF21669E4
+70D999508F9C49E2D9F8818CA53C977D93E15FBBBAF75B1E84F0BA62BCC4BAFA
+4EEC82D804C8A8C0210F3E5E258BB1F6921AF02BA9861BAD5C3D5FC8CEFABA8A
+A607E547B802096F7AEB09FBA99C83C9A494B94408DD607CA6561A6E6660C473
+62CF8D35F31D052F6C6C8138A8E1430CBA7EA6973D6D510C1A06B3FBD79D9364
+240C1A00272DA44B89A9FE8D5BF36DC1B5EBB4A78ADBE9C5EDB485F093D9517D
+69E1AC9A8E6C9D7C324E3797CFEAD9A18E82E03F69B2CED7D5DDCD1A218BF2E2
+ED2293AE999FE2A4B5213A10083EE0407BCF8007670B8C737EAB30311C868D84
+121149ACB4A27F3ED6C0C181C98AAAF51B105F264B5672D7F745131ABAB5BEA4
+0C9B43C0DD9116D6DC61F90BE72018F290D26D5E9D341055CAF09C9F45333CDB
+D45B7954271767F638EEC499F7B53C2CC5774EA7A7F024C4CABFB93D9CB1856A
+0C671A4ECA7C62EA5242648A84E7F3AFB9547A0AFC29593CFCE6D8B873A78157
+D337CABD291431C0A2CE1F37E0CD7340567AC206FF98E4B5A6410F70F750451C
+550EFB54AA259A1B236CA9CB730D2CEF125EC65D959441F7CC9768F777B44844
+CC9842A307C72B740680ACBBF6AA35FA7A94825069BF7696ED81A371A9E5475A
+9D997F2DFAD339AADF797F7E03E654234455AC3D17702A420EE0A597BA31BDE4
+FEB8DBA7C61D311CC90441A620164DC22DC2D373973EF84CC553453AB1B3337F
+7B39983B8DFFB3A9425F119B45C1CD37A76F905777B3154CA6200792F1759D06
+E017890F4041A385F2238E3C48B6C8EE6F5258463FDBFF7AC762F6C4363926D6
+50F004D473B7B7F73CA686B559C2885F1AA761653C727A77D73431E9D110E76A
+2E55C68CD50F43997C9B2FC4710F8C8540909829E215678E63BB8363C4B8AF05
+9986102BB36580D9CA95CD216B7C321822CB41B2E0422CD077F3B55E0246FDB2
+44D5976F67296B5B0BE4B06F6E43535C21164E6C5089C3E9BA2D6B30888C57DE
+49DC8D9D46C0D5EDC47ACF2C03B72DE3B69512508539019B759280BABEA12BC9
+385308A0395C4CD33182A10A5A229743379C2075D82D8BFCE4A66E1AA087A091
+8F5372684FA5037D1B92D50CD9CB4F50AD4F8EE7D51F1C9E63C721CB5B9BD011
+6F0A8DD4FDCD2B008F223A1036D90F0F3B252487DE7898F9AFBB3A9D9CD49E0C
+EF4ADAD5155A98D2125ED5A3D3907F67301649519419F33CD942E8DDEAC1BDA0
+E90C431B198F646766A8FA9F8D1561B57E126EF604838C0C1966655CF31FB7EB
+C8CCC434FC1C96046D38203E1791EC824A3D7AED85C029288D4608CA7668A2BE
+484C99639F121845B22EEFCE0A3B808261921AA042AE19E641769E91277BEC29
+4594082CCB3058F90FAC4A700A8A827ACA00FCF574ABC8EB7DBCECD97F2B22C0
+0AA19E8739B81AF8C6F621D69B8E6F29BAE233FBA655A0AF5BDFD7F5C6B9167C
+6BC7AB693D45EF2AD999F5DA3CEFA39BA48A17EE6D9F2C4DAB91AE3F0044DC3F
+5D5506CE4675AA928B0092D6F173644F91295216D8BBB14CDDE0AD524A4D545C
+1B5E284A3BF0396664081CFB4F186A84A0D24D61E82F4767C1E55A0642720CF3
+909FA1AB8EAB78030B59BEA067DEDBD2F1D0340E790AB2777DB18248521934A8
+BB38A58B7F633DEA4291B0D5D13E9A882C974697CC6D3B49E030C94EA29B5506
+CC29C44D01B4751B453A46A9F6BF3BF135AE87A4CE232AF57B66578310DE41E0
+2A6AC422117F1963C4D7CC306BD25A6E724E51921779F22F029733122E23E2F0
+CB340008813ABB104380C80A492B3FC6D0BB07CB8D8409E9576891EF6E5C9D08
+EB8320DFA31BAFFBD336D0C2BBC3D3B2D30368B9860768FC080D30569C7F7811
+0EBEDA2962476113625EEB555490B8CE4C5F99D74ED10F738C61854CFF8B41C6
+9402E56BE8856144A1A05D0B05F4CB7EF728B2F4F5A439F18C3B68CEFA41E59A
+D8308ADC92EC1289DC84CF48D2CDEFF509A145BF945E1E00D552D329EBD2A7C4
+21D58082CC8FA790E981F4AC8EAB99950678FD3A7DA3DF13778681B208DD71A0
+7C3CBD0664B37C9EDC6B601D79A2C51FB54DAEE849F93209793849104E722D3F
+52DFAF7047EEEDDFE744787A5801E4AC2C3D58EC5DDC15FCEE03990C53B0C57A
+FC54F125A04C8E4A0ADAA725808C587E7DAFB9F784FA2875689979D316DC22BD
+AA36B306A1ABCF907B63C6476737B746099973CAEA8C1E2C5C41F27E0F7DE8D7
+F0D942E34E92F43FE902653D4D2EBB6F3B9F7928B1550A82AF234D45D028F429
+067652BD3D391BF423AE72B9CB1E8D91E898161BE3A7849D456A861A2046711E
+E934DC59442AE7D81661CE8EF727D8D7DDC0270E937E40F896AEAE6171661431
+C1025C53172F9D366834BA0054FBFD84503FBAE328B6FDEA180F8EA35B1DA937
+5CC3B8F00C206908C2FFFFA6A7AC6915D15EA44BDCF29E2BFCFD4A849535F19B
+0D307C696BE8205C7D84B9C77F02EF27D911056EDBB4080E4D3ED72788666CAD
+CD91B0ECE27A177DB23320A7FA9C31408B4D02D2A4B1CC6DDE1A6CAC3D8EC1EC
+2226EC98E51046D1EC26FA20EE62D24747D83CF4941DCE5CCEEC0DBE387149CD
+E05B19FFCAFC0D117F9A3E60DCD4C815228D98EF95EB559AD0ACC0D50FFDF714
+56C3C812EA5ADBB013BBD956A7C4CC0ED7D3E25D5C9AF5E626F18297F75D4957
+F5B0B33379114B903FE98BCF35C3FF76FEE1D9AEB711F2962276531F7380EE3F
+E368720E0292A170A15C5539B1FC7BB954EE2624B504CB8C805B8D31AC38307F
+0513606F09211AE64DAC447693B2A0AD15E9A64C34F5A911ECD0ABCA90E9791D
+67C6BD202B0858EF96E7722305B8AC02B01AB1706CC6AE875A8DDD15EE349046
+EAA65005E7866B506EDFB7A5A2AFD5C9E9DCC821A79EE9C1EA2C7BBA32A40BC7
+CEC26DB1AC473C8C3960ACEC581B37D6569E8C8C42950BAB7930B65E1570E3F8
+9A7FA719F1DCFDA45A3BF2AAB32C9A93BA3552608A61C623DE59BCB346E87EF5
+9CF025A87803161221C5C1C6F6B3403712C76E9D755C7BD68D7F2DC03C14CDF0
+C1BBED1D648B905B4B17037B7263C1EA7A7F06FAAC4E09E08483A8D714C19861
+327CD9C32DDF850302DD6DDE24912D00C22ECDF3CDFB18FA831A41A7488EC203
+F564CFE30D506F0829A96D35A7E09C3DCD107D589B627A15B55C5D6649126BEC
+60B88C55ECCBB4E680265D9EAB4CE22965D3B1AF759B01ACB0D0E6C92B6B4EFD
+A81E6A648708979487FC591CF09631310D46891423F4EC159A73E30D8DD147A4
+B0EACF6D45D18CD16CEB8176F03ABCB41F2234747B9733C8FAF34AE5D43D3BA5
+0CE0FACFC9B087F84FB6C68678BC6E76022B1526D6E5B3A48EC1A110BD75F45F
+1C4DC6D39F254976453F57DF873B7D635C80C42026DE020E5BAFE0DA0D54D1E1
+DC634D2621BA184347E5252F645A6A1DB7657C48124186F0E4C644077457C24D
+55753C651A9A7B6349867641464B515B821349C795A645420508673B93750D0C
+7A3B33EB1F09782033742AE8F3A23FC02284E6C03818FADD1731361542E3FA3E
+75B8D52B668C3E18A4AE967D0FC3157083D952AFB8144D549E69EAAC51C279C5
+E5D88A0D9D53013DFFB4352A1598FF84DCDE6FA32FC377306B9B92C0F96EE149
+8CD55E7B2445B86CCA7A547FA732D52D59025129FD8C6333AC0DF4F0CFF6287E
+F2036D5DBBB3B91B92F12FEBE0B61A313A4DB5A9CF0BB3DDB781A56FEBFFACCB
+8CB9D1D3DBDBC4CB6AAE6769E470582403CB920630221B68BCB625CD4605FA8F
+D3D5B7A1A28D15E44B38E92E906C138E72C15B86F64C38E23BF0440052A8C914
+54397F49DBED99D0AF7CEA3B0A05FF37C2D7EAE1412567E6776333237C31E3C0
+49949EC8BFD6E0F6446CE2D4DCD2C1524A288818CC5D159BF8463A847AE4A2B9
+CC8C58F822804B81B13BF4F2DEB6229C4F51F093075581791D02C36A13B855A0
+34900AA7CD4F1A797652656FE3A8425A38F421C4CC0ACA1CDD44FA6B31219276
+1CDE1CD63D6A58CE705CB56CCA1260F9B86E989019071563A9B4C274A87558CA
+6EF1660D574EDA276801F0057740E2C3B80D253D697736484D892CE1AB128B8A
+DECD69712F5E70E895FBAA927E8194D792A04AB6CE205E04E38A433BBB793FB4
+E8BBC4279D58A223C6673D909D6AFECD246E66A52F4CB35E5931D24C828489BD
+4ECAF621A220D8ECF702BEB01C4FC7510197D3F6D15321EC87175ADBA6434ECD
+2B5A306E91375CAD22CD94301763E4A8B981472890422C5488FCD523C9CB17DC
+ED22FBF12D5F7525D0D6BCFE8CE85B0DFB1D6F989C267FFBA0A996D309E4A934
+3DB54A9D29C88B9D55D7300DA3D46419256C5A07A2A529A8DE8BD1727281F5FE
+97033D861E0531B14E811378EC1AF1CC7EE9BA2B07D935843D3053F673979F8C
+FAFD59D555B56CE338F606747238B22BD62C42BB7238FEA335678D474A643570
+A9E7B4970E8C541CE9DBC7BF70ED7BA33639D6744A18379455029E934C95E2EF
+639C4848CE9A0879B51649FAB023A71782444B451F92A34CB8A124270CCF86D4
+D18EEF5C1D2B2A29012613851C49F50702D63BACF95EE2AB4D72B375E0A62615
+E0991E130A67ECBA9E05329B740708F1CB148724C3A6E5E3AEC1F88EBCA398D2
+1CA8827C977D72734310233176D1AE26C55CF2CEACA62223315C28FCF6305C7E
+A22414D4739A059F552F1F9372CCCA5FED4F9AC987942848EB498900269511F3
+F408CBEA0659B954F5F1B18AE4FB270213646F9B28AE4439D2BA2D3E0AAAA780
+5E530E4EFC8A060EB979E12191044509DA0C14397AFF949E12DC970658D5EAF5
+4EA963F5BC1407A32F3837CA6A24B7F3D60EB8E6222B702E25ED903F9D21AE50
+664A095009BDEAF4B78DAF94E5A55D48366CABF07791A1684B2F54EA69070844
+4F031AF8DF416C2D3679F8BA038B0DC9DD0400CA6B34667BCBBC07E62C1668A8
+35A8C57C9048A7227E672E89681B54D662079A189A9E96A3CA96D8DD10189B04
+1DA49BA2729F1CA585B1BD5C467295285D52E47CA904235A1A3E48EFAE9EB6F6
+01374125CE89D53C276858668CF45D2F092DDCAA52418E0BB94C2B8266B4D88A
+5D911507BB1DDA3D8F6E7C14A91CA11AE799EC42E993098E18CADA70BD2A1D82
+2C39326C6E3F9E84CD9758B9AE43D79BF99E6A0CD713E95B3D9B7DB90D127DE0
+DAFEBF850CAAACBD860B5DEF2082F1ADA64B44B193C4A1417BE221FDCA36456C
+BE5934C8CE3ED55AE3A11697C2D682B7D0F72D48976451D205783BE25DBD2507
+39C14FFB4BB828DFD187104F38A7F11D5F0698C11E8C1D4F107CACE573FDC4B1
+C56FDAE47024D6FD16A2FEABB434CA320300FC4B6C1B6CA08F76C60B7C08A665
+99F404DBA8A2A1EB18EF6750E4EC186E31561A3F080BA6562967546715859481
+7BA782940F5C5D06626D6F6A412CA7C13820EC7C1DF23E15E5829F698CF617BE
+D940523E4EE4ADECEC48C24297DBAD528BA1DCE7AC335A1D15D55415B108EFC8
+6D45030D27B3EA63B2B4CD771DBE66AE0218ABB1153D4B7482289D1313CEF184
+5C960B1E3C3C953912CC6F4521D1E15636C1545EEE457EFB87B88C9E43CC2F38
+6BC4BC96969F4FF28ABB06F4454C01CEF1B6DC538F1E832FC1666D977E5A881B
+F72F1B4C7DD4BE167A5535F1163A0706F9A0B26400178DF8A128FB5EBE6A7B81
+E478AD183EC06622B591337B9F1872AAEA356F4FC67EE767B34CB5A4D90702D9
+39FB846947F4096FB3DCF16EC81455164783BA0B5D723060DAFF411B68307E81
+7BEA1D9A47A5AA3D648E618C83C60F060029E6EC4D46B045FA7415BAB2AD0AA5
+ED9C729C24136F6AF61E6409C0B5CA760B16225641E268A68CFB8260BBEAFC77
+6626EBD97195E77CAB425CFB0096D805D9EE699E41680D095AE9FA10122A7882
+2F00F495C9EB2102DF0D3E61833BC0A2E468C5CF7AB430FDB7C0BE3DF2C0D230
+1580BAA25D65F599378D873165482A1FBB224AEA89C6BCCFBDBA42AE1C5DCF41
+06969F585CD3B737D1388D6359F5468D88FCD2279BDB270F6A858FB7D2ABDEFE
+5EE8FB79FA437F8F50237B92C307B73B0DCB808D07A9C3255CB9B3B17039CE5A
+288103D05D132863FB522A02CEE3839EF9AF7F07D99732F0B8B384745369FB3E
+7901166478F4A16076A1504C5E98D17408494E270BBF4470ED12B4332422679F
+759F1D93984D7E506D16950DB6C2682FE1379EFFA6F6C95DD71F6E55BE3EF6AF
+E0CB25388EEB436E6527806FC75484133F6E561DEB979D5C1FFEFDAF2A6D964E
+03BAE0BD593C2992AD84569C81050F7A793C5263E50C2F50B98C4CC703EAE17A
+6AEDAACE312DAFAF5278D125B6EFC5587484F61DAFF46B87B7C9B1EEDECA4859
+314A9A9E2248467DE1E54D90DD671660B9040B3E0DD982260822177EFD757266
+74A16C83A7FB168016A320D3DF3BD7726F1F4EC90EE5DFE810C96B099FD4368D
+906AE4699049EFD37E8EF058D4B97BF71106445AADD4FC6E90615A0066823A36
+673B8DE32322BBE861AE251226B4385AB28702831270DBD25D666FBB0AD7B96E
+A44E891EA1EAF0F87013AFC982E33D67A28E96E0C9CB99B9E4192536830D9901
+931A8CAFA41289633B20BA3BD7AA3414B6DA8D57CCF2FBE39920CC06361F075B
+CC40335DB9A0071CFF77F6B7BB47F3100DBDC9C4A58C2B81EC99E8E966AF3390
+E3FBCC28BA1D79961C8A1584266454DF772FBA99664D74D4A89FC82FFEDFCFE1
+4C9E4A04291E803D142E37E7ACA66AB279378F2F192FFB2B5BBAD18B95F03136
+2CB594A3D6D3F8576B90A6C4DAD6D6C8EE07AF682F925F01D0B26CBA347C03BE
+F3B0585CF4539FDC66915E22117078CC94D621F31DCB3E021998A5D6EE94CA4B
+E214D07517283D56973D8E4367392BF6C1150DEBF459D141AE0941C1C8C5CFBE
+E735D796E365A1B0F60BB4CF2801EAFE4889EE5F338D3C4885368281B3C95CCE
+251C28A90D318A8A0384439B38D63B94757252062EA44E88509FDD2E75FAAB71
+7329622828B2785C1A8B26351BC74237A6BF99216652ACBD4CCF54CFC8AC72A6
+46342F1E32D4318E7E27C7B2DAC943B3E72C472FC6F1DDA8684AA922516A672C
+E969C047E318B5E3B1270C1BEB1C4071A15BC81B29B268C679B41FC5E381BE33
+DD95F0D68118CBB60C521E5CB2BA46A10E50E9238163713290DF6DD8A27D3813
+F871C07E725D4518013D9A84CEC96782541E5580E33C2EBCDB18F08EB4655A46
+507A8526DB26C854928B81FD502B0CCE4A68943C12078F57C10F4E85FBEE1025
+46D925B8B3B447D4920410FEEB9844FABE985F9228FDD9F58392F2F3BD650E49
+2E3AD5A14984874DF4572816931885CE8A448EC95BBF40DDF4F85653AD90A88C
+C4A879C0C7596E61997B972E8A55E57B17F802C738E5C7A8FBF6424F8B131B23
+CEE3EA3747DB066246C250EAD335A76FA166ABF75120CECB59076AB31A51F176
+57176CBE8C802A97B0542A5CFD6D5E6D7EC848B923012E45D9F065BFFA0D03E6
+788B68BA4DE51DA37994948F859D41C28BA939C3A82BFDB44DA585AE80B8CD7B
+A6EEA79B70BFB4864E06F06A9751BD2D2A209D150D7135E0A25D67263EDD2A7C
+C63B5B76ADB05D44BD5BC0BB3EBCE2E74E1AE5F7DE07A59D90C932DAA2553505
+27F2AFC05F7CEB39E1C7E54F69FB0BBB069959F2FBD11709F8E81F6E7CA06DBA
+1CBDD8E7A78487462596DA288B50B295E46F4C3D9BA862688C68859734B232A7
+4B371D2BD786924F186524765E789EEAA30B20C069322D42C893A30BF1BD2C46
+F8F3732DDFE80B8FC1789239345944D8B457824FD80D11184E73FBA30EB80A9F
+2FD466826D4E666E3A835B98A1D4AE5D17053A6A648E26E77BD08F9A3E02956A
+AE82C4929E9666F539079846527D0E326FE7CBBF86E3722BA3E53F8A5121080B
+ACF8D3C67A2A1DF624B9DB92105D3C833F5A6ECEC108E026E1D3D968967A1447
+15CEFDD09123D56606134BC3449404ADAB1330C9238DE48F3CDFBC91EB86D7B3
+8B85B5BA97376A0673E434DBFF19798EA90BFBD94493E2D21976F8106FC0C276
+C81C9B9885F7A063D99B451BFD666E82909A1D8257272FE1D422DC5B6D2629ED
+8A93225B7A50361D743D9CAFC3B054F4DB65684D6CD4AEA47C3FA13A6E7805CF
+AA4A0794AC016409EBD90B0E23678322EBA23081CB878B4619BE05CF8B9128DD
+71CD833ED502C5E084783A5B4E64B9536C3ECCADDC8A013BEBF58058F65CF340
+E43A7EA1495801B2A653FF57A78F54FEB6EF07418184B93D084429BBC6703546
+24C31C68A7AE969455F4F303CB1D43978B1B064CA979CD7BB29C37D0E9262BBB
+55C96AC1596DFCD5940FB75B0BFB3A2D301EF97A217A1CBE5F047EE68288BFBD
+0F115453084448547D85FF2FDFD5E35764D09E1995B982450EEF4D1102CA1D44
+6D95674836F18A3A1CB8A85877A99E2E7B0F7E6FBCDFA20A253F0C369CAEE40E
+EDF6588A320C483D7F115E637AA56E4BE0FF069DD38912A98A634190E9BDF3F0
+0159C0AECD0B0C93B6508CF9AFA3BC3CDCB01B1CDC99FD86A83C0FB059C1AC93
+5B62E9E58477426945F4383020829462604E0C0F4AA22629FC1A003859F382E1
+89BCA593C95F42C6CCAA8281D85408835CA33861E640A1BFB8817CEBB6072BA8
+57413323BC8250901DE5A87CB9C42D6B6CBC2426D341BF6984D90593170598C4
+E94B5A824F39C7893D07EE7D9EBB4B412140835472E69F598D00F410A7E6E2EE
+83A718BFC83445EC95D6B59D20D56A1AF89782A6B454893AC1860D8C9613AFDF
+E10B3B1DF0DCC3424389D10F8008633BCACB1FF8C62185471D220AA648F5E0E4
+31F5745C5BCFE6571958DCAABB93524A33AB072B17C975B875A2AAE505935906
+A3F382ACA7B4667704107304FD0A456ABFCF03293409601BAE9048AC2E1265B5
+B05C531CB96F1D8A2CEA2111F06336C394289E4763F61FD0CAE9DDB70662BB91
+45402C3D4184CFE66E4C75F90B9F4A9E56F33F5224C40CD458FFCE01B00377E7
+A2C132EBA267362CC9FA700CAD34E125F582D350773E040312AA0240DAE7E9DC
+7566DF1E02BF6E5037F37D757AB27636723A3D319225C3C8EE4E5270E29D66E6
+01908A101027FD08EC9C500F754F00ECA9A4693DF0370A9804AE51C1EB36BDB7
+62C7896AC6646AD3B2930BFB1D34B257F666D26BA31AEDED9A2A1841400C3A12
+E720D8078517696443853A97912E7A58D1CC858BC7B4D76940D49B2C7FD9A30D
+9E8FFA6DEE15F14583074C4AD29962F8203CA2590BF80484EFBF74859197831E
+CF5056018D10C6698B028783A0CDD8728C0C717C1F9D25C94AAB1F71EDB16B1E
+C17403B22A37A1896B97443C692249430BFCBD229B02BA38D99F9A0A3B3FE662
+D6408C006F302CB1578B0EDD5DEC1169F6528EE862FF17A34790A7867FC5903B
+C35C08E4CB031695DDDD28D8ECB34302DF9C9D4CF6632404047C91637E104E6E
+8E228854A2A9530A29786616C618A04CEC0F3A909C9E8EC4F2F371E86206D78D
+05B29615AA6A0FB93AA2A62E556433EA3ED527C12EBA31479C7175C0A7E0AC89
+7AE05761B5334EC76474E2637C297111BAF676A32C9FEC87113CCE04F91B54A0
+6D57CA54137F685ECBC86A5ECF1706A74143A283F5DE4895846D034082F1A84C
+CD34430F91B297578C0D126509EBA53AA70B901CD5D2C491C47500A260116A76
+3E959E889718509A171F8B340312939F66900A73028F25132450F9540D78D510
+FEEBA8792AD3C87BC779081577CE1ABE416B7B9BE2DAF7E2B66EE0D1D8FE5639
+2710BFC35873FB0E18AFC68372B75AF9B3BCF9275F027D92A0AFDDC4852663D5
+6BAE0BF64D386BBFE01AD0CA8F7C209BBB365B9C04596C8FED28F07755AFBEC9
+2B04F359CB44732509954BE1911E4DE05E1E31B4B71D32404CFAF40EDA07278D
+A541BF3B7F6FA3E714F7C2A423A60D129B57DC384054531198CDAA0EB710EBEC
+CEC5B24B93A548AE01286E113EBA77A94CC7B6954F8C2AD72FE19B58A407F8FB
+A824540B79150E4DAA8577F11448F2DA3B490834E748CABD1F60C993BD3E5C78
+F498344F548FC4E0A0969C7C2AC9B7020950DA860CB7E995D3321EFFF29C95F9
+0E0F8ADA806335BB75117D3AA2A55A628F17C6D459F87F93CF5E6968FE8EC83D
+BE0891D0F79B15142FCED17909357DFB4C6FB6E533F65D5ECA55CD7080503A74
+E135F76095326A224EB3222AF00C61D63D795DB260B31BA213A6B00F1B6E275C
+FF6F6278FA5F8D1B7E4C7BDA1A1CF019F968856AFFBF6CB7E33875B819AE10ED
+5199A36EA784FDF788C4E3ECC35EAC412AA0243999753B32C296861695FC8066
+AC43C26ADA353026B4574519606AEF2CE201857628D85AD110130264EFF560D9
+8EC1E542418C245C1CDACAF0517858C28A24F9341B5F50FE65755150ABFC0F29
+F4D82ED9B8ABF08745181279AF82D0D732AE2F23B6FBBBCDBDD6EBD8F02BE39E
+92A423EA8BF7AE91239DA0EADCCFC57F7C00D39011BBBCF110D15D7F35242569
+39E494DF1E2AA5FBDF9F4A3BA797E65DC2E7EEE6D14EBFB6B2448424F212AEF7
+10C921B4329C22F56A13B059F2DDB73B72A145C4B0D41098ECCF1F6450D2CC0B
+32189CA52718E953418CDBA396A7A06481A7E22B0EE77D611F59792A252CD800
+34924684C5735FA4E2473725C4EE3FD9AF818348723DAF4A7688786BDF298805
+36C3B0ECE37D00D77C0F62EED0CF9F5F9F1FFEBC01340AF279010E95FF2AC53D
+90AB7A4E1472CE40D056CC47EEC75C475C2C89F1DBE1621EAEC0DC90DC52F0A8
+4A1C49A3B4290D46033ACB3994160E93E807C260699EE69811AF383A5490B39A
+AC4C4520861867854CF3BC60CCC5CECD5CA0C16D73ED264F76D900EE843BD07D
+D6576EE4C6D49C8FE8B0BF9BA116287FEE674AE190DB9D11843EF39D58E0C195
+BDA6F2CF8DE90275C97946296541C63216B760A2E5FFC6038CC8386CE8C1F5BF
+F453FE60FAC91CAA0EAEB90E58910E73F23E02048EB7FA663CDE4EBF960DC15B
+EC09058D9A57D4D110AB32C1F04AB9C16F35875BE9D8619E21731534B2F14CBA
+75E3516CECC0682313C7965BFC5BF94AEB885BF01F4AEFA5C6F6B76F8F27CF95
+CA685A98AECF62239E12B7026292661644EDCE78C7A92709F6B2E162BF9F9CB2
+68124C3135A5F67E54249E614C6D3FC49CC9D954C1DB03274BF53775B297DF6B
+8AEB8DFC68B6CFBEE88FD2F00069DE5AA0ED79D7E75AD745A433400E5865EDD3
+EFCA4969C76BB538F35757D0E287734011268DF8CA935FB281F227C742311F74
+5325FF863E1BD3A54DD33C66E766E953BB3FB8BFF2E5E537BB5CB21D29C07FFE
+453AECADED166976C10CA97486186A0856F9514D8FDB95AECC7239EFFE992A0B
+2CA0C5515764EF3CD00F6DA21FD9DC409A0CAE31DF767AE3799229595412820F
+E3FA2ED1839BE4282EA7FDF913ABD8BC148137039E30B0E19FDB1FAB5ECCA606
+308EA5C99EB7E28906575A5257D86AA2CF73AF3591344FE782D0D5DBBA43D7F2
+041CEA34575A60597058488A27B5850716F6A99B8E0CF909A41F64C2B17B4AA4
+6EF7B5453A6246C5846827E7BD5AE5E0A5E134067039260AB19F4375943D24D9
+EDA6E7C2CB7D913AC82D6F79EAED68075D9E29E44DAC112EFD3E84508C417BCC
+CC9D5D5575ACF54DF3498A92AE8E153663E745838A78EF695EF784AA3BBB94E7
+BBFDE748742673C02DF11060FD43DB91BF6CF98AB8D8E7885BB9EFBA5DF5FC2E
+AB4C701B70F69E0D9CF0675399332D872EE6EB4405313880B59D511BBEFB6B1F
+1AC7E2194CB058B35BD803138071DF09F3B2220A491BD3563110110B011C3AC6
+C390EAAD23773862531142C99BA19CF76F3F8965107BC91AD7C1FB8DF24EE796
+924B4E295352F54CBA557D27142F3885FAAB818FCA2B3406F40B952C3EACCCD3
+6B25528E887CE4B4EA068FF0AD7218E6303B218FA073B6D787ABEA2DFAF028F5
+E5F77BA6F70B77F1B58143D101DAADD59E77D6179A9888BE7B5B4046890AFEB3
+7ABE1E724E44D24E32A4904250FB6897CAC9233D9373B476CCECCD4979A159A5
+06411F31B15D3347C0403E5E30904DD5FABCE69808D1C4E7D9E3CD487221446A
+E6941405B43EAF023212FB61BF86041304E3FEC90B98BD8F685CD731E8689B8A
+2F299C8702AFFE85EB8AA054B75054E8D93BB6AA50D5909E30CDA237967E51A7
+35DA63B3F2BD3D55AE514ACC4426CD14600A98CDF16A170099FCC6BF73FF3A22
+3673EA40339C2037CF6834EBBE5C85E227B29272AD282C52305239A7C1B7B86C
+3898D08FB6A072EA7470328D81862548F2B1C39150C329B9AA4CBFB0A3A6813C
+D906A053330EBBBB0E554C20053B3B87B5E7D3572821AA9E49F77B4DCAEA695D
+F622DEE2356B941FD55308E0CC731780FD83449629E9B2BB5076FB5B97D3AB65
+FBCAA97D631DA060AD38073C7433008FE41DB1021E53DA488734C1CCC875210B
+B65128FF5E5169262F4C55B40C39B829ABC5E536E99E3106E882AB722CAA1BCC
+9A8836EE6407D6EBABD029035949EDF3DF3440CE8EC1F099A6BBCF1CD85393D2
+0BB1F700BB28AF31EAB192564F286FCA7766A31ACA961672A8DA17739E44276A
+7D1ACB7BA45BE8731A9DA00E72B5DB53FC5BEA289CACCEA6E52A5903CC10B34F
+243B66C7B759F4992DA36AFB3B60A2CEEBE39F78FF4C3AD200C6C40130EA222F
+37A9758162328979CD3E082EC4BE3C44FF294A941DA73AA7C7AEFA419B3BADE6
+B8F0AF8B0292DA42D92F177AA1BD6EABFE925F7C07E9B105FBEC223BB2618F94
+C921F3AE2113AA0DBE0E49AE59430DF0B9D5A264FA1D1614C56AA9B713413DFE
+EB239A4938729BF4B100C3931EED4C08C7C6BE8247A8AFE2FBEBA74AC1FAEBCE
+5C1889AEC856C57F216213DD4E231E4727A24FA00099C6DB01F7A330E361DF51
+E1FAE2D33B21BA9195EE55AD58CB025CAB0630425210622E611D1498D2FC4219
+8ECC337E8373327BC090067E4C5E541561780E682791EEA93370448F208E8CC7
+6D84FDE2DFDDE2DA7073B2A40D6704729DD604101218D413ACD557CC623DA0D3
+70A518A70EBB904E6C9FB043578FCA83C2A50C5612A2F3040D6FD165139228B4
+691E8B3D7788700BCD1433469C9117F4BDB727A5A7F3FEF02C3F1C7788D9C6FD
+16655A99A925E6D736C9B933DFF991C2F50742F29B5F7488D6C1C76A3ED6C7F3
+11CCDD8ED7D9A915141616E01A13A719F40E82796BE972F3F494398B881F18F7
+FD9AB21771D7ACD9CB900E981B256C4295A22307FF5DE3053FC4683E7EDBF1CE
+1665E3FFD09C78FF0847BED7F900BFD9D06A2C625BC044C8FA4988FED7AE960A
+DEFBCB2A6841E571E7D541AA9FBFDDEF1FB9B473267BB1225594B55487C029EB
+033612A0E79D28C961A88A4E12339CF3E140074E364B043B2C3782C01D041B7E
+1849A3D07C921FD53FA26069B1717FE1C8EC1C0850166426A14731A029D74C00
+7CA68E74F0423E4424CE34FED0753BD1F96891BC8EEE12B2259525D348D49E2D
+3C861A9352352C2214C5A2808D4292931CD297726C01EA80CC891FADA7CB3869
+FB09FDCE3650D9394CBF8BEC6FE62AC50209EFE3CFA27BD8C74469979568FABC
+06C5D639C78C5CA7804C62B02BCCA55772AF6C581F25DE83EA23F2BB1D6627E9
+BC18DA3A2BBF8DD805930717154EDDFF832CD1E6F8C24DC408618C3FA547BD6F
+3362071D28342C55CF633B0A26BF5ACB5ACA7038503A5D61F440DAB7F6B0BE58
+5DAC00008FDCE3ACFDCA052F7BFF4B0ADE54E08C08C2D583C6DB6CCE91BC646C
+0919C9FFB4AE4BE22BDBFA3B431E3BF75B2BC9AF9E1B63CD699CB744A2856298
+206492331E4883CC234F048355ABE94110746161599E57D0E652F3E87AD76C55
+D283E04DAD02383684FEBA3017123428FCFFB1380547AC072A47483836156CFA
+A12092C28A56EE534BFC7AE7542F47B2DB8617327F7BFA92BEE039C624FDAC83
+CB8363A9788D2334B9E291EDB859A9F9A257A3DAC24376F0AF1F93B0B84939BD
+09B9C5EE2FCCF0173B8ED93643F493E746F45A8DF148686FDD346661BF78B982
+6BBEEED5D971EC6DAC2A752F26F9C40BC4226342FC5AC58E518E5A702EA89849
+DEC81F38597BB4643296AE291F25F717481CCBED899213CED60F4396A5267A6B
+8EAB79792271AFE12A8133B51E3C53CA56BCA790447380792A056937ED9501FD
+BCA3500A9B303FE4C590E84BE744DCC09D3FEDB3BF355FFE11B5C1EED7E6569C
+60FF031C6D6371C7CBBB9E411060C37C1BA6B3714B36CC4D9C767605C428B0A7
+CEF7ADB13C24E9D22B532047CCC8E60EFC65110373123B069EDB85D094CF809E
+D2758F797E2A61F125BD8CE97173714AF8FF4FC0FEE6C48097A45CA579C1B8B5
+7617C29D3BDD3F6ABB9522935865D88A7238D5661F30B1639BF91CBBBC5E1491
+2D8678550144AF357A32CD7A26698158F4AA70732B731063B4F40E437265B547
+B7918FAF9786B5ED65D7E03E69B7CFE755E95533968E072BEFD4B833EED07731
+25EB63CB5279C3DD19FD50B121C1D3BD7AD68FCA07E0BD19DED3E04DFDBAA7A8
+412569BE55D421327C0F11083AC12D67DD8FC4CCB86C8990165430F0460542BE
+26636B6A0264FF134461E0928F7AA771C4206640C6FC6453406CEE1E19512411
+EB825336538366A3A68CC32948ED52CFEFBE3F8AB66FEEA8D52C25A0F6D8AF44
+6CEF4219205E80836F2226FB0505BFD9890202CECB8240EF954B8BDD2A513E89
+0CC826DCE35040CA09B4EB766A62802A51797C37B3864E8EB2DA4FEDCBAF082F
+A0E77AC9A649E1AEACA1D00CE5E9DC205C3D374B28B3D166F220FC45DCF7D224
+098815C60F8D63874E2C5242ADF1E6664136BB94A06AA8448ED8795F3D1DE2BA
+59C717A62D2740C47CCC29872A0BCEE82C5B9378F6D379D569DC318C4A7A1870
+8A41B051F3A6AD8D79B2DA8C56140835D8CDC8421E027CEE9EB32C78F069C07C
+352E8D82FB6135A8B606653BDE6BEAE5E27425B9C7DB47F94B4DC0C82D8065AD
+BF66CA609C7527B1E0B0CF243C937B993821492B775C5089115BA1DD898EDF08
+38B547DD2FB5377BA5A6DC4BF6409A71FBA21648F3E80D344B5FC1744FC8B867
+43B0D411671EBF5C63FBC5E279D498394FA89D56F82743E37F856230ED8065E6
+2E00097F420DA1339A084D965D9D704AF2920423896552F6800C95176BFCA4E9
+83A4821F4E99F2C00BFFAC884B24C541A768B856493518875CA63DA61D118A1A
+863F20CCC615B4757C0B6B174F6B48BE19AC7F51E747BC2E198E1929741E290D
+9E1774A095941F53CDFA5D4316A9F0DB2E9A78628FD2404763B0D6ECE8D14FB3
+0FBB08C725B1BCB9588F83B0DAAEE23064A6799DE66A8A1AC5EF654CADD451D9
+0A5403AF7B61B9E7BE42403FFAF67DF9181A1B834FA2093027EDAB10835FF59D
+0F85A2BAFAF96CD48A69EC462757D85DDA0B0BB864E4512443423A86B21FE3BA
+1545AD48EB405A5A8928017AC7A0075D8AA6323273018D307D906B0C5B7C8216
+2ADB2122FB8822F3A8336D869144206ECB6AE78F2E6FAB1CED436628D159A5A5
+D19BDA2330BD40198F8594B4B68F8A5840D18528EF01CDE6AA1FFE65DCCA47FB
+B3EFF709FB1E001D532D41DE84069B3C502DEFD2A725DF3BCCA1AB09357CA1FF
+66E5A2EFEB04DFFDCB943F4FE6CA2DB7F82746CD7F7AEE80B90E63A68AF586AC
+8F81F2D90CB4C3503B1F561BED39DC6D4F4CA355EC79E5481C2D6CA61A50EA7C
+8AAAF8900E8D4F9BC868C99E511C6FBDF8DA9C77800AFBB443B92EDF0E31F3B1
+6C6C46DFB589B822615B6D2C0C481EE7196CFBA31126BE4594784D4DDE609569
+C0A034395B6E66FCCCA244B8E4174904F8F481B4A299D4A236D7A155497B8FC4
+51BCDBF24D268A711BB9382FA048BF2BDA73E304505786E31DF2AA3BEBB3FC46
+76BC5D15E541ADDE63A0EA795BE152DDD3AEA6DC8BF6C43BFCB01B009FA6C88F
+A0467DD32334D0023544EAC78F49D90D8D84447CC191EEE735CCED9A83B51D51
+11091F5482F78154FF987A106D05EDBE5790E330F420F26B40051E4F08FDAC63
+C43742A91F5AE7F04CEE6DA65EA33D1C8891623F6D26E2BB04A28ADF23C8AF5B
+6ECEC27EBE562741392BE8A6DF6338417F020E8B958BA87146EAB2370FBE5A97
+F0B16FBF72B4C9037C2BA310AFFA57355AA0DDCF8F56B576D461B675CBB16E1B
+DC42A698B67B2AEED2529B90E7D689663088DC85FE92D3E906DF8F724EE61816
+7821EFDECE7FBEA710D069B47CB6DFB776614E494D1EBB3D51397F839632C8C4
+F0D8787BD5CD7D7CE32D7DA3CF7BCBE3AB2BE336EDB0D36564E71CADFD54CD0C
+347B062EEF7CFE18366DE57B355CD7846996C107D7118C1C17348839166F5810
+AC53393B69E6ABB2E95F90AB81AF80BDEA1D4488394B8BE7E2A7D96F6C7CF4F2
+D1C99DB03445398A8C83CE1F2003927E387FA082F24DA435C30FF690610927C4
+4EA49E5C8A8009D114BE98DF6B9C133AB3E1F245AC7FDDE3E09AE6D495A2A8D6
+33BC5F9BEBF2D5FA3524EB28CFBF9ABF95B0A0D9054AA8FAB3594D765542B28C
+D40ADF8729048D1B4AA3163E4383623C6FA70E94F774078BEC093385A1665A59
+1801B5F2B74CE0D480F53F10EA706917052C6C9BDA2E3F3ACF061CDD8F764545
+045B29669C6F9613FB5334CE87889DD5BEB65D31AA05B755B25361C40EADE414
+A571350147CDF334FA2E98DC7B3F597597D5A992BAA17E4C870E6BAA1BD5D9E1
+A9A9AA469EF6E86E8BC63C23A450B304441F318E901127ECFB29693F3AA0213A
+9D13235991968AFFB705BE513250BC865010E4BEB26E32F92FC49DBF4B87B48F
+705A428FFB933D4B4149BE87B501787053F7CB859CBE5805DC8698418D332ED6
+83998C7F8DA3C4B4467275ECFC47B79C9054BA42C7F29205B00FE79D7F3B54E0
+32D591BE681B9F2CF1C222234E4ADFD31990DCAD5BC28A24DD2707B1CCC67D96
+CD3C431409BA63FE2E361DD17955C9F10DB4E0A7A8185E98EFFA201A08263B21
+4A49531FA21D2630647720CDEC1BA122DF501123A0C44FF166A67723CFC0760F
+4DCA4DE99A1A5641DE07966C117FFB47D03655553E1DD0374872A48352AAEA01
+F53994F30DD1C231674AFCFECE0DF0E4C53A652F0D5264A15B6C314F2E3A2B36
+C0ECAAC06102DC4239C3A1BC5EBB9D4845EAF0F6D34B7F1AB84A9EA4B7C4250D
+6D549094213B93F0B45A0D0DE71DF74FF715E81E27749B8C2C1F8475514DDD75
+3D56A87D56CD784B5F678ECE7DA4C5872DCECFBB507AF499BDCCFECC3BB07CD3
+E086FC4ACE46D4797942184E1D9F93B9435A3B4E724AFF831D72F35572FEBE93
+0F858B54D2070B5F38891BD20A5D6DAEAFE9D4FF8A8CFB835B5C899CEE9816A4
+8C543E1B1D3B79CC12A1298963C816E0373FBFEEA9B3D297EE6F54C66A5F624B
+45C164E0B46BB0F7B6FB41C46FEC03A6DBF0671ADF9C846E6515FB907FDD275D
+FB15E502C2309D70782B4185B314022940FE3510049E054FC29A810836ACBDEA
+5822DCDFAA9AD46F104488AA5A2C6405A03BF96D08E6E308D78E3DB926008844
+389D308DCED07C82BAF8811292B637A1E2BC052602C05D623845F586BFB542B2
+2944A9C344B62F50924F12766C395299EB9AA150E24504C44D399DDE16F52494
+9238D6D23213E2388E6E6095970CC0EE5977B1C4D98517F785FC4957A1E173B9
+B86E9AF5D47B0A81956F1E5173D41CE8604E725BABF0219AF63597C137F20B1B
+5BC52155B8450D15F8B7F3E805846DB55CAD3D3E8E9B285B00EFDA4F4AA8570A
+769173E85B756964C2BCEAE336FDE5A391043F232322F0F2F4F5DD64B9EB4A5E
+B68E7063D774894508D60678FC7C82473A19BFADA70D10108DB51D78478A8674
+E636BCA65E2DEB154410590F55129ED2404DA190EA6C72F348E85ACB150793B5
+D8DCD8C0B56C07D35FA3B60DF0508E39FAA3E9B412B30F2BE01FDFC76B281396
+F8C8A74BEE192E86E605512D27C531B35F9AC5A7062DBFF32BB47DF9273E44D6
+3F547105C88ECC7257A2A565853035741218D83D4F87DEB9677356F410A24AF6
+FD2000489676E2B4DA9510412055317593DC4DFE03595BBF8662301F9A1A02D6
+FDF7DA61A6CC089FDF210A5EA523F0E301B52E3BCB20D33A85BD1E9D94947CA8
+9597D209AEA2A6823DA12BF7717D96E0319BBCC82AA84FAC84755D1B4846F73F
+6B7369760D1C22787DCA9419A174E413776463948ED4A65B374EE14A643DE3FD
+BF045EDC3D4ABE71D957BC893715868973B2FBBFCDB9FEFCCD6C59343EC096F3
+E69CBE8EB6B338EC075111C5710B111074AF3DDC0AAF6EB5A78B6E2555C05BCB
+A4B7C95070667B57D148245F57ECB93E089BE54353574AE5CA4049EAE8891B60
+47D2B971004C2C2D3E3F4BA197EEDAAF22F5BBD2E7AF4848221BFE136AED09D7
+F04BC4C3E221A96C40F1C16E5E36D75D18D7010B84AF7706FC4F6EC6502DCDFF
+E1A494CB342A601AC23E1C4DF5926251495EC97C73D1488055B0DDA236E63563
+5A71599C7EDC8DAAB618F22A7E40FFF9BEDB9BFAB4CE45C551926B5DA233A8CF
+2F806FB1C3B2CD9889E2F08661F5658686B5D6C32645C5E0AAC87B60AAF8FAA2
+8732FCA58DE655570BC55943998251112452C18F8D5CDB4B908F5B5FBEEC07DE
+103414AEDB31BC5E1DBDE51D5100F941C71EA6CAC36E44801FEA380C9D07C176
+9DE2B0F179D18E39CF19D961C1548A8C38B51B27D4B5D56A9FCD7416180F7D33
+354DA4BD1964FACBE04CF30C55C1FA3E9BC67DF3DAF88A9A42AEBC949688B30F
+0B4F3F44E9AFAD3F6B081A3A343ED355641232E267019A824C65409ED0008B59
+3294D9AE2FC18B826226E78D94321C73185F4DB401FD9393666A9F523C4763E0
+64CF3581629B01D611BD36013F58ED8122861AEACC63B262826C425292B6FA09
+61D160EB63A0945228A1002D4639ED6AD2C8E7AA2514F26A311A2D898E10DF7D
+07B2948D95F75FB9D0FAEEA2391DC08E1930AAA57772C07C6B315D28E99C6364
+B821C9764D6EC04592679B7F65FBECE4B03564568EA9F20871D2BC6D57C02606
+C842A4D5DF1451CB00F7DB08E3A73E0C27E1A4EEDE47EC14C772EDACB4AAF11C
+75BCF47618F669DA60ADE2E29A45118C7781E2ACD7CBDC3AA300088CFDECC260
+535C64DB399BD240198621375DDA54E4DB6F865834ECA58C8CBC735CD9191BB5
+2CB51AC6977959F5D440B461B79FD9D3299A5567B973C0118FDB1FD3DF0B7473
+11AC06915467FD976C44C44F917BE8096D13FAA7D84C63AA2A08EBB83D28432F
+F62EB307173A8FC920F49507DED6FD64639A3E2F39FF5646CA13495468FE0EAF
+5C48BECACA52B02D6DB38AEB1E41897C69CF19B9034542F37A5AD0220A007D4C
+16EE437AA46E2E4CC1B3EFDA641F1A12A5336EAD5AA05B63914EE34BBF2B151E
+7623989D0E44CFE4E664385513E7921EFF420CB230E4D6CD9C570E811CCBC458
+9A4073750F29672398C57967B00202148C5151933115844EAEC020BC5C33AC52
+1DA5687E4C25E18CDDF393D1D28286127D6256B9C6765528F650E62C8EDCDDB6
+52B5BB118B252338BADA1C5A69705B38426A997C6F0110C47E20118093201DD3
+6642B5A8BAD879AB8B71F0CAE1324F0F2F4DAAEAEC1ECF83CDC4B1E5FA6855D2
+A1DFE1B61525610A78AF9C123F06BDC6670CBA627EC010186834C1275245F84D
+69DCFFA06B6D92E5E5667432FC458AD0ADC75FCD7F9E13AE880F4B8D21175BF5
+70B8336F297252DC49A6A61F8916312E184B9A9E9DE3F9036AEE3EAB34EF2162
+73BCD6CD00C227F789E7EBE6DFBA263761FEBEC63C903B1C3C338553A177F1C8
+DAA799A8511EE2B9444085AC8213DA405F5F7E06FA8B25B14267A70BB57CD9B6
+51AE2BDC6965F5AD36C14E263C15078FCBC55BA29D6D250893B405CCC203E2CE
+344A8286576A0CF8B3A9F156B5F85731B86D80390AC0E876E1D7C2066C654CBA
+E9908AE87675F3EE6BED53475B14A126FD035CB487708FFCD035D956B1CF60EF
+3F30A533DBF9557067AEB4426CBD4C00DC063A22D91D7DAEBDFAE8038F038265
+8DA1C6DB48F512016ADEC0B2B811C7796609239A50C4834B695DC12205BCEEFC
+65BB986DEE40CE3F08D90C6D61AA0287F2FF41AC8099C1A8BEC9C47EC396B9C0
+C974185A75B4E2F93105BC030E13748975C040CF58D08064DA893A1A7381083E
+B42AA28EA11FE68D6A841C8FB89EF8B7DF49962183E738553A6C126F02726662
+D5D5A485E1F08EE23DBE12037461267FFEBD1522A824A6AC3B37445C1C880FB0
+D5E72E922B2D03455071709B65B12C87EE3C6C7BECA4ACDBA5DC48138CDD23F9
+F3C7393B49AB2ED52C0C1B9A0B0BC33C874EFA21CB7BF280FEA698AD5AA608A2
+0FC764E7EEBAB16F0749BE4058105A3CF64B0D86F7A73EBF5CFCFF6AD0913760
+7447C4266120B1560B30D6CB3742DA793A8F21C740477977CE1330009C7D8D62
+1BDD10A2979E54840331031ED61382403DA99DFCB535B40CD4F9527AC45FE687
+5589D00B0DBBD193B3ADC51E3EECCE0679A1DEC3DA0BEF731C934AE6FB461A6D
+F8BF0811FFB58560A6A69CD6F9BF43FF38679E200D1A9AF3E63280C57B69E409
+96D8A5451711BCF1030589FEA4FAF6DF333B6CB89AAAEF76CE73B290BA3AF9E0
+4B1A2C7C3E11CAD5251D63CBDAE20EB210AB7850784C03DFB62EEB236B43A5BA
+AB7D8893B39ED6CCB179508DBAC4A0A0B5781DD6AE74CBB3EC4B0E1E65CF9ADF
+BF3482405A40C60AAE2C46C3C8EE96C2B7F5B591422861DB42F013A8D2D96AB4
+32950BA2906B425FE412C36AC87B76018BE9943CBD3428F92270EBF6448D81EC
+0C5534F1102E33F822804B5D1505F0F15ABBD7522482B4FE50560645DE5A6AC6
+604E12DA1785D63B20F2CE08A488A93D58D8C53633F2C7CDB26E3996A2B3843C
+AD5E38EA29CD5126F9AA8DA46ACF8A0A8ADE7D6314291B350184BAF524691661
+F020AC43AC01DB8B4B85D028639BCAACC41F762476A14224B76AC5CD27468418
+0ACF31F6FBC7377AD4214CE763E654CA10AA3F0D54BF826CCA3A0FAEB0EBF19D
+FEC106EA5185AB36E0C37075D7ED8B44834671228268F3C779613E450E5BF846
+4101E658B689D9ABA56BEE2179EA32824F5A352F14F387707C57A8E0D2DDB6C5
+6809FEC11FD39200E23D6A6DBB8FE9EADF6B87210F9BA67FB7F6E22B695E0E5A
+3C29CEA33CE31566F67842C329B4257C136F69D5EBC3037AC1B840504962C776
+A54347B0D0D9E6F953F447D44E968A8B844BF9467AF7CAF10F87F63DCC746CE0
+3DF9AE63BE98859CE2242E85655A7B893D9DFA23FB483FB73131FA817BF53FDD
+DF53A912B8AFCA72E3BB6DEA6D1C50D5941CED20977C8972E3A0B9628CE21C93
+152B5F81708D9841BC57FF248373385548127559FA980BE970F2F050C78BC044
+3BB79E5CFB7A251707F60EB67569AE3D3D19F5C4AB579F555B306A1B3C84046E
+42B0A86FDFEB8634CBC6E49BD3E1F26CF72B5D3FD84E7367A7037F3410F94B7F
+8461AB4EAB13754E347EA08015E69C81062277142E582F3E9DA3623EC2E0787A
+9A90919FAED35E0BEACCE6B4EE36781229D28C28DB250623FA4C8A74615CECB5
+EADF596B9C27FB18E56186F0B2BEE42ECE322CCEB1D6888608F08D7D49FBFCBF
+C06812B19B58F1DD9515B0F721687D11D51B259764470DEF325BD9EE970A2FA1
+D96384B9929BBC81B47A199DD0AA5A36AC4D8D77F2F012FD7EEF0DD0B0551749
+E5B6792C208BBE172DD6AE7C5EF72FE436513317EDAEDA2ADAD2BD3F597D2C5A
+3C945219F4FE910C4857B04BCC7DB78788D390CA7592D59057F04DA2B8C3A294
+1630A8EE7F290A7EDE6DFF2C4A6C1DBF7E902976B64E70A90D6DC0BAF4BDB422
+FADBA84EF6ED537967AB822B841E1006A56F0C3D8D543EAB2D5A580B46F2E373
+E893C53E1E97FFFF27136444077D66011DE2AEB2CE3BF39DD3F1E6A3EF16D4FE
+6A629E3D95C3590A107D47B61DF03349E2FFCBAD3A595820BA17469780CDCD4B
+F6D41D51755D03E5C34920442A2C74BD1D734B0C61F7DF0C9419211270ABDD3F
+D77A41883A2469D750AA735D03CA8787F542FB41998D1AE274A76CEE67C96C32
+DDC8B904B3B91F97860BCA69C0BE9ABEBC87D4A74288A49CA23BA8856EE744C8
+3132FC637B88079533C9CACAB512F65EFE97D8A800499360063D36CA2B699F60
+1A980FAE4BE6484C4BA3418A5E791BB50C91B0AB123A3AC16454A7349AB29F07
+03FC6CC0EEE58B1310211F6B6CB9119E2FD5DB577ED40D52EAC8E67923D76CA2
+8B5ED4B7728A70056022356D073736B0649392D312DFB3730F67480D7BBCC17E
+4972D88CBFF39ADC3E811D2B5843DE74FB7A46299A941F7BD55DDBEB7FF57900
+FED0225A186BF7599CA07F9089CC1BCC87C7AD1E9D122D3C5D504F35D4CE37E2
+F63D1B34FBD622C8786D62C6F9A488A50032DFC18AD7C31FCF7B8B45833100DB
+4BBBD9532AFC311DBBEB50C4068A1DDDC3EDD15327E6B133D94F244D85E87B90
+5F75D81AE3561CD61BFCCD0E3E74865BFBA80E3480A900C69C607691CFA8BA35
+6030E4AC4E1C8751430B673B907DABAB46B382388B1FF6A03A21AFA5ED42166C
+1B312E8C2002A0DDDB86175E89648CD90FC7CBFF906AEB986993A0D1FDFCA3A3
+2B35ECD0A3A49BBC41998B55732ACDBB8300E35410833D007863C2594DBDAED8
+CD82BACE490669A5DB02C6281512B13F737787DC5A3F1364FDB8A786FC758125
+BD77172E23B7217810285CFAD044ABC38F1BAFC7EC4C423E4B7793F11117638C
+C4892C0920407E1BDDB72734168EDB12C60A413131AA66DDE6E6A57DDF0BC2AA
+08330B9FC2E27EF6788A864938F2C03FA776BA143C75A4CDC519170048E45D7F
+BDB40D0B6B15571E36D0230C2F7699A97FC368A4B1FB50063DD8624ECE60CA18
+4CFC21D0C2DB8DCCCE68E458706A8C0B400F41BDBF14632C2CDC21721DD565DC
+2795F854D7BC26B4B9BDDA5D852BAAE580B4DF695DA5023CDFD91F5A13455D74
+F3701493728390E8F9CE9BA8A936D6EA2C449D7872F6B6A8C33366E5FDBB3649
+CF5FFC12A94D287DD6F3DA4DFDD56854F232E0936B6B9C198B08EB1CF6CA130F
+B25808AC3B2BDA7739C7A4D04BC913D6F08709787B5A4E0EE8FEDF6458828A6E
+9F07124B3287B132D9937590DFFDC46187E546C6E433A5C51D758E8552632325
+FBD427388B0B32FF0096EDB9C6EB25AEE5D89B3BC564D2F52E0EC012F1BF9DD9
+62531273AF89AE5C542CC1413F98C5ABAE0235E6059E771D58CF565EE30C1E04
+8C6C5E5B4C737C05FAEC0D8CB73F992F81C0F3D41D7B7C3CAF954E859E2596B6
+EA7FC07624AF5713476E90CF9225C6A6B94377D11DBAFEA260B384C50C1AEC60
+92221E71E98498DCF8124600BE535E1F4725AA6266083C7DBE4016F728B3444D
+7DA2F341AF7344CFA948E069BB8F5A671E0AE00E4707952ED2567E8D6F16EA89
+DE827B022005199F96A710E8221983A26AD73F93CD92282BA0EA2E6D8CFECAD2
+08960D4828EB13C37032B1AA7260B90561406B8CE651196D083A713F93F1818E
+5C184FB90C89320861B463EEE020D20D275C5BF28F87D1B0BF3D8F62F3B55B38
+D48A7CA48732252E783405BDCDBE41F69B0F5B91023DF4AF0CD5EF372CFE8691
+A88509183ABE61AA3DC692CAAC909570022C8D012C994056FE39DE91472884E9
+ADCB12E81D46C8B2EB036BEB475C15B474FA0782F31392047E90691CD1E265DB
+2F529884FEA366643399548CCB5C9608DF45EAD3496783E106B4032F0ACDCD62
+8FCA1DD7932D390F0BA94FE1E1BF77C39933373011F57CB8F2EF9D524A4CB045
+EF9268A3B0473CFD6EFBB1C8C2B8906925338A3549BFCA8E4DBB253A7F2B177B
+E75FEA577606E0B3766D2BEDDB6A8C1A7F8FC1475BEC6FD536250594F345EC72
+A777768A65E60BDAAA60F63A910A3DAAA2B1C3C757C1C2514EF56000A0AF550A
+874F9082F4F517872A1FED8CA1F9BB904F911054C61B367ECA111A2030B3D0E0
+06686F876BBC266158E4958DFA3A69C4040879153FD1FCECBC465EA7A4842835
+62C897778E700B2EABB4AF731D19B47E7C2FE3FCAE9354AF7622E0FB6B919985
+47B934F9737251F0F4B7697DFE50334BD0415CD4AACAAB291A93D510EF08D45C
+BE288F4D100A299AF55C538A40F5AED258242E23209297340180079AA8BBD084
+F61520D74D6D4697DF149D82B6CDAC535DC15D6696B6337106B853EC27F2B678
+5ACF30289F2FB8D04A23054ADA546548DDBD1A1F3BBA5B1FF0A363C6F51F9B86
+B493853AC7B461E0FB63D7131362A1E936184DD672AC448C6A42D28F4F46EF10
+A977FE1DF50D3F1D2778E0B8064E1DB19FF9802B47C8831A15675CF8A3192922
+D7748FAB36EFE9FA6C481AF87ED4D60F56196BA85702DCF489B585F5B2CB6A0B
+4B8836AAA718843B8D5372304F232A53C6D22BB038CC13D167BECBB79C153113
+F1ED881FF9F0836AA6C8DCE7AB3F731ABECAB9FF68EDA58EAEEAF81C8F00C613
+51B18BEEE99A6D36E39847D375CAB2D56140FF111CCECEC6364C4FB15C73E6F7
+16BC96B72C0F2332A05D46A3681DDFD7225ACB2F6BB2C17538950182E8018ABA
+A3ACA87D6BC2EC0933432FD2173C0D0517996307BEA8DCBF7CB50C3C2A75D382
+C7F7F8A9D10A7BAF9522E477C60147D12493AB1518174506F4E7D6E4536B6F17
+82566E0292885EF9A5834478E7E80562F222BA1545559FF812510EF65D25ECC4
+B11CF424A0EA4D5607B98AC1EF8D2596D9D8D613EDEEC871D86F6321DF5D4131
+D3692F2DA027E353612594F820B61E44659E6BA28CA337295D79D33CF660B6AC
+3345FD488B065CB9B96FC6421DB9BD54D8408D9100C535651FE13415888BB95F
+769877EEE6354404E181467B7BF7B9B7389AB7E2BE28258C49AB23B14B7B5F37
+CA3E05A9DF28AA94820855921298B1728382C716DA03B26C91AF9A0D3AECE0D3
+874D825FD47952C284EA06EEF30DF56B1E5B8475FC5F0E023611D4DCF1FC0712
+797D26412A999E071C1AD07EDFA87737F60DAD36824217A1FA558F7323326AB0
+41906CC81B1301822B548450B3D2FB363C28899B2057AA1B2EDA6A86FA56BAE8
+F528863554BB3ED80E9A050BF41A4D5BB4E9A456851F3C366217BBD9CCC809D1
+FB176299513FFF877F08E59EF81B3EAA22128C1BC99F8C645DE8B0E7EEC1C390
+4E3A46A9DB2EE38178791E433646156EF4B5DC09EAF4F9AE6333B3C86A79447B
+5B0F8B1F434E3FF24D0318CF94E1BB032C2E7C89B331E89C30077DDFE482E9E5
+CF95C99881248CF39DE5C007802CDCA0F61D568B86C61199DACA1435FBB91906
+0C12873D667F5AE3EE933BA26ADB7DB635CBFBCE4E242519B350E2F1FD4679E5
+B040CE69A0468D5C98B4E9C903019FAE112BE2D2A1147258543BB5323EDEEFB1
+EE0A0088C46BA82FEB4F9253C67B3AADAF6B729858361F78FED6CC62E864A463
+1EE052C054033EEF351217036719DD3160961AED07D70FE180F3980492F12F45
+FAA8070FFDDE2A45F7326476BFC282876A5322393BFF764BE7CA4AF926581B9F
+629BA4B52B8E5F6DEEA4715F50C0CC1C0B40C0F55EB174773B9F293422C2674F
+61EB7EE6C9688912F25CB7EE73818EE1E0BB2EF2531534DCBD479AA483509E16
+5E80D3CB0CB9DF68F49AA4E06B3B2BBE2FC4EE900CE4C893A9F8C372DC6C5F23
+09CD41F346D77C4CC6989D9DBF343366C7B80A94FCB4B14BABD9609786B22E41
+3BF9DD28D00400E1F19E9D848E22F633441968A4504DAA20CD19886D6B2B42BF
+FA85825701C0B19A8D226C491581A952D49398470BD11862DA3CE743A7D14DBD
+03067A04FFF2038EA2713458577C8B278ED680E074DF0F5EF16772BA04A27DEF
+B2A085E2813AAEB5DCABD32D91B2FE8FCBA6BAFADB2CB4A53BB0F41F6C2728C4
+D050386186DA75AC29747EA59E5DCC595125912F128CF5DBF16FC6FB608AFF3E
+5C4DECCFE55B6777BD6E451403DA8E5B06659EBA3C3856A804D2B3675C293BAF
+ABC3858835462C198ADC14E9AB961E129D7CCD224ABC8B6B0EE3AF0529F0F0C4
+B258785229065E03EF206620273A25A5615E712E148C6CB2B595146EE5E82027
+F5045833F849E3C7B72F9A692F31A00131B258A1548A7D769257EA1C0A21D337
+6D46CB39DBD9B1F472CE291584046B5F9E17F26FD5200C04AC60FD24F014F723
+26C3F650CF7B43980516A84874D237065AF8571BB09F2C183D3EAD2ED132E6CC
+90FBDE25E191E00A6A91FD86366E84C0071E3F18FBE1097030066A03B5647CF9
+29D5428E901D489B11400A8062329ADB0366FD30ACD5CC128008EE92BA7AD4A4
+F08AF21143FDCFD86A1F35882F8E78B40F08F62FE34B3631F4E50C1CD2D967EB
+9B7F6B38020FFB0EB815F6C6ABAB90302517BF26B0470D8251434EF391BE8DE5
+0583CF1238B02B71A7B0E73EA0E442E4AFB2A9361BCCD36D49128E5FBBAEF4C9
+F6C507EC9A3C855A3A8782E41D69C7FB2044CAE54FD9F34EEF1C0D1A73A058D6
+4CE8D4A159F1F8E7BEEB017DD998632D63E866D10E85BCCC74F09069587F4973
+98D5059866AC7266BF2F98B6E0860A7E775A75D24341D22A8879885A06536F0F
+25FEDBD08F501E27D183790D585B7105CDE640217497A2BD3B6FC74AC021DD77
+30F3670A901529CC185932798AFB945D732892BB6A3F7F9394A724D3CC67F397
+BB5C326477A9B9A0B6AC88739225726024AEE7DE582BDAA642C620045D0DCCCF
+CF627709E043BCAE567C6AD6CF380211636891A1EC49299B2DCE5CAF30D6E640
+209EF3ADC91832156D08571A415F1D9A176DAE1807E058B8E5BE718B8A2F6C39
+30E68BCDA20C3453D11A19159773794003C0A18A1E44B3E0E436962A82F25B94
+BDBFBC27D7852E2A585F8460525CAE7D4F59412406E55A1983655E68EC80C0AB
+D011D9942F3705795BEF6359FEA2CC03C3A17945FE3E404698834BA2C2F4E80E
+C581038F866EB3CD0720FE71C8EE9E5BA48C1AB81741FA70BCA3EDFC2C15C798
+20B5742E1EBB69820D0744AEDC25B108592CE9FB5E99D98BB9ACC5290204DA46
+E58D5399E4F3BB3454FB6B3D747E87C2BAAE0560DC3404D45109FE0871A653EA
+53A851622357DBE2D2F57EA86C6391F98B0A46B4B8298B80F2BAB62C375C7616
+3BC47B2833C33637FA08BF8A4E8FEAE96EDD8BFF0EA81669355B55C16F314DB9
+82C83C9C18EC983FEC9C9575FADD248B0D780996C9F4056F121E9C9B15DE33E6
+7B25DA90604090B85D2C7EFFBEF1302A23A3A843273959B069F91E9A29960DBF
+BDCC2A80CF498C9649B741217F3AD9DF46EF0595B9E05625DFC433462EDC7EF9
+4C7EB6BF4F91734CCDDB803A126B3F1975FE2074551C45EF0AE6097BF35E3717
+AACB2D15FB3817F7E35619009606864B00AF7AA9870F7A28A9D4FD228368CE66
+043FA9FD8558E816E7E80537395F8534D31516ED689B815679465BF314492308
+1165547F82F63EDE8F5FDE80D25256FE02BA5B0EC132F4FE6149AF9A9C9CDF83
+36AED12D7B0B7FD7EB1B384425667B95B66594805CCA6E9B8571CE3714EEBE97
+8DA11BE2EFC617574327670A8141C446077073F3A5A0A0F0BDEBB051B4E24E21
+4801080C02BDDED62D2BB66D795F48A73D45F78E66CBE58C05EE49D8FF2A5716
+8FB6C1E76BAFB1FFE19CB832C5DB38E63932130435B01E7E88BAF1F2011231CA
+EBA78412421D76A03B90C84E03568770BAB5D0DCCB8E8BC60FC31728CB272DAF
+DE1AA58EDC98AA73CF7229DB2CA1752683398337820505C30B675D0EA12781CD
+ECF91E7ADBF5C8B8ACFBFE6F6753BAC056E6E201F5433BBD6D84B3C1964C8A7E
+A29A4EF641B52F17379CAEDA5E6B8078E6F859CCE59D700DB8D999C5A362C31A
+7991E1DD6AEF84CDFF3A847598F648FD82BBA30501CFC704128747515DFD8254
+257950A56C1AAF908E232B929D4A8026953385CA09BBBAAECFEE884070FE292B
+C1747F586DB3AC08F30B5158241D79A5C4B6203DA7679991AF5ABE0BD6F3AB7D
+037E509C929061C9B102181B37AC7E27045D2ABA52195EE922DD553F18BB2774
+8D4BB1EAFF084D308D6C1A1C93C43C0E9239D073D1BD0CEABCA2F4F1E62D167F
+9424742E3035EB356DDFFEEABF866B87C4852775264179BD528C02AAF2FE09D1
+B275FE0C37B35428748F17DA26012B6A5537F5903FB590DB720B017DDFAE49A4
+BF43B50E60AFE37C09F6950D0F7CDCF8DB0F5C4CBA738C75FAEB67DBFD7B67A7
+3A96A529D4C9114006FFFDF09FB9C7EBA0376E3FC18007FE709F6B92C0503235
+AD86D787D7D436F12863E785C196F386DA62F2460F29FAE5281536F72343AB6C
+A673A917CC5324F8B0968A88A22EFA9E5D8701CD104639EC88369485708FA2CB
+1A2118350D506E790C7EC602AA62AC2EC52CC745C75C24AC46666D134F586F49
+93B0F607D6A7B12CB6DFD19E58A2E466EEF67B4302825FE9B31441C462CA18B9
+FC915E336AFCF0A3708A46F313412827F7345C6762A286F11EA66932713E33CE
+94A8CC55AF1865B2DB7B3552290202D8BBB1C25000AB35
+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: (<http://www.ams.org>), 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<http://www.ams.org>\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 43 /plus put
+dup 45 /hyphen put
+dup 46 /period put
+dup 47 /slash put
+dup 50 /two put
+dup 52 /four put
+dup 58 /colon put
+dup 72 /H 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 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 119 /w put
+dup 120 /x put
+readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA
+0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93
+51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71
+7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551
+E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078
+0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273
+C01924195A181D03F5054A93B71E5065F8D92FE23794DDF2E6BABDA4215500A0
+42D1A3D0D02C0C98BB1D6ED0B7791274C38B038FC7921FF1FB8FAE7258C09259
+4B8E1BD9EDCEDE9ADAD9BD9598EEA9691589649A9A21539161E374075BEE3457
+689F308A4A7AC9F2FE4B301A6C36B0442FB92E3B002623493DC087800B5A0521
+0DB96A23175AC584DE166F59142779F26FEE9783E28DE49FC3A8D6583EE63FBA
+610DA773CA18ACE6F64A4867A1A7817120ABF9DE4D17782866E6CB6B65A9F6D8
+3667C8D3E61E5356E35343FDD4C6436DF73934470916CB5F0ECEA6BFF092E735
+C7C355B56189D1DD5715EC97E50145FFC17BB1497315A9585D713A7A6DFC7933
+995468EFD0F59E3C15865B87925A3F2930E20D5A35970E2C44F1629FA16E00EE
+EE21EFC50D49F5BC02300D0A7BB85E649CB4E2E828C8B1C5469463013E71D723
+2CB11BCBAC191AC751A2AF7FC228395CE9472DC1809052012AEC2CD66695DAF0
+4CA04234F0187F4116C93F59A7F1F8123DE87F111853B785A20CA8B49B3B0CEC
+B11AD345E1A11578D2EFEB0536D125237086CC8CD9F34A5137AC5DDFD8746014
+D74AAE8239B81ACF65F379CF2153B06A238A2D767F294CAE0D79228F0B7D45CE
+510AC9657A1776202FEF42F96D476E7DF407786AEA12DEA0013D3B4C5D0640F5
+BC5BB72C34066270399CE595827175B23B25072723BD24E07F6BCD9EF0175DEF
+93714BAA53960F81103CFB731CED4A267B53727BCA3C97B0BA5004055D4EF0EC
+F725658E53AC86E4061B489AD4154915C3981B3B703E1E2A8D390CCECCA99385
+45EBE35441B062D7D12DAB2B31569387187D74A4043FD71F1C6D352EAE0F6757
+4345FBFB6DB15CAE47CAC4BAE47AECAE5FF5EC19057DCEFA1B23F47364ABDF47
+088A7C6A2AE26B10459B6D41CB69182FD1472F326CE3A15B59255D1DE3B616D8
+9D1F12561038839781E657C896B8C58A32DF5AEA23732A0966D96C68C988ED7A
+09B7E2C8F9F3D0D56879764781566299A4EDD3588BDF70E3D924D25074F30988
+E35BDD827AE4D0B4A06F55A9976BF0DB3C0B1D09CD08E8CB168B50617691638C
+0EC1A791C228177D4FFB021EC3DF5082CA3487AD2EFC8DE9466A690ADDB4C52A
+FE2A6DB4CC275CD33D9136E735279FBB2008D59E667905EBB04326EC33C98B2C
+94744B7F540D86E90DED64572ECF1EAD3A58EC101642B245A9C7232DC8FB8741
+03F97883BB32FB955C22F878FA0FD114451A3B3859B0B5537AFAB73AEC7DB2BF
+409E1FB41D473714F6BEA73CB085139879FA31710E01915C2938C37BAD6D7D71
+45B897E00857D3931A489EAC7B42BCE4E65F73F67FE027CE482DC47598ABCB95
+39E98DA8ECA3E23F0799D5963ABA6E2984DEACBE7B46B40ADC6213E0F4D08971
+58F68C946C748E4B4217CBA2391BE2086C9758F4E32C9B6413E48D84D33A6E85
+84747029C0A9C9B92841D217A902BA8EB333999D62FDA9F82BFC8ED11F67988A
+0CAE42182E414A9766AFFF4B046A09D476F8E3F15A8C7829BEE982D8350BDF5F
+F215F2BBBF68D4B567BAB798B9604C79306C475926E9FEC0F07A99F43473C6FD
+B15AC29C3D07FEBAD1BAFF75AAF2FBE94F104F1DBF838044FAD94B661B06AECD
+D9AEBD02B60CA4546DD6B5B5C1A3833ED07845671CEFCA8955CE0DE5DB8FC93B
+3306683CBFB8E5B79A863DE78D455DE9D592043C2686F88A43140F8B9F3B553B
+7047420E93E753829F8D47AC7621CFE3626F271E31F0019CC02D0B57F67BB47D
+8CFB63E902EA3231C00EC66EEC0D30FE8394558BD3535C888C4CEFC6EB72E737
+712ADC6300162D5D79BEE0CA1F6E4127A0BC90656C01692F6D82C85550AFC97E
+C2693E379160FDB9636FA41AE9C75B7F6643B05971C6D67CE30971D590FC07B3
+E0B36B4D1C7F25110B5DA2130D574FA292B47322975A2BADBDB39AAE69BDDBDA
+A880F9AAB580117708C79204DFFDC08BF4A48919B5C22228845CE8C3109E93AC
+2479E523B8A1C12A6E541118F121DC6B4EAED83491A03192D5C3A2A45D1A2467
+757E7B377C635CF5CAE11A7CB49D49F3A1BB2286090B5F0E4F89869D1771D50C
+54B5C5E091E3048A2C194F0ED00DD64FB95BAC6FA9D61ECD093ED416DA3A4981
+DB07CFF17C4F55C62DF628EBFF06FAC3F3D3F91C30EBB34052BE1A08F5EDA4B9
+08977197950A282B84E21D43C64BE3AE4BCE22C70E7D392DE09D89B7F23351AD
+6AD37225C12BA79EC9951F5DA1E505DB26200190ADE0E549305B7530CB86EFD2
+A896F13A97E51754F70B609CB4511CEFC38BA579C071E9510A49982389980DC5
+336D6C4A2DB100DFEC4055C7AA9C55880F94FBEA9EB280BEF66CB8E1E38A359D
+E5AFB12B540CD599085ADDA7FC2C72E7C873015773FFEECA2C596B75BC39A3EB
+3C43FA2E53C0D7993042F3D652BCC483E48B7F6C94C3FF6D38E276086A6AE67A
+E5A571B9C72E0D7824E0BC2ADF51A393B9E334649F786EC1923C854382B89627
+1B9E701AE5A6C42E672B2C6A33C8BBCA8F69B9061E787D6B92183F20CF4C3903
+FF5417427B84798C82BE28D2C81624E3920CA61EC9EADB364B5A6E50E49A1A72
+A9A090A1FCD84814B8B2708AD787D2B5015DA1305874F58C5EB62F843685FCB6
+465FCA80176CAB2B2FE65E0A270BCE1E3DB97564BEDFAE5CA44395A8DF4505C0
+3E103CC3B914359B2870DA6CD30382EAE8949131CFE31E9E75C3E47A3834BB32
+CF183D4A8B9001710D0A11390C9DAD116196568591D38C2AF4ADD852F31494EF
+573462759A35415900360882739789D6B89ACEFA251C5ED90ED704DD7C3C80CA
+9F6CDED69537D201D520C99E69EEAD5D3C0EB84C166660B3C190166D93EDFE6D
+15BCB6DC5CDCA825E48D33845CC2FB15291AAB823F25CF8BB0A1EAED8BEC524D
+D9CA016027141FAC9D35B64FB9C224552F29EF6B32497254E319090E698FD8A5
+15491CDFE1B988C79A0E3B9D01E12FF084E9FA86CCAE02A3EE6F2917B61A2CC1
+64B8CAF309D1AB48A34227A7729DFF99CB6EC282E3FAEDD2673779AA7E4C1789
+D93FDC37FE95F087C5F88F53D30A2DA9C913BF205FC6BDD060A40184F4AAEB3C
+D080D63B89CA3DEFF310D09EF0A83F3914BD5B7932980ECE139EF0313C20B4C8
+576EE0FE3F28FAF4D3CE7CD0890BC824A85B8EF4636BDF1EF1BB519F93D36540
+ED09FAF93FD71992CA2CE2E83F5355162ECEB32AD218092F45D5A61A44E67135
+EF0453589CECDC6962D0E8DA7E7567603BAF50B2C8F1CA65EA5320984E7D69AC
+9A7D3D7F92565D79E8C9DD2D92CCA7DE9CD058545E9F98AA47904D70E1897099
+3C4C852B3BA131DDD348433C336BDF5FBDFB62120DDEAEB3255E3207B0C84A0A
+1ECF9EC869DB9BFA3693B03FCB27C5A5D3CDD62630DEDE91B4DD5B9784BF0BDD
+FC6EEC3FA7ACA9E15FAE47CDD9B7FCD2BF0EFA10716F08C0AF25FF67CB6F9598
+C607D2FCA452417D2C69DC808A9441A66492394C3450BD30632AE739EAD654BA
+4343459CA36B6D5B2C12C39495952F2EF93D82C73E33236785A79609E260C4E0
+CF3A3C950DE71DDC3939D42DB1CB1CA917CEAD56979A70F8F3B207C805319FA7
+3C000AE2B21D711A6D78C7BFB901334DC06F59EAB6D94B507734C27971F8458D
+D00193645AB92FB8FE163D5C51AE4F40BDB4F2C51691E76EE0636F071F37AAA9
+BA78BD12459CA499210EB0CE2F8BD317387797C33F5933AE7A6264DA06B4A6A6
+1188326147A16B205D1F965872DED7D8EDB3294FAD2FCDF0D423329E9CCF879D
+4E0B966D509F45527F7609DD09694D286F6FF7535EF8971B7DFBAF608A19D442
+C133207EB1152ABBD11C455D0977F66A9B73E51381D1CA4B66E87C0C7175A63D
+80C699A052F00C41DAEF42E7A40E07B1B14107AB0787E24E17C1462960E3C54C
+AE73BE4924464FB177EC62F116B2822842541543EFF7ABDDEE197D6BD8F8D4E6
+59175D8C5957550B70BE775AD52FFF6E7C00DA7CDC16E1DF7446BB5D8FD82647
+3E9F87D5EA365C82A2D991321ECB14A9E3AEADC5A56665DF7072D6DAE402BCB6
+14D92B17F9E063E4E9D8D239C91F5C7C0BCD2FBD936C9D4A0B57659420343B59
+B395BBD1AB5B6003F653699D57E7581F9813CC98D4F072FB78899D6DECC42D34
+F2787EDEA64058B46C4BFAA2BB96E9BE5CACE8D91E4C080ADFC0FA0D4A29C6B8
+54FEA9E11DBCF53D9CA40A21AE5076451EDAB3593E56B6D453DC8EAB8C78B588
+34D4C4F36861B5649BC1E9F3091E704BDA7613ED45C911DFECA74EEA05165191
+825F95A947CAF382FBAF01F3B8B041ACCDF39718D7DC5BA6CA12BB20EEE96439
+BF2E2628AA3BD2C91998E6247A690FCB0CC95F286F427345CC4F1115BA3A6E54
+4743355F2CC991CBDFF5725902C1F5A6DEFDC8638A26EA456C33C27773D6214F
+66536CD2E44FD253531732D5A8C44B336B1BB47B0477350EB8CF74889B93402E
+2356A9CAAFCA562315D8E0B3F42F08932CB87BA2499A875AFA08D11DA73B38AF
+F46D03B7F639A8D7BF88CF07FFF4E91716DCCE6E2CCAB60A64D5E40EFD8B336A
+1BFCC4CB04F49DE1FBDE7AA5B2092A6EDBD913D161A3271AB6411622D0E14416
+37F81E0102F5B0F2F9A2B27819E4BACD7C50E29D6291AE5B0973C657761545A6
+741729620EF2BF1046B3913399C10982EE5F4142CF461EA31042E432CC79A1A1
+39C607D22E45A6DEC008CB4BF6007CDE9DD5802B49A62C8E02A6D448B64177CC
+887AD71D171B99E7ABE2085B37D90B3BD8513995D9A57F53184DA474F6DB5E49
+B73E04CC214EA5398DF7D7541F94E623E8687B511640457A48A68E9D9D6584CD
+15B57CC044D8091C771D175F2EEDD411099BC8F7B4317DC503BB5E405AEEB526
+5E6E1B1F2705275D274E012A98F66075CEB90AFC648B964DDC0E9C4AE7B24CE1
+80B051022E5781A533A21DCFB97893847D685137EAD85BA708A7E118C72FA839
+A9E460B5D17365A0AF1F53A98319FB64A5819B087F554BC056C4BE44113A5404
+BEF759F890C1CA5E7AE156F4F8106FDB4F8DFCCC640976983EADB30976344048
+2A86D7B2AF4A01CA736B98D52ACE392AD4BECE7E61C710B08B66F01857CA460B
+B8376E257113E10F6DEDF14CE2A4E6A99ECBCD302C36CADB713D849EAE9EB598
+F29DC98531D793B79F83091F9B136809E006F34E423D528CC4309AFFB3EEB47B
+9A9DE4D5B25CE953345C326BCBE2B4912641780637783084D3D12693F8135483
+CBB0AC4EE0B5610D7CEB7DF205830BDB9BB404DC1B28FB0824CC187B26C19A91
+DA0025EC739BF3993700101D042DED86D67F5FB87912CFC51AA7DF53F2162D62
+6314A2CE13810D0B8D81F45771391A236422CFA0F35F7A0CDF14ACB2724AA57B
+7C2C28D53029B1146558610E0CFBBF72A85AB9BA308F846228F299F13F68E8F7
+D963B2EE9EF7D4C21690632B640BDDAD0556EFA4EFBF035F13377ABB5CBC280B
+9E0C12AACB153C93351E5BA95A7D149010E204950A59C7FC6581D9703468C1E9
+EFAE37E7E6ACB892B3F8D1248D9A4A72F642FECC5E0B25C15EEB921EDDE84D12
+0E524FE6133C4921FF4921242392C12FBE69744D53739F7E849C1B96C4020AB2
+1FF10DEA608F111749E2FBD8DBCB17F353DCB3075B4F4B8186963EFE95A76A10
+85AA5BB6DB4095291974221829A8E436680F4860E01C3843BE5BB3101D0869C0
+EFCE08D187BC04F58C7A450A59093680A0F09E8E3F12DF5223E7EAFEFA01978F
+D8354753A68022CC92C71F2CA732DADAA8A466D4AAE5999B0DC077715671F518
+E6277741F44AE798EE50DF44CCF71FCF8BC71F76374005FEBC4883C6EDA854B0
+88C0C2B476709AA809ECE41AE786DB1A32B3FBBCC14921673578D3514C8CA842
+E1FF90BE33F7B93ADF6BFB8B1AFBBD080783BEF056A6BFAEF676F7BF9F2DFCC8
+01D255A9F0391951210D60D4D4DCA93AA858B38C0D7B8FD740D5FC6F277C2A68
+54CC2DE1F40B6347201FCA2A0A91822708D820CE645C3E4E5A09FE25721AB33A
+97871ED448F38FC5A349D81F402B34461D840D5768BFC6849439AB6115104F78
+B87115B1DAE12542EA898F86ACE247709817850B067F537E6137196101D46DD2
+D842EA03EF4501E34074E8458E638ACC4EB349A7430AB035BEF2DD4CE00554F9
+18F9FE32A55AC1E7E50D64AAFDA278D77A7149C59DC5B1E3064A4B281A54C9CE
+A5EA94ABEAE4C6D5674C208ABC72563976487136AF2E21F835BEFD232D7F0D13
+1D19932367F51D5379934DA7F1635AC51EE5CEBFA63D4D32F018DEF13624EE62
+31DAE68A08DBE3B4FDAAFC75291C8C6CC7A657E3C7453C7D1461A36E88E633D5
+408253B673AD87A9FB2D0F56DF1305916D14D5DD62051E27BCE09CEE9A1F14AF
+1D7164BA5FB6E6EC8D38750F7E28BE330909F303ECDEE692E347DE13C8C2F82E
+29C8BE6EFD76546F362A12A1C2DC12389EA95ACB4DCBE95620F0C193EAD91B33
+BAAC5801AE827B9AB3FCE5D11D1D7854F8FA8A31670119CC0CA98628F801838B
+AAC7EF90AC5466BE69CE3E3CD9951A5EB9AC08014285422F6DA6F6E221BB30F8
+0042A11F2E4B765BB0D142AD52F4D85785EA71B2E1CE20728B9E9306CE93268D
+99B822A5AB5232EC7E26EE1160850AD3905864A01357F22722B6A54D4EBE58CE
+480EAD9FBF068EE965AC4B5FD2FA8CCB91ECFC6E90B9C49268CA0B0FDAD23ADC
+D5A74B41149BB08454054C451AD0DA4CCF8B60F2EBD061AA03A011D548B6B481
+FAB00AF9225BB5463F27FD67333FB51F8664536267E95CFAA0BE3BC1B8F889CB
+587A3A4FA2B45864F07E11372C9507A625C0030EF7030A0B4D931BCC48F6DD51
+A4D1F63FDC4B59C1CB18E6242E9F4B4B8AD9755B870FE60D640181FB7EB8120C
+C56F51DC8C47FCC6318C2145EDCBEFA7BC4253315BA67FD2B3D4AF6A9F3F229C
+AB75B592EADE15B1FB5FDBA1C0F786BD21A51506B7A2E42C2D086BA6F84D1B3D
+AC7531545F0B01346831FF36A52CAC1E390F99AEDC265B44B0FC9C581BBA6BE4
+48B723811EBCAEA5FEFAEA7E5B987F2C7B3E9A65D2D14A7B74F099401C57E367
+385352D0776D2A908F7A5A2E4D4160946C5591397877025C8C387CA413EFED56
+8B142E8341E349DB4DBA422A4FEE56A573972A0C66590175158E48850A9F7F38
+4B95726787B8F969FDBC97491CC81CABC976CD00A27D1DFCA7CF467A956C1C6C
+839817AEF8794B6151FAE9261119DD5DB787DC9D3B420FD325ED6599FACADE0C
+320D54C2E0D296537E22C1783670A9D9BECAEC63853EC2F05A990260DC189D63
+7CCC0BDDF2CF7585071ABAC14630666737041194D0777EA4292AE60BD7F7100E
+DB568C90F0D899EA006CA423CFFD6EC70A5D3D8AC43C747DBAD3B02219E47D8D
+DE030631F4678C357A58ECC52782B31B50CFD44EC33F41585E51B27E3997D33F
+461BEF897220AEC80007F13C5A1EE3A0430CA899047DF944831F8B010A7DE74A
+BFD26001472DC00CDC9F17CC435F61ADAD4E9AE062ED477FC621FDDF9242C449
+1BB3F77FDD1519A251B663A693D84B42BF0962F537757F38CE5C5D56B98AB10A
+3B70C8AE8D52DCAFCEC22E7B09D3C4EFDA1841C74CA975E4F8294F7BDC796500
+0ABE197ED3737A65F7BAE601C91DB3983EAE11DA3EA18ABBBA3650DC361C2E77
+EF9F97618B0C337A906FF39926D2B0B7883ABBA650816C4C6B34EEA836994EEA
+AFEDDE56E0099D0E09EB88EB093544B9BF4871200746A0409C475FC4232A38D8
+F3105B0FF44E4F132378DD12D9E796412FD0F9478322215E9F59E69396C35AC4
+097C4995B60BF4D8B3AFD0A002B3A6E4FA114131410D5658999B86DFDD3005F3
+AED1FA8F077AD1F27EA249221585703F20FB70E37A26C6C3F2E101693C94612B
+65BF89F37AA3C10A40EE8E49915F1A1B95D2193D8003DECEF9D76FDAA33B1AA9
+CEDCB21C2A3B05747FB3ABDBD904B66EEC60CED2867442F5FE445587EB8C6D14
+87A6B1B4871A8371A7ECA6A159EAB295B167CC35ADEB8512FD0C237421773BE8
+A081FB687F9C5D676F2944DE6E6B639C37E8E49BD4A6F0903E0C31EAFC4C7ED2
+C3C67E71D8BE2B8D5784E8A6F19A9A8929DF9833440E160945274682F435DFAC
+575048CC768BB8F13AA21C6B125E6073611BE138AE06D13E62E7EDE3D0239474
+E040B3E446165FFE60E20B75D2A5F9EE021B22256621C290A8F3342F0347B8EC
+CFA6AD68D47C05268EE3AC8683F4840D736EAB585C6284018DC94FC103B4A882
+ADAEFB625EA966F3877B3FFEA518B809A4BD1F2A077DA3E014EFD2B3B7890A4D
+88902203E738EFC609870FEE77380CBBE92862923F31386030961DC2EBB7365C
+157E25C217D24EFAD750F6EA9BB432CAC3C0373174203457BAB296A37F3F8309
+8B11746D4FC646E6AF560806020F7CA985FC18FDDC2F050B34597C80A43EFBDC
+DFF07146BA76FF45289A06BBF4087B01C846F120E32B00C8E4C0673ED6E70AE9
+CDF202C4CD1B6D099389B82A161ECFAE5CE71E9B09D0DA43B3B6D093D82C37A5
+74533362E3EFB03A550A8E6F8E327257BF8C8DBF57D42F577A996932A38DBC0A
+878608407B929B4632DBA4BA4C5D74D348D57ED2BED979F9F648B5B302C531FD
+18906C4B4ABE9A66AC6207D5DDD920A4DD501C8785F4F0B5841E562C443B127B
+210C4931F3545B81125AE95F3C20CBEC74D0790FB53BCDE8AE6B2C57E1CDA4E3
+2899A6C0FD56BBAE7657145F95F8A55BF485720DC928F99A987F077FAF6C3C46
+81ABA54CF2FEFF5CE700037699E6A4C6A11F54E84C3A14387410A1373D421FB2
+0765D93B48197F48C10EC01E898E4B00907A1F24796F2C6F6CF8DB2890A87BFA
+433E5C1B240A4C00F5F33FE0148E6B7BA0FC92FB77CE1AF6BD656DA6340666D4
+49081F1971567AE9CC3FCBADF356E28B6E431F1A8C3A0BD2CF711EAE05B54F25
+21CEF148123CD037AB1F872BEDDEAA3E177C51E29238689253654D8D620818F9
+5FBED7C4AE1A5B170CF07D69973F5F97FE9CB25312E3647BD136FFD2E8DE0ACE
+55B9EBD67FCF20B9B61F3FEA3A195CD675C001CE34619A2D4BA27340E371FB72
+D665ACC3F17B7822DCC979A4BDF2DE69781A555E748A20B9BC9D80A44DA0C7D0
+07CF01179C20E46F463B875FD368D3CACC709E556E59FD44D5A10061945D4F79
+50DCE87D6DF8B97BA224E6592D9DCDF2DBF597FC075B70B7D2EE66B7FA24CD68
+D33A0F7B0459E7E046E29182F066739630324FBB523F5B071D64A9061E2ADB6A
+4177374948BFA1BF909256E1242861C86E25F47FBE3F244C0C1AB4D86A66C045
+F77D28426B1E7A28D28F71C4C1B8E991D361DCFED4FF1693EE98D2A97E0BFCB8
+D71A03D435ECA0A698C00D57FD34DBBD8E2BCAD43AE6923B4B4F5B216EF77C6F
+56C01FA4A88F21E1EC498F4DCB9B5DA6E206F329797885545DD07E812F7C5A27
+6323C47CAEFFB89FCEEBA1C617E1056C0F0D11F896E3688E6A0EC0E65F9BB5CB
+DCED9FC786C41A3F0405188613DA99A0FFE74CF67EC6AF394ED19AB929968955
+6B906B5AD41182837FB3BC4E3E015BFD30F8FCB9C9F9E433FF5419212D780BF7
+5F1163CD79420E8EE929FD12F0A7EEFF3BDEAA637C21768539304F64E5029407
+B7C62F18D34DF23EFAA8D27AECB70DE226D81006B157DD8F7242A1A47AAE6B2F
+E871C18B9453252B6B821A1A823375C639164B65A06C6F60B753510C9A5A1408
+AB9C3AD66CDC76881CC821294E26EE64022BB4634CB2493D9F232EAD6BC10701
+9017167FEBFBF968B68B13CC8DB160DE891A856AE79C1ECE08773BD25709815F
+D15F5FB61DEF5F780564BF5D3E85F177EB030A22CC5D6BBFE61BC560A79A7AAB
+A943677452F9260200152676DA8DF3A8BF6DA8F9A5A50BA42706039DB6C9379D
+8462A60D13B6E8151D0A29E0445E66CD64A643456F812E9A3E82CAD3852621B6
+BAF5EFC4C97B486CF2A39B9F64194DBC22833840BA1659C306D72E47F64F03C7
+0A7BE5122ED2B9F8183FF0A9AFBCA7B8ED81A4ABFDBB4E9772C925BA524EA050
+1EAEC5D2B0A4CE686D8CF53C3678BD1FE0709D86004CFF763D8BE4F8581D2AE5
+E07BBF243E785E5D3B59988544D2E046A28B61061D00A314D731AF271BB395D1
+D655F9AC66DFF67874B13F1B61DF813B4F8E3D347AA711F2C630AE8098C02BE2
+7675F225C2B835BDE2CA80B386401A66F1A98C82B15467912C197E87B1FE4DB6
+690DF25568EEE4F0AB452F2FF1F62874208B9C24C053F2EA216DD34E493984CC
+AB84BAA291B7969FF6C1E0103CA69E6CD8A8EB7DD1C6E47C3A48D6A6E927AA0B
+1C73991D37EBC9D402960D8475F8D14B533FDAB271EFA592FC95B25801C3D169
+7BBDA90D446DD7C752DC08B55AFC2ADBDE329387E30B3C3A772C845DFF439A1A
+D71830C2AE0C64EB9EAC541EB80D21A20CB5993FD35AC2E7C5E095DC13B4E8C8
+DD832011A2AD0DFBAB2F6E28A0708F3FF6C6127E54A3344EE3AF951CEEF4C06B
+8537347E84CD95CA672EC7373CB228D8224371C69C339E9187D97515A7D92741
+779148DAF7BD3D3F2F5D89CF52C785317A8E5F46123E7D77A2B4C4178C09D132
+DEE2105FFE6B55BA7EF49F62F2A89E84964B2BCBDD8755B3E657B6D21D074460
+7BCA98CA38C00718F2221D2230BEB5F1B6D4555FBF3B1D0F45C48A3F4B159F05
+85E9E2BAEF2B23A4C77B8BB6A22D51AC726B4DD19E3E079F71023EBDC6C82974
+EF51C3E22434F25A4E9F7DEB7DB8EA42C72BF808C6773677C1CB475A1103E5A6
+A0C17D3162D1EAB2412E3B41A0F2883B6A23496DE1FF271B3F33B79435F47622
+9E0E2ACA49384141DA4DF4E5F75B60B83292EBB39EE1A17E625F14394E752041
+FF0F46FF9EA12B6BF8A34A86A5560CAAC6874101E8EC6FA96CD81F3AE9C8F66B
+0C36699BDDC63E8D6B795A04F4BFF99517E2BD7E8CB7C7D658BD026515A553C0
+76EC42F6A62EA64220371C1A0EA40DDBEA6590FFC767EFD6E0F2165CEFEAE159
+EAB4F3CC8AC717335240D5124F07D9BE31F11BB310E60177DAD0451A7B2A7099
+1017DEFBEA412A84EDE7952C06D6C463F3D7A86D254160DE67A5CDF62613CB39
+7CF52E2942DD722A5E243AA649B77F859BFFE0820019C1CAEC19A66BDE515A30
+FB4323EED61C8646C58F823C8040D430555E675D2CAD6F04AFB27EADBB293B26
+1B27D1134F923B73C3CA1E7028B71031B9E56DE70521DFAEF4743471C6240043
+658E5F18880833E1D776FC60016565DB86790DEA5701C69613F339CF85F81D92
+DB2C1D3797D9C521E505B8537275CCA539C2B72E7BCB7262E8BFCAE189162672
+E3C0F8EDCAA3578E8E2B798CDDFDA6C9773CFE4FB919FE08AD2947E9D7A44783
+6F810773A659E8BBD0CFB0817862B767232833D61610811DECFDA557E60CFFBD
+8DCF4CEA508FDA1A99AB90405FA0C7EAFF3C33C8B687564FE434EBC2FBE2A298
+69FAFB680B2BA09E81F799071BBAB68D0A1D43B61FD42B2F39DD829AEA4A1F1E
+25D74C007CA68E74F0421F47F8ED17FA23D11A496F7E44864D44BD8B8E3C7F47
+09EA5BD50ADC04CA13F44C0CEFBC9A56815FE1E7ED2C901A6DD506D5FF083506
+60F3F0C61A1D811320607CAA3D61EABB8307942DCC1534705329B6A9088FAAD7
+2EE7AF80F85B3B879D8947809A2CC73FB1EA19BB410285D4441E6AB8A6F4B0C2
+77E29D12EC0199D0D62401238E39EAA8C3DD7039C59720EB0B90DCF115A5E167
+4E05168352A67B69B12239072BB6F5AD3ECB1287237CA9179FF7EF8EF003FC74
+B7DC4681EE50AACACCD055957CDEF0C8B7A8E09641E6F84779CAC7787D0B90E8
+50474050CA95515E219CD13BAD6F11DD995BB3874DE27C8770ABD35D016F8D37
+8C4A5B923A59F7942BD75F3D831A9CEE6CA13CF0CAB4134B03AF741BD63EB859
+830B500DE92CB04575B81F0189286BE51D060E1D5F15F7616DF91C7F551D1D78
+752D32DF8EA71D7521F9C0E61C1395041834425E9928B0F2C036550F65ACE3AE
+EFDEA29962C5AAE41D635F8A781E5026621031C7538BFF99F297C671C041D943
+FACA5E4EFBF3915C2814C452C49CC7577477BFFF7C322A82CE82562B88D013E9
+64BAFDCDD8CBC6BB50F318BDEBF776F4ABE16711C02F8C9419F9B869FFA731D0
+67486944AEC2F3A087F4BE21A90D716CBE3ED1D362B6374C21A27FA3977A5B1F
+5776F219A11363463CEDE97A9ECF00A4A246BA5FE649D04A37D8FCF50AC35C4D
+BFF140368CEF5D86B2ADE30DDD76B81A0F946BD09ACDDEF5B0F10839EB943226
+6A0E82B65CAE3F4F084035EE3791A29F817146577EBC05BFC6C7011D76C7656B
+BA813076CC2C5DB90A0099D1D796BA93C5D29370D494EDC8273F61F89C86DE2F
+F824CCAC8ECAECA01EA3ECF54FA58E5B8FD867D30D3DD5FFA8BC354617457B26
+107F9F0AD513975EF7BBAC65C545E033640EED82498C897B54E734C6A6C82C49
+B483CA57E9B9FC5D837FF5BC66BA69AD5AD74A8A90FAC5D0EF0DF3B9E77AA94B
+71B70FA7D517968FBC2DD1BA903B0688B31DA472651FF1DD22971FD60560F1B6
+D6B605FE6767B6A8F7F615EF1E7DDFF52039D30A9C2BE86C9D9F8FC34F98DD82
+3ECC12CA4DBC19960D5F0871FB1B4384FB5BC2FA567CE8A0CADB22189E9B9135
+6BE215BAB458DC81D6F469F967CC8299D63FDE438B44833CF1D195A29B28115E
+53AE30ED16E9ECC0517DCCA96F8FD1E835FF3C062B8F44C5C51055A78D49ACE7
+EC96330E2F9F895F1C35374E8148D3B3BD4BCDEFE29651002A3B2261DBA460B3
+E77F4FAEAE66DF38FDDB507064732D7104AB35337AF409899DF7FE9DA326F363
+29F77844B5F8498D01DBBF176191B10EBA5580A16CA6DE02B22AF2A316937AEF
+6676975117C5EB36EF7B2655BDACC40E16410302A686BB828F52A10D9C044238
+D271CAF52C68E16FB87F1F1E4BD41F4AD20F7D320B0FFD1D6EE9729326D33ECD
+B79F6DFBB7B12C97792B0AE0CF24295647BF42AD5FB4641BC15FCEFA20DE0806
+DC617554C5ADDEBD825762A48A6EFA4F853BB903DC8A0EF11DDA4E6543825973
+4A6CFF8DE8352CA098C1D4B93B9E00F1E37A4CAFB9B3DC3920C76A80A124F27D
+1F9222F4C3379AFB3A54FC7680A3B848DA9BFA7CF6A3D8C4CAAA91CE3A163256
+433BC31F29C254401364166DB45F22A12688E3D0B1E1D898D1E4780A2B019AB1
+E8AA721571F2EF7CB4C774981661A1095F91B69A723AD4A73A6F308615093283
+F5EA4DF16AAE0558C55A940E0CF129D9505F947A3621362B2763058398BFD936
+9D09A349689A836CEE1AC9F593503D44D80585C0AB2F5ACE79B7E14715311E1A
+32F0C09D3B0799F570905F98C3C743B52C6274ECD4EABBD7ADE6B41A4FF6B0F6
+B1C914982F79806AF01B8161213F83783EA39A942758FF303FB4D99128CD6B44
+EFB1F10748F9D25AB065996FE0389CD57FBBCEFC4C47A864DCAE46F20B50ECA3
+184D5A0FADC348924F010A01A7A4A58AF3B02E5C00C2A4FCCC29386254DEC91B
+4ACB1F9F2A5C4220454715885B10574C818F14F78E288289E2A905A4C38B1B31
+9A98FE90E8FF5D875C181A62E8DF61B341BC3F9EDEAC5A37568390CE67AC7A61
+DA174B944A3EB4CFD7583AEE63B62802A72F99539EB5346A499A796811CDE007
+F683328F4373C4EF3E803F235435D79153C80D5DC6C9826383A06563D8A49768
+D64CB2FE699912518B305A638CAF73A9DBE80EF002AC22199E14C30BC308C836
+5C513BFD57C8C9E678B7171B945C5AED484D22695BE9EF9832F855DEEED72B87
+271DB00629B68C0C9E3D18495F240D50976CAEF7CF70588965753FC8778DFB99
+5372B4DAF74949C9DAFCBEAB21A33921C34B92D5248783CC35F04D8FC26E9BAD
+3AAF7A334527155BAA0E5F9313F6022539A17C9BD9CCF04F2377D1317F6280DB
+6321EB063861D31893F9CF447D9863E691ED945840A9C428FE240E38FF7CE928
+A178D8FFDCA86B7617AC6EBE313E857ABF1968A0E46CA59ABBCF9415D2271E67
+EC1E0A72FFA85D46666BE6CD13B7ADE6D3A16F141B99F61B9E1661682AE7C336
+06131936E3C553A39E7DA2BBEFA2CDF3D01006FAB1B484E5E5C094A3396407CE
+
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+{restore}if
+%%EndFont
+%%BeginFont: CMR9
+%!PS-AdobeFont-1.0: CMR9 003.002
+%%Title: CMR9
+%Version: 003.002
+%%CreationDate: Mon Jul 13 16:17:00 2009
+%%Creator: David M. Jones
+%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
+%Copyright: (<http://www.ams.org>), with Reserved Font Name CMR9.
+% 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/CMR9 known{/CMR9 findfont dup/UniqueID known{dup
+/UniqueID get 5000792 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 /CMR9 def
+/FontBBox {-39 -250 1036 750 }readonly def
+/PaintType 0 def
+/FontInfo 9 dict dup begin
+/version (003.002) readonly def
+/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMR9.) readonly def
+/FullName (CMR9) 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 33 /exclam 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 59 /semicolon put
+dup 61 /equal 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 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 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 124 /emdash put
+readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA
+0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93
+51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71
+7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551
+E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078
+0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273
+C01924195A181D03F5054A93B71E5065F8D92FE23794D2DB9AF72336CC4AD340
+15A449513D5F74BFB9A68ABC471020464E3E6E33008238B123DEDE18557D712E
+ED5223722892A4DAC477120B8C9F3FE3FD334EACD3E8AABDC3C967C61FF003B4
+B10C56D6A490CE9594D57A2D431B9E5E10FE3D8832E227A7087611431ABCD029
+85F4865E17E17F8CFBD2CADC97E0A8820E3ACEC873F31464466A9545E967E53C
+DBDDB8478E69063FBB891566BAF88B7660A4405B16834761F041CCF7650AF955
+F9E853AA9F5F4382E1FE7D0C5BB4023818A2383F91249D48CE021250EC9EEB1D
+2835E18FB73026250B32A8849067D5E2258797C917F998F2D4121D96560C5FB5
+B5D3471216639A8671B6DFAC5E3554EC36D9A72518525A795590C74DD70DA3A7
+78BFC43E51D6F2BA52F17D4DD00D389D3983EC54912AFF73684A8A7E345537B7
+E62361C04A47859DA084BC72EA53512DC54132EB2EE671793603015652EAFDE3
+41C4B6B679BD60AEC5153EA0D2200CB1D097DAD770F5F31E6FC475A225995277
+B867B731D5401E2D02B85BA85158C80FF7E2BBCC42B98AC867E67D25DB656072
+55A0D32AB7AA483A5A9686CEA4E2B3031D90D84DB3E2DEE7706C91BA81CB8DAA
+700E5F61E07D6998C9552C81B66FD10A10033D49EF3BCB0FF22ED0A3737523C9
+8F851C61C4BF8A213BF6EC70C956AE48B5BD276CC0437C72BF6515B10739919A
+F00F6ADD2798CB211668842349171A5AEB0664D2C44397E55A4A9EBDF54A3EF4
+FBBCDAD9DAEF4B0CAEF7112FA828F2F8D9F633D37E5516AB5ECEA87342EF8DC4
+3A50548490F5BC9A8A1F98AC7AEAD9D913BFA10CA86D73AEB5BACC1FEEFDCC15
+B3655522CCA2C772E902FAB2A6FC153597D52763EB44AB7489FF061F7F58E8F2
+AEAAF4D17F36CBFC00D3C653F335D14240C87DB4339DA9D30A5BD1F502BC9013
+461B9DB2FBEEC01BB18990439A0E9CA6576BC9CF6B1A3DB9386C4A5D4AA6A5DC
+CFA45FB75F22E10ECB72565DB441A194902C91427B4F676E531C661F7A2C3C85
+CD534D1C89B6779B2EDC8E44667B992C20C70B663BFBF680A6CF4383EB7CA26C
+4D1F06B5EF4025BBE65795F1EDB5CCB97050872D6C07BC2974F905ACDB7A765F
+291365D6C8152153E7F017A25FB4476C60FD9EAF9A121633DBEAC32F62850223
+D6418566AB350F90F4B35F19598478F76B63E347D4C61E203D4DB8ECB9889181
+C387F4B663A502C638761D2782BB96EAC81A0108D7BD6938F67FEBB69218D115
+D8E89CFABCE15C6ACC7FEB983332A51A6A73CF4E341574F366713D7FB29956D9
+9BF238A87483D37E526A2EA2F101EDD34E34CB92730DCA7235AA0027189BE405
+2DAB4AA021A30C28B26C50808E1E965C02F6212EC7C72F5683339425A7739380
+A422E6191ED8453AF0CAAA424AE44DFA7CC5C2F6EAA8D73A5101D8E9517DBCFB
+2858D0E8ECB7DC430EF23A9E4428CB7DED8D035D6050251AC101A2D0E884721E
+2F21E573F948048BB8FF888911C508CC198BD750083B339500C426AFCD5634A6
+AAAC1C7E91249667B231BBFC64B4317192FE07FE9DA0DDB5E517D097AAE46577
+9555F29D45C67CDE9812CAD03F220B20519F2FF32DCA56A554D4296FE2D1F3FB
+B209B5270E0E695EA5A0EF1144957CE045881AEB8D05D72CE57F4D34617AED67
+0D3AF0472CD8D60933651626550366E300E72A9C89ACD475C2E2ED9BD44B472D
+9DAFE943F8E02A6DC38E447EED964624C37C3130E48211CA279BB6A0BD59466B
+42F3D89B5746F29E084E22CF58395AF0F29E55113F3A3F2F52CB3A6DF3D026D0
+C81754B8E2E4A15F6943BE9D0087D5166060734FD07C4C57D7C7D90E8C9C1F35
+623CEEE3ABAE75E1A18A1E3B50B7266BD2D8E812CFEB4A46B856885B185640D6
+B9C22179551002B94282F57FB433B7FF157D2F0D240836B72AF4A331668AE5D4
+E6B85415F4E8B9D2F9AF90FAFAA0A3866DF417CA5A31348CF9B41B8F5F4D2F97
+CCF7ADE851B5E2E2F6E319AAF5792EBB9DA2C6AA8B73D889F3CDAA42932CDA7D
+07A7E59183CD89520DDFC36E5D513BFD8AD0886046585F29B4D7F42CC0C27AA7
+53915AB1167D292FE91957E94A57FEE2D49C20C9070ECD736BDEE0F046E60350
+EA539DC298156A4E0D019E7D481FDDA6861E20678516AB80ABEC1F09B126BCB9
+52E8272A06BB6DD87ACFC423B4A4FC9A3DC8DCAEBB807C5F748F1FF8B17B8B88
+F426206BF1B7B7D239D26BC3CF0776C467A98CFBBCA5FB6145D5900137ED19DC
+D002F10704AA680EC753C22E29AAB15712EF22AF73D80820A1EEE953463D4EA3
+81FAF99518D4FD0F862A324FC44C4B9542A92C5B60CC983CC8F647CE5BDB4D6D
+B92B380E0E5F7208A9CD91FA9A469548162C761C1BA05AC9D60B766764D821B6
+B4E17F56CE455F06EA1EE2D38FE47581746C4C5FBA63AEE2B58E877D1A8FA83A
+31C972D53B64E92EEEA147426A92CFBF76FC614119C6E9C6476FD6A069C803BF
+E949FBE50B5AB1F1463F9747E8D353F7BBD991C4F90F920BC9407D8E24720293
+846D052214E60390C3CB926D38C83AF697425D80C2B4FC4706615B905516B733
+46ACA325CEA68FB21B2D17CF0B68BA4DF249368625CF83441EDBF2B86C957C1E
+44CD722BD2537CE84FBA07EC7AE15C840041B9F7F3040072E6084CD55B301C08
+A64A53BD4D3DC30DCAC6C152F316ABC59B8EE978793EBD568849DCC2A75A495A
+BC83470D503F8E389F54B4A4A31624E83C601B43AC1E52CB811FAA7CA6B644A5
+1AE0BFD4FC774C9C9DFC2769ABFA9C83F900BE2DD4010416053A1D4874E6ECF4
+D86E44B4CAB15D53E5630C144B0C15B58DAAD785BA298B1893D1B09BA5D40344
+6678FD2D17FF6674433C976D6DAC659175CED26139967C9B2B9CFFD78FC2570A
+E5142141C2888DBF2DC8503F9137CE7CB21A1EBC2D65BF33FCEFBC85C9CB736E
+24E8595CE934AB032CC70BD6A3B0F3BDBFBBE185512FDB7BE3D4A6620478453E
+75D044BF770B44C9741E31985E6DAF5A318D7BED12B02A4BCFE60D25EF12843D
+EFC9BAE2A3F2EFAD66D7858E83EB46BB09D2FF8AE9C43844A7001C86ED97AF51
+C511E3A89A1BE349FF5215D1A57843EF51456B9838133846F19BE79AAA5C1AB0
+5F400E5E8E7B0BF96EFCA3B8F0894BE589F2C9FB6C97BD16D38F0A237CD4F034
+099C41F85C7E2C7BEC8E02C4F327306A53B4B48B26A8926670CEEF96F6DF2281
+7C2DAD99EF8B81BBB777227C2475AE7400DC393D9C0445E925DB1E955950F7AE
+53E9AC4306794239346A419F7B5DF4168382EF5956B81F83BD4BB7635B3BCC84
+7D84D05AEDC02D14675D777CD19B08124001A4F4EA96990D96000C082A12F00F
+7FEF793A7FA69D56D3A38D012168C5458B667190AFE80E02C816CAFF0A71953C
+D80B085CD286027E2FDBB05452AA762FD7C813B2E19A79C74190E04E746C4933
+CE1E300CAF5DD53B08110509BDA404EF07FA1BC5224BF1205DE8E0C3276A13DD
+866675103B960C5F36644F96B4FAC16F5D6E91F74629B318FCCC8E8CB13EB76B
+B0B7B90718D913A52A04732EA3667674994A325A7973C601A7DDD50F658E0826
+ACB8E53D4914B0274AED98D7BC3B2B7F9D48A7ECC2F8ABEE05CF2C4F2B90360B
+B7DF779EAF3E103D1D83EDBE32DDA873768D8C37DC10A5354A94B4153049AD64
+FF3E0BB51AB91D7C0B4134D8731CD0270DAAF19BED9EAD800A14B65B68EEE89B
+40DD624111670DDC7C030DEFE0D1B96420E249332445C155BA96231C88E70643
+D526BDF3CA1E05FEE72CE2B881CFC01ED780C10E89F0828AD55FE29043BC56E8
+2750A6DD15AADD54492F6092618F4CC6A31766B17FC60766D18C307EFC9BB787
+39047DAD6B38419EFBA46B4E2C932F97451FE78AD75FA90DE409FC6DD46585D2
+1941F5ED47A8FBAEF5A917A240959E8D9F9917DEA3247D9CAE6BF7A88DB4C4A4
+F9F5A6DCE542420A032FF3392FE0F3357B51F884D6181583A554F75B1DF192E9
+253CC828FF06B0D992D5316435980B044BB191508C7C45CD90F797F88856424B
+14A5707459C50EDCF3E3D8D1667AAA83015405354CE744C66D9A5728F29E0085
+6DBF740717FA0799E3BCC4ED7841588B496A5E549B953A7FD288B4A045DB611E
+E3B2F35963FF18ACCB1C968BEEA2CBF52B3999AAF89A05320BB2E97F52CFE06B
+9F10E3A79865A3059A957F97972D80ADF678A36E2B586C101FC6AFA4D137C13E
+EE7102C9B8EF78CB057F8B7476F146E8FF5C897FD5503DD198128CFF7B5FB339
+FAD0AF0EA967F77B07B367A4AC9F668F8BED99B98E87FAC750EE045602D76C3F
+289FC9D97694C96AAC0AD1BD3FA94DF2CBCEA24B40F47B9B59E54EECEE7AC4C3
+A3F5D19160E4C1EA830D57FBE10D8D46AC5CA0260F22FAA45236F0F542BEA9C5
+5A88F878F68B36114E0573900C65E305462B22A3429A17C7A567694414DDDA46
+5F30542B8FD4F00F6C295B2E8D3A986B953D96822DB2ECD48E8BB1763434E652
+152EF3717F5E7FA10FF0B01D9F64E22C5DBD7254629658887BACEC0ABDE972EE
+67299FB84A05B3EFE22B6976DB4CCA384232DDAE38C31623A4E39EA2E82C1EA3
+BBB68F1A7DBF405DEC37CB7203A895C36A44BD2D63F45B3888AF91D37B510A59
+3C921BB44DA620892AD87B665F69F6FA510B071ECC403CB2BE2F54B3969C9E88
+713244BC97C1466DA8216DA7600C221E7E7EF5C789D2E12B36422023A03E11BF
+2790FD6062FE6BF62F5010A92F0A104B76E255A0975E04F6F20F760881BDA7F5
+D834D1D328B6EC19AA7D5E5678A84C74C82553DBE8BB5765E84F5A8789032143
+6020940B4B8D45FC3433D356E28C25F42D0C19F911213D85951B2B00D01B77BB
+A4C72E964F9D95422BEDE582A05CD52E03D28A996E6CC8FCD910CBAB728073F9
+F9FAEED5470FFA55930447C5BA816F826F983D53EC9941EC8364B3060FD74C95
+26D4F5CA753B574FD2FA4D1D333785241D8741B79E628BC852FDC35478C5ED9A
+C1BE88C5EE7302816E65C12B58EA16FEDD4672EB3E24B6EDAD5DCE263BA8A970
+350B651E5A9F3C281D85BC3F44EADD0D93402E36489BA5185E7D388974B0B700
+70575188BB610CCA20F081E2CBDA13DCC6F72567962ADB342E02C1E763B673C5
+F7384E24C6E1730A3A790D690A2103AEF88E0C1D4480DC9B25E5C8C9E1919C95
+F83320179B4C7C4A26D559BFB24D7D596FB73758C9990C451E77FCDDD17763B8
+9C30A9534E3CB6680D3D419D4B70B0B0A0D160FCCDE169714E373F65B7144CC2
+DB9A44E041211E1517D3148E65A2486CBE5E74E625261CCF65392FB4F3091473
+F9E8DF327D59A58558E5C9F7190DB577D5DC658F5E36258291C708B3D224653D
+064BB6079F91293FC733710893AD1C96169B30CBFE4E9D52E7EFAE4AFEE68FEF
+1AFD5E7E9DFCE8DE332B0FDC0514F9B3090AC85BBFB527FD8034DD33E9576325
+A8769AE09AF1BA792447DDD932B98FC9486B39E0B04DDB3EFB7A30DA0940B33E
+E27490E0E841E87B1C90E5248A91742ABEDC10F43A8AF0F9C5B4A4930B1AADAF
+01874B9AC3B8D0DBECCDA6CD7E96471FAA15CB7F8A599C5746327CE392224C3C
+40BD60AF97BCA6FF6FCAB2FEA114D7300B89E91C3BC92D5B3E2C83BB37992D8C
+72F661EFD0AA034C738C019DFB79BF40651A1A34BC1EB9F5AAF58F8B3DA32645
+24AFF8636486F08BC21533B5FF7391B0679A78DFDCB03DAF6BB7475A1D51DAC1
+EE4BE9B986655D1FDB6936445EF99B58B303FE79F11275EEA96A9F6808EA8775
+D873D1052FAC93769789C700F20EB2ED6D15676F6E563A769CA9298E463FC311
+83281483B1C953370D196727A6A0E66D32D9480AB1B6DCA77868C1A2D5DB6483
+5F31EB6B18EEFEF1CDC31533E69B0AFC6B30FC9912DC89BAAEEADC30BE14F448
+1A6B70D36A5D9B01799BEEA686066114910842D022EB464A9A1E8F0A5628BA69
+AA9A1925CCADD44703BC67A89F3B48E4680726DC4360274185CF3C8AB747A8FC
+4B928AD62B092EFE48B01E33ED756DB696171FDB775396BBA138E056F71EDAE3
+7A1E4CC272B8418114B0E81DE0BC43DB3C133167344488820A92DF10FFA26FB9
+65FCA2C87D302E956DE6B4FE145145440C83DB43A68F8B29A592B127BDF49063
+B7F11E155CD4CAE305525BEA56B7C412A6260426407BD892A3F2B444AC3421E6
+FB6E6425EB5C3053C5644666B80405530FA0012B54557327C98E0F4F064099A6
+4ACAAFC1870359C1B6FBE7606BB8A26026AE20C212210449905E628AF1B20490
+8CE908B7EF3E3DB551C85AEB0F7FEB6A8D215B97998E5DD9C7CCFB2A9402B8B6
+1770D4023777D4B45A73F471355353412C51D4CE71FAD1E0AFBD87B5F86307F3
+10D0B94F1194EFFB64AD5DA54A4200490F609CA8B912E149F8217ABB1E9EBB3B
+C4470E7365CF5E1E761AA1945044B225BD53D142F6588C50E0644740F7DD55E4
+8F73201E5354A8BC78339211AFC4935F44701FBA043AAC4BA4698E9D7700029A
+C79F992F62627C91EB855F64C4B251718FDA71EDAF082A0C7B00550949D617A0
+7071FB14F05620CCF2180941341D8E60FC88823438FD728A4042AFA8B853107F
+852F631518B61B234565291B5D5B89DA818DEE3AE3B68A2869DFA63255CC882C
+3B16BBA08FCE3632E57FF7A07F857A1F0FDCADAB39D77960BD827CCC8661A997
+648BF5BEBC0FD2286C2A112A8DEB9CCB6330A049170D5D68EEEEA011D3EF3EBD
+855236B9380087CBBB6BE24191F728B7EAC5B50F7A547AA0989B7C7D3437DBCE
+1669341264E290646F2C8C5A3ACAAC7CB63DC692FAAE13E9B40E8BD39FE16A0C
+1660CE66872D061056C04DDDC265C024BEF8B7E3C3AEE76FE5C9702002C28BE0
+B180295EE00E567FA2E5CD1638226D24A7C732E1BD8103B476EF5702768689C7
+D4FCD47F2AB94A2B1FBAE6ABF87B09E7713C773FB65CA83F7318035B332B9F99
+24A2C8897527021321D003AAD7C273E4BFA2710B9BB26C2CFD3D9A5D7ED1096C
+552D50028AE2476FCD6D12A5D0A897521313ED1A3A8456A70C16EAA50A3E6733
+6DC89FEC56AB54A579EF264377A103939D5EE00A90B4F2206D0023AF9491FBE0
+800C6540FC945199E20E945F46CEEA2E885F6800B9DF042BCEF4291A4B1A62C8
+6A7ACFF872B25FA3AE69E0093F3D0FF13A3313430C06F1AF94D500431566F659
+E8C859A5F80F5BD2E85C8E32603D3745628E8FE6FBC50FA68F9C3811A2BEFEA4
+5852CAE2AE5AAD3230ED050593BAD0A9581EB7B327C6916B8FC348F4C23E6FA2
+00FA28AAACCB3091C1D83F7BB88672A53A2EA3B8C7C24374E400C57F0F01019F
+E52D5C47F389D4C9AF126F4080F9AB8D1C8F470932BBECCEC72A9796F6E965A4
+82057DDB43D68298A00880D4C2E2496F26F015FD83C5549215753459310339B7
+6B2961EEEE74DA31FEC8E2BDDA42D4080A32372AC372524BDDA580EF6634ACE3
+128C69D04D890DCA337212B109585C665AA83EFE47D5BABC2627A86EAD11BF7D
+744176652C7F9497785A7A06A994ED8414BBE8B26E74D48CB83FA24AAFBDD507
+84A90195EA3D77BCE8C2BEDDD1DC52E8164DF15D65B916EBDF3A8A76849653DF
+AE3CAF9561AF3B705F75B9E5DFD6758DB65A2FD54683759912E0D0035CFBCD86
+5D22CE175F9E50FA2301ADBCFAAB2B89B8917307766C4D228198F718DBA1B2E4
+BBB59748043483206B2C87D3A6A95880E47C868308F390EBB8A2F7925D14E782
+6F40A532E02978A494F370A732947755C8CC6FDD9F7092778849B9887820EF5F
+67871FAD992447F76CF16F85D0A04140B7A29CE125D733D197D58FD4186D335B
+DBD88456EC1A698AFBEE2418D715F0A4CFADC0E9D88F83AF8B6CA0AF8A510C59
+E63798EB43CAD793E287BF3CAD7E8CAE1E9BB5F52171A78D4463B995CF637964
+5825941C8B7E1B1408619FCA686B5792D720974ED9249ECE9FE8FCC567D66582
+903C00361D3E72B158C3AD92707D0FA8D6ACE4E66AFD3916267CE37DAD4D1373
+D818CE3F6952EAB0E1C9F7328D9A2C4EC787117853336A14E258D14211E2100A
+636C28C34EF07F0E59BABCD25E48D57FC896D57DFFCF445C5F8015B05CBC1E06
+3BBCEB0ED5F63317937B6E3D5ED2A177CAAC366A85E33B1D60649626A1EAC051
+CAF959945AC0B31D21C930C20A2C4EB6B7D7B2A078E2140075279B962D6D0A0E
+E253AC638B9D0E758FCD57D9685EE33312C1A0A5CF1762F57C0C7236EF014B54
+7DB1B8C3CE37A262AD69A31F5A1E4C2BCF7C4310523B30CCA645B8DA15419438
+C2D541657DC32658E7F14C18F6048F3DFBBE365542B2411B2B72CF35172C6264
+534AC64D3DEB13D303AF97D51A071EC797D611DC571CD4A5E4B308CFF0F78CF2
+8A475ED04DCCE94CB6A54B5D27A8719A0B094E42D3B5FA1D967E96405E690437
+6F9F1F155B7FA0873D8AF3D270825B0EF286176436B0B820176667500E587821
+56ED77373459669911695E73E63BF4D510C4E7701979B23EF39FD99184A9408D
+68E3D41F7F57F05CEF384408644F205FF751E5D6FBE61E3F311D919EECDB4F31
+F756461AD5DA5910521533282982BFCF345E03E778E246B3B724F052F2CA575F
+D9D3E3D30AC17A26B475E05C704BD74D1D01F18E577035FF3493BD361587071A
+62AE7E7856AB6CE1CD62027F264003D6D0D8CF0A0E9A67B967631C38774FB945
+4F35D4CE5740A20005104FBD57BC27C9B28224B9F789380FF871E93EE227D21B
+DCCED5A4D2401A80CE2039C330B944E16C267512E5FC8BF69E20EAC84CF9F3EB
+D2A418A308FB565EB37574A94AA0157967D94B4FE179C3E93DD73B6963AB8C83
+75E2F6F888A597A15E15532D8937C7984B649081CF715E63468CBDB9952CCD0A
+CEEA511B20D45B45113A2E5082DF602CB867B7C7E9DB51A552E0F9CE684A2652
+C19C8D31C9300F072F8D71719570AFBA639D1147E1A3B46543835C4DCBDF7DDA
+FA75120048E1367FA203AA6E4831D3A3DC42C9107CA031420E8DF65638A7D125
+34AA2B79D24A7E25421A64637FCCC45EFF6D04D76978B921AAF1655BBE955588
+9640D412B13C7EB74C45961043BD8C7908E99EE8F3037AD9069C323AD2E125A0
+C17B009F8F8DB00AC086FE44E509A5DC24D41FDD14A825A1F4ECF45A6CEC4624
+68AD8967FFD38FC8A07B02F98A4DFC922DB32E7198E73357DD97C145DCE68EC9
+9F57AD5A160126361C13C06F62B14633CC36D69F10C4B2044F899A2BED950A3A
+5BEB5E7E07F01202FCB8C40051AC9164AC8D954DEAA0442B8BE35BBC5C643E53
+E9B1AF632927D846EDE3A9BF589E24299F2301B6CE330ADFA834DE6C2AD36777
+339DC7C736FFABE2F5FF571BBD073076A6CF4D381DA932CBD3B1529F2BA54DE7
+5318035ED2A2B09FD39AAEF2D7B20C8D384D01E56DC80159C4BE7DA471A403B0
+42E5248E72FABDF76070C5CD62D4B1FF8BCE405D59DCB1FFBD0AD41ADC94580B
+A90462277B0301738DFF45F036DC9F77752A8927CDB49129507B72F9A0D00463
+1192A0049DFD674C2F061C6A4784D911FBD832005A82335648F6C91723788C3E
+0C322EFE02904D82B43C8C46CF4CFEC637F4C37E87EDDF17841268988151A630
+A914A4FCF918B0D589B3F75137A34062145027DB020897E28D2FA5B948AD22F7
+58F1159EA22572E7FF0CF648981BB0F88D34689739E8B6F1A3C9DA8C4C2BB126
+16D47962B8E11C2723B9E38AA1A50D1D6D582C7A94DFE4E6AC501CFB942952C5
+F2D2A7573C801E2D7291DDCA1442DF3AC58F66632695B5C8D55531EE1919B016
+7E8FC73068422A68FB75C4ACD70BB2C1CA74B90B7D317932882AE82292FA3D13
+C1A2F418EF47ACD12550E39E435E3795C7FA7DA34920FDB29E73D10DA44A7CD2
+DA1A584529DB4BD7D1EEB8100D89C6572096263B3CA1714E766617162BC80F73
+6AD316123626A4A71A91B1655E53AB42EBE44E0E3B0BCE82E88055AA369CFEBD
+34B6934E988A2EB41DB5D64C69F0AC2375F42536B540B88E551DC4A3348F9E29
+73D3AB9DD006BC0ACBF3400DB12EF6F04FCBF9E5E6A3CE6F947299953B8BB51E
+36BD9CA66743BF03069A03EE43E4C93F79EE76B68F6328A6F2B316FB29634CAD
+38F0B9C8B1F4A73AB259EEE0DFB88088BC958D3986BF189636A149E5982DDBC4
+2030BCF24415368AD3B90413CBB3CD307D4A5F24E61DD2C25E40726C736602AF
+9D374A8DD159E7DA62264EF8FC01A1575337185C57AD8385A94A66466F6CD071
+7210190DFBAF701EB977A746E220B0AE0C48C77D665363FA8156E2F3298B3006
+3C8F2E8A74B365795F72741BEF1C215BB3F41BDACF4B2D094D0B4149A5E09E72
+04ECCFD4FD2A2EE813B63DA42D9B952E5B496442714EF0EE4F9F1687F434B00E
+267CFF0651F978A098A3B251194F5651AEC589B7FA3A939A0EC79722683BB28E
+20AE7ECB82DE00088F893875207E935CF4233C26B6B0AA3CE75C62F0629A2930
+ADDD62094F9179A64528ECD6892BFD2B0D73AF178529675BA045A8D89AC58BDA
+F657E52E14FA08397ACDAAAE8D21A2923BE8435D26789DB9E0C386293108AE35
+794B7EEC017AC15ACE8DDBC115620F3E3C4F8A6AE71021241BA8098C99C47966
+FD5976C58562D08E81180B1107340038AE071F4FCF20A955B1DC7746BA6E12F4
+EEB596F401495CE1A7E44591E081ADFB75569F5E80E03809D0363830510D33E2
+757948A533569D8E26999D370740A748F4FC18BCBA068222811FF163FA9C0442
+CAD33203255F1597F7741FDD778D5D1C8A9C153878D5671850AF448F5E63BABC
+65EEF81A2E93B1A35F160808F7ACF3F6E6CE90013EF086D26FAE63C667F1C19F
+2ED79E9C6D1093F98289269F3C51DE78D1370DE3C5F973460615F341C27544E2
+32FAC652EF784EEC32464FA4F74292CD4D2D28F853D4E7ADE69EF890752695AE
+CBD6C8D745487DC6976A14A952D82019F860CF2AFFD4CEA9ABF26C9674112AC6
+FB073B3079F759634342C127853C0E3E81DDD0956A212BD02EF665FB7DB96C8E
+676D75A1256862C47DED4993E3A1141C56D1B9D3C89F047EA0E7BB7E1ED29E12
+3654A1B3AA65FAD7969FA70D6EED7A10C7421D6052980740ED1C36E9F199A6C3
+6DEF05E2305FA52FDFE3BC00AA2D6D78472310A2977F947621182486AFA66185
+01C3ABB8E2B49B9AFD83D39661EBE3843E429975B0542C5972A9F7647A870284
+1AFC43251B67C13175E295EB7BC8F4686D9811D89652FACD233AC90FC33390FF
+B09FCC13468683EFD9B2E50BC875E5665D4F88EDCD6AB177A04AC21A4CC0BADB
+CDED4B75125913DC0561D305B0F5B5DE7DF30557768F365E71F000524A20121C
+5446890A3A586EBCB1460A8A2C42C5DE57678638120767E1E3E4D4AD6331FFA4
+BDB9ADE62B9CB732259FDB1B4EABB31336DB81DB6CEAFFBF5EA464C9E3D1AE8E
+F18622E52234F1B639FF005A911941987F1049497BA4A43919F9FB0D6E367E1F
+7A05FD68EDEE7F507D020EB1204890CAD2620FA15B1A413BCA574B0E643A0564
+3E8A2FB919768DEAEAECBF5B4C66358B12C3D604F3D950304B5B4393240ABF41
+16E296D6D31DCC8C6DDBA47BEE225E5A5B017050BE6DE7EFEE5755DEA5C4ADD3
+719350A2715B28CDE94DA52D58E09556ED5AA6F25A4FB9D59B783167B046464D
+0F7536BF50B2646F55FF45D8A7372157D7E67318E71A713B26B995493CEB1B2F
+2368B796A0EFD033CDCDF7708FF9118E4076967D9BCB7512079162365078C7DF
+762C8FD66F58578D5488CBDE77D23B36F1D19CD6C6962EF49F1B5D86E7231A37
+481332413CEB73BC08C76B6C5184922F581C129EEC70E89A7B240328545BD9E2
+B8E6DC18CF332CB0F9F03670A7F0B5CA0E2987EA33BA63167695C3712441E10C
+93CE0C6243FCE13402CAC4BCD683027DA17A2C7E478DB36459A8000412832B87
+9446B72CA56CA42AA5CD0DA39888122A244A44A80EEC20448DD1F1E28655C6A8
+106ECF5B79BA40B8F59BA78CBE5B4EC54E88680127F3BE462CE0FD1EDE53A79E
+A6C4A94926DA195ABB311B085E210790FB64108675DACB73CC581F8886C6E8D3
+0F10429B0A8E217CC6DC8B5AC0DF4B93EFE88EDACD27B06236106A8103D759D2
+13C0295288CB71D7FDC3DF0BB36D72618D68364764543B074D5CBBD21685F263
+B2E24E7AA4C5F88400DFE963E800DE38094EF07F4920F5577A205860814AC32F
+028980AA50C142D1C7684C9B612C4E2F795BF23DA6258B6CFB57FC0114165A01
+154678F65A3693AD0D1F47143DA383B67E7DAFFBB56F107A21398827E4743FC5
+26DFEC46C7554777F6C2A09F57CE3D816CE6B29E56C421B77D8D1E27A7023315
+82A8DA072C3CD14593A260B9A1DB46B32ABA37096EA207EF7BD4586C793B4E79
+ECA64A1910237B1DE8CCB35BEE7CF4D90429933F9AEDD6975705E0B6E7076B5C
+68DDFB3DCAF5D1D5D03A357E634529669318DD9C6246D25AF11B3C9BE89F51BA
+98A554682B3D14EA132BACB567EA7014998398FEB89FDFB15C0F3F9354BE18AF
+E8C724524107F9A2A50F68F9CA089D92A583ABCB2C6145CB69492BE91D3E606E
+4A6B95DEAE46C78ED5002872F45E47502F6C5BCBFA9793BC983469B7A269F976
+E57866B1F040B428497427D9102EB029DB3CBBEF9666CD4EA4B90E4308F5C0BC
+8CD70779EE732E658E1CDF15F93D23000A8B5931B3A374A4446D7355A09F0705
+3B304576E513E9798BC26169E47849BAADF5F29D659AD46767E2F9CBBF7CBBE4
+7466B8268B3C79695F5B1DA26BAC05AEBE42ECE4448248B3C587DA07A7666977
+449DA221BE24C1FC96B9DFD899B407231485FAAE2CBFC4386D430A5F51C2ABA0
+4D72065E2968A391A93082C16A9284F2D46C2914FB4062796AFBDB1AA37CCA25
+AFDB4634F657B05585D27F26BD0C1E15D28CD2CBB3E50D170A32426AF5081458
+5BB9849DF9DE5A97B9FAEA704FB86F94FA65583379AA95BC9CD480BA8B231559
+DBD1FB713E850B48A46F3FE9438B776665C92EA6F8829C6682312EAF98F54129
+500974CCC88A669AE28B4B151E4BDD88981EA69F62045AA359F37F3C30197F50
+EEA5C9166F0145C7A20F2751558311A533179C319B77E01BE805304D55262718
+D0B02F8270B1827AB31A31F956E14EB1DBD1274C96BF0ABE832105C345C60B70
+148474D02C650DF8E5365B9696BBCCC51D91550FDF48622B7CAE247D03050E29
+CBBE3F0E5464C066CC52C14C8C7AFD45C0E71B9DD48526304687487E42F381AD
+4DF6DA9F9E0C0C52A3941E32431D19C15F06077978C0D106D8E740E16FE97FAD
+A21F33D75151DA69136F54C0DDFE0BDB5A8A73C4EC216A4DF973CEF7DBF6F2F4
+C33DE0DF6B2794204FB0AFC4C0093CDC803BF0CF63095D5433BB06F9A2E0E70B
+5F07CA323FB85C7D7241546C0ACDB08863F7E5B4A18195C2FD530C557A228386
+EE17FB880110022CBC6F29A46C554E9580E9823D5FE9DE56038B20C30F07D9A0
+2E5FE7819AEEAD56B533F1C8A42993CF8F47211D83BD2FB3DDD80C7BAF2CE90A
+D1D60C739190E851D6F1C4FACAD0AAA648EF6A9E62871C6A26FB18FA9FAA8662
+742347E800BEB927A2B37CA7D9BA3B8EBE446AA12EB5D1E63FDFDC427B660E4E
+3686C40CDCC67FDA475E1387315DCF4B6C30A73D1A984F0137DC84B0B517A0F1
+7A1A514DBDD5DC14428D77A09CE815E7D00E0430248718DE73A87494238EE897
+9AB2090094C298D9057392D917F151EE5865E890114D14A76735A9F87A4807C7
+10A5FE49F54B8694947D0272352A273FED6BDC7920CD37C4764FF17197AF921D
+FF1495830C7AF3CD27F0FC26858BA2D78556D8434B0AE4799830A98D5F395ABF
+21E88B041876553F04AB5E6CE220696BFD075265911026B195849C121DDA4F05
+450F7E244AF77F0459753BE61D229A0157EB92BFA16080AF62BC38B58F2CD61E
+CD3111CCDD4AEB64F32DD7C8F5F8E5F7ED4A792147F68989B26D5DB6DDA375E1
+8505E0DAD440246AB8C04EB1315F77F7B0921914FFC2F33202A96CEA7A903445
+B383423F6CC85BDE2C3B4C4DB1FEF6C1D20C28633384310D8846F5058B45C3FD
+A8377B461030BF959BB4A7D3832E74329F87B2E311CE9F107F61DE38613D7675
+432096085FFA6168B74E2261A1B0C94C49C4CF36C39D97AF4059A720BD1A5047
+B5E731734DC2BC812500804CBD7A410543CF58BDC34C9D30550609773EE0125A
+A84AA3F8CA75A9858B30DD4F6B023AD023BCBD699215789948DE8B861D9A6A21
+854AB7AE6B1176A61252BE548C3ADA089E228A4F1EE240BF9410802A8AA21B73
+36529F84FA1DF1DEBBDA375D6D5307B694006C84154E822F89271B163A190217
+73CD07ADDD4317892433C70179055585198D78ADE49A8ACA8D973C0CBEDD2717
+47639EF4EC240A39914283F51302CFE83829E13DA229F24B2CCC9D4C2FF92D4D
+241FE21DCFEB6A56D3464425758DD9F45E6C16B07151AF42246FC72447F389CE
+D60B44BD9D50ED42483DA33A245E25DA5E3450E8EB4824B148C1B3E3174A34D8
+E2341137095F2D8C0D199485E7F182DE3E4310B29A262C084BDF94BBF278000D
+2A7392F34AC33B60B2902BAD7D533FF7CFA6B78DE48665D2A7B6E495C1491B44
+CF1614A4F876F8B89D3E069D7EE33CF3411142567E81A69DDD1197E0DC521013
+4B4FCC896DD9D84613CB6B1F59B369E634AA311D2B9D25C139F265442C2D6F1B
+58BF9987EA3BFCC3B342ECCA3474999ABD581FE83119B40D4089828F94F9B0B2
+456952459F78AA4317E721CA77F064E119409DB1B0730BCBCB20E29070F989CC
+B7BA009E19D64B093D670CE7A1CD1DFC2C8D5E6978B22A4D28C91B4804B4CAAF
+655D80E3004B7A8554EF7C21A3D3E30CD883A30ADD3F487C22832EDA94953421
+54DDFF742DE42C61E5667EC1894954AF780BC02427D45BA584C67E708E60FBD8
+99B9088C59BF47B02EBC2035910111AFBAFE8AD9BB2208E02D4DA3D157EAAF3B
+631C42415FF4D0A09307DA4619514035B2EA4BBFBBFB5089858C19A67BF150CA
+064ECD6E129C444C8E138D731A0E2CCCCE78DC1E2EEF56324131502D7EB7B5BC
+9EEEE7B01E8456EB2E790605913E923EBE60F9036AE25B767F8F331B3F739FE4
+BF0B93A446F7B2D03CD6D466C973220EB3F803B0DDAA16A9DAD8DF08E0EDA066
+9BBC9E22725A8FBE8D6250D70C0DDAB7D0D0C4BA5229CC0CC11098EEEAEA64C4
+A01EE78EFB12431445408AF72B06CE98921A02496C99ABFC097FB7C8F5D8747D
+820EB65FBBA1FF651E6A1B74F20C1F14F5CBE2DDF269056030F39BF61969F3B0
+84ED2E344E625F717A17292A4A4EEEC69554073867EAC505F80549A49BE231E6
+D6775C473D6BA72688CB3F480339EF5352745A37CE49947C9C828E2DAF8174B2
+FF234A4C87569C2FDF34026F718F85A454E6CA74F14666327D7F1C3390B50B04
+C9DB389CCEF5155E16E6CB82A1A4190588B419E0177E1254FB27305A85865E4E
+8E5E5C334A08F74DC71B56B74D21CBABDCE47F80C492D459AA79CDB1974DF930
+295C89555D51981434454CAFA92C13D172560BE6C9512F23F647E9F04DB7C4BB
+09A5B78014AB270742565265F4143D245726F0E9A43E78F0F3FD1B27A7CC78E4
+B9EA64918AD641AE25F193DE29D120B878F98444ACD8B25EFC64147ECE439AEA
+10C99DFD417D29B740C1EF0370679557A8F57145D990AEBE8084F765824613C3
+64A27662EF99A4C2DE00AF5D900878B2BAF94EA6E652708316059E6A8310DA80
+B5F96E6786AFF1EC107D69D5A98438741C2E9E2936E77AA20ACD49568080E584
+29AD3A3508F7570D76D01209F22FF2C768C0B671CE188430CE516783195EF9A7
+F3E496D706FAE419EA39FC3DF562E59EE2EABEDDE11348E36C8BA5FAEB1761D9
+D2D6666EDB812B85C0465B047DF52F9DCE952A29B4CFDB24761B30518E658211
+9DB2FFA80AE409444CA15601983764B24D8637262BAE7539D3D3697928B1C81E
+FD463A064007D1EA34C3A64D28461578439DE0C4A907A0CDFC782280B88CF853
+3C62FE17119829AF7BDE0A33DBDAF65DE1ADE3F20238DFB290AC8F2C46DC2869
+45FB0CC37FD63BB83EB4FD787E52BBCB5F681A21B2A80F1119C3468F52FAD494
+31DE770D3D6D6A7618B346AAE4905E5812A237C25773568E0AF20BC74A2643B9
+FD460FDF6A7DD9782DA65E36B4D7B4B0D5E90CF51AC7BAA965724F8B99DBCC40
+E3124864A7E0A2EB58822AA2F2C52E1D2D3E233F491FDA3468D97E2F03524929
+4BFA053BD1B3C89B9CE560E0E28E0BE77A41CC5AB12F6C356F0DCFE4A72B482C
+61ED93B6D779849717C93BAE725E24A1DA3C9E4D806CF0D3A9FB592B6E56F5CF
+233D000659A4F941E28162BB098CEF972D070D7E902F33D617C21093F3B3CFEF
+1CB5E5F4B2D38AEC8D47F3F95FA02267E55B1C0FA37806B1AF5E1A8E7C3B6A31
+8B5DA830A2294B381C92DBA3EE9DAF149EC699130CF226A86970E8D3966C6173
+644627C954FF5A7F07A9C23EC67D50B3A1A53B4E8598B82596F9992D79F60C6E
+0AEB8099641EE685997E495B8A9CD65755E82FB0F4B684E5CA386C98ADD39497
+84D3963E91834007AA952BA45295DF7341C0EF8A9C30D49295C90DA72B5F496E
+54A4BE33DD48A624431BC08DC2D372CA15E93D1258F5D84EF8E807D9E1ED24DF
+19FEF593A79C4EC444BA9D981E42B325BB458CEEF30ABF8B66E14FECD147B535
+8F083045E43FA145C8E6E2E4CB1B7B391F73C15DB0CA09A813A52A6643FA99C8
+5CEA37B29E0DACCB155065C9ED3A44E12E74984002CF7F5915DFB5CA5E48D364
+6E908F19170EF76F8EFD0219B5DFD6CEC0F83EF6B7F76A8A0D160023AF2C8BF4
+62E4176C1AC70BA6F0173EF1350FBBA75A47EAB30B89AE8ADFD6E59EF5538C24
+721F92775E38A224977F5E93570FC01ACF54EBDC5CFEF5EBDA8594D8A4BC5806
+4F774EA925E1A8ED2AC6E33E28E626BF7A2A7F0C3DFD704ED2810A83ED0657BE
+CF1033BA112B13A3AA0940359B307A92BE8035EEFF50AFF1982080D31B79116F
+AB21B655775DFC9F73932A919935869307067E518D06CF14B2ABB6D2755620A9
+5B310A4FDF879914A0EE815F5AE1B20BCD52A3A47FC4962337206E5277BF694F
+874A1FC314238457988ACD648EF253E1991B7E1794487131F8628EFE85FAC00B
+B53DC040BD8D1F48F126A5CF9991A55384D63CDE346A048719B0AB2288C2FCA5
+732F736738A42664E351D775BC498A0F959C580070A69223F75C8B6BFFE627DC
+6E0EEF078FB42FA840073DD76474D4DF3B46908ED2469480DBA7C4FF93BE2C43
+7315DDD749AFC7C2C1BE9F74637907D8E6E9361742F30724788EA19D0AA98A68
+60072BEE795E5FD908535522D6301E98F651022353D24DAEA3B17FA928B0100E
+EE1BC3D43E81C0CD23F4D66860198418A5B98D7C4E571C67E0F79F1AB0461B80
+0AB65A6D5E39710CA081E0F11D3E6BAAE9DF4DCC69E0881FB2CBB31F26CF65C9
+99EA28BBBFF2021EA9BC6B9606D18DE7DB95F6004D007EA1C482BC4C8236A4E5
+BB4786741CAAB55B54EDF70D11A56595F45EED2272DD5520248B20021B56426A
+8BF5F619EECB12DAA7D5937E78D35716E103DE39E43497A0806FB91AFC16D82D
+EC70C1627A4ED4AE6A1EB701D18335E9409E848298F0D78ECC0335BD61D443DE
+69F21A137FDBDA37E4E902781747F6C1184DF0BF1211321CC7AF7BBF13C028F9
+EA1D7EF42077BE41F7FD4D78D04852A57BCCD67DA86D3DCAB7FFCCB499D117AE
+48B8C8F0F6A4B0D39295690268868696905E6FD5A51FA4C268189B01E7FDD40A
+D70FACCC133E8EA6B25C224A6F00B1AA28C26497DC8B637821123111D450C1C0
+CF9258FAE9F7BA325989B407EADA1E0D20CB5A9E7B5505C82E3CDACC296B5BA4
+188F9BA68506AE3EC03904F940CD96B2A87454FF03586F8653A1EBDDC9A79491
+FF26BA421F33A17677A08662178446C69D8866C889C7CC962CAFD6F622FC0F4C
+FB5F636094385E4886069C88CDC290C9D0A63175E9634CB25C6841E598F8506F
+E906CD57DFE62EE59FD7565339AF6DB6A5B3472D1F721820A603F4A3AF4F6407
+DA96084FFC8F5A6F801FF317ADA012BA98D8FE5ADCB424239CDDAE6D339EBAF6
+ABD506B70A486B7630DD035A461CD1A95F903749BA088B32C3B207241F1BEE44
+F9D38AC9B04EFBA694AFE9B4F8851243A4BAAC4D293840C679809C1AE56CDDFF
+700ED971E8B86E24F82A2457D37A4EE4B485458AAFBF1AE3E092EE0D01DDE885
+AB06C6FEB2F09CA4CD40D67C514F6297A08C32CB49C8B80904B7A3A4117BD314
+A020C7A4F8467C84318F95711B6E9CEFC51AA36295E71293698D1A5947918406
+C601AFDFB9A8463E97C9A5C84C41BAF7EB4F85633A36F231E0ABF2ADBEFCD245
+09EB85590D76D20FAC8CB39322EA3B4254CD7EAF65690012AF929E299591A0EE
+15C091E5C38FCC422F42365F5891F12542C74F9F2C44DCA23AA3CFB7BEB8671E
+FF6AB6CABC10D8B5DB7467ED20FFEBB0380CE41C50831D822EFA66A75E01A63A
+EB69D6CA8D1CE7C3B7E71E3B0C3B50BC23D908FE8B41655F2FAE0E14F6BB1440
+746ABEFFC07A4E45B0AAFB8E06F24CA19F6C9AADA256BE66C6930509D2E5456F
+820742F58159D1C07C894E1845C23AF3EE398107C847141A8E79842B05672C06
+94DD549DC713303CD56D34D7ECF3F742E90A5768624010CB182C5627046232FC
+EAB2B1FC6D350505B31416727CBF643FD96BA36F11236AF6AA50E01D95172279
+9207ED11AB16A959374693CB7550ECD890D47DBB9B6490EC3652A57B01D6AF59
+5146E651C8582DEB6B1A2CAD424BE721245131C56619E533F2DDD870F5BCF33F
+7423B82987F2BE494353511098A79E877F399CCEF8F364260A75824FEB6CF2B3
+3C050C9347502B1422280726A4557429E6800BB44783058864F1ABE1B47C06D6
+55A5BB4AF3E2A92EB24983F29FFE0859D7E59AB44D075936EC4BD1D7B099D9D8
+47BED57148F1F0943AF7860B9A97DB1DF736519408FBD8B55D17A82F3616CFA8
+81BC9F0C858D260412D329EEFBC78990D620358C0CBBFA69833A4310C8EB248C
+945CB78DF160FBB5F0DCAE4F361A266591B28B0FF7A7A37A7966080FEA5DC74D
+005269115A6655C18657CA6016962B20E312ED609B98FACD79E915BD142EDBC3
+F3F3CC8C5E5189F806B9653E4A29C624EF94DF96CF6E7724106E98BEB854771D
+3CFBE6938E6B883FB408656B2BF7CB89A3FCDA22157ED830223B5F409BB1DA74
+9DA9D8F251CC3A96D8FE81D808C853E5B7B633842DF8107B9084AA99A40C61DC
+61AF68DD72A265BFA791BF6C58F9DAC4560CE3F7D524C90030EB59677BA65F9B
+2E9FA38FAA614F69AB6110549C0605F74D386D8D1CF69DB27BD3E7FF4CBD07E7
+041C2A5512B68743EB93656F8E16F199E50539638A82630BE12DF63B4F1B9031
+C82BBDBC33E5E18491B8E4BCDA93434D390B204432BAE3EA6F6FB1F8797CEEE3
+9B4D7C30610F3722697F4C983CDAE23FC93E1BBB420D9B0833FD671DE5913EEF
+DD3B39B252FDC2EBB6941540918C3D91AA01BD30B773CE6999851E1F2BD1C5A5
+496EBE9ECDABBAA6C60B59DE94F534DED5808B9B489D7DBE9996571B25D1524C
+254730899509F971AC50936882D8BD2C70B10682EEF59C5C827122E08E8691BB
+705AF47C1493A8CAE717C08501F359051C3EE46EC9F85ABF1C9E0C0842D33192
+CEB81005F58237A5FB85EE2FF0B2FF1BA4636185418D6B5E472AE3AC11840525
+86A3BB294017A337B8CA9FAC65FAC81556BAFFD45000E5A1F6C8541A872B61AA
+2BA74B7B933C743D25DA50E2A3C54CC609E349117A823BD363BEC4E26FD16B13
+3DAA59766A417CA1F1CBBD9C14562A3D57674AE504FF0F0DDF982E1648073DCE
+D2512EB6F530445B97BB65B751F59B9B9F09535B947869D0C3B326730441C68C
+D5F51B10AA63CC35ACF82A736F1B96171336BA630CA702A8FAD6C45FF806AA85
+68B49917A090B906995D02799BAF9CE0EC66423CE4A0E1727207F3715CBFB63C
+41AFBE792539887FD2F155580F00C55597F9FF6BC9E9DD870A8EE87EC14450F4
+B177AC59FFC226C5E14F3ADC7FAAB3C7623668AFEC8336DEB2CA3A21585D5A68
+715D1252924F085B16271486E04503ED44637613F87FCB51B19D6EFEC116679A
+9A84B3445B02E27AC2A2311C3275A91EB8C48B461B7E0F9EA0A01B4B5A0C8F50
+97796C4ED047515F8C9CB560DBD2D6FCEAC677C52158BC657E385B9798B1B9BE
+87EAA9FF2E4EF5F80D54C55AB03A5B804A3F7A0E07BA8904374CCF5FE7BE46CA
+81C2E3AC8B4469D3052528419A55912BFC2FF9E7DE1CC078443ABE919395C896
+7A6FF94A49A808AA657A93307671A8832AFF38D10271114EB1FAAE2D8710DCA5
+AD0C20B3FCB95707EBC45D0F57A1E4313FA5ECCD956DEB34A7F59065CAD4B034
+E2742782183D9D3EB8782A0DDFD14CCDAF1AB45AF4F6E41B746F9C9361F20AA1
+1177ECBE62D49C11D7388F8DAC931162D3D91D9905BEDAA5DB7BDA13F2AB972D
+9F06A9D9672A0B41748CC4B3944E2DE8D1A9C083BDE487A33D7D5EC7CE8C61F8
+2C357544A00114B2B79807D684F465965613F83E9AC9034913D78197BC9FA434
+0F594A50CD333AFC3C24AA7C7D9FCCBD7BC097ED98820EB9B60538183C60F786
+6AF56DD6E52E4359A147EB598B2F640058701C065062BAAD55D7C37424315A2F
+BEC4089D750EB85400A1B90902EFE6C3E6C9862220B55896036C24453DCC28AF
+BD4C3F08CAA3F552F87CB55064F8B556C10FD019BD1007FF338ACA4CA648AB3E
+2AAF6DBA283DE2E55616D59052D4A02DE6924C0A88E013E153A6EE63312FF334
+04C16147A0F111274F0B068CC6A8ECE8B467744CD203D61B19E186BBCF333A0A
+CD686089E36C6BB25DF4C067B24EF8C16BD2DB772A14943C84DBDBF6C2A990E9
+4580FCAAC95482714A0AC90609CE52EC95FEB762CED548A6A7BD2B5AFCB39087
+0B7C282E6CC5156328B80389506F058FB16FD06B69192A21D24775249754EB41
+5001B0D7AA2F87BFC457D68183C69F789B190770E91B77EEA53AD47BC6031A77
+C95EDB1D8CF87406CFA242BB3F13D2E7D8330917B9E41AA75BFF8F9CA5B991AD
+07B90F7AC69444F6C46CF46AA8DAECF0C89146478215F17F2EA4959D7CC7D832
+C54952E9D79B62BD04892D189FCB7D0C92EE0843600D925E12D7558B7A84898F
+4B01A41A7B499338E2A6C265E116DEC3782D1E6C41C5DE81063EABAB8BBD9530
+7647DA601E9F9325EF0C6711DB935D6BF0B7E9BBE2440945403D3BA0637925D7
+41D0F7B813883308C98C415DA2D653F72DB19E74C17BD35EA49C84346A9288A7
+BB0FA7D2A9B823326551321FB3A33A0CB7DDA9448EA006BE1B5D7EE96F5371A3
+9A9442D7ADC9E5B52C5C2174570B5AD07095CC1D0F944B83DE8C4B2062CD5799
+BDDB662AF9FD2354C432B436A5F2B41104362BC5351EFA99C6021FB18D4122B0
+5D09F3C1E1D9C4359D37764674037ED70A70971E513130B9EA286BE8F30E3999
+5F32F64A96C6910C0B7CFF9EF90C676E0D1DFA0D2D7E499A141A8E56A15F9A58
+DBC552BF95F9331ABD9EB85732CF8ABE8E20701FB68AA2D22BE6FAF9F8722316
+6680E21150E27426BEF5E88F6E80AA7D1AA49AFF1B926BD9D589C13A5064A65C
+988190EAE178122C65F7A8015C4292D04EDFBAD8F9DC08A23B1D07FA8CED98C7
+A87B8CE93E94CCE6C831765EC7FF25748F9D9DF66FB5698FE3DF33E426E4E5D3
+09221F1221A25BF840AC12AB8C152CE44BA21F8AC87101CAC0907A57DB4368A6
+B1DEAAD630900665AC251CACCA23E35EF6C6BE86AEC635C113C8086EADEB1D67
+751D2824330828323CD28F5CB4EF3A0E0BD6099D4A9EF125CD79D4891EA72C2F
+78A520A4210310F0E96A62726CEE5E35C0F8DE0550D20B113A72231B5CDB0785
+50AB127ACE1939F5E56A3988C2D65562CE1DBC25DB6A92A062F0E1EDF4AAACD0
+2AAE39A3841B7FC7D276E7ACA710F09BB8D5D66DE94C87746E8BB498E80AA8CC
+649F7840E5E0E2A2621EF82C751F8D51DFB47755D017564DB5BB79C5EAEFE898
+0D17D1EC33329487E695D7BC7D2D179BA88BABF904D9B220F34971BE385EB9EA
+EEADE95619E1A9C2E1C0C196D24065FC2EB344F837FAED594614BE8226C3B2D3
+1D270F8DDBF81DD6BB83DB6C65726FE0571AB04207F2E8AFE21BE8BAB946E113
+71B8854BBD3E635C373F46C64F2D6A037D7C7C50F0CBCA927726B2A7542AEF3D
+F951B9123DA0DA1143CA09795EB2D9064AFEB000F236A6741C3EEC1E4DB695ED
+D526A0DBC55DD6553EF1136010FD4497597F81413D26FAB9B0F946D624E24BE4
+1A4FD6D6EDF4BCD1D4CC549ADA159086AB7E6B0161CD2906D0217F42D63F5975
+CE7DD84DBDA69FFB535353F3974F672B90C0A87C00D544CC50284788E32C62B6
+F6E5FCF7893B1FC47B229667B762340F9D7EFFC8368CB5D1322F78370EC543DE
+05CCDF13CB82B8910501098309309BDA192AAA1AC85FC11A044C5CCDCE1E1BDA
+49621B4D8386293CC082B075D707AF1C3ACC5C47643662EF76A24774F31ED87F
+74BEB03DD7EC896C53A7BD9FBC86C69099941439338FFC1CD1D23AD17291AA20
+28C89CF4D59302B8B27CA61C6C9B9732C4AF8647BB544864360E52E90177E6ED
+95A8823936434E9638F76A21C35E4B898C2C83CFE4ADB511A630E8148A517CFE
+D43900F5E57A5C52D277A0123057E43B114895AC77ABB3B19D986BE5DA8428C2
+163C8B33767D0724AC621166F63B6E8E37BC05AB9D835A8F082A8ECCB3285E58
+EF87CA67F7F1D89010F5207CD9B5F37CF8340BC2816E1893FF06D5A881ADFD62
+BC1AFB066402F31689DD8E7254529E2C5C88A6B75B84970EE22F372B7FDE447E
+911F47FB4A205466DBFE4AE01B38D35B245736B5BE0919399F2D2167ADE22B57
+28F55B2DCA988DDD32B433C3111EC9019609D2FCF2F12AA892CD5D42808F6DAB
+E604EB54F50C80E0B6C657C4FD4181E62CCC824861232EAEFCC28CDFC156C04C
+32136083FDF384E8D3860D93188A2D8D27C6872606275EAF345E428E7F058F8A
+CE2D4983AF95BB49FEE80C5D4F23A71A29D44001C0C280740545C02345B09081
+33252932B69F972CE14B88C9EEEB2DB80DEB4F59E5A5B58DAB46CDFC3C5076DC
+607676E23BADB17AB1D923640C20E23F3F1E866DAE7FE51CE93FEF101CCE12BE
+3C48044FA8BAA5011181ED9D4C643E1D027D0C78D586EABBDF04E60925265353
+59CEB8F413C85BFA6F848A2E45F4A0A975057885F17EA6DC094CB396C36EAF5A
+5B12CDC788771355053BD828F6ADEAD24286569DEAEA5756197C90EFB73FC71F
+5A6581B1BCB560EE7D6697BF80D963B712131DC44EDBD9AA27A936C9711BE2FE
+DCA11B986431FC21C9DEF655265A3AC996A08374D0D387B868FF015085237261
+B4803330FF1C851DC90885A1AA053FCC8FA01D1EF106FA0D8B01D1E9A9C36F87
+289C7CBB94BCE8A149AD79D1388D9473101457623CC77CDF65B90F9FE9932B9D
+D9529CD003AD4EAB1FAB9B1394D86106F72B9B10EC7F86F56272E97DFFA30E1C
+C86F677A3AFA416A60C1BB594169409D7080FA8521BA50F9760B64DE56B5DBD7
+8873CCF5798B1FC3BDB06A7F5175D995192A40A680EF2D2FDDC19578F7D4670F
+DE8CACCA984AC883CBDBCE1C560BC3F19374CBDCB48EFB75E1A7347DBD7B109A
+E02A12B3A0DFAE6BB742EC39801443EEF8899285F6BDEB86FF2CF309C3C7DF54
+1C351D5CE921879B36C05926759325220C92C91955640F7C87120B2EFFFE8879
+DFA18FA1C7970926D042388C2B74B9B24DB23310092409524ABB748EE2424DAB
+52688E625EA110659F093B5ECEC56B502B471C597D9B78825BAC7457EFCFCFDE
+6FC06D72E6B459A58F54245CC6F5801E1A3F81DFA04DB5EEB8BE28FB1135649F
+274CFC4511B35E9B6BCA814B27E61664C83BEE03D5EEB8E5E381E6A3777284B9
+8B1D1A647544EA553526041AFFFA6AEF8E6053A14B10FEA4651E2C6C97659781
+F6AF4A23B3E3530FAE95696758CC3087A71244AF584624A6F14288F14C9A233C
+BC76337B32ABA1DB0A4AF7F0F145F13B0F4E6BF41CCD344B56E57EE4173B87BF
+BDBB4089DE7BCD7FB127CA30F093C7C6DA3F42A6E593347F0E7404C07C47A965
+C3489CB69AB86D9226437B896209DC5D0AD175FB195EDCB66285BEE1D8CC09F3
+8BD7E4B01AF606BA797AD8552E01B077E749E69A7074F03846EBA4D7E54AC504
+0129C40DFA0C3215CA7BE86FB02751BC1BC0A19B07BAA5F8415AB7C5F76D6AD0
+BCDFE4604159BD92C6EDA22290B3DC8113DBBEBE6F9C75993BFAA6B5B83EA281
+D5330AF5F758B2D45013EA4234BCFA93E1D777E5077DD0EC96603AAFE58B817D
+EACCD5C941015E695A531136CD24897F3E5D212120DF91CA0FAB76D406C2C640
+1FE2DF13FE8219DC1D0055C616700CCEC00370A8788B6E66D80CCEEDC72647AE
+FF05877EDE1C9AB22C948CAE248470474260AB3E927B9BEE44AB04482CED59E9
+E754D40499CCC17B229A83FA8347684A88D109C5BFA69C79A8A9C9DDD841B181
+CE9270799018ABA2920B121313411900148FED4A106780FBF88A00FDA3C714C2
+90C9E656B8F53C3A0F3177B83C5CC17DD2B5B37E7DEB61ACBB3B1F3C0337B557
+2D41C42D3637F450082078F3C37D884A5D726E2ABC00634F5A56E39A53FDABFD
+010569688AEE4F52091C5ADF26E9CB85A2438D89DD0CF1D291990AE37BE87527
+17073D25CC52FF8A022105A02155C74048DDCE5DDB39610A6997BCACD25066BD
+D19ADBE46D2D9F1C4D3DF0FEE5F90D5AA9E80D5D71A6D32F1193356C3F4DA140
+FFE101FFDA2E9C8D8ED2C5E4B9FD359A2E61AECCAA2F4D3DC9323D0D03B38ED3
+2C8554458D8F1382B65B890E271578FC041D208BB9405E5D791A7355F2E5EFB6
+29B15A5C6A408B430B643B6ED36DCA0253EED99B21269B1B8071C3508130AECD
+0AFBE9DB22F138EA1FE3741F052CC2D02EC806A1F67FBDFA171CE59DE98D4346
+C335E7594F746BB117B7E86DDB51DF9F19BBAA0B6380734CED50DD8A86C800C6
+13F43984D2D02DC389CE737A42D2979E55EE4F4EE0AE483476372DC40BF9020B
+D071ED61882D52904FAB83E305BCA99BAD33244BBC61E95A9C8B21F4FE65C716
+24F923923E76DBF04BE37B8CA7DC5E3B9D163ACF4432C7D1724AFC3B64A2AB5A
+F3713D0E3603175C78907716EAC3C6E26CA07A902C0C9A8591CF72BE7D3B3F20
+D196276331F3592FF6A3054CFBF999588B198B1B809FB49A1C8114D012940D14
+07BDA35DA17AA4325319FD1FA81FF5B337DA096F80B49CA3444C5555134A8D9F
+076897646EC73AFB6B435ADAAF22A57F8C321B44620A12173F5513194DD1DA71
+BADF676BA6E1897E3042FA3576FFD6FE39892AC2062A51B69D6699809EC4FD51
+9CB934575A2B4FA6A1F9075481F132BEF726530A0C188BD9708A4882023C50C2
+535FEB4BE079BFF6440B11483C786C1E950925CC709FE67C81C5D8B6B33D510A
+28DCC16DA96C890B0CB870657FDB8ECD41F2575AD993CA98F3EFC8540866FBA7
+21C3F5B87C4AE77413AC72FFE5BEADF922681FF80E884707290BCEC4472E41DC
+C6E085A0677CBEE515BABFCA7B034561BA812AD2BB799627C6D0CAB63FD774A4
+D5EA8545C538841C5932AF47BC56DDBD6363E3364B9B0DEC9D4EF00A258C9DBD
+B990D37F8659CEBC5E8DB642A38C3354D01B14BD4CA53C4B01019BFCE27B1DD0
+9CBDDBE6673D1568EE01EBCC07EFEB92274D8C221A3C8FA0E4055421EBB92B1E
+8EEFA4ECDC2363EBFB5819CAC8204CDAD3262A90D6AC4288A6CA21E0AF7BA8D8
+C175F5D44338B2222921B0C38A58EE2476BC60B3A3A803F0BFB401979D7F5E8F
+36EA3B7001257D88551979C203C6D210C162948C3012C7960ADF0458C8ECA548
+48FD70FD99A634C4937688963484C342B79C2C93BF9A9AAE55E4F55E1CE91721
+B21849DB842C69839DD59B2AB1DB3A1F22F34F17143CADD0022DEAE07BCE5987
+107DF4FC609BE213A562DC6884CE7F9DCD64D77A80EF3E137156A4B2E2EAFB85
+E02C9DB3DDF9C4A62B7CBDA34C757F85A6EA31D9BFE6B278CE3BF227EF8FED51
+D597C3FE312B0B25B856B22089DF727D14F676F05D083C8A37B50A6C98EA8E1F
+35EF883340204BF93B4A63ADB4B386449416F05EF04A3AA3870496EE3175F254
+1B3E4AE819DEF164C91D222968CD21B4031AD28892A9BDC4AC6CB4BE1DB8BF06
+799DF3AFAC29A64254762EE6927D89E2513AA0B0002A4323361BD4B5A17DF785
+43655A37D1E3CC209A7F492A9C6A2F5695267433B8AA602DF500B988C62F9E34
+A5B7C58F7ABAAC501567BF6CD5098C20D1E3B5C77EC92B1511CDC61B5EAB7D9A
+FC4F8B8906C6A7E39ED17D46ED9E26F18929B7C06BD1808B3F898ACFB8E49FA6
+85B91092599150F994B0A5134D70525D08D11A5087DBBD00533313A1D3C1E64B
+600CD75B8600E9C60BA20A5045FCE8F438FCBECEBF02E5D5588A648F6C0DF89A
+88B625474962E115747A6700F1F506FE3A51D4A79033572089C0989FFF264039
+38E298D0E86CA2F07C0D0B1F8B4B9599CA17EC6E8CCD0C235DFCBE138EA2B990
+993003AEC8C49ECD2DA5D88D5D715F0BCC13496C41DD9C776555C2B26F73DFDD
+ABBDD08C82096FA9A29671ECBDA5FCE73D1CF9987F7E1BBBC447702C6500E57A
+8F7F5FD17131BCA56B736895130BA374F2957485B51C77AFE0451393FB8501AA
+AF0878250D0E8E7B46D01AAF81E6DAA5F80BCDF364BBDCBBA488782751BE22D2
+8EEBEEF84584F5DC407D9741DB4DB6C7951F0FA959F7E961C7EA92387F3488D6
+A51236102B42A97C89D1ED4A6D0C4168D2F6A8D8E7F80A7C8251D1A57A44E235
+F7FCEF80ACA698BB223BC433F7A6A10BEBECB3FA01ADB89DF04C65DC09E5A468
+72367C6A3020D04AA4ACC86B3109394EBF3A01694E32F9BE212AE03332987C36
+6C87C689219DA1410F58DA673F303F69211BEA57E1C025853669EFDA4A6B96D5
+F4B0FBA178EA4DFF0B6F315CECFD7D5C6C4FDF7AB2EF1700A83009081D071C94
+439B5B50FC9332CF723A3E64A42404294BADF4200E2B3360BC8B600FFBCFA5C1
+90AD5D06E1EF2282DF643D29BCEF7D20F203C173C3FFEB6E703FEF71D562DD03
+0F42AAE7863E5D45B40B63986759CAB959D3FC92AC35862F76133FA74260C872
+B6ED2C5C2E9746627AF8B278F6C443204DE6FBE2BCBF494A8389241E70B6DED4
+37E0CAD456109EF08DC8B98D5F21767212C0652E12B0E7F2B2702414DD0A8FC5
+B0CBEAA00F9C76F655D264054F7CFC1F77DCC5A687AFC58C85DE90CD20450DE8
+65CA62B6B3C92553AFE8058D773AA096B46C250F60B7E12EEE40066A2E3E604E
+C24A9B6779532AC72A46D84014B8887FC2D955217EDF55ED1431397C2A7BA609
+8E5D61BFDFF0850AD46A77D6A92BC4CFFF9CBB24F3B05FF7FD14C6368BE60B7D
+8E9D5D7DB7032D2E82201CAC96725E50CB6E16AB3BDCA10D9AB4F2F8F7000745
+B4B88B16B366279E0EDF98B1134B927467A32C20099E2C78F185AA95786B7F02
+9FDCC6E5C37302AC438FA9C5E14834235AEEB2A24B84426B582408C0DD2F8E52
+21080B7EE802D7DFF8524D8C0D6EDAC2FA8D632E43871D5866F5766C6AC92D92
+771073C834B756DB3C121C6ABCAAB2BA7C168F745BDFE3EA5B3A22CD40269F33
+8D8B04A7270E25056DC36E37A1EBD74613C3438B1CFED55049152F288D0CF69B
+3FBDF5CDA5906945069B1D44B19BB35227904A980FF331B0FEC3468601F673FA
+96950C5D4BC05748D75EE1C28FA46771DC13F172AC1834850CADD86EF4AA44D4
+35370B83AF5EC9A66B3937F41249B7A7069D546666BAA30090BB902DAB369A90
+57B7704549F4E39C1F534ADA662F11F08389F12C394F0765AD2CC3B2C68B2150
+20BD702BF62EACBF28AE1EC306C29B76E3A08CD2DD1ED7A348F9C36BB475431A
+2E0FD73DC744252AF0E40D5A3A2E5B7A6269C8C66B2BAD3CE3CB13CD187D848A
+D423796748D786586FD073D5FF5A3EB6C003C9511F3A3D38039D631D2BCEE92A
+0F6C9C2DDAB08229B62A3269460B3B6AF96AFEFE787B7CBF3CF24DC5187E5C2B
+70AA54A75920AA04B8E211CEB35D43FF44A3120BBE5107F3EA114A0D138F8230
+1C81ADAD29304DDF3738C3CC9DC0576B6988B1459F1D6B75B3D6E2825D371A66
+AE07D70AB744DCD52F67A6E0B78CA14C55AD127CD48E969E074A5C93D5AEC520
+ED28AE953322743C180333759379477D8C0DCA763EA0FC0986C8E17D512420B1
+7D0561A7E06A45C312966ADA5582CE48B4F129A4AD3E9CB93764B806359EDB9F
+EDF397BC1B77442CC6312D346906F332F465CC758637BA215998CBA05AAD71EE
+768A83DD73559EAEEC9ACC73E857E38366638CA298B5DFE75C2586EECEEB715F
+8B84A62A0D2D3A7BB06509A03F9AE26AF1BD50219B5D6D75DD5451AE31F158D7
+5FFECFCEEA0D6D9AC24B15E54999A8F1B88D4A68F9905F964EB2E4135EFB9BCF
+E4DB1B5EC68D394B19B8680D09DBAB45BB3588D181307566BDBA31AFF62CB911
+38CD930D2EC1EC0C268CADC889BAB3078FA6735BCDCC07D148A27853ACFDA3EF
+94725D55BFF213558DF732A06003F55AB4DC1CD388B2D250A0A5F5F3F49F4948
+1CFF31BFD280E00C4DF1731E83868654AD753C4CE3A30CD53CFF3BE16E790042
+D329A4E56A05E06FD6252B6502D450E6AB03D0993BC3FB73B912E0BC7B89B4B9
+C8AE2C8016F89FDB41B9C4E87876BD680900A8D7A2D222CC937E7DCCC6C4185D
+5F2CF10BE54D8403D63F6DEAACA220C6E80BE983D3F626E5E07C35F3625C0B91
+56D2827BD817F823B58577F779E27E6E72EA5883D78D536080636F22EBAA6E48
+78DC727104FB3FD7621805313B2DEEBBB46EC7934DA908741CD585B0B2AF8ADB
+D27B2BE500746840DD148024FB219A9FDAFED897EF8F7B3DBFB268EB6099C9EC
+425B3EE33FFAD9E84452D54B99550B6564A2434D72C3E37956BF6EABF2184445
+6924CB47EABC13AFA824737676E6E3EDC65412D68B9835432EA41096C0D27021
+A6B73685F20E93CA040AAC203D0BEFFCFB0B95304B18A262167EB2773B689B9D
+7A83F5639AE2F58F5B49AEDE8E72A2884FE350C2EE346E8456FC6B40D6C68FCB
+EBBE412108AF0C38ECC584355DD689CC598A47C3AA1B5C47D1A6B62688A6FC19
+F735012B7F75B2C0A1617F5382E878DA86C5661B8227163D6795F209DCDEFCF0
+F7C8124563072CF02E986489AE235D12A460A8E9E75B24698F6B41DC1B755196
+FE93836C7853656C7E2431E05C3939A294932B7B1FCC614AEF5C20AD2C0A6647
+4A1EA7F279EF7FA87A6224C56AC0561EBBD6C006AFB41F907623326595F19A98
+94D772DFB309760F1785BC5432261A271F276ACAF3331E0F98524D6EB5116760
+BC94623CF11FF84A669DAE11A355F36DDF7FC5EBB6A398DCA90AD9689E98767F
+CDE5CE420E11545590C2D6CDCCDF23F0192A3407423985386551FBD1F3DAE331
+A24DBBB20BDFEEC45AFDC82F97164A29872AED316B3C5810765C233D4C4BE52F
+4D5143078625A3EFE4747FE0736CD7E06C606D49E35E4B8EC68A4C82F3939BC3
+127C7B1A9706D3A6C9
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+{restore}if
+%%EndFont
+%%BeginFont: CMR7
+%!PS-AdobeFont-1.0: CMR7 003.002
+%%Title: CMR7
+%Version: 003.002
+%%CreationDate: Mon Jul 13 16:17:00 2009
+%%Creator: David M. Jones
+%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
+%Copyright: (<http://www.ams.org>), with Reserved Font Name CMR7.
+% 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/CMR7 known{/CMR7 findfont dup/UniqueID known{dup
+/UniqueID get 5000790 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 /CMR7 def
+/FontBBox {-27 -250 1122 750 }readonly def
+/PaintType 0 def
+/FontInfo 9 dict dup begin
+/version (003.002) readonly def
+/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMR7.) readonly def
+/FullName (CMR7) 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 49 /one put
+dup 50 /two put
+readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA
+0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93
+51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71
+7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551
+E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078
+0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273
+C01924195A181D03F5054A93B71E5065F8D92FE23794D2DB981ABA2ACC9A23A5
+3E152596AF52983541F86D859FC064A0E3D5FC6647C3CAB83AD4F31DDA35019C
+CDB9E3DD3FEBD4C2B36BA3CF6E6C7DA85E25D8A31A9BAD39BDF31FD0D1790707
+9DE6A078E8A409D8295F642DF492AC4F86AC84383B0F4C6BAA7C22AD5A898A71
+D6CB34D2CD12266C486B75E75A69C14819DD9BB8159088E04D4717E576B8482D
+BDA52110AC8B8A80E4E9D58F470EEBD3CF44A1E1EE8DA318FFF3611B02534FC9
+F4018C7C57E80570D2F634D98BE5D5EC6D95051157F0EA94A3D12BE0B4B79939
+F82F8D73136D3337C44E314B0B16CB030D9A12E01FB667105F334C3EE965E5A3
+D410D2F1531547A4497C355AEEB295CD3C5334BEE5232992960B757594B89F3E
+52095042DBE6B4DA3C3AD50CA95EA9EBADA10630B500CF1FCCA7D60306743681
+7E428D33B7F7C40B425CD58E4CD8AB474BCE6A307BC6C6EBC15A8A96E0E2977E
+A33389154536F5C5D8CF036D07F24094E779E5ACBE5502C92892F10F4C6DB627
+C7EC4C7BF20B39418A8A85D7FD9B0EAAFD871DDD41F93BDE5FE619AFB8711824
+DE890E62C1969A6FE28DD3578AF43D58A728FAFF0B9FAA640962C8F35A26F76C
+67F3548D6DB54A25CEB368B47F97EA2B0C4D7C0E7894A4F0C823C6C1922CF9DC
+10E05600556F1C7C9AFB33A2DB6F8730F70D6BF94B1FB0887451F2FFEEF3584F
+DFADCFA9A2D4846B8F0E51620E1327D994CDF973B837D10C90FF76DE22B47CD5
+EE3183898D156861AB4DFAD34A1E3FA260B8164E6680BF58413A553E88F6100B
+C4F4E8E972C81A5F88A7DBCDC308B4C3581BCDE13877B976B1F84330839FE5CF
+C78551620EB803DF94A5C921F8EE24F7EF8FC4C3E1653514212631F54F90E3DC
+E9EAF96E998F340C4F729ECF7AB430FDB7C0BE3DF2C0D23015820E28B743CAD7
+7F0AE95413C3EEABBC69E852F53EE1DC260D7F1E712BECEF2F18437DB23D8E74
+2902AAFBC733AC5BAA452DD6F3671859AD836C8564E99CDC4183D8495AFD99D6
+1F0D65B6588CE7546717911E25BDCA6C2649E3A7466A3E2DA7C7994A30AB4449
+672EFD00632EFA8629C1AFB7D53D801028F77C864869FE636213A69173003EA6
+BE1ABA95EB07B13D1594BEFCC95ECB0A9CFA9892EE0677D6B6C250855762B7A7
+8E4E022640F93169DFA0303A0D5E73BF3E0F4D4AAD10FD7E4EB20532BA30371F
+E9F480F9513432946F9828AFB5D4AEAFA5829B2CB544E5EB634C4537EF7DF08A
+A1CFD94A52DCF0E7CE4C5EFFB01E6D50558B75DB4C8D5512B06080F27BE62E01
+2EEA6A0357441401458C842D3DD4C35B8F561D816B336216CE0C14BF77648AF5
+E33912CF95872A1E1AB9A18980A0B29A881D13397C15E1CBA5D3E0B27943EBE2
+F3003D15EB446BCFC1C231832475D5B7AA19E4CFDE119D6CD62D053C6D29C333
+5F729791D17B3F7108074EEF4D1BD101CB33E01004532CB0D716D2E54D169C6E
+80163E70C0E9081F31A1ECBAE079D2A518B790B0CB2CD03DFD034A0F4788E800
+B0CD2DC1FAFDD487C2F381EBAB2A2F3F3AF82021B211DC9CD2FBA6A1BB3D4AEA
+4C7F3D9A5C21DFF284CCB827D205A69638E98D5DD8E36AFC1A4481B5CB2A2E8F
+D6C838DA6F81990F5ED928DC7457501B5C979FF4CD20A830896A460C5DB13D56
+A3B2B5D9B292374A9BF392894DD99FCD6A1E655AB395E839F074D1596488700C
+4E2891C8AEEF66568E82A8B826F9A28FF84D4D9BDA21F638EAF96880B4EBE0D8
+081982F34831A03BEE81FC177700C2360D2A48915EC40D5FE85B400E175D5AF1
+067FA0097904FB647757BB44B4042D30D1557BD0F7922D731142FD682139CEB7
+58CA4C8C240A0B86B1888CACC507E24E04020BF1882BD9B4CAECFA97DB24D7F5
+AD64C69454027F198BA35881B94EE9159A2D73E450C3BDAED66B886D6DEBC84B
+653E165176228F88993F12A170775A8D7038BDF2FE8DC1F7B98BDC02D1E6686E
+9B834F6C0AD90780B17DFE25F0A4E470CBA84E73F2D22BEE09A040F14CFA2C14
+0FDA5A5149B5FAFFE49F55EEFC43831BC43A8326FEE9C7F469C0FC3B000884FA
+41DA7318EB57262CB96FC4EC7F16CA07FE1C3BE8C2DBC8A8135953D6DDF20BDF
+75A2B6D26074FCE752BD32FB9F5CA797775E8DB9BB9786B469A3CD65A0D9DDDA
+C2A166E454A94860EEF5B5C12172DDFC576A03F6E6F8A735FF21A3E9CCB4CAA1
+3064893487697986A42CB5888B2B0A79FA3C74E8187BDDF7BEAB884B70B8D4AA
+AC6615745AEB906E08BF831CFDE222F58D02B428D55E9D5A3CDE74E42D8A2CB7
+E1A3A9439B678AD438793ABBEB72B21C58981DAF3EDCE4BB93D95F4A1E943BBC
+B3A012DE92FED4F232A3A7D60CE60B605151F9C7C18A5C653E5D6D15E5B49A63
+73E7A339504D0ACC74B8B116EA88C3EBA2CC631AAB29F761E5F062966AD2FD28
+7FFE52FA8A115DBE23E471094FFB3CBAFBDF11B7E9058313F2D069B2CE98A962
+64645738F02A31E2F2AC11628724034ADBCEE012721EBF0A567893411F950410
+B20754A7510D041FFA6144AC9CC46D846B82581F20BBD001D34D9764010824BE
+61C30D05E5C5D100A24F1917F01799CF5BC4E50FCECFEA732CB50196825F0E08
+8A1EC868C6D4357857EE2957E081A0E4372E31A8ABEF23C3F2EA0FEE57DE4D08
+61C570175C41AA0C7A3A579ADF593F18B4AE3782D2552E4E0759C32E059EE741
+2D8191E381731769F6648B3581CAF11DAE46471896666F18F02918B0860BDA3C
+BD5DE777672447C23C62ACFC2611ED5239D6A266FDA6031EBC5A530C1A2FF7A6
+B4380B9A4C877267854AD1F1677CB5433F28894ADF93D39EAB94541A8D232E08
+22D082D0951A60F62B87DC028714EC74133A4D65F7D0D1296C0E189C4A42AA98
+28E8AE7ECBB9FC8DFABCC6EEB1E9FB06227F90808EF31331CCC5D4C9A6182181
+047902DC9FD0444FB94B60FC74F3B677758088CE6A159D940C5CF682335E756A
+8BACF06AD7225D49B0002392C889B0FE2C71311D2596F4903D12FA20BA2FFE25
+A0804B4BC282929BE31E0F46B34532CB5795A65218CFAE21F390792DA67775C7
+B91A2BF4C16DE4F6551DAE3A5827F616BE9040EE6B1008DA2F99A01EF66D697A
+6CD1A44E0A15D1F39EA8025E886A68A1E9C334327C7703EE721E497CA924AC90
+7723106D913C5ED4BA4FC743CEA8D0F5172526107DA65775C0B1B77179D336C2
+9B09B608D80B1A1E87CA1A84A833A00D980D919BFF56F6390E9D5B45E9935CF5
+E69D003564462F750F7DCE02DC23CC215A0696B74D8BD3156A392A94F557655E
+00BFAA035647568ED66157FACC585E411F7F428569C147DC43F6E4FDE693D0F3
+9917BEFEDF61FB980B85515FF6424824E2D995B05CA1E5D3E8BD8D3281DB7CE4
+E54923E84058FFC0A8A2C491327D0F87CE4C352B724167CEE224DABA3B95757E
+4A419594BE4F92E78BA6D35D4C93D31ECC3134B24A45DC32445725BB044F09A3
+AA8C31EFC0A2944ACE2F2CE054CF24DB350FB3C71115518C24BDC0F7E54250AF
+9D3378D38480E1CB9029F31570C619A28F065CA4FED5665EDB96712ABEB33B9B
+4232C00C1B0215F08D53F7E430887035AC25BEAF06942FD1B6C442253C887AB7
+D694C1A6115C8990B4CAF1E81DD1FDDD6B03C00055BE956BE7FD8A4E1049AE69
+EDA8593CBA8C4A41E046C689FBBF9F1B64E5856A7FB1C61EC815A56DE2A8ED33
+41F370B8203D4E5B19C63AE9E6E0D26F4F3814B5AF48AD30EC9B8402C941FDD9
+722FCAFC638FBB835F83DC77F93D367266FA7DFFFCB567EF82B1695AB4D94D09
+B18AC041811027229DF431F5CB2BBF6ACCE9D500C8F075A74590641C1A607C56
+D2B8624797BCD9C91C3177818691FBB4744EDB6056464A0B95B8D63F7C22309B
+82D6126E2057BCC9FE5566D96B7A9B201A09B0D3252A5494C8CA2C8BA8A13C29
+37EF2A882D61DA708C279F663D88A8E2999A0F3B6F98C49901A7631BF7708B67
+54D0B4C52BF4BE0DA0439E6763A7C9D639AD4092E77B13D3510DAE1475C978AC
+796F9B2AAD3BFF35C5A3E19B5E2BF704B3BBDF68CE48BA4FA2496D60E58888EA
+28AE12D00E9F0816FAC190590A865BB58569A91BF0345D01230ABA361442006D
+BA2C90EC2036BBAB79EBAFC3F217DBD5854C519235F9627A1C3C71D21ED38AEF
+0BB40F3B86BB9F09A3F309473D8757AB7E638DC1C59A7F9BCD49DE4107A2E54F
+422767FB94048987847205584309397F554744690ACFFDF5902FE5DB355930B8
+71863217830DD7A563B0B3A4025ACE75B0E777B4414B62A13B50C54E0E6D47E9
+D43BF769B9411B74E1069BF71BA873B4B8973EC9BA492A5DEA58D267872BB246
+10AA67B143D0E2223FFB4991E583E629413CC894C3FA4869B72D19CE1A0CEC8C
+0FF5E5A3EC1FCB7D3C4289813F0D249A11B55104BD60B2A89BEF44CC77CCDA9A
+065B8B83B4F4253AA1D535290DCFAA4773452D110D2B3370F9E2FE5432B54A9E
+644EB3BA9BFF62347F376839024CD5EF3C5DFD30F412DD5474B7933E6A1AB63B
+4B12F2417C72D0543C26A263AEA53E5BAEBD67E23553A72E949DEC556BEB5D09
+C4D7A89B14FE4EC68D0E3E9D65A64B285E53590F418EDA8175113CA375A29930
+DDCF4C71ABB26CEB800C2C2B253AC1F53651C88A56ABE5A74F3B54CB4FFDDB92
+60AD7272BA25EC2F6FB759AA6E1E7964FB55AD09F4EB25DE45FD01833947BD05
+6266AA8ABB7DD792941C7A070FCF3A4636FBF8921C70298D42FE92F079DBA2AD
+6149D9CF9EF7264DE6DFCD4429949B15EA90B596340713BD61926DDB2BB23BE8
+F9DE38A31620A817420A245946E551463960A8C5C7295E3B3D6A59BCDF5E472A
+40B7A2CDDAA43CD8AAFC411D037142579D11054A903E102DF0D0C7B5BB854DBA
+F3F086AF991F7F5D5C730F8F9AF213F25786F3EC0E54530FF912F4876FDE16B6
+A07D0DC4FC46EC6363BCB68B83ACC448B801EC43FDD2F8BE0E93D809FF81E38E
+176AE17C67C85FEA58EC95435434C49A950AA955D8B20989C550AB1F1C31B7FF
+99422E1F48FB7D6F327C6DBC4695A03903DB275B94CB39386E46579271870A25
+21823E75C377E9D5B46655E8CD8F986372CF8BA846423E26582315A9D19E0BF5
+305C32B2A0EAC3ECB275B1D8BE11A37ADF524944219D94EA2C5DBDA768828B6D
+775DA8CDB09E0570E4ADDF462EFD8D3FA3F86B1DEECDFFB699AF6507257C1879
+16FC615868C2D51F03CD57BA38D42995D9164B257441210084DC409B6EE4C119
+0B2E17B0A8D5326DD0010E4A325D5F77BF935693BC90A00A28C7B5F74817DA39
+F47A41E32F4F92AA04D30D810F7B1484EB53AD8CFC8CE8928B570314E0F713F8
+AF127227190F9C16BB73D2A217FF801C391A29095DA5E4974D137A0CAA7DE702
+E20DD4755B1D78739756A5E7EC3542B96AD6844199FFA2F5F2E9C64E2DA4FB2A
+ED79869F745C59D235438251BC2E6D26112AAED20E06021D1AB896EE1F1DD2EB
+437FBD4A25E42245C5A647493FCC9922E6DD7AF57D5D482921D1CBD6F0F02949
+C27777144751C1E72F4EE2BC343D4AE7A8A8758123B54FB1A026144C643651EF
+0907A376945E19A8FC7F98A034832A5820A481B0823F980F59623E0511593FEA
+BDE6EFBCC0383242CBD4954027B075B21F10472059A480D6E5ED01C3B07461CE
+9810251A5C5643EC7403130C2246E8616CEA25EAC7A0076731FEA8CC43BCE3BE
+933FCE61067F5FD402E67E2B9DAD954AA77C5BC86BC5E4BCE2ED676D8D8EC7D0
+ABC5C86D82180B9D5D7451C71B5149B6B67883578DE9909317928C0A92E3205E
+F23015400A1763A6FBF67FDE3318AD2696685A1832FC31CF38589EBC7CA1C818
+60D2B2211E04EFCCEA88D9A9082E82951EEB123924A267CB03C48889032F2892
+4227E217FA28F87E01CBF27BF1EA60641A4238258CB7AA355908FE36D90F5CAD
+FE992D03A33E47CA9AEBEFDA57793F39DC6A9E85D5B289F6B862B35DBCF82E43
+5CD6A862F6FFAC36478C384C3BDB0148CB1FEDF55969C776E77917635B5A65EB
+F2AD351D21CD3822D43289FE8EB0FED58182997097C7E9F4373553AE1CA92083
+EDE3BBE6C3BC7009D15AB5FEC6A59E9FD1BCC7B2099CA15FEF083B9CBF7B890E
+CDDDE6BA0AFF306C76500C945DC91BD533FF9A585CEEDEF79238C54E6168001E
+26FEB29E523EE501BFA4F60B782B1499B07084C35A2434B4D29D3D8E2C8F945F
+A9922443B68D07DF7EAA1F4CDEFFC438B597D8943E231B5216808A85F30EDC81
+9DF5DD22F54A45335B4C2203887475F39D247F0E7347BACFEAF220ED82F9263A
+6488E73C1910023E505FDEB143006C1A351D441AC57F9D52D2C6D63D78C75605
+999885676BBBAD56074298E0BFDACBA1830BA58E87F436CC670EE8EB1870154D
+72DDBBF3794F8CAAA3F1E11DE29752DD99EAC695838A19BB67A1FA3829B6E0BC
+5301610A0351AAA749F456AE31ADD87D6ABADCDD1FB3CE81C3713F48780DF407
+530CB284B2AC709F52EE7AD647DEF9FA4D2A867CCEF728F3D40CF34C28D21527
+10160B3DAFB5FE16AFC9D36C6EC4021FC189005862082BEA60AC72B63AD27D72
+FAF3C2D89DA2648FC4C65104A069212D87144E8533CD86A6D73DC7CD9DBA25CE
+7DA53B000266F3871B24663C77723703315C5E4A89DFCDBAB384AE7EB2F455AE
+AB191FED406F7F6EC9E5B8276EF5C4CBA041AC7E8BCEC7CAE840154BDCA3232F
+15711ABD1E867A434E9787CA0A6D1F197597DA27ED2402CB2D84ED082E8D3A39
+81E6EB270DCA4E7A90E2BEBD3CBB3A2BE3CAB926192D7292CC16845B6399A543
+BCFD224BB52F21352732DB5154FA3442733066CDC3E186D8AA97CD801DFBE43A
+116C86889BE198DA88CA978B8C40ACB67E8F7BA499DE68A6FF0DC72C3D00BA1A
+B378B39610F15CA026F95ED8155CE3FFFFA2E2FEB352DBE14CEE1669F2387B70
+55B91185FBBED764266215D518716EDA3DFC9E5DB6B148A553E75AE5E38E1CFC
+6EF47B314D54CF24BC13856F4F7C976BB91D143DE32FF49BFFC87E17885A1893
+BA1B8E441B08EFC04F7D103C1FFBB665194B3D0920473740C55FB1C50EBCF717
+A2359B687FCEAD65616EE89A68F8D91AFACAA0B238EE4AF0279AF5BE5294C3DE
+A7E1F5E6248C0210E7D40683F04B12A933C746ECB517CF94BBCC6E4CF49AC715
+D8005AFECBDFB7A6B417DB8A28F8E9EAF39CEC1CA64DF37A5E66A76C26F721F8
+A63B003A040A62F87DCF61B298F960D510BEFA453F118E59E7DE8CA3DD002EF0
+127EAF733D5C61B5132348D280F84D159809CC71A3C6F7373BBFD8D6EF715D34
+0016DEFF14AA5F960BF1BB9AC304A1823722843547BB4CA5EA4C41C6C2701C8F
+7BDC810443F9DF34BA469A3260009B799871BAF8523C8763544DCD0B382D44C5
+F75046AFF85F0B5A3188C2EE786CEEE5496A5AF4BCB0B429CAFC403FB983EFE3
+61FD9F52ADFC38E07A0FD7BACBA530D2E4DAB2592AA9564843E7E2305047F060
+C5FE4243FA8FDF1B5D4F61ACA7850A604FBC6D6970959752695C90F78961B4E2
+C8CFA41082B1A37405AABCEE5BA3DC2B9EA76F486117B84728EC6D8AE6379CCB
+402C2AA89078EC992C00D53151E9D82C65643F549A572A20F05107A41BE5AC57
+8EDE92AE20B05E2D0C98151CC92D5389A675DFE39DF546A33A84A4C534337ADE
+B17C34E09145B37CE1EB1D10D42CC8D6E6B127A3809F7202381FDB88D42084CD
+0AEAEB8A8288CB56870EA2BE9D0B9DC8291021CA561E2BA388DA3494E433E0EE
+5E69DA51D0AC505C9F71562D3E9750F23CF14D2C8ECF0692FBBCB4A92B48B4B0
+AA2163A516AD96B9354BCDBEBB351B643BF3CB00446AFFC4A137CB928E99D626
+4824385F1E9CEAE6E317451B4ED21EF01ACC5ABA985FB14EE70247FA3B66ECEE
+431352ED45182614EA3D57BDC22E5A04D5AAB27C8ADCD7BC07BBAB21A1901F39
+4C9C008D353F0EED437BC00D2E65A3652361D50E16C785B66DC1D551961F641B
+032E133A31A61A335EA302469363987224158BBCAC91357E79DC8F409A928EB1
+8E1FFCDC81E7B443ECF0A6D728FAB96395460B33F57CA9B88C746B9B7B453D4C
+0755B802DD31E854C52DA0804B611B6014BDF91BF76B6E491F4BD5C46574FDCE
+673B03F3D6FD5F8B860A2556FCE98FDCAFA81B35DAA07BEDB39ADAA041BE5ED0
+02EE5663F1C139979D11BBB51693C13514CF00CC7F9E9AA38726D6B1AEDAAA46
+FEFE290831071E035F68E9FB2AB771DFD9E7EB3E255BD3FD51F325AF0AAB03F3
+C001351BCC357E49F8A94A7481991B6239C7D48C5D55D3FED290DF6AFB2E23EF
+1FB63022D8230A40B34546705D09709C2A02F219434E951DFA82A1339C095723
+10190C4CA5F9B9F98179382216FE74381A001AB228066DC706493D1267F2263B
+
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+{restore}if
+%%EndFont
+%%BeginFont: CMTI10
+%!PS-AdobeFont-1.0: CMTI10 003.002
+%%Title: CMTI10
+%Version: 003.002
+%%CreationDate: Mon Jul 13 16:17:00 2009
+%%Creator: David M. Jones
+%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
+%Copyright: (<http://www.ams.org>), with Reserved Font Name CMTI10.
+% 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/CMTI10 known{/CMTI10 findfont dup/UniqueID known{dup
+/UniqueID get 5000828 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 /CMTI10 def
+/FontBBox {-35 -250 1124 750 }readonly def
+/PaintType 0 def
+/FontInfo 9 dict dup begin
+/version (003.002) readonly def
+/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMTI10.) readonly def
+/FullName (CMTI10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.04 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 12 /fi put
+dup 40 /parenleft put
+dup 41 /parenright put
+dup 45 /hyphen put
+dup 46 /period put
+dup 47 /slash put
+dup 49 /one put
+dup 61 /equal put
+dup 65 /A 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 77 /M put
+dup 78 /N put
+dup 80 /P put
+dup 82 /R put
+dup 83 /S put
+dup 87 /W put
+dup 91 /bracketleft put
+dup 93 /bracketright put
+dup 97 /a put
+dup 98 /b put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 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
+readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7
+5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99
+8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716
+EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C
+02CE8D8B07183838330C0284BD419CBDAE42B141D3D4BE492473F240CEED931D
+46E9F999C5CB3235E2C6DAAA2C0169E1991BEAEA0D704BF49CEA3E98E8C2361A
+4B60D020D325E4C2450F3BCF59223103D20DB6943DE1B57C5FD29DA32D34C95E
+2AB2ADB3F60EEB0600C8ADE15A2380DE10AC5AAD585FBD13097B1A7E8E210D4A
+EE96785449E07F0C8EBC2EC5EFBFD0897DFDC15E5BFAC9584D8DE95C5AB288CD
+8AD8B9BEF0B8E5F887B3B0B331542FC8184DCCB753DB6ACEEF98B85756B988DF
+CAF1AE0DBE7D37D5F44A2E760AAE3A5197C27B15E32275A64946C3E4D0476FD2
+7FDE148C788DD2106F7C825E270588AC05B57E625AB17BDD02306F9E5FC851DC
+32A5A6EDC43C770A71419B2C0C8074EF3F222C8A2097CD81A91F333A521B3A09
+482A4FE1CB231CE344AD126AA284C3280AAC3AD162CF0EE241BFB4C8F20502FF
+118507F5D1B5FD898571015E73E5CF2281085072E00D401F6F59761EEC3E8381
+1F26F75DB66C504AB6BABA87D121B1E7040A07AA2FE01F80DBC246CC03C4B2DC
+C2A715980C52B7F96BC1A78FCC7F4F52EEED5F705E08FC1E5BBFCAD121FA88AA
+8EBE58172C162AF409DBB0728F14923ED02A65EA24E5D52B6AD07777455A70A4
+61833D3789C719BA92E901232599767E423D5AD9C807670BE0E7B5CFF8256A20
+C7BF7214FFE0342809570F5966A2C43E784F35015D9040BA34FEAB6A6F089504
+3A40A9E9D711A2721D3F4998371430FB3C94BFC619559B97D49627BB630F4B70
+9D0A8FE4E916235335C3962F3CFDB04C4A3CF714DB5E260F4E66FFF2F27CEF2A
+D4AA26BBCAED23B8BDC98F8F453BA27AD7758537561E766B82DC3032E92A9EB0
+125D98A22C5466AF069BF72A9BFA052A8628FEC6A6AD0B711DFFEDE3AA2D7CE8
+34EA487038EF50F953B8B4471CBA6FC3C53877EC1BC94582B1123EDF44B4056A
+30F49394BDE22CDAD7F01951C7013D26979277D18EFA594E8F4F2B5E615187D9
+39E842EC28461B9ABA52020A127D2CB9002A673A435B13C10602EEFDBBA6BD49
+9DDEAB9E68D655443A5C2492BA061C1391A51592BA8C353A6F6A0708E8860184
+2B5D031D2CAB87D618E9F6F7A0BF3F66B3FD5A25BB91F7F1F5F99CFF56EFF4FF
+0A35C55658001ED2E97B26C869292F6274D433A5443179DBB8EE987196306348
+3F9E87C6422AFFDD30080C9AC4EE7FE5E2DCBFEE4974331F4AAE479FD8806D4D
+9C2B85FC69EB0453AD827A1E767E5C484BDFBF5C8D6E2B3C96298B390F22D757
+802643A79D5E29CF3AEDF0E12CFBECA4663444FC87F2027571DBA9ECF688BF28
+FF0DDB3AEDBA0FB28447CB4B5D5205F40C1E7A525FD7373392EEFFD910AC82D0
+98E71660A1B3227C4A2592F3E853CA4CDF64DF19A52582E167234F4036FAAAB9
+5446BE102DE2BF43E82F0112C2A20F15A3F92C6571AC761665A905362C4F8BDF
+AC8705519C99862CD9C0D75113C4AB5FBB83C880E46B82715B5628890D9103AD
+A2329638B95D93C4DECDC5E6C588C9D5183EE6FC28FAF9825F02DCA567306D93
+5440987A81B51EE7291107A08F201C609FEF91A8F0587E8B13D4BAF74A5A6815
+DE9E4441F46AF8E1DDDFA2D611C889614040B144A5EC064DEE4638C04EAB2E37
+4CA8F50FB8C4D65BB296DCCCD39F1F554CFBED96670A91F515CA10EF896874BC
+8EF48C6447752C70FF5A06F928DB55586354076773BFF7E94C4C3A7A1C1F421B
+A9B4E3936EC26E0C19BBBFC90F021E877F54B62108F6DD1C7F6D5B8E64FC9362
+E173F01BF2904B7E5A08B3543611562C2714099DE7D4FA330DB148B560A9601F
+42A84452811CE213DCE782A0D7809CFD954D6BC1EBF2BA4D1B18F50FA8174C96
+3E0120E266AD5DDB40B3F6798AC28CDC5C3C4BC34583528F5B5DC8A222B80B59
+A3A93DC715D061EC6915E6E6E21A25425C25E8747C60F170D61047108826F96F
+7830E220C108B441B6EA3198E33C49BAD8D43086E49F5A2BC7958A1A8CD011C4
+49045193394696EC3DDD0BE084E8F2E9F0B9496F035C0DEC1CE11409DF566428
+D50043CFF5CDD1092F6E0807E660B68163BCA738E8D98FC6EE3F713164CD204C
+0BA84FFF4F33F47BC31750B448603D7ADB9AE92FA91AEBBBEC0DCD66980E6955
+CEB425ED07115B24E40F53B29B9D840842EAC691B4F591F866DF27556474B485
+1C6F53DD72499847109B16C7093984A6B8487D4F3870DD517945CD90E648C1BB
+8A6861E540FCF9D75B984B5009B5CC760CBE297042C240DD624111670B703388
+6FE6FC0E89C6B4C88F51DFF3913D0CC1FB4770C8CBEADD4B86393605C0B6C468
+83CA5594754411B6FC331EF56D7CD6D247FAE42E966583C29239A8F862348D29
+60B177984B6B957E733DB4D275015691D91443BBB13C2DA96097A29733CDB284
+42F89C85A7A743338C9DD3BBC4EE53F695E5163E6E1ABE5791ABF100B198B9B2
+1C21E2FA2FB4AFE7F9BB2D381260CDD3A2CC05BF513AA1E80ED69FA27BC5ED5A
+21445BF00BC2F997B356D94AF13736C6D3B0613EB6F4CD96A685FEB672661DCA
+206105EDC3CA07900676EB2FAB37F48D2E8207BDE1463894DA3C5B1488AC1EE9
+D39DAF691648048F5D7A384B8927F8DA2BE3602669F71D80686E427F395134E7
+7ADCC611BA91AD4B7A0237213C60CF2C905359C90795230344FC3C50A22BD44B
+55B2044792509F50F5C21F53D9F9E9F063ADBED3AB99E2613B23334FE8DF70B4
+6120F2EDF69F50BE793EE145B9FF9C73179DE640FC2ACEB5C6617F918CEEB762
+4CD81E665B2E544864D13230B058717B207D3CC5D6647D5343DB4D0356082392
+871EFFA896631A7E0D6477942B632074A9A4EF7B09D4701B1639BAAB4E03A40E
+9B54A7A4F845CD63F88831EBFA4FB847847CB98F3455CB5957F2E0A0F5623645
+DBB5C5564C7F8B117D6E27E65C0F3EA81AE67B4AE4B201E7C4FB0A8364FE53F5
+41A7CE8F834C2C4B322809B353A5E63BBA7BF3B7DC1A85EA700BD287C2BD3FC8
+2832B0BB4695FC937FF5EF06FCD87DCE6DE793C2B1EE10E6450352C17726155F
+220D550B1759E15AB2C1D5968E52C8080CD280E99D3CCC0E80C2EF8BBFD96001
+A226FEED7311EFB4B67F424B557A877379A15BCA54780F0CD2CCA00400B9B39D
+981C6B552AFD2506D1B23618FA9AE6D8143CD7198A8482CB416CCE62B992347F
+337D505A4078713BBD91E5535BD58EF0351EBDCD749CC24D4AD39F8CECD7D6C8
+139756680A4C03A58B3374CEC658D30160AE4863A3938A891BB59CBE02BB451B
+1BA4B2B6E68AB61DEB85F95E3C909B8B66E220B9F18280161C279F10F7093CDC
+100A53D542F071CC0A5AF834DC1D18738F5DD62A5573E884E1FFD22BD810828A
+1EA47F8218C15A2E97CBC609927DA3CC2B802EA4A0D7EB57627C135E3B065905
+F97597D818A2C5CC6F328AD25AD11FA50F1E4FE637980B7474D6F85A521892FB
+72989AABEBE02A2D0EFE88A6F67AC29F5D8DDFEDAAF465C439983C6B84389FF7
+A6434462BEB7B07DBE4BBA61ACD4A60C55B5C0AAE527DE381DFECA2E6BAFDC8D
+310364ECB42CAFF72BA93C067B2F02D1CA7C34AE7CDC46787A0E234C8BE8A928
+7A6F3DDE0338FAD532A9886E8E3525B85DD39364AB03EC4C0DD25DC179CC1989
+1BE232E387E857C78332D834679195E10F1E7B87B7966DA3B2238F53D1E13FE2
+8F55ED6A92A750C7250C9B91E29796621E7E9520373214D7DA81B2875A986D33
+80382AFF6DE1F829F048E57664D9C4ACE91E4684A51023943A4964AB5657D610
+3A5405EFD4CFD1EBA684243E15093C9667797BB47617B66054EE02C41FFEC45C
+C1BAE8AD56B00D323FCB1D2744F061FA16E161988741A319B1564E04BA210996
+4F9F02A3268CABE450D166A763F5284954564A1C86B76544C5F5ACDFE0D758DB
+865A1CFCF9FE8CD5F9C3B2998C56468FD52DF8EE60C6935A3D221EAEC7714E3B
+301371C7DDA0B03A2416238F2B47BAD3A2C5021C886DF51C695AF9C87A864B48
+3BB3FE0B355EED5454B59B25A0D8A1B8CBD356C24F64D9B55E16C30C011365C9
+1E0380753BA3EDC0868788D5F50B9353D0227BCEE1BE36998B2622C0759BD66B
+E4444250589F9CEDE766D8B940770CB6B89503E925B35C00CBEC2873D2DC4A29
+0823FB7A3717B69A7DEDBAAECC067949932728E89BEECAA91DE3AF9BF070B9C0
+30EEFA8C0A55C8388CAA2F0515915C98E67FA095BB98967D14B0DCAFA9622E4E
+2E0EBFC768D80585ACDF28D8A5C2B6EE2FE7AAF62FFB90F569F84A0903996DF0
+C1D5723366C436E4088F3E2BB9B47F9789052A71CF5C49908CDC1DDA194BFB89
+14D7E3D7D4D72A150FD6FFD8303E9DE5A97A71B808B8BDF2AE466F31BF5D7A4A
+44F81230BBE2B456A221E2F72A8B59F8FEA8D31F8A005A5BD93B9F49CFDC3DCC
+CE2B67090460F632271C7157BDC2F05BC2749FD562FC28682A616A52D1B67654
+DF78B7843A9EC26A7DE2EB168F874904C2915B97534B2D4D9F74A9573A771D34
+9F7BC855E8F794621BF6AD471BCC347E2DF5F620F5C209E33A4CBF1EA85AEA87
+4492A77342DD33EF615FF34037D660B713C908786D9022051B825226545827A3
+2AD1B05D654DB6E6D261B4E8AF0933AD1F0FCFC7201E1A7C1B4199F160C38676
+21ABA2DDF1CEB655B3EC3226E0B122976EEA998F7A5241F062E54AD1DFD6ED26
+47C99A439E0AE95415059179867CDD3F0FF751F3141309F40E00A6C7C28433E4
+F649BCD5DAA64177580E05C495EE7BCBCC5FBF104DAF360CC2711386655B26F9
+D349D887EEB32ADE595241560FD5924A1745A22E6A01DB9C285EF14596EBFF0F
+03F36EB2E0A7C3864F819EF7B0855121292D49482F046A55CD7271FE03F02EA5
+886864D9D8EC22A68C23089EAEFFF03DED6484D8C341861EF8B6FD3C5BDF5AC8
+352DA4E13A1E30D0CB71E090E9CFB9AB2CAFD0CA7C34AE7D8E3B2EB4666834BD
+9CCD1AC2108348AFEF6071796F4BB2FFA4A67ED917E76A109FA2DC2A30D744A0
+9AE653A748C1D18FB52595D84E87F1C1FB6B2F32667FE203262C66627AEFFED3
+92B23861E5EB238BB4EDCE09DAE1C65BAFC198CDD1B45D42CDF93E16BB82D35F
+821E9E49067E966AFAB2AB52928F8DD6359984071FC37AA652FB834A09E5BD93
+3AFAE161140E74C6531E413E8FBBFC42BFE8A464B71EB1D8CAA93B33D7BCC3B0
+47C7EEFCD3E9FCF26FF9441DD9BDE68D77AD7251C06BBB9A2103049E8827CAF0
+F26BEF33F656A690235DEEC623CC519AFA82DE2AE16FB99F780FD7D8290DA40B
+9B604AEF36B529FD184239E7D50561A07428D28E51B55546590A1AEAD4B7F2B1
+AB8C5B9022C1FA03E33F8F409B24911AB8BFCF6EF4A8E415263C789F89063E71
+C0910DC20347469380B7FC1EEB87D4CED7F4A361E58B61C91AFCABA35C03F978
+B9FB5257C31657EE48504C355CE893FE3C553274C641DBC4004F5D5B879CC5ED
+D3F21F867F6DF054127067DE86189F0B59A1B90FDABCDFEE61423609D888EEFD
+F4A1367129962110C651D9481CEDDB8C5C2576A59AED64E95F7ED042AEAE2F7E
+81AC0C408E593DC30DCAC334EDE9EE27D932B98F040DDCD195D6155607DD2038
+970EB78221A94C52BD4F0EAC65F1FC10E5DAA93C17266F351669CAE56F42B68C
+6D01E1EA03AE554D63CE76D800FDD9CFD89F80A241EAEFF7EDFA41794EA25CE7
+97BD5028464D2CD45B53834B4AEF8BF0B9E7C6ECDEACEC887E8790A47A93F668
+A9095E5FA1116A122C0E5B74E2226C654D3187C6CFD8807917820423DA3EC1DE
+AA020EEEF2280C44A15209EE2F3FC1776875308CEAD38571E7BF889F287E4594
+971A83605E0B4169D4A23EE790515223DF8724054EDAD905F57918FC0BC64F96
+514B4BF7DC9BA79E763C22C977FB6146B10D26FEA1BAA7BAF21312F78D1625A7
+8E242D743471DB5821408AB786E4A7EA9D35E30E85533C617689F95758FB2C7C
+392E759C299DCCE36689686DE0C4DCE32649493650BA194A6208C5EAB670B170
+3F2C70BF0EF0E3BE2FB0A79224FF4ECECD6BB3388C6D06867A0E5E3DB93C1B2F
+464C23E44D3132E7D4086E3B59B1D13F49EB4772DEDF8EDC4F603217233FB7BE
+C13C28648E9AA51D53F11FB896839F97AEDD8834BCA53CB0021AE91FD8E95E2E
+F8A094093AF556B9639F508A401542B06821FF9DE1A745FE9AC5CACD5E8E1053
+911442FC15CA5333751ABFE2C617D38FA1DC332BFEF44AE569DC631C93EC54D6
+261583A695F5A392867A57F59B741EFCD2DCFECBC55D1EA5F2317601C9DFE9ED
+D1EA466210FFA905A8F85BD58B98991BEA58DFD1CDED5C9B086D42CCE632DADA
+147941917B879139E016B0DDEB8446BA017FC8EE5A354533D667B0835F5D027D
+C2D580C16B80B3D05CC92C0465CAE077729F0A15B2DAFC89DCD349B3F81D0516
+C65526EB5C10E45A8A85D716EE35FB9AB201FD7C89ADE5AD925A174169DA20FB
+61E96C73A143DF964C20589EF24A0FCFE6195317F2FA0D2249C0D8E649C3D9AD
+FF13332EA2E4C9CD36D8443EC8F027B61CEF92C6A6B72DD4ACBACC16E429A9A3
+F5F29C1631360E32F8C1C93ACB22F810B86D2969A7480F486F62F8488BEEC74C
+2C1AF13BB92BC578E8CD30BEA6BC8CB68ED730F54CED0167605FA76AD7B7E88C
+7AE7688E598F91C471BD65A542E96D64B1EAF19FB4F1234308C48C2DC86E2193
+11ABDB4C6189C6F201627C693691A86DD07FF55C30FDB3F72381E09C6080FD7C
+9182762E5001E30F52A216E0B71E4D2D4E2F3B20F95DF3A11FDB2D2B5B5FAA66
+C46226D5E0C77066349770514E5675550FAC9394FB27CD2C2F974F1FD58C04A3
+1EF53A8AB3B2202CCA1CEFA66228E1480A0709436C44BD3319C40CF888AE4692
+5DBBB52B15CF3A518F627F672135A24D5DB9B2EBEF04C860AECF231EBB5A3BF5
+6DCCD5E72FE4B6DD29E896691868A7DE4120AD06AC573F5608B8449B38E71CA0
+EB5CDA3F942482EA7973661170F81DC88D54DD5B92323F46F833DFA757107E9E
+F62A47CC50FAA1B68ED535C3E0E1073532A05ED339C8D70B3B9864808ABACD23
+AA95E9FDA43D54C66A675FA074E0A5B8777D3C07850A09087F36852B5351F35D
+8BC4DDFCA35CF29CD5E3DE118A741FAC4DED36847F2E2C6CFE08669301722D94
+376F540982958074E7F1383C409652F6C99DA39FE90B38221E75BC1ECB93ABF6
+B00F410A0C5651DB418566AB350FDA1789AFD88286AF3BCB42B98386F7BC144B
+02DEB8940D20A6B3062F0C4244EABC50923390064F1D027A8BACC3DE45156E56
+4A942D1B87F1C4A76B0D4D6801AE792CCAE3009BF25368B31B6AD5476FBD3BFF
+9759EF463EF5E78E10B7BF64005B2ABE0E8813950A08A1808587A98E0021D0DD
+751AD515E8278F1A0759E85D8A084490BBB0F8206484AA36388B1013643D3198
+3509078847BDAE08E76FA5BF3E3A73C323CE093DCC148E3C02C2DE1E26C94D5A
+40EC8308ECB02FF7DD04EC1005A2A0DC74D4E587F10A3EF349E828F69FD38962
+2F0C74D5DAB3ED6CC9F97008ACCE74C086A503948DEF1AAF58FC8BEC703CD360
+D32098A56AC776B1BD08442052A2A4EF6C8798F7CDC102AF1A2009657254762A
+0793F79A39DCD6ADBAA5EC84A7ED6018BBE727E5D477893D84F157074B24C13E
+8D4881C7DF8ADC13EBA0D89745EF93B7616EC5355600BB0D2B630AABA3CF2946
+AFFD0B2B724EF0F28393F2034B2E69DA5061426805353EB4D80E20739BC4C510
+6C45275B8261DCBA10DE1D104B12F46ACD230977EE7D7D1D35D2814139E38C4B
+CA6937CCFA653349B1EF64A98457F7B4B5D8F2978F16ECCEF7054905863AA46E
+DD524CB33459220C71E9EFA7845A3A760A507B3D3ABC525B35930B613710A13D
+098832C58EBBC8B0CA6AD516E6385792C59220331D0922A1F6F838A8DE13C337
+900462F952EABBDC2EB1FBF94A66186C177501453CD3FE3582073DD86F04406B
+41B6AEB440DA475E13240445D46726A6D45185D56BAB8807CEC8A8F7CE1AD149
+7CE2E1BB5DE4E5B9592241DD136479A65905FD0062C91DFF7349874BFEA5D9EA
+2F610ADB9AE7757B2307A1BB9D6797D9F9C4844A59841C7C7682105E23A374BC
+A91885E7410F56F60C29AB8B417E2D6092F8BB70A2DD5DEDD4BA1077D7CC62FD
+EA43428C6F79C332342E15F75B08A1ED360B3511F823E75AD49BA7AE63B19238
+2AFE8FAC2715E2FDC895E95036D23127557837506A3B542B0E4651CE2B89C252
+31EE8ADC26E2C04E8E30A9CA12F066CE01953BE7867171FF6C7E834742C36C3B
+58E74E4B482CB85FD4D24DB03D753F260A585D552CDC9E1941446F2F5B45FF24
+2DA4932B973139F328E7E92828B900BFD398B6F41DAA0D6861C66AA7F5E3299C
+87A5925CE4CDE2C7694669121D56DFF4EC92C1FBE60373DD5B9B737C0BB8A578
+4518676E1133343D9FE749AB039FA291993DF287BE65C129D7EE25EA00FE217B
+E0B436583B1E4796C4587DF29768E6F31E94A1C96D41BCA87F4237BFA623061C
+6A4784D911FB585269B20E630978C45EE33E8DF3662840E32409951CADA934F8
+896AA60373B50E7066DE7A307BF33C3021A3C3D207F5AE931B852FECCE5E9CC4
+B52E97089790D08FFEEA7D143DCC7F91911D746C4C8EBC0A4E6AC3CF08AC8654
+8A8FD6D788751B41F348377A602A2D5CEE4A409E83188D1E6C3EA3AE935126E7
+2E876B043B371F75F8E4BC40BA7DA261FA62DFB90DA95B5899C975CDE5490EF2
+F576462865F240BF4F32B0CED5E681E7D26B42AD5AE0C89A0DF5B059DF6A74C4
+0DB09A618244F766C0C4A50ED8374E602D71EEF218C643CDE238637CC8580098
+961C26654E803941A524482DC34549417EE3654551A4CDA36CC832791E3977BD
+CB2A5C1D499A9EB93CA7EF20C63A44A49E85FC7776011BFAA8CD96CF4D3B0B2C
+A52A8B48F33D055173A9D2048CEC24861DDB33964D52FE657D1866580BE21248
+5E606CE3A72385C65246A71EE837267048643EB234EA2AC527C56B567F8A37A5
+6425BC75F9D0D8FDAA784F36F0573D00544F9FD2AF5EE41814285EDEC18B272C
+7113B1118FD1A281E49F613CFABAB1BAC778774020E88A93AE4E6C759C635AB6
+3EEDEE81F75D8B5CEBABA3F0A82BCA994539B138B2DA3A9C71F38F213C2BD714
+3FEB9090CCFA94F786F228FEDC4AEA160F30F0066A8CB5D02A474E76AE513714
+392BA8EB3203167CA262478D768046E0B65CBD4ADC7C04638D44322502D57808
+2EA11C9E44FED238FD2987BCA6781201BAAE39E48A51297A1E2DA99EB13C1D43
+69BC5BD47C3240B0D4A30AC8AB541BB4E4A6D17CCC27BD6E9EFBCBAD94F5C832
+F4DB9037249EDE4DCE4033DE9535C58B915E7A0F7CBF0C84EA4C5D588BADEA33
+8864B00DDE2CBF21C9A588368592395642A3444EDEF07CC1CB0DFD71613279E9
+4D3B027BA5CC38962B881D5297CE70C6DE113221DB89E3E9167C20AC3098D56C
+86334FA4907B766C764304E13A1028EA4D46E87BF6228EEECEE0C6C8D06F923D
+93FEEB380E5EC84CCD6F18F660392840CBA6254D5EC3D10E65330FF13B7DFA16
+B891F0C7786819BBA5C4C7B1AD1EBF980096EC4AF841E416430F8B4405B44ACC
+F825FE6D72CA54E0ED3AF9CECFD3F6B4CB69C2BCFC0096D1AB863C95186293B6
+6A13579D06F9DC0544F6F52C2ED2C7799D8B58E671DB2B03727B4DBB2660BE25
+ED68737259F2DC1C65CCFBDEAED491A64636BDEE7FC733A6E5D42CAB2CD201E4
+D12D26A5F66F9082806066E40AC38CFC0E116458FF9A722327A7A7082CE7C3D8
+0A0B26AB9BB8BF1CDE1E8C0AC9B9CF49F1E30D8B2F290EBBC3B35D92E472849B
+D10612A89E2416964FB174E3C63454AFB214A8944B2299D75F55E0464CE58A68
+E505C79C9D23A90F394AF9386AFA7ABA4735858B1D8BB2CE28B40D1D7077AD01
+57A99D63C2FDBACECDD9132B6AD648ED939F60C14754E46656F81E403BB83411
+7433A87CF510BFEB8265F105FDD80745B06A5D8824138860F2CCA4D8CE239CCD
+799C77C622E7070915B6B6722313742AA5B448728590D83709A906BA60610EF6
+6BFC081B63CF41FED39B9F10988BE7D061F540BC39E8A89A8694343D16BD0814
+738B16958633C831D7269859D7DD7BCEF8263F8D79870E1F7B13A052586B752E
+80F9C0A541B0EE151D55D12AFF4E5E538A1793B2CED15A95E208936E3C164881
+7802D8B672959DEDD82892CBB9BFFABE9C4FE82827DB02E829A1CB209D074FE5
+CD1456EC6AEBE1BE8B14E43A5030CEC01BCAA788425DAD1E765A6126A3204008
+7DDCFDA9E4303714FB0456F4E6BDF6104293B3165DE23A0AFE82746D9D4DC6DF
+6C702FB74024115A1A1C4C570FC316B7013ABAA951FA8FB420D9F28377D523E4
+C466D6CE26330E33BD9CC8542065F4B90D97B797BE3F9C2DB45BC1052BD25521
+9F40BA6C5335566D34707973CD752AEB60E5F3D33A1CFCF0F13E77B2F29BE486
+23E0DCA16B183E4CFCEE63E784ADF378AEB696E2ED79F39EF4099F7B0CB83C77
+4078BA518CDBAC643CFB2DC9F027E3024A7D2B26E7A0F2E23D6A32B7DB867696
+5B99D1D6AFEA28639DC58FAE484655AFCFE3BE29B731825142A170A048E03759
+7A5222B815D151305D06DF62507A03C8CC24DEA6D4AECA6D2D295D561219AFBF
+ABAE4AF384BBD4491AF155C0732E1678EC1BEA97CAFFD3D5873E97E90FB8BA98
+B096196F9EF10BAAABDFAB15881C23A845D86D647FED874F200D7AF03E8FF7C8
+2D935996CC61CA174D909F303F644EB7EAC69CFEF3094684F54D8E3F2B2F2E94
+C0E57BC2F9E7D0E7D3B31313A085FCC94694907EFA919FFB035784EC1C244B2D
+0ACE08BA9C0D79B5D0B0F246953CF86F9B02C4B4AC6576100D9837907A507B58
+0C04CAE21D61E7C84AD1305659513FDA636875B296E676B3565C0C7C21B73866
+8BE2BCE37C700FA4B723142BB07448E94484CC7720CBC954B8AE4D2E857EC306
+6548CAF4B2D5E376BBF13F2B7BF1104F55B61D47BBA718C835A55CE439B9C0E4
+6341D8987899B5868AE6621CE686DC7C8015C3BEDE1F5BDFC308FC7894056D90
+F65DF04C25E7533416E220A43B842E408E93F96F84AC4A41FE2065E9E42F6810
+8010D8B6F1695BA3F0F17B47943D9AE4397FAD414340BABDBB406DFC66A98CD3
+19966A2E0678E945BB7DC1A7AB9D7A939A6796A9EF6011A37DE915601793CB43
+2E42A37B509DA40FF4F3588C0B07C70933B4460D2CCF78ADDD53E9F2360B622C
+7E2A7C62FC08D44C4298BEC852B589E7A743FBAB7AE1FA4E22F78AEE38705CC2
+5B0507264475EF01948C33B1107DD0A92D85891A147594BF51E3F40487D51DC2
+4E7DBFC46B0EDEB8D0698FCC4AB7153DDD2E2299012D1F8F686B4E63E117C797
+10C9D6281A746580D5975022825F24E603FB619F5C8FA8919C38C81B6456045C
+7936A465F8F8CE24AEB65AF50F530676B3BE7CF1465D8DFA46EAE6ABE8AE04CC
+70C32DA13B7FDDC0D4E82D0E147E2CE841C6CEFF34D37B2FD5FF547653615819
+562E4B8FDF0F742E8344DC215505D9C6CC8C1D9475EF874F38F0EA3C0427C1D4
+DC800E478F3B30DAB35F0CF85BA430039B98C4324470E41B96B40C8B75531C5B
+B24D2C77094A41115C04BEA811A5B8418E799E0E20C0B0ED4A22CFCEF242190E
+859B21325F4FC0478BE810D72F8EC17BAAB99F2A05ABDB1F25687D88B2229098
+16F7710309114F83D27DE4C6A2AAD8CF9196E046D6C693F7C55C4FC3E13DD9AD
+F2C8B9E30F950CD211D7065069E1DDC58C942D575B262D3A0A485E346A6A1F4B
+93A433A830F19419D5B4DB6D441383C850C04BC1F7AD865A80130DDA398BFE91
+76414C3C513E93573B73BBD1CE21DC837FDDD210C9E299E81AA5008E80F17D4C
+EF4CF23EE37B4AF418E89C0286D20321182DB7F30A6C846995983C6D5A1EC0A9
+616186D7096B27D367963FB1E51CC4235BDAE7D19BBE9FABA1036623C2076DE8
+A57AE86D4C1CB850E550A931F6B7DA34ECC4D8241852F5106C2C0DF4DD065B30
+73693F712FF1185B98490CF933BF01F8100C7D77AB60B86FED13321D60B2257B
+CF364A89657845A715389D666C4BD86EFCE36D3E63C189185E4F4A5629858A0F
+E142D4FB2D0DC0A9D1D82BA88795B315402BB9C342CAA660EEB890182ED0B25B
+3D477F1569F4961EEA099BB322AAC7801AA4E9E2567D0E8E7B18465569B08B19
+376CE9DD3AF4B411B32F07FD74C1DD425D5F7B2684703D6EB4098F2B9DB494DD
+4729C5FE4CD7FF9EE0FFBE3A6FA3AD941D1934CC5B811C1D74E6FCEBC1B407AC
+FE206160189F3A557C15B48C493A66DF8903EFF673ED1B3B565B618E8DF8C9BC
+80D9DE7627CEEAFCF574E44AA99F653C756B8AD4D6A1205C61581B94D0E5C680
+08E7F38E9C956AD88E3F49773F653633BB7C65EDA74483032F35760A50AACBD3
+FFF4305A23323B471F62FB6AC4E05A3D4386FDDE01220DAC3A77015E01A64A9A
+FD3FED80C9133A889737E359587159DE92C0BB6AC93A96AFDB3CB6B7A85F3B22
+4D5E53D1BD658449198F4259592D43277ACD02DA61A0F02C44E1F470CB41BFA7
+FDDA7E7246E5E58D0D2FFCB1DB3DD42DFE3CE783D1708C7BF5A80A4D8482C0B0
+36932AAF1C9302528BB0438487D975076E944A3B38B33BD33DDB8FF1353F867D
+51180536097DF8031557855BFA8E3A3C5366737695E1EBA98312CB73C01CCBE3
+04E383373E8E8BB90F905CB962437E665B677572024CD152A6C6A9C873A1AF9A
+C48FA804111F47A7FF26A48784DDE64564082975EF36CABDBADB32813135C5E2
+D9759FE2166A6618E27E035AE948CC8AAA0CFA5FFF50BD4E4678E403E6F0A3C3
+6C0A25A0E5B9ABED8B714B0D9BFA132918A494C09B508316CCBA1D65A12DAD5C
+77F62B2A22A715B423C172DA1E5EE85C79F08D9C6151FE35354FC833009B4B08
+9FE573436576782173E57646F6D154E1491F8635828D6AACA0AB5B3044B29D7C
+B004560DC4111C30E52E05FA5C70827A6B486B3A99FD372A2052474FCB79DD8C
+CD30404DA620B55CB6242D568B23185147BF690BC8008DACCAD06DC8FC33F669
+993B89FA03CD541B82361ED272CC9D3F73DFB689C64AFAB2A52EE1AE6D409631
+01C3759E3FE2FF709C195AAFC43197EBA626D6979ABA6796E34848F4AAE65067
+97243CE863A7A0AFB94B9D9F6E1C35358F21B028FE3DDE26497873E0E7BB4B8D
+F7EFA4D3A58D496BE43E06E8FAE4FBFB0CE77670FD26DC47E903DF1ED1E2EED7
+F66E9C2E035BAFF257955D45C6BB2E146A2C9D5E8957CAD657DDF6F694C96ACB
+1D4274A97FE7030AC64FA5088DEA487712FB4F288608A155A16F305286CA9BAE
+7671E1E33C5A2DA16FF8FD8A300C7F8EB8EE628196F6E06A763DC62A71C517ED
+6C9316B06718F9A00B0CADC44BF5997CE3193C125662AE4043BEEA2F8A58DDB1
+B5402E79CCE6900458E987A0BD5F328425CE9E5A667BD4F46B1CBD636A6D6F52
+A4C1A71ED3FF9BA9E019CBE6BEAC62FDA9830E43E5DF9487247DFA6B2D634007
+101E0CC34A6CE2BD76838FD6A6EA50A1A30C452EB77B9EB60B07F98BD24EFE3B
+6AC13810751B86C3E367CFDCAEB0D3DAC7E6597FF2E4C1CD6ABA5FD5688E493B
+8AF306880E9E3C3FB3B4CD378C9E3EBB542B6B5A71F75E563261A91EDC7B876B
+727E4391201736C6A01FCDAFEEAA12785826C8CDA673B3E0D71DF53153E40B4B
+53950A64D498E9D256D4E974741175CCBF59B9168DA4518D6EDC3B29B9F6F048
+5A53FCD2A02FEBC524BDECE64653BBC1C3F42205561F86160B37994B755375CA
+A46174C5670F3C0EEC77ADBC14A794403A4B12F44190FE38F9903D1871134F22
+D769925F2CEE2C58BF09D30DFE7370A22488C4D8C942E9B762918A10AA5B6606
+D22C509B803951B77DEEBF6FDBD5DF2027084721FBA234ABA9B439C96CF1AEAF
+1CDCF305EEA53B6B85A98F87A0460AE34B54431AC738B5D6F08F28A42F00FD8B
+8BABCC540528BAE567C1FAC14A980ACA246B9E096B1290AB80EDB2AF284AB813
+9CC9FA62AFF9AB8DFD34507821CA845A6ECE10F9F2304B063B5829CD517D0003
+0B56A39A2F4B0AC0B7CA2879C7025941B97B4C445FD5D471C87E5DA100B47019
+3B0153BF229D02B96FF771FEF07F0920B4F1CDBAC5CBB4AF4E9C5A3F48C513CE
+87238764DF45F01A73E81684803AE4164E855D334501EAE2AAD9663E1AC07CE1
+6D7644C6242C9A82F1A6581FE3031CD50D2CD02286848C1195741B283A9FB0C1
+ED82EEAB344694438EB610B6631EFC2DB3558EA6159D5B72D430E3F63F8515E8
+CC9B6DF1FC086BCD795BDEFD46F06F85F8F7F0F24C5C7B56EFCFD7B09024376E
+DC6AF248BE3461FB52493FDE9F0F70C3AF3F0766D076E515171C2F869C6F22CB
+215CA00DB6AE9B0761E80CA9AF3A745BB7599D2677D826398D1582D34ED3E336
+C37C3B629A900791A454B2DDB64F00DFF27D2E82B730CB54E6C6723B777C789B
+328C5149D6F75D36B14BF2B3501855BB0BED3176DDF7A6DC75A2338B216E0C0F
+3B004E69EB845CF2D3A8EA1A84268366BA6211741CD6B3D6A1F4EFC52081D0CF
+B7072442CCE7A399CE82E36302C4CDA6787DCD0412239F10032065AC85BD6A72
+83FB3C8B9FC32420D5E15131FAB00EFE953F03F60C62F89DED9D2C58BA111D0E
+764230E78CDD93F350197FED21E4A8C9661CCB6F311B14EE0DB9566167357F3F
+551542D6B20FB49BA741A8897C9D97F2983763DF830B1039FB42EDEEE0894F79
+C662CD24116BACAAA11C80E0CF806C4D4DCE5CC7ACDD1C636A2316C9449358C4
+541F674D44EAA232B89479B1F7C956AED934E7792A55E72326B76A55250954B4
+36D4FC194500458A331CE56C0D4024F47345210AC0419C46809DD240ED2933CE
+F2293CF1321F5292D801EAE93B3039E1CAD8EA3042D23B28C6232EB90FABE0C2
+EEDD2534C460EF846027C977EDBCBA0EA8738801AE5661F8D5C013700AB0E32A
+3072622D0E4F77F4B9576213835A261C444083D422EB4DF636B4896FB6DE36A8
+D468A72466B6F670E03DC0325DEEAE27EEAB882E3EC22DA4434EB3A6BAB1AB9A
+4E3424C9206093B490363A8D51FA4A3267106B77ABCA10E84D873DC9E0D7CA77
+255CC72639AEE842862094702CABF8001E9A2E1C042246E0C3453DA8D8A6DA5A
+71381E22A3E8601E4A1A67A4600C314631CC63F27B1050DF22091040A9217EE1
+EE461EA8387ED0341C763BC439D14352BBA92DC677270412992735440DBEAC5C
+8302CD00D4988B3702E6599AFC60CF94CEDA6F971E36891926763FAA13FC126A
+CCA88F7F036E826DA4DF7DD850017C148B0DF30FA70C351BC5DDCDAB607B0914
+F27E32CF1309B11623C7689CE9E8389F853900405F011CBD0B7CDB922DDEB876
+5EBC8A9F9153FF2C0646B012492A2B6D47D5C12C0DB129933361203CF719A354
+1336EC9F78E939F10B47B9D2915E4DA7F56082F35DE6B27CE3CDFE1E23669B6A
+804E0EF3937AFF6AAF329BFB5CB9417069BBA2CD4C71CC0DC4591972BD3BF123
+7313B0DD3D38ADAF22E079CFE64A22D17B4FA94CC2166C8E79C0AC3EF8329B10
+929CB099255447961775F26C2FD498DDC2D44A08A7457B62F6DF44B3686541BD
+4CA358B7B7E4F6FDB27F8FF641653FF5596C031D2DB937848D24844FAF8D4D9E
+197532B4522F00F0E4E860892845E9A424E83696BC630162D8A9FA18CE310075
+222B640E5A334D9D374A9C1B6CDDF8980251DE855CA28A20EA23A6690DA9FA1B
+CB9CB92283EBD99F9C84816B405A1B5F4BAE2265915EDB316D71D520FC32214E
+C3364A361F94B204F6246256066EA8F99AE3C3AF8E4111ED28A7A1D0F872A4CF
+8A01A3DF5F8A5494CC64D563C13B89A0C6C81DA235BAD7E5CF45E6AB6B64673A
+4B2BB9D61CA3853D1A12980E1F8C1056A685597336B3B5DED072ABE18B2E416C
+9DC2616A521EC96EE0E2879C7DB8FC2366734D418D84E3BD8918E003703F9490
+063DC6309FE39F75063BDA079AFDF69144FA6CB761EA7C01FF32828FD29E0E4C
+66008487A00416133D280751D8F7608C718AC1B8E3DC476C7D13DD7D84E7F490
+AE794FCF017386EB0C9E43995B844F5511783025E39C0FADB3E69AB5682A9863
+8FB3E3B137315451B7CE458F52C79FD414D0EEC24DB7FE12336F91F93A9D1BAD
+A09028A37ACEC4F6406440DFCC10D2A8CC7018DCB05B7FC67CEFDF47B70F1FFA
+02B4CF200D0583BEFE4FA720A4F2C59199FA87AD87318C5D0BD0E2965EB871C8
+9325D972E78C73115378CDFF17D1FCE2E202FD8CB8064D294B2EE551A92F2551
+6D619439B5320F36BF2195CCDD8F1D84C0224FF04A56B497EADE63816E6801ED
+9647A1D923F4D8F64B54F72E49E06007AE64FA826612A066A5DDB19E3C8EABCE
+6B79D2DEB915E9D6002921DE0591ECF553A54B3D684582971B1D5F2641F62F59
+50640E9004C50D7751B3A7BC1FB4ED080FCB5823AEF1C80DF4A7F277948F8739
+C3881932D7BB1B31634CF1DE88FF14C95F2C94645715DF7E4794ECA34C7FEF59
+513E25F5E99057361E6C0B55F06C0408B3CBEDE7AB35FCFA713D24C5F30F9291
+54B75D2B8471EEF982A1086F10E236CC790E9DDC754A43988DEE351432AEADF3
+328894C869FC90E576FB5CA70CCAEF2F6E58F28C9B4741E492173F01515783A8
+2F9594193729CD7EFFCD4E6FB249D8AD9098A18DBCC84891191715CA8E790A4E
+A50611B2A28F4EC82FA7DC6B30F187F70CABB88904DF5E9696F468A39FE29086
+EAAD9368C42BC8029034ABE0C1056627D32151E968A0B53C977307CE20608AD3
+39EB1BBDD78D698C13C18D30A7721FD42B636DE6F85DE6A31A9D94438169375E
+7A1AD1C77FD2BB690B583EFB63BAF816E9E65777AF550C7D50C11C86874906B9
+27CFC5D78AC61C4AD0B4757C5B87B174333112271145294F8928BE5F79706933
+CF787394088DC50A1C1FC1B6E2E3C22F6419B8E725B4B50F952C889CFEFF997B
+C03F5ADE00D7107111FF498E35DD8A21B4CC4B51ABE826993B0B6713BF014760
+FE4DB723ADE963F082357582F265FC249F6AD04833993851C7D7CFC7B93A4E5E
+69B5AE710856D549FE44F643007B5E320B437EF4BB5A8D8F42C1DB3DD04427F3
+3310C1CC5A1C8ACA9B16161C56D23D287EA38EFECC082568CDE112DB488B188F
+241145CEF155783F0E9DD7FDED715EC8B5C0264F71174957005BC89679369CFB
+88CFD92119D251D8B543C01253BECDCAB35D0AB7E23F3C810DFD51551B4A56F7
+0A130E99D24B6D7256DDA51732791FEBD215CF703EB94BC8E5F099936E0A1F5E
+7187AC71864EDB3588ABBBDC4BE31D844E121D9F7D77988762289CCCA59D212A
+FB5FEDA9288408070E17C82A44B7D2B39C77E04EE3C9545F672C55D0F35981BB
+0DD3D631A97B8ACFFBC36BC82FF6098F9B382291735614665F429F825FF2B1CA
+CD6C0529E6305E2F54C636D28D5A9EFEC81EAD3F1751F33AA2A50EA76711252F
+E89F4D1BBC328C4E61C441351CCF0C0F5CD81F2C915D43EF79B9EB9A3DC900EF
+7CE385439E18F3EF1D43FA8132E626EC3E76540E2635666314842D56E4E245EB
+72E6686099B4D2EBC2CC2AACC80EFB168A495A7082CDB56CFDCFAFCE5F11F4F1
+FB841F9962A9B6D385091FFABA3DBCA9008CCC43B81FB90A7CD79EE4846358AD
+DB87DD0D883A0A7F1B33F4B5AC49AE43A55038A5A09BB2FF6B9FC3A9D05019AC
+3F9612DA0DE56FC08908E76152713DAFE2D2EEE6C4022EF69E25A4054360DD18
+0FE3DA4B0B8B9D0909F6610561D84B3BA6153982D70DD7ACCB3F377166950819
+2DB878B63680A7D5E02661F466CF0641AD798A9F1BCF9CE79EC62CC2255D0AF0
+50D364BC85E68FABDF69D90B75A9145D8A011C9754F24F6CDAB27306DC06E78B
+0D3738CD2FB5B50664F8A8C273D16D79FE022A4957E3D3D80C06EFA0CB8752A1
+16E808FE4D91F06F6E37BEE0391123815BCE47599DD251001EEB9EFC109E956F
+662B8FB56E9460F28F2041234F3B1A9CF4839FE09188F9FA8CC674CDAC21D0DA
+ABEEAB41C53F8F01EB4BFB82F8B3488BC7169A56AF8C2D97392FB91AE99C6AF7
+4D232ECD2A7EB313AA87E730E63943AE843CBC96A9075866378E36C838510892
+3108785C1400E0D917F6FB20631AD5BCF50726AA48B71260B49E16EAC7B11D29
+B7A6CF6CF90F83EE68E84E805F061B260922F445A6C767191980052F65F31527
+8F69FCF494341DF91E7143A90525F4FF719E912E5C1BA5A7C86A1543C0F33EB7
+A1144C13D048E0E7F5FCF51A941F636BD45E44BE2CE3ACFF4F448EB80E59742A
+D37B4190170EEEA63BFB6E318111F4F12A8EE9A0844D4B1AAC75567A6F81A967
+A7B63438EDE3C9226F5468C1FE9C69DAB57A9E3868C872FD75C32B7E55518421
+13B88CF2FFECC694D26D9F648E8E5E9092ECC84018827851DFE9617A4E1FAFB2
+597B0877D476B0280FCA4A98B42273CD4C56104FD81B59BFD4EE60A439C6A72F
+7323BAB0482B7A781C2CCA820578D9C127A6CAE468BFAFAD32370002934DB907
+4990468D8E086CD6369FBBFC201C00C10DCDC5958311EC3C94EB5773CD217CFC
+46B48E317315806E7A63271C336CA778D944864DD906EF26C30B95F0BC12C02A
+F65E8CD63B601DF3CEF3B82B2D5290B5690D4C6A10C65C2E7BED77FC223B3E79
+45BD45C399EE3C705F14CF23C20D4077A99270F9824E7B4E6E9B56B65268772C
+A9E605069014D5B19104D2D194E80E12001DFAAED3E2D1DF125E4370202A7E9A
+FE7CD8699C2ECDB856CB23EBCEC0A2DF883154EA68D7555F700247BB6D6122F6
+F407C9588A2ED8A1747E3D758ED413E174D35576C905EA092EDB82985BA93787
+FA25283F942A9D216E0F488F07A9B2A2E22FFACB54A1FD7A43EF3418A4EE611F
+026CB386543D9DF5D43BD227F67A195635612C5E8BDF830D3886899FABC82694
+F951585830C7CD15E5B82C2D2549607D83DD6B243782C73D522D9B83632BCCE4
+3458A6735481077DF653B0863A09EA38B0A85E58730B56D5DA3B8788570F86AC
+3BC6AABC424DC0EEB6B731682C4324604950FFFE0E8432BE9AF23ACC0D5187DA
+632D96388C4D1221564DB31CF6E5B271CFD0C115F158728D742DC5857BCC0988
+9B312024A29CEDEF1133B1BB38596F4EA299B964AD83B837601512B589051C08
+82A19465D11FD05C8B85561AF5A96CCE3D7DFC113032FF2F0BC382EAA05BB3BF
+672CD7CA0FF15859424CA21188FC721D2FAAA64FC9765F4284C2D74FD1D7F93D
+19FDE5B1641D790473D37DA576833ECC96FFF635D71C76542CD66175321B0796
+8EEB90A2A9C812BEDB5D257ED858353DBB326CED297736E65CB7613AAF688EF0
+B082D9BD02C9F626EEC65AECFBBC023CED23359AA349CEE94A1A3280E395919E
+342110307B41117C9E33AFD565296CB8997A67FF71D2929F6526B5D709CEB379
+E927CA67C1D3BD127D51888EFE008BE5C4F7CB3EB600689935BAC1F35E82B237
+047490B4294D0882E8F016E6BA70818548E4ADD19A3F58148285D99E6C5457D9
+2D6153797596D4F5F100D01D95201E61F1A2566E21A74EEBE4C8E5A3C912DC47
+73B56F716A942AD17CA9A57637BFBC09183B8155BC69B131511124179E6989C7
+6762DC1DA3005DC28BD76FB93C62AC37D2B72630C821713B4DDC8A7D73289927
+B840252750485AD870028E37A3E117CA365ED6596ADEB200D1987F0051392B49
+01BDA6FC7B22AC7EED8BC19B73EF2729A9188A9D4F771EFA5A5C449FA3FD8626
+1D6D93B75CE306282F4C821422FBE548346865AC8433C09FD33C12799054722F
+354B348B2E20BDF1DB0483CF989312495F7BE933093ECA2B698FC767584E7DBF
+495F804B1A18C1E50172EEFA0125EFB17508EDB31F081A02005B6B96EB287009
+5E3736195266353222A960E71D0E0388F1B8B2B375ABD81350A468412650497B
+710FB2AFF23D9A6B41502F16E29E17FCE2AF39BC8856764EAC8DF171032C99A0
+45904ABC14BF78F455C1727D1780BADA68A216BF260C08D11A5E7BD0C995046C
+28D93B6BC3FFF425915E14F0E1CED3FB8FDAE10ECD70B51C5E433D1D88A96FF0
+CAC95918FAEA5BD09AF4D17FC1D4B56E2EB23BBFA7FFD82F1AB556773C99E273
+9F0CD35AF080215AA906E7D640BD689137D2EFDDE760FA2D15A4FA00A9142713
+5F5939DDE8C4BFFAC802EBCE1CA70607A4DFA3E47414A387AEE4425AAE6B7F90
+7BFC4ECF8D9E5F39DA0C89B1245672AAAE9E199DE00830E0818CB5A8E51A3D19
+F9286F92906F9329459A31947F6E4F01A4F7F9E8276323F18E314D2F1893A15D
+E72634837FF30D9CF7C19C2ED62E4FF40F541DA08230E3B968B1811DD20B3308
+93A5597389FC80917A63B84D0A0206E879757FDDCE6F7DCCCBA09DF0B2D3EDEF
+8EA4027C3BE49752F4B0DD4513C1F1A45F3C2B4C5254F2E30389423206354D3C
+8F411DFB905179DBC2DBB62CED5E49DCADD40882EA2296E7F29BF3FF641724AB
+440EF162F0016231D05085C763327B87D36CEB670464869C1CF5961067AB2A20
+C98F8D64B2ACB65E911A885A5A0E0DCA0C2555F046FEDF4F1E22FA5A7A654E85
+B758500AC9FBEEF5316057BF93D55F803CC944988D0EFA641E11E34C6643C195
+450205F366C31177567C97AE0CD330A948465C5BEDB75E02907A42039E2387C6
+B282281D5FE8EF305BCE759EBBFA8B0CCAD64AB1D837D0CEB151E872F1B6D1D2
+73A5FAE6F0D5F17A655F09D464727CC34541F085069671787F7A7E6A57D1168B
+B5B11898C6816FBC86574536690B86872104C916D307BD2694366679037E2E5D
+95D83A3BFB5960FBD7EB4C7D695C29A4AB69B82058919AFE9F1FE2476BB48DD9
+DBBB2D782CE42EEA1107408ADF4AEE4C346FAAAF6637118EB7481466C5D91886
+6647B0D898E1ECA305BD9722868F8D4BE14A99DAC1317F85E14C77D43141E358
+06D8F53E7327D1517E274F8C4F1055995048D445C799555409FBA8A4A9803CB8
+F91353323A75F94BEC007CBF778DF2DD83F93235008A1E8513BADECF4D704CBB
+68B41442FEE50AD93558EC894DCD299DDFEFB2EA88CB9914BA720FB6A8D2B3F1
+CC1E38945633A49E97DB775B7407FE3C37C26DE42F00ACD48A95969761A9CAD7
+3ED6AFDD25DD2663455B287B41BF3991FF908AF26E7BEF9F9EAE46025AA49090
+3A84CDB5B45686C1B31E95D45E9E69B2316E7E49A8C617E1FE0CDC22E425DEF5
+1A6D1333F816516AAC76111BEC9DBFFCA43131655051552934EDC38E5AE40C7B
+94D4E43A8B536E54636C252F6CD7373B0AB6CFFA03BDA7F2991B89FD4A423978
+14FE306852A7F278AB095C2DC7952F3AC8BB680EB85D7D7472D802721C294C83
+52C86EB93A045853E276DAAAFB58A993162E334B862449DEA21F505DBB881B27
+E7E2C3EB501BEA65BF9525CFAEA54F53951082E7F18567D9AF69A47DF33A7843
+2B68DF550DAB43698EABBC18C1D484B9F92F68AAF7DBEB3AC43889A0F6F5CDDF
+39FCC91D0110E57FEBDA30E1A082E2F4E5FD008E8CFE7BEBE0DFAE1E214CF2B4
+ADA809F2B8A69ED70CEC5FF515D4CE5E0E992BB68CA10E365526B409C507C4F3
+B27513AEC8A581A5A88C812BBB542200A44B7C497EA861E3318C37A5790732B8
+7B47BC881F9719B1216F8E92256042E3E88F845BA0F969052638E2C045ED6934
+1667E2435157FF9A5C1C3B10760CE9FEC0B997B5FA8E026BF76FAA8CEFE9D206
+2E6FA69675C7EDC4D9A0662201CA6059A8E6E0A99A7A37B45EF94D8345CF5005
+DB1F0CFD899138F6F6EB1A073926511210F555E20F6549F6462FDCBC951B3A63
+7585C272A47224C440B5245F807C5BD56E4A9F8EB9A605AA46AB25C2F0B66713
+53334D9D374A9C1B6CD68DE10821422FA8A4069C04FED8B75174F19BF7DF38EA
+B8D28DC13B1D0B8BD9DB87D758EDEECC5C179152FA0C531F99019F2761DF7FB9
+ECA6E6266E545CB32F9659730A7C2E3BE4899B26708260E6C16A3DA944955292
+D3F39606B0B5F17934CA55E76DC5E2971F40409841CD2F9CEF874AD07607D147
+12EBB9EE70ED60B206B0EF23020849EE3F88DD2D71F5492DCC475908017EBF19
+BBBA158F6FA410A01D3A7B5856D336BC725FFE059F35904059BE7C0F2FD32ADF
+61137C07972BA78EF095252B62AACDE583BCF9F8D50F813095C5B91657D54E71
+73A4563468B092CFA0FF54BEFCEE75EF89EE27E94EB63954352ECE921EF8F946
+4FED905528CD9E2F4966E39F4326BEB59B2DD560FBDA0EE9D4CE163AA3D727DD
+B72E215267AB57472A6A69225B260DC1176F69BB7F631F8806444D929D2782D1
+D4F69B7FEA78C18169E756D5333516D5810EF2ED520BD948B3E79FA423AD5FE3
+047BE28606DEC14B7C6F2922254815127EC4F53E0F37668F77C77DC95EF78A6F
+E8D4645AC3BCDA9677F2DD5400683904CDA81AB2EE2FC4CA210D72A8BDB2F98E
+80B98AC668611A1EC387380A7E23F30F339DCDE1A97252B0DB31369FD69633B9
+E7981956B20591A8F7BE191669B5DBF2B4D1C85BCB0B963D7A16D3AB4135AE2B
+913C9E27F26166C7361E90A109749BFA119ABC9D3AB61FEF58D4724EC22C1AA7
+FF31FB66C95D6DBB7876D3048E189096A08F113BB8D768DFD7BD52B49E242C45
+89A8D3DBCE2562757581C7067558852427412B1F5A68BB86DED52CB09190BA47
+87250787D93ADD06CE03607E16148ABB1C5AB512601ED754E7721AD5F383D687
+557793474490BB8D37A86E9E8710870662EAB0BDD1597A60CDABE51BD683A906
+8A695834286F7DEFBF594B0967B4E8E07CA1F17EE19178858C320397DD29678E
+AB90FC7CF091410C3B53EC7642CB9778F80EEA438323A04381794121DC142475
+BEC46C64A97745B2A26BCDC93149C4F938D07921E8F1B9014909B5F9C069E0F7
+B08BD838651B9093B022B10D5FC8F106EE9E0E05DBB4B78DBD8A1EC98B13364E
+01CBE43303E5E9A8DEECDC26C28A588AD3DDD92DD18E308ABA21A3F9D115F05E
+6404206D3309961DCDE3E9AB912359CF6552380F923D4EE5D96B24867DC1A9D8
+6B2A502BC9958860F584E32F206585D36119BEC3D22B80B6A14D2E480371DC4D
+9CA23D21F54A8C09AFF8BBBDD5E9539A2C8ACE66A712C87037E4ECBBE36EA579
+3F8F86FABE571365714092DFEFEE0FB8B814239AA3160629129280A59B48F3CC
+44B0E66050C6E8CC20B1391F8493841AB1118A6264EFE8972A126B654C99A5EC
+BE037A0A783B03996FE50C7351F148C9F9FE6889793E006257585CA0740531F4
+EE247CA64B3EA4CF7C84E8145CCCF7448128225F029EDB29B31E603B06728BCA
+5B8C84EAF4D06607AB0FE211CA8316789E7AB0F9F33C8710A2A7CF7FC94B7C79
+8E29B408CDDD0DE7E7E717C16A2797E415B42D1EE964D4D62546C3082A59358E
+006DEBD51D8BBD0C45C51F03BAA68B21137A20DE9CAF34A3C1AAEA54E1DC7362
+A3CA0BE789948518084381AFBCBC3B7B
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+{restore}if
+%%EndFont
+%%BeginFont: CMSY10
+%!PS-AdobeFont-1.0: CMSY10 003.002
+%%Title: CMSY10
+%Version: 003.002
+%%CreationDate: Mon Jul 13 16:17:00 2009
+%%Creator: David M. Jones
+%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
+%Copyright: (<http://www.ams.org>), with Reserved Font Name CMSY10.
+% 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/CMSY10 known{/CMSY10 findfont dup/UniqueID known{dup
+/UniqueID get 5096651 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 /CMSY10 def
+/FontBBox {-29 -960 1116 775 }readonly def
+/PaintType 0 def
+/FontInfo 9 dict dup begin
+/version (003.002) readonly def
+/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMSY10.) readonly def
+/FullName (CMSY10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.04 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 0 /minus put
+dup 13 /circlecopyrt put
+dup 15 /bullet put
+readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846AB284BCF8B0411B772DE5CD06DFE1BE899059C588357426D7A0
+7B684C079A47D271426064AD18CB9750D8A986D1D67C1B2AEEF8CE785CC19C81
+DE96489F740045C5E342F02DA1C9F9F3C167651E646F1A67CF379789E311EF91
+511D0F605B045B279357D6FC8537C233E7AEE6A4FDBE73E75A39EB206D20A6F6
+1021961B748D419EBEEB028B592124E174CA595C108E12725B9875544955CFFD
+028B698EF742BC8C19F979E35B8E99CADDDDC89CC6C59733F2A24BC3AF36AD86
+1319147A4A219ECB92D0D9F6228B51A97C29547000FCC8A581BE543D73F1FED4
+3D08C53693138003C01E1D216B185179E1856E2A05AA6C66AABB68B7E4409021
+91AA9D8E4C5FBBDA55F1BB6BC679EABA06BE9795DB920A6343CE934B04D75DF2
+E0C30B8FD2E475FE0D66D4AA65821864C7DD6AC9939A04094EEA832EAD33DB7A
+11EE8D595FB0E543D0E80D31D584B97879B3C7B4A85CC6358A41342D70AD0B97
+C14123421FE8A7D131FB0D03900B392FDA0ABAFC25E946D2251F150EC595E857
+D17AE424DB76B431366086F377B2A0EEFD3909E3FA35E51886FC318989C1EF20
+B6F5990F1D39C22127F0A47BC8461F3AFDF87D9BDA4B6C1D1CFD7513F1E3C3D3
+93BEF764AA832316343F9FE869A720E4AA87AE76FA87A833BBC5892DE05B867F
+10FA225E233BCFA9BB51F46A6DF22ADCEACC01C3CD1F54C9AEFA25E92EFAC00D
+7E2BA427C25483BA42A199F4D2E43DFCE79A7156F7417ACF78E41FCA91E6C9EF
+B933450D851B73A6AB6AEA7EE4C710CB5C14270D1674FA334686653793FCB31B
+491E870D3C2BC654D2C1DE463EC9BA29D7371AA1078800EF93D3F66263A2EBBB
+F5723697BF7448BD0D2E301544BECF497FD475B85DFEF52AF4F8F8BE445CABE6
+019318806D10C5952157FF8F8286C1EE701545C8F60EFA854EAE66835A2046A6
+915D395F1E0366EFE0C0391583FE001FF16D82A2E2DA5F57754A2C6F69306E36
+356ECF8EFC3F1188AD6FCD2427E0580C97A5B69B4E0E09B85EEDE142F5ADD2F0
+5DE51D6DB72B127412A0D57106C19CA493048A4F815129ABE767D51715B1515D
+9C21067CB5BC88741B7298C83EAE36A866DFA87D8981F179B1C31292F56BBB64
+3C430779468AAF07C8A8B4934E1E775FE3F35186BD1FA6EE3689C1C750678AF1
+FBF9B23195A124C5C991FE670AC0C86FD39D2B07B9A319E74EFD498B45820252
+720ECDF7294F7B0B137CEB86D33BFCEB8606985A3260FD669E461C8BE94216C5
+D434FD8854F44EE66E5A289A9F9E32BC36AF645D53F96652602BAED418C8D726
+BD04A1B4617551FE4DEF54083D414F7DCE004E6BB2DC9C2EF7CE232B254BA2C5
+7DCBD36C2072ED46FF711F121A701E2284BF1B718B3164382B8F453D68FA0377
+DFE106503B8401D4DB87F5402A3AC9A442FA060B0610A9524D530C7157C26B56
+AC970FCC1D5655FFFFA39246E6420CF97D08ADFB7B05822679BD40C638DDF0E7
+A97BFE8918B611A145AC965C203F1428812F9D340AF499B3A915B22BE798594E
+0F520109FC81E452180AE45B170FF999C5FC2761C6CECD8742A5A6FC97F16743
+AD4EFCC6572A6D3F3E4E330C5CB2FF6FEA48A5B64DD3DBE943BD9918D4A18E18
+CBCF598AEFBB6AB3CD2CBC9BFD6099272F6543F3E532E0E21E614BD2880B1023
+0AC234CB705827BF016DB84E00E8C255FDEFA0101A842929540B7B4AA8A089BD
+5EFF05B72356B6BC3727817823B5CDBB1B963103000D7F2A4E2A1472FC3E614B
+5CBCB6D6D784023173DEFEBFA8F9ED87EC1A0A9EE98CA59CFC964CF943DC683F
+E9E00DA718C4425A705A69D99988EC6F152525C790912C2E46A2381A569424AB
+54DF4798BC2D7E7A361E7991641D4B756CE2A7FF4A2848927092C59C2C4B8809
+E13AB84FB6B111E680D7FB9F2FFC2C5C66B0B501E4447C2E46C10E2F6124476F
+A140C404CFE2DC9E0199BF61E035CEB481D438139A9630934E541D261FFD2906
+4CAD99E20655FA746AFB81EDBB5601F5FD6B1D6832A01D585E2C55053F6A7378
+4DAACCAC7608DBDADAAE732D66B3E7F87E79756337C1A961E53A4651BE7C77F4
+038B89C87F650C54A2A90EB7F1D525BB353F33318551EE8D84A6A83C718EA5A4
+B2AC0F7306B1E095819B87015A90CA3ED739B09061782C28CDB36BA4BD5E5308
+5CBB70414E4112193DAC4A1FA30996327230D1E021F3CD8115E12D239D93FFDC
+B645910EB29E40D830E7BAF2DB255FD7C4E776557BB38157917D993EAC245837
+A3B515147043574157B8342D829C7228CCEA843ABC89D1785A9672A5923FC4CD
+2F3FF27E6FCACF84E2D3136CA2C0FD3EF1EE7354CD04C38B5FB874553646ED2D
+CEDF7E362EADD04B18051F20A8FB0DE18E152385B9D05F98A3A7EF177824E246
+455ABE69E2F700EB78185CCFC07E3B4C6FA301112528D977367D30D0D5D59EDE
+FAEB706DDC970A9E296236C725B2B55B09B9C336B8E23CBA5FB8692D56F33B03
+16294E5FC7FAA42E96395A57CE51CA8DDD77442F142E2E576B778373FB31C81C
+16840BB422CA827E30A81829648BDF1CA36700EA32AD888D097C1FE0A05B2D9F
+483AEE40269DF09AF0D1AD3DF80C45DDC59C2A03FBB661C79B87853737C6D352
+67626B657321B16198DBD6DB98A092F17878AE4698121E1006E53D6F9B0A3BE2
+3FB68828EF854A0CDBAA68B37ABCA6AD4A3D809AAF0BAB1697A81FE59C98C472
+1E33CD70A75A22C249DD11D76C2575ED3370A25892A16D2FD569CDA70C130770
+93F493C7D47D6F9A5424A7A542BAD726BFC3AB225DCEBBE6AC4BE006F8C7C0EA
+051424B08305BF2D951AB2986AAFEA04E078CA79B399585BFF0F1ADCED02E15B
+8765EB6BF6A8E4D0901EFF2C3AA104924EAD9637A35D877E0C51A3C37DA78CD4
+8643C8CE6DCDDE3F116A6C2390F948E5371BEB5AD2E87B41C5F01FB5C196C436
+6E256A88D082E3F46E4EFFBF605B2EFF1E9D9AD5EE4DDC323A137CD9451EDEE0
+06F7D82898D71FAF2362C0FCF1F726F97F820305B7CE20728CA08C63575083A7
+84BA28B7DE2B916432475510E274C12FFD1660A717F51DACFDF0A102D85224E0
+D6DB607BB72569ABB8A7BC6A10354CBBC01732EFE35B72062DF269CB25EA3DE6
+DC603B04C90C5912D2C38D7A5ACDCDD3F6F116D884F0D8C528F69D5D47BA20DB
+0A9E585C7D8CC3C324FE8A1DF150279F7E8FB43BDB720E624E5E9918032C02CD
+8020636AE5C38DA2484B7F4B34163E0D0A561B43B80E97746DC05C871AB620EC
+C5D47101ECED4A7E25F291184BEF8B80024AA7BB456C1B83A907652B331DEA34
+754226C39C6889EBEEFDAD081E01EF8FE47751987667836FDE4C8BB8A3FD4406
+1E643B4EA37BD370734D1A2DB17C2F4B74B4ED75098B433601F75A88C9A37A05
+CCB157EF6E32023BFA33973F3E655A4D58289136996FCFA61EEABD70791B6523
+1FF5DE71AB8A17038923118A5EED8D59C4C58D246FFA9BB26472346B40C8741F
+153D19CAFF20DD2A86C6DB89154A630FB1761929FC3F0448EE2F089C1C953E02
+905BA8DE75D101A982A611056C4B237596C10951DD98BAB838B742D3CF7DE718
+617DB72E5268583223E37E029D1C8FD3F1D21690151F76B76C52C725CA135CA2
+8666553E863CE188BFC9B99AF56AC2DB5BFEBEB12FB563D00244EB89E478657A
+98AF2E1223C1ABC25A4500E8119B86EB3C26B8A2F3505A3E5610F89B7C34E278
+53FA0A54A7F46D84A35EFEC36AE660A9E3C37EE3864106702DE5AF6C45ABF64B
+888A4A51323138CE77DB935576FE6B4824B6942DF80625098CE1B5B32B234F1D
+052A9D6039697118A9D793793775D8729D8574A2E74D7109C7B7E23BC5E2E87A
+CA8E019203952A4892544E1AD3D4EDD22971611358AB230E9A2ABDF00A288501
+A01B67C42B33F6B78C39562DB50F4663B922D9BE0D8A150311AE44B83C1F129F
+07337323E9A23211EE58E16043E127C6F9574019179F5635648A011266677B56
+B5D0201A4E1470B952A1579B57AB2329CD4C615395023C653F784D36B5EE3672
+10D191F29EA508CE84763CA4CE7C2C5229E38E241255A5CABCD6C7CBAED901A2
+CA53B5E24111921CDDF83578D33D463D70EDACA0E470D8F592303FB6BFD68B4D
+3F3BE2D7C5EC8BBF10C90111A33E205F2649B56E8443F6FAA6C721C66575AE12
+D4C40F1F46CF9E9DA675AB5D5840D938780CD9E4AD6736ECBEB6A4397613586F
+849B51048AC5F9405E03E14540A5E5582F61CDCDB57EDDF95A8C6705F433EE16
+648F098C03DED8A2AD94AE3DE202D629B9422ABB031318D48F2C85F9DBFA17BE
+84708AA3B6C9F81F4508F7A5CB7B6646AB8722ECF817877B77D473F577556DAA
+2BA0ABACFCF5DEA7498C47328E873019A956FBB250FD9D8885D21D368FA70CBD
+2709D2DA44EE7A9869963EAB48789541906DE49FAE785ECE1F18A22C7E7ED204
+9768896B78E9EB7A2BD6EEC1B26083940656ECD689D92942CC8AF05CBF82AED0
+B45A7DF4DD7AA6526FB597322560B9ED3087A65B5EEF1371C328A021411BFE3B
+D9B5088B2F1AAE381FFED52D2D1E02CD0DA78683E3B06171CBE94BE9760005D7
+135893D7CC2DB097F6AC664D9594CF1C650F84DA80D2EDE04802DBA33CE3DAFE
+EB7A37E8AEFA4FDA6252FF21E8673DD98E67124D5DBC7BACF361E57077B71939
+C1D1FB923E4E35C075CD1BCBE0E80DAEA1320D55B43EAB45D9B26C366B278782
+7519FDC482D98839BF0DF2E7C3A56A1C1A3FC0E57A75CA414F6536C1FE8EB7A0
+4ADFEE3BEDA0F53BE8CF5F64230784A797133E8CD46BCCB3BF38BCE38A73CCE2
+9E073ADE792F7128231DDD1F63E6156ADB2609C200837C2E8A2D93D2A7BC9171
+050C709A71E44E32B1B03C92EB5CF1D3BAB1C38E027DC4ED9AED633D98CD7486
+3F773ACF8AE332631CF2ABE6D606607593FE862ADE31803964E3F4DC3CE3A271
+C76BDD95C87CDB3B87BC26FC7A16D567EEC62E6FF0D471B4853DB8A94D4CACF8
+843824F818083F10E88D52FC4253E8203292CB40F1414AE7E51DD7347007C342
+CD70E8E9F2D2A13D71213B841DDEAAB208AD9EA644591C15DEB084165F9DF24B
+B91D3BBEEC2E34E38EF16A0C3F00700A7BDCBBFED2EC0D09601AD6538288DB50
+3478B051B5E16B604A0341FE621A58718D960D699D3FAD284310DCF54EB13175
+19A75A539EE98E804AEA24689D3540F0F12951A3C01FACCE9A7BAF4D0DAFA946
+FF65A4D2A4C39969607272C6886F44E90ABE27CA3A1F12A29D9B32E60E8E34F0
+17C5FE43D0E69A99A922D98909B2BBCD145E59A5E7F5426B3988F73B09A525F6
+8BD4915663C1301323180E760BE81CB874B020FDA3AE63340E4261E4F3E4949B
+CC0966BDC4426190BE9F5D77F76A72AD925662E5FE1CEF9CCAB68F0BD33DA003
+F11EB91AC4502FBD6AE48DA0F9D07C35B96B103E379B8A83A05FE728F1716194
+1F650F75BEBADB2E3810388F3E2DC7B19F1BA9E32925F2FD9F19F4E8701F3E4E
+4069125D7C401144740691E7A460021A47B1E27997FC1DDABEC5BD0EE0B20194
+2D579C7D6727AA124083242BDA46D8E116E2751C5F298851A62B60AEBE82A929
+9B9F2492BA35690D1EFD16215B8EF14E7A3803B93C28FA41D971B05B6AF3B593
+E74AD1E68A5FCE12A86E63B78BFEA87D3949FD164F12277A4688BE96356791CB
+8671C49365608F3EDECC109321AF92B4C29CAF073DA3A7D73E913D0D83FAC5EB
+BD884D4C686056404DAAAD6F82F94F803FA1FB0DD8908D1DF08FB87A8BB83027
+04DE0CBB1C6FEB6B517FBD7CF065120079E608CE41893C2BC96A347826CCDFD5
+C69E161217F2127A59F1A6F22037641613F191F22D5B4CDCBCC2EE5615623404
+ABA7BE6C5FE475481615B2AC1A2412E54688DD21E44CC9AF5F16E634AFCA389C
+4D740B7B51BB141BFAD1080E7C726C1606A28ED492E6BDE9F800EFACD1513909
+84E98CEB6A0B7A2A6F3E1D1DCC3B2552795E0932673E59ECC56DDD37A1D52BA6
+C3F0E905978AB568941A163F4CE3AAB5C5B16F86016EC47BA6F3F7AAAA77C3B6
+09C8C3ABDB6D514A76ECD37C37AA88B5860630B3406B494F7725975596F84777
+D9CF48686EC9C5DBCC1D78513F591C7C10AB9D153B3D41426B7BF668B0D04503
+56BCB686258462C1DC61095724B9F3312316262FD7C1AEC6E54DE7E5A7BD8EFF
+035299B8FD8A4A7B0F51404F4A760F4D8B4C0FB7A32FA4B2383AB6E9C78FDEDB
+FE6A5788D38A6701B123630C2A6D820A684166FBBC83DB17069494FBD411B333
+CB37E2491C5BD035A33867A6D3A3D420CC31ACF43AA07182CAAE67E40EC63663
+B678F71D4C6E0EC3A0AAF904CD3AA66E0DE5E3CDE049E94249B39A1C06E3CE9A
+F974B2484BB2CDA14282B9511E505B3C89F9C802218AE40D1A7541335C5736DD
+CD565D4B9F4CC78F3A393737EDB4FBD0DA299E21CCFEBA5478EEF013F0552A8B
+0BB11FF46CCDB784E8BDCF730A16363E66572049E42C695886EAB42A9AD9094C
+B635DF4B5B9BD9B9AE8455DFA3EEFC77653190F9A8B1E93B7281C2A21EA7DDA9
+33484745BDF7E3DD63C7AC66C286C9A5A698A5E4D7A91710B7FF943FB23609B6
+4B442F83CB795788FAB5E9CF3F75D5487DA26170E4561C7941C910B088C3B86D
+F844B0F340CF82786A3FCF347048463EBD2006281A816627065DDA6CD4D3AC5E
+2024BC96C7D896381BBB567951E7A1F29D4E95351298B000D29E5F3D0448CB5A
+CFDAE1BADE9403B90371C3A07D208948AFA022A69C519434B6813086ADF518D5
+88E0B92072A44BA1B3EBB630A13B7AB90992E85B6D67361C8D96F3E0D826FF37
+17B67E4B1EB7BADFD98D7F4FD17BECE740ADF13C141EBF0A91CB105DABB32FE0
+55086D56A0D358841D15FD349E6B95512E4EDF4C430216FF85C2ABE995E4B40A
+A6044CC8820AD885C07E052B3F91C2E9A1D163BFFD210F7BE95B923E2500DB50
+2075106DB541C267BD450B25B670CE80BCD068D4DBFF2D82634175B61FBD3BC3
+406131F44C7D6F18D375D1F2270829DDF29DC14DBB58A30AC193245D18DE91F8
+AB88AB548D8138605BB5A50073295534E314366E26665AE70482B890E4101D6B
+60E4F3B37ABCA1346DAAE8FDB8DD9C832EFF3E73BA470E2BACE7B8515CB43388
+C27AF99FF9322175CF8D4947E6B3846AFF5163E972156847F58A66660EC8A3A6
+5FB47C9F637B4CBB4C73B6A080B0CF6FD1E9665E92032540570FFCC747C67C50
+822811AADC404BC7ECD1673E8AA6C3A2F1D82F39430B58C29145E2F1B679C46E
+94EDC711883F1E4EA84117A54757E8895A40401A26E1437B39A2F65CAADD6E02
+D71FA8AF7453668DC613F326A3344F74AD7AC67569AF399385500ABDA5EDD3BA
+343CC5EDD4B558467626850E752B9959FEF1454E53E7A3DCBC2255AD8F6AB4FE
+894455118A61C58840CB68A925ACCAD75CEACE863D806916228F0614191A1CD5
+DC9BAE256018615AA3725834519449B0A88B4F396654E74099C007930ADB1327
+DD119BF799FE3B0B223E1EDA04FE2DA7A1C879143E1C33B6C6344F4BA033AD6F
+8E88C33DEF1977796B454BAB2494C930F492A518E8198C708A75FFEF8C49C324
+A718AB59B889DED521229E741FFE53F98EBE88B0405AD523254FD3FA4BBE96DA
+DA1C27C1C979A0DD4E61C3B1F4C4DE01E42F1C4435EECFC02D97994BC8AF5270
+E7CB1458D76ED0229C5FFB4A23B8716018F9050970895D51722CDE8F2EA3D947
+DFF374D84915D5C5D16463A6FFCD079D1ED416C4347BF831FF0C4ADFB61295DC
+4D5785BB0852BF472CFC97EC174491CAF961AB90629F055E75DAA6D9898E8653
+5BCF379816CAE46FEA62E7BE8E9B953466E51828172C4DBD0E1BBAD1CE28B5B1
+02B3E36403BE80B49A47446A6677FCED438F01D60EB10F478C89528FA337D0D8
+88D3FC123C076507ACDAF783A9A6E24ED73BF24B6E0F11C13E532DE5F70B15A0
+657F5ED27D204449A841ED19E01432CFFE928E921321113780D036D34F2797DE
+D4459CFD15BB117B5C9745EF3CD2B296D91FAD48C80B136D94476967E255F808
+AD2B5D522ADEC64176833756510391815A1D4A8DA1D0AEE7CAD36A1D161889F2
+3347D5B6BC503300FDDD48F594F391D5FB42C42113C538E707C16EE24A3F375E
+7C506E8F49CE50FF9DEF3B4A4C1BEB3848EAA3477349833BA22D2A9012287D8B
+A8C4CB4307A1188ACC0E6E9338E1559BE5FAFF381BD82A6C71C267409468B3C0
+2C1A29F4281D565836EAE57F680490FEA4A952FF64C8CD11C377C294DCD1EC25
+CEFB2B6DCE959D0208F85B6E32E9B44FD455F9B134A5306D95EA29F37BB8B86D
+9E592159338E1293F449380E13C21AE42E6FC60CE8A8DD021324204494A9EA67
+CB8D6D35618247BE3CA9B656EEA4C65E463AC3969D8C09CABB92396D6C42D9C6
+C63736AD3E22B5226A3CE66EF8290E4B75FFF5456178002F8EEEA0F477A50D0D
+A26FC86EB69C9493F6D12629AC8C44C2F24475B28E9D0DD9D39687C6CF683BDA
+9211DAA631C5F93BA5C856A04046C308D4687822AC89D264B2592757CFBFC518
+3C0EAA3485C74189AF1FD8C55C057745333A095B4EB8E2FF261398E8C1F7E9B0
+56CDC6E2666576393EC71483E8474831B8B334414BA78BE678ED85F299C71463
+9528EC676EFD3ED257C75A7617DF5BAC084FEF219D3D810433616CB4925C182B
+624F3954ECF0E2181E19E4B8F152E4C362DF1D8317D568006E8F3D27A4881317
+090A56349D0AB6EB24013A7311C87772ACFB629243C96862D63D590F91639DA9
+21FC9D5BF5FE25A80BF2AFC849EE9DBA3EB0320299086B5EE667FF58C14B5197
+63644B2C2FA81A11FEF33F24994C062069B8ACB768635663234CE9D5DC6CAB79
+9861C469168B9B
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+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: (<http://www.ams.org>), 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<http://www.ams.org>\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 38 /ampersand put
+dup 39 /quoteright put
+dup 40 /parenleft put
+dup 41 /parenright 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 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 61 /equal put
+dup 63 /question put
+dup 64 /at 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
+9DFEF090304F4EA258DBBAFD12E062FC3009AEE31047D608A7D67DBDE50BD5FE
+2EE343E8FD49FC9C8914C4201E17EAA6823325DF160D9BF73E2C9A38E7C6E4B1
+18CC66F25638F5C16073F60FF83AACB10ED44C7B2F238BBA448D7C7BB5B1367F
+A048C20043D7D1DECDD74E7B17D7014BD861DC0D1B968078C119E33F9AF637D6
+F35BDD606F94FB30591265CEA8376F8E0EFDB6128C4F8BAB44F2F617D4F2D64B
+5E1D70C48CD21CA47298F59E8DDD674CC192BAA8E4D709D8B3D220E4A3ED5DB1
+CB68F4F000B42B8A3A3533388F08D4313F381F98A557C76DB3AC2C01DECA19B0
+D41018F4441EAE36EE2ADD3F374DEB8329ADB6D4D83A42D00316ED2633AD1889
+242509F5579386FF4CE439196570E7C170BC31197BA2727A35FEA4C6CDE240F9
+E109403A11DF708702A49F142E7F7843DF1755A7FC718E46D4D3859A738E5E38
+73CF636422CD3D37BBE8D244AEBA9A8A34705BBB855E30E4A24AB357F1B35A76
+B2EB6FF76345CEB715BE827B9FAE2D16C78DB9D54AB5B6299E47C651A3206CF1
+FBEF9D30E5CFDDF7C3383D3A4BCA1F6C1288AC61C379EECB596B5AD5EE795391
+0A7076FB3361D028784DA3C33F44BC2CA5B39F558C0364FD10C3BFA49FA3951E
+45F80BB87BC54CDCEF827A06351B326BF276C77F57CC16CE9352F3E1C7577A03
+5D007A3EBFFF808679E105E63D92F5A916307B7B7857A34DD434139229577AEB
+54E83EB34581F1E72EB2B19C1390FD0252720FC7ECC6254D46E16D9887506C22
+1A62F7B8CE248C394E9D0BA5A0A21C98A4602A490F5E191FD4DFA2396DAB3407
+A99AC43D6968FF654551E248C4B5C8201350D0D7BE84885EB6D82123F67252E7
+B2E40CCDB1A007E8338770A6B865F0578DA8AA590F0B04B97DE30B6D5EEAECD4
+CAA089740C38F887D7FCBAB40C497B1735068027FA29C7512D0F1FD370439D89
+6EDF4E82F94594978978948E031DF50DBCF28F115E64C14EA132EFE296566230
+75D25AFABF46E74D9CCD94AA92859D2E4A0C5A0EDB60AFC79696AAB11F91C92B
+51DA6338584D3FD9FAB8E487DA1077902DCBA979E76AA5F4EB7EC5DA3A1EF864
+0D535034678DD52A68BE4A4527B0809BCF2C5A719B9634AFAA54251AC7CF9568
+B9F46C247C13AD31103CC5A830B5C5D5EDDEB919E8A101ABE06AC2C2DC664E18
+0E58D8FC646B688C45C5AA2D8392E436EBCE3267EA8037E8CE4BB2A88AC29711
+E3944EE2CCE88C991778992357087DC2AD740A5600558E97D61ACBEE7BE140A9
+6779218742B1310136476362BB5E7FCD0A8919E6AC81DDC49A8CA8C21F1780A5
+3CA00703C1E8F82C65F06F9AF2091C7B2815564CABCA72C561E6ECD9F51686A9
+F197C4876023E5F45922F8C06F751F4F3EA001141FC80EA5D9EDC797D17E994F
+1C966705E91C921D73A903822F3456DD4AC2E27E9E6DF18CABCE84CCA6D028BB
+E0681CF3F22BBC3AA8DB3045A5A5BD8F821DC103A5AF7813484F27A181D76BBE
+048F9D173A2E929A478F60C3672F1CED13AADD2761F5FA1FB5D63AFBE2565B1B
+40367FAA7E6DD4B6E8158CF3C4C4D108A8FBB2C1634C7BDD9DB85A887A979C79
+9F60EC14AFA0E1731547D89CA95F37CA07E32C181FA05AA03B92C484446DCC7C
+D8720B909DCFC3142C4CDF8E0FA5F88DE4F0339F573978AFDA870DDBE2359185
+71D37D1A1B39073A27342B5040E9D6ABFF7FCE20D7ADB85AA9CAD637AF9F1A79
+87242369842693E983153F502CBB90B275B9F731932D8471244511BF76AA6478
+C8E54ADA9AE6DB8755B8305F074DE05D623FBA02FA520C88180E6F147477A96A
+FD2CF8B1B32935D8F31D530F9B3207BA196F4BD470436D8B765DB2256C6274EF
+B372118E5D8214EB81795788D291774D9C84E79672324104CD4F6B815F06D4D6
+37C0DCD0BAF9F7F48871A87DF98E505C69709A466FDB3DA6584FC9724F4E5395
+8DE19D2677202D175A61B314403B3D4C04C50762FC3D9D79321DC68DB526C768
+3E61C35DDBAA5E406292F56ED9C67FBD8B3C6B41D52F9E1F2B69B3D8F11A3FC4
+2ED8E5A0069642F5E41A81CEDCE1D3279894478C932B6EF8923E5B53760FF559
+F4C75BE841D1F79D5FCA51FE83656A511839FD1FF30B2755AA7307BC2C596D68
+1BBA4C41E8DC140447B586A56C30B9F738099EB1411EB93410336D9D6F9DADE6
+198C1275BB1B37C90FF2C3FFEB313EF7719AC3770B8B160E9E5A1CE82629FF36
+68B9619D1A75DB68BB29D4BAD1CAEFB7F2340D7EBB8F389F7C8CDBD216CF4800
+AE55CF11BC9D49CABCD88368605B74A1EE5BAD649007906296B35BBEBB610BC5
+96851A0A7FAB1BB928871587441BEEEADCD4BC6BA089E578FCF430B5EC558F94
+FA6506F88E19BFCF356BBACACAD66151247EDAB1C37D72C04A245013A11F6585
+0DF608E12F25B52E4DD75E1D99728A9AC5BB05F96059B6C6841D7AD8A708569F
+2B98FDD42B34387F9BC209E7A16B9CB99D9C9C0A64E72618EB62BE083D39753C
+DDA03C46B2C8DDD31585CD177E990C47BFA400B7D8252DC5E8939E6485EE4CFB
+CAE33B74BDF02522271E53ADF98970DB92B5C391E3CCE51B83D0BC452C18590E
+C819D41BFFFC4F874C17CCFE261B82A7D5EAF72F7343D57BE5C7CF90A7703395
+FAD5A62409D54AB464BBD65AC64C0F6FF7EEC03667A4CD84D85740675B4A4C12
+92728CF11D582A2F19185CA3190F778CA43EAC1107ADF6806926F033181BFBD4
+25D6FC8FAAD0977F1BCD63A23B74898D78B678692DEE5216B9CC88F333376F50
+25DD4AB937217671DB0A21587BE327CBB4EE5176AA3C4100411465B0EA244A06
+3F02C75EA14240631F40083B8B89D38FB1AFD3618E679A25E0C60D92F5E0572D
+75E7555764A4897B543A9E75FBBB1728B328082324AA2E890866367A922FE912
+1F74ABAD8CF24462335BDE419364BE2C8FBDD16CFBF522731C621963B4283262
+1BDFD821E84706606D1F340258D8D5716A65BEE46AAF9C9B88C523F0252E968E
+224B47B3DAAEC04FFB1A7BB28F3AE398CCFCD3B5416968B6F52B45DC91B333BE
+C103781D810B091CF5397D61BBA16E9C03C3A52BC4DD75B2CB1581FCD515FD31
+2D38BAE12A1A02B7E148899315C4F1BC7E3DA59A05AA61189258E5EB51EEE01D
+4BEA5A1D2899EDF6BF8F59CFA9056EA357F7C78BAB0FBD9672997E16F1F533D8
+4F9666EBB535ECD7CCD1A973BF297F5F6F8EDC283DABFE8C5AEB606702C23616
+431CFC07DD67AA5FD6345F02FFBDC9AF5150E49315B830691D97AB0E5592E100
+71ADB2D269B3CFAD3338ED68094624E5B1A41C6D987284C707EA498A0F80DDAA
+9A6519001E04B180D78764AF08BED2F46480A9857DE67B15329EE282213255B9
+60E64EE7DED35C5F657C02192366B8BEB7F068AAD857C39F6ACE55E2364CC5A9
+232E07A64C696C768FA8854DF99ADFD2E1938223CF0FFE778A1FCDC6761FD7CC
+3716544BA621AF73A7200DB1791397882FCFC8B63F42D07EBB9B2FF0C54F20AB
+D05BE419C7ADD38602CF88F195E5DD504EEACBBC5A00C29CBD001DB40FEAFEB6
+6FF424354AF7AC66E67D0E75DB288E07DF362AA49671598F52C9C6D2CD46FF03
+A616CED7626D7F1E4484008271D0CCE4A5468249EBCC78275DFD3D9A140D6146
+C5A3CCDE8FF661B6514E12C553C5044DF9F683B819530ADAF75C1A347906A661
+4128D1BFA4F369A66BE014D726126E8E3E93D8EE3C57CA86F019EABE00487998
+BFF66C914C81AE1D266AF71A69C8544F6C35BAA3BE4BB2317672C8ECA2BD0103
+9B78E15D1CA36069BAB54D51338EBE95A9AE824F5E1A213507CB131A963E18B6
+332A0D85B82D6A333502AA3411C8D080A2350963159D1E8E2DC6832A5C87CF14
+93F7609D60928306B2E4F64896202351A56CC57A8EB7693A4C85B8E4F0DAA80A
+F4286E7E3D19C9C3DBD6785109CA65A4E2C4420EDB0EF3B8767593401F71A7C3
+4B9277FF41F469878F831F5D4142A3B7BF08A2DEF63EF1B071887C1D242FBFB1
+04D20CDF0F3EEB235E4E0D2AB43D5C0C61A1221EF17920F625700092A319784D
+6369C24872252935BF404B153605402FB8021A4903E1B54D37DF6339269C1150
+337B10606B6E19225B07ABD0D3EA7EDDF802FF4274E2D820E1D548074015C8E1
+09CC29D3E530B0015604A320DB458BC35D0CC4E53054734D6BB9259BE29E52C4
+A5ADEFB04E6880A695B8D4E7DCF910D14D916F28845FEDA2F8172F2AB0BB7EFD
+6A41156AB5AFC45426AC633FBADEA8F6AE73FACCA74F0867682D20D90A76A0C6
+493B9FE077F2E6D4384B50037893B83266170E71770426DDF9CEB010257A7181
+3AC0A127A7CE99155C2391C81F502D5BE539BE05C8FDD83BD6B797EF2E932C47
+F1486C17ACBF98E60C90175FEB65A8AEBC9C285547ED0AFCD6E5F07062EE688B
+A1EF54231AB0EDFFA2FFE8BA3140EC8BD806A0AFFB6CBA7F3E3F2CE798052E2C
+8510CB5DF5F4C37936E7AF7A53751639B0B0CC5AB4B3F573B97C2D5E75BD0278
+A3EF7B79C5738B06E123A1D00B4E2EFE4871D362F6EC1D6F8C6444B9727CB520
+ED9DCEB95D06B8D1AD84AAB0CD13092156089C7FACFD509D0984AFF981A1B38B
+5B9E6894BD1F68040405D472FB24FD9CBFBA8C3F6E62474EC3694796BF4C394C
+8FDC9E9DBFE6C8C21BDC4A7F133E36168741B75B9A00DDB224BFD9293F6DFA39
+25111D5C8B1A9B1753946048300E92E28F53FC695AB8082A79F4A3609035CDE4
+91CA46E99453BD0B0EA9B9859265F788451D13982FDB5E47FB531BB094260CBC
+9CC57ED2AD7F50820BCA50BE95C4F00A783BC37749D7EDF4B3DFBFFAB23AF077
+50F9C4B562046287F9A237D8B048BA937917E349E5CBBE700758C035C5B4F0C8
+CBEC4F3D77A9A6BBE897D45F2768267A7EDB131B6D7156BB4E17EB940E8E7205
+A843D785B40A8E63F134498FB7EB06036495624B8BD2EA2F6730BF50679B6759
+C3756DFB061607F03128CBDDBA6CE54F9BF4DD28A4AF0C452EB77B9EB60B768D
+9A05BDBEFD55023EB2BBBB93176EA4693FE4E789F4C354D541DCF3E97BA25BC7
+26363E1162A3272B0D030ECF9A19AC33547F5C79755CE030AD6DA556FF78E0C2
+9E0FD5AB67243CCC6AF8B6FBA75F64ADAC2DCAAC208B05923D508E1FD8DB979F
+5C16DE3557D72B87BA34D30E159A0FB107AE6E2A71B9F85A17BCA43245AF45E0
+743E5F303B040E3C04F798BF656C906113B0C961E2305634DF0E134FBF592191
+621DE4D78C94C6A8818E23F4ED24B1474FAF1C517840FC916F6052552E2EB956
+D331A17C5C26524FD3B69DD020FAD592AFBF17C83F0978BD505E04A2B8524C15
+02B617878FBE6F4F4C86700FF939FF37A6E509520C4A169F7C39B5DDB7949718
+924939E7AD0F7311DCA69171534F5C9C287EAD7210EBF6F7598EA10CA38F1954
+BC23E0DF040AFA2B5BAB98066791575795AB1410308E0D45A01F3EFCF1CBCC20
+B065EED67DD487340D1EA90CB75D81093720CF9EEFD48CBFC76F478B2D44913C
+CA3F4C726E1A271D580E123BC88A5B04D7A443EFCCEB14A93D432EA7262F6ACB
+06AC77D11FABF0A8D25AFF385F001D41841F218E315B7CEDE47F9FE90E5F038D
+15484DBA9611F13B9E9CAD85A0C3094FA8314F58895CED63FD18EC14102D920C
+26708435116D96C4EB14D8DAB6CC83A2C288FE8E09A5949BD5ECA24FAA616179
+6F05182759A103281DEF05252D61677EA520D6B5B9BB20342C2E8B54D16A955E
+DDA39EA8CD1698760BE8263EDF69BAA403D2B1222FA54388FA6FB3B361928249
+25B49AE9A1A2B5D44673BB8E8A11A3E6739E487E800A0ED4E1081CF9A7083494
+C09998332BFDA0A0EB87D9AF93D27B5BC7ED34F4D7CBF9C449FA63400FF9141D
+CAEA3952230272E5488054E02F4C95D5788847D00997924D29135EA45376C5EA
+DF23027161431722C2C87D65FA25D826C2C9B4E285DBD6855562E454E48C8F8D
+EA723233D7AF974A60F7156DC768E773D6A548B8818A21EC955C2532B1A84C92
+F5608C81393BE77970B18E0A0810C30F6CFD3F496D3C13BA79F7BE699589B7A9
+710230A35C8CA859642647263B172E0273628E20A94583270380F7491E737DF5
+6C5D355AD28284DFEE02C06E3448607D91056F2B25D1A0E0172AF3521EDC9C1B
+62A35DCDAF833E99D79E759050202D9B4D4EA1B00218904511F6F63F5F96FAEA
+AED2B4A70FCD11804B3542B164525753109A7A937847B4F010B8DE17C294C9E3
+9F5D04D583D97FDC1A7E560E08B5BB909FF471BB7B80342118BE0F4693C9860D
+6CD372B389F52576EDD3A26FBB04741C15422637978F87AEFA062E7A81C0FE82
+37C2223E90B2C914E659904E4AA9B05528F4FDF3B2D43131452546DB208EFC3C
+E27A501C25ACD164834FDBB05606DEBBE0B6859F7BA7E4D86FBDB6850A1834A5
+F58A685CB800806FBEB4FA333E9325209C011ACE3D4F5D398850BB7EBAFB0E40
+A653BAA544E3F5971E7C7BD53D33B19BDC1655C80AAF0500428AEF4B01D333FA
+8F7C841B678F38EFE8137839A5D433AC36AEF1E64D6250EA28DE048DF4A3D93F
+CD0C0494165A0B170E98DE5A20919D295D54FAE42F3192F21A624AF8DBA48926
+F85E8B12419DE51916902C996E44435E1A41A58C86AFB7ECCE033D0B0A96071F
+2F20E1E89F4DFCCB798050B3DE7785CD89B214F2619B30EA19EC0427D5FA06B2
+9FF6FD5455ADFC322723812708203CD7D3785928392DE1CA03DA93B7DB15F4CC
+8E90448F3243D8078B5B35D7A3B5CA2293A90D7B115253EEE9608F0DF7BDF9FD
+62391D1A44BE5A2373188F00C8BEB5C0EEE7E22C609B39C481B8060DD65D8B3E
+27A3F4F0CB8D9A3347ED23D33CC3FCC2645F4C2A4C10ACB8D25A88A50E2DF179
+7A5120E78864EC80F6015C020ADE4BE6DA9FE4118C537A26243A2EBF43470613
+45C41F5C154DF5FA7045332E126637F8855BDA47A65086818147FB63A71BE257
+F0CE4352BE986BACFD0539A293350411780D935E3A809E606DF8A008B08C1ECD
+7788B7D9F2E5FEA87679ECE436D02768E6D3E560EE5F067CAC518588BB13C1D9
+AFF18EFECDF137E78FFEC4A83E002EE43A0A03EC30DCF49A228125B95375FEED
+23539284B1B01521E964CDF7D99CE8377E523733E654D8FD49C84B87E9D17B5C
+A88C673B5291409930DDB76E812A10B24BC5C4CC620D8A463CE6D5DD5E1C4416
+A3641E68410D4247CBA016AAD19DE609AEBBBC518971CCF86AD2D42B5D5607EB
+F1E8D9F1775FA06FC9D8ADD178341D666826680B3C79E72B8DF49A51CBFE3AD9
+613A6CE7067C85913D9C99001D92792845F84C35D5625DFBD12F47F3587CD09A
+4DF08BF9F945C9DDA34340304A5EFBFCC5EEDCB5E042C5CA0744B599DA45D9BC
+D08AE3582B7A7EBE5A2F3B55C5EDE031C505AAE1DDCC8CE36074DAC3214F98AD
+3012DAF6B549EC3A8AB3D41A142503A8486BA3D6E94C8FFB03943CDBFCFFA751
+86AF2D51910BE82BDD69387994A7603027D06C90A7D87B06DD81FC608ACE9E55
+11A31B25A82417BE72667F903773E0D848A2618C6D462B58E3D5AE7270C7410F
+0B58D567F69497CEFCD8FC6EF2D1C34669DB68C092AEA35054B32BA9A78D5E96
+95891BC1087EA3D747EAA525DAFE23E6C8FAAAA4E17D3EDA5413232203B5D278
+6501D86BC512914109DD8DD72C7356FFEDFA6FE3C470F0E5569EBBEFBA2000C7
+EF375B9CF1074882E368ADEED4EC5309C8B2A8E6207326719C4AF3B4BF7D8A31
+39D8DBE349FB331AE9EABDBF4CAF4D1B31694C260B67F14D4D4DF6000BD59854
+5F85BCB7685FC5127C97E5EF6AF2B2EBEEB0C541173844DF3144A5AD4324690A
+A7C20024B8171E5C4E6E094EA34ED80BE796EE2E8623B21F4BF1BE80198EEE53
+FBCD1F0C425E8AE68B2F12C0CC156FE0CCBB3D8EF893119D38DCE40F66FAD8D5
+37A5741BC4E0DFB138C08E33C7C4C0A9114D93139D62C0AE6B62AC27955B982D
+7B6EE03AC9B7533EBCD195960859D6829420AC850D66858FC22E16166847AFE8
+F4DAC0BF374F5F563BE3498F657B53F120513D3154E0773805B961BA1C6EE351
+3DA5FA76AC9BF417D6C048EC99A57DC05CC653C223D3F03D8EB1FAE1374DB5CB
+16A83FD8E75E6B0EFCFB33B66BC629058A3EF4E8340E91A04BF251FAB4FE5F8A
+D98AC011405CBD45C49F696C6C2533CE3983713192E196D9CA3B17A02A35B28F
+A7B177DC0B51B718F45956624FC564F9B680CC164CEAF841A1C3A77F779DDE1C
+4AE1109DECEA1821548837F67DA8034FC40A4FAB67E070EE18CB4CA12271FA17
+A1115E6F23C594067B7AC06F965062A2ABFF17F2997C332FEAACA0156D477DBD
+07EA3FB4CF506DAF89BEF2C9D12EE71E233C7B7260CDED92C8EBA35E41223AA9
+BA6BA26CCB4D6326E44E96994B2D9754FF2B461C4A4D33FF3B7029439388BE7A
+DD09B0807DAF4B7D7D52E4A4C6E08B0CCE89673BAA4024EEA5DB21409ABB27E0
+98D97DE394E6503C5656F242AE236898B6EAC00A0AD9A3D55CE6FA560CB6EDED
+48BBA43BB483789696E8E999711F1FFD16843EC098C3B34C7FB8BEC701DE86D8
+27D1A645A3FDB11E4EB2291BAED6D4AC97A5DB3CB5EE3A9B2A101A8D8BC6F53C
+1DFB60ACCFFBEBFF8EF679CF1656E6FA61B8A00AFC8780B2C04D25A0500D4127
+BBA8E37A4FD539BCBF67D5212DA971B2095496AAD0D1B9C4E0B76F01930CEDE1
+F45A86A82C1F98CBEF2ECCE015D7E61C95A7570B5676B60C5B5669B7ED30FCFA
+1023B531B8CAD872A5BDED5C1488BE6B0AFE7D76F0FD26E5386DAE088A71E3B8
+EF98CC04EFC8DACC8AC8864B9C0D36F796EAA683305BFF1AB160CA1AC52769D3
+BD5A92C2E5FF84474A0EF6223D83384CE23A31A8B8FA9AA4AC8AD8F325C0FEF4
+9866992F728CCD7ACA2AAE23C684D38B062E073FA74E3CCD8409413E5848005F
+5245C056AC24BB85432AFCB176D8D86F60AECE6D6D028E85F24F66C3477F7D2E
+41D6E092C40D58BA9D0BD8DFA07D150767DAECF2508C0F332B1BD1658BDF3980
+CD433DBB1FDE999A8A754D159439BBDE0F596A88E569470582C1382C7C444713
+065702ABFF4F8782D112A7E79FE4CDD21D084655C5E4041D4BBD49CD11749D28
+F541D4AA0D1307F3F06B1B2D9AFAAC88E1CC558614631EA8545CF82C690A9E0A
+B91E3D17D2F3F5987FD8F974F75E922E277577C89BC3F8C30042F70D78202F17
+554BD627E34480E13105555B38E475A89A86B09427DA87EF42533A542B6D74E2
+06CBDD5CEFF57E83B428CB5DD64CCBE27D20D419825E91A16B574ADC08EF47B4
+5C691D2F95B3962826BF29F7F9BFBA561237248D1D9A500B6148074741D9D70A
+73AE5866D8804DDB686A04D06E6B2CC1AA12DF4D49BF4FC8D36A7E9BDC419FA7
+94AA9DC45A58450DECF34D1556F95C706AAB137A81D21A8D5A1A5776DFF638F7
+B7D09438E1559BE5FAFF38BC59BC83FB182ED1272968BFB4CBF6E9781744E163
+08CA2235BDBE3E77C3E1A8241686B9654FABFF92CDF80DF6159A52E46C4E7417
+13755AC40870893F6FD25066F640F158F5A73805F1DD1B77DD2789367C4BDE14
+48226ECD034467007CE4873AFCA1D462D68D0ED99396618D84E52045D3BE0800
+E35E6927ED42CFBD79999AC375D3E7049D04534A83ED14B0E2890EEF497ACC5F
+D082DB2C6678A90D49CE9AB183E4F0A1ABD4CF969B5B4DEF3EA07D52B669BBC7
+02430BFBA84BE226F631111EE1D33E1867FBA3C2C732F78A0207B7CE7714A329
+E8B883775998789D7493D60C51655A42DD182F288817CED039B84360091DFAEF
+A9307393A8E24E8B87CEF2E5F81FA97ACA56759EA1D1EB457843B877B609AAC5
+ED2AC0A27930584CE46AFD4CAA7A0BF127EAF8A510C2A474DA3D03A002668DD4
+D93C3C390F4A4DD886892A56BE8FC8959E61AFE3E297AD6C88BE659AD2A162BA
+0843D3C60CD263CCE0FE221C488D526480162A51222A67F196C80694DCEC0F25
+D4EE68A899F19EFB5554035FF859EF5BF011F1AC39B69D22F1877240991CF290
+B84B204CB09FDD7781A5F4ED996319059E9BFAB851B93AA982239C41C58D2D49
+67CD5774C4C9421A01EE1C56384D34AEEC54C8B9C77B3716D118F6CC660D6517
+4A0C53D48D57C7F248DE6913BE2423FDE22A29BA6F4548CEAF00AE53AFC6D751
+5F74ACE635376F392E906FBE8CA6FF8581B5A2B1A9C04A9D42683F22C5F2E2D8
+655CA77CA264C6201361EB8739FEA34559FDA772E4972C4DDDA695B64FF1927F
+B7C50B5E0CD9270ECFF40BE113F9C7CF6BA73A0E400B1812C50CBB2911573C93
+C344590DE18C24777F772A882FD6A3E2F6D67BC7FB5EB199DBE4EC1145BF8C73
+3F41D7468EA2A217BE9149B76C611119DFD283D87D03300C59BC8CB643F8FC2F
+B724A01D7478F44927AB047C734704A79B8293ABBDEE9E728581AA72EC3A0092
+B83B064CEB13B27FFF6AAD8F23042AA78F1CA9555EC3E2B37E1B3F995397E66E
+7C20CD0E505B5154A145DBD8646AF0B379B68CC3086DBE6266568BC696DFB656
+40BC29285389A7C70145838D92A435E30E7E7E7F6FEDC50C172174A92906FA8E
+767D41A27A738D40E58324E6E814AF8D27520C230273714519F09B76814BC764
+711609357466BBFE4DF9FD471A78F57808133E6C544E869B03D815175764ABB6
+6B007B7E87BD9D405FE6BF5D5E2C5E463CDA41A34509011CA331D1EFFFC885A4
+F26028615816668F12074426928F83FBA320E6E5B0C391153AF550BB8A611654
+D07FAA57BF5845DA21F297738191532B7BBB83DFAEBC78A96F41BBA5F963ACD8
+38ECA80621A53A8737FBF0D7AE784E7DDADCF47A7B63678EAA15AE68B13B1889
+D479F9593D47E829FC3EC89C52E759838CA28ABC1F3FC3A7CC13BEDCE23AC300
+F82ACEE093E7ACBAF0CA6B2E0592915139D3C68CFCA31502C4FF14A21F9A89CE
+D6CAC6FED66B2C9D5B55EE47DE4AA52ABD3D72EC426D74A0DE901E614BDBEB9D
+AF3C50FB84C5645B24CDF37B8A308C5BC8387034D35BAC4E08E80C365C4F223C
+8EB3A88E61A505F32350EB88139EFCEADB63722BFB01D0DB4B73BDBAC020BF4A
+FFD76EAB4B50B7A977A1D85A72CF6F1D5219D64604F40BD706A78668EE76BB67
+F21DFE34A71510E4D536AD201C9F1C047D14B5D3B9036CA37265106B92136C6C
+123A305BD4ECCBDECAEE4078E736DE6A646485924F6AA40954ED83ED067E18D4
+F7A0518331B65190F8606AC012F1EE90072CE6C672FB085D1A396C884C6EE35D
+1E96B60DF9742678663FA65F861D7C41DD9CDAF15A5D62A97BCD039313DDD5B1
+3A0C584BB6160188154A1DD9B337A94216AE66C7DEEE9D560FDB527E934FAAAD
+87E65FB2C7956634969EC5C1F1D484702CE0709342E8AD345CEFA46E893519A4
+A5B8CCDCFF492636AC2FFA21B33B65D1E072CC17F6088B492FB8478BE571431A
+12D63454E07CE654625D1B4E871957C9EE6752B0FAE8139B8570D47F0C7E7FD1
+50B3ABBC412BAC4E514406554CD3263834C0054F734D1F10C75FF7C28CDCD64D
+E9EB343656F418E2AC159398E5E704D00E2F60A1F22118FBDE07FCBB873E65CF
+B3194F12002D732D073F4FCF989B18882FB1FF0F6A4D52C3F8552CAC652B4DFB
+FED5EDDC9A68EC711DC993065E265C3B73CD97EA23B09223EBA64DE7E5A83C6E
+4EDBB3302D384065EC1EF76FCB8FC6420A317CD00BA4F8A9CD51E93C4CA2EB8D
+2BE5D56E659BEECC8DBDF65F30336A75CA3FEECD9EBF0A11590558405F8227BC
+D967B6C9D9863CAB24959403F117E04A6701854440F60BCE6AD25C6BA2082B57
+83B534FFACCA1B73A088AE1ED54EAEF6E588C4A7F8D8FD5B2308CE6072D11E03
+0176C1D861A65EC4D99ABBA6ABD85F2D830EBD4D8647989479304FFA1AE5CC6F
+BD142D6FEBBF6FACE8AE2518785349BA310B63E0AF99D06F80DFFF9EFB122332
+1EFFF408DFF8C4FD6BD910C29D798FFB849E0ACEE96C907E6023814FE319980E
+1DDFD0B76C45AE29494D3EC44376D827AA833034B561E2E42C84994A26A78A45
+A0B5101420E7E48E1CBF8D2475B9E25CD86D331A56895BF7E2B5553A688647FE
+551D14769CC402F2B36C3927325D6FFABC804D02026C086964F134D75DBED488
+BF57F1FD42830E688214C5B184B42EA514C76058C02FAB07BF5865013FC8DC5C
+BBEFAAA721CE4AED76473F34C286C5E77411F8F35BD6ED61E0E54CB717DA80BB
+E5CC6B129A1BE37E30C6F8B3B66FBB3BFAFF06DA53B3FDC6D8BC0B3B972CF647
+BBA28E28F90E0D9DF25AA0F331F0B18B3DA3926977585B0CB051A4C6AEDC76DA
+9C4D6BF37A4303C20DEC8E040E54B78E35CBEFB6B374ED086503C5B2A69FC582
+C4D2B267B03AAA34D2E1696EE995898603928B80B18D416467127B7686EB9CDE
+E7EB296F5DED7B6B83DEB306FEAD6B0A4C506E7A78082C30952A4DD9221D769B
+ACD6FD54B80D191DD6ABC86705CF4024CD769C5726B817EA1471E92E371AA8B9
+F4F71FB7EA464B98FC26AD1F7B01B7D7DC50A3C307FCEA591B9F54240B358472
+3F66E4A8ACC815D23DAC48D0AD9E0EEC5DF9CCA9A7056D6F9C28CB1C23EA57A5
+D3E25C09A707DAEB261B0F60E2E5FBB4BDEB157EF11ACB5CB1DD6ED37460F5FF
+E7611B0357913950D9FD22E56311E42CCD2DCA7F3AB2634E58170406F8E460EB
+B06F189D323A095C7490257D2DFD615262D17F17B0A941B2BDC2294F603D51A8
+03B4F7F6BC4AC96F5DE294C296C094B3FA36EE8BDB46B17F1CED0204016CCF35
+C2F6626DF244CCCDADE331D6511545012C0042F24A4C962A143DBC0066FDC823
+35DD959B45BCD2B383940ABEF43F51B607091DDB9ADEBE22722BFCBEEFF4C6F5
+90DC7B1445AC056E1E2E96C5CE43B13C27519FD6DE8057E0F880DAD5203A3549
+78A94DBA197319E339143F78E3A2C27D557A10E1E74D29EE3DCC56AFB7BB2012
+191CE3F972D8D4F58FCE4FCCFC0C6DAC7F4BCE96901E637F5CFFCCDE21215A34
+FB848B7918261E8F9BDBAB2CB0FDB49A86269B94BCBA5E26808A74A80DBBE886
+80E25FDED892A5C46B6CF076FB9F1732D55AD824DF1E2A99B6C56BE988617C77
+F07C827C4BB559EC53EA89334277280F6C5C9787B1C467501A960A91608DB875
+E2CBD626FAA6F5F804A8D3EF1EA56ED51CA888D394AE4C4D692CAD09D1E377AE
+7520640897F86878595EDA1A24FBB1713821371DCF31195356E76855AEEA33D3
+A088FA68AE629305CA9370D7A635F9F622A3651DC21908C33D18EF90AD82758F
+1078B50DA862CDD8E1590F2C70C4820E5CB4EDB4E892A23B8E3E7111D7962DCD
+A447149AA7D72A02809EB594EEF39DE49F231E7C4482E5519EC25815F3132971
+41AAC8C515325FAF06CDC6BEDB63F33E500E5A9DDA5BAC7801BF94C78F8BCE78
+8F4834269DB9E4FFDCA6E343216969D3D4CC7E33DF11B9E03EF505075691F101
+963D953E64F9D713C1398FBFE4252AE242E78815C614557FCBC9B037010C4D3A
+17EA975795C34968F38C1CEFC2C85E12B6F9BE2C3D2097FD19449359603CFD4B
+BFB1173B083CFF3482041C38C9338DEA1B737025F82EA84226165CF40AE0A0E8
+44EBA55369A2FC341802A9A96191FF2517FAA3F89519A0F1B48D00AA634BE806
+063B1CF16BD801E7FADA2D7023E1976BFC792291E67A858B3CEE43E2D563C43B
+9EBFDB23621A0560DFCD53612D87C881E175643FEA25853A658722AFBFE0A30E
+C82AD82C47E600F1D7065DF6B3014C9E27B891543F99871415387B024B7076DE
+44BABCC53F9DBBBA510E87998E3C628B412F98E6F383F4FAAEF3C2BC5EA372A4
+4811FE43FDC59A904C1A3908391FF0A696FF449F6CDCF89287A77959DE20947F
+1DEA7FA113D4F04BC0CA58E1BB752C9B177263EE62B3077844F213DBC33359C1
+F76E305B51B2D9C99ECE72E99C4C48960650BE4ACD610F5168D32E38B3473F20
+105CCD5EF5AF500BACB7903D2D769E8D3F74C2ECD311866984955BADF4E7C95A
+23C507C4ED454D2079BC2773FD9D0115C504FCD32A06F30D13DC8B1A60619017
+E035B4028B5A13E082C09BA0E3C9EEFDD5F90B8C1DE5123D7E076DBA4BA9D793
+FD451B3649100EB0AE054CD40FF05CAD4119E2D6FF161280E396B4576C6DB72D
+F39AB0B544098C667CDE016451E64207531C5050E4D6B4F98D00FDCF2996D724
+9A8A5F24B51C769C2C54FFCD2C6149231E24301C1AD8DDC9078A5F3CD28B1EC5
+5F5EF97ECD39A1905BEA0719B47CEE618D3E192800F009D9B5FCC4A5503072F2
+5975778DAB93AA93FDAE58F4C51EEBD37119F8D6F041F537B09DB0FB16B4429B
+50E36E0E17148AB5A03DD6F5D4D9D7B3822DA4A7754A7F91FD7F3D19D98780C0
+4D4855C3CA007BAF7D765EA0F37011C792CE7FD4A236DF2A04D46E2F027A74D6
+55A1CCB98F11C0A8705D49AC4247B056535AF9984C9F95E32C65AC985CB70C61
+08B6ADD2A7D1647F37E9808623F747ECC17CF55186CFB32B81C7864BCB83A290
+79D0F4944369C7F45623168B6BA93B87381EA1FF6C3353AC37B1E42E74D65E34
+D7A347547E0A414E82E70884D1D86EC9A2D4DC8FC0005827839DD5384BCC8625
+A3B6BA8180D1AE87A6A854C0743BC590C51528FE2BA32A98C1BFB76D21DEA20D
+E350EAECDAE0868B7519244F4727E0364CF9FA32421303135AF8E2B7BFD9E3AD
+6626FF5BD185830FC1BC301214079A4071287493CFC6233152FA3DFC40B92F19
+B98E92F5E16D097520EED2156853E0834344AF12D97CE13DE23818E7C20208C8
+73550C323B4CBB5F8FE3626723EA798AA82C89B226C21C821DDDB1B7B9D9EA41
+AFC12DF72E64A64546654E8E3663A60629A696F16719CD409F6A05C4B3C16377
+D0CC1BB270A6190039BD94F2BB959C20E5B4DA9898D8526321DD89D8AF8061F7
+EC4BD1AF9C55923D4AA816E0FCC575501FEEFC45D54F7280AC86E5E7F141D624
+75B6AB037E73FF8316051F24F84BAE64693D1F74DDEC8EC96A1E012E5A27B100
+154250532668782C814CBF5A984D07B461A328B1EF9DBC1D3B1B1E6C57D11472
+8FFC5F1D95B13027F3D4DC4F29B0791A6F59444211359057C12C711184A595DC
+61CDCC6B085FA277618AB325EBBC64BAB4B175F79D8177977F0F1A6A04777599
+FC469FFFF183D9EF57B534A3E8669E112C96909121260DCE0612350A0DDCD116
+26DB29601790A870AD2BD5BD7BBDA5D67A7E440D24D1D8C9DBA749ADF4AB1EC9
+EECB799B845E126E9D6B107541B2034EFC728B5C7B4B659A1EB3554F94E973E9
+5CD782C0A5DA76E9F1A150820E4DEF5A9F5908EC5B7D6F4F2768CFDFE3BD7076
+5983E1DD7D83D36213396E826CDE48A1BAB0F1A982DB37C9874FD66DB6BFD7C9
+E3858B9DC2A4187207FA4DF201F88F717CEE6AF78BD7FACFCD5E0053F08E2CE7
+11FBAFF328C356FCD6EABD002E13064E41F9922E35B911ACCE89151FA57448F1
+6E3C769B7EBEC2838024A7F4BA53918C563EEE207829FE15493A91B9387C6665
+8DD965A48C3969CDDC7BC2A8FBEAC4A8ADDAF244AA2A07E8869C0358FBAB6799
+877255FE017DC69BB05BFCE0A4B84682D2CC80D1B5901A8B5AABBC43C5B9127B
+F1F9C7B7148C0171DECA80BE75C8E47FE65AC4E5B0075811DEC04C7687CB14AB
+C0476BFAE0D08A3433C6ADA9D8B6D3A7D09EFFBAAD0220A26BF4C1D063348826
+63452900215BFB423749E22F640F3E6D396A7185DB8CE4D856ED43FFFE857745
+1ED28443DEA7081564C36CBE41E4001D3A20F9AFB1B359A4CA1C52D3FE1BBE10
+74202B8EE40682870E1AF5C9F6A941B632C25CFC1742CF6670DA62C72EF72B3A
+C436D379D3FDE2593B93A35A3FD631DB1C0374FC76B59E02E2D9618048DF2975
+51DC64D38EAE47F1F89CF6881F745EC712987491D1B0E473DF85EA91766D4233
+51D323405551D7E1E4927C4C6CC4B21266E0FD629E853EEF24C970B19C02B05F
+0B4BC79965C85DCFC246F48A3CB511C82E1EF5B9BC1C0E0794D302E6993C47CD
+A108D21396BBFC0DDCC2653D7B9EC57EB9ED5B9443B7017691BFE4F9DFC005B5
+CFA41C3E11D3DCC5DE9024DDA2042B9F61BE3C3ED2E4C97E66DF83C8F261FCE3
+C2FAA67DEFD34044D9C69D2E5D553B3FE51E92776EEF1DEA4D0A738D8CA7B7D2
+108008A37EAD7F2AA5CE97A89089D5F9F0919F6D04E64A59D4DC17EAFA942418
+007A2939220D351CE81739C819E206E7C12CCE7F1129770259B8DED1DE45222D
+E97401069AD20733AD76F07BCA85F8C55DC84D9EBD4EED68FEB03A04BA37014D
+C7DCEB4DDDFFDCFF88C2B5F48EEBA2F0127706DAF153E7335ABDE5B33C394635
+9D0D219799B944C933A94C5CF53A7ACB03C8AB948CEBC61272CA5FF58B15A1F2
+3E77F1CC9F0975421568A8BDEE54E1391B588B209ECBBC868DD9454616E33618
+207D8ACDF4A855849B1BB91557E75F393EF18ACF2B6FF2161B1BDE8A3E8B07F3
+09BB2F0B9A51A862680261C3306ADF71F344FC5F4E9A3008D3A29B3C1ADF4807
+032314F7DDAF488F88D74F316205C0B6B76696243699BCDB765E03F5E30F1368
+F5BF9C95FCB47E968683B090F1E3F8F036323F9BB33CC9802B1E829DEB94EAF2
+18887DE86D77C870F4710122D391DD743C5FB99C919CA1F9921C9607C937F081
+0ECE41990F33A70ECCE08AB7A25AC17A8F1BBBED87973DE7A017892257D93A63
+A7950C5EED71E6E1FF34C932BD061C595826EED750B53B6C4F2A1DA2598AA85D
+1A40DF5321CD5F32E2C3D5C1DBA042485148B8BF47BB5D0300B7B4A18DD5E4F8
+016160514200B5415BB2F1F5DF6ADC4F653E7D20BCDECE3E51622F703228840B
+54DE8F1F4F374D3304ACE67CFCF8EB97A39FEEC70476EE8A0540729AEA489566
+945563628C639B480FFF4692B34FFB6273EF4F210407A3014ABFC5899EFD8CC9
+ACD0345630AF32139331F6B2C353D47D78887613EF12BC65AA3C4A8BFAE52BC1
+3899D6F419C293E1FC65F3E2964D7C6757B573E7A5309FB389ABC5776CDAEC27
+3A372BE7DFB80897DE3D5D89EA343A9D7349AC92E81286557C1463CEE798E809
+16A6653CE0B033FC31C9B69B51D467B8A14660EE4D22D06166220B4544C8ECBB
+85FF4F63E60C9AB3E4E47D6CCA0EC1A5E05449162684418D16881DF68B68DD22
+7E931B08508A33BBF1EBC4A8EE3E3C87FD9E944DD16478A089A9625153109BFB
+C385D9C371A2F95EFBBE2E95694F29B346DF5AC71D167FD020A767238D17432D
+F0BDF1FCB84DE5048D2EF789D006256A19CEFCDDF265F5A80F7FA9DF2574A7B2
+D6998FC6B01A3B3CD17CF3749C8C8B9B0F94B0BBBDC8F916FD9B3473F8AFF71D
+295C15A986743556CAFDA42E6BB0A5957C3BD16AE677E4DD5EC965725B69F5DD
+ABF7B2DBE8E6E560F378F62EC29921403B800AF157DCC57CA0D3707DC423FC55
+4FACBE6DBD14FEA4BA532BFC497422E47F2EF9F33396C0EBD141D851BBEC4FEB
+0CACFEDC785AA375A4AC3BE7A7E12C07005283AD76674DBEB1028462BD9A20E3
+BD9EF054D89BED09E260D3226057A0DE3D52D471C3903609B05B6063AD76B450
+E4D7BBBA119F0F2CEC35C41C53EDE4DC0B7AB0F5D6C25FEE73A2ED93FC96348D
+63D35B66CFD53FFEB70B4B0F791472882EA74E1E1452E8943CB30F097E6C1D4D
+9D2E92457E356DED6FF47B528D354AF5C88AA49A697568E7B4AF7F292DD37F56
+263DB322BF3DFAD05BF42A358C320136591EDA0CAD5ED65378A4A9ACCF2C904D
+8FE7CE46D728EA6B4CB4DB2FB1D6671F5948DBD4D3876773AF0CD40AAA0EF26A
+1730B38CE86196A8838885680CC8FCB1EB5EC2F3FF2F96039061EB5E108FC080
+0DDDB6E570E231C1B7605095AA55B334244E45FCC9FEF4545876B2886C1F2E52
+3D88F6EB909C38D992A5E3F6C5226DD5A98C7193790C2780D8496AA29608FBFF
+7B220B583E8406AA97E236E472BED19F58C83B7C14CD7E330BE705C1ECE46469
+447440059F8F0044521FFD0EEC8467F1A0C913DF64BC00B7A56A723153BE70A6
+CF839A5EFA7B50E02AA5D5FCF70B6A96A39DD8A1FF6E35B6539AD7B91D4F5E56
+B96A6754C12CED2456C0077B67E631AB54BD2B3FD8B31C3BD85C496C3438778D
+9882AE5C970FDEC213130CA6645E9FE2EFE1614BC2DEB3577AABD0DE5D6392E4
+B1EB847A029B5DF9C6588ABB5D280602DBC6A3981F62450DE1A79D47844A344A
+9E2A1B45A0F409FD1CA9546067A978708C33F035D57AD24140D683C1CDD8D922
+00F8868AAB203BEDD34FA35A2C6E83B5410E211C9D61075D5F89EA52106EF4BC
+06DB37C9A66E3DF0F4A9CBC829C038EEF4F07BB8DC09B61D19B61AA48B3D8B7E
+B2545AC022B57CB6D78BA6ADA8C5287C0A3D2F086DFC6F70BC9CFAC4B3A88F62
+898EEB7A17AF834D22AE3D7C06A3D5979F0168867910B98E4798B7045FA40C0C
+999232D3292BC97604B9F5A800206601232A0D64C3F9B6BCA7A081B1EA41ECB1
+76F00A667EED1F9BB64E17505E77883473FFE3526185335F0D4C20EC08246347
+09D92E7AEDD2B2620554223B29AA0AC2EA49D92F6BD09A04324A747DED51CCE5
+A00D55B5060828AEA0D791D0049C05F0B395F29C78C2F0C99D00D6906BE5DB1F
+F29F6354B52CC13835172C5A2D985EBC145F76EA1DFE65DA54F68B1792B11775
+65484F5B10309D39273C49A79CE3CBFE1589D9020EA27DDA1D5E9400E98AC732
+2C50070BE72E4941A590C71039D41F4ECAA25D32084CF2FAB186CC0BD8D33556
+5F7A251B0AB3630FC747623CE173DAA92A76A83073F51880D680A5967B784813
+C91DDFDF9F9A9979A8E4FE4D34137CDA38E54F972D6A172C2C75B5B605E03719
+84F46009DE6351F095CA507E562F41FE7BAF40A9D9C3646BEBBD5DAE26AF3754
+C0632B78ADC504432D92A48E503C92B1C071048F7D58560F2DB0FA42A030A1C1
+1D79E7E54CEFDBC88CF6090F59CDB8F07FFED41E648323EC1CFDEF3AE91E169A
+384C566052662944F5CC95AEC8B7BFDAA7E44AC87CD75FE1742A9A8412634CAF
+C27961137A41991E91409BFC4DF39FD05911C6AC6520E93086471B090685E3ED
+24B260B73772357438A3E1FB486F7464A5DDEEC293D6C83840AD4C8D9F198506
+E19752843B5D9A3073EF5F2735B9C54511D374D1E46960DCCA08C043C65E059E
+0938011BAB8C39FCACB54BA0BD9BDCBFCF56AC092E754CD072C47A0326BD407D
+E4A17623A5B6257CC054BA93725278F9E6400D167FE02F7F0E36A2CDD7C8516C
+5BA75DF431C05A1C18A3B3A98F2CB24AE679A4CE799AA77C8E3C77B77A1EC634
+48CFE113E29E06DAFE8656EF896A4B7CBCC62211092985E86908F7914D9E4CAF
+2D1B402AE73423C861DF93B42180530C9403217803DA2F4E7D985355C1172E62
+5276CF524CADF7B5D35E0335227E1BD5C69282459F753B4D8184BEF52FC49A3D
+2C49CB5B8CD49AB854AF7A6C744F5E4F2DCDFF4A7C294F5233D3A22D5239C874
+BCE61A6BEC8A2F2AC4CAF8809349BF6A4E7355BF87DB6E338C827175BF481F19
+9A874331B30B9196A0DF41258FEB35E2F56126F51800E16DFD0DE6340C1E0DB9
+5ED2B6D06B7284708C23A7B568A56249A9DD376A79695C591A806E3F23C5E0E5
+E302734F4AE59890BF3453923D9F26F46AA44B673475E20BAC6DFF99C14986F1
+CFA53EAF5543DB43CD32E8349A440AA0046210648904686280FFFF643B17F13C
+7D9DE31161A5CA8AA10052DA73B15B619AE55D232037C23538658BE415B1CBF8
+DBCA1B1421F74DB94D3E6C365B4D9FCC605E24D9DA58E6ABD5E3E61855807DD0
+E0E664B2B5D04EDF15D8712C0DCFE47FF0CC5F7618A8E3749DFFD6FB23FFC6C8
+45A60F07E67B8C973B7A16E1FE5B9B7A8289165D101B26A8314F356B89222E65
+5F16A427E908228B8AEB3BA3553D06607337463BDCD461485B0D5B7430A080D5
+DA2E207515B5A3AC7E73E730BFB373DD85234FEC97244F61C6D52A5DABA07866
+8F3396992CC1CA9713AFCF7BCDDC5329D0E6DCF5366B38B14C723089D71287E1
+6C9304DE6282EF986B0916DD21E9B0BCCB0AA2979A3D25A477501F4D7EFB34E8
+D904449D83F2BBB13DD219B50734581D304FBEAC3B8128F7CDD4ECB08F2227D9
+1048309F7EF797DAC8B6F43B188C803FC8251A6F22C13C3E8F3B4B7DC4D3AA26
+5FF27B108AEFAF31E01863970BBB44962D85559D904E35E384592F9C7565AEFB
+E5FA492438CF77145954A3922F5EFA27F384CEDF1E786865243BB2552A720BB2
+F1C87AA58D00F97599FF0574617C001510DB77D3486A08E6925BA99FBF038FA4
+B0792180CF812F96B2B0C1F99BCF5E97B17DB2082F06C0462C608A5F83D3A905
+95272D5D904C3BC367D8E447DFDBA7C20928AEFFC40E6BA076D4D5FC0D968980
+42A5266798BB8304F75F23EF101AED2A933B2DC838AA3067AEE473015E4D8C8B
+4C9CA2ECAFCD96247318F9D9F9E9590FE202D29EFB383C422C977009A6330D46
+D019247C030B15915B38E1B82D8FDC46463517960F8D41FA64F149431EEAC6B1
+DBDE1505B262D025CCEDEAE1D0AD580974CAC4ADCE3C843BC6B69E65BCB6BCAF
+14E0A6AF1016E56C6CB8D03B2670801DF17C8FE9457E801C154DBE9B360E18C5
+C368552620AE1F139A7623D341C3513CB59FC379C7AA116E7201DC64BED6D045
+307E06DD8B0F455C2305C7DA7391F75E1C5137279BDAED7DE304025D1FCB5A3E
+4D5231D83269E3C0B4525DF25BB12A3CC8CD081ED15C98D998A05E7A8E7EFA08
+574C684A48C0EAC6E91D256CFBBD21FD30AC9CC5AA4E6568016E59631F37700C
+17DA8A06A95EE1F9E7EE4CA33AD6CB2A9BB9EB32A34305B5F56632CBF4E846C3
+B11474D88FE6C102C0520F484FE782E5F56E451C036FCFDF45935BBE9A7CC20D
+367A403B2274FA0CB256916E11617838874E7F848D08E841815A5ECED6F4E422
+7923D061EFE5A040ACFB413712AEB73728C3AF751BEC7F2E828730FCF2EAF2A0
+1D48C676097D30CF0EDD06BED2C7FE6ACC1CEF8D8654A61C7B08A2211F57722F
+9E31D0D4B0F5D23734D3A4DBDA7A17DD5FBCD6D138DC373DA2BAA3D97D533D6F
+08B9C9B5E0A1C1910A3320
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+{restore}if
+%%EndFont
+TeXDict begin 40258431 52099146 1000 600 600 (am-utils.dvi)
+@start /Fa 197[25 58[{}1 90.9091 /CMMI10 rf /Fb 197[33
+58[{}1 119.552 /CMMI12 rf /Fc 145[43 110[{}1 74.7198
+/CMSL9 rf /Fd 197[21 58[{}1 74.7198 /CMMI9 rf /Fe 134[66
+66 2[70 49 50 52 1[70 63 70 105 3[35 70 1[38 58 70 56
+70 61 51[42 45[{}19 109.174 /CMBXSL10 rf /Ff 142[58 2[71
+103 6[44 58 65 6[39 1[39 25[94 3[97 61[{}10 109.174 /CMBXTI10
+rf /Fg 144[71 78 113 3[43 2[48 1[71 16[78 12[87 4[103
+65[{}9 119.552 /CMBXTI10 rf /Fh 134[73 1[99 73 76 53
+54 57 1[76 69 76 115 38 73 1[38 76 69 42 63 76 61 1[67
+13[76 4[108 4[52 26[38 46 32[76 12[{}27 119.552 /CMBXSL10
+rf /Fi 134[62 62 62 62 62 62 62 62 1[62 62 62 62 62 62
+1[62 62 62 62 62 62 62 62 62 12[62 62 3[62 6[62 1[62
+1[62 62 1[62 17[62 1[62 1[62 43[{}34 119.552 /CMTT12
+rf /Fj 146[135 8[85 34[124 65[{}3 143.462 /CMBXTI10 rf
+/Fk 134[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 1[48 1[48 7[48 4[48 48 3[48
+3[48 3[48 14[48 48 2[48 48 3[48 48 40[{}38 90.9091 /CMSLTT10
+rf /Fl 133[56 56 56 56 56 56 56 56 56 56 56 56 56 56
+56 56 1[56 56 56 56 56 56 56 56 56 1[56 9[56 56 3[56
+6[56 56 3[56 22[56 1[56 43[{}34 109.091 /CMTT12 rf /Fm
+133[55 65 65 89 65 68 48 48 50 65 68 61 68 102 34 65
+1[34 68 61 37 56 68 55 68 60 9[127 93 94 1[68 2[84 92
+96 116 74 2[46 96 1[77 81 94 89 1[93 1[58 5[61 61 61
+61 61 61 61 61 61 61 1[34 41 32[68 12[{}55 109.091 /CMBX12
+rf /Fn 134[48 48 66 48 51 35 36 39 1[51 45 51 76 25 48
+1[25 51 45 28 42 51 40 51 44 8[69 1[69 70 63 51 69 1[62
+68 71 86 55 2[36 2[57 60 70 66 65 69 14[45 13[45 36[{}43
+90.9091 /CMB10 rf /Fo 133[40 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 13[51
+4[68 1[57 2[33 68 1[59 4[68 18[25 30 32[51 12[{}35 90.9091
+/CMSL10 rf /Fp 129[48 48 48 48 48 48 48 48 48 48 48 48
+48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48
+48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48
+48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 1[48 48
+48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48
+48 48 48 48 48 48 48 48 48 48 33[{}93 90.9091 /CMTT10
+rf /Fq 135[39 39 1[39 39 39 39 1[39 39 39 39 39 39 39
+39 39 39 39 39 39 39 39 39 24[39 13[39 5[39 1[39 2[39
+39 39 1[39 43[{}30 74.7198 /CMTT9 rf /Fr 131[77 1[34
+41 41 55 41 43 30 30 30 41 43 38 43 64 21 41 23 21 43
+38 23 34 43 34 43 38 21 6[58 58 79 58 58 55 43 57 60
+52 60 58 70 48 60 1[28 58 60 50 52 59 55 54 58 1[36 1[60
+1[21 1[38 38 38 38 38 38 38 38 38 38 38 21 26 21 2[30
+30 21 5[21 19[43 43 45 11[{}76 74.7198 /CMR9 rf /Fs 205[33
+33 49[{}2 58.1154 /CMR7 rf /Ft 134[44 42 60 42 49 30
+37 38 42 46 46 51 74 23 42 1[28 46 42 28 42 46 42 42
+46 3[28 1[28 3[91 3[51 66 1[62 1[68 82 57 2[35 68 70
+59 62 3[68 3[70 11[46 1[46 28 33 3[37 37 27[51 12[{}47
+90.9091 /CMTI10 rf /Fu 134[85 85 117 85 90 63 64 66 1[90
+81 90 134 45 85 1[45 1[81 49 74 90 72 90 78 12[112 90
+120 1[110 121 1[153 97 2[60 126 127 101 106 124 117 1[122
+7[81 81 81 81 81 81 81 81 81 81 2[54 6[126 25[90 12[{}50
+143.462 /CMBX12 rf /Fv 240[45 1[91 12[71{}3 90.9091 /CMSY10
+rf /Fw 133[60 71 71 97 71 75 52 53 55 1[75 67 75 112
+37 71 41 37 75 67 41 61 75 60 75 65 37 5[82 102 102 139
+102 103 94 75 100 101 92 101 105 128 81 105 1[50 105
+106 85 88 103 97 96 102 7[67 67 67 67 67 67 67 67 67
+67 67 37 45 37 2[52 52 37 105 4[41 20[75 12[{}71 119.552
+/CMBX12 rf /Fx 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 71 43 1[71 1[25 25 45 45
+45 45 45 45 45 45 45 45 45 25 30 25 71 1[35 35 25 71
+3[45 25 18[76 51 51 53 11[{}88 90.9091 /CMR10 rf /Fy
+138[108 75 76 79 2[97 108 161 54 2[54 3[88 15[149 1[108
+14[148 1[138 146 12[97 5[54 65 3[75 75 40[{}20 172.154
+/CMBX12 rf end
+%%EndProlog
+%%BeginSetup
+%%Feature: *Resolution 600dpi
+TeXDict begin
+%%BeginPaperSize: Letter
+/setpagedevice where
+{ pop << /PageSize [612 792] >> setpagedevice }
+{ /letter where { pop letter } if }
+ifelse
+%%EndPaperSize
+ end
+%%EndSetup
+%%Page: 1 1
+TeXDict begin 1 0 bop 150 1328 a Fy(Am-utils)65 b(\(4.4BSD)f(Automoun)
+-5 b(ter)64 b(Utilities\))p 150 1437 3600 34 v 2452 1534
+a Fx(F)-8 b(or)31 b(v)m(ersion)g(6.2,)h(28)f(Octob)s(er)f(2014)150
+4934 y Fw(Erez)45 b(Zadok)150 5068 y Fx(\(Originally)31
+b(b)m(y)g(Jan-Simon)e(P)m(endry)h(and)g(Nic)m(k)h(Williams\))p
+150 5141 3600 17 v eop end
+%%Page: 2 2
+TeXDict begin 2 1 bop 150 433 a Fx(Cop)m(yrigh)m(t)602
+430 y(c)577 433 y Fv(\015)30 b Fx(1997-2014)k(Erez)d(Zadok)150
+543 y(Cop)m(yrigh)m(t)602 540 y(c)577 543 y Fv(\015)f
+Fx(1989)i(Jan-Simon)e(P)m(endry)150 653 y(Cop)m(yrigh)m(t)602
+650 y(c)577 653 y Fv(\015)g Fx(1989)i(Imp)s(erial)e(College)i(of)f
+(Science,)g(T)-8 b(ec)m(hnology)33 b(&)d(Medicine)150
+762 y(Cop)m(yrigh)m(t)602 759 y(c)577 762 y Fv(\015)g
+Fx(1989)i(The)e(Regen)m(ts)i(of)e(the)h(Univ)m(ersit)m(y)h(of)e
+(California.)150 1006 y(All)h(Righ)m(ts)g(Reserv)m(ed.)150
+1180 y(P)m(ermission)d(to)g(cop)m(y)g(this)f(do)s(cumen)m(t,)h(or)g(an)
+m(y)f(p)s(ortion)g(of)h(it,)h(as)e(necessary)h(for)f(use)h(of)f(this)g
+(soft)m(w)m(are)150 1289 y(is)j(gran)m(ted)h(pro)m(vided)f(this)h(cop)m
+(yrigh)m(t)h(notice)f(and)f(statemen)m(t)i(of)f(p)s(ermission)e(are)i
+(included.)p eop end
+%%Page: 1 3
+TeXDict begin 1 2 bop 150 -116 a Fx(Preface)3264 b(1)150
+299 y Fu(Preface)150 533 y Fx(This)24 b(man)m(ual)h(do)s(cumen)m(ts)f
+(the)h(use)f(of)h(the)g(4.4BSD)h(automoun)m(ter)f(to)s(ol)h(suite,)g
+(whic)m(h)e(includes)h Ft(A)n(md)p Fx(,)150 643 y Ft(A)n(mq)p
+Fx(,)34 b Ft(Hlfsd)p Fx(,)h(and)e(other)h(programs.)50
+b(This)32 b(is)i(primarily)f(a)h(reference)g(man)m(ual.)51
+b(While)34 b(no)g(tutorial)150 752 y(exists,)d(there)g(are)g(examples)g
+(a)m(v)-5 b(ailable.)43 b(See)30 b(Chapter)g(11)h([Examples],)g(page)g
+(107.)275 887 y(This)e(man)m(ual)i(comes)h(in)e(t)m(w)m(o)i(forms:)41
+b(the)31 b(published)e(form)h(and)g(the)h(Info)f(form.)41
+b(The)30 b(Info)g(form)150 996 y(is)g(for)f(on-line)i(p)s(erusal)d
+(with)i(the)g(INF)m(O)g(program)g(whic)m(h)f(is)h(distributed)f(along)h
+(with)g(GNU)g(texinfo)150 1106 y(pac)m(k)-5 b(age)27
+b(\(a)f(v)m(ersion)f(of)h(whic)m(h)e(is)i(a)m(v)-5 b(ailable)27
+b(for)e(GNU)h(Emacs\).)2386 1073 y Fs(1)2462 1106 y Fx(Both)g(forms)f
+(con)m(tain)h(substan)m(tially)150 1215 y(the)32 b(same)h(text)g(and)f
+(are)h(generated)g(from)f(a)g(common)h(source)f(\014le,)h(whic)m(h)f
+(is)h(distributed)e(with)h(the)150 1325 y Ft(A)n(m-utils)37
+b Fx(source.)p 150 5241 1200 4 v 199 5308 a Fs(1)275
+5340 y Fr(GNU)25 b(pac)n(k)l(ages)h(can)g(b)r(e)f(found)h(in)f
+Fq(ftp://ftp.gnu.org/pub/gnu/)p Fr(.)p eop end
+%%Page: 2 4
+TeXDict begin 2 3 bop eop end
+%%Page: 3 5
+TeXDict begin 3 4 bop 150 -116 a Fx(License)3266 b(3)150
+299 y Fu(License)150 533 y Ft(A)n(m-utils)47 b Fx(is)41
+b(not)f(in)g(the)h(public)f(domain;)45 b(it)c(is)g(cop)m(yrigh)m(ted)h
+(and)d(there)i(are)g(restrictions)g(on)g(its)150 643
+y(distribution.)275 777 y(Redistribution)c(and)g(use)g(in)g(source)h
+(and)f(binary)f(forms,)j(with)f(or)f(without)h(mo)s(di\014cation,)i
+(are)150 887 y(p)s(ermitted)30 b(pro)m(vided)g(that)h(the)f(follo)m
+(wing)i(conditions)f(are)g(met:)199 1021 y(1.)61 b(Redistributions)29
+b(of)h(source)g(co)s(de)g(m)m(ust)g(retain)g(the)g(ab)s(o)m(v)m(e)h
+(cop)m(yrigh)m(t)h(notice,)f(this)f(list)g(of)g(con-)330
+1131 y(ditions)g(and)g(the)h(follo)m(wing)h(disclaimer.)199
+1265 y(2.)61 b(Redistributions)31 b(in)h(binary)e(form)i(m)m(ust)f
+(repro)s(duce)g(the)g(ab)s(o)m(v)m(e)i(cop)m(yrigh)m(t)g(notice,)h
+(this)d(list)i(of)330 1375 y(conditions)j(and)e(the)i(follo)m(wing)h
+(disclaimer)e(in)g(the)h(do)s(cumen)m(tation)g(and/or)f(other)h
+(materials)330 1484 y(pro)m(vided)30 b(with)g(the)h(distribution.)199
+1619 y(3.)61 b(Neither)34 b(the)g(name)g(of)f(the)h(Univ)m(ersit)m(y)h
+(nor)e(the)h(names)f(of)h(its)g(con)m(tributors)f(ma)m(y)i(b)s(e)d
+(used)h(to)330 1729 y(endorse)e(or)g(promote)h(pro)s(ducts)e(deriv)m
+(ed)i(from)f(this)g(soft)m(w)m(are)i(without)e(sp)s(eci\014c)g(prior)g
+(written)330 1838 y(p)s(ermission.)275 1998 y(THIS)c(SOFTW)-10
+b(ARE)27 b(IS)g(PR)m(O)m(VIDED)i(BY)g(THE)f(REGENTS)f(AND)i
+(CONTRIBUTORS)d(\\AS)150 2107 y(IS")i(AND)h(ANY)f(EXPRESS)f(OR)g
+(IMPLIED)h(W)-10 b(ARRANTIES,)28 b(INCLUDING,)h(BUT)f(NOT)g(LIM-)150
+2217 y(ITED)41 b(TO,)g(THE)g(IMPLIED)g(W)-10 b(ARRANTIES)41
+b(OF)g(MER)m(CHANT)-8 b(ABILITY)42 b(AND)g(FITNESS)150
+2326 y(F)m(OR)24 b(A)f(P)-8 b(AR)g(TICULAR)23 b(PURPOSE)f(ARE)i
+(DISCLAIMED.)f(IN)g(NO)g(EVENT)g(SHALL)g(THE)g(RE-)150
+2436 y(GENTS)h(OR)f(CONTRIBUTORS)g(BE)h(LIABLE)g(F)m(OR)h(ANY)f
+(DIRECT,)g(INDIRECT,)g(INCIDEN-)150 2545 y(T)-8 b(AL,)21
+b(SPECIAL,)f(EXEMPLAR)-8 b(Y,)22 b(OR)f(CONSEQUENTIAL)e(D)m(AMA)m(GES)k
+(\(INCLUDING,)f(BUT)150 2655 y(NOT)f(LIMITED)h(TO,)f(PR)m(OCUREMENT)h
+(OF)g(SUBSTITUTE)e(GOODS)i(OR)f(SER)-10 b(VICES;)20 b(LOSS)150
+2765 y(OF)i(USE,)g(D)m(A)-8 b(T)g(A,)24 b(OR)e(PR)m(OFITS;)g(OR)g
+(BUSINESS)f(INTERR)m(UPTION\))h(HO)m(WEVER)h(CA)m(USED)150
+2874 y(AND)35 b(ON)f(ANY)h(THEOR)-8 b(Y)34 b(OF)g(LIABILITY,)g(WHETHER)
+g(IN)g(CONTRA)m(CT,)g(STRICT)e(LIA-)150 2984 y(BILITY,)26
+b(OR)g(TOR)-8 b(T)25 b(\(INCLUDING)i(NEGLIGENCE)f(OR)g(OTHER)-10
+b(WISE\))25 b(ARISING)h(IN)g(ANY)150 3093 y(W)-10 b(A)i(Y)31
+b(OUT)e(OF)h(THE)f(USE)g(OF)h(THIS)f(SOFTW)-10 b(ARE,)29
+b(EVEN)h(IF)g(AD)m(VISED)g(OF)g(THE)f(POSSI-)150 3203
+y(BILITY)h(OF)g(SUCH)g(D)m(AMA)m(GE.)p eop end
+%%Page: 4 6
+TeXDict begin 4 5 bop eop end
+%%Page: 5 7
+TeXDict begin 5 6 bop 150 -116 a Fx(Source)30 b(Distribution)2778
+b(5)150 299 y Fu(Source)52 b(Distribution)150 533 y Fx(The)30
+b Ft(A)n(m-utils)37 b Fx(home)30 b(page)i(is)e(lo)s(cated)i(in)390
+667 y Fp(http://www.am-utils.org/)275 802 y Fx(Y)-8 b(ou)30
+b(can)h(get)h(the)e(latest)i(distribution)e(v)m(ersion)h(of)f
+Ft(A)n(m-utils)37 b Fx(from)390 936 y Fp(ftp://ftp.am-utils.org/p)o
+(ub/a)o(m-ut)o(ils)o(/am-)o(util)o(s.t)o(ar.g)o(z)275
+1071 y Fx(Additional)31 b(alpha,)f(b)s(eta,)h(and)f(release)i
+(distributions)d(are)i(a)m(v)-5 b(ailable)33 b(in)390
+1205 y Fp(ftp://ftp.am-utils.org/p)o(ub/a)o(m-ut)o(ils)o(/.)275
+1340 y Fx(Revision)d(5.2)i(w)m(as)f(part)f(of)g(the)h(4.3BSD)h(Reno)e
+(distribution.)275 1474 y(Revision)j(5.3bsdnet,)h(a)g(late)g(alpha)f(v)
+m(ersion)h(of)f(5.3,)i(w)m(as)f(part)e(of)i(the)f(BSD)g(net)m(w)m(ork)h
+(v)m(ersion)g(2)150 1584 y(distribution)275 1719 y(Revision)e(6.0)i(w)m
+(as)e(made)h(indep)s(enden)m(tly)e(b)m(y)h(Erez)h(Zadok)f(at)h(the)f
+(Computer)g(Science)h(Depart-)150 1828 y(men)m(t)f(of)f(Colum)m(bia)g
+(Univ)m(ersit)m(y)h(\()p Fp(http:)q(/)q(/www)q(.cs)q(.columbia)q(.edu/)
+p Fx(\),)26 b(as)31 b(part)g(of)g(his)g(PhD)g(thesis)150
+1938 y(w)m(ork)i(\()p Fp(http:)r(/)r(/)r(www)r(.)r(fsl)r(.)r(cs)r(.)r
+(sunysb)r(.)r(edu)r(/)r(do)o(cs)r(/)r(z)o(adok)o(-the)o(sis)o(-pro)o
+(posa)o(l)r(/)r Fx(\).)43 b(Am-utils)34 b(\(es-)150 2047
+y(p)s(ecially)k(v)m(ersion)g(6.1\))h(con)m(tin)m(ues)g(to)f(b)s(e)f
+(dev)m(elop)s(ed)h(and)f(main)m(tained)h(at)h(the)e(Computer)g(Science)
+150 2157 y(Departmen)m(t)k(\()p Fp(http:)8 b(/)g(/)e(www)i(.)e(cs)i(.)e
+(sunysb)i(.)e(edu)i(/)e Fx(\))36 b(of)k(Ston)m(y)g(Bro)s(ok)h(Univ)m
+(ersit)m(y)g(\()p Fp(http:)8 b(/)g(/)e(www)i(.)150 2267
+y(stonybrook.edu/)p Fx(\),)27 b(as)j(a)h(service)g(to)h(the)e(user)g
+(comm)m(unit)m(y)-8 b(.)275 2401 y(See)30 b([History],)i(page)f(11,)g
+(for)g(more)f(details.)p eop end
+%%Page: 6 8
+TeXDict begin 6 7 bop eop end
+%%Page: 7 9
+TeXDict begin 7 8 bop 150 -116 a Fx(Getting)32 b(Additional)f
+(Information)2299 b(7)150 299 y Fu(Getting)52 b(Additional)g
+(Information)150 660 y Fw(Bug)44 b(Rep)t(orts)150 819
+y Fx(Before)33 b(rep)s(orting)f(a)h(bug,)g(see)g(if)f(it)h(is)g(a)g
+(kno)m(wn)f(one)g(in)g(the)h(bugs)f(\()p Fp(http:)r(/)r(/)q(www)r(.)q
+(am-utils)r(.)q(org)q(/)150 929 y(docs/am-utils/BUGS.txt)p
+Fx(\))25 b(\014le.)275 1072 y(If)g(y)m(ou)i(\014nd)e(a)h(problem)g(and)
+g(hop)s(efully)f(y)m(ou)i(can)f(repro)s(duce)g(it,)h(please)h(describ)s
+(e)d(it)i(in)f(detail)i(and)150 1181 y(submit)j(a)i(bug)f(rep)s(ort)f
+(\()p Fp(https:)q(/)q(/)q(bugzilla)q(.)q(filesystems)q(.)q(org)q(/)q
+Fx(\))c(via)33 b(Bugzilla)h(\()p Fp(http:)q(/)q(/)q(www)q(.)150
+1291 y(bugzilla)t(.)s(org)t(/)s Fx(\).)54 b(Alternativ)m(ely)-8
+b(,)39 b(y)m(ou)d(can)g(send)f(y)m(our)g(bug)g(rep)s(ort)g(to)h(the)g
+(\\am-utils")h(list)f(\(see)150 1401 y Fp(http:)q(/)q(/)q(www)q(.)q
+(am-uti)o(ls)q(.or)o(g)q(/)25 b Fx(under)30 b(\\Mailing)j(Lists"\))f
+(quoting)g(the)f(details)h(of)g(the)f(release)i(and)150
+1510 y(y)m(our)k(con\014guration.)60 b(These)36 b(details)i(can)f(b)s
+(e)f(obtained)h(b)m(y)g(running)e(the)i(command)g(`)p
+Fp(amd)29 b(-v)p Fx('.)60 b(It)150 1620 y(w)m(ould)29
+b(greatly)h(help)f(if)g(y)m(ou)h(could)f(pro)m(vide)g(a)g(repro)s
+(ducible)f(pro)s(cedure)g(for)h(detecting)i(the)e(bug)g(y)m(ou)150
+1729 y(are)i(rep)s(orting.)275 1872 y(Pro)m(viding)41
+b(w)m(orking)h(patc)m(hes)g(is)g(highly)f(encouraged.)74
+b(Ev)m(ery)42 b(patc)m(h)g(incorp)s(orated,)j(ho)m(w)m(ev)m(er)150
+1982 y(small,)29 b(will)f(get)h(its)f(author)g(an)f(honorable)h(men)m
+(tion)h(in)e(the)h(authors)f(\014le)h(\()p Fp(http://www.am-utils.)150
+2091 y(org/docs/am-utils/AUTHOR)o(S.tx)o(t)p Fx(\).)150
+2336 y Fw(Mailing)46 b(Lists)150 2496 y Fx(There)21 b(are)g(sev)m(eral)
+i(mailing)f(lists)f(for)g(p)s(eople)g(in)m(terested)i(in)d(k)m(eeping)i
+(up-to-date)h(with)d(dev)m(elopmen)m(ts.)199 2638 y(1.)61
+b(The)30 b(users)f(mailing)j(list,)f(`)p Fp(am-utils)p
+Fx(')e(is)h(for)379 2777 y Fv(\000)60 b Fx(announcemen)m(ts)30
+b(of)h(alpha)f(and)g(b)s(eta)h(releases)g(of)g(am-utils)379
+2916 y Fv(\000)60 b Fx(rep)s(orting)30 b(of)h(bugs)e(and)h(patc)m(hes)
+379 3054 y Fv(\000)60 b Fx(discussions)30 b(of)g(new)g(features)h(for)f
+(am-utils)379 3193 y Fv(\000)60 b Fx(implemen)m(tation)32
+b(and)e(p)s(orting)g(issues)330 3361 y(T)-8 b(o)40 b(subscrib)s(e,)g
+(visit)f Fp(http:)7 b(/)g(/)f(www)h(.)f(am-utils)h(.)f(org)h(/)38
+b Fx(under)g(\\Mailing)j(Lists.")67 b(After)40 b(sub-)330
+3470 y(scribing,)31 b(y)m(ou)f(can)h(p)s(ost)f(a)h(message)h(to)f(this)
+g(list.)41 b(T)-8 b(o)31 b(a)m(v)m(oid)h(as)f(m)m(uc)m(h)g(spam)f(as)g
+(p)s(ossible,)h(only)330 3580 y(subscrib)s(ers)d(to)j(this)g(list)g(ma)
+m(y)g(p)s(ost)f(to)h(it.)330 3719 y(Subscrib)s(ers)d(of)k(`)p
+Fp(am-utils)p Fx(')d(are)i(most)h(helpful)e(if)h(they)g(ha)m(v)m(e)h
+(the)f(time)h(and)e(resources)h(to)h(test)330 3828 y(new)42
+b(and)h(dev)m(elopmen)m(t)h(v)m(ersions)f(of)g(amd,)j(on)d(as)g(man)m
+(y)g(di\013eren)m(t)g(platforms)g(as)g(p)s(ossible.)330
+3938 y(They)38 b(should)g(also)i(b)s(e)e(prepared)g(to)h(learn)g(and)g
+(use)f(the)h(GNU)h(Auto)s(conf,)h(Automak)m(e,)i(and)330
+4047 y(Libto)s(ol)32 b(pac)m(k)-5 b(ages,)33 b(as)f(needed;)g(and)e(of)
+i(course,)g(b)s(ecome)f(familiar)h(with)f(the)h(complex)g(co)s(de)f(in)
+330 4157 y(the)g(am-utils)g(pac)m(k)-5 b(age.)43 b(In)30
+b(other)h(w)m(ords,)g(subscrib)s(ers)d(on)i(this)h(list)g(should)f(hop)
+s(efully)f(b)s(e)h(able)330 4267 y(to)h(con)m(tribute)g(meaningfully)g
+(to)g(the)f(dev)m(elopmen)m(t)i(of)f(amd.)330 4405 y(Note)39
+b(that)f(this)f(`)p Fp(am-utils)p Fx(')f(list)i(used)f(to)h(b)s(e)f
+(called)i(`)p Fp(amd-dev)p Fx(')d(b)s(efore)h(Jan)m(uary)g(1st,)j
+(2004.)330 4515 y(Please)32 b(use)e(the)g(new)g(name,)h(`)p
+Fp(am-utils)p Fx('.)199 4653 y(2.)61 b(The)49 b(announcemen)m(ts)i
+(mailing)f(list,)56 b(`)p Fp(am-utils-announce)p Fx(')46
+b(is)k(for)g(announcemen)m(ts)g(only)330 4763 y(\(mostly)j(new)e
+(releases\).)107 b(T)-8 b(o)52 b(subscrib)s(e,)k(visit)d
+Fp(http:)16 b(/)h(/)d(www)j(.)d(am-utils)g(.)g(org)i(/)65
+b Fx(under)330 4873 y(\\Mailing)32 b(Lists.")42 b(This)29
+b(list)i(is)g(read-only:)41 b(only)30 b(am-utils)h(dev)m(elop)s(ers)g
+(ma)m(y)g(p)s(ost)f(to)h(it.)199 5011 y(3.)61 b(W)-8
+b(e)37 b(distribute)f(nigh)m(tly)h(CVS)e(snapshots)h(in)g
+Fp(ftp:)5 b(/)g(/)t(ftp)g(.)t(am-util)o(s)g(.)s(org)t(/)s(pub)t(/)t(a)o
+(m-ut)o(ils)t(/)330 5121 y(snapshots)t(/)s(daily)t(/)s
+Fx(.)48 b(If)35 b(y)m(ou)g(lik)m(e)h(to)f(get)h(email)g(notices)g(of)f
+(commits)h(to)f(the)g(am-utils)h(CVS)330 5230 y(rep)s(ository)-8
+b(,)42 b(subscrib)s(e)c(to)h(the)h(CVS)e(logs)i(mailing)g(list,)j(`)p
+Fp(am-utils-cvs)p Fx(')36 b(at)k Fp(http:)7 b(/)g(/)f(www)h(.)330
+5340 y(am-utils.org/)27 b Fx(under)i(\\Mailing)j(Lists.")p
+eop end
+%%Page: 8 10
+TeXDict begin 8 9 bop 150 -116 a Fx(8)1900 b(Am-utils)30
+b(\(4.4BSD)j(Automoun)m(ter)d(Utilities\))199 299 y(4.)61
+b(The)29 b(older)g(list)h(whic)m(h)f(w)m(as)g(used)g(to)h(user)e
+(discussions,)h(`)p Fp(amd-workers)p Fx(',)e(is)j(defunct)e(as)i(of)f
+(Jan-)330 408 y(uary)34 b(2004.)55 b(\(Its)35 b(last)g(address)f(w)m
+(as)h Fp(amd-workers)27 b(AT)j(majordomo)s(.)s(glue)s(.)s(umd)s(.)s
+(edu)p Fx(.\))47 b(Don't)330 518 y(use)30 b(`)p Fp(amd-workers)p
+Fx(':)38 b(use)30 b(the)h(new)m(er,)f(more)h(activ)m(e)i(`)p
+Fp(am-utils)p Fx(')28 b(list.)199 653 y(5.)61 b(F)-8
+b(or)36 b(completeness,)h(there's)f(a)f(dev)m(elop)s(ers-only)h(closed)
+g(list)f(called)i(`)p Fp(am-utils-developers)p Fx(')330
+762 y(\(see)31 b Fp(http://www.am-utils.org/)24 b Fx(under)29
+b(\\Mailing)j(Lists"\).)150 995 y Fw(Am-utils)45 b(Bo)t(ok)150
+1154 y Fx(Erez)40 b(Zadok)f(\()p Fp(http:)7 b(/)g(/)f(www)h(.)f(cs)h(.)
+f(sunysb)h(.)f(edu)h(/)f(~ezk)p Fx(\))34 b(wrote)40 b(a)g(b)s(o)s(ok)f
+(\()p Fp(http:)7 b(/)g(/)f(www)h(.)f(fsl)h(.)f(cs)h(.)150
+1264 y(sunysb.edu/docs/amd-book/)p Fx(\),)28 b(titled)k
+Ft(Linux)h(NFS)g(and)h(A)n(utomounter)g(A)-5 b(dministr)g(ation)p
+Fx(,)34 b(ISBN)150 1373 y(0-7821-2739-8,)e(\(Syb)s(ex,)25
+b(2001\).)41 b(The)25 b(b)s(o)s(ok)g(is)g(full)f(of)i(details)g(and)e
+(examples)i(that)g(go)g(b)s(ey)m(ond)e(what)150 1483
+y(this)34 b(man)m(ual)h(has.)52 b(The)33 b(b)s(o)s(ok)h(also)h(co)m(v)m
+(ers)h(NFS)e(in)g(great)h(detail.)54 b(Although)34 b(the)g(b)s(o)s(ok)g
+(is)g(geared)150 1592 y(to)m(w)m(ard)h(Lin)m(ux)f(users,)g(it)h(is)g
+(general)g(enough)f(for)g(an)m(y)g(Unix)g(administrator)h(and)f(con)m
+(tains)h(sp)s(eci\014c)150 1702 y(sections)c(for)g(non-Lin)m(ux)e
+(systems.)p eop end
+%%Page: 9 11
+TeXDict begin 9 10 bop 150 -116 a Fx(In)m(tro)s(duction)3057
+b(9)150 299 y Fu(In)l(tro)t(duction)150 533 y Fx(An)37
+b Fo(automoun)m(ter)44 b Fx(main)m(tains)38 b(a)g(cac)m(he)g(of)g(moun)
+m(ted)f(\014lesystems.)61 b(Filesystems)38 b(are)g(moun)m(ted)f(on)150
+643 y(demand)29 b(when)h(they)g(are)h(\014rst)f(referenced,)g(and)g
+(unmoun)m(ted)f(after)i(a)g(p)s(erio)s(d)e(of)i(inactivit)m(y)-8
+b(.)275 777 y Ft(A)n(md)38 b Fx(ma)m(y)30 b(b)s(e)e(used)h(as)g(a)h
+(replacemen)m(t)g(for)f(Sun's)f(automoun)m(ter.)41 b(The)29
+b(c)m(hoice)i(of)e(whic)m(h)g(\014lesys-)150 887 y(tem)40
+b(to)g(moun)m(t)f(can)h(b)s(e)e(con)m(trolled)j(dynamically)f(with)f
+Fo(selectors)p Fx(.)69 b(Selectors)40 b(allo)m(w)h(decisions)f(of)150
+996 y(the)i(form)e(\\hostname)i(is)g Fo(this)p Fx(,")i(or)e(\\arc)m
+(hitecture)h(is)e(not)h Fo(that)p Fx(.")75 b(Selectors)42
+b(ma)m(y)g(b)s(e)f(com)m(bined)150 1106 y(arbitrarily)-8
+b(.)52 b Ft(A)n(md)43 b Fx(also)34 b(supp)s(orts)e(a)i(v)-5
+b(ariet)m(y)36 b(of)e(\014lesystem)g(t)m(yp)s(es,)h(including)e(NFS,)h
+(UFS)g(and)f(the)150 1215 y(no)m(v)m(el)38 b Fo(program)f
+Fx(\014lesystem.)60 b(The)36 b(com)m(bination)i(of)f(selectors)i(and)d
+(m)m(ultiple)h(\014lesystem)g(t)m(yp)s(es)g(al-)150 1325
+y(lo)m(ws)25 b(iden)m(tical)g(con\014guration)g(\014les)f(to)g(b)s(e)g
+(used)f(on)h(all)h(mac)m(hines)f(th)m(us)g(reducing)f(the)i
+(administrativ)m(e)150 1435 y(o)m(v)m(erhead.)275 1569
+y Ft(A)n(md)36 b Fx(ensures)26 b(that)h(it)h(will)f(not)g(hang)g(if)g
+(a)g(remote)h(serv)m(er)f(go)s(es)g(do)m(wn.)39 b(Moreo)m(v)m(er,)30
+b Ft(A)n(md)37 b Fx(can)27 b(de-)150 1679 y(termine)h(when)f(a)h
+(remote)h(serv)m(er)f(has)f(b)s(ecome)i(inaccessible)g(and)e(then)h
+(moun)m(t)g(replacemen)m(t)h(\014lesys-)150 1788 y(tems)i(as)f(and)g
+(when)f(they)i(b)s(ecome)g(a)m(v)-5 b(ailable.)275 1923
+y Ft(A)n(md)45 b Fx(con)m(tains)37 b(no)f(proprietary)g(source)g(co)s
+(de)g(and)g(has)g(b)s(een)f(p)s(orted)g(to)i(n)m(umerous)e(\015a)m(v)m
+(ors)i(of)150 2032 y(Unix.)p eop end
+%%Page: 10 12
+TeXDict begin 10 11 bop eop end
+%%Page: 11 13
+TeXDict begin 11 12 bop 150 -116 a Fx(History)3216 b(11)150
+299 y Fu(History)150 533 y Fx(The)31 b Ft(A)n(md)41 b
+Fx(pac)m(k)-5 b(age)33 b(has)e(b)s(een)f(without)i(an)f(o\016cial)i
+(main)m(tainer)f(since)g(1992.)45 b(Sev)m(eral)32 b(p)s(eople)g(ha)m(v)
+m(e)150 643 y(stepp)s(ed)e(in)h(to)h(main)m(tain)g(it)g(uno\016cially)
+-8 b(.)45 b(Most)32 b(notable)g(w)m(ere)f(the)h(`upl')f(\(Uno\016cial)i
+(P)m(atc)m(h)f(Lev)m(el\))150 752 y(releases)39 b(of)e
+Ft(A)n(md)p Fx(,)i(created)g(b)m(y)e(me)h(\(Erez)f(Zadok)h(\()p
+Fp(http:)6 b(/)g(/)t(www)g(.)t(cs)g(.)t(sunysb)g(.)t(edu)f(/)t(~ezk)p
+Fx(\)\),)34 b(and)150 862 y(a)m(v)-5 b(ailable)37 b(from)c
+Fp(ftp:)s(/)s(/)r(ftp)s(.)r(am-utils)s(.)r(org)s(/)r(pub)s(/)r(amd)s(/)
+r Fx(.)48 b(The)33 b(last)i(suc)m(h)f(uno\016cial)h(release)h(w)m(as)
+150 971 y(`upl102'.)275 1106 y(Through)d(the)h(pro)s(cess)g(of)h(patc)m
+(hing)g(and)f(aging,)i(it)f(w)m(as)g(b)s(ecoming)g(more)f(and)g(more)h
+(apparen)m(t)150 1215 y(that)25 b Ft(A)n(md)34 b Fx(w)m(as)25
+b(in)f(m)m(uc)m(h)h(need)f(of)h(revitalizing.)40 b(Main)m(taining)27
+b Ft(A)n(md)34 b Fx(had)24 b(b)s(ecome)g(a)h(di\016cult)g(task.)39
+b(I)150 1325 y(to)s(ok)26 b(it)f(up)s(on)f(m)m(yself)h(to)h(clean)m(up)
+g(the)f(co)s(de,)h(so)g(that)f(it)h(w)m(ould)f(b)s(e)f(easier)i(to)g(p)
+s(ort)e(to)i(new)f(platforms,)150 1435 y(add)37 b(new)f(features,)k(k)m
+(eep)d(up)g(with)f(the)i(man)m(y)f(new)g(feature)g(requests,)i(and)e
+(deal)g(with)g(the)h(nev)m(er)150 1544 y(ending)30 b(stream)h(of)f(bug)
+g(rep)s(orts.)275 1679 y(I)35 b(ha)m(v)m(e)i(b)s(een)e(w)m(orking)h(on)
+g(suc)m(h)f(a)h(release)h(of)f Ft(A)n(md)45 b Fx(on)36
+b(and)f(o\013)h(since)h(Jan)m(uary)e(of)h(1996.)58 b(The)150
+1788 y(new)26 b(suite)g(of)g(to)s(ols)h(is)f(curren)m(tly)g(named)g
+Fp(")p Fx(am-utils)p Fp(")g Fx(\(AutoMoun)m(ter)i(Utilities\),)h(in)d
+(line)h(with)e(GNU)150 1898 y(naming)e(con)m(v)m(en)m(tions,)k(b)s
+(e\014tting)c(the)h(con)m(ten)m(ts)h(of)e(the)g(pac)m(k)-5
+b(age.)41 b(In)22 b(Octob)s(er)h(of)h(1996)h(I)e(had)g(receiv)m(ed)150
+2007 y(enough)29 b(o\013ers)h(to)g(help)f(me)g(with)g(this)g(task)h
+(that)g(I)f(decided)g(to)h(mak)m(e)g(a)g(mailing)g(list)g(for)f(this)g
+(group)150 2117 y(of)38 b(p)s(eople.)64 b(Around)37 b(the)h(same)h
+(time,)i Ft(A)n(md)47 b Fx(had)38 b(b)s(ecome)g(a)h(necessary)f(part)g
+(of)h(m)m(y)f(PhD)g(thesis)150 2227 y(w)m(ork,)31 b(resulting)f(in)g
+(more)h(w)m(ork)f(p)s(erformed)f(on)h(am-utils.)275 2361
+y(Am-utils)k(v)m(ersion)i(6.0)f(w)m(as)g(n)m(um)m(b)s(ered)e(with)i(a)f
+(ma)5 b(jor)35 b(new)f(release)i(n)m(um)m(b)s(er)d(to)j(distinguish)d
+(it)150 2471 y(from)g(the)g(last)h(o\016cial)h(release)g(of)e
+Ft(A)n(md)43 b Fx(\(5.x\).)51 b(Man)m(y)34 b(new)f(features)g(ha)m(v)m
+(e)i(b)s(een)d(added)h(suc)m(h)g(as)h(a)150 2580 y(GNU)g
+Fp(configure)c Fx(system,)35 b(NFS)e(V)-8 b(ersion)34
+b(3,)g(a)g(run-time)f(con\014guration)g(\014le)g(\(`amd.conf)7
+b('\),)36 b(man)m(y)150 2690 y(new)d(p)s(orts,)g(more)h(scripts)f(and)f
+(programs,)i(as)g(w)m(ell)g(as)f(n)m(umerous)g(bug)f(\014xes.)49
+b(Another)34 b(reason)f(for)150 2800 y(the)41 b(new)g(ma)5
+b(jor)40 b(release)j(n)m(um)m(b)s(er)c(w)m(as)j(to)f(alert)h(users)e
+(of)h(am-utils)h(that)f(user-visible)h(in)m(terfaces)150
+2909 y(ma)m(y)29 b(ha)m(v)m(e)g(c)m(hanged.)40 b(In)28
+b(order)f(to)i(mak)m(e)g Ft(A)n(md)38 b Fx(w)m(ork)28
+b(w)m(ell)h(for)f(the)g(next)g(10)h(y)m(ears,)g(and)f(b)s(e)f(easier)i
+(to)150 3019 y(main)m(tain,)e(it)d(w)m(as)h(necessary)f(to)h(remo)m(v)m
+(e)g(old)g(or)f(un)m(used)e(features,)k(c)m(hange)f(v)-5
+b(arious)24 b(syn)m(tax)h(\014les,)h(etc.)150 3128 y(Ho)m(w)m(ev)m(er,)
+33 b(great)e(care)g(w)m(as)g(tak)m(en)h(to)f(ensure)e(the)i(maxim)m(um)
+f(p)s(ossible)g(bac)m(kw)m(ards)h(compatibilit)m(y)-8
+b(.)275 3263 y(Am-utils)39 b(v)m(ersion)h(6.1)g(has)f(autofs)g(supp)s
+(ort)e(for)i(Lin)m(ux)g(and)f(Solaris)i(2.5)p Fp(+)g
+Fx(as)f Ft(the)46 b Fx(ma)5 b(jor)39 b(new)150 3372 y(feature,)33
+b(in)e(addition)g(to)i(sev)m(eral)g(other)e(minor)g(new)g(features.)45
+b(The)31 b(autofs)h(supp)s(ort)e(is)h(completely)150
+3482 y(transparen)m(t)41 b(to)i(the)e(end-user,)j(aside)d(from)g(the)h
+(fact)g(that)g Fp(/bin/pwd)d Fx(no)m(w)j(alw)m(a)m(ys)h(returns)d(the)
+150 3592 y(correct)22 b(amd-i\014ed)f(path.)38 b(The)20
+b(administrator)i(can)f(easily)h(switc)m(h)g(b)s(et)m(w)m(een)g(NFS)f
+(and)g(autofs)g(moun)m(ts)150 3701 y(b)m(y)33 b(c)m(hanging)h(one)g
+(parameter)f(in)g Fp(amd.conf)p Fx(.)47 b(Autofs)33 b(supp)s(ort)f(and)
+g(main)m(tenance)j(w)m(as)f(dev)m(elop)s(ed)150 3811
+y(in)c(conjunction)g(with)h(Ion)f(Badulescu)g(\()p Fp(ionut)g(AT)f
+(badula.org)p Fx(\).)p eop end
+%%Page: 12 14
+TeXDict begin 12 13 bop eop end
+%%Page: 13 15
+TeXDict begin 13 14 bop 150 -116 a Fx(Chapter)30 b(1:)41
+b(Ov)m(erview)2673 b(13)150 299 y Fu(1)80 b(Ov)l(erview)150
+559 y Ft(A)n(md)48 b Fx(main)m(tains)39 b(a)g(cac)m(he)h(of)f(moun)m
+(ted)f(\014lesystems.)66 b(Filesystems)40 b(are)e Fo(demand-moun)m(ted)
+k Fx(when)150 669 y(they)37 b(are)h(\014rst)e(referenced,)j(and)e
+(unmoun)m(ted)f(after)h(a)h(p)s(erio)s(d)d(of)j(inactivit)m(y)-8
+b(.)63 b Ft(A)n(md)47 b Fx(ma)m(y)37 b(b)s(e)g(used)150
+778 y(as)c(a)f(replacemen)m(t)i(for)f(Sun's)e Fn(automoun)m(t)p
+Fx(\(8\))j(program.)47 b(It)32 b(con)m(tains)i(no)e(proprietary)g
+(source)h(co)s(de)150 888 y(and)j(has)g(b)s(een)f(p)s(orted)h(to)h(n)m
+(umerous)e(\015a)m(v)m(ors)i(of)f(Unix.)58 b(See)37 b(Chapter)e(2)i
+([Supp)s(orted)d(Platforms],)150 998 y(page)d(17.)275
+1141 y Ft(A)n(md)45 b Fx(w)m(as)37 b(designed)f(as)h(the)f(basis)g(for)
+g(exp)s(erimen)m(ting)h(with)f(\014lesystem)h(la)m(y)m(out)h(and)e
+(manage-)150 1251 y(men)m(t.)66 b(Although)39 b Ft(A)n(md)48
+b Fx(has)39 b(man)m(y)f(direct)i(applications)f(it)h(is)e(loaded)i
+(with)e(additional)i(features)150 1360 y(whic)m(h)c(ha)m(v)m(e)i
+(little)g(practical)g(use.)58 b(A)m(t)38 b(some)e(p)s(oin)m(t)h(the)f
+(infrequen)m(tly)h(used)e(comp)s(onen)m(ts)i(ma)m(y)g(b)s(e)150
+1470 y(remo)m(v)m(ed)31 b(to)g(streamline)h(the)e(pro)s(duction)g
+(system.)275 1613 y Ft(A)n(md)42 b Fx(supp)s(orts)32
+b(the)i(notion)g(of)f Fo(replicated)38 b Fx(\014lesystems)c(b)m(y)f(ev)
+-5 b(aluating)35 b(eac)m(h)g(mem)m(b)s(er)e(of)g(a)h(list)150
+1723 y(of)28 b(p)s(ossible)g(\014lesystem)h(lo)s(cations)h(one)e(b)m(y)
+g(one.)41 b Ft(A)n(md)c Fx(c)m(hec)m(ks)30 b(that)f(eac)m(h)g(cac)m
+(hed)h(mapping)d(remains)150 1832 y(v)-5 b(alid.)67 b(Should)37
+b(a)i(mapping)g(b)s(e)f(lost)h({)h(suc)m(h)e(as)h(happ)s(ens)e(when)h
+(a)i(\014leserv)m(er)f(go)s(es)g(do)m(wn)g({)g Ft(A)n(md)150
+1942 y Fx(automatically)33 b(selects)f(a)f(replacemen)m(t)h(should)d
+(one)i(b)s(e)e(a)m(v)-5 b(ailable.)150 2187 y Fw(1.1)68
+b(F)-11 b(undamen)l(tals)150 2347 y Fx(The)26 b(fundamen)m(tal)h
+(concept)h(b)s(ehind)d Ft(A)n(md)36 b Fx(is)27 b(the)g(abilit)m(y)h(to)
+f(separate)h(the)f(name)g(used)f(to)h(refer)g(to)h(a)150
+2456 y(\014le)j(from)g(the)g(name)g(used)g(to)h(refer)f(to)h(its)f(ph)m
+(ysical)h(storage)h(lo)s(cation.)44 b(This)31 b(allo)m(ws)h(the)f(same)
+h(\014les)150 2566 y(to)k(b)s(e)f(accessed)i(with)e(the)h(same)g(name)g
+(regardless)f(of)h(where)f(in)g(the)h(net)m(w)m(ork)h(the)e(name)h(is)f
+(used.)150 2676 y(This)23 b(is)h(v)m(ery)g(di\013eren)m(t)g(from)g
+(placing)g Fp(/n/hostname)d Fx(in)i(fron)m(t)h(of)g(the)g(pathname)g
+(since)g(that)g(includes)150 2785 y(lo)s(cation)32 b(dep)s(enden)m(t)d
+(information)i(whic)m(h)f(ma)m(y)h(c)m(hange)h(if)e(\014les)g(are)h(mo)
+m(v)m(ed)g(to)g(another)g(mac)m(hine.)275 2928 y(By)g(placing)g(the)g
+(required)f(mappings)h(in)f(a)h(cen)m(trally)i(administered)d
+(database,)j(\014lesystems)e(can)150 3038 y(b)s(e)f(re-organized)h
+(without)g(requiring)f(c)m(hanges)h(to)g(con\014guration)g(\014les,)f
+(shell)h(scripts)f(and)g(so)h(on.)150 3284 y Fw(1.2)68
+b(Filesystems)46 b(and)f(V)-11 b(olumes)150 3443 y Ft(A)n(md)40
+b Fx(views)32 b(the)f(w)m(orld)g(as)g(a)g(set)h(of)f(\014leserv)m(ers,)
+h(eac)m(h)g(con)m(taining)h(one)e(or)g(more)g(\014lesystems)g(where)150
+3553 y(eac)m(h)j(\014lesystem)f(con)m(tains)i(one)e(or)g(more)g
+Fo(v)m(olumes)p Fx(.)49 b(Here)34 b(the)f(term)g Fo(v)m(olume)39
+b Fx(is)33 b(used)f(to)i(refer)f(to)h(a)150 3662 y(coheren)m(t)d(set)g
+(of)g(\014les)f(suc)m(h)g(as)h(a)g(user's)e(home)i(directory)g(or)f(a)h
+(T)2458 3682 y(E)2508 3662 y(X)f(distribution.)275 3805
+y(In)i(order)g(to)h(access)h(the)f(con)m(ten)m(ts)i(of)e(a)g(v)m
+(olume,)h Ft(A)n(md)43 b Fx(m)m(ust)32 b(b)s(e)g(told)i(in)e(whic)m(h)h
+(\014lesystem)g(the)150 3915 y(v)m(olume)i(resides)e(and)h(whic)m(h)f
+(host)h(o)m(wns)g(the)g(\014lesystem.)52 b(By)34 b(default)h(the)f
+(host)g(is)g(assumed)f(to)i(b)s(e)150 4025 y(lo)s(cal)f(and)f(the)g(v)m
+(olume)h(is)f(assumed)f(to)i(b)s(e)e(the)h(en)m(tire)h(\014lesystem.)49
+b(If)33 b(a)g(\014lesystem)h(con)m(tains)g(more)150 4134
+y(than)d(one)g(v)m(olume,)h(then)f(a)g Fo(sublink)36
+b Fx(is)31 b(used)f(to)i(refer)e(to)i(the)f(sub-directory)g(within)f
+(the)i(\014lesystem)150 4244 y(where)e(the)g(v)m(olume)i(can)e(b)s(e)g
+(found.)150 4489 y Fw(1.3)68 b(V)-11 b(olume)45 b(Naming)150
+4649 y Fx(V)-8 b(olume)35 b(names)f(are)h(de\014ned)e(to)h(b)s(e)g
+(unique)f(across)i(the)f(en)m(tire)h(net)m(w)m(ork.)53
+b(A)34 b(v)m(olume)h(name)g(is)f(the)150 4758 y(pathname)39
+b(to)h(the)g(v)m(olume's)g(ro)s(ot)g(as)f(kno)m(wn)g(b)m(y)g(the)h
+(users)e(of)i(that)g(v)m(olume.)68 b(Since)40 b(this)f(name)150
+4868 y(uniquely)31 b(iden)m(ti\014es)g(the)h(v)m(olume)g(con)m(ten)m
+(ts,)h(all)f(v)m(olumes)g(can)g(b)s(e)e(named)h(and)g(accessed)h(from)f
+(eac)m(h)150 4978 y(host,)g(sub)5 b(ject)30 b(to)h(administrativ)m(e)h
+(con)m(trols.)275 5121 y(V)-8 b(olumes)35 b(ma)m(y)h(b)s(e)e
+(replicated)i(or)f(duplicated.)55 b(Replicated)36 b(v)m(olumes)g(con)m
+(tain)g(iden)m(tical)h(copies)150 5230 y(of)27 b(the)h(same)f(data)h
+(and)e(reside)i(at)f(t)m(w)m(o)i(or)e(more)g(lo)s(cations)i(in)e(the)g
+(net)m(w)m(ork.)40 b(Eac)m(h)28 b(of)g(the)f(replicated)150
+5340 y(v)m(olumes)37 b(can)f(b)s(e)g(used)f(in)m(terc)m(hangeably)-8
+b(.)61 b(Duplicated)37 b(v)m(olumes)g(eac)m(h)g(ha)m(v)m(e)g(the)g
+(same)f(name)h(but)p eop end
+%%Page: 14 16
+TeXDict begin 14 15 bop 150 -116 a Fx(14)1855 b(Am-utils)30
+b(\(4.4BSD)j(Automoun)m(ter)d(Utilities\))150 299 y(con)m(tain)39
+b(di\013eren)m(t,)h(though)e(functionally)g(iden)m(tical,)j(data.)64
+b(F)-8 b(or)38 b(example,)i(`)p Fp(/vol/tex)p Fx(')c(migh)m(t)j(b)s(e)
+150 408 y(the)31 b(name)f(of)h(a)f(T)779 428 y(E)829
+408 y(X)h(distribution)e(whic)m(h)i(v)-5 b(aried)30 b(for)g(eac)m(h)i
+(mac)m(hine)f(arc)m(hitecture.)275 549 y Ft(A)n(md)48
+b Fx(pro)m(vides)39 b(facilities)i(to)e(tak)m(e)i(adv)-5
+b(an)m(tage)41 b(of)e(b)s(oth)f(replicated)i(and)e(duplicated)h(v)m
+(olumes.)150 659 y(Con\014guration)30 b(options)g(allo)m(w)h(a)g
+(single)f(set)h(of)f(con\014guration)h(data)f(to)h(b)s(e)e(shared)h
+(across)g(an)g(en)m(tire)150 769 y(net)m(w)m(ork)h(b)m(y)f(taking)i
+(adv)-5 b(an)m(tage)32 b(of)f(replicated)g(and)f(duplicated)g(v)m
+(olumes.)275 910 y Ft(A)n(md)40 b Fx(can)31 b(tak)m(e)h(adv)-5
+b(an)m(tage)33 b(of)e(replacemen)m(t)h(v)m(olumes)f(b)m(y)g(moun)m
+(ting)g(them)g(as)g(required)f(should)150 1019 y(an)g(activ)m(e)j
+(\014leserv)m(er)e(b)s(ecome)f(una)m(v)-5 b(ailable.)150
+1261 y Fw(1.4)68 b(V)-11 b(olume)45 b(Binding)150 1421
+y Fx(Unix)28 b(implemen)m(ts)h(a)f(namespace)h(of)g(hierarc)m(hically)g
+(moun)m(ted)g(\014lesystems.)40 b(Tw)m(o)28 b(forms)g(of)g(binding)150
+1530 y(b)s(et)m(w)m(een)34 b(names)f(and)f(\014les)h(are)h(pro)m
+(vided.)49 b(A)33 b Fo(hard)f(link)39 b Fx(completes)34
+b(the)f(binding)f(when)h(the)g(name)150 1640 y(is)i(added)f(to)h(the)g
+(\014lesystem.)54 b(A)34 b Fo(soft)h(link)41 b Fx(dela)m(ys)35
+b(the)g(binding)e(un)m(til)i(the)g(name)g(is)g(accessed.)54
+b(An)150 1750 y Fo(automoun)m(ter)32 b Fx(adds)24 b(a)i(further)d(form)
+i(in)g(whic)m(h)f(the)h(binding)f(of)h(name)g(to)h(\014lesystem)f(is)g
+(dela)m(y)m(ed)i(un)m(til)150 1859 y(the)k(name)f(is)g(accessed.)275
+2000 y(The)j(target)i(v)m(olume,)g(in)e(its)h(general)h(form,)f(is)f(a)
+h(tuple)g(\(host,)h(\014lesystem,)g(sublink\))d(whic)m(h)i(can)150
+2110 y(b)s(e)c(used)f(to)i(name)g(the)f(ph)m(ysical)h(lo)s(cation)h(of)
+f(an)m(y)g(v)m(olume)g(in)f(the)g(net)m(w)m(ork.)275
+2251 y(When)h(a)i(target)g(is)f(referenced,)g Ft(A)n(md)42
+b Fx(ignores)32 b(the)g(sublink)f(elemen)m(t)i(and)f(determines)g
+(whether)150 2360 y(the)39 b(required)f(\014lesystem)h(is)g(already)h
+(moun)m(ted.)66 b(This)38 b(is)g(done)h(b)m(y)g(computing)g(the)g(lo)s
+(cal)h(moun)m(t)150 2470 y(p)s(oin)m(t)30 b(for)f(the)g(\014lesystem)h
+(and)f(c)m(hec)m(king)i(for)f(an)f(existing)i(\014lesystem)e(moun)m
+(ted)h(at)g(the)g(same)g(place.)150 2580 y(If)22 b(suc)m(h)h(a)g
+(\014lesystem)g(already)g(exists)h(then)e(it)h(is)g(assumed)f(to)i(b)s
+(e)e(functionally)h(iden)m(tical)i(to)e(the)g(target)150
+2689 y(\014lesystem.)63 b(By)38 b(default)g(there)g(is)g(a)g
+(one-to-one)i(mapping)d(b)s(et)m(w)m(een)h(the)g(pair)g(\(host,)i
+(\014lesystem\))150 2799 y(and)30 b(the)g(lo)s(cal)i(moun)m(t)e(p)s
+(oin)m(t)h(so)f(this)h(assumption)e(is)i(v)-5 b(alid.)150
+3041 y Fw(1.5)68 b(Op)t(erational)46 b(Principles)150
+3200 y Ft(A)n(md)53 b Fx(op)s(erates)44 b(b)m(y)f(in)m(tro)s(ducing)g
+(new)g(moun)m(t)g(p)s(oin)m(ts)g(in)m(to)i(the)e(namespace.)81
+b(These)43 b(are)h(called)150 3310 y Fo(automoun)m(t)29
+b Fx(p)s(oin)m(ts.)39 b(The)26 b(k)m(ernel)h(sees)g(these)g(automoun)m
+(t)g(p)s(oin)m(ts)f(as)h(NFS)f(\014lesystems)h(b)s(eing)f(serv)m(ed)150
+3419 y(b)m(y)i Ft(A)n(md)p Fx(.)40 b(Ha)m(ving)29 b(attac)m(hed)h
+(itself)f(to)f(the)h(namespace,)g Ft(A)n(md)37 b Fx(is)29
+b(no)m(w)f(able)g(to)h(con)m(trol)g(the)g(view)f(the)150
+3529 y(rest)34 b(of)g(the)g(system)f(has)h(of)g(those)g(moun)m(t)g(p)s
+(oin)m(ts.)50 b(RPC)33 b(calls)i(are)f(receiv)m(ed)h(from)e(the)h(k)m
+(ernel)h(one)150 3639 y(at)c(a)g(time.)275 3780 y(When)e(a)i
+Fo(lo)s(okup)h Fx(call)f(is)f(receiv)m(ed)i Ft(A)n(md)39
+b Fx(c)m(hec)m(ks)32 b(whether)d(the)h(name)g(is)g(already)h(kno)m(wn.)
+40 b(If)29 b(it)i(is)150 3889 y(not,)i(the)f(required)f(v)m(olume)i(is)
+f(moun)m(ted.)45 b(A)32 b(sym)m(b)s(olic)g(link)g(p)s(oin)m(ting)g(to)h
+(the)f(v)m(olume)h(ro)s(ot)f(is)g(then)150 3999 y(returned.)43
+b(Once)31 b(the)h(sym)m(b)s(olic)g(link)f(is)g(returned,)g(the)h(k)m
+(ernel)g(will)g(send)e(all)i(other)g(requests)f(direct)150
+4108 y(to)g(the)g(moun)m(ted)f(\014lesystem.)275 4249
+y(If)25 b(a)h(v)m(olume)g(is)g(not)f(y)m(et)i(moun)m(ted,)g
+Ft(A)n(md)35 b Fx(consults)26 b(a)g(con\014guration)g
+Fo(moun)m(t-map)i Fx(corresp)s(onding)150 4359 y(to)h(the)g(automoun)m
+(t)g(p)s(oin)m(t.)40 b Ft(A)n(md)e Fx(then)28 b(mak)m(es)h(a)g(run)m
+(time)f(decision)h(on)f(what)g(and)g(where)g(to)h(moun)m(t)150
+4469 y(a)i(\014lesystem)f(based)g(on)h(the)f(information)h(obtained)g
+(from)f(the)g(map.)275 4610 y Ft(A)n(md)k Fx(do)s(es)25
+b(not)h(implemen)m(t)f(all)h(the)g(NFS)f(requests;)i(only)f(those)f
+(relev)-5 b(an)m(t)27 b(to)f(name)f(binding)f(suc)m(h)150
+4719 y(as)36 b Fo(lo)s(okup)p Fx(,)g Fo(readlink)41 b
+Fx(and)35 b Fo(readdir)p Fx(.)55 b(Some)36 b(other)g(calls)g(are)g
+(also)h(implemen)m(ted)f(but)f(most)g(simply)150 4829
+y(return)29 b(an)i(error)f(co)s(de;)g(for)h(example)g
+Fo(mkdir)36 b Fx(alw)m(a)m(ys)31 b(returns)f(\\read-only)h
+(\014lesystem".)150 5071 y Fw(1.6)68 b(Moun)l(ting)45
+b(a)g(V)-11 b(olume)150 5230 y Fx(Eac)m(h)38 b(automoun)m(t)g(p)s(oin)m
+(t)f(has)g(a)g(corresp)s(onding)f(moun)m(t)h(map.)61
+b(The)37 b(moun)m(t)g(map)f(con)m(tains)j(a)e(list)150
+5340 y(of)c(k)m(ey{v)-5 b(alue)34 b(pairs.)48 b(The)32
+b(k)m(ey)i(is)e(the)h(name)g(of)g(the)g(v)m(olume)h(to)f(b)s(e)f(moun)m
+(ted.)48 b(The)32 b(v)-5 b(alue)33 b(is)g(a)g(list)p
+eop end
+%%Page: 15 17
+TeXDict begin 15 16 bop 150 -116 a Fx(Chapter)30 b(1:)41
+b(Ov)m(erview)2673 b(15)150 299 y(of)32 b(lo)s(cations)h(describing)f
+(where)f(the)h(\014lesystem)g(is)g(stored)g(in)f(the)h(net)m(w)m(ork.)
+46 b(In)31 b(the)h(source)g(for)g(the)150 408 y(map)e(the)h(v)-5
+b(alue)30 b(w)m(ould)h(lo)s(ok)g(lik)m(e)390 541 y(lo)s(cation1)63
+b(lo)s(cation2)68 b(.)22 b(.)h(.)71 b(lo)s(cationN)275
+674 y Ft(A)n(md)37 b Fx(examines)28 b(eac)m(h)h(lo)s(cation)g(in)e
+(turn.)39 b(Eac)m(h)28 b(lo)s(cation)i(ma)m(y)e(con)m(tain)h
+Fo(selectors)k Fx(whic)m(h)27 b(con)m(trol)150 784 y(whether)i
+Ft(A)n(md)39 b Fx(can)29 b(use)g(that)h(lo)s(cation.)42
+b(F)-8 b(or)31 b(example,)f(the)g(lo)s(cation)h(ma)m(y)f(b)s(e)f
+(restricted)h(to)g(use)f(b)m(y)150 893 y(certain)i(hosts.)41
+b(Those)30 b(lo)s(cations)i(whic)m(h)e(cannot)h(b)s(e)f(used)f(are)i
+(ignored.)275 1026 y Ft(A)n(md)50 b Fx(attempts)42 b(to)g(moun)m(t)g
+(the)f(\014lesystem)h(describ)s(ed)e(b)m(y)h(eac)m(h)i(remaining)e(lo)s
+(cation)i(un)m(til)f(a)150 1136 y(moun)m(t)30 b(succeeds)h(or)f
+Ft(A)n(md)40 b Fx(can)31 b(no)f(longer)h(pro)s(ceed.)40
+b(The)30 b(latter)i(can)f(o)s(ccur)f(in)g(three)h(w)m(a)m(ys:)225
+1269 y Fv(\017)60 b Fx(If)34 b(none)f(of)h(the)h(lo)s(cations)g(could)f
+(b)s(e)g(used,)g(or)g(if)g(all)h(of)f(the)g(lo)s(cations)i(caused)e(an)
+f(error,)i(then)330 1378 y(the)c(last)g(error)f(is)g(returned.)225
+1511 y Fv(\017)60 b Fx(If)26 b(a)h(lo)s(cation)i(could)d(b)s(e)g(used)g
+(but)g(w)m(as)h(b)s(eing)g(moun)m(ted)f(in)h(the)f(bac)m(kground)h
+(then)f Ft(A)n(md)36 b Fx(marks)330 1621 y(that)27 b(moun)m(t)f(as)g(b)
+s(eing)f(\\in)h(progress")h(and)e(con)m(tin)m(ues)i(with)f(the)g(next)g
+(request;)i(no)e(reply)f(is)h(sen)m(t)330 1730 y(to)31
+b(the)g(k)m(ernel.)225 1863 y Fv(\017)60 b Fx(Lastly)-8
+b(,)27 b(one)e(or)g(more)g(of)g(the)g(moun)m(ts)g(ma)m(y)g(ha)m(v)m(e)h
+(b)s(een)e Fo(deferred)p Fx(.)38 b(A)25 b(moun)m(t)g(is)g(deferred)e
+(if)i(extra)330 1973 y(information)k(is)f(required)g(b)s(efore)g(the)h
+(moun)m(t)f(can)h(pro)s(ceed.)40 b(When)28 b(the)h(information)g(b)s
+(ecomes)330 2082 y(a)m(v)-5 b(ailable)29 b(the)d(moun)m(t)g(will)h(tak)
+m(e)h(place,)g(but)e(in)g(the)g(mean)g(time)h(no)g(reply)f(is)g(sen)m
+(t)h(to)g(the)f(k)m(ernel.)330 2192 y(If)k(the)g(moun)m(t)h(is)f
+(deferred,)g Ft(A)n(md)40 b Fx(con)m(tin)m(ues)31 b(to)g(try)g(an)m(y)f
+(remaining)h(lo)s(cations.)275 2348 y(Once)e(a)h(v)m(olume)g(has)g(b)s
+(een)e(moun)m(ted,)i Ft(A)n(md)39 b Fx(establishes)31
+b(a)e Fo(v)m(olume)i(mapping)37 b Fx(whic)m(h)29 b(is)g(used)g(to)150
+2457 y(satisfy)i(subsequen)m(t)e(requests.)150 2687 y
+Fw(1.7)68 b(Automatic)46 b(Unmoun)l(ting)150 2846 y Fx(T)-8
+b(o)32 b(a)m(v)m(oid)i(an)e(ev)m(er)g(increasing)h(n)m(um)m(b)s(er)e
+(of)h(\014lesystem)g(moun)m(ts,)g Ft(A)n(md)42 b Fx(remo)m(v)m(es)33
+b(v)m(olume)g(mappings)150 2956 y(whic)m(h)c(ha)m(v)m(e)h(not)f(b)s
+(een)g(used)f(recen)m(tly)-8 b(.)42 b(A)29 b(time-to-liv)m(e)k(in)m
+(terv)-5 b(al)30 b(is)f(asso)s(ciated)i(with)d(eac)m(h)j(mapping)150
+3065 y(and)g(when)g(that)h(expires)g(the)g(mapping)f(is)g(remo)m(v)m
+(ed.)46 b(When)32 b(the)g(last)g(reference)g(to)h(a)f(\014lesystem)g
+(is)150 3175 y(remo)m(v)m(ed,)h(that)f(\014lesystem)f(is)h(unmoun)m
+(ted.)42 b(If)31 b(the)h(unmoun)m(t)e(fails,)j(for)e(example)h(the)f
+(\014lesystem)h(is)150 3284 y(still)j(busy)-8 b(,)35
+b(the)f(mapping)g(is)g(re-instated)h(and)f(its)g(time-to-liv)m(e)k(in)m
+(terv)-5 b(al)35 b(is)g(extended.)52 b(The)34 b(global)150
+3394 y(default)d(for)f(this)h(grace)h(p)s(erio)s(d)d(is)i(con)m
+(trolled)h(b)m(y)f(the)g Fp(-w)f Fx(command-line)h(option)g(\(see)h
+(Section)f(4.12)150 3504 y([-w)i(Option],)h(page)g(42\))h(or)e(the)g
+Ft(amd.c)-5 b(onf)54 b Fx(parameter)34 b(`)p Fp(dismount_interval)p
+Fx(')29 b(\(see)34 b(Section)g(6.5.8)150 3613 y([dismoun)m(t)p
+548 3613 28 4 v 40 w(in)m(terv)-5 b(al)27 b(P)m(arameter],)i(page)e
+(63\).)41 b(It)26 b(is)g(also)i(p)s(ossible)d(to)i(set)g(this)f(v)-5
+b(alue)27 b(on)f(a)h(p)s(er-moun)m(t)150 3723 y(basis)j(\(see)i
+(Section)f(3.3.4.4)i([opts],)e(page)g(31\).)275 3856
+y(Filesystems)g(can)g(b)s(e)f(forcefully)h(timed)g(out)g(using)f(the)h
+Ft(A)n(mq)38 b Fx(command.)j(See)31 b(Chapter)f(7)h([Run-)150
+3965 y(time)44 b(Administration],)j(page)e(73.)80 b(Note)45
+b(that)f(on)f(new)g(enough)g(systems)g(that)h(supp)s(ort)e(forced)150
+4075 y(unmoun)m(ts,)h(suc)m(h)d(as)h(Lin)m(ux,)i Ft(A)n(md)51
+b Fx(can)41 b(try)f(to)i(use)f(the)g Fn(umoun)m(t2)p
+Fx(\(2\))h(system)f(call)h(to)f(force)h(the)150 4184
+y(unmoun)m(t,)48 b(if)d(the)g(regular)g Fn(umoun)m(t)p
+Fx(\(2\))h(system)f(call)i(failed)e(in)g(a)h(w)m(a)m(y)g(that)f
+(indicates)h(that)g(the)150 4294 y(moun)m(t)30 b(p)s(oin)m(t)h(is)f(h)m
+(ung)g(or)g(stale.)42 b(See)31 b(Section)g(6.5.11)i([forced)p
+2362 4294 V 40 w(unmoun)m(ts)c(P)m(arameter],)j(page)g(63.)150
+4523 y Fw(1.8)68 b(Keep-aliv)l(es)150 4682 y Fx(Use)39
+b(of)g(some)g(\014lesystem)g(t)m(yp)s(es)g(requires)f(the)h(presence)g
+(of)g(a)g(serv)m(er)g(on)g(another)g(mac)m(hine.)66 b(If)39
+b(a)150 4792 y(mac)m(hine)29 b(crashes)f(then)f(it)i(is)f(of)g(no)g
+(concern)g(to)g(pro)s(cesses)g(on)g(that)g(mac)m(hine)h(that)g(the)f
+(\014lesystem)g(is)150 4902 y(una)m(v)-5 b(ailable.)42
+b(Ho)m(w)m(ev)m(er,)32 b(to)e(pro)s(cesses)f(on)g(a)h(remote)g(host)f
+(using)g(that)h(mac)m(hine)g(as)g(a)f(\014leserv)m(er)h(this)150
+5011 y(ev)m(en)m(t)35 b(is)f(imp)s(ortan)m(t.)52 b(This)33
+b(situation)i(is)f(most)g(widely)g(recognized)h(when)e(an)h(NFS)g(serv)
+m(er)g(crashes)150 5121 y(and)i(the)h(b)s(eha)m(vior)g(observ)m(ed)g
+(on)g(clien)m(t)h(mac)m(hines)g(is)e(that)i(more)f(and)f(more)h(pro)s
+(cesses)g(hang.)60 b(In)150 5230 y(order)27 b(to)i(pro)m(vide)f(the)g
+(p)s(ossibilit)m(y)h(of)f(reco)m(v)m(ery)-8 b(,)31 b
+Ft(A)n(md)37 b Fx(implemen)m(ts)29 b(a)f Fo(k)m(eep-aliv)m(e)36
+b Fx(in)m(terv)-5 b(al)29 b(timer)f(for)150 5340 y(some)j(\014lesystem)
+f(t)m(yp)s(es.)41 b(Curren)m(tly)30 b(only)g(NFS)h(mak)m(es)g(use)f(of)
+h(this)f(service.)p eop end
+%%Page: 16 18
+TeXDict begin 16 17 bop 150 -116 a Fx(16)1855 b(Am-utils)30
+b(\(4.4BSD)j(Automoun)m(ter)d(Utilities\))275 299 y(The)25
+b(basis)i(of)f(the)h(NFS)f(k)m(eep-aliv)m(e)j(implemen)m(tation)f(is)e
+(the)h(observ)-5 b(ation)27 b(that)g(most)g(sites)g(main-)150
+408 y(tain)j(replicated)g(copies)g(of)f(common)h(system)f(data)h(suc)m
+(h)f(as)g(man)m(ual)h(pages,)g(most)g(or)f(all)h(programs,)150
+518 y(system)h(source)h(co)s(de)f(and)g(so)g(on.)43 b(If)31
+b(one)h(of)f(those)h(serv)m(ers)f(go)s(es)h(do)m(wn)f(it)h(w)m(ould)f
+(b)s(e)f(reasonable)i(to)150 628 y(moun)m(t)e(one)h(of)g(the)f(others)h
+(as)f(a)h(replacemen)m(t.)275 762 y(The)43 b(\014rst)g(part)h(of)g(the)
+g(pro)s(cess)f(is)h(to)h(k)m(eep)f(trac)m(k)h(of)f(whic)m(h)g
+(\014leserv)m(ers)g(are)g(up)f(and)g(whic)m(h)150 872
+y(are)f(do)m(wn.)72 b Ft(A)n(md)51 b Fx(do)s(es)41 b(this)g(b)m(y)g
+(sending)g(RPC)f(requests)h(to)h(the)g(serv)m(ers')f(NFS)h
+Fp(NullProc)d Fx(and)150 981 y(c)m(hec)m(king)c(whether)e(a)h(reply)f
+(is)h(returned.)48 b(While)35 b(the)e(serv)m(er)h(state)h(is)e
+(uncertain)h(the)f(requests)h(are)150 1091 y(re-transmitted)f(at)g
+(three)f(second)g(in)m(terv)-5 b(als)33 b(and)f(if)g(no)g(reply)g(is)g
+(receiv)m(ed)i(after)e(four)g(attempts)h(the)150 1200
+y(serv)m(er)g(is)g(mark)m(ed)g(do)m(wn.)48 b(If)33 b(a)g(reply)g(is)g
+(receiv)m(ed)h(the)f(\014leserv)m(er)h(is)f(mark)m(ed)g(up)e(and)i(sta)
+m(ys)h(in)e(that)150 1310 y(state)i(for)f(30)g(seconds)g(at)h(whic)m(h)
+e(time)i(another)f(NFS)f(ping)h(is)g(sen)m(t.)48 b(This)32
+b(in)m(terv)-5 b(al)34 b(is)f(con\014gurable)150 1420
+y(and)24 b(can)g(ev)m(en)h(b)s(e)f(turned)f(o\013)i(using)f(the)g
+Ft(ping)33 b Fx(option.)39 b(See)24 b(Section)i(3.3.4.4)g([opts)f
+(Option],)h(page)f(31.)275 1554 y(Once)i(a)i(\014leserv)m(er)f(is)g
+(mark)m(ed)g(do)m(wn,)g(requests)g(con)m(tin)m(ue)h(to)f(b)s(e)f(sen)m
+(t)i(ev)m(ery)f(30)h(seconds)f(in)f(order)150 1664 y(to)37
+b(determine)f(when)f(the)h(\014leserv)m(er)h(comes)g(bac)m(k)f(up.)57
+b(During)36 b(this)g(time)h(an)m(y)f(reference)h(through)150
+1773 y Ft(A)n(md)47 b Fx(to)39 b(the)f(\014lesystems)g(on)f(that)i
+(serv)m(er)f(fail)g(with)g(the)f(error)h(\\Op)s(eration)g(w)m(ould)f
+(blo)s(c)m(k".)64 b(If)38 b(a)150 1883 y(replacemen)m(t)31
+b(v)m(olume)g(is)f(a)m(v)-5 b(ailable)32 b(then)e(it)g(will)g(b)s(e)g
+(moun)m(ted,)g(otherwise)g(the)g(error)g(is)f(returned)g(to)150
+1993 y(the)i(user.)275 2127 y(Although)37 b(this)g(action)i(do)s(es)e
+(not)h(protect)g(user)f(\014les,)i(whic)m(h)e(are)h(unique)e(on)h(the)h
+(net)m(w)m(ork,)i(or)150 2237 y(pro)s(cesses)22 b(whic)m(h)g(do)g(not)g
+(access)i(\014les)e(via)h Ft(A)n(md)31 b Fx(or)23 b(already)f(ha)m(v)m
+(e)i(op)s(en)d(\014les)h(on)g(the)h(h)m(ung)e(\014lesystem,)150
+2346 y(it)31 b(can)g(prev)m(en)m(t)g(most)f(new)g(pro)s(cesses)g(from)g
+(hanging.)150 2579 y Fw(1.9)68 b(Non-blo)t(c)l(king)45
+b(Op)t(eration)150 2738 y Fx(Since)37 b(there)g(is)f(only)h(one)g
+(instance)h(of)f Ft(A)n(md)46 b Fx(for)36 b(eac)m(h)i(automoun)m(t)g(p)
+s(oin)m(t,)g(and)e(usually)h(only)g(one)150 2848 y(instance)31
+b(on)g(eac)m(h)h(mac)m(hine,)g(it)f(is)g(imp)s(ortan)m(t)g(that)g(it)g
+(is)g(alw)m(a)m(ys)h(a)m(v)-5 b(ailable)33 b(to)f(service)f(k)m(ernel)h
+(calls.)150 2957 y Ft(A)n(md)49 b Fx(go)s(es)41 b(to)f(great)i(lengths)
+e(to)g(ensure)f(that)i(it)f(do)s(es)g(not)g(blo)s(c)m(k)g(in)g(a)g
+(system)g(call.)71 b(As)40 b(a)g(last)150 3067 y(resort)34
+b Ft(A)n(md)43 b Fx(will)35 b(fork)e(b)s(efore)h(it)h(attempts)f(a)h
+(system)f(call)h(that)g(ma)m(y)f(blo)s(c)m(k)h(inde\014nitely)-8
+b(,)35 b(suc)m(h)f(as)150 3176 y(moun)m(ting)g(an)h(NFS)f
+(\014lesystem.)53 b(Other)33 b(tasks)i(suc)m(h)f(as)h(obtaining)f
+(\014lehandle)g(information)h(for)f(an)150 3286 y(NFS)22
+b(\014lesystem,)j(are)d(done)g(using)g(a)g(purp)s(ose)f(built)h
+(non-blo)s(c)m(king)h(RPC)e(library)h(whic)m(h)g(is)g(in)m(tegrated)150
+3396 y(with)38 b Ft(A)n(md)9 b Fx('s)39 b(task)g(sc)m(heduler.)65
+b(This)37 b(library)h(is)h(also)g(used)e(to)j(implemen)m(t)f(NFS)f(k)m
+(eep-aliv)m(es)j(\(see)150 3505 y(Section)31 b(1.8)h([Keep-aliv)m(es],)
+h(page)e(15\).)275 3640 y(Whenev)m(er)24 b(a)g(moun)m(t)g(is)g
+(deferred)e(or)i(bac)m(kgrounded,)h Ft(A)n(md)33 b Fx(m)m(ust)24
+b(w)m(ait)h(for)e(it)i(to)f(complete)h(b)s(efore)150
+3749 y(replying)33 b(to)h(the)g(k)m(ernel.)50 b(Ho)m(w)m(ev)m(er,)36
+b(this)d(w)m(ould)h(cause)f Ft(A)n(md)43 b Fx(to)34 b(blo)s(c)m(k)g(w)m
+(aiting)h(for)e(a)h(reply)f(to)h(b)s(e)150 3859 y(constructed.)56
+b(Rather)35 b(than)g(do)g(this,)i Ft(A)n(md)45 b Fx(simply)34
+b Fo(drops)k Fx(the)e(call)g(under)e(the)i(assumption)e(that)150
+3968 y(the)d(k)m(ernel)f(RPC)g(mec)m(hanism)h(will)g(automatically)i
+(retry)d(the)h(request.)p eop end
+%%Page: 17 19
+TeXDict begin 17 18 bop 150 -116 a Fx(Chapter)30 b(2:)41
+b(Supp)s(orted)28 b(Platforms)2214 b(17)150 299 y Fu(2)80
+b(Supp)t(orted)52 b(Platforms)150 533 y Ft(A)n(m-utils)37
+b Fx(has)30 b(b)s(een)f(p)s(orted)g(to)i(a)f(wide)g(v)-5
+b(ariet)m(y)32 b(of)e(mac)m(hines)g(and)g(op)s(erating)g(systems.)41
+b Ft(A)n(m-utils)7 b Fx('s)150 643 y(co)s(de)30 b(w)m(orks)g(for)g
+(little-endian)h(and)f(big-endian)g(mac)m(hines,)h(as)f(w)m(ell)h(as)f
+(32)h(bit)f(and)f(64)i(bit)f(arc)m(hitec-)150 752 y(tures.)54
+b(F)-8 b(urthermore,)36 b(when)e Ft(A)n(m-utils)42 b
+Fx(p)s(orts)34 b(to)i(an)f(Op)s(erating)g(System)f(on)h(one)g(arc)m
+(hitecture,)j(it)150 862 y(is)32 b(generally)g(readily)g(p)s(ortable)g
+(to)g(the)g(same)g(Op)s(erating)f(System)h(on)f(all)i(platforms)e(on)g
+(whic)m(h)h(it)g(is)150 971 y(a)m(v)-5 b(ailable.)275
+1106 y(See)32 b(the)f Fp(INSTALL)f Fx(in)i(the)g(distribution)f(for)g
+(more)h(sp)s(eci\014c)f(details)i(on)f(building)f(and/or)g(con\014g-)
+150 1215 y(uring)f(for)g(some)h(systems.)p eop end
+%%Page: 18 20
+TeXDict begin 18 19 bop eop end
+%%Page: 19 21
+TeXDict begin 19 20 bop 150 -116 a Fx(Chapter)30 b(3:)41
+b(Moun)m(t)31 b(Maps)2536 b(19)150 299 y Fu(3)80 b(Moun)l(t)53
+b(Maps)150 511 y Ft(A)n(md)40 b Fx(has)30 b(no)g(built-in)g(kno)m
+(wledge)h(of)g(mac)m(hines)f(or)h(\014lesystems.)41 b(External)30
+b Fo(moun)m(t-maps)k Fx(are)d(used)150 620 y(to)26 b(pro)m(vide)g(the)f
+(required)g(information.)40 b(Sp)s(eci\014cally)-8 b(,)27
+b Ft(A)n(md)35 b Fx(needs)25 b(to)h(kno)m(w)g(when)e(and)h(under)f
+(what)150 730 y(conditions)31 b(it)g(should)e(moun)m(t)h
+(\014lesystems.)275 860 y(The)d(map)g(en)m(try)h(corresp)s(onding)f(to)
+h(the)g(requested)g(name)g(con)m(tains)h(a)f(list)g(of)g(p)s(ossible)f
+(lo)s(cations)150 970 y(from)43 b(whic)m(h)g(to)h(resolv)m(e)h(the)f
+(request.)80 b(Eac)m(h)44 b(lo)s(cation)h(sp)s(eci\014es)e
+(\014lesystem)h(t)m(yp)s(e,)j(information)150 1079 y(required)32
+b(b)m(y)g(that)h(\014lesystem)g(\(for)f(example)h(the)g(blo)s(c)m(k)g
+(sp)s(ecial)g(device)g(in)f(the)h(case)g(of)g(UFS\),)g(and)150
+1189 y(some)c(information)g(describing)g(where)f(to)h(moun)m(t)g(the)g
+(\014lesystem)g(\(see)g(Section)h(3.3.4.3)h([fs)e(Option],)150
+1298 y(page)i(31\).)42 b(A)31 b(lo)s(cation)g(ma)m(y)g(also)h(con)m
+(tain)f Fo(selectors)36 b Fx(\(see)31 b(Section)h(3.3.3)g([Selectors],)
+g(page)f(26\).)150 1522 y Fw(3.1)68 b(Map)45 b(T)l(yp)t(es)150
+1681 y Fx(A)34 b(moun)m(t-map)g(pro)m(vides)g(the)g(run-time)g
+(con\014guration)g(information)h(to)f Ft(A)n(md)p Fx(.)52
+b(Maps)34 b(can)g(b)s(e)g(im-)150 1791 y(plemen)m(ted)39
+b(in)e(man)m(y)i(w)m(a)m(ys.)64 b(Some)39 b(of)f(the)g(forms)g(supp)s
+(orted)e(b)m(y)i Ft(A)n(md)48 b Fx(are)38 b(regular)g(\014les,)j(ndbm)
+150 1901 y(databases,)31 b(NIS)f(maps,)g(the)h Fo(Hesio)s(d)j
+Fx(name)c(serv)m(er,)h(and)f(ev)m(en)h(the)g(passw)m(ord)e(\014le.)275
+2031 y(A)34 b(moun)m(t-map)g Fo(name)39 b Fx(is)34 b(a)h(sequence)f(of)
+h(c)m(haracters.)53 b(When)34 b(an)g(automoun)m(t)h(p)s(oin)m(t)f(is)g
+(created)150 2140 y(a)f(handle)e(on)i(the)f(moun)m(t-map)g(is)h
+(obtained.)46 b(F)-8 b(or)33 b(eac)m(h)h(map)e(t)m(yp)s(e)g
+(con\014gured,)g Ft(A)n(md)42 b Fx(attempts)33 b(to)150
+2250 y(reference)26 b(the)g(map)f(of)h(the)g(appropriate)g(t)m(yp)s(e.)
+39 b(If)26 b(a)g(map)f(is)h(found,)f Ft(A)n(md)35 b Fx(notes)27
+b(the)e(t)m(yp)s(e)h(for)g(future)150 2359 y(use)33 b(and)g(deletes)h
+(the)g(reference,)h(for)e(example)h(closing)g(an)m(y)g(op)s(en)f
+(\014le)g(descriptors.)50 b(The)33 b(a)m(v)-5 b(ailable)150
+2469 y(maps)25 b(are)h(con\014gured)f(when)g Ft(A)n(md)35
+b Fx(is)26 b(built)g(and)f(can)h(b)s(e)f(displa)m(y)m(ed)h(b)m(y)g
+(running)e(the)i(command)g(`)p Fp(amd)150 2579 y(-v)p
+Fx('.)275 2709 y(When)d(using)g(an)h Ft(A)n(md)33 b Fx(con\014guration)
+24 b(\014le)g(\(see)h(Chapter)e(6)i([Amd)e(Con\014guration)g(File],)k
+(page)e(59\))150 2818 y(and)35 b(the)g(k)m(eyw)m(ord)g(`)p
+Fp(map_type)p Fx(')f(\(see)i(Section)g(6.4.5)h([map)p
+2259 2818 28 4 v 40 w(t)m(yp)s(e)e(P)m(arameter],)j(page)e(60\),)i(y)m
+(ou)d(ma)m(y)150 2928 y(force)c(the)g(map)f(used)f(to)i(an)m(y)g(t)m
+(yp)s(e.)275 3058 y(By)c(default,)g Ft(A)n(md)37 b Fx(cac)m(hes)28
+b(data)f(in)f(a)i(mo)s(de)e(dep)s(enden)m(t)g(on)g(the)h(t)m(yp)s(e)g
+(of)g(map.)39 b(This)26 b(is)h(the)g(same)150 3167 y(as)40
+b(sp)s(ecifying)g(`)p Fp(cache:=mapdefault)p Fx(')c(and)j(selects)j(a)e
+(suitable)h(default)f(cac)m(he)i(mo)s(de)d(dep)s(ending)150
+3277 y(on)c(the)h(map)f(t)m(yp)s(e.)57 b(The)35 b(individual)g
+(defaults)g(are)h(describ)s(ed)f(b)s(elo)m(w.)56 b(The)35
+b Fo(cac)m(he)43 b Fx(option)36 b(can)g(b)s(e)150 3387
+y(sp)s(eci\014ed)c(on)g(automoun)m(t)h(p)s(oin)m(ts)f(to)h(alter)g(the)
+f(cac)m(hing)i(b)s(eha)m(vior)e(\(see)h(Section)g(5.19)h([Automoun)m(t)
+150 3496 y(Filesystem],)e(page)f(54\).)275 3626 y(The)h(follo)m(wing)i
+(map)e(t)m(yp)s(es)h(ha)m(v)m(e)g(b)s(een)f(implemen)m(ted,)i(though)f
+(some)g(are)g(not)g(a)m(v)-5 b(ailable)35 b(on)d(all)150
+3736 y(mac)m(hines.)68 b(Run)38 b(the)i(command)f(`)p
+Fp(amd)30 b(-v)p Fx(')39 b(to)h(obtain)g(a)f(list)h(of)g(map)f(t)m(yp)s
+(es)g(con\014gured)g(on)g(y)m(our)150 3845 y(mac)m(hine.)150
+4036 y Fm(3.1.1)63 b(File)41 b(maps)150 4183 y Fx(When)36
+b Ft(A)n(md)45 b Fx(searc)m(hes)36 b(a)g(\014le)g(for)g(a)g(map)f(en)m
+(try)h(it)h(do)s(es)e(a)h(simple)g(scan)g(of)g(the)g(\014le)g(and)f
+(supp)s(orts)150 4292 y(b)s(oth)30 b(commen)m(ts)h(and)f(con)m(tin)m
+(uation)i(lines.)275 4422 y(Con)m(tin)m(uation)j(lines)h(are)f
+(indicated)g(b)m(y)g(a)g(bac)m(kslash)h(c)m(haracter)g(\(`)p
+Fp(\\)p Fx('\))g(as)f(the)g(last)g(c)m(haracter)i(of)150
+4532 y(a)42 b(line)f(in)g(the)h(\014le.)73 b(The)41 b(bac)m(kslash,)k
+(newline)c(c)m(haracter)i Ft(and)h(any)f(le)-5 b(ading)44
+b(white)f(sp)-5 b(ac)g(e)44 b(on)g(the)150 4642 y(fol)5
+b(lowing)39 b(line)k Fx(are)36 b(discarded.)57 b(A)36
+b(maxim)m(um)g(line)g(length)g(of)g(2047)i(c)m(haracters)f(is)f
+(enforced)g(after)150 4751 y(con)m(tin)m(uation)g(lines)e(are)g(read)g
+(but)f(b)s(efore)g(commen)m(ts)i(are)f(stripp)s(ed.)50
+b(Eac)m(h)34 b(line)g(m)m(ust)g(end)f(with)h(a)150 4861
+y(newline)27 b(c)m(haracter;)i(that)f(is)e(newlines)h(are)g
+(terminators,)h(not)f(separators.)40 b(The)26 b(follo)m(wing)i
+(examples)150 4970 y(illustrate)k(this:)390 5100 y Fp(key)238
+b(valA)142 b(valB;)g(\\)867 5210 y(valC)275 5340 y Fx(sp)s(eci\014es)30
+b Ft(thr)-5 b(e)g(e)38 b Fx(lo)s(cations,)32 b(and)e(is)g(iden)m(tical)
+i(to)p eop end
+%%Page: 20 22
+TeXDict begin 20 21 bop 150 -116 a Fx(20)1855 b(Am-utils)30
+b(\(4.4BSD)j(Automoun)m(ter)d(Utilities\))390 299 y Fp(key)238
+b(valA)142 b(valB;)g(valC)275 435 y Fx(Ho)m(w)m(ev)m(er,)390
+571 y Fp(key)238 b(valA)142 b(valB;\\)867 681 y(valC)275
+817 y Fx(sp)s(eci\014es)30 b(only)g Ft(two)37 b Fx(lo)s(cations,)32
+b(and)e(is)g(iden)m(tical)j(to)390 953 y Fp(key)238 b(valA)142
+b(valB;valC)275 1089 y Fx(After)34 b(a)g(complete)h(line)f(has)g(b)s
+(een)f(read)g(from)g(the)h(\014le,)h(including)f(con)m(tin)m(uations,)i
+Ft(A)n(md)43 b Fx(deter-)150 1198 y(mines)e(whether)g(there)g(is)h(a)f
+(commen)m(t)i(on)e(the)g(line.)74 b(A)42 b(commen)m(t)g(b)s(egins)f
+(with)g(a)h(hash)e(\(\\`)p Fp(#)p Fx('"\))150 1308 y(c)m(haracter)e
+(and)e(con)m(tin)m(ues)i(to)g(the)f(end)f(of)g(the)h(line.)60
+b(There)37 b(is)f(no)h(w)m(a)m(y)h(to)f(escap)s(e)g(or)g(c)m(hange)h
+(the)150 1417 y(commen)m(t)31 b(lead-in)g(c)m(haracter.)275
+1553 y(Note)39 b(that)g(con)m(tin)m(uation)h(lines)f(and)e(commen)m(t)j
+(supp)s(ort)c Fo(only)46 b Fx(apply)38 b(to)h(\014le)f(maps,)i(or)f
+(ndbm)150 1663 y(maps)30 b(built)g(with)g(the)h Fp(mk-amd-map)c
+Fx(program.)275 1799 y(When)32 b(cac)m(hing)h(is)g(enabled,)g(\014le)f
+(maps)g(ha)m(v)m(e)i(a)f(default)f(cac)m(he)i(mo)s(de)e(of)g
+Fp(all)g Fx(\(see)h(Section)g(5.19)150 1909 y([Automoun)m(t)e
+(Filesystem],)h(page)f(54\).)150 2109 y Fm(3.1.2)63 b(ndbm)41
+b(maps)150 2256 y Fx(An)c(ndbm)g(map)g(ma)m(y)h(b)s(e)g(used)f(as)h(a)g
+(fast)g(access)h(form)f(of)g(a)g(\014le)g(map.)63 b(The)37
+b(program,)j Fp(mk-amd-)150 2366 y(map)p Fx(,)32 b(con)m(v)m(erts)i(a)e
+(normal)h(map)f(\014le)g(in)m(to)h(an)f(ndbm)f(database.)47
+b(This)32 b(program)g(supp)s(orts)e(the)j(same)150 2476
+y(con)m(tin)m(uation)39 b(and)d(commen)m(t)i(con)m(v)m(en)m(tions)h
+(that)e(are)g(pro)m(vided)g(for)g(\014le)f(maps.)60 b(Note)38
+b(that)g(ndbm)150 2585 y(format)22 b(\014les)g(ma)m(y)h
+Ft(not)31 b Fx(b)s(e)21 b(sharable)h(across)h(mac)m(hine)f(arc)m
+(hitectures.)40 b(The)21 b(notion)i(of)f(sp)s(eed)f(generally)150
+2695 y(only)34 b(applies)h(to)g(large)g(maps;)h(a)e(small)h(map,)g
+(less)f(than)g(a)h(single)g(disk)e(blo)s(c)m(k,)j(is)f(almost)g
+(certainly)150 2804 y(b)s(etter)30 b(implemen)m(ted)h(as)g(a)g(\014le)f
+(map.)275 2940 y(ndbm)20 b(maps)i(ha)m(v)m(e)i(a)f(default)f(cac)m(he)i
+(mo)s(de)e(of)h(`)p Fp(all)p Fx(')f(\(see)i(Section)f(5.19)h([Automoun)
+m(t)f(Filesystem],)150 3050 y(page)31 b(54\).)150 3251
+y Fm(3.1.3)63 b(NIS)40 b(maps)150 3398 y Fx(When)c(using)g(NIS)f
+(\(formerly)i(YP\),)f(an)g Ft(A)n(md)46 b Fx(map)36 b(is)g(implemen)m
+(ted)h(directly)g(b)m(y)f(the)g(underlying)150 3507 y(NIS)j(map.)67
+b(Commen)m(ts)40 b(and)e(con)m(tin)m(uation)j(lines)f(are)g
+Ft(not)48 b Fx(supp)s(orted)38 b(in)h(the)g(automoun)m(ter)i(and)150
+3617 y(m)m(ust)30 b(b)s(e)g(stripp)s(ed)f(when)g(constructing)i(the)g
+(NIS)f(serv)m(er's)g(database.)275 3753 y(NIS)h(maps)h(ha)m(v)m(e)h(a)g
+(default)f(cac)m(he)i(mo)s(de)e(of)g Fp(all)f Fx(\(see)i(Section)g
+(5.19)h([Automoun)m(t)f(Filesystem],)150 3862 y(page)e(54\).)275
+3998 y(The)i(follo)m(wing)j(rule)f(illustrates)g(what)f(could)h(b)s(e)f
+(added)f(to)j(y)m(our)e(NIS)g Fp(Makefile)p Fx(,)f(in)i(this)f(case)150
+4108 y(causing)d(the)f Fp(amd.home)e Fx(map)i(to)i(b)s(e)d(rebuilt:)390
+4244 y Fp($\(YPTSDIR\)/amd.home.time)o(:)42 b($\(ETCDIR\)/amd.home)581
+4354 y(-@sed)k(-e)h("s/#.*$$//")e(-e)i("/^$$/d")f($\(ETCDIR\)/amd.home)
+d(|)k(\\)676 4463 y(awk)g('{)95 b(\\)820 4573 y(for)46
+b(\(i)i(=)f(1;)g(i)h(<=)f(NF;)g(i++\))f(\\)1010 4682
+y(if)i(\(i)f(==)g(NF\))g({)g(\\)1010 4792 y(if)h(\(substr\($$i,)c
+(length\($$i\),)h(1\))i(==)g("\\\\"\))f(\\)1201 4902
+y(printf\("\045s",)f(substr\($$i,)g(1,)i(length\($$i\))d(-)k(1\)\);)f
+(\\)1010 5011 y(else)g(\\)1201 5121 y(printf\("\045s\\n",)d($$i\);)j
+(\\)1010 5230 y(})h(\\)1010 5340 y(else)f(\\)p eop end
+%%Page: 21 23
+TeXDict begin 21 22 bop 150 -116 a Fx(Chapter)30 b(3:)41
+b(Moun)m(t)31 b(Maps)2536 b(21)1010 299 y Fp(printf\("\045s)45
+b(",)j($$i\);)e(\\)820 408 y(}')h(|)g(\\)581 518 y($\(MAKEDBM\))e(-)i
+($\(YPDBDIR\)/amd.home;)c(\\)581 628 y(touch)j
+($\(YPTSDIR\)/amd.home.time;)41 b(\\)581 737 y(echo)47
+b("updated)e(amd.home";)g(\\)581 847 y(if)i([)h(!)f($\(NOPUSH\))e(];)i
+(then)g(\\)772 956 y($\(YPPUSH\))e(amd.home;)g(\\)772
+1066 y(echo)h("pushed)g(amd.home";)f(\\)581 1176 y(else)i(\\)772
+1285 y(:)g(;)h(\\)581 1395 y(fi)275 1529 y Fx(Here)20
+b Fp($\(YPTSDIR\))e Fx(con)m(tains)k(the)e(time)h(stamp)f(\014les,)j
+(and)d Fp($\(YPDBDIR\))d Fx(con)m(tains)22 b(the)f(dbm)e(format)150
+1639 y(NIS)30 b(\014les.)150 1838 y Fm(3.1.4)63 b(NIS)p
+Fl(+)41 b Fm(maps)150 1985 y Fx(NIS)p Fp(+)31 b Fx(maps)g(do)g(not)h
+(supp)s(ort)e(cac)m(he)j(mo)s(de)e(`)p Fp(all)p Fx(')g(and,)h(when)e
+(cac)m(hing)j(is)f(enabled,)g(ha)m(v)m(e)h(a)f(default)150
+2095 y(cac)m(he)g(mo)s(de)e(of)g(`)p Fp(inc)p Fx('.)275
+2230 y(XXX:)h(FILL)f(IN)g(WITH)g(AN)h(EXAMPLE.)150 2429
+y Fm(3.1.5)63 b(Hesio)s(d)42 b(maps)150 2576 y Fx(When)32
+b(the)g(map)g(name)g(b)s(egins)g(with)g(the)g(string)h(`)p
+Fp(hesiod.)p Fx(')d(lo)s(okups)i(are)g(made)h(using)e(the)i
+Fo(Hesio)s(d)150 2686 y Fx(name)27 b(serv)m(er.)40 b(The)26
+b(string)g(follo)m(wing)j(the)e(dot)g(is)f(used)g(as)h(a)g(name)g
+(quali\014er)g(and)f(is)h(prep)s(ended)d(with)150 2795
+y(the)32 b(k)m(ey)h(b)s(eing)e(lo)s(cated.)47 b(The)31
+b(en)m(tire)i(string)f(is)g(then)g(resolv)m(ed)g(in)g(the)g
+Fp(automount)d Fx(con)m(text,)35 b(or)d(the)150 2905
+y Ft(amd.c)-5 b(onf)53 b Fx(parameter)32 b(`)p Fp(hesiod_base)p
+Fx(')d(\(see)k(Section)f(6.5.14)i([hesio)s(d)p 2651 2905
+28 4 v 40 w(base)e(P)m(arameter],)i(page)e(64\).)150
+3014 y(F)-8 b(or)34 b(example,)g(if)f(the)g(k)m(ey)h(is)f(`)p
+Fp(jsp)p Fx(')f(and)g(map)h(name)g(is)g(`)p Fp(hesiod.homes)p
+Fx(')d(then)i Fo(Hesio)s(d)37 b Fx(is)c(ask)m(ed)g(to)150
+3124 y(resolv)m(e)f(`)p Fp(jsp.homes.automount)p Fx('.)275
+3259 y(Hesio)s(d)39 b(maps)g(do)g(not)h(supp)s(ort)d(cac)m(he)k(mo)s
+(de)e(`)p Fp(all)p Fx(')g(and,)j(when)c(cac)m(hing)j(is)e(enabled,)j
+(ha)m(v)m(e)f(a)150 3368 y(default)31 b(cac)m(he)h(mo)s(de)d(of)i(`)p
+Fp(inc)p Fx(')f(\(see)h(Section)g(5.19)h([Automoun)m(t)g(Filesystem],)g
+(page)f(54\).)275 3503 y(The)e(follo)m(wing)j(is)f(an)f(example)h(of)g
+(a)f Fo(Hesio)s(d)k Fx(map)c(en)m(try:)390 3638 y Fp
+(jsp.homes.automount)43 b(HS)k(TXT)g("rfs:=/home/charm;rhost)o(:=ch)o
+(arm)o(;sub)o(link)o(:=j)o(sp")390 3747 y(njw.homes.automount)c(HS)k
+(TXT)g("rfs:=/home/dylan/dk2;r)o(host)o(:=d)o(ylan)o(;sub)o(lin)o(k:=n)
+o(jw")p 3970 3767 42 84 v 150 3947 a Fm(3.1.6)63 b(P)m(assw)m(ord)40
+b(maps)150 4094 y Fx(The)30 b(passw)m(ord)h(map)f(supp)s(ort)f(is)i
+(unlik)m(e)h(the)f(four)f(previous)g(map)h(t)m(yp)s(es.)42
+b(When)31 b(the)g(map)g(name)g(is)150 4203 y(the)j(string)f
+Fp(/etc/passwd)e Ft(A)n(md)43 b Fx(can)34 b(lo)s(okup)f(a)h(user)f
+(name)h(in)f(the)h(passw)m(ord)f(\014le)g(and)g(re-arrange)150
+4313 y(the)e(home)f(directory)h(\014eld)f(to)h(pro)s(duce)e(a)i(usable)
+f(map)g(en)m(try)-8 b(.)275 4447 y Ft(A)n(md)44 b Fx(assumes)34
+b(the)h(home)g(directory)g(has)g(the)g(format)g(`)p Fp(/)p
+Ft(anydir)10 b Fp(/)p Ft(dom1)i Fp(/../)p Ft(domN)j Fp(/)p
+Ft(lo)-5 b(gin)7 b Fx('.)57 b(It)150 4557 y(breaks)26
+b(this)g(string)h(in)m(to)g(a)g(map)f(en)m(try)h(where)e
+Fp(${rfs})g Fx(has)h(the)h(v)-5 b(alue)27 b(`)p Fp(/)p
+Ft(anydir)10 b Fp(/)p Ft(domN)15 b Fx(',)28 b Fp(${rhost})150
+4667 y Fx(has)i(the)h(v)-5 b(alue)31 b(`)p Ft(domN)15
+b Fp(.)p Ft(...)p Fp(.)p Ft(dom1)d Fx(',)32 b(and)e Fp(${sublink})e
+Fx(has)i(the)h(v)-5 b(alue)30 b Ft(lo)-5 b(gin)p Fx(.)275
+4801 y(Th)m(us)29 b(if)h(the)h(passw)m(ord)e(\014le)i(en)m(try)g(w)m
+(as)390 4936 y Fp(/home/achilles/jsp)275 5071 y Fx(the)f(map)g(en)m
+(try)h(used)e(b)m(y)i Ft(A)n(md)39 b Fx(w)m(ould)30 b(b)s(e)390
+5205 y Fp(rfs:=/home/achilles;rhos)o(t:=a)o(chil)o(les)o(;sub)o(link)o
+(:=j)o(sp)275 5340 y Fx(Similarly)-8 b(,)31 b(if)f(the)h(passw)m(ord)e
+(\014le)i(en)m(try)f(w)m(as)p eop end
+%%Page: 22 24
+TeXDict begin 22 23 bop 150 -116 a Fx(22)1855 b(Am-utils)30
+b(\(4.4BSD)j(Automoun)m(ter)d(Utilities\))390 299 y Fp
+(/home/cc/sugar/mjh)275 434 y Fx(the)g(map)g(en)m(try)h(used)e(b)m(y)i
+Ft(A)n(md)39 b Fx(w)m(ould)30 b(b)s(e)390 570 y Fp
+(rfs:=/home/sugar;rhost:=)o(suga)o(r.cc)o(;su)o(blin)o(k:=m)o(hj)150
+770 y Fm(3.1.7)63 b(Union)42 b(maps)150 917 y Fx(The)32
+b(union)g(map)g(supp)s(ort)f(is)i(pro)m(vided)f(sp)s(eci\014cally)i
+(for)e(use)g(with)h(the)g(union)e(\014lesystem,)j(see)f(Sec-)150
+1027 y(tion)e(5.21)h([Union)e(Filesystem],)j(page)e(55.)275
+1163 y(It)44 b(is)g(iden)m(ti\014ed)g(b)m(y)f(the)i(string)f(`)p
+Fp(union:)p Fx(')e(whic)m(h)i(is)g(follo)m(w)m(ed)i(b)m(y)d(a)i(colon)g
+(separated)f(list)h(of)150 1272 y(directories.)k(The)33
+b(directories)h(are)f(read)g(in)g(order,)g(and)f(the)i(names)e(of)i
+(all)f(en)m(tries)h(are)f(recorded)g(in)150 1382 y(the)j(map)f(cac)m
+(he.)58 b(Later)36 b(directories)g(tak)m(e)h(precedence)f(o)m(v)m(er)h
+(earlier)g(ones.)56 b(The)35 b(union)g(\014lesystem)150
+1491 y(t)m(yp)s(e)c(then)f(uses)g(the)g(map)g(cac)m(he)i(to)f
+(determine)g(the)f(union)g(of)g(the)h(names)f(in)g(all)h(the)g
+(directories.)150 1692 y Fm(3.1.8)63 b(LD)m(AP)39 b(maps)150
+1839 y Fx(LD)m(AP)26 b(\(Ligh)m(t)m(w)m(eigh)m(t)i(Directory)e(Access)h
+(Proto)s(col\))f(maps)f(do)g(not)g(supp)s(ort)e(cac)m(he)k(mo)s(de)e(`)
+p Fp(all)p Fx(')f(and,)150 1948 y(when)29 b(cac)m(hing)j(is)f(enabled,)
+f(ha)m(v)m(e)i(a)e(default)h(cac)m(he)h(mo)s(de)e(of)g(`)p
+Fp(inc)p Fx('.)275 2084 y(F)-8 b(or)31 b(example,)g(an)f
+Ft(A)n(md)40 b Fx(map)30 b(`)p Fp(amd.home)p Fx(')f(that)i(lo)s(oks)f
+(as)h(follo)m(ws:)390 2219 y Fp(/defaults)188 b
+(opts:=rw,intr;type:=link)390 2439 y(zing)428 b(-rhost:=shekel)44
+b(\\)1010 2548 y(host==shekel)h(\\)1010 2658 y(host!=shekel;type:=nfs)
+150 2793 y Fx(when)24 b(con)m(v)m(erted)i(to)f(LD)m(AP)h(\(see)g
+(Section)f(10.3)h([amd2ldif)7 b(],)27 b(page)f(101\),)h(will)e(result)g
+(in)g(the)f(follo)m(wing)150 2903 y(LD)m(AP)31 b(database:)390
+3039 y Fp($)47 b(amd2ldif)f(amd.home)g(CUCS)g(<)i(amd.home)390
+3148 y(dn:)f(cn=amdmap)e(timestamp,)g(CUCS)390 3258 y(cn)620
+b(:)47 b(amdmap)f(timestamp)390 3367 y(objectClass)188
+b(:)47 b(amdmapTimestamp)390 3477 y(amdmapTimestamp:)c(873071363)390
+3696 y(dn:)k(cn=amdmap)e(amd.home[/defaults],)d(CUCS)390
+3806 y(cn)477 b(:)47 b(amdmap)f(amd.home[/defaults])390
+3915 y(objectClass)f(:)i(amdmap)390 4025 y(amdmapName)93
+b(:)47 b(amd.home)390 4134 y(amdmapKey)141 b(:)47 b(/defaults)390
+4244 y(amdmapValue)e(:)i(opts:=rw,intr;type:=link)390
+4463 y(dn:)g(cn=amdmap)e(amd.home[],)g(CUCS)390 4573
+y(cn)477 b(:)47 b(amdmap)f(amd.home[])390 4682 y(objectClass)f(:)i
+(amdmap)390 4792 y(amdmapName)93 b(:)47 b(amd.home)390
+4902 y(amdmapKey)141 b(:)390 5011 y(amdmapValue)45 b(:)390
+5230 y(dn:)i(cn=amdmap)e(amd.home[zing],)f(CUCS)390 5340
+y(cn)477 b(:)47 b(amdmap)f(amd.home[zing])p eop end
+%%Page: 23 25
+TeXDict begin 23 24 bop 150 -116 a Fx(Chapter)30 b(3:)41
+b(Moun)m(t)31 b(Maps)2536 b(23)390 299 y Fp(objectClass)45
+b(:)i(amdmap)390 408 y(amdmapName)93 b(:)47 b(amd.home)390
+518 y(amdmapKey)141 b(:)47 b(zing)390 628 y(amdmapValue)e(:)i
+(-rhost:=shekel)d(host==shekel)h(host!=shekel;type:=nfs)150
+825 y Fm(3.1.9)63 b(Executable)39 b(maps)150 972 y Fx(An)45
+b(executable)i(map)e(is)h(a)g(dynamic)f(map)g(in)g(whic)m(h)g(the)h(k)m
+(eys)g(and)f(v)-5 b(alues)46 b(for)f(the)h(maps)f(are)150
+1081 y(generated)c(on)g(the)f(\015y)g(b)m(y)g(a)h(program)f(or)h
+(script.)70 b(The)40 b(program)g(is)h(exp)s(ected)f(to)i(tak)m(e)g(a)e
+(single)150 1191 y(parameter)35 b(argumen)m(t)h(whic)m(h)f(is)g(the)g
+(k)m(ey)h(to)f(lo)s(okup.)54 b(If)35 b(the)g(k)m(ey)h(is)f(found,)g
+(the)g(program)g(should)150 1300 y(prin)m(t)25 b(on)g(stdout)h(the)f(k)
+m(ey-v)-5 b(alue)27 b(pair)f(that)g(w)m(ere)g(found;)g(if)f(the)h(k)m
+(ey)g(w)m(as)g(not)f(found,)h(nothing)f(should)150 1410
+y(b)s(e)30 b(prin)m(ted)g(out.)41 b(Belo)m(w)32 b(is)e(an)g(sample)h
+(of)f(suc)m(h)g(a)h(map)f(script:)390 1543 y Fp(#!/bin/sh)390
+1653 y(#)47 b(executable)e(map)i(example)390 1763 y(case)g("$1")f(in)
+581 1872 y("/defaults")f(\))390 1982 y(echo)i("/defaults)140
+b(type:=nfs;rfs:=filer")390 2091 y(;;)581 2201 y("a")47
+b(\))390 2311 y(echo)g("a)142 b(type:=nfs;fs:=/tmp")390
+2420 y(;;)581 2530 y("b")47 b(\))390 2639 y(echo)g("b)142
+b(type:=link;fs:=/usr/local)o(")390 2749 y(;;)581 2859
+y(*)47 b(\))96 b(#)47 b(no)g(match,)f(echo)h(nothing)390
+2968 y(;;)390 3078 y(esac)275 3211 y Fx(See)30 b(Section)h(6.5.10)i
+([exec)p 1216 3211 28 4 v 41 w(map)p 1429 3211 V 40 w(timeout)f(P)m
+(arameter],)g(page)f(63.)150 3441 y Fw(3.2)68 b(Ho)l(w)46
+b(k)l(eys)f(are)h(lo)t(ok)l(ed)f(up)150 3601 y Fx(The)31
+b(k)m(ey)h(is)g(lo)s(cated)h(in)e(the)g(map)h(whose)f(t)m(yp)s(e)h(w)m
+(as)f(determined)h(when)e(the)i(automoun)m(t)g(p)s(oin)m(t)g(w)m(as)150
+3710 y(\014rst)26 b(created.)40 b(In)26 b(general)i(the)f(k)m(ey)g(is)g
+(a)g(pathname)f(comp)s(onen)m(t.)40 b(In)26 b(some)h(circumstances)g
+(this)f(ma)m(y)150 3820 y(b)s(e)38 b(mo)s(di\014ed)g(b)m(y)h(v)-5
+b(ariable)39 b(expansion)g(\(see)h(Section)g(3.3.2)g([V)-8
+b(ariable)41 b(Expansion],)g(page)e(25\))i(and)150 3930
+y(pre\014xing.)57 b(If)35 b(the)h(automoun)m(t)h(p)s(oin)m(t)f(has)g(a)
+g(pre\014x,)h(sp)s(eci\014ed)e(b)m(y)h(the)g Fo(pref)53
+b Fx(option,)38 b(then)d(that)i(is)150 4039 y(prep)s(ended)28
+b(to)j(the)g(searc)m(h)g(k)m(ey)g(b)s(efore)f(the)h(map)f(is)g(searc)m
+(hed.)275 4173 y(If)36 b(the)g(map)g(cac)m(he)i(is)f(a)g(`)p
+Fp(regexp)p Fx(')e(cac)m(he)j(then)e(the)h(k)m(ey)g(is)g(treated)g(as)g
+(an)f(egrep-st)m(yle)j(regular)150 4282 y(expression,)30
+b(otherwise)h(a)g(normal)f(string)h(comparison)f(is)h(made.)275
+4416 y(If)f(the)g(k)m(ey)h(cannot)g(b)s(e)f(found)f(then)i(a)f
+Fo(wildcard)k Fx(matc)m(h)d(is)g(attempted.)42 b Ft(A)n(md)e
+Fx(rep)s(eatedly)31 b(strips)150 4525 y(the)k(basename)g(from)f(the)h
+(k)m(ey)-8 b(,)37 b(app)s(ends)c(`)p Fp(/*)p Fx(')h(and)g(attempts)i(a)
+f(lo)s(okup.)53 b(Finally)-8 b(,)37 b Ft(A)n(md)44 b
+Fx(attempts)150 4635 y(to)31 b(lo)s(cate)h(the)f(sp)s(ecial)g(k)m(ey)g
+(`)p Fp(*)p Fx('.)275 4768 y(F)-8 b(or)41 b(example,)k(the)c(follo)m
+(wing)i(sequence)e(w)m(ould)g(b)s(e)g(c)m(hec)m(k)m(ed)i(if)e
+Fp(home/dylan/dk2)c Fx(w)m(as)k(b)s(eing)150 4878 y(lo)s(cated:)533
+5011 y Fp(home/dylan/dk2)533 5121 y(home/dylan/*)533
+5230 y(home/*)533 5340 y(*)p eop end
+%%Page: 24 26
+TeXDict begin 24 25 bop 150 -116 a Fx(24)1855 b(Am-utils)30
+b(\(4.4BSD)j(Automoun)m(ter)d(Utilities\))275 299 y(A)m(t)36
+b(an)m(y)g(p)s(oin)m(t)g(when)e(a)j(wildcard)e(is)g(found,)h
+Ft(A)n(md)45 b Fx(pro)s(ceeds)36 b(as)g(if)f(an)h(exact)h(matc)m(h)g
+(had)e(b)s(een)150 408 y(found)26 b(and)g(the)h(v)-5
+b(alue)28 b(\014eld)e(is)h(then)g(used)f(to)i(resolv)m(e)h(the)e(moun)m
+(t)g(request,)h(otherwise)f(an)g(error)g(co)s(de)150
+518 y(is)j(propagated)h(bac)m(k)h(to)f(the)f(k)m(ernel.)41
+b(\(see)32 b(Chapter)e(5)g([Filesystem)i(T)m(yp)s(es],)f(page)g(47\).)
+150 758 y Fw(3.3)68 b(Lo)t(cation)46 b(F)-11 b(ormat)150
+917 y Fx(The)35 b(v)-5 b(alue)35 b(\014eld)g(from)g(the)g(lo)s(okup)g
+(pro)m(vides)g(the)g(information)h(required)e(to)i(moun)m(t)f(a)g
+(\014lesystem.)150 1027 y(The)30 b(information)h(is)f(parsed)g
+(according)h(to)g(the)g(syn)m(tax)g(sho)m(wn)e(b)s(elo)m(w.)390
+1166 y Ft(lo)-5 b(c)g(ation-list)9 b Fx(:)935 1276 y
+Ft(lo)-5 b(c)g(ation-sele)g(ction)935 1385 y(lo)g(c)g(ation-list)42
+b(white-sp)-5 b(ac)g(e)39 b Fp(||)29 b Ft(white-sp)-5
+b(ac)g(e)39 b(lo)-5 b(c)g(ation-sele)g(ction)390 1495
+y(lo)g(c)g(ation-sele)g(ction)7 b Fx(:)935 1604 y Ft(lo)-5
+b(c)g(ation)935 1714 y(lo)g(c)g(ation-sele)g(ction)40
+b(white-sp)-5 b(ac)g(e)39 b(lo)-5 b(c)g(ation)390 1824
+y(lo)g(c)g(ation)7 b Fx(:)935 1933 y Ft(lo)-5 b(c)g(ation-info)935
+2043 y Fp(-)p Ft(lo)g(c)g(ation-info)935 2152 y Fp(-)390
+2262 y Ft(lo)g(c)g(ation-info)6 b Fx(:)935 2372 y Ft(sel-or-opt)935
+2481 y(lo)-5 b(c)g(ation-info)6 b Fp(;)p Ft(sel-or-opt)935
+2591 y Fp(;)390 2700 y Ft(sel-or-opt)j Fx(:)935 2810
+y Ft(sele)-5 b(ction)935 2920 y(opt-ass)390 3029 y(sele)g(ction)7
+b Fx(:)935 3139 y(selector)p Fp(==)p Ft(value)935 3248
+y Fx(selector)p Fp(!=)p Ft(value)390 3358 y(opt-ass)g
+Fx(:)935 3468 y(option)p Fp(:=)p Ft(value)390 3577 y(white-sp)-5
+b(ac)g(e)7 b Fx(:)935 3687 y(space)935 3796 y(tab)275
+3936 y(Note)32 b(that)g(unquoted)e(whitespace)i(is)g(not)f(allo)m(w)m
+(ed)i(in)e(a)h(lo)s(cation)h(description.)43 b(White)32
+b(space)g(is)150 4045 y(only)e(allo)m(w)m(ed,)j(and)d(is)g(mandatory)-8
+b(,)31 b(where)f(sho)m(wn)g(with)g(non-terminal)h Ft(white-sp)-5
+b(ac)g(e)p Fx(.)275 4185 y(A)29 b Fo(lo)s(cation-selection)j
+Fx(is)e(a)f(list)h(of)f(p)s(ossible)f(v)m(olumes)i(with)f(whic)m(h)g
+(to)g(satisfy)h(the)f(request.)40 b(Eac)m(h)150 4294
+y Fo(lo)s(cation-selection)30 b Fx(is)c(tried)g(sequen)m(tially)-8
+b(,)29 b(un)m(til)d(either)g(one)g(succeeds)h(or)e(all)i(fail.)40
+b(This,)26 b(b)m(y)g(the)g(w)m(a)m(y)-8 b(,)150 4404
+y(is)34 b(di\013eren)m(t)h(from)e(the)i(historically)g(do)s(cumen)m
+(ted)f(b)s(eha)m(vior,)h(whic)m(h)f(claimed)h(\(falsely)-8
+b(,)37 b(at)e(least)g(for)150 4513 y(last)f(3)g(y)m(ears\))g(that)g
+Ft(A)n(md)43 b Fx(w)m(ould)33 b(attempt)h(to)g(moun)m(t)g(all)g
+Fo(lo)s(cation-selection)p Fx(s)j(in)c(parallel)h(and)f(the)150
+4623 y(\014rst)d(one)g(to)h(succeed)g(w)m(ould)f(b)s(e)g(used.)275
+4762 y Fo(lo)s(cation-selection)p Fx(s)g(are)e(optionally)g(separated)g
+(b)m(y)f(the)g(`)p Fp(||)p Fx(')g(op)s(erator.)40 b(The)26
+b(e\013ect)j(of)e(this)g(op)s(er-)150 4872 y(ator)f(is)g(to)g(prev)m
+(en)m(t)g(use)f(of)h(lo)s(cation-selections)j(to)d(its)g(righ)m(t)g(if)
+f(an)m(y)h(of)g(the)f(lo)s(cation-selections)k(on)d(its)150
+4981 y(left)j(w)m(ere)h(selected,)h(whether)d(or)g(not)h(an)m(y)h(of)e
+(them)h(w)m(ere)g(successfully)g(moun)m(ted)g(\(see)h(Section)f(3.3.3)
+150 5091 y([Selectors],)j(page)f(26\).)275 5230 y(The)f(lo)s
+(cation-selection,)35 b(and)30 b(singleton)i Fo(lo)s(cation-list)p
+Fx(,)h(`)p Fp(type:=ufs;dev:=/dev/xd1g)p Fx(')25 b(w)m(ould)150
+5340 y(inform)30 b Ft(A)n(md)39 b Fx(to)32 b(moun)m(t)e(a)h(UFS)f
+(\014lesystem)h(from)f(the)g(blo)s(c)m(k)h(sp)s(ecial)g(device)g
+Fp(/dev/xd1g)p Fx(.)p eop end
+%%Page: 25 27
+TeXDict begin 25 26 bop 150 -116 a Fx(Chapter)30 b(3:)41
+b(Moun)m(t)31 b(Maps)2536 b(25)275 299 y(The)20 b Fo(sel-or-opt)k
+Fx(comp)s(onen)m(t)e(is)f(either)g(the)g(name)h(of)f(an)g(option)g
+(required)f(b)m(y)h(a)h(sp)s(eci\014c)e(\014lesystem,)150
+408 y(or)31 b(it)g(is)f(the)h(name)g(of)f(a)h(built-in,)g(prede\014ned)
+e(selector)j(suc)m(h)e(as)h(the)g(arc)m(hitecture)h(t)m(yp)s(e.)41
+b(The)30 b(v)-5 b(alue)150 518 y(ma)m(y)45 b(b)s(e)f(quoted)h(with)f
+(double)g(quotes)i(`)p Fp(")p Fx(',)i(for)d(example)g(`)p
+Fp(type:="ufs";dev:="/dev/xd)o(1g")o Fx('.)150 628 y(These)37
+b(quotes)h(are)g(stripp)s(ed)e(when)h(the)g(v)-5 b(alue)38
+b(is)g(parsed)f(and)f(there)i(is)g(no)f(w)m(a)m(y)i(to)f(get)g(a)g
+(double)150 737 y(quote)29 b(in)m(to)g(a)g(v)-5 b(alue)28
+b(\014eld.)40 b(Double)29 b(quotes)g(are)f(used)g(to)h(get)g(white)f
+(space)h(in)m(to)g(a)g(v)-5 b(alue)29 b(\014eld,)f(whic)m(h)150
+847 y(is)i(needed)g(for)h(the)f(program)g(\014lesystem)h(\(see)g
+(Section)g(5.15)h([Program)f(Filesystem],)h(page)g(52\).)150
+1047 y Fm(3.3.1)63 b(Map)41 b(Defaults)150 1194 y Fx(A)e(lo)s(cation)h
+(b)s(eginning)d(with)i(a)g(dash)e(`)p Fp(-)p Fx(')i(is)f(used)g(to)h
+(sp)s(ecify)f(default)h(v)-5 b(alues)39 b(for)f(subsequen)m(t)g(lo-)150
+1304 y(cations.)63 b(An)m(y)37 b(previously)g(sp)s(eci\014ed)g
+(defaults)g(in)g(the)g(lo)s(cation-list)j(are)e(discarded.)61
+b(The)37 b(default)150 1413 y(string)30 b(can)h(b)s(e)f(empt)m(y)h(in)f
+(whic)m(h)g(case)h(no)f(defaults)h(apply)-8 b(.)275 1549
+y(The)28 b(lo)s(cation)i(`)p Fp(-fs:=/mnt;opts:=ro)p
+Fx(')24 b(w)m(ould)29 b(set)g(the)g(lo)s(cal)h(moun)m(t)f(p)s(oin)m(t)f
+(to)i Fp(/mnt)d Fx(and)h(cause)150 1659 y(moun)m(ts)38
+b(to)h(b)s(e)f(read-only)g(b)m(y)h(default.)64 b(Defaults)40
+b(sp)s(eci\014ed)d(this)h(w)m(a)m(y)i(are)e(app)s(ended)f(to,)k(and)d
+(so)150 1768 y(o)m(v)m(erride,)32 b(an)m(y)e(global)i(map)e(defaults)h
+(giv)m(en)g(with)f(`)p Fp(/defaults)p Fx('\).)150 1968
+y Fm(3.3.2)63 b(V)-10 b(ariable)40 b(Expansion)150 2115
+y Fx(T)-8 b(o)31 b(allo)m(w)i(generic)e(lo)s(cation)i(sp)s
+(eci\014cations)e Ft(A)n(md)41 b Fx(do)s(es)30 b(v)-5
+b(ariable)32 b(expansion)e(on)h(eac)m(h)h(lo)s(cation)h(and)150
+2225 y(also)42 b(on)f(some)h(of)f(the)g(option)h(strings.)73
+b(An)m(y)41 b(option)h(or)f(selector)i(app)s(earing)d(in)h(the)g(form)g
+Fp($)p Fk(var)150 2335 y Fx(is)e(replaced)h(b)m(y)g(the)f(curren)m(t)g
+(v)-5 b(alue)40 b(of)g(that)g(option)f(or)h(selector.)69
+b(F)-8 b(or)40 b(example,)j(if)c(the)h(v)-5 b(alue)40
+b(of)150 2444 y Fp(${key})31 b Fx(w)m(as)i(`)p Fp(bin)p
+Fx(',)h Fp(${autodir})c Fx(w)m(as)j(`)p Fp(/a)p Fx(')f(and)h
+Fp(${fs})e Fx(w)m(as)i(`)p Fp(${autodir}/local/${key})p
+Fx(')27 b(then)150 2554 y(after)e(expansion)g Fp(${fs})f
+Fx(w)m(ould)h(ha)m(v)m(e)h(the)f(v)-5 b(alue)25 b(`)p
+Fp(/a/local/bin)p Fx('.)36 b(An)m(y)25 b(en)m(vironmen)m(t)h(v)-5
+b(ariable)26 b(can)150 2663 y(b)s(e)k(accessed)h(in)f(a)h(similar)g(w)m
+(a)m(y)-8 b(.)275 2799 y(Tw)m(o)29 b(pathname)h(op)s(erators)g(are)g(a)
+m(v)-5 b(ailable)32 b(when)c(expanding)h(a)h(v)-5 b(ariable.)42
+b(If)29 b(the)g(v)-5 b(ariable)31 b(name)150 2909 y(b)s(egins)e(with)f
+(`)p Fp(/)p Fx(')h(then)g(only)g(the)h(last)g(comp)s(onen)m(t)f(of)g
+(the)g(pathname)g(is)g(substituted.)40 b(F)-8 b(or)30
+b(example,)150 3018 y(if)38 b Fp(${path})e Fx(w)m(as)i(`)p
+Fp(/foo/bar)p Fx(')e(then)i Fp(${/path})e Fx(w)m(ould)i(b)s(e)f
+(expanded)g(to)i(`)p Fp(bar)p Fx('.)63 b(Similarly)-8
+b(,)41 b(if)d(the)150 3128 y(v)-5 b(ariable)27 b(name)f(ends)f(with)g
+(`)p Fp(/)p Fx(')i(then)e(all)i(but)e(the)h(last)h(comp)s(onen)m(t)f
+(of)g(the)h(pathname)e(is)h(substituted.)150 3237 y(In)k(the)g
+(previous)g(example,)h Fp(${path/})e Fx(w)m(ould)h(b)s(e)f(expanded)h
+(to)h(`)p Fp(/foo)p Fx('.)275 3373 y(Tw)m(o)40 b(domain)f(name)h(op)s
+(erators)g(are)g(also)h(pro)m(vided.)69 b(If)39 b(the)h(v)-5
+b(ariable)41 b(name)f(b)s(egins)f(with)h(`)p Fp(.)p Fx(')150
+3482 y(then)k(only)h(the)f(domain)g(part)g(of)h(the)f(name)h(is)f
+(substituted.)82 b(F)-8 b(or)45 b(example,)k(if)44 b
+Fp(${rhost})f Fx(w)m(as)150 3592 y(`)p Fp(swan.doc.ic.ac.uk)p
+Fx(')33 b(then)38 b Fp(${.rhost})d Fx(w)m(ould)i(b)s(e)g(expanded)f(to)
+j(`)p Fp(doc.ic.ac.uk)p Fx('.)59 b(Similarly)-8 b(,)150
+3702 y(if)40 b(the)g(v)-5 b(ariable)41 b(name)f(ends)g(with)g(`)p
+Fp(.)p Fx(')g(then)g(only)g(the)g(host)g(comp)s(onen)m(t)h(is)f
+(substituted.)69 b(In)40 b(the)150 3811 y(previous)30
+b(example,)h Fp(${rhost.})d Fx(w)m(ould)i(b)s(e)g(expanded)f(to)j(`)p
+Fp(swan)p Fx('.)275 3947 y(V)-8 b(ariable)32 b(expansion)f(is)h(a)f(t)m
+(w)m(o)i(phase)e(pro)s(cess.)43 b(Before)32 b(a)f(lo)s(cation)i(is)f
+(parsed,)f(all)h(references)f(to)150 4056 y(selectors,)k
+Ft(e)-5 b(g)40 b Fp(${path})p Fx(,)31 b(are)i(expanded.)47
+b(The)31 b(lo)s(cation)k(is)d(then)g(parsed,)h(selections)h(are)f(ev)-5
+b(aluated)150 4166 y(and)42 b(option)g(assignmen)m(ts)h(recorded.)77
+b(If)42 b(there)g(w)m(ere)h(no)f(selections)i(or)e(they)h(all)g
+(succeeded)g(the)150 4276 y(lo)s(cation)38 b(is)f(used)f(and)h(the)g(v)
+-5 b(alues)37 b(of)g(the)g(follo)m(wing)h(options)f(are)h(expanded)e
+(in)g(the)h(order)g(giv)m(en:)150 4385 y Fo(sublink)p
+Fx(,)29 b Fo(rfs)p Fx(,)h Fo(fs)p Fx(,)g Fo(opts)p Fx(,)h
+Fo(remopts)p Fx(,)g Fo(moun)m(t)h Fx(and)e Fo(unmoun)m(t)p
+Fx(.)275 4521 y(Note)h(that)f(expansion)g(of)g(option)g(v)-5
+b(alues)31 b(is)f(done)f(after)i Fo(all)j Fx(assignmen)m(ts)d(ha)m(v)m
+(e)g(b)s(een)e(completed)150 4630 y(and)d(not)h(in)g(a)g(purely)f(left)
+h(to)h(righ)m(t)f(order)f(as)h(is)g(done)g(b)m(y)f(the)h(shell.)40
+b(This)26 b(generally)i(has)f(the)f(desired)150 4740
+y(e\013ect)39 b(but)e(care)h(m)m(ust)f(b)s(e)g(tak)m(en)i(if)e(one)h
+(of)f(the)h(options)g(references)f(another,)j(in)d(whic)m(h)g(case)i
+(the)150 4850 y(ordering)30 b(can)h(b)s(ecome)g(signi\014can)m(t.)275
+4985 y(There)e(are)i(t)m(w)m(o)h(sp)s(ecial)f(cases)g(concerning)g(v)-5
+b(ariable)31 b(expansion:)199 5121 y(1.)61 b(b)s(efore)44
+b(a)g(map)g(is)g(consulted,)k(an)m(y)d(selectors)h(in)e(the)g(name)g
+(receiv)m(ed)i(from)d(the)i(k)m(ernel)g(are)330 5230
+y(expanded.)e(F)-8 b(or)32 b(example,)h(if)e(the)g(request)h(from)f
+(the)g(k)m(ernel)h(w)m(as)g(for)f(`)p Fp(${arch}.bin)p
+Fx(')e(and)i(the)330 5340 y(mac)m(hine)g(arc)m(hitecture)h(w)m(as)f(`)p
+Fp(vax)p Fx(',)f(the)h(v)-5 b(alue)30 b(giv)m(en)i(to)f
+Fp(${key})e Fx(w)m(ould)h(b)s(e)g(`)p Fp(vax.bin)p Fx('.)p
+eop end
+%%Page: 26 28
+TeXDict begin 26 27 bop 150 -116 a Fx(26)1855 b(Am-utils)30
+b(\(4.4BSD)j(Automoun)m(ter)d(Utilities\))199 299 y(2.)61
+b(the)53 b(v)-5 b(alue)53 b(of)f Fp(${rhost})f Fx(is)h(expanded)g(and)g
+(normalized)h(b)s(efore)f(the)h(other)g(options)g(are)330
+408 y(expanded.)123 b(The)58 b(normalization)h(pro)s(cess)f(strips)g
+(an)m(y)g(lo)s(cal)h(sub-domain)f(comp)s(onen)m(ts.)330
+518 y(F)-8 b(or)78 b(example,)90 b(if)78 b Fp(${domain})c
+Fx(w)m(as)k(`)p Fp(Berkeley.EDU)p Fx(')d(and)i Fp(${rhost})e
+Fx(w)m(as)i(initially)330 628 y(`)p Fp(snow.Berkeley.EDU)p
+Fx(',)35 b(after)j(the)g(normalization)h(it)f(w)m(ould)g(simply)f(b)s
+(e)g(`)p Fp(snow)p Fx('.)61 b(Hostname)330 737 y(normalization)32
+b(is)e(curren)m(tly)h(done)f(in)g(a)h Ft(c)-5 b(ase-dep)g(endent)41
+b Fx(manner.)150 925 y Fm(3.3.3)63 b(Selectors)150 1072
+y Fx(Selectors)32 b(are)f(used)e(to)i(con)m(trol)h(the)f(use)f(of)h(a)g
+(lo)s(cation.)42 b(It)31 b(is)f(p)s(ossible)g(to)i(share)e(a)h(moun)m
+(t)f(map)g(b)s(e-)150 1181 y(t)m(w)m(een)24 b(man)m(y)g(mac)m(hines)g
+(in)f(suc)m(h)g(a)g(w)m(a)m(y)i(that)e(\014lesystem)h(lo)s(cation,)j
+(arc)m(hitecture)e(and)d(op)s(erating)i(sys-)150 1291
+y(tem)h(di\013erences)g(are)g(hidden)e(from)i(the)f(users.)38
+b(A)25 b(selector)h(of)f(the)g(form)f(`)p Fp(arch==sun3;os==sunos4)p
+Fx(')150 1400 y(w)m(ould)30 b(only)h(apply)f(on)g(Sun-3s)f(running)g
+(SunOS)f(4.x.)275 1529 y(Selectors)33 b(can)f(b)s(e)f(negated)j(b)m(y)d
+(using)h(`)p Fp(!=)p Fx(')g(instead)g(of)g(`)p Fp(==)p
+Fx('.)46 b(F)-8 b(or)33 b(example)g(to)f(select)i(a)e(lo)s(cation)150
+1639 y(on)e(all)i(non-V)-8 b(ax)31 b(mac)m(hines)g(the)f(selector)i(`)p
+Fp(arch!=vax)p Fx(')d(w)m(ould)h(b)s(e)f(used.)275 1767
+y(Selectors)d(are)f(ev)-5 b(aluated)26 b(left)g(to)g(righ)m(t.)39
+b(If)25 b(a)g(selector)i(fails)e(then)g(that)g(lo)s(cation)i(is)e
+(ignored.)39 b(Th)m(us)150 1877 y(the)34 b(selectors)i(form)e(a)g
+(conjunction)h(and)e(the)i(lo)s(cations)g(form)f(a)h(disjunction.)51
+b(If)34 b(all)h(the)f(lo)s(cations)150 1986 y(are)j(ignored)h(or)f
+(otherwise)g(fail)h(then)e Ft(A)n(md)47 b Fx(uses)36
+b(the)i Fo(error)43 b Fx(\014lesystem)37 b(\(see)h(Section)g(5.22)h
+([Error)150 2096 y(Filesystem],)34 b(page)e(56\).)45
+b(This)31 b(is)h(equiv)-5 b(alen)m(t)33 b(to)f(ha)m(ving)g(a)g(lo)s
+(cation)h(`)p Fp(type:=error)p Fx(')c(at)j(the)g(end)f(of)150
+2205 y(eac)m(h)h(moun)m(t-map)e(en)m(try)-8 b(.)275 2334
+y(The)40 b(default)h(v)-5 b(alue)41 b(of)g(man)m(y)g(of)g(the)g
+(selectors)h(listed)f(here)g(can)g(b)s(e)f(o)m(v)m(erridden)h(b)m(y)f
+(an)h Ft(A)n(md)150 2444 y Fx(command)33 b(line)h(switc)m(h)g(or)f(in)g
+(an)g Ft(A)n(md)43 b Fx(con\014guration)34 b(\014le.)49
+b(See)34 b(Chapter)f(6)g([Amd)g(Con\014guration)150 2553
+y(File],)f(page)f(59.)275 2682 y(The)e(follo)m(wing)j(selectors)g(are)f
+(curren)m(tly)f(implemen)m(ted.)150 2869 y Fm(3.3.3.1)63
+b(arc)m(h)40 b(Selector)h(V)-10 b(ariable)150 3016 y
+Fx(The)36 b(mac)m(hine)i(arc)m(hitecture)h(whic)m(h)d(w)m(as)i
+(automatically)i(determined)c(at)i(compile)g(time.)61
+b(The)37 b(ar-)150 3126 y(c)m(hitecture)c(t)m(yp)s(e)f(can)g(b)s(e)f
+(displa)m(y)m(ed)h(b)m(y)g(running)d(the)j(command)g(`)p
+Fp(amd)d(-v)p Fx('.)44 b(Y)-8 b(ou)32 b(can)g(o)m(v)m(erride)h(this)150
+3235 y(v)-5 b(alue)23 b(also)h(using)f(the)g Fp(-A)f
+Fx(command)h(line)g(option.)39 b(See)23 b(Chapter)g(2)g([Supp)s(orted)e
+(Platforms],)k(page)f(17.)150 3423 y Fm(3.3.3.2)63 b(auto)s(dir)42
+b(Selector)f(V)-10 b(ariable)150 3570 y Fx(The)34 b(default)g
+(directory)h(under)d(whic)m(h)i(to)h(moun)m(t)f(\014lesystems.)52
+b(This)33 b(ma)m(y)i(b)s(e)e(c)m(hanged)i(b)m(y)f(the)h
+Fp(-a)150 3679 y Fx(command)30 b(line)h(option.)41 b(See)31
+b(Section)g(3.3.4.3)i([fs)d(Option],)g(page)i(31.)150
+3867 y Fm(3.3.3.3)63 b(b)m(yte)40 b(Selector)h(V)-10
+b(ariable)150 4014 y Fx(The)42 b(mac)m(hine's)h(b)m(yte)g(ordering.)76
+b(This)41 b(is)i(either)f(`)p Fp(little)p Fx(',)i(indicating)g
+(little-endian,)j(or)42 b(`)p Fp(big)p Fx(',)150 4123
+y(indicating)28 b(big-endian.)40 b(One)27 b(p)s(ossible)g(use)g(is)g
+(to)h(share)f(`)p Fp(rwho)p Fx(')g(databases)h(\(see)g(Section)h(11.5)g
+([rwho)150 4233 y(serv)m(ers],)d(page)f(110\).)40 b(Another)24
+b(is)g(to)g(share)g(ndbm)e(databases,)27 b(ho)m(w)m(ev)m(er)e(this)f
+(use)g(can)g(b)s(e)f(considered)150 4342 y(a)31 b(courageous)g
+(juggling)g(act.)150 4530 y Fm(3.3.3.4)63 b(cluster)41
+b(Selector)g(V)-10 b(ariable)150 4677 y Fx(This)35 b(is)h(pro)m(vided)g
+(as)g(a)g(ho)s(ok)g(for)g(the)g(name)g(of)g(the)g(lo)s(cal)h(cluster.)
+58 b(This)35 b(can)h(b)s(e)g(used)f(to)i(decide)150 4786
+y(whic)m(h)32 b(serv)m(ers)h(to)g(use)f(for)h(copies)g(of)f(replicated)
+i(\014lesystems.)47 b Fp(${cluster})30 b Fx(defaults)j(to)g(the)f(v)-5
+b(alue)150 4896 y(of)31 b Fp(${domain})c Fx(unless)j(a)h(di\013eren)m
+(t)g(v)-5 b(alue)31 b(is)f(set)h(with)f(the)g Fp(-C)g
+Fx(command)g(line)h(option.)150 5083 y Fm(3.3.3.5)63
+b(domain)42 b(Selector)f(V)-10 b(ariable)150 5230 y Fx(The)36
+b(lo)s(cal)j(domain)d(name)h(as)g(sp)s(eci\014ed)g(b)m(y)f(the)i
+Fp(-d)e Fx(command)h(line)g(option.)61 b(See)37 b(Section)g(3.3.3.7)150
+5340 y([host)31 b(Selector)g(V)-8 b(ariable],)33 b(page)e(27.)p
+eop end
+%%Page: 27 29
+TeXDict begin 27 28 bop 150 -116 a Fx(Chapter)30 b(3:)41
+b(Moun)m(t)31 b(Maps)2536 b(27)150 299 y Fm(3.3.3.6)63
+b(dollar)42 b(Selector)e(V)-10 b(ariable)150 446 y Fx(This)28
+b(is)h(a)g(sp)s(ecial)h(v)-5 b(ariable,)30 b(whose)f(sole)h(purp)s(ose)
+d(is)i(to)h(pro)s(duce)e(a)h(literal)h(dollar)g(sign)f(in)f(the)h(v)-5
+b(alue)150 555 y(of)26 b(another)g(v)-5 b(ariable.)40
+b(F)-8 b(or)27 b(example,)h(if)e(y)m(ou)g(ha)m(v)m(e)i(a)e(remote)h
+(\014le)f(system)g(whose)g(name)g(is)g(`)p Fp(/disk$s)p
+Fx(',)150 665 y(y)m(ou)31 b(can)f(moun)m(t)h(it)g(b)m(y)f(setting)h
+(the)g(remote)g(\014le)g(system)f(v)-5 b(ariable)31 b(as)g(follo)m(ws:)
+390 831 y Fp(rfs:=/disk${dollar}s)150 1062 y Fm(3.3.3.7)63
+b(host)42 b(Selector)f(V)-10 b(ariable)150 1209 y Fx(The)27
+b(lo)s(cal)j(hostname)e(as)g(determined)g(b)m(y)g Fn(gethostname)p
+Fx(\(2\).)42 b(If)28 b(no)g(domain)f(name)h(w)m(as)h(sp)s(eci\014ed)e
+(on)150 1319 y(the)h(command)g(line)h(and)e(the)i(hostname)f(con)m
+(tains)h(a)g(p)s(erio)s(d)e(`)p Fp(.)p Fx(')h(then)g(the)g(string)g(b)s
+(efore)g(the)g(p)s(erio)s(d)150 1428 y(is)38 b(used)e(as)i(the)g(host)g
+(name,)h(and)e(the)h(string)g(after)g(the)f(p)s(erio)s(d)g(is)g
+(assigned)h(to)g Fp(${domain})p Fx(.)60 b(F)-8 b(or)150
+1538 y(example,)35 b(if)e(the)g(hostname)g(is)h(`)p Fp
+(styx.doc.ic.ac.uk)p Fx(')29 b(then)j Fp(host)g Fx(w)m(ould)h(b)s(e)g
+(`)p Fp(styx)p Fx(')f(and)h Fp(domain)150 1648 y Fx(w)m(ould)d(b)s(e)g
+(`)p Fp(doc.ic.ac.uk)p Fx('.)38 b Fp(hostd)29 b Fx(w)m(ould)h(b)s(e)g
+(`)p Fp(styx.doc.ic.ac.uk)p Fx('.)150 1879 y Fm(3.3.3.8)63
+b(hostd)42 b(Selector)f(V)-10 b(ariable)150 2026 y Fx(This)24
+b(resolv)m(es)i(to)g(the)f Fp(${host})e Fx(and)i Fp(${domain})d
+Fx(concatenated)27 b(with)e(a)g(`)p Fp(.)p Fx(')h(inserted)e(b)s(et)m
+(w)m(een)i(them)150 2135 y(if)k(required.)40 b(If)30
+b Fp(${domain})e Fx(is)i(an)h(empt)m(y)f(string)h(then)f
+Fp(${host})e Fx(and)i Fp(${hostd})e Fx(will)j(b)s(e)f(iden)m(tical.)150
+2366 y Fm(3.3.3.9)63 b(k)-7 b(arc)m(h)40 b(Selector)h(V)-10
+b(ariable)150 2513 y Fx(This)27 b(is)g(pro)m(vided)h(as)f(a)h(ho)s(ok)g
+(for)f(the)h(k)m(ernel)g(arc)m(hitecture.)41 b(This)27
+b(is)h(used)f(on)g(SunOS)e(4)j(and)f(SunOS)150 2623 y(5,)32
+b(for)g(example,)h(to)f(distinguish)f(b)s(et)m(w)m(een)h(di\013eren)m
+(t)g(`)p Fp(/usr/kvm)p Fx(')e(v)m(olumes.)44 b Fp(${karch})30
+b Fx(defaults)h(to)150 2732 y(the)k(\\mac)m(hine")i(v)-5
+b(alue)36 b(gotten)g(from)f Fn(uname)p Fx(\(2\).)55 b(If)35
+b(the)g Fn(uname)p Fx(\(2\))h(system)f(call)i(is)e(not)g(a)m(v)-5
+b(ailable,)150 2842 y(the)26 b(v)-5 b(alue)27 b(of)f
+Fp(${karch})e Fx(defaults)i(to)h(that)f(of)h Fp(${arch})p
+Fx(.)37 b(Finally)-8 b(,)28 b(a)f(di\013eren)m(t)f(v)-5
+b(alue)27 b(can)f(b)s(e)g(set)g(with)150 2951 y(the)31
+b Fp(-k)e Fx(command)h(line)h(option.)150 3182 y Fm(3.3.3.10)63
+b(os)42 b(Selector)f(V)-10 b(ariable)150 3329 y Fx(The)32
+b(op)s(erating)i(system.)48 b(Lik)m(e)34 b(the)f(mac)m(hine)g(arc)m
+(hitecture,)i(this)e(is)g(automatically)j(determined)c(at)150
+3439 y(compile)f(time.)41 b(The)30 b(op)s(erating)g(system)g(name)g
+(can)h(b)s(e)e(displa)m(y)m(ed)i(b)m(y)e(running)g(the)h(command)g(`)p
+Fp(amd)150 3549 y(-v)p Fx('.)40 b(See)31 b(Chapter)f(2)h([Supp)s(orted)
+d(Platforms],)j(page)g(17.)150 3780 y Fm(3.3.3.11)63
+b(osv)m(er)42 b(Selector)f(V)-10 b(ariable)150 3927 y
+Fx(The)42 b(op)s(erating)h(system)f(v)m(ersion.)77 b(Lik)m(e)43
+b(the)g(mac)m(hine)g(arc)m(hitecture,)k(this)42 b(is)h(automatically)i
+(de-)150 4036 y(termined)38 b(at)g(compile)h(time.)64
+b(The)38 b(op)s(erating)g(system)g(name)g(can)g(b)s(e)f(displa)m(y)m
+(ed)i(b)m(y)f(running)e(the)150 4146 y(command)30 b(`)p
+Fp(amd)g(-v)p Fx('.)40 b(See)31 b(Chapter)f(2)g([Supp)s(orted)f
+(Platforms],)i(page)g(17.)150 4377 y Fm(3.3.3.12)63 b(full)p
+802 4377 37 5 v 55 w(os)42 b(Selector)f(V)-10 b(ariable)150
+4524 y Fx(The)35 b(full)g(name)g(of)h(the)f(op)s(erating)h(system,)h
+(including)e(its)h(v)m(ersion.)56 b(This)35 b(v)-5 b(alue)36
+b(is)f(automatically)150 4633 y(determined)30 b(at)h(compile)g(time.)42
+b(The)29 b(full)h(op)s(erating)h(system)f(name)h(and)e(v)m(ersion)i
+(can)g(b)s(e)e(displa)m(y)m(ed)150 4743 y(b)m(y)h(running)f(the)h
+(command)h(`)p Fp(amd)e(-v)p Fx('.)41 b(See)30 b(Chapter)g(2)h([Supp)s
+(orted)d(Platforms],)j(page)h(17.)150 4974 y Fm(3.3.3.13)63
+b(v)m(endor)42 b(Selector)f(V)-10 b(ariable)150 5121
+y Fx(The)34 b(name)g(of)g(the)h(v)m(endor)f(of)g(the)g(op)s(erating)h
+(system.)52 b(This)33 b(v)-5 b(alue)35 b(is)f(automatically)j
+(determined)150 5230 y(at)c(compile)g(time.)48 b(The)32
+b(name)g(of)h(the)f(v)m(endor)h(can)f(b)s(e)g(displa)m(y)m(ed)h(b)m(y)f
+(running)f(the)h(command)h(`)p Fp(amd)150 5340 y(-v)p
+Fx('.)40 b(See)31 b(Chapter)f(2)h([Supp)s(orted)d(Platforms],)j(page)g
+(17.)p eop end
+%%Page: 28 30
+TeXDict begin 28 29 bop 150 -116 a Fx(28)1855 b(Am-utils)30
+b(\(4.4BSD)j(Automoun)m(ter)d(Utilities\))275 299 y(The)g(follo)m(wing)
+i(selectors)g(are)g(also)f(pro)m(vided.)42 b(Unlik)m(e)32
+b(the)f(other)g(selectors,)i(they)d(v)-5 b(ary)31 b(for)g(eac)m(h)150
+408 y(lo)s(okup.)39 b(Note)28 b(that)f(when)e(the)h(name)h(from)f(the)g
+(k)m(ernel)h(is)f(expanded)g(prior)g(to)h(a)f(map)g(lo)s(okup,)h(these)
+150 518 y(selectors)32 b(are)f(all)g(de\014ned)e(as)i(empt)m(y)f
+(strings.)150 710 y Fm(3.3.3.14)63 b(k)m(ey)40 b(Selector)h(V)-10
+b(ariable)150 856 y Fx(The)39 b(name)g(b)s(eing)f(resolv)m(ed.)68
+b(F)-8 b(or)40 b(example,)i(if)d Fp(/home)f Fx(is)h(an)g(automoun)m(t)h
+(p)s(oin)m(t,)i(then)c(accessing)150 966 y Fp(/home/foo)25
+b Fx(w)m(ould)j(set)h Fp(${key})d Fx(to)j(the)f(string)g(`)p
+Fp(foo)p Fx('.)39 b(The)28 b(k)m(ey)g(is)g(pre\014xed)f(b)m(y)h(the)g
+Fo(pref)45 b Fx(option)28 b(set)150 1076 y(in)k(the)h(paren)m(t)f(moun)
+m(t)h(p)s(oin)m(t.)47 b(The)31 b(default)i(pre\014x)e(is)i(an)f(empt)m
+(y)h(string.)47 b(If)32 b(the)g(pre\014x)g(w)m(as)g Fp(blah/)150
+1185 y Fx(then)e Fp(${key})f Fx(w)m(ould)h(b)s(e)g(set)h(to)g
+Fp(blah/foo)p Fx(.)150 1377 y Fm(3.3.3.15)63 b(map)41
+b(Selector)g(V)-10 b(ariable)150 1524 y Fx(The)30 b(name)g(of)h(the)f
+(moun)m(t)h(map)f(b)s(eing)g(used.)150 1715 y Fm(3.3.3.16)63
+b(netn)m(um)m(b)s(er)42 b(Selector)f(V)-10 b(ariable)150
+1862 y Fx(This)56 b(selector)j(is)e(iden)m(tical)i(to)f(the)g(`)p
+Fp(in_network)p Fx(')d(selector)j(function,)64 b(see)58
+b(Section)g(3.3.3.26)150 1972 y([in)p 257 1972 28 4 v
+40 w(net)m(w)m(ork)36 b(Selector)h(F)-8 b(unction],)37
+b(page)f(30.)57 b(It)35 b(will)h(matc)m(h)g(either)g(the)f(name)h(or)f
+(n)m(um)m(b)s(er)f(of)h Ft(any)150 2081 y Fx(net)m(w)m(ork)47
+b(in)m(terface)h(on)e(whic)m(h)g(this)g(host)g(is)g(connected)i(to.)89
+b(The)45 b(names)h(and)g(n)m(um)m(b)s(ers)f(of)h(all)150
+2191 y(attac)m(hed)32 b(in)m(terfaces)g(are)f(a)m(v)-5
+b(ailable)33 b(from)c(the)i(output)f(of)g(`)p Fp(amd)g(-v)p
+Fx('.)150 2382 y Fm(3.3.3.17)63 b(net)m(w)m(ork)40 b(Selector)h(V)-10
+b(ariable)150 2529 y Fx(This)56 b(selector)j(is)e(iden)m(tical)i(to)f
+(the)g(`)p Fp(in_network)p Fx(')d(selector)j(function,)64
+b(see)58 b(Section)g(3.3.3.26)150 2639 y([in)p 257 2639
+V 40 w(net)m(w)m(ork)36 b(Selector)h(F)-8 b(unction],)37
+b(page)f(30.)57 b(It)35 b(will)h(matc)m(h)g(either)g(the)f(name)h(or)f
+(n)m(um)m(b)s(er)f(of)h Ft(any)150 2748 y Fx(net)m(w)m(ork)47
+b(in)m(terface)h(on)e(whic)m(h)g(this)g(host)g(is)g(connected)i(to.)89
+b(The)45 b(names)h(and)g(n)m(um)m(b)s(ers)f(of)h(all)150
+2858 y(attac)m(hed)32 b(in)m(terfaces)g(are)f(a)m(v)-5
+b(ailable)33 b(from)c(the)i(output)f(of)g(`)p Fp(amd)g(-v)p
+Fx('.)150 3050 y Fm(3.3.3.18)63 b(path)41 b(Selector)g(V)-10
+b(ariable)150 3196 y Fx(The)39 b(full)f(pathname)h(of)g(the)h(name)f(b)
+s(eing)f(resolv)m(ed.)68 b(F)-8 b(or)40 b(example)g Fp(/home/foo)c
+Fx(in)j(the)g(example)150 3306 y(ab)s(o)m(v)m(e.)150
+3498 y Fm(3.3.3.19)63 b(wire)41 b(Selector)g(V)-10 b(ariable)150
+3644 y Fx(This)56 b(selector)j(is)e(iden)m(tical)i(to)f(the)g(`)p
+Fp(in_network)p Fx(')d(selector)j(function,)64 b(see)58
+b(Section)g(3.3.3.26)150 3754 y([in)p 257 3754 V 40 w(net)m(w)m(ork)36
+b(Selector)h(F)-8 b(unction],)37 b(page)f(30.)57 b(It)35
+b(will)h(matc)m(h)g(either)g(the)f(name)h(or)f(n)m(um)m(b)s(er)f(of)h
+Ft(any)150 3864 y Fx(net)m(w)m(ork)47 b(in)m(terface)h(on)e(whic)m(h)g
+(this)g(host)g(is)g(connected)i(to.)89 b(The)45 b(names)h(and)g(n)m(um)
+m(b)s(ers)f(of)h(all)150 3973 y(attac)m(hed)32 b(in)m(terfaces)g(are)f
+(a)m(v)-5 b(ailable)33 b(from)c(the)i(output)f(of)g(`)p
+Fp(amd)g(-v)p Fx('.)150 4165 y Fm(3.3.3.20)63 b(uid)42
+b(Selector)f(V)-10 b(ariable)150 4312 y Fx(This)24 b(selector)i(pro)m
+(vides)f(the)f(n)m(umeric)h(e\013ectiv)m(e)i(user)d(ID)h(\(UID\))g(of)g
+(the)g(user)f(whic)m(h)g(last)h(accessed)h(an)150 4421
+y(automoun)m(ted)i(path)e(name.)40 b(This)26 b(simple)h(example)g(sho)m
+(ws)g(ho)m(w)g(\015opp)m(y)f(moun)m(ting)h(can)g(b)s(e)g(assigned)150
+4531 y(only)j(to)i(mac)m(hine)f(o)m(wners:)390 4661 y
+Fp(floppy)94 b(-type:=pcfs)45 b(\\)772 4771 y(uid==2301;host==shekel;d)
+o(ev:)o(=/de)o(v/fl)o(opp)o(y)d(\\)772 4881 y(uid==6712;host==titan;de)
+o(v=/)o(dev/)o(fd0)f(\\)772 4990 y(uid==0;dev:=/dev/fd0c)h(\\)772
+5100 y(type:=error)275 5230 y Fx(The)27 b(example)i(allo)m(ws)h(t)m(w)m
+(o)f(mac)m(hine)g(o)m(wners)g(to)g(moun)m(t)f(\015oppies)f(on)i(their)f
+(designated)h(w)m(orksta-)150 5340 y(tions,)i(allo)m(ws)h(the)e(ro)s
+(ot)h(user)f(to)h(moun)m(t)f(on)g(an)m(y)h(host,)g(and)f(otherwise)g
+(forces)h(an)f(error.)p eop end
+%%Page: 29 31
+TeXDict begin 29 30 bop 150 -116 a Fx(Chapter)30 b(3:)41
+b(Moun)m(t)31 b(Maps)2536 b(29)150 299 y Fm(3.3.3.21)63
+b(gid)42 b(Selector)f(V)-10 b(ariable)150 446 y Fx(This)27
+b(selector)j(pro)m(vides)f(the)f(n)m(umeric)g(e\013ectiv)m(e)j(group)d
+(ID)g(\(GID\))i(of)e(the)h(user)f(whic)m(h)g(last)h(accessed)150
+555 y(an)h(automoun)m(ted)h(path)f(name.)275 908 y(The)23
+b(follo)m(wing)j(b)s(o)s(olean)e(functions)g(are)h(selectors)h(whic)m
+(h)e(tak)m(e)i(an)e(argumen)m(t)h Ft(AR)n(G)p Fx(.)f(They)g(return)150
+1018 y(a)33 b(v)-5 b(alue)32 b(of)h(true)f(or)g(false,)i(and)e(th)m(us)
+g(do)g(not)g(need)g(to)h(b)s(e)f(compared)g(with)g(a)h(v)-5
+b(alue.)47 b(Eac)m(h)33 b(of)f(these)150 1127 y(ma)m(y)f(b)s(e)f
+(negated)h(b)m(y)f(prep)s(ending)f(`)p Fp(!)p Fx(')h(to)h(their)g
+(name.)150 1325 y Fm(3.3.3.22)63 b(exists)42 b(Selector)f(F)-10
+b(unction)150 1472 y Fx(If)31 b(the)h(\014le)g(listed)g(b)m(y)g
+Ft(AR)n(G)39 b Fx(exists)33 b(\(via)g Fn(lstat)p Fx(\(2\)\),)i(this)c
+(function)h(ev)-5 b(aluates)33 b(to)f(true.)45 b(Otherwise)31
+b(it)150 1581 y(ev)-5 b(aluates)32 b(to)f(false.)150
+1779 y Fm(3.3.3.23)63 b(false)42 b(Selector)f(F)-10 b(unction)150
+1925 y Fx(Alw)m(a)m(ys)32 b(ev)-5 b(aluates)32 b(to)f(false.)41
+b Ft(AR)n(G)d Fx(is)31 b(ignored.)150 2123 y Fm(3.3.3.24)63
+b(netgrp)42 b(Selector)f(F)-10 b(unction)150 2270 y Fx(The)37
+b(argumen)m(t)h Ft(AR)n(G)45 b Fx(of)38 b(this)f(selector)j(is)d(a)h
+(netgroup)f(name)h(follo)m(w)m(ed)h(optionally)g(b)m(y)e(a)h(comma)150
+2379 y(and)g(a)i(host)f(name.)66 b(If)39 b(the)g(host)g(name)g(is)g
+(not)g(sp)s(eci\014ed,)i(it)e(defaults)g(to)h Fp(${host})p
+Fx(.)64 b(If)39 b(the)g(host)150 2489 y(name)30 b(\(short)f(name\))h
+(is)g(a)g(mem)m(b)s(er)f(of)g(the)h(netgroup,)g(this)f(selector)j(ev)-5
+b(aluates)31 b(to)f(true.)40 b(Otherwise)150 2599 y(it)31
+b(ev)-5 b(aluates)32 b(to)f(false.)275 2732 y(F)-8 b(or)27
+b(example,)h(supp)s(ose)e(y)m(ou)h(ha)m(v)m(e)h(a)f(netgroup)f(`)p
+Fp(ppp-hosts)p Fx(',)g(and)g(for)h(reasons)f(of)h(p)s(erformance,)150
+2842 y(these)33 b(ha)m(v)m(e)g(a)f(lo)s(cal)i Fp(/home)d
+Fx(partition,)i(while)f(all)h(other)g(clien)m(ts)g(on)f(the)h(faster)f
+(net)m(w)m(ork)h(can)g(access)150 2951 y(a)e(shared)e(home)i(directory)
+-8 b(.)41 b(A)31 b(common)g(map)f(to)h(use)f(for)g(b)s(oth)g(migh)m(t)h
+(lo)s(ok)g(lik)m(e)g(the)g(follo)m(wing:)390 3085 y Fp(home/*)94
+b(netgrp\(ppp-hosts\);type:=)o(lin)o(k;fs)o(:=/l)o(oca)o(l/${)o(key})41
+b(\\)772 3194 y(!netgrp\(ppp-hosts\);type:)o(=nf)o(s;rh)o(ost:)o(=se)o
+(rv1;)o(rfs:)o(=/r)o(emot)o(e/${)o(key)o(})275 3328 y
+Fx(A)26 b(more)h(complex)h(example)f(that)h(tak)m(es)g(adv)-5
+b(an)m(tage)29 b(of)e(the)g(t)m(w)m(o)h(argumen)m(t)f(netgrp)g(moun)m
+(t)f(selec-)150 3437 y(tor)32 b(is)g(giv)m(en)g(in)f(the)h(follo)m
+(wing)h(scenario.)45 b(Supp)s(ose)30 b(one)i(w)m(an)m(ts)g(to)h(moun)m
+(t)e(the)h(lo)s(cal)h(scratc)m(h)f(space)150 3547 y(from)d(a)h(eac)m(h)
+h(host)f(under)e Fp(scratch/<hostname>)c Fx(and)29 b(some)h(hosts)g(ha)
+m(v)m(e)h(their)e(scratc)m(h)i(space)f(in)g(a)150 3657
+y(di\013eren)m(t)35 b(path)f(than)g(others.)52 b(Hosts)35
+b(in)f(the)g(netgroup)g(`)p Fp(apple-hosts)p Fx(')e(ha)m(v)m(e)j(their)
+f(scratc)m(h)h(space)150 3766 y(in)e(the)g Fp(/apple)e
+Fx(path,)j(where)f(hosts)g(in)g(the)g(netgroup)g(`)p
+Fp(cherry-hosts)p Fx(')d(ha)m(v)m(e)k(their)f(scratc)m(h)h(space)150
+3876 y(in)h(the)g Fp(/cherry)e Fx(path.)54 b(F)-8 b(or)36
+b(hosts)f(that)g(are)h(neither)f(in)f(the)h(`)p Fp(apple-hosts)p
+Fx(')e(or)i(`)p Fp(cherry-hosts)p Fx(')150 3985 y(netgroups)c(w)m(e)i
+(w)m(an)m(t)g(to)f(mak)m(e)h(a)f(symlink)g(p)s(oin)m(ting)g(to)g(no)m
+(where)g(but)f(pro)m(vide)h(a)h(descriptiv)m(e)f(error)150
+4095 y(message)f(in)g(the)f(link)g(destination:)390 4229
+y Fp(scratch/*)45 b(netgrp\(apple-hosts,${/key)o(}\);t)o(ype:)o(=nf)o
+(s;rh)o(ost:)o(=${)o(/key)o(};\\)581 4338 y(rfs:="/apple")f(\\)390
+4448 y(netgrp\(cherry-hosts,${/k)o(ey}\))o(;typ)o(e:=)o(nfs;)o(rhos)o
+(t:=)o(${/k)o(ey};)o(\\)581 4557 y(rfs:="/cherry")g(\\)390
+4667 y(type:=link;rfs:="no)f(local)j(partition)f(for)i(${/key}")150
+4864 y Fm(3.3.3.25)63 b(netgrp)s(d)43 b(Selector)d(F)-10
+b(unction)150 5011 y Fx(The)37 b(argumen)m(t)h Ft(AR)n(G)45
+b Fx(of)38 b(this)f(selector)j(is)d(a)h(netgroup)f(name)h(follo)m(w)m
+(ed)h(optionally)g(b)m(y)e(a)h(comma)150 5121 y(and)e(a)h(host)g(name.)
+60 b(If)36 b(the)h(host)g(name)f(is)h(not)g(sp)s(eci\014ed,)h(it)f
+(defaults)g(to)g Fp(${hostd})p Fx(.)58 b(If)36 b(the)h(host)150
+5230 y(name)g(\(fully-quali\014ed)h(name\))f(is)g(a)h(mem)m(b)s(er)e
+(of)h(the)h(netgroup,)h(this)e(selector)h(ev)-5 b(aluates)39
+b(to)f(true.)150 5340 y(Otherwise)30 b(it)h(ev)-5 b(aluates)32
+b(to)f(false.)p eop end
+%%Page: 30 32
+TeXDict begin 30 31 bop 150 -116 a Fx(30)1855 b(Am-utils)30
+b(\(4.4BSD)j(Automoun)m(ter)d(Utilities\))275 299 y(The)f(`)p
+Fp(netgrpd)p Fx(')f(function)i(uses)f(fully-quali\014ed)h(host)g(names)
+g(to)g(matc)m(h)h(netgroup)f(names,)g(while)150 408 y(the)j(`)p
+Fp(netgrp)p Fx(')f(function)h(\(see)h(Section)g(3.3.3.24)i([netgrp)e
+(Selector)g(F)-8 b(unction],)35 b(page)f(29\))g(uses)f(short)150
+518 y(host)d(names.)150 712 y Fm(3.3.3.26)63 b(in)p 731
+712 37 5 v 55 w(net)m(w)m(ork)40 b(Selector)h(F)-10 b(unction)150
+859 y Fx(This)42 b(selector)j(matc)m(hes)f(against)g(an)m(y)g(net)m(w)m
+(ork)g(name)f(or)g(n)m(um)m(b)s(er)f(with)g(an)h(optional)h(netmask.)
+150 969 y(First,)33 b(if)e(the)h(curren)m(t)f(host)h(has)g(an)m(y)g
+(net)m(w)m(ork)g(in)m(terface)h(that)g(is)e(lo)s(cally)i(attac)m(hed)h
+(to)e(the)g(net)m(w)m(ork)150 1078 y(sp)s(eci\014ed)e(in)g
+Ft(AR)n(G)38 b Fx(\(either)31 b(via)g(name)f(or)h(n)m(um)m(b)s(er\),)e
+(this)i(selector)h(ev)-5 b(aluates)32 b(to)f(true.)275
+1210 y(Second,)22 b(`)p Fp(in_network)p Fx(')c(supp)s(orts)g(a)j(net)m
+(w)m(ork/netmask)h(syn)m(tax)e(suc)m(h)g(as)h(`)p Fp
+(128.59.16.0/255.255.255.0)o Fx(',)p 4135 1233 42 91
+v 150 1320 a(`)p Fp(128.59.16.0/24)p Fx(',)37 b(`)p Fp
+(128.59.16.0/0xffffff00)p Fx(',)e(or)j(`)p Fp(128.59.16.0/)p
+Fx('.)62 b(Using)39 b(the)f(last)h(form,)150 1430 y Ft(A)n(md)i
+Fx(will)32 b(matc)m(h)g(the)g(sp)s(eci\014ed)f(net)m(w)m(ork)h(n)m(um)m
+(b)s(er)e(against)j(the)e(default)h(netmasks)g(of)f(eac)m(h)i(of)f(the)
+150 1539 y(lo)s(cally)g(attac)m(hed)g(in)m(terfaces.)275
+1671 y(If)d(the)i(selector)h(do)s(es)e(not)h(matc)m(h,)g(it)g(ev)-5
+b(aluates)32 b(to)f(false.)275 1803 y(F)-8 b(or)35 b(example,)h(supp)s
+(ose)d(y)m(ou)h(ha)m(v)m(e)i(t)m(w)m(o)g(serv)m(ers)e(that)h(ha)m(v)m
+(e)g(an)g(exp)s(ortable)f Fp(/opt)g Fx(that)g(smaller)150
+1913 y(clien)m(ts)g(can)f(NFS)g(moun)m(t.)47 b(The)33
+b(t)m(w)m(o)h(serv)m(ers)e(are)h(sa)m(y)-8 b(,)35 b(`)p
+Fp(serv1)p Fx(')d(on)g(net)m(w)m(ork)i(`)p Fp(foo-net.site.com)p
+Fx(')150 2022 y(and)g(`)p Fp(serv2)p Fx(')g(on)h(net)m(w)m(ork)g(`)p
+Fp(123.4.5.0)p Fx('.)52 b(Y)-8 b(ou)35 b(can)h(write)f(a)g(map)f(to)i
+(b)s(e)e(used)g(b)m(y)g(all)i(clien)m(ts)g(that)150 2132
+y(will)31 b(attempt)g(to)g(moun)m(t)g(the)f(closest)i(one)f(as)f(follo)
+m(ws:)390 2264 y Fp(opt)47 b(in_network\(foo-net.site.)o(com\))o(;rh)o
+(ost:)o(=ser)o(v1;)o(rfs:)o(=/op)o(t)42 b(\\)581 2374
+y(in_network\(123.4.5.0\);rh)o(ost:)o(=se)o(rv2;)o(rfs:)o(=/o)o(pt)g
+(\\)581 2483 y(rhost:=fallback-server)150 2677 y Fm(3.3.3.27)63
+b(true)41 b(Selector)g(F)-10 b(unction)150 2824 y Fx(Alw)m(a)m(ys)32
+b(ev)-5 b(aluates)32 b(to)f(true.)40 b Ft(AR)n(G)e Fx(is)31
+b(ignored.)150 3019 y Fm(3.3.3.28)63 b(xhost)42 b(Selector)f(F)-10
+b(unction)150 3166 y Fx(This)26 b(function)h(compares)g
+Ft(AR)n(G)35 b Fx(against)28 b(the)f(curren)m(t)g(hostname,)h
+(similarly)g(to)f(the)h(Section)f(3.3.3.7)150 3275 y([host)45
+b(Selector)i(V)-8 b(ariable],)50 b(page)c(27.)85 b(Ho)m(w)m(ev)m(er,)51
+b(this)45 b(function)g(will)g(also)h(matc)m(h)g(if)f
+Ft(AR)n(G)53 b Fx(is)45 b(a)150 3385 y(CNAME)31 b(\(DNS)f(Canonical)i
+(Name,)f(or)f(alias\))i(for)e(the)h(curren)m(t)f(host's)h(name.)150
+3579 y Fm(3.3.4)63 b(Map)41 b(Options)150 3726 y Fx(Options)36
+b(are)h(parsed)f(concurren)m(tly)h(with)f(selectors.)61
+b(The)36 b(di\013erence)h(is)g(that)g(when)e(an)i(option)g(is)150
+3836 y(seen)32 b(the)g(string)h(follo)m(wing)g(the)f(`)p
+Fp(:=)p Fx(')g(is)h(recorded)e(for)h(later)h(use.)46
+b(As)32 b(a)h(minim)m(um)e(the)h Fo(t)m(yp)s(e)37 b Fx(option)150
+3945 y(m)m(ust)27 b(b)s(e)f(sp)s(eci\014ed.)39 b(Eac)m(h)28
+b(\014lesystem)f(t)m(yp)s(e)g(has)g(other)g(options)h(whic)m(h)f(m)m
+(ust)f(also)i(b)s(e)f(sp)s(eci\014ed.)39 b(See)150 4055
+y(Chapter)30 b(5)h([Filesystem)h(T)m(yp)s(es],)e(page)h(47,)g(for)g
+(details)g(on)f(the)h(\014lesystem)f(sp)s(eci\014c)h(options.)275
+4187 y(Sup)s(er\015uous)c(option)k(sp)s(eci\014cations)g(are)f(ignored)
+h(and)f(are)g(not)h(rep)s(orted)f(as)g(errors.)275 4319
+y(The)f(follo)m(wing)j(options)f(apply)f(to)h(more)g(than)f(one)g
+(\014lesystem)h(t)m(yp)s(e.)150 4513 y Fm(3.3.4.1)63
+b(addopts)42 b(Option)150 4660 y Fx(This)23 b(option)i(adds)e
+(additional)i(options)f(to)g(default)h(options)f(normally)g(sp)s
+(eci\014ed)f(in)h(the)g(`)p Fp(/defaults)p Fx(')150 4770
+y(en)m(try)38 b(or)f(the)h(defaults)f(of)h(the)f(k)m(ey)i(en)m(try)e(b)
+s(eing)g(pro)s(cessed)g(\(see)i(Section)f(3.3.4.4)i([opts)e(Option],)
+150 4879 y(page)d(31\).)55 b(Normally)35 b(when)f(y)m(ou)h(sp)s(ecify)f
+(`)p Fp(opts)p Fx(')g(in)g(b)s(oth)g(the)h(`)p Fp(/defaults)p
+Fx(')d(and)i(the)h(map)f(en)m(try)-8 b(,)150 4989 y(the)34
+b(latter)h(o)m(v)m(errides)g(the)f(former)f(completely)-8
+b(.)53 b(But)34 b(with)f(`)p Fp(addopts)p Fx(')f(it)j(will)f(app)s(end)
+e(the)i(options)150 5098 y(and)c(o)m(v)m(erride)h(an)m(y)g
+(con\015icting)g(ones.)275 5230 y(`)p Fp(addopts)p Fx(')f(also)i(o)m(v)
+m(errides)h(the)e(v)-5 b(alue)32 b(of)g(the)g(`)p Fp(remopts)p
+Fx(')e(option)i(\(see)g(Section)h(3.3.4.5)h([remopts)150
+5340 y(Option],)d(page)g(36\),)h(whic)m(h)e(unless)f(sp)s(eci\014ed)h
+(defaults)g(to)i(the)e(v)-5 b(alue)31 b(of)f(`)p Fp(opts)p
+Fx('.)p eop end
+%%Page: 31 33
+TeXDict begin 31 32 bop 150 -116 a Fx(Chapter)30 b(3:)41
+b(Moun)m(t)31 b(Maps)2536 b(31)275 299 y(Options)30 b(whic)m(h)h(start)
+g(with)g(`)p Fp(no)p Fx(')f(will)i(o)m(v)m(erride)g(those)f(with)g(the)
+g(same)g(name)g(that)g(do)g(not)g(start)150 408 y(with)j(`)p
+Fp(no)p Fx(')g(and)f(vice)i(v)m(erse.)53 b(Sp)s(ecial)34
+b(handling)g(is)g(giv)m(en)h(to)g(in)m(v)m(erted)g(options)f(suc)m(h)g
+(as)g(`)p Fp(soft)p Fx(')g(and)150 518 y(`)p Fp(hard)p
+Fx(',)c(`)p Fp(bg)p Fx(')g(and)g(`)p Fp(fg)p Fx(',)h(`)p
+Fp(ro)p Fx(')f(and)g(`)p Fp(rw)p Fx(',)g(etc.)275 653
+y(F)-8 b(or)31 b(example,)g(if)f(the)h(default)f(options)h(sp)s
+(eci\014ed)f(w)m(ere)390 787 y Fp(opts:=rw,nosuid,intr,rsi)o(ze=1)o
+(024,)o(wsi)o(ze=1)o(024,)o(quo)o(ta,p)o(osix)275 922
+y Fx(and)f(the)i(ones)f(sp)s(eci\014ed)g(in)g(a)h(map)f(en)m(try)h(w)m
+(ere)390 1057 y Fp(addopts:=grpid,suid,ro,r)o(size)o(=204)o(8,q)o(uota)
+o(,noi)o(ntr)275 1191 y Fx(then)f(the)g(actual)i(options)f(used)e(w)m
+(ould)h(b)s(e)390 1326 y Fp(wsize=1024,posix,grpid,s)o(uid,)o(ro,r)o
+(siz)o(e=20)o(48,q)o(uot)o(a,no)o(intr)150 1526 y Fm(3.3.4.2)63
+b(dela)m(y)40 b(Option)150 1672 y Fx(The)29 b(dela)m(y)-8
+b(,)31 b(in)e(seconds,)h(b)s(efore)f(an)h(attempt)g(will)g(b)s(e)f
+(made)g(to)i(moun)m(t)e(from)g(the)h(curren)m(t)f(lo)s(cation.)150
+1782 y(Auxiliary)i(data,)g(suc)m(h)f(as)g(net)m(w)m(ork)h(address,)f
+(\014le)g(handles)g(and)g(so)g(on)g(are)h(computed)f(regardless)h(of)
+150 1892 y(this)f(v)-5 b(alue.)275 2026 y(A)27 b(dela)m(y)h(can)g(b)s
+(e)f(used)f(to)i(implemen)m(t)g(the)g(notion)g(of)f(primary)g(and)g
+(secondary)g(\014le)h(serv)m(ers.)39 b(The)150 2136 y(secondary)c(serv)
+m(ers)h(w)m(ould)f(ha)m(v)m(e)h(a)g(dela)m(y)g(of)f(a)h(few)f(seconds,)
+i(th)m(us)d(giving)i(the)g(primary)e(serv)m(ers)i(a)150
+2246 y(c)m(hance)31 b(to)h(resp)s(ond)c(\014rst.)150
+2445 y Fm(3.3.4.3)63 b(fs)42 b(Option)150 2592 y Fx(The)30
+b(lo)s(cal)i(moun)m(t)e(p)s(oin)m(t.)41 b(The)29 b(seman)m(tics)j(of)f
+(this)f(option)h(v)-5 b(ary)30 b(b)s(et)m(w)m(een)h(\014lesystems.)275
+2727 y(F)-8 b(or)32 b(NFS)g(and)g(UFS)f(\014lesystems)i(the)f(v)-5
+b(alue)32 b(of)g Fp(${fs})f Fx(is)h(used)f(as)h(the)g(lo)s(cal)i(moun)m
+(t)e(p)s(oin)m(t.)45 b(F)-8 b(or)150 2836 y(other)22
+b(\014lesystem)g(t)m(yp)s(es)f(it)i(has)e(other)h(meanings)g(whic)m(h)f
+(are)h(describ)s(ed)f(in)g(the)h(section)g(describing)g(the)150
+2946 y(resp)s(ectiv)m(e)29 b(\014lesystem)f(t)m(yp)s(e.)41
+b(It)28 b(is)g(imp)s(ortan)m(t)g(that)h(this)f(string)g(uniquely)f
+(iden)m(ti\014es)h(the)h(\014lesystem)150 3055 y(b)s(eing)23
+b(moun)m(ted.)39 b(T)-8 b(o)24 b(satisfy)g(this)f(requiremen)m(t,)j(it)
+e(should)f(con)m(tain)i(the)f(name)f(of)h(the)g(host)g(on)f(whic)m(h)
+150 3165 y(the)31 b(\014lesystem)f(is)h(residen)m(t)f(and)g(the)h
+(pathname)f(of)g(the)h(\014lesystem)g(on)f(the)h(lo)s(cal)g(or)g
+(remote)g(host.)275 3300 y(The)26 b(reason)h(for)f(requiring)g(the)h
+(hostname)g(is)g(clear)h(if)e(replicated)i(\014lesystems)f(are)g
+(considered.)39 b(If)150 3409 y(a)30 b(\014leserv)m(er)f(go)s(es)h(do)m
+(wn)f(and)g(a)g(replacemen)m(t)i(\014lesystem)f(is)f(moun)m(ted)g(then)
+g(the)h Fo(lo)s(cal)k Fx(moun)m(t)29 b(p)s(oin)m(t)150
+3519 y Fo(m)m(ust)d Fx(b)s(e)e(di\013eren)m(t)i(from)e(that)h(of)g(the)
+g(\014lesystem)g(whic)m(h)f(is)h(h)m(ung.)38 b(Some)24
+b(enco)s(ding)h(of)g(the)g(\014lesystem)150 3628 y(name)30
+b(is)h(required)e(if)i(more)f(than)g(one)h(\014lesystem)g(is)f(to)h(b)s
+(e)f(moun)m(ted)g(from)g(an)m(y)h(giv)m(en)g(host.)275
+3763 y(If)21 b(the)i(hostname)f(is)h(\014rst)e(in)h(the)h(path)f(then)g
+(all)h(moun)m(ts)f(from)g(a)h(particular)g(host)f(will)h(b)s(e)e
+(gathered)150 3873 y(b)s(elo)m(w)26 b(a)g(single)h(directory)-8
+b(.)40 b(If)26 b(that)g(serv)m(er)g(go)s(es)h(do)m(wn)e(then)h(the)g(h)
+m(ung)f(moun)m(t)h(p)s(oin)m(ts)g(are)g(less)g(lik)m(ely)150
+3982 y(to)31 b(b)s(e)e(acciden)m(tally)k(referenced,)d(for)g(example)h
+(when)e Fn(getcwd)p Fx(\(3\))j(tra)m(v)m(erses)g(the)e(namespace)h(to)f
+(\014nd)150 4092 y(the)h(pathname)f(of)g(the)h(curren)m(t)f(directory)
+-8 b(.)275 4226 y(The)28 b(`)p Fp(fs)p Fx(')h(option)h(defaults)f(to)h
+Fp(${autodir}/${rhost}${rfs)o(})p Fx(.)k(In)29 b(addition,)h(`)p
+Fp(rhost)p Fx(')e(defaults)150 4336 y(to)23 b(the)g(lo)s(cal)h(host)e
+(name)h(\()p Fp(${host})p Fx(\))e(and)h(`)p Fp(rfs)p
+Fx(')g(defaults)h(to)g(the)g(v)-5 b(alue)23 b(of)f Fp(${path})p
+Fx(,)h(whic)m(h)f(is)h(the)f(full)150 4446 y(path)32
+b(of)g(the)g(requested)f(\014le;)i(`)p Fp(/home/foo)p
+Fx(')d(in)h(the)h(example)h(ab)s(o)m(v)m(e)g(\(see)g(Section)f(3.3.3)i
+([Selectors],)150 4555 y(page)42 b(26\).)75 b Fp(${autodir})39
+b Fx(defaults)i(to)h(`)p Fp(/a)p Fx(')g(but)e(ma)m(y)i(b)s(e)f(c)m
+(hanged)h(with)f(the)h Fp(-a)e Fx(command)i(line)150
+4665 y(option.)55 b(Sun's)33 b(automoun)m(ter)j(defaults)f(to)h(`)p
+Fp(/tmp_mnt)p Fx('.)52 b(Note)37 b(that)e(there)g(is)g(no)g(`)p
+Fp(/)p Fx(')g(b)s(et)m(w)m(een)h(the)150 4774 y Fp(${rhost})28
+b Fx(and)i Fp(${rfs})f Fx(since)h Fp(${rfs})f Fx(b)s(egins)h(with)g(a)h
+(`)p Fp(/)p Fx('.)150 4974 y Fm(3.3.4.4)63 b(opts)42
+b(Option)150 5121 y Fx(The)29 b(options)g(to)h(pass)f(to)h(the)f(moun)m
+(t)g(system)h(call.)41 b(A)30 b(leading)g(`)p Fp(-)p
+Fx(')f(is)g(silen)m(tly)i(ignored.)40 b(The)29 b(moun)m(t)150
+5230 y(options)39 b(supp)s(orted)d(generally)k(corresp)s(ond)d(to)i
+(those)g(used)e(b)m(y)i Fn(moun)m(t)p Fx(\(8\))g(and)f(are)h(listed)f
+(b)s(elo)m(w.)150 5340 y(Some)30 b(additional)i(pseudo-options)e(are)h
+(in)m(terpreted)f(b)m(y)h Ft(A)n(md)39 b Fx(and)30 b(are)h(also)g
+(listed.)p eop end
+%%Page: 32 34
+TeXDict begin 32 33 bop 150 -116 a Fx(32)1855 b(Am-utils)30
+b(\(4.4BSD)j(Automoun)m(ter)d(Utilities\))275 299 y(Unless)36
+b(sp)s(eci\014cally)h(o)m(v)m(erridden,)h(eac)m(h)f(of)g(the)f(system)g
+(default)h(moun)m(t)f(options)g(applies.)59 b(An)m(y)150
+408 y(options)33 b(not)g(recognized)h(are)f(ignored.)48
+b(If)33 b(no)f(options)h(list)h(is)e(supplied)g(the)h(string)g(`)p
+Fp(rw,defaults)p Fx(')150 518 y(is)g(used)f(and)g(all)h(the)g(system)g
+(default)f(moun)m(t)h(options)g(apply)-8 b(.)48 b(Options)32
+b(whic)m(h)g(are)h(not)g(applicable)150 628 y(for)e(a)g(particular)g
+(op)s(erating)h(system)f(are)g(silen)m(tly)i(ignored.)42
+b(F)-8 b(or)32 b(example,)g(only)f(4.4BSD)h(is)f(kno)m(wn)150
+737 y(to)g(implemen)m(t)g(the)g Fp(compress)d Fx(and)i
+Fp(spongy)e Fx(options.)150 909 y Fp(acdirmax=)p Fk(n)630
+1018 y Fx(Set)j(the)f(maxim)m(um)g(directory)h(attribute)g(cac)m(he)h
+(timeout)g(to)f Fo(n)p Fx(.)150 1186 y Fp(acdirmin=)p
+Fk(n)630 1295 y Fx(Set)g(the)f(minim)m(um)g(directory)h(attribute)g
+(cac)m(he)h(timeout)f(to)g Fo(n)p Fx(.)150 1463 y Fp(acregmax=)p
+Fk(n)630 1572 y Fx(Set)g(the)f(maxim)m(um)g(\014le)h(attribute)g(cac)m
+(he)h(timeout)f(to)g Fo(n)p Fx(.)150 1739 y Fp(acregmin=)p
+Fk(n)630 1849 y Fx(Set)g(the)f(minim)m(um)g(\014le)g(attribute)h(cac)m
+(he)h(timeout)g(to)f Fo(n)p Fx(.)150 2016 y Fp(actimeo=)p
+Fk(n)630 2126 y Fx(Set)g(the)f(o)m(v)m(erall)j(attribute)e(cac)m(he)h
+(timeout)f(to)g Fo(n)p Fx(.)150 2293 y Fp(auto)150 2403
+y(ignore)192 b Fx(Ignore)31 b(this)f(moun)m(t)g(b)m(y)g
+Fn(df)p Fx(\(1\).)150 2570 y Fp(cache)240 b Fx(Allo)m(w)32
+b(data)f(to)g(b)s(e)e(cac)m(hed)j(from)e(a)h(remote)g(serv)m(er)g(for)f
+(this)g(moun)m(t.)150 2738 y Fp(closesession)630 2847
+y Fx(F)-8 b(or)31 b(UDF)g(moun)m(ts,)g(close)h(the)e(session)h(when)e
+(unmoun)m(ting.)150 3015 y Fp(compress)96 b Fx(Use)31
+b(NFS)f(compression)g(proto)s(col.)150 3182 y Fp(defperm)144
+b Fx(Ignore)34 b(the)g(p)s(ermission)f(mo)s(de)h(bits,)g(and)g(default)
+g(\014le)g(p)s(ermissions)f(to)h(0555,)j(UID)d(0,)630
+3292 y(and)c(GID)h(0.)41 b(Useful)30 b(for)g(CD-R)m(OMs)h(formatted)g
+(as)g(ISO-9660.)150 3459 y Fp(dev)336 b Fx(Allo)m(w)32
+b(lo)s(cal)f(sp)s(ecial)g(devices)g(on)g(this)f(\014lesystem.)150
+3626 y Fp(dirmask=)p Fk(n)630 3736 y Fx(F)-8 b(or)32
+b(PCFS)f(moun)m(ts,)h(sp)s(ecify)f(the)h(maxim)m(um)g(\014le)f(p)s
+(ermissions)g(for)g(directories)h(in)g(the)630 3846 y(\014le)41
+b(system.)72 b(See)41 b(the)g(`)p Fp(mask)p Fx(')f(option's)h
+(description)g(for)f(more)h(details.)73 b(The)40 b(mask)630
+3955 y(v)-5 b(alue)31 b(of)f Fo(n)g Fx(can)h(b)s(e)f(sp)s(eci\014ed)f
+(in)h(decimal,)i(o)s(ctal,)g(or)e(hexadecimal.)150 4123
+y Fp(dumbtimr)96 b Fx(T)-8 b(urn)19 b(o\013)j(the)f(dynamic)f
+(retransmit)h(timeout)h(estimator.)39 b(This)20 b(ma)m(y)i(b)s(e)e
+(useful)g(for)h(UDP)630 4232 y(moun)m(ts)34 b(that)g(exhibit)g(high)f
+(retry)h(rates,)h(since)f(it)g(is)g(p)s(ossible)f(that)h(the)g
+(dynamically)630 4342 y(estimated)e(timeout)f(in)m(terv)-5
+b(al)32 b(is)e(to)s(o)h(short.)150 4509 y Fp(extatt)192
+b Fx(Enable)30 b(extended)h(attributes)g(in)f(ISO-9660)h(\014le)g
+(systems.)150 4676 y Fp(fsid)288 b Fx(Set)31 b(ID)f(of)h(\014lesystem.)
+150 4844 y Fp(gens)288 b Fx(Enable)34 b(generations)h(in)f(ISO-9660)h
+(\014le)f(systems.)51 b(Generations)35 b(allo)m(w)h(y)m(ou)e(to)h(see)f
+(all)630 4953 y(v)m(ersions)d(of)f(a)h(giv)m(en)g(\014le.)150
+5121 y Fp(gmtoff=)p Fk(n)96 b Fx(F)-8 b(or)26 b(UDF)f(moun)m(ts,)i(set)
+e(the)g(time)h(zone)f(o\013set)h(from)f(UTC)f(to)i Fo(n)e
+Fx(seconds,)i(with)f(p)s(ositiv)m(e)630 5230 y(v)-5 b(alues)28
+b(indicating)g(east)g(of)g(the)f(Prime)h(Meridian.)40
+b(If)26 b(not)i(set,)h(the)e(user's)g(curren)m(t)g(time)630
+5340 y(zone)k(will)g(b)s(e)f(used.)p eop end
+%%Page: 33 35
+TeXDict begin 33 34 bop 150 -116 a Fx(Chapter)30 b(3:)41
+b(Moun)m(t)31 b(Maps)2536 b(33)150 299 y Fp(group=)p
+Fk(n)144 b Fx(F)-8 b(or)35 b(PCFS)f(and)g(UDF)i(moun)m(ts,)f(set)g(the)
+g(group)f(of)h(the)f(\014les)h(in)f(the)h(\014le)g(system)f(to)h
+Fo(n)630 408 y Fx(\(whic)m(h)h(can)h(either)g(b)s(e)f(a)g(group)g(name)
+h(or)f(a)h(GID)g(n)m(um)m(b)s(er\).)58 b(The)35 b(default)i(group)f(is)
+630 518 y(the)31 b(group)e(of)i(the)f(directory)h(on)g(whic)m(h)f(the)g
+(\014le)h(system)f(is)h(b)s(eing)f(moun)m(ted.)150 675
+y Fp(grpid)240 b Fx(Use)31 b(BSD)f(directory)h(group-id)f(seman)m
+(tics.)150 831 y Fp(int)150 941 y(intr)288 b Fx(Allo)m(w)32
+b(k)m(eyb)s(oard)e(in)m(terrupts)f(on)i(hard)e(moun)m(ts.)150
+1097 y Fp(lock)288 b Fx(Use)31 b(the)f(NFS)h(lo)s(c)m(king)g(proto)s
+(col)h(\(default\))150 1254 y Fp(longname)96 b Fx(F)-8
+b(or)31 b(PCFS)f(moun)m(ts,)g(force)h(Win95)h(long)f(names.)150
+1410 y Fp(mask=)p Fk(n)192 b Fx(F)-8 b(or)41 b(PCFS)f(moun)m(ts,)j(sp)s
+(ecify)e(the)f(maxim)m(um)h(\014le)g(p)s(ermissions)e(for)h(\014les)h
+(in)f(the)h(\014le)630 1520 y(system.)e(F)-8 b(or)27
+b(example,)g(a)g(mask)e(of)h(755)h(sp)s(eci\014es)f(that,)h(b)m(y)f
+(default,)h(the)f(o)m(wner)g(should)630 1630 y(ha)m(v)m(e)k(read,)f
+(write,)g(and)f(execute)i(p)s(ermissions)d(for)i(\014les,)g(but)f
+(others)g(should)g(only)h(ha)m(v)m(e)630 1739 y(read)k(and)g(execute)h
+(p)s(ermissions.)48 b(Only)33 b(the)g(nine)g(lo)m(w-order)h(bits)f(of)h
+(mask)f(are)g(used.)630 1849 y(The)d(default)g(mask)g(is)h(tak)m(en)g
+(from)f(the)g(directory)h(on)f(whic)m(h)g(the)g(\014le)h(system)f(is)g
+(b)s(eing)630 1958 y(moun)m(ted.)43 b(The)31 b(mask)g(v)-5
+b(alue)32 b(of)f Fo(n)g Fx(can)g(b)s(e)g(sp)s(eci\014ed)f(in)h
+(decimal,)i(o)s(ctal,)g(or)e(hexadeci-)630 2068 y(mal.)150
+2225 y Fp(multi)240 b Fx(P)m(erform)30 b(m)m(ulti-comp)s(onen)m(t)i(lo)
+s(okup)e(on)g(\014les.)150 2381 y Fp(maxgroups)630 2491
+y Fx(Set)h(the)f(maxim)m(um)g(n)m(um)m(b)s(er)f(of)i(groups)f(to)h
+(allo)m(w)h(for)e(this)g(moun)m(t.)150 2647 y Fp(nfsv3)240
+b Fx(Use)31 b(NFS)f(V)-8 b(ersion)31 b(3)g(for)f(this)g(moun)m(t.)150
+2804 y Fp(noac)288 b Fx(T)-8 b(urn)29 b(o\013)i(the)f(attribute)h(cac)m
+(he.)150 2960 y Fp(noauto)192 b Fx(This)29 b(option)i(is)f(used)f(b)m
+(y)h(the)h(moun)m(t)f(command)g(in)g(`)p Fp(/etc/fstab)p
+Fx(')d(or)k(`)p Fp(/etc/vfstab)p Fx(')630 3070 y(and)f(means)g(not)h
+(to)g(moun)m(t)f(this)g(\014le)h(system)f(when)g(moun)m(t)g(-a)h(is)g
+(used.)150 3226 y Fp(nocache)144 b Fx(Do)31 b(not)g(allo)m(w)h(data)f
+(to)g(b)s(e)f(cac)m(hed)h(from)f(a)h(remote)g(serv)m(er)g(for)f(this)g
+(moun)m(t.)150 3383 y Fp(nocasetrans)630 3493 y Fx(Don't)h(do)g(case)g
+(translation.)42 b(Useful)30 b(for)g(CD-R)m(OMS)h(formatted)g(as)f
+(ISO-9660.)150 3649 y Fp(noconn)192 b Fx(Don't)31 b(mak)m(e)h(a)e
+(connection)i(on)e(datagram)i(transp)s(orts.)150 3806
+y Fp(nocto)240 b Fx(No)31 b(close-to-op)s(en)h(consistency)-8
+b(.)150 3962 y Fp(nodefperm)630 4072 y Fx(Do)38 b(not)f(ignore)h(the)f
+(p)s(ermission)f(mo)s(de)h(bits.)61 b(Useful)37 b(for)g(CD-R)m(OMS)g
+(formatted)h(as)630 4181 y(ISO-9660.)150 4338 y Fp(nodev)150
+4448 y(nodevs)192 b Fx(Don't)31 b(allo)m(w)h(lo)s(cal)g(sp)s(ecial)f
+(devices)g(on)f(this)g(\014lesystem.)150 4604 y Fp(noexec)192
+b Fx(Don't)31 b(allo)m(w)h(program)e(execution.)150 4761
+y Fp(noint)240 b Fx(Do)31 b(not)g(allo)m(w)h(k)m(eyb)s(oard)e(in)m
+(terrupts)g(for)g(this)g(moun)m(t)150 4917 y Fp(nojoliet)96
+b Fx(T)-8 b(urn)29 b(o\013)i(the)f(Joliet)i(extensions.)41
+b(Useful)31 b(for)f(CD-R)m(OMS)g(formatted)h(as)g(ISO-9660.)150
+5074 y Fp(nolock)192 b Fx(Do)31 b(not)g(use)f(the)g(NFS)h(lo)s(c)m
+(king)g(proto)s(col)150 5230 y Fp(nomnttab)96 b Fx(This)31
+b(option)i(is)f(used)f(in)m(ternally)j(to)e(tell)i(Amd)d(that)i(a)f
+(Solaris)h(8)f(system)h(using)e(mn)m(tfs)630 5340 y(is)f(in)g(use.)p
+eop end
+%%Page: 34 36
+TeXDict begin 34 35 bop 150 -116 a Fx(34)1855 b(Am-utils)30
+b(\(4.4BSD)j(Automoun)m(ter)d(Utilities\))150 299 y Fp(norrip)192
+b Fx(T)-8 b(urn)35 b(o\013)i(using)g(of)g(the)f(Ro)s(c)m(k)i(Ridge)f
+(In)m(terc)m(hange)h(Proto)s(col)g(\(RRIP\))f(extensions)g(to)630
+408 y(ISO-9660.)150 565 y Fp(nosub)240 b Fx(Disallo)m(w)32
+b(moun)m(ts)f(b)s(eneath)f(this)g(moun)m(t.)150 722 y
+Fp(nosuid)192 b Fx(Don't)31 b(allo)m(w)h(set-uid)f(or)f(set-gid)h
+(executables)h(on)f(this)f(\014lesystem.)150 878 y Fp(noversion)630
+988 y Fx(Strip)25 b(the)i(extension)f(`)p Fp(;#)p Fx(')h(from)e(the)i
+(v)m(ersion)f(string)g(of)h(\014les)f(recorded)g(on)g(an)g(ISO-9660)630
+1097 y(CD-R)m(OM.)150 1254 y Fp(nowin95)144 b Fx(F)-8
+b(or)31 b(PCFS)f(moun)m(ts,)g(completely)i(ignore)f(Win95)h(en)m
+(tries.)150 1410 y Fp(optionstr)630 1520 y Fx(Under)37
+b(Solaris)i(8,)i(pro)m(vide)d(the)h(k)m(ernel)g(a)f(string)h(of)f
+(options)h(to)g(parse)f(and)g(sho)m(w)g(as)630 1630 y(part)30
+b(of)h(the)f(sp)s(ecial)h(in-k)m(ernel)g(moun)m(t)g(\014le)f(system.)
+150 1786 y Fp(overlay)144 b Fx(Ov)m(erla)m(y)32 b(this)e(moun)m(t)g(on)
+h(top)f(of)h(an)f(existing)h(moun)m(t,)g(if)f(an)m(y)-8
+b(.)150 1943 y Fp(pgthresh=)p Fk(n)630 2052 y Fx(Set)31
+b(the)f(paging)h(threshold)f(to)h Fo(n)f Fx(kilob)m(ytes.)150
+2209 y Fp(port=)p Fk(n)192 b Fx(Set)31 b(the)f(NFS)g(p)s(ort)g(to)h
+Fo(n)p Fx(.)150 2365 y Fp(posix)240 b Fx(T)-8 b(urn)29
+b(on)h(POSIX)g(static)i(pathconf)e(for)g(moun)m(ts.)150
+2522 y Fp(private)144 b Fx(Use)31 b(lo)s(cal)g(lo)s(c)m(king)h(instead)
+f(of)f(the)h(NLM)f(proto)s(col,)i(useful)e(for)g(IRIX)g(6)h(only)-8
+b(.)150 2679 y Fp(proplist)96 b Fx(Supp)s(ort)22 b(prop)s(ert)m(y)h
+(lists)i(\(A)m(CLs\))g(for)f(this)g(moun)m(t,)h(useful)f(primarily)f
+(for)h(T)-8 b(ru64)24 b(UNIX.)150 2835 y Fp(proto=)p
+Fk(s)144 b Fx(Use)31 b(transp)s(ort)e(proto)s(col)j Fo(s)h
+Fx(for)e(NFS)f(\(can)h(b)s(e)f Fp("tcp")f Fx(or)h Fp("udp")p
+Fx(\).)150 2992 y Fp(quota)240 b Fx(Enable)30 b(quota)h(c)m(hec)m(king)
+i(on)d(this)g(moun)m(t.)150 3148 y Fp(rdonly)150 3258
+y(ro)384 b Fx(Moun)m(t)31 b(this)f(\014lesystem)h(readonly)-8
+b(.)150 3414 y Fp(resvport)96 b Fx(Use)27 b(a)h(reserv)m(ed)f(p)s(ort)f
+(\(smaller)i(than)f(1024\))i(for)e(remote)h(NFS)f(moun)m(ts.)39
+b(Most)28 b(systems)630 3524 y(assume)k(that,)i(but)e(some)h(allo)m(w)h
+(for)f(moun)m(ts)f(to)i(o)s(ccur)e(on)h(non-reserv)m(ed)f(p)s(orts.)47
+b(This)630 3634 y(causes)c(problems)f(when)g(suc)m(h)h(a)g(system)g
+(tries)g(to)g(NFS)g(moun)m(t)g(one)g(that)g(requires)630
+3743 y(reserv)m(ed)31 b(p)s(orts.)40 b(It)30 b(is)g(recommended)g(that)
+h(this)g(option)f(alw)m(a)m(ys)i(b)s(e)e(on.)150 3900
+y Fp(retrans=)p Fk(n)630 4009 y Fx(The)39 b(n)m(um)m(b)s(er)g(of)h(NFS)
+g(retransmits)g(made)g(b)s(efore)g(a)g(user)f(error)h(is)g(generated)h
+(b)m(y)f(a)630 4119 y(`)p Fp(soft)p Fx(')25 b(moun)m(ted)h
+(\014lesystem,)i(and)d(b)s(efore)h(a)g(`)p Fp(hard)p
+Fx(')g(moun)m(ted)g(\014lesystem)g(rep)s(orts)g(`)p Fp(NFS)630
+4228 y(server)j Fk(yoyo)g Fp(not)g(responding)f(still)h(trying)p
+Fx('.)150 4385 y Fp(retry)240 b Fx(Set)31 b(the)f(NFS)g(retry)h(coun)m
+(ter.)150 4542 y Fp(rrcaseins)630 4651 y Fx(Enable)21
+b(the)g(Ro)s(c)m(k)g(Ridge)g(In)m(terc)m(hange)h(Proto)s(col)h
+(\(RRIP\))e(case)g(insensitiv)m(e)h(extensions.)630 4761
+y(Useful)30 b(for)g(CD-R)m(OMS)h(formatted)g(as)g(ISO-9660.)150
+4917 y Fp(rrip)288 b Fx(Uses)31 b(the)f(Ro)s(c)m(k)h(Ridge)g(In)m(terc)
+m(hange)h(Proto)s(col)f(\(RRIP\))g(extensions)g(to)g(ISO-9660.)150
+5074 y Fp(rsize=)p Fk(n)144 b Fx(The)25 b(NFS)h(read)g(pac)m(k)m(et)i
+(size.)40 b(Y)-8 b(ou)26 b(ma)m(y)h(need)e(to)i(set)f(this)g(if)g(y)m
+(ou)g(are)h(using)e(NFS/UDP)630 5183 y(through)30 b(a)g(gatew)m(a)m(y)j
+(or)e(a)g(slo)m(w)g(link.)150 5340 y Fp(rw)384 b Fx(Allo)m(w)32
+b(reads)e(and)f(writes)i(on)f(this)g(\014lesystem.)p
+eop end
+%%Page: 35 37
+TeXDict begin 35 36 bop 150 -116 a Fx(Chapter)30 b(3:)41
+b(Moun)m(t)31 b(Maps)2536 b(35)150 299 y Fp(sessionnr=)p
+Fk(n)630 408 y Fx(F)-8 b(or)31 b(m)m(ultisession)g(UDF)g(moun)m(ts,)g
+(use)f(session)h(n)m(um)m(b)s(er)e Fo(n)g Fx(when)h(moun)m(ting.)150
+574 y Fp(shortname)630 684 y Fx(F)-8 b(or)31 b(PCFS)f(moun)m(ts,)g
+(force)h(old)g(DOS)f(short)g(names)g(only)-8 b(.)150
+850 y Fp(soft)288 b Fx(Giv)m(e)32 b(up)d(after)i Fo(retrans)j
+Fx(retransmissions.)150 1015 y Fp(spongy)192 b Fx(Lik)m(e)31
+b(`)p Fp(soft)p Fx(')f(for)g(status)h(requests,)f(and)g(`)p
+Fp(hard)p Fx(')g(for)g(data)h(transfers.)150 1181 y Fp(suid)288
+b Fx(Allo)m(w)32 b(set-uid)e(programs)g(on)g(this)h(moun)m(t.)150
+1347 y Fp(symttl)192 b Fx(T)-8 b(urn)29 b(o\013)i(the)f(sym)m(b)s(olic)
+h(link)f(cac)m(he)i(time-to-liv)m(e.)150 1513 y Fp(sync)288
+b Fx(P)m(erform)30 b(sync)m(hronous)g(\014lesystem)g(op)s(erations)h
+(on)f(this)h(moun)m(t.)150 1678 y Fp(tcp)336 b Fx(Use)33
+b(TCP/IP)e(instead)h(of)h(UDP/IP)-8 b(,)33 b(ignored)f(if)h(the)f(NFS)g
+(implemen)m(tation)i(do)s(es)e(not)630 1788 y(supp)s(ort)d(TCP/IP)g
+(moun)m(ts.)150 1954 y Fp(timeo=)p Fk(n)144 b Fx(The)30
+b(NFS)g(timeout,)i(in)e(ten)m(th-seconds,)h(b)s(efore)f(a)h(request)f
+(is)h(retransmitted.)150 2119 y Fp(user=)p Fk(n)192 b
+Fx(F)-8 b(or)35 b(PCFS)e(and)h(UDF)h(moun)m(ts,)g(set)f(the)h(o)m(wner)
+f(of)g(the)g(\014les)g(in)g(the)g(\014le)g(system)h(to)f
+Fo(n)630 2229 y Fx(\(whic)m(h)c(can)h(either)g(b)s(e)f(a)h(user)e(name)
+i(or)f(a)h(UID)g(n)m(um)m(b)s(er\).)39 b(The)30 b(default)h(o)m(wner)f
+(is)h(the)630 2339 y(o)m(wner)f(of)h(the)g(directory)f(on)h(whic)m(h)f
+(the)g(\014le)h(system)f(is)h(b)s(eing)f(moun)m(ted.)150
+2504 y Fp(vers=)p Fk(n)192 b Fx(Use)31 b(NFS)f(proto)s(col)h(v)m
+(ersion)g(n)m(um)m(b)s(er)e Fo(n)h Fx(\(can)h(b)s(e)f(2)h(or)f(3\).)150
+2670 y Fp(wsize=)p Fk(n)144 b Fx(The)23 b(NFS)h(write)g(pac)m(k)m(et)i
+(size.)39 b(Y)-8 b(ou)24 b(ma)m(y)h(need)e(to)i(set)f(this)g(if)f(y)m
+(ou)i(are)f(using)f(NFS/UDP)630 2780 y(through)30 b(a)g(gatew)m(a)m(y)j
+(or)e(a)g(slo)m(w)g(link.)275 2948 y(The)d(follo)m(wing)i(options)f
+(are)g(implemen)m(ted)g(b)m(y)g Ft(A)n(md)p Fx(,)g(rather)g(than)f(b)s
+(eing)h(passed)f(to)h(the)g(k)m(ernel.)150 3117 y Fp(nounmount)630
+3227 y Fx(Con\014gures)41 b(the)h(moun)m(t)g(so)g(that)h(its)f
+(time-to-liv)m(e)j(will)e(nev)m(er)f(expire.)76 b(This)41
+b(is)h(the)630 3337 y(default)35 b(for)g(non-net)m(w)m(ork)h(based)f
+(\014lesystem)g(t)m(yp)s(es)g(\(suc)m(h)g(as)h(moun)m(ting)f(lo)s(cal)h
+(disks,)630 3446 y(\015oppies,)30 b(and)g(CD-R)m(OMs\).)42
+b(See)30 b(also)h(the)g(related)g Ft(unmount)40 b Fx(option.)150
+3612 y Fp(ping=)p Fk(n)192 b Fx(The)45 b(in)m(terv)-5
+b(al,)50 b(in)45 b(seconds,)k(b)s(et)m(w)m(een)d(k)m(eep-aliv)m(e)i
+(pings.)85 b(When)45 b(four)f(consecutiv)m(e)630 3721
+y(pings)30 b(ha)m(v)m(e)i(failed)f(the)g(moun)m(t)f(p)s(oin)m(t)h(is)g
+(mark)m(ed)f(as)h(h)m(ung.)41 b(This)30 b(in)m(terv)-5
+b(al)32 b(defaults)e(to)630 3831 y(30)25 b(seconds;)h(if)f(the)f(ping)g
+(in)m(terv)-5 b(al)25 b(is)g(set)f(to)h(zero,)i Ft(A)n(md)33
+b Fx(will)25 b(use)f(the)g(default)h(30-second)630 3941
+y(in)m(terv)-5 b(al.)48 b(If)32 b(the)g(in)m(terv)-5
+b(al)34 b(is)e(set)h(to)g(-1)g(\(or)g(an)m(y)f(other)h(negativ)m(e)i(v)
+-5 b(alue\),)33 b(no)g(pings)f(are)630 4050 y(sen)m(t)37
+b(and)f(the)h(host)f(is)h(assumed)f(to)h(b)s(e)f(alw)m(a)m(ys)i(up,)g
+(whic)m(h)e(can)h(cause)g(unmoun)m(ts)e(to)630 4160 y(hang)e(See)h(the)
+g Ft(softlo)-5 b(okup)42 b Fx(option)34 b(for)f(a)h(b)s(etter)g
+(alternativ)m(e.)53 b(T)-8 b(urning)32 b(pings)i(o\013)g(can)630
+4269 y(b)s(e)41 b(useful)h(in)g(NFS-HA)g(\(High-Av)-5
+b(ailabilit)m(y\))46 b(sites)d(where)e(the)i(NFS)f(service)h(rarely)630
+4379 y(go)s(es)36 b(do)m(wn.)55 b(Setting)36 b(the)f(ping)g(v)-5
+b(alue)36 b(to)g(a)g(large)g(v)-5 b(alue)36 b(can)g(reduce)f(the)g
+(amoun)m(t)h(of)630 4489 y(NFS)p 814 4489 28 4 v 40 w(NULL)30
+b(c)m(hatter)i(on)e(y)m(our)h(net)m(w)m(ork)g(considerably)-8
+b(,)31 b(esp)s(ecially)h(in)e(large)h(sites.)630 4626
+y(Note)e(that)e(if)h(y)m(ou)f(ha)m(v)m(e)i(m)m(ultiple)f
+Ft(A)n(md)36 b Fx(en)m(tries)28 b(using)f(the)h(same)f(\014le)h(serv)m
+(er,)g(and)f(eac)m(h)630 4736 y(en)m(try)k(sets)f(a)h(di\013eren)m(t)g
+(v)-5 b(alue)31 b(of)f(N,)h(then)f(eac)m(h)h(time)g(Amd)f(moun)m(ts)g
+(a)h(new)e(en)m(try)-8 b(,)32 b(the)630 4845 y(ping)f(v)-5
+b(alue)31 b(will)h(b)s(e)e(re-ev)-5 b(aluated)33 b(\(and)e(up)s(dated,)
+f(turned)g(o\013,)i(or)f(turned)f(bac)m(k)i(on)f(as)630
+4955 y(needed\).)40 b(Finally)-8 b(,)32 b(note)e(that)g(NFS)p
+1911 4955 V 40 w(NULL)f(pings)g(are)h(sen)m(t)f(for)h(b)s(oth)e(UDP)i
+(and)f(TCP)630 5065 y(moun)m(ts,)h(b)s(ecause)h(ev)m(en)g(a)g(h)m(ung)e
+(TCP)h(moun)m(t)g(can)h(cause)g(user)f(pro)s(cesses)g(to)h(hang.)150
+5230 y Fp(public)192 b Fx(Use)32 b(W)-8 b(ebNFS)33 b(m)m(ulti-comp)s
+(onen)m(t)h(lo)s(okup)d(on)h(the)h(public)e(\014le)h(handle)g(instead)g
+(of)h(the)630 5340 y(moun)m(t)42 b(proto)s(col)i(to)f(obtain)g(NFS)g
+(\014le)f(handles,)j(as)e(do)s(cumen)m(ted)f(in)h(the)f(W)-8
+b(ebNFS)p eop end
+%%Page: 36 38
+TeXDict begin 36 37 bop 150 -116 a Fx(36)1855 b(Am-utils)30
+b(\(4.4BSD)j(Automoun)m(ter)d(Utilities\))630 299 y(Clien)m(t)d(Sp)s
+(eci\014cation,)h(RF)m(C)f(2054.)41 b(This)26 b(means)g(that)h
+Ft(A)n(md)36 b Fx(will)27 b(not)g(attempt)g(to)g(con-)630
+408 y(tact)33 b(the)e(remote)h(p)s(ortmapp)s(er)d(or)i(remote)h(moun)m
+(td)e(daemon,)i(and)e(will)i(only)f(connect)630 518 y(to)40
+b(the)f(w)m(ell-kno)m(wn)h(NFS)e(p)s(ort)h(2049)h(or)f(the)g(p)s(ort)g
+(sp)s(eci\014ed)f(with)h(the)g Ft(p)-5 b(ort)49 b Fx(moun)m(t)630
+628 y(option,)31 b(th)m(us)f(making)h(it)g(easier)g(to)g(use)f(NFS)g
+(through)g(a)h(\014rew)m(all.)150 824 y Fp(retry=)p Fk(n)144
+b Fx(The)30 b(n)m(um)m(b)s(er)f(of)h(times)h(to)h(retry)e(the)g(moun)m
+(t)h(system)f(call.)150 1021 y Fp(softlookup)630 1130
+y Fx(Con\014gures)h Ft(A)n(md)9 b Fx('s)33 b(b)s(eha)m(vior)f(with)h
+(resp)s(ect)f(to)h(already-moun)m(ted)g(shares)f(from)g(NFS)630
+1240 y(\014leserv)m(ers)c(that)h(are)f(unreac)m(hable.)41
+b(If)27 b(softlo)s(okup)h(is)g(sp)s(eci\014ed,)g(trying)g(to)h(access)g
+(suc)m(h)630 1350 y(a)35 b(share)e(will)i(result)f(in)g(an)g(error)f
+(\(EIO,)i(whic)m(h)e(is)i(c)m(hanged)f(from)g(the)g(ENOENT)g(6.0)630
+1459 y(used)k(to)h(return\).)65 b(If)38 b(it)h(is)g(not)g(sp)s
+(eci\014ed,)h(a)f(regular)g(symlink)f(is)h(pro)m(vided)f(and)g(the)630
+1569 y(access)32 b(will)e(probably)g(hang)g(in)g(the)h(NFS)f
+(\014lesystem.)630 1722 y(The)38 b(default)g(b)s(eha)m(vior)g(dep)s
+(ends)e(on)i(whether)g(the)g(moun)m(t)g(is)g('soft')h(or)g('hard';)i
+(soft-)630 1832 y(lo)s(okup)f(can)h(b)s(e)f(used)g(to)h(c)m(hange)h
+(this)e(default.)72 b(This)40 b(is)g(c)m(hanged)h(from)g(6.0)g(whic)m
+(h)630 1941 y(alw)m(a)m(ys)32 b(b)s(eha)m(v)m(ed)e(as)h(if)f(softlo)s
+(okup)h(w)m(as)g(sp)s(eci\014ed.)150 2138 y Fp(unmount)144
+b Fx(Con\014gures)20 b(the)h(moun)m(t)f(so)h(that)h(its)f(time-to-liv)m
+(e)j(will)d(indeed)f(expire)h(\(and)g(th)m(us)f(ma)m(y)i(b)s(e)630
+2247 y(automatically)j(unmoun)m(ted\).)37 b(This)21 b(is)h(also)h(the)f
+(default)g(for)g(net)m(w)m(ork-based)h(\014lesystem)630
+2357 y(t)m(yp)s(es)31 b(\(e.g.,)i(NFS\).)f(This)e(option)h(is)g(useful)
+f(for)h(remo)m(v)-5 b(able)32 b(lo)s(cal)g(media)g(suc)m(h)e(as)i(CD-)
+630 2466 y(R)m(OMs,)25 b(USB)f(driv)m(es,)h(etc.)39 b(so)24
+b(they)f(can)h(expire)f(when)g(not)g(in)g(use,)i(and)e(get)h(unmoun)m
+(ted)630 2576 y(\(suc)m(h)34 b(driv)m(es)g(can)h(get)g(w)m(ork)f(out)h
+(when)e(they)h(k)m(eep)h(spinning\).)51 b(See)35 b(also)g(the)f
+(related)630 2686 y Ft(nounmount)40 b Fx(option.)150
+2882 y Fp(utimeout=)p Fk(n)630 2992 y Fx(The)31 b(in)m(terv)-5
+b(al,)34 b(in)d(seconds,)h(that)h(lo)s(ok)m(ed)f(up)f(and)g(moun)m(ted)
+h(map)f(en)m(tries)h(are)h(cac)m(hed.)630 3101 y(After)21
+b(that)g(p)s(erio)s(d)e(of)h(time,)j Ft(A)n(md)30 b Fx(will)21
+b(attempt)g(to)g(unmoun)m(t)f(the)g(en)m(tries.)38 b(If,)22
+b(ho)m(w)m(ev)m(er,)630 3211 y(the)32 b(unmoun)m(t)f(fails)i(\(with)f
+(EBUSY\),)h(then)f Ft(A)n(md)42 b Fx(will)32 b(extend)g(the)h(moun)m
+(t's)f(time-to-)630 3321 y(liv)m(e)j(b)m(y)f(the)g Ft(utime)-5
+b(out)43 b Fx(v)-5 b(alue)34 b(b)s(efore)g(the)g(next)g(unmoun)m(t)f
+(attempt)i(is)f(made.)51 b(In)33 b(fact)630 3430 y(the)h(in)m(terv)-5
+b(al)34 b(is)g(extended)f(b)s(efore)g(the)h(unmoun)m(t)e(is)i
+(attempted,)h(to)f(a)m(v)m(oid)h(thrashing.)630 3540
+y(The)f(default)i(v)-5 b(alue)35 b(is)g(120)h(seconds)f(\(t)m(w)m(o)i
+(min)m(utes\))e(or)g(as)g(set)h(b)m(y)f(the)g Fp(-w)f
+Fx(command)630 3649 y(line)d(option.)150 3846 y Fp(xlatecookie)630
+3956 y Fx(T)-8 b(ranslate)31 b(directory)g(co)s(okies)h(b)s(et)m(w)m
+(een)f(32-long)h(and)e(64-long)i(lengths.)150 4192 y
+Fm(3.3.4.5)63 b(remopts)42 b(Option)150 4339 y Fx(This)36
+b(option)g(has)h(the)f(same)h(use)f(as)h Fp(${opts})d
+Fx(but)i(applies)g(only)h(when)e(the)i(remote)g(host)g(is)f(on)h(a)150
+4449 y(non-lo)s(cal)32 b(net)m(w)m(ork.)43 b(F)-8 b(or)31
+b(example,)h(when)e(using)h(NFS)f(across)i(a)f(gatew)m(a)m(y)i(it)f(is)
+f(often)g(necessary)g(to)150 4558 y(use)e(smaller)g(v)-5
+b(alues)29 b(for)g(the)g(data)g(read)g(and)f(write)h(sizes.)41
+b(This)28 b(can)h(simply)g(b)s(e)f(done)g(b)m(y)h(sp)s(ecifying)150
+4668 y(the)44 b(small)g(v)-5 b(alues)44 b(in)g Fo(remopts)p
+Fx(.)81 b(When)43 b(a)i(non-lo)s(cal)f(host)g(is)g(accessed,)49
+b(the)44 b(smaller)g(sizes)h(will)150 4777 y(automatically)33
+b(b)s(e)d(used.)275 4949 y Ft(A)n(md)h Fx(determines)23
+b(whether)f(a)h(host)f(is)h(lo)s(cal)h(b)m(y)e(examining)h(the)g(net)m
+(w)m(ork)g(in)m(terface)i(con\014guration)150 5059 y(at)37
+b(startup.)58 b(An)m(y)37 b(in)m(terface)h(c)m(hanges)f(made)g(after)f
+Ft(A)n(md)46 b Fx(has)36 b(b)s(een)g(started)h(will)g(not)f(b)s(e)g
+(noticed.)150 5168 y(The)30 b(lik)m(ely)i(e\013ect)g(will)e(b)s(e)g
+(that)h(a)g(host)f(ma)m(y)h(incorrectly)h(b)s(e)e(declared)g(non-lo)s
+(cal.)275 5340 y(Unless)g(otherwise)h(set,)g(the)f(v)-5
+b(alue)31 b(of)g Fp(${remopts})c Fx(is)k(the)f(same)h(as)g(the)f(v)-5
+b(alue)31 b(of)g Fp(${opts})p Fx(.)p eop end
+%%Page: 37 39
+TeXDict begin 37 38 bop 150 -116 a Fx(Chapter)30 b(3:)41
+b(Moun)m(t)31 b(Maps)2536 b(37)150 299 y Fm(3.3.4.6)63
+b(sublink)42 b(Option)150 446 y Fx(The)30 b(sub)s(directory)g(within)g
+(the)h(moun)m(ted)g(\014lesystem)g(to)g(whic)m(h)g(the)g(reference)g
+(should)f(p)s(oin)m(t.)42 b(This)150 555 y(can)c(b)s(e)e(used)h(to)h
+(prev)m(en)m(t)f(duplicate)h(moun)m(ts)f(in)g(cases)h(where)f(m)m
+(ultiple)h(directories)g(in)f(the)h(same)150 665 y(moun)m(ted)30
+b(\014lesystem)h(are)g(used.)150 864 y Fm(3.3.4.7)63
+b(t)m(yp)s(e)41 b(Option)150 1011 y Fx(The)i(\014lesystem)g(t)m(yp)s(e)
+g(to)h(b)s(e)e(used.)78 b(See)43 b(Chapter)g(5)g([Filesystem)i(T)m(yp)s
+(es],)h(page)e(47,)j(for)c(a)g(full)150 1121 y(description)30
+b(of)h(eac)m(h)g(t)m(yp)s(e.)p eop end
+%%Page: 38 40
+TeXDict begin 38 39 bop eop end
+%%Page: 39 41
+TeXDict begin 39 40 bop 150 -116 a Fx(Chapter)30 b(4:)41
+b Ft(A)n(md)f Fx(Command)29 b(Line)h(Options)1862 b(39)150
+299 y Fu(4)80 b Fj(A)l(md)70 b Fu(Command)54 b(Line)f(Options)150
+595 y Fx(Man)m(y)34 b(of)f Ft(A)n(md)9 b Fx('s)33 b(parameters)g(can)g
+(b)s(e)g(set)g(from)f(the)i(command)e(line.)49 b(The)32
+b(command)h(line)g(is)g(also)150 705 y(used)d(to)h(sp)s(ecify)f
+(automoun)m(t)h(p)s(oin)m(ts)f(and)g(maps.)275 860 y(The)f(general)j
+(format)e(of)h(a)g(command)f(line)h(is)390 1015 y Fp(amd)47
+b([)p Fk(options)p Fp(])e([{)i Fk(directory)f(map-name)f
+Fp([-)p Fk(map-options)p Fp(])f(})k(...])275 1170 y Fx(F)-8
+b(or)22 b(eac)m(h)h(directory)g(and)e(map-name)h(giv)m(en)h(or)f(sp)s
+(eci\014ed)f(in)g(the)h Fp(amd.conf)e Fx(\014le,)k Ft(A)n(md)31
+b Fx(establishes)150 1280 y(an)36 b(automoun)m(t)h(p)s(oin)m(t.)59
+b(The)35 b Fo(map-options)41 b Fx(ma)m(y)c(b)s(e)e(an)m(y)i(sequence)g
+(of)f(options)h(or)f(selectors|see)150 1389 y(Section)24
+b(3.3)h([Lo)s(cation)g(F)-8 b(ormat],)27 b(page)d(24.)39
+b(The)23 b Fo(map-options)28 b Fx(apply)23 b(only)h(to)g
+Ft(A)n(md)9 b Fx('s)24 b(moun)m(t)g(p)s(oin)m(t.)275
+1545 y(`)p Fp(type:=toplvl;cache:=mapd)o(efa)o(ult;)o(fs:)o(=${m)o(ap})
+p Fx(')j(is)34 b(the)g(default)f(v)-5 b(alue)34 b(for)g(the)g(map)f
+(op-)150 1654 y(tions.)64 b(Default)39 b(options)g(for)e(a)i(map)e(are)
+i(read)f(from)f(a)i(sp)s(ecial)f(en)m(try)h(in)e(the)i(map)e(whose)h(k)
+m(ey)h(is)150 1764 y(the)30 b(string)f(`)p Fp(/defaults)p
+Fx('.)39 b(When)29 b(default)h(options)g(are)g(giv)m(en)h(they)f(are)g
+(prep)s(ended)d(to)k(an)m(y)f(options)150 1873 y(sp)s(eci\014ed)d(in)h
+(the)g(moun)m(t-map)g(lo)s(cations)h(as)f(explained)g(in)g(Section)g
+(3.3.1)i([Map)e(Defaults],)i(page)f(25.)275 2029 y(The)g
+Fo(options)35 b Fx(are)c(an)m(y)f(com)m(bination)i(of)f(those)f(listed)
+h(b)s(elo)m(w.)275 2184 y(Once)23 b(the)g(command)g(line)h(has)e(b)s
+(een)h(parsed,)h(the)f(automoun)m(t)h(p)s(oin)m(ts)f(are)h(moun)m(ted.)
+38 b(The)23 b(moun)m(t)150 2293 y(p)s(oin)m(ts)36 b(are)g(created)h(if)
+g(they)f(do)g(not)g(already)h(exist,)h(in)e(whic)m(h)g(case)h(they)f
+(will)g(b)s(e)g(remo)m(v)m(ed)h(when)150 2403 y Ft(A)n(md)f
+Fx(exits.)k(Finally)-8 b(,)29 b Ft(A)n(md)36 b Fx(disasso)s(ciates)28
+b(itself)f(from)f(its)h(con)m(trolling)h(terminal)f(and)f(forks)g(in)m
+(to)i(the)150 2513 y(bac)m(kground.)275 2668 y(Note:)42
+b(Ev)m(en)31 b(if)f Ft(A)n(md)40 b Fx(has)31 b(b)s(een)f(built)g(with)g
+(`)p Fp(-DDEBUG)p Fx(')g(\(via)h Fp(configure)d(--enable-debug)p
+Fx(\),)f(it)150 2777 y(will)37 b(still)g(bac)m(kground)f(itself)h(and)f
+(disasso)s(ciate)i(itself)f(from)f(the)h(con)m(trolling)h(terminal.)60
+b(T)-8 b(o)36 b(use)h(a)150 2887 y(debugger)c(it)g(is)h(necessary)f(to)
+h(sp)s(ecify)f(`)p Fp(-D)d(daemon)p Fx(')h(on)i(the)g(command)g(line.)
+49 b(Ho)m(w)m(ev)m(er,)36 b(ev)m(en)e(with)150 2997 y(all)h(of)e(this,)
+i(moun)m(ts)f(and)f(unmoun)m(ts)f(are)i(p)s(erformed)e(in)i(the)g(bac)m
+(kground,)g(and)f Ft(A)n(md)43 b Fx(will)34 b(alw)m(a)m(ys)150
+3106 y(fork)h(b)s(efore)f(doing)h(them.)55 b(Therefore,)36
+b(debugging)f(what)g(happ)s(ens)e(closely)k(during)d(un/moun)m(ts)g(is)
+150 3216 y(more)d(c)m(hallenging.)275 3371 y Ft(A)n(l)5
+b(l)41 b Fx(of)32 b Ft(A)n(md)9 b Fx('s)33 b(command)f(options)g(\(sa)m
+(v)m(e)j Fp(-F)c Fx(and)h Fp(-T)p Fx(\))g(can)h(b)s(e)e(sp)s(eci\014ed)
+h(in)g(the)h Fp(amd.conf)d Fx(\014le.)150 3481 y(See)d(Chapter)f(6)h
+([Amd)f(Con\014guration)g(File],)j(page)f(59.)40 b(If)26
+b Ft(A)n(md)36 b Fx(is)27 b(in)m(v)m(ok)m(ed)h(without)e(an)m(y)h
+(command)150 3590 y(line)k(options,)g(it)g(will)f(default)h(to)g(using)
+f(the)g(con\014guration)h(\014le)g Fp(/etc/amd.conf)p
+Fx(,)c(if)j(one)h(exists.)150 3854 y Fw(4.1)68 b Fi(-a)44
+b Fh(directory)150 4013 y Fx(Sp)s(eci\014es)30 b(the)i(default)f(moun)m
+(t)g(directory)-8 b(.)44 b(This)30 b(option)i(c)m(hanges)g(the)f(v)-5
+b(ariable)32 b Fp(${autodir})c Fx(whic)m(h)150 4123 y(otherwise)j
+(defaults)f(to)h Fp(/a)p Fx(.)40 b(F)-8 b(or)32 b(example,)f(some)g
+(sites)g(prefer)e Fp(/amd)h Fx(or)g Fp(/n)p Fx(.)390
+4278 y Fp(amd)47 b(-a)g(/amd)g(...)150 4541 y Fw(4.2)68
+b Fi(-c)44 b Fh(cac)l(he-in)l(terv)-8 b(al)150 4701 y
+Fx(Selects)31 b(the)f(p)s(erio)s(d,)f(in)g(seconds,)h(for)g(whic)m(h)g
+(a)g(name)g(is)g(cac)m(hed)g(b)m(y)g Ft(A)n(md)p Fx(.)41
+b(If)29 b(no)h(reference)g(is)g(made)150 4810 y(to)h(the)g(v)m(olume)g
+(in)f(this)g(p)s(erio)s(d,)f Ft(A)n(md)40 b Fx(discards)30
+b(the)h(v)m(olume)g(name)f(to)h(\014lesystem)g(mapping.)275
+4966 y(Once)36 b(the)i(last)f(reference)h(to)g(a)f(\014lesystem)g(has)g
+(b)s(een)f(remo)m(v)m(ed,)k Ft(A)n(md)46 b Fx(attempts)38
+b(to)g(unmoun)m(t)150 5075 y(the)28 b(\014lesystem.)40
+b(If)28 b(the)g(unmoun)m(t)f(fails)h(the)g(in)m(terv)-5
+b(al)29 b(is)f(extended)g(b)m(y)g(a)g(further)f(p)s(erio)s(d)f(as)j(sp)
+s(eci\014ed)150 5185 y(b)m(y)h(the)h(`)p Fp(-w)p Fx(')f(command)g(line)
+h(option)g(or)f(b)m(y)g(the)h(`)p Fp(utimeout)p Fx(')e(moun)m(t)h
+(option.)275 5340 y(The)f(default)i Fo(cac)m(he-in)m(terv)-5
+b(al)37 b Fx(is)30 b(300)i(seconds)e(\(\014v)m(e)h(min)m(utes\).)p
+eop end
+%%Page: 40 42
+TeXDict begin 40 41 bop 150 -116 a Fx(40)1855 b(Am-utils)30
+b(\(4.4BSD)j(Automoun)m(ter)d(Utilities\))150 299 y Fw(4.3)68
+b Fi(-d)44 b Fh(domain)150 458 y Fx(Sp)s(eci\014es)g(the)g(host's)h
+(domain.)83 b(This)43 b(sets)i(the)g(in)m(ternal)g(v)-5
+b(ariable)45 b Fp(${domain})d Fx(and)i(a\013ects)i(the)150
+568 y Fp(${hostd})28 b Fx(v)-5 b(ariable.)275 697 y(If)30
+b(this)i(option)f(is)h(not)f(sp)s(eci\014ed)g(and)g(the)g(hostname)h
+(already)f(con)m(tains)i(the)e(lo)s(cal)i(domain)e(then)150
+806 y(that)g(is)f(used,)g(otherwise)h(the)g(default)f(v)-5
+b(alue)31 b(of)g Fp(${domain})c Fx(is)k(`)p Fp(unknown.domain)p
+Fx('.)275 935 y(F)-8 b(or)30 b(example,)h(if)f(the)g(lo)s(cal)h(domain)
+f(w)m(as)g(`)p Fp(doc.ic.ac.uk)p Fx(',)e Ft(A)n(md)39
+b Fx(could)30 b(b)s(e)f(started)h(as)h(follo)m(ws:)390
+1063 y Fp(amd)47 b(-d)g(doc.ic.ac.uk)e(...)150 1284 y
+Fw(4.4)68 b Fi(-k)44 b Fh(k)l(ernel-arc)l(hitecture)150
+1444 y Fx(Sp)s(eci\014es)25 b(the)g(k)m(ernel)h(arc)m(hitecture)h(of)f
+(the)g(system.)39 b(This)24 b(is)i(usually)f(the)h(output)f(of)g(`)p
+Fp(uname)k(-m)p Fx(')c(\(the)150 1553 y(\\mac)m(hine")34
+b(v)-5 b(alue)34 b(gotten)g(from)e Fn(uname)p Fx(\(2\)\).)49
+b(If)32 b(the)h Fn(uname)p Fx(\(2\))g(system)g(call)h(is)f(not)g(a)m(v)
+-5 b(ailable,)36 b(the)150 1663 y(v)-5 b(alue)31 b(of)f
+Fp(${karch})f Fx(defaults)h(to)h(that)g(of)g Fp(${arch})p
+Fx(.)275 1791 y(The)e(only)i(e\013ect)h(of)e(this)h(option)f(is)h(to)g
+(set)g(the)f(v)-5 b(ariable)32 b Fp(${karch})p Fx(.)275
+1920 y(This)d(option)i(w)m(ould)f(b)s(e)g(used)f(as)i(follo)m(ws:)390
+2049 y Fp(amd)47 b(-k)g(`arch)f(-k`)h(...)150 2269 y
+Fw(4.5)68 b Fi(-l)44 b Fh(log-option)150 2429 y Fx(Selects)31
+b(the)g(form)f(of)g(logging)j(to)e(b)s(e)e(made.)41 b(Sev)m(eral)32
+b(sp)s(ecial)f Fo(log-options)k Fx(are)c(recognized.)199
+2557 y(1.)61 b(If)39 b Fo(log-option)i Fx(is)f(the)f(string)g(`)p
+Fp(syslog)p Fx(',)i Ft(A)n(md)49 b Fx(will)39 b(use)g(the)h
+Fn(syslog)p Fx(\(3\))h(mec)m(hanism.)68 b(If)39 b(y)m(our)330
+2667 y(system)31 b(supp)s(orts)d(syslog)j(facilities,)i(then)d(the)h
+(default)f(facilit)m(y)j(used)c(is)i(`)p Fp(LOG_DAEMON)p
+Fx('.)199 2796 y(2.)61 b(When)43 b(using)g(syslog,)48
+b(if)43 b(y)m(ou)h(wish)f(to)h(c)m(hange)h(the)e(facilit)m(y)-8
+b(,)50 b(app)s(end)42 b(its)h(name)h(to)g(the)g(log)330
+2905 y(option)e(name,)i(delimited)e(b)m(y)f(a)h(single)g(colon.)75
+b(F)-8 b(or)42 b(example,)j(if)c Fo(log-options)47 b
+Fx(is)41 b(the)h(string)330 3015 y(`)p Fp(syslog:local7)p
+Fx(')27 b(then)j Fn(Amd)e Fx(will)j(log)g(messages)g(via)f
+Fn(syslog)p Fx(\(3\))i(using)e(the)g(`)p Fp(LOG_LOCAL7)p
+Fx(')d(fa-)330 3124 y(cilit)m(y)-8 b(.)41 b(If)23 b(the)h(facilit)m(y)h
+(name)f(sp)s(eci\014ed)f(is)h(not)f(recognized,)k Ft(A)n(md)33
+b Fx(will)24 b(default)g(to)g(`)p Fp(LOG_DAEMON)p Fx('.)330
+3234 y(Note:)48 b(while)33 b(y)m(ou)g(can)h(use)f(an)m(y)g(syslog)h
+(facilit)m(y)h(a)m(v)-5 b(ailable)36 b(on)d(y)m(our)g(system,)h(it)g
+(is)f(generally)i(a)330 3344 y(bad)30 b(idea)h(to)g(use)f(those)h
+(reserv)m(ed)f(for)g(other)h(services)g(suc)m(h)f(as)h(`)p
+Fp(kern)p Fx(',)f(`)p Fp(lpr)p Fx(',)g(`)p Fp(cron)p
+Fx(',)g(etc.)199 3472 y(3.)61 b(If)36 b Fo(log-option)i
+Fx(is)e(the)g(string)g(`)p Fp(/dev/stderr)p Fx(',)f Ft(A)n(md)45
+b Fx(will)37 b(use)f(standard)f(error,)i(whic)m(h)f(is)g(also)330
+3582 y(the)27 b(default)g(target)h(for)e(log)i(messages.)40
+b(T)-8 b(o)27 b(implemen)m(t)h(this,)f Ft(A)n(md)36 b
+Fx(sim)m(ulates)28 b(the)f(e\013ect)h(of)f(the)330 3691
+y(`)p Fp(/dev/fd)p Fx(')i(driv)m(er.)275 3839 y(An)m(y)k(other)g
+(string)g(is)h(tak)m(en)g(as)f(a)h(\014lename)f(to)h(use)f(for)g
+(logging.)51 b(Log)34 b(messages)g(are)g(app)s(ended)150
+3949 y(to)g(the)g(\014le)g(if)g(it)g(already)g(exists,)h(otherwise)f(a)
+g(new)g(\014le)f(is)h(created.)52 b(The)33 b(\014le)h(is)f(op)s(ened)g
+(once)i(and)150 4058 y(then)30 b(held)g(op)s(en,)g(rather)g(than)g(b)s
+(eing)g(re-op)s(ened)g(for)g(eac)m(h)i(message.)275 4187
+y(Normally)-8 b(,)42 b(when)37 b(long-running)h(daemons)h(hold)f(an)g
+(op)s(en)g(\014le)h(descriptor)g(on)f(a)h(log)h(\014le,)h(it)e(is)150
+4297 y(imp)s(ossible)c(to)h(\\rotate")h(the)e(log)i(\014le)e(and)f
+(compress)h(older)g(logs)i(on)e(a)g(daily)h(basis.)54
+b(The)35 b(daemon)150 4406 y(needs)g(to)i(b)s(e)e(told)h(to)g(discard)f
+(\(via)i Fn(close)p Fx(\(2\)\))i(its)d(\014le)f(handle,)i(and)e(re-op)s
+(en)h(the)g(log)g(\014le.)57 b(This)35 b(is)150 4516
+y(done)30 b(using)g Fp(amq)g(-l)f Ft(lo)-5 b(g-option)p
+Fx(.)43 b(See)31 b(Section)g(7.4.5)h([Amq)e(-l)h(option],)h(page)f(75.)
+275 4644 y(If)24 b(the)h(`)p Fp(syslog)p Fx(')f(option)h(is)g(sp)s
+(eci\014ed)f(but)g(the)h(system)g(do)s(es)g(not)g(supp)s(ort)e(syslog)j
+(or)e(if)h(the)g(named)150 4754 y(\014le)34 b(cannot)h(b)s(e)f(op)s
+(ened)f(or)i(created,)h Ft(A)n(md)44 b Fx(will)35 b(use)f(standard)f
+(error.)52 b(Error)34 b(messages)h(generated)150 4864
+y(b)s(efore)30 b Ft(A)n(md)40 b Fx(has)30 b(\014nished)f(parsing)h(the)
+g(command)g(line)h(are)g(prin)m(ted)f(on)g(standard)g(error.)275
+4992 y(Since)35 b Ft(A)n(md)45 b Fx(tends)35 b(to)h(generate)h(a)f(lot)
+g(of)g(logging)h(information)f(\(esp)s(ecially)h(if)e(debugging)h(w)m
+(as)150 5102 y(turned)29 b(on\),)h(and)g(due)f(to)i(it)f(b)s(eing)g(an)
+f(imp)s(ortan)m(t)h(program)g(running)e(on)i(the)g(system,)h(it)f(is)g
+(usually)150 5211 y(b)s(est)g(to)h(log)h(to)f(a)f(separate)i(disk)e
+(\014le.)40 b(In)30 b(that)h(case)g Ft(A)n(md)40 b Fx(w)m(ould)30
+b(b)s(e)g(started)h(as)g(follo)m(ws:)390 5340 y Fp(amd)47
+b(-l)g(/var/log/amd)e(...)p eop end
+%%Page: 41 43
+TeXDict begin 41 42 bop 150 -116 a Fx(Chapter)30 b(4:)41
+b Ft(A)n(md)f Fx(Command)29 b(Line)h(Options)1862 b(41)150
+299 y Fw(4.6)68 b Fi(-n)150 458 y Fx(Normalizes)38 b(the)e(remote)h
+(hostname)g(b)s(efore)e(using)h(it.)59 b(Normalization)38
+b(is)f(done)f(b)m(y)g(replacing)h(the)150 568 y(v)-5
+b(alue)24 b(of)g Fp(${rhost})e Fx(with)i(the)g(\(generally)h(fully)f
+(quali\014ed\))g(primary)f(name)h(returned)f(b)m(y)g(a)i(hostname)150
+677 y(lo)s(okup.)275 817 y(This)h(option)i(should)f(b)s(e)g(used)g(if)g
+(sev)m(eral)i(names)f(are)g(used)f(to)h(refer)f(to)i(a)f(single)g(host)
+g(in)f(a)h(moun)m(t)150 926 y(map.)150 1166 y Fw(4.7)68
+b Fi(-o)44 b Fh(op-sys-v)l(er)150 1325 y Fx(Ov)m(errides)29
+b(the)h(compiled-in)g(v)m(ersion)g(n)m(um)m(b)s(er)e(of)i(the)g(op)s
+(erating)g(system,)g(with)f Fo(op-sys-v)m(er)p Fx(.)41
+b(Useful)150 1435 y(when)26 b(the)h(built-in)g(v)m(ersion)g(is)g(not)g
+(desired)g(for)g(bac)m(kw)m(ard)g(compatibilit)m(y)i(reasons.)40
+b(F)-8 b(or)27 b(example,)i(if)150 1544 y(the)g(built-in)f(v)m(ersion)g
+(is)h(`)p Fp(2.5.1)p Fx(',)f(y)m(ou)h(can)f(o)m(v)m(erride)i(it)e(to)h
+(`)p Fp(5.5.1)p Fx(',)g(and)e(use)h(older)h(maps)f(that)g(w)m(ere)150
+1654 y(written)i(with)h(the)f(latter)i(in)e(mind.)150
+1893 y Fw(4.8)68 b Fi(-p)150 2053 y Fx(Causes)37 b Ft(A)n(md)9
+b Fx('s)38 b(pro)s(cess)e(id)h(to)h(b)s(e)f(prin)m(ted)g(on)g(standard)
+f(output.)61 b(This)37 b(can)g(b)s(e)g(redirected)h(to)g(a)150
+2162 y(suitable)31 b(\014le)f(for)g(use)h(with)f(kill:)390
+2301 y Fp(amd)47 b(-p)g(>)h(/var/run/amd.pid)43 b(...)275
+2441 y Fx(This)35 b(option)h(only)g(has)g(an)g(a\013ect)i(if)e
+Ft(A)n(md)45 b Fx(is)36 b(running)e(in)i(daemon)g(mo)s(de.)57
+b(If)36 b Ft(A)n(md)45 b Fx(is)36 b(started)150 2550
+y(with)30 b(the)h Fp(-D)e(daemon)g Fx(debug)h(\015ag,)h(this)f(option)h
+(is)f(ignored.)150 2790 y Fw(4.9)68 b Fi(-r)150 2949
+y Fx(T)-8 b(ells)31 b Ft(A)n(md)40 b Fx(to)31 b(restart)g(existing)g
+(moun)m(ts)g(\(see)g(Section)g(5.25)h([Inheritance)f(Filesystem],)h
+(page)f(56\).)150 3188 y Fw(4.10)68 b Fi(-t)44 b Fh(timeout.retransmit)
+150 3348 y Fx(Sp)s(eci\014es)22 b(the)h(RPC)f Fo(timeout)j
+Fx(in)m(terv)-5 b(al)24 b(and)e(the)h Fo(retransmit)h
+Fx(coun)m(ter)g(used)e(b)m(y)g(the)h(k)m(ernel)g(to)g(comm)m(u-)150
+3457 y(nicate)i(to)g Ft(A)n(md)p Fx(.)38 b(These)24 b(are)g(used)f(to)i
+(set)f(the)g(`)p Fp(timeo)p Fx(')f(and)g(`)p Fp(retrans)p
+Fx(')f(moun)m(t)i(options,)i(resp)s(ectiv)m(ely)-8 b(.)150
+3567 y(The)30 b(default)g(timeout)i(is)e(0.8)i(seconds,)e(and)g(the)h
+(default)f(n)m(um)m(b)s(er)f(of)i(retransmissions)f(is)g(11.)275
+3706 y Ft(A)n(md)51 b Fx(relies)43 b(on)g(the)f(k)m(ernel)h(RPC)f
+(retransmit)g(mec)m(hanism)h(to)g(trigger)g(moun)m(t)f(retries.)77
+b(The)150 3816 y(v)-5 b(alues)27 b(of)f(these)h(parameters)g(c)m(hange)
+g(the)g(o)m(v)m(erall)i(retry)d(in)m(terv)-5 b(al.)41
+b(T)-8 b(o)s(o)26 b(long)h(an)g(in)m(terv)-5 b(al)27
+b(giv)m(es)h(p)s(o)s(or)150 3925 y(in)m(teractiv)m(e)33
+b(resp)s(onse;)d(to)s(o)h(short)f(an)g(in)m(terv)-5 b(al)32
+b(causes)f(excessiv)m(e)h(retries.)150 4165 y Fw(4.11)68
+b Fi(-v)150 4324 y Fx(Prin)m(t)30 b(v)m(ersion)h(information)g(on)f
+(standard)g(error)g(and)f(then)i(exit.)41 b(The)30 b(output)g(is)g(of)h
+(the)g(form:)390 4463 y Fp(Copyright)45 b(\(c\))i(1997-1999)e(Erez)i
+(Zadok)390 4573 y(Copyright)e(\(c\))i(1990)g(Jan-Simon)e(Pendry)390
+4682 y(Copyright)g(\(c\))i(1990)g(Imperial)e(College)h(of)h(Science,)f
+(Technology)f(&)i(Medicine)390 4792 y(Copyright)e(\(c\))i(1990)g(The)g
+(Regents)f(of)h(the)g(University)e(of)i(California.)390
+4902 y(am-utils)f(version)f(6.0a15)h(\(build)h(61\).)390
+5011 y(Built)f(by)i(ezk@example.com)43 b(on)k(date)g(Wed)g(Oct)g(22)g
+(15:21:03)f(EDT)g(1997.)390 5121 y(cpu=sparc)f(\(big-endian\),)f
+(arch=sun4,)h(karch=sun4u.)390 5230 y(full_os=solaris2.5.1,)d(os=sos5,)
+k(osver=5.5.1,)e(vendor=sun.)390 5340 y(Map)j(support)f(for:)g(root,)h
+(passwd,)f(union,)g(nisplus,)f(nis,)i(ndbm,)f(file,)h(error.)p
+eop end
+%%Page: 42 44
+TeXDict begin 42 43 bop 150 -116 a Fx(42)1855 b(Am-utils)30
+b(\(4.4BSD)j(Automoun)m(ter)d(Utilities\))390 299 y Fp(AMFS:)46
+b(nfs,)h(link,)f(nfsx,)h(nfsl,)f(host,)g(linkx,)h(program,)e(union,)h
+(inherit,)676 408 y(ufs,)h(lofs,)f(hsfs,)h(pcfs,)f(auto,)g(direct,)g
+(toplvl,)g(error.)390 518 y(FS:)h(autofs,)f(cachefs,)f(cdfs,)i(lofs,)f
+(nfs,)h(nfs3,)f(pcfs,)g(tfs,)h(tmpfs,)f(udf,)h(ufs.)390
+628 y(Network)f(1:)h(wire="mcl-lab-net.cs.col)o(umbi)o(a.ed)o(u")41
+b(\(netnumber=128.59.13\).)390 737 y(Network)46 b(2:)h
+(wire="14-net.cs.columbia)o(.edu)o(")42 b(\(netnumber=128.59.14\).)390
+847 y(Network)k(3:)h(wire="old-net.cs.columbi)o(a.ed)o(u")42
+b(\(netnumber=128.59.16\).)275 978 y Fx(The)35 b(information)h
+(includes)g(the)g(v)m(ersion)g(n)m(um)m(b)s(er,)g(n)m(um)m(b)s(er)f(of)
+h(times)g Ft(A)n(md)45 b Fx(w)m(as)37 b(compiled)f(on)150
+1088 y(the)45 b(lo)s(cal)h(system,)i(release)e(date)f(and)f(name)h(of)f
+(the)h(release.)84 b(F)-8 b(ollo)m(wing)47 b(come)f(the)f(cpu)f(t)m(yp)
+s(e,)150 1197 y(b)m(yte)i(ordering,)j(and)c(the)h(arc)m(hitecture)h
+(and)e(k)m(ernel)h(arc)m(hitecture)h(as)f Fp(${arch})d
+Fx(and)i Fp(${karch})p Fx(,)150 1307 y(resp)s(ectiv)m(ely)-8
+b(.)52 b(The)34 b(next)g(line)g(lists)g(the)g(op)s(erating)g(system)g
+(full)f(name,)i(short)e(name,)i(v)m(ersion,)h(and)150
+1417 y(v)m(endor.)46 b(These)32 b(four)f(v)-5 b(alues)33
+b(corresp)s(ond)e(to)h(the)h(v)-5 b(ariables)33 b Fp(${full_os})p
+Fx(,)d Fp(${os})p Fx(,)h Fp(${osver})p Fx(,)g(and)150
+1526 y Fp(${vendor})p Fx(,)d(resp)s(ectiv)m(ely)-8 b(.)43
+b(See)30 b(Chapter)g(2)h([Supp)s(orted)d(Platforms],)j(page)g(17.)275
+1657 y(Then)43 b(come)j(a)f(list)h(of)f(map)f(t)m(yp)s(es)h(supp)s
+(orted,)i(\014lesystems)e(in)m(ternally)g(supp)s(orted)e(b)m(y)i
+Ft(A)n(md)150 1767 y Fx(\(AMFS\),)30 b(and)f(generic)h(\014lesystems)f
+(a)m(v)-5 b(ailable)31 b(\(FS\).)f(Finally)g(all)g(kno)m(wn)e(net)m(w)m
+(orks)i(\(if)f(an)m(y\))h(of)f(this)150 1877 y(host)43
+b(are)h(listed)g(b)m(y)f(name)h(and)e(n)m(um)m(b)s(er.)79
+b(They)43 b(are)g(a)m(v)-5 b(ailable)46 b(via)e(the)g(v)-5
+b(ariables)44 b Fp(${wire})d Fx(or)150 1986 y Fp(${network})p
+Fx(,)24 b(and)h Fp(${netnumber})d Fx(\(see)27 b(Section)f(3.3.3)i
+([Selectors],)g(page)f(26\))g(or)e(the)h(`)p Fp(in_network)p
+Fx(')150 2096 y(selector)32 b(function)e(\(see)h(Section)h(3.3.3.26)h
+([in)p 1776 2096 28 4 v 40 w(net)m(w)m(ork)e(Selector)h(F)-8
+b(unction],)31 b(page)h(30\).)150 2322 y Fw(4.12)68 b
+Fi(-w)44 b Fh(w)l(ait-timeout)150 2481 y Fx(Selects)32
+b(the)f(in)m(terv)-5 b(al)33 b(in)e(seconds)g(b)s(et)m(w)m(een)g
+(unmoun)m(t)f(attempts)i(after)g(the)f(initial)i(time-to-liv)m(e)h(has)
+150 2591 y(expired.)275 2722 y(This)29 b(defaults)i(to)g(120)g(seconds)
+g(\(t)m(w)m(o)h(min)m(utes\).)150 2948 y Fw(4.13)68 b
+Fi(-x)44 b Fh(opts)150 3108 y Fx(Sp)s(eci\014es)35 b(the)g(t)m(yp)s(e)h
+(and)f(v)m(erb)s(osit)m(y)h(of)f(log)i(messages.)57 b
+Fo(opts)39 b Fx(is)d(a)f(comma)h(separated)g(list)g(selected)150
+3217 y(from)30 b(the)g(follo)m(wing)i(options:)150 3371
+y Fp(fatal)240 b Fx(F)-8 b(atal)33 b(errors)c(\(cannot)j(b)s(e)d
+(turned)h(o\013)7 b(\))150 3524 y Fp(error)240 b Fx(Non-fatal)32
+b(errors)e(\(cannot)h(b)s(e)f(turned)f(o\013)7 b(\))150
+3677 y Fp(user)288 b Fx(Non-fatal)32 b(user)e(errors)150
+3830 y Fp(warn)288 b Fx(Reco)m(v)m(erable)33 b(errors)150
+3983 y Fp(warning)144 b Fx(Alias)31 b(for)f Fp(warn)150
+4136 y(info)288 b Fx(Information)30 b(messages)150 4289
+y Fp(map)336 b Fx(Moun)m(t)31 b(map)f(usage)150 4442
+y Fp(stats)240 b Fx(Additional)31 b(statistics)150 4595
+y Fp(all)336 b Fx(All)31 b(of)g(the)f(ab)s(o)m(v)m(e)150
+4749 y Fp(defaults)96 b Fx(An)30 b(alias)i(for)e Fp(")p
+Fx(fatal,error,user,w)m(arning,info)p Fp(")p Fx(.)275
+4902 y(Initially)43 b(a)g(set)h(of)f(default)g(logging)h(\015ags)f(is)g
+(enabled.)77 b(This)42 b(is)h(as)g(if)g(`)p Fp(-x)30
+b(defaults)p Fx(')41 b(or)h(`)p Fp(-x)150 5011 y
+(fatal,error,user,warning)o(,inf)o(o)p Fx(')33 b(had)39
+b(b)s(een)f(selected.)68 b(The)39 b(command)g(line)g(is)g(parsed)g(and)
+150 5121 y(logging)c(is)e(con)m(trolled)i(b)m(y)f(the)f
+Fp(-x)g Fx(option.)50 b(The)33 b(v)m(ery)h(\014rst)e(set)i(of)f
+(logging)j(\015ags)d(is)g(sa)m(v)m(ed)i(and)e(can)150
+5230 y(not)j(b)s(e)f(subsequen)m(tly)g(disabled)h(using)f
+Ft(A)n(mq)p Fx(.)56 b(This)35 b(default)h(set)g(of)g(options)g(is)g
+(useful)e(for)i(general)150 5340 y(pro)s(duction)29 b(use.)p
+eop end
+%%Page: 43 45
+TeXDict begin 43 44 bop 150 -116 a Fx(Chapter)30 b(4:)41
+b Ft(A)n(md)f Fx(Command)29 b(Line)h(Options)1862 b(43)275
+299 y(The)21 b(`)p Fp(info)p Fx(')h(messages)i(include)e(details)h(of)g
+(what)f(is)h(moun)m(ted)f(and)g(unmoun)m(ted)g(and)f(when)h(\014lesys-)
+150 408 y(tems)35 b(ha)m(v)m(e)i(timed)e(out.)55 b(If)34
+b(y)m(ou)h(w)m(an)m(t)h(to)g(ha)m(v)m(e)g(the)f(default)h(set)f(of)g
+(messages)h(without)f(the)h(`)p Fp(info)p Fx(')150 518
+y(messages)c(then)e(y)m(ou)h(simply)f(need)h(`)p Fp(-x)f(noinfo)p
+Fx('.)40 b(The)30 b(messages)i(giv)m(en)f(b)m(y)g(`)p
+Fp(user)p Fx(')f(relate)i(to)f(errors)150 628 y(in)i(the)h(moun)m(t)f
+(maps,)h(so)f(these)h(are)g(useful)e(when)h(new)f(maps)h(are)h
+(installed.)50 b(The)33 b(follo)m(wing)i(table)150 737
+y(lists)c(the)f(syslog)i(priorities)e(used)g(for)g(eac)m(h)i(of)e(the)h
+(message)g(t)m(yp)s(es.)150 917 y Fp(fatal)240 b Fx(`)p
+Fp(LOG_CRIT)p Fx(')150 1090 y Fp(error)g Fx(`)p Fp(LOG_ERR)p
+Fx(')150 1263 y Fp(user)288 b Fx(`)p Fp(LOG_WARNING)p
+Fx(')150 1435 y Fp(warning)144 b Fx(`)p Fp(LOG_WARNING)p
+Fx(')150 1608 y Fp(info)288 b Fx(`)p Fp(LOG_INFO)p Fx(')150
+1781 y Fp(debug)240 b Fx(`)p Fp(LOG_DEBUG)p Fx(')150
+1954 y Fp(map)336 b Fx(`)p Fp(LOG_DEBUG)p Fx(')150 2127
+y Fp(stats)240 b Fx(`)p Fp(LOG_INFO)p Fx(')275 2306 y(The)38
+b(options)g(can)h(b)s(e)f(pre\014xed)g(b)m(y)g(the)h(string)f(`)p
+Fp(no)p Fx(')h(to)g(indicate)g(that)h(this)e(option)h(should)f(b)s(e)
+150 2416 y(turned)j(o\013.)75 b(F)-8 b(or)42 b(example,)k(to)c(obtain)g
+(all)h(but)e(`)p Fp(info)p Fx(')g(messages)h(the)g(option)g(`)p
+Fp(-x)30 b(all,noinfo)p Fx(')150 2526 y(w)m(ould)g(b)s(e)g(used.)275
+2674 y(If)39 b Ft(A)n(md)50 b Fx(w)m(as)40 b(built)g(with)g(debugging)g
+(enabled)g(the)g Fp(debug)e Fx(option)j(is)f(automatically)j(enabled)
+150 2783 y(regardless)31 b(of)f(the)h(command)f(line)h(options.)150
+3036 y Fw(4.14)68 b Fi(-y)44 b Fh(NIS-domain)150 3195
+y Fx(Selects)d(an)f(alternate)i(NIS)d(domain.)70 b(This)39
+b(is)i(useful)e(for)h(debugging)g(and)f(cross-domain)i(shared)150
+3305 y(moun)m(ting.)50 b(If)33 b(this)g(\015ag)h(is)f(sp)s(eci\014ed,)h
+Ft(A)n(md)43 b Fx(immediately)35 b(attempts)f(to)g(bind)e(to)i(a)g
+(serv)m(er)g(for)f(this)150 3414 y(domain.)150 3667 y
+Fw(4.15)68 b Fi(-A)44 b Fh(arc)l(hitecture)150 3827 y
+Fx(Sp)s(eci\014es)39 b(the)h(OS)e(arc)m(hitecture)j(of)f(the)g(system.)
+68 b(The)39 b(only)h(e\013ect)h(of)e(this)h(option)g(is)f(to)i(set)f
+(the)150 3936 y(v)-5 b(ariable)31 b Fp(${arch})p Fx(.)275
+4084 y(This)e(option)i(w)m(ould)f(b)s(e)g(used)f(as)i(follo)m(ws:)390
+4232 y Fp(amd)47 b(-A)g(i386)g(...)150 4485 y Fw(4.16)68
+b Fi(-C)44 b Fh(cluster-name)150 4644 y Fx(Sp)s(eci\014es)32
+b(the)h(name)g(of)g(the)g(cluster)g(of)f(whic)m(h)h(the)g(lo)s(cal)h
+(mac)m(hine)f(is)g(a)g(mem)m(b)s(er.)47 b(The)33 b(only)f(e\013ect)150
+4754 y(is)37 b(to)h(set)g(the)g(v)-5 b(ariable)38 b Fp(${cluster})p
+Fx(.)59 b(The)37 b Fo(cluster-name)43 b Fx(is)37 b(will)h(usually)f
+(obtained)g(b)m(y)h(running)150 4863 y(another)d(command)f(whic)m(h)g
+(uses)h(a)g(database)g(to)g(map)g(the)f(lo)s(cal)i(hostname)f(in)m(to)h
+(a)f(cluster)g(name.)150 4973 y Fp(${cluster})30 b Fx(can)i(then)h(b)s
+(e)e(used)h(as)h(a)g(selector)h(to)f(restrict)g(moun)m(ting)g(of)g
+(replicated)g(data.)48 b(If)32 b(this)150 5082 y(option)g(is)g(not)f
+(giv)m(en,)j Fp(${cluster})28 b Fx(has)k(the)f(same)h(v)-5
+b(alue)32 b(as)g Fp(${domain})p Fx(.)42 b(This)31 b(w)m(ould)g(b)s(e)g
+(used)g(as)150 5192 y(follo)m(ws:)390 5340 y Fp(amd)47
+b(-C)g(`clustername`)d(...)p eop end
+%%Page: 44 46
+TeXDict begin 44 45 bop 150 -116 a Fx(44)1855 b(Am-utils)30
+b(\(4.4BSD)j(Automoun)m(ter)d(Utilities\))150 299 y Fw(4.17)68
+b Fi(-D)44 b Fh(opts)150 458 y Fx(Con)m(trols)30 b(the)f(v)m(erb)s
+(osit)m(y)g(and)g(co)m(v)m(erage)j(of)d(the)g(debugging)g(trace;)i
+Fo(opts)i Fx(is)c(a)g(comma)h(separated)f(list)150 568
+y(of)f(debugging)f(options.)41 b(The)27 b Fp(-D)g Fx(option)h(is)f
+(only)h(a)m(v)-5 b(ailable)30 b(if)e Ft(A)n(md)37 b Fx(w)m(as)28
+b(compiled)g(with)f(`)p Fp(-DDEBUG)p Fx(',)150 677 y(or)36
+b(con\014gured)f(with)h Fp(configure)27 b(--enable-debug)p
+Fx(.)54 b(The)35 b(memory)h(debugging)g(facilities)i(\(`)p
+Fp(mem)p Fx('\))150 787 y(are)33 b(only)f(a)m(v)-5 b(ailable)35
+b(if)d Ft(A)n(md)42 b Fx(w)m(as)33 b(compiled)g(with)f(`)p
+Fp(-DDEBUG_MEM)p Fx(')e(\(in)i(addition)h(to)g(`)p Fp(-DDEBUG)p
+Fx('\),)f(or)150 897 y(con\014gured)e(with)g Fp(configure)e
+(--enable-debug=mem)p Fx(.)275 1039 y(The)k(most)h(common)g(options)g
+(to)g(use)f(are)h(`)p Fp(-D)d(trace)p Fx(')i(and)g(`)p
+Fp(-D)e(test)p Fx(')i(\(whic)m(h)g(turns)g(on)g(all)i(the)150
+1149 y(useful)c(debug)f(options\).)42 b(As)30 b(usual,)g(ev)m(ery)h
+(option)g(can)g(b)s(e)f(pre\014xed)f(with)h(`)p Fp(no)p
+Fx(')g(to)h(turn)e(it)i(o\013.)150 1321 y Fp(all)336
+b Fx(all)31 b(options)g(\(excluding)g(hrtime)f(and)g(m)m(tab\))150
+1488 y Fp(defaults)96 b Fx(\\sensible")31 b(default)g(options)f
+(\(all{excluding)j(hrtime,)d(m)m(tab,)h(and)f(xdrtrace\))150
+1656 y Fp(test)288 b Fx(full)30 b(debug)g(options)g(plus)g(m)m(tab,no)s
+(daemon,nofork,noamq)150 1824 y Fp(amq)336 b Fx(register)31
+b Ft(A)n(md)40 b Fx(with)30 b(the)h(RPC)e(p)s(ortmapp)s(er,)g(for)h
+Ft(A)n(mq)150 1991 y Fp(daemon)192 b Fx(en)m(ter)31 b(daemon)f(mo)s(de)
+150 2159 y Fp(fork)288 b Fx(fork)30 b(c)m(hild)h(w)m(ork)m(er)g
+(\(hlfsd)e(only\))150 2327 y Fp(full)288 b Fx(program)30
+b(trace)150 2494 y Fp(hrtime)192 b Fx(prin)m(t)30 b(high)g(resolution)h
+(time)g(stamps)f(\(only)h(if)f Fn(syslog)p Fx(\(3\))j(is)d(not)h
+(used\))150 2662 y Fp(info)288 b Fx(info)36 b(service)i(sp)s(eci\014c)e
+(debugging)g(\(hesio)s(d,)i(nis,)g(etc.\))61 b(In)35
+b(the)i(case)h(of)e(hesio)s(d)g(maps,)630 2772 y(turns)29
+b(on)h(the)h(hesio)s(d)f(RES)p 1618 2772 28 4 v 39 w(DEBUG)i(in)m
+(ternal)f(debugging)f(option.)150 2939 y Fp(mem)336 b
+Fx(trace)31 b(memory)f(allo)s(cations.)43 b(Needs)30
+b(to)h(b)s(e)f(explicitly)h(enabled)g(at)f(compile)h(time)g(with)630
+3049 y({enable-debug=mem.)150 3217 y Fp(mtab)288 b Fx(use)80
+b(lo)s(cal)i(moun)m(t-table)g(\014le)f(\(defaults)f(to)i
+Fp(/tmp/mtab)p Fx(,)91 b(see)81 b(Section)g(6.5.6)630
+3326 y([debug)p 899 3326 V 40 w(m)m(tab)p 1143 3326 V
+40 w(\014le)31 b(P)m(arameter],)h(page)f(63\))150 3494
+y Fp(readdir)144 b Fx(sho)m(w)30 b(readdir)g(progress)150
+3661 y Fp(str)336 b Fx(debug)30 b(string)g(m)m(unging)150
+3829 y Fp(trace)240 b Fx(trace)32 b(RPC)d(proto)s(col)j(and)d(NFS)i
+(moun)m(t)f(argumen)m(ts)150 3997 y Fp(xdrtrace)96 b
+Fx(trace)32 b(XDR)e(routines)275 4169 y(Y)-8 b(ou)24
+b(ma)m(y)h(also)g(refer)f(to)h(the)f(program)g(source)h(for)f(a)g(more)
+g(detailed)i(explanation)f(of)f(the)h(a)m(v)-5 b(ailable)150
+4278 y(options.)150 4523 y Fw(4.18)68 b Fi(-F)44 b Fh(conf-\014le)150
+4682 y Fx(Sp)s(ecify)d(an)g Ft(A)n(md)51 b Fx(con\014guration)42
+b(\014le)g Fo(conf-\014le)47 b Fx(to)42 b(use.)74 b(F)-8
+b(or)43 b(a)f(description)f(of)h(the)g(format)g(and)150
+4792 y(syn)m(tax,)31 b(see)g(Chapter)e(6)i([Amd)f(Con\014guration)f
+(File],)j(page)f(59.)42 b(This)29 b(con\014guration)h(\014le)h(is)f
+(used)f(to)150 4902 y(sp)s(ecify)d(an)m(y)h(options)g(in)f(lieu)h(of)g
+(t)m(yping)g(man)m(y)g(of)f(them)h(on)f(the)h(command)g(line.)39
+b(The)27 b Fp(amd.conf)d Fx(\014le)150 5011 y(includes)31
+b(directiv)m(es)i(for)e(ev)m(ery)h(command)g(line)f(option)h
+Ft(A)n(md)41 b Fx(has,)32 b(and)f(man)m(y)g(more)h(that)g(are)g(only)
+150 5121 y(a)m(v)-5 b(ailable)39 b(via)e(the)g(con\014guration)g
+(\014le)g(facilit)m(y)-8 b(.)62 b(The)36 b(con\014guration)i(\014le)e
+(sp)s(eci\014ed)g(b)m(y)h(this)f(option)150 5230 y(is)31
+b(pro)s(cessed)f(after)h(all)h(other)f(options)g(had)f(b)s(een)h(pro)s
+(cessed,)f(regardless)h(of)g(the)g(actual)h(lo)s(cation)h(of)150
+5340 y(this)d(option)h(on)f(the)h(command)f(line.)p eop
+end
+%%Page: 45 47
+TeXDict begin 45 46 bop 150 -116 a Fx(Chapter)30 b(4:)41
+b Ft(A)n(md)f Fx(Command)29 b(Line)h(Options)1862 b(45)150
+299 y Fw(4.19)68 b Fi(-H)150 458 y Fx(Prin)m(t)30 b(a)h(brief)f(help)g
+(and)g(usage)h(string.)150 691 y Fw(4.20)68 b Fi(-O)44
+b Fh(op-sys-name)150 850 y Fx(Ov)m(errides)35 b(the)g(compiled-in)g
+(name)g(of)g(the)h(op)s(erating)f(system,)i(with)d Fo(op-sys-name)p
+Fx(.)55 b(Useful)35 b(when)150 960 y(the)i(built-in)h(name)f(is)g(not)h
+(desired)f(for)g(bac)m(kw)m(ard)g(compatibilit)m(y)j(reasons.)61
+b(F)-8 b(or)39 b(example,)g(if)f(the)150 1069 y(build)31
+b(in)h(name)g(is)h(`)p Fp(sunos5)p Fx(',)e(y)m(ou)i(can)f(o)m(v)m
+(erride)i(it)e(to)h(the)g(old)f(name)g(`)p Fp(sos5)p
+Fx(',)h(and)e(use)h(older)g(maps)150 1179 y(whic)m(h)e(w)m(ere)h
+(written)f(with)g(the)h(latter)h(in)e(mind.)150 1411
+y Fw(4.21)68 b Fi(-S)150 1571 y Fx(Do)37 b Ft(not)45
+b Fx(lo)s(c)m(k)37 b(the)f(running)f(executable)i(pages)g(of)f
+Ft(A)n(md)45 b Fx(in)m(to)37 b(memory)-8 b(.)58 b(T)-8
+b(o)36 b(impro)m(v)m(e)h Ft(A)n(md)9 b Fx('s)37 b(p)s(er-)150
+1680 y(formance,)32 b(systems)f(that)g(supp)s(ort)e(the)j
+Fn(plo)s(c)m(k)p Fx(\(3\))g(or)f Fn(mlo)s(c)m(k)-5 b(all)p
+Fx(\(2\))34 b(call)e(lo)s(c)m(k)g(the)f Ft(A)n(md)40
+b Fx(pro)s(cess)31 b(in)m(to)150 1790 y(memory)-8 b(.)54
+b(This)34 b(w)m(a)m(y)i(there)f(is)g(less)g(c)m(hance)h(the)f(op)s
+(erating)g(system)g(will)g(sc)m(hedule,)i(page)e(out,)i(and)150
+1900 y(sw)m(ap)27 b(the)h Ft(A)n(md)36 b Fx(pro)s(cess)27
+b(as)h(needed.)39 b(This)27 b(tends)f(to)j(impro)m(v)m(e)f
+Ft(A)n(md)9 b Fx('s)27 b(p)s(erformance,)h(at)g(the)f(cost)i(of)150
+2009 y(reserving)e(the)f(memory)h(used)e(b)m(y)i(the)f
+Ft(A)n(md)36 b Fx(pro)s(cess)26 b(\(making)i(it)f(una)m(v)-5
+b(ailable)27 b(for)g(other)g(pro)s(cesses\).)150 2119
+y(If)j(this)g(b)s(eha)m(vior)h(is)f(not)h(desired,)f(use)g(the)g
+Fp(-S)g Fx(option.)150 2351 y Fw(4.22)68 b Fi(-T)44 b
+Fh(tag)150 2511 y Fx(Sp)s(ecify)37 b(a)h(tag)h(to)f(use)g(with)f
+Fp(amd.conf)p Fx(.)61 b(All)38 b(map)f(en)m(tries)i(tagged)g(with)e
+Fo(tag)47 b Fx(will)38 b(b)s(e)f(pro)s(cessed.)150 2620
+y(Map)31 b(en)m(tries)i(that)e(are)h(not)g(tagged)g(are)g(alw)m(a)m(ys)
+h(pro)s(cessed.)43 b(Map)31 b(en)m(tries)h(that)g(are)g(tagged)h(with)e
+(a)150 2730 y(tag)h(other)e(than)g Fo(tag)40 b Fx(will)30
+b(not)h(b)s(e)f(pro)s(cessed.)p eop end
+%%Page: 46 48
+TeXDict begin 46 47 bop eop end
+%%Page: 47 49
+TeXDict begin 47 48 bop 150 -116 a Fx(Chapter)30 b(5:)41
+b(Filesystem)32 b(T)m(yp)s(es)2351 b(47)150 299 y Fu(5)80
+b(Filesystem)53 b(T)l(yp)t(es)150 543 y Fx(T)-8 b(o)33
+b(moun)m(t)f(a)g(v)m(olume,)i Ft(A)n(md)41 b Fx(m)m(ust)32
+b(b)s(e)g(told)g(the)h(t)m(yp)s(e)f(of)g(\014lesystem)g(to)h(b)s(e)f
+(used.)45 b(Eac)m(h)33 b(\014lesystem)150 652 y(t)m(yp)s(e)e(t)m
+(ypically)h(requires)e(additional)h(information)g(suc)m(h)f(as)g(the)h
+(\014leserv)m(er)g(name)f(for)g(NFS.)275 790 y(F)-8 b(rom)35
+b(the)h(p)s(oin)m(t)f(of)g(view)h(of)f Ft(A)n(md)p Fx(,)i(a)e
+Fo(\014lesystem)h Fx(is)f(an)m(ything)g(that)h(can)g(resolv)m(e)g(an)f
+(incoming)150 900 y(name)28 b(lo)s(okup.)40 b(An)28 b(imp)s(ortan)m(t)g
+(feature)h(is)f(supp)s(ort)e(for)i(m)m(ultiple)h(\014lesystem)g(t)m(yp)
+s(es.)40 b(Some)28 b(of)g(these)150 1009 y(\014lesystems)34
+b(are)g(implemen)m(ted)g(in)f(the)h(lo)s(cal)h(k)m(ernel)f(and)f(some)h
+(on)f(remote)h(\014leserv)m(ers,)h(whilst)f(the)150 1119
+y(others)c(are)h(implemen)m(ted)g(in)m(ternally)g(b)m(y)g
+Ft(A)n(md)p Fx(.)275 1256 y(The)f(t)m(w)m(o)i(common)f(\014lesystem)g
+(t)m(yp)s(es)g(are)g(UFS)f(and)g(NFS.)h(F)-8 b(our)31
+b(other)g(user)f(accessible)j(\014lesys-)150 1366 y(tems)c(\(`)p
+Fp(link)p Fx(',)g(`)p Fp(program)p Fx(',)e(`)p Fp(auto)p
+Fx(')h(and)g(`)p Fp(direct)p Fx('\))g(are)h(also)h(implemen)m(ted)f(in)
+m(ternally)g(b)m(y)g Ft(A)n(md)38 b Fx(and)150 1476 y(these)26
+b(are)g(describ)s(ed)f(b)s(elo)m(w.)40 b(There)25 b(are)h(t)m(w)m(o)h
+(additional)g(\014lesystem)f(t)m(yp)s(es)g(in)m(ternal)g(to)h
+Ft(A)n(md)35 b Fx(whic)m(h)150 1585 y(are)29 b(not)g(directly)g
+(accessible)i(to)e(the)g(user)f(\(`)p Fp(inherit)p Fx(')f(and)h(`)p
+Fp(error)p Fx('\).)40 b(Their)28 b(use)g(is)h(describ)s(ed)f(since)150
+1695 y(they)j(ma)m(y)g(still)g(ha)m(v)m(e)g(an)g(e\013ect)h(visible)e
+(to)h(the)g(user.)150 1932 y Fw(5.1)68 b(Net)l(w)l(ork)47
+b(Filesystem)f(\(`)p Fi(nfs)p Fw('\))150 2092 y Fx(The)30
+b Fo(nfs)j Fx(\(`)p Fp(type:=nfs)p Fx('\))c(\014lesystem)i(t)m(yp)s(e)f
+(pro)m(vides)h(access)g(to)g(Sun's)e(NFS.)150 2229 y(The)h(follo)m
+(wing)i(options)e(m)m(ust)h(b)s(e)e(sp)s(eci\014ed:)150
+2394 y Fp(rhost)240 b Fx(the)24 b(remote)g(\014leserv)m(er.)39
+b(This)22 b(m)m(ust)i(b)s(e)e(an)i(en)m(try)f(in)g(the)h(hosts)f
+(database.)40 b(IP)23 b(addresses)630 2503 y(are)g(not)f(accepted.)40
+b(The)21 b(default)i(v)-5 b(alue)23 b(is)f(tak)m(en)i(from)d(the)i(lo)s
+(cal)g(host)g(name)f(\()p Fp(${host})p Fx(\))630 2613
+y(if)30 b(no)h(other)f(v)-5 b(alue)31 b(is)f(sp)s(eci\014ed.)150
+2775 y Fp(rfs)336 b Fx(the)25 b(remote)h(\014lesystem.)39
+b(If)25 b(no)g(v)-5 b(alue)25 b(is)g(sp)s(eci\014ed)g(for)f(this)h
+(option,)i(an)e(in)m(ternal)h(default)630 2885 y(of)31
+b Fp(${path})d Fx(is)i(used.)275 3049 y(NFS)e(moun)m(ts)h(require)g(a)g
+(t)m(w)m(o)h(stage)g(pro)s(cess.)40 b(First,)30 b(the)f
+Fo(\014le)g(handle)k Fx(of)c(the)g(remote)h(\014le)f(system)150
+3159 y(m)m(ust)36 b(b)s(e)g(obtained)h(from)e(the)i(serv)m(er.)59
+b(Then)35 b(a)i(moun)m(t)f(system)g(call)i(m)m(ust)e(b)s(e)g(done)g(on)
+g(the)h(lo)s(cal)150 3268 y(system.)46 b Ft(A)n(md)41
+b Fx(k)m(eeps)33 b(a)f(cac)m(he)i(of)e(\014le)g(handles)f(for)h(remote)
+h(\014le)f(systems.)46 b(The)31 b(cac)m(he)j(en)m(tries)f(ha)m(v)m(e)
+150 3378 y(a)e(lifetime)h(of)e(a)h(few)f(min)m(utes.)275
+3516 y(If)j(a)h(required)f(\014le)h(handle)g(is)g(not)g(in)g(the)g(cac)
+m(he,)i Ft(A)n(md)44 b Fx(sends)33 b(a)h(request)g(to)h(the)f(remote)h
+(serv)m(er)150 3625 y(to)c(obtain)g(it.)275 3763 y(Historically)-8
+b(,)38 b(this)d(do)s(cumen)m(tation)h(has)f(main)m(tained)g(that)h
+Ft(A)n(md)44 b Fx(will)35 b(try)g(all)h(the)f(lo)s(cations)h(in)150
+3873 y(parallel)h(and)f(use)f(the)h(\014rst)g(one)g(whic)m(h)g(resp)s
+(onds)e(with)i(a)g(v)-5 b(alid)36 b(\014le)g(handle.)57
+b(This)36 b(has)f(not)i(b)s(een)150 3982 y(the)30 b(case)h(for)e(quite)
+h(some)g(time,)h(ho)m(w)m(ev)m(er.)42 b(Instead,)30 b
+Ft(A)n(md)39 b Fx(will)30 b(go)h(through)e(eac)m(h)h(lo)s(cation,)i
+(one)e(b)m(y)150 4092 y(one,)h(and)f(will)g(only)h(skip)f(to)h(the)f
+(next)h(one)g(if)f(the)h(previous)e(one)i(either)g(fails)g(or)f(times)h
+(out.)150 4229 y(An)f(NFS)g(en)m(try)h(migh)m(t)g(b)s(e:)390
+4367 y Fp(jsp)95 b(host!=charm;type:=nfs;r)o(host)o(:=c)o(harm)o(;rfs)o
+(:=/)o(home)o(/cha)o(rm;)o(subl)o(ink:)o(=js)o(p)275
+4505 y Fx(The)37 b(moun)m(t)h(system)g(call)h(and)e(an)m(y)h(unmoun)m
+(t)f(attempts)i(are)f(alw)m(a)m(ys)h(done)f(in)f(a)h(new)g(task)g(to)
+150 4615 y(a)m(v)m(oid)32 b(the)e(p)s(ossibilit)m(y)h(of)g(blo)s(c)m
+(king)g Ft(A)n(md)p Fx(.)150 4852 y Fw(5.2)68 b(Net)l(w)l(ork)47
+b(Host)e(Filesystem)h(\(`)p Fi(host)p Fw('\))150 5011
+y Fx(The)25 b Fo(host)j Fx(\(`)p Fp(type:=host)p Fx('\))d(\014lesystem)
+h(allo)m(ws)h(access)h(to)e(the)g(en)m(tire)h(exp)s(ort)f(tree)h(of)f
+(an)g(NFS)f(serv)m(er.)150 5121 y(The)34 b(implemen)m(tation)j(is)e(la)
+m(y)m(ered)h(ab)s(o)m(v)m(e)g(the)f(`)p Fp(nfs)p Fx(')f(implemen)m
+(tation)j(so)e(k)m(eep-aliv)m(es)i(w)m(ork)e(in)g(the)150
+5230 y(same)30 b(w)m(a)m(y)-8 b(.)42 b(The)29 b(only)h(option)g(whic)m
+(h)g(needs)f(to)i(b)s(e)e(sp)s(eci\014ed)g(is)h(`)p Fp(rhost)p
+Fx(')f(whic)m(h)g(is)h(the)g(name)g(of)g(the)150 5340
+y(\014leserv)m(er)h(to)g(moun)m(t.)p eop end
+%%Page: 48 50
+TeXDict begin 48 49 bop 150 -116 a Fx(48)1855 b(Am-utils)30
+b(\(4.4BSD)j(Automoun)m(ter)d(Utilities\))275 299 y(The)20
+b(`)p Fp(host)p Fx(')h(\014lesystem)h(t)m(yp)s(e)g(w)m(orks)f(b)m(y)g
+(querying)g(the)h(moun)m(t)f(daemon)h(on)f(the)h(giv)m(en)g(\014leserv)
+m(er)g(to)150 408 y(obtain)g(its)f(exp)s(ort)g(list.)38
+b Ft(A)n(md)31 b Fx(then)20 b(obtains)i(\014lehandles)f(for)f(eac)m(h)j
+(of)e(the)g(exp)s(orted)g(\014lesystems.)38 b(An)m(y)150
+518 y(errors)33 b(at)h(this)g(stage)h(cause)f(that)g(particular)g
+(\014lesystem)g(to)g(b)s(e)f(ignored.)50 b(Finally)35
+b(eac)m(h)g(\014lesystem)150 628 y(is)e(moun)m(ted.)50
+b(Again,)35 b(errors)e(are)g(logged)i(but)e(ignored.)49
+b(One)33 b(common)h(reason)f(for)g(moun)m(ts)g(to)h(fail)150
+737 y(is)i(that)g(the)g(moun)m(t)g(p)s(oin)m(t)g(do)s(es)f(not)h
+(exist.)58 b(Although)36 b Ft(A)n(md)45 b Fx(attempts)37
+b(to)g(automatically)h(create)150 847 y(the)k(moun)m(t)g(p)s(oin)m(t,)j
+(it)d(ma)m(y)g(b)s(e)f(on)h(a)g(remote)h(\014lesystem)f(to)h(whic)m(h)e
+Ft(A)n(md)51 b Fx(do)s(es)42 b(not)g(ha)m(v)m(e)h(write)150
+956 y(p)s(ermission.)275 1097 y(When)23 b(an)g(attempt)i(to)f(unmoun)m
+(t)e(a)i(`)p Fp(host)p Fx(')f(\014lesystem)h(moun)m(t)f(fails,)j
+Ft(A)n(md)33 b Fx(remoun)m(ts)23 b(an)m(y)h(\014lesys-)150
+1207 y(tems)32 b(whic)m(h)e(had)h(successfully)g(b)s(een)g(unmoun)m
+(ted.)42 b(T)-8 b(o)31 b(do)h(this)f Ft(A)n(md)40 b Fx(queries)31
+b(the)h(moun)m(t)f(daemon)150 1317 y(again)k(and)e(obtains)i(a)f(fresh)
+f(cop)m(y)i(of)f(the)g(exp)s(ort)g(list.)53 b Ft(A)n(md)43
+b Fx(then)34 b(tries)g(to)h(moun)m(t)f(an)m(y)g(exp)s(orted)150
+1426 y(\014lesystems)d(whic)m(h)f(are)g(not)h(curren)m(tly)f(moun)m
+(ted.)275 1567 y(Sun's)36 b(automoun)m(ter)j(pro)m(vides)f(a)h(sp)s
+(ecial)f(`)p Fp(-hosts)p Fx(')f(map.)64 b(T)-8 b(o)38
+b(ac)m(hiev)m(e)j(the)d(same)h(e\013ect)g(with)150 1677
+y Ft(A)n(md)h Fx(requires)30 b(t)m(w)m(o)h(steps.)41
+b(First)31 b(a)g(moun)m(t)f(map)g(m)m(ust)g(b)s(e)g(created)h(as)g
+(follo)m(ws:)390 1818 y Fp(*)334 b(type:=host;rhost:=${key})o(;fs)o
+(:=${)o(auto)o(dir)o(}/${)o(rhos)o(t}/)o(root)150 1959
+y Fx(and)30 b(then)g(start)h Ft(A)n(md)40 b Fx(with)30
+b(the)g(follo)m(wing)i(command)390 2100 y Fp(amd)47 b(/net)g(net.map)
+150 2241 y Fx(where)41 b(`)p Fp(net.map)p Fx(')f(is)i(the)f(name)h(of)g
+(map)f(describ)s(ed)f(ab)s(o)m(v)m(e.)75 b(Note)43 b(that)f(the)g(v)-5
+b(alue)42 b(of)g Fp(${fs})e Fx(is)150 2351 y(o)m(v)m(erridden)27
+b(in)h(the)f(map.)39 b(This)27 b(is)g(done)h(to)g(a)m(v)m(oid)h(a)e
+(clash)h(b)s(et)m(w)m(een)g(the)g(moun)m(t)f(tree)h(and)f(an)m(y)h
+(other)150 2460 y(\014lesystem)j(already)g(moun)m(ted)f(from)g(the)g
+(same)h(\014leserv)m(er.)275 2601 y(If)i(di\013eren)m(t)i(moun)m(t)f
+(options)g(are)h(needed)e(for)h(di\013eren)m(t)h(hosts)f(then)f
+(additional)i(en)m(tries)g(can)g(b)s(e)150 2711 y(added)30
+b(to)h(the)f(map,)h(for)f(example)390 2852 y Fp(host2)333
+b(opts:=ro,nosuid,soft)150 2993 y Fx(w)m(ould)30 b(soft)h(moun)m(t)f(`)
+p Fp(host2)p Fx(')g(read-only)-8 b(.)150 3235 y Fw(5.3)68
+b(Net)l(w)l(ork)47 b(Filesystem)f(Group)e(\(`)p Fi(nfsx)p
+Fw('\))150 3395 y Fx(The)21 b Fo(nfsx)28 b Fx(\(`)p Fp(type:=nfsx)p
+Fx('\))20 b(\014lesystem)i(allo)m(ws)i(a)e(group)f(of)h(\014lesystems)h
+(to)f(b)s(e)g(moun)m(ted)f(from)h(a)g(single)150 3504
+y(NFS)33 b(serv)m(er.)48 b(The)32 b(implemen)m(tation)j(is)d(la)m(y)m
+(ered)j(ab)s(o)m(v)m(e)f(the)e(`)p Fp(nfs)p Fx(')h(implemen)m(tation)h
+(so)f(k)m(eep-aliv)m(es)150 3614 y(w)m(ork)d(in)h(the)f(same)h(w)m(a)m
+(y)-8 b(.)275 3755 y Ft(W)h(ARNING)8 b Fx(:)28 b(`)p
+Fp(nfsx)p Fx(')g(is)g(mean)m(t)i(to)f(b)s(e)f(a)h(\\last)h(resort")g
+(kind)e(of)g(solution.)41 b(It)29 b(is)g(racy)g(and)f(p)s(o)s(orly)150
+3864 y(supp)s(orted.)37 b(The)24 b(authors)g Ft(highly)34
+b Fx(recommend)24 b(that)i(other)f(solutions)g(b)s(e)f(considered)g(b)s
+(efore)h(relying)150 3974 y(on)30 b(it.)275 4115 y(The)38
+b(options)i(are)f(the)h(same)f(as)h(for)f(the)g(`)p Fp(nfs)p
+Fx(')g(\014lesystem)g(with)g(one)h(di\013erence)f(for)g(`)p
+Fp(rfs)p Fx(',)j(as)150 4225 y(explained)31 b(b)s(elo)m(w.)150
+4366 y(The)f(follo)m(wing)i(options)e(should)g(b)s(e)g(sp)s(eci\014ed:)
+150 4535 y Fp(rhost)240 b Fx(the)44 b(remote)g(\014leserv)m(er.)80
+b(The)43 b(default)h(v)-5 b(alue)44 b(is)f(tak)m(en)i(from)e(the)h(lo)s
+(cal)g(host)g(name)630 4645 y(\()p Fp(${host})p Fx(\))29
+b(if)h(no)h(other)f(v)-5 b(alue)31 b(is)g(sp)s(eci\014ed.)150
+4811 y Fp(rfs)336 b Fx(is)31 b(a)h(list)g(of)f(\014lesystems)h(to)g
+(moun)m(t,)g(and)e(m)m(ust)h(b)s(e)g(sp)s(eci\014ed.)43
+b(The)31 b(list)h(is)f(in)g(the)g(form)630 4920 y(of)g(a)f(comma)h
+(separated)g(strings.)150 5089 y(F)-8 b(or)31 b(example:)390
+5230 y Fp(pub)95 b(type:=nfsx;rhost:=gould)o(;\\)629
+5340 y(rfs:=/public,/,graphics)o(,use)o(net)o(;fs:)o(=${a)o(uto)o(dir})
+o(/${r)o(hos)o(t}/r)o(oot)p eop end
+%%Page: 49 51
+TeXDict begin 49 50 bop 150 -116 a Fx(Chapter)30 b(5:)41
+b(Filesystem)32 b(T)m(yp)s(es)2351 b(49)275 299 y(The)31
+b(\014rst)h(string)g(de\014nes)g(the)g(ro)s(ot)h(of)g(the)f(tree,)i
+(and)e(is)g(applied)g(as)h(a)g(pre\014x)e(to)i(the)g(remaining)150
+408 y(mem)m(b)s(ers)27 b(of)g(the)g(list)h(whic)m(h)f(de\014ne)g(the)g
+(individual)g(\014lesystems.)40 b(The)27 b(\014rst)f(string)i(is)f
+Ft(not)37 b Fx(used)26 b(as)i(a)150 518 y(\014lesystem)33
+b(name.)47 b(A)32 b(serial)h(op)s(eration)g(is)f(used)g(to)h(determine)
+g(the)f(lo)s(cal)i(moun)m(t)e(p)s(oin)m(ts)h(to)g(ensure)150
+628 y(a)e(consisten)m(t)g(la)m(y)m(out)i(of)d(a)h(tree)g(of)g(moun)m
+(ts.)275 762 y(Here,)58 b(the)52 b Ft(thr)-5 b(e)g(e)60
+b Fx(\014lesystems,)e(`)p Fp(/public)p Fx(',)e(`)p Fp(/public/graphics)
+p Fx(')49 b(and)i(`)p Fp(/public/usenet)p Fx(',)150 871
+y(w)m(ould)30 b(b)s(e)g(moun)m(ted.)275 1005 y(A)75 b(lo)s(cal)h(moun)m
+(t)f(p)s(oin)m(t,)86 b Fp(${fs})p Fx(,)f Ft(must)g Fx(b)s(e)74
+b(sp)s(eci\014ed.)174 b(The)74 b(default)i(lo)s(cal)g(moun)m(t)150
+1115 y(p)s(oin)m(t)81 b(will)g(not)g(w)m(ork)g(correctly)i(in)d(the)h
+(general)h(case.)194 b(A)81 b(suggestion)h(is)f(to)g(use)150
+1224 y(`)p Fp(fs:=${autodir}/${rhost}/r)o(oot)p Fx('.)150
+1455 y Fw(5.4)68 b(Unix)45 b(Filesystem)i(\(`)p Fi(ufs)p
+Fw(',)d(`)p Fi(xfs)p Fw(',)h(or)g(`)p Fi(efs)p Fw('\))150
+1615 y Fx(The)54 b Fo(ufs)j Fx(\(`)p Fp(type:=ufs)p Fx('\))c
+(\014lesystem)i(t)m(yp)s(e)f(pro)m(vides)h(access)g(to)h(the)e
+(system's)h(standard)e(disk)150 1724 y(\014lesystem|usually)30
+b(a)h(deriv)-5 b(ativ)m(e)32 b(of)f(the)f(Berk)m(eley)i(F)-8
+b(ast)32 b(Filesystem.)150 1858 y(The)e(follo)m(wing)i(option)f(m)m
+(ust)f(b)s(e)g(sp)s(eci\014ed:)150 2016 y Fp(dev)336
+b Fx(the)31 b(blo)s(c)m(k)f(sp)s(ecial)h(device)h(to)f(b)s(e)f(moun)m
+(ted.)275 2174 y(A)g(UFS)g(en)m(try)h(migh)m(t)g(b)s(e:)390
+2308 y Fp(jsp)142 b(host==charm;type:=ufs;dev:)o(=/d)o(ev/s)o(d0d;)o
+(sub)o(link)o(:=js)o(p)275 2442 y Fx(UFS)42 b(is)h(the)g(default)g
+(Unix)g(disk-based)f(\014le)h(system,)j(whic)m(h)d(Am-utils)g(pic)m(ks)
+g(up)f(during)g(the)150 2552 y(auto)s(con\014guration)27
+b(phase.)39 b(Some)26 b(systems)g(ha)m(v)m(e)h(more)g(than)e(one)i(t)m
+(yp)s(e,)g(suc)m(h)f(as)g(IRIX,)g(that)h(comes)150 2661
+y(with)i(EFS)g(\(Exten)m(t)h(File)h(System\))e(and)g(XFS)g(\(Extended)g
+(File)h(System\).)41 b(In)28 b(those)i(cases,)h(y)m(ou)e(ma)m(y)150
+2771 y(explicitly)j(set)f(the)f(\014le)h(system)f(t)m(yp)s(e,)h(b)m(y)f
+(using)g(en)m(tries)i(suc)m(h:)390 2905 y Fp(ez1)142
+b(type:=efs;dev:=/dev/xd0a)390 3014 y(ez2)g(type:=xfs;dev:=/dev/sd3c)
+275 3148 y Fx(The)32 b(UFS/XFS/EFS)i(\014lesystems)g(are)g(nev)m(er)g
+(timed)f(out)h(b)m(y)f(default,)i(i.e.)50 b(they)34 b(will)g(nev)m(er)g
+(b)s(e)150 3258 y(unmoun)m(ted)29 b(b)m(y)g Ft(A)n(md)p
+Fx(.)41 b(If)29 b(automatic)j(unmoun)m(ting)d(is)g(desired,)h(the)g
+(\\unmoun)m(t")g(option)g(should)f(b)s(e)150 3367 y(added)h(to)h(the)f
+(moun)m(t)h(options)f(for)h(the)f(en)m(try)-8 b(.)150
+3599 y Fw(5.5)68 b(Cac)l(hing)46 b(Filesystem)g(\(`)p
+Fi(cachefs)p Fw('\))150 3758 y Fx(The)30 b Fo(cac)m(hefs)35
+b Fx(\(`)p Fp(type:=cachefs)p Fx('\))28 b(\014lesystem)j(cac)m(hes)h
+(\014les)e(from)g(one)h(lo)s(cation)h(on)m(to)f(another,)g(pre-)150
+3868 y(sumably)d(pro)m(viding)h(faster)g(access.)42 b(It)29
+b(is)g(particularly)h(useful)e(to)i(cac)m(he)g(from)f(a)g(larger)h(and)
+e(remote)150 3977 y(\(slo)m(w)m(er\))k(NFS)f(partition)g(to)g(a)f
+(smaller)h(and)f(lo)s(cal)i(\(faster\))f(UFS)g(directory)-8
+b(.)150 4111 y(The)30 b(follo)m(wing)i(options)e(m)m(ust)h(b)s(e)e(sp)s
+(eci\014ed:)150 4269 y Fp(cachedir)96 b Fx(the)31 b(directory)f(where)g
+(the)h(cac)m(he)h(is)e(stored.)150 4427 y Fp(rfs)336
+b Fx(the)31 b(path)f(name)g(to)h(the)g(\\bac)m(k)g(\014le)g(system")g
+(to)g(b)s(e)f(cac)m(hed)h(from.)150 4585 y Fp(fs)384
+b Fx(the)35 b(\\fron)m(t)g(\014le)g(system")g(moun)m(t)g(p)s(oin)m(t)f
+(to)i(the)f(cac)m(hed)g(\014les,)h(where)e Ft(A)n(md)44
+b Fx(will)35 b(set)h(a)630 4695 y(sym)m(b)s(olic)31 b(link)f(p)s(oin)m
+(ting)h(to.)275 4853 y(A)f(Cac)m(heFS)h(en)m(try)g(for,)f(sa)m(y)-8
+b(,)32 b(the)e Fp(/import)f Ft(A)n(md)40 b Fx(moun)m(t)30
+b(p)s(oin)m(t,)h(migh)m(t)g(b)s(e:)390 4987 y Fp(copt)94
+b(type:=cachefs;cachedir:=/c)o(ach)o(e;rf)o(s:=/)o(imp)o(ort/)o(opt;)o
+(fs:)o(=/n/)o(impo)o(rt/)o(copt)275 5121 y Fx(Access)33
+b(to)f(the)h(pathname)f Fp(/import/copt)c Fx(will)33
+b(follo)m(w)g(a)f(sym)m(b)s(olic)h(link)f(to)h Fp(/n/import/copt)p
+Fx(.)150 5230 y(The)g(latter)i(is)f(the)g(moun)m(t)g(p)s(oin)m(t)g(for)
+f(a)h(cac)m(hing)i(\014le)e(system,)h(that)f(cac)m(hes)h(from)e
+Fp(/import/opt)e Fx(to)150 5340 y Fp(/cache)p Fx(.)p
+eop end
+%%Page: 50 52
+TeXDict begin 50 51 bop 150 -116 a Fx(50)1855 b(Am-utils)30
+b(\(4.4BSD)j(Automoun)m(ter)d(Utilities\))275 299 y(The)f(cac)m(hefs)i
+(\014lesystem)f(is)g(nev)m(er)g(timed)g(out)h(b)m(y)e(default,)i(i.e.)
+41 b(it)31 b(will)f(nev)m(er)g(b)s(e)f(unmoun)m(ted)g(b)m(y)150
+408 y Ft(A)n(md)p Fx(.)53 b(If)34 b(automatic)i(unmoun)m(ting)e(is)g
+(desired,)h(the)g(\\unmoun)m(t")f(option)h(should)e(b)s(e)h(added)g(to)
+h(the)150 518 y(moun)m(t)30 b(options)h(for)f(the)h(en)m(try)-8
+b(.)275 652 y Fn(Ca)m(v)m(eats)p Fx(:)199 787 y(1.)61
+b(This)30 b(\014le)g(system)h(is)f(curren)m(tly)g(only)h(implemen)m
+(ted)g(for)f(Solaris)h(2.x!)199 921 y(2.)61 b(Before)49
+b(b)s(eing)e(used)g(for)g(the)h(\014rst)f(time,)53 b(the)48
+b(cac)m(he)i(directory)e Ft(must)57 b Fx(b)s(e)47 b(initialized)i(with)
+330 1031 y(`)p Fp(cfsadmin)28 b(-c)i Fk(cachedir)p Fx('.)69
+b(See)41 b(the)g(man)m(ual)f(page)i(for)e Fn(cfsadmin)p
+Fx(\(1M\))h(for)f(more)h(informa-)330 1140 y(tion.)199
+1274 y(3.)61 b(The)37 b(\\bac)m(k)h(\014le)f(system")h(moun)m(ted)f(m)m
+(ust)g(b)s(e)g(a)h(complete)g(\014le)g(system,)h(not)e(a)h(sub)s
+(directory)330 1384 y(thereof;)31 b(otherwise)g(y)m(ou)g(will)f(get)i
+(an)e(error)g(\\In)m(v)-5 b(alid)31 b(Argumen)m(t".)199
+1518 y(4.)61 b(If)22 b Ft(A)n(md)32 b Fx(ab)s(orts)23
+b(abnormally)-8 b(,)25 b(the)e(state)h(of)e(the)h(cac)m(he)i(ma)m(y)e
+(b)s(e)f(inconsisten)m(t,)j(requiring)e(running)330 1628
+y(the)k(command)g Fp(fsck)i(-F)h(cachefs)e Fk(cachedir)p
+Fx(.)38 b(Otherwise)27 b(y)m(ou)g(will)g(get)i(the)e(error)g(\\No)h
+(Space)330 1737 y(Left)j(on)f(Device".)150 1970 y Fw(5.6)68
+b(CD-R)l(OM)45 b(Filesystem)h(\(`)p Fi(cdfs)p Fw('\))150
+2129 y Fx(The)28 b Fo(cdfs)33 b Fx(\(`)p Fp(type:=cdfs)p
+Fx('\))27 b(\014lesystem)i(moun)m(ts)g(a)g(CD-R)m(OM)h(with)f(an)g
+(ISO9660)g(format)h(\014lesystem)150 2239 y(on)g(it.)150
+2373 y(The)g(follo)m(wing)i(option)f(m)m(ust)f(b)s(e)g(sp)s(eci\014ed:)
+150 2532 y Fp(dev)336 b Fx(the)31 b(blo)s(c)m(k)f(sp)s(ecial)h(device)h
+(to)f(b)s(e)f(moun)m(ted.)275 2691 y(Some)f(op)s(erating)h(systems)g
+(will)f(fail)i(to)f(moun)m(t)f(read-only)h(CDs)g(unless)e(the)i(`)p
+Fp(ro)p Fx(')f(option)h(is)g(sp)s(ec-)150 2800 y(i\014ed.)40
+b(A)31 b(cdfs)f(en)m(try)g(migh)m(t)h(b)s(e:)390 2935
+y Fp(cdfs)285 b(os==sunos4;type:=cdfs;dev)o(:=/d)o(ev/s)o(r0)41
+b(\\)867 3044 y(os==sunos5;addopts:=ro;ty)o(pe:=)o(cdfs)o(;de)o(v:=/)o
+(dev/)o(dsk)o(/c0t)o(6d0s)o(2)150 3276 y Fw(5.7)68 b(CD-R)l(OM)45
+b(Filesystem)h(\(`)p Fi(udf)p Fw('\))150 3436 y Fx(The)f
+Fo(udf)62 b Fx(\(`)p Fp(type:=udf)p Fx('\))44 b(\014lesystem)i(moun)m
+(ts)g(media)g(with)f(a)h(Univ)m(ersal)g(Disk)g(F)-8 b(ormat)47
+b(\(UDF\))150 3545 y(\014lesystem)31 b(on)f(it,)h(e.g.,)h(a)f(video)g
+(D)m(VD.)150 3680 y(The)f(follo)m(wing)i(option)f(m)m(ust)f(b)s(e)g(sp)
+s(eci\014ed:)150 3839 y Fp(dev)336 b Fx(the)31 b(blo)s(c)m(k)f(sp)s
+(ecial)h(device)h(to)f(b)s(e)f(moun)m(ted.)275 3998 y(Some)42
+b(op)s(erating)g(systems)g(will)h(fail)f(to)h(moun)m(t)f(read-only)h
+(media)f(unless)f(the)h(`)p Fp(ro)p Fx(')g(option)h(is)150
+4107 y(sp)s(eci\014ed.)d(A)31 b(udf)e(en)m(try)h(migh)m(t)h(b)s(e:)390
+4242 y Fp(udf)286 b(os==sunos4;type:=udf;de)o(v:=)o(/dev)o(/sr0)41
+b(\\)820 4351 y(os==sunos5;addopts:=ro;)o(typ)o(e:=u)o(df;d)o(ev:)o
+(=/de)o(v/ds)o(k/c)o(0t6d)o(0s2)150 4583 y Fw(5.8)68
+b(Lo)t(opbac)l(k)45 b(Filesystem)h(\(`)p Fi(lofs)p Fw('\))150
+4743 y Fx(The)f Fo(lofs)k Fx(\(`)p Fp(type:=lofs)p Fx('\))44
+b(\014lesystem)i(is)f(also)i(called)f(the)g(lo)s(opbac)m(k)g
+(\014lesystem.)87 b(It)45 b(moun)m(ts)h(a)150 4852 y(lo)s(cal)34
+b(directory)f(on)f(another,)i(th)m(us)e(pro)m(viding)h(moun)m(t-time)g
+(binding)f(to)h(another)g(lo)s(cation)h(\(unlik)m(e)150
+4962 y(sym)m(b)s(olic)d(links\).)275 5096 y(The)25 b(lo)s(opbac)m(k)h
+(\014lesystem)g(is)f(particularly)i(useful)d(within)h(the)h(con)m(text)
+h(of)f(a)g(c)m(hro)s(ot-ed)g(directory)150 5206 y(\(via)31
+b Fn(c)m(hro)s(ot)p Fx(\(2\)\),)j(to)d(pro)m(vide)f(access)i(to)f
+(directories)g(otherwise)g(inaccessible.)150 5340 y(The)f(follo)m(wing)
+i(option)f(m)m(ust)f(b)s(e)g(sp)s(eci\014ed:)p eop end
+%%Page: 51 53
+TeXDict begin 51 52 bop 150 -116 a Fx(Chapter)30 b(5:)41
+b(Filesystem)32 b(T)m(yp)s(es)2351 b(51)150 299 y Fp(rfs)336
+b Fx(the)31 b(pathname)f(to)h(b)s(e)f(moun)m(ted)g(on)g(top)h(of)f
+Fp(${fs})p Fx(.)275 461 y(Usually)-8 b(,)36 b(the)e(FTP)g(serv)m(er)h
+(runs)e(in)h(a)g(c)m(hro)s(ot-ed)i(en)m(vironmen)m(t,)g(for)e(securit)m
+(y)h(reasons.)52 b(In)34 b(this)150 571 y(example,)27
+b(lofs)f(is)g(used)e(to)j(pro)m(vide)e(a)h(sub)s(directory)e(within)h
+(a)h(user's)f(home)h(directory)-8 b(,)27 b(also)g(a)m(v)-5
+b(ailable)150 680 y(for)30 b(public)g(ftp.)390 817 y
+Fp(lofs)285 b(type:=lofs;rfs:=/home/ezk)o(/myf)o(tpdi)o(r;f)o(s:=/)o
+(usr/)o(ftp)o(/pub)o(/ezk)150 1052 y Fw(5.9)68 b(Memory/RAM)45
+b(Filesystem)h(\(`)p Fi(mfs)p Fw('\))150 1211 y Fx(The)c
+Fo(mfs)k Fx(\(`)p Fp(type:=mfs)p Fx('\))41 b(\014lesystem)i(is)g(a)m(v)
+-5 b(ailable)45 b(in)d(4.4BSD,)i(Lin)m(ux,)i(and)c(other)g(systems.)78
+b(It)150 1321 y(creates)47 b(a)e(\014lesystem)h(in)f(a)h(p)s(ortion)f
+(of)g(the)h(system's)f(memory)-8 b(,)50 b(th)m(us)45
+b(pro)m(viding)g(v)m(ery)h(fast)g(\014le)150 1430 y(\(v)m(olatile\))34
+b(access.)275 1567 y(XXX:)d(THIS)e(FILESYSTEM)g(IS)h(NOT)g(IMPLEMENTED)
+g(YET!)150 1802 y Fw(5.10)68 b(Null)46 b(Filesystem)g(\(`)p
+Fi(nullfs)p Fw('\))150 1961 y Fx(The)29 b Fo(n)m(ullfs)j
+Fx(\(`)p Fp(type:=nullfs)p Fx('\))27 b(\014lesystem)j(is)f(a)m(v)-5
+b(ailable)31 b(from)e(4.4BSD,)i(and)e(is)g(v)m(ery)g(similar)h(to)g
+(the)150 2071 y(lo)s(opbac)m(k)h(\014lesystem,)g Fo(lofs)p
+Fx(.)275 2207 y(XXX:)g(THIS)e(FILESYSTEM)g(IS)h(NOT)g(IMPLEMENTED)g
+(YET!)150 2443 y Fw(5.11)68 b(Flopp)l(y)45 b(Filesystem)h(\(`)p
+Fi(pcfs)p Fw('\))150 2602 y Fx(The)30 b Fo(p)s(cfs)j
+Fx(\(`)p Fp(type:=pcfs)p Fx('\))28 b(\014lesystem)j(moun)m(ts)f(a)g
+(\015opp)m(y)g(previously)g(formatted)h(for)f(the)g(MS-DOS)150
+2712 y(format.)150 2848 y(The)g(follo)m(wing)i(option)f(m)m(ust)f(b)s
+(e)g(sp)s(eci\014ed:)150 3010 y Fp(dev)336 b Fx(the)31
+b(blo)s(c)m(k)f(sp)s(ecial)h(device)h(to)f(b)s(e)f(moun)m(ted.)275
+3172 y(A)g(p)s(cfs)f(en)m(try)i(migh)m(t)g(b)s(e:)390
+3309 y Fp(pcfs)285 b(os==sunos4;type:=pcfs;dev)o(:=/d)o(ev/f)o(d0)41
+b(\\)867 3418 y(os==sunos5;type:=pcfs;dev)o(:=/d)o(ev/d)o(isk)o(ette)
+150 3653 y Fw(5.12)68 b(T)-11 b(ranslucen)l(t)45 b(Filesystem)h(\(`)p
+Fi(tfs)p Fw('\))150 3813 y Fx(The)30 b Fo(tfs)k Fx(\(`)p
+Fp(type:=tfs)p Fx('\))29 b(\014lesystem)i(is)f(an)g(older)h(v)m(ersion)
+g(of)f(the)h(4.4BSD)h Fo(unionfs)p Fx(.)275 3949 y(XXX:)f(THIS)e
+(FILESYSTEM)g(IS)h(NOT)g(IMPLEMENTED)g(YET!)150 4184
+y Fw(5.13)68 b(Shared)45 b(Memory)p Fi(+)p Fw(Sw)l(ap)g(Filesystem)h
+(\(`)p Fi(tmpfs)p Fw('\))150 4344 y Fx(The)34 b Fo(tmpfs)j
+Fx(\(`)p Fp(type:=tmpfs)p Fx('\))c(\014lesystem)h(shares)g(memory)g(b)s
+(et)m(w)m(een)h(a)g(the)g(sw)m(ap)f(device)h(and)f(the)150
+4453 y(rest)27 b(of)f(the)h(system.)39 b(It)27 b(is)f(generally)i(used)
+d(to)i(pro)m(vide)g(a)g(fast)f(access)i Fp(/tmp)d Fx(directory)-8
+b(,)29 b(one)d(that)h(uses)150 4563 y(memory)j(that)h(is)g(otherwise)f
+(un)m(used.)40 b(This)29 b(\014lesystem)i(is)g(a)m(v)-5
+b(ailable)32 b(in)e(SunOS)e(4.x)j(and)f(5.x.)275 4699
+y(XXX:)h(THIS)e(FILESYSTEM)g(IS)h(NOT)g(IMPLEMENTED)g(YET!)150
+4935 y Fw(5.14)68 b(User)46 b(ID)f(Mapping)f(Filesystem)j(\(`)p
+Fi(umapfs)p Fw('\))150 5094 y Fx(The)32 b Fo(umapfs)i
+Fx(\(`)p Fp(type:=umapfs)p Fx('\))c(\014lesystem)i(maps)g(User)g(IDs)g
+(of)g(\014le)g(o)m(wnership,)g(and)f(is)i(a)m(v)-5 b(ailable)150
+5204 y(from)30 b(4.4BSD.)275 5340 y(XXX:)h(THIS)e(FILESYSTEM)g(IS)h
+(NOT)g(IMPLEMENTED)g(YET!)p eop end
+%%Page: 52 54
+TeXDict begin 52 53 bop 150 -116 a Fx(52)1855 b(Am-utils)30
+b(\(4.4BSD)j(Automoun)m(ter)d(Utilities\))150 299 y Fw(5.15)68
+b(Program)46 b(Filesystem)g(\(`)p Fi(program)p Fw('\))150
+458 y Fx(The)38 b Fo(program)g Fx(\(`)p Fp(type:=program)p
+Fx('\))e(\014lesystem)j(t)m(yp)s(e)g(allo)m(ws)h(a)f(program)f(to)h(b)s
+(e)f(run)f(whenev)m(er)i(a)150 568 y(moun)m(t)e(or)f(unmoun)m(t)g(is)g
+(required.)59 b(This)35 b(allo)m(ws)j(easy)f(addition)g(of)g(supp)s
+(ort)e(for)h(other)h(\014lesystem)150 677 y(t)m(yp)s(es,)32
+b(suc)m(h)g(as)g(MIT's)f(Remote)i(Virtual)f(Disk)h(\(R)-10
+b(VD\))32 b(whic)m(h)g(has)f(a)h(programmatic)h(in)m(terface)g(via)150
+787 y(the)e(commands)f(`)p Fp(rvdmount)p Fx(')e(and)i(`)p
+Fp(rvdunmount)p Fx('.)150 917 y(Both)h(of)g(the)f(follo)m(wing)i
+(options)f(m)m(ust)f(b)s(e)g(sp)s(eci\014ed:)150 1069
+y Fp(mount)240 b Fx(the)31 b(program)f(whic)m(h)g(will)h(p)s(erform)d
+(the)j(moun)m(t.)150 1220 y Fp(unmount)150 1371 y(umount)192
+b Fx(the)25 b(program)g(whic)m(h)f(will)h(p)s(erform)e(the)i(unmoun)m
+(t.)38 b(F)-8 b(or)26 b(con)m(v)m(enience,)i(y)m(ou)d(ma)m(y)h(use)e
+(ei-)630 1481 y(ther)i(`)p Fp(unmount)p Fx(')g(or)g(`)p
+Fp(umount)p Fx(')g(but)f(not)i(b)s(oth.)39 b(If)26 b(neither)h(is)f
+(de\014ned,)h Ft(A)n(md)36 b Fx(will)27 b(default)630
+1591 y(to)37 b(`)p Fp(umount)28 b(${fs})p Fx(')35 b(\(the)h(actual)i
+(unmoun)m(t)c(program)i(pathname)g(will)g(b)s(e)f(automati-)630
+1700 y(cally)d(determined)e(at)h(the)f(time)h(GNU)g Fp(configure)d
+Fx(runs.\))275 1851 y(The)23 b(exit)h(co)s(de)g(from)f(these)h(t)m(w)m
+(o)h(programs)e(is)h(in)m(terpreted)g(as)g(a)f(Unix)h(error)f(co)s(de.)
+39 b(As)23 b(usual,)i(exit)150 1961 y(co)s(de)33 b(zero)g(indicates)h
+(success.)47 b(T)-8 b(o)33 b(execute)h(the)f(program,)g
+Ft(A)n(md)42 b Fx(splits)32 b(the)h(string)g(on)f(whitespace)150
+2071 y(to)h(create)h(an)e(arra)m(y)h(of)g(substrings.)45
+b(Single)33 b(quotes)f(`)p Fp(')p Fx(')h(can)g(b)s(e)e(used)h(to)h
+(quote)g(whitespace)g(if)f(that)150 2180 y(is)27 b(required)g(in)g(an)g
+(argumen)m(t.)40 b(There)27 b(is)g(no)g(w)m(a)m(y)h(to)g(escap)s(e)g
+(or)f(c)m(hange)i(the)e(single)h(quote)g(c)m(haracter.)275
+2311 y(T)-8 b(o)34 b(run)e(e.g.)53 b(the)34 b(program)f(`)p
+Fp(rvdmount)p Fx(')g(with)g(a)h(host)g(name)g(and)g(\014lesystem)g(as)g
+(argumen)m(ts,)h(it)150 2420 y(w)m(ould)23 b(b)s(e)g(sp)s(eci\014ed)g
+(b)m(y)g(`)p Fp(fs:=${autodir}${path};type)o(:=pr)o(ogra)o(m;m)o(ount)o
+(:="/)o(etc)o(/rvd)o(moun)o(t)150 2530 y(rvdmount)28
+b(fserver)h(${fs}";unmount:="/etc/)o(rdvu)o(moun)o(t)24
+b(rvdumount)k(${fs}")p Fx('.)275 2660 y(The)41 b(\014rst)h(elemen)m(t)h
+(in)f(the)h(arra)m(y)f(is)h(tak)m(en)g(as)f(the)h(pathname)f(of)g(the)g
+(program)g(to)h(execute.)150 2770 y(The)36 b(other)h(mem)m(b)s(ers)e
+(of)i(the)g(arra)m(y)g(form)f(the)g(argumen)m(t)h(v)m(ector)h(to)f(b)s
+(e)f(passed)g(to)h(the)g(program,)150 2879 y Fo(including)30
+b(argumen)m(t)i(zero)p Fx(.)43 b(The)30 b(arra)m(y)h(is)g(exactly)i
+(the)e(same)g(as)g(the)g(arra)m(y)g(passed)g(to)g(the)g(execv\(\))150
+2989 y(system)g(call)h(\(man)f(execv)h(for)e(details\).)43
+b(The)30 b(split)h(string)g(m)m(ust)g(ha)m(v)m(e)h(at)f(least)h(t)m(w)m
+(o)g(elemen)m(ts.)43 b(The)150 3099 y(programs)29 b(are)i(directly)f
+(executed)h(b)m(y)e Ft(A)n(md)p Fx(,)h(not)h(via)f(a)g(shell.)41
+b(Therefore,)30 b(if)f(a)i(script)e(is)h(to)h(b)s(e)e(used)150
+3208 y(as)i(a)f(moun)m(t/umoun)m(t)h(program,)f(it)h
+Fo(m)m(ust)h Fx(b)s(egin)e(with)g(a)h Fp(#!)f Fx(in)m(terpreter)h(sp)s
+(eci\014cation.)275 3339 y(Often,)23 b(this)f(program)f(moun)m(t)h(t)m
+(yp)s(e)g(is)g(used)f(for)h(Sam)m(ba)g(moun)m(ts,)h(where)f(y)m(ou)g
+(need)f(a)i(double)e(slash)150 3448 y(in)37 b(pathnames.)59
+b(Ho)m(w)m(ev)m(er,)41 b Ft(A)n(md)46 b Fx(normalizes)38
+b(sequences)f(of)g(slashes)g(in)m(to)h(one)f(slash.)60
+b(Therefore,)150 3558 y(y)m(ou)29 b(m)m(ust)g(use)f(an)h(escap)s(ed)g
+(slash,)g(preceded)f(b)m(y)h(an)g(escap)s(ed)g(bac)m(kslash.)40
+b(So)29 b(to)h(get)g(a)f(double)f(slash)150 3667 y(in)38
+b(the)g(moun)m(t)g(command,)i(y)m(ou)e(need)g(the)g(eigh)m(t)h(c)m
+(haracter)h(sequence)e(`)p Fp(\\\\\\/\\\\\\/)p Fx(')e(in)i(y)m(our)g
+(map.)150 3777 y(F)-8 b(or)31 b(example:)275 3907 y(`)p
+Fp(mount="/sbin/mount)25 b(mount)k(-r)h(-t)g(smbfs)f(-o-N,-Ihostname)d
+(\\\\\\/\\\\\\/guest@venus/mp3)o(")p Fx(')p 3895 3928
+42 84 v 275 4038 a(If)j(a)h(\014lesystem)g(t)m(yp)s(e)g(is)g(to)h(b)s
+(e)e(hea)m(vily)i(used,)f(it)g(ma)m(y)h(b)s(e)e(w)m(orth)m(while)h
+(adding)g(a)g(new)g(\014lesystem)150 4147 y(t)m(yp)s(e)h(in)m(to)g
+Ft(A)n(md)p Fx(,)g(but)e(for)h(most)h(uses)f(the)h(program)f
+(\014lesystem)g(should)g(su\016ce.)275 4278 y(When)39
+b(the)i(program)e(is)h(run,)i(standard)d(input)g(and)g(standard)g
+(error)h(are)g(inherited)g(from)g(the)150 4387 y(curren)m(t)32
+b(v)-5 b(alues)33 b(used)f(b)m(y)h Ft(A)n(md)p Fx(.)48
+b(Standard)31 b(output)h(is)h(a)g(duplicate)g(of)g(standard)f(error.)47
+b(The)32 b(v)-5 b(alue)150 4497 y(sp)s(eci\014ed)30 b(with)g(the)g
+Fp(-l)g Fx(command)g(line)h(option)g(has)f(no)g(e\013ect)i(on)e
+(standard)g(error.)275 4627 y Ft(A)n(md)37 b Fx(guaran)m(tees)30
+b(that)f(the)f(moun)m(tp)s(oin)m(t)h(will)f(b)s(e)g(created)h(b)s
+(efore)f(calling)i(the)f(moun)m(t)f(program,)150 4737
+y(and)i(that)h(it)g(will)f(b)s(e)g(remo)m(v)m(ed)h(after)g(the)g(umoun)
+m(t)f(program)g(returns)f(success.)150 4961 y Fw(5.16)68
+b(Sym)l(b)t(olic)45 b(Link)g(Filesystem)h(\(`)p Fi(link)p
+Fw('\))150 5121 y Fx(Eac)m(h)28 b(\014lesystem)g(t)m(yp)s(e)f(creates)i
+(a)f(sym)m(b)s(olic)f(link)h(to)g(p)s(oin)m(t)f(from)g(the)g(v)m(olume)
+h(name)g(to)g(the)f(ph)m(ysical)150 5230 y(moun)m(t)40
+b(p)s(oin)m(t.)68 b(The)39 b(`)p Fp(link)p Fx(')g(\014lesystem)h(do)s
+(es)g(the)g(same)g(without)f(an)m(y)h(other)g(side)g(e\013ects.)70
+b(This)150 5340 y(allo)m(ws)32 b(an)m(y)e(part)h(of)f(the)h(mac)m
+(hines)g(name)f(space)h(to)g(b)s(e)f(accessed)h(via)g
+Ft(A)n(md)p Fx(.)p eop end
+%%Page: 53 55
+TeXDict begin 53 54 bop 150 -116 a Fx(Chapter)30 b(5:)41
+b(Filesystem)32 b(T)m(yp)s(es)2351 b(53)275 299 y(One)28
+b(common)i(use)f(for)f(the)i(symlink)e(\014lesystem)i(is)f
+Fp(/homes)f Fx(whic)m(h)g(can)i(b)s(e)e(made)i(to)g(con)m(tain)g(an)150
+408 y(en)m(try)38 b(for)g(eac)m(h)h(user)e(whic)m(h)g(p)s(oin)m(ts)h
+(to)h(their)f(\(auto-moun)m(ted\))h(home)f(directory)-8
+b(.)64 b(Although)38 b(this)150 518 y(ma)m(y)31 b(seem)g(rather)f(exp)s
+(ensiv)m(e,)h(it)g(pro)m(vides)f(a)h(great)g(deal)g(of)g(administrativ)
+m(e)h(\015exibilit)m(y)-8 b(.)150 654 y(The)30 b(follo)m(wing)i(option)
+f(m)m(ust)f(b)s(e)g(de\014ned:)150 815 y Fp(fs)384 b
+Fx(The)32 b(v)-5 b(alue)34 b(of)f Fo(fs)j Fx(option)d(sp)s(eci\014es)g
+(the)g(destination)g(of)g(the)h(link,)f(as)g(mo)s(di\014ed)f(b)m(y)h
+(the)630 925 y Fo(sublink)26 b Fx(option.)38 b(If)22
+b Fo(sublink)k Fx(is)c(non-n)m(ull,)h(it)f(is)g(app)s(ended)e(to)j
+Fp(${fs}/)d Fx(and)h(the)h(resulting)630 1034 y(string)30
+b(is)h(used)e(as)i(the)g(target.)275 1196 y(The)f(`)p
+Fp(link)p Fx(')f(\014lesystem)i(can)g(b)s(e)f(though)m(t)h(of)g(as)g
+(iden)m(tical)h(to)f(the)g(`)p Fp(ufs)p Fx(')f(\014lesystem)h(but)f
+(without)150 1305 y(actually)i(moun)m(ting)f(an)m(ything.)275
+1441 y(An)f(example)h(en)m(try)f(migh)m(t)h(b)s(e:)390
+1577 y Fp(jsp)142 b(host==charm;type:=link;fs:)o(=/h)o(ome/)o(char)o
+(m;s)o(ubli)o(nk:=)o(jsp)275 1713 y Fx(whic)m(h)30 b(w)m(ould)g(return)
+f(a)i(sym)m(b)s(olic)g(link)f(p)s(oin)m(ting)g(to)i Fp(/home/charm/jsp)
+p Fx(.)150 1947 y Fw(5.17)68 b(Sym)l(b)t(olic)45 b(Link)g(Filesystem)h
+(I)t(I)f(\(`)p Fi(linkx)p Fw('\))150 2106 y Fx(The)26
+b Fo(linkx)32 b Fx(\(`)p Fp(type:=linkx)p Fx('\))25 b(\014lesystem)h(t)
+m(yp)s(e)h(is)f(iden)m(tical)i(to)f(`)p Fp(link)p Fx(')f(with)g(the)g
+(exception)i(that)f(the)150 2216 y(target)32 b(of)e(the)h(link)f(m)m
+(ust)h(exist.)41 b(Existence)31 b(is)g(c)m(hec)m(k)m(ed)h(with)e(the)h
+Fn(lstat)p Fx(\(2\))i(system)d(call.)275 2352 y(The)e(`)p
+Fp(linkx)p Fx(')h(\014lesystem)g(t)m(yp)s(e)h(is)f(particularly)h
+(useful)f(for)g(wildcard)g(map)g(en)m(tries.)41 b(In)28
+b(this)i(case,)150 2461 y(a)e(list)h(of)f(p)s(ossible)g(targets)h(can)g
+(b)s(e)e(giv)m(en)i(and)f Ft(A)n(md)37 b Fx(will)28 b(c)m(ho)s(ose)h
+(the)g(\014rst)e(one)h(whic)m(h)g(exists)h(on)f(the)150
+2571 y(lo)s(cal)k(mac)m(hine.)150 2805 y Fw(5.18)68 b(NFS-Link)44
+b(Filesystem)j(\(`)p Fi(nfsl)p Fw('\))150 2965 y Fx(The)34
+b Fo(nfsl)j Fx(\(`)p Fp(type:=nfsl)p Fx('\))32 b(\014lesystem)j(t)m(yp)
+s(e)f(is)g(a)h(com)m(bination)g(of)f(t)m(w)m(o)i(others:)48
+b(`)p Fp(link)p Fx(')34 b(and)f(`)p Fp(nfs)p Fx('.)150
+3074 y(If)j(the)h(lo)s(cal)i(host)d(name)h(is)g(equal)h(to)f(the)g(v)-5
+b(alue)37 b(of)g Fp(${rhost})e Ft(and)47 b Fx(the)37
+b(target)i(pathname)d(listed)150 3184 y(in)h Fp(${fs})g
+Fx(exists,)j(`)p Fp(nfsl)p Fx(')d(will)i(b)s(eha)m(v)m(e)f(exactly)h
+(as)f(`)p Fp(type:=link)p Fx(',)g(and)f(refer)h(to)g(the)g(target)i(as)
+e(a)150 3294 y(sym)m(b)s(olic)24 b(link.)38 b(If)24 b(the)f(lo)s(cal)i
+(host)f(name)g(is)f(not)h(equal)g(to)h(the)f(v)-5 b(alue)24
+b(of)g Fp(${rhost})p Fx(,)f(or)g(if)h(the)g(target)h(of)150
+3403 y(the)f(link)f(do)s(es)g(not)h(exist,)i Ft(A)n(md)33
+b Fx(will)23 b(treat)i(it)f(as)g(`)p Fp(type:=nfs)p Fx(',)f(and)g(will)
+g(moun)m(t)h(a)g(remote)g(pathname)150 3513 y(for)30
+b(it.)275 3649 y(The)23 b(`)p Fp(nfsl)p Fx(')h(\014lesystem)g(t)m(yp)s
+(e)g(is)g(particularly)h(useful)e(as)i(a)f(shorthand)f(for)h(the)g
+(more)g(cum)m(b)s(ersome)150 3758 y(and)g(y)m(et)i(one)g(of)f(the)g
+(most)g(p)s(opular)f Ft(A)n(md)34 b Fx(en)m(tries.)40
+b(F)-8 b(or)26 b(example,)h(y)m(ou)e(can)g(simplify)g(all)h(map)e(en)m
+(tries)150 3868 y(that)31 b(lo)s(ok)g(lik)m(e:)390 4004
+y Fp(zing)190 b(-fs:=/n/shekel/u/zing)42 b(\\)772 4113
+y(host!=shekel;type:=nfs;r)o(hos)o(t:=s)o(heke)o(l;r)o(fs:=)o(${fs)o(})
+g(\\)772 4223 y(host==shekel;type:=link)275 4358 y Fx(or)390
+4494 y Fp(zing)190 b(-fs:=/n/shekel/u/zing)42 b(\\)772
+4604 y(exists\(${fs}\);type:=link)f(\\)772 4713 y
+(!exists\(${fs}\);type:=nfs)o(;rh)o(ost:)o(=she)o(kel)o(;rfs)o(:=${)o
+(fs})275 4849 y Fx(in)m(to)31 b(a)g(shorter)f(form)390
+4985 y Fp(zing)190 b(type:=nfsl;fs:=/n/shekel)o(/u/)o(zing)o(;rho)o
+(st:)o(=she)o(kel;)o(rfs)o(:=${)o(fs})275 5121 y Fx(Not)27
+b(just)f(do)s(es)g(it)h(mak)m(e)g(the)g(maps)f(smaller)h(and)f
+(simpler,)h(but)f(it)h(a)m(v)m(oids)h(p)s(ossible)e(mistak)m(es)h(that)
+150 5230 y(often)k(happ)s(en)d(when)i(forgetting)i(to)f(set)g(up)e(the)
+h(t)m(w)m(o)i(en)m(tries)f(\(one)g(for)f(`)p Fp(type:=nfs)p
+Fx(')e(and)i(the)h(other)150 5340 y(for)f(`)p Fp(type:=link)p
+Fx('\))f(necessary)h(to)h(p)s(erform)e(transparen)m(t)i(moun)m(ts)f(of)
+h(existing)g(or)f(remote)i(moun)m(ts.)p eop end
+%%Page: 54 56
+TeXDict begin 54 55 bop 150 -116 a Fx(54)1855 b(Am-utils)30
+b(\(4.4BSD)j(Automoun)m(ter)d(Utilities\))150 299 y Fw(5.19)68
+b(Automoun)l(t)45 b(Filesystem)i(\(`)p Fi(auto)p Fw('\))150
+458 y Fx(The)29 b Fo(auto)36 b Fx(\(`)p Fp(type:=auto)p
+Fx('\))28 b(\014lesystem)i(t)m(yp)s(e)g(creates)i(a)e(new)f(automoun)m
+(t)i(p)s(oin)m(t)f(b)s(elo)m(w)g(an)g(existing)150 568
+y(automoun)m(t)41 b(p)s(oin)m(t.)72 b(T)-8 b(op-lev)m(el)43
+b(automoun)m(t)f(p)s(oin)m(ts)e(app)s(ear)g(as)h(system)g(moun)m(t)g(p)
+s(oin)m(ts.)71 b(An)41 b(au-)150 677 y(tomoun)m(t)36
+b(moun)m(t)f(p)s(oin)m(t)g(can)g(also)h(app)s(ear)e(as)h(a)h
+(sub-directory)e(of)h(an)g(existing)h(automoun)m(t)g(p)s(oin)m(t.)150
+787 y(This)28 b(allo)m(ws)h(some)g(additional)g(structure)f(to)h(b)s(e)
+f(added,)h(for)f(example)h(to)g(mimic)g(the)f(moun)m(t)h(tree)g(of)150
+897 y(another)i(mac)m(hine.)275 1036 y(The)e(follo)m(wing)j(options)f
+(ma)m(y)g(b)s(e)f(sp)s(eci\014ed:)150 1203 y Fp(cache)240
+b Fx(sp)s(eci\014es)36 b(whether)g(the)h(data)g(in)f(this)h(moun)m
+(t-map)f(should)g(b)s(e)g(cac)m(hed.)60 b(The)36 b(default)630
+1313 y(v)-5 b(alue)31 b(is)f(`)p Fp(none)p Fx(',)g(in)g(whic)m(h)g
+(case)i(no)e(cac)m(hing)i(is)e(done)g(in)g(order)g(to)h(conserv)m(e)h
+(memory)-8 b(.)630 1450 y(Ho)m(w)m(ev)m(er,)37 b(b)s(etter)d(p)s
+(erformance)g(and)f(reliabilit)m(y)j(can)e(b)s(e)g(obtained)g(b)m(y)g
+(cac)m(hing)i(some)630 1559 y(or)30 b(all)i(of)e(a)h(moun)m(t-map.)630
+1696 y(If)22 b(the)g(cac)m(he)i(option)f(sp)s(eci\014es)f(`)p
+Fp(all)p Fx(',)i(the)e(en)m(tire)h(map)f(is)h(en)m(umerated)f(when)f
+(the)i(moun)m(t)630 1806 y(p)s(oin)m(t)30 b(is)h(created.)630
+1943 y(If)j(the)g(cac)m(he)i(option)f(sp)s(eci\014es)f(`)p
+Fp(inc)p Fx(',)h(cac)m(hing)h(is)e(done)g(incremen)m(tally)i(as)e(and)g
+(when)630 2052 y(data)g(is)f(required.)49 b(Some)34 b(map)f(t)m(yp)s
+(es)g(do)g(not)h(supp)s(ort)d(cac)m(he)k(mo)s(de)e(`)p
+Fp(all)p Fx(',)h(in)f(whic)m(h)630 2162 y(case)e(`)p
+Fp(inc)p Fx(')f(is)h(used)e(whenev)m(er)i(`)p Fp(all)p
+Fx(')f(is)g(requested.)630 2299 y(Cac)m(hing)h(can)g(b)s(e)e(en)m
+(tirely)j(disabled)e(b)m(y)g(using)g(cac)m(he)i(mo)s(de)e(`)p
+Fp(none)p Fx('.)630 2436 y(If)k(the)g(cac)m(he)i(option)f(sp)s
+(eci\014es)f(`)p Fp(regexp)p Fx(')f(then)h(the)g(en)m(tire)h(map)f
+(will)h(b)s(e)f(en)m(umerated)630 2545 y(and)j(eac)m(h)h(k)m(ey)g(will)
+g(b)s(e)e(treated)i(as)g(an)f(egrep-st)m(yle)i(regular)f(expression.)61
+b(The)36 b(order)630 2655 y(in)c(whic)m(h)h(a)g(cac)m(hed)h(map)e(is)h
+(searc)m(hed)g(do)s(es)g(not)g(corresp)s(ond)e(to)j(the)f(ordering)f
+(in)h(the)630 2765 y(source)39 b(map)f(so)h(the)g(regular)f
+(expressions)h(should)e(b)s(e)h(m)m(utually)h(exclusiv)m(e)h(to)f(a)m
+(v)m(oid)630 2874 y(confusion.)630 3011 y(Eac)m(h)g(moun)m(t)f(map)f(t)
+m(yp)s(e)i(has)e(a)i(default)f(cac)m(he)i(t)m(yp)s(e,)g(usually)e(`)p
+Fp(inc)p Fx(',)h(whic)m(h)f(can)h(b)s(e)630 3121 y(selected)32
+b(b)m(y)e(sp)s(ecifying)g(`)p Fp(mapdefault)p Fx('.)630
+3258 y(The)j(cac)m(he)j(mo)s(de)d(for)h(a)g(moun)m(t)g(map)f(can)h
+(only)g(b)s(e)g(selected)h(on)f(the)g(command)f(line.)630
+3367 y(Starting)e Ft(A)n(md)40 b Fx(with)30 b(the)g(command:)870
+3504 y Fp(amd)47 b(/homes)f(hesiod.homes)e(-cache:=inc)630
+3641 y Fx(will)27 b(cause)g(`)p Fp(/homes)p Fx(')f(to)h(b)s(e)f
+(automoun)m(ted)i(using)e(the)h Fo(Hesio)s(d)j Fx(name)d(serv)m(er)g
+(with)g(lo)s(cal)630 3751 y(incremen)m(tal)32 b(cac)m(hing)f(of)g(all)g
+(successfully)g(resolv)m(ed)g(names.)630 3888 y(All)45
+b(cac)m(hed)g(data)g(is)g(forgotten)g(whenev)m(er)g Ft(A)n(md)53
+b Fx(receiv)m(es)46 b(a)f(`)p Fp(SIGHUP)p Fx(')e(signal)i(and,)630
+3998 y(if)g(cac)m(he)h(`)p Fp(all)p Fx(')f(mo)s(de)f(w)m(as)h
+(selected,)50 b(the)45 b(cac)m(he)i(will)e(b)s(e)f(reloaded.)84
+b(This)44 b(can)i(b)s(e)630 4107 y(used)36 b(to)i(inform)e
+Ft(A)n(md)46 b Fx(that)38 b(a)f(map)g(has)f(b)s(een)h(up)s(dated.)59
+b(In)36 b(addition,)j(whenev)m(er)e(a)630 4217 y(cac)m(he)30
+b(lo)s(okup)e(fails)h(and)f Ft(A)n(md)38 b Fx(needs)28
+b(to)h(examine)g(a)g(map,)f(the)h(map's)f(mo)s(dify)g(time)h(is)630
+4326 y(examined.)40 b(If)28 b(the)h(cac)m(he)h(is)f(out)f(of)h(date)g
+(with)f(resp)s(ect)h(to)g(the)g(map)f(then)g(it)h(is)g(\015ushed)630
+4436 y(as)i(if)f(a)h(`)p Fp(SIGHUP)p Fx(')e(had)h(b)s(een)f(receiv)m
+(ed.)630 4573 y(An)24 b(additional)i(option)f(\(`)p Fp(sync)p
+Fx('\))g(ma)m(y)g(b)s(e)f(sp)s(eci\014ed)h(to)g(force)g
+Ft(A)n(md)34 b Fx(to)26 b(c)m(hec)m(k)g(the)f(map's)630
+4682 y(mo)s(dify)h(time)h(whenev)m(er)g(a)g(cac)m(hed)h(en)m(try)f(is)g
+(b)s(eing)f(used.)39 b(F)-8 b(or)28 b(example,)g(an)f(incremen-)630
+4792 y(tal,)32 b(sync)m(hronized)e(cac)m(he)i(w)m(ould)e(b)s(e)g
+(created)h(b)m(y)f(the)h(follo)m(wing)h(command:)870
+4929 y Fp(amd)47 b(/homes)f(hesiod.homes)e(-cache:=inc,sync)150
+5093 y(fs)384 b Fx(sp)s(eci\014es)30 b(the)h(name)f(of)h(the)f(moun)m
+(t)g(map)g(to)i(use)e(for)g(the)g(new)g(moun)m(t)h(p)s(oin)m(t.)630
+5230 y(Arguably)37 b(this)g(should)f(ha)m(v)m(e)i(b)s(een)e(sp)s
+(eci\014ed)g(with)h(the)g Fp(${rfs})e Fx(option)j(but)e(w)m(e)i(are)630
+5340 y(no)m(w)30 b(stuc)m(k)h(with)f(it)h(due)f(to)h(historical)h
+(acciden)m(t.)p eop end
+%%Page: 55 57
+TeXDict begin 55 56 bop 150 -116 a Fx(Chapter)30 b(5:)41
+b(Filesystem)32 b(T)m(yp)s(es)2351 b(55)150 299 y Fp(pref)288
+b Fx(alters)31 b(the)g(name)g(that)g(is)g(lo)s(ok)m(ed)g(up)f(in)g(the)
+h(moun)m(t)f(map.)41 b(If)30 b Fp(${pref})p Fx(,)f(the)i
+Fo(pre\014x)p Fx(,)f(is)630 408 y(non-n)m(ull)35 b(then)f(it)i(is)f
+(prep)s(ended)e(to)i(the)h(name)f(requested)f(b)m(y)h(the)h(k)m(ernel)f
+Fo(b)s(efore)40 b Fx(the)630 518 y(map)25 b(is)g(searc)m(hed.)39
+b(The)25 b(default)g(pre\014x)f(is)h(the)g(pre\014x)f(of)h(the)g(paren)
+m(t)h(map)e(\(if)i(an)m(y\))f(with)630 628 y(name)33
+b(of)f(the)h(auto)g(no)s(de)f(app)s(ended)f(to)i(it.)47
+b(That)33 b(means)f(if)h(y)m(ou)f(w)m(an)m(t)i(no)e(pre\014x)g(y)m(ou)
+630 737 y(m)m(ust)e(sa)m(y)h(so)g(in)f(the)h(map:)40
+b(`)p Fp(pref:=null)p Fx('.)150 898 y Fp(opts)288 b Fx(Normally)-8
+b(,)42 b(`)p Fp(auto)p Fx(')c(st)m(yle)h(maps)f(are)h(not)f(bro)m
+(wsable)h(ev)m(en)g(if)f(y)m(ou)h(turn)e(on)h(directory)630
+1007 y(bro)m(wsabilit)m(y)56 b(\(see)g(Section)g(6.4.2)g([bro)m(wsable)
+p 2382 1007 28 4 v 41 w(dirs)e(P)m(arameter],)63 b(page)56
+b(60\).)115 b(T)-8 b(o)630 1117 y(enable)73 b(bro)m(wsing)e(en)m(tries)
+i(in)f(`)p Fp(auto)p Fx(')f(maps,)83 b(sp)s(ecify)72
+b(`)p Fp(opts:=browsable)p Fx(')c(or)630 1226 y(`)p Fp
+(opts:=fullybrowsable)p Fx(')25 b(in)30 b(the)h(description)f(of)h
+(this)f(map.)275 1387 y(The)85 b(serv)m(er)h(`)p Fp(dylan.doc.ic.ac.uk)
+p Fx(')81 b(has)k(t)m(w)m(o)i(user)e(disks:)151 b(`)p
+Fp(/dev/dsk/2s0)p Fx(')83 b(and)150 1497 y(`)p Fp(/dev/dsk/5s0)p
+Fx('.)133 b(These)62 b(are)g(accessed)h(as)g(`)p Fp(/home/dylan/dk2)p
+Fx(')58 b(and)k(`)p Fp(/home/dylan/dk5)p Fx(')150 1606
+y(resp)s(ectiv)m(ely)-8 b(.)68 b(Since)39 b(`)p Fp(/home)p
+Fx(')f(is)h(already)g(an)g(automoun)m(t)h(p)s(oin)m(t,)h(this)e(naming)
+g(is)g(ac)m(hiev)m(ed)h(with)150 1716 y(the)31 b(follo)m(wing)g(map)f
+(en)m(tries:)390 1852 y Fp(dylan)380 b(type:=auto;fs:=${map};pref)o
+(:=${)o(key)o(}/)390 1961 y(dylan/dk2)188 b(type:=ufs;dev:=/dev/dsk/2s)
+o(0)390 2071 y(dylan/dk5)g(type:=ufs;dev:=/dev/dsk/5s)o(0)150
+2305 y Fw(5.20)68 b(Direct)46 b(Automoun)l(t)f(Filesystem)h(\(`)p
+Fi(direct)p Fw('\))150 2464 y Fx(The)c Fo(direct)i Fx(\(`)p
+Fp(type:=direct)p Fx('\))c(\014lesystem)j(is)f(almost)h(iden)m(tical)h
+(to)f(the)f(automoun)m(t)h(\014lesystem.)150 2574 y(Instead)33
+b(of)f(app)s(earing)h(to)g(b)s(e)f(a)i(directory)f(of)g(moun)m(t)f(p)s
+(oin)m(ts,)i(it)f(app)s(ears)f(as)h(a)g(sym)m(b)s(olic)g(link)g(to)h(a)
+150 2683 y(moun)m(ted)f(\014lesystem.)49 b(The)33 b(moun)m(t)g(is)g
+(done)g(at)h(the)f(time)h(the)f(link)g(is)g(accessed.)50
+b(See)33 b(Section)h(5.19)150 2793 y([Automoun)m(t)d(Filesystem],)h
+(page)f(54,)h(for)e(a)h(list)g(of)f(required)g(options.)275
+2928 y(Direct)35 b(automoun)m(t)g(p)s(oin)m(ts)f(are)h(created)g(b)m(y)
+f(sp)s(ecifying)g(the)h(`)p Fp(direct)p Fx(')e(\014lesystem)h(t)m(yp)s
+(e)h(on)f(the)150 3038 y(command)c(line:)390 3173 y Fp(amd)47
+b(...)g(/usr/man)e(auto.direct)g(-type:=direct)275 3309
+y Fx(where)29 b(`)p Fp(auto.direct)p Fx(')f(w)m(ould)i(con)m(tain)i(an)
+e(en)m(try)h(suc)m(h)f(as:)390 3444 y Fp(usr/man)189
+b(-type:=nfs;rfs:=/usr/man)41 b(\\)915 3554 y(rhost:=man-server1)91
+b(rhost:=man-server2)275 3689 y Fx(In)32 b(this)h(example,)i(`)p
+Fp(man-server1)p Fx(')30 b(and)j(`)p Fp(man-server2)p
+Fx(')d(are)k(\014le)f(serv)m(ers)g(whic)m(h)g(exp)s(ort)g(copies)150
+3799 y(of)g(the)g(man)m(ual)g(pages.)49 b(Note)35 b(that)e(the)g(k)m
+(ey)h(whic)m(h)e(is)h(lo)s(ok)m(ed)h(up)e(is)h(the)g(name)g(of)g(the)g
+(automoun)m(t)150 3909 y(p)s(oin)m(t)d(without)h(the)f(leading)h(`)p
+Fp(/)p Fx('.)275 4044 y(Note)38 b(that)g(the)f(implemen)m(tation)i(of)e
+(the)h(traditional)g Fo(direct)i Fx(\014lesystem)d(is)g(essen)m(tially)
+j(a)d(hac)m(k)150 4154 y(\(pretending)32 b(that)i(the)f(ro)s(ot)g(of)g
+(an)f(NFS)h(\014lesystem)g(is)g(a)g(symlink\))f(and)g(man)m(y)h(mo)s
+(dern)e(op)s(erating)150 4263 y(systems)36 b(get)h(v)m(ery)f(unhapp)m
+(y)e(ab)s(out)h(it.)58 b(F)-8 b(or)36 b(example,)i(Lin)m(ux)e(k)m
+(ernel)g(2.4)p Fp(+)h Fx(completely)g(disallo)m(ws)150
+4373 y(it,)j(and)d(Solaris)h(2.8)h(fails)f(to)g(unmoun)m(t)f(it)h(when)
+f Ft(A)n(md)47 b Fx(sh)m(uts)37 b(do)m(wn.)62 b(Therefore,)39
+b(the)f(use)f(of)h(the)150 4482 y(traditional)32 b Fo(direct)h
+Fx(\014lesystem)d(is)h(strongly)f(discouraged;)h(it)g(is)g(only)f
+(semi-supp)s(orted,)g(at)h(b)s(est.)275 4618 y(The)40
+b(autofs)h(implemen)m(tations)h(that)f(p)s(ermit)f(direct)i(moun)m(ts)e
+(are)h(fully)g(supp)s(orted,)g(ho)m(w)m(ev)m(er.)150
+4727 y(That)j(curren)m(tly)h(includes)f(all)h(v)m(ersions)g(of)g
+(Solaris.)83 b(Lin)m(ux)44 b(autofs)h(do)s(es)f(NOT)g(supp)s(ort)e
+(direct)150 4837 y(moun)m(ts)30 b(at)h(all.)150 5071
+y Fw(5.21)68 b(Union)46 b(Filesystem)g(\(`)p Fi(union)p
+Fw('\))150 5230 y Fx(The)32 b Fo(union)g Fx(\(`)p Fp(type:=union)p
+Fx('\))f(\014lesystem)i(t)m(yp)s(e)g(allo)m(ws)h(the)f(con)m(ten)m(ts)h
+(of)f(sev)m(eral)h(directories)g(to)g(b)s(e)150 5340
+y(merged)j(and)g(made)g(visible)h(in)e(a)i(single)g(directory)-8
+b(.)62 b(This)36 b(can)i(b)s(e)e(used)h(to)g(o)m(v)m(ercome)j(one)d(of)
+h(the)p eop end
+%%Page: 56 58
+TeXDict begin 56 57 bop 150 -116 a Fx(56)1855 b(Am-utils)30
+b(\(4.4BSD)j(Automoun)m(ter)d(Utilities\))150 299 y(ma)5
+b(jor)31 b(limitations)i(of)e(the)h(Unix)e(moun)m(t)i(mec)m(hanism)f
+(whic)m(h)g(only)g(allo)m(ws)h(complete)h(directories)f(to)150
+408 y(b)s(e)e(moun)m(ted.)275 552 y(F)-8 b(or)41 b(example,)i(supp)s
+(osing)c Fp(/tmp)g Fx(and)h Fp(/var/tmp)e Fx(w)m(ere)j(to)g(b)s(e)e
+(merged)i(in)m(to)g(a)g(new)e(directory)150 662 y(called)c
+Fp(/mtmp)p Fx(,)e(with)g(\014les)g(in)h Fp(/var/tmp)d
+Fx(taking)j(precedence.)51 b(The)33 b(follo)m(wing)i(command)e(could)h
+(b)s(e)150 771 y(used)c(to)h(ac)m(hiev)m(e)h(this)f(e\013ect:)390
+915 y Fp(amd)47 b(...)g(/mtmp)f(union:/tmp:/var/tmp)d(-type:=union)275
+1059 y Fx(Curren)m(tly)-8 b(,)28 b(the)g(unioned)e(directories)j(m)m
+(ust)f Ft(not)37 b Fx(b)s(e)27 b(automoun)m(ted.)40 b(That)28
+b(w)m(ould)f(cause)i(a)f(dead-)150 1169 y(lo)s(c)m(k.)59
+b(This)35 b(seriously)i(limits)f(the)h(curren)m(t)f(usefulness)f(of)h
+(this)g(\014lesystem)g(t)m(yp)s(e)h(and)e(the)i(problem)150
+1278 y(will)31 b(b)s(e)e(addressed)h(in)g(a)h(future)e(release)j(of)e
+Ft(A)n(md)p Fx(.)275 1422 y(Files)24 b(created)g(in)f(the)g(union)f
+(directory)i(are)f(actually)i(created)f(in)f(the)g(last)h(named)f
+(directory)-8 b(.)39 b(This)150 1532 y(is)d(done)g(b)m(y)g(creating)h
+(a)f(wildcard)g(en)m(try)g(whic)m(h)g(p)s(oin)m(ts)g(to)g(the)g
+(correct)h(directory)-8 b(.)59 b(The)35 b(wildcard)150
+1641 y(en)m(try)g(is)g(visible)h(if)f(the)g(union)f(directory)h(is)g
+(listed,)i(so)f(allo)m(wing)g(y)m(ou)g(to)f(see)h(whic)m(h)f(directory)
+g(has)150 1751 y(priorit)m(y)-8 b(.)275 1895 y(The)35
+b(\014les)g(visible)h(in)g(the)f(union)g(directory)h(are)g(computed)g
+(at)g(the)g(time)g Ft(A)n(md)45 b Fx(is)36 b(started,)i(and)150
+2004 y(are)g(not)g(k)m(ept)h(up-to-date)g(with)f(resp)s(ect)f(to)i(the)
+f(underlying)f(directories.)64 b(Similarly)-8 b(,)41
+b(if)d(a)g(link)g(is)150 2114 y(remo)m(v)m(ed,)32 b(for)e(example)h
+(with)f(the)g(`)p Fp(rm)p Fx(')h(command,)f(it)h(will)g(b)s(e)e(lost)j
+(forev)m(er.)150 2360 y Fw(5.22)68 b(Error)46 b(Filesystem)g(\(`)p
+Fi(error)p Fw('\))150 2520 y Fx(The)25 b Fo(error)32
+b Fx(\(`)p Fp(type:=error)p Fx('\))24 b(\014lesystem)i(t)m(yp)s(e)g(is)
+g(used)f(in)m(ternally)i(as)f(a)g(catc)m(h-all)i(in)e(the)g(case)g
+(where)150 2629 y(none)42 b(of)g(the)f(other)i(\014lesystems)e(w)m(as)i
+(selected,)j(or)c(some)g(other)g(error)f(o)s(ccurred.)75
+b(Lo)s(okups)41 b(and)150 2739 y(moun)m(ts)30 b(alw)m(a)m(ys)i(fail)f
+(with)f(\\No)i(suc)m(h)e(\014le)g(or)h(directory".)41
+b(All)31 b(other)g(op)s(erations)f(trivially)i(succeed.)275
+2883 y(The)d(error)h(\014lesystem)h(is)f(not)h(directly)g(accessible.)
+150 3129 y Fw(5.23)68 b(T)-11 b(op-lev)l(el)46 b(Filesystem)g(\(`)p
+Fi(toplvl)p Fw('\))150 3289 y Fx(The)26 b Fo(toplvl)k
+Fx(\(`)p Fp(type:=toplvl)p Fx('\))24 b(\014lesystems)i(is)g(deriv)m(ed)
+h(from)e(the)h(`)p Fp(auto)p Fx(')g(\014lesystem)g(and)g(is)g(used)f
+(to)150 3398 y(moun)m(t)35 b(the)g(top-lev)m(el)i(automoun)m(t)f(no)s
+(des.)53 b(Requests)35 b(of)g(this)g(t)m(yp)s(e)g(are)g(automatically)j
+(generated)150 3508 y(from)30 b(the)g(command)h(line)f(argumen)m(ts.)
+150 3754 y Fw(5.24)68 b(Ro)t(ot)46 b(Filesystem)g(\(`)p
+Fi(root)p Fw('\))150 3914 y Fx(The)36 b Fo(ro)s(ot)j
+Fx(\(`)p Fp(type:=root)p Fx('\))c(\014lesystem)h(t)m(yp)s(e)h(acts)h
+(as)e(an)h(in)m(ternal)g(placeholder)g(on)m(to)h(whic)m(h)e
+Ft(A)n(md)150 4023 y Fx(can)h(pin)f(`)p Fp(toplvl)p Fx(')f(moun)m(ts.)
+60 b(Only)36 b(one)h(no)s(de)f(of)h(this)g(t)m(yp)s(e)g(need)f(ev)m(er)
+i(exist)f(and)f(one)h(is)g(created)150 4133 y(automatically)c(during)c
+(startup.)41 b(The)30 b(e\013ect)h(of)g(ha)m(ving)g(more)f(than)h(one)f
+(ro)s(ot)h(no)s(de)f(is)g(unde\014ned.)275 4277 y(The)f(ro)s(ot)i
+(\014lesystem)g(is)f(not)h(directly)g(accessible.)150
+4523 y Fw(5.25)68 b(Inheritance)46 b(Filesystem)g(\(`)p
+Fi(inherit)p Fw('\))150 4682 y Fx(The)36 b Fo(inheritance)42
+b Fx(\(`)p Fp(type:=inherit)p Fx('\))34 b(\014lesystem)i(is)h(not)f
+(directly)h(accessible.)60 b(Instead,)38 b(in)m(ternal)150
+4792 y(moun)m(t)g(no)s(des)g(of)g(this)h(t)m(yp)s(e)f(are)h
+(automatically)i(generated)f(when)d Ft(A)n(md)48 b Fx(is)38
+b(started)h(with)f(the)h Fp(-r)150 4902 y Fx(option.)i(A)m(t)29
+b(this)g(time)g(the)g(system)g(moun)m(t)g(table)h(is)f(scanned)f(to)h
+(lo)s(cate)i(an)m(y)e(\014lesystems)g(whic)m(h)g(are)150
+5011 y(already)d(moun)m(ted.)38 b(If)25 b(an)m(y)g(reference)h(to)f
+(these)h(\014lesystems)f(is)g(made)g(through)f Ft(A)n(md)35
+b Fx(then)25 b(instead)g(of)150 5121 y(attempting)30
+b(to)g(moun)m(t)g(it,)g Ft(A)n(md)38 b Fx(sim)m(ulates)31
+b(the)e(moun)m(t)g(and)g Fo(inherits)j Fx(the)e(\014lesystem.)40
+b(This)29 b(allo)m(ws)150 5230 y(a)d(new)f(v)m(ersion)h(of)g
+Ft(A)n(md)35 b Fx(to)26 b(b)s(e)f(installed)i(on)e(a)h(liv)m(e)h
+(system)f(simply)f(b)m(y)h(killing)g(the)g(old)g(daemon)f(with)150
+5340 y(`)p Fp(SIGTERM)p Fx(')k(and)h(starting)h(the)f(new)g(one.)p
+eop end
+%%Page: 57 59
+TeXDict begin 57 58 bop 150 -116 a Fx(Chapter)30 b(5:)41
+b(Filesystem)32 b(T)m(yp)s(es)2351 b(57)275 299 y(This)27
+b(\014lesystem)i(t)m(yp)s(e)f(is)g(not)h(generally)g(visible)g
+(externally)-8 b(,)31 b(but)c(it)i(is)f(p)s(ossible)g(that)h(the)f
+(output)150 408 y(from)40 b(`)p Fp(amq)30 b(-m)p Fx(')40
+b(ma)m(y)i(list)f(`)p Fp(inherit)p Fx(')e(as)i(the)g(\014lesystem)g(t)m
+(yp)s(e.)72 b(This)40 b(happ)s(ens)f(when)h(an)g(inherit)150
+518 y(op)s(eration)31 b(cannot)g(b)s(e)f(completed)h(for)f(some)h
+(reason,)g(usually)f(b)s(ecause)g(a)h(\014leserv)m(er)g(is)f(do)m(wn.)p
+eop end
+%%Page: 58 60
+TeXDict begin 58 59 bop eop end
+%%Page: 59 61
+TeXDict begin 59 60 bop 150 -116 a Fx(Chapter)30 b(6:)41
+b(Amd)30 b(Con\014guration)g(File)2094 b(59)150 299 y
+Fu(6)80 b(Amd)54 b(Con\014guration)d(File)150 603 y Fx(The)28
+b(`)p Fp(amd.conf)p Fx(')g(\014le)h(is)g(the)g(con\014guration)g
+(\014le)g(for)g Ft(A)n(md)p Fx(,)g(as)h(part)e(of)h(the)h(am-utils)f
+(suite.)41 b(This)28 b(\014le)150 713 y(con)m(tains)k(run)m(time)e
+(con\014guration)g(information)h(for)f(the)h Ft(A)n(md)40
+b Fx(automoun)m(ter)31 b(program.)150 980 y Fw(6.1)68
+b(File)46 b(F)-11 b(ormat)150 1140 y Fx(The)28 b(`)p
+Fp(amd.conf)p Fx(')g(\014le)h(consists)g(of)g(sections)h(and)f
+(parameters.)40 b(A)29 b(section)i(b)s(egins)d(with)h(the)g(name)g(of)
+150 1249 y(the)f(section)i(in)e(square)g(brac)m(k)m(ets)h(`)p
+Fp([])p Fx(')f(and)g(con)m(tin)m(ues)h(un)m(til)g(the)f(next)h(section)
+g(b)s(egins)f(or)g(the)g(end)g(of)150 1359 y(the)j(\014le)f(is)g(reac)m
+(hed.)42 b(Sections)31 b(con)m(tain)h(parameters)e(of)h(the)f(form)g(`)
+p Fp(name)g(=)g(value)p Fx('.)275 1517 y(The)20 b(\014le)g(is)h
+(line-based)f(|)h(that)g(is,)i(eac)m(h)e(newline-terminated)h(line)e
+(represen)m(ts)h(either)g(a)g(commen)m(t,)150 1626 y(a)31
+b(section)g(name)g(or)f(a)h(parameter.)41 b(No)31 b(line-con)m(tin)m
+(uation)i(syn)m(tax)e(is)f(a)m(v)-5 b(ailable.)275 1784
+y(Section)31 b(names,)f(parameter)h(names)f(and)g(their)h(v)-5
+b(alues)30 b(are)h(case)g(sensitiv)m(e.)275 1942 y(Only)43
+b(the)i(\014rst)f(equals)g(sign)h(in)f(a)h(parameter)g(is)f
+(signi\014can)m(t.)84 b(Whitespace)46 b(b)s(efore)e(or)g(after)150
+2051 y(the)33 b(\014rst)g(equals)h(sign)f(is)g(discarded.)49
+b(Leading,)34 b(trailing)h(and)d(in)m(ternal)i(whitespace)g(in)f
+(section)i(and)150 2161 y(parameter)41 b(names)g(is)f(irrelev)-5
+b(an)m(t.)73 b(Leading)41 b(and)f(trailing)h(whitespace)h(in)e(a)h
+(parameter)g(v)-5 b(alue)41 b(is)150 2271 y(discarded.)56
+b(In)m(ternal)36 b(whitespace)g(within)f(a)h(parameter)g(v)-5
+b(alue)36 b(is)f(not)h(allo)m(w)m(ed,)j(unless)c(the)h(whole)150
+2380 y(parameter)31 b(v)-5 b(alue)31 b(is)f(quoted)h(with)f(double)g
+(quotes)g(as)h(in)f(`)p Fp(name)g(=)g("some)f(value")p
+Fx('.)275 2538 y(An)m(y)i(line)g(b)s(eginning)g(with)g(a)h(p)s(ound)d
+(sign)i(`)p Fp(#)p Fx(')h(is)f(ignored,)h(as)f(are)h(lines)f(con)m
+(taining)i(only)f(white-)150 2648 y(space.)275 2806 y(The)40
+b(v)-5 b(alues)42 b(follo)m(wing)g(the)g(equals)f(sign)g(in)g
+(parameters)g(are)h(all)g(either)f(a)h(string)f(\(no)g(quotes)150
+2915 y(needed)35 b(if)g(string)g(do)s(es)f(not)h(include)g(spaces\))h
+(or)f(a)g(b)s(o)s(olean,)i(whic)m(h)d(ma)m(y)i(b)s(e)e(giv)m(en)i(as)g
+(`)p Fp(yes)p Fx('/`)p Fp(no)p Fx('.)150 3025 y(Case)31
+b(is)f(signi\014can)m(t)h(in)f(all)i(v)-5 b(alues.)41
+b(Some)30 b(items)h(suc)m(h)f(as)h(cac)m(he)h(timeouts)f(are)g(n)m
+(umeric.)150 3292 y Fw(6.2)68 b(The)45 b(Global)g(Section)150
+3452 y Fx(The)28 b(global)h(section)g(m)m(ust)f(b)s(e)g(sp)s(eci\014ed)
+f(as)i(`)p Fp([global])p Fx('.)38 b(P)m(arameters)29
+b(in)f(this)g(section)i(either)e(apply)150 3561 y(to)g
+Ft(A)n(md)37 b Fx(as)28 b(a)g(whole,)g(or)g(to)g(all)h(other)f(regular)
+f(map)g(sections)i(whic)m(h)e(follo)m(w.)41 b(There)27
+b(should)g(b)s(e)g(only)150 3671 y(one)k(global)g(section)h(de\014ned)d
+(in)h(one)h(con\014guration)f(\014le.)275 3829 y(It)h(is)h(highly)g
+(recommended)f(that)i(this)e(section)i(b)s(e)f(sp)s(eci\014ed)f
+(\014rst)g(in)g(the)h(con\014guration)g(\014le.)45 b(If)150
+3938 y(it)27 b(is)g(not,)h(then)f(regular)g(map)g(sections)h(whic)m(h)e
+(precede)h(it)h(will)f(not)g(use)g(global)h(v)-5 b(alues)27
+b(de\014ned)f(later.)150 4206 y Fw(6.3)68 b(Regular)46
+b(Map)f(Sections)150 4365 y Fx(P)m(arameters)38 b(in)e(regular)h
+(\(non-global\))i(sections)e(apply)g(to)g(a)g(single)h(map)e(en)m(try)
+-8 b(.)60 b(F)-8 b(or)38 b(example,)h(if)150 4475 y(the)d(map)f
+(section)h(`)p Fp([/homes])p Fx(')e(is)h(de\014ned,)h(then)f(all)i
+(parameters)e(follo)m(wing)i(it)f(will)g(b)s(e)f(applied)g(to)150
+4584 y(the)c Fp(/homes)d Ft(A)n(md)p Fx(-managed)j(moun)m(t)g(p)s(oin)m
+(t.)150 4852 y Fw(6.4)68 b(Common)45 b(P)l(arameters)150
+5011 y Fx(These)36 b(parameters)h(can)g(b)s(e)f(sp)s(eci\014ed)g
+(either)i(in)e(the)h(global)h(or)e(a)h(map-sp)s(eci\014c)g(section.)61
+b(En)m(tries)150 5121 y(sp)s(eci\014ed)36 b(in)h(a)h(map-sp)s(eci\014c)
+f(section)h(o)m(v)m(erride)g(the)g(default)f(v)-5 b(alue)38
+b(or)f(one)g(de\014ned)f(in)h(the)h(global)150 5230 y(section.)k(If)29
+b(suc)m(h)h(a)g(common)g(parameter)g(is)g(sp)s(eci\014ed)g(only)f(in)h
+(the)g(global)h(section,)h(it)e(is)g(applicable)150 5340
+y(to)h(all)g(regular)g(map)f(sections)h(that)g(follo)m(w.)p
+eop end
+%%Page: 60 62
+TeXDict begin 60 61 bop 150 -116 a Fx(60)1855 b(Am-utils)30
+b(\(4.4BSD)j(Automoun)m(ter)d(Utilities\))150 299 y Fm(6.4.1)63
+b Fl(autofs_use_lofs)43 b Fm(P)m(arameter)150 446 y Fx(\(t)m(yp)s
+(e=string,)49 b(default=`)p Fp(yes)p Fx('\).)83 b(When)45
+b(set)g(to)g(`)p Fp(yes)p Fx(',)k Ft(A)n(md)9 b Fx('s)45
+b(autofs)g(co)s(de)g(will)g(use)f(lofs-t)m(yp)s(e)150
+555 y(\(lo)s(opbac)m(k\))30 b(moun)m(ts)e(for)g Fp(type:=link)e
+Fx(moun)m(ts,)j(as)f(w)m(ell)i(as)e(sev)m(eral)i(other)e(cases)i(that)f
+(require)f(lo)s(cal)150 665 y(references.)56 b(This)34
+b(has)h(the)g(adv)-5 b(an)m(tage)38 b(that)d Ft(A)n(md)45
+b Fx(do)s(es)35 b(not)g(use)g(a)h(secondary)f(moun)m(t)g(p)s(oin)m(t)h
+(and)150 775 y(users)d(do)h(not)f(see)i(external)f(pathnames)g(\(the)g
+(infamous)f Fp(/bin/pwd)f Fx(problem,)i(where)f(it)i(rep)s(orts)e(a)150
+884 y(di\013eren)m(t)i(path)f(than)h(the)f(user)g(c)m(hdir'ed)g(in)m
+(to\).)55 b(One)34 b(of)h(the)f(disadv)-5 b(an)m(tages)36
+b(of)f(using)f(this)g(option)150 994 y(is)f(that)g(the)g(autofs)g(co)s
+(de)g(is)f(relativ)m(ely)j(new)e(and)f(the)g(in-place)i(moun)m(ts)f(ha)
+m(v)m(e)h(not)e(b)s(een)g(throughly)150 1103 y(tested.)275
+1246 y(If)26 b(this)h(option)g(is)g(set)g(to)h(`)p Fp(no)p
+Fx(',)g(then)e Ft(A)n(md)9 b Fx('s)28 b(autofs)f(co)s(de)g(will)g(use)g
+(symlinks)f(instead)h(of)g(lofs-t)m(yp)s(e)150 1356 y(moun)m(ts)36
+b(for)g(lo)s(cal)i(references.)59 b(This)36 b(has)g(the)g(adv)-5
+b(an)m(tage)39 b(of)d(using)g(simpler)g(\(more)h(stable\))g(co)s(de,)
+150 1466 y(but)28 b(at)h(the)f(exp)s(ense)g(of)g(negating)i(one)f(of)f
+(autofs's)h(big)f(adv)-5 b(an)m(tages:)42 b(the)28 b(hiding)g(of)g
+Ft(A)n(md)9 b Fx('s)29 b(in)m(ternal)150 1575 y(paths.)39
+b(Note)28 b(that)e(symlinks)g(are)h(not)f(supp)s(orted)f(in)g(all)j
+(autofs)e(implemen)m(tations,)j(esp)s(ecially)e(those)150
+1685 y(deriv)m(ed)38 b(from)g(Solaris)h(Autofs)g(v1.)65
+b(Also,)41 b(on)e(Solaris)f(2.6)i(and)e(new)m(er,)i(autofs)f(symlinks)f
+(are)h(not)150 1794 y(cac)m(hed,)32 b(resulting)e(in)g(rep)s(eated)h
+(up-call)g(requests)f(to)h Ft(A)n(md)p Fx(.)150 2002
+y Fm(6.4.2)63 b Fl(browsable_dirs)42 b Fm(P)m(arameter)150
+2149 y Fx(\(t)m(yp)s(e=string,)30 b(default=`)p Fp(no)p
+Fx('\).)41 b(If)29 b(`)p Fp(yes)p Fx(',)h(then)g Ft(A)n(md)9
+b Fx('s)30 b(top-lev)m(el)i(moun)m(t)e(p)s(oin)m(ts)g(will)g(b)s(e)f
+(bro)m(wsable)150 2259 y(to)41 b Fn(readdir)p Fx(\(3\))g(calls.)73
+b(This)39 b(means)i(y)m(ou)f(could)h(run)e(for)h(example)h
+Fn(ls)p Fx(\(1\))h(and)e(see)h(what)f(k)m(eys)i(are)150
+2368 y(a)m(v)-5 b(ailable)40 b(to)f(moun)m(t)f(in)g(that)h(directory)-8
+b(.)64 b(Not)39 b(all)g(en)m(tries)g(are)g(made)f(visible)g(to)h
+Fn(readdir)p Fx(\(3\):)57 b(the)150 2478 y(`)p Fp(/defaults)p
+Fx(')34 b(en)m(try)-8 b(,)37 b(wildcard)e(en)m(tries,)j(and)d(those)h
+(with)f(a)h Fp(/)g Fx(in)f(them)g(are)h(not)g(included.)56
+b(If)35 b(y)m(ou)150 2587 y(sp)s(ecify)29 b(`)p Fp(full)p
+Fx(')f(to)i(this)f(option,)h(all)g(but)e(the)i(`)p Fp(/defaults)p
+Fx(')d(en)m(try)i(will)g(b)s(e)g(visible.)40 b(Note)31
+b(that)f(if)f(y)m(ou)150 2697 y(run)g(a)j(command)e(whic)m(h)h(will)g
+(attempt)h(to)g Fn(stat)p Fx(\(2\))h(the)e(en)m(tries,)h(suc)m(h)f(as)g
+(often)g(done)g(b)m(y)f(`)p Fp(ls)g(-l)p Fx(')h(or)150
+2807 y(`)p Fp(ls)f(-F)p Fx(',)d Ft(A)n(md)36 b Fx(will)27
+b(attempt)h(to)f(moun)m(t)g Ft(every)35 b Fx(en)m(try)26
+b(in)h(that)g(map.)39 b(This)26 b(is)h(often)g(called)g(a)g(\\moun)m(t)
+150 2916 y(storm".)275 3059 y(Note)43 b(that)g(moun)m(t)f(storms)g(are)
+g(mostly)h(a)m(v)m(oided)g(b)m(y)f(using)g(autofs)g(moun)m(ts)g(\(`)p
+Fp(mount_type)28 b(=)150 3169 y(autofs)p Fx('\).)150
+3376 y Fm(6.4.3)63 b Fl(map_defaults)42 b Fm(P)m(arameter)150
+3523 y Fx(\(t)m(yp)s(e=string,)23 b(default)e(to)h(empt)m(y\).)38
+b(This)20 b(option)i(sets)f(a)g(string)g(to)g(b)s(e)g(used)f(as)h(the)g
+(map's)f Fp(/defaults)150 3633 y Fx(en)m(try)-8 b(,)31
+b(o)m(v)m(erriding)g(an)m(y)f Fp(/defaults)e Fx(sp)s(eci\014ed)h(in)h
+(the)g(map.)40 b(This)29 b(allo)m(ws)i(lo)s(cal)h(users)d(to)h(o)m(v)m
+(erride)i(a)150 3743 y(giv)m(en)j(map's)f(defaults)g(without)g(mo)s
+(difying)f(maps)g(globally)j(\(whic)m(h)e(is)g(imp)s(ossible)f(in)h
+(sites)g(where)150 3852 y(the)d(maps)e(are)i(managed)g(b)m(y)f(a)h
+(di\013eren)m(t)g(administrativ)m(e)h(group\).)150 4060
+y Fm(6.4.4)63 b Fl(map_options)42 b Fm(P)m(arameter)150
+4207 y Fx(\(t)m(yp)s(e=string,)27 b(default)f(no)g(options\).)40
+b(This)25 b(option)i(is)f(the)g(same)g(as)g(sp)s(ecifying)g(map)g
+(options)g(on)g(the)150 4316 y(command)k(line)h(to)g
+Ft(A)n(md)p Fx(,)g(suc)m(h)f(as)g(`)p Fp(cache:=all)p
+Fx('.)150 4524 y Fm(6.4.5)63 b Fl(map_type)42 b Fm(P)m(arameter)150
+4671 y Fx(\(t)m(yp)s(e=string,)34 b(default)f(searc)m(h)h(all)f(map)g
+(t)m(yp)s(es\).)48 b(If)33 b(sp)s(eci\014ed,)g Ft(A)n(md)42
+b Fx(will)33 b(initialize)i(the)e(map)g(only)150 4781
+y(for)c(the)h(t)m(yp)s(e)f(giv)m(en.)41 b(This)29 b(is)g(useful)g(to)h
+(a)m(v)m(oid)h(the)e(default)h(map)e(searc)m(h)i(t)m(yp)s(e)g(used)e(b)
+m(y)i Ft(A)n(md)38 b Fx(whic)m(h)150 4890 y(tak)m(es)f(longer)f(and)f
+(can)g(ha)m(v)m(e)i(undesired)d(side-e\013ects)j(suc)m(h)e(as)h
+(initializing)h(NIS)e(ev)m(en)h(if)g(not)f(used.)150
+5000 y(P)m(ossible)c(v)-5 b(alues)31 b(are)150 5172 y(`)p
+Fp(file)p Fx(')238 b(plain)30 b(\014les)150 5340 y(`)p
+Fp(hesiod)p Fx(')142 b(Hesio)s(d)30 b(name)h(service)g(from)f(MIT)p
+eop end
+%%Page: 61 63
+TeXDict begin 61 62 bop 150 -116 a Fx(Chapter)30 b(6:)41
+b(Amd)30 b(Con\014guration)g(File)2094 b(61)150 299 y(`)p
+Fp(ldap)p Fx(')238 b(Ligh)m(t)m(w)m(eigh)m(t)33 b(Directory)f(Access)f
+(Proto)s(col)150 456 y(`)p Fp(ndbm)p Fx(')238 b(\(New\))31
+b(dbm)e(st)m(yle)j(hash)e(\014les)150 613 y(`)p Fp(nis)p
+Fx(')286 b(Net)m(w)m(ork)32 b(Information)e(Services)h(\(v)m(ersion)g
+(2\))150 771 y(`)p Fp(nisplus)p Fx(')94 b(Net)m(w)m(ork)32
+b(Information)e(Services)h(Plus)f(\(v)m(ersion)h(3\))150
+928 y(`)p Fp(passwd)p Fx(')142 b(lo)s(cal)32 b(passw)m(ord)d(\014les)
+150 1085 y(`)p Fp(union)p Fx(')190 b(union)30 b(maps)150
+1282 y Fm(6.4.6)63 b Fl(mount_type)42 b Fm(P)m(arameter)150
+1429 y Fx(\(t)m(yp)s(e=string,)c(default=`)p Fp(nfs)p
+Fx('\).)58 b(All)36 b Ft(A)n(md)46 b Fx(moun)m(t)36 b(t)m(yp)s(es)g
+(default)g(to)h(NFS.)f(That)g(is,)i Ft(A)n(md)45 b Fx(is)36
+b(an)150 1539 y(NFS)i(serv)m(er)h(on)f(the)g(map)g(moun)m(t)g(p)s(oin)m
+(ts,)i(for)e(the)g(lo)s(cal)i(host)e(it)h(is)f(running)e(on.)64
+b(If)38 b(`)p Fp(autofs)p Fx(')f(is)150 1648 y(sp)s(eci\014ed,)30
+b Ft(A)n(md)40 b Fx(will)30 b(b)s(e)g(an)g(autofs)h(serv)m(er)g(for)f
+(those)h(moun)m(t)f(p)s(oin)m(ts.)150 1845 y Fm(6.4.7)63
+b Fl(search_path)42 b Fm(P)m(arameter)150 1992 y Fx(\(t)m(yp)s
+(e=string,)27 b(default)g(no)f(searc)m(h)g(path\).)40
+b(This)25 b(pro)m(vides)h(a)h(\(colon-delimited\))h(searc)m(h)f(path)f
+(for)g(\014le)150 2102 y(maps.)40 b(Using)28 b(a)h(searc)m(h)g(path,)g
+(sites)g(can)f(allo)m(w)i(for)e(lo)s(cal)i(map)e(customizations)i(and)e
+(o)m(v)m(errides,)i(and)150 2211 y(can)h(distributed)e(maps)h(in)g(sev)
+m(eral)i(lo)s(cations)g(as)e(needed.)150 2409 y Fm(6.4.8)63
+b Fl(selectors_in_defaults)43 b Fm(P)m(arameter)150 2555
+y Fx(\(t)m(yp)s(e=b)s(o)s(olean,)32 b(default=`)p Fp(no)p
+Fx('\).)44 b(If)31 b(`)p Fp(yes)p Fx(',)g(then)g(the)h(`)p
+Fp(/defaults)p Fx(')d(en)m(try)i(of)h(maps)f(will)g(searc)m(h)h(for)150
+2665 y(and)40 b(pro)s(cess)g(an)m(y)h(selectors)i(b)s(efore)d(setting)i
+(defaults)f(for)f(all)i(other)f(k)m(eys)g(in)f(that)i(map.)71
+b(Useful)150 2775 y(when)29 b(y)m(ou)h(w)m(an)m(t)h(to)f(set)g
+(di\013eren)m(t)h(options)f(for)f(a)h(complete)i(map)d(based)g(on)h
+(some)g(parameters.)41 b(F)-8 b(or)150 2884 y(example,)39
+b(y)m(ou)e(ma)m(y)g(w)m(an)m(t)h(to)f(b)s(etter)g(the)f(NFS)h(p)s
+(erformance)f(o)m(v)m(er)i(slo)m(w)f(slip-based)f(net)m(w)m(orks)i(as)
+150 2994 y(follo)m(ws:)390 3127 y Fp(/defaults)45 b(\\)581
+3237 y(wire==slip-net;opts:=int)o(r,rs)o(ize)o(=102)o(4,ws)o(ize)o
+(=102)o(4)d(\\)581 3346 y(wire!=slip-net;opts:=int)o(r,rs)o(ize)o(=819)
+o(2,ws)o(ize)o(=819)o(2)275 3480 y Fx(Deprecated)31 b(form:)41
+b(selectors)p 1343 3480 28 4 v 41 w(on)p 1480 3480 V
+40 w(default.)150 3677 y Fm(6.4.9)63 b Fl(sun_map_syntax)42
+b Fm(P)m(arameter)150 3824 y Fx(\(t)m(yp)s(e=b)s(o)s(olean,)30
+b(default=`)p Fp(no)p Fx('\).)41 b(If)30 b(`)p Fp(yes)p
+Fx(',)f(then)h Ft(A)n(md)39 b Fx(will)30 b(parse)g(the)g(map)f
+(according)i(to)f(the)g(Sun)150 3933 y(Automoun)m(t)h(syn)m(tax.)150
+4164 y Fw(6.5)68 b(Global)46 b(P)l(arameters)150 4323
+y Fx(The)30 b(follo)m(wing)i(parameters)e(are)h(applicable)g(to)h(the)e
+(`)p Fp([global])p Fx(')f(section)i(only)-8 b(.)150 4520
+y Fm(6.5.1)63 b Fl(arch)41 b Fm(P)m(arameter)150 4667
+y Fx(\(t)m(yp)s(e=string,)31 b(default)f(to)h(compiled)f(in)g(v)-5
+b(alue\).)41 b(Same)31 b(as)f(the)g Fp(-A)g Fx(option)g(to)h
+Ft(A)n(md)p Fx(.)41 b(Allo)m(ws)31 b(y)m(ou)f(to)150
+4777 y(o)m(v)m(erride)h(the)g(v)-5 b(alue)31 b(of)f(the)h
+Ft(ar)-5 b(ch)39 b(A)n(md)g Fx(v)-5 b(ariable.)150 4974
+y Fm(6.5.2)63 b Fl(auto_attrcache)42 b Fm(P)m(arameter)150
+5121 y Fx(\(t)m(yp)s(e=n)m(umeric,)34 b(default=0\).)49
+b(Sp)s(ecify)32 b(in)h(seconds)f(\(or)i(units)e(of)h(0.1)h(seconds,)g
+(dep)s(ending)d(on)i(the)150 5230 y(OS\),)44 b(what)h(is)f(the)h(\(k)m
+(ernel-side\))h(NFS)e(attribute)h(cac)m(he)h(timeout)g(for)e
+Ft(A)n(md)9 b Fx('s)45 b(o)m(wn)f(automoun)m(t)150 5340
+y(p)s(oin)m(ts.)51 b(A)35 b(v)-5 b(alue)34 b(of)g(0)h(is)f(supp)s(osed)
+e(to)i(turn)f(o\013)i(attribute)f(cac)m(hing,)j(meaning)d(that)h
+Ft(A)n(md)43 b Fx(will)35 b(b)s(e)p eop end
+%%Page: 62 64
+TeXDict begin 62 63 bop 150 -116 a Fx(62)1855 b(Am-utils)30
+b(\(4.4BSD)j(Automoun)m(ter)d(Utilities\))150 299 y(consulted)37
+b(via)f(a)h(k)m(ernel-RPC)g(eac)m(h)g(time)g(someone)g(stat\(\)'s)i
+(the)d(moun)m(t)g(p)s(oin)m(t)h(\(whic)m(h)f(could)h(b)s(e)150
+408 y(abused)30 b(as)g(a)h(denial-of-service)h(attac)m(k\).)275
+564 y Ft(W)-7 b(ARNING)8 b Fx(:)23 b Ft(A)n(md)33 b Fx(dep)s(ends)22
+b(on)i(b)s(eing)f(able)i(to)f(turn)f(o\013)h(the)g(NFS)g(attribute)h
+(cac)m(he)g(of)f(the)g(clien)m(t)150 674 y(OS.)i(If)h(it)g(cannot)g(b)s
+(e)g(turned)e(o\013,)k(then)d(users)g(ma)m(y)h(get)h(EST)-8
+b(ALE)27 b(errors)f(or)h(symlinks)f(that)h(p)s(oin)m(t)g(to)150
+783 y(the)f(wrong)g(places.)40 b(This)26 b(is)g(more)g(lik)m(ely)i
+(under)c(hea)m(vy)j(use)f(of)g Ft(A)n(md)p Fx(,)i(for)e(example)g(if)g
+(y)m(our)h(system)f(is)150 893 y(exp)s(eriencing)e(frequen)m(t)f(map)h
+(c)m(hanges)g(or)g(frequen)m(t)f(moun)m(ts/unmoun)m(ts.)38
+b(Therefore,)25 b(under)d(normal)150 1002 y(circumstances,)31
+b(this)f(parameter)h(should)e(remain)h(set)h(to)f(0,)h(to)g(ensure)e
+(that)i(the)f(attribute)h(cac)m(he)h(is)150 1112 y(indeed)e(o\013.)275
+1268 y(Unfortunately)-8 b(,)34 b(some)f(k)m(ernels)h(\(e.g.,)h(certain)
+f(BSDs\))g(don't)f(ha)m(v)m(e)h(a)f(w)m(a)m(y)h(to)g(turn)d(o\013)j
+(the)f(NFS)150 1377 y(attribute)21 b(cac)m(he.)40 b(Setting)21
+b(this)g(parameter)g(to)g(0)h(is)e(supp)s(osed)f(to)j(turn)d(o\013)i
+(attribute)h(cac)m(hing)g(en)m(tirely)-8 b(,)150 1487
+y(but)23 b(unfortunately)f(it)i(do)s(es)f(not;)j(instead,)g(the)d
+(attribute)h(cac)m(he)h(is)e(set)h(to)g(some)g(in)m(ternal)g(hard-co)s
+(ded)150 1596 y(default)32 b(\(usually)g(an)m(ywhere)f(from)g(5-30)j
+(seconds\).)44 b(If)32 b(y)m(ou)g(susp)s(ect)f(that)h(y)m(our)f(OS)g
+(do)s(esn't)h(ha)m(v)m(e)h(a)150 1706 y(reliable)d(w)m(a)m(y)f(of)g
+(turning)e(o\013)i(the)g(attribute)g(cac)m(he,)i(then)d(it)h(is)f(b)s
+(etter)h(to)g(set)g(this)g(parameter)g(to)g(the)150 1815
+y(smallest)g(p)s(ossible)f(non-zero)g(v)-5 b(alue)29
+b(\(set)g(`)p Fp(auto_attrcache=1)p Fx(')24 b(in)k(y)m(our)g
+Fp(amd.conf)p Fx(\).)38 b(This)27 b(will)i(not)150 1925
+y(eliminate)36 b(the)f(problem,)g(but)f(reduce)g(the)h(risk)f(windo)m
+(w)g(somewhat.)54 b(The)34 b(b)s(est)g(solutions)h(are)g(\(1\))150
+2035 y(to)e(use)f Ft(A)n(md)42 b Fx(in)32 b(Autofs)h(mo)s(de,)g(if)f
+(it's)h(supp)s(orted)e(in)h(y)m(our)g(OS,)g(and)g(\(2\))h(talk)h(to)f
+(y)m(our)f(OS)g(v)m(endor)150 2144 y(to)j(supp)s(ort)e(a)i(true)g(`)p
+Fp(noac)p Fx(')f(\015ag.)54 b(See)35 b(the)g(README.attrcac)m(he)i(\()p
+Fp(http:)t(/)t(/)s(www)t(.)s(am-utils)s(.)s(o)o(rg)s(/)150
+2254 y(docs/am-utils/attrcache.)o(txt)p Fx(\))24 b(do)s(cumen)m(t)30
+b(for)h(more)f(details.)275 2409 y(If)39 b(y)m(ou)h(are)h(able)f(to)h
+(turn)e(o\013)h(the)g(attribute)h(cac)m(he)g(on)f(y)m(our)g(OS,)g
+(alas,)j Ft(A)n(md)9 b Fx('s)41 b(p)s(erformance)150
+2519 y(ma)m(y)27 b(degrade)f(\(when)g(not)h(using)e(Autofs\))i(b)s
+(ecause)f(ev)m(ery)h(tra)m(v)m(ersal)i(of)d(an)g(automoun)m(ter-con)m
+(trolled)150 2629 y(pathname)42 b(will)h(result)f(in)g(a)g(lo)s(okup)g
+(request)g(from)g(the)g(k)m(ernel)h(to)g Ft(A)n(md)p
+Fx(.)76 b(Under)41 b(hea)m(vy)i(loads,)150 2738 y(for)38
+b(example)g(when)g(using)f(recursiv)m(e)h(to)s(ols)h(lik)m(e)h(`)p
+Fp(find)p Fx(',)f(`)p Fp(rdist)p Fx(',)g(or)f(`)p Fp(rsync)p
+Fx(',)i(this)e(p)s(erformance)150 2848 y(degradation)c(can)f(b)s(e)g
+(noticeable.)50 b(There)33 b(are)g(t)m(w)m(o)i(p)s(ossible)d(solutions)
+i(that)f(some)h(administrators)150 2957 y(ha)m(v)m(e)e(c)m(hosen)f(to)g
+(impro)m(v)m(e)g(p)s(erformance:)199 3113 y(1.)61 b(First,)43
+b(y)m(ou)e(can)f(turn)f(o\013)i(unmoun)m(ting)e(using)g(the)i(`)p
+Fp(nounmount)p Fx(')d(moun)m(t)i(option.)70 b(This)40
+b(will)330 3223 y(ensure)c(that)h(no)f Ft(A)n(md)46 b
+Fx(symlink)36 b(could)h(ev)m(er)g(c)m(hange,)j(thereb)m(y)c(the)h(k)m
+(ernel's)g(attribute)g(cac)m(he)330 3332 y(and)22 b Ft(A)n(md)32
+b Fx(will)23 b(alw)m(a)m(ys)h(b)s(e)d(in)h(sync.)38 b(Ho)m(w)m(ev)m
+(er,)27 b(this)22 b(metho)s(d)g(will)h(cause)g(the)f(n)m(um)m(b)s(er)f
+(of)i(moun)m(ts)330 3442 y(to)29 b(k)m(eep)g(gro)m(wing,)h(ev)m(en)f
+(if)f(some)g(are)h(no)f(longer)h(in)f(use;)h(this)f(has)g(the)g(disadv)
+-5 b(an)m(tage)30 b(that)f(y)m(our)330 3551 y(system)34
+b(could)g(b)s(e)g(more)g(susceptible)g(to)h(hangs)f(if)g(ev)m(en)g(one)
+h(of)f(those)g(accum)m(ulating)i(moun)m(ts)330 3661 y(hangs)30
+b(due)g(to)h(a)g(do)m(wned)e(serv)m(er.)199 3806 y(2.)61
+b(Second,)40 b(y)m(ou)e(can)h(turn)e(on)h(attribute)h(cac)m(hing)g
+(carefully)g(b)m(y)f(setting)h(a)g(small)f(automoun)m(ter)330
+3916 y(attribute)d(cac)m(he)h(v)-5 b(alue)34 b(\(sa)m(y)-8
+b(,)37 b(one)e(second\),)h(and)d(a)i(relativ)m(ely)i(large)e(dismoun)m
+(t)f(in)m(terv)-5 b(al)35 b(\(sa)m(y)-8 b(,)330 4025
+y(one)35 b(hour\).)54 b(\(See)36 b(Section)f(6.5.8)i([dismoun)m(t)p
+1942 4025 28 4 v 40 w(in)m(terv)-5 b(al)36 b(P)m(arameter],)i(page)e
+(63.\))55 b(F)-8 b(or)36 b(example,)330 4135 y(y)m(ou)31
+b(can)f(set)h(this)g(in)f(y)m(our)g Fp(amd.conf)p Fx(:)570
+4280 y Fp([global])570 4389 y(auto_attrcache)44 b(=)j(1)570
+4499 y(dismount_interval)c(=)48 b(3600)330 4644 y Fx(This)34
+b(has)h(the)h(b)s(ene\014t)e(of)h(using)g(the)g(k)m(ernel's)h
+(attribute)g(cac)m(he)h(and)e(th)m(us)f(impro)m(ving)i(p)s(erfor-)330
+4754 y(mance.)56 b(The)34 b(disadv)-5 b(an)m(tage)37
+b(with)e(this)g(option)g(is)h(that)f(the)h(windo)m(w)e(of)i
+(vulnerabilit)m(y)f(is)h(not)330 4863 y(eliminated)31
+b(en)m(tirely:)42 b(it)31 b(is)g(only)f(made)h(smaller.)150
+5083 y Fm(6.5.3)63 b Fl(auto_dir)42 b Fm(P)m(arameter)150
+5230 y Fx(\(t)m(yp)s(e=string,)28 b(default=`)p Fp(/a)p
+Fx('\).)40 b(Same)26 b(as)h(the)g Fp(-a)f Fx(option)h(to)g
+Ft(A)n(md)p Fx(.)40 b(This)26 b(sets)h(the)f(priv)-5
+b(ate)27 b(directory)150 5340 y(where)j Ft(A)n(md)40
+b Fx(will)30 b(create)i(sub-directories)f(for)f(its)h(real)g(moun)m(t)f
+(p)s(oin)m(ts.)p eop end
+%%Page: 63 65
+TeXDict begin 63 64 bop 150 -116 a Fx(Chapter)30 b(6:)41
+b(Amd)30 b(Con\014guration)g(File)2094 b(63)150 299 y
+Fm(6.5.4)63 b Fl(cache_duration)42 b Fm(P)m(arameter)150
+446 y Fx(\(t)m(yp)s(e=n)m(umeric,)28 b(default=300\).)41
+b(Same)27 b(as)g(the)g Fp(-c)g Fx(option)g(to)g Ft(A)n(md)p
+Fx(.)40 b(Sets)27 b(the)g(duration)f(in)h(seconds)150
+555 y(that)k(lo)s(ok)m(ed-up)g(or)f(moun)m(ted)g(map)g(en)m(tries)h
+(remain)g(in)f(the)g(cac)m(he.)150 748 y Fm(6.5.5)63
+b Fl(cluster)41 b Fm(P)m(arameter)150 895 y Fx(\(t)m(yp)s(e=string,)c
+(default)e(no)g(cluster\).)55 b(Same)36 b(as)f(the)g
+Fp(-C)g Fx(option)g(to)h Ft(A)n(md)p Fx(.)55 b(Sp)s(eci\014es)34
+b(the)h(alternate)150 1004 y(HP-UX)c(cluster)g(to)g(use.)150
+1196 y Fm(6.5.6)63 b Fl(debug_mtab_file)43 b Fm(P)m(arameter)150
+1343 y Fx(\(t)m(yp)s(e=string,)c(default=)p Fp(")p Fx(/tmp/m)m(tab)p
+Fp(")p Fx(\).)60 b(P)m(ath)37 b(to)h(m)m(tab)f(\014le)g(that)g(is)f
+(used)g(b)m(y)h Ft(A)n(md)46 b Fx(to)37 b(store)h(a)150
+1453 y(list)31 b(of)g(moun)m(ted)f(\014le)h(systems)f(during)f(debug-m)
+m(tab)i(mo)s(de.)41 b(This)29 b(option)i(only)g(applies)g(to)g(systems)
+150 1562 y(that)g(store)g(m)m(tab)g(information)f(on)h(disk.)150
+1754 y Fm(6.5.7)63 b Fl(debug_options)42 b Fm(P)m(arameter)150
+1901 y Fx(\(t)m(yp)s(e=string,)k(default)d(no)f(debug)g(options\).)77
+b(Same)43 b(as)f(the)h Fp(-D)f Fx(option)h(to)g Ft(A)n(md)p
+Fx(.)77 b(Sp)s(ecify)42 b(an)m(y)150 2011 y(debugging)f(options)f(for)h
+Ft(A)n(md)p Fx(.)71 b(W)-8 b(orks)41 b(only)g(if)g(am-utils)g(w)m(as)g
+(con\014gured)f(for)g(debugging)g(using)150 2121 y(the)32
+b Fp(--enable-debug)27 b Fx(option.)45 b(The)31 b(additional)h(`)p
+Fp(mem)p Fx(')f(option)h(can)g(b)s(e)f(turned)f(on)h(via)h
+Fp(--enable-)150 2230 y(debug=mem)p Fx(.)45 b(Otherwise)32
+b(debugging)h(options)g(are)g(ignored.)47 b(Options)32
+b(are)h(comma)h(delimited,)g(and)150 2340 y(can)24 b(b)s(e)e(preceded)h
+(b)m(y)g(the)h(string)f(`)p Fp(no)p Fx(')g(to)h(negate)h(their)e
+(meaning.)38 b(Y)-8 b(ou)24 b(can)g(get)g(the)g(list)f(of)h(supp)s
+(orted)150 2449 y(debugging)35 b(and)e(logging)k(options)e(b)m(y)f
+(running)f Fp(amd)c(-H)p Fx(.)53 b(P)m(ossible)35 b(v)-5
+b(alues)35 b(those)g(listed)g(for)g(the)f(-D)150 2559
+y(option.)41 b(See)31 b(Section)g(4.17)h([-D)f(Option],)g(page)g(44.)
+150 2751 y Fm(6.5.8)63 b Fl(dismount_interval)43 b Fm(P)m(arameter)150
+2898 y Fx(\(t)m(yp)s(e=n)m(umeric,)29 b(default=120\).)41
+b(Same)28 b(as)h(the)f Fp(-w)f Fx(option)i(to)f Ft(A)n(md)p
+Fx(.)40 b(Sp)s(ecify)28 b(in)f(seconds,)i(the)f(time)150
+3008 y(b)s(et)m(w)m(een)j(attempts)g(to)g(dismoun)m(t)f(\014le)h
+(systems)f(that)h(ha)m(v)m(e)h(exceeded)f(their)g(cac)m(hed)g(times.)
+150 3200 y Fm(6.5.9)63 b Fl(domain_strip)42 b Fm(P)m(arameter)150
+3347 y Fx(\(t)m(yp)s(e=b)s(o)s(olean,)23 b(default=`)p
+Fp(yes)p Fx('\).)37 b(If)21 b(`)p Fp(yes)p Fx(',)h(then)e(the)h(domain)
+g(name)f(part)h(referred)e(to)j(b)m(y)e Fp(${rhost})150
+3456 y Fx(is)31 b(stripp)s(ed)e(o\013.)43 b(This)31 b(is)g(useful)f(to)
+i(k)m(eep)f(logs)h(and)f(smaller.)43 b(If)30 b(`)p Fp(no)p
+Fx(',)h(then)g(the)g(domain)g(name)g(part)150 3566 y(is)36
+b(left)h(c)m(hanged.)58 b(This)35 b(is)h(useful)f(when)g(using)h(m)m
+(ultiple)h(domains)e(with)h(the)g(same)h(maps)e(\(as)i(y)m(ou)150
+3676 y(ma)m(y)31 b(ha)m(v)m(e)h(hosts)e(whose)g(domain-stripp)s(ed)f
+(name)i(is)f(iden)m(tical\).)150 3868 y Fm(6.5.10)63
+b Fl(exec_map_timeout)43 b Fm(P)m(arameter)150 4015 y
+Fx(\(t)m(yp)s(e=n)m(umeric,)29 b(default=10\).)41 b(The)27
+b(timeout)j(in)d(seconds)h(that)h Ft(A)n(md)37 b Fx(will)29
+b(w)m(ait)g(for)e(an)h(executable)150 4124 y(map)c(program)h(b)s(efore)
+f(an)h(answ)m(er)g(is)g(returned)e(from)h(that)i(program)e(\(or)i
+(script\).)39 b(This)24 b(v)-5 b(alue)25 b(should)150
+4234 y(b)s(e)33 b(set)h(to)h(as)f(small)g(as)g(p)s(ossible)g(while)f
+(still)i(allo)m(wing)g(normal)f(replies)g(to)h(b)s(e)e(returned)f(b)s
+(efore)i(the)150 4343 y(timer)g(expires,)h(b)s(ecause)f(during)f(the)h
+(time)g(that)h(the)f(executable)h(map)f(program)f(is)h(queried,)h
+Ft(A)n(md)150 4453 y Fx(is)k(essen)m(tially)h(w)m(aiting)g(and)e(is)h
+(th)m(us)f(not)h(resp)s(onding)e(to)i(an)m(y)g(other)g(queries.)65
+b(See)39 b(Section)g(3.1.9)150 4563 y([Executable)32
+b(maps],)e(page)h(23.)150 4755 y Fm(6.5.11)63 b Fl(forced_unmounts)43
+b Fm(P)m(arameter)150 4902 y Fx(\(t)m(yp)s(e=b)s(o)s(olean,)h
+(default=`)p Fp(no)p Fx('\).)73 b(Sometimes,)44 b(moun)m(t)d(p)s(oin)m
+(ts)g(are)g(h)m(ung)g(due)f(to)i(unreco)m(v)m(erable)150
+5011 y(conditions,)36 b(suc)m(h)e(as)h(when)e(NFS)h(serv)m(ers)h
+(migrate,)h(c)m(hange)g(their)e(IP)g(address,)h(are)g(do)m(wn)e(p)s
+(erma-)150 5121 y(nen)m(tly)-8 b(,)43 b(or)d(due)g(to)g(hardw)m(are)g
+(failures,)j(and)c(more.)69 b(In)40 b(this)g(case,)j(attempting)e(to)g
+(unmoun)m(t)e(an)150 5230 y(existing)e(moun)m(t)f(p)s(oin)m(t,)i(or)e
+(ev)m(en)h(just)e(to)i Fn(stat)p Fx(\(2\))h(it,)h(results)d(in)f(one)i
+(of)f(three)g(fatal)i(errors:)51 b(EIO,)150 5340 y(EST)-8
+b(ALE,)29 b(or)g(EBUSY.)h(A)m(t)g(that)g(p)s(oin)m(t,)g
+Ft(A)n(md)38 b Fx(can)30 b(do)f(little)i(to)f(reco)m(v)m(er)h(that)f(h)
+m(ung)f(p)s(oin)m(t)g(\(in)h(fact,)p eop end
+%%Page: 64 66
+TeXDict begin 64 65 bop 150 -116 a Fx(64)1855 b(Am-utils)30
+b(\(4.4BSD)j(Automoun)m(ter)d(Utilities\))150 299 y(the)37
+b(OS)f(cannot)i(automatically)i(reco)m(v)m(er)f(either\).)61
+b(F)-8 b(or)38 b(that)f(reason,)j(some)d(OSs)f(supp)s(ort)f(sp)s(ecial)
+150 408 y(kinds)d(of)h(forced)g(unmoun)m(ts,)g(whic)m(h)f(m)m(ust)h(b)s
+(e)f(used)h(v)m(ery)g(carefully:)46 b(they)33 b(will)h(force)f(an)g
+(unmoun)m(t)150 518 y(immediately)27 b(\(or)f(lazily)h(on)f(Lin)m
+(ux\),)h(whic)m(h)e(could)h(result)g(in)f(application)i(data)g(loss.)39
+b(Ho)m(w)m(ev)m(er,)29 b(that)150 628 y(ma)m(y)35 b(b)s(e)e(the)i(only)
+f(w)m(a)m(y)h(to)g(reco)m(v)m(er)h(the)f(en)m(tire)g(host)f(\(without)h
+(reb)s(o)s(oting\).)53 b(Once)34 b(a)g(h)m(ung)g(moun)m(t)150
+737 y(p)s(oin)m(t)k(is)h(forced)f(out,)j Ft(A)n(md)48
+b Fx(can)38 b(then)g(re-moun)m(t)h(a)f(replacemen)m(t)i(one)f(\(if)f(a)
+m(v)-5 b(ailable\),)44 b(bringing)38 b(a)150 847 y(mostly-h)m(ung)31
+b(system)f(bac)m(k)h(to)g(op)s(eration)g(and)f(a)m(v)m(oiding)i(a)f(p)s
+(oten)m(tially)h(costly)g(reb)s(o)s(ot.)275 1024 y(If)37
+b(the)g(`)p Fp(forced_unmounts)p Fx(')d(option)k(is)f(set)h(to)h(`)p
+Fp(yes)p Fx(',)g(and)e(the)g(clien)m(t)i(OS)e(supp)s(orts)e(forced)j
+(or)150 1134 y(lazy)45 b(unmoun)m(ts,)h(then)d Ft(A)n(md)53
+b Fx(will)44 b(attempt)g(to)h(use)e(them)h(if)f(it)h(gets)h(an)m(y)f
+(of)g(the)f(three)h(serious)150 1244 y(error)30 b(conditions)h(listed)g
+(ab)s(o)m(v)m(e.)42 b(Note)32 b(that)f Ft(A)n(md)39 b
+Fx(will)31 b(force)g(the)g(unmoun)m(t)e(of)i(moun)m(t)f(p)s(oin)m(ts)g
+(that)150 1353 y(returned)e(EBUSY)i(only)g(for)f(`)p
+Fp(type:=toplvl)p Fx(')e(moun)m(ts)j(\(see)g(Section)h(5.23)g([T)-8
+b(op-lev)m(el)32 b(Filesystem],)150 1463 y(page)25 b(56\):)39
+b(that)25 b(is,)g Ft(A)n(md)9 b Fx('s)25 b(o)m(wn)f(moun)m(t)h(p)s(oin)
+m(ts.)38 b(This)24 b(is)g(useful)f(to)i(reco)m(v)m(er)h(from)e(a)h
+(previously)f(h)m(ung)150 1572 y Ft(A)n(md)p Fx(,)30
+b(and)f(to)h(ensure)f(that)h(an)f(existing)i Ft(A)n(md)39
+b Fx(can)29 b(sh)m(utdo)m(wn)g(cleanly)i(ev)m(en)f(if)f(some)h(pro)s
+(cesses)g(are)150 1682 y(k)m(eeping)j(its)g(moun)m(t)f(p)s(oin)m(ts)h
+(busy)e(\(i.e.,)j(when)e(a)h(user's)e(shell)i(pro)s(cess)f(uses)g
+Fp(cd)g Fx(to)h(set)g(its)f(CWD)h(to)150 1791 y Ft(A)n(md)9
+b Fx('s)31 b(o)m(wn)f(moun)m(t)h(p)s(oin)m(t\).)275 1969
+y(If)25 b(this)h(option)g(is)g(set)g(to)h(`)p Fp(no)p
+Fx(')f(\(the)g(default\),)i(then)d Ft(A)n(md)36 b Fx(will)26
+b(not)g(attempt)h(this)f(sp)s(ecial)g(reco)m(v)m(ery)150
+2079 y(pro)s(cedure.)150 2321 y Fm(6.5.12)63 b Fl(full_os)42
+b Fm(P)m(arameter)150 2468 y Fx(\(t)m(yp)s(e=string,)33
+b(default)g(to)g(compiled)g(in)f(v)-5 b(alue\).)47 b(The)32
+b(full)g(name)g(of)g(the)h(op)s(erating)g(system,)g(along)150
+2577 y(with)d(its)h(v)m(ersion.)41 b(Allo)m(ws)32 b(y)m(ou)e(to)i(o)m
+(v)m(erride)f(the)g(compiled-in)g(full)f(name)g(and)g(v)m(ersion)h(of)g
+(the)f(op)s(er-)150 2687 y(ating)e(system.)40 b(Useful)28
+b(when)e(the)i(compiled-in)g(name)g(is)f(not)h(desired.)39
+b(F)-8 b(or)28 b(example,)h(the)f(full)f(op)s(er-)150
+2797 y(ating)i(system)e(name)h(on)g(lin)m(ux)f(comes)i(up)d(as)i(`)p
+Fp(linux)p Fx(',)g(but)f(y)m(ou)h(can)g(o)m(v)m(erride)h(it)f(to)g(`)p
+Fp(linux-2.2.5)p Fx('.)150 3039 y Fm(6.5.13)63 b Fl
+(fully_qualified_hosts)44 b Fm(P)m(arameter)150 3186
+y Fx(\(t)m(yp)s(e=string,)c(default=`)p Fp(no)p Fx('\).)62
+b(If)37 b(`)p Fp(yes)p Fx(',)i Ft(A)n(md)47 b Fx(will)38
+b(p)s(erform)e(RPC)g(authen)m(tication)k(using)d(fully-)150
+3295 y(quali\014ed)32 b(host)h(names.)48 b(This)32 b(is)g(necessary)h
+(for)g(some)g(systems,)h(and)e(esp)s(ecially)h(when)f(p)s(erforming)150
+3405 y(cross-domain)k(moun)m(ting.)57 b(F)-8 b(or)36
+b(this)g(function)f(to)i(w)m(ork,)g(the)f Ft(A)n(md)45
+b Fx(v)-5 b(ariable)37 b(`)p Fp(${hostd})p Fx(')d(is)h(used,)150
+3515 y(requiring)30 b(that)h(`)p Fp(${domain})p Fx(')d(not)j(b)s(e)f(n)
+m(ull.)150 3757 y Fm(6.5.14)63 b Fl(hesiod_base)42 b
+Fm(P)m(arameter)150 3904 y Fx(\(t)m(yp)s(e=string,)31
+b(default=`)p Fp(automount)p Fx('\).)39 b(Sp)s(ecify)30
+b(the)g(base)h(name)f(for)g(hesio)s(d)g(maps.)150 4146
+y Fm(6.5.15)63 b Fl(karch)42 b Fm(P)m(arameter)150 4293
+y Fx(\(t)m(yp)s(e=string,)j(default)c(to)h(k)-5 b(arc)m(h)42
+b(of)f(the)h(system\).)74 b(Same)41 b(as)g(the)h Fp(-k)f
+Fx(option)g(to)h Ft(A)n(md)p Fx(.)74 b(Allo)m(ws)150
+4403 y(y)m(ou)32 b(to)h(o)m(v)m(erride)f(the)g(k)m(ernel-arc)m
+(hitecture)j(of)d(y)m(our)f(system.)45 b(Useful)32 b(for)g(example)g
+(on)g(Sun)e(\(Sparc\))150 4512 y(mac)m(hines,)j(where)f(y)m(ou)g(can)h
+(build)e(one)h Ft(A)n(md)41 b Fx(binary)-8 b(,)33 b(and)e(run)g(it)h
+(on)g(m)m(ultiple)h(mac)m(hines,)g(y)m(et)h(y)m(ou)150
+4622 y(w)m(an)m(t)27 b(eac)m(h)g(one)g(to)g(get)g(the)f(correct)i
+Ft(kar)-5 b(ch)34 b Fx(v)-5 b(ariable)27 b(set)g(\(for)f(example,)i
+(sun4c,)f(sun4m,)f(sun4u,)g(etc.\))150 4732 y(Note)35
+b(that)g(if)f(not)g(sp)s(eci\014ed,)h Ft(A)n(md)43 b
+Fx(will)35 b(use)e Fn(uname)p Fx(\(2\))i(to)g(\014gure)e(out)h(the)g(k)
+m(ernel)h(arc)m(hitecture)h(of)150 4841 y(the)31 b(mac)m(hine.)150
+5083 y Fm(6.5.16)63 b Fl(ldap_base)42 b Fm(P)m(arameter)150
+5230 y Fx(\(t)m(yp)s(e=string,)26 b(default)f(not)f(set\).)40
+b(Sp)s(ecify)24 b(the)g(base)h(name)f(for)h(LD)m(AP)-8
+b(.)25 b(This)f(often)h(includes)f(LD)m(AP-)150 5340
+y(sp)s(eci\014c)30 b(v)-5 b(alues)31 b(suc)m(h)f(as)h(coun)m(try)f(and)
+g(organization.)p eop end
+%%Page: 65 67
+TeXDict begin 65 66 bop 150 -116 a Fx(Chapter)30 b(6:)41
+b(Amd)30 b(Con\014guration)g(File)2094 b(65)150 299 y
+Fm(6.5.17)63 b Fl(ldap_cache_maxmem)43 b Fm(P)m(arameter)150
+446 y Fx(\(t)m(yp)s(e=n)m(umeric,)29 b(default=131072\).)43
+b(Sp)s(ecify)28 b(the)h(maxim)m(um)g(memory)f Ft(A)n(md)38
+b Fx(should)28 b(use)g(to)h(cac)m(he)150 555 y(LD)m(AP)i(en)m(tries.)
+150 756 y Fm(6.5.18)63 b Fl(ldap_cache_seconds)43 b Fm(P)m(arameter)150
+903 y Fx(\(t)m(yp)s(e=n)m(umeric,)31 b(default=0\).)41
+b(Sp)s(ecify)30 b(the)g(n)m(um)m(b)s(er)f(of)i(seconds)f(to)h(k)m(eep)g
+(en)m(tries)h(in)e(the)g(cac)m(he.)150 1103 y Fm(6.5.19)63
+b Fl(ldap_hostports)43 b Fm(P)m(arameter)150 1250 y Fx(\(t)m(yp)s
+(e=string,)31 b(default)f(not)h(set\).)42 b(Sp)s(ecify)29
+b(the)i(LD)m(AP)g(host)f(and)g(p)s(ort)g(v)-5 b(alues.)150
+1450 y Fm(6.5.20)63 b Fl(ldap_proto_version)43 b Fm(P)m(arameter)150
+1597 y Fx(\(t)m(yp)s(e=n)m(umeric,)33 b(default=2\).)48
+b(Sp)s(ecify)32 b(the)h(LD)m(AP)g(proto)s(col)g(v)m(ersion)g(to)g(use.)
+47 b(With)33 b(a)g(v)-5 b(alue)33 b(of)g(3)150 1707 y(will)e(use)f(LD)m
+(APv3)h(proto)s(col.)150 1907 y Fm(6.5.21)63 b Fl(local_domain)43
+b Fm(P)m(arameter)150 2054 y Fx(\(t)m(yp)s(e=string,)38
+b(default)f(no)f(sub-domain\).)59 b(Same)36 b(as)h(the)g
+Fp(-d)e Fx(option)i(to)g Ft(A)n(md)p Fx(.)59 b(Sp)s(ecify)36
+b(the)h(lo)s(cal)150 2164 y(domain)23 b(name.)38 b(If)22
+b(this)h(option)h(is)f(not)g(giv)m(en)h(the)f(domain)g(name)f(is)h
+(determined)g(from)f(the)h(hostname,)150 2273 y(b)m(y)30
+b(remo)m(ving)h(the)g(\014rst)f(comp)s(onen)m(t)g(of)h(the)f
+(fully-quali\014ed)h(host)f(name.)150 2474 y Fm(6.5.22)63
+b Fl(localhost_address)43 b Fm(P)m(arameter)150 2621
+y Fx(\(t)m(yp)s(e=string,)28 b(default)f(to)h(lo)s(calhost)h(or)d
+(127.0.0.1\).)44 b(Sp)s(ecify)26 b(the)h(name)g(or)g(IP)g(address)f
+(for)h Ft(A)n(md)36 b Fx(to)150 2730 y(use)25 b(when)f(connecting)j
+(the)e(so)s(c)m(k)m(ets)i(for)e(the)h(lo)s(cal)g(NFS)g(serv)m(er)f(and)
+g(the)g(RPC)g(serv)m(er.)39 b(This)25 b(defaults)150
+2840 y(to)34 b(127.0.0.1)i(or)c(whatev)m(er)i(the)f(host)g(rep)s(orts)f
+(as)h(its)g(lo)s(cal)h(address.)47 b(This)32 b(parameter)h(is)g(useful)
+f(on)150 2949 y(hosts)25 b(with)g(m)m(ultiple)h(addresses)e(where)h(y)m
+(ou)h(w)m(an)m(t)g(to)g(force)f Ft(A)n(md)35 b Fx(to)26
+b(connect)g(to)g(a)g(sp)s(eci\014c)f(address.)150 3150
+y Fm(6.5.23)63 b Fl(log_file)42 b Fm(P)m(arameter)150
+3297 y Fx(\(t)m(yp)s(e=string,)d(default=`)p Fp(stderr)p
+Fx('\).)59 b(Same)36 b(as)h(the)g Fp(-l)f Fx(option)h(to)h
+Ft(A)n(md)p Fx(.)60 b(Sp)s(ecify)36 b(a)h(\014le)f(name)h(to)150
+3406 y(log)29 b Ft(A)n(md)38 b Fx(ev)m(en)m(ts)29 b(to.)41
+b(If)28 b(the)g(string)g(`)p Fp(/dev/stderr)p Fx(')d(is)k(sp)s
+(eci\014ed,)f Ft(A)n(md)37 b Fx(will)29 b(send)e(its)h(ev)m(en)m(ts)i
+(to)f(the)150 3516 y(standard)h(error)g(\014le)g(descriptor.)275
+3652 y(If)48 b(the)i(string)f(`)p Fp(syslog)p Fx(')f(is)h(giv)m(en,)55
+b Ft(A)n(md)j Fx(will)50 b(record)f(its)g(ev)m(en)m(ts)i(with)e(the)g
+(system)g(logger)150 3761 y Fn(syslogd)p Fx(\(8\).)100
+b(If)49 b(y)m(our)g(system)h(supp)s(orts)e(syslog)i(facilities,)57
+b(then)49 b(the)h(default)f(facilit)m(y)j(used)d(is)150
+3871 y(`)p Fp(LOG_DAEMON)p Fx('.)275 4006 y(When)38 b(using)f(syslog,)
+42 b(if)c(y)m(ou)g(wish)g(to)h(c)m(hange)g(the)g(facilit)m(y)-8
+b(,)43 b(app)s(end)36 b(its)j(name)f(to)h(the)f(option)150
+4116 y(name,)g(delimited)g(b)m(y)e(a)h(single)g(colon.)61
+b(F)-8 b(or)37 b(example,)i(if)e(it)g(is)f(the)h(string)g(`)p
+Fp(syslog:local7)p Fx(')c(then)150 4226 y Ft(A)n(md)46
+b Fx(will)38 b(log)g(messages)g(via)f Fn(syslog)p Fx(\(3\))i(using)d
+(the)i(`)p Fp(LOG_LOCAL7)p Fx(')c(facilit)m(y)-8 b(.)63
+b(If)37 b(the)g(facilit)m(y)i(name)150 4335 y(sp)s(eci\014ed)28
+b(is)g(not)g(recognized,)j Ft(A)n(md)37 b Fx(will)29
+b(default)f(to)h(`)p Fp(LOG_DAEMON)p Fx('.)38 b(Note:)j(while)28
+b(y)m(ou)h(can)g(use)f(an)m(y)150 4445 y(syslog)k(facilit)m(y)i(a)m(v)
+-5 b(ailable)33 b(on)f(y)m(our)f(system,)h(it)g(is)f(generally)i(a)f
+(bad)f(idea)h(to)g(use)f(those)h(reserv)m(ed)f(for)150
+4554 y(other)g(services)g(suc)m(h)f(as)g(`)p Fp(kern)p
+Fx(',)g(`)p Fp(lpr)p Fx(',)h(`)p Fp(cron)p Fx(',)f(etc.)150
+4755 y Fm(6.5.24)63 b Fl(log_options)42 b Fm(P)m(arameter)150
+4902 y Fx(\(t)m(yp)s(e=string,)g(default=\\defaults"\).)68
+b(Same)40 b(as)f(the)h Fp(-x)e Fx(option)i(to)g Ft(A)n(md)p
+Fx(.)67 b(Sp)s(ecify)39 b(an)m(y)g(logging)150 5011 y(options)31
+b(for)g Ft(A)n(md)p Fx(.)43 b(Options)31 b(are)g(comma)h(delimited,)h
+(and)d(can)h(b)s(e)g(preceded)g(b)m(y)g(the)g(string)g(`)p
+Fp(no)p Fx(')g(to)150 5121 y(negate)24 b(their)f(meaning.)39
+b(The)22 b(`)p Fp(debug)p Fx(')g(logging)j(option)e(is)g(only)g(a)m(v)
+-5 b(ailable)25 b(if)e(am-utils)g(w)m(as)h(con\014gured)150
+5230 y(with)i Fp(--enable-debug)p Fx(.)36 b(Y)-8 b(ou)27
+b(can)g(get)h(the)e(list)i(of)e(supp)s(orted)f(debugging)i(options)f(b)
+m(y)h(running)e Fp(amd)150 5340 y(-H)p Fx(.)40 b(P)m(ossible)31
+b(v)-5 b(alues)31 b(are:)p eop end
+%%Page: 66 68
+TeXDict begin 66 67 bop 150 -116 a Fx(66)1855 b(Am-utils)30
+b(\(4.4BSD)j(Automoun)m(ter)d(Utilities\))150 299 y(`)p
+Fp(all)p Fx(')286 b(all)31 b(messages)150 457 y(`)p Fp(defaults)p
+Fx(')630 566 y(an)f(alias)i(for)e Fp(")p Fx(fatal,error,user,w)m
+(arning,info)p Fp(")150 724 y Fx(`)p Fp(debug)p Fx(')190
+b(debug)30 b(messages)150 882 y(`)p Fp(error)p Fx(')190
+b(non-fatal)31 b(system)g(errors)f(\(cannot)h(b)s(e)f(turned)f(o\013)7
+b(\))150 1040 y(`)p Fp(fatal)p Fx(')190 b(fatal)32 b(errors)d(\(cannot)
+j(b)s(e)e(turned)f(o\013)7 b(\))150 1198 y(`)p Fp(info)p
+Fx(')238 b(information)150 1356 y(`)p Fp(map)p Fx(')286
+b(map)30 b(errors)150 1514 y(`)p Fp(stats)p Fx(')190
+b(additional)31 b(statistical)i(information)150 1672
+y(`)p Fp(user)p Fx(')238 b(non-fatal)31 b(user)f(errors)150
+1830 y(`)p Fp(warn)p Fx(')238 b(w)m(arnings)150 1988
+y(`)p Fp(warning)p Fx(')94 b(w)m(arnings)150 2186 y Fm(6.5.25)63
+b Fl(map_reload_interval)43 b Fm(P)m(arameter)150 2333
+y Fx(\(t)m(yp)s(e=n)m(umeric,)28 b(default=3600\).)42
+b(The)26 b(n)m(um)m(b)s(er)f(of)i(seconds)g(that)g Ft(A)n(md)37
+b Fx(will)27 b(w)m(ait)h(b)s(efore)e(it)h(c)m(hec)m(ks)150
+2443 y(to)39 b(see)f(if)g(an)m(y)h(maps)e(ha)m(v)m(e)j(c)m(hanged)e(at)
+h(their)f(source)g(\(NIS)g(serv)m(ers,)j(LD)m(AP)d(serv)m(ers,)j
+(\014les,)f(etc.\).)150 2552 y Ft(A)n(md)g Fx(will)30
+b(reload)h(only)g(those)g(maps)f(that)h(ha)m(v)m(e)g(c)m(hanged.)150
+2750 y Fm(6.5.26)63 b Fl(nfs_allow_any_interface)44 b
+Fm(P)m(arameter)150 2897 y Fx(\(t)m(yp)s(e=string,)28
+b(default=`)p Fp(no)p Fx('\).)40 b(Normally)27 b Ft(A)n(md)37
+b Fx(accepts)28 b(lo)s(cal)g(NFS)e(pac)m(k)m(ets)j(only)e(from)f
+(127.0.0.1.)150 3007 y(If)37 b(this)h(parameter)g(is)g(set)g(to)h(`)p
+Fp(yes)p Fx(',)g(then)e Ft(amd)49 b Fx(will)38 b(accept)h(lo)s(cal)g
+(NFS)f(pac)m(k)m(ets)h(from)f(an)m(y)g(lo)s(cal)150 3116
+y(in)m(terface;)28 b(this)23 b(is)h(useful)e(on)i(hosts)f(that)i(ma)m
+(y)f(ha)m(v)m(e)h(m)m(ultiple)f(in)m(terfaces)h(where)e(the)h(system)f
+(is)h(forced)150 3226 y(to)k(send)f(all)h(outgoing)h(pac)m(k)m(ets)g
+(\(ev)m(en)f(those)g(b)s(ound)e(to)i(the)f(same)h(host\))g(via)g(an)f
+(address)g(other)g(than)150 3335 y(127.0.0.1.)150 3533
+y Fm(6.5.27)63 b Fl(nfs_allow_insecure_port)44 b Fm(P)m(arameter)150
+3680 y Fx(\(t)m(yp)s(e=string,)33 b(default=`)p Fp(no)p
+Fx('\).)45 b(Normally)33 b Ft(A)n(md)42 b Fx(will)32
+b(refuse)f(requests)h(coming)h(from)e(unprivileged)150
+3790 y(p)s(orts)k(\(i.e.,)40 b(p)s(orts)35 b Fp(>)p Fx(=)h(1024)i(on)e
+(Unix)g(systems\),)i(so)e(that)h(only)f(privileged)h(users)e(and)h(the)
+g(k)m(ernel)150 3899 y(can)27 b(send)f(NFS)h(requests)g(to)h(it.)40
+b(Ho)m(w)m(ev)m(er,)30 b(some)d(k)m(ernels)h(\(certain)g(v)m(ersions)f
+(of)h(Darwin,)f(MacOS)h(X,)150 4009 y(and)d(Lin)m(ux\))g(ha)m(v)m(e)i
+(bugs)e(that)h(cause)g(them)g(to)g(use)f(unprivileged)g(p)s(orts)g(in)g
+(certain)i(situations,)g(whic)m(h)150 4118 y(causes)37
+b Ft(A)n(md)47 b Fx(to)37 b(stop)h(dead)e(in)h(its)g(trac)m(ks.)62
+b(This)36 b(parameter)i(allo)m(ws)g Ft(A)n(md)46 b Fx(to)38
+b(op)s(erate)g(normally)150 4228 y(ev)m(en)33 b(on)g(suc)m(h)g
+(systems,)g(at)h(the)f(exp)s(ense)f(of)h(a)g(sligh)m(t)h(decrease)f(in)
+g(the)g(securit)m(y)g(of)g(its)g(op)s(erations.)150 4338
+y(If)h(y)m(ou)h(see)h(messages)g(lik)m(e)g(\\ignoring)f(request)g(from)
+g(fo)s(o:1234,)j(p)s(ort)c(not)h(reserv)m(ed")h(in)e(y)m(our)h
+Ft(A)n(md)150 4447 y Fx(log,)d(try)e(enabling)h(this)f(parameter)h(and)
+e(giv)m(e)j(it)f(another)g(go.)150 4645 y Fm(6.5.28)63
+b Fl(nfs_proto)42 b Fm(P)m(arameter)150 4792 y Fx(\(t)m(yp)s(e=string,)
+31 b(default)f(to)g(trying)h(v)m(ersion)f(tcp)g(then)g(udp\).)39
+b(By)31 b(default,)f Ft(A)n(md)39 b Fx(tries)31 b Fp(tcp)e
+Fx(and)g(then)150 4902 y Fp(udp)p Fx(.)39 b(This)27 b(option)i(forces)f
+(the)g(o)m(v)m(erall)i(NFS)e(proto)s(col)h(used)e(to)i(TCP)e(or)h(UDP)
+-8 b(.)29 b(It)f(o)m(v)m(errides)h(what)f(is)150 5011
+y(in)d(the)g Ft(A)n(md)34 b Fx(maps,)26 b(and)e(is)h(useful)f(when)g
+Ft(A)n(md)35 b Fx(is)25 b(compiled)g(with)g(TCP)f(supp)s(ort)f(in)i
+(NFSv2/NFSv3)150 5121 y(that)33 b(ma)m(y)f(not)h(b)s(e)e(stable.)47
+b(With)33 b(this)f(option)g(y)m(ou)h(can)f(turn)f(o\013)i(the)f
+(complete)i(usage)f(of)f(TCP)f(for)150 5230 y(NFS)i(dynamically)g
+(\(without)g(ha)m(ving)g(to)h(recompile)f Ft(A)n(md)9
+b Fx(\),)34 b(and)f(use)f(UDP)h(only)-8 b(,)34 b(un)m(til)f(suc)m(h)f
+(time)150 5340 y(as)f(TCP)e(supp)s(ort)g(is)h(desired)g(again.)p
+eop end
+%%Page: 67 69
+TeXDict begin 67 68 bop 150 -116 a Fx(Chapter)30 b(6:)41
+b(Amd)30 b(Con\014guration)g(File)2094 b(67)150 299 y
+Fm(6.5.29)63 b Fl(nfs_retransmit_counter)44 b Fm(P)m(arameter)150
+446 y Fx(\(t)m(yp)s(e=n)m(umeric,)h(default=11\).)77
+b(Same)42 b(as)g(the)g Ft(r)-5 b(etr)g(ansmit)53 b Fx(part)42
+b(of)g(the)g Fp(-t)g Ft(time)-5 b(out.r)g(etr)g(ansmit)150
+555 y Fx(option)38 b(to)h Ft(A)n(md)p Fx(.)63 b(Sp)s(eci\014es)37
+b(the)h(n)m(um)m(b)s(er)e(of)i(NFS)g(retransmissions)f(that)h(the)g(k)m
+(ernel)h(will)f(use)f(to)150 665 y(comm)m(unicate)g(with)e
+Ft(A)n(md)45 b Fx(using)35 b(either)h(UDP)g(or)f(TCP)g(moun)m(ts.)56
+b(See)35 b(Section)h(4.10)h([-t)g(Option],)150 775 y(page)31
+b(41.)150 978 y Fm(6.5.30)63 b Fl(nfs_retransmit_counter_udp)44
+b Fm(P)m(arameter)150 1125 y Fx(\(t)m(yp)s(e=n)m(umeric,)36
+b(default=11\).)56 b(Same)34 b(as)h(the)g Ft(nfs)p 2005
+1125 28 4 v 41 w(r)-5 b(etr)g(ansmit)p 2450 1125 V 44
+w(c)g(ounter)45 b Fx(parameter,)37 b(but)d(applied)150
+1235 y(globally)50 b(only)e(to)h(UDP)f(moun)m(ts.)94
+b(See)48 b(Section)h(6.5.29)i([nfs)p 2454 1235 V 39 w(retransmit)p
+2908 1235 V 40 w(coun)m(ter)e(P)m(arameter],)150 1344
+y(page)31 b(67.)150 1548 y Fm(6.5.31)63 b Fl
+(nfs_retransmit_counter_tcp)44 b Fm(P)m(arameter)150
+1695 y Fx(\(t)m(yp)s(e=n)m(umeric,)36 b(default=11\).)56
+b(Same)34 b(as)h(the)g Ft(nfs)p 2005 1695 V 41 w(r)-5
+b(etr)g(ansmit)p 2450 1695 V 44 w(c)g(ounter)45 b Fx(parameter,)37
+b(but)d(applied)150 1804 y(globally)50 b(only)f(to)g(TCP)f(moun)m(ts.)
+96 b(See)49 b(Section)g(6.5.29)i([nfs)p 2453 1804 V 40
+w(retransmit)p 2908 1804 V 40 w(coun)m(ter)e(P)m(arameter],)150
+1914 y(page)31 b(67.)150 2118 y Fm(6.5.32)63 b Fl
+(nfs_retransmit_counter_toplvl)45 b Fm(P)m(arameter)150
+2265 y Fx(\(t)m(yp)s(e=n)m(umeric,)32 b(default=11\).)46
+b(Same)32 b(as)g(the)g Ft(nfs)p 1983 2265 V 41 w(r)-5
+b(etr)g(ansmit)p 2428 2265 V 43 w(c)g(ounter)43 b Fx(parameter,)32
+b(applied)g(only)150 2374 y(for)f Ft(A)n(md)9 b Fx('s)32
+b(top-lev)m(el)h(UDP)f(moun)m(ts.)43 b(On)31 b(some)g(systems)h(it)f
+(is)h(useful)e(to)i(set)g(this)f(di\013eren)m(tly)h(than)150
+2484 y(the)27 b(OS)e(default,)j(so)e(as)h(to)g(b)s(etter)f(tune)g
+Ft(A)n(md)9 b Fx('s)27 b(resp)s(onsiv)m(eness)f(under)f(hea)m(vy)i(sc)m
+(heduler)f(loads.)40 b(See)150 2593 y(Section)31 b(6.5.29)i([nfs)p
+877 2593 V 39 w(retransmit)p 1331 2593 V 40 w(coun)m(ter)e(P)m
+(arameter],)i(page)e(67.)150 2797 y Fm(6.5.33)63 b Fl
+(nfs_retry_interval)43 b Fm(P)m(arameter)150 2944 y Fx(\(t)m(yp)s(e=n)m
+(umeric,)31 b(default=8\).)44 b(Same)30 b(as)i(the)f
+Ft(time)-5 b(out)40 b Fx(part)31 b(of)g(the)g Fp(-t)g
+Ft(time)-5 b(out.r)g(etr)g(ansmit)42 b Fx(option)150
+3054 y(to)25 b Ft(A)n(md)p Fx(.)39 b(Sp)s(eci\014es)23
+b(the)i(NFS)f(timeout)h(in)m(terv)-5 b(al,)27 b(in)d
+Ft(tenths)32 b Fx(of)25 b(seconds,)h(b)s(et)m(w)m(een)e(NFS/RPC)h
+(retries)150 3163 y(\(for)35 b(UDP)h(or)f(TCP\).)g(This)f(is)i(the)f(v)
+-5 b(alue)36 b(that)f(the)h(k)m(ernel)g(will)f(use)g(to)h(comm)m
+(unicate)h(with)e Ft(A)n(md)p Fx(.)150 3273 y(See)c(Section)g(4.10)h
+([-t)f(Option],)g(page)g(41.)275 3412 y Ft(A)n(md)g Fx(relies)23
+b(on)f(the)g(k)m(ernel)g(RPC)g(retransmit)g(mec)m(hanism)g(to)h
+(trigger)g(moun)m(t)f(retries.)38 b(The)22 b(v)-5 b(alues)150
+3521 y(of)23 b(the)h Ft(nfs)p 519 3521 V 41 w(r)-5 b(etr)g(ansmit)p
+964 3521 V 43 w(c)g(ounter)34 b Fx(and)23 b(the)g Ft(nfs)p
+1769 3521 V 41 w(r)-5 b(etry)p 1997 3521 V 42 w(interval)33
+b Fx(parameters)24 b(c)m(hange)g(the)g(o)m(v)m(erall)h(retry)150
+3631 y(in)m(terv)-5 b(al.)48 b(T)-8 b(o)s(o)33 b(long)g(an)f(in)m(terv)
+-5 b(al)34 b(giv)m(es)g(p)s(o)s(or)d(in)m(teractiv)m(e)k(resp)s(onse;)e
+(to)s(o)g(short)g(an)f(in)m(terv)-5 b(al)34 b(causes)150
+3740 y(excessiv)m(e)e(retries.)150 3944 y Fm(6.5.34)63
+b Fl(nfs_retry_interval_udp)44 b Fm(P)m(arameter)150
+4091 y Fx(\(t)m(yp)s(e=n)m(umeric,)27 b(default=8\).)40
+b(Same)26 b(as)g(the)g Ft(nfs)p 1909 4091 V 41 w(r)-5
+b(etry)p 2137 4091 V 42 w(interval)36 b Fx(parameter,)27
+b(but)e(applied)g(globally)150 4200 y(only)30 b(to)i(UDP)e(moun)m(ts.)
+41 b(See)31 b(Section)g(6.5.33)h([nfs)p 1935 4200 V 40
+w(retry)p 2170 4200 V 40 w(in)m(terv)-5 b(al)31 b(P)m(arameter],)h
+(page)g(67.)150 4404 y Fm(6.5.35)63 b Fl(nfs_retry_interval_tcp)44
+b Fm(P)m(arameter)150 4551 y Fx(\(t)m(yp)s(e=n)m(umeric,)27
+b(default=8\).)40 b(Same)26 b(as)g(the)g Ft(nfs)p 1909
+4551 V 41 w(r)-5 b(etry)p 2137 4551 V 42 w(interval)36
+b Fx(parameter,)27 b(but)e(applied)g(globally)150 4661
+y(only)30 b(to)i(TCP)d(moun)m(ts.)41 b(See)30 b(Section)h(6.5.33)i
+([nfs)p 1929 4661 V 39 w(retry)p 2163 4661 V 40 w(in)m(terv)-5
+b(al)32 b(P)m(arameter],)g(page)f(67.)150 4864 y Fm(6.5.36)63
+b Fl(nfs_retry_interval_toplvl)44 b Fm(P)m(arameter)150
+5011 y Fx(\(t)m(yp)s(e=n)m(umeric,)h(default=8\).)76
+b(Same)42 b(as)g(the)g Ft(nfs)p 2011 5011 V 41 w(r)-5
+b(etry)p 2239 5011 V 42 w(interval)52 b Fx(parameter,)46
+b(applied)41 b(only)h(for)150 5121 y Ft(A)n(md)9 b Fx('s)31
+b(top-lev)m(el)h(UDP)f(moun)m(ts.)40 b(On)30 b(some)g(systems)h(it)f
+(is)h(useful)e(to)i(set)g(this)f(di\013eren)m(tly)h(than)f(the)150
+5230 y(OS)36 b(default,)k(so)d(as)g(to)h(b)s(etter)g(tune)e
+Ft(A)n(md)9 b Fx('s)38 b(resp)s(onsiv)m(eness)f(under)e(hea)m(vy)j(sc)m
+(heduler)f(loads.)62 b(See)150 5340 y(Section)31 b(6.5.33)i([nfs)p
+877 5340 V 39 w(retry)p 1111 5340 V 40 w(in)m(terv)-5
+b(al)32 b(P)m(arameter],)g(page)f(67.)p eop end
+%%Page: 68 70
+TeXDict begin 68 69 bop 150 -116 a Fx(68)1855 b(Am-utils)30
+b(\(4.4BSD)j(Automoun)m(ter)d(Utilities\))150 299 y Fm(6.5.37)63
+b Fl(nfs_vers)42 b Fm(P)m(arameter)150 446 y Fx(\(t)m(yp)s(e=n)m
+(umeric,)c(default)e(to)g(trying)g(v)m(ersion)g(3)h(then)e(2\).)58
+b(By)36 b(default,)i Ft(A)n(md)45 b Fx(tries)36 b(v)m(ersion)g(3)h(and)
+150 555 y(then)k(v)m(ersion)h(2.)74 b(This)41 b(option)h(forces)g(the)f
+(o)m(v)m(erall)j(NFS)d(proto)s(col)i(used)d(to)i(v)m(ersion)g(3)g(or)g
+(2.)74 b(It)150 665 y(o)m(v)m(errides)45 b(what)e(is)h(in)f(the)h
+Ft(A)n(md)53 b Fx(maps,)46 b(and)d(is)h(useful)f(when)g
+Ft(A)n(md)53 b Fx(is)43 b(compiled)h(with)g(NFSv3)150
+775 y(supp)s(ort)32 b(that)i(ma)m(y)g(not)g(b)s(e)f(stable.)52
+b(With)34 b(this)g(option)g(y)m(ou)g(can)g(turn)e(o\013)i(the)g
+(complete)h(usage)g(of)150 884 y(NFSv3)i(dynamically)f(\(without)h(ha)m
+(ving)g(to)g(recompile)g Ft(A)n(md)9 b Fx(\),)38 b(and)e(use)g(NFSv2)g
+(only)-8 b(,)39 b(un)m(til)d(suc)m(h)150 994 y(time)31
+b(as)g(NFSv3)f(supp)s(ort)f(is)h(desired)g(again.)150
+1200 y Fm(6.5.38)63 b Fl(nis_domain)42 b Fm(P)m(arameter)150
+1347 y Fx(\(t)m(yp)s(e=string,)32 b(default)g(to)g(lo)s(cal)h(NIS)e
+(domain)g(name\).)44 b(Same)32 b(as)f(the)h Fp(-y)f Fx(option)h(to)g
+Ft(A)n(md)p Fx(.)44 b(Sp)s(ecify)150 1457 y(an)35 b(alternativ)m(e)j
+(NIS)c(domain)h(from)g(whic)m(h)g(to)h(fetc)m(h)g(the)g(NIS)e(maps.)55
+b(The)35 b(default)g(is)g(the)h(system)150 1567 y(domain)30
+b(name.)41 b(This)30 b(option)g(is)h(ignored)f(if)h(NIS)e(supp)s(ort)g
+(is)h(not)h(a)m(v)-5 b(ailable.)150 1773 y Fm(6.5.39)63
+b Fl(normalize_hostnames)43 b Fm(P)m(arameter)150 1920
+y Fx(\(t)m(yp)s(e=b)s(o)s(olean,)g(default=`)p Fp(no)p
+Fx('\).)69 b(Same)40 b(as)g(the)g Fp(-n)f Fx(option)h(to)h
+Ft(A)n(md)p Fx(.)69 b(If)39 b(`)p Fp(yes)p Fx(',)j(then)e(the)g(name)
+150 2030 y(referred)28 b(to)h(b)m(y)f Fp(${rhost})e Fx(is)i(normalized)
+h(relativ)m(e)h(to)f(the)g(host)f(database)h(b)s(efore)f(b)s(eing)g
+(used.)39 b(The)150 2139 y(e\013ect)32 b(is)e(to)h(translate)h(aliases)
+g(in)m(to)f(\\o\016cial")i(names.)150 2346 y Fm(6.5.40)63
+b Fl(normalize_slashes)43 b Fm(P)m(arameter)150 2493
+y Fx(\(t)m(yp)s(e=b)s(o)s(olean,)30 b(default=`)p Fp(yes)p
+Fx('\).)40 b(If)28 b(`)p Fp(yes)p Fx(')g(then)h(amd)f(will)h(condense)g
+(all)g(m)m(ultiple)h Fp(/)e Fx(\(slash\))h(c)m(har-)150
+2603 y(acters)h(in)m(to)f(one)g(and)f(remo)m(v)m(e)i(all)f(trailing)h
+(slashes.)40 b(If)28 b(`)p Fp(no)p Fx(',)i(then)e(amd)g(will)h(not)g
+(touc)m(h)g(strings)f(that)150 2712 y(ma)m(y)g(con)m(tain)h(rep)s
+(eated)f(or)g(trailing)h(slashes.)40 b(The)27 b(latter)i(is)f
+(sometimes)h(useful)e(with)g(SMB)h(moun)m(ts,)150 2822
+y(whic)m(h)i(often)h(require)f(m)m(ultiple)h(slash)f(c)m(haracters)i
+(in)e(pathnames.)150 3029 y Fm(6.5.41)63 b Fl(os)41 b
+Fm(P)m(arameter)150 3176 y Fx(\(t)m(yp)s(e=string,)d(default)f(to)g
+(compiled)f(in)g(v)-5 b(alue\).)59 b(Same)37 b(as)f(the)h
+Fp(-O)e Fx(option)i(to)g Ft(A)n(md)p Fx(.)58 b(Allo)m(ws)38
+b(y)m(ou)150 3285 y(to)c(o)m(v)m(erride)g(the)g(compiled-in)f(name)h
+(of)f(the)g(op)s(erating)h(system.)49 b(Useful)33 b(when)f(the)i
+(built-in)f(name)150 3395 y(is)42 b(not)f(desired)g(for)h(bac)m(kw)m
+(ard)g(compatibilit)m(y)i(reasons.)74 b(F)-8 b(or)42
+b(example,)k(if)41 b(the)h(built-in)f(name)h(is)150 3504
+y(`)p Fp(sunos5)p Fx(',)c(y)m(ou)f(can)g(o)m(v)m(erride)h(it)g(to)g(`)p
+Fp(sos5)p Fx(',)g(and)e(use)h(older)g(maps)g(whic)m(h)f(w)m(ere)i
+(written)f(with)g(the)150 3614 y(latter)32 b(in)e(mind.)150
+3821 y Fm(6.5.42)63 b Fl(osver)42 b Fm(P)m(arameter)150
+3968 y Fx(\(t)m(yp)s(e=string,)31 b(default)f(to)h(compiled)f(in)g(v)-5
+b(alue\).)41 b(Same)31 b(as)f(the)g Fp(-o)g Fx(option)g(to)h
+Ft(A)n(md)p Fx(.)41 b(Allo)m(ws)31 b(y)m(ou)f(to)150
+4077 y(o)m(v)m(erride)37 b(the)f(compiled-in)g(v)m(ersion)g(n)m(um)m(b)
+s(er)e(of)i(the)g(op)s(erating)g(system.)57 b(Useful)35
+b(when)g(the)h(built-)150 4187 y(in)f(v)m(ersion)g(is)g(not)g(desired)g
+(for)f(bac)m(kw)m(ard)i(compatibilit)m(y)h(reasons.)55
+b(F)-8 b(or)35 b(example,)i(if)e(the)g(build)f(in)150
+4296 y(v)m(ersion)26 b(is)f(`)p Fp(2.5.1)p Fx(',)h(y)m(ou)g(can)f(o)m
+(v)m(erride)i(it)f(to)g(`)p Fp(5.5.1)p Fx(',)g(and)e(use)i(older)f
+(maps)g(that)h(w)m(ere)g(written)f(with)150 4406 y(the)31
+b(latter)g(in)f(mind.)150 4613 y Fm(6.5.43)63 b Fl(pid_file)42
+b Fm(P)m(arameter)150 4760 y Fx(\(t)m(yp)s(e=string,)29
+b(default=`)p Fp(/dev/stdout)p Fx('\).)37 b(Sp)s(ecify)27
+b(a)h(\014le)f(to)h(store)g(the)g(pro)s(cess)f(ID)g(of)h(the)g(running)
+150 4869 y(daemon)23 b(in)m(to.)40 b(If)22 b(not)i(sp)s(eci\014ed,)g
+Ft(A)n(md)32 b Fx(will)24 b(prin)m(t)f(its)g(pro)s(cess)g(id)g(on)m(to)
+h(the)g(standard)e(output.)38 b(Useful)150 4979 y(for)27
+b(killing)h Ft(A)n(md)36 b Fx(after)28 b(it)f(had)g(run.)38
+b(Note)28 b(that)g(the)f(PID)g(of)g(a)h(running)d Ft(A)n(md)36
+b Fx(can)28 b(also)g(b)s(e)e(retriev)m(ed)150 5088 y(via)31
+b Ft(A)n(mq)38 b Fx(\(see)31 b(Section)g(7.4.7)h([Amq)f(-p)f(option],)h
+(page)g(76\).)275 5230 y(This)i(\014le)h(is)g(used)g(only)g(if)g(the)h
+(`)p Fp(print_pid)p Fx(')d(option)j(is)f(on)g(\(see)h(Section)g(6.5.47)
+i([prin)m(t)p 3421 5230 28 4 v 40 w(pid)c(P)m(a-)150
+5340 y(rameter],)e(page)h(69\).)p eop end
+%%Page: 69 71
+TeXDict begin 69 70 bop 150 -116 a Fx(Chapter)30 b(6:)41
+b(Amd)30 b(Con\014guration)g(File)2094 b(69)150 299 y
+Fm(6.5.44)63 b Fl(plock)42 b Fm(P)m(arameter)150 446
+y Fx(\(t)m(yp)s(e=b)s(o)s(olean,)34 b(default=`)p Fp(yes)p
+Fx('\).)47 b(Same)33 b(as)g(the)f Fp(-S)g Fx(option)h(to)h
+Ft(A)n(md)p Fx(.)47 b(If)32 b(`)p Fp(yes)p Fx(',)h(lo)s(c)m(k)h(the)f
+(running)150 555 y(executable)47 b(pages)e(of)h Ft(A)n(md)54
+b Fx(in)m(to)46 b(memory)-8 b(.)86 b(T)-8 b(o)45 b(impro)m(v)m(e)h
+Ft(A)n(md)9 b Fx('s)46 b(p)s(erformance,)i(systems)d(that)150
+665 y(supp)s(ort)30 b(the)i Fn(plo)s(c)m(k)p Fx(\(3\))h(or)f
+Fn(mlo)s(c)m(k)-5 b(all)p Fx(\(2\))34 b(call)f(can)f(lo)s(c)m(k)h(the)f
+Ft(A)n(md)41 b Fx(pro)s(cess)31 b(in)m(to)i(memory)-8
+b(.)45 b(This)31 b(w)m(a)m(y)150 775 y(there)25 b(is)g(less)g(c)m
+(hance)h(the)f(op)s(erating)g(system)g(will)h(sc)m(hedule,)g(page)g
+(out,)g(and)e(sw)m(ap)h(the)g Ft(A)n(md)34 b Fx(pro)s(cess)150
+884 y(as)28 b(needed.)40 b(This)27 b(impro)m(v)m(es)i
+Ft(A)n(md)9 b Fx('s)29 b(p)s(erformance,)f(at)h(the)f(cost)h(of)f
+(reserving)g(the)h(memory)f(used)f(b)m(y)150 994 y(the)k
+Ft(A)n(md)39 b Fx(pro)s(cess)30 b(\(making)h(it)g(una)m(v)-5
+b(ailable)32 b(for)e(other)h(pro)s(cesses\).)150 1261
+y Fm(6.5.45)63 b Fl(portmap_program)43 b Fm(P)m(arameter)150
+1408 y Fx(\(t)m(yp)s(e=n)m(umeric,)25 b(default=300019\).)42
+b(Sp)s(ecify)22 b(an)i(alternate)h(P)m(ort-mapp)s(er)e(RPC)g(program)g
+(n)m(um)m(b)s(er,)150 1517 y(other)34 b(than)g(the)g(o\016cial)h(n)m
+(um)m(b)s(er.)51 b(This)33 b(is)h(useful)f(when)g(running)f(m)m
+(ultiple)j Ft(A)n(md)43 b Fx(pro)s(cesses.)51 b(F)-8
+b(or)150 1627 y(example,)42 b(y)m(ou)d(can)h(run)d(another)i
+Ft(A)n(md)49 b Fx(in)38 b(\\test")j(mo)s(de,)g(without)e(a\013ecting)i
+(the)e(primary)f Ft(A)n(md)150 1736 y Fx(pro)s(cess)25
+b(in)f(an)m(y)i(w)m(a)m(y)-8 b(.)40 b(F)-8 b(or)26 b(safet)m(y)g
+(reasons,)g(the)f(alternate)i(program)e(n)m(um)m(b)s(ers)e(that)j(can)f
+(b)s(e)g(sp)s(eci\014ed)150 1846 y(m)m(ust)34 b(b)s(e)f(in)h(the)g
+(range)g(300019-300029,)41 b(inclusiv)m(e.)52 b Ft(A)n(mq)41
+b Fx(has)33 b(an)h(option)g Fp(-P)g Fx(whic)m(h)f(can)h(b)s(e)g(used)
+150 1956 y(to)e(sp)s(ecify)g(an)f(alternate)j(program)d(n)m(um)m(b)s
+(er)f(of)i(an)g Ft(A)n(md)41 b Fx(to)32 b(con)m(tact.)47
+b(In)31 b(this)h(w)m(a)m(y)-8 b(,)33 b(amq)f(can)g(fully)150
+2065 y(con)m(trol)g(an)m(y)f(n)m(um)m(b)s(er)e(of)h Ft(A)n(md)40
+b Fx(pro)s(cesses)30 b(running)f(on)h(the)h(same)f(host.)150
+2332 y Fm(6.5.46)63 b Fl(preferred_amq_port)43 b Fm(P)m(arameter)150
+2479 y Fx(\(t)m(yp)s(e=n)m(umeric,)26 b(default=0\).)39
+b(Sp)s(ecify)23 b(an)h(alternate)i(P)m(ort-mapp)s(er)d(RPC)h(p)s(ort)f
+(n)m(um)m(b)s(er)g(for)g Ft(A)n(md)9 b Fx('s)150 2589
+y Ft(A)n(mq)38 b Fx(service.)43 b(This)30 b(is)h(used)e(for)i(b)s(oth)f
+(UDP)h(and)f(TCP)-8 b(.)31 b(Setting)g(this)g(v)-5 b(alue)31
+b(to)h(0)f(\(or)g(not)g(de\014ning)150 2698 y(it\))25
+b(will)f(cause)h Ft(A)n(md)34 b Fx(to)24 b(select)i(an)e(arbitrary)g(p)
+s(ort)f(n)m(um)m(b)s(er.)38 b(Setting)25 b(the)f Ft(A)n(mq)31
+b Fx(RPC)24 b(service)h(p)s(ort)e(to)150 2808 y(a)32
+b(sp)s(eci\014c)e(n)m(um)m(b)s(er)g(is)h(useful)g(in)g(\014rew)m(alled)
+g(or)g(NA)-8 b(T'ed)32 b(en)m(vironmen)m(ts,)g(where)f(y)m(ou)g(need)g
+(to)h(kno)m(w)150 2917 y(whic)m(h)e(p)s(ort)g Ft(A)n(md)40
+b Fx(will)30 b(listen)h(on.)150 3184 y Fm(6.5.47)63 b
+Fl(print_pid)42 b Fm(P)m(arameter)150 3331 y Fx(\(t)m(yp)s(e=b)s(o)s
+(olean,)32 b(default=`)p Fp(no)p Fx('\).)45 b(Same)32
+b(as)f(the)h Fp(-p)f Fx(option)h(to)g Ft(A)n(md)p Fx(.)45
+b(If)31 b(`)p Fp(yes)p Fx(',)g Ft(A)n(md)41 b Fx(will)32
+b(prin)m(t)g(its)150 3441 y(pro)s(cess)e(ID)g(up)s(on)f(starting.)150
+3708 y Fm(6.5.48)63 b Fl(print_version)43 b Fm(P)m(arameter)150
+3855 y Fx(\(t)m(yp)s(e=b)s(o)s(olean,)35 b(default=`)p
+Fp(no)p Fx('\).)51 b(Same)34 b(as)g(the)g Fp(-v)f Fx(option)h(to)g
+Ft(A)n(md)p Fx(,)h(but)e(the)h(v)m(ersion)g(prin)m(ts)g(and)150
+3964 y Ft(A)n(md)f Fx(con)m(tin)m(ues)24 b(to)g(run.)37
+b(If)23 b(`)p Fp(yes)p Fx(',)h Ft(A)n(md)33 b Fx(will)24
+b(prin)m(t)e(its)i(v)m(ersion)g(information)f(string,)i(whic)m(h)e
+(includes)150 4074 y(some)31 b(con\014guration)g(and)e(compilation)j(v)
+-5 b(alues.)150 4341 y Fm(6.5.49)63 b Fl(restart_mounts)43
+b Fm(P)m(arameter)150 4488 y Fx(\(t)m(yp)s(e=b)s(o)s(olean,)34
+b(default=`)p Fp(no)p Fx('\).)47 b(Same)33 b(as)g(the)f
+Fp(-r)g Fx(option)h(to)h Ft(A)n(md)p Fx(.)47 b(If)32
+b(`)p Fp(yes)p Fx(')g Ft(A)n(md)42 b Fx(will)33 b(scan)g(the)150
+4597 y(moun)m(t)27 b(table)g(to)h(determine)f(whic)m(h)f(\014le)h
+(systems)g(are)g(curren)m(tly)g(moun)m(ted.)39 b(Whenev)m(er)28
+b(one)f(of)f(these)150 4707 y(w)m(ould)k(ha)m(v)m(e)i(b)s(een)d
+(auto-moun)m(ted,)j Ft(A)n(md)40 b Fx(inherits)30 b(it.)150
+4974 y Fm(6.5.50)63 b Fl(show_statfs_entries)43 b Fm(P)m(arameter)150
+5121 y Fx(\(t)m(yp)s(e=b)s(o)s(olean\),)34 b(default=`)p
+Fp(no)p Fx('\).)48 b(If)32 b(`)p Fp(yes)p Fx(',)h(then)g(all)g(maps)f
+(whic)m(h)h(are)g(bro)m(wsable)f(will)h(also)h(sho)m(w)150
+5230 y(the)27 b(n)m(um)m(b)s(er)e(of)h(en)m(tries)h(\(k)m(eys\))h(they)
+f(ha)m(v)m(e)g(when)f Fn(df)p Fx(\(1\))g(runs.)38 b(\(This)26
+b(is)g(accomplished)i(b)m(y)e(returning)150 5340 y(non-zero)31
+b(v)-5 b(alues)31 b(to)g(the)f Fn(statfs)p Fx(\(2\))i(system)f(call\).)
+p eop end
+%%Page: 70 72
+TeXDict begin 70 71 bop 150 -116 a Fx(70)1855 b(Am-utils)30
+b(\(4.4BSD)j(Automoun)m(ter)d(Utilities\))150 299 y Fm(6.5.51)63
+b Fl(truncate_log)43 b Fm(P)m(arameter)150 446 y Fx(\(t)m(yp)s(e=b)s(o)
+s(olean\),)28 b(default=`)p Fp(no)p Fx('\).)39 b(If)26
+b(`)p Fp(yes)p Fx(',)h(then)f Ft(A)n(md)35 b Fx(will)27
+b(truncate)f(the)h(log)g(\014le)f(\(if)g(it's)h(a)g(regular)150
+555 y(\014le\))k(on)g(startup.)41 b(This)30 b(could)g(b)s(e)g(useful)g
+(when)g(conducting)h(extensiv)m(e)h(testing)g(on)e Ft(A)n(md)40
+b Fx(maps)31 b(\(or)150 665 y Ft(A)n(md)40 b Fx(itself)7
+b(\))31 b(and)f(y)m(ou)h(don't)f(w)m(an)m(t)h(to)h(see)f(log)g(data)g
+(from)f(a)h(previous)f(run)f(in)h(the)g(same)h(\014le.)150
+853 y Fm(6.5.52)63 b Fl(unmount_on_exit)43 b Fm(P)m(arameter)150
+1000 y Fx(\(t)m(yp)s(e=b)s(o)s(olean,)30 b(default=`)p
+Fp(no)p Fx('\).)41 b(If)29 b(`)p Fp(yes)p Fx(',)h(then)f
+Ft(A)n(md)40 b Fx(will)30 b(attempt)g(to)h(unmoun)m(t)e(all)h(\014le)g
+(systems)150 1110 y(whic)m(h)43 b(it)h(kno)m(ws)e(ab)s(out.)79
+b(Normally)44 b(it)g(lea)m(v)m(es)h(all)f(\(esp.)79 b(NFS\))44
+b(moun)m(ted)f(\014le)g(systems)g(in)m(tact.)150 1219
+y(Note)36 b(that)f Ft(A)n(md)44 b Fx(do)s(es)34 b(not)h(kno)m(w)g(ab)s
+(out)f(\014le)h(systems)f(moun)m(ted)h(b)s(efore)f(it)h(starts)g(up,)g
+(unless)f(the)150 1329 y(`)p Fp(restart_mounts)p Fx(')27
+b(option)j(is)h(used)e(\(see)i(Section)g(6.5.49)i([restart)p
+2537 1329 28 4 v 40 w(moun)m(ts)e(P)m(arameter],)h(page)e(69\).)150
+1517 y Fm(6.5.53)63 b Fl(use_tcpwrappers)43 b Fm(P)m(arameter)150
+1664 y Fx(\(t)m(yp)s(e=b)s(o)s(olean\),)92 b(default=`)p
+Fp(yes)p Fx('\).)187 b(If)78 b(`)p Fp(yes)p Fx(',)91
+b(then)79 b(amd)g(will)g(use)g(the)g(tcp)m(wrapp)s(ers)150
+1774 y(\(tcp)s(d/librw)m(ap\))36 b(library)g(\(if)g(a)m(v)-5
+b(ailable\))39 b(to)e(con)m(trol)h(access)f(to)g Ft(A)n(md)45
+b Fx(via)37 b(the)f Fp(/etc/hosts.allow)150 1883 y Fx(and)f
+Fp(/etc/hosts.deny)c Fx(\014les.)57 b Ft(A)n(md)44 b
+Fx(will)36 b(v)m(erify)g(that)h(the)e(host)h(running)e
+Ft(A)n(mq)43 b Fx(is)35 b(authorized)h(to)150 1993 y(connect.)k(The)25
+b Fp(amd)g Fx(service)h(name)g(m)m(ust)f(used)g(in)g(the)h
+Fp(/etc/hosts.allow)21 b Fx(and)k Fp(/etc/hosts.deny)150
+2103 y Fx(\014les.)133 b(F)-8 b(or)62 b(example,)69 b(to)62
+b(allo)m(w)h(only)e(lo)s(calhost)i(to)e(connect)h(to)g
+Ft(A)n(md)p Fx(,)69 b(add)61 b(this)g(line)g(to)150 2212
+y Fp(/etc/hosts.allow)p Fx(:)390 2341 y Fp(amd:)47 b(localhost)275
+2470 y Fx(and)29 b(this)i(line)f(to)h Fp(/etc/hosts.deny)p
+Fx(:)390 2599 y Fp(amd:)47 b(ALL)275 2728 y Fx(Consult)21
+b(the)h(man)f(pages)h(for)g Fn(hosts)p 1525 2728 28 5
+v 40 w(access)p Fx(\(5\))i(for)d(more)h(information)g(on)g(using)f(the)
+h(tcp)m(wrapp)s(ers)150 2838 y(access-con)m(trol)33 b(library)-8
+b(.)275 2967 y(Note)43 b(that)g(in)e(particular,)46 b(y)m(ou)d(should)e
+(not)h(con\014gure)g(y)m(our)g Fp(hosts.allow)d Fx(\014le)j(to)h(spa)m
+(wn)f(a)150 3077 y(command)28 b(for)g Ft(A)n(md)9 b Fx(:)40
+b(that)28 b(will)h(cause)g Ft(A)n(md)37 b Fx(to)29 b(not)f(b)s(e)g
+(able)g(to)h Fp(waitpid)d Fx(on)i(the)h(c)m(hild)f(pro)s(cess)g(ID)150
+3186 y(of)i(an)m(y)h(bac)m(kground)f(un/moun)m(t)g(that)h
+Ft(A)n(md)40 b Fx(issued,)29 b(resulting)i(in)f(a)g(confused)g
+Ft(A)n(md)40 b Fx(that)31 b(do)s(es)f(not)150 3296 y(kno)m(w)g(what)h
+(happ)s(ened)d(to)j(those)g(bac)m(kground)f(un/moun)m(t)g(requests.)150
+3484 y Fm(6.5.54)63 b Fl(vendor)42 b Fm(P)m(arameter)150
+3631 y Fx(\(t)m(yp)s(e=string,)47 b(default)d(to)g(compiled)g(in)f(v)-5
+b(alue\).)81 b(The)43 b(name)h(of)f(the)h(v)m(endor)f(of)h(the)f(op)s
+(erating)150 3741 y(system.)e(Ov)m(errides)31 b(the)g(compiled-in)g(v)m
+(endor)f(name.)41 b(Useful)31 b(when)f(the)g(compiled-in)h(name)g(is)g
+(not)150 3850 y(desired.)40 b(F)-8 b(or)30 b(example,)h(most)e(In)m
+(tel)i(based)e(systems)g(set)h(the)g(v)m(endor)f(name)g(to)h(`)p
+Fp(unknown)p Fx(',)f(but)g(y)m(ou)150 3960 y(can)i(set)g(it)f(to)i(`)p
+Fp(redhat)p Fx('.)150 4181 y Fw(6.6)68 b(Regular)46 b(Map)f(P)l
+(arameters)150 4341 y Fx(The)30 b(follo)m(wing)i(parameters)e(are)h
+(applicable)g(only)g(to)g(regular)g(map)f(sections.)150
+4529 y Fm(6.6.1)63 b(map)p 703 4529 37 5 v 54 w(name)41
+b(P)m(arameter)150 4676 y Fx(\(t)m(yp)s(e=string,)31
+b(m)m(ust)f(b)s(e)g(sp)s(eci\014ed\).)40 b(Name)31 b(of)g(the)f(map)g
+(where)g(the)h(k)m(eys)g(are)g(lo)s(cated.)150 4864 y
+Fm(6.6.2)63 b(tag)40 b(P)m(arameter)150 5011 y Fx(\(t)m(yp)s(e=string,)
+28 b(default)e(no)g(tag\).)41 b(Eac)m(h)27 b(map)f(en)m(try)h(in)f(the)
+h(con\014guration)f(\014le)h(can)f(b)s(e)g(tagged.)41
+b(If)26 b(no)150 5121 y(tag)34 b(is)f(sp)s(eci\014ed,)g(that)g(map)f
+(section)i(will)f(alw)m(a)m(ys)h(b)s(e)f(pro)s(cessed)f(b)m(y)g
+Ft(A)n(md)p Fx(.)48 b(If)32 b(it)i(is)e(sp)s(eci\014ed,)h(then)150
+5230 y Ft(A)n(md)41 b Fx(will)33 b(pro)s(cess)e(the)i(map)e(if)h(the)h
+Fp(-T)e Fx(option)h(w)m(as)h(giv)m(en)g(to)g Ft(A)n(md)p
+Fx(,)f(and)g(the)g(v)-5 b(alue)33 b(giv)m(en)g(to)f(that)150
+5340 y(command-line)f(option)g(matc)m(hes)g(that)g(in)f(the)h(map)f
+(section.)p eop end
+%%Page: 71 73
+TeXDict begin 71 72 bop 150 -116 a Fx(Chapter)30 b(6:)41
+b(Amd)30 b(Con\014guration)g(File)2094 b(71)150 299 y
+Fw(6.7)68 b(amd.conf)45 b(Examples)150 458 y Fx(The)36
+b(follo)m(wing)i(is)e(the)h(actual)g Fp(amd.conf)e Fx(\014le)h(I)g
+(used)g(at)h(the)f(Computer)g(Science)h(Departmen)m(t)h(of)150
+568 y(Colum)m(bia)31 b(Univ)m(ersit)m(y)-8 b(.)390 702
+y Fp(#)47 b(GLOBAL)g(OPTIONS)e(SECTION)390 812 y([)i(global)g(])390
+922 y(normalize_hostnames)c(=)190 b(no)390 1031 y(print_pid)45
+b(=)668 b(no)390 1141 y(#pid_file)45 b(=)668 b(/var/run/amd.pid)390
+1250 y(restart_mounts)44 b(=)429 b(yes)390 1360 y(#unmount_on_exit)43
+b(=)334 b(yes)390 1469 y(auto_dir)46 b(=)715 b(/n)390
+1579 y(log_file)46 b(=)715 b(/var/log/amd)390 1689 y(log_options)45
+b(=)572 b(all)390 1798 y(#debug_options)44 b(=)429 b(defaults)390
+1908 y(plock)46 b(=)859 b(no)390 2017 y(selectors_in_defaults)42
+b(=)95 b(yes)390 2127 y(#)47 b(config.guess)e(picks)h(up)h("sunos5")f
+(and)h(I)g(don't)g(want)f(to)i(edit)e(my)h(maps)g(yet)390
+2237 y(os)g(=)1002 b(sos5)390 2346 y(#)47 b(if)h(you)f(print_version)d
+(after)i(setting)g(up)h("os",)f(it)i(will)e(show)h(it.)390
+2456 y(print_version)d(=)477 b(no)390 2565 y(map_type)46
+b(=)715 b(file)390 2675 y(search_path)45 b(=)572 b
+(/etc/amdmaps:/usr/lib/amd)o(:/us)o(r/l)o(ocal)o(/AMD)o(/li)o(b)390
+2785 y(browsable_dirs)44 b(=)429 b(yes)390 2894 y
+(fully_qualified_hosts)42 b(=)95 b(no)390 3113 y(#)47
+b(DEFINE)g(AN)g(AMD)g(MOUNT)f(POINT)390 3223 y([)h(/u)h(])390
+3333 y(map_name)e(=)715 b(amd.u)390 3552 y([)47 b(/proj)g(])390
+3661 y(map_name)f(=)715 b(amd.proj)390 3880 y([)47 b(/src)g(])390
+3990 y(map_name)f(=)715 b(amd.src)390 4209 y([)47 b(/misc)g(])390
+4319 y(map_name)f(=)715 b(amd.misc)390 4538 y([)47 b(/import)f(])390
+4648 y(map_name)g(=)715 b(amd.import)390 4867 y([)47
+b(/tftpboot/.amd)d(])390 4976 y(tag)j(=)954 b(tftpboot)390
+5086 y(map_name)46 b(=)715 b(amd.tftpboot)p eop end
+%%Page: 72 74
+TeXDict begin 72 73 bop eop end
+%%Page: 73 75
+TeXDict begin 73 74 bop 150 -116 a Fx(Chapter)30 b(7:)41
+b(Run-time)30 b(Administration)2035 b(73)150 299 y Fu(7)80
+b(Run-time)53 b(Administration)150 655 y Fw(7.1)68 b(Starting)46
+b Fg(A)l(md)150 815 y Ft(A)n(md)37 b Fx(is)28 b(b)s(est)g(started)g
+(from)f(`)p Fp(/etc/rc.local)p Fx(')e(on)j(BSD)g(systems,)h(or)f(from)f
+(the)h(appropriate)g(start-)150 924 y(lev)m(el)k(script)e(in)g(`)p
+Fp(/etc/init.d)p Fx(')e(on)i(System)h(V)f(systems.)390
+1066 y Fp(if)47 b([)h(-f)f(/usr/local/sbin/ctl-amd)41
+b(];)47 b(then)581 1176 y(/usr/local/sbin/ctl-amd)41
+b(start;)46 b(\(echo)h(-n)g(')g(amd'\))g(>)g(/dev/console)390
+1285 y(fi)150 1427 y Fx(The)32 b(shell)h(script,)g(`)p
+Fp(ctl-amd)p Fx(')e(is)h(used)g(to)h(start,)h(stop,)f(or)f(restart)h
+Ft(A)n(md)p Fx(.)47 b(It)33 b(is)f(a)h(relativ)m(ely)i(generic)150
+1536 y(script.)49 b(All)34 b(options)g(y)m(ou)f(w)m(an)m(t)i(to)f(set)f
+(should)g(not)g(b)s(e)g(made)g(in)g(this)g(script,)i(but)d(rather)h(up)
+s(dated)150 1646 y(in)d(the)h Fp(amd.conf)d Fx(\014le.)41
+b(See)30 b(Chapter)g(6)h([Amd)f(Con\014guration)g(File],)i(page)f(59.)
+275 1787 y(If)f(y)m(ou)h(do)g(not)g(wish)f(to)h(use)g(an)f
+Ft(A)n(md)41 b Fx(con\014guration)31 b(\014le,)g(y)m(ou)g(ma)m(y)h
+(start)f Ft(A)n(md)40 b Fx(man)m(ually)-8 b(.)43 b(F)-8
+b(or)150 1897 y(example,)31 b(getting)h(the)f(map)f(en)m(tries)h(via)g
+(NIS:)390 2038 y Fp(amd)47 b(-r)g(-l)g(/var/log/amd)e(`ypcat)h(-k)h
+(auto.master`)150 2281 y Fw(7.2)68 b(Stopping)45 b Fg(A)l(md)150
+2441 y Ft(A)n(md)40 b Fx(stops)30 b(in)g(resp)s(onse)g(to)h(t)m(w)m(o)g
+(signals.)150 2611 y(`)p Fp(SIGTERM)p Fx(')94 b(causes)29
+b(the)f(top-lev)m(el)i(automoun)m(t)f(p)s(oin)m(ts)f(to)h(b)s(e)f
+(unmoun)m(ted)f(and)g(then)h Ft(A)n(md)38 b Fx(to)29
+b(exit.)630 2720 y(An)m(y)45 b(automoun)m(ted)g(\014lesystems)g(are)h
+(left)f(moun)m(ted.)84 b(They)44 b(can)h(b)s(e)g(reco)m(v)m(ered)h(b)m
+(y)630 2830 y(restarting)31 b Ft(A)n(md)40 b Fx(with)30
+b(the)h Fp(-r)e Fx(command)h(line)h(option.)150 2996
+y(`)p Fp(SIGINT)p Fx(')142 b(causes)28 b Ft(A)n(md)37
+b Fx(to)29 b(attempt)g(to)g(unmoun)m(t)d(an)m(y)j(\014lesystems)f(whic)
+m(h)f(it)h(has)g(automoun)m(ted,)630 3106 y(in)f(addition)g(to)g(the)g
+(actions)h(of)f(`)p Fp(SIGTERM)p Fx('.)39 b(This)26 b(signal)h(is)g
+(primarily)g(used)f(for)g(debug-)630 3215 y(ging.)275
+3385 y(Actions)31 b(tak)m(en)g(for)f(other)h(signals)g(are)g
+(unde\014ned.)275 3527 y(The)e(easiest)i(and)e(safest)h(w)m(a)m(y)h(to)
+f(stop)g Ft(A)n(md)p Fx(,)g(without)g(ha)m(ving)g(to)g(\014nd)e(its)i
+(pro)s(cess)f(ID)h(b)m(y)g(hand,)150 3636 y(is)g(to)i(use)e(the)g
+Fp(ctl-amd)f Fx(script,)h(as)h(with:)390 3778 y Fp(ctl-amd)46
+b(stop)150 4021 y Fw(7.3)68 b(Restarting)47 b Fg(A)l(md)150
+4180 y Fx(Before)29 b Ft(A)n(md)37 b Fx(can)29 b(b)s(e)e(started,)i(it)
+g(is)f(vital)h(to)g(ensure)f(that)g(no)g(other)g Ft(A)n(md)38
+b Fx(pro)s(cesses)28 b(are)g(managing)150 4290 y(an)m(y)i(of)f(the)g
+(moun)m(t)g(p)s(oin)m(ts,)h(and)f(that)g(the)h(previous)e(pro)s
+(cess\(es\))i(ha)m(v)m(e)h(terminated)e(cleanly)-8 b(.)42
+b(When)150 4399 y(a)26 b(terminating)h(signal)g(is)f(set)g(to)h
+Ft(A)n(md)p Fx(,)g(the)f(automoun)m(ter)h(do)s(es)f Ft(not)35
+b Fx(terminate)27 b(righ)m(t)g(then.)39 b(Rather,)150
+4509 y(it)i(starts)g(b)m(y)f(unmoun)m(ting)g(all)h(of)g(its)f(managed)h
+(moun)m(t)g(moun)m(ts)f(in)g(the)g(bac)m(kground,)j(and)d(then)150
+4619 y(terminates.)57 b(It)36 b(usually)f(tak)m(es)i(a)f(few)g(seconds)
+f(for)h(this)f(pro)s(cess)g(to)h(happ)s(en,)g(but)f(it)h(can)g(tak)m(e)
+h(an)150 4728 y(arbitrarily)30 b(longer)h(time.)41 b(If)29
+b(t)m(w)m(o)j(or)e(more)g Ft(A)n(md)39 b Fx(pro)s(cesses)30
+b(attempt)h(to)g(manage)f(the)h(same)f(moun)m(t)150 4838
+y(p)s(oin)m(t,)h(it)g(usually)f(will)g(result)h(in)f(a)g(system)h(lo)s
+(c)m(kup.)275 4979 y(The)39 b(easiest)i(and)e(safest)i(w)m(a)m(y)g(to)f
+(restart)h Ft(A)n(md)p Fx(,)h(without)e(ha)m(ving)g(to)h(\014nd)d(its)j
+(pro)s(cess)e(ID)h(b)m(y)150 5089 y(hand,)34 b(sending)f(it)i(the)f(`)p
+Fp(SIGTERM)p Fx(')f(signal,)j(w)m(aiting)f(for)f Ft(A)n(md)43
+b Fx(to)35 b(die)f(cleanly)-8 b(,)37 b(and)c(v)m(erifying)i(so,)g(is)
+150 5198 y(to)c(use)f(the)h Fp(ctl-amd)d Fx(script,)j(as)f(with:)390
+5340 y Fp(ctl-amd)46 b(restart)p eop end
+%%Page: 74 76
+TeXDict begin 74 75 bop 150 -116 a Fx(74)1855 b(Am-utils)30
+b(\(4.4BSD)j(Automoun)m(ter)d(Utilities\))275 299 y(The)d(script)i
+(will)f(lo)s(cate)j(the)d(pro)s(cess)g(ID)h(of)f Ft(A)n(md)p
+Fx(,)h(kill)g(it,)h(and)e(w)m(ait)h(for)f(it)h(to)g(die)g(cleanly)g(b)s
+(efore)150 408 y(starting)h(a)f(new)g(instance)h(of)f(the)g(automoun)m
+(ter.)41 b Fp(ctl-amd)27 b Fx(will)j(w)m(ait)g(for)f(a)g(total)i(of)e
+(30)h(seconds)f(for)150 518 y Ft(A)n(md)40 b Fx(to)31
+b(die,)g(and)e(will)i(c)m(hec)m(k)h(once)f(ev)m(ery)g(5)g(seconds)f(if)
+h(it)g(had.)150 751 y Fw(7.4)68 b(Con)l(trolling)47 b
+Fg(A)l(md)150 910 y Fx(It)e(is)g(sometimes)h(desirable)f(or)g
+(necessary)g(to)h(exercise)g(external)g(con)m(trol)g(o)m(v)m(er)g(some)
+f(of)g Ft(A)n(md)9 b Fx('s)150 1020 y(in)m(ternal)37
+b(state.)58 b(T)-8 b(o)36 b(supp)s(ort)e(this)i(requiremen)m(t,)i
+Ft(A)n(md)45 b Fx(implemen)m(ts)36 b(an)g(RPC)f(in)m(terface)i(whic)m
+(h)f(is)150 1129 y(used)30 b(b)m(y)g(the)g Fo(Amq)j Fx(program.)40
+b(A)31 b(v)-5 b(ariet)m(y)31 b(of)g(information)g(is)f(a)m(v)-5
+b(ailable.)275 1264 y Ft(A)n(mq)33 b Fx(generally)27
+b(applies)g(an)f(op)s(eration,)h(sp)s(eci\014ed)f(b)m(y)f(a)i(single)g
+(letter)g(option,)h(to)f(a)f(list)h(of)f(moun)m(t)150
+1374 y(p)s(oin)m(ts.)39 b(The)25 b(default)g(op)s(eration)h(is)f(to)i
+(obtain)e(statistics)j(ab)s(out)d(eac)m(h)h(moun)m(t)g(p)s(oin)m(t.)39
+b(This)24 b(is)i(similar)150 1483 y(to)h(the)g(output)f(sho)m(wn)g(ab)s
+(o)m(v)m(e)i(but)d(includes)h(information)h(ab)s(out)f(the)h(n)m(um)m
+(b)s(er)e(and)h(t)m(yp)s(e)h(of)f(accesses)150 1593 y(to)31
+b(eac)m(h)h(moun)m(t)e(p)s(oin)m(t.)150 1792 y Fm(7.4.1)63
+b Ff(A)m(mq)52 b Fm(default)42 b(information)150 1939
+y Fx(With)27 b(no)f(argumen)m(ts,)i Fo(Amq)g Fx(obtains)e(a)h(brief)f
+(list)h(of)f(all)h(existing)g(moun)m(ts)g(created)g(b)m(y)f
+Ft(A)n(md)p Fx(.)39 b(This)26 b(is)150 2049 y(di\013eren)m(t)g(from)g
+(the)g(list)h(displa)m(y)m(ed)g(b)m(y)e Fn(df)p Fx(\(1\))i(since)f(the)
+g(latter)i(only)e(includes)g(system)g(moun)m(t)g(p)s(oin)m(ts.)150
+2184 y(The)k(output)g(from)g(this)g(option)h(includes)f(the)g(follo)m
+(wing)i(information:)225 2318 y Fv(\017)60 b Fx(the)31
+b(automoun)m(t)g(p)s(oin)m(t,)225 2453 y Fv(\017)60 b
+Fx(the)31 b(\014lesystem)f(t)m(yp)s(e,)225 2588 y Fv(\017)60
+b Fx(the)31 b(moun)m(t)f(map)g(or)g(moun)m(t)h(information,)225
+2722 y Fv(\017)60 b Fx(the)31 b(in)m(ternal,)g(or)f(system)h(moun)m(t)f
+(p)s(oin)m(t.)150 2882 y(F)-8 b(or)31 b(example:)390
+3017 y Fp(/)572 b(root)143 b("root")952 b(sky:\(pid75\))390
+3126 y(/homes)332 b(toplvl)47 b(/usr/local/etc/amd.home)o(s)89
+b(/homes)390 3236 y(/home)380 b(toplvl)47 b(/usr/local/etc/amd.home)136
+b(/home)390 3345 y(/homes/jsp)k(nfs)191 b(charm:/home/charm)424
+b(/a/charm/home/charm/jsp)390 3455 y(/homes/phjk)92 b(nfs)191
+b(toytown:/home/toytown)232 b(/a/toytown/home/toytown/ai)o(/phj)o(k)p
+4065 3475 42 84 v 150 3590 a Fx(If)30 b(an)g(argumen)m(t)h(is)f(giv)m
+(en)i(then)e(statistics)i(for)e(that)h(v)m(olume)g(name)g(will)g(b)s(e)
+e(output.)41 b(F)-8 b(or)31 b(example:)390 3725 y Fp(What)428
+b(Uid)143 b(Getattr)46 b(Lookup)g(RdDir)142 b(RdLnk)f(Statfs)46
+b(Mounted@)390 3834 y(/homes)332 b(0)239 b(1196)190 b(512)g(22)286
+b(0)333 b(30)238 b(90/09/14)46 b(12:32:55)p 3922 3842
+42 71 v 390 3944 a(/homes/jsp)140 b(0)239 b(0)334 b(0)286
+b(0)334 b(1180)189 b(0)286 b(90/10/13)46 b(12:56:58)p
+3922 3964 42 84 v 150 4103 a(What)288 b Fx(the)31 b(v)m(olume)g(name.)
+150 4263 y Fp(Uid)336 b Fx(ignored.)150 4423 y Fp(Getattr)144
+b Fx(the)32 b(coun)m(t)h(of)f(NFS)g Fo(getattr)40 b Fx(requests)32
+b(on)g(this)f(no)s(de.)45 b(This)31 b(should)g(only)h(b)s(e)f(non-zero)
+630 4532 y(for)f(directory)h(no)s(des.)150 4692 y Fp(Lookup)192
+b Fx(the)33 b(coun)m(t)g(of)g(NFS)f Fo(lo)s(okup)j Fx(requests)d(on)h
+(this)f(no)s(de.)47 b(This)31 b(should)h(only)g(b)s(e)g(non-zero)630
+4802 y(for)e(directory)h(no)s(des.)150 4961 y Fp(RdDir)240
+b Fx(the)31 b(coun)m(t)h(of)g(NFS)f Fo(readdir)37 b Fx(requests)31
+b(on)g(this)g(no)s(de.)43 b(This)30 b(should)g(only)i(b)s(e)e(non-zero)
+630 5071 y(for)g(directory)h(no)s(des.)150 5230 y Fp(RdLnk)240
+b Fx(the)45 b(coun)m(t)g(of)g(NFS)f Fo(readlink)50 b
+Fx(requests)45 b(on)f(this)h(no)s(de.)82 b(This)44 b(should)g(b)s(e)g
+(zero)h(for)630 5340 y(directory)31 b(no)s(des.)p eop
+end
+%%Page: 75 77
+TeXDict begin 75 76 bop 150 -116 a Fx(Chapter)30 b(7:)41
+b(Run-time)30 b(Administration)2035 b(75)150 299 y Fp(Statfs)192
+b Fx(the)36 b(coun)m(t)h(of)f(NFS)g Fo(statfs)k Fx(requests)c(on)f
+(this)h(no)s(de.)57 b(This)35 b(should)g(only)h(b)s(e)f(non-zero)630
+408 y(for)30 b(top-lev)m(el)j(automoun)m(t)e(p)s(oin)m(ts.)150
+570 y Fp(Mounted@)96 b Fx(the)31 b(date)g(and)e(time)i(the)g(v)m(olume)
+g(name)g(w)m(as)f(\014rst)g(referenced.)150 771 y Fm(7.4.2)63
+b Ff(A)m(mq)52 b Fl(-f)42 b Fm(option)150 918 y Fx(The)22
+b Fp(-f)h Fx(option)g(causes)h Ft(A)n(md)32 b Fx(to)24
+b(\015ush)d(the)i(in)m(ternal)h(moun)m(t)f(map)f(cac)m(he.)40
+b(This)22 b(is)h(useful)g(for)f(example)150 1028 y(in)i(Hesio)s(d)h
+(maps)f(since)g Ft(A)n(md)34 b Fx(will)25 b(not)g(automatically)i
+(notice)f(when)d(they)i(ha)m(v)m(e)g(b)s(een)f(up)s(dated.)37
+b(The)150 1137 y(map)e(cac)m(he)h(can)f(also)h(b)s(e)e(sync)m(hronized)
+h(with)g(the)g(map)f(source)h(b)m(y)g(using)f(the)h(`)p
+Fp(sync)p Fx(')g(option)g(\(see)150 1247 y(Section)c(5.19)h([Automoun)m
+(t)f(Filesystem],)h(page)g(54\).)150 1448 y Fm(7.4.3)63
+b Ff(A)m(mq)52 b Fl(-h)42 b Fm(option)150 1595 y Fx(By)30
+b(default)g(the)h(lo)s(cal)g(host)f(is)g(used.)40 b(In)29
+b(an)h(HP-UX)h(cluster)f(the)g(ro)s(ot)g(serv)m(er)h(is)f(used)f(since)
+h(that)h(is)150 1705 y(the)j(only)f(place)i(in)e(the)h(cluster)g(where)
+f Ft(A)n(md)43 b Fx(will)34 b(b)s(e)f(running.)49 b(T)-8
+b(o)34 b(query)f Ft(A)n(md)43 b Fx(on)33 b(another)h(host)150
+1814 y(the)d Fp(-h)e Fx(option)i(should)f(b)s(e)f(used.)150
+2016 y Fm(7.4.4)63 b Ff(A)m(mq)52 b Fl(-H)42 b Fm(option)150
+2163 y Fx(Prin)m(t)30 b(a)h(brief)f(help)g(and)g(usage)h(string.)150
+2364 y Fm(7.4.5)63 b Ff(A)m(mq)52 b Fl(-l)42 b Fm(option)150
+2511 y Fx(T)-8 b(ell)34 b Ft(A)n(md)43 b Fx(to)34 b(use)f
+Ft(lo)-5 b(g)p 948 2511 28 4 v 41 w(\014le)41 b Fx(as)33
+b(the)h(log)g(\014le)f(name.)50 b(F)-8 b(or)34 b(securit)m(y)g
+(reasons,)g(this)f Ft(must)42 b Fx(b)s(e)33 b(the)h(same)150
+2620 y(log)28 b(\014le)e(whic)m(h)g Ft(A)n(md)36 b Fx(used)26
+b(when)f(started.)40 b(This)26 b(option)h(is)f(therefore)h(only)g
+(useful)f(to)h(refresh)e Ft(A)n(md)9 b Fx('s)150 2730
+y(op)s(en)25 b(\014le)g(handle)g(on)h(the)f(log)i(\014le,)g(so)f(that)g
+(it)g(can)f(b)s(e)g(rotated)i(and)e(compressed)g(via)h(daily)g(cron)f
+(jobs.)150 2931 y Fm(7.4.6)63 b Ff(A)m(mq)52 b Fl(-m)42
+b Fm(option)150 3078 y Fx(The)35 b Fp(-m)g Fx(option)i(displa)m(ys)f
+(similar)g(information)g(ab)s(out)f(moun)m(ted)h(\014lesystems,)i
+(rather)d(than)h(auto-)150 3188 y(moun)m(t)30 b(p)s(oin)m(ts.)41
+b(The)30 b(output)g(includes)g(the)g(follo)m(wing)i(information:)225
+3324 y Fv(\017)60 b Fx(the)31 b(moun)m(t)f(information,)225
+3460 y Fv(\017)60 b Fx(the)31 b(moun)m(t)f(p)s(oin)m(t,)225
+3595 y Fv(\017)60 b Fx(the)31 b(\014lesystem)f(t)m(yp)s(e,)225
+3731 y Fv(\017)60 b Fx(the)31 b(n)m(um)m(b)s(er)e(of)h(references)h(to)
+g(this)f(\014lesystem,)225 3866 y Fv(\017)60 b Fx(the)31
+b(serv)m(er)f(hostname,)225 4002 y Fv(\017)60 b Fx(the)31
+b(state)g(of)g(the)f(\014le)h(serv)m(er,)225 4137 y Fv(\017)60
+b Fx(an)m(y)31 b(error)f(whic)m(h)g(has)g(o)s(ccurred.)275
+4300 y(F)-8 b(or)31 b(example:)390 4436 y Fp("root")523
+b(truth:\(pid602\))235 b(root)142 b(1)48 b(localhost)d(is)i(up)390
+4546 y(hesiod.home)283 b(/home)667 b(toplvl)46 b(1)i(localhost)d(is)i
+(up)390 4656 y(hesiod.vol)331 b(/vol)715 b(toplvl)46
+b(1)i(localhost)d(is)i(up)390 4765 y(hesiod.homes)235
+b(/homes)619 b(toplvl)46 b(1)i(localhost)d(is)i(up)390
+4875 y(amy:/home/amy)187 b(/a/amy/home/amy)g(nfs)j(5)48
+b(amy)f(is)g(up)390 4984 y(swan:/home/swan)91 b(/a/swan/home/swan)g
+(nfs)190 b(0)48 b(swan)e(is)i(up)f(\(Permission)d(denied\))p
+3970 5004 42 84 v 390 5094 a(ex:/home/ex)283 b(/a/ex/home/ex)g(nfs)190
+b(0)48 b(ex)f(is)g(down)275 5230 y Fx(When)26 b(the)h(reference)g(coun)
+m(t)g(is)f(zero)i(the)e(\014lesystem)h(is)g(not)g(moun)m(ted)f(but)g
+(the)g(moun)m(t)h(p)s(oin)m(t)g(and)150 5340 y(serv)m(er)k(information)
+f(is)h(still)g(b)s(eing)f(main)m(tained)h(b)m(y)f Ft(A)n(md)p
+Fx(.)p eop end
+%%Page: 76 78
+TeXDict begin 76 77 bop 150 -116 a Fx(76)1855 b(Am-utils)30
+b(\(4.4BSD)j(Automoun)m(ter)d(Utilities\))150 299 y Fm(7.4.7)63
+b Ff(A)m(mq)52 b Fl(-p)42 b Fm(option)150 446 y Fx(Return)26
+b(the)h(pro)s(cess)f(ID)h(of)g(the)g(remote)g(or)g(lo)s(cally)h
+(running)d Ft(A)n(md)p Fx(.)40 b(Useful)26 b(when)g(y)m(ou)h(need)f(to)
+i(send)150 555 y(a)g(signal)g(to)h(the)e(lo)s(cal)i Ft(A)n(md)37
+b Fx(pro)s(cess,)28 b(and)f(w)m(ould)g(rather)h(not)f(ha)m(v)m(e)i(to)g
+(searc)m(h)f(through)f(the)g(pro)s(cess)150 665 y(table.)42
+b(This)29 b(option)i(is)f(used)g(in)g(the)h Fp(ctl-amd)d
+Fx(script.)150 874 y Fm(7.4.8)63 b Ff(A)m(mq)52 b Fl(-P)42
+b Fm(option)150 1021 y Fx(Con)m(tact)49 b(an)e(alternate)j(running)45
+b Ft(A)n(md)57 b Fx(that)48 b(had)f(registered)i(itself)f(on)f(a)h
+(di\013eren)m(t)g(RPC)f Fo(pro-)150 1130 y(gram)p 358
+1130 28 4 v 40 w(n)m(um)m(b)s(er)d Fx(and)38 b(apply)g(all)h(other)g
+(op)s(erations)g(to)g(that)g(instance)g(of)g(the)g(automoun)m(ter.)66
+b(This)150 1240 y(is)36 b(useful)e(when)h(y)m(ou)h(run)e(m)m(ultiple)i
+(copies)g(of)g Ft(A)n(md)p Fx(,)h(and)e(need)g(to)h(manage)h(eac)m(h)f
+(one)g(separately)-8 b(.)150 1349 y(If)33 b(not)i(sp)s(eci\014ed,)f
+Ft(A)n(mq)41 b Fx(will)35 b(use)e(the)h(default)g(program)g(n)m(um)m(b)
+s(er)f(for)g Ft(A)n(md)p Fx(,)i(300019.)54 b(F)-8 b(or)35
+b(securit)m(y)150 1459 y(reasons,)h(the)f(only)g(alternate)i(program)e
+(n)m(um)m(b)s(ers)e Ft(A)n(md)44 b Fx(can)36 b(use)e(range)h(from)g
+(300019)i(to)f(300029,)150 1569 y(inclusiv)m(e.)275 1712
+y(F)-8 b(or)31 b(example,)g(to)g(kill)g(an)f(alternate)i(running)d
+Ft(A)n(md)9 b Fx(:)390 1856 y Fp(kill)47 b(`amq)f(-p)h(-P)h(300020`)150
+2065 y Fm(7.4.9)63 b Ff(A)m(mq)52 b Fl(-q)42 b Fm(option)150
+2212 y Fx(Suppress)18 b(an)m(y)j(error)g(messages)g(pro)s(duced)e(when)
+h(a)h(sync)m(hronous)f(unmoun)m(t)f(fails.)38 b(See)21
+b(Section)h(7.4.13)150 2321 y([Amq)30 b(-u)h(option],)g(page)g(77.)150
+2530 y Fm(7.4.10)63 b Ff(A)m(mq)53 b Fl(-s)41 b Fm(option)150
+2677 y Fx(The)25 b Fp(-s)g Fx(option)g(displa)m(ys)h(global)g
+(statistics.)41 b(If)25 b(an)m(y)h(other)g(options)f(are)h(sp)s
+(eci\014ed)f(or)g(an)m(y)h(\014lesystems)150 2787 y(named)k(then)g
+(this)g(option)h(is)g(ignored.)40 b(F)-8 b(or)31 b(example:)390
+2930 y Fp(requests)93 b(stale)238 b(mount)f(mount)g(unmount)390
+3040 y(deferred)93 b(fhandles)h(ok)381 b(failed)189 b(failed)390
+3150 y(1054)285 b(1)430 b(487)333 b(290)g(7017)150 3323
+y Fx(`)p Fp(Deferred)28 b(requests)p Fx(')630 3433 y(are)f(those)h(for)
+f(whic)m(h)g(an)g(immediate)h(reply)e(could)i(not)f(b)s(e)f
+(constructed.)40 b(F)-8 b(or)28 b(example,)630 3542 y(this)i(w)m(ould)g
+(happ)s(en)f(if)h(a)h(bac)m(kground)f(moun)m(t)h(w)m(as)f(required.)150
+3711 y(`)p Fp(Stale)f(filehandles)p Fx(')630 3821 y(coun)m(ts)j(the)g
+(n)m(um)m(b)s(er)e(of)i(times)g(the)f(k)m(ernel)i(passes)e(a)h(stale)h
+(\014lehandle)e(to)h Ft(A)n(md)p Fx(.)44 b(Large)630
+3930 y(n)m(um)m(b)s(ers)29 b(indicate)i(problems.)150
+4099 y(`)p Fp(Mount)e(ok)p Fx(')65 b(coun)m(ts)31 b(the)f(n)m(um)m(b)s
+(er)f(of)i(automoun)m(ts)g(whic)m(h)f(w)m(ere)h(successful.)150
+4268 y(`)p Fp(Mount)e(failed)p Fx(')630 4377 y(coun)m(ts)i(the)f(n)m
+(um)m(b)s(er)f(of)i(automoun)m(ts)g(whic)m(h)f(failed.)150
+4546 y(`)p Fp(Unmount)f(failed)p Fx(')630 4656 y(coun)m(ts)35
+b(the)g(n)m(um)m(b)s(er)e(of)i(times)g(a)g(\014lesystem)g(could)g(not)f
+(b)s(e)g(unmoun)m(ted.)53 b(V)-8 b(ery)35 b(large)630
+4765 y(n)m(um)m(b)s(ers)44 b(here)h(indicate)h(that)g(the)f(time)h(b)s
+(et)m(w)m(een)g(unmoun)m(t)e(attempts)i(should)f(b)s(e)630
+4875 y(increased.)150 5083 y Fm(7.4.11)63 b Ff(A)m(mq)53
+b Fl(-T)41 b Fm(option)150 5230 y Fx(The)31 b Fp(-T)f
+Fx(option)i(causes)g(the)f Ft(A)n(mq)39 b Fx(to)32 b(con)m(tact)h
+Ft(A)n(md)41 b Fx(using)31 b(the)g(TCP)g(transp)s(ort)f(only)h
+(\(connection)150 5340 y(orien)m(ted\).)42 b(Normally)-8
+b(,)32 b Ft(A)n(mq)38 b Fx(will)30 b(use)g(TCP)g(\014rst,)g(and)g(if)g
+(that)h(failed,)g(will)g(try)f(UDP)-8 b(.)p eop end
+%%Page: 77 79
+TeXDict begin 77 78 bop 150 -116 a Fx(Chapter)30 b(7:)41
+b(Run-time)30 b(Administration)2035 b(77)150 299 y Fm(7.4.12)63
+b Ff(A)m(mq)53 b Fl(-U)41 b Fm(option)150 446 y Fx(The)28
+b Fp(-U)g Fx(option)h(causes)g(the)g Ft(A)n(mq)36 b Fx(to)30
+b(con)m(tact)g Ft(A)n(md)39 b Fx(using)28 b(the)g(UDP)i(transp)s(ort)d
+(only)i(\(connection-)150 555 y(less\).)41 b(Normally)-8
+b(,)32 b Ft(A)n(mq)38 b Fx(will)31 b(use)f(TCP)f(\014rst,)h(and)g(if)g
+(that)h(failed,)g(will)g(try)f(UDP)-8 b(.)150 755 y Fm(7.4.13)63
+b Ff(A)m(mq)53 b Fl(-u)41 b Fm(option)150 902 y Fx(The)23
+b Fp(-u)f Fx(option)i(causes)f(the)h(time-to-liv)m(e)i(in)m(terv)-5
+b(al)25 b(of)e(the)g(named)g(moun)m(t)g(p)s(oin)m(ts)g(to)h(b)s(e)f
+(expired,)h(th)m(us)150 1011 y(causing)h(an)f(unmoun)m(t)f(attempt.)40
+b(This)23 b(is)h(the)h(only)f(safe)h(w)m(a)m(y)g(to)g(unmoun)m(t)e(an)h
+(automoun)m(ted)h(\014lesys-)150 1121 y(tem.)56 b(If)35
+b Fp(-u)g Fx(is)g(rep)s(eated,)i(then)e Ft(A)n(md)45
+b Fx(will)36 b(attempt)g(to)g(unmoun)m(t)f(the)g(\014lesystem)h(sync)m
+(hronously)-8 b(.)150 1230 y(This)30 b(mak)m(es)h(things)f(lik)m(e)390
+1365 y Fp(amq)47 b(-uu)g(/t/cd0d)f(&&)h(eject)f(cd0)150
+1499 y Fx(w)m(ork)34 b(as)h(exp)s(ected.)52 b(An)m(y)34
+b(error)g(messages)h(this)f(migh)m(t)h(pro)s(duce)e(can)h(b)s(e)f
+(suppressed)f(with)i(the)h Fp(-q)150 1609 y Fx(option.)41
+b(See)31 b(Section)g(7.4.9)h([Amq)f(-q)f(option],)i(page)f(76.)150
+1808 y Fm(7.4.14)63 b Ff(A)m(mq)53 b Fl(-v)41 b Fm(option)150
+1955 y Fx(The)30 b Fp(-v)g Fx(option)g(displa)m(ys)h(the)f(v)m(ersion)h
+(of)g Ft(A)n(md)40 b Fx(in)30 b(a)g(similar)h(w)m(a)m(y)g(to)h
+Ft(A)n(md)9 b Fx('s)30 b Fp(-v)g Fx(option.)150 2154
+y Fm(7.4.15)63 b Ff(A)m(mq)53 b Fl(-w)41 b Fm(option)150
+2301 y Fx(The)k Fp(-w)g Fx(option)g(translates)i(a)f(full)f(pathname)g
+(as)g(returned)g(b)m(y)g Fn(getp)m(wd)p Fx(\(3\))i(in)m(to)f(a)g(short)
+f Ft(A)n(md)150 2411 y Fx(pathname)30 b(that)h(go)s(es)g(through)f(its)
+h(moun)m(t)f(p)s(oin)m(ts.)41 b(This)29 b(option)i(requires)f(that)h
+Ft(A)n(md)40 b Fx(is)30 b(running.)150 2610 y Fm(7.4.16)63
+b(Other)41 b Ff(A)m(mq)53 b Fm(options)150 2757 y Fx(Tw)m(o)31
+b(other)f(op)s(erations)h(are)g(implemen)m(ted.)41 b(These)30
+b(mo)s(dify)f(the)i(state)h(of)e Ft(A)n(md)40 b Fx(as)31
+b(a)f(whole,)h(rather)150 2867 y(than)23 b(an)m(y)g(particular)g
+(\014lesystem.)39 b(The)23 b Fp(-x)f Fx(and)g Fp(-D)h
+Fx(options)g(ha)m(v)m(e)h(exactly)h(the)e(same)h(e\013ect)g(as)f
+Ft(A)n(md)9 b Fx('s)150 2976 y(corresp)s(onding)29 b(command)h(line)h
+(options.)275 3111 y(When)39 b Ft(A)n(md)50 b Fx(receiv)m(es)41
+b(the)f Fp(-x)g Fx(\015ag,)j(it)d(disallo)m(ws)h(turning)e(o\013)h(the)
+h(`)p Fp(fatal)p Fx(')e(or)g(`)p Fp(error)p Fx(')g(\015ags.)150
+3220 y(Both)34 b(are)f(on)g(b)m(y)g(default.)49 b(They)33
+b(are)h(mandatory)f(so)g(that)h Ft(A)n(md)42 b Fx(could)33
+b(rep)s(ort)g(imp)s(ortan)m(t)g(errors,)150 3330 y(including)d(errors)g
+(relating)h(to)g(turning)f(\015ags)h(on/o\013.)p eop
+end
+%%Page: 78 80
+TeXDict begin 78 79 bop eop end
+%%Page: 79 81
+TeXDict begin 79 80 bop 150 -116 a Fx(Chapter)30 b(8:)41
+b(FSinfo)2785 b(79)150 299 y Fu(8)80 b(FSinfo)150 530
+y Fx(XXX:)31 b(this)f(c)m(hapter)h(should)f(b)s(e)g(review)m(ed)g(b)m
+(y)h(someone)g(kno)m(wledgeable)h(with)e(fsinfo.)150
+761 y Fw(8.1)68 b Fg(FSinfo)53 b Fw(o)l(v)l(erview)150
+920 y Ft(FSinfo)41 b Fx(is)35 b(a)g(\014lesystem)g(managemen)m(t)h(to)s
+(ol.)55 b(It)35 b(has)f(b)s(een)g(designed)h(to)g(w)m(ork)g(with)g
+Ft(A)n(md)44 b Fx(to)35 b(help)150 1030 y(system)h(administrators)f(k)m
+(eep)i(trac)m(k)f(of)g(the)g(ev)m(er)g(increasing)g(\014lesystem)g
+(namespace)g(under)e(their)150 1140 y(con)m(trol.)275
+1273 y(The)k(purp)s(ose)f(of)i Ft(FSinfo)45 b Fx(is)39
+b(to)g(generate)h(all)g(the)f(imp)s(ortan)m(t)g(standard)f
+(\014lesystem)h(data)g(\014les)150 1383 y(from)33 b(a)g(single)h(set)f
+(of)h(input)e(data.)49 b(Starting)34 b(with)e(a)i(single)g(data)f
+(source)h(guaran)m(tees)g(that)g(all)g(the)150 1493 y(generated)e
+(\014les)e(are)h(self-consisten)m(t.)44 b(One)30 b(of)h(the)g(p)s
+(ossible)f(output)g(data)h(formats)g(is)g(a)g(set)g(of)g
+Ft(A)n(md)150 1602 y Fx(maps)f(whic)m(h)g(can)h(b)s(e)e(used)h(among)h
+(the)f(set)h(of)g(hosts)f(describ)s(ed)g(in)g(the)g(input)g(data.)275
+1736 y Ft(FSinfo)k Fx(implemen)m(ts)28 b(a)h(declarativ)m(e)h
+(language.)42 b(This)27 b(language)i(is)f(sp)s(eci\014cally)h(designed)
+f(for)g(de-)150 1846 y(scribing)22 b(\014lesystem)g(namespace)g(and)f
+(ph)m(ysical)i(la)m(y)m(outs.)39 b(The)21 b(basic)i(declaration)g
+(de\014nes)e(a)h(moun)m(ted)150 1955 y(\014lesystem)32
+b(including)g(its)g(device)h(name,)f(moun)m(t)g(p)s(oin)m(t,)h(and)e
+(all)i(the)f(v)m(olumes)g(and)g(access)h(p)s(ermis-)150
+2065 y(sions.)57 b Ft(FSinfo)43 b Fx(reads)35 b(this)h(information)h
+(and)e(builds)g(an)h(in)m(ternal)g(map)g(of)g(the)g(en)m(tire)h(net)m
+(w)m(ork)g(of)150 2174 y(hosts.)i(Using)25 b(this)h(map,)g(man)m(y)f
+(di\013eren)m(t)h(data)g(formats)f(can)h(b)s(e)e(pro)s(duced)g
+(including)g Fp(/etc/fstab)p Fx(,)150 2284 y Fp(/etc/exports)p
+Fx(,)j Ft(A)n(md)40 b Fx(moun)m(t)30 b(maps)g(and)g Fp(/etc/bootparams)
+p Fx(.)150 2515 y Fw(8.2)68 b(Using)46 b Fg(FSinfo)150
+2675 y Fx(The)28 b(basic)g(strategy)h(when)f(using)f
+Ft(FSinfo)35 b Fx(is)28 b(to)h(gather)f(all)h(the)g(information)f(ab)s
+(out)g(all)h(disks)e(on)h(all)150 2784 y(mac)m(hines)h(in)m(to)g(one)g
+(set)g(of)f(declarations.)42 b(F)-8 b(or)29 b(eac)m(h)g(mac)m(hine)g(b)
+s(eing)f(managed,)i(the)e(follo)m(wing)i(data)150 2894
+y(is)g(required:)225 3028 y Fv(\017)60 b Fx(Hostname)225
+3161 y Fv(\017)g Fx(List)31 b(of)f(all)h(\014lesystems)g(and,)f
+(optionally)-8 b(,)32 b(their)f(moun)m(t)f(p)s(oin)m(ts.)225
+3295 y Fv(\017)60 b Fx(Names)31 b(of)f(v)m(olumes)h(stored)g(on)f(eac)m
+(h)i(\014lesystem.)225 3429 y Fv(\017)60 b Fx(NFS)30
+b(exp)s(ort)g(information)h(for)f(eac)m(h)i(v)m(olume.)225
+3563 y Fv(\017)60 b Fx(The)30 b(list)h(of)f(static)i(\014lesystem)f
+(moun)m(ts.)275 3721 y(The)h(follo)m(wing)j(information)f(can)f(also)i
+(b)s(e)d(en)m(tered)i(in)m(to)h(the)e(same)h(con\014guration)f(\014les)
+h(so)f(that)150 3831 y(all)e(data)g(can)g(b)s(e)f(k)m(ept)h(in)f(one)g
+(place.)225 3965 y Fv(\017)60 b Fx(List)31 b(of)f(net)m(w)m(ork)h(in)m
+(terfaces)225 4098 y Fv(\017)60 b Fx(IP)30 b(address)f(of)i(eac)m(h)h
+(in)m(terface)225 4232 y Fv(\017)60 b Fx(Hardw)m(are)31
+b(address)e(of)i(eac)m(h)g(in)m(terface)225 4366 y Fv(\017)60
+b Fx(Dumpset)30 b(to)h(whic)m(h)f(eac)m(h)i(\014lesystem)f(b)s(elongs)
+225 4500 y Fv(\017)60 b Fx(and)30 b(more)36 b(.)22 b(.)g(.)275
+4658 y(T)-8 b(o)26 b(generate)i Ft(A)n(md)35 b Fx(moun)m(t)26
+b(maps,)h(the)g(automoun)m(t)f(tree)h(m)m(ust)f(also)h(b)s(e)f
+(de\014ned)f(\(see)i(Section)g(8.8)150 4768 y([FSinfo)41
+b(automoun)m(t)g(de\014nitions],)i(page)e(86\).)73 b(This)40
+b(will)g(ha)m(v)m(e)i(b)s(een)e(designed)g(at)i(the)e(time)i(the)150
+4877 y(v)m(olume)e(names)g(w)m(ere)g(allo)s(cated.)71
+b(Some)39 b(v)m(olume)i(names)e(will)h(not)g(b)s(e)f(automoun)m(ted,)k
+(so)d Ft(FSinfo)150 4987 y Fx(needs)30 b(an)g(explicit)i(list)f(of)g
+(whic)m(h)f(v)m(olumes)h(should)e(b)s(e)h(automoun)m(ted.)275
+5121 y(Hostnames)41 b(are)f(required)g(at)h(sev)m(eral)h(places)f(in)f
+(the)g Ft(FSinfo)47 b Fx(language.)72 b(It)40 b(is)h(imp)s(ortan)m(t)f
+(to)150 5230 y(stic)m(k)33 b(to)g(either)g(fully)e(quali\014ed)h(names)
+g(or)g(unquali\014ed)f(names.)46 b(Using)32 b(a)h(mixture)f(of)g(the)g
+(t)m(w)m(o)i(will)150 5340 y(inevitably)d(result)g(in)f(confusion.)p
+eop end
+%%Page: 80 82
+TeXDict begin 80 81 bop 150 -116 a Fx(80)1855 b(Am-utils)30
+b(\(4.4BSD)j(Automoun)m(ter)d(Utilities\))275 299 y(Sometimes)d(v)m
+(olumes)h(need)f(to)g(b)s(e)g(referenced)g(whic)m(h)f(are)i(not)f
+(de\014ned)f(in)g(the)i(set)f(of)g(hosts)g(b)s(eing)150
+408 y(managed)f(with)g Ft(FSinfo)p Fx(.)40 b(The)25 b(required)h
+(action)h(is)f(to)g(add)g(a)g(dumm)m(y)f(set)h(of)h(de\014nitions)e
+(for)h(the)g(host)150 518 y(and)j(v)m(olume)i(names)e(required.)40
+b(Since)30 b(the)g(\014les)g(generated)h(for)e(those)h(particular)h
+(hosts)e(will)i(not)f(b)s(e)150 628 y(used)g(on)g(them,)g(the)h(exact)h
+(v)-5 b(alues)31 b(used)e(is)i(not)f(critical.)150 866
+y Fw(8.3)68 b Fg(FSinfo)53 b Fw(grammar)150 1025 y Ft(FSinfo)37
+b Fx(has)30 b(a)h(relativ)m(ely)i(simple)d(grammar.)41
+b(Distinct)32 b(syn)m(tactic)g(constructs)f(exist)g(for)f(eac)m(h)i(of)
+f(the)150 1135 y(di\013eren)m(t)k(t)m(yp)s(es)f(of)g(data,)i(though)e
+(they)g(share)g(a)g(common)g(\015a)m(v)m(or.)53 b(Sev)m(eral)35
+b(con)m(v)m(en)m(tions)h(are)f(used)150 1245 y(in)30
+b(the)h(grammar)f(fragmen)m(ts)h(b)s(elo)m(w.)275 1383
+y(The)g(notation,)j Ft(list\()15 b Fp(xxx)p Ft(\))p Fx(,)32
+b(indicates)h(a)g(list)f(of)g(zero)h(or)f(more)g Fp(xxx)p
+Fx('s.)45 b(The)31 b(notation,)j Ft(opt\()15 b Fp(xxx)p
+Ft(\))p Fx(,)150 1493 y(indicates)27 b(zero)g(or)f(one)h
+Fp(xxx)p Fx(.)38 b(Items)26 b(in)g(double)g(quotes,)i
+Ft(e)-5 b(g)34 b Fp("host")p Fx(,)25 b(represen)m(t)h(input)g(tok)m
+(ens.)40 b(Items)150 1602 y(in)d(angle)i(brac)m(k)m(ets,)i
+Ft(e)-5 b(g)45 b Fp(<)p Fo(hostname)p Fp(>)p Fx(,)39
+b(represen)m(t)f(strings)f(in)g(the)h(input.)61 b(Strings)37
+b(need)h(not)f(b)s(e)g(in)150 1712 y(double)21 b(quotes,)j(except)e(to)
+g(di\013eren)m(tiate)h(them)f(from)e(reserv)m(ed)i(w)m(ords.)37
+b(Quoted)21 b(strings)g(ma)m(y)h(include)150 1822 y(the)k(usual)e(set)i
+(of)g(C)f(\\)p Fp(\\)p Fx(")h(escap)s(e)f(sequences)h(with)f(one)h
+(exception:)39 b(a)26 b(bac)m(kslash-newline-whitespace)150
+1931 y(sequence)38 b(is)h(squashed)e(in)m(to)i(a)f(single)h(space)g(c)m
+(haracter.)65 b(T)-8 b(o)39 b(defeat)g(this)f(feature,)i(put)e(a)g
+(further)150 2041 y(bac)m(kslash)31 b(at)g(the)g(start)g(of)f(the)h
+(second)f(line.)275 2179 y(A)m(t)40 b(the)g(outermost)g(lev)m(el)h(of)e
+(the)h(grammar,)i(the)e(input)e(consists)i(of)g(a)g(sequence)f(of)h
+(host)g(and)150 2289 y(automoun)m(t)34 b(declarations.)51
+b(These)33 b(declarations)h(are)g(all)g(parsed)f(b)s(efore)f(they)i
+(are)g(analyzed.)50 b(This)150 2398 y(means)30 b(they)h(can)f(app)s
+(ear)g(in)g(an)m(y)h(order)f(and)g(cyclic)i(host)e(references)h(are)g
+(p)s(ossible.)390 2537 y Fp(fsinfo)285 b(:)47 b Fk(list\()p
+Fp(fsinfo_attr)p Fk(\))c Fp(;)390 2756 y(fsinfo_attr)i(:)i(host)g(|)g
+(automount)f(;)150 2994 y Fw(8.4)68 b Fg(FSinfo)53 b
+Fw(host)45 b(de\014nitions)150 3154 y Fx(A)20 b(host)h(declaration)h
+(consists)f(of)f(three)h(parts:)35 b(a)21 b(set)g(of)f(mac)m(hine)h
+(attribute)g(data,)j(a)c(list)h(of)g(\014lesystems)150
+3263 y(ph)m(ysically)31 b(attac)m(hed)h(to)g(the)e(mac)m(hine,)h(and)f
+(a)h(list)g(of)g(additional)g(statically)i(moun)m(ted)d(\014lesystems.)
+390 3402 y Fp(host)381 b(:)47 b("host")f(host_data)g
+Fk(list\()p Fp(filesystem)p Fk(\))d(list\()p Fp(mount)p
+Fk(\))i Fp(;)275 3540 y Fx(Eac)m(h)e(host)f(m)m(ust)g(b)s(e)g(declared)
+h(in)f(this)h(w)m(a)m(y)g(exactly)h(once.)78 b(Suc)m(h)42
+b(things)g(as)h(the)f(hardw)m(are)150 3650 y(address,)29
+b(the)g(arc)m(hitecture)h(and)f(op)s(erating)g(system)g(t)m(yp)s(es)g
+(and)f(the)h(cluster)h(name)f(are)g(all)h(sp)s(eci\014ed)150
+3760 y(within)g(the)g Fo(host)h(data)p Fx(.)275 3898
+y(All)g(the)g(disks)f(the)h(mac)m(hine)g(has)g(should)e(then)i(b)s(e)f
+(describ)s(ed)g(in)g(the)h Fo(list)g(of)g(\014lesystems)p
+Fx(.)42 b(When)150 4008 y(describing)28 b(disks,)g(y)m(ou)h(can)f(sp)s
+(ecify)g(what)g Fo(v)m(olname)35 b Fx(the)28 b(disk/partition)h(should)
+e(ha)m(v)m(e)j(and)d(all)i(suc)m(h)150 4117 y(en)m(tries)i(are)f(built)
+g(up)f(in)m(to)i(a)f(dictionary)h(whic)m(h)f(can)g(then)g(b)s(e)f(used)
+g(for)h(building)f(the)h(automoun)m(ter)150 4227 y(maps.)275
+4365 y(The)f Fo(list)h(of)g(moun)m(ts)j Fx(sp)s(eci\014es)c(all)i(the)f
+(\014lesystems)g(that)g(should)e(b)s(e)h(statically)k(moun)m(ted)c(on)h
+(the)150 4475 y(mac)m(hine.)150 4713 y Fw(8.5)68 b Fg(FSinfo)53
+b Fw(host)45 b(attributes)150 4873 y Fx(The)37 b(host)g(data,)j
+Fo(host)p 962 4873 28 4 v 40 w(data)p Fx(,)g(alw)m(a)m(ys)f(includes)e
+(the)g Fo(hostname)p Fx(.)62 b(In)36 b(addition,)k(sev)m(eral)e(other)g
+(host)150 4982 y(attributes)31 b(can)g(b)s(e)e(giv)m(en.)390
+5121 y Fp(host_data)141 b(:)47 b(<)p Fk(hostname)p Fp(>)963
+5230 y(|)g("{")g Fk(list\()p Fp(host_attrs)p Fk(\))c
+Fp("}")k(<)p Fk(hostname)p Fp(>)963 5340 y(;)p eop end
+%%Page: 81 83
+TeXDict begin 81 82 bop 150 -116 a Fx(Chapter)30 b(8:)41
+b(FSinfo)2785 b(81)390 408 y Fp(host_attrs)93 b(:)47
+b(host_attr)e("=")i(<)p Fk(string)p Fp(>)963 518 y(|)g(netif)963
+628 y(;)390 847 y(host_attr)141 b(:)47 b("config")963
+956 y(|)g("arch")963 1066 y(|)g("os")963 1176 y(|)g("cluster")963
+1285 y(;)275 1417 y Fx(The)29 b Fo(hostname)36 b Fx(is,)31
+b(t)m(ypically)-8 b(,)33 b(the)d(fully)g(quali\014ed)g(hostname)h(of)g
+(the)f(mac)m(hine.)275 1548 y(Examples:)390 1679 y Fp(host)47
+b(dylan.doc.ic.ac.uk)390 1899 y(host)g({)581 2008 y(os)g(=)h(hpux)581
+2118 y(arch)f(=)g(hp300)390 2227 y(})g(dougal.doc.ic.ac.uk)275
+2359 y Fx(The)29 b(options)i(that)g(can)g(b)s(e)e(giv)m(en)j(as)e(host)
+h(attributes)g(are)g(sho)m(wn)e(b)s(elo)m(w.)150 2552
+y Fm(8.5.1)63 b(netif)41 b(Option)150 2699 y Fx(This)20
+b(de\014nes)g(the)h(set)g(of)g(net)m(w)m(ork)h(in)m(terfaces)g
+(con\014gured)e(on)h(the)g(mac)m(hine.)38 b(The)20 b(in)m(terface)i
+(attributes)150 2809 y(collected)31 b(b)m(y)d Ft(FSinfo)34
+b Fx(are)29 b(the)f(IP)g(address,)g(subnet)f(mask)i(and)e(hardw)m(are)h
+(address.)39 b(Multiple)29 b(in)m(ter-)150 2918 y(faces)35
+b(ma)m(y)g(b)s(e)f(de\014ned)f(for)h(hosts)h(with)f(sev)m(eral)h(in)m
+(terfaces)h(b)m(y)e(an)h(en)m(try)f(for)h(eac)m(h)g(in)m(terface.)54
+b(The)150 3028 y(v)-5 b(alues)31 b(giv)m(en)g(are)g(sanit)m(y)g(c)m
+(hec)m(k)m(ed,)i(but)c(are)i(curren)m(tly)f(un)m(used)g(for)g(an)m
+(ything)g(else.)390 3159 y Fp(netif)333 b(:)47 b("netif")f(<)p
+Fk(string)p Fp(>)g("{")g Fk(list\()p Fp(netif_attrs)p
+Fk(\))e Fp("}")i(;)390 3378 y(netif_attrs)f(:)i(netif_attr)e("=")i(<)p
+Fk(string)p Fp(>)f(;)390 3597 y(netif_attr)93 b(:)47
+b("inaddr")f(|)h("netmask")e(|)j("hwaddr")d(;)275 3729
+y Fx(Examples:)390 3860 y Fp(netif)h(ie0)h({)581 3970
+y(inaddr)94 b(=)47 b(129.31.81.37)581 4080 y(netmask)f(=)h(0xfffffe00)
+581 4189 y(hwaddr)94 b(=)47 b("08:00:20:01:a6:a5")390
+4299 y(})390 4518 y(netif)f(ec0)h({)h(})150 4711 y Fm(8.5.2)63
+b(con\014g)41 b(Option)150 4858 y Fx(This)25 b(option)i(allo)m(ws)g(y)m
+(ou)f(to)h(sp)s(ecify)f(con\014guration)g(v)-5 b(ariables)27
+b(for)e(the)i(startup)e(scripts)h(\()p Fp(rc)g Fx(scripts\).)150
+4968 y(A)k(simple)h(string)f(should)g(immediately)h(follo)m(w)h(the)e
+(k)m(eyw)m(ord.)275 5099 y(Example:)390 5230 y Fp(config)46
+b("NFS_SERVER=true")390 5340 y(config)g("ZEPHYR=true")p
+eop end
+%%Page: 82 84
+TeXDict begin 82 83 bop 150 -116 a Fx(82)1855 b(Am-utils)30
+b(\(4.4BSD)j(Automoun)m(ter)d(Utilities\))275 299 y(This)f(option)i(is)
+f(curren)m(tly)h(unsupp)s(orted.)150 494 y Fm(8.5.3)63
+b(arc)m(h)40 b(Option)150 641 y Fx(This)30 b(de\014nes)f(the)i(arc)m
+(hitecture)h(of)e(the)h(mac)m(hine.)41 b(F)-8 b(or)31
+b(example:)390 774 y Fp(arch)47 b(=)g(hp300)275 906 y
+Fx(This)32 b(is)i(in)m(tended)f(to)h(b)s(e)f(of)h(use)f(when)f
+(building)h(arc)m(hitecture)i(sp)s(eci\014c)e(moun)m(tmaps,)h(ho)m(w)m
+(ev)m(er,)150 1016 y(the)d(option)f(is)h(curren)m(tly)f(unsupp)s
+(orted.)150 1211 y Fm(8.5.4)63 b(os)41 b(Option)150 1358
+y Fx(This)30 b(de\014nes)f(the)i(op)s(erating)f(system)h(t)m(yp)s(e)g
+(of)f(the)h(host.)40 b(F)-8 b(or)32 b(example:)390 1490
+y Fp(os)47 b(=)h(hpux)275 1623 y Fx(This)33 b(information)i(is)g(used)f
+(when)g(creating)i(the)e Fp(fstab)g Fx(\014les,)i(for)e(example)h(in)g
+(c)m(ho)s(osing)g(whic)m(h)150 1733 y(format)c(to)g(use)f(for)g(the)h
+Fp(fstab)e Fx(en)m(tries)i(within)f(the)g(\014le.)150
+1928 y Fm(8.5.5)63 b(cluster)41 b(Option)150 2075 y Fx(This)30
+b(is)g(used)g(for)g(sp)s(ecifying)g(in)g(whic)m(h)g(cluster)h(the)f
+(mac)m(hine)h(b)s(elongs.)41 b(F)-8 b(or)31 b(example:)390
+2207 y Fp(cluster)46 b(=)h("theory")275 2340 y Fx(The)29
+b(cluster)h(is)g(in)m(tended)g(to)h(b)s(e)e(used)h(when)f(generating)i
+(the)f(automoun)m(t)h(maps,)f(although)g(it)h(is)150
+2449 y(curren)m(tly)f(unsupp)s(orted.)150 2678 y Fw(8.6)68
+b Fg(FSinfo)53 b Fw(\014lesystems)150 2837 y Fx(The)39
+b(list)i(of)f(ph)m(ysically)g(attac)m(hed)i(\014lesystems)e(follo)m(ws)
+h(the)f(mac)m(hine)h(attributes.)69 b(These)40 b(should)150
+2947 y(de\014ne)28 b(all)h(the)f(\014lesystems)h(a)m(v)-5
+b(ailable)31 b(from)d(this)g(mac)m(hine,)i(whether)d(exp)s(orted)h(or)h
+(not.)40 b(In)28 b(addition)150 3057 y(to)44 b(the)f(device)h(name,)j
+(\014lesystems)c(ha)m(v)m(e)i(sev)m(eral)f(attributes,)j(suc)m(h)c(as)h
+(\014lesystem)f(t)m(yp)s(e,)k(moun)m(t)150 3166 y(options,)31
+b(and)f(`)p Fp(fsck)p Fx(')f(pass)h(n)m(um)m(b)s(er)f(whic)m(h)i(are)f
+(needed)g(to)h(generate)h Fp(fstab)d Fx(en)m(tries.)390
+3299 y Fp(filesystem)93 b(:)47 b("fs")g(<)p Fk(device)p
+Fp(>)e("{")i Fk(list\()p Fp(fs_data)p Fk(\))d Fp("}")j(;)390
+3518 y(fs_data)237 b(:)47 b(fs_data_attr)e("=")i(<)p
+Fk(string)p Fp(>)963 3627 y(|)g(mount)963 3737 y(;)390
+3956 y(fs_data_attr)963 4066 y(:)g("fstype")f(|)h("opts")f(|)i
+("passno")963 4175 y(|)f("freq")f(|)i("dumpset")d(|)i("log")963
+4285 y(;)275 4417 y Fx(Here,)30 b Fp(<)p Fo(device)p
+Fp(>)g Fx(is)f(the)g(device)i(name)e(of)h(the)f(disk)g(\(for)g
+(example,)i Fp(/dev/dsk/2s0)p Fx(\).)37 b(The)29 b(device)150
+4527 y(name)j(is)f(used)g(for)h(building)e(the)i(moun)m(t)g(maps)f(and)
+g(for)g(the)h Fp(fstab)e Fx(\014le.)45 b(The)31 b(attributes)h(that)h
+(can)150 4637 y(b)s(e)d(sp)s(eci\014ed)f(are)i(sho)m(wn)f(in)g(the)h
+(follo)m(wing)g(section.)275 4769 y(The)e Ft(FSinfo)37
+b Fx(con\014guration)31 b(\014le)f(for)h Fp(dylan.doc.ic.ac.uk)25
+b Fx(is)30 b(listed)h(b)s(elo)m(w.)390 4902 y Fp(host)47
+b(dylan.doc.ic.ac.uk)390 5121 y(fs)g(/dev/dsk/0s0)e({)772
+5230 y(fstype)h(=)h(swap)390 5340 y(})p eop end
+%%Page: 83 85
+TeXDict begin 83 84 bop 150 -116 a Fx(Chapter)30 b(8:)41
+b(FSinfo)2785 b(83)390 408 y Fp(fs)47 b(/dev/dsk/0s0)e({)772
+518 y(fstype)h(=)h(hfs)772 628 y(opts)f(=)i(rw,noquota,grpid)772
+737 y(passno)e(=)h(0;)772 847 y(freq)f(=)i(1;)772 956
+y(mount)e(/)i({)f(})390 1066 y(})390 1285 y(fs)g(/dev/dsk/1s0)e({)772
+1395 y(fstype)h(=)h(hfs)772 1504 y(opts)f(=)i(defaults)772
+1614 y(passno)e(=)h(1;)772 1724 y(freq)f(=)i(1;)772 1833
+y(mount)e(/usr)h({)1154 1943 y(local)f({)1535 2052 y(exportfs)g
+("dougal)g(eden)g(dylan)h(zebedee)f(brian")1535 2162
+y(volname)g(/nfs/hp300/local)1154 2271 y(})772 2381 y(})390
+2491 y(})390 2710 y(fs)h(/dev/dsk/2s0)e({)772 2819 y(fstype)h(=)h(hfs)
+772 2929 y(opts)f(=)i(defaults)772 3039 y(passno)e(=)h(1;)772
+3148 y(freq)f(=)i(1;)772 3258 y(mount)e(default)g({)1154
+3367 y(exportfs)f("toytown_clients)f(hangers_on")1154
+3477 y(volname)h(/home/dylan/dk2)772 3587 y(})390 3696
+y(})390 3915 y(fs)i(/dev/dsk/3s0)e({)772 4025 y(fstype)h(=)h(hfs)772
+4134 y(opts)f(=)i(defaults)772 4244 y(passno)e(=)h(1;)772
+4354 y(freq)f(=)i(1;)772 4463 y(mount)e(default)g({)1154
+4573 y(exportfs)f("toytown_clients)f(hangers_on")1154
+4682 y(volname)h(/home/dylan/dk3)772 4792 y(})390 4902
+y(})390 5121 y(fs)i(/dev/dsk/5s0)e({)772 5230 y(fstype)h(=)h(hfs)772
+5340 y(opts)f(=)i(defaults)p eop end
+%%Page: 84 86
+TeXDict begin 84 85 bop 150 -116 a Fx(84)1855 b(Am-utils)30
+b(\(4.4BSD)j(Automoun)m(ter)d(Utilities\))772 299 y Fp(passno)46
+b(=)h(1;)772 408 y(freq)f(=)i(1;)772 518 y(mount)e(default)g({)1154
+628 y(exportfs)f("toytown_clients)f(hangers_on")1154
+737 y(volname)h(/home/dylan/dk5)772 847 y(})390 956 y(})150
+1162 y Fm(8.6.1)63 b(fst)m(yp)s(e)41 b(Option)150 1309
+y Fx(This)27 b(sp)s(eci\014es)h(the)g(t)m(yp)s(e)g(of)g(\014lesystem)h
+(b)s(eing)e(declared)i(and)e(will)h(b)s(e)g(placed)g(in)m(to)h(the)f
+Fp(fstab)f Fx(\014le)h(as)150 1419 y(is.)40 b(The)29
+b(v)-5 b(alue)30 b(of)g(this)f(option)h(will)f(b)s(e)g(handed)f(to)i
+Fp(mount)e Fx(as)i(the)g(\014lesystem)f(t)m(yp)s(e|it)h(should)f(ha)m
+(v)m(e)150 1529 y(suc)m(h)h(v)-5 b(alues)31 b(as)f Fp(4.2)p
+Fx(,)g Fp(nfs)g Fx(or)g Fp(swap)p Fx(.)40 b(The)29 b(v)-5
+b(alue)31 b(is)g(not)f(examined)h(for)f(correctness.)275
+1670 y(There)21 b(is)g(one)h(sp)s(ecial)g(case.)39 b(If)21
+b(the)h(\014lesystem)g(t)m(yp)s(e)f(is)h(sp)s(eci\014ed)f(as)g(`)p
+Fp(export)p Fx(')g(then)g(the)h(\014lesystem)150 1779
+y(information)28 b(will)h(not)f(b)s(e)f(added)h(to)g(the)g(host's)h
+Fp(fstab)d Fx(information,)j(but)f(it)g(will)g(still)h(b)s(e)f(visible)
+g(on)150 1889 y(the)k(net)m(w)m(ork.)48 b(This)31 b(is)h(useful)g(for)g
+(de\014ning)f(hosts)h(whic)m(h)g(con)m(tain)i(referenced)e(v)m(olumes)h
+(but)e(whic)m(h)150 1999 y(are)g(not)f(under)f(full)h(con)m(trol)i(of)f
+Ft(FSinfo)p Fx(.)275 2140 y(Example:)390 2281 y Fp(fstype)46
+b(=)i(swap)150 2487 y Fm(8.6.2)63 b(opts)41 b(Option)150
+2634 y Fx(This)30 b(de\014nes)f(an)m(y)i(options)f(that)h(should)f(b)s
+(e)g(giv)m(en)h(to)g Fn(moun)m(t)p Fx(\(8\))h(in)e(the)g
+Fp(fstab)f Fx(\014le.)41 b(F)-8 b(or)31 b(example:)390
+2776 y Fp(opts)47 b(=)g(rw,nosuid,grpid)150 2982 y Fm(8.6.3)63
+b(passno)42 b(Option)150 3129 y Fx(This)34 b(de\014nes)g(the)h
+Fn(fsc)m(k)p Fx(\(8\))h(pass)e(n)m(um)m(b)s(er)f(in)i(whic)m(h)f(to)i
+(c)m(hec)m(k)g(the)f(\014lesystem.)54 b(This)33 b(v)-5
+b(alue)36 b(will)f(b)s(e)150 3238 y(placed)c(in)m(to)g(the)g
+Fp(fstab)e Fx(\014le.)275 3379 y(Example:)390 3521 y
+Fp(passno)46 b(=)i(1)150 3727 y Fm(8.6.4)63 b(freq)41
+b(Option)150 3874 y Fx(This)27 b(de\014nes)h(the)g(in)m(terv)-5
+b(al)29 b(\(in)g(da)m(ys\))f(b)s(et)m(w)m(een)h(dumps.)38
+b(The)28 b(v)-5 b(alue)28 b(is)h(placed)f(as)h(is)f(in)m(to)h(the)f
+Fp(fstab)150 3983 y Fx(\014le.)275 4125 y(Example:)390
+4266 y Fp(freq)47 b(=)g(3)150 4472 y Fm(8.6.5)63 b(moun)m(t)41
+b(Option)150 4619 y Fx(This)e(de\014nes)g(the)h(moun)m(tp)s(oin)m(t)g
+(at)g(whic)m(h)g(to)g(place)h(the)f(\014lesystem.)70
+b(If)39 b(the)h(moun)m(tp)s(oin)m(t)g(of)g(the)150 4729
+y(\014lesystem)26 b(is)f(sp)s(eci\014ed)g(as)h Fp(default)p
+Fx(,)f(then)g(the)h(\014lesystem)g(will)g(b)s(e)f(moun)m(ted)g(in)g
+(the)h(automoun)m(ter's)150 4838 y(tree)39 b(under)f(its)h(v)m(olume)g
+(name)g(and)f(the)h(moun)m(t)f(will)h(automatically)j(b)s(e)c
+(inherited)g(b)m(y)h(the)g(auto-)150 4948 y(moun)m(ter.)275
+5089 y(F)-8 b(ollo)m(wing)34 b(the)e(moun)m(tp)s(oin)m(t,)g(namespace)h
+(information)f(for)f(the)h(\014lesystem)g(ma)m(y)h(b)s(e)e(describ)s
+(ed.)150 5199 y(The)f(options)h(that)g(can)f(b)s(e)g(giv)m(en)h(here)g
+(are)f Fp(exportfs)p Fx(,)f Fp(volname)f Fx(and)i Fp(sel)p
+Fx(.)275 5340 y(The)f(format)i(is:)p eop end
+%%Page: 85 87
+TeXDict begin 85 86 bop 150 -116 a Fx(Chapter)30 b(8:)41
+b(FSinfo)2785 b(85)390 299 y Fp(mount)333 b(:)47 b("mount")f(vol_tree)g
+(;)390 518 y(vol_tree)189 b(:)47 b Fk(list\()p Fp(vol_tree_attr)p
+Fk(\))c Fp(;)390 737 y(vol_tree_attr)963 847 y(:)95 b(<)p
+Fk(string)p Fp(>)45 b("{")i Fk(list\()p Fp(vol_tree_info)p
+Fk(\))c Fp(vol_tree)i("}")i(;)390 1066 y(vol_tree_info)963
+1176 y(:)g("exportfs")e(<)p Fk(export-data)p Fp(>)963
+1285 y(|)i("volname")e(<)p Fk(volname)p Fp(>)963 1395
+y(|)i("sel")g(<)p Fk(selector-list)p Fp(>)963 1504 y(;)275
+1640 y Fx(Example:)390 1775 y Fp(mount)f(default)g({)581
+1884 y(exportfs)f("dylan)i(dougal)f(florence)f(zebedee")581
+1994 y(volname)h(/vol/andrew)390 2103 y(})275 2239 y
+Fx(In)29 b(the)i(ab)s(o)m(v)m(e)h(example,)f(the)g(\014lesystem)f
+(curren)m(tly)h(b)s(eing)f(declared)h(will)g(ha)m(v)m(e)g(an)g(en)m
+(try)f(placed)150 2348 y(in)m(to)d(the)f Fp(exports)e
+Fx(\014le)i(allo)m(wing)i(the)e(\014lesystem)g(to)h(b)s(e)e(exp)s
+(orted)g(to)i(the)f(mac)m(hines)h Fp(dylan)p Fx(,)e Fp(dougal)p
+Fx(,)150 2458 y Fp(florence)41 b Fx(and)i Fp(zebedee)p
+Fx(.)78 b(The)43 b(v)m(olume)h(name)f(b)m(y)h(whic)m(h)f(the)g
+(\014lesystem)h(will)g(b)s(e)f(referred)f(to)150 2567
+y(remotely)-8 b(,)32 b(is)f Fp(/vol/andrew)p Fx(.)38
+b(By)31 b(declaring)g(the)g(moun)m(tp)s(oin)m(t)g(to)g(b)s(e)f
+Fp(default)p Fx(,)f(the)i(\014lesystem)g(will)150 2677
+y(b)s(e)h(moun)m(ted)h(on)g(the)g(lo)s(cal)i(mac)m(hine)e(in)g(the)g
+(automoun)m(ter)h(tree,)h(where)d Ft(A)n(md)43 b Fx(will)33
+b(automatically)150 2787 y(inherit)d(the)h(moun)m(t)f(as)h
+Fp(/vol/andrew)p Fx(.)150 2947 y(`)p Fp(exportfs)p Fx(')630
+3057 y(a)38 b(string)g(de\014ning)e(whic)m(h)i(mac)m(hines)g(the)g
+(\014lesystem)f(ma)m(y)i(b)s(e)e(exp)s(orted)g(to.)63
+b(This)37 b(is)630 3166 y(copied,)42 b(as)e(is,)h(in)m(to)g(the)e
+Fp(exports)e Fx(\014le|no)j(sanit)m(y)g(c)m(hec)m(king)h(is)e(p)s
+(erformed)f(on)h(this)630 3276 y(string.)150 3436 y(`)p
+Fp(volname)p Fx(')94 b(a)33 b(string)g(whic)m(h)g(declares)h(the)f
+(remote)h(name)f(b)m(y)f(whic)m(h)h(to)h(reference)f(the)g
+(\014lesystem.)630 3545 y(The)27 b(string)g(is)g(en)m(tered)g(in)m(to)i
+(a)e(dictionary)h(and)e(allo)m(ws)j(y)m(ou)e(to)h(refer)f(to)h(this)f
+(\014lesystem)630 3655 y(in)j(other)h(places)g(b)m(y)f(this)g(v)m
+(olume)i(name.)150 3815 y(`)p Fp(sel)p Fx(')286 b(a)28
+b(string)f(whic)m(h)g(is)g(placed)h(in)m(to)g(the)g(automoun)m(ter)g
+(maps)e(as)i(a)f(selector)i(for)e(the)h(\014lesys-)630
+3925 y(tem.)150 4125 y Fm(8.6.6)63 b(dumpset)41 b(Option)150
+4271 y Fx(This)30 b(pro)m(vides)h(supp)s(ort)f(for)h(Imp)s(erial)f
+(College's)k(lo)s(cal)e(\014le)f(bac)m(kup)g(to)s(ols)h(and)f(is)g(not)
+g(do)s(cumen)m(ted)150 4381 y(further)e(here.)150 4581
+y Fm(8.6.7)63 b(log)41 b(Option)150 4728 y Fx(Sp)s(eci\014es)36
+b(the)i(log)g(device)g(for)f(the)g(curren)m(t)g(\014lesystem.)61
+b(This)36 b(is)h(ignored)g(if)g(not)h(required)e(b)m(y)h(the)150
+4838 y(particular)31 b(\014lesystem)f(t)m(yp)s(e.)150
+5071 y Fw(8.7)68 b Fg(FSinfo)53 b Fw(static)46 b(moun)l(ts)150
+5230 y Fx(Eac)m(h)27 b(host)g(ma)m(y)g(also)h(ha)m(v)m(e)g(a)f(n)m(um)m
+(b)s(er)f(of)g(statically)k(moun)m(ted)c(\014lesystems.)40
+b(F)-8 b(or)28 b(example,)g(the)f(host)150 5340 y(ma)m(y)37
+b(b)s(e)e(a)i(diskless)f(w)m(orkstation)h(in)f(whic)m(h)g(case)h(it)g
+(will)f(ha)m(v)m(e)i(no)e Fp(fs)f Fx(declarations.)59
+b(In)36 b(this)g(case)p eop end
+%%Page: 86 88
+TeXDict begin 86 87 bop 150 -116 a Fx(86)1855 b(Am-utils)30
+b(\(4.4BSD)j(Automoun)m(ter)d(Utilities\))150 299 y(the)i
+Fp(mount)e Fx(declaration)j(is)f(used)f(to)i(determine)e(from)h(where)f
+(its)h(\014lesystems)g(will)g(b)s(e)f(moun)m(ted.)45
+b(In)150 408 y(addition)33 b(to)g(b)s(eing)g(added)f(to)h(the)g
+Fp(fstab)f Fx(\014le,)h(this)g(information)g(can)g(also)h(b)s(e)e(used)
+g(to)h(generate)i(a)150 518 y(suitable)c Fp(bootparams)c
+Fx(\014le.)390 657 y Fp(mount)333 b(:)47 b("mount")f(<)p
+Fk(volname)p Fp(>)f Fk(list\()p Fp(localinfo)p Fk(\))f
+Fp(;)390 876 y(localinfo)141 b(:)47 b(localinfo_attr)d(<)p
+Fk(string)p Fp(>)i(;)390 1095 y(localinfo_attr)963 1205
+y(:)h("as")963 1314 y(|)g("from")963 1424 y(|)g("fstype")963
+1534 y(|)g("opts")963 1643 y(;)275 1782 y Fx(The)30 b(\014lesystem)i
+(sp)s(eci\014ed)e(to)i(b)s(e)e(moun)m(ted)h(will)h(b)s(e)e(searc)m(hed)
+i(for)f(in)g(the)g(dictionary)h(of)f(v)m(olume)150 1891
+y(names)f(built)g(when)g(scanning)g(the)h(list)g(of)f(hosts')h
+(de\014nitions.)275 2030 y(The)e(attributes)i(ha)m(v)m(e)h(the)f(follo)
+m(wing)g(seman)m(tics:)150 2196 y(`)p Fp(from)e Fk(machine)p
+Fx(')630 2305 y(moun)m(t)h(the)h(\014lesystem)g(from)e(the)i(mac)m
+(hine)g(with)f(the)h(hostname)f(of)h Fo(mac)m(hine)p
+Fx(.)150 2469 y(`)p Fp(as)f Fk(mountpoint)p Fx(')630
+2579 y(moun)m(t)37 b(the)g(\014lesystem)h(lo)s(cally)g(as)g(the)f(name)
+g(giv)m(en,)j(in)d(case)h(this)f(is)g(di\013eren)m(t)g(from)630
+2688 y(the)31 b(adv)m(ertised)g(v)m(olume)g(name)f(of)h(the)f
+(\014lesystem.)150 2852 y(`)p Fp(opts)f Fk(options)p
+Fx(')630 2962 y(nativ)m(e)j Fn(moun)m(t)p Fx(\(8\))f(options.)150
+3125 y(`)p Fp(fstype)e Fk(type)p Fx(')630 3235 y(t)m(yp)s(e)i(of)f
+(\014lesystem)h(to)g(b)s(e)f(moun)m(ted.)275 3401 y(An)g(example:)390
+3539 y Fp(mount)46 b(/export/exec/hp300/local)c(as)47
+b(/usr/local)275 3678 y Fx(If)38 b(the)h(moun)m(tp)s(oin)m(t)f(sp)s
+(eci\014ed)g(is)h(either)g Fp(/)f Fx(or)h Fp(swap)p Fx(,)h(the)e(mac)m
+(hine)i(will)f(b)s(e)f(considered)g(to)i(b)s(e)150 3788
+y(b)s(o)s(oting)35 b(o\013)h(the)f(net)g(and)g(this)g(will)g(b)s(e)g
+(noted)g(for)g(use)g(in)f(generating)j(a)e Fp(bootparams)e
+Fx(\014le)i(for)g(the)150 3897 y(host)30 b(whic)m(h)h(o)m(wns)f(the)g
+(\014lesystems.)150 4136 y Fw(8.8)68 b(De\014ning)45
+b(an)g Fg(A)l(md)58 b Fw(Moun)l(t)45 b(Map)g(in)f Fg(FSinfo)150
+4295 y Fx(The)c(maps)f(used)g(b)m(y)h Ft(A)n(md)50 b
+Fx(can)40 b(b)s(e)g(constructed)g(from)f Ft(FSinfo)47
+b Fx(b)m(y)40 b(de\014ning)f(all)i(the)f(automoun)m(t)150
+4405 y(trees.)h Ft(FSinfo)c Fx(tak)m(es)32 b(all)f(the)g(de\014nitions)
+f(found)f(and)g(builds)h(one)g(map)g(for)g(eac)m(h)i(top)f(lev)m(el)h
+(tree.)275 4544 y(The)21 b(automoun)m(t)i(tree)f(is)g(usually)g
+(de\014ned)f(last.)38 b(A)22 b(single)h(automoun)m(t)g(con\014guration)
+f(will)g(usually)150 4653 y(apply)i(to)g(an)g(en)m(tire)h(managemen)m
+(t)g(domain.)38 b(One)24 b Fp(automount)d Fx(declaration)26
+b(is)e(needed)f(for)h(eac)m(h)h Ft(A)n(md)150 4763 y
+Fx(automoun)m(t)c(p)s(oin)m(t.)38 b Ft(FSinfo)26 b Fx(determines)21
+b(whether)e(the)i(automoun)m(t)g(p)s(oin)m(t)g(is)f Fo(direct)j
+Fx(\(see)e(Section)g(5.20)150 4872 y([Direct)j(Automoun)m(t)f
+(Filesystem],)j(page)d(55\))h(or)e Fo(indirect)j Fx(\(see)e(Section)g
+(5.23)h([T)-8 b(op-lev)m(el)25 b(Filesystem],)150 4982
+y(page)i(56\).)41 b(Direct)28 b(automoun)m(t)f(p)s(oin)m(ts)g(are)g
+(distinguished)e(b)m(y)i(the)g(fact)g(that)g(there)g(is)g(no)f
+(underlying)150 5092 y Fo(automoun)m(t)p 587 5092 28
+4 v 41 w(tree)p Fx(.)390 5230 y Fp(automount)141 b(:)47
+b("automount")e Fk(opt\()p Fp(auto_opts)p Fk(\))f Fp(automount_tree)g
+(;)p eop end
+%%Page: 87 89
+TeXDict begin 87 88 bop 150 -116 a Fx(Chapter)30 b(8:)41
+b(FSinfo)2785 b(87)390 299 y Fp(auto_opts)141 b(:)47
+b("opts")f(<)p Fk(mount-options)p Fp(>)e(;)390 518 y(automount_tree)963
+628 y(:)j Fk(list\()p Fp(automount_attr)p Fk(\))963 737
+y Fp(;)390 956 y(automount_attr)963 1066 y(:)g(<)p Fk(string)p
+Fp(>)f("=")h(<)p Fk(volname)p Fp(>)963 1176 y(|)g(<)p
+Fk(string)p Fp(>)f("->")g(<)p Fk(symlink)p Fp(>)963 1285
+y(|)h(<)p Fk(string)p Fp(>)f("{")h(automount_tree)d("}")963
+1395 y(;)275 1538 y Fx(If)31 b Fp(<)p Fo(moun)m(t-options)p
+Fp(>)i Fx(is)f(giv)m(en,)j(then)d(it)h(is)f(the)h(string)f(to)h(b)s(e)f
+(placed)h(in)f(the)g(maps)g(for)g Ft(A)n(md)42 b Fx(for)150
+1648 y(the)31 b Fp(opts)e Fx(option.)275 1791 y(A)36
+b Fo(map)i Fx(is)e(t)m(ypically)h(a)g(tree)f(of)g(\014lesystems,)i(for)
+e(example)g Fp(home)f Fx(normally)h(con)m(tains)h(a)f(tree)h(of)150
+1901 y(\014lesystems)31 b(represen)m(ting)f(other)h(mac)m(hines)g(in)f
+(the)g(net)m(w)m(ork.)275 2044 y(A)i(map)f(can)h(either)h(b)s(e)e(giv)m
+(en)i(as)f(a)g(name)g(represen)m(ting)h(an)e(already)i(de\014ned)e(v)m
+(olume)h(name,)h(or)150 2153 y(it)i(can)f(b)s(e)f(a)i(tree.)52
+b(A)34 b(tree)h(is)f(represen)m(ted)g(b)m(y)g(placing)h(braces)f(after)
+h(the)f(name.)52 b(F)-8 b(or)34 b(example,)i(to)150 2263
+y(de\014ne)30 b(a)g(tree)h Fp(/vol)p Fx(,)f(the)g(follo)m(wing)i(map)e
+(w)m(ould)g(b)s(e)g(de\014ned:)390 2406 y Fp(automount)45
+b(/vol)i({)g(})275 2550 y Fx(Within)30 b(a)h(tree,)g(the)g(only)f
+(items)h(that)g(can)g(app)s(ear)f(are)g(more)h(maps.)40
+b(F)-8 b(or)31 b(example:)390 2693 y Fp(automount)45
+b(/vol)i({)581 2803 y(andrew)f({)h(})581 2912 y(X11)g({)g(})390
+3022 y(})275 3165 y Fx(In)25 b(this)i(case,)i Ft(FSinfo)k
+Fx(will)27 b(lo)s(ok)g(for)g(v)m(olumes)g(named)f Fp(/vol/andrew)e
+Fx(and)i Fp(/vol/X11)e Fx(and)i(a)h(map)150 3275 y(en)m(try)35
+b(will)f(b)s(e)g(generated)i(for)e(eac)m(h.)54 b(If)34
+b(the)g(v)m(olumes)h(are)g(de\014ned)e(more)i(than)f(once,)i(then)e
+Ft(FSinfo)150 3384 y Fx(will)d(generate)h(a)e(series)h(of)g(alternate)h
+(en)m(tries)f(for)f(them)g(in)g(the)h(maps.)275 3528
+y(Instead)39 b(of)h(a)h(tree,)i(either)d(a)g(link)g(\()p
+Fo(name)45 b Fp(->)40 b Fo(destination)p Fx(\))h(or)f(a)g(reference)g
+(can)g(b)s(e)g(sp)s(eci\014ed)150 3637 y(\()p Fo(name)32
+b Fp(=)27 b Fo(destination)p Fx(\).)40 b(A)27 b(link)g(creates)h(a)f
+(sym)m(b)s(olic)h(link)e(to)i(the)f(string)f(sp)s(eci\014ed,)h(without)
+g(further)150 3747 y(pro)s(cessing)k(the)h(en)m(try)-8
+b(.)45 b(A)31 b(reference)h(will)g(examine)g(the)g(destination)g
+(\014lesystem)g(and)f(optimize)i(the)150 3856 y(reference.)60
+b(F)-8 b(or)38 b(example,)h(to)e(create)h(an)f(en)m(try)g(for)f
+Fp(njw)g Fx(in)h(the)g Fp(/homes)e Fx(map,)j(either)f(of)g(the)g(t)m(w)
+m(o)150 3966 y(forms)30 b(can)g(b)s(e)g(used:)390 4109
+y Fp(automount)45 b(/homes)h({)581 4219 y(njw)h(->)g(/home/dylan/njw)
+390 4328 y(})275 4472 y Fx(or)390 4615 y Fp(automount)e(/homes)h({)581
+4725 y(njw)h(=)g(/home/dylan/njw)390 4834 y(})275 4977
+y Fx(In)34 b(the)i(\014rst)e(example,)k(when)c Fp(/homes/njw)f
+Fx(is)i(referenced)h(from)f Ft(A)n(md)p Fx(,)h(a)g(link)f(will)h(b)s(e)
+f(created)150 5087 y(leading)21 b(to)h Fp(/home/dylan/njw)16
+b Fx(and)21 b(the)g(automoun)m(ter)g(will)g(b)s(e)f(referenced)h(a)g
+(second)g(time)g(to)h(resolv)m(e)150 5197 y(this)30 b(\014lename.)41
+b(The)30 b(map)g(en)m(try)h(w)m(ould)f(b)s(e:)390 5340
+y Fp(njw)47 b(type:=link;fs:=/home/dyl)o(an/n)o(jw)p
+eop end
+%%Page: 88 90
+TeXDict begin 88 89 bop 150 -116 a Fx(88)1855 b(Am-utils)30
+b(\(4.4BSD)j(Automoun)m(ter)d(Utilities\))275 299 y(In)40
+b(the)h(second)g(example,)j(the)d(destination)h(directory)g(is)e
+(analyzed)i(and)f(found)e(to)j(b)s(e)e(in)h(the)150 408
+y(\014lesystem)d Fp(/home/dylan)d Fx(whic)m(h)j(has)g(previously)g(b)s
+(een)f(de\014ned)g(in)h(the)g(maps.)63 b(Hence)39 b(the)f(map)150
+518 y(en)m(try)31 b(will)f(lo)s(ok)h(lik)m(e:)390 658
+y Fp(njw)47 b(rhost:=dylan;rfs:=/home/)o(dyla)o(n;s)o(ubli)o(nk:=)o
+(njw)275 797 y Fx(Creating)31 b(only)f(one)h(sym)m(b)s(olic)f(link,)h
+(and)f(one)g(access)i(to)f Ft(A)n(md)p Fx(.)150 1037
+y Fw(8.9)68 b Fg(FSinfo)53 b Fw(Command)45 b(Line)g(Options)150
+1197 y Ft(FSinfo)37 b Fx(is)30 b(started)h(from)f(the)h(command)f(line)
+g(b)m(y)h(using)f(the)g(command:)390 1336 y Fp(fsinfo)46
+b([)p Fk(options)p Fp(])f Fk(files)i Fp(...)275 1476
+y Fx(The)33 b(input)g(to)i Ft(FSinfo)40 b Fx(is)34 b(a)h(single)f(set)h
+(of)f(de\014nitions)f(of)i(mac)m(hines)f(and)g(automoun)m(t)g(maps.)51
+b(If)150 1586 y(m)m(ultiple)38 b(\014les)f(are)h(giv)m(en)g(on)f(the)g
+(command-line,)j(then)d(the)g(\014les)h(are)f(concatenated)j(together)e
+(to)150 1695 y(form)27 b(the)h(input)f(source.)40 b(The)28
+b(\014les)f(are)i(passed)e(individually)g(through)h(the)g(C)f(pre-pro)s
+(cessor)g(b)s(efore)150 1805 y(b)s(eing)j(parsed.)275
+1944 y(Sev)m(eral)25 b(options)h(de\014ne)e(a)h(pre\014x)f(for)g(the)h
+(name)g(of)g(an)g(output)f(\014le.)39 b(If)25 b(the)g(pre\014x)f(is)h
+(not)g(sp)s(eci\014ed)150 2054 y(no)j(output)g(of)h(that)g(t)m(yp)s(e)g
+(is)f(pro)s(duced.)39 b(The)28 b(su\016x)f(used)h(will)h(corresp)s(ond)
+e(either)i(to)g(the)g(hostname)150 2163 y(to)h(whic)m(h)f(a)g(\014le)h
+(b)s(elongs,)f(or)h(to)g(the)f(t)m(yp)s(e)g(of)h(output)e(if)i(only)f
+(one)g(\014le)h(is)f(pro)s(duced.)39 b(Dumpsets)29 b(and)150
+2273 y(the)35 b Fp(bootparams)d Fx(\014le)j(are)g(in)g(the)g(latter)h
+(class.)55 b(T)-8 b(o)36 b(put)e(the)h(output)f(in)m(to)i(a)g(sub)s
+(directory)d(simply)150 2383 y(put)38 b(a)g Fp(/)g Fx(at)h(the)g(end)e
+(of)i(the)f(pre\014x,)h(making)g(sure)e(that)i(the)g(directory)g(has)f
+(already)g(b)s(een)g(made)150 2492 y(b)s(efore)30 b(running)f
+Ft(Fsinfo)p Fx(.)150 2697 y Fm(8.9.1)63 b Fl(-a)41 b
+Fe(auto)s(dir)150 2844 y Fx(Sp)s(eci\014es)21 b(the)h(directory)g(name)
+f(in)g(whic)m(h)h(to)g(place)g(the)g(automoun)m(ter's)g(moun)m(tp)s
+(oin)m(ts.)38 b(This)21 b(defaults)150 2953 y(to)31 b
+Fp(/a)p Fx(.)40 b(Some)31 b(sites)g(ha)m(v)m(e)g(the)g(auto)s(dir)f
+(set)h(to)g(b)s(e)f Fp(/amd)p Fx(,)f(and)h(this)g(w)m(ould)g(b)s(e)g
+(ac)m(hiev)m(ed)i(b)m(y:)390 3093 y Fp(fsinfo)46 b(-a)h(/amd)g(...)150
+3297 y Fm(8.9.2)63 b Fl(-b)41 b Fe(b)s(o)s(otparams)150
+3444 y Fx(This)34 b(sp)s(eci\014es)h(the)g(pre\014x)f(for)g(the)h
+Fp(bootparams)d Fx(\014lename.)55 b(If)34 b(it)i(is)f(not)g(giv)m(en,)i
+(then)e(the)g(\014le)g(will)150 3554 y(not)28 b(b)s(e)f(generated.)41
+b(The)28 b Fp(bootparams)d Fx(\014le)j(will)g(b)s(e)f(constructed)h
+(for)g(the)g(destination)h(mac)m(hine)g(and)150 3663
+y(will)g(b)s(e)f(placed)h(in)m(to)h(a)f(\014le)g(named)g
+Fp(bootparams)d Fx(and)i(pre\014xed)f(b)m(y)i(this)g(string.)40
+b(The)28 b(\014le)h(generated)150 3773 y(con)m(tains)k(a)g(list)g(of)g
+(en)m(tries)g(describing)f(eac)m(h)h(diskless)f(clien)m(t)i(that)f(can)
+g(b)s(o)s(ot)f(from)g(the)g(destination)150 3882 y(mac)m(hine.)275
+4022 y(As)23 b(an)h(example,)i(to)f(create)g(a)f Fp(bootparams)d
+Fx(\014le)j(in)f(the)h(directory)h Fp(generic)p Fx(,)e(the)h(follo)m
+(wing)h(w)m(ould)150 4132 y(b)s(e)30 b(used:)390 4271
+y Fp(fsinfo)46 b(-b)h(generic/)f(...)150 4475 y Fm(8.9.3)63
+b Fl(-d)41 b Fe(dumpsets)150 4622 y Fx(This)28 b(sp)s(eci\014es)h(the)g
+(pre\014x)f(for)g(the)i Fp(dumpsets)c Fx(\014le.)41 b(If)28
+b(it)h(is)g(not)h(sp)s(eci\014ed,)e(then)h(the)g(\014le)g(will)g(not)h
+(b)s(e)150 4732 y(generated.)52 b(The)33 b(\014le)h(will)g(b)s(e)f(for)
+g(the)h(destination)g(mac)m(hine)h(and)e(will)h(b)s(e)f(placed)h(in)m
+(to)h(a)f(\014lename)150 4842 y Fp(dumpsets)p Fx(,)d(pre\014xed)g(b)m
+(y)h(this)h(string.)46 b(The)32 b Fp(dumpsets)e Fx(\014le)j(is)f(for)g
+(use)g(b)m(y)g(Imp)s(erial)g(College's)j(lo)s(cal)150
+4951 y(bac)m(kup)30 b(system.)275 5091 y(F)-8 b(or)27
+b(example,)i(to)f(create)g(a)g Fp(dumpsets)d Fx(\014le)i(in)f(the)i
+(directory)f Fp(generic)p Fx(,)f(then)h(y)m(ou)g(w)m(ould)g(use)g(the)
+150 5200 y(follo)m(wing:)390 5340 y Fp(fsinfo)46 b(-d)h(generic/)f(...)
+p eop end
+%%Page: 89 91
+TeXDict begin 89 90 bop 150 -116 a Fx(Chapter)30 b(8:)41
+b(FSinfo)2785 b(89)150 299 y Fm(8.9.4)63 b Fl(-e)41 b
+Fe(exp)s(ortfs)150 446 y Fx(De\014nes)26 b(the)g(pre\014x)e(for)i(the)f
+Fp(exports)f Fx(\014les.)39 b(If)25 b(it)h(is)g(not)g(giv)m(en,)i(then)
+d(the)h(\014le)g(will)g(not)g(b)s(e)f(generated.)150
+555 y(F)-8 b(or)46 b(eac)m(h)h(mac)m(hine)f(de\014ned)e(in)h(the)g
+(con\014guration)h(\014les)g(as)f(ha)m(ving)h(disks,)j(an)c
+Fp(exports)e Fx(\014le)j(is)150 665 y(constructed)38
+b(and)f(giv)m(en)i(a)f(\014lename)f(determined)h(b)m(y)f(the)h(name)g
+(of)g(the)f(mac)m(hine,)k(pre\014xed)36 b(with)150 775
+y(this)d(string.)49 b(If)33 b(a)h(mac)m(hine)g(is)f(de\014ned)f(as)h
+(diskless,)h(then)f(no)g Fp(exports)e Fx(\014le)j(will)f(b)s(e)g
+(created)h(for)f(it.)150 884 y(The)d(\014les)g(con)m(tain)i(en)m(tries)
+f(for)f(directories)i(on)e(the)g(mac)m(hine)h(that)g(ma)m(y)g(b)s(e)f
+(exp)s(orted)g(to)h(clien)m(ts.)275 1026 y(Example:)40
+b(T)-8 b(o)30 b(create)h(the)e Fp(exports)f Fx(\014les)h(for)g(eac)m(h)
+i(diskfull)e(mac)m(hine)h(and)f(place)h(them)f(in)m(to)i(the)150
+1135 y(directory)g Fp(exports)p Fx(:)390 1277 y Fp(fsinfo)46
+b(-e)h(exports/)f(...)150 1483 y Fm(8.9.5)63 b Fl(-f)41
+b Fe(fstab)150 1630 y Fx(This)c(de\014nes)g(the)h(pre\014x)e(for)i(the)
+g Fp(fstab)e Fx(\014les.)63 b(The)37 b(\014les)h(will)g(only)g(b)s(e)f
+(created)i(if)f(this)f(pre\014x)g(is)150 1739 y(de\014ned.)61
+b(F)-8 b(or)38 b(eac)m(h)h(mac)m(hine)f(de\014ned)e(in)h(the)h
+(con\014guration)g(\014les,)i(a)d Fp(fstab)g Fx(\014le)g(is)h(created)g
+(with)150 1849 y(the)30 b(\014lename)h(determined)f(b)m(y)g
+(pre\014xing)f(this)i(string)f(with)g(the)g(name)h(of)f(the)h(mac)m
+(hine.)41 b(These)30 b(\014les)150 1959 y(con)m(tain)i(en)m(tries)f
+(for)f(\014lesystems)h(and)e(partitions)i(to)g(moun)m(t)g(at)g(b)s(o)s
+(ot)f(time.)275 2100 y(Example,)g(to)h(create)h(the)f(\014les)f(in)g
+(the)h(directory)g Fp(fstabs)p Fx(:)390 2241 y Fp(fsinfo)46
+b(-f)h(fstabs/)f(...)150 2448 y Fm(8.9.6)63 b Fl(-h)41
+b Fe(hostname)150 2595 y Fx(De\014nes)34 b(the)f(hostname)h(of)g(the)f
+(destination)i(mac)m(hine)f(to)g(pro)s(cess)f(for.)50
+b(If)33 b(this)g(is)h(not)g(sp)s(eci\014ed,)f(it)150
+2704 y(defaults)d(to)i(the)e(lo)s(cal)i(mac)m(hine)f(name,)f(as)h
+(returned)e(b)m(y)i Fn(gethostname)p Fx(\(2\).)275 2846
+y(Example:)390 2987 y Fp(fsinfo)46 b(-h)h(dylan.doc.ic.ac.uk)c(...)150
+3193 y Fm(8.9.7)63 b Fl(-m)41 b Fe(moun)m(t-maps)150
+3340 y Fx(De\014nes)31 b(the)h(pre\014x)e(for)h(the)h(automoun)m(ter)g
+(\014les.)44 b(The)31 b(maps)g(will)g(only)h(b)s(e)f(pro)s(duced)e(if)j
+(this)f(pre\014x)150 3450 y(is)f(de\014ned.)40 b(The)30
+b(moun)m(t)g(maps)g(suitable)g(for)g(the)h(net)m(w)m(ork)g(de\014ned)e
+(b)m(y)h(the)h(con\014guration)f(\014les)h(will)150 3559
+y(b)s(e)c(placed)h(in)m(to)h(\014les)f(with)f(names)h(calculated)i(b)m
+(y)d(pre\014xing)g(this)h(string)g(to)g(the)g(name)g(of)g(eac)m(h)h
+(map.)275 3701 y(F)-8 b(or)25 b(example,)h(to)f(create)h(the)e
+(automoun)m(ter)h(maps)f(and)f(place)j(them)e(in)g(the)g(directory)h
+Fp(automaps)p Fx(:)390 3842 y Fp(fsinfo)46 b(-m)h(automaps/)f(...)150
+4048 y Fm(8.9.8)63 b Fl(-q)150 4195 y Fx(Selects)27 b(quiet)f(mo)s(de.)
+38 b Ft(FSinfo)32 b Fx(suppress)24 b(the)i(\\running)e(commen)m(tary")j
+(and)e(only)g(outputs)g(an)m(y)h(error)150 4305 y(messages)31
+b(whic)m(h)f(are)h(generated.)150 4511 y Fm(8.9.9)63
+b Fl(-v)150 4658 y Fx(Selects)28 b(v)m(erb)s(ose)f(mo)s(de.)39
+b(When)27 b(this)g(is)g(activ)-5 b(ated,)30 b(the)d(program)f(will)i
+(displa)m(y)f(more)g(messages,)i(and)150 4768 y(displa)m(y)j(all)g(the)
+g(information)g(disco)m(v)m(ered)h(when)e(p)s(erforming)f(the)i(seman)m
+(tic)h(analysis)f(phase.)44 b(Eac)m(h)150 4877 y(v)m(erb)s(ose)31
+b(message)g(is)f(output)g(to)i Fp(stdout)c Fx(on)i(a)h(line)g(starting)
+g(with)f(a)h(`)p Fp(#)p Fx(')f(c)m(haracter.)150 5083
+y Fm(8.9.10)63 b Fl(-D)41 b Fe(name)6 b Ff([=defn])150
+5230 y Fx(De\014nes)23 b(a)h(sym)m(b)s(ol)f Fo(name)28
+b Fx(for)23 b(the)h(prepro)s(cessor)e(when)g(reading)i(the)f
+(con\014guration)h(\014les.)38 b(Equiv)-5 b(alen)m(t)150
+5340 y(to)31 b Fp(#define)e Fx(directiv)m(e.)p eop end
+%%Page: 90 92
+TeXDict begin 90 91 bop 150 -116 a Fx(90)1855 b(Am-utils)30
+b(\(4.4BSD)j(Automoun)m(ter)d(Utilities\))150 299 y Fm(8.9.11)63
+b Fl(-I)41 b Fe(directory)150 446 y Fx(This)25 b(option)h(is)f(passed)g
+(in)m(to)h(the)g(prepro)s(cessor)f(for)g(the)g(con\014guration)h
+(\014les.)39 b(It)26 b(sp)s(eci\014es)f(directories)150
+555 y(in)30 b(whic)m(h)g(to)h(\014nd)e(include)h(\014les)150
+766 y Fm(8.9.12)63 b Fl(-U)41 b Fe(name)150 913 y Fx(Remo)m(v)m(es)32
+b(an)m(y)f(initial)g(de\014nition)f(of)h(the)g(sym)m(b)s(ol)f
+Fo(name)p Fx(.)40 b(In)m(v)m(erse)31 b(of)g(the)f Fp(-D)g
+Fx(option.)150 1163 y Fw(8.10)68 b(Errors)46 b(pro)t(duced)d(b)l(y)i
+Fg(FSinfo)150 1323 y Fx(The)30 b(follo)m(wing)i(table)f(do)s(cumen)m
+(ts)f(the)h(errors)e(and)h(w)m(arnings)g(whic)m(h)g Ft(FSinfo)37
+b Fx(ma)m(y)31 b(pro)s(duce.)150 1499 y Fp(")47 b(expected)630
+1609 y Fx(Occurs)30 b(if)g(an)g(unescap)s(ed)g(newline)g(is)g(found)g
+(in)g(a)g(quoted)h(string.)150 1780 y Fp(ambiguous)45
+b(mount:)h Fk(volume)g Fp(is)i(a)f(replicated)e(filesystem)630
+1890 y Fx(If)24 b(sev)m(eral)i(\014lesystems)f(are)g(declared)g(as)g
+(ha)m(ving)g(the)g(same)g(v)m(olume)h(name,)g(they)f(will)g(b)s(e)630
+1999 y(considered)36 b(replicated)h(\014lesystems.)57
+b(T)-8 b(o)36 b(moun)m(t)g(a)h(replicated)g(\014lesystem)f(statically)
+-8 b(,)630 2109 y(a)33 b(sp)s(eci\014c)e(host)i(will)f(need)g(to)h(b)s
+(e)e(named,)i(to)g(sa)m(y)f(whic)m(h)g(particular)h(cop)m(y)g(to)g(try)
+f(and)630 2218 y(moun)m(t,)f(else)g(this)f(error)g(will)h(result.)150
+2389 y Fp(can't)46 b(open)h Fk(filename)f Fp(for)g(writing)630
+2499 y Fx(Occurs)30 b(if)g(an)m(y)h(errors)f(are)g(encoun)m(tered)h
+(when)f(op)s(ening)g(an)g(output)g(\014le.)150 2670 y
+Fp(cannot)46 b(determine)f(localname)h(since)g(volname)g
+Fk(volume)g Fp(is)h(not)g(uniquely)f(defined)630 2780
+y Fx(If)27 b(a)i(v)m(olume)f(is)g(replicated)h(and)f(an)g(attempt)h(is)
+f(made)g(to)g(moun)m(t)g(the)g(\014lesystem)g(stati-)630
+2889 y(cally)k(without)e(sp)s(ecifying)g(a)h(lo)s(cal)g(moun)m(tp)s
+(oin)m(t,)g Ft(FSinfo)36 b Fx(cannot)31 b(calculate)i(a)e(moun)m(t-)630
+2999 y(p)s(oin)m(t,)g(as)f(the)h(desired)f(pathname)g(w)m(ould)g(b)s(e)
+g(am)m(biguous.)150 3170 y Fk(device)46 b Fp(has)h(duplicate)e
+(exportfs)h(data)630 3279 y Fx(Pro)s(duced)20 b(if)h(the)h(`)p
+Fp(exportfs)p Fx(')d(option)j(is)f(used)g(m)m(ultiple)h(times)g(within)
+e(the)i(same)g(branc)m(h)630 3389 y(of)37 b(a)g(\014lesystem)h
+(de\014nition.)60 b(F)-8 b(or)38 b(example,)h(if)e(y)m(ou)g(attempt)h
+(to)g(set)g(the)f(`)p Fp(exportfs)p Fx(')630 3499 y(data)31
+b(at)g(di\013eren)m(t)g(lev)m(els)h(of)e(the)h(moun)m(tp)s(oin)m(t)f
+(directory)h(tree.)150 3670 y Fp(dump)47 b(frequency)e(for)i
+Fk(host)p Fp(:)p Fk(device)e Fp(is)i(non-zero)630 3779
+y Fx(Occurs)41 b(if)h Fo(device)48 b Fx(has)42 b(its)g(`)p
+Fp(fstype)p Fx(')f(declared)h(to)g(b)s(e)g(`)p Fp(swap)p
+Fx(')f(or)h(`)p Fp(export)p Fx(')e(and)i(the)630 3889
+y(`)p Fp(dump)p Fx(')34 b(option)h(is)g(set)g(to)g(a)g(v)-5
+b(alue)35 b(greater)h(than)e(zero.)55 b(Sw)m(ap)34 b(devices)h(should)f
+(not)h(b)s(e)630 3998 y(dump)s(ed.)150 4169 y Fp(duplicate)45
+b(host)i Fk(hostname)p Fp(!)630 4279 y Fx(If)30 b(a)h(host)f(has)g
+(more)h(than)f(one)h(de\014nition.)150 4450 y Fp(end)47
+b(of)g(file)g(within)f(comment)630 4560 y Fx(A)30 b(commen)m(t)i(w)m
+(as)f(un)m(terminated)f(b)s(efore)g(the)h(end)e(of)i(one)f(of)h(the)g
+(con\014guration)f(\014les.)150 4731 y Fk(filename)p
+Fp(:)45 b(cannot)h(open)h(for)g(reading)630 4840 y Fx(If)34
+b(a)h(\014le)f(sp)s(eci\014ed)g(on)g(the)h(command)f(line)h(as)f(con)m
+(taining)i(con\014guration)f(data)g(could)630 4950 y(not)c(b)s(e)e(op)s
+(ened.)150 5121 y Fk(filesystem)45 b Fp(has)i(a)g(volname)f(but)h(no)g
+(exportfs)f(data)630 5230 y Fx(Occurs)30 b(when)f(a)i(v)m(olume)h(name)
+e(is)h(declared)g(for)f(a)h(\014le)g(system,)g(but)f(the)g(string)h(sp)
+s(eci-)630 5340 y(fying)f(what)h(mac)m(hines)f(the)h(\014lesystem)g
+(can)f(b)s(e)g(exp)s(orted)g(to)h(is)g(missing.)p eop
+end
+%%Page: 91 93
+TeXDict begin 91 92 bop 150 -116 a Fx(Chapter)30 b(8:)41
+b(FSinfo)2785 b(91)150 299 y Fp(fs)47 b(field)g(")p Fk(field-name)p
+Fp(")d(already)i(set)630 408 y Fx(Occurs)30 b(when)f(m)m(ultiple)i
+(de\014nitions)f(are)h(giv)m(en)g(for)g(one)f(of)h(the)f(attributes)h
+(of)g(a)g(host's)630 518 y(\014lesystem.)150 678 y Fp(host)47
+b(field)f(")p Fk(field-name)p Fp(")e(already)i(set)630
+788 y Fx(If)30 b(duplicate)h(de\014nitions)f(are)h(giv)m(en)g(for)f(an)
+m(y)h(of)f(the)h(\014elds)f(with)g(a)h(host)f(de\014nition.)150
+948 y Fk(host)p Fp(:)p Fk(device)45 b Fp(has)i(more)f(than)h(one)g
+(mount)f(point)630 1058 y Fx(Occurs)39 b(if)g(the)h(moun)m(t)g(option)g
+(for)f(a)h(host's)g(\014lesystem)g(sp)s(eci\014es)f(m)m(ultiple)h
+(trees)g(at)630 1167 y(whic)m(h)30 b(to)h(place)h(the)e(moun)m(tp)s
+(oin)m(t.)150 1327 y Fk(host)p Fp(:)p Fk(device)45 b
+Fp(has)i(no)g(mount)f(point)630 1437 y Fx(Occurs)30 b(if)g(the)h(`)p
+Fp(mount)p Fx(')e(option)i(is)f(not)h(sp)s(eci\014ed)f(for)g(a)h
+(host's)f(\014lesystem.)150 1597 y Fk(host)p Fp(:)p Fk(device)45
+b Fp(needs)h(field)g(")p Fk(field-name)p Fp(")630 1707
+y Fx(Occurs)34 b(when)f(a)i(\014lesystem)g(is)g(missing)f(a)h(required)
+f(\014eld.)53 b Fo(\014eld-name)39 b Fx(could)c(b)s(e)f(one)630
+1816 y(of)d(`)p Fp(fstype)p Fx(',)e(`)p Fp(opts)p Fx(',)h(`)p
+Fp(passno)p Fx(')f(or)h(`)p Fp(mount)p Fx('.)150 1976
+y Fk(host)p Fp(:mount)45 b(field)h(specified)g(for)h(swap)f(partition)
+630 2086 y Fx(Occurs)35 b(if)h(a)g(moun)m(tp)s(oin)m(t)g(is)g(giv)m(en)
+h(for)e(a)h(\014lesystem)g(whose)g(t)m(yp)s(e)g(is)g(declared)g(to)h(b)
+s(e)630 2196 y(`)p Fp(swap)p Fx('.)150 2356 y Fp(malformed)45
+b(IP)i(dotted)g(quad:)f Fk(address)630 2465 y Fx(If)e(the)h(In)m
+(ternet)g(address)f(of)h(an)g(in)m(terface)h(is)f(incorrectly)h(sp)s
+(eci\014ed.)83 b(An)45 b(In)m(ternet)630 2575 y(address)26
+b(de\014nition)h(is)g(handled)f(to)h Fn(inet)p 2046 2575
+28 5 v 41 w(addr)p Fx(\(3N\))g(to)h(see)f(if)g(it)h(can)f(cop)s(e.)40
+b(If)26 b(not,)i(then)630 2685 y(this)i(message)i(will)e(b)s(e)g
+(displa)m(y)m(ed.)150 2845 y Fp(malformed)45 b(netmask:)h
+Fk(netmask)630 2954 y Fx(If)38 b(the)h(netmask)g(cannot)g(b)s(e)f(deco)
+s(ded)g(as)h(though)f(it)h(w)m(ere)g(a)g(hexadecimal)h(n)m(um)m(b)s
+(er,)630 3064 y(then)f(this)g(message)i(will)e(b)s(e)g(displa)m(y)m
+(ed.)68 b(It)39 b(will)h(t)m(ypically)h(b)s(e)e(caused)g(b)m(y)g
+(incorrect)630 3173 y(c)m(haracters)32 b(in)e(the)g Fo(netmask)37
+b Fx(v)-5 b(alue.)150 3334 y Fp(mount)46 b(field)h(")p
+Fk(field-name)p Fp(")d(already)i(set)630 3443 y Fx(Occurs)30
+b(when)f(a)i(static)h(moun)m(t)e(has)g(m)m(ultiple)h(de\014nitions)f
+(of)h(the)f(same)h(\014eld.)150 3603 y Fp(mount)46 b(tree)h(field)f(")p
+Fk(field-name)p Fp(")f(already)h(set)630 3713 y Fx(Occurs)30
+b(when)g(the)h Fo(\014eld-name)36 b Fx(is)31 b(de\014ned)e(more)i(than)
+f(once)i(during)d(the)i(de\014nition)g(of)630 3823 y(a)g(\014lesystems)
+f(moun)m(tp)s(oin)m(t.)150 3983 y Fp(netif)46 b(field)h
+Fk(field-name)e Fp(already)h(set)630 4092 y Fx(Occurs)30
+b(if)g(y)m(ou)h(attempt)g(to)g(de\014ne)f(an)g(attribute)h(of)g(an)f
+(in)m(terface)i(more)f(than)f(once.)150 4253 y Fp(network)46
+b(booting)g(requires)f(both)i(root)f(and)h(swap)g(areas)630
+4362 y Fx(Occurs)28 b(if)h(a)h(mac)m(hine)g(has)e(moun)m(t)i
+(declarations)g(for)f(either)g(the)h(ro)s(ot)f(partition)h(or)f(the)630
+4472 y(sw)m(ap)34 b(area,)i(but)d(not)i(b)s(oth.)51 b(Y)-8
+b(ou)34 b(cannot)h(de\014ne)e(a)h(mac)m(hine)h(to)g(only)f(partially)h
+(b)s(o)s(ot)630 4581 y(via)c(the)g(net)m(w)m(ork.)150
+4741 y Fp(no)47 b(disk)g(mounts)f(on)h Fk(hostname)630
+4851 y Fx(If)38 b(there)g(are)h(no)f(static)i(moun)m(ts,)g(nor)e(lo)s
+(cal)h(disk)f(moun)m(ts)g(sp)s(eci\014ed)f(for)h(a)h(mac)m(hine,)630
+4961 y(this)30 b(message)i(will)e(b)s(e)g(displa)m(y)m(ed.)150
+5121 y Fp(no)47 b(volname)f(given)g(for)h Fk(host)p Fp(:)p
+Fk(device)630 5230 y Fx(Occurs)28 b(when)g(a)h(\014lesystem)g(is)f
+(de\014ned)g(to)h(b)s(e)f(moun)m(ted)h(on)f Fp(default)p
+Fx(,)g(but)g(no)g(v)m(olume)630 5340 y(name)i(is)h(giv)m(en)g(for)f
+(the)h(\014le)f(system,)h(then)f(the)h(moun)m(tp)s(oin)m(t)f(cannot)h
+(b)s(e)f(determined.)p eop end
+%%Page: 92 94
+TeXDict begin 92 93 bop 150 -116 a Fx(92)1855 b(Am-utils)30
+b(\(4.4BSD)j(Automoun)m(ter)d(Utilities\))150 299 y Fp(not)47
+b(allowed)f('/')h(in)g(a)g(directory)f(name)630 408 y
+Fx(Occurs)35 b(when)g(a)i(pathname)e(with)h(m)m(ultiple)h(directory)f
+(elemen)m(ts)h(is)f(sp)s(eci\014ed)g(as)g(the)630 518
+y(name)27 b(for)f(an)h(automoun)m(ter)h(tree.)40 b(A)27
+b(tree)g(should)f(only)h(ha)m(v)m(e)h(one)f(name)g(at)g(eac)m(h)h(lev)m
+(el.)150 677 y Fp(pass)47 b(number)f(for)h Fk(host)p
+Fp(:)p Fk(device)d Fp(is)k(non-zero)630 787 y Fx(Occurs)41
+b(if)h Fo(device)48 b Fx(has)42 b(its)g(`)p Fp(fstype)p
+Fx(')f(declared)h(to)g(b)s(e)g(`)p Fp(swap)p Fx(')f(or)h(`)p
+Fp(export)p Fx(')e(and)i(the)630 897 y Fn(fsc)m(k)p Fx(\(8\))27
+b(pass)e(n)m(um)m(b)s(er)g(is)g(set.)40 b(Sw)m(ap)25
+b(devices)h(should)f(not)h(b)s(e)f(fsc)m(k'd.)39 b(See)26
+b(Section)g(8.6.1)630 1006 y([FSinfo)k(fst)m(yp)s(e)h(Option],)f(page)h
+(84.)150 1166 y Fp(sub-directory)44 b Fk(directory)h
+Fp(of)j Fk(directory-tree)c Fp(starts)i(with)g('/')630
+1275 y Fx(Within)40 b(the)f(\014lesystem)h(sp)s(eci\014cation)g(for)f
+(a)h(host,)h(if)f(an)f(elemen)m(t)i Fo(directory)47 b
+Fx(of)40 b(the)630 1385 y(moun)m(tp)s(oin)m(t)30 b(b)s(egins)g(with)g
+(a)h(`)p Fp(/)p Fx(')g(and)e(it)i(is)g(not)f(the)h(start)g(of)f(the)h
+(tree.)150 1544 y Fp(sub-directory)44 b(of)j Fk(directory-tree)d
+Fp(is)j(named)g("default")630 1654 y Fx(`)p Fp(default)p
+Fx(')25 b(is)h(a)h(k)m(eyw)m(ord)g(used)f(to)h(sp)s(ecify)f(if)g(a)h
+(moun)m(tp)s(oin)m(t)g(should)e(b)s(e)h(automatically)630
+1763 y(calculated)j(b)m(y)f Ft(FSinfo)p Fx(.)40 b(If)27
+b(y)m(ou)h(attempt)g(to)g(sp)s(ecify)f(a)h(directory)g(name)f(as)h
+(this,)g(it)g(will)630 1873 y(use)i(the)h(\014lename)f(of)h
+Fp(default)d Fx(but)i(will)h(pro)s(duce)e(this)h(w)m(arning.)150
+2032 y Fp(unknown)46 b(\\)h(sequence)630 2142 y Fx(Occurs)25
+b(if)h(an)f(unkno)m(wn)f(escap)s(e)i(sequence)g(is)g(found)e(inside)i
+(a)g(string.)39 b(Within)26 b(a)g(string,)630 2252 y(y)m(ou)j(can)g
+(giv)m(e)h(the)f(standard)f(C)g(escap)s(e)h(sequences)g(for)g(strings,)
+g(suc)m(h)f(as)h(newlines)g(and)630 2361 y(tab)i(c)m(haracters.)150
+2521 y Fp(unknown)46 b(directory)f(attribute)630 2630
+y Fx(If)29 b(an)g(unkno)m(wn)e(k)m(eyw)m(ord)j(is)f(found)f(while)h
+(reading)g(the)g(de\014nition)g(of)g(a)h(host's)f(\014lesys-)630
+2740 y(tem)i(moun)m(t)f(option.)150 2899 y Fp(unknown)46
+b(filesystem)f(attribute)630 3009 y Fx(Occurs)30 b(if)g(an)g
+(unrecognized)h(k)m(eyw)m(ord)g(is)f(used)g(when)f(de\014ning)h(a)g
+(host's)h(\014lesystems.)150 3168 y Fp(unknown)46 b(host)g(attribute)
+630 3278 y Fx(Occurs)30 b(if)g(an)g(unrecognized)h(k)m(eyw)m(ord)g(is)f
+(used)g(when)f(de\014ning)h(a)g(host.)150 3437 y Fp(unknown)46
+b(mount)g(attribute)630 3547 y Fx(Occurs)e(if)g(an)h(unrecognized)g(k)m
+(eyw)m(ord)g(is)f(found)f(while)i(parsing)f(the)h(list)g(of)f(static)
+630 3656 y(moun)m(ts.)150 3816 y Fp(unknown)i(volname)g
+Fk(volume)g Fp(automounted)e Fk([)k Fp(on)f Fk(name)g(])630
+3925 y Fx(Occurs)32 b(if)g Fo(v)m(olume)39 b Fx(is)32
+b(used)g(in)g(a)h(de\014nition)f(of)h(an)f(automoun)m(t)i(map)e(but)f
+(the)i(v)m(olume)630 4035 y(name)d(has)h(not)f(b)s(een)g(declared)h
+(during)e(the)h(host)h(\014lesystem)f(de\014nitions.)150
+4194 y Fp(volname)46 b Fk(volume)g Fp(is)h(unknown)630
+4304 y Fx(Occurs)31 b(if)g(an)g(attempt)h(is)f(made)h(to)g(moun)m(t)f
+(or)g(reference)h(a)f(v)m(olume)h(name)f(whic)m(h)g(has)630
+4413 y(not)g(b)s(een)e(declared)i(during)e(the)i(host)f(\014lesystem)h
+(de\014nitions.)150 4573 y Fp(volname)46 b Fk(volume)g
+Fp(not)h(exported)e(from)i Fk(machine)630 4682 y Fx(Occurs)29
+b(if)h(y)m(ou)f(attempt)i(to)f(moun)m(t)g(the)g(v)m(olume)g
+Fo(v)m(olume)36 b Fx(from)29 b(a)h(mac)m(hine)g(whic)m(h)f(has)630
+4792 y(not)i(declared)f(itself)i(to)f(ha)m(v)m(e)g(suc)m(h)f(a)h
+(\014lesystem)g(a)m(v)-5 b(ailable.)p eop end
+%%Page: 93 95
+TeXDict begin 93 94 bop 150 -116 a Fx(Chapter)30 b(9:)41
+b(Hlfsd)2836 b(93)150 299 y Fu(9)80 b(Hlfsd)150 507 y
+Ft(Hlfsd)35 b Fx(is)25 b(a)h(daemon)g(whic)m(h)f(implemen)m(ts)h(a)f
+(\014lesystem)h(con)m(taining)h(a)f(sym)m(b)s(olic)g(link)f(to)h(sub)s
+(directory)150 617 y(within)39 b(a)i(user's)e(home)h(directory)-8
+b(,)43 b(dep)s(ending)38 b(on)i(the)g(user)f(whic)m(h)h(accessed)h
+(that)g(link.)69 b(It)40 b(w)m(as)150 726 y(primarily)35
+b(designed)f(to)i(redirect)f(incoming)h(mail)g(to)f(users')g(home)g
+(directories,)i(so)e(that)h(it)f(can)h(b)s(e)150 836
+y(read)e(from)g(an)m(ywhere.)53 b(It)35 b(w)m(as)g(designed)f(and)g
+(implemen)m(ted)h(b)m(y)g(Erez)f(Zadok)h(\()p Fp(http:)s(/)s(/)s(www)s
+(.)s(cs)s(.)150 945 y(sunysb.edu/~ezk)p Fx(\))28 b(and)i(Alexander)h
+(Dupuy)e(\()p Fp(dupuy)h(AT)f(cs.columbia.edu)p Fx(\),)f(at)k(the)f
+(Computer)150 1055 y(Science)k(Departmen)m(t)h(\()p Fp(http:)s(/)s(/)s
+(www)s(.)s(cs)s(.)s(columbia)s(.)s(e)o(du)s(/)r Fx(\))29
+b(of)35 b(Colum)m(bia)f(Univ)m(ersit)m(y)i(\()p Fp(http:)s(/)s(/)150
+1165 y(www)t(.)s(columbia)t(.)s(edu)t(/)s Fx(\).)49 b(A)35
+b(pap)s(er)f(\()p Fp(http:)t(/)t(/)s(www)t(.)s(fsl)t(.)s(cs)t(.)r(suny)
+o(sb)t(.)r(edu)s(/)s(d)o(ocs)s(/)s(hl)o(fsd)s(/)s(hl)o(fsd)s(.)150
+1274 y(html)p Fx(\))c(on)g Ft(Hlfsd)40 b Fx(w)m(as)31
+b(presen)m(ted)f(at)h(the)g(Usenix)f(LISA)g(VI)s(I)f(conference)j(in)e
+(1993.)275 1403 y Ft(Hlfsd)i Fx(op)s(erates)23 b(b)m(y)g(moun)m(ting)g
+(itself)g(as)g(an)g(NFS)g(serv)m(er)g(for)f(the)h(directory)h(con)m
+(taining)g Ft(linkname)p Fx(,)150 1513 y(whic)m(h)30
+b(defaults)h(to)g Fp(/hlfs/home)p Fx(.)39 b(Lo)s(okups)30
+b(within)g(that)h(directory)g(are)g(handled)f(b)m(y)g
+Ft(Hlfsd)p Fx(,)h(whic)m(h)150 1623 y(uses)42 b(the)h(passw)m(ord)e
+(map)h(to)h(determine)g(ho)m(w)f(to)h(resolv)m(e)h(the)f(lo)s(okup.)76
+b(The)42 b(directory)h(will)g(b)s(e)150 1732 y(created)35
+b(if)f(it)g(do)s(esn't)f(already)i(exist.)52 b(The)33
+b(sym)m(b)s(olic)h(link)g(will)g(b)s(e)f(to)h(the)g(accessing)i(user's)
+d(home)150 1842 y(directory)-8 b(,)36 b(with)e Ft(sub)-5
+b(dir)45 b Fx(app)s(ended)32 b(to)j(it.)53 b(If)33 b(not)i(sp)s
+(eci\014ed,)f Ft(sub)-5 b(dir)45 b Fx(defaults)34 b(to)h
+Fp(.hlfsdir)p Fx(.)50 b(This)150 1951 y(directory)31
+b(will)g(also)g(b)s(e)f(created)h(if)f(it)h(do)s(es)f(not)h(already)g
+(exist.)275 2081 y(A)h(`)p Fp(SIGTERM)p Fx(')g(sen)m(t)h(to)g
+Ft(Hlfsd)43 b Fx(will)33 b(cause)g(it)g(to)h(sh)m(utdo)m(wn.)47
+b(A)33 b(`)p Fp(SIGHUP)p Fx(')e(will)i(\015ush)e(the)i(in)m(ternal)150
+2190 y(cac)m(hes,)k(and)d(reload)h(the)g(passw)m(ord)f(map.)53
+b(It)34 b(will)h(also)g(close)h(and)e(reop)s(en)g(the)h(log)g(\014le,)h
+(to)f(enable)150 2300 y(the)27 b(original)h(log)g(\014le)e(to)i(b)s(e)e
+(remo)m(v)m(ed)i(or)e(rotated.)41 b(A)27 b(`)p Fp(SIGUSR1)p
+Fx(')e(will)i(cause)g(it)h(to)f(dump)e(its)i(in)m(ternal)150
+2410 y(table)k(of)g(user)e(IDs)i(and)f(home)g(directories)i(to)f(the)f
+(\014le)h Fp(/tmp/hlfsddump)p Fx(.)150 2632 y Fw(9.1)68
+b(In)l(tro)t(duction)45 b(to)g(Hlfsd)150 2791 y Fx(Electronic)27
+b(mail)f(has)f(b)s(ecome)h(one)g(of)f(the)h(ma)5 b(jor)25
+b(applications)i(for)e(man)m(y)h(computer)f(net)m(w)m(orks,)j(and)150
+2901 y(use)38 b(of)g(this)g(service)h(is)f(exp)s(ected)h(to)f(increase)
+h(o)m(v)m(er)h(time,)h(as)d(net)m(w)m(orks)h(proliferate)g(and)f(b)s
+(ecome)150 3010 y(faster.)j(Pro)m(viding)29 b(a)h(con)m(v)m(enien)m(t)h
+(en)m(vironmen)m(t)f(for)f(users)g(to)h(read,)g(comp)s(ose,)g(and)e
+(send)h(electronic)150 3120 y(mail)i(has)f(b)s(ecome)h(a)g(requiremen)m
+(t)f(for)g(systems)h(administrators)f(\(SAs\).)275 3249
+y(Widely)i(used)f(metho)s(ds)h(for)f(handling)h(mail)g(usually)g
+(require)g(users)f(to)h(b)s(e)g(logged)h(in)m(to)g(a)f(desig-)150
+3359 y(nated)24 b(\\home")i(mac)m(hine,)g(where)e(their)g(mailb)s(o)m
+(x)h(\014les)f(reside.)38 b(Only)24 b(on)g(that)h(one)f(mac)m(hine)h
+(can)g(they)150 3468 y(read)k(newly)h(arriv)m(ed)g(mail.)41
+b(Since)29 b(users)g(ha)m(v)m(e)i(to)f(b)s(e)f(logged)i(in)m(to)g(that)
+f(system)g(to)g(read)f(their)h(mail,)150 3578 y(they)23
+b(often)g(\014nd)e(it)i(con)m(v)m(enien)m(t)h(to)g(run)d(all)i(of)g
+(their)g(other)f(pro)s(cesses)h(on)f(that)h(system)g(as)g(w)m(ell,)i
+(includ-)150 3687 y(ing)35 b(memory)g(and)g(CPU-in)m(tensiv)m(e)h
+(jobs.)54 b(F)-8 b(or)36 b(example,)h(in)e(our)f(departmen)m(t,)j(w)m
+(e)f(ha)m(v)m(e)g(allo)s(cated)150 3797 y(and)42 b(con\014gured)g(sev)m
+(eral)i(m)m(ulti-pro)s(cessor)g(serv)m(ers)f(to)g(handle)f(suc)m(h)h
+(demanding)f(CPU/memory)150 3907 y(applications,)g(but)c(these)h(w)m
+(ere)g(underutilized,)h(in)e(large)i(part)f(due)e(to)j(the)f(incon)m(v)
+m(enience)h(of)f(not)150 4016 y(b)s(eing)g(able)g(to)h(read)f(mail)h
+(on)f(those)h(mac)m(hines.)67 b(\(No)40 b(home)f(directories)h(w)m(ere)
+g(lo)s(cated)g(on)f(these)150 4126 y(designated)34 b(CPU-serv)m(ers,)h
+(since)f(w)m(e)g(did)e(not)i(w)m(an)m(t)g(NFS)g(service)g(for)f(users')
+g(home)h(directories)g(to)150 4235 y(ha)m(v)m(e)k(to)f(comp)s(ete)g
+(with)f(CPU-in)m(tensiv)m(e)i(jobs.)58 b(A)m(t)38 b(the)e(same)h(time,)
+i(w)m(e)e(discouraged)g(users)e(from)150 4345 y(running)29
+b(demanding)g(applications)j(on)e(their)h(home)f(mac)m(hines.\))275
+4474 y(Man)m(y)37 b(di\013eren)m(t)h(solutions)g(ha)m(v)m(e)g(b)s(een)f
+(prop)s(osed)e(to)j(allo)m(w)h(users)d(to)i(read)f(their)h(mail)g(on)f
+(an)m(y)150 4584 y(host.)k(Ho)m(w)m(ev)m(er,)32 b(all)g(of)e(these)h
+(solutions)g(fail)g(in)f(one)h(or)f(more)h(of)f(sev)m(eral)i(w)m(a)m
+(ys:)225 4713 y Fv(\017)60 b Fx(they)31 b(in)m(tro)s(duce)f(new)g
+(single)h(p)s(oin)m(ts)f(of)h(failure)225 4842 y Fv(\017)60
+b Fx(they)31 b(require)f(using)f(di\013eren)m(t)i(mail)g(transfer)f
+(agen)m(ts)i(\(MT)-8 b(As\))31 b(or)g(user)f(agen)m(ts)h(\(UAs\))225
+4972 y Fv(\017)60 b Fx(they)29 b(do)g(not)g(solv)m(e)h(the)f(problem)f
+(for)h(all)h(cases,)g(i.e.)41 b(the)29 b(solution)g(is)g(only)g
+(partially)h(successful)330 5081 y(for)g(a)h(particular)g(en)m
+(vironmen)m(t.)275 5230 y(W)-8 b(e)41 b(ha)m(v)m(e)h(designed)e(a)h
+(simple)g(\014lesystem,)i(called)f(the)f Fo(Home-Link)g(File)g(System)p
+Fx(,)j(to)d(pro)m(vide)150 5340 y(the)33 b(abilit)m(y)i(to)f(deliv)m
+(er)g(mail)g(to)g(users')e(home)h(directories,)i(without)f(mo)s
+(di\014cation)f(to)h(mail-related)p eop end
+%%Page: 94 96
+TeXDict begin 94 95 bop 150 -116 a Fx(94)1855 b(Am-utils)30
+b(\(4.4BSD)j(Automoun)m(ter)d(Utilities\))150 299 y(applications.)42
+b(W)-8 b(e)31 b(ha)m(v)m(e)h(endea)m(v)m(ored)f(to)g(mak)m(e)g(it)g(as)
+f(stable)h(as)g(p)s(ossible.)40 b(Of)29 b(great)j(imp)s(ortance)e(to)
+150 408 y(us)g(w)m(as)h(to)g(mak)m(e)g(sure)f(the)h(HLFS)f(daemon,)h
+Fp(hlfsd)e Fx(,)i(w)m(ould)f(not)h(hang)f(under)f(an)m(y)i
+(circumstances,)150 518 y(and)j(w)m(ould)f(tak)m(e)j(the)f(next-b)s
+(est)f(action)h(when)e(faced)i(with)f(problems.)51 b(Compared)34
+b(to)h(alternativ)m(e)150 628 y(metho)s(ds,)27 b Ft(Hlfsd)37
+b Fx(is)27 b(a)h(stable,)h(more)e(general)h(solution,)h(and)d(easier)j
+(to)e(install/use.)41 b(In)27 b(fact,)i(in)e(some)150
+737 y(w)m(a)m(ys,)k(w)m(e)g(ha)m(v)m(e)h(ev)m(en)f(managed)g(to)g
+(impro)m(v)m(e)g(the)g(reliabilit)m(y)h(and)e(securit)m(y)h(of)f(mail)h
+(service.)275 896 y(Our)i(serv)m(er)i(implemen)m(ts)h(a)f(small)g
+(\014lesystem)g(con)m(taining)i(a)e(sym)m(b)s(olic)g(link)g(to)h(a)f
+(sub)s(directory)150 1005 y(of)c(the)f(in)m(v)m(oking)i(user's)e(home)g
+(directory)-8 b(,)31 b(and)f(named)g(sym)m(b)s(olic)h(links)f(to)h
+(users')f(mailb)s(o)m(x)h(\014les.)275 1164 y(The)f Ft(Hlfsd)41
+b Fx(serv)m(er)31 b(\014nds)e(out)j(the)f Fo(uid)j Fx(of)d(the)g(pro)s
+(cess)f(that)i(is)f(accessing)i(its)e(moun)m(t)g(p)s(oin)m(t,)h(and)150
+1273 y(resolv)m(es)38 b(the)f(pathname)f(comp)s(onen)m(t)h(`)p
+Fp(home)p Fx(')g(as)f(a)i(sym)m(b)s(olic)f(link)f(to)i(a)f(sub)s
+(directory)f(within)g(the)150 1383 y(home)31 b(directory)g(giv)m(en)h
+(b)m(y)f(the)g Fo(uid)t Fx('s)e(en)m(try)i(in)g(the)g(passw)m(ord)f
+(\014le.)42 b(If)30 b(the)h Fo(gid)k Fx(of)c(the)g(pro)s(cess)f(that)
+150 1493 y(attempts)f(to)h(access)f(a)g(mailb)s(o)m(x)g(\014le)g(is)f
+(a)h(sp)s(ecial)g(one)g(\(called)h(HLFS)p 2625 1493 28
+4 v 39 w(GID\),)g(then)e(the)h(serv)m(er)f(maps)150 1602
+y(the)e(name)g(of)h(the)f Ft(next)35 b Fx(pathname)26
+b(comp)s(onen)m(t)g(directly)h(to)g(the)f(user's)f(mailb)s(o)m(x.)40
+b(This)25 b(is)i(necessary)150 1712 y(so)k(that)g(access)h(to)f(a)g
+(mailb)s(o)m(x)g(\014le)g(b)m(y)f(users)g(other)h(than)f(the)h(o)m
+(wner)g(can)g(succeed.)41 b(The)30 b(serv)m(er)h(has)150
+1821 y(safet)m(y)26 b(features)f(in)g(case)h(of)f(failures)g(suc)m(h)f
+(as)i(h)m(ung)e(\014lesystems)h(or)g(home)g(directory)g(\014lesystems)g
+(that)150 1931 y(are)31 b(inaccessible)h(or)e(full.)275
+2090 y(On)e(most)h(of)g(our)g(mac)m(hines,)h(mail)f(gets)h(deliv)m
+(ered)g(to)g(the)f(directory)g Fp(/var/spool/mail)p Fx(.)36
+b(Man)m(y)150 2199 y(programs,)23 b(including)e(UAs,)j(dep)s(end)c(on)h
+(that)h(path.)38 b Ft(Hlfsd)31 b Fx(creates)23 b(a)f(directory)g
+Fp(/mail)p Fx(,)g(and)f(moun)m(ts)150 2309 y(itself)35
+b(on)e(top)h(of)g(that)h(directory)-8 b(.)52 b Ft(Hlfsd)43
+b Fx(implemen)m(ts)35 b(the)f(path)f(name)h(comp)s(onen)m(t)g(called)h
+(`)p Fp(home)p Fx(',)150 2418 y(p)s(oin)m(ting)e(to)g(a)g(sub)s
+(directory)f(of)h(the)g(user's)f(home)h(directory)-8
+b(.)48 b(W)-8 b(e)34 b(ha)m(v)m(e)g(made)f Fp(/var/spool/mail)150
+2528 y Fx(a)f(sym)m(b)s(olic)g(link)g(to)h Fp(/mail/home)p
+Fx(,)c(so)j(that)h(accessing)g Fp(/var/spool/mail)28
+b Fx(actually)33 b(causes)g(access)150 2637 y(to)e(a)g(sub)s(directory)
+e(within)h(a)h(user's)f(home)g(directory)-8 b(.)275 2796
+y(The)30 b(follo)m(wing)j(table)f(sho)m(ws)f(an)g(example)h(of)g(ho)m
+(w)f(resolving)h(the)g(pathname)f Fp(/var/mail/)p Fk(NAME)150
+2906 y Fx(to)g Fp(/users/ezk/.mailspool/)p Fk(NAM)o(E)24
+b Fx(pro)s(ceeds.)150 3174 y Fn(Resolving)32 b(Comp)s(onen)m(t)123
+b(P)m(athname)31 b(left)g(to)g(resolv)m(e)123 b(V)-8
+b(alue)30 b(if)h(sym)m(b)s(olic)f(link)150 3391 y Fp(/)955
+b(var/mail/)p Ft(NAME)150 3609 y Fp(var/)811 b(mail/)p
+Ft(NAME)150 3827 y Fp(mail)p Fx(@)740 b Fp(/mail/home/)p
+Ft(NAME)294 b Fp(mail)p Fx(@)28 b(-)p Fp(>)j(/mail/home)150
+4044 y(/)955 b(mail/home/)p Ft(NAME)150 4262 y Fp(mail/)763
+b(home/)p Ft(NAME)150 4480 y Fp(home)p Fx(@)740 b Ft(NAME)822
+b Fp(home)p Fx(@)550 b(-)p Fp(>)2255 4589 y(/users/ezk/.mailspool)150
+4807 y(/)955 b(users/ezk/.mailspool/)p Ft(NA)o(ME)150
+5025 y Fp(users/)715 b(ezk/.mailspool/)p Ft(NAME)150
+5242 y Fp(ezk/)811 b(.mailspool/)p Ft(NAME)p eop end
+%%Page: 95 97
+TeXDict begin 95 96 bop 150 -116 a Fx(Chapter)30 b(9:)41
+b(Hlfsd)2836 b(95)150 299 y Fp(.mailspool/)475 b Ft(NAME)150
+517 y(NAME)150 846 y Fw(9.2)68 b(Bac)l(kground)45 b(to)g(Mail)g(Deliv)l
+(ery)150 1005 y Fx(This)34 b(section)i(pro)m(vides)f(an)f(in-depth)g
+(discussion)g(of)h(wh)m(y)g(a)m(v)-5 b(ailable)37 b(metho)s(ds)d(for)g
+(deliv)m(ering)i(mail)150 1115 y(to)31 b(home)g(directories)g(are)g
+(not)f(as)h(go)s(o)s(d)f(as)h(the)f(one)h(used)f(b)m(y)g
+Ft(Hlfsd)p Fx(.)150 1317 y Fm(9.2.1)63 b(Single-Host)42
+b(Mail)f(Sp)s(o)s(ol)i(Directory)150 1464 y Fx(The)25
+b(most)g(common)g(metho)s(d)g(for)f(mail)i(deliv)m(ery)g(is)f(for)g
+(mail)g(to)h(b)s(e)f(app)s(ended)e(to)j(a)f(mailb)s(o)m(x)h(\014le)f
+(in)g(a)150 1574 y(standard)j(sp)s(o)s(ol)h(directory)g(on)g(the)g
+(designated)h(\\mail)g(home")f(mac)m(hine)h(of)f(the)g(user.)40
+b(The)28 b(greatest)150 1683 y(adv)-5 b(an)m(tage)34
+b(of)e(this)f(metho)s(d)g(is)h(that)h(it)f(is)g(the)g(default)g(metho)s
+(d)f(most)h(v)m(endors)g(pro)m(vide)f(with)h(their)150
+1793 y(systems,)27 b(th)m(us)e(v)m(ery)g(little)i(\(if)f(an)m(y\))g
+(con\014guration)g(is)f(required)g(on)g(the)h(SA's)f(part.)39
+b(All)26 b(they)f(need)g(to)150 1903 y(set)g(up)f(are)i(mail)f(aliases)
+i(directing)e(mail)h(to)g(the)f(host)g(on)g(whic)m(h)f(the)i(user's)e
+(mailb)s(o)m(x)h(\014le)g(is)g(assigned.)150 2012 y(\(Otherwise,)31
+b(mail)g(is)f(deliv)m(ered)h(lo)s(cally)-8 b(,)33 b(and)d(users)f
+(\014nd)g(mailb)s(o)m(xes)i(on)f(man)m(y)h(mac)m(hines.\))275
+2150 y(As)g(users)f(b)s(ecome)h(more)h(sophisticated,)g(and)f(aided)g
+(b)m(y)g(windo)m(wing)f(systems,)i(they)f(\014nd)f(them-)150
+2259 y(selv)m(es)e(logging)g(in)f(on)f(m)m(ultiple)i(hosts)f(at)g
+(once,)h(p)s(erforming)e(sev)m(eral)i(tasks)f(concurren)m(tly)-8
+b(.)41 b(They)26 b(ask)150 2369 y(to)36 b(b)s(e)f(able)h(to)h(read)e
+(their)h(mail)g(on)f(an)m(y)h(host)g(on)f(the)h(net)m(w)m(ork,)i(not)e
+(just)f(the)h(one)f(designated)i(as)150 2478 y(their)30
+b(\\mail)i(home".)150 2681 y Fm(9.2.2)63 b(Cen)m(tralized)39
+b(Mail)j(Sp)s(o)s(ol)g(Directory)150 2828 y Fx(A)28 b(p)s(opular)e
+(metho)s(d)h(for)g(pro)m(viding)g(mail)h(readabilit)m(y)h(from)e(an)m
+(y)h(host)f(is)h(to)g(ha)m(v)m(e)h(all)f(mail)g(deliv)m(ered)150
+2937 y(to)i(a)f(mail)h(sp)s(o)s(ol)f(directory)g(on)g(a)h(designated)f
+(\\mail-serv)m(er")j(whic)m(h)c(is)i(exp)s(orted)e(via)i(NFS)f(to)h
+(all)g(of)150 3047 y(the)j(hosts)g(on)g(the)g(net)m(w)m(ork.)49
+b(Con\014guring)32 b(suc)m(h)g(a)i(system)f(is)g(relativ)m(ely)i(easy)
+-8 b(.)49 b(On)32 b(most)i(systems,)150 3157 y(the)f(bulk)f(of)h(the)f
+(w)m(ork)h(is)g(a)g(one-time)h(addition)f(to)g(one)g(or)g(t)m(w)m(o)h
+(con\014guration)f(\014les)g(in)f Fp(/etc)p Fx(.)46 b(The)150
+3266 y(\014le-serv)m(er's)24 b(sp)s(o)s(ol)f(directory)g(is)g(then)g
+(hard-moun)m(ted)g(across)g(ev)m(ery)h(mac)m(hine)g(on)f(the)g(lo)s
+(cal)i(net)m(w)m(ork.)150 3376 y(In)32 b(small)h(en)m(vironmen)m(ts)g
+(with)g(only)f(a)h(handful)e(of)i(hosts)g(this)f(can)h(b)s(e)f(an)h
+(acceptable)i(solution.)48 b(In)150 3485 y(our)40 b(departmen)m(t,)k
+(with)c(a)h(couple)g(of)g(h)m(undred)e(activ)m(e)k(hosts)d(and)g
+(thousands)g(of)h(mail)g(messages)150 3595 y(pro)s(cessed)27
+b(daily)-8 b(,)30 b(this)e(w)m(as)g(deemed)g(completely)i
+(unacceptable,)f(as)g(it)f(in)m(tro)s(duced)f(sev)m(eral)j(t)m(yp)s(es)
+e(of)150 3705 y(problems:)150 3869 y Fn(Scalabilit)m(y)k(and)e(P)m
+(erformance)630 3978 y Fx(As)e(more)g(and)g(more)g(mac)m(hines)h(get)g
+(added)e(to)i(the)f(net)m(w)m(ork,)i(more)e(mail)h(tra\016c)f(has)g(to)
+630 4088 y(go)j(o)m(v)m(er)g(NFS)f(to)h(and)f(from)f(the)h(mail-serv)m
+(er.)42 b(Users)30 b(lik)m(e)i(to)e(run)f(mail-w)m(atc)m(hers,)k(and)
+630 4197 y(read)38 b(their)f(mail)h(often.)63 b(The)37
+b(stress)h(on)f(the)h(shared)f(infrastructure)g(increases)h(with)630
+4307 y(ev)m(ery)f(user)f(and)g(host)g(added;)j(loads)e(on)f(the)h(mail)
+g(serv)m(er)f(w)m(ould)g(most)h(certainly)h(b)s(e)630
+4417 y(high)25 b(since)g(all)h(mail)g(deliv)m(ery)g(go)s(es)g(through)f
+(that)g(one)h(mac)m(hine.)2935 4384 y Fs(1)3012 4417
+y Fx(This)e(leads)i(to)g(lo)m(w)m(er)630 4526 y(reliabilit)m(y)37
+b(and)e(p)s(erformance.)54 b(T)-8 b(o)35 b(reduce)g(the)h(n)m(um)m(b)s
+(er)d(of)j(concurren)m(t)f(connections)630 4636 y(b)s(et)m(w)m(een)f
+(clien)m(ts)h(and)d(the)i(serv)m(er)f(host,)i(some)e(SAs)g(ha)m(v)m(e)i
+(resorted)e(to)h(automoun)m(ting)630 4745 y(the)26 b(mail-sp)s(o)s(ol)g
+(directory)-8 b(.)40 b(But)26 b(this)g(solution)g(only)g(mak)m(es)g
+(things)g(w)m(orse:)39 b(since)26 b(users)630 4855 y(often)i(run)f
+(mail)i(w)m(atc)m(hers,)h(and)d(man)m(y)h(p)s(opular)f(applications)i
+(suc)m(h)f(as)g(`)p Fp(trn)p Fx(',)h(`)p Fp(emacs)p Fx(',)630
+4964 y(`)p Fp(csh)p Fx(')24 b(or)h(`)p Fp(ksh)p Fx(')f(c)m(hec)m(k)i(p)
+s(erio)s(dically)f(for)g(new)f(mail,)j(the)e(automoun)m(ted)g
+(directory)g(w)m(ould)p 150 5066 1200 4 v 199 5134 a
+Fs(1)307 5166 y Fr(Deliv)n(ery)32 b(via)g(NFS-moun)n(ted)f
+(\014lesystems)i(ma)n(y)f(require)g(usage)h(of)h(`)p
+Fq(rpc.lockd)p Fr(')h(and)d(`)p Fq(rpc.statd)p Fr(')j(to)d(pro)n(vide)
+275 5253 y(distributed)23 b(\014le-lo)r(c)n(king,)h(b)r(oth)g(of)g
+(whic)n(h)f(are)i(widely)e(regarded)h(as)h(unstable)e(and)g
+(unreliable.)35 b(F)-6 b(urthermore,)24 b(this)275 5340
+y(will)j(degrade)f(p)r(erformance,)h(as)f(lo)r(cal)h(pro)r(cesses)h(as)
+e(w)n(ell)h(as)f(remote)g(`)p Fq(nfsd)p Fr(')h(pro)r(cesses)g(are)g(k)n
+(ept)d(busy)-6 b(.)p eop end
+%%Page: 96 98
+TeXDict begin 96 97 bop 150 -116 a Fx(96)1855 b(Am-utils)30
+b(\(4.4BSD)j(Automoun)m(ter)d(Utilities\))630 299 y(b)s(e)40
+b(e\013ectiv)m(ely)k(p)s(ermanen)m(tly)d(moun)m(ted.)72
+b(If)41 b(it)g(gets)h(unmoun)m(ted)e(automatically)k(b)m(y)630
+408 y(the)31 b(automoun)m(ter)h(program,)f(it)g(is)g(most)g(lik)m(ely)h
+(to)g(get)g(moun)m(ted)f(shortly)g(afterw)m(ards,)630
+518 y(consuming)42 b(more)g(I/O)g(resources)g(b)m(y)f(the)h(constan)m
+(t)i(cycle)f(of)f(moun)m(t)g(and)f(umoun)m(t)630 628
+y(calls.)150 791 y Fn(Reliabilit)m(y)630 927 y Fx(The)24
+b(mail-serv)m(er)h(host)g(and)e(its)i(net)m(w)m(ork)g(connectivit)m(y)h
+(m)m(ust)f(b)s(e)e(v)m(ery)i(reliable.)40 b(W)-8 b(orse,)630
+1037 y(since)24 b(the)g(sp)s(o)s(ol)f(directory)i(has)e(to)i(b)s(e)e
+(hard-moun)m(ted,)2569 1004 y Fs(2)2631 1037 y Fx(man)m(y)h(pro)s
+(cesses)f(whic)m(h)h(access)630 1146 y(the)g(sp)s(o)s(ol)e(directory)i
+(\(v)-5 b(arious)24 b(shells,)h(`)p Fp(login)p Fx(',)f(`)p
+Fp(emacs)p Fx(',)g(etc.\))40 b(w)m(ould)23 b(b)s(e)g(h)m(ung)g(as)g
+(long)630 1256 y(as)35 b(connectivit)m(y)i(to)f(the)e(mail-serv)m(er)j
+(is)d(sev)m(ered.)55 b(T)-8 b(o)35 b(impro)m(v)m(e)h(reliabilit)m(y)-8
+b(,)38 b(SAs)c(ma)m(y)630 1366 y(c)m(ho)s(ose)40 b(to)g(bac)m(kup)f
+(the)g(mail-serv)m(er's)h(sp)s(o)s(ol)f(partition)h(sev)m(eral)g(times)
+g(a)f(da)m(y)-8 b(.)68 b(This)630 1475 y(ma)m(y)37 b(mak)m(e)h(things)e
+(w)m(orse)h(since)g(reading)f(or)h(deliv)m(ering)g(mail)h(while)e(bac)m
+(kups)g(are)h(in)630 1585 y(progress)g(ma)m(y)h(cause)g(bac)m(kups)f
+(to)i(b)s(e)d(inconsisten)m(t;)43 b(more)37 b(bac)m(kups)g(consume)h
+(more)630 1694 y(bac)m(kup-media)31 b(resources,)f(and)g(increase)h
+(the)g(load)g(on)f(the)h(mail-serv)m(er)g(host.)150 1897
+y Fm(9.2.3)63 b(Distributed)41 b(Mail)g(Sp)s(o)s(ol)i(Service)150
+2044 y Fx(Despite)f(the)e(existence)i(of)f(a)g(few)f(systems)g(that)h
+(supp)s(ort)e(deliv)m(ery)i(to)g(users')f(home)h(directories,)150
+2154 y(mail)f(deliv)m(ery)h(to)f(home)g(directories)h(hasn't)f(caugh)m
+(t)g(on.)69 b(W)-8 b(e)41 b(b)s(eliev)m(e)g(the)f(main)g(reason)g(is)f
+(that)150 2264 y(there)32 b(are)g(to)s(o)h(man)m(y)e(programs)h(that)g
+(\\kno)m(w")h(where)e(mailb)s(o)m(x)i(\014les)e(reside.)45
+b(Besides)33 b(the)f(ob)m(vious)150 2373 y(\(the)g(deliv)m(ery)f
+(program)g Fp(/bin/mail)d Fx(and)j(mail)g(readers)g(lik)m(e)h
+Fp(/usr/ucb/Mail)p Fx(,)c(`)p Fp(mush)p Fx(',)j(`)p Fp(mm)p
+Fx(',)g(etc.\),)150 2483 y(other)40 b(programs)f(that)h(kno)m(w)f
+(mailb)s(o)m(x)h(lo)s(cation)h(are)f(login,)j(from,)f(almost)e(ev)m
+(ery)g(shell,)j(`)p Fp(xbiff)p Fx(',)150 2592 y(`)p Fp(xmailbox)p
+Fx(',)25 b(and)g(ev)m(en)h(some)g(programs)f(not)h(directly)g(related)h
+(to)f(mail,)h(suc)m(h)f(as)g(`)p Fp(emacs)p Fx(')e(and)h(`)p
+Fp(trn)p Fx('.)150 2702 y(Although)39 b(some)h(of)f(these)h(programs)f
+(can)g(b)s(e)g(con\014gured)f(to)i(lo)s(ok)g(in)e(di\013eren)m(t)i
+(directories)g(with)150 2812 y(the)c(use)g(of)h(en)m(vironmen)m(t)f(v)
+-5 b(ariables)37 b(and)f(other)g(resources,)i(man)m(y)f(of)f(them)g
+(cannot.)59 b(The)36 b(o)m(v)m(erall)150 2921 y(p)s(orting)30
+b(w)m(ork)g(is)h(signi\014can)m(t.)275 3059 y(Other)25
+b(metho)s(ds)g(that)h(ha)m(v)m(e)h(y)m(et)g(to)g(catc)m(h)g(on)f
+(require)f(the)h(use)g(of)g(a)g(sp)s(ecial)g(mail-reading)h(serv)m(er,)
+150 3169 y(suc)m(h)37 b(as)h(IMAP)g(or)g(POP)-8 b(.)37
+b(The)h(main)f(disadv)-5 b(an)m(tage)39 b(of)f(these)g(systems)g(is)g
+(that)g(UAs)g(need)f(to)i(b)s(e)150 3279 y(mo)s(di\014ed)23
+b(to)j(use)e(these)h(services)g(|)f(a)h(long)g(and)f(in)m(v)m(olv)m(ed)
+i(task.)40 b(That)24 b(is)h(wh)m(y)f(they)h(are)f(not)h(p)s(opular)150
+3388 y(at)31 b(this)f(time.)275 3527 y(Sev)m(eral)36
+b(other)h(ideas)f(ha)m(v)m(e)h(b)s(een)e(prop)s(osed)g(and)g(ev)m(en)i
+(used)e(in)h(v)-5 b(arious)36 b(en)m(vironmen)m(ts.)57
+b(None)150 3636 y(of)35 b(them)h(is)f(robust.)54 b(They)35
+b(are)g(mostly)h(v)m(ery)g(sp)s(ecialized,)i(in\015exible,)e(and)f(do)g
+(not)h(extend)f(to)h(the)150 3746 y(general)31 b(case.)42
+b(Some)31 b(of)f(the)h(ideas)f(are)h(plain)g(bad,)f(p)s(oten)m(tially)i
+(leading)f(to)g(lost)g(or)f(corrupt)g(mail:)150 3911
+y Fn(automoun)m(ters)630 4020 y Fx(Using)e(an)g(automoun)m(ter)h(suc)m
+(h)f(as)g Ft(A)n(md)38 b Fx(to)29 b(pro)m(vide)f(a)h(set)f(of)h(sym)m
+(b)s(olic)f(links)g(from)g(the)630 4130 y(normal)j(sp)s(o)s(ol)g
+(directory)h(to)h(user)d(home)i(directories)g(is)g(not)g(su\016cien)m
+(t.)44 b(UAs)32 b(rename,)630 4240 y(unlink,)k(and)g(recreate)h(the)f
+(mailb)s(o)m(x)h(as)f(a)g(regular)g(\014le,)h(therefore)g(it)f(m)m(ust)
+g(b)s(e)f(a)h(real)630 4349 y(\014le,)c(not)g(a)g(sym)m(b)s(olic)g
+(link.)43 b(F)-8 b(urthermore,)32 b(it)g(m)m(ust)g(reside)f(in)g(a)h
+(real)g(directory)g(whic)m(h)630 4459 y(is)i(writable)g(b)m(y)g(the)h
+(UAs)f(and)f(MT)-8 b(As.)52 b(This)33 b(metho)s(d)h(ma)m(y)h(also)g
+(require)e(p)s(opulating)630 4568 y Fp(/var/spool/mail)19
+b Fx(with)j(sym)m(b)s(olic)h(links)g(and)f(making)i(sure)e(they)h(are)g
+(up)s(dated.)37 b(Mak-)630 4678 y(ing)26 b Ft(A)n(md)35
+b Fx(manage)26 b(that)h(directory)f(directly)g(fails,)i(since)e(man)m
+(y)f(v)-5 b(arious)26 b(lo)s(c)m(k)h(\014les)e(need)630
+4788 y(to)32 b(b)s(e)f(managed)h(as)f(w)m(ell.)45 b(Also,)33
+b Ft(A)n(md)41 b Fx(do)s(es)31 b(not)g(pro)m(vide)h(all)g(of)g(the)f
+(NFS)h(op)s(erations)630 4897 y(whic)m(h)e(are)h(required)e(to)j(write)
+e(mail)h(suc)m(h)f(as)h(write,)g(create,)h(remo)m(v)m(e,)g(and)e
+(unlink.)150 5060 y Fp($MAIL)p 150 5154 1200 4 v 199
+5221 a Fs(2)275 5253 y Fr(No)c(SA)f(in)h(their)g(righ)n(t)h(minds)f(w)n
+(ould)g(soft-moun)n(t)h(read/write)g(partitions)g(|)f(the)g(c)n(hances)
+g(for)i(data)e(loss)h(are)g(to)r(o)275 5340 y(great.)p
+eop end
+%%Page: 97 99
+TeXDict begin 97 98 bop 150 -116 a Fx(Chapter)30 b(9:)41
+b(Hlfsd)2836 b(97)630 299 y(Setting)37 b(this)e(v)-5
+b(ariable)37 b(to)f(an)g(automoun)m(ted)g(directory)h(p)s(oin)m(ting)f
+(to)g(the)g(user's)f(mail)630 408 y(sp)s(o)s(ol)41 b(host)h(only)g
+(solv)m(es)h(the)g(problem)e(for)h(those)g(programs)f(whic)m(h)h(kno)m
+(w)g(and)f(use)630 518 y Fp($MAIL)p Fx(.)51 b(Man)m(y)35
+b(programs)f(don't,)i(therefore)e(this)h(solution)g(is)f(partial)h(and)
+f(of)g(limited)630 628 y(\015exibilit)m(y)-8 b(.)40 b(Also,)26
+b(it)e(requires)f(the)h(SAs)f(or)h(the)g(users)f(to)h(set)g(it)h
+(themselv)m(es)g(|)e(an)h(added)630 737 y(lev)m(el)32
+b(of)f(incon)m(v)m(enience)h(and)e(p)s(ossible)g(failures.)150
+906 y Fp(/bin/mail)630 1016 y Fx(Using)i(a)g(di\013eren)m(t)g(mail)g
+(deliv)m(ery)g(agen)m(t)i(could)d(b)s(e)g(the)h(solution.)45
+b(One)31 b(suc)m(h)g(example)630 1125 y(is)42 b(`)p Fp(hdmail)p
+Fx('.)73 b(Ho)m(w)m(ev)m(er,)46 b(`)p Fp(hdmail)p Fx(')41
+b(still)h(requires)f(mo)s(difying)g(all)i(UAs,)i(the)c(MT)-8
+b(A's)630 1235 y(con\014guration,)32 b(installing)g(new)f(daemons,)g
+(and)f(c)m(hanging)i(login)g(scripts.)43 b(This)30 b(mak)m(es)630
+1345 y(the)e(system)f(less)h(upgradable)g(or)f(compatible)i(with)e
+(others,)i(and)e(adds)f(one)i(more)g(com-)630 1454 y(plicated)35
+b(system)f(for)f(SAs)g(to)i(deal)f(with.)51 b(It)33 b(is)h(not)g(a)g
+(complete)h(solution)g(b)s(ecause)e(it)630 1564 y(still)27
+b(requires)e(eac)m(h)i(user)e(ha)m(v)m(e)i(their)f Fp($MAIL)e
+Fx(v)-5 b(ariable)27 b(setup)e(correctly)-8 b(,)29 b(and)c(that)h(ev)m
+(ery)630 1673 y(program)k(use)g(this)g(v)-5 b(ariable.)150
+1882 y Fm(9.2.4)63 b(Wh)m(y)40 b(Deliv)m(er)g(In)m(to)h(the)g(Home)g
+(Directory?)150 2029 y Fx(There)26 b(are)h(sev)m(eral)h(ma)5
+b(jor)26 b(reasons)h(wh)m(y)f(SAs)f(migh)m(t)j(w)m(an)m(t)f(to)g(deliv)
+m(er)g(mail)g(directly)g(in)m(to)h(the)f(users')150 2139
+y(home)j(directories:)150 2312 y Fn(Lo)s(cation)630 2452
+y Fx(Man)m(y)21 b(mail)g(readers)f(need)g(to)h(mo)m(v)m(e)h(mail)f
+(from)f(the)g(sp)s(o)s(ol)g(directory)h(to)g(the)f(user's)g(home)630
+2561 y(directory)-8 b(.)45 b(It)31 b(sp)s(eeds)f(up)h(this)g(op)s
+(eration)h(if)f(the)h(t)m(w)m(o)g(are)g(on)f(the)h(same)f
+(\014lesystem.)44 b(If)630 2671 y(for)30 b(some)g(reason)g(the)h
+(user's)e(home)h(directory)h(is)f(inaccessible,)i(it)e(isn't)g(that)h
+(useful)e(to)630 2781 y(b)s(e)d(able)h(to)g(read)g(mail,)h(since)f
+(there)g(is)g(no)f(place)i(to)f(mo)m(v)m(e)h(it)f(to.)40
+b(In)26 b(some)h(cases,)i(trying)630 2890 y(to)i(mo)m(v)m(e)h(mail)f
+(to)g(a)g(non-existen)m(t)h(or)e(h)m(ung)g(\014lesystem)g(ma)m(y)h
+(result)g(in)f(mail)h(loss.)150 3059 y Fn(Distribution)630
+3169 y Fx(Ha)m(ving)25 b(all)g(mail)g(sp)s(o)s(ol)e(directories)i
+(spread)e(among)i(the)f(man)m(y)g(more)g(\014lesystems)g(mini-)630
+3278 y(mizes)h(the)g(c)m(hances)h(that)f(complete)h(en)m(vironmen)m(ts)
+f(will)g(grind)f(to)h(a)g(halt)h(when)d(a)i(single)630
+3388 y(serv)m(er)34 b(is)f(do)m(wn.)49 b(It)34 b(do)s(es)f(increase)h
+(the)f(c)m(hance)i(that)f(there)f(will)h(b)s(e)f(someone)h(who)f(is)630
+3497 y(not)23 b(able)g(to)g(read)g(their)f(mail)i(when)d(a)i(mac)m
+(hine)h(is)e(do)m(wn,)i(but)e(that)h(is)g(usually)f(preferred)630
+3607 y(to)30 b(ha)m(ving)f(no)g(one)g(b)s(e)f(able)i(to)g(read)e(their)
+h(mail)h(b)s(ecause)f(a)g(cen)m(tralized)i(mail)f(serv)m(er)f(is)630
+3717 y(do)m(wn.)38 b(The)25 b(problem)f(of)g(losing)i(some)f(mail)g
+(due)f(to)i(the)f(\(presumably\))f(higher)g(c)m(hances)630
+3826 y(that)31 b(a)g(user's)f(mac)m(hine)h(is)f(do)m(wn)g(is)g
+(minimized)h(in)f(HLFS.)150 3995 y Fn(Securit)m(y)630
+4134 y Fx(Deliv)m(ering)35 b(mail)e(to)g(users')f(home)h(directories)g
+(has)g(another)f(adv)-5 b(an)m(tage)35 b(|)d(enhanced)630
+4244 y(securit)m(y)43 b(and)e(priv)-5 b(acy)d(.)76 b(Since)42
+b(a)g(shared)f(system)h(mail)h(sp)s(o)s(ol)e(directory)h(has)g(to)h(b)s
+(e)630 4354 y(w)m(orld-readable)28 b(and)f(searc)m(hable,)i(an)m(y)f
+(user)e(can)i(see)g(whether)f(other)g(users)g(ha)m(v)m(e)h(mail,)630
+4463 y(when)g(they)h(last)g(receiv)m(ed)h(new)e(mail,)i(or)f(when)e
+(they)i(last)h(read)e(their)h(mail.)41 b(Programs)630
+4573 y(suc)m(h)26 b(as)h(`)p Fp(finger)p Fx(')f(displa)m(y)h(this)f
+(information,)i(whic)m(h)f(some)g(consider)f(an)h(infringemen)m(t)630
+4682 y(of)e(priv)-5 b(acy)d(.)40 b(While)26 b(it)g(is)f(p)s(ossible)f
+(to)i(disable)g(this)f(feature)g(of)h(`)p Fp(finger)p
+Fx(')e(so)h(that)h(remote)630 4792 y(users)36 b(cannot)h(see)g(a)g
+(mailb)s(o)m(x)g(\014le's)g(status,)i(this)d(do)s(esn't)h(prev)m(en)m
+(t)g(lo)s(cal)h(users)d(from)630 4902 y(getting)25 b(the)f
+(information.)39 b(F)-8 b(urthermore,)25 b(there)f(are)g(more)g
+(programs)f(whic)m(h)h(mak)m(e)g(use)630 5011 y(of)j(this)h
+(information.)40 b(In)26 b(shared)h(en)m(vironmen)m(ts,)h(disabling)g
+(suc)m(h)f(programs)g(has)g(to)h(b)s(e)630 5121 y(done)d(on)g(a)g
+(system-wide)g(basis,)h(but)f(with)f(mail)i(deliv)m(ered)g(to)f(users')
+g(home)g(directories,)630 5230 y(users)35 b(less)h(concerned)g(with)f
+(priv)-5 b(acy)36 b(who)f(do)g(w)m(an)m(t)i(to)f(let)h(others)e(kno)m
+(w)h(when)f(they)630 5340 y(last)c(receiv)m(ed)h(or)e(read)h(mail)g
+(can)f(easily)i(do)e(so)h(using)f(\014le)g(protection)i(bits.)p
+eop end
+%%Page: 98 100
+TeXDict begin 98 99 bop 150 -116 a Fx(98)1855 b(Am-utils)30
+b(\(4.4BSD)j(Automoun)m(ter)d(Utilities\))275 299 y(In)d(summary)-8
+b(,)28 b(deliv)m(ering)h(mail)f(to)h(home)f(directories)h(pro)m(vides)f
+(users)f(the)h(functionalit)m(y)h(sough)m(t,)150 408
+y(and)h(also)h(a)m(v)m(oids)h(most)f(of)f(the)h(problems)e(just)h
+(discussed.)150 636 y Fw(9.3)68 b(Using)46 b(Hlfsd)150
+857 y Fm(9.3.1)63 b(Con)m(trolling)41 b(Hlfsd)150 1004
+y Fx(Muc)m(h)f(the)f(same)h(w)m(a)m(y)h Ft(A)n(md)49
+b Fx(is)39 b(con)m(trolled)i(b)m(y)f Fp(ctl-amd)p Fx(,)g(so)f(do)s(es)g
+Ft(Hlfsd)50 b Fx(get)40 b(con)m(trolled)h(b)m(y)f(the)150
+1114 y Fp(ctl-hlfsd)28 b Fx(script:)150 1268 y Fp(ctl-hlfsd)45
+b(start)630 1377 y Fx(Start)31 b(a)f(new)g Ft(Hlfsd)p
+Fx(.)150 1532 y Fp(ctl-hlfsd)45 b(stop)630 1641 y Fx(Stop)30
+b(a)h(running)e Ft(Hlfsd)p Fx(.)150 1795 y Fp(ctl-hlfsd)45
+b(restart)630 1905 y Fx(Stop)c(a)h(running)e Ft(Hlfsd)p
+Fx(,)45 b(w)m(ait)d(for)g(10)g(seconds,)j(and)c(then)g(start)h(a)g(new)
+f(one.)74 b(It)42 b(is)630 2014 y(hop)s(ed)24 b(that)i(within)e(10)i
+(seconds,)h(the)e(previously)g(running)e Ft(Hlfsd)35
+b Fx(terminate)26 b(prop)s(erly;)630 2124 y(otherwise,)31
+b(starting)g(a)g(second)f(one)h(could)f(cause)h(system)g(lo)s(c)m(kup.)
+275 2278 y(F)-8 b(or)35 b(example,)j(on)d(our)f(systems,)j(w)m(e)e
+(start)h Ft(Hlfsd)45 b Fx(within)34 b Fp(ctl-hlfsd)f
+Fx(as)i(follo)m(ws)h(on)f(Solaris)h(2)150 2388 y(systems:)390
+2520 y Fp(hlfsd)46 b(-a)i(/var/alt_mail)c(-x)j(all)g(-l)g
+(/var/log/hlfsd)d(/mail/home)h(.mailspool)275 2651 y
+Fx(The)33 b(directory)h Fp(/var/alt_mail)c Fx(is)k(a)h(directory)f(in)g
+(the)g(ro)s(ot)g(partition)g(where)g(alternate)h(mail)150
+2761 y(will)c(b)s(e)e(deliv)m(ered)j(in)m(to,)f(when)f(it)g(cannot)h(b)
+s(e)f(deliv)m(ered)h(in)m(to)h(the)e(user's)g(home)g(directory)-8
+b(.)275 2893 y(Normal)30 b(mail)h(gets)h(deliv)m(ered)f(in)m(to)g
+Fp(/var/mail)p Fx(,)d(but)i(on)g(our)g(systems,)g(that)h(is)g(a)f(sym)m
+(b)s(olic)h(link)150 3002 y(to)46 b Fp(/mail/home)p Fx(.)82
+b Fp(/mail)44 b Fx(is)h(managed)h(b)m(y)f Ft(Hlfsd)p
+Fx(,)k(whic)m(h)c(creates)h(a)g(dynamic)f(symlink)f(named)150
+3112 y(`)p Fp(home)p Fx(',)54 b(p)s(oin)m(ting)49 b(to)h(the)g(sub)s
+(directory)e Fp(.mailspool)e Ft(within)58 b Fx(the)49
+b(accessing)i(user's)e(home)g(di-)150 3222 y(rectory)-8
+b(.)83 b(This)43 b(results)h(in)g(mail)h(whic)m(h)f(normally)g(should)f
+(go)i(to)g Fp(/var/mail/$USER)p Fx(,)e(to)i(go)g(to)150
+3331 y Fp($HOME/.mailspool/$USER)p Fx(.)275 3463 y Ft(Hlfsd)36
+b Fx(do)s(es)27 b(not)g(create)i(the)e Fp(/var/mail)d
+Fx(symlink.)39 b(This)26 b(needs)h(to)h(b)s(e)e(created)i(\(man)m
+(ually\))g(once)150 3573 y(on)i(eac)m(h)i(host,)f(b)m(y)f(the)g(system)
+h(administrators,)g(as)f(follo)m(ws:)390 3705 y Fp(mv)47
+b(/var/mail)e(/var/alt_mail)390 3814 y(ln)i(-s)g(/mail/home)e
+(/var/mail)275 3946 y Ft(Hlfsd)40 b Fx(also)31 b(resp)s(onds)d(to)k
+(the)e(follo)m(wing)i(signals:)275 4078 y(A)e(`)p Fp(SIGHUP)p
+Fx(')f(signal)i(sen)m(t)g(to)g Ft(Hlfsd)40 b Fx(will)31
+b(force)g(it)g(to)g(reload)g(the)g(passw)m(ord)e(map)h(immediately)-8
+b(.)275 4210 y(A)40 b(`)p Fp(SIGUSR1)p Fx(')f(signal)i(sen)m(t)f(to)h
+Ft(Hlfsd)50 b Fx(will)41 b(cause)g(it)g(to)g(dump)d(its)j(in)m(ternal)g
+(passw)m(ord)e(map)h(to)150 4319 y(the)26 b(\014le)g
+Fp(/usr/tmp/hlfsd.dump.XXXXX)o(X)p Fx(,)21 b(where)26
+b(`)p Fp(XXXXXX)p Fx(')e(will)j(b)s(e)e(replaced)i(b)m(y)e(a)i(random)e
+(string)150 4429 y(generated)31 b(b)m(y)g Fn(mktemp)p
+Fx(\(3\))g(or)f(\(the)h(more)g(secure\))g Fn(mkstemp)p
+Fx(\(3\).)150 4623 y Fm(9.3.2)63 b(Hlfsd)42 b(Options)150
+4792 y Fp(-a)47 b Fk(alt_dir)630 4902 y Fx(Alternate)e(directory)-8
+b(.)80 b(The)43 b(name)h(of)f(the)h(directory)g(to)g(whic)m(h)f(the)g
+(sym)m(b)s(olic)h(link)630 5011 y(returned)27 b(b)m(y)i
+Ft(Hlfsd)38 b Fx(will)29 b(p)s(oin)m(t,)g(if)f(it)h(cannot)g(access)h
+(the)f(home)f(directory)h(of)g(the)f(user.)630 5121 y(This)d(defaults)h
+(to)h Fp(/var/hlfs)p Fx(.)36 b(This)25 b(directory)i(will)f(b)s(e)f
+(created)i(if)f(it)g(do)s(esn't)g(exist.)40 b(It)630
+5230 y(is)31 b(exp)s(ected)g(that)g(either)h(users)e(will)h(read)g
+(these)g(\014les,)g(or)g(the)g(system)g(administrators)630
+5340 y(will)g(run)e(a)h(script)h(to)g(resend)e(this)i(\\lost)g(mail")h
+(to)f(its)g(o)m(wner.)p eop end
+%%Page: 99 101
+TeXDict begin 99 100 bop 150 -116 a Fx(Chapter)30 b(9:)41
+b(Hlfsd)2836 b(99)150 299 y Fp(-c)47 b Fk(cache-interval)630
+408 y Fx(Cac)m(hing)26 b(in)m(terv)-5 b(al.)41 b Ft(Hlfsd)35
+b Fx(will)26 b(cac)m(he)h(the)f(v)-5 b(alidit)m(y)27
+b(of)f(home)f(directories)i(for)f(this)f(in)m(ter-)630
+518 y(v)-5 b(al,)32 b(in)e(seconds.)42 b(En)m(tries)32
+b(whic)m(h)e(ha)m(v)m(e)i(b)s(een)e(v)m(eri\014ed)h(within)f(the)i
+(last)f Fo(cac)m(he-in)m(terv)-5 b(al)630 628 y Fx(seconds)31
+b(will)h(not)g(b)s(e)f(v)m(eri\014ed)g(again,)i(since)f(the)g(op)s
+(eration)g(could)f(b)s(e)g(exp)s(ensiv)m(e,)i(and)630
+737 y(the)e(en)m(tries)h(are)g(most)f(lik)m(ely)i(still)f(v)-5
+b(alid.)43 b(After)31 b(the)h(in)m(terv)-5 b(al)32 b(has)f(expired,)g
+Ft(Hlfsd)41 b Fx(will)630 847 y(re-v)m(erify)f(the)g(v)-5
+b(alidit)m(y)41 b(of)f(the)g(user's)f(home)h(directory)-8
+b(,)43 b(and)c(reset)i(the)f(cac)m(he)h(time-)630 956
+y(coun)m(ter.)g(The)30 b(default)h(v)-5 b(alue)31 b(for)f
+Fo(cac)m(he-in)m(terv)-5 b(al)37 b Fx(is)30 b(300)i(seconds)e(\(5)h
+(min)m(utes\).)150 1106 y Fp(-f)384 b Fx(F)-8 b(orce)44
+b(fast)f(startup.)77 b(This)42 b(option)h(tells)h Ft(Hlfsd)52
+b Fx(to)44 b(skip)e(startup-time)h(consistency)630 1215
+y(c)m(hec)m(ks)32 b(suc)m(h)f(as)h(existence)g(of)f(moun)m(t)g
+(directory)-8 b(,)33 b(alternate)f(sp)s(o)s(ol)f(directory)-8
+b(,)32 b(symlink)630 1325 y(to)f(b)s(e)f(hidden)f(under)g(the)h(moun)m
+(t)h(directory)-8 b(,)31 b(their)g(p)s(ermissions)e(and)g(v)-5
+b(alidit)m(y)d(.)150 1474 y Fp(-g)47 b Fk(group)97 b
+Fx(Set)32 b(the)h(sp)s(ecial)f(group)g(HLFS)p 1745 1474
+28 4 v 40 w(GID)h(to)g Fo(group)p Fx(.)45 b(Programs)32
+b(suc)m(h)g(as)h Fp(/usr/ucb/from)630 1584 y Fx(or)g
+Fp(/usr/sbin/in.comsat)p Fx(,)28 b(whic)m(h)33 b(access)h(the)f(mailb)s
+(o)m(xes)g(of)g(other)g(users,)g(m)m(ust)g(b)s(e)630
+1694 y(setgid)d(`)p Fp(HLFS_GID)p Fx(')d(to)j(w)m(ork)f(prop)s(erly)-8
+b(.)39 b(The)29 b(default)g(group)f(is)h(`)p Fp(hlfs)p
+Fx('.)40 b(If)29 b(no)f(group)h(is)630 1803 y(pro)m(vided,)h(and)g
+(there)h(is)f(no)g(group)g(`)p Fp(hlfs)p Fx(',)g(this)g(feature)h(is)g
+(disabled.)150 1953 y Fp(-h)384 b Fx(Help.)41 b(Prin)m(t)30
+b(a)h(brief)f(help)g(message,)i(and)d(exit.)150 2102
+y Fp(-i)47 b Fk(reload-interval)630 2212 y Fx(Map-reloading)g(in)m
+(terv)-5 b(al.)87 b(Eac)m(h)46 b Fo(reload-in)m(terv)-5
+b(al)51 b Fx(seconds,)e Ft(Hlfsd)55 b Fx(will)46 b(reload)g(the)630
+2321 y(passw)m(ord)35 b(map.)56 b Ft(Hlfsd)46 b Fx(needs)35
+b(the)h(passw)m(ord)f(map)g(for)h(the)g(UIDs)g(and)f(home)h(direc-)630
+2431 y(tory)c(pathnames.)46 b Ft(Hlfsd)41 b Fx(sc)m(hedules)33
+b(a)f(`)p Fp(SIGALRM)p Fx(')f(to)h(reload)h(the)f(passw)m(ord)g(maps.)
+45 b(A)630 2540 y(`)p Fp(SIGHUP)p Fx(')24 b(sen)m(t)j(to)f
+Ft(Hlfsd)35 b Fx(will)26 b(force)g(it)g(to)h(reload)f(the)g(maps)f
+(immediately)-8 b(.)41 b(The)25 b(default)630 2650 y(v)-5
+b(alue)31 b(for)f Fo(reload-in)m(terv)-5 b(al)36 b Fx(is)30
+b(900)i(seconds)e(\(15)i(min)m(utes.\))150 2800 y Fp(-l)47
+b Fk(logfile)630 2909 y Fx(Sp)s(ecify)20 b(a)h(log)g(\014le)g(to)g
+(whic)m(h)g Ft(Hlfsd)30 b Fx(will)21 b(record)f(ev)m(en)m(ts.)39
+b(If)20 b Fo(log\014le)27 b Fx(is)21 b(the)g(string)f(`)p
+Fp(syslog)p Fx(')630 3019 y(then)26 b(the)g(log)i(messages)f(will)g(b)s
+(e)e(sen)m(t)i(to)g(the)g(system)f(log)i(daemon)e(b)m(y)g
+Fn(syslog)p Fx(\(3\),)j(using)630 3128 y(the)i(`)p Fp(LOG_DAEMON)p
+Fx(')d(facilit)m(y)-8 b(.)43 b(This)30 b(is)g(also)h(the)g(default.)150
+3278 y Fp(-n)384 b Fx(No)44 b(v)m(erify)-8 b(.)82 b Ft(Hlfsd)53
+b Fx(will)44 b(not)g(v)m(erify)g(the)g(v)-5 b(alidit)m(y)45
+b(of)f(the)g(sym)m(b)s(olic)g(link)f(it)i(will)f(b)s(e)630
+3387 y(returning,)38 b(or)f(that)g(the)h(user's)e(home)h(directory)g
+(con)m(tains)h(su\016cien)m(t)g(disk-space)f(for)630
+3497 y(sp)s(o)s(oling.)56 b(This)35 b(can)h(sp)s(eed)f(up)f
+Ft(Hlfsd)45 b Fx(at)37 b(the)f(cost)g(of)g(p)s(ossibly)f(returning)g
+(sym)m(b)s(olic)630 3606 y(links)42 b(to)h(home)g(directories)g(whic)m
+(h)f(are)h(not)g(curren)m(tly)f(accessible)i(or)e(are)h(full.)77
+b(By)630 3716 y(default,)41 b Ft(Hlfsd)49 b Fx(v)-5 b(alidates)40
+b(the)f(sym)m(b)s(olic-link)h(in)f(the)g(bac)m(kground.)66
+b(The)38 b Fp(-n)g Fx(option)630 3826 y(o)m(v)m(errides)31
+b(the)g(meaning)g(of)f(the)h Fp(-c)e Fx(option,)i(since)g(no)f(cac)m
+(hing)i(is)f(necessary)-8 b(.)150 3975 y Fp(-o)47 b Fk(mount-options)
+630 4085 y Fx(Moun)m(t)42 b(options)g(whic)m(h)f Ft(Hlfsd)52
+b Fx(will)41 b(use)h(to)g(moun)m(t)g(itself)g(on)f(top)h(of)g
+Fo(dirname)p Fx(.)74 b(By)630 4194 y(default,)49 b Fo(moun)m(t-options)
+g Fx(is)c(set)h(to)f(`)p Fp(ro)p Fx('.)85 b(If)44 b(the)h(system)g
+(supp)s(orts)e(sym)m(b)s(olic-link)630 4304 y(cac)m(hing,)32
+b(default)f(options)f(are)h(set)g(to)g(`)p Fp(ro,nocache)p
+Fx('.)150 4453 y Fp(-p)384 b Fx(Prin)m(t)29 b(PID.)g(Outputs)e(the)i
+(pro)s(cess-id)f(of)h Ft(Hlfsd)38 b Fx(to)29 b(standard)f(output)g
+(where)g(it)i(can)f(b)s(e)630 4563 y(sa)m(v)m(ed)i(in)m(to)h(a)f
+(\014le.)150 4712 y Fp(-v)384 b Fx(V)-8 b(ersion.)41
+b(Displa)m(ys)32 b(v)m(ersion)f(information)f(to)h(standard)f(error.)
+150 4862 y Fp(-x)47 b Fk(log-options)630 4971 y Fx(Sp)s(ecify)29
+b(run-time)g(logging)i(options.)41 b(The)29 b(options)h(are)g(a)f
+(comma)i(separated)f(list)g(c)m(ho-)630 5081 y(sen)g(from:)40
+b(`)p Fp(fatal)p Fx(',)30 b(`)p Fp(error)p Fx(',)g(`)p
+Fp(user)p Fx(',)g(`)p Fp(warn)p Fx(',)g(`)p Fp(info)p
+Fx(',)g(`)p Fp(map)p Fx(',)g(`)p Fp(stats)p Fx(',)g(`)p
+Fp(all)p Fx('.)150 5230 y Fp(-C)384 b Fx(F)-8 b(orce)38
+b Ft(Hlfsd)47 b Fx(to)37 b(run)f(on)h(systems)f(that)i(cannot)f(turn)f
+(o\013)h(the)g(NFS)g(attribute-cac)m(he.)630 5340 y(Use)d(of)h(this)e
+(option)i(on)f(those)g(systems)g(is)g(discouraged,)i(as)e(it)g(ma)m(y)h
+(result)f(in)g(loss)g(or)p eop end
+%%Page: 100 102
+TeXDict begin 100 101 bop 150 -116 a Fx(100)1810 b(Am-utils)30
+b(\(4.4BSD)j(Automoun)m(ter)d(Utilities\))630 299 y(misdeliv)m(ery)40
+b(of)f(mail.)68 b(The)39 b(option)g(is)g(ignored)h(on)f(systems)g(that)
+h(can)f(turn)f(o\013)i(the)630 408 y(attribute-cac)m(he.)150
+568 y Fp(-D)47 b Fk(log-options)630 677 y Fx(Select)30
+b(from)f(a)g(v)-5 b(ariet)m(y)31 b(of)e(debugging)g(options.)41
+b(Pre\014xing)28 b(an)h(option)h(with)f(the)g(string)630
+787 y(`)p Fp(no)p Fx(')d(rev)m(erses)h(the)f(e\013ect)i(of)e(that)h
+(option.)40 b(Options)26 b(are)g(cum)m(ulativ)m(e.)41
+b(The)26 b(most)h(useful)630 897 y(option)33 b(is)g(`)p
+Fp(all)p Fx('.)49 b(Since)33 b(this)g(option)g(is)g(only)g(used)f(for)h
+(debugging)g(other)g(options)h(are)630 1006 y(not)d(do)s(cumen)m(ted)f
+(here.)40 b(A)31 b(fuller)f(description)g(is)h(a)m(v)-5
+b(ailable)32 b(in)e(the)h(program)f(source.)150 1166
+y Fp(-P)47 b Fk(password-file)630 1275 y Fx(Read)f(the)f(user-name,)50
+b(user-id,)f(and)c(home)g(directory)h(information)g(from)f(the)h
+(\014le)630 1385 y Fo(passw)m(ord-\014le)p Fx(.)40 b(Normally)-8
+b(,)30 b Ft(Hlfsd)38 b Fx(will)29 b(use)f Fn(getp)m(w)m(en)m(t)p
+Fx(\(3\))k(to)d(read)f(the)g(passw)m(ord)g(data-)630
+1494 y(base.)49 b(This)33 b(option)g(allo)m(ws)i(y)m(ou)f(to)f(o)m(v)m
+(erride)i(the)e(default)h(database,)h(and)d(is)i(useful)e(if)630
+1604 y(y)m(ou)k(w)m(an)m(t)g(to)g(map)f(users')f(mail)i(\014les)g(to)g
+(a)f(directory)h(other)g(than)f(their)g(home)h(direc-)630
+1714 y(tory)-8 b(.)40 b(Only)24 b(the)h(username,)g(uid,)h(and)e
+(home-directory)i(\014elds)e(of)h(the)g(\014le)g Fo(passw)m(ord-\014le)
+630 1823 y Fx(are)32 b(read)f(and)g(c)m(hec)m(k)m(ed.)46
+b(All)32 b(other)g(\014elds)f(are)h(ignored.)44 b(The)31
+b(\014le)h Fo(passw)m(ord-\014le)k Fx(m)m(ust)630 1933
+y(otherwise)29 b(b)s(e)f(complian)m(t)i(with)e(Unix)h(V)-8
+b(ersion)29 b(7)g(colon-delimited)i(format)e Fn(passwd)p
+Fx(\(4\).)150 2132 y Fm(9.3.3)63 b(Hlfsd)42 b(Files)150
+2279 y Fx(The)30 b(follo)m(wing)i(\014les)e(are)h(used)e(b)m(y)i
+Ft(Hlfsd)9 b Fx(:)150 2438 y Fp(/hlfs)240 b Fx(directory)27
+b(under)e(whic)m(h)h Ft(Hlfsd)36 b Fx(moun)m(ts)26 b(itself)i(and)e
+(manages)h(the)g(sym)m(b)s(olic)f(link)h Fp(home)p Fx(.)150
+2598 y Fp(.hlfsdir)96 b Fx(default)31 b(sub-directory)f(in)g(the)h
+(user's)f(home)g(directory)-8 b(,)32 b(to)f(whic)m(h)f(the)h
+Fp(home)f Fx(sym)m(b)s(olic)630 2707 y(link)g(returned)f(b)m(y)i
+Ft(Hlfsd)40 b Fx(p)s(oin)m(ts.)150 2867 y Fp(/var/hlfs)630
+2976 y Fx(directory)34 b(to)h(whic)m(h)f Fp(home)e Fx(sym)m(b)s(olic)j
+(link)e(returned)g(b)m(y)h Ft(Hlfsd)43 b Fx(p)s(oin)m(ts)34
+b(if)g(it)g(is)g(unable)630 3086 y(to)d(v)m(erify)g(the)f(that)h
+(user's)f(home)h(directory)g(is)f(accessible.)150 3245
+y Fp(/usr/tmp/hlfsd.dump.XXXX)o(XX)630 3355 y Fx(\014le)37
+b(to)h(whic)m(h)e Ft(Hlfsd)47 b Fx(will)37 b(dump)e(its)i(in)m(ternal)h
+(passw)m(ord)e(map)h(when)f(it)h(receiv)m(es)i(the)630
+3465 y(`)p Fp(SIGUSR1)p Fx(')d(signal.)61 b(`)p Fp(XXXXXX)p
+Fx(')36 b(will)h(b)s(e)f(replaced)i(b)m(y)f(a)g(random)f(string)h
+(generated)h(b)m(y)630 3574 y Fn(mktemp)p Fx(\(3\))31
+b(or)g(\(the)g(more)f(secure\))h Fn(mkstemp)p Fx(\(3\).)275
+3733 y(F)-8 b(or)30 b(discussion)e(on)h(other)h(\014les)f(used)g(b)m(y)
+g Ft(Hlfsd)p Fx(,)h(see)g(See)f(Section)h(10.11)h([lostaltmail],)i
+(page)d(103,)150 3843 y(and)g(Section)h(10.12)h
+([lostaltmail.conf-sample],)j(page)c(103.)p eop end
+%%Page: 101 103
+TeXDict begin 101 102 bop 150 -116 a Fx(Chapter)30 b(10:)41
+b(Assorted)31 b(T)-8 b(o)s(ols)2364 b(101)150 299 y Fu(10)80
+b(Assorted)52 b(T)-13 b(o)t(ols)150 549 y Fx(The)30 b(follo)m(wing)i
+(are)e(additional)i(utilities)g(and)d(scripts)h(included)g(with)g
+(am-utils,)h(and)f(get)i(installed.)150 789 y Fw(10.1)68
+b(am-eject)150 949 y Fx(A)33 b(shell)f(script)g(unmoun)m(ts)g(a)g
+(\015opp)m(y)g(or)h(CD-R)m(OM)g(that)g(is)f(automoun)m(ted,)i(and)e
+(then)g(attempts)h(to)150 1058 y(eject)f(the)e(remo)m(v)-5
+b(able)32 b(device.)150 1299 y Fw(10.2)68 b(amd.conf-sample)150
+1458 y Fx(A)30 b(sample)h Ft(A)n(md)40 b Fx(con\014guration)31
+b(\014le.)40 b(See)31 b(Chapter)f(6)h([Amd)f(Con\014guration)g(File],)i
+(page)f(59.)150 1698 y Fw(10.3)68 b(amd2ldif)150 1858
+y Fx(A)30 b(script)h(to)g(con)m(v)m(ert)h Ft(A)n(md)40
+b Fx(maps)29 b(to)j(LD)m(AP)f(input)e(\014les.)41 b(Use)31
+b(it)f(as)h(follo)m(ws:)390 1998 y Fp(amd2ldif)46 b Fk(mapname)f(base)i
+Fp(<)g Fk(amd.mapfile)e Fp(>)j Fk(mapfile.ldif)150 2238
+y Fw(10.4)68 b(amd2sun)150 2397 y Fx(A)30 b(script)h(to)g(con)m(v)m
+(ert)h Ft(A)n(md)40 b Fx(maps)29 b(to)j(Sun)c(Automoun)m(ter)j(maps.)40
+b(Use)31 b(it)g(as)g(follo)m(ws)390 2537 y Fp(amd2sun)46
+b(<)h Fk(amd.mapfile)e Fp(>)i Fk(auto_mapfile)150 2777
+y Fw(10.5)68 b(automoun)l(t2amd)150 2937 y Fx(A)30 b(script)h(to)g(con)
+m(v)m(ert)h(old)e(Sun)f(Automoun)m(ter)i(maps)f(to)h
+Ft(A)n(md)40 b Fx(maps.)275 3077 y(Sa)m(y)30 b(y)m(ou)h(ha)m(v)m(e)h
+(the)e(Sun)f(automoun)m(t)i(\014le)g Ft(auto.fo)-5 b(o)p
+Fx(,)32 b(with)e(these)h(t)m(w)m(o)h(lines:)390 3216
+y Fp(home)858 b(earth:/home)390 3326 y(moon)94 b(-ro,intr)380
+b(server:/proj/images)275 3466 y Fx(Running)390 3606
+y Fp(automount2amd)44 b(auto.foo)i(>)h(amd.foo)275 3745
+y Fx(will)30 b(pro)s(duce)f(the)i Ft(A)n(md)40 b Fx(map)30
+b Ft(amd.fo)-5 b(o)38 b Fx(with)30 b(this)h(con)m(ten)m(t:)390
+3885 y Fp(#)47 b(generated)f(by)h(automount2amd)d(on)j(Sat)g(Aug)g(14)g
+(17:59:32)f(US/Eastern)f(1999)390 4104 y(/defaults)g(\\\\)485
+4214 y(type:=nfs;opts:=rw,grpid,n)o(osui)o(d,u)o(time)o(out=)o(600)390
+4433 y(home)i(\\)485 4543 y(host==earth;type:=link;fs:)o(=/ho)o(me)41
+b(\\\\)485 4652 y(rhost:=earth;rfs:=/home)390 4871 y(moon)47
+b(\\)485 4981 y(-addopts:=ro,intr)d(\\\\)485 5091 y
+(host==server;type:=link;fs)o(:=/p)o(roj)o(/ima)o(ges)d(\\\\)485
+5200 y(rhost:=server;rfs:=/proj/i)o(mage)o(s)275 5340
+y Fx(This)29 b(p)s(erl)h(script)g(will)h(use)f(the)g(follo)m(wing)i
+Ft(/default)40 b Fx(en)m(try)p eop end
+%%Page: 102 104
+TeXDict begin 102 103 bop 150 -116 a Fx(102)1810 b(Am-utils)30
+b(\(4.4BSD)j(Automoun)m(ter)d(Utilities\))390 299 y Fp
+(type:=nfs;opts:=rw,grpid)o(,nos)o(uid,)o(uti)o(meou)o(t=60)o(0)275
+453 y Fx(If)36 b(y)m(ou)h(wish)f(to)i(o)m(v)m(erride)g(that,)h
+(de\014ne)d(the)i Fn($DEF)-10 b(A)m(UL)i(TS)36 b Fx(en)m(vironmen)m(t)h
+(v)-5 b(ariable,)40 b(or)d(mo)s(dify)150 563 y(the)31
+b(script.)275 717 y(If)i(y)m(ou)i(wish)e(to)i(generate)g(Amd)f(maps)f
+(using)h(the)g Ft(hostd)45 b Fx(\(see)35 b(Section)g(3.3.3.8)i([hostd)d
+(Selector)150 826 y(V)-8 b(ariable],)35 b(page)f(27\))g
+Ft(A)n(md)42 b Fx(map)33 b(syn)m(tax,)h(then)e(de\014ne)g(the)h(en)m
+(vironmen)m(t)h(v)-5 b(ariable)33 b Fn($DOMAIN)h Fx(or)150
+936 y(mo)s(dify)c(the)g(script.)275 1090 y(Note)39 b(that)g(automoun)m
+(t2amd)g(do)s(es)f(not)h(understand)d(the)j(syn)m(tax)f(in)g(new)m(er)h
+(Sun)d(Automoun)m(t)150 1200 y(maps,)30 b(those)h(used)f(with)g
+(autofs.)150 1462 y Fw(10.6)68 b(ctl-amd)150 1621 y Fx(A)30
+b(script)h(to)g(start,)g(stop,)g(or)f(restart)h Ft(A)n(md)p
+Fx(.)41 b(Use)31 b(it)f(as)h(follo)m(ws:)150 1810 y Fp(ctl-amd)46
+b(start)630 1920 y Fx(Start)31 b(a)f(new)g Ft(A)n(md)40
+b Fx(pro)s(cess.)150 2099 y Fp(ctl-amd)46 b(stop)630
+2208 y Fx(Stop)30 b(the)h(running)d Ft(A)n(md)p Fx(.)150
+2387 y Fp(ctl-amd)46 b(restart)630 2497 y Fx(Stop)32
+b(the)h(running)e Ft(A)n(md)42 b Fx(\(if)32 b(an)m(y\),)j(safely)e(w)m
+(ait)g(for)g(it)g(to)g(terminate,)h(and)e(then)g(start)630
+2607 y(a)f(new)f(pro)s(cess)g(|)g(only)g(if)h(the)f(previous)g(one)h
+(died)f(cleanly)-8 b(.)275 2795 y(See)30 b(Chapter)g(7)h([Run-time)f
+(Administration],)h(page)g(73,)h(for)e(more)h(details.)150
+3057 y Fw(10.7)68 b(ctl-hlfsd)150 3217 y Fx(A)28 b(script)f(for)g(con)m
+(trolling)j Ft(Hlfsd)p Fx(,)e(m)m(uc)m(h)g(the)f(same)h(w)m(a)m(y)h
+Fp(ctl-amd)c Fx(con)m(trols)k Ft(A)n(md)p Fx(.)40 b(Use)28
+b(it)g(as)g(follo)m(ws:)150 3406 y Fp(ctl-hlfsd)45 b(start)630
+3515 y Fx(Start)31 b(a)f(new)g Ft(Hlfsd)40 b Fx(pro)s(cess.)150
+3694 y Fp(ctl-hlfsd)45 b(stop)630 3804 y Fx(Stop)30 b(the)h(running)d
+Ft(Hlfsd)p Fx(.)150 3983 y Fp(ctl-hlfsd)45 b(restart)630
+4093 y Fx(Stop)37 b(the)h(running)e Ft(Hlfsd)47 b Fx(\(if)38
+b(an)m(y\),)i(w)m(ait)e(for)g(10)g(seconds)f(for)h(it)g(to)g
+(terminate,)j(and)630 4202 y(then)30 b(start)h(a)g(new)f(pro)s(cess)g
+(|)g(only)g(if)h(the)f(previous)g(one)h(died)f(cleanly)-8
+b(.)275 4391 y(See)30 b(Chapter)g(9)h([Hlfsd],)f(page)h(93,)h(for)e
+(more)h(details.)150 4653 y Fw(10.8)68 b(\014x-amd-map)150
+4812 y Fx(Am-utils)36 b(c)m(hanged)h(some)f(of)g(the)g(syn)m(tax)h(and)
+e(default)h(v)-5 b(alues)36 b(of)g(some)g(v)-5 b(ariables.)58
+b(F)-8 b(or)37 b(example,)150 4922 y(the)c(default)g(v)-5
+b(alue)33 b(for)g(`)p Fp(${os})p Fx(')e(for)i(Solaris)g(2.x)g(\(ak)-5
+b(a)34 b(SunOS)d(5.x\))i(systems)g(used)f(to)h(b)s(e)f(`)p
+Fp(sos5)p Fx(',)h(it)150 5032 y(is)d(no)m(w)h(more)f(automatically)k
+(generated)d(from)f Fp(config.guess)d Fx(and)j(its)g(v)-5
+b(alue)31 b(is)g(`)p Fp(sunos5)p Fx('.)275 5186 y(This)e(script)h(con)m
+(v)m(erts)i(older)f Ft(A)n(md)39 b Fx(maps)30 b(to)h(new)f(ones.)41
+b(Use)31 b(it)g(as)g(follo)m(ws:)390 5340 y Fp(fix-amd-map)45
+b(<)i Fk(old.map)f Fp(>)h Fk(new.map)p eop end
+%%Page: 103 105
+TeXDict begin 103 104 bop 150 -116 a Fx(Chapter)30 b(10:)41
+b(Assorted)31 b(T)-8 b(o)s(ols)2364 b(103)150 299 y Fw(10.9)68
+b(\014xmoun)l(t)150 458 y Fx(`)p Fp(fixmount)p Fx(')38
+b(is)h(a)h(v)-5 b(arian)m(t)41 b(of)f Fn(sho)m(wmoun)m(t)p
+Fx(\(8\))g(that)g(can)g(delete)h(b)s(ogus)e(moun)m(t)g(en)m(tries)i(in)
+e(remote)150 568 y Fn(moun)m(td)p Fx(\(8\))32 b(daemons.)43
+b(This)31 b(is)g(useful)f(to)i(clean)m(up)g(otherwise)g(ev)m(er-accum)m
+(ulating)i(\\junk".)43 b(Use)31 b(it)150 677 y(for)f(example:)390
+811 y Fp(fixmount)46 b(-r)h Fk(host)275 945 y Fx(See)30
+b(the)h(online)f(man)m(ual)h(page)g(for)f(`)p Fp(fixmount)p
+Fx(')f(for)h(more)h(details)g(of)g(its)f(usage.)150 1175
+y Fw(10.10)69 b(\014xrm)l(tab)150 1335 y Fx(A)26 b(script)g(to)g(in)m
+(v)-5 b(alidate)28 b Fp(/etc/rmtab)23 b Fx(en)m(tries)j(for)g(hosts)g
+(named.)38 b(Also)27 b(restart)f(moun)m(td)f(for)h(c)m(hanges)150
+1444 y(to)31 b(tak)m(e)h(e\013ect.)42 b(Use)31 b(it)g(for)f(example:)
+390 1578 y Fp(fixrmtab)46 b Fk(host1)g(host2)g(...)150
+1808 y Fw(10.11)69 b(lostaltmail)150 1968 y Fx(A)34 b(script)g(used)f
+(with)g Ft(Hlfsd)44 b Fx(to)35 b(resend)e(an)m(y)h(\\lost")h(mail.)52
+b Ft(Hlfsd)44 b Fx(redirects)34 b(mail)g(whic)m(h)g(cannot)h(b)s(e)150
+2077 y(written)d(in)m(to)g(the)g(user's)e(home)i(directory)g(to)g(an)g
+(alternate)h(directory)-8 b(.)45 b(This)30 b(is)i(useful)e(to)j(con)m
+(tin)m(ue)150 2187 y(deliv)m(ering)g(mail,)f(ev)m(en)h(if)e(the)h
+(user's)f(\014le)h(system)f(w)m(as)h(una)m(v)-5 b(ailable,)34
+b(full,)e(or)f(o)m(v)m(er)i(quota.)45 b(But,)33 b(the)150
+2297 y(mail)24 b(whic)m(h)f(gets)i(deliv)m(ered)f(to)g(the)f(alternate)
+i(directory)f(needs)f(to)h(b)s(e)f(resen)m(t)h(to)g(its)g(resp)s(ectiv)
+m(e)h(users.)150 2406 y(This)30 b(is)g(what)g(the)h(`)p
+Fp(lostaltmail)p Fx(')d(script)i(do)s(es.)275 2540 y(Use)g(it)h(as)g
+(follo)m(ws:)390 2673 y Fp(lostaltmail)275 2807 y Fx(This)f(script)h
+(needs)g(a)g(con\014guration)h(\014le)f(`)p Fp(lostaltmail.conf)p
+Fx(')c(set)32 b(up)e(with)h(the)g(righ)m(t)h(param-)150
+2916 y(eters)f(to)g(prop)s(erly)e(w)m(ork.)41 b(See)31
+b(Chapter)e(9)i([Hlfsd],)g(page)g(93,)g(for)g(more)f(details.)150
+3147 y Fw(10.12)69 b(lostaltmail.conf-sample)150 3306
+y Fx(This)30 b(is)h(a)h(text)g(\014le)f(with)g(con\014guration)h
+(parameters)f(needed)g(for)g(the)g(`)p Fp(lostaltmail)p
+Fx(')e(script.)42 b(The)150 3416 y(script)d(includes)f(commen)m(ts)i
+(explaining)f(eac)m(h)h(of)f(the)g(con\014guration)g(v)-5
+b(ariables.)66 b(See)39 b(it)g(for)g(more)150 3526 y(information.)i
+(Also)31 b(see)g(Chapter)f(9)h([Hlfsd],)f(page)h(93)h(for)e(general)h
+(information.)150 3756 y Fw(10.13)69 b(mk-amd-map)150
+3916 y Fx(This)26 b(program)h(con)m(v)m(erts)h(a)g(normal)f
+Ft(A)n(md)36 b Fx(map)27 b(\014le)g(in)m(to)h(an)f(ndbm)e(database)j
+(with)e(the)i(same)f(pre\014x)150 4025 y(as)k(the)f(named)g(\014le.)41
+b(Use)31 b(it)g(as)f(follo)m(ws:)390 4159 y Fp(mk-amd-map)45
+b Fk(mapname)150 4389 y Fw(10.14)69 b(pa)l(wd)150 4549
+y Ft(Pawd)43 b Fx(is)33 b(used)f(to)h(prin)m(t)f(the)h(curren)m(t)g(w)m
+(orking)g(directory)-8 b(,)34 b(adjusted)e(to)i(re\015ect)f(prop)s(er)e
+(paths)h(that)150 4658 y(can)e(b)s(e)g(reused)f(to)i(go)g(through)f
+(the)g(automoun)m(ter)h(for)f(the)g(shortest)h(p)s(ossible)f(path.)40
+b(In)29 b(particular,)150 4768 y(the)37 b(path)f(prin)m(ted)g(bac)m(k)h
+(do)s(es)f(not)h(include)f(an)m(y)h(of)g Ft(A)n(md)9
+b Fx('s)37 b(lo)s(cal)g(moun)m(t)g(p)s(oin)m(ts.)59 b(Using)36
+b(them)h(is)150 4878 y(unsafe,)29 b(b)s(ecause)f Ft(A)n(md)39
+b Fx(ma)m(y)29 b(unmoun)m(t)f(managed)h(\014le)g(systems)f(from)g(the)h
+(moun)m(t)g(p)s(oin)m(ts,)g(and)f(th)m(us)150 4987 y(including)i(them)g
+(in)g(paths)g(ma)m(y)h(not)g(alw)m(a)m(ys)h(\014nd)d(the)h(\014les)h
+(within.)275 5121 y(Without)43 b(an)m(y)g(argumen)m(ts,)k
+Ft(Pawd)53 b Fx(will)43 b(prin)m(t)f(the)h(automoun)m(ter)h(adjusted)e
+(curren)m(t)h(w)m(orking)150 5230 y(directory)-8 b(.)41
+b(With)27 b(an)m(y)g(n)m(um)m(b)s(er)f(of)h(argumen)m(ts,)h(it)g(will)f
+(prin)m(t)g(the)g(adjusted)f(path)h(of)g(eac)m(h)h(one)g(of)f(the)150
+5340 y(argumen)m(ts.)p eop end
+%%Page: 104 106
+TeXDict begin 104 105 bop 150 -116 a Fx(104)1810 b(Am-utils)30
+b(\(4.4BSD)j(Automoun)m(ter)d(Utilities\))150 299 y Fw(10.15)69
+b(redhat-ctl-amd)150 458 y Fx(This)33 b(script)g(is)h(similar)g(to)g
+Ft(ctl-amd)44 b Fx(\(see)35 b(Section)f(10.6)h([ctl-amd],)i(page)d
+(102\))h(but)e(is)h(in)m(tended)f(for)150 568 y(Red)c(Hat)h(Lin)m(ux)f
+(systems.)41 b(Y)-8 b(ou)29 b(can)h(safely)g(cop)m(y)g
+Ft(r)-5 b(e)g(dhat-ctl-amd)42 b Fx(on)m(to)30 b Fp
+(/etc/rc.d/init.d/amd)p Fx(.)150 677 y(The)22 b(script)h(supplied)f(b)m
+(y)h Ft(A)n(m-utils)30 b Fx(is)22 b(usually)h(b)s(etter)g(than)g(the)g
+(one)g(pro)m(vided)g(b)m(y)g(Red)f(Hat,)k(b)s(ecause)150
+787 y(the)32 b(Red)g(Hat)g(script)g(do)s(es)f(not)h(correctly)i(kill)e
+Ft(A)n(md)41 b Fx(pro)s(cesses:)i(it)33 b(is)f(to)s(o)g(quic)m(k)g(to)h
+(kill)f(the)g(wrong)150 897 y(pro)s(cesses,)e(lea)m(ving)j(stale)e(or)g
+(h)m(ung)e(moun)m(t)i(p)s(oin)m(ts)f(b)s(ehind.)150 1137
+y Fw(10.16)69 b(w)l(ait4amd)150 1296 y Fx(A)44 b(script)g(to)h(w)m(ait)
+g(for)e Ft(A)n(md)54 b Fx(to)44 b(start)h(on)f(a)g(particular)g(host)g
+(b)s(efore)g(p)s(erforming)e(an)i(arbitrary)150 1406
+y(command.)i(The)32 b(command)g(is)g(executed)h(rep)s(eatedly)-8
+b(,)34 b(with)e(1)g(second)g(in)m(terv)-5 b(als)34 b(in)e(b)s(et)m(w)m
+(een.)46 b(Y)-8 b(ou)150 1515 y(ma)m(y)32 b(in)m(terrupt)f(the)g
+(script)h(using)e(`)p Fp(^C)p Fx(')i(\(or)f(whatev)m(er)h(k)m(eyb)s
+(oard)g(sequence)f(y)m(our)h(terminal's)g(`)p Fp(intr)p
+Fx(')150 1625 y(function)e(is)g(b)s(ound)f(to\).)275
+1764 y(Examples:)150 1931 y Fp(wait4amd)46 b(saturn)g(amq)h(-p)g(-h)g
+(saturn)630 2041 y Fx(When)30 b Ft(A)n(md)40 b Fx(is)30
+b(up)g(on)g(host)g(`)p Fp(saturn)p Fx(',)g(get)h(the)g(pro)s(cess)f(ID)
+g(of)h(that)g(running)e Ft(A)n(md)p Fx(.)150 2205 y Fp(wait4amd)46
+b(pluto)g(rlogin)g(pluto)630 2315 y Fx(Remote)41 b(login)f(to)g(host)g
+(`)p Fp(pluto)p Fx(')f(when)f Ft(A)n(md)49 b Fx(is)40
+b(up)e(on)i(that)g(host.)68 b(It)40 b(is)g(generally)630
+2424 y(necessary)h(to)g(w)m(ait)h(for)e Ft(A)n(md)50
+b Fx(to)41 b(prop)s(erly)e(start)i(and)f(initialize)i(on)f(a)f(remote)i
+(host)630 2534 y(b)s(efore)f(logging)i(in)d(to)i(it,)j(b)s(ecause)c
+(otherwise)h(user)e(home)h(directories)h(ma)m(y)g(not)g(b)s(e)630
+2643 y(accessible)32 b(across)f(the)g(net)m(w)m(ork.)150
+2808 y Fp(wait4amd)46 b(pluto)630 2917 y Fx(A)37 b(short-hand)f(v)m
+(ersion)i(of)f(the)g(previous)g(command,)h(since)g(the)f(most)g(useful)
+g(reason)630 3027 y(for)30 b(this)g(script)g(is)g(to)h(login)g(to)f(a)h
+(remote)g(host.)40 b(I)30 b(use)g(it)h(v)m(ery)f(often)g(when)g
+(testing)h(out)630 3137 y(new)f(v)m(ersions)h(of)f Ft(A)n(md)p
+Fx(,)h(and)e(need)i(to)g(reb)s(o)s(ot)f(h)m(ung)g(hosts.)150
+3377 y Fw(10.17)69 b(w)l(ait4amd2die)150 3536 y Fx(This)30
+b(script)h(is)g(used)f(in)m(ternally)i(b)m(y)e(`)p Fp(ctl-amd)p
+Fx(')g(when)f(used)h(to)i(restart)f Ft(A)n(md)p Fx(.)43
+b(It)31 b(w)m(aits)g(for)g Ft(A)n(md)40 b Fx(to)150 3645
+y(terminate.)g(If)25 b(it)h(detected)g(that)g Ft(A)n(md)35
+b Fx(terminated)26 b(cleanly)-8 b(,)28 b(this)d(script)g(will)h(return)
+e(an)i(exist)g(status)150 3755 y(of)31 b(zero.)41 b(Otherwise,)30
+b(it)h(will)g(return)e(a)i(non-zero)g(exit)g(status.)275
+3895 y(The)k(script)i(tests)g(for)f Ft(A)n(md)9 b Fx('s)36
+b(existence)i(once)f(ev)m(ery)g(5)g(seconds,)h(six)e(times,)j(for)d(a)h
+(total)h(of)e(30)150 4004 y(seconds.)41 b(It)30 b(will)h(return)e(a)i
+(zero)g(exist)g(status)g(as)g(so)s(on)f(as)g(it)h(detects)h(that)f
+Ft(A)n(md)39 b Fx(dies.)150 4244 y Fw(10.18)69 b(wire-test)150
+4403 y Fx(A)26 b(simple)g(program)g(to)g(test)h(if)f(some)g(of)h(the)f
+(most)g(basic)g(net)m(w)m(orking)h(functions)f(in)f(am-util's)i
+(library)150 4513 y Fp(libamu)32 b Fx(w)m(ork.)51 b(It)34
+b(also)h(tests)f(the)g(com)m(bination)h(of)f(NFS)g(proto)s(col)g(and)g
+(v)m(ersion)g(n)m(um)m(b)s(er)e(that)j(are)150 4623 y(supp)s(orted)29
+b(from)g(the)i(curren)m(t)f(host,)h(to)g(a)g(remote)g(one.)275
+4762 y(F)-8 b(or)32 b(example,)h(in)e(this)h(test)g(a)g(mac)m(hine)h
+(whic)m(h)e(only)h(supp)s(orts)e(NFS)h(V)-8 b(ersion)33
+b(2)f(is)f(con)m(tacting)k(a)150 4872 y(remote)e(host)f(that)h(can)g
+(supp)s(ort)d(the)i(same)h(v)m(ersion,)g(but)f(using)f(b)s(oth)h(UDP)h
+(and)e(TCP)-8 b(.)32 b(If)g(no)g(host)150 4981 y(name)e(is)h(sp)s
+(eci\014ed,)f(`)p Fp(wire-test)p Fx(')e(will)j(try)f
+Fp(localhost)p Fx(.)390 5121 y Fp($)47 b(wire-test)f(moisil)390
+5230 y(Network)g(name)g(is)i("mcl-lab-net.cs.columbi)o(a.ed)o(u")390
+5340 y(Network)e(number)g(is)h("128.59.13")p eop end
+%%Page: 105 107
+TeXDict begin 105 106 bop 150 -116 a Fx(Chapter)30 b(10:)41
+b(Assorted)31 b(T)-8 b(o)s(ols)2364 b(105)390 299 y Fp(Network)46
+b(name)g(is)i("old-net.cs.columbia.ed)o(u")390 408 y(Network)e(number)g
+(is)h("128.59.16")390 518 y(My)g(IP)g(address)f(is)h(0x7f000001.)390
+628 y(NFS)g(Version)f(and)h(protocol)e(tests)i(to)g(host)f("moisil"...)
+772 737 y(testing)g(vers=2,)f(proto="udp")g(->)i(found)g(version)f(2.)
+772 847 y(testing)g(vers=3,)f(proto="udp")g(->)i(failed!)772
+956 y(testing)f(vers=2,)f(proto="tcp")g(->)i(found)g(version)f(2.)772
+1066 y(testing)g(vers=3,)f(proto="tcp")g(->)i(failed!)p
+eop end
+%%Page: 106 108
+TeXDict begin 106 107 bop eop end
+%%Page: 107 109
+TeXDict begin 107 108 bop 150 -116 a Fx(Chapter)30 b(11:)41
+b(Examples)2571 b(107)150 299 y Fu(11)80 b(Examples)150
+617 y Fw(11.1)68 b(User)46 b(Filesystems)150 776 y Fx(With)e(more)f
+(than)g(one)h(\014leserv)m(er,)j(the)d(directories)g(most)g(frequen)m
+(tly)f(cross-moun)m(ted)h(are)f(those)150 886 y(con)m(taining)g(user)e
+(home)h(directories.)75 b(A)42 b(common)g(con)m(v)m(en)m(tion)i(used)d
+(at)h(Imp)s(erial)f(College)j(is)d(to)150 995 y(moun)m(t)30
+b(the)h(user)f(disks)f(under)g Fp(/home/)p Ft(machine)p
+Fx(.)275 1127 y(T)m(ypically)-8 b(,)32 b(the)e(`)p Fp(/etc/fstab)p
+Fx(')e(\014le)j(con)m(tained)g(a)g(long)g(list)g(of)g(en)m(tries)g(suc)
+m(h)f(as:)390 1260 y Fk(machine)p Fp(:/home/)p Fk(machine)42
+b Fp(/home/)p Fk(machine)i Fp(nfs)j(...)275 1392 y Fx(for)30
+b(eac)m(h)h(\014leserv)m(er)g(on)f(the)h(net)m(w)m(ork.)275
+1524 y(There)e(are)i(n)m(umerous)e(problems)h(with)g(this)g(system.)41
+b(The)30 b(moun)m(t)g(list)h(can)f(b)s(ecome)h(quite)g(large)150
+1633 y(and)i(some)h(of)g(the)g(mac)m(hines)h(ma)m(y)f(b)s(e)f(do)m(wn)g
+(when)g(a)h(system)g(is)g(b)s(o)s(oted.)51 b(When)33
+b(a)h(new)g(\014leserv)m(er)150 1743 y(is)c(installed,)g(`)p
+Fp(/etc/fstab)p Fx(')e(m)m(ust)h(b)s(e)g(up)s(dated)g(on)g(ev)m(ery)i
+(mac)m(hine,)f(the)g(moun)m(t)g(directory)g(created)150
+1853 y(and)g(the)g(\014lesystem)h(moun)m(ted.)275 1985
+y(In)f(man)m(y)i(en)m(vironmen)m(ts)g(most)g(p)s(eople)g(use)f(the)h
+(same)g(few)g(w)m(orkstations,)h(but)e(it)h(is)g(con)m(v)m(enien)m(t)
+150 2094 y(to)g(go)g(to)g(a)g(colleague's)i(mac)m(hine)e(and)f(access)h
+(y)m(our)f(o)m(wn)h(\014les.)43 b(When)31 b(a)h(serv)m(er)g(go)s(es)f
+(do)m(wn,)h(it)g(can)150 2204 y(cause)38 b(a)g(pro)s(cess)f(on)g(a)h
+(clien)m(t)h(mac)m(hine)f(to)g(hang.)62 b(By)38 b(minimizing)g(the)f
+(moun)m(ted)h(\014lesystems)f(to)150 2313 y(only)25 b(include)f(those)i
+(activ)m(ely)h(b)s(eing)d(used,)i(there)f(is)f(less)h(c)m(hance)h(that)
+g(a)f(\014lesystem)g(will)g(b)s(e)f(moun)m(ted)150 2423
+y(when)29 b(a)i(serv)m(er)g(go)s(es)g(do)m(wn.)275 2555
+y(The)d(follo)m(wing)j(is)f(a)g(short)f(extract)i(from)e(a)h(map)f(tak)
+m(en)h(from)f(a)h(researc)m(h)g(\014leserv)m(er)g(at)g(Imp)s(erial)150
+2665 y(College.)275 2797 y(Note)h(the)e(en)m(try)h(for)g(`)p
+Fp(localhost)p Fx(')d(whic)m(h)j(is)f(used)g(for)h(users)e(suc)m(h)i
+(as)g(the)f(op)s(erator)h(\(`)p Fp(opr)p Fx('\))g(who)150
+2906 y(ha)m(v)m(e)i(a)e(home)h(directory)g(on)f(most)h(mac)m(hine)g(as)
+f(`)p Fp(/home/localhost/opr)p Fx('.)390 3039 y Fp(/defaults)332
+b(opts:=rw,intr,grpid,nos)o(uid)390 3148 y(charm)524
+b(host!=${key};type:=nfs;)o(rhos)o(t:=)o(${ke)o(y};r)o(fs:)o(=/ho)o
+(me/$)o({ke)o(y})42 b(\\)1154 3258 y(host==${key};type:=ufs;)o(dev:)o
+(=/d)o(ev/x)o(d0g)390 3367 y(#)390 3477 y(...)390 3696
+y(#)390 3806 y(localhost)332 b(type:=link;fs:=${host})390
+3915 y(...)390 4025 y(#)390 4134 y(#)47 b(dylan)g(has)g(two)g(user)f
+(disks)h(so)g(have)f(a)390 4244 y(#)h(top)g(directory)f(in)h(which)f
+(to)h(mount)g(them.)390 4354 y(#)390 4463 y(dylan)524
+b(type:=auto;fs:=${map};p)o(ref:)o(=${)o(key})o(/)390
+4573 y(#)390 4682 y(dylan/dk2)332 b(host!=dylan;type:=nfs;r)o(host)o
+(:=d)o(ylan)o(;rfs)o(:=/)o(home)o(/${k)o(ey})41 b(\\)1154
+4792 y(host==dylan;type:=ufs;d)o(ev:=)o(/de)o(v/ds)o(k/2s)o(0)390
+4902 y(#)390 5011 y(dylan/dk5)332 b(host!=dylan;type:=nfs;r)o(host)o
+(:=d)o(ylan)o(;rfs)o(:=/)o(home)o(/${k)o(ey})41 b(\\)1154
+5121 y(host==dylan;type:=ufs;d)o(ev:=)o(/de)o(v/ds)o(k/5s)o(0)390
+5230 y(...)390 5340 y(#)p eop end
+%%Page: 108 110
+TeXDict begin 108 109 bop 150 -116 a Fx(108)1810 b(Am-utils)30
+b(\(4.4BSD)j(Automoun)m(ter)d(Utilities\))390 299 y Fp(toytown)428
+b(host!=${key};type:=nfs;)o(rhos)o(t:=)o(${ke)o(y};r)o(fs:)o(=/ho)o
+(me/$)o({ke)o(y})42 b(\\)1154 408 y(host==${key};type:=ufs;)o(dev:)o
+(=/d)o(ev/x)o(y1g)390 518 y(...)390 628 y(#)390 737 y(zebedee)428
+b(host!=${key};type:=nfs;)o(rhos)o(t:=)o(${ke)o(y};r)o(fs:)o(=/ho)o
+(me/$)o({ke)o(y})42 b(\\)1154 847 y(host==${key};type:=ufs;)o(dev:)o
+(=/d)o(ev/d)o(sk/1)o(s0)390 956 y(#)390 1066 y(#)47 b(Just)g(for)g
+(access...)390 1176 y(#)390 1285 y(gould)524 b(type:=auto;fs:=${map};p)
+o(ref:)o(=${)o(key})o(/)390 1395 y(gould/staff)236 b
+(host!=gould;type:=nfs;r)o(host)o(:=g)o(ould)o(;rfs)o(:=/)o(home)o
+(/${k)o(ey})390 1504 y(#)390 1614 y(gummo)524 b
+(host!=${key};type:=nfs;)o(rhos)o(t:=)o(${ke)o(y};r)o(fs:)o(=/ho)o
+(me/$)o({ke)o(y})390 1724 y(...)275 1859 y Fx(This)31
+b(map)h(is)h(shared)e(b)m(y)i(most)f(of)h(the)g(mac)m(hines)f(listed)h
+(so)g(on)f(those)h(systems)g(an)m(y)f(of)h(the)g(user)150
+1969 y(disks)d(is)g(accessible)i(via)f(a)g(consisten)m(t)h(name.)41
+b Ft(A)n(md)e Fx(is)31 b(started)g(with)f(the)g(follo)m(wing)i(command)
+390 2105 y Fp(amd)47 b(/home)f(amd.home)275 2241 y Fx(Note)36
+b(that)f(when)f(moun)m(ting)h(a)h(remote)f(\014lesystem,)i(the)e
+Fo(automoun)m(ted)k Fx(moun)m(t)c(p)s(oin)m(t)g(is)g(refer-)150
+2351 y(enced,)25 b(so)f(that)h(the)f(\014lesystem)g(will)g(b)s(e)f
+(moun)m(ted)h(if)f(it)i(is)e(not)h(y)m(et)h(\(at)g(the)f(time)h(the)e
+(remote)i(`)p Fp(mountd)p Fx(')150 2460 y(obtains)31
+b(the)f(\014le)h(handle\).)150 2695 y Fw(11.2)68 b(Home)46
+b(Directories)150 2854 y Fx(One)41 b(con)m(v)m(en)m(tion)j(for)d(home)h
+(directories)g(is)g(to)g(lo)s(cate)i(them)d(in)h(`)p
+Fp(/homes)p Fx(')e(so)i(user)f(`)p Fp(jsp)p Fx(''s)g(home)150
+2964 y(directory)f(is)g(`)p Fp(/homes/jsp)p Fx('.)68
+b(With)40 b(more)g(than)g(a)g(single)h(\014leserv)m(er)f(it)h(is)f(con)
+m(v)m(enien)m(t)i(to)f(spread)150 3073 y(user)28 b(\014les)g(across)h
+(sev)m(eral)g(mac)m(hines.)41 b(All)29 b(that)g(is)f(required)g(is)g(a)
+h(moun)m(t-map)f(whic)m(h)g(con)m(v)m(erts)i(login)150
+3183 y(names)g(to)h(an)g(automoun)m(ted)g(directory)-8
+b(.)275 3319 y(Suc)m(h)29 b(a)i(map)f(migh)m(t)h(b)s(e)f(started)h(b)m
+(y)f(the)h(command:)390 3455 y Fp(amd)47 b(/homes)f(amd.homes)275
+3591 y Fx(where)29 b(the)i(map)f(`)p Fp(amd.homes)p Fx(')e(con)m
+(tained)k(the)f(en)m(tries:)390 3727 y Fp(/defaults)141
+b(type:=link)f(#)48 b(All)f(the)f(entries)g(are)h(of)g(type:=link)390
+3836 y(jsp)429 b(fs:=/home/charm/jsp)390 3946 y(njw)g
+(fs:=/home/dylan/dk5/njw)390 4055 y(...)390 4165 y(phjk)381
+b(fs:=/home/toytown/ai/ph)o(jk)390 4275 y(sjv)429 b
+(fs:=/home/ganymede/sjv)275 4411 y Fx(Whenev)m(er)32
+b(a)g(login)h(name)f(is)f(accessed)i(in)f(`)p Fp(/homes)p
+Fx(')e(a)i(sym)m(b)s(olic)h(link)e(app)s(ears)g(p)s(oin)m(ting)h(to)h
+(the)150 4520 y(real)38 b(lo)s(cation)h(of)f(that)f(user's)g(home)h
+(directory)-8 b(.)62 b(In)37 b(this)g(example,)j(`)p
+Fp(/homes/jsp)p Fx(')35 b(w)m(ould)j(app)s(ear)150 4630
+y(to)32 b(b)s(e)e(a)i(sym)m(b)s(olic)f(link)g(p)s(oin)m(ting)h(to)g(`)p
+Fp(/home/charm/jsp)p Fx('.)39 b(Of)31 b(course,)g(`)p
+Fp(/home)p Fx(')g(w)m(ould)f(also)j(b)s(e)d(an)150 4739
+y(automoun)m(t)h(p)s(oin)m(t.)275 4875 y(This)d(system)h(causes)g(an)g
+(extra)g(lev)m(el)i(of)e(sym)m(b)s(olic)g(links)f(to)i(b)s(e)e(used.)40
+b(Although)29 b(that)g(turns)f(out)150 4985 y(to)k(b)s(e)f(relativ)m
+(ely)j(inexp)s(ensiv)m(e,)e(an)g(alternativ)m(e)h(is)f(to)g(directly)h
+(moun)m(t)e(the)h(required)f(\014lesystems)g(in)150 5094
+y(the)25 b(`)p Fp(/homes)p Fx(')e(map.)38 b(The)24 b(required)g(map)g
+(is)g(simple,)i(but)d(long,)k(and)d(its)g(creation)i(is)f(b)s(est)f
+(automated.)150 5204 y(The)30 b(en)m(try)g(for)h(`)p
+Fp(jsp)p Fx(')f(could)g(b)s(e:)390 5340 y Fp(jsp)142
+b(-sublink:=${key};rfs:=/hom)o(e/c)o(harm)41 b(\\)p eop
+end
+%%Page: 109 111
+TeXDict begin 109 110 bop 150 -116 a Fx(Chapter)30 b(11:)41
+b(Examples)2571 b(109)1106 299 y Fp(host==charm;type:=ufs;de)o(v:=/)o
+(dev)o(/xd0)o(g)42 b(\\)1106 408 y(host!=charm;type:=nfs;rh)o(ost:)o
+(=ch)o(arm)275 544 y Fx(This)32 b(map)h(can)h(b)s(ecome)g(quite)g(big)f
+(if)h(it)g(con)m(tains)h(a)e(large)i(n)m(um)m(b)s(er)d(of)i(en)m
+(tries.)51 b(By)33 b(com)m(bining)150 654 y(t)m(w)m(o)f(other)e
+(features)h(of)g Ft(A)n(md)39 b Fx(it)31 b(can)g(b)s(e)f(greatly)h
+(simpli\014ed.)275 790 y(First)i(the)f(UFS)h(partitions)g(should)f(b)s
+(e)g(moun)m(ted)h(under)e(the)i(con)m(trol)h(of)f(`)p
+Fp(/etc/fstab)p Fx(',)e(taking)150 900 y(care)d(that)g(they)f(are)h
+(moun)m(ted)f(in)g(the)g(same)g(place)i(that)e Ft(A)n(md)37
+b Fx(w)m(ould)27 b(ha)m(v)m(e)h(automoun)m(ted)g(them.)40
+b(In)150 1009 y(most)c(cases)h(this)f(w)m(ould)g(b)s(e)f(something)h
+(lik)m(e)h(`)p Fp(/a/)p Fk(host)p Fp(/home/)p Fk(host)p
+Fx(')32 b(and)j(`)p Fp(/etc/fstab)p Fx(')f(on)i(host)150
+1119 y(`)p Fp(charm)p Fx(')29 b(w)m(ould)i(ha)m(v)m(e)g(a)g(line:)390
+1255 y Fp(/dev/xy0g)45 b(/a/charm/home/charm)e(4.2)k(rw,nosuid,grpid)c
+(1)48 b(5)275 1391 y Fx(The)29 b(map)h(can)h(then)f(b)s(e)g(c)m(hanged)
+h(to:)390 1527 y Fp(/defaults)188 b(type:=nfs;sublink:=${key};)o(opts)o
+(:=r)o(w,in)o(tr,n)o(osu)o(id,g)o(rpid)390 1636 y(jsp)476
+b(rhost:=charm;rfs:=/home/ch)o(arm)390 1746 y(njw)g
+(rhost:=dylan;rfs:=/home/dy)o(lan/)o(dk5)390 1855 y(...)390
+1965 y(phjk)428 b(rhost:=toytown;rfs:=/home/)o(toyt)o(own)o(;sub)o
+(link)o(:=a)o(i/${)o(key})390 2074 y(sjv)476 b
+(rhost:=ganymede;rfs:=/home)o(/gan)o(yme)o(de)275 2210
+y Fx(This)31 b(map)i(op)s(erates)g(as)g(usual)f(on)g(a)h(remote)h(mac)m
+(hine)f(\()p Ft(ie)40 b Fp(${host})30 b Fx(not)j(equal)g(to)h
+Fp(${rhost})p Fx(\).)150 2320 y(On)e(the)h(mac)m(hine)h(where)e(the)h
+(\014lesystem)h(is)f(stored)g(\()p Ft(ie)39 b Fp(${host})31
+b Fx(equal)j(to)f Fp(${rhost})p Fx(\),)f Ft(A)n(md)43
+b Fx(will)150 2430 y(construct)i(a)g(lo)s(cal)g(\014lesystem)g(moun)m
+(t)f(p)s(oin)m(t)h(whic)m(h)f(corresp)s(onds)f(to)i(the)g(name)f(of)h
+(the)f(lo)s(cally)150 2539 y(moun)m(ted)33 b(UFS)h(partition.)50
+b(If)33 b Ft(A)n(md)43 b Fx(is)33 b(started)h(with)f(the)h
+Fp(-r)e Fx(option)i(then)f(instead)h(of)g(attempting)150
+2649 y(an)42 b(NFS)g(moun)m(t,)k Ft(A)n(md)52 b Fx(will)42
+b(simply)g(inherit)g(the)h(UFS)f(moun)m(t)g(\(see)i(Section)f(5.25)h
+([Inheritance)150 2758 y(Filesystem],)39 b(page)d(56\).)58
+b(If)36 b Fp(-r)f Fx(is)g(not)h(used)f(then)h(a)g(lo)s(opbac)m(k)g(NFS)
+g(moun)m(t)g(will)g(b)s(e)f(made.)57 b(This)150 2868
+y(t)m(yp)s(e)31 b(of)f(moun)m(t)g(is)h(kno)m(wn)f(to)h(cause)g(a)g
+(deadlo)s(c)m(k)g(on)f(man)m(y)h(systems.)150 3103 y
+Fw(11.3)68 b(Arc)l(hitecture)46 b(Sharing)150 3262 y
+Fx(Often)41 b(a)g(\014lesystem)h(will)f(b)s(e)g(shared)f(b)m(y)h(mac)m
+(hines)h(of)f(di\013eren)m(t)h(arc)m(hitectures.)75 b(Separate)41
+b(trees)150 3372 y(can)g(b)s(e)f(main)m(tained)i(for)f(the)g
+(executable)h(images)g(for)e(eac)m(h)i(arc)m(hitecture,)k(but)40
+b(it)h(ma)m(y)h(b)s(e)e(more)150 3481 y(con)m(v)m(enien)m(t)32
+b(to)g(ha)m(v)m(e)f(a)g(shared)f(tree,)h(with)f(distinct)h(sub)s
+(directories.)275 3617 y(A)k(shared)f(tree)i(migh)m(t)f(ha)m(v)m(e)i
+(the)e(follo)m(wing)h(structure)f(on)g(the)g(\014leserv)m(er)g
+(\(called)i(`)p Fp(fserver)p Fx(')c(in)150 3727 y(the)e(example\):)390
+3863 y Fp(local/tex)390 3972 y(local/tex/fonts)390 4082
+y(local/tex/lib)390 4191 y(local/tex/bin)390 4301 y(local/tex/bin/sun3)
+390 4411 y(local/tex/bin/sun4)390 4520 y(local/tex/bin/hp9000)390
+4630 y(...)275 4766 y Fx(In)d(this)h(example,)h(the)f(sub)s
+(directories)g(of)g(`)p Fp(local/tex/bin)p Fx(')d(should)i(b)s(e)g
+(hidden)g(when)g(accessed)150 4875 y(via)34 b(the)g(automoun)m(t)h(p)s
+(oin)m(t)f(\(con)m(v)m(en)m(tionally)j(`)p Fp(/vol)p
+Fx('\).)51 b(A)34 b(moun)m(t-map)g(for)f(`)p Fp(/vol)p
+Fx(')g(to)i(ac)m(hiev)m(e)h(this)150 4985 y(w)m(ould)30
+b(lo)s(ok)h(lik)m(e:)390 5121 y Fp(/defaults)141 b
+(sublink:=${/key};rhost:)o(=fse)o(rver)o(;ty)o(pe:=)o(link)390
+5230 y(tex)429 b(type:=auto;fs:=${map};p)o(ref:)o(=${k)o(ey})o(/)390
+5340 y(tex/fonts)141 b(host!=fserver;type:=nfs)o(;rfs)o(:=/v)o(ol/)o
+(tex)41 b(\\)p eop end
+%%Page: 110 112
+TeXDict begin 110 111 bop 150 -116 a Fx(110)1810 b(Am-utils)30
+b(\(4.4BSD)j(Automoun)m(ter)d(Utilities\))963 299 y Fp
+(host==fserver;fs:=/usr/)o(loca)o(l/te)o(x)390 408 y(tex/lib)237
+b(host!=fserver;type:=nfs)o(;rfs)o(:=/v)o(ol/)o(tex)41
+b(\\)963 518 y(host==fserver;fs:=/usr/)o(loca)o(l/te)o(x)390
+628 y(tex/bin)237 b(-sublink:=${/key}/${arc)o(h})42 b(\\)963
+737 y(host!=fserver;type:=nfs)o(;rfs)o(:=/v)o(ol/)o(tex)f(\\)963
+847 y(host:=fserver;fs:=/usr/)o(loca)o(l/te)o(x)275 991
+y Fx(When)34 b(`)p Fp(/vol/tex/bin)p Fx(')e(is)j(referenced,)h(the)f
+(curren)m(t)g(mac)m(hine)h(arc)m(hitecture)g(is)f(automatically)150
+1100 y(app)s(ended)48 b(to)i(the)f(path)g(b)m(y)g(the)h
+Fp(${sublink})d Fx(v)-5 b(ariable.)98 b(This)48 b(means)i(that)g(users)
+e(can)i(ha)m(v)m(e)150 1210 y(`)p Fp(/vol/tex/bin)p Fx(')28
+b(in)i(their)g(`)p Fp(PATH)p Fx(')g(without)g(concern)h(for)f(arc)m
+(hitecture)i(dep)s(endencies.)150 1457 y Fw(11.4)68 b(Wildcard)45
+b(Names)h(&)f(Replicated)h(Serv)l(ers)150 1616 y Fx(By)22
+b(using)g(the)g(wildcard)g(facilit)m(y)-8 b(,)26 b Ft(A)n(md)31
+b Fx(can)23 b Fo(o)m(v)m(erla)m(y)32 b Fx(an)22 b(existing)h(directory)
+f(with)g(additional)h(en)m(tries.)150 1726 y(The)30 b(system)i(\014les)
+e(are)i(usually)e(moun)m(ted)h(under)f(`)p Fp(/usr)p
+Fx('.)41 b(If)31 b(instead,)g Ft(A)n(md)41 b Fx(is)31
+b(moun)m(ted)g(on)f(`)p Fp(/usr)p Fx(',)150 1835 y(additional)h(names)f
+(can)g(b)s(e)f(o)m(v)m(erla)m(y)m(ed)k(to)e(augmen)m(t)g(or)f(replace)h
+(names)f(in)f(the)i(\\master")g(`)p Fp(/usr)p Fx('.)40
+b(A)150 1945 y(map)30 b(to)h(do)f(this)h(w)m(ould)f(ha)m(v)m(e)h(the)g
+(form:)390 2089 y Fp(local)94 b(type:=auto;fs:=local-map)390
+2198 y(share)g(type:=auto;fs:=share-map)390 2308 y(*)286
+b(-type:=nfs;rfs:=/export/e)o(xec)o(/${a)o(rch})o(;su)o(blin)o(k:=")o
+(${k)o(ey}")41 b(\\)772 2418 y(rhost:=fserv1)92 b(rhost:=fserv2)g
+(rhost:=fserv3)275 2562 y Fx(Note)43 b(that)f(the)g(assignmen)m(t)g(to)
+h Fp(${sublink})c Fx(is)j(surrounded)d(b)m(y)i(double)h(quotes)g(to)g
+(prev)m(en)m(t)150 2671 y(the)35 b(incoming)h(k)m(ey)f(from)g(causing)g
+(the)g(map)g(to)g(b)s(e)f(misin)m(terpreted.)55 b(This)34
+b(map)h(has)f(the)h(e\013ect)i(of)150 2781 y(directing)31
+b(an)m(y)g(access)g(to)h(`)p Fp(/usr/local)p Fx(')c(or)i(`)p
+Fp(/usr/share)p Fx(')e(to)j(another)g(automoun)m(t)g(p)s(oin)m(t.)275
+2925 y(In)71 b(this)g(example,)83 b(it)73 b(is)f(assumed)f(that)h(the)g
+(`)p Fp(/usr)p Fx(')f(\014les)h(are)g(replicated)h(on)f(three)150
+3034 y(\014leserv)m(ers:)145 b(`)p Fp(fserv1)p Fx(',)95
+b(`)p Fp(fserv2)p Fx(')81 b(and)h(`)p Fp(fserv3)p Fx('.)196
+b(F)-8 b(or)83 b(an)m(y)g(references)f(other)h(than)150
+3144 y(to)i(`)p Fp(local)p Fx(')f(and)g(`)p Fp(share)p
+Fx(')g(one)g(of)h(the)g(serv)m(ers)g(is)f(used)g(and)g(a)h(sym)m(b)s
+(olic)g(link)f(to)150 3254 y Fp(${autodir}/${rhost}/expo)o(rt/e)o(xec/)
+o(${a)o(rch})o(/)p Fk(wha)o(tev)o(er)153 b Fx(is)159
+b(returned)f(once)i(an)150 3363 y(appropriate)30 b(\014lesystem)h(has)f
+(b)s(een)g(moun)m(ted.)150 3610 y Fw(11.5)68 b(`)p Fi(rwho)p
+Fw(')44 b(serv)l(ers)150 3769 y Fx(The)e(`)p Fp(/usr/spool/rwho)p
+Fx(')d(directory)j(is)h(a)g(go)s(o)s(d)f(candidate)h(for)f(automoun)m
+(ting.)78 b(F)-8 b(or)43 b(e\016ciency)150 3879 y(reasons)29
+b(it)f(is)h(b)s(est)f(to)h(capture)g(the)f(rwho)g(data)h(on)f(a)h
+(small)g(n)m(um)m(b)s(er)e(of)i(mac)m(hines)g(and)f(then)g(moun)m(t)150
+3988 y(that)e(information)h(on)m(to)g(a)f(large)h(n)m(um)m(b)s(er)d(of)
+i(clien)m(ts.)41 b(The)25 b(data)i(written)f(in)m(to)h(the)f(rwho)f
+(\014les)g(is)h(b)m(yte)150 4098 y(order)k(dep)s(enden)m(t)f(so)i(only)
+f(serv)m(ers)h(with)f(the)h(correct)g(b)m(yte)g(ordering)f(can)h(b)s(e)
+f(used)f(b)m(y)h(a)h(clien)m(t:)390 4242 y Fp(/defaults)427
+b(type:=nfs)390 4352 y(usr/spool/rwho)187 b(-byte==little;rfs:=/usr/s)o
+(poo)o(l/rw)o(ho)42 b(\\)1440 4461 y(rhost:=vaxA)92 b(rhost:=vaxB)45
+b(\\)1249 4571 y(||)i(-rfs:=/usr/spool/rwho)42 b(\\)1440
+4680 y(rhost:=sun4)92 b(rhost:=hp300)150 4927 y Fw(11.6)68
+b(`)p Fi(/vol)p Fw(')150 5086 y Fx(`)p Fp(/vol)p Fx(')30
+b(is)g(used)g(as)g(a)h(catc)m(h-all)i(for)d(v)m(olumes)h(whic)m(h)f(do)
+h(not)f(ha)m(v)m(e)i(other)f(con)m(v)m(en)m(tional)i(names.)275
+5230 y(Belo)m(w)f(is)g(part)f(of)g(the)h(`)p Fp(/vol)p
+Fx(')e(map)h(for)g(the)g(domain)g(`)p Fp(doc.ic.ac.uk)p
+Fx('.)41 b(The)31 b(`)p Fp(r+d)p Fx(')g(tree)g(is)h(used)150
+5340 y(for)h(new)g(or)g(exp)s(erimen)m(tal)h(soft)m(w)m(are)g(that)g
+(needs)f(to)h(b)s(e)f(a)m(v)-5 b(ailable)35 b(ev)m(erywhere)f(without)f
+(installing)p eop end
+%%Page: 111 113
+TeXDict begin 111 112 bop 150 -116 a Fx(Chapter)30 b(11:)41
+b(Examples)2571 b(111)150 299 y(it)41 b(on)f(all)i(the)e(\014leserv)m
+(ers.)71 b(Users)41 b(wishing)f(to)h(try)f(out)h(the)f(new)g(soft)m(w)m
+(are)i(then)e(simply)g(include)150 408 y(`)p Fp(/vol/r+d/{bin,ucb})p
+Fx(')26 b(in)k(their)g(path.)275 605 y(The)66 b(main)i(tree)g(resides)f
+(on)g(one)h(host)f(`)p Fp(gould.doc.ic.ac.uk)p Fx(',)72
+b(whic)m(h)67 b(has)g(di\013eren)m(t)150 714 y(`)p Fp(bin)p
+Fx(',)80 b(`)p Fp(etc)p Fx(',)g(`)p Fp(lib)p Fx(')70
+b(and)g(`)p Fp(ucb)p Fx(')f(sub-directories)i(for)f(eac)m(h)h(mac)m
+(hine)g(arc)m(hitecture.)162 b(F)-8 b(or)150 824 y(example,)51
+b(`)p Fp(/vol/r+d/bin)p Fx(')44 b(for)i(a)h(Sun-4)f(w)m(ould)g(b)s(e)g
+(stored)h(in)f(the)h(sub-directory)f(`)p Fp(bin/sun4)p
+Fx(')150 933 y(of)64 b(the)f(\014lesystem)h(`)p Fp(/usr/r+d)p
+Fx('.)138 b(When)63 b(it)h(w)m(as)g(accessed)h(a)e(sym)m(b)s(olic)h
+(link)g(p)s(oin)m(ting)f(to)150 1043 y(`)p Fp
+(/a/gould/usr/r+d/bin/sun4)o Fx(')25 b(w)m(ould)30 b(b)s(e)g(returned.)
+390 1239 y Fp(/defaults)188 b(type:=nfs;opts:=rw,grpid,n)o(osui)o(d,i)o
+(ntr,)o(soft)390 1349 y(wp)524 b(-opts:=rw,grpid,nosuid;rho)o(st:=)o
+(cha)o(rm)42 b(\\)1010 1458 y(host==charm;type:=link;fs:)o(=/us)o(r/l)o
+(ocal)o(/wp)f(\\)1010 1568 y(host!=charm;type:=nfs;rfs:)o(=/vo)o(l/w)o
+(p)390 1678 y(...)390 1787 y(#)390 1897 y(src)476 b
+(-opts:=rw,grpid,nosuid;rho)o(st:=)o(cha)o(rm)42 b(\\)1010
+2006 y(host==charm;type:=link;fs:)o(=/us)o(r/s)o(rc)g(\\)1010
+2116 y(host!=charm;type:=nfs;rfs:)o(=/vo)o(l/s)o(rc)390
+2225 y(#)390 2335 y(r+d)476 b(type:=auto;fs:=${map};pref)o(:=r+)o(d/)
+390 2445 y(#)47 b(per)g(architecture)e(bin,etc,lib&ucb...)390
+2554 y(r+d/bin)284 b(rhost:=gould.doc.ic.ac.uk;)o(rfs:)o(=/u)o(sr/r)o
+(+d;s)o(ubl)o(ink:)o(=${/)o(key)o(}/${)o(arch)o(})p 4065
+2574 42 84 v 390 2664 a(r+d/etc)g(rhost:=gould.doc.ic.ac.uk;)o(rfs:)o
+(=/u)o(sr/r)o(+d;s)o(ubl)o(ink:)o(=${/)o(key)o(}/${)o(arch)o(})p
+4065 2684 V 390 2773 a(r+d/include)92 b(rhost:=gould.doc.ic.ac.uk;)o
+(rfs:)o(=/u)o(sr/r)o(+d;s)o(ubl)o(ink:)o(=${/)o(key)o(})390
+2883 y(r+d/lib)284 b(rhost:=gould.doc.ic.ac.uk;)o(rfs:)o(=/u)o(sr/r)o
+(+d;s)o(ubl)o(ink:)o(=${/)o(key)o(}/${)o(arch)o(})p 4065
+2903 V 390 2993 a(r+d/man)g(rhost:=gould.doc.ic.ac.uk;)o(rfs:)o(=/u)o
+(sr/r)o(+d;s)o(ubl)o(ink:)o(=${/)o(key)o(})390 3102 y(r+d/src)g
+(rhost:=gould.doc.ic.ac.uk;)o(rfs:)o(=/u)o(sr/r)o(+d;s)o(ubl)o(ink:)o
+(=${/)o(key)o(})390 3212 y(r+d/ucb)g(rhost:=gould.doc.ic.ac.uk;)o(rfs:)
+o(=/u)o(sr/r)o(+d;s)o(ubl)o(ink:)o(=${/)o(key)o(}/${)o(arch)o(})p
+4065 3232 V 390 3321 a(#)47 b(hades)g(pictures)390 3431
+y(pictures)236 b(-opts:=rw,grpid,nosuid;rho)o(st:=)o(thp)o(fs)42
+b(\\)1010 3541 y(host==thpfs;type:=link;fs:)o(=/nb)o(sd/)o(pict)o(ures)
+f(\\)1010 3650 y(host!=thpfs;type:=nfs;rfs:)o(=/nb)o(sd;)o(subl)o(ink:)
+o(=pi)o(ctur)o(es)390 3760 y(#)47 b(hades)g(tools)390
+3869 y(hades)380 b(-opts:=rw,grpid,nosuid;rho)o(st:=)o(thp)o(fs)42
+b(\\)1010 3979 y(host==thpfs;type:=link;fs:)o(=/nb)o(sd/)o(hade)o(s)g
+(\\)1010 4088 y(host!=thpfs;type:=nfs;rfs:)o(=/nb)o(sd;)o(subl)o(ink:)o
+(=ha)o(des)390 4198 y(#)47 b(bsd)g(tools)g(for)g(hp.)390
+4308 y(bsd)476 b(-opts:=rw,grpid,nosuid;arc)o(h==h)o(p90)o(00;r)o(host)
+o(:=t)o(hpfs)41 b(\\)1010 4417 y(host==thpfs;type:=link;fs:)o(=/nb)o
+(sd/)o(bsd)g(\\)1010 4527 y(host!=thpfs;type:=nfs;rfs:)o(=/nb)o(sd;)o
+(subl)o(ink:)o(=bs)o(d)150 4852 y Fw(11.7)68 b(`)p Fi(/defaults)p
+Fw(')42 b(with)j(selectors)150 5011 y Fx(It)e(is)g(sometimes)i(useful)d
+(to)i(ha)m(v)m(e)g(di\013eren)m(t)g(defaults)f(for)g(a)g(giv)m(en)i
+(map.)78 b(T)-8 b(o)44 b(ac)m(hiev)m(e)h(this,)i(the)150
+5121 y(`)p Fp(/defaults)p Fx(')40 b(en)m(try)j(m)m(ust)f(b)s(e)g(able)h
+(to)g(pro)s(cess)f(normal)h(selectors.)78 b(This)42 b(feature)g(is)h
+(turned)e(on)150 5230 y(b)m(y)34 b(setting)i(`)p Fp
+(selectors_in_defaults)25 b(=)30 b(yes)p Fx(')k(in)g(the)g
+Fp(amd.conf)f Fx(\014le.)53 b(See)35 b(Section)g(6.4.8)h([selec-)150
+5340 y(tors)p 308 5340 28 4 v 40 w(in)p 424 5340 V 40
+w(defaults)30 b(P)m(arameter],)j(page)e(61.)p eop end
+%%Page: 112 114
+TeXDict begin 112 113 bop 150 -116 a Fx(112)1810 b(Am-utils)30
+b(\(4.4BSD)j(Automoun)m(ter)d(Utilities\))275 299 y(In)h(this)h
+(example,)i(I)e(set)h(di\013eren)m(t)g(default)g(NFS)f(moun)m(t)h
+(options)f(for)g(hosts)h(whic)m(h)f(are)h(running)150
+408 y(o)m(v)m(er)26 b(a)g(slo)m(w)m(er)g(net)m(w)m(ork)g(link.)39
+b(By)25 b(setting)h(a)g(smaller)f(size)h(for)f(the)g(NFS)g(read)g(and)g
+(write)g(bu\013er)f(sizes,)150 518 y(y)m(ou)31 b(can)f(greatly)i(impro)
+m(v)m(e)f(remote)h(\014le)e(service)h(p)s(erformance.)390
+650 y Fp(/defaults)45 b(\\)485 760 y(wire==slip-net;opts:=rw,in)o(tr,r)
+o(siz)o(e=10)o(24,w)o(siz)o(e=10)o(24,t)o(ime)o(o=20)o(,ret)o(ran)o
+(s=10)c(\\)p 3922 780 42 84 v 485 869 a(wire!=slip-net;opts:=rw,in)o
+(tr)150 1097 y Fw(11.8)68 b(`)p Fi(/tftpboot)p Fw(')42
+b(in)i(a)i(c)l(hro)t(ot-ed)f(en)l(vironmen)l(t)150 1256
+y Fx(In)35 b(this)g(complex)h(example,)h(w)m(e)f(attempt)g(to)g(run)e
+(an)h Ft(A)n(md)45 b Fx(pro)s(cess)34 b Ft(inside)43
+b Fx(a)35 b(c)m(hro)s(ot-ed)i(en)m(viron-)150 1366 y(men)m(t.)66
+b(`)p Fp(tftpd)p Fx(')37 b(\(T)-8 b(rivial)40 b(FTP\))f(is)f(used)g(to)
+h(trivially)h(retriev)m(e)g(\014les)f(used)e(to)j(b)s(o)s(ot)e(X-T)-8
+b(erminals,)150 1476 y(Net)m(w)m(ork)35 b(Prin)m(ters,)g(Net)m(w)m(ork)
+g(routers,)f(diskless)g(w)m(orkstations,)i(and)d(other)h(suc)m(h)f
+(devices.)51 b(F)-8 b(or)34 b(se-)150 1585 y(curit)m(y)d(reasons,)f(`)p
+Fp(tftpd)p Fx(')g(\(and)g(also)h(`)p Fp(ftpd)p Fx('\))f(pro)s(cesses)g
+(are)h(run)e(using)h(the)g Fn(c)m(hro)s(ot)p Fx(\(2\))j(system)d(call.)
+150 1695 y(This)41 b(pro)m(vides)i(an)f(en)m(vironmen)m(t)h(for)e
+(these)i(pro)s(cesses,)i(where)d(access)i(to)f(an)m(y)f(\014les)g
+(outside)h(the)150 1804 y(directory)31 b(where)f(the)g(c)m(hro)s(ot-ed)
+i(pro)s(cess)e(runs)e(is)j(denied.)275 1937 y(F)-8 b(or)31
+b(example,)g(if)f(y)m(ou)h(start)g(`)p Fp(tftpd)p Fx(')e(on)i(y)m(our)f
+(system)h(with)390 2069 y Fp(chroot)46 b(/tftpboot)f(/usr/sbin/tftpd)
+150 2201 y Fx(then)24 b(the)g(`)p Fp(tftpd)p Fx(')g(pro)s(cess)f(will)i
+(not)f(b)s(e)g(able)h(to)g(access)g(an)m(y)g(\014les)f(outside)g
+Fp(/tftpboot)p Fx(.)36 b(This)24 b(ensures)150 2310 y(that)31
+b(no)f(one)h(can)g(retriev)m(e)g(\014les)g(suc)m(h)f(as)g
+Fp(/etc/passwd)e Fx(and)h(run)g(passw)m(ord)h(crac)m(k)m(ers)i(on)e
+(it.)275 2443 y(Since)i(the)g(TFTP)g(service)h(w)m(orks)f(b)m(y)h
+(broadcast,)g(it)g(is)f(necessary)h(to)g(ha)m(v)m(e)g(at)g(least)h(one)
+e(TFTP)150 2552 y(serv)m(er)38 b(running)e(on)i(eac)m(h)h(subnet.)62
+b(If)38 b(y)m(ou)g(ha)m(v)m(e)h(lots)g(of)f(\014les)g(that)g(y)m(ou)g
+(need)g(to)h(mak)m(e)g(a)m(v)-5 b(ailable)150 2662 y(for)32
+b(`)p Fp(tftp)p Fx(',)f(and)g(man)m(y)h(subnets,)g(it)g(could)g(tak)m
+(e)h(signi\014can)m(t)g(amoun)m(ts)f(of)g(disk)f(space)h(on)g(eac)m(h)h
+(host)150 2771 y(serving)d(them.)275 2903 y(A)f(solution)h(w)m(e)g
+(implemen)m(ted)g(at)g(Colum)m(bia)f(Univ)m(ersit)m(y)i(w)m(as)f(to)g
+(ha)m(v)m(e)g(ev)m(ery)g(host)g(run)e(`)p Fp(tftpd)p
+Fx(',)150 3013 y(but)i(ha)m(v)m(e)i(those)g(serv)m(ers)f(retriev)m(e)h
+(the)f(b)s(o)s(ot)g(\014les)g(from)f(t)m(w)m(o)j(replicated)f(serv)m
+(ers.)42 b(Those)31 b(replicated)150 3123 y(serv)m(ers)f(ha)m(v)m(e)i
+(sp)s(ecial)f(partitions)g(dedicated)g(to)g(the)g(man)m(y)f(net)m(w)m
+(ork)h(b)s(o)s(ot)g(\014les.)275 3255 y(W)-8 b(e)31 b(start)g
+Ft(A)n(md)40 b Fx(as)30 b(follo)m(ws:)390 3387 y Fp(amd)47
+b(/tftpboot/.amd)d(amd.tftpboot)275 3519 y Fx(That)35
+b(is,)i Ft(A)n(md)45 b Fx(is)35 b(serving)h(the)g(directory)g
+Fp(/tftpboot/.amd)p Fx(.)52 b(The)35 b(`)p Fp(tftp)p
+Fx(')g(serv)m(er)g(runs)f(inside)150 3629 y Fp(/tftpboot)28
+b Fx(and)i(is)g(c)m(hro)s(ot-ed)h(in)f(that)h(directory)g(to)s(o.)42
+b(The)30 b Fp(amd.tftpboot)d Fx(map)j(lo)s(oks)g(lik)m(e:)390
+3761 y Fp(#)390 3870 y(#)47 b(Amd)g(/tftpboot)f(directory)f(->)i(host)g
+(map)390 3980 y(#)390 4199 y(/defaults)93 b(opts:=nosuid,ro,intr,sof)o
+(t;fs)o(:=/t)o(ftp)o(boot)o(/imp)o(ort)o(;typ)o(e:=n)o(fs)390
+4418 y(tp)429 b(host==lol;rfs:=/n/lol/im)o(port)o(/tft)o(pbo)o(ot;t)o
+(ype:)o(=lo)o(fs)42 b(\\)915 4528 y(host==ober;rfs:=/n/ober/)o(misc)o
+(/win)o(/tf)o(tpbo)o(ot;t)o(ype)o(:=lo)o(fs)g(\\)915
+4637 y(rhost:=ober;rfs:=/n/ober)o(/mis)o(c/wi)o(n/t)o(ftpb)o(oot)f(\\)
+915 4747 y(rhost:=lol;rfs:=/n/lol/i)o(mpor)o(t/tf)o(tpb)o(oot)275
+4879 y Fx(T)-8 b(o)34 b(help)g(understand)e(this)j(example,)h(I)e(list)
+h(a)f(few)g(of)h(the)f(\014le)g(en)m(tries)h(that)g(are)g(created)g
+(inside)150 4989 y Fp(/tftpboot)p Fx(:)390 5121 y Fp($)47
+b(ls)h(-la)f(/tftpboot)390 5230 y(dr-xr-xr-x)140 b(2)48
+b(root)142 b(512)47 b(Aug)g(30)g(23:11)f(.amd)390 5340
+y(drwxrwsr-x)93 b(12)47 b(root)142 b(512)47 b(Aug)g(30)g(08:00)f
+(import)p eop end
+%%Page: 113 115
+TeXDict begin 113 114 bop 150 -116 a Fx(Chapter)30 b(11:)41
+b(Examples)2571 b(113)390 299 y Fp(lrwxrwxrwx)140 b(1)48
+b(root)190 b(33)47 b(Feb)g(27)95 b(1997)46 b(adminpr.cfg)f(->)i
+(./.amd/tp/hplj/adminpr.cf)o(g)p 4208 319 42 84 v 390
+408 a(lrwxrwxrwx)140 b(1)48 b(root)190 b(22)47 b(Dec)95
+b(5)g(1996)46 b(tekxp)h(->)g(./.amd/tp/xterms/tekxp)390
+518 y(lrwxrwxrwx)140 b(1)48 b(root)237 b(1)48 b(Dec)95
+b(5)g(1996)46 b(tftpboot)g(->)h(.)275 653 y Fx(Here)30
+b(is)h(an)f(explanation)i(of)e(eac)m(h)i(of)e(the)h(en)m(tries)g
+(listed)g(ab)s(o)m(v)m(e:)150 812 y Fp(.amd)288 b Fx(This)23
+b(is)g(the)h Ft(A)n(md)32 b Fx(moun)m(t)24 b(p)s(oin)m(t.)38
+b(Note)25 b(that)f(y)m(ou)g(do)f(not)h(need)f(to)h(run)e(a)i(separate)g
+Ft(A)n(md)630 922 y Fx(pro)s(cess)30 b(for)h(the)f(TFTP)g(service.)43
+b(The)30 b Fn(c)m(hro)s(ot)p Fx(\(2\))j(system)e(call)g(only)g
+(protects)h(against)630 1031 y(\014le)h(access,)i(but)e(the)g(same)h
+(pro)s(cess)e(can)i(still)f(serv)m(e)h(\014les)f(and)g(directories)h
+(inside)f(and)630 1141 y(outside)24 b(the)h(c)m(hro)s(ot-ed)g(en)m
+(vironmen)m(t,)h(b)s(ecause)e Ft(A)n(md)33 b Fx(itself)25
+b(w)m(as)f(not)h(run)d(in)i(c)m(hro)s(ot-ed)630 1250
+y(mo)s(de.)150 1410 y Fp(import)192 b Fx(This)32 b(is)h(the)g(moun)m(t)
+g(p)s(oin)m(t)g(where)g Ft(A)n(md)42 b Fx(will)33 b(moun)m(t)g(the)g
+(directories)h(con)m(taining)h(the)630 1519 y(b)s(o)s(ot)25
+b(\014les.)39 b(The)25 b(map)g(is)h(designed)f(so)g(that)h(remote)h
+(directories)f(will)g(b)s(e)f(NFS)g(moun)m(ted)630 1629
+y(\(ev)m(en)40 b(if)e(they)h(are)g(already)g(moun)m(ted)f(elsewhere\),)
+k(and)c(lo)s(cal)i(directories)g(are)f(lo)s(op-)630 1738
+y(bac)m(k)c(moun)m(ted)g(\(since)g(they)g(are)g(not)f(accessible)j
+(outside)d(the)h(c)m(hro)s(ot-ed)g Fp(/tftpboot)630 1848
+y Fx(directory\).)150 2007 y Fp(adminpr.cfg)150 2117
+y(tekxp)240 b Fx(Tw)m(o)38 b(man)m(ually)g(created)g(sym)m(b)s(olic)g
+(links)f(to)h(directories)h Ft(inside)44 b Fx(the)38
+b Ft(A)n(md)p Fx(-managed)630 2227 y(directory)-8 b(.)41
+b(The)27 b(crossing)i(of)f(the)g(comp)s(onen)m(t)g Fp(tp)g
+Fx(will)g(cause)h Ft(A)n(md)37 b Fx(to)29 b(automoun)m(t)g(one)630
+2336 y(of)36 b(the)h(remote)g(replicas.)59 b(Once)36
+b(crossed,)i(access)g(to)f(\014les)f(inside)g(pro)s(ceeds)g(as)g
+(usual.)630 2446 y(The)c(`)p Fp(adminpr.cfg)p Fx(')f(is)i(a)g
+(con\014guration)g(\014le)g(for)g(an)f(HP)h(Laser-Jet)h(4si)f(prin)m
+(ter,)h(and)630 2555 y(the)d(`)p Fp(tekxp)p Fx(')e(is)h(a)h(directory)g
+(for)f(T)-8 b(ektronix)31 b(X-T)-8 b(erminal)31 b(b)s(o)s(ot)f
+(\014les.)150 2715 y Fp(tftpboot)96 b Fx(This)24 b(inno)s(cen)m(t)i(lo)
+s(oking)g(symlink)f(is)g(imp)s(ortan)m(t.)39 b(Usually)-8
+b(,)28 b(when)c(devices)i(b)s(o)s(ot)f(via)h(the)630
+2824 y(TFTP)g(service,)j(they)e(p)s(erform)f(the)h(`)p
+Fp(get)i(file)p Fx(')d(command)h(to)h(retriev)m(e)g Fo(\014le)p
+Fx(.)40 b(Ho)m(w)m(ev)m(er,)630 2934 y(some)h(devices)g(assume)g(that)g
+(`)p Fp(tftpd)p Fx(')f(do)s(es)g(not)h(run)e(in)h(a)i(c)m(hro)s(ot-ed)f
+(en)m(vironmen)m(t,)630 3044 y(but)e(rather)g(\\unprotected",)j(and)d
+(th)m(us)g(use)g(a)h(full)f(pathname)g(for)g(\014les)g(to)h(retriev)m
+(e,)630 3153 y(as)i(in)f(`)p Fp(get)30 b(/tftpboot/file)p
+Fx('.)71 b(This)41 b(symlink)g(e\013ectiv)m(ely)j(strips)d(out)h(the)g
+(leading)630 3263 y Fp(/tftpboot/)p Fx(.)p eop end
+%%Page: 114 116
+TeXDict begin 114 115 bop eop end
+%%Page: 115 117
+TeXDict begin 115 116 bop 150 -116 a Fx(Chapter)30 b(12:)41
+b(In)m(ternals)2605 b(115)150 299 y Fu(12)80 b(In)l(ternals)150
+508 y Fx(Note)31 b(that)f(there)g(are)g(more)f(error)h(and)f(logging)i
+(messages)f(p)s(ossible)g(than)f(are)h(listed)g(here.)40
+b(Most)31 b(of)150 618 y(them)f(are)h(self-explanatory)-8
+b(.)43 b(Refer)30 b(to)h(the)g(program)f(sources)g(for)g(more)h
+(details)g(on)g(the)f(rest.)150 840 y Fw(12.1)68 b(Log)45
+b(Messages)150 999 y Fx(In)32 b(the)h(follo)m(wing)h(sections)g(a)f
+(brief)f(explanation)i(is)f(giv)m(en)h(of)f(some)g(of)g(the)g(log)g
+(messages)h(made)f(b)m(y)150 1109 y Ft(A)n(md)p Fx(.)59
+b(Where)37 b(the)g(message)g(is)g(in)f(`)p Fp(typewriter)p
+Fx(')e(fon)m(t,)39 b(it)e(corresp)s(onds)f(exactly)i(to)f(the)g
+(message)150 1219 y(pro)s(duced)22 b(b)m(y)i Ft(A)n(md)p
+Fx(.)38 b(W)-8 b(ords)24 b(in)g Fo(italic)31 b Fx(are)24
+b(replaced)g(b)m(y)g(an)f(appropriate)h(string.)39 b(V)-8
+b(ariables,)26 b Fp(${)p Fk(var)p Fp(})p Fx(,)150 1328
+y(indicate)31 b(that)g(the)g(v)-5 b(alue)31 b(of)f(the)h(appropriate)f
+(v)-5 b(ariable)31 b(is)g(output.)275 1458 y(Log)36 b(messages)h(are)f
+(either)g(sen)m(t)h(directly)f(to)h(a)f(\014le,)i(or)e(logged)h(via)g
+(the)f Fn(syslog)p Fx(\(3\))h(mec)m(hanism.)150 1567
+y(See)30 b(Section)h(6.5.23)i([log)p 1038 1567 28 4 v
+41 w(\014le)d(P)m(arameter],)i(page)f(65.)41 b(In)30
+b(either)g(case,)i(en)m(tries)f(in)f(the)g(\014le)g(are)g(of)h(the)150
+1677 y(form:)390 1806 y Fk(date-string)92 b(hostname)46
+b Fp(amd[)p Fk(pid)p Fp(])93 b Fk(message)150 1995 y
+Fm(12.1.1)63 b(F)-10 b(atal)40 b(errors)150 2142 y Ft(A)n(md)34
+b Fx(attempts)25 b(to)g(deal)g(with)f(un)m(usual)g(ev)m(en)m(ts.)40
+b(Whenev)m(er)25 b(it)g(is)f(not)h(p)s(ossible)f(to)h(deal)g(with)f
+(suc)m(h)g(an)150 2252 y(error,)33 b Ft(A)n(md)42 b Fx(will)32
+b(log)i(an)e(appropriate)g(message)i(and,)f(if)f(it)h(cannot)g(p)s
+(ossibly)e(con)m(tin)m(ue,)k(will)d(either)150 2362 y(exit)42
+b(or)f(ab)s(ort.)72 b(These)41 b(messages)h(are)f(selected)h(b)m(y)f(`)
+p Fp(-x)30 b(fatal)p Fx(')40 b(on)h(the)g(command)f(line.)73
+b(When)150 2471 y Fn(syslog)p Fx(\(3\))34 b(is)f(b)s(eing)f(used,)g
+(they)g(are)h(logged)h(with)e(lev)m(el)i(`)p Fp(LOG_FATAL)p
+Fx('.)44 b(Ev)m(en)33 b(if)f Ft(A)n(md)42 b Fx(con)m(tin)m(ues)33
+b(to)150 2581 y(op)s(erate)j(it)f(is)g(lik)m(ely)h(to)g(remain)f(in)f
+(a)i(precarious)f(state)h(and)e(should)g(b)s(e)g(restarted)i(at)f(the)g
+(earliest)150 2690 y(opp)s(ortunit)m(y)-8 b(.)150 2840
+y Fp(Attempting)45 b(to)i(inherit)f(not-a-filesystem)630
+2949 y Fx(The)29 b(protot)m(yp)s(e)h(moun)m(t)g(p)s(oin)m(t)f(created)i
+(during)d(a)i(\014lesystem)g(restart)g(did)f(not)h(con)m(tain)630
+3059 y(a)h(reference)g(to)g(the)f(restarted)h(\014lesystem.)41
+b(This)30 b(error)g(\\should)g(nev)m(er)g(happ)s(en".)150
+3208 y Fp(Can't)46 b(bind)h(to)g(domain)f(")p Fk(NIS-domain)p
+Fp(")630 3318 y Fx(A)35 b(sp)s(eci\014c)g(NIS)f(domain)g(w)m(as)i
+(requested)e(on)h(the)g(command)g(line,)h(but)e(no)h(serv)m(er)g(for)
+630 3427 y(that)c(domain)f(is)h(a)m(v)-5 b(ailable)32
+b(on)f(the)f(lo)s(cal)i(net.)150 3577 y Fp(Can't)46 b(determine)g(IP)h
+(address)f(of)h(this)f(host)h(\()p Fk(hostname)p Fp(\))630
+3686 y Fx(When)36 b Ft(A)n(md)46 b Fx(starts)37 b(it)g(determines)f
+(its)h(o)m(wn)f(IP)g(address.)58 b(If)36 b(this)g(lo)s(okup)g(fails)h
+(then)630 3796 y Ft(A)n(md)k Fx(cannot)32 b(con)m(tin)m(ue.)46
+b(The)32 b(hostname)f(it)i(lo)s(oks)f(up)e(is)i(that)g(obtained)h
+(returned)d(b)m(y)630 3906 y Fn(gethostname)p Fx(\(2\))j(system)e
+(call.)150 4055 y Fp(Can't)46 b(find)h(root)g(file)f(handle)g(for)h
+Fk(automount)f(point)630 4165 y Ft(A)n(md)g Fx(creates)38
+b(its)f(o)m(wn)f(\014le)h(handles)f(for)g(the)h(automoun)m(t)g(p)s(oin)
+m(ts.)59 b(When)36 b(it)h(moun)m(ts)630 4274 y(itself)43
+b(as)f(a)g(serv)m(er,)j(it)e(m)m(ust)f(pass)f(these)h(\014le)g(handles)
+g(to)g(the)g(lo)s(cal)i(k)m(ernel.)75 b(If)42 b(the)630
+4384 y(\014lehandle)g(is)g(not)g(obtainable)h(the)f(moun)m(t)g(p)s(oin)
+m(t)g(is)f(ignored.)76 b(This)41 b(error)g(\\should)630
+4493 y(nev)m(er)31 b(happ)s(en".)150 4643 y Fp(Must)47
+b(be)g(root)f(to)i(mount)e(filesystems)f(\(euid)h(=)i
+Fk(euid)p Fp(\))630 4752 y Fx(T)-8 b(o)36 b(prev)m(en)m(t)h(em)m
+(barrassmen)m(t,)h Ft(A)n(md)45 b Fx(mak)m(es)36 b(sure)f(it)i(has)e
+(appropriate)h(system)g(privi-)630 4862 y(leges.)42 b(This)29
+b(amoun)m(ts)h(to)h(ha)m(ving)f(an)g(euid)f(of)h(0.)41
+b(The)30 b(c)m(hec)m(k)h(is)f(made)g(after)g(argumen)m(t)630
+4971 y(pro)s(cessing)g(complete)i(to)f(giv)m(e)h(non-ro)s(ot)e(users)g
+(a)h(c)m(hance)g(to)g(access)h(the)f Fp(-v)e Fx(option.)150
+5121 y Fp(No)47 b(work)g(to)g(do)g(-)h(quitting)630 5230
+y Fx(No)31 b(automoun)m(t)f(p)s(oin)m(ts)g(w)m(ere)g(giv)m(en)h(on)f
+(the)g(command)g(line)g(and)g(so)g(there)g(is)g(no)g(w)m(ork)630
+5340 y(to)h(do.)p eop end
+%%Page: 116 118
+TeXDict begin 116 117 bop 150 -116 a Fx(116)1810 b(Am-utils)30
+b(\(4.4BSD)j(Automoun)m(ter)d(Utilities\))150 299 y Fp(Out)47
+b(of)g(memory)630 408 y Fx(While)28 b(attempting)g(to)g(mallo)s(c)g
+(some)g(memory)-8 b(,)28 b(the)g(memory)f(space)h(a)m(v)-5
+b(ailable)29 b(to)f Ft(A)n(md)630 518 y Fx(w)m(as)j(exhausted.)40
+b(This)30 b(is)g(an)h(unreco)m(v)m(erable)g(error.)150
+682 y Fp(Out)47 b(of)g(memory)f(in)h(realloc)630 792
+y Fx(While)28 b(attempting)g(to)g(reallo)s(c)h(some)e(memory)-8
+b(,)29 b(the)e(memory)g(space)h(a)m(v)-5 b(ailable)29
+b(to)f Ft(A)n(md)630 901 y Fx(w)m(as)j(exhausted.)40
+b(This)30 b(is)g(an)h(unreco)m(v)m(erable)g(error.)150
+1066 y Fp(cannot)46 b(create)g(rpc/udp)g(service)630
+1175 y Fx(Either)30 b(the)h(NFS)f(or)h(AMQ)f(endp)s(oin)m(t)g(could)g
+(not)h(b)s(e)f(created.)150 1340 y Fp(gethostname:)44
+b Fk(description)630 1449 y Fx(The)30 b Fn(gethostname)p
+Fx(\(2\))j(system)d(call)i(failed)f(during)e(startup.)150
+1613 y Fp(host)47 b(name)f(is)h(not)g(set)630 1723 y
+Fx(The)36 b Fn(gethostname)p Fx(\(2\))j(system)e(call)h(returned)d(a)i
+(zero)h(length)f(host)f(name.)60 b(This)36 b(can)630
+1833 y(happ)s(en)29 b(if)h Ft(A)n(md)40 b Fx(is)30 b(started)h(in)f
+(single)h(user)f(mo)s(de)g(just)g(after)g(b)s(o)s(oting)h(the)f
+(system.)150 1997 y Fp(ifs_match)45 b(called!)630 2106
+y Fx(An)22 b(in)m(ternal)h(error)f(o)s(ccurred)g(while)g(restarting)h
+(a)g(pre-moun)m(ted)f(\014lesystem.)39 b(This)21 b(error)630
+2216 y(\\should)30 b(nev)m(er)h(happ)s(en".)150 2380
+y Fp(mount_afs:)45 b Fk(description)630 2490 y Fx(An)30
+b(error)g(o)s(ccurred)g(while)g Ft(A)n(md)40 b Fx(w)m(as)31
+b(moun)m(ting)f(itself.)150 2654 y Fp(run_rpc)46 b(failed)630
+2764 y Fx(Someho)m(w)31 b(the)f(main)g(NFS)h(serv)m(er)f(lo)s(op)h
+(failed.)41 b(This)30 b(error)g(\\should)g(nev)m(er)g(happ)s(en".)150
+2928 y Fp(unable)46 b(to)h(free)g(rpc)g(arguments)e(in)i(amqprog_1)630
+3037 y Fx(The)30 b(incoming)h(argumen)m(ts)f(to)i(the)e(AMQ)h(serv)m
+(er)f(could)h(not)f(b)s(e)g(free'ed.)150 3202 y Fp(unable)46
+b(to)h(free)g(rpc)g(arguments)e(in)i(nfs_program_1)630
+3311 y Fx(The)30 b(incoming)h(argumen)m(ts)f(to)i(the)e(NFS)g(serv)m
+(er)h(could)g(not)f(b)s(e)g(free'ed.)150 3475 y Fp(unable)46
+b(to)h(register)f(\(AMQ_PROGRAM,)e(AMQ_VERSION,)g(udp\))630
+3585 y Fx(The)f(AMQ)h(serv)m(er)f(could)h(not)g(b)s(e)f(registered)h
+(with)f(the)h(lo)s(cal)h(p)s(ortmapp)s(er)c(or)j(the)630
+3695 y(in)m(ternal)31 b(RPC)f(dispatc)m(her.)150 3859
+y Fp(unable)46 b(to)h(register)f(\(NFS_PROGRAM,)e(NFS_VERSION,)g(0\))
+630 3968 y Fx(The)30 b(NFS)g(serv)m(er)h(could)f(not)h(b)s(e)f
+(registered)h(with)f(the)g(in)m(ternal)i(RPC)d(dispatc)m(her.)275
+4135 y(XXX:)i(This)e(section)j(needs)e(to)h(b)s(e)f(up)s(dated)150
+4339 y Fm(12.1.2)63 b(Info)42 b(messages)150 4486 y Ft(A)n(md)e
+Fx(generates)32 b(information)f(messages)h(to)f(record)g(state)h(c)m
+(hanges.)42 b(These)31 b(messages)g(are)g(selected)150
+4596 y(b)m(y)25 b(`)p Fp(-x)31 b(info)p Fx(')24 b(on)i(the)f(command)h
+(line.)39 b(When)26 b Fn(syslog)p Fx(\(3\))h(is)f(b)s(eing)f(used,)h
+(they)g(are)g(logged)h(with)e(lev)m(el)150 4705 y(`)p
+Fp(LOG_INFO)p Fx('.)275 4845 y(The)j(messages)j(listed)e(b)s(elo)m(w)h
+(can)f(b)s(e)g(generated)h(and)f(are)h(in)f(a)g(format)h(suitable)g
+(for)f(simple)g(sta-)150 4954 y(tistical)e(analysis.)40
+b Fo(moun)m(t-info)30 b Fx(is)25 b(the)h(string)f(that)h(is)f(displa)m
+(y)m(ed)h(b)m(y)f Fo(Amq)j Fx(in)d(its)g(moun)m(t)h(information)150
+5064 y(column)k(and)g(placed)h(in)f(the)g(system)h(moun)m(t)f(table.)
+150 5230 y Fp("${)p Fk(path)p Fp(}")45 b(forcibly)h(timed)g(out)630
+5340 y Fx(An)30 b(automoun)m(t)h(p)s(oin)m(t)f(has)h(b)s(een)e(timed)i
+(out)f(b)m(y)h(the)f Ft(A)n(mq)38 b Fx(command.)p eop
+end
+%%Page: 117 119
+TeXDict begin 117 118 bop 150 -116 a Fx(Chapter)30 b(12:)41
+b(In)m(ternals)2605 b(117)150 299 y Fp("${)p Fk(path)p
+Fp(}")45 b(has)i(timed)g(out)630 408 y Fx(No)31 b(access)h(to)f(the)f
+(automoun)m(t)h(p)s(oin)m(t)g(has)f(b)s(een)g(made)g(within)g(the)g
+(timeout)i(p)s(erio)s(d.)150 568 y Fp(Filehandle)45 b(denied)h(for)h
+("${)p Fk(rhost)p Fp(}:${)p Fk(rfs)p Fp(}")630 677 y
+Fx(The)28 b(moun)m(t)h(daemon)f(refused)g(to)h(return)e(a)i(\014le)g
+(handle)f(for)g(the)h(requested)f(\014lesystem.)150 837
+y Fp(Filehandle)45 b(error)h(for)h("${)p Fk(rhost)p Fp(}:${)p
+Fk(rfs)p Fp(}":)c Fk(description)630 946 y Fx(The)30
+b(moun)m(t)g(daemon)h(ga)m(v)m(e)h(some)f(other)g(error)f(for)g(the)g
+(requested)h(\014lesystem.)150 1106 y Fp(Finishing)45
+b(with)i(status)f Fk(exit-status)630 1215 y Ft(A)n(md)40
+b Fx(is)30 b(ab)s(out)g(to)h(exit)h(with)e(the)g(giv)m(en)i(exit)f
+(status.)150 1375 y Fp(Re-synchronizing)43 b(cache)k(for)g(map)g(${)p
+Fk(map)p Fp(})630 1484 y Fx(The)73 b(named)f(map)h(has)g(b)s(een)f(mo)s
+(di\014ed)g(and)g(the)i(in)m(ternal)g(cac)m(he)g(is)f(b)s(eing)630
+1594 y(re-sync)m(hronized.)150 1753 y Fp(file)47 b(server)f(${)p
+Fk(rhost)p Fp(})f(is)i(down)g(-)h(timeout)d(of)j("${)p
+Fk(path)p Fp(}")d(ignored)630 1863 y Fx(An)30 b(automoun)m(t)h(p)s(oin)
+m(t)f(has)g(timed)g(out,)h(but)f(the)g(corresp)s(onding)f(\014le)i
+(serv)m(er)f(is)g(kno)m(wn)630 1973 y(to)25 b(b)s(e)f(do)m(wn.)39
+b(This)23 b(message)j(is)f(only)f(pro)s(duced)f(once)j(for)e(eac)m(h)i
+(moun)m(t)e(p)s(oin)m(t)h(for)f(whic)m(h)630 2082 y(the)31
+b(serv)m(er)f(is)h(do)m(wn.)150 2242 y Fp(file)47 b(server)f(${)p
+Fk(rhost)p Fp(})f(type)i(nfs)g(is)g(down)630 2351 y Fx(An)30
+b(NFS)g(\014le)h(serv)m(er)f(that)h(w)m(as)g(previously)f(up)g(is)g(no)
+m(w)g(do)m(wn.)150 2511 y Fp(file)47 b(server)f(${)p
+Fk(rhost)p Fp(})f(type)i(nfs)g(is)g(up)630 2620 y Fx(An)30
+b(NFS)g(\014le)h(serv)m(er)f(that)h(w)m(as)g(previously)f(do)m(wn)g(is)
+h(no)m(w)f(up.)150 2780 y Fp(file)47 b(server)f(${)p
+Fk(rhost)p Fp(})f(type)i(nfs)g(starts)f(down)630 2889
+y Fx(A)30 b(new)g(NFS)h(\014le)f(serv)m(er)h(has)f(b)s(een)g
+(referenced)g(and)g(is)g(kno)m(wn)g(to)h(b)s(e)f(do)m(wn.)150
+3049 y Fp(file)47 b(server)f(${)p Fk(rhost)p Fp(})f(type)i(nfs)g
+(starts)f(up)630 3158 y Fx(A)30 b(new)g(NFS)h(\014le)f(serv)m(er)h(has)
+f(b)s(een)g(referenced)g(and)g(is)g(kno)m(wn)g(to)h(b)s(e)f(up.)150
+3318 y Fp(mount)46 b(of)i("${)p Fk(path)p Fp(}")d(on)i(${)p
+Fk(fs)p Fp(})f(timed)h(out)630 3427 y Fx(A)m(ttempts)36
+b(to)g(moun)m(t)f(a)h(\014lesystem)f(for)g(the)h(giv)m(en)g(automoun)m
+(t)g(p)s(oin)m(t)f(ha)m(v)m(e)h(failed)g(to)630 3537
+y(complete)c(within)e(30)h(seconds.)150 3696 y Fk(mount-info)45
+b Fp(mounted)h(fstype)g(${)p Fk(type)p Fp(})g(on)h(${)p
+Fk(fs)p Fp(})630 3806 y Fx(A)30 b(new)g(\014le)h(system)f(has)g(b)s
+(een)g(moun)m(ted.)150 3965 y Fk(mount-info)45 b Fp(restarted)g(fstype)
+h(${)p Fk(type)p Fp(})g(on)h(${)p Fk(fs)p Fp(})630 4075
+y Ft(A)n(md)40 b Fx(is)30 b(using)g(a)h(pre-moun)m(ted)f(\014lesystem)h
+(to)g(satisfy)g(a)f(moun)m(t)h(request.)150 4234 y Fk(mount-info)45
+b Fp(unmounted)g(fstype)h(${)p Fk(type)p Fp(})g(from)h(${)p
+Fk(fs)p Fp(})630 4344 y Fx(A)30 b(\014le)h(system)f(has)h(b)s(een)e
+(unmoun)m(ted.)150 4503 y Fk(mount-info)45 b Fp(unmounted)g(fstype)h
+(${)p Fk(type)p Fp(})g(from)h(${)p Fk(fs)p Fp(})f(link)h(${)p
+Fk(fs)p Fp(}/${)p Fk(sublink)p Fp(})630 4613 y Fx(A)30
+b(\014le)h(system)f(of)h(whic)m(h)f(only)h(a)f(sub-directory)g(w)m(as)h
+(in)f(use)g(has)g(b)s(een)g(unmoun)m(ted.)150 4772 y
+Fp(restarting)45 b Fk(mount-info)g Fp(on)i(${)p Fk(fs)p
+Fp(})630 4882 y Fx(A)30 b(pre-moun)m(ted)h(\014le)f(system)h(has)f(b)s
+(een)f(noted.)275 5041 y(XXX:)i(This)e(section)j(needs)e(to)h(b)s(e)f
+(up)s(dated)p eop end
+%%Page: 118 120
+TeXDict begin 118 119 bop eop end
+%%Page: 119 121
+TeXDict begin 119 120 bop 150 -116 a Fx(Ac)m(kno)m(wledgmen)m(ts)32
+b(&)e(T)-8 b(rademarks)2152 b(119)150 299 y Fu(Ac)l(kno)l(wledgmen)l
+(ts)49 b(&)k(T)-13 b(rademarks)150 533 y Fx(Man)m(y)35
+b(thanks)f(to)g(the)h(Am-Utils)g(Users)f(mailing)h(list)g(through)e
+(the)i(mon)m(ths)f(dev)m(eloping)h(am-utils.)150 643
+y(These)h(mem)m(b)s(ers)f(ha)m(v)m(e)j(con)m(tributed)e(to)h(the)f
+(discussions,)i(ideas,)g(co)s(de)e(and)g(do)s(cumen)m(tation,)j(and)150
+752 y(sub)5 b(jected)26 b(their)h(systems)g(to)g(alpha)g(qualit)m(y)h
+(co)s(de.)39 b(Sp)s(ecial)27 b(thanks)f(go)i(to)f(those)g(authors)g(\()
+p Fp(http://)150 862 y(www)12 b(.)d(am-utils)j(.)d(org)j(/)d(docs)j(/)c
+(am-u)o(til)o(s)k(/)d(A)o(UTHO)o(RS)j(.)c(txt)p Fx(\))39
+b(who)44 b(ha)m(v)m(e)i(submitted)e(patc)m(hes,)50 b(and)150
+971 y(esp)s(ecially)32 b(to)f(the)f(main)m(tainers:)225
+1106 y Fv(\017)60 b Fx(Erez)31 b(Zadok)f(\()p Fp
+(http://www.cs.sunysb.edu/)o(~ezk)o Fx(\))225 1240 y
+Fv(\017)60 b Fx(Ion)30 b(Badulescu)h(\()p Fp(ionut)e(AT)h(badula.org)p
+Fx(\))225 1375 y Fv(\017)60 b Fx(Rainer)30 b(Orth)g(\()p
+Fp(ro)g(AT)g(techfak.uni-bielefeld.de)o Fx(\))225 1509
+y Fv(\017)60 b Fx(Nic)m(k)32 b(Williams)f(\()p Fp(nick.williams)d(AT)h
+(morganstanley.com)p Fx(\))275 1669 y(Thanks)i(to)i(the)f(F)-8
+b(ormal)34 b(Metho)s(ds)e(Group)g(at)h(Imp)s(erial)f(College)i(for)e
+(su\013ering)g(patien)m(tly)i(while)150 1778 y Ft(A)n(md)40
+b Fx(w)m(as)31 b(b)s(eing)e(dev)m(elop)s(ed)i(on)f(their)h(mac)m
+(hines.)275 1913 y(Thanks)h(to)i(the)g(man)m(y)f(p)s(eople)h(who)f(ha)m
+(v)m(e)h(help)s(ed)f(with)g(the)h(dev)m(elopmen)m(t)h(of)e
+Ft(A)n(md)p Fx(,)i(esp)s(ecially)150 2022 y(Piete)h(Bro)s(oks)e(at)h
+(the)g(Cam)m(bridge)f(Univ)m(ersit)m(y)i(Computing)d(Lab)h(for)g(man)m
+(y)h(hours)e(of)i(testing,)h(ex-)150 2132 y(p)s(erimen)m(tation)31
+b(and)f(discussion.)275 2267 y(Thanks)22 b(to)i(the)f(older)g(Amd)g(W)
+-8 b(ork)m(ers)24 b(\()p Fp(amd-workers)k(AT)i(majordomo.glue.umd.edu)p
+Fx(\))17 b(mailing)150 2376 y(list)31 b(\(no)m(w)g(defunct\))f(mem)m(b)
+s(ers)f(for)i(man)m(y)f(suggestions)h(and)f(bug)g(rep)s(orts)g(to)h
+Ft(A)n(md)p Fx(.)225 2511 y Fv(\017)60 b Fn(DEC)p Fx(,)30
+b Fn(V)-10 b(AX)29 b Fx(and)h Fn(Ultrix)h Fx(are)f(registered)i
+(trademarks)e(of)g(Digital)j(Equipmen)m(t)d(Corp)s(oration.)225
+2645 y Fv(\017)60 b Fn(AIX)30 b Fx(and)g Fn(IBM)h Fx(are)g(registered)g
+(trademarks)g(of)g(In)m(ternational)g(Business)g(Mac)m(hines)g(Corp)s
+(ora-)330 2755 y(tion.)225 2889 y Fv(\017)60 b Fn(Sun)p
+Fx(,)29 b Fn(NFS)h Fx(and)g Fn(SunOS)e Fx(are)j(registered)g
+(trademarks)g(of)f(Sun)f(Microsystems,)j(Inc.)225 3024
+y Fv(\017)60 b Fn(UNIX)34 b Fx(is)h(a)f(registered)i(trademark)e(in)g
+(the)h(USA)f(and)f(other)i(coun)m(tries,)h(exclusiv)m(ely)g(licensed)
+330 3133 y(through)30 b(X/Op)s(en)f(Compan)m(y)-8 b(,)31
+b(Ltd.)225 3268 y Fv(\017)60 b Fx(All)31 b(other)g(registered)g
+(trademarks)f(are)h(o)m(wned)f(b)m(y)g(their)h(resp)s(ectiv)m(e)g(o)m
+(wners.)p eop end
+%%Page: 120 122
+TeXDict begin 120 121 bop eop end
+%%Page: 121 123
+TeXDict begin 121 122 bop 150 -116 a Fx(Index)3241 b(121)150
+299 y Fu(Index)150 610 y Fw(!)150 727 y Fr(!exists,)27
+b(b)r(o)r(olean)g(moun)n(t)e(selector)10 b Fd(:)k(:)g(:)f(:)g(:)g(:)g
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)37 b Fr(29)150
+815 y(!false,)28 b(b)r(o)r(olean)f(moun)n(t)e(selector)13
+b Fd(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
+g(:)39 b Fr(29)150 903 y(!in)p 240 903 24 4 v 34 w(net)n(w)n(ork,)26
+b(b)r(o)r(olean)h(moun)n(t)e(selector)7 b Fd(:)14 b(:)f(:)g(:)g(:)g(:)h
+(:)f(:)g(:)g(:)g(:)g(:)33 b Fr(30)150 991 y(!netgrp,)26
+b(b)r(o)r(olean)h(moun)n(t)e(selector)12 b Fd(:)i(:)f(:)g(:)h(:)f(:)g
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)38 b Fr(29)150
+1078 y(!netgrp)r(d,)26 b(b)r(o)r(olean)h(moun)n(t)e(selector)6
+b Fd(:)15 b(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)33
+b Fr(29)150 1166 y(!true,)26 b(b)r(o)r(olean)h(moun)n(t)e(selector)18
+b Fd(:)d(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
+h(:)44 b Fr(30)150 1254 y(!xhost,)26 b(b)r(o)r(olean)h(moun)n(t)e
+(selector)13 b Fd(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
+(:)g(:)g(:)g(:)39 b Fr(30)150 1514 y Fw(/)150 1631 y
+Fr(/defaults)27 b(with)f(selectors)14 b Fd(:)g(:)f(:)g(:)g(:)h(:)f(:)g
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)40
+b Fr(111)150 1719 y(/etc/passwd)27 b(maps)15 b Fd(:)e(:)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(:)41 b Fr(21)150 1807 y(/etc/rc.lo)r(cal)29
+b(additions)16 b Fd(:)e(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)42 b Fr(73)150
+1894 y(/tftpb)r(o)r(ot)26 b(in)g(a)g(c)n(hro)r(ot-ed)g(en)n(vironmen)n
+(t)17 b Fd(:)12 b(:)h(:)g(:)h(:)f(:)g(:)g(:)g(:)44 b
+Fr(112)150 1982 y(/v)n(ol)13 b Fd(:)h(:)f(:)g(:)g(:)g(:)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(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)40
+b Fr(110)150 2239 y Fw(A)150 2356 y Fr(Additions)25 b(to)h(/etc/rc.lo)r
+(cal)11 b Fd(:)16 b(:)d(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)37 b Fr(73)150 2444 y(addopts,)26
+b(moun)n(t)f(option)8 b Fd(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)34
+b Fr(30)150 2532 y(Aliased)26 b(hostnames)11 b Fd(:)k(:)e(:)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(:)38 b Fr(41)150 2619 y(Alternate)26
+b(lo)r(cations)21 b Fd(:)13 b(:)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(:)46
+b Fr(14)150 2707 y Fq(am-eject)10 b Fd(:)15 b(:)e(:)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(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)37 b
+Fr(101)150 2795 y(Am-utils)25 b(b)r(o)r(ok)15 b Fd(:)f(:)f(:)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(:)g(:)42 b Fr(8)150
+2883 y(Amd)25 b(b)r(o)r(ok)11 b Fd(:)i(:)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(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)38 b Fr(8)150
+2970 y(Amd)25 b(command)h(line)g(options)12 b Fd(:)h(:)h(:)f(:)g(:)g(:)
+g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)38
+b Fr(39)150 3058 y(Amd)25 b(con\014guration)h(\014le)14
+b Fd(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
+h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)40 b Fr(44)150 3146 y(Amd)25
+b(Con\014guration)h(File)6 b Fd(:)15 b(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:)f
+(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)32
+b Fr(59)150 3234 y(Amd)25 b(con\014guration)h(\014le;)g(sp)r(ecifying)h
+(name)13 b Fd(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)39 b Fr(44)150
+3321 y(Amd's)25 b(PID)13 b Fd(:)g(:)g(:)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(:)g(:)g(:)h(:)f(:)39 b Fr(76)150 3409 y(Amd's)25
+b(pro)r(cess)i(ID)8 b Fd(:)k(:)h(:)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
+(:)34 b Fr(76)150 3497 y(amd.conf)16 b Fd(:)f(:)e(:)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(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)43
+b Fr(59)150 3585 y(amd.conf)27 b(common)f(parameters)d
+Fd(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
+(:)49 b Fr(59)150 3672 y(amd.conf)27 b(examples)22 b
+Fd(:)13 b(:)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(:)48 b Fr(71)150
+3760 y(amd.conf)27 b(\014le)c Fd(:)13 b(:)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(:)g(:)g(:)h(:)f(:)g(:)g(:)49 b Fr(44)150 3848 y(amd.conf)27
+b(\014le)e(format)17 b Fd(:)e(:)e(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
+(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)44
+b Fr(59)150 3936 y(amd.conf)27 b(global)g(parameters)12
+b Fd(:)i(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
+f(:)g(:)g(:)38 b Fr(61)150 4024 y(amd.conf)27 b(global)g(section)14
+b Fd(:)g(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
+g(:)g(:)g(:)g(:)g(:)h(:)f(:)40 b Fr(59)150 4111 y(amd.conf)27
+b(regular)f(map)g(parameters)12 b Fd(:)i(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)
+f(:)g(:)g(:)g(:)g(:)38 b Fr(70)150 4199 y(amd.conf)27
+b(regular)f(map)g(sections)16 b Fd(:)e(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g
+(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)42 b Fr(59)150 4287 y
+Fq(amd.conf-sample)9 b Fd(:)17 b(:)c(:)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
+(:)36 b Fr(101)150 4375 y Fq(amd2ldif)10 b Fd(:)15 b(:)e(:)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(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)37
+b Fr(101)150 4462 y Fq(amd2sun)12 b Fd(:)j(:)e(:)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(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)39 b
+Fr(101)150 4550 y(Amq)25 b(command)15 b Fd(:)e(:)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(:)g(:)g(:)g(:)g(:)42 b Fr(73)150 4638 y(arc)n(h)26
+b(P)n(arameter)12 b Fd(:)i(:)g(:)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(:)g(:)39 b Fr(61)150 4726 y(arc)n(h)26 b(Selector)g(V)-6
+b(ariable)23 b Fd(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
+f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)49 b
+Fr(26)150 4813 y(arc)n(h,)26 b(FSinfo)g(host)g(attribute)9
+b Fd(:)k(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
+g(:)g(:)h(:)f(:)35 b Fr(82)150 4901 y(arc)n(h,)26 b(moun)n(t)f
+(selector)15 b Fd(:)g(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)41
+b Fr(26)150 4989 y(Arc)n(hitecture)25 b(dep)r(enden)n(t)f(v)n(olumes)17
+b Fd(:)d(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)44
+b Fr(109)150 5077 y(Arc)n(hitecture)25 b(sharing)11 b
+Fd(:)j(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
+(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)37 b Fr(109)150 5164
+y(Arc)n(hitecture)25 b(sp)r(eci\014c)h(moun)n(ts)13 b
+Fd(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
+(:)39 b Fr(110)150 5252 y(Assorted)26 b(T)-6 b(o)r(ols)21
+b Fd(:)14 b(:)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(:)g(:)g(:)g(:)g(:)47
+b Fr(101)150 5340 y(A)n(tomic)26 b(NFS)f(moun)n(ts)11
+b Fd(:)i(:)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(:)38 b Fr(48)2025
+610 y(auto,)26 b(\014lesystem)g(t)n(yp)r(e)8 b Fd(:)13
+b(:)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(:)35 b Fr(54)2025 697
+y(auto)p 2179 697 V 34 w(attrcac)n(he)26 b(P)n(arameter)8
+b Fd(:)15 b(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
+(:)f(:)g(:)g(:)g(:)g(:)35 b Fr(61)2025 785 y(auto)p 2179
+785 V 34 w(dir)26 b(P)n(arameter)14 b Fd(:)f(:)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(:)40 b Fr(62)2025 872 y(auto)r(dir)26 b(Selector)g(V)-6
+b(ariable)23 b Fd(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
+g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)49 b Fr(26)2025 959
+y(auto)r(dir,)26 b(moun)n(t)f(selector)15 b Fd(:)g(:)e(:)g(:)g(:)g(:)g
+(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)
+41 b Fr(26)2025 1047 y(autofs)p 2232 1047 V 35 w(use)p
+2374 1047 V 34 w(lofs)27 b(P)n(arameter)9 b Fd(:)14 b(:)f(:)g(:)g(:)g
+(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)35
+b Fr(60)2025 1134 y(Automatic)26 b(generation)g(of)h(user)e(maps)d
+Fd(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)48
+b Fr(21)2025 1221 y(Automoun)n(t)24 b(directory)18 b
+Fd(:)c(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)45 b Fr(39)2025 1308
+y(Automoun)n(t)24 b(\014lesystem)f Fd(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)
+g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)49
+b Fr(54)2025 1396 y Fq(automount2amd)14 b Fd(:)i(:)d(:)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(:)41 b Fr(101)2025 1483 y(Automoun)n(ter)25
+b(b)r(o)r(ok)d Fd(:)14 b(:)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(:)50
+b Fr(8)2025 1570 y(Automoun)n(ter)25 b(con\014guration)h(maps)21
+b Fd(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)48
+b Fr(19)2025 1657 y(Automoun)n(ter)25 b(fundamen)n(tals)15
+b Fd(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
+g(:)g(:)g(:)42 b Fr(13)2025 1891 y Fw(B)2025 2007 y Fr(Bac)n(kground)26
+b(moun)n(ts)20 b Fd(:)13 b(:)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(:)47
+b Fr(14)2025 2094 y(Bac)n(kground)26 b(to)f(Mail)i(Deliv)n(ery)c
+Fd(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
+(:)g(:)49 b Fr(95)2025 2181 y(Binding)26 b(names)g(to)g(\014lesystems)d
+Fd(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
+(:)g(:)49 b Fr(14)2025 2269 y(b)r(o)r(ok)21 b Fd(:)13
+b(:)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(:)h(:)f(:)g(:)g(:)g(:)g(:)
+g(:)h(:)f(:)g(:)g(:)g(:)g(:)48 b Fr(8)2025 2356 y(b)r(o)r(otparams,)27
+b(FSinfo)f(pre\014x)19 b Fd(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
+(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)46 b Fr(88)2025
+2443 y(bro)n(wsable)p 2360 2443 V 35 w(dirs)26 b(P)n(arameter)10
+b Fd(:)k(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
+g(:)g(:)g(:)g(:)h(:)36 b Fr(60)2025 2530 y(Bug)26 b(rep)r(orts)d
+Fd(:)13 b(:)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(:)g(:)g(:)h(:)f(:)
+g(:)g(:)50 b Fr(7)2025 2618 y(b)n(yte)24 b(Selector)j(V)-6
+b(ariable)22 b Fd(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
+h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)48 b
+Fr(26)2025 2705 y(b)n(yte,)25 b(moun)n(t)g(selector)14
+b Fd(:)g(:)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(:)40 b Fr(26)2025
+2955 y Fw(C)2025 3071 y Fr(Cac)n(he)26 b(in)n(terv)l(al)14
+b Fd(:)f(:)g(:)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(:)g(:)41
+b Fr(39)2025 3158 y(cac)n(he,)26 b(moun)n(t)f(map)h(option)15
+b Fd(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
+h(:)f(:)g(:)g(:)g(:)42 b Fr(54)2025 3246 y(cac)n(he)p
+2211 3246 V 34 w(duration)26 b(P)n(arameter)c Fd(:)13
+b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)48 b Fr(63)2025 3333 y(cac)n(hedir,)26 b(moun)n(t)f(option)
+20 b Fd(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
+(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)46 b Fr(49)2025 3420
+y(cac)n(hefs,)27 b(\014lesystem)f(t)n(yp)r(e)17 b Fd(:)12
+b(:)h(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)g(:)h(:)f(:)43 b Fr(49)2025 3507 y(Cac)n(hing)26
+b(Filesystem)13 b Fd(:)i(:)e(:)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(:)40
+b Fr(49)2025 3595 y(Catc)n(h-all)26 b(moun)n(t)f(p)r(oin)n(t)15
+b Fd(:)f(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
+g(:)g(:)g(:)g(:)g(:)h(:)f(:)42 b Fr(110)2025 3682 y(CD-R)n(OM)25
+b(Filesystem)c Fd(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
+g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)47
+b Fr(50)2025 3769 y(cdfs,)26 b(\014lesystem)g(t)n(yp)r(e)18
+b Fd(:)12 b(:)h(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
+(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)44 b Fr(50)2025
+3856 y(Cen)n(tralized)26 b(Mail)h(Sp)r(o)r(ol)g(Directory)21
+b Fd(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)47
+b Fr(95)2025 3944 y(Changing)26 b(the)g(in)n(terv)l(al)f(b)r(efore)i(a)
+f(\014lesystem)g(times)g(out)2185 4031 y Fd(:)13 b(:)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(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
+(:)f(:)33 b Fr(39)2025 4118 y(c)n(hro)r(ot;)26 b(/tftpb)r(o)r(ot)h
+(example)17 b Fd(:)c(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
+g(:)g(:)g(:)g(:)h(:)f(:)44 b Fr(112)2025 4205 y(Cluster)26
+b(names)15 b Fd(:)f(:)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(:)g(:)g(:)h(:)
+f(:)41 b Fr(43)2025 4293 y(cluster)26 b(P)n(arameter)7
+b Fd(:)14 b(:)f(:)g(:)g(:)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(:)33
+b Fr(63)2025 4380 y(cluster)26 b(Selector)g(V)-6 b(ariable)17
+b Fd(:)d(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
+g(:)g(:)g(:)g(:)g(:)h(:)43 b Fr(26)2025 4467 y(cluster,)26
+b(FSinfo)g(host)g(attribute)21 b Fd(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f
+(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)47 b Fr(82)2025
+4555 y(cluster,)26 b(moun)n(t)f(selector)9 b Fd(:)15
+b(:)e(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
+(:)g(:)h(:)f(:)g(:)g(:)g(:)36 b Fr(26)2025 4642 y(CNAMEs)7
+b Fd(:)14 b(:)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(:)g(:)g(:)h(:)f(:)g(:)
+g(:)g(:)g(:)g(:)34 b Fr(30)2025 4729 y(Command)26 b(line)g(options,)h
+(Amd)8 b Fd(:)k(:)h(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
+(:)h(:)f(:)g(:)34 b Fr(39)2025 4816 y(Command)26 b(line)g(options,)h
+(FSinfo)15 b Fd(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
+(:)f(:)g(:)41 b Fr(88)2025 4904 y(con\014g,)26 b(FSinfo)g(host)g
+(attribute)17 b Fd(:)c(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
+(:)g(:)g(:)h(:)f(:)g(:)43 b Fr(81)2025 4991 y(Con\014guration)26
+b(\014le;)g(tags)6 b Fd(:)15 b(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
+(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)33
+b Fr(45)2025 5078 y(Con\014guration)26 b(map)g(t)n(yp)r(es)8
+b Fd(:)k(:)h(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
+g(:)g(:)h(:)f(:)g(:)g(:)34 b Fr(19)2025 5165 y(Con)n(trolling)27
+b(Amd)21 b Fd(:)13 b(:)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(:)48
+b Fr(74)2025 5253 y(Con)n(trolling)27 b(Hlfsd)16 b Fd(:)e(:)f(:)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(:)43 b Fr(98)2025 5340
+y(Creating)27 b(a)f(pid)f(\014le)17 b Fd(:)d(:)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(:)g(:)g(:)44 b Fr(41)p eop end
+%%Page: 122 124
+TeXDict begin 122 123 bop 150 -116 a Fx(122)1810 b(Am-utils)30
+b(\(4.4BSD)j(Automoun)m(ter)d(Utilities\))150 299 y Fr(ctl-amd)7
+b Fd(:)13 b(:)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(:)g(:)g(:)
+g(:)g(:)h(:)f(:)g(:)g(:)33 b Fr(73)150 389 y Fq(ctl-amd)12
+b Fd(:)j(:)e(:)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(:)g(:)g(:)g(:)g(:)g
+(:)h(:)f(:)g(:)39 b Fr(102)150 479 y Fq(ctl-hlfsd)14
+b Fd(:)h(:)e(:)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(:)40
+b Fr(98,)27 b(102)150 745 y Fw(D)150 867 y Fr(Debug)e(options)11
+b Fd(:)j(:)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(:)g(:)38
+b Fr(44)150 958 y(debug)p 356 958 24 4 v 33 w(m)n(tab)p
+562 958 V 34 w(\014le)26 b(P)n(arameter)20 b Fd(:)13
+b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
+(:)h(:)45 b Fr(63)150 1048 y(debug)p 356 1048 V 33 w(options)27
+b(P)n(arameter)16 b Fd(:)d(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
+(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)42 b Fr(63)150
+1138 y(Debugging)26 b(a)g(new)g(Amd)f(con\014guration)13
+b Fd(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)39 b Fr(76)150
+1229 y(debugging)26 b(hesio)r(d)g(resolv)n(er)h(service)c
+Fd(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)49
+b Fr(44)150 1319 y(Debugging)26 b(options)g(via)g(Amq)6
+b Fd(:)12 b(:)h(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
+(:)g(:)h(:)f(:)32 b Fr(77)150 1409 y(De\014ning)25 b(a)h(host,)g
+(FSinfo)20 b Fd(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
+(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)46 b Fr(80)150
+1499 y(De\014ning)25 b(an)h(Amd)f(moun)n(t)g(map,)h(FSinfo)20
+b Fd(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)46 b Fr(86)150
+1590 y(De\014ning)25 b(host)h(attributes,)g(FSinfo)11
+b Fd(:)i(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)37
+b Fr(80)150 1680 y(dela)n(y)-6 b(,)25 b(moun)n(t)h(option)c
+Fd(:)13 b(:)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(:)48 b Fr(31)150
+1770 y(Dela)n(ying)26 b(moun)n(ts)f(from)i(sp)r(eci\014c)f(lo)r
+(cations)13 b Fd(:)i(:)e(:)g(:)g(:)g(:)h(:)f(:)39 b Fr(31)150
+1860 y(Determining)26 b(the)f(map)h(t)n(yp)r(e)13 b Fd(:)f(:)h(:)g(:)g
+(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)39
+b Fr(19)150 1951 y(dev,)25 b(moun)n(t)g(option)9 b Fd(:)14
+b(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
+(:)g(:)g(:)g(:)36 b Fr(49,)27 b(50,)f(51)150 2041 y(Direct)g(automoun)n
+(t)f(\014lesystem)17 b Fd(:)d(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
+(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)44 b Fr(55)150 2131 y(direct,)26
+b(\014lesystem)g(t)n(yp)r(e)20 b Fd(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g
+(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)47
+b Fr(55)150 2222 y(Disco)n(v)n(ering)26 b(v)n(ersion)g(information)13
+b Fd(:)i(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)39
+b Fr(41)150 2312 y(Disco)n(v)n(ering)26 b(what)g(is)g(going)h(on)f(at)g
+(run-time)10 b Fd(:)i(:)h(:)g(:)h(:)f(:)g(:)36 b Fr(74)150
+2402 y(Disk)25 b(\014lesystems)d Fd(:)14 b(:)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(:)g(:)48 b Fr(49)150 2492 y(dismoun)n(t)p
+465 2492 V 34 w(in)n(terv)l(al)25 b(P)n(arameter)8 b
+Fd(:)14 b(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
+(:)h(:)f(:)34 b Fr(63)150 2583 y(Displa)n(ying)26 b(brief)g(help)14
+b Fd(:)g(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
+g(:)g(:)g(:)g(:)g(:)h(:)41 b Fr(45,)26 b(75)150 2673
+y(Displa)n(ying)g(the)f(pro)r(cess)i(id)21 b Fd(:)13
+b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
+(:)g(:)g(:)g(:)47 b Fr(41)150 2763 y(Distributed)25 b(Mail)i(Sp)r(o)r
+(ol)f(Service)9 b Fd(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)h(:)f(:)35 b Fr(96)150 2854 y(dollar)27 b(Selector)f(V)-6
+b(ariable)15 b Fd(:)f(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
+(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)41 b Fr(27)150
+2944 y(Domain)26 b(name)20 b Fd(:)14 b(:)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(:)g(:)g(:)h(:)46 b Fr(40)150 3034 y(domain)26
+b(Selector)g(V)-6 b(ariable)22 b Fd(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g
+(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)48
+b Fr(26)150 3124 y(Domain)26 b(stripping)11 b Fd(:)j(:)f(:)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(:)g(:)g(:)38 b Fr(25)150 3215 y(domain,)26
+b(moun)n(t)f(selector)14 b Fd(:)h(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)40
+b Fr(26)150 3305 y(domain)p 402 3305 V 34 w(strip)26
+b(P)n(arameter)21 b Fd(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
+(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)46 b Fr(63)150
+3395 y(Domainname)26 b(op)r(erators)17 b Fd(:)d(:)f(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)43
+b Fr(25)150 3485 y(dumpset,)25 b(FSinfo)h(\014lesystems)h(option)9
+b Fd(:)k(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)35
+b Fr(85)150 3576 y(dumpset,)25 b(FSinfo)h(pre\014x)7
+b Fd(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
+(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)33 b Fr(88)150 3666
+y(Duplicated)25 b(v)n(olumes)9 b Fd(:)14 b(:)f(:)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(:)36 b Fr(13)150 3932 y Fw(E)150 4054 y Fr(EFS)11
+b Fd(:)i(:)g(:)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(:)g(:)g(:)h
+(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)37 b Fr(49)150 4144
+y(efs,)27 b(\014lesystem)f(t)n(yp)r(e)21 b Fd(:)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(:)g(:)h(:)48 b Fr(49)150 4235 y(En)n(vironmen)n(t)25
+b(v)l(ariables)14 b Fd(:)g(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)41
+b Fr(25)150 4325 y(Error)26 b(\014lesystem)c Fd(:)13
+b(:)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(:)48
+b Fr(56)150 4415 y(error,)27 b(\014lesystem)e(t)n(yp)r(e)19
+b Fd(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
+(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)45 b Fr(56)150
+4505 y(Example)26 b(of)g(arc)n(hitecture)g(sp)r(eci\014c)g(moun)n(ts)7
+b Fd(:)13 b(:)g(:)g(:)g(:)g(:)h(:)33 b Fr(110)150 4596
+y(Example)26 b(of)g(moun)n(ting)g(home)g(directories)11
+b Fd(:)j(:)f(:)h(:)f(:)g(:)g(:)g(:)38 b Fr(108)150 4686
+y(exec)p 298 4686 V 34 w(map)p 477 4686 V 34 w(timeout)25
+b(P)n(arameter)15 b Fd(:)g(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)h(:)f(:)g(:)41 b Fr(63)150 4776 y(Executable)26
+b(maps)20 b Fd(:)13 b(:)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(:)46
+b Fr(23)150 4867 y(exists)26 b(Selector)g(F)-6 b(unction)9
+b Fd(:)k(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
+g(:)g(:)g(:)g(:)h(:)f(:)g(:)35 b Fr(29)150 4957 y(exists,)26
+b(b)r(o)r(olean)h(moun)n(t)e(selector)e Fd(:)13 b(:)g(:)g(:)g(:)g(:)g
+(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)47 b Fr(29)150
+5047 y(exp)r(ort,)26 b(FSinfo)g(sp)r(ecial)h(fst)n(yp)r(e)13
+b Fd(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
+g(:)h(:)39 b Fr(84)150 5137 y(exp)r(ortfs,)26 b(FSinfo)h(moun)n(t)e
+(option)19 b Fd(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
+(:)f(:)g(:)g(:)45 b Fr(84)150 5228 y(exp)r(orts,)26 b(FSinfo)g
+(pre\014x)9 b Fd(:)k(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
+g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)35 b
+Fr(89)2025 299 y Fw(F)2025 416 y Fr(false)27 b(Selector)f(F)-6
+b(unction)11 b Fd(:)i(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)38 b Fr(29)2025
+504 y(false,)27 b(b)r(o)r(olean)g(moun)n(t)e(selector)6
+b Fd(:)15 b(:)e(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
+(:)g(:)g(:)33 b Fr(29)2025 592 y(File)26 b(map)g(syn)n(tactic)g(con)n
+(v)n(en)n(tions)9 b Fd(:)j(:)i(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
+(:)g(:)g(:)g(:)g(:)36 b Fr(19)2025 680 y(File)26 b(maps)d
+Fd(:)13 b(:)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(:)h(:)f(:)g(:)g(:)g(:)
+g(:)g(:)g(:)49 b Fr(19)2025 768 y(Fileserv)n(er)7 b Fd(:)14
+b(:)f(:)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(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
+g(:)h(:)33 b Fr(13)2025 856 y(Filesystem)8 b Fd(:)14
+b(:)f(:)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(:)g(:)g(:)
+h(:)34 b Fr(13)2025 944 y(Filesystem)26 b(info)h(pac)n(k)l(age)11
+b Fd(:)i(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
+h(:)f(:)g(:)g(:)g(:)g(:)g(:)38 b Fr(79)2025 1032 y(Filesystem)26
+b(t)n(yp)r(e;)g(auto)11 b Fd(:)i(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
+g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)38
+b Fr(54)2025 1120 y(Filesystem)26 b(t)n(yp)r(e;)g(cac)n(hefs)20
+b Fd(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
+(:)g(:)h(:)f(:)g(:)g(:)g(:)46 b Fr(49)2025 1208 y(Filesystem)26
+b(t)n(yp)r(e;)g(cdfs)21 b Fd(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
+(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)47
+b Fr(50)2025 1296 y(Filesystem)26 b(t)n(yp)r(e;)g(direct)7
+b Fd(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
+(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)33 b Fr(55)2025 1383
+y(Filesystem)26 b(t)n(yp)r(e;)g(efs)8 b Fd(:)13 b(:)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(:)34 b Fr(49)2025 1471 y(Filesystem)26
+b(t)n(yp)r(e;)g(error)c Fd(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)48
+b Fr(56)2025 1559 y(Filesystem)26 b(t)n(yp)r(e;)g(host)15
+b Fd(:)e(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
+g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)42 b Fr(47)2025 1647
+y(Filesystem)26 b(t)n(yp)r(e;)g(inherit)9 b Fd(:)k(:)g(:)g(:)g(:)g(:)g
+(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
+35 b Fr(56)2025 1735 y(Filesystem)26 b(t)n(yp)r(e;)g(link)c
+Fd(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
+(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)49 b Fr(52)2025
+1823 y(Filesystem)26 b(t)n(yp)r(e;)g(linkx)19 b Fd(:)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(:)46 b Fr(53)2025 1911 y(Filesystem)26
+b(t)n(yp)r(e;)g(lofs)12 b Fd(:)i(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
+h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)39
+b Fr(50)2025 1999 y(Filesystem)26 b(t)n(yp)r(e;)g(mfs)10
+b Fd(:)j(:)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(:)36 b Fr(51)2025
+2087 y(Filesystem)26 b(t)n(yp)r(e;)g(nfs)21 b Fd(:)13
+b(:)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(:)47 b Fr(47)2025 2175
+y(Filesystem)26 b(t)n(yp)r(e;)g(nfsl)10 b Fd(:)j(:)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(:)36 b Fr(53)2025 2263 y(Filesystem)26 b(t)n(yp)r(e;)g(nfsx)17
+b Fd(:)c(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
+g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)44 b Fr(48)2025 2351
+y(Filesystem)26 b(t)n(yp)r(e;)g(n)n(ullfs)13 b Fd(:)g(:)h(:)f(:)g(:)g
+(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
+g(:)g(:)40 b Fr(51)2025 2439 y(Filesystem)26 b(t)n(yp)r(e;)g(p)r(cfs)20
+b Fd(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)46 b Fr(51)2025
+2526 y(Filesystem)26 b(t)n(yp)r(e;)g(program)13 b Fd(:)h(:)f(:)g(:)g(:)
+g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)40
+b Fr(52)2025 2614 y(Filesystem)26 b(t)n(yp)r(e;)g(ro)r(ot)16
+b Fd(:)e(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
+g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)43 b Fr(56)2025 2702
+y(Filesystem)26 b(t)n(yp)r(e;)g(tfs)10 b Fd(:)j(:)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(:)36 b Fr(51)2025 2790 y(Filesystem)26 b(t)n(yp)r(e;)g(tmpfs)
+8 b Fd(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
+(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)34 b Fr(51)2025
+2878 y(Filesystem)26 b(t)n(yp)r(e;)g(toplvl)d Fd(:)13
+b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
+(:)g(:)g(:)g(:)g(:)h(:)49 b Fr(56)2025 2966 y(Filesystem)26
+b(t)n(yp)r(e;)g(udf)14 b Fd(:)f(:)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(:)41
+b Fr(50)2025 3054 y(Filesystem)26 b(t)n(yp)r(e;)g(ufs)21
+b Fd(:)13 b(:)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(:)47 b Fr(49)2025
+3142 y(Filesystem)26 b(t)n(yp)r(e;)g(umapfs)16 b Fd(:)d(:)h(:)f(:)g(:)g
+(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
+43 b Fr(51)2025 3230 y(Filesystem)26 b(t)n(yp)r(e;)g(union)9
+b Fd(:)j(:)i(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
+h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)36 b Fr(55)2025 3318
+y(Filesystem)26 b(t)n(yp)r(e;)g(xfs)21 b Fd(:)14 b(:)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(:)48 b Fr(49)2025 3406 y(Filesystem)26 b(t)n(yp)r(es)9
+b Fd(:)k(:)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(:)35
+b Fr(47)2025 3494 y Fq(fix-amd-map)22 b Fd(:)13 b(:)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(:)h(:)f(:)g(:)46 b Fr(102)2025
+3582 y Fq(fixmount)10 b Fd(:)15 b(:)e(:)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(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)37 b Fr(103)2025
+3669 y Fq(fixrmtab)10 b Fd(:)15 b(:)e(:)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(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)37 b Fr(103)2025
+3757 y(Flat)26 b(\014le)g(maps)c Fd(:)13 b(:)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(:)g(:)g(:)49 b Fr(19)2025 3845 y(Flopp)n(y)25
+b(Filesystem)15 b Fd(:)f(:)f(:)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(:)41
+b Fr(51)2025 3933 y(Flushing)26 b(the)f(map)h(cac)n(he)8
+b Fd(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
+(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)35 b Fr(75)2025 4021 y(forced)p
+2232 4021 V 34 w(unmoun)n(ts)25 b(P)n(arameter)e Fd(:)13
+b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
+(:)48 b Fr(63)2025 4109 y(F)-6 b(orcing)26 b(Amq)f(to)h(use)f(a)h(TCP)h
+(transp)r(ort)19 b Fd(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)45
+b Fr(76)2025 4197 y(F)-6 b(orcing)26 b(Amq)f(to)h(use)f(a)h(UDP)f
+(transp)r(ort)16 b Fd(:)e(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)43
+b Fr(77)2025 4285 y(F)-6 b(orcing)26 b(\014lesystem)g(to)g(time)g(out)7
+b Fd(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
+(:)f(:)33 b Fr(77)2025 4373 y(freq,)26 b(FSinfo)g(\014lesystems)g
+(option)20 b Fd(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
+(:)g(:)g(:)g(:)46 b Fr(84)2025 4461 y(fs,)26 b(moun)n(t)f(option)11
+b Fd(:)j(:)f(:)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(:)37
+b Fr(31)2025 4549 y(FSinfo)8 b Fd(:)14 b(:)f(:)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(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)35
+b Fr(79)2025 4637 y(FSinfo)26 b(arc)n(h)g(host)g(attribute)19
+b Fd(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
+(:)g(:)g(:)h(:)f(:)46 b Fr(82)2025 4725 y(FSinfo)26 b(automoun)n(t)f
+(de\014nitions)20 b Fd(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
+(:)g(:)g(:)g(:)g(:)g(:)h(:)46 b Fr(86)2025 4812 y(FSinfo)26
+b(cluster)g(host)g(attribute)14 b Fd(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
+g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)41 b Fr(82)2025
+4900 y(FSinfo)26 b(command)g(line)g(options)19 b Fd(:)14
+b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)45
+b Fr(88)2025 4988 y(FSinfo)26 b(con\014g)g(host)g(attribute)10
+b Fd(:)j(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
+g(:)g(:)g(:)37 b Fr(81)2025 5076 y(FSinfo)26 b(dumpset)f(\014lesystems)
+h(option)20 b Fd(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
+46 b Fr(85)2025 5164 y(FSinfo)26 b(error)g(messages)7
+b Fd(:)16 b(:)d(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)34 b Fr(90)2025
+5252 y(FSinfo)26 b(\014lesystems)c Fd(:)13 b(:)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(:)48 b Fr(82)2025 5340 y(FSinfo)26 b(freq)g(\014lesystems)
+g(option)13 b Fd(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
+g(:)g(:)g(:)g(:)40 b Fr(84)p eop end
+%%Page: 123 125
+TeXDict begin 123 124 bop 150 -116 a Fx(Index)3241 b(123)150
+299 y Fr(FSinfo)26 b(fst)n(yp)r(e)g(\014lesystems)g(option)11
+b Fd(:)i(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)37
+b Fr(84)150 387 y(FSinfo)26 b(grammar)15 b Fd(:)f(:)f(:)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(:)g(:)g(:)41 b Fr(80)150 474 y(FSinfo)26
+b(host)g(attributes)21 b Fd(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)47
+b Fr(80)150 562 y(FSinfo)26 b(host)g(de\014nitions)12
+b Fd(:)h(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
+h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)39 b Fr(80)150 650 y(FSinfo)26
+b(log)h(\014lesystems)f(option)11 b Fd(:)j(:)f(:)g(:)g(:)g(:)g(:)g(:)g
+(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)37 b Fr(85)150
+738 y(FSinfo)26 b(moun)n(t)f(\014lesystems)h(option)21
+b Fd(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)47
+b Fr(84)150 826 y(FSinfo)26 b(opts)g(\014lesystems)g(option)6
+b Fd(:)14 b(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+(:)g(:)33 b Fr(84)150 913 y(FSinfo)26 b(os)h(host)e(attribute)e
+Fd(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)h(:)f(:)g(:)g(:)49 b Fr(82)150 1001 y(FSinfo)26
+b(o)n(v)n(erview)c Fd(:)13 b(:)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
+(:)h(:)47 b Fr(79)150 1089 y(FSinfo)26 b(passno)h(\014lesystems)f
+(option)17 b Fd(:)c(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
+(:)43 b Fr(84)150 1177 y(FSinfo)26 b(static)h(moun)n(ts)7
+b Fd(:)13 b(:)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(:)33 b Fr(85)150
+1265 y(fstab,)27 b(FSinfo)f(pre\014x)17 b Fd(:)12 b(:)h(:)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(:)43 b Fr(89)150 1352 y(fst)n(yp)r(e,)26
+b(FSinfo)g(\014lesystems)g(option)17 b Fd(:)d(:)f(:)g(:)g(:)g(:)h(:)f
+(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)43 b Fr(84)150 1440 y(full)p
+263 1440 24 4 v 35 w(os)26 b(P)n(arameter)12 b Fd(:)j(:)e(:)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(:)g(:)39 b Fr(64)150 1528 y(full)p
+263 1528 V 35 w(os)26 b(Selector)g(V)-6 b(ariable)23
+b Fd(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
+(:)h(:)f(:)g(:)g(:)g(:)g(:)49 b Fr(27)150 1616 y(full)p
+263 1616 V 35 w(os,)26 b(moun)n(t)f(selector)15 b Fd(:)g(:)e(:)g(:)g(:)
+g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
+(:)h(:)f(:)41 b Fr(27)150 1703 y(fully)p 304 1703 V 34
+w(quali\014ed)p 622 1703 V 34 w(hosts)26 b(P)n(arameter)c
+Fd(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)47
+b Fr(64)150 1956 y Fw(G)150 2073 y Fr(Generic)26 b(v)n(olume)g(name)9
+b Fd(:)k(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
+g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)35 b Fr(110)150 2161
+y(Getting)26 b(Additional)g(Information)16 b Fd(:)e(:)f(:)g(:)g(:)h(:)f
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)43 b Fr(7)150
+2249 y(Getting)26 b(real)h(w)n(orking)f(directory)16
+b Fd(:)d(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
+42 b Fr(77)150 2337 y(gid)26 b(Selector)g(V)-6 b(ariable)9
+b Fd(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
+(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)35 b Fr(29)150
+2424 y(gid,)26 b(moun)n(t)f(selector)18 b Fd(:)d(:)e(:)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(:)44 b Fr(29)150 2512 y(Global)27 b(statistics)17
+b Fd(:)d(:)f(:)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(:)43
+b Fr(76)150 2600 y(Grammar,)27 b(FSinfo)10 b Fd(:)k(:)f(:)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(:)36 b Fr(80)150 2853 y Fw(H)150
+2970 y Fr(Help;)26 b(sho)n(wing)g(from)h(Amd)21 b Fd(:)13
+b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
+(:)g(:)g(:)g(:)48 b Fr(45)150 3058 y(Help;)26 b(sho)n(wing)g(from)h
+(Amq)21 b Fd(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
+(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)49 b Fr(75)150 3145 y(Hesio)r(d)26
+b(maps)6 b Fd(:)14 b(:)f(:)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(:)g
+(:)g(:)g(:)g(:)33 b Fr(21)150 3233 y(Hesio)r(d;)26 b(turning)g(on)f
+(RES)p 960 3233 V 34 w(DEBUG)18 b Fd(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g
+(:)h(:)f(:)g(:)g(:)g(:)44 b Fr(44)150 3321 y(hesio)r(d)p
+366 3321 V 34 w(base)27 b(P)n(arameter)8 b Fd(:)14 b(:)f(:)g(:)g(:)g(:)
+g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
+(:)g(:)34 b Fr(64)150 3409 y(History)11 b Fd(:)i(:)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(:)g(:)g(:)h(:)f(:)g(:)g(:)37
+b Fr(11)150 3496 y Fq(Hlfsd)21 b Fd(:)13 b(:)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(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)46
+b Fr(93)150 3584 y(Hlfsd)26 b(Files)d Fd(:)13 b(:)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(:)g(:)g(:)g(:)g(:)g(:)49 b Fr(100)150
+3672 y(Hlfsd)26 b(Options)21 b Fd(:)13 b(:)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(:)g(:)g(:)48 b Fr(98)150 3760 y(Hlfsd;)26
+b(bac)n(kground)17 b Fd(:)c(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
+(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)43
+b Fr(95)150 3848 y(Hlfsd;)26 b(con)n(trolling)16 b Fd(:)f(:)e(:)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(:)42 b Fr(98)150 3935 y(Hlfsd;)26
+b(Files)11 b Fd(:)k(:)e(:)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(:)38 b Fr(100)150 4023 y(Hlfsd;)26 b(in)n(tro)r(duction)c
+Fd(:)13 b(:)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(:)g(:)48 b Fr(93)150
+4111 y(Hlfsd;)26 b(Options)11 b Fd(:)i(:)g(:)g(:)g(:)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(:)37 b Fr(98)150 4199 y(Hlfsd;)26
+b(using)c Fd(:)13 b(:)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(:)g(:)g(:)48 b Fr(98)150 4287 y(Hlfsd;)26 b(Wh)n(y)f(Deliv)n(er)h(In)
+n(to)f(the)g(Home)h(Directory?)14 b Fd(:)f(:)40 b Fr(97)150
+4374 y(Home)26 b(directories)21 b Fd(:)14 b(:)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(:)47 b Fr(108)150 4462 y(Home-Link)25 b(Filesystem)14
+b Fd(:)g(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
+g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)40 b Fr(93)150 4550 y(host)26
+b(Selector)g(V)-6 b(ariable)6 b Fd(:)14 b(:)f(:)g(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
+33 b Fr(27)150 4638 y(host,)26 b(\014lesystem)g(t)n(yp)r(e)13
+b Fd(:)f(:)h(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
+g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)39 b Fr(47)150
+4725 y(host,)26 b(moun)n(t)f(selector)16 b Fd(:)f(:)e(:)g(:)g(:)g(:)g
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
+h(:)f(:)g(:)42 b Fr(27)150 4813 y(hostd)25 b(Selector)i(V)-6
+b(ariable)20 b Fd(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
+g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)45 b Fr(27)150
+4901 y(hostd,)26 b(moun)n(t)f(selector)12 b Fd(:)i(:)f(:)g(:)g(:)g(:)h
+(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
+g(:)g(:)38 b Fr(27)150 4989 y(Hostname)26 b(normalization)14
+b Fd(:)h(:)e(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
+g(:)g(:)g(:)g(:)h(:)f(:)40 b Fr(41)150 5077 y(hostname,)26
+b(FSinfo)h(command)e(line)i(option)21 b Fd(:)13 b(:)g(:)g(:)g(:)g(:)h
+(:)f(:)47 b Fr(89)150 5164 y(Ho)n(w)26 b(k)n(eys)f(are)h(lo)r(ok)n(ed)g
+(up)9 b Fd(:)j(:)h(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)35 b Fr(23)150 5252
+y(Ho)n(w)26 b(lo)r(cations)h(are)g(parsed)20 b Fd(:)13
+b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
+(:)g(:)h(:)f(:)46 b Fr(24)150 5340 y(Ho)n(w)26 b(to)g(access)h(en)n
+(vironmen)n(t)e(v)l(ariables)h(in)g(maps)d Fd(:)13 b(:)49
+b Fr(25)2025 299 y(Ho)n(w)26 b(to)g(disco)n(v)n(er)f(y)n(our)h(v)n
+(ersion)f(of)i(Amd)21 b Fd(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)49
+b Fr(41)2025 387 y(Ho)n(w)26 b(to)g(moun)n(t)f(a)h(lo)r(cal)h(disk)14
+b Fd(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
+g(:)g(:)g(:)g(:)41 b Fr(49)2025 474 y(Ho)n(w)26 b(to)g(moun)n(t)f(a)h
+(UFS)f(\014lesystems)8 b Fd(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
+(:)g(:)g(:)h(:)f(:)34 b Fr(49)2025 562 y(Ho)n(w)26 b(to)g(moun)n(t)f
+(all)h(NFS)f(exp)r(orted)g(\014lesystems)14 b Fd(:)g(:)f(:)g(:)41
+b Fr(47)2025 650 y(Ho)n(w)26 b(to)g(moun)n(t)f(an)g(atomic)i(group)f
+(of)g(NFS)f(\014lesystems)2185 737 y Fd(:)13 b(:)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(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
+(:)33 b Fr(48)2025 825 y(Ho)n(w)26 b(to)g(moun)n(t)f(and)g(NFS)g
+(\014lesystem)14 b Fd(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+(:)41 b Fr(47)2025 913 y(Ho)n(w)25 b(to)h(reference)g(an)f(existing)h
+(part)f(of)h(the)f(lo)r(cal)i(name)2178 1000 y(space)20
+b Fd(:)14 b(:)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(:)g(:)g(:)h(:)f(:)
+g(:)g(:)g(:)46 b Fr(53)2025 1088 y(Ho)n(w)26 b(to)g(reference)g(part)g
+(of)g(the)f(lo)r(cal)j(name)e(space)12 b Fd(:)h(:)38
+b Fr(52)2025 1175 y(Ho)n(w)26 b(to)g(select)g(log)h(messages)8
+b Fd(:)15 b(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
+(:)g(:)g(:)g(:)g(:)35 b Fr(42)2025 1263 y(Ho)n(w)26 b(to)g(set)f
+(default)i(map)e(parameters)18 b Fd(:)c(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g
+(:)g(:)h(:)44 b Fr(25)2025 1351 y(Ho)n(w)26 b(to)g(set)f(map)h(cac)n
+(he)g(parameters)9 b Fd(:)15 b(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
+(:)g(:)g(:)36 b Fr(54)2025 1439 y(Ho)n(w)26 b(to)g(start)g(a)g(direct)f
+(automoun)n(t)h(p)r(oin)n(t)14 b Fd(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
+40 b Fr(55)2025 1527 y(Ho)n(w)26 b(to)g(start)g(an)f(indirect)h
+(automoun)n(t)f(p)r(oin)n(t)12 b Fd(:)h(:)g(:)g(:)h(:)f(:)38
+b Fr(54)2025 1614 y(Ho)n(w)26 b(v)l(ariables)g(are)g(expanded)6
+b Fd(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
+(:)g(:)g(:)g(:)33 b Fr(25)2025 1867 y Fw(I)2025 1984
+y Fr(in)p 2094 1984 V 34 w(net)n(w)n(ork)25 b(Selector)h(F)-6
+b(unction)22 b Fd(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
+f(:)g(:)g(:)g(:)g(:)49 b Fr(30)2025 2072 y(in)p 2094
+2072 V 34 w(net)n(w)n(ork,)25 b(b)r(o)r(olean)i(moun)n(t)e(selector)17
+b Fd(:)e(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)44
+b Fr(30)2025 2160 y(inherit,)26 b(\014lesystem)g(t)n(yp)r(e)6
+b Fd(:)12 b(:)h(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)33 b Fr(56)2025 2247
+y(Inheritance)25 b(\014lesystem)8 b Fd(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
+g(:)35 b Fr(56)2025 2335 y(In)n(terv)l(al)25 b(b)r(efore)h(a)g
+(\014lesystem)g(times)g(out)d Fd(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
+(:)50 b Fr(39)2025 2423 y(In)n(tro)r(duction)12 b Fd(:)g(:)h(:)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(:)g(:)g(:)h(:)f(:)g(:)39
+b Fr(9)2025 2511 y(In)n(tro)r(duction)25 b(to)h(Hlfsd)16
+b Fd(:)d(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
+g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)43 b Fr(93)2025 2747
+y Fw(K)2025 2864 y Fr(k)l(arc)n(h)25 b(P)n(arameter)11
+b Fd(:)j(:)f(:)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(:)38
+b Fr(64)2025 2951 y(k)l(arc)n(h)25 b(Selector)h(V)-6
+b(ariable)22 b Fd(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
+f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)48 b Fr(27)2025
+3039 y(k)l(arc)n(h,)25 b(moun)n(t)g(selector)14 b Fd(:)g(:)g(:)f(:)g(:)
+g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
+(:)g(:)g(:)h(:)40 b Fr(27)2025 3127 y(Keep-aliv)n(es)13
+b Fd(:)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(:)g(:)g
+(:)h(:)39 b Fr(15)2025 3215 y(Key)25 b(lo)r(okup)10 b
+Fd(:)j(:)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(:)g(:)g(:)g(:)g(:)
+g(:)37 b Fr(23)2025 3303 y(k)n(ey)24 b(Selector)j(V)-6
+b(ariable)21 b Fd(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
+g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)47
+b Fr(28)2025 3390 y(k)n(ey)-6 b(,)24 b(moun)n(t)h(selector)16
+b Fd(:)f(:)e(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
+g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)43 b Fr(28)2025
+3478 y(Killing)26 b(and)g(starting)g(Amd)16 b Fd(:)d(:)g(:)g(:)g(:)g(:)
+g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)43
+b Fr(73)2025 3731 y Fw(L)2025 3848 y Fr(LD)n(AP)25 b(maps)12
+b Fd(:)i(:)f(:)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(:)h(:)f(:)g(:)g
+(:)39 b Fr(22)2025 3936 y(ldap)p 2175 3936 V 34 w(base)26
+b(P)n(arameter)7 b Fd(:)14 b(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
+h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)34
+b Fr(64)2025 4023 y(ldap)p 2175 4023 V 34 w(cac)n(he)p
+2390 4023 V 34 w(maxmem)25 b(P)n(arameter)7 b Fd(:)15
+b(:)e(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)34
+b Fr(65)2025 4111 y(ldap)p 2175 4111 V 34 w(cac)n(he)p
+2390 4111 V 34 w(seconds)26 b(P)n(arameter)17 b Fd(:)d(:)f(:)g(:)g(:)g
+(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)43 b Fr(65)2025
+4199 y(ldap)p 2175 4199 V 34 w(hostp)r(orts)26 b(P)n(arameter)8
+b Fd(:)14 b(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
+(:)g(:)g(:)g(:)g(:)h(:)34 b Fr(65)2025 4287 y(ldap)p
+2175 4287 V 34 w(proto)p 2388 4287 V 34 w(v)n(ersion)26
+b(P)n(arameter)9 b Fd(:)14 b(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
+h(:)f(:)g(:)g(:)g(:)g(:)36 b Fr(65)2025 4374 y(License)26
+b(Information)8 b Fd(:)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(:)35
+b Fr(3)2025 4462 y(Ligh)n(t)n(w)n(eigh)n(t)26 b(Directory)g(Access)g
+(Proto)r(col)17 b Fd(:)e(:)e(:)h(:)f(:)g(:)g(:)g(:)g(:)44
+b Fr(22)2025 4550 y(link,)26 b(\014lesystem)f(t)n(yp)r(e)20
+b Fd(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
+(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)47 b Fr(52)2025
+4638 y(linkx,)25 b(\014lesystem)h(t)n(yp)r(e)17 b Fd(:)12
+b(:)h(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
+(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)44 b Fr(53)2025 4726 y(Listing)26
+b(curren)n(tly)f(moun)n(ted)g(\014lesystems)16 b Fd(:)e(:)f(:)g(:)g(:)g
+(:)g(:)g(:)g(:)h(:)42 b Fr(74)2025 4813 y(lo)r(cal)p
+2184 4813 V 35 w(domain)26 b(P)n(arameter)21 b Fd(:)13
+b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
+(:)g(:)g(:)g(:)g(:)46 b Fr(65)2025 4901 y(lo)r(calhost)p
+2325 4901 V 35 w(address)27 b(P)n(arameter)16 b Fd(:)e(:)f(:)g(:)g(:)h
+(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)43
+b Fr(65)2025 4989 y(Lo)r(cation)27 b(format)17 b Fd(:)d(:)f(:)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(:)43 b Fr(24)2025 5077
+y(Lo)r(cation)27 b(lists)11 b Fd(:)j(:)f(:)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(:)g(:)38 b Fr(14)2025 5164 y(lo)r(c)n(king)26
+b(executable)g(pages)g(in)g(memory)8 b Fd(:)13 b(:)g(:)g(:)g(:)g(:)g(:)
+g(:)h(:)f(:)g(:)g(:)34 b Fr(45)2025 5252 y(lofs,)27 b(\014lesystem)f(t)
+n(yp)r(e)9 b Fd(:)k(:)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(:)36
+b Fr(50)2025 5340 y(Log)26 b(\014le,)g(resetting)12 b
+Fd(:)i(:)g(:)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(:)39
+b Fr(75)p eop end
+%%Page: 124 126
+TeXDict begin 124 125 bop 150 -116 a Fx(124)1810 b(Am-utils)30
+b(\(4.4BSD)j(Automoun)m(ter)d(Utilities\))150 299 y Fr(Log)c
+(\014lename)6 b Fd(:)14 b(:)f(:)g(:)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(:)g(:)g(:)33 b Fr(40)150 387 y(Log)26 b(message)i(selection)8
+b Fd(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)34 b Fr(42)150
+475 y(log,)27 b(FSinfo)f(\014lesystems)g(option)17 b
+Fd(:)d(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
+(:)44 b Fr(85)150 563 y(log)p 252 563 24 4 v 35 w(\014le)26
+b(P)n(arameter)21 b Fd(:)13 b(:)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(:)
+46 b Fr(65)150 651 y(log)p 252 651 V 35 w(options)26
+b(P)n(arameter)16 b Fd(:)e(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
+(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)42
+b Fr(65)150 739 y(Logging)27 b(options)f(via)g(Amq)18
+b Fd(:)12 b(:)h(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
+(:)g(:)h(:)f(:)g(:)g(:)44 b Fr(77)150 827 y(Lo)r(oking)26
+b(up)f(k)n(eys)14 b Fd(:)e(:)i(:)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(:)40 b Fr(23)150 916 y(Lo)r(opbac)n(k)26 b(Filesystem)c
+Fd(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
+(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)48 b Fr(50)150
+1004 y Fq(lostaltmail)22 b Fd(:)13 b(:)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(:)46 b Fr(103)150 1092 y Fq
+(lostaltmail.conf-sample)28 b Fd(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
+(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)50 b Fr(103)150
+1180 y(lostaltmail;)28 b(con\014guration)f(\014le)9 b
+Fd(:)k(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
+(:)35 b Fr(103)150 1434 y Fw(M)150 1552 y Fr(Mailing)27
+b(lists)16 b Fd(:)f(:)e(:)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(:)h(:)
+f(:)g(:)g(:)g(:)43 b Fr(7)150 1640 y(Map)26 b(cac)n(he)g(options)9
+b Fd(:)k(:)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(:)35 b
+Fr(54)150 1728 y(Map)26 b(cac)n(he)g(sync)n(hronizing)c
+Fd(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
+(:)f(:)g(:)g(:)g(:)g(:)48 b Fr(54)150 1816 y(Map)26 b(cac)n(he)g(t)n
+(yp)r(es)8 b Fd(:)k(:)h(:)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(:)g(:)g(:)34
+b Fr(54)150 1904 y(Map)26 b(cac)n(he,)g(\015ushing)7
+b Fd(:)13 b(:)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(:)33 b Fr(75)150
+1992 y(Map)26 b(defaults)17 b Fd(:)d(:)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(:)g(:)g(:)44 b Fr(25)150 2080 y(Map)26
+b(en)n(try)f(format)d Fd(:)14 b(:)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(:)
+48 b Fr(24)150 2169 y(Map)26 b(lo)r(okup)19 b Fd(:)13
+b(:)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(:)h(:)f(:)g(:)g(:)g(:)g(:)45
+b Fr(23)150 2257 y(Map)26 b(options)10 b Fd(:)k(:)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(:)g(:)g(:)h(:)f(:)g(:)g(:)36 b Fr(30)150
+2345 y(map)26 b(Selector)g(V)-6 b(ariable)22 b Fd(:)13
+b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
+(:)h(:)f(:)g(:)g(:)g(:)g(:)48 b Fr(28)150 2433 y(Map)26
+b(t)n(yp)r(es)9 b Fd(:)j(:)i(:)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(:)g(:)g(:)g
+(:)g(:)g(:)h(:)f(:)g(:)g(:)35 b Fr(19)150 2521 y(map,)26
+b(moun)n(t)f(selector)14 b Fd(:)g(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
+(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)40
+b Fr(28)150 2609 y(map)p 300 2609 V 34 w(defaults)26
+b(P)n(arameter)17 b Fd(:)d(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)43 b Fr(60)150
+2697 y(map)p 300 2697 V 34 w(name)26 b(P)n(arameter)7
+b Fd(:)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(:)34 b Fr(70)150
+2785 y(map)p 300 2785 V 34 w(options)26 b(P)n(arameter)9
+b Fd(:)15 b(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
+(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)36 b Fr(60)150 2873 y(map)p
+300 2873 V 34 w(reload)p 538 2873 V 35 w(in)n(terv)l(al)25
+b(P)n(arameter)f Fd(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)g(:)49 b Fr(66)150 2961 y(map)p 300 2961 V
+34 w(t)n(yp)r(e)25 b(P)n(arameter)6 b Fd(:)14 b(:)f(:)g(:)h(:)f(:)g(:)g
+(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
+g(:)g(:)33 b Fr(60)150 3050 y(maps,)26 b(FSinfo)h(command)e(line)h
+(option)8 b Fd(:)14 b(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)34
+b Fr(89)150 3138 y(Memory/RAM)26 b(Filesystem)18 b Fd(:)c(:)f(:)g(:)h
+(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)44
+b Fr(51)150 3226 y(mfs,)27 b(\014lesystem)f(t)n(yp)r(e)7
+b Fd(:)12 b(:)h(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)33 b Fr(51)150
+3314 y Fq(mk-amd-map)24 b Fd(:)13 b(:)g(:)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(:)g(:)g(:)49 b Fr(103)150 3402 y(mlo)r(c)n(k)l(all;)27
+b(using)c Fd(:)13 b(:)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(:)g(:)g(:)
+49 b Fr(45)150 3490 y(Moun)n(t)25 b(a)h(\014lesystem)g(under)f(program)
+i(con)n(trol)21 b Fd(:)13 b(:)h(:)f(:)g(:)47 b Fr(52)150
+3578 y(Moun)n(t)25 b(\015ags;)i(acdirmax)14 b Fd(:)g(:)f(:)g(:)g(:)g(:)
+g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
+(:)f(:)40 b Fr(32)150 3666 y(Moun)n(t)25 b(\015ags;)i(acdirmin)22
+b Fd(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)48 b Fr(32)150 3754
+y(Moun)n(t)25 b(\015ags;)i(acregmax)10 b Fd(:)k(:)f(:)g(:)g(:)h(:)f(:)g
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
+36 b Fr(32)150 3842 y(Moun)n(t)25 b(\015ags;)i(acregmin)17
+b Fd(:)e(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
+h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)43 b Fr(32)150 3930 y(Moun)n(t)25
+b(\015ags;)i(actimeo)c Fd(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
+g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)48
+b Fr(32)150 4019 y(Moun)n(t)25 b(\015ags;)i(auto)9 b
+Fd(:)k(:)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(:)g(:)35
+b Fr(32)150 4107 y(Moun)n(t)25 b(\015ags;)i(cac)n(he)10
+b Fd(:)j(:)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(:)36 b
+Fr(32)150 4195 y(Moun)n(t)25 b(\015ags;)i(closesession)10
+b Fd(:)16 b(:)d(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
+(:)g(:)g(:)g(:)g(:)h(:)f(:)36 b Fr(32)150 4283 y(Moun)n(t)25
+b(\015ags;)i(compress)17 b Fd(:)d(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)43
+b Fr(32)150 4371 y(Moun)n(t)25 b(\015ags;)i(defp)r(erm)15
+b Fd(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)
+f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)41 b Fr(32)150 4459
+y(Moun)n(t)25 b(\015ags;)i(dev)8 b Fd(:)k(:)h(:)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(:)34 b Fr(32)150 4547 y(Moun)n(t)25
+b(\015ags;)i(dirmask)18 b Fd(:)c(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
+g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)44
+b Fr(32)150 4635 y(Moun)n(t)25 b(\015ags;)i(dum)n(btimr)18
+b Fd(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
+(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)45 b Fr(32)150 4723 y(Moun)n(t)25
+b(\015ags;)i(extatt)16 b Fd(:)d(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
+(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)42
+b Fr(32)150 4811 y(Moun)n(t)25 b(\015ags;)i(fsid)7 b
+Fd(:)14 b(:)g(:)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(:)g(:)34
+b Fr(32)150 4900 y(Moun)n(t)25 b(\015ags;)i(gens)11 b
+Fd(:)i(:)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(:)g(:)g(:)37
+b Fr(32)150 4988 y(Moun)n(t)25 b(\015ags;)i(gm)n(to\013)11
+b Fd(:)i(:)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(:)37 b Fr(32)150
+5076 y(Moun)n(t)25 b(\015ags;)i(group)22 b Fd(:)13 b(:)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(:)g(:)48 b Fr(33)150 5164 y(Moun)n(t)25
+b(\015ags;)i(grpid)13 b Fd(:)g(:)g(:)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(:)
+39 b Fr(33)150 5252 y(Moun)n(t)25 b(\015ags;)i(ignore)15
+b Fd(:)f(:)f(:)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(:)41 b Fr(32)150
+5340 y(Moun)n(t)25 b(\015ags;)i(in)n(t)20 b Fd(:)13 b(:)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(:)g(:)g(:)g(:)47 b Fr(33)2025 299 y(Moun)n(t)25
+b(\015ags;)i(in)n(tr)22 b Fd(:)13 b(:)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(:)g(:)49 b Fr(33)2025 387 y(Moun)n(t)25 b(\015ags;)i(lo)r(c)n(k)16
+b Fd(:)e(:)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(:)g(:)43
+b Fr(33)2025 476 y(Moun)n(t)25 b(Flags;)j(longname)18
+b Fd(:)c(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
+f(:)g(:)g(:)44 b Fr(33,)27 b(35)2025 564 y(Moun)n(t)e(\015ags;)i(mask)
+14 b Fd(:)f(:)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(:)40
+b Fr(33)2025 653 y(Moun)n(t)25 b(\015ags;)i(maxgroups)20
+b Fd(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
+(:)f(:)g(:)g(:)g(:)g(:)g(:)47 b Fr(33)2025 741 y(Moun)n(t)25
+b(\015ags;)i(m)n(ulti)12 b Fd(:)h(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
+h(:)38 b Fr(33)2025 830 y(Moun)n(t)25 b(\015ags;)i(nfsv3)13
+b Fd(:)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(:)39 b
+Fr(33)2025 918 y(Moun)n(t)25 b(\015ags;)i(noac)7 b Fd(:)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(:)g(:)h(:)f(:)g(:)33 b Fr(33)2025
+1006 y(Moun)n(t)25 b(\015ags;)i(noauto)20 b Fd(:)13 b(:)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(:)46 b Fr(33)2025 1095 y(Moun)n(t)25 b(\015ags;)i(no)r
+(cac)n(he)20 b Fd(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
+h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)46
+b Fr(33)2025 1183 y(Moun)n(t)25 b(\015ags;)i(no)r(casetrans)7
+b Fd(:)15 b(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
+(:)f(:)g(:)g(:)g(:)g(:)g(:)34 b Fr(33)2025 1272 y(Moun)n(t)25
+b(\015ags;)i(no)r(conn)14 b Fd(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
+(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)41
+b Fr(33)2025 1360 y(Moun)n(t)25 b(\015ags;)i(no)r(cto)8
+b Fd(:)13 b(:)g(:)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(:)34
+b Fr(33)2025 1449 y(Moun)n(t)25 b(\015ags;)i(no)r(defp)r(erm)8
+b Fd(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
+(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)34 b Fr(33)2025 1537 y(Moun)n(t)25
+b(\015ags;)i(no)r(dev)17 b Fd(:)c(:)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(:)
+44 b Fr(33)2025 1625 y(Moun)n(t)25 b(\015ags;)i(no)r(devs)19
+b Fd(:)13 b(:)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(:)46 b Fr(33)2025
+1714 y(Moun)n(t)25 b(\015ags;)i(no)r(exec)22 b Fd(:)13
+b(:)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(:)48 b Fr(33)2025 1802
+y(Moun)n(t)25 b(\015ags;)i(noin)n(t)14 b Fd(:)f(:)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(:)g(:)g(:)41 b Fr(33)2025 1891 y(Moun)n(t)25 b(\015ags;)i(no)t
+(joliet)8 b Fd(:)15 b(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)34
+b Fr(33)2025 1979 y(Moun)n(t)25 b(\015ags;)i(nolo)r(c)n(k)10
+b Fd(:)j(:)g(:)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(:)36 b Fr(33)2025
+2068 y(Moun)n(t)25 b(\015ags;)i(nomn)n(ttab)22 b Fd(:)13
+b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
+(:)g(:)g(:)h(:)f(:)g(:)49 b Fr(33)2025 2156 y(Moun)n(t)25
+b(\015ags;)i(norrip)15 b Fd(:)e(:)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(:)h(:)41
+b Fr(34)2025 2245 y(Moun)n(t)25 b(\015ags;)i(nosub)19
+b Fd(:)13 b(:)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(:)46 b Fr(34)2025
+2333 y(Moun)n(t)25 b(\015ags;)i(nosuid)9 b Fd(:)k(:)g(:)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(:)35 b Fr(34)2025 2421 y(Moun)n(t)25 b(\015ags;)i
+(nounmoun)n(t)12 b Fd(:)g(:)h(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)38 b Fr(35)2025
+2510 y(Moun)n(t)25 b(\015ags;)i(no)n(v)n(ersion)12 b
+Fd(:)h(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
+(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)38 b Fr(34)2025 2598 y(Moun)n(t)25
+b(Flags;)j(no)n(win95)17 b Fd(:)d(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
+(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)43
+b Fr(34)2025 2687 y(Moun)n(t)25 b(\015ags;)i(optionstr)17
+b Fd(:)c(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
+h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)43 b Fr(34)2025 2775
+y(Moun)n(t)25 b(\015ags;)i(o)n(v)n(erla)n(y)16 b Fd(:)d(:)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(:)43 b Fr(34)2025 2864 y(Moun)n(t)25 b(\015ags;)i
+(pgthresh)6 b Fd(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
+(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)33
+b Fr(34)2025 2952 y(Moun)n(t)25 b(\015ags;)i(ping)11
+b Fd(:)i(:)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(:)37
+b Fr(35)2025 3041 y(Moun)n(t)25 b(\015ags;)i(p)r(ort)12
+b Fd(:)h(:)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(:)38
+b Fr(34)2025 3129 y(Moun)n(t)25 b(\015ags;)i(p)r(osix)13
+b Fd(:)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(:)39 b
+Fr(34)2025 3217 y(Moun)n(t)25 b(\015ags;)i(priv)l(ate)18
+b Fd(:)13 b(:)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(:)45 b Fr(34)2025
+3306 y(Moun)n(t)25 b(\015ags;)i(proplist)6 b Fd(:)14
+b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)33 b Fr(34)2025 3394
+y(Moun)n(t)25 b(\015ags;)i(proto)11 b Fd(:)i(:)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(:)37 b Fr(34)2025 3483 y(Moun)n(t)25 b(\015ags;)i(public)
+15 b Fd(:)e(:)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(:)42 b Fr(35)2025
+3571 y(Moun)n(t)25 b(\015ags;)i(quota)22 b Fd(:)13 b(:)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(:)49 b Fr(34)2025 3660 y(Moun)n(t)25
+b(\015ags;)i(rdonly)10 b Fd(:)i(:)h(:)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(:)36
+b Fr(34)2025 3748 y(Moun)n(t)25 b(\015ags;)i(resvp)r(ort)13
+b Fd(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
+g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)39 b Fr(34)2025 3836
+y(Moun)n(t)25 b(\015ags;)i(retrans)17 b Fd(:)c(:)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(:)43 b Fr(34)2025 3925 y(Moun)n(t)25 b(\015ags;)i(retry)18
+b Fd(:)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(:)g(:)g(:)g(:)45
+b Fr(34)2025 4013 y(Moun)n(t)25 b(\015ags;)i(retry=)p
+Fc(n)18 b Fd(:)12 b(:)h(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
+(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)45 b Fr(36)2025
+4102 y(Moun)n(t)25 b(\015ags;)i(ro)15 b Fd(:)e(:)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(:)g(:)g(:)42 b Fr(34)2025 4190 y(Moun)n(t)25
+b(\015ags;)i(rrcaseins)d Fd(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
+(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)50
+b Fr(34)2025 4279 y(Moun)n(t)25 b(\015ags;)i(rrip)21
+b Fd(:)13 b(:)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(:)g(:)g(:)48
+b Fr(34)2025 4367 y(Moun)n(t)25 b(\015ags;)i(rsize)8
+b Fd(:)14 b(:)g(:)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(:)35
+b Fr(34)2025 4456 y(Moun)n(t)25 b(\015ags;)i(rw)7 b Fd(:)13
+b(:)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(:)g(:)33
+b Fr(34)2025 4544 y(Moun)n(t)25 b(Flags;)j(sessionnr)22
+b Fd(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)48 b Fr(35)2025 4632 y(Moun)n(t)25
+b(\015ags;)i(soft)c Fd(:)13 b(:)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(:)g(:)
+g(:)49 b Fr(35)2025 4721 y(Moun)n(t)25 b(\015ags;)i(softlo)r(okup)12
+b Fd(:)i(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
+g(:)g(:)g(:)g(:)g(:)h(:)f(:)38 b Fr(36)2025 4809 y(Moun)n(t)25
+b(\015ags;)i(sp)r(ongy)17 b Fd(:)c(:)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(:)44
+b Fr(35)2025 4898 y(Moun)n(t)25 b(\015ags;)i(suid)15
+b Fd(:)e(:)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(:)41
+b Fr(35)2025 4986 y(Moun)n(t)25 b(\015ags;)i(sym)n(ttl)11
+b Fd(:)h(:)i(:)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(:)37 b Fr(35)2025
+5075 y(Moun)n(t)25 b(\015ags;)i(sync)10 b Fd(:)i(:)h(:)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(:)36 b Fr(35)2025 5163 y(Moun)n(t)25
+b(\015ags;)i(tcp)13 b Fd(:)g(:)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(:)40 b Fr(35)2025 5252 y(Moun)n(t)25 b(\015ags;)i(timeo)7
+b Fd(:)13 b(:)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(:)33
+b Fr(35)2025 5340 y(Moun)n(t)25 b(\015ags;)i(unmoun)n(t)18
+b Fd(:)12 b(:)h(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)45 b Fr(36)p eop end
+%%Page: 125 127
+TeXDict begin 125 126 bop 150 -116 a Fx(Index)3241 b(125)150
+299 y Fr(Moun)n(t)25 b(\015ags;)i(user)15 b Fd(:)e(:)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(:)41 b Fr(35)150 387 y(Moun)n(t)25
+b(\015ags;)i(utimeout=)p Fc(n)17 b Fd(:)c(:)g(:)g(:)g(:)g(:)g(:)h(:)f
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)44
+b Fr(36)150 476 y(Moun)n(t)25 b(\015ags;)i(v)n(ers)17
+b Fd(:)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(:)g(:)h(:)f(:)43
+b Fr(35)150 564 y(Moun)n(t)25 b(\015ags;)i(wsize)13 b
+Fd(:)h(:)g(:)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(:)39 b Fr(35)150
+653 y(Moun)n(t)25 b(\015ags;)i(xlateco)r(okie)16 b Fd(:)f(:)e(:)g(:)g
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
+h(:)42 b Fr(36)150 741 y(Moun)n(t)25 b(home)h(directories)6
+b Fd(:)15 b(:)e(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)h(:)f(:)g(:)g(:)33 b Fr(108)150 830 y(Moun)n(t)25
+b(information)e Fd(:)13 b(:)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(:)47
+b Fr(19)150 918 y(Moun)n(t)25 b(map)h(option;)g(cac)n(he)12
+b Fd(:)i(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
+g(:)g(:)g(:)g(:)h(:)38 b Fr(54)150 1006 y(Moun)n(t)25
+b(map)h(t)n(yp)r(es)8 b Fd(:)k(:)i(:)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(:)34 b Fr(19)150 1095 y(Moun)n(t)25 b(maps)9 b Fd(:)14
+b(:)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(:)g(:)g(:)35
+b Fr(19)150 1183 y(Moun)n(t)25 b(option;)i(addopts)21
+b Fd(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
+(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)48 b Fr(30)150 1272 y(Moun)n(t)25
+b(option;)i(cac)n(hedir)16 b Fd(:)e(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
+(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)43
+b Fr(49)150 1360 y(Moun)n(t)25 b(option;)i(dela)n(y)15
+b Fd(:)e(:)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(:)42 b Fr(31)150
+1449 y(Moun)n(t)25 b(option;)i(dev)22 b Fd(:)13 b(:)g(:)g(:)g(:)g(:)h
+(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)50
+b Fr(49,)27 b(50,)f(51)150 1537 y(Moun)n(t)f(option;)i(fs)8
+b Fd(:)13 b(:)g(:)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(:)34
+b Fr(31)150 1625 y(Moun)n(t)25 b(option;)i(moun)n(t)12
+b Fd(:)g(:)i(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
+h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)38 b Fr(52)150 1714
+y(Moun)n(t)25 b(option;)i(opts)15 b Fd(:)e(:)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(:)41 b Fr(31)150 1802 y(Moun)n(t)25 b(option;)i(remopts)19
+b Fd(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
+(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)46 b Fr(36)150 1891 y(Moun)n(t)25
+b(option;)i(rfs)16 b Fd(:)e(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)43
+b Fr(47,)26 b(51)150 1979 y(Moun)n(t)f(option;)i(rhost)17
+b Fd(:)c(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
+g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)43 b Fr(47)150
+2068 y(Moun)n(t)25 b(option;)i(sublink)16 b Fd(:)c(:)i(:)f(:)g(:)g(:)g
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
+h(:)42 b Fr(37)150 2156 y(Moun)n(t)25 b(option;)i(t)n(yp)r(e)12
+b Fd(:)g(:)h(:)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(:)38 b Fr(37)150
+2245 y(Moun)n(t)25 b(option;)i(umoun)n(t)8 b Fd(:)k(:)h(:)g(:)g(:)g(:)g
+(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
+g(:)34 b Fr(52)150 2333 y(Moun)n(t)25 b(option;)i(unmoun)n(t)19
+b Fd(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
+(:)g(:)h(:)f(:)g(:)g(:)g(:)47 b Fr(52)150 2421 y(Moun)n(t)25
+b(retries)9 b Fd(:)14 b(:)f(:)g(:)g(:)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(:)35 b Fr(14)150 2510 y(Moun)n(t)25 b(selector;)j(arc)n(h)12
+b Fd(:)h(:)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(:)38 b Fr(26)150
+2598 y(Moun)n(t)25 b(selector;)j(auto)r(dir)12 b Fd(:)h(:)g(:)g(:)g(:)h
+(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
+g(:)38 b Fr(26)150 2687 y(Moun)n(t)25 b(selector;)j(b)n(yte)11
+b Fd(:)h(:)h(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
+g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)37 b Fr(26)150
+2775 y(Moun)n(t)25 b(selector;)j(cluster)6 b Fd(:)14
+b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
+(:)g(:)g(:)g(:)g(:)g(:)h(:)32 b Fr(26)150 2864 y(Moun)n(t)25
+b(selector;)j(domain)11 b Fd(:)i(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
+g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)37
+b Fr(26)150 2952 y(Moun)n(t)25 b(selector;)j(exists)7
+b Fd(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
+(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)33 b Fr(29)150
+3041 y(Moun)n(t)25 b(selector;)j(false)9 b Fd(:)15 b(:)e(:)g(:)g(:)h(:)
+f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
+(:)g(:)g(:)g(:)36 b Fr(29)150 3129 y(Moun)n(t)25 b(selector;)j(full)p
+810 3129 24 4 v 34 w(os)12 b Fd(:)i(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)38
+b Fr(27)150 3217 y(Moun)n(t)25 b(selector;)j(gid)15 b
+Fd(:)e(:)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(:)41 b Fr(29)150
+3306 y(Moun)n(t)25 b(selector;)j(host)13 b Fd(:)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(:)39 b Fr(27)150 3394 y(Moun)n(t)25 b(selector;)j(hostd)8
+b Fd(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)35 b Fr(27)150
+3483 y(Moun)n(t)25 b(selector;)j(in)p 766 3483 V 34 w(net)n(w)n(ork)20
+b Fd(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
+(:)g(:)g(:)g(:)47 b Fr(30)150 3571 y(Moun)n(t)25 b(selector;)j(k)l(arc)
+n(h)11 b Fd(:)h(:)h(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37 b Fr(27)150
+3660 y(Moun)n(t)25 b(selector;)j(k)n(ey)10 b Fd(:)i(:)h(:)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(:)36 b Fr(28)150 3748 y(Moun)n(t)25 b(selector;)j(map)11
+b Fd(:)i(:)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(:)37 b Fr(28)150
+3836 y(Moun)n(t)25 b(selector;)j(netgrp)9 b Fd(:)j(:)h(:)g(:)h(:)f(:)g
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
+g(:)35 b Fr(29)150 3925 y(Moun)n(t)25 b(selector;)j(netgrp)r(d)20
+b Fd(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
+(:)g(:)g(:)g(:)g(:)g(:)g(:)47 b Fr(29)150 4013 y(Moun)n(t)25
+b(selector;)j(netn)n(um)n(b)r(er)21 b Fd(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)49
+b Fr(28)150 4102 y(Moun)n(t)25 b(selector;)j(net)n(w)n(ork)18
+b Fd(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
+(:)g(:)g(:)g(:)g(:)g(:)h(:)44 b Fr(28)150 4190 y(Moun)n(t)25
+b(selector;)j(os)15 b Fd(:)e(:)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(:)41
+b Fr(27)150 4279 y(Moun)n(t)25 b(selector;)j(osv)n(er)15
+b Fd(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
+g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)41 b Fr(27)150 4367
+y(Moun)n(t)25 b(selector;)j(path)6 b Fd(:)13 b(:)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(:)33 b Fr(28)150 4456 y(Moun)n(t)25 b(selector;)j(true)15
+b Fd(:)e(:)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(:)41 b Fr(30)150
+4544 y(Moun)n(t)25 b(selector;)j(uid)13 b Fd(:)f(:)i(:)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(:)39 b Fr(28)150 4632 y(Moun)n(t)25 b(selector;)j(v)n
+(endor)20 b Fd(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)48 b Fr(27)150
+4721 y(Moun)n(t)25 b(selector;)j(wire)13 b Fd(:)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(:)39 b Fr(28)150 4809 y(Moun)n(t)25 b(selector;)j(xhost)9
+b Fd(:)k(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
+g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)36 b Fr(30)150 4898
+y(moun)n(t)25 b(system)h(call)17 b Fd(:)d(:)f(:)g(:)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(:)43 b Fr(31)150 4986 y(moun)n(t)25 b(system)h(call)h
+(\015ags)15 b Fd(:)e(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
+g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)41 b Fr(31)150
+5075 y(Moun)n(t)25 b(t)n(yp)r(es)8 b Fd(:)13 b(:)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(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)34 b Fr(47)150
+5163 y(moun)n(t,)25 b(FSinfo)i(\014lesystems)f(option)10
+b Fd(:)j(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)36
+b Fr(84)150 5252 y(moun)n(t,)25 b(moun)n(t)g(option)15
+b Fd(:)f(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
+g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)42 b Fr(52)150 5340
+y(moun)n(t)p 371 5340 V 33 w(t)n(yp)r(e)25 b(P)n(arameter)e
+Fd(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
+(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)49 b Fr(61)2025 299 y(Moun)n(ting)26
+b(a)g(lo)r(cal)h(disk)9 b Fd(:)k(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
+g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)35
+b Fr(49)2025 387 y(Moun)n(ting)24 b(a)h(remote)g(part)f(of)h(the)f
+(name)g(space)h(if)g(target)2178 474 y(is)i(missing)15
+b Fd(:)f(:)f(:)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(:)h(:)f(:)g(:)41
+b Fr(53)2025 562 y(Moun)n(ting)26 b(a)g(UFS)f(\014lesystem)18
+b Fd(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
+(:)f(:)g(:)g(:)44 b Fr(49)2025 650 y(Moun)n(ting)26 b(a)g(v)n(olume)13
+b Fd(:)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(:)g(:)40 b Fr(14)2025
+739 y(Moun)n(ting)25 b(an)h(atomic)h(group)e(of)i(NFS)d(\014lesystems)
+10 b Fd(:)k(:)37 b Fr(48)2025 827 y(Moun)n(ting)26 b(an)f(existing)h
+(part)g(of)g(the)g(lo)r(cal)h(name)f(space)2185 914 y
+Fd(:)13 b(:)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(:)g(:)g(:)g(:)g(:)g(:)
+h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)33 b Fr(53)2025 1002
+y(Moun)n(ting)26 b(an)f(NFS)g(\014lesystem)13 b Fd(:)h(:)f(:)g(:)g(:)g
+(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)40
+b Fr(47)2025 1090 y(Moun)n(ting)26 b(en)n(tire)f(exp)r(ort)h(trees)9
+b Fd(:)14 b(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
+(:)g(:)g(:)36 b Fr(47)2025 1178 y(Moun)n(ting)26 b(part)f(of)i(the)e
+(lo)r(cal)i(name)f(space)13 b Fd(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)39
+b Fr(52)2025 1266 y(Moun)n(ting)26 b(user)f(\014lesystems)e
+Fd(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
+(:)g(:)g(:)g(:)49 b Fr(107)2025 1354 y(Multiple)26 b(Amd)f(pro)r
+(cesses)f Fd(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
+(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)49 b Fr(76)2025 1443
+y(Multiple-threaded)25 b(serv)n(er)12 b Fd(:)h(:)g(:)g(:)h(:)f(:)g(:)g
+(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)38
+b Fr(16)2025 1697 y Fw(N)2025 1815 y Fr(Namespace)16
+b Fd(:)e(:)f(:)g(:)g(:)g(:)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
+(:)g(:)43 b Fr(14)2025 1903 y(ndbm)24 b(maps)7 b Fd(:)13
+b(:)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(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
+33 b Fr(20)2025 1991 y(netgrp)25 b(Selector)h(F)-6 b(unction)10
+b Fd(:)j(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
+g(:)h(:)f(:)g(:)g(:)g(:)37 b Fr(29)2025 2079 y(netgrp,)25
+b(b)r(o)r(olean)i(moun)n(t)e(selector)f Fd(:)13 b(:)g(:)h(:)f(:)g(:)g
+(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)49 b Fr(29)2025
+2167 y(netgrp)r(d)25 b(Selector)h(F)-6 b(unction)22 b
+Fd(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
+(:)g(:)g(:)g(:)g(:)49 b Fr(29)2025 2256 y(netgrp)r(d,)25
+b(b)r(o)r(olean)i(moun)n(t)e(selector)17 b Fd(:)e(:)e(:)g(:)g(:)g(:)g
+(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)44 b Fr(29)2025 2344
+y(netn)n(um)n(b)r(er)24 b(Selector)i(V)-6 b(ariable)16
+b Fd(:)e(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
+g(:)g(:)43 b Fr(28)2025 2432 y(netn)n(um)n(b)r(er,)24
+b(moun)n(t)h(selector)9 b Fd(:)14 b(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
+(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)35 b Fr(28)2025
+2520 y(Net)n(w)n(ork)25 b(\014lesystem)h(group)16 b Fd(:)d(:)g(:)g(:)g
+(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
+42 b Fr(48)2025 2608 y(Net)n(w)n(ork)25 b(host)h(\014lesystem)7
+b Fd(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
+(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)34 b Fr(47)2025 2696 y(net)n(w)n(ork)25
+b(Selector)i(V)-6 b(ariable)12 b Fd(:)h(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)38
+b Fr(28)2025 2784 y(net)n(w)n(ork,)26 b(moun)n(t)f(selector)d
+Fd(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
+(:)h(:)f(:)g(:)g(:)g(:)g(:)48 b Fr(28)2025 2872 y(Net)n(w)n(ork-wide)25
+b(naming)7 b Fd(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)33
+b Fr(13)2025 2961 y(NFS)8 b Fd(:)13 b(:)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(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)35
+b Fr(47)2025 3049 y(NFS)25 b(ping)8 b Fd(:)13 b(:)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(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)35
+b Fr(15)2025 3137 y(NFS)25 b(V.3)h(supp)r(ort)17 b Fd(:)12
+b(:)h(:)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(:)43 b Fr(17)2025
+3225 y(nfs,)26 b(\014lesystem)g(t)n(yp)r(e)18 b Fd(:)12
+b(:)h(:)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(:)44 b Fr(47)2025
+3313 y(NFS-Link)24 b(\014lesystem)i(I)r(I)9 b Fd(:)j(:)h(:)g(:)g(:)g(:)
+h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
+(:)g(:)35 b Fr(53)2025 3401 y(nfs)p 2126 3401 V 34 w(allo)n(w)p
+2331 3401 V 36 w(an)n(y)p 2487 3401 V 33 w(in)n(terface)26
+b(P)n(arameter)c Fd(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
+(:)47 b Fr(66)2025 3489 y(nfs)p 2126 3489 V 34 w(allo)n(w)p
+2331 3489 V 36 w(insecure)p 2636 3489 V 34 w(p)r(ort)25
+b(P)n(arameter)17 b Fd(:)d(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
+(:)43 b Fr(66)2025 3577 y(nfs)p 2126 3577 V 34 w(proto)26
+b(P)n(arameter)14 b Fd(:)h(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)41
+b Fr(66)2025 3666 y(nfs)p 2126 3666 V 34 w(retransmit)p
+2510 3666 V 34 w(coun)n(ter)26 b(P)n(arameter)9 b Fd(:)14
+b(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)35
+b Fr(67)2025 3754 y(nfs)p 2126 3754 V 34 w(retransmit)p
+2510 3754 V 34 w(coun)n(ter)p 2794 3754 V 34 w(tcp)25
+b(P)n(arameter)7 b Fd(:)14 b(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)33
+b Fr(67)2025 3842 y(nfs)p 2126 3842 V 34 w(retransmit)p
+2510 3842 V 34 w(coun)n(ter)p 2794 3842 V 34 w(toplvl)26
+b(P)n(arameter)14 b Fd(:)g(:)g(:)f(:)g(:)g(:)g(:)41 b
+Fr(67)2025 3930 y(nfs)p 2126 3930 V 34 w(retransmit)p
+2510 3930 V 34 w(coun)n(ter)p 2794 3930 V 34 w(udp)25
+b(P)n(arameter)13 b Fd(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)40
+b Fr(67)2025 4018 y(nfs)p 2126 4018 V 34 w(retry)p 2325
+4018 V 33 w(in)n(terv)l(al)26 b(P)n(arameter)16 b Fd(:)e(:)f(:)g(:)g(:)
+g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)42
+b Fr(67)2025 4106 y(nfs)p 2126 4106 V 34 w(retry)p 2325
+4106 V 33 w(in)n(terv)l(al)p 2610 4106 V 34 w(tcp)25
+b(P)n(arameter)14 b Fd(:)g(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
+(:)g(:)g(:)40 b Fr(67)2025 4194 y(nfs)p 2126 4194 V 34
+w(retry)p 2325 4194 V 33 w(in)n(terv)l(al)p 2610 4194
+V 34 w(toplvl)26 b(P)n(arameter)c Fd(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)g(:)48 b Fr(67)2025 4282 y(nfs)p 2126 4282
+V 34 w(retry)p 2325 4282 V 33 w(in)n(terv)l(al)p 2610
+4282 V 34 w(udp)25 b(P)n(arameter)c Fd(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f
+(:)g(:)g(:)g(:)g(:)g(:)h(:)46 b Fr(67)2025 4371 y(nfs)p
+2126 4371 V 34 w(v)n(ers)25 b(P)n(arameter)d Fd(:)13
+b(:)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(:)47 b Fr(68)2025
+4459 y(nfsl,)26 b(\014lesystem)g(t)n(yp)r(e)7 b Fd(:)13
+b(:)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(:)g(:)34 b Fr(53)2025
+4547 y(nfsx,)26 b(\014lesystem)g(t)n(yp)r(e)15 b Fd(:)d(:)h(:)g(:)g(:)g
+(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
+g(:)h(:)f(:)g(:)41 b Fr(48)2025 4635 y(NIS)24 b(\(YP\))h(domain)i(name)
+7 b Fd(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)34 b Fr(43)2025 4723
+y(NIS)24 b(\(YP\))h(maps)9 b Fd(:)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(:)36 b Fr(20)2025 4811 y(NIS)p Fq(+)25
+b Fr(maps)19 b Fd(:)13 b(:)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
+(:)g(:)g(:)g(:)g(:)g(:)46 b Fr(21)2025 4899 y(nis)p 2124
+4899 V 34 w(domain)26 b(P)n(arameter)16 b Fd(:)e(:)f(:)g(:)g(:)g(:)g(:)
+h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
+(:)42 b Fr(68)2025 4987 y(No)r(des)26 b(generated)g(on)f(a)h(restart)6
+b Fd(:)14 b(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
+(:)g(:)g(:)33 b Fr(56)2025 5076 y(Non-blo)r(c)n(king)25
+b(op)r(eration)14 b Fd(:)g(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
+(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)41 b Fr(16)2025
+5164 y(normalize)p 2353 5164 V 35 w(hostnames)26 b(P)n(arameter)21
+b Fd(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)46
+b Fr(68)2025 5252 y(normalize)p 2353 5252 V 35 w(slashes)27
+b(P)n(arameter)13 b Fd(:)h(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
+(:)g(:)g(:)g(:)g(:)g(:)h(:)39 b Fr(68)2025 5340 y(Normalizing)27
+b(hostnames)16 b Fd(:)e(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
+(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)42 b Fr(41)p
+eop end
+%%Page: 126 128
+TeXDict begin 126 127 bop 150 -116 a Fx(126)1810 b(Am-utils)30
+b(\(4.4BSD)j(Automoun)m(ter)d(Utilities\))150 299 y Fr(Null)c
+(Filesystem)9 b Fd(:)14 b(:)f(:)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(:)35 b Fr(51)150 389 y(n)n(ullfs,)27 b(\014lesystem)e(t)n(yp)r(e)
+10 b Fd(:)j(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)37 b Fr(51)150
+653 y Fw(O)150 774 y Fr(Obtaining)26 b(the)f(source)h(co)r(de)21
+b Fd(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)h(:)f(:)g(:)47 b Fr(5)150 864 y(Op)r(erating)26
+b(System)f(name)20 b Fd(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
+(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)46 b Fr(45)150
+954 y(Op)r(erating)26 b(System)f(v)n(ersion)8 b Fd(:)14
+b(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
+(:)g(:)g(:)g(:)35 b Fr(41)150 1044 y(Op)r(erational)27
+b(principles)18 b Fd(:)c(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
+g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)44 b
+Fr(14)150 1134 y(opts,)26 b(FSinfo)g(\014lesystems)h(option)13
+b Fd(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
+39 b Fr(84)150 1224 y(opts,)26 b(moun)n(t)f(option)18
+b Fd(:)c(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
+g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)45 b Fr(31)150
+1314 y(os)26 b(P)n(arameter)15 b Fd(:)g(:)e(:)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(:)g(:)g(:)g(:)42 b Fr(68)150 1404 y(os)26
+b(Selector)h(V)-6 b(ariable)9 b Fd(:)k(:)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(:)35 b Fr(27)150 1494 y(os,)27 b(FSinfo)f(host)g(attribute)12
+b Fd(:)h(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
+g(:)g(:)g(:)g(:)g(:)h(:)38 b Fr(82)150 1584 y(os,)27
+b(moun)n(t)e(selector)18 b Fd(:)c(:)f(:)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(:)44 b Fr(27)150 1674 y(osv)n(er)26 b(P)n(arameter)15
+b Fd(:)g(:)e(:)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(:)42
+b Fr(68)150 1764 y(osv)n(er)26 b(Selector)g(V)-6 b(ariable)8
+b Fd(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
+(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)35 b Fr(27)150 1854
+y(osv)n(er,)26 b(moun)n(t)f(selector)18 b Fd(:)d(:)e(:)g(:)g(:)g(:)g(:)
+g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
+(:)g(:)44 b Fr(27)150 1944 y(Ov)n(erriding)25 b(defaults)i(on)e(the)h
+(command)g(line)7 b Fd(:)14 b(:)f(:)g(:)g(:)g(:)g(:)34
+b Fr(39)150 2034 y(Ov)n(erriding)25 b(or)h(adding)g(options)g(to)g(a)g
+(moun)n(t)12 b Fd(:)g(:)i(:)f(:)g(:)g(:)g(:)38 b Fr(30)150
+2124 y(Ov)n(erriding)25 b(the)h(default)g(moun)n(t)f(p)r(oin)n(t)17
+b Fd(:)c(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)44
+b Fr(31)150 2214 y(Ov)n(erriding)25 b(the)h(lo)r(cal)h(domain)f(name)21
+b Fd(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)47
+b Fr(40)150 2304 y(Ov)n(erriding)25 b(the)h(NIS)e(\(YP\))h(domain)h
+(name)d Fd(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)48 b Fr(43)150
+2572 y Fw(P)150 2693 y Fr(P)n(assing)27 b(parameters)g(to)f(the)f(moun)
+n(t)g(system)h(call)10 b Fd(:)k(:)f(:)37 b Fr(31)150
+2783 y(passno,)27 b(FSinfo)f(\014lesystems)g(option)6
+b Fd(:)14 b(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)33
+b Fr(84)150 2873 y(P)n(assw)n(ord)27 b(\014le)f(maps)21
+b Fd(:)13 b(:)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(:)47 b Fr(21)150
+2963 y(path)25 b(Selector)i(V)-6 b(ariable)17 b Fd(:)c(:)h(:)f(:)g(:)g
+(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
+g(:)g(:)44 b Fr(28)150 3053 y(path,)26 b(moun)n(t)f(selector)10
+b Fd(:)k(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
+g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)36 b Fr(28)150
+3143 y(P)n(athname)26 b(op)r(erators)17 b Fd(:)d(:)f(:)g(:)g(:)g(:)h(:)
+f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
+(:)g(:)g(:)43 b Fr(25)150 3233 y Fq(pawd)21 b Fd(:)13
+b(:)g(:)g(:)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(:)g(:)g(:)h(:)
+f(:)g(:)g(:)g(:)g(:)47 b Fr(103)150 3323 y(p)r(cfs,)27
+b(\014lesystem)f(t)n(yp)r(e)17 b Fd(:)12 b(:)h(:)g(:)g(:)g(:)g(:)g(:)h
+(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
+g(:)43 b Fr(51)150 3413 y(Pic)n(king)26 b(up)f(existing)h(moun)n(ts)19
+b Fd(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
+(:)g(:)g(:)g(:)45 b Fr(41)150 3503 y(pid)25 b(\014le,)h(creating)h
+(with)f(-p)f(option)17 b Fd(:)d(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
+(:)g(:)g(:)g(:)g(:)44 b Fr(41)150 3593 y(PID;)26 b(Amd)11
+b Fd(:)h(:)h(:)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(:)g(:)g(:)g(:)g
+(:)g(:)h(:)37 b Fr(76)150 3683 y(pid)p 262 3683 24 4
+v 33 w(\014le)26 b(P)n(arameter)16 b Fd(:)e(:)f(:)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(:)42 b Fr(68)150 3773 y(plo)r(c)n(k)26 b(P)n(arameter)12
+b Fd(:)i(:)g(:)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(:)g(:)g(:)g(:)39
+b Fr(69)150 3863 y(plo)r(c)n(k;)26 b(using)21 b Fd(:)13
+b(:)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(:)g(:)g(:)g(:)47
+b Fr(45)150 3953 y(p)r(ortmap)p 443 3953 V 34 w(program)26
+b(P)n(arameter)d Fd(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)h(:)f(:)g(:)47 b Fr(69)150 4043 y(preferred)p
+456 4043 V 34 w(amq)p 633 4043 V 34 w(p)r(ort)26 b(P)n(arameter)12
+b Fd(:)i(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
+39 b Fr(69)150 4133 y(Primary)26 b(serv)n(er)c Fd(:)13
+b(:)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(:)48
+b Fr(31)150 4223 y(prin)n(t)p 320 4223 V 33 w(pid)25
+b(P)n(arameter)17 b Fd(:)e(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)43
+b Fr(69)150 4313 y(prin)n(t)p 320 4313 V 33 w(v)n(ersion)26
+b(P)n(arameter)c Fd(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
+(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)47 b Fr(69)150
+4403 y(Pro)r(cess)27 b(id)15 b Fd(:)f(:)f(:)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(:)g(:)g(:)g(:)g(:)42 b Fr(41)150
+4492 y(pro)r(cess)27 b(id)e(of)i(Amd)e(daemon)12 b Fd(:)h(:)g(:)g(:)g
+(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)38
+b Fr(41)150 4582 y(Pro)r(cess)27 b(ID;)f(Amd)18 b Fd(:)12
+b(:)h(:)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(:)44 b Fr(76)150
+4672 y(Program)27 b(\014lesystem)17 b Fd(:)d(:)f(:)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(:)44 b Fr(52)150 4762 y(program,)27 b(\014lesystem)f(t)n(yp)r
+(e)10 b Fd(:)j(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
+(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)37 b Fr(52)150 5026 y
+Fw(Q)150 5148 y Fr(Querying)25 b(an)h(alternate)g(host)d
+Fd(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
+(:)g(:)g(:)g(:)49 b Fr(75)150 5238 y(quiet,)25 b(FSinfo)i(command)f
+(line)g(option)12 b Fd(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+(:)38 b Fr(89)2025 299 y Fw(R)2025 416 y Fq(redhat-ctl-amd)12
+b Fd(:)k(:)d(:)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(:)g(:)g(:)39
+b Fr(104)2025 504 y(Referencing)26 b(an)g(existing)g(part)f(of)i(the)e
+(lo)r(cal)j(name)2178 591 y(space)20 b Fd(:)14 b(:)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(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)46
+b Fr(53)2025 679 y(Referencing)26 b(an)g(existing)g(part)f(of)i(the)e
+(name)h(space)g(if)2178 766 y(target)h(exists)22 b Fd(:)14
+b(:)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(:)g(:)g(:)g(:)49 b Fr(53)2025
+854 y(Referencing)26 b(part)g(of)g(the)f(lo)r(cal)j(name)d(space)13
+b Fd(:)i(:)e(:)g(:)g(:)g(:)g(:)40 b Fr(52)2025 942 y(Regular)26
+b(expressions)g(in)g(maps)17 b Fd(:)c(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
+(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)43 b Fr(54)2025
+1030 y(remopts,)26 b(moun)n(t)f(option)e Fd(:)13 b(:)g(:)g(:)g(:)h(:)f
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
+49 b Fr(36)2025 1118 y(Replacemen)n(t)25 b(v)n(olumes)11
+b Fd(:)j(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
+g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)38 b Fr(13)2025 1206
+y(Replicated)26 b(v)n(olumes)15 b Fd(:)e(:)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(:)41 b Fr(13)2025 1294 y(Resetting)26 b(the)f(Amd)g(log)h(\014le)
+16 b Fd(:)d(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
+(:)g(:)h(:)f(:)g(:)42 b Fr(75)2025 1382 y(Resolving)26
+b(aliased)h(hostnames)17 b Fd(:)d(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
+(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)44 b Fr(41)2025 1470
+y(restart)p 2252 1470 V 34 w(moun)n(ts)26 b(P)n(arameter)21
+b Fd(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
+(:)h(:)f(:)g(:)g(:)47 b Fr(69)2025 1558 y(Restarting)26
+b(Amd)18 b Fd(:)12 b(:)h(:)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(:)h(:)f(:)g(:)44
+b Fr(73)2025 1646 y(Restarting)26 b(existing)g(moun)n(ts)c
+Fd(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
+(:)h(:)f(:)g(:)49 b Fr(41)2025 1733 y(rfs,)26 b(moun)n(t)g(option)19
+b Fd(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
+(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)46 b Fr(47,)27
+b(51)2025 1821 y(rhost,)f(moun)n(t)f(option)c Fd(:)13
+b(:)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(:)47 b Fr(47)2025 1909
+y(Ro)r(ot)26 b(\014lesystem)12 b Fd(:)h(:)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(:)g(:)39 b Fr(56)2025 1997 y(ro)r(ot,)27
+b(\014lesystem)e(t)n(yp)r(e)14 b Fd(:)e(:)i(:)f(:)g(:)g(:)g(:)g(:)g(:)h
+(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
+40 b Fr(56)2025 2085 y(RPC)26 b(Program)h(n)n(um)n(b)r(ers;)e(Amd)9
+b Fd(:)j(:)i(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
+g(:)36 b Fr(76)2025 2173 y(RPC)26 b(retries)21 b Fd(:)13
+b(:)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(:)g(:)g(:)g(:)47
+b Fr(16)2025 2261 y(Run-time)24 b(administration)8 b
+Fd(:)15 b(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
+(:)f(:)g(:)g(:)g(:)g(:)g(:)35 b Fr(73)2025 2349 y(Running)24
+b(m)n(ultiple)i(Amd)18 b Fd(:)c(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)46
+b Fr(76)2025 2437 y(rwho)26 b(serv)n(ers)8 b Fd(:)14
+b(:)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(:)g(:)35
+b Fr(110)2025 2673 y Fw(S)2025 2791 y Fr(searc)n(h)p
+2237 2791 V 34 w(path)25 b(P)n(arameter)f Fd(:)14 b(:)f(:)g(:)g(:)g(:)g
+(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
+50 b Fr(61)2025 2879 y(Secondary)25 b(serv)n(er)d Fd(:)14
+b(:)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(:)49 b Fr(31)2025
+2967 y(sel,)26 b(FSinfo)h(moun)n(t)e(option)9 b Fd(:)k(:)h(:)f(:)g(:)g
+(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
+36 b Fr(84)2025 3054 y(Selecting)26 b(sp)r(eci\014c)g(log)h(messages)22
+b Fd(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
+(:)46 b Fr(42)2025 3142 y(Selector;)26 b(arc)n(h)10 b
+Fd(:)j(:)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(:)g(:)g(:)h(:)f(:)36
+b Fr(26)2025 3230 y(Selector;)26 b(auto)r(dir)10 b Fd(:)k(:)f(:)g(:)g
+(:)g(:)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(:)36 b Fr(26)2025 3318
+y(Selector;)26 b(b)n(yte)9 b Fd(:)j(:)i(:)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(:)g(:)g(:)h(:)f(:)35 b Fr(26)2025 3406 y(Selector;)26
+b(cluster)c Fd(:)13 b(:)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(:)
+48 b Fr(26)2025 3494 y(Selector;)26 b(domain)9 b Fd(:)14
+b(:)f(:)g(:)g(:)g(:)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(:)35
+b Fr(26)2025 3582 y(Selector;)26 b(exists)d Fd(:)13 b(:)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(:)g(:)g(:)g(:)49 b Fr(29)2025 3670
+y(Selector;)26 b(false)8 b Fd(:)15 b(:)e(:)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(:)g(:)34 b Fr(29)2025 3758 y(Selector;)26
+b(full)p 2449 3758 V 35 w(os)10 b Fd(:)k(:)f(:)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(:)h(:)36 b Fr(27)2025 3846 y(Selector;)26
+b(gid)13 b Fd(:)h(:)f(:)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(:)g(:)
+g(:)g(:)g(:)40 b Fr(29)2025 3933 y(Selector;)26 b(host)11
+b Fd(:)j(:)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(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)37
+b Fr(27)2025 4021 y(Selector;)26 b(hostd)6 b Fd(:)14
+b(:)f(:)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(:)33
+b Fr(27)2025 4109 y(Selector;)26 b(in)p 2405 4109 V 34
+w(net)n(w)n(ork)19 b Fd(:)13 b(:)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(:)45
+b Fr(30)2025 4197 y(Selector;)26 b(k)l(arc)n(h)9 b Fd(:)k(:)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(:)h(:)f(:)35 b Fr(27)2025
+4285 y(Selector;)26 b(k)n(ey)8 b Fd(:)k(:)i(:)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(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)34 b Fr(28)2025 4373
+y(Selector;)26 b(map)9 b Fd(:)k(:)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(:)g(:)g(:)h(:)f(:)35 b Fr(28)2025 4461 y(Selector;)26
+b(netgrp)7 b Fd(:)13 b(:)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(:)33 b Fr(29)2025 4549 y(Selector;)26 b(netgrp)r(d)18
+b Fd(:)13 b(:)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(:)45
+b Fr(29)2025 4637 y(Selector;)26 b(netn)n(um)n(b)r(er)20
+b Fd(:)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(:)g(:)47 b Fr(28)2025
+4725 y(Selector;)26 b(net)n(w)n(ork)16 b Fd(:)e(:)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(:)g(:)43 b Fr(28)2025 4813 y(Selector;)26
+b(os)13 b Fd(:)h(:)f(:)g(:)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
+(:)g(:)g(:)h(:)39 b Fr(27)2025 4900 y(Selector;)26 b(osv)n(er)13
+b Fd(:)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(:)g(:)g(:)h(:)f(:)39
+b Fr(27)2025 4988 y(Selector;)26 b(path)c Fd(:)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(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)48 b Fr(28)2025 5076
+y(Selector;)26 b(true)13 b Fd(:)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(:)g(:)g(:)g(:)g(:)g(:)40 b Fr(30)2025 5164 y(Selector;)26
+b(uid)11 b Fd(:)i(:)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(:)
+g(:)g(:)h(:)37 b Fr(28)2025 5252 y(Selector;)26 b(v)n(endor)19
+b Fd(:)13 b(:)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(:)g(:)g(:)46
+b Fr(27)2025 5340 y(Selector;)26 b(wire)11 b Fd(:)j(:)g(:)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(:)g(:)g(:)g(:)g(:)g(:)h(:)37 b Fr(28)p
+eop end
+%%Page: 127 129
+TeXDict begin 127 128 bop 150 -116 a Fx(Index)3241 b(127)150
+299 y Fr(Selector;)27 b(xhost)8 b Fd(:)k(:)h(:)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(:)34 b Fr(30)150 387 y(Selectors)22
+b Fd(:)14 b(:)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(:)g(:)g(:)h(:)f(:)g(:)
+g(:)g(:)g(:)g(:)48 b Fr(26)150 476 y(selectors)27 b(on)f(default)14
+b Fd(:)f(:)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(:)40 b Fr(111)150
+564 y(selectors)p 436 564 24 4 v 35 w(in)p 535 564 V
+34 w(defaults)27 b(P)n(arameter)18 b Fd(:)c(:)g(:)f(:)g(:)g(:)g(:)g(:)g
+(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)45 b Fr(61)150 653 y(Serv)n(er)25
+b(crashes)17 b Fd(:)d(:)f(:)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(:)g(:)43 b Fr(15)150 742 y(Setting)26 b(a)g(dela)n(y)f(on)h(a)g(moun)
+n(t)f(lo)r(cation)9 b Fd(:)14 b(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
+(:)35 b Fr(31)150 830 y(Setting)26 b(additional)g(options)g(on)g(a)g
+(moun)n(t)f(lo)r(cation)310 917 y Fd(:)14 b(:)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(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)33
+b Fr(30)150 1006 y(Setting)26 b(Amd's)f(RPC)h(parameters)10
+b Fd(:)k(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)37
+b Fr(41)150 1094 y(Setting)26 b(debug)f(\015ags)20 b
+Fd(:)13 b(:)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(:)46 b Fr(44)150
+1183 y(Setting)26 b(default)g(map)f(parameters)12 b Fd(:)i(:)f(:)g(:)h
+(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)38 b Fr(25)150
+1271 y(Setting)26 b(map)f(cac)n(he)h(parameters)21 b
+Fd(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
+(:)47 b Fr(54)150 1360 y(Setting)26 b(map)f(options)17
+b Fd(:)d(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
+g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)44 b Fr(30)150
+1448 y(Setting)26 b(system)f(moun)n(t)g(options)8 b Fd(:)14
+b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)35
+b Fr(31)150 1537 y(Setting)26 b(system)f(moun)n(t)g(options)i(for)f
+(non-lo)r(cal)304 1624 y(net)n(w)n(orks)12 b Fd(:)h(:)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(:)h(:)f(:)g(:)38 b Fr(36)150
+1713 y(Setting)26 b(the)f(Amd)g(log)h(\014le)g(via)g(Amq)17
+b Fd(:)c(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)44
+b Fr(75)150 1801 y(Setting)26 b(the)f(cluster)h(name)13
+b Fd(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
+g(:)g(:)g(:)h(:)f(:)g(:)39 b Fr(43)150 1890 y(Setting)26
+b(the)f(default)h(moun)n(t)f(directory)14 b Fd(:)f(:)g(:)h(:)f(:)g(:)g
+(:)g(:)g(:)g(:)h(:)f(:)40 b Fr(39)150 1978 y(Setting)26
+b(the)f(\014lesystem)h(t)n(yp)r(e)f(option)11 b Fd(:)i(:)g(:)g(:)g(:)g
+(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37 b Fr(37)150 2067
+y(Setting)26 b(the)f(in)n(terv)l(al)g(b)r(efore)i(a)f(\014lesystem)g
+(times)g(out)310 2154 y Fd(:)14 b(:)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(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)33
+b Fr(39)150 2243 y(Setting)26 b(the)f(in)n(terv)l(al)g(b)r(et)n(w)n
+(een)h(unmoun)n(t)e(attempts)310 2330 y Fd(:)14 b(:)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(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
+(:)g(:)33 b Fr(42)150 2418 y(Setting)26 b(the)f(Kernel)g(arc)n
+(hitecture)e Fd(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
+(:)g(:)g(:)49 b Fr(40)150 2507 y(Setting)26 b(the)f(lo)r(cal)i(domain)f
+(name)12 b Fd(:)i(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
+(:)g(:)h(:)38 b Fr(40)150 2595 y(Setting)26 b(the)f(lo)r(cal)i(moun)n
+(t)e(p)r(oin)n(t)13 b Fd(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
+g(:)g(:)g(:)g(:)g(:)h(:)39 b Fr(31)150 2684 y(Setting)26
+b(the)f(log)i(\014le)13 b Fd(:)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(:)g(:)g(:)h
+(:)39 b Fr(40)150 2772 y(Setting)26 b(the)f(NIS)f(\(YP\))i(domain)g
+(name)14 b Fd(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)40
+b Fr(43)150 2861 y(Setting)26 b(the)f(op)r(erating)h(system)g(arc)n
+(hitecture)18 b Fd(:)13 b(:)h(:)f(:)g(:)g(:)44 b Fr(43)150
+2950 y(Setting)26 b(the)f(Op)r(erating)h(System)f(name)9
+b Fd(:)k(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)35
+b Fr(45)150 3038 y(Setting)26 b(the)f(Op)r(erating)h(System)f(v)n
+(ersion)15 b Fd(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)41
+b Fr(41)150 3127 y(Setting)26 b(the)f(sublink)g(option)c
+Fd(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
+(:)g(:)g(:)g(:)g(:)47 b Fr(37)150 3215 y(shared)26 b(libraries)15
+b Fd(:)f(:)f(:)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(:)g(:)g(:)41
+b Fr(17)150 3304 y(Shared)25 b(Memory)h(and)g(Sw)n(ap)f(Filesystem)13
+b Fd(:)i(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)39 b Fr(51)150
+3392 y(Sharing)26 b(a)g(\014leserv)n(er)g(b)r(et)n(w)n(een)f(arc)n
+(hitectures)17 b Fd(:)c(:)h(:)f(:)g(:)43 b Fr(109)150
+3481 y(sho)n(w)p 319 3481 V 34 w(statfs)p 534 3481 V
+35 w(en)n(tries)26 b(P)n(arameter)e Fd(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g
+(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)49 b Fr(69)150
+3569 y(SIGHUP)25 b(signal)13 b Fd(:)h(:)g(:)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(:)40 b Fr(54)150 3658 y(SIGINT)25 b(signal)10
+b Fd(:)k(:)f(:)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(:)36
+b Fr(73)150 3746 y(SIGTERM)26 b(signal)14 b Fd(:)g(:)f(:)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(:)40 b Fr(73)150 3835 y(Single-Host)26
+b(Mail)h(Sp)r(o)r(ol)f(Directory)21 b Fd(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)h(:)f(:)g(:)g(:)47 b Fr(95)150 3923 y(Source)26
+b(co)r(de)g(distribution)18 b Fd(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)45
+b Fr(5)150 4012 y(Starting)26 b(Amd)c Fd(:)13 b(:)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(:)g(:)49 b Fr(73)150 4100 y(Statically)26
+b(moun)n(ts)g(\014lesystems,)g(FSinfo)11 b Fd(:)j(:)f(:)g(:)g(:)g(:)g
+(:)h(:)f(:)g(:)g(:)37 b Fr(85)150 4189 y(Statistics)15
+b Fd(:)f(:)f(:)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(:)g(:)g
+(:)h(:)f(:)g(:)41 b Fr(76)150 4278 y(Stopping)25 b(Amd)10
+b Fd(:)j(:)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(:)36
+b Fr(73)150 4366 y(Stripping)25 b(the)h(lo)r(cal)h(domain)f(name)10
+b Fd(:)j(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)36
+b Fr(25)150 4455 y(sublink)14 b Fd(:)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(:)g(:)
+g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)40
+b Fr(13)150 4543 y(sublink,)25 b(moun)n(t)g(option)20
+b Fd(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
+(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)46 b Fr(37)150 4632
+y(sun)p 271 4632 V 33 w(map)p 449 4632 V 34 w(syn)n(tax)25
+b(P)n(arameter)15 b Fd(:)f(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
+(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)41 b Fr(61)150 4720 y(Supp)r(orted)25
+b(Platforms)f Fd(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)49
+b Fr(17)150 4809 y(Sym)n(b)r(olic)26 b(link)f(\014lesystem)c
+Fd(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
+(:)g(:)g(:)g(:)g(:)g(:)g(:)47 b Fr(52)150 4897 y(Sym)n(b)r(olic)26
+b(link)f(\014lesystem)h(I)r(I)13 b Fd(:)f(:)i(:)f(:)g(:)g(:)g(:)g(:)g
+(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)39
+b Fr(53)150 4986 y(Symlink)25 b(if)h(target)g(exists,)h(NFS)e
+(otherwise)c Fd(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)47 b
+Fr(53)150 5074 y(symlink,)26 b(link)f(\014lesystem)h(t)n(yp)r(e)14
+b Fd(:)e(:)h(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
+g(:)g(:)40 b Fr(52)150 5163 y(symlink,)26 b(linkx)f(\014lesystem)g(t)n
+(yp)r(e)10 b Fd(:)j(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
+(:)g(:)g(:)g(:)37 b Fr(53)150 5251 y(symlink,)26 b(nfsl)g(\014lesystem)
+g(t)n(yp)r(e)18 b Fd(:)12 b(:)h(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
+(:)g(:)h(:)f(:)g(:)g(:)g(:)44 b Fr(53)150 5340 y(Sync)n(hronizing)25
+b(the)g(map)h(cac)n(he)21 b Fd(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)47 b Fr(54)2025 299
+y(syslog)18 b Fd(:)c(:)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
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)45 b Fr(40)2025
+386 y(syslog)27 b(facilit)n(y;)g(sp)r(ecifying)f(an)g(alternate)16
+b Fd(:)e(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)42 b Fr(40)2025
+474 y(syslog)27 b(priorities)9 b Fd(:)14 b(:)f(:)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(:)g(:)36 b Fr(42)2025 725 y Fw(T)2025
+842 y Fr(tag)26 b(P)n(arameter)14 b Fd(:)g(:)f(:)g(:)g(:)g(:)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(:)40 b Fr(70)2025 929 y(T)-6
+b(ags)27 b(for)f(Amd)f(con\014guration)h(\014le)18 b
+Fd(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)45
+b Fr(45)2025 1017 y(TCP)20 b Fd(:)13 b(:)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(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)46
+b Fr(67)2025 1104 y(TCP;)27 b(using)f(with)g(Amq)17 b
+Fd(:)12 b(:)h(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
+(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)43 b Fr(76)2025 1192
+y(tfs,)26 b(\014lesystem)g(t)n(yp)r(e)7 b Fd(:)13 b(:)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(:)g(:)34 b Fr(51)2025 1279 y(The)26 b(moun)n(t)f(system)g
+(call)6 b Fd(:)15 b(:)e(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)33 b Fr(31)2025
+1367 y(tmpfs,)26 b(\014lesystem)g(t)n(yp)r(e)21 b Fd(:)13
+b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
+(:)f(:)g(:)g(:)g(:)g(:)g(:)49 b Fr(51)2025 1454 y(T)-6
+b(op)25 b(lev)n(el)h(\014lesystem)11 b Fd(:)i(:)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(:)37 b Fr(56)2025 1542 y(toplvl,)26 b(\014lesystem)g(t)n(yp)r
+(e)19 b Fd(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
+(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)47 b Fr(56)2025
+1629 y(T)-6 b(ranslucen)n(t)25 b(Filesystem)d Fd(:)13
+b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
+(:)h(:)f(:)g(:)g(:)g(:)47 b Fr(51)2025 1717 y(true)25
+b(Selector)h(F)-6 b(unction)17 b Fd(:)c(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)43
+b Fr(30)2025 1804 y(true,)25 b(b)r(o)r(olean)i(moun)n(t)e(selector)12
+b Fd(:)j(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)
+f(:)g(:)38 b Fr(30)2025 1892 y(truncate)p 2312 1892 V
+33 w(log)27 b(P)n(arameter)14 b Fd(:)g(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)40
+b Fr(70)2025 1979 y(t)n(yp)r(e,)25 b(moun)n(t)g(option)15
+b Fd(:)f(:)f(:)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(:)42 b Fr(37)2025
+2067 y(T)n(yp)r(es)25 b(of)i(con\014guration)f(map)13
+b Fd(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
+g(:)g(:)h(:)39 b Fr(19)2025 2154 y(T)n(yp)r(es)25 b(of)i(\014lesystem)
+18 b Fd(:)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(:)g(:)h(:)44
+b Fr(47)2025 2242 y(T)n(yp)r(es)25 b(of)i(moun)n(t)e(map)e
+Fd(:)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(:)49 b Fr(19)2025
+2493 y Fw(U)2025 2610 y Fr(udf,)25 b(\014lesystem)h(t)n(yp)r(e)12
+b Fd(:)g(:)i(:)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(:)38 b Fr(50)2025
+2697 y(UDP)16 b Fd(:)d(:)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(:)h(:)
+f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)43 b Fr(67)2025
+2785 y(UDP;)25 b(using)h(with)g(Amq)14 b Fd(:)e(:)i(:)f(:)g(:)g(:)g(:)g
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
+41 b Fr(77)2025 2872 y(UFS)8 b Fd(:)13 b(:)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(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)35
+b Fr(49)2025 2960 y(ufs,)26 b(\014lesystem)g(t)n(yp)r(e)18
+b Fd(:)12 b(:)h(:)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(:)44 b Fr(49)2025
+3047 y(uid)25 b(Selector)h(V)-6 b(ariable)7 b Fd(:)14
+b(:)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(:)33 b Fr(28)2025 3135
+y(uid,)25 b(moun)n(t)g(selector)16 b Fd(:)f(:)e(:)g(:)g(:)h(:)f(:)g(:)g
+(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
+g(:)g(:)43 b Fr(28)2025 3222 y(umapfs,)26 b(\014lesystem)g(t)n(yp)r(e)
+14 b Fd(:)e(:)h(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
+(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)40 b Fr(51)2025 3310 y(umoun)n(t,)25
+b(moun)n(t)g(option)11 b Fd(:)i(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
+(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)38
+b Fr(52)2025 3397 y(Union)25 b(\014le)h(maps)8 b Fd(:)13
+b(:)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(:)34
+b Fr(22)2025 3485 y(Union)25 b(\014lesystem)11 b Fd(:)i(:)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(:)37 b Fr(55)2025 3572
+y(union,)25 b(\014lesystem)h(t)n(yp)r(e)6 b Fd(:)13 b(:)g(:)g(:)g(:)h
+(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
+g(:)g(:)g(:)33 b Fr(55)2025 3660 y(Unix)24 b(\014lesystem)14
+b Fd(:)g(:)f(:)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(:)g(:)g(:)h(:)f(:)40
+b Fr(49)2025 3747 y(Unix)24 b(namespace)15 b Fd(:)g(:)e(:)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(:)42 b Fr(14)2025 3835 y(unmoun)n(t)24
+b(attempt)i(bac)n(k)n(o\013)f(in)n(terv)l(al)12 b Fd(:)h(:)g(:)g(:)g(:)
+g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)39 b Fr(42)2025 3922
+y(unmoun)n(t,)24 b(moun)n(t)i(option)7 b Fd(:)13 b(:)g(:)g(:)g(:)g(:)g
+(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
+33 b Fr(52)2025 4010 y(unmoun)n(t)p 2332 4010 V 32 w(on)p
+2445 4010 V 34 w(exit)26 b(P)n(arameter)18 b Fd(:)c(:)f(:)g(:)h(:)f(:)g
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)45
+b Fr(70)2025 4097 y(Unmoun)n(ting)24 b(a)i(\014lesystem)14
+b Fd(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
+g(:)g(:)40 b Fr(76,)27 b(77)2025 4185 y(use)p 2137 4185
+V 34 w(tcp)n(wrapp)r(ers)f(P)n(arameter)13 b Fd(:)h(:)f(:)g(:)g(:)h(:)f
+(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)40
+b Fr(70)2025 4272 y(User)25 b(\014lesystems)20 b Fd(:)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(:)g(:)g(:)g(:)g(:)46 b Fr(107)2025
+4360 y(User)25 b(ID)g(Mapping)i(Filesystem)9 b Fd(:)14
+b(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
+(:)36 b Fr(51)2025 4447 y(User)25 b(maps,)i(automatic)f(generation)e
+Fd(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)49
+b Fr(21)2025 4535 y(Using)26 b(FSinfo)20 b Fd(:)13 b(:)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(:)g(:)g(:)h(:)46 b Fr(79)2025
+4622 y(Using)26 b(Hlfsd)7 b Fd(:)14 b(:)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(:)
+g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)34 b Fr(98)2025 4710
+y(Using)26 b(syslog)g(to)g(log)h(errors)16 b Fd(:)f(:)e(:)g(:)g(:)g(:)g
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)43
+b Fr(40)2025 4797 y(Using)26 b(the)f(passw)n(ord)i(\014le)e(as)i(a)f
+(map)8 b Fd(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
+(:)35 b Fr(21)2025 5048 y Fw(V)2025 5165 y Fr(V)-6 b(ariable)26
+b(expansion)c Fd(:)14 b(:)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(:)49
+b Fr(25)2025 5252 y(v)n(endor)25 b(P)n(arameter)e Fd(:)13
+b(:)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(:)h(:)48 b Fr(70)2025
+5340 y(v)n(endor)25 b(Selector)h(V)-6 b(ariable)15 b
+Fd(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
+(:)g(:)g(:)g(:)g(:)g(:)42 b Fr(27)p eop end
+%%Page: 128 130
+TeXDict begin 128 129 bop 150 -116 a Fx(128)1810 b(Am-utils)30
+b(\(4.4BSD)j(Automoun)m(ter)d(Utilities\))150 299 y Fr(v)n(endor,)25
+b(moun)n(t)g(selector)7 b Fd(:)15 b(:)e(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
+(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)34
+b Fr(27)150 386 y(v)n(erb)r(ose,)26 b(FSinfo)g(command)g(line)g(option)
+d Fd(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)48 b Fr(89)150
+474 y(V)-6 b(ersion)26 b(information)7 b Fd(:)15 b(:)e(:)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(:)34 b Fr(41)150 561 y(V)-6 b(ersion)26
+b(information)h(at)f(run-time)7 b Fd(:)12 b(:)i(:)f(:)g(:)g(:)g(:)g(:)g
+(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)34 b Fr(77)150 649 y(v)n(olname,)26
+b(FSinfo)h(moun)n(t)e(option)16 b Fd(:)d(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
+g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)42 b Fr(84)150 737 y(V)-6
+b(olume)9 b Fd(:)k(:)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(:)h(:)f(:)
+g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)35 b Fr(13)150 824 y(V)-6
+b(olume)25 b(binding)7 b Fd(:)13 b(:)g(:)g(:)g(:)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(:)33 b Fr(14)150 912 y(V)-6 b(olume)25
+b(names)11 b Fd(:)j(:)f(:)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(:)37 b Fr(13)150 1146 y Fw(W)150 1263 y Fq(wait4amd)10
+b Fd(:)15 b(:)e(:)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(:)h(:)f(:)g(:)g(:)g(:)
+g(:)g(:)g(:)37 b Fr(104)150 1350 y Fq(wait4amd2die)17
+b Fd(:)f(:)d(:)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(:)43
+b Fr(104)150 1438 y(Wh)n(y)25 b(Deliv)n(er)g(In)n(to)g(the)h(Home)f
+(Directory?)e Fd(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)49
+b Fr(97)150 1526 y(Wildcards)26 b(in)g(maps)7 b Fd(:)14
+b(:)f(:)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(:)34 b Fr(23)2025
+299 y(wire)26 b(Selector)h(V)-6 b(ariable)6 b Fd(:)14
+b(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)33 b Fr(28)2025 390 y(wire,)27
+b(moun)n(t)e(selector)16 b Fd(:)e(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
+(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)43
+b Fr(28)2025 481 y Fq(wire-test)7 b Fd(:)15 b(:)e(:)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(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)34 b Fr(104)2025
+734 y Fw(X)2025 858 y Fr(XFS)8 b Fd(:)13 b(:)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(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)35
+b Fr(49)2025 949 y(xfs,)26 b(\014lesystem)g(t)n(yp)r(e)18
+b Fd(:)13 b(:)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(:)45 b Fr(49)2025
+1041 y(xhost)25 b(Selector)h(F)-6 b(unction)11 b Fd(:)i(:)g(:)h(:)f(:)g
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
+g(:)38 b Fr(30)2025 1132 y(xhost,)25 b(b)r(o)r(olean)i(moun)n(t)e
+(selector)6 b Fd(:)15 b(:)e(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
+(:)g(:)g(:)g(:)g(:)33 b Fr(30)2025 1402 y Fw(Y)2025 1526
+y Fr(YP)25 b(domain)h(name)12 b Fd(:)h(:)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(:)38 b Fr(43)p eop end
+%%Page: -1 131
+TeXDict begin -1 130 bop 3725 -116 a Fx(i)150 299 y Fu(T)-13
+b(able)53 b(of)h(Con)l(ten)l(ts)150 639 y Fw(Preface)30
+b Fb(:)20 b(:)g(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
+(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
+h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)74 b
+Fw(1)150 908 y(License)34 b Fb(:)19 b(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f
+(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)
+f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g
+(:)h(:)78 b Fw(3)150 1177 y(Source)45 b(Distribution)10
+b Fb(:)20 b(:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f
+(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)55
+b Fw(5)150 1447 y(Getting)46 b(Additional)f(Information)25
+b Fb(:)d(:)d(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)
+h(:)f(:)70 b Fw(7)275 1584 y Fx(Bug)30 b(Rep)s(orts)25
+b Fa(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
+(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
+g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g
+(:)h(:)f(:)h(:)f(:)55 b Fx(7)275 1693 y(Mailing)31 b(Lists)17
+b Fa(:)e(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
+f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
+(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
+f(:)g(:)h(:)f(:)47 b Fx(7)275 1803 y(Am-utils)30 b(Bo)s(ok)d
+Fa(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
+(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
+h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
+(:)h(:)f(:)56 b Fx(8)150 2044 y Fw(In)l(tro)t(duction)35
+b Fb(:)20 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
+(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
+f(:)h(:)f(:)h(:)f(:)g(:)80 b Fw(9)150 2314 y(History)20
+b Fb(:)g(:)g(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)
+g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h
+(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)65 b Fw(11)150
+2583 y(1)135 b(Ov)l(erview)21 b Fb(:)g(:)e(:)h(:)f(:)h(:)f(:)g(:)h(:)f
+(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
+f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)66 b
+Fw(13)275 2720 y Fx(1.1)92 b(F)-8 b(undamen)m(tals)14
+b Fa(:)i(:)g(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
+h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
+(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)44
+b Fx(13)275 2829 y(1.2)92 b(Filesystems)31 b(and)f(V)-8
+b(olumes)15 b Fa(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
+f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
+(:)h(:)f(:)g(:)h(:)f(:)h(:)44 b Fx(13)275 2939 y(1.3)92
+b(V)-8 b(olume)31 b(Naming)13 b Fa(:)j(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
+(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
+f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f
+(:)g(:)h(:)42 b Fx(13)275 3048 y(1.4)92 b(V)-8 b(olume)31
+b(Binding)12 b Fa(:)j(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
+(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
+f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)42
+b Fx(14)275 3158 y(1.5)92 b(Op)s(erational)30 b(Principles)d
+Fa(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
+(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
+h(:)f(:)g(:)h(:)f(:)h(:)56 b Fx(14)275 3268 y(1.6)92
+b(Moun)m(ting)31 b(a)g(V)-8 b(olume)19 b Fa(:)d(:)f(:)h(:)f(:)g(:)h(:)f
+(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
+h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
+(:)49 b Fx(14)275 3377 y(1.7)92 b(Automatic)32 b(Unmoun)m(ting)20
+b Fa(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
+(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
+h(:)f(:)g(:)h(:)f(:)50 b Fx(15)275 3487 y(1.8)92 b(Keep-aliv)m(es)28
+b Fa(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
+(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
+h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)56
+b Fx(15)275 3596 y(1.9)92 b(Non-blo)s(c)m(king)31 b(Op)s(eration)15
+b Fa(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
+h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h
+(:)f(:)h(:)f(:)g(:)45 b Fx(16)150 3838 y Fw(2)135 b(Supp)t(orted)44
+b(Platforms)21 b Fb(:)g(:)e(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h
+(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)66
+b Fw(17)150 4107 y(3)135 b(Moun)l(t)44 b(Maps)23 b Fb(:)c(:)h(:)f(:)g
+(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)
+g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)67
+b Fw(19)275 4244 y Fx(3.1)92 b(Map)30 b(T)m(yp)s(es)c
+Fa(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
+(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
+h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)56
+b Fx(19)399 4354 y(3.1.1)93 b(File)31 b(maps)20 b Fa(:)c(:)f(:)g(:)h(:)
+f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
+(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
+g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)50 b Fx(19)399 4463 y(3.1.2)93
+b(ndbm)28 b(maps)22 b Fa(:)16 b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
+(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
+h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)52
+b Fx(20)399 4573 y(3.1.3)93 b(NIS)30 b(maps)20 b Fa(:)14
+b(:)i(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
+(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
+g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)49 b
+Fx(20)399 4682 y(3.1.4)93 b(NIS+)29 b(maps)c Fa(:)15
+b(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
+(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)
+f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)54 b Fx(21)399
+4792 y(3.1.5)93 b(Hesio)s(d)30 b(maps)22 b Fa(:)15 b(:)h(:)f(:)g(:)h(:)
+f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
+(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)
+g(:)h(:)f(:)h(:)51 b Fx(21)399 4902 y(3.1.6)93 b(P)m(assw)m(ord)30
+b(maps)11 b Fa(:)k(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
+(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
+h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)40 b Fx(21)399
+5011 y(3.1.7)93 b(Union)30 b(maps)16 b Fa(:)f(:)g(:)h(:)f(:)g(:)h(:)f
+(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
+h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
+(:)h(:)f(:)h(:)45 b Fx(22)399 5121 y(3.1.8)93 b(LD)m(AP)31
+b(maps)9 b Fa(:)15 b(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
+f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
+(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)38
+b Fx(22)399 5230 y(3.1.9)93 b(Executable)31 b(maps)18
+b Fa(:)d(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
+g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
+(:)h(:)f(:)g(:)h(:)f(:)h(:)47 b Fx(23)275 5340 y(3.2)92
+b(Ho)m(w)31 b(k)m(eys)g(are)f(lo)s(ok)m(ed)i(up)21 b
+Fa(:)14 b(:)i(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
+(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
+h(:)f(:)g(:)h(:)f(:)51 b Fx(23)p eop end
+%%Page: -2 132
+TeXDict begin -2 131 bop 150 -116 a Fx(ii)1895 b(Am-utils)30
+b(\(4.4BSD)j(Automoun)m(ter)d(Utilities\))275 83 y(3.3)92
+b(Lo)s(cation)31 b(F)-8 b(ormat)19 b Fa(:)e(:)e(:)h(:)f(:)g(:)h(:)f(:)h
+(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
+h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
+(:)f(:)h(:)48 b Fx(24)399 193 y(3.3.1)93 b(Map)30 b(Defaults)d
+Fa(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
+(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
+g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)55 b Fx(25)399
+302 y(3.3.2)93 b(V)-8 b(ariable)32 b(Expansion)10 b Fa(:)k(:)i(:)f(:)h
+(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
+f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)40
+b Fx(25)399 412 y(3.3.3)93 b(Selectors)19 b Fa(:)e(:)e(:)h(:)f(:)h(:)f
+(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
+f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
+(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)49 b Fx(26)524 521 y(3.3.3.1)93
+b(arc)m(h)31 b(Selector)h(V)-8 b(ariable)25 b Fa(:)16
+b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
+(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)54
+b Fx(26)524 631 y(3.3.3.2)93 b(auto)s(dir)30 b(Selector)i(V)-8
+b(ariable)25 b Fa(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
+h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)54
+b Fx(26)524 741 y(3.3.3.3)93 b(b)m(yte)31 b(Selector)h(V)-8
+b(ariable)23 b Fa(:)17 b(:)e(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
+h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
+(:)53 b Fx(26)524 850 y(3.3.3.4)93 b(cluster)31 b(Selector)g(V)-8
+b(ariable)18 b Fa(:)f(:)e(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
+(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)47
+b Fx(26)524 960 y(3.3.3.5)93 b(domain)30 b(Selector)i(V)-8
+b(ariable)23 b Fa(:)17 b(:)e(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
+h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)53
+b Fx(26)524 1069 y(3.3.3.6)93 b(dollar)31 b(Selector)h(V)-8
+b(ariable)15 b Fa(:)i(:)e(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
+(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)45
+b Fx(27)524 1179 y(3.3.3.7)93 b(host)31 b(Selector)g(V)-8
+b(ariable)27 b Fa(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
+f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
+(:)55 b Fx(27)524 1289 y(3.3.3.8)93 b(hostd)30 b(Selector)i(V)-8
+b(ariable)20 b Fa(:)d(:)e(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
+(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)50
+b Fx(27)524 1398 y(3.3.3.9)93 b(k)-5 b(arc)m(h)31 b(Selector)g(V)-8
+b(ariable)23 b Fa(:)17 b(:)f(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
+f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)52
+b Fx(27)524 1508 y(3.3.3.10)94 b(os)30 b(Selector)i(V)-8
+b(ariable)27 b Fa(:)15 b(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
+h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
+(:)f(:)55 b Fx(27)524 1617 y(3.3.3.11)94 b(osv)m(er)31
+b(Selector)g(V)-8 b(ariable)27 b Fa(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f
+(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
+g(:)h(:)f(:)55 b Fx(27)524 1727 y(3.3.3.12)94 b(full)p
+1053 1727 28 4 v 39 w(os)31 b(Selector)h(V)-8 b(ariable)22
+b Fa(:)16 b(:)g(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
+(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)51 b Fx(27)524
+1836 y(3.3.3.13)94 b(v)m(endor)30 b(Selector)h(V)-8 b(ariable)13
+b Fa(:)k(:)f(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
+h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)42 b Fx(27)524
+1946 y(3.3.3.14)94 b(k)m(ey)31 b(Selector)g(V)-8 b(ariable)19
+b Fa(:)e(:)f(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
+f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)49
+b Fx(28)524 2056 y(3.3.3.15)94 b(map)30 b(Selector)h(V)-8
+b(ariable)20 b Fa(:)e(:)d(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
+(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)50
+b Fx(28)524 2165 y(3.3.3.16)94 b(netn)m(um)m(b)s(er)29
+b(Selector)j(V)-8 b(ariable)14 b Fa(:)i(:)g(:)f(:)h(:)f(:)h(:)f(:)g(:)h
+(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)44
+b Fx(28)524 2275 y(3.3.3.17)94 b(net)m(w)m(ork)31 b(Selector)g(V)-8
+b(ariable)9 b Fa(:)17 b(:)f(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
+(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)39
+b Fx(28)524 2384 y(3.3.3.18)94 b(path)30 b(Selector)h(V)-8
+b(ariable)15 b Fa(:)j(:)d(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
+(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)45
+b Fx(28)524 2494 y(3.3.3.19)94 b(wire)30 b(Selector)h(V)-8
+b(ariable)23 b Fa(:)17 b(:)f(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
+f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)52
+b Fx(28)524 2604 y(3.3.3.20)94 b(uid)29 b(Selector)j(V)-8
+b(ariable)23 b Fa(:)17 b(:)e(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
+h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
+(:)53 b Fx(28)524 2713 y(3.3.3.21)94 b(gid)30 b(Selector)i(V)-8
+b(ariable)27 b Fa(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
+f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
+(:)55 b Fx(29)524 2823 y(3.3.3.22)94 b(exists)31 b(Selector)g(F)-8
+b(unction)27 b Fa(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
+f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)55
+b Fx(29)524 2932 y(3.3.3.23)94 b(false)31 b(Selector)g(F)-8
+b(unction)8 b Fa(:)17 b(:)e(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
+(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)38
+b Fx(29)524 3042 y(3.3.3.24)94 b(netgrp)30 b(Selector)h(F)-8
+b(unction)28 b Fa(:)16 b(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
+h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)57
+b Fx(29)524 3152 y(3.3.3.25)94 b(netgrp)s(d)29 b(Selector)i(F)-8
+b(unction)21 b Fa(:)c(:)e(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
+(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)51
+b Fx(29)524 3261 y(3.3.3.26)94 b(in)p 1000 3261 V 39
+w(net)m(w)m(ork)32 b(Selector)f(F)-8 b(unction)21 b Fa(:)c(:)e(:)g(:)h
+(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
+f(:)51 b Fx(30)524 3371 y(3.3.3.27)94 b(true)30 b(Selector)h(F)-8
+b(unction)15 b Fa(:)h(:)g(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
+(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)44
+b Fx(30)524 3480 y(3.3.3.28)94 b(xhost)30 b(Selector)i(F)-8
+b(unction)8 b Fa(:)16 b(:)g(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
+(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)38
+b Fx(30)399 3590 y(3.3.4)93 b(Map)30 b(Options)13 b Fa(:)j(:)f(:)h(:)f
+(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
+f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
+(:)g(:)h(:)f(:)h(:)f(:)43 b Fx(30)524 3699 y(3.3.4.1)93
+b(addopts)30 b(Option)e Fa(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
+(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)
+f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)58 b Fx(30)524 3809
+y(3.3.4.2)93 b(dela)m(y)31 b(Option)21 b Fa(:)15 b(:)h(:)f(:)h(:)f(:)g
+(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
+h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)50
+b Fx(31)524 3919 y(3.3.4.3)93 b(fs)30 b(Option)12 b Fa(:)j(:)g(:)h(:)f
+(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
+f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
+(:)h(:)f(:)g(:)h(:)41 b Fx(31)524 4028 y(3.3.4.4)93 b(opts)31
+b(Option)20 b Fa(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
+(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
+f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)50 b Fx(31)524
+4138 y(3.3.4.5)93 b(remopts)30 b(Option)25 b Fa(:)16
+b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
+(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
+f(:)55 b Fx(36)524 4247 y(3.3.4.6)93 b(sublink)29 b(Option)22
+b Fa(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
+(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
+g(:)h(:)f(:)h(:)51 b Fx(37)524 4357 y(3.3.4.7)93 b(t)m(yp)s(e)31
+b(Option)17 b Fa(:)e(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
+f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
+(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)47 b Fx(37)p eop
+end
+%%Page: -3 133
+TeXDict begin -3 132 bop 3674 -116 a Fx(iii)150 83 y
+Fw(4)135 b Fg(A)l(md)58 b Fw(Command)45 b(Line)g(Options)25
+b Fb(:)c(:)e(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)70
+b Fw(39)275 220 y Fx(4.1)92 b Fp(-a)29 b Fo(directory)35
+b Fa(:)16 b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
+(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
+h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)56
+b Fx(39)275 330 y(4.2)92 b Fp(-c)29 b Fo(cac)m(he-in)m(terv)-5
+b(al)20 b Fa(:)f(:)c(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
+f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
+(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)46
+b Fx(39)275 439 y(4.3)92 b Fp(-d)29 b Fo(domain)22 b
+Fa(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h
+(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
+h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
+(:)51 b Fx(40)275 549 y(4.4)92 b Fp(-k)29 b Fo(k)m(ernel-arc)m
+(hitecture)23 b Fa(:)18 b(:)d(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h
+(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
+h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)47 b Fx(40)275
+658 y(4.5)92 b Fp(-l)29 b Fo(log-option)9 b Fa(:)18 b(:)d(:)h(:)f(:)g
+(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
+h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
+(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)39 b Fx(40)275
+768 y(4.6)92 b Fp(-n)22 b Fa(:)14 b(:)i(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
+(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)
+f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
+(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)51
+b Fx(41)275 878 y(4.7)92 b Fp(-o)29 b Fo(op-sys-v)m(er)34
+b Fa(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
+(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
+f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)56
+b Fx(41)275 987 y(4.8)92 b Fp(-p)22 b Fa(:)14 b(:)i(:)f(:)g(:)h(:)f(:)h
+(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)
+f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
+(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
+51 b Fx(41)275 1097 y(4.9)92 b Fp(-r)22 b Fa(:)14 b(:)i(:)f(:)g(:)h(:)f
+(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
+h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
+(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
+h(:)51 b Fx(41)275 1206 y(4.10)92 b Fp(-t)30 b Fo(timeout.retransmit)15
+b Fa(:)h(:)g(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
+h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
+(:)f(:)g(:)h(:)f(:)h(:)42 b Fx(41)275 1316 y(4.11)92
+b Fp(-v)19 b Fa(:)c(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
+(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
+h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
+(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)49 b Fx(41)275
+1425 y(4.12)92 b Fp(-w)30 b Fo(w)m(ait-timeout)14 b Fa(:)k(:)d(:)h(:)f
+(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
+f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
+(:)g(:)h(:)f(:)h(:)f(:)g(:)42 b Fx(42)275 1535 y(4.13)92
+b Fp(-x)30 b Fo(opts)23 b Fa(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
+(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
+h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
+(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)49 b Fx(42)275 1645
+y(4.14)92 b Fp(-y)30 b Fo(NIS-domain)9 b Fa(:)15 b(:)g(:)h(:)f(:)h(:)f
+(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
+g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
+(:)h(:)f(:)g(:)h(:)f(:)39 b Fx(43)275 1754 y(4.15)92
+b Fp(-A)30 b Fo(arc)m(hitecture)k Fa(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h
+(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
+f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
+(:)f(:)h(:)57 b Fx(43)275 1864 y(4.16)92 b Fp(-C)30 b
+Fo(cluster-name)16 b Fa(:)g(:)g(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
+(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
+f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)41
+b Fx(43)275 1973 y(4.17)92 b Fp(-D)30 b Fo(opts)23 b
+Fa(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
+(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
+f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
+(:)g(:)h(:)49 b Fx(44)275 2083 y(4.18)92 b Fp(-F)30 b
+Fo(conf-\014le)k Fa(:)15 b(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
+(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
+h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
+(:)f(:)g(:)58 b Fx(44)275 2193 y(4.19)92 b Fp(-H)19 b
+Fa(:)c(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
+(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
+h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
+(:)f(:)h(:)f(:)g(:)h(:)f(:)49 b Fx(45)275 2302 y(4.20)92
+b Fp(-O)30 b Fo(op-sys-name)25 b Fa(:)16 b(:)f(:)g(:)h(:)f(:)h(:)f(:)g
+(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
+h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
+(:)f(:)g(:)50 b Fx(45)275 2412 y(4.21)92 b Fp(-S)19 b
+Fa(:)c(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
+(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
+h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
+(:)f(:)h(:)f(:)g(:)h(:)f(:)49 b Fx(45)275 2521 y(4.22)92
+b Fp(-T)30 b Fo(tag)d Fa(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
+(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
+g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
+(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)47 b Fx(45)150 2764
+y Fw(5)135 b(Filesystem)46 b(T)l(yp)t(es)22 b Fb(:)d(:)g(:)h(:)f(:)h(:)
+f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
+(:)f(:)h(:)f(:)g(:)h(:)f(:)67 b Fw(47)275 2901 y Fx(5.1)92
+b(Net)m(w)m(ork)31 b(Filesystem)h(\(`)p Fp(nfs)p Fx('\))14
+b Fa(:)i(:)g(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
+h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
+(:)f(:)44 b Fx(47)275 3010 y(5.2)92 b(Net)m(w)m(ork)31
+b(Host)h(Filesystem)f(\(`)p Fp(host)p Fx('\))25 b Fa(:)15
+b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
+(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)54 b Fx(47)275
+3120 y(5.3)92 b(Net)m(w)m(ork)31 b(Filesystem)h(Group)e(\(`)p
+Fp(nfsx)p Fx('\))10 b Fa(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
+(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)40
+b Fx(48)275 3230 y(5.4)92 b(Unix)30 b(Filesystem)i(\(`)p
+Fp(ufs)p Fx(',)e(`)p Fp(xfs)p Fx(',)g(or)h(`)p Fp(efs)p
+Fx('\))23 b Fa(:)15 b(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h
+(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)52 b Fx(49)275
+3339 y(5.5)92 b(Cac)m(hing)31 b(Filesystem)g(\(`)p Fp(cachefs)p
+Fx('\))26 b Fa(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
+(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
+56 b Fx(49)275 3449 y(5.6)92 b(CD-R)m(OM)31 b(Filesystem)h(\(`)p
+Fp(cdfs)p Fx('\))26 b Fa(:)15 b(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
+(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
+f(:)h(:)f(:)g(:)56 b Fx(50)275 3558 y(5.7)92 b(CD-R)m(OM)31
+b(Filesystem)h(\(`)p Fp(udf)p Fx('\))9 b Fa(:)16 b(:)f(:)g(:)h(:)f(:)h
+(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
+f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)39 b Fx(50)275
+3668 y(5.8)92 b(Lo)s(opbac)m(k)30 b(Filesystem)i(\(`)p
+Fp(lofs)p Fx('\))27 b Fa(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
+(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
+h(:)f(:)g(:)h(:)56 b Fx(50)275 3778 y(5.9)92 b(Memory/RAM)31
+b(Filesystem)h(\(`)p Fp(mfs)p Fx('\))27 b Fa(:)15 b(:)h(:)f(:)g(:)h(:)f
+(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
+g(:)h(:)f(:)h(:)f(:)56 b Fx(51)275 3887 y(5.10)92 b(Null)31
+b(Filesystem)g(\(`)p Fp(nullfs)p Fx('\))22 b Fa(:)16
+b(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
+(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)52
+b Fx(51)275 3997 y(5.11)92 b(Flopp)m(y)31 b(Filesystem)h(\(`)p
+Fp(pcfs)p Fx('\))16 b Fa(:)g(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
+f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f
+(:)g(:)h(:)f(:)h(:)f(:)46 b Fx(51)275 4106 y(5.12)92
+b(T)-8 b(ranslucen)m(t)31 b(Filesystem)h(\(`)p Fp(tfs)p
+Fx('\))27 b Fa(:)15 b(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
+(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)
+56 b Fx(51)275 4216 y(5.13)92 b(Shared)29 b(Memory+Sw)m(ap)h
+(Filesystem)i(\(`)p Fp(tmpfs)p Fx('\))18 b Fa(:)e(:)f(:)h(:)f(:)g(:)h
+(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)48 b Fx(51)275
+4325 y(5.14)92 b(User)30 b(ID)h(Mapping)f(Filesystem)i(\(`)p
+Fp(umapfs)p Fx('\))23 b Fa(:)15 b(:)g(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g
+(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)52 b Fx(51)275
+4435 y(5.15)92 b(Program)31 b(Filesystem)g(\(`)p Fp(program)p
+Fx('\))12 b Fa(:)j(:)g(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
+(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)41
+b Fx(52)275 4545 y(5.16)92 b(Sym)m(b)s(olic)30 b(Link)g(Filesystem)i
+(\(`)p Fp(link)p Fx('\))10 b Fa(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
+(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
+f(:)40 b Fx(52)275 4654 y(5.17)92 b(Sym)m(b)s(olic)30
+b(Link)g(Filesystem)i(I)s(I)e(\(`)p Fp(linkx)p Fx('\))18
+b Fa(:)d(:)g(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)
+f(:)h(:)f(:)g(:)h(:)f(:)h(:)47 b Fx(53)275 4764 y(5.18)92
+b(NFS-Link)30 b(Filesystem)i(\(`)p Fp(nfsl)p Fx('\))21
+b Fa(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
+(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)50
+b Fx(53)275 4873 y(5.19)92 b(Automoun)m(t)31 b(Filesystem)h(\(`)p
+Fp(auto)p Fx('\))8 b Fa(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
+(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
+h(:)f(:)38 b Fx(54)275 4983 y(5.20)92 b(Direct)32 b(Automoun)m(t)f
+(Filesystem)g(\(`)p Fp(direct)p Fx('\))24 b Fa(:)16 b(:)f(:)g(:)h(:)f
+(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)54
+b Fx(55)275 5093 y(5.21)92 b(Union)30 b(Filesystem)i(\(`)p
+Fp(union)p Fx('\))11 b Fa(:)k(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
+(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
+g(:)h(:)f(:)h(:)f(:)g(:)41 b Fx(55)275 5202 y(5.22)92
+b(Error)30 b(Filesystem)h(\(`)p Fp(error)p Fx('\))24
+b Fa(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
+(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
+h(:)53 b Fx(56)275 5312 y(5.23)92 b(T)-8 b(op-lev)m(el)32
+b(Filesystem)g(\(`)p Fp(toplvl)p Fx('\))27 b Fa(:)16
+b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h
+(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)57 b Fx(56)p
+eop end
+%%Page: -4 134
+TeXDict begin -4 133 bop 150 -116 a Fx(iv)1872 b(Am-utils)30
+b(\(4.4BSD)j(Automoun)m(ter)d(Utilities\))275 83 y(5.24)92
+b(Ro)s(ot)31 b(Filesystem)h(\(`)p Fp(root)p Fx('\))16
+b Fa(:)g(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
+f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f
+(:)h(:)f(:)46 b Fx(56)275 193 y(5.25)92 b(Inheritance)31
+b(Filesystem)g(\(`)p Fp(inherit)p Fx('\))21 b Fa(:)15
+b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
+(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)51 b Fx(56)150 435
+y Fw(6)135 b(Amd)44 b(Con\014guration)i(File)13 b Fb(:)20
+b(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f
+(:)h(:)f(:)h(:)f(:)58 b Fw(59)275 572 y Fx(6.1)92 b(File)31
+b(F)-8 b(ormat)16 b Fa(:)h(:)f(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h
+(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
+f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
+(:)f(:)h(:)f(:)46 b Fx(59)275 682 y(6.2)92 b(The)29 b(Global)j(Section)
+9 b Fa(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
+(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
+h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)38 b Fx(59)275
+791 y(6.3)92 b(Regular)31 b(Map)f(Sections)17 b Fa(:)f(:)f(:)h(:)f(:)h
+(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
+h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
+(:)46 b Fx(59)275 901 y(6.4)92 b(Common)29 b(P)m(arameters)14
+b Fa(:)j(:)f(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
+h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h
+(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)44 b Fx(59)399 1010 y(6.4.1)93
+b Fp(autofs_use_lofs)26 b Fx(P)m(arameter)18 b Fa(:)f(:)f(:)f(:)g(:)h
+(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
+f(:)g(:)h(:)f(:)h(:)f(:)48 b Fx(60)399 1120 y(6.4.2)93
+b Fp(browsable_dirs)26 b Fx(P)m(arameter)c Fa(:)17 b(:)e(:)h(:)f(:)h(:)
+f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
+(:)g(:)h(:)f(:)h(:)f(:)g(:)52 b Fx(60)399 1230 y(6.4.3)93
+b Fp(map_defaults)27 b Fx(P)m(arameter)9 b Fa(:)17 b(:)e(:)h(:)f(:)g(:)
+h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
+(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)39 b Fx(60)399
+1339 y(6.4.4)93 b Fp(map_options)27 b Fx(P)m(arameter)13
+b Fa(:)k(:)e(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
+f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)42
+b Fx(60)399 1449 y(6.4.5)93 b Fp(map_type)28 b Fx(P)m(arameter)d
+Fa(:)16 b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
+(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
+h(:)f(:)h(:)53 b Fx(60)399 1558 y(6.4.6)93 b Fp(mount_type)27
+b Fx(P)m(arameter)16 b Fa(:)i(:)d(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
+(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
+f(:)g(:)h(:)f(:)h(:)f(:)46 b Fx(61)399 1668 y(6.4.7)93
+b Fp(search_path)27 b Fx(P)m(arameter)13 b Fa(:)k(:)e(:)h(:)f(:)g(:)h
+(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
+f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)42 b Fx(61)399
+1778 y(6.4.8)93 b Fp(selectors_in_defaults)24 b Fx(P)m(arameter)17
+b Fa(:)g(:)e(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
+f(:)h(:)f(:)g(:)h(:)46 b Fx(61)399 1887 y(6.4.9)93 b
+Fp(sun_map_syntax)26 b Fx(P)m(arameter)c Fa(:)17 b(:)e(:)h(:)f(:)h(:)f
+(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
+g(:)h(:)f(:)h(:)f(:)g(:)52 b Fx(61)275 1997 y(6.5)92
+b(Global)31 b(P)m(arameters)21 b Fa(:)c(:)f(:)f(:)g(:)h(:)f(:)h(:)f(:)g
+(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
+h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)51
+b Fx(61)399 2106 y(6.5.1)93 b Fp(arch)29 b Fx(P)m(arameter)18
+b Fa(:)f(:)e(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
+g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
+(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)48 b Fx(61)399 2216 y(6.5.2)93
+b Fp(auto_attrcache)26 b Fx(P)m(arameter)c Fa(:)17 b(:)e(:)h(:)f(:)h(:)
+f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
+(:)g(:)h(:)f(:)h(:)f(:)g(:)52 b Fx(61)399 2325 y(6.5.3)93
+b Fp(auto_dir)28 b Fx(P)m(arameter)d Fa(:)16 b(:)f(:)g(:)h(:)f(:)h(:)f
+(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
+f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)53 b
+Fx(62)399 2435 y(6.5.4)93 b Fp(cache_duration)26 b Fx(P)m(arameter)c
+Fa(:)17 b(:)e(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
+(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)52
+b Fx(63)399 2545 y(6.5.5)93 b Fp(cluster)28 b Fx(P)m(arameter)h
+Fa(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
+(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
+h(:)f(:)h(:)f(:)57 b Fx(63)399 2654 y(6.5.6)93 b Fp(debug_mtab_file)26
+b Fx(P)m(arameter)18 b Fa(:)f(:)f(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
+(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
+48 b Fx(63)399 2764 y(6.5.7)93 b Fp(debug_options)27
+b Fx(P)m(arameter)g Fa(:)15 b(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
+(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
+g(:)h(:)55 b Fx(63)399 2873 y(6.5.8)93 b Fp(dismount_interval)26
+b Fx(P)m(arameter)11 b Fa(:)16 b(:)g(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
+g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)41
+b Fx(63)399 2983 y(6.5.9)93 b Fp(domain_strip)27 b Fx(P)m(arameter)9
+b Fa(:)17 b(:)e(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
+(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)39
+b Fx(63)399 3093 y(6.5.10)93 b Fp(exec_map_timeout)26
+b Fx(P)m(arameter)12 b Fa(:)17 b(:)f(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
+f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)42
+b Fx(63)399 3202 y(6.5.11)93 b Fp(forced_unmounts)27
+b Fx(P)m(arameter)16 b Fa(:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f
+(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)45
+b Fx(63)399 3312 y(6.5.12)93 b Fp(full_os)29 b Fx(P)m(arameter)d
+Fa(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
+(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
+h(:)f(:)g(:)55 b Fx(64)399 3421 y(6.5.13)93 b Fp(fully_qualified_hosts)
+25 b Fx(P)m(arameter)14 b Fa(:)j(:)e(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)
+h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)44 b Fx(64)399
+3531 y(6.5.14)93 b Fp(hesiod_base)28 b Fx(P)m(arameter)10
+b Fa(:)17 b(:)e(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
+(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)40
+b Fx(64)399 3641 y(6.5.15)93 b Fp(karch)29 b Fx(P)m(arameter)12
+b Fa(:)17 b(:)e(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
+(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
+g(:)h(:)f(:)h(:)f(:)g(:)42 b Fx(64)399 3750 y(6.5.16)93
+b Fp(ldap_base)28 b Fx(P)m(arameter)18 b Fa(:)e(:)g(:)f(:)h(:)f(:)h(:)f
+(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
+f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)47 b Fx(64)399
+3860 y(6.5.17)93 b Fp(ldap_cache_maxmem)26 b Fx(P)m(arameter)8
+b Fa(:)17 b(:)f(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
+(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)38 b Fx(65)399
+3969 y(6.5.18)93 b Fp(ldap_cache_seconds)26 b Fx(P)m(arameter)g
+Fa(:)15 b(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
+(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)55 b Fx(65)399 4079 y(6.5.19)93
+b Fp(ldap_hostports)27 b Fx(P)m(arameter)19 b Fa(:)e(:)e(:)h(:)f(:)h(:)
+f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f
+(:)g(:)h(:)f(:)h(:)f(:)49 b Fx(65)399 4188 y(6.5.20)93
+b Fp(ldap_proto_version)26 b Fx(P)m(arameter)g Fa(:)15
+b(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
+(:)h(:)f(:)h(:)f(:)g(:)55 b Fx(65)399 4298 y(6.5.21)93
+b Fp(local_domain)27 b Fx(P)m(arameter)h Fa(:)16 b(:)f(:)h(:)f(:)h(:)f
+(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
+f(:)h(:)f(:)g(:)h(:)f(:)h(:)56 b Fx(65)399 4408 y(6.5.22)93
+b Fp(localhost_address)26 b Fx(P)m(arameter)8 b Fa(:)17
+b(:)f(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
+(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)38 b Fx(65)399 4517 y(6.5.23)93
+b Fp(log_file)28 b Fx(P)m(arameter)21 b Fa(:)c(:)f(:)f(:)h(:)f(:)g(:)h
+(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)
+f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)51 b Fx(65)399
+4627 y(6.5.24)93 b Fp(log_options)28 b Fx(P)m(arameter)10
+b Fa(:)17 b(:)e(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
+(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)40
+b Fx(65)399 4736 y(6.5.25)93 b Fp(map_reload_interval)25
+b Fx(P)m(arameter)c Fa(:)d(:)d(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
+(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)51 b Fx(66)399
+4846 y(6.5.26)93 b Fp(nfs_allow_any_interface)24 b Fx(P)m(arameter)29
+b Fa(:)15 b(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
+(:)g(:)57 b Fx(66)399 4956 y(6.5.27)93 b Fp(nfs_allow_insecure_port)24
+b Fx(P)m(arameter)29 b Fa(:)15 b(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
+f(:)g(:)h(:)f(:)h(:)f(:)g(:)57 b Fx(66)399 5065 y(6.5.28)93
+b Fp(nfs_proto)28 b Fx(P)m(arameter)18 b Fa(:)e(:)g(:)f(:)h(:)f(:)h(:)f
+(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
+f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)47 b Fx(66)399
+5175 y(6.5.29)93 b Fp(nfs_retransmit_counter)25 b Fx(P)m(arameter)10
+b Fa(:)17 b(:)e(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
+(:)f(:)h(:)f(:)40 b Fx(67)399 5284 y(6.5.30)93 b Fp
+(nfs_retransmit_counter_ud)o(p)24 b Fx(P)m(arameter)16
+b Fa(:)h(:)f(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)46
+b Fx(67)p eop end
+%%Page: -5 135
+TeXDict begin -5 134 bop 3702 -116 a Fx(v)399 83 y(6.5.31)93
+b Fp(nfs_retransmit_counter_tc)o(p)24 b Fx(P)m(arameter)16
+b Fa(:)h(:)f(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)46
+b Fx(67)399 193 y(6.5.32)93 b Fp(nfs_retransmit_counter_to)o(plvl)24
+b Fx(P)m(arameter)i Fa(:)16 b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)55
+b Fx(67)399 302 y(6.5.33)93 b Fp(nfs_retry_interval)26
+b Fx(P)m(arameter)g Fa(:)15 b(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
+(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)55
+b Fx(67)399 412 y(6.5.34)93 b Fp(nfs_retry_interval_udp)25
+b Fx(P)m(arameter)10 b Fa(:)17 b(:)e(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
+h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)40 b Fx(67)399 521
+y(6.5.35)93 b Fp(nfs_retry_interval_tcp)25 b Fx(P)m(arameter)10
+b Fa(:)17 b(:)e(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
+(:)f(:)h(:)f(:)40 b Fx(67)399 631 y(6.5.36)93 b Fp
+(nfs_retry_interval_toplvl)24 b Fx(P)m(arameter)c Fa(:)c(:)g(:)f(:)g(:)
+h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)49 b Fx(67)399
+741 y(6.5.37)93 b Fp(nfs_vers)28 b Fx(P)m(arameter)21
+b Fa(:)c(:)f(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
+h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
+(:)f(:)51 b Fx(68)399 850 y(6.5.38)93 b Fp(nis_domain)28
+b Fx(P)m(arameter)14 b Fa(:)j(:)e(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
+(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
+h(:)f(:)h(:)f(:)g(:)44 b Fx(68)399 960 y(6.5.39)93 b
+Fp(normalize_hostnames)25 b Fx(P)m(arameter)c Fa(:)d(:)d(:)g(:)h(:)f(:)
+h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)51
+b Fx(68)399 1069 y(6.5.40)93 b Fp(normalize_slashes)26
+b Fx(P)m(arameter)8 b Fa(:)17 b(:)f(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
+(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)38
+b Fx(68)399 1179 y(6.5.41)93 b Fp(os)30 b Fx(P)m(arameter)23
+b Fa(:)17 b(:)e(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
+(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
+f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)53 b Fx(68)399 1289
+y(6.5.42)93 b Fp(osver)29 b Fx(P)m(arameter)12 b Fa(:)17
+b(:)e(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
+(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
+f(:)h(:)f(:)g(:)42 b Fx(68)399 1398 y(6.5.43)93 b Fp(pid_file)28
+b Fx(P)m(arameter)21 b Fa(:)c(:)f(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
+(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
+h(:)f(:)h(:)f(:)g(:)h(:)f(:)51 b Fx(68)399 1508 y(6.5.44)93
+b Fp(plock)29 b Fx(P)m(arameter)12 b Fa(:)17 b(:)e(:)h(:)f(:)h(:)f(:)g
+(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)
+h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)42
+b Fx(69)399 1617 y(6.5.45)93 b Fp(portmap_program)27
+b Fx(P)m(arameter)16 b Fa(:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f
+(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)45
+b Fx(69)399 1727 y(6.5.46)93 b Fp(preferred_amq_port)26
+b Fx(P)m(arameter)g Fa(:)15 b(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
+(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)55
+b Fx(69)399 1836 y(6.5.47)93 b Fp(print_pid)28 b Fx(P)m(arameter)18
+b Fa(:)e(:)g(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
+f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
+(:)47 b Fx(69)399 1946 y(6.5.48)93 b Fp(print_version)27
+b Fx(P)m(arameter)c Fa(:)17 b(:)e(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
+(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
+f(:)53 b Fx(69)399 2056 y(6.5.49)93 b Fp(restart_mounts)27
+b Fx(P)m(arameter)19 b Fa(:)e(:)e(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
+(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
+49 b Fx(69)399 2165 y(6.5.50)93 b Fp(show_statfs_entries)25
+b Fx(P)m(arameter)c Fa(:)d(:)d(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
+(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)51 b Fx(69)399
+2275 y(6.5.51)93 b Fp(truncate_log)27 b Fx(P)m(arameter)h
+Fa(:)16 b(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
+(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)56
+b Fx(70)399 2384 y(6.5.52)93 b Fp(unmount_on_exit)27
+b Fx(P)m(arameter)16 b Fa(:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f
+(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)45
+b Fx(70)399 2494 y(6.5.53)93 b Fp(use_tcpwrappers)27
+b Fx(P)m(arameter)16 b Fa(:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f
+(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)45
+b Fx(70)399 2604 y(6.5.54)93 b Fp(vendor)29 b Fx(P)m(arameter)8
+b Fa(:)17 b(:)f(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
+(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
+g(:)h(:)f(:)h(:)f(:)38 b Fx(70)275 2713 y(6.6)92 b(Regular)31
+b(Map)f(P)m(arameters)15 b Fa(:)h(:)g(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
+(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
+f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)44 b Fx(70)399
+2823 y(6.6.1)93 b(map)p 855 2823 28 4 v 40 w(name)30
+b(P)m(arameter)23 b Fa(:)17 b(:)e(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
+(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
+f(:)g(:)h(:)f(:)h(:)f(:)g(:)53 b Fx(70)399 2932 y(6.6.2)93
+b(tag)31 b(P)m(arameter)10 b Fa(:)17 b(:)f(:)f(:)h(:)f(:)g(:)h(:)f(:)h
+(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
+h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)40
+b Fx(70)275 3042 y(6.7)92 b(amd.conf)30 b(Examples)c
+Fa(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
+(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
+g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)55 b Fx(71)150 3284
+y Fw(7)135 b(Run-time)45 b(Administration)20 b Fb(:)h(:)e(:)h(:)f(:)h
+(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)65
+b Fw(73)275 3421 y Fx(7.1)92 b(Starting)30 b Ft(A)n(md)d
+Fa(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
+(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
+h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)47
+b Fx(73)275 3531 y(7.2)92 b(Stopping)29 b Ft(A)n(md)j
+Fa(:)16 b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
+(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
+h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)52
+b Fx(73)275 3641 y(7.3)92 b(Restarting)31 b Ft(A)n(md)21
+b Fa(:)15 b(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f
+(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
+g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)41
+b Fx(73)275 3750 y(7.4)92 b(Con)m(trolling)31 b Ft(A)n(md)25
+b Fa(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
+(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)
+f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)45 b
+Fx(74)399 3860 y(7.4.1)93 b Ft(A)n(mq)38 b Fx(default)30
+b(information)24 b Fa(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
+h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
+(:)f(:)h(:)f(:)53 b Fx(74)399 3969 y(7.4.2)93 b Ft(A)n(mq)38
+b Fp(-f)29 b Fx(option)16 b Fa(:)h(:)e(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
+(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
+g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)46
+b Fx(75)399 4079 y(7.4.3)93 b Ft(A)n(mq)38 b Fp(-h)29
+b Fx(option)16 b Fa(:)h(:)e(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
+(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
+h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)46 b
+Fx(75)399 4188 y(7.4.4)93 b Ft(A)n(mq)38 b Fp(-H)29 b
+Fx(option)16 b Fa(:)h(:)e(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
+(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
+h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)46 b
+Fx(75)399 4298 y(7.4.5)93 b Ft(A)n(mq)38 b Fp(-l)29 b
+Fx(option)16 b Fa(:)h(:)e(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
+(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
+h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)46 b
+Fx(75)399 4408 y(7.4.6)93 b Ft(A)n(mq)38 b Fp(-m)29 b
+Fx(option)16 b Fa(:)h(:)e(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
+(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
+h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)46 b
+Fx(75)399 4517 y(7.4.7)93 b Ft(A)n(mq)38 b Fp(-p)29 b
+Fx(option)16 b Fa(:)h(:)e(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
+(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
+h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)46 b
+Fx(76)399 4627 y(7.4.8)93 b Ft(A)n(mq)38 b Fp(-P)29 b
+Fx(option)16 b Fa(:)h(:)e(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
+(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
+h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)46 b
+Fx(76)399 4736 y(7.4.9)93 b Ft(A)n(mq)38 b Fp(-q)29 b
+Fx(option)16 b Fa(:)h(:)e(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
+(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
+h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)46 b
+Fx(76)399 4846 y(7.4.10)93 b Ft(A)n(mq)38 b Fp(-s)30
+b Fx(option)14 b Fa(:)h(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
+(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
+h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)43 b Fx(76)399
+4956 y(7.4.11)93 b Ft(A)n(mq)38 b Fp(-T)30 b Fx(option)14
+b Fa(:)h(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
+f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
+(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)43 b Fx(76)399 5065 y(7.4.12)93
+b Ft(A)n(mq)38 b Fp(-U)30 b Fx(option)14 b Fa(:)h(:)h(:)f(:)h(:)f(:)h
+(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
+h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
+(:)43 b Fx(77)399 5175 y(7.4.13)93 b Ft(A)n(mq)38 b Fp(-u)30
+b Fx(option)14 b Fa(:)h(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
+(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
+h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)43 b Fx(77)399
+5284 y(7.4.14)93 b Ft(A)n(mq)38 b Fp(-v)30 b Fx(option)14
+b Fa(:)h(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
+f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
+(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)43 b Fx(77)p eop end
+%%Page: -6 136
+TeXDict begin -6 135 bop 150 -116 a Fx(vi)1872 b(Am-utils)30
+b(\(4.4BSD)j(Automoun)m(ter)d(Utilities\))399 83 y(7.4.15)93
+b Ft(A)n(mq)38 b Fp(-w)30 b Fx(option)14 b Fa(:)h(:)h(:)f(:)h(:)f(:)h
+(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
+h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
+(:)43 b Fx(77)399 193 y(7.4.16)93 b(Other)30 b Ft(A)n(mq)38
+b Fx(options)8 b Fa(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
+(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
+g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)38 b Fx(77)150 435 y
+Fw(8)135 b(FSinfo)28 b Fb(:)19 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
+h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f
+(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)73
+b Fw(79)275 572 y Fx(8.1)92 b Ft(FSinfo)36 b Fx(o)m(v)m(erview)10
+b Fa(:)18 b(:)d(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
+(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
+f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)40
+b Fx(79)275 682 y(8.2)92 b(Using)30 b Ft(FSinfo)15 b
+Fa(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h
+(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
+h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)39
+b Fx(79)275 791 y(8.3)92 b Ft(FSinfo)36 b Fx(grammar)23
+b Fa(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
+(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
+f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)52 b
+Fx(80)275 901 y(8.4)92 b Ft(FSinfo)36 b Fx(host)31 b(de\014nitions)20
+b Fa(:)15 b(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
+(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
+f(:)h(:)f(:)h(:)f(:)g(:)50 b Fx(80)275 1010 y(8.5)92
+b Ft(FSinfo)36 b Fx(host)31 b(attributes)10 b Fa(:)16
+b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
+(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
+f(:)g(:)h(:)f(:)h(:)39 b Fx(80)399 1120 y(8.5.1)93 b(netif)30
+b(Option)11 b Fa(:)16 b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
+(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
+h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)41
+b Fx(81)399 1230 y(8.5.2)93 b(con\014g)30 b(Option)25
+b Fa(:)16 b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
+(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
+h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)55 b Fx(81)399
+1339 y(8.5.3)93 b(arc)m(h)31 b(Option)16 b Fa(:)f(:)g(:)h(:)f(:)g(:)h
+(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
+f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
+(:)f(:)h(:)f(:)g(:)46 b Fx(82)399 1449 y(8.5.4)93 b(os)30
+b(Option)20 b Fa(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
+(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
+g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)49
+b Fx(82)399 1558 y(8.5.5)93 b(cluster)31 b(Option)9 b
+Fa(:)15 b(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f
+(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
+g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)39 b Fx(82)275
+1668 y(8.6)92 b Ft(FSinfo)36 b Fx(\014lesystems)11 b
+Fa(:)16 b(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
+(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
+g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)41 b Fx(82)399
+1778 y(8.6.1)93 b(fst)m(yp)s(e)30 b(Option)22 b Fa(:)15
+b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
+(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
+g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)52 b Fx(84)399 1887 y(8.6.2)93
+b(opts)30 b(Option)17 b Fa(:)f(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
+(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
+h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)47
+b Fx(84)399 1997 y(8.6.3)93 b(passno)30 b(Option)9 b
+Fa(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
+(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
+h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)39 b Fx(84)399
+2106 y(8.6.4)93 b(freq)30 b(Option)24 b Fa(:)16 b(:)f(:)h(:)f(:)g(:)h
+(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
+f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
+(:)g(:)h(:)f(:)h(:)54 b Fx(84)399 2216 y(8.6.5)93 b(moun)m(t)30
+b(Option)14 b Fa(:)h(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
+f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
+(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)43
+b Fx(84)399 2325 y(8.6.6)93 b(dumpset)29 b(Option)12
+b Fa(:)j(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
+h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
+(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)42 b Fx(85)399 2435 y(8.6.7)93
+b(log)31 b(Option)22 b Fa(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
+h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
+(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
+f(:)52 b Fx(85)275 2545 y(8.7)92 b Ft(FSinfo)36 b Fx(static)c(moun)m
+(ts)14 b Fa(:)h(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f
+(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
+g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)43 b Fx(85)275 2654
+y(8.8)92 b(De\014ning)30 b(an)g Ft(A)n(md)40 b Fx(Moun)m(t)31
+b(Map)g(in)f Ft(FSinfo)d Fa(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
+(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)50
+b Fx(86)275 2764 y(8.9)92 b Ft(FSinfo)36 b Fx(Command)30
+b(Line)g(Options)d Fa(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
+h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h
+(:)f(:)57 b Fx(88)399 2873 y(8.9.1)93 b Fp(-a)30 b Fo(auto)s(dir)f
+Fa(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
+(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
+h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)53
+b Fx(88)399 2983 y(8.9.2)93 b Fp(-b)30 b Fo(b)s(o)s(otparams)19
+b Fa(:)c(:)g(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
+f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
+(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)45 b Fx(88)399 3093
+y(8.9.3)93 b Fp(-d)30 b Fo(dumpsets)25 b Fa(:)15 b(:)h(:)f(:)g(:)h(:)f
+(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
+h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
+(:)h(:)f(:)h(:)52 b Fx(88)399 3202 y(8.9.4)93 b Fp(-e)30
+b Fo(exp)s(ortfs)13 b Fa(:)h(:)i(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
+h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
+(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
+39 b Fx(89)399 3312 y(8.9.5)93 b Fp(-f)30 b Fo(fstab)15
+b Fa(:)f(:)i(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
+f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
+(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)42
+b Fx(89)399 3421 y(8.9.6)93 b Fp(-h)30 b Fo(hostname)25
+b Fa(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
+(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
+h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)49 b Fx(89)399
+3531 y(8.9.7)93 b Fp(-m)30 b Fo(moun)m(t-maps)e Fa(:)15
+b(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
+(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
+f(:)g(:)h(:)f(:)h(:)f(:)54 b Fx(89)399 3641 y(8.9.8)93
+b Fp(-q)24 b Fa(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
+(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
+f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
+(:)f(:)h(:)f(:)g(:)h(:)f(:)55 b Fx(89)399 3750 y(8.9.9)93
+b Fp(-v)24 b Fa(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
+(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
+f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
+(:)f(:)h(:)f(:)g(:)h(:)f(:)55 b Fx(89)399 3860 y(8.9.10)93
+b Fp(-D)30 b Fo(name)5 b Ft([=defn])20 b Fa(:)15 b(:)h(:)f(:)h(:)f(:)g
+(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
+h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)40
+b Fx(89)399 3969 y(8.9.11)93 b Fp(-I)30 b Fo(directory)36
+b Fa(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
+(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
+g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)57 b Fx(90)399
+4079 y(8.9.12)93 b Fp(-U)30 b Fo(name)25 b Fa(:)16 b(:)f(:)h(:)f(:)g(:)
+h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
+(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
+h(:)f(:)h(:)f(:)h(:)f(:)g(:)50 b Fx(90)275 4188 y(8.10)92
+b(Errors)29 b(pro)s(duced)g(b)m(y)h Ft(FSinfo)21 b Fa(:)c(:)e(:)g(:)h
+(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
+f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)45
+b Fx(90)p eop end
+%%Page: -7 137
+TeXDict begin -7 136 bop 3652 -116 a Fx(vii)150 83 y
+Fw(9)135 b(Hlfsd)10 b Fb(:)20 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f
+(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)
+f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)55
+b Fw(93)275 220 y Fx(9.1)92 b(In)m(tro)s(duction)30 b(to)h(Hlfsd)10
+b Fa(:)k(:)i(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
+f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
+(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)39 b Fx(93)275 330 y(9.2)92
+b(Bac)m(kground)31 b(to)g(Mail)g(Deliv)m(ery)17 b Fa(:)h(:)d(:)h(:)f(:)
+h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
+(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)47 b Fx(95)399
+439 y(9.2.1)93 b(Single-Host)32 b(Mail)f(Sp)s(o)s(ol)f(Directory)19
+b Fa(:)d(:)g(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
+h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)48 b Fx(95)399 549 y(9.2.2)93
+b(Cen)m(tralized)31 b(Mail)h(Sp)s(o)s(ol)e(Directory)19
+b Fa(:)d(:)g(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
+h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)48 b Fx(95)399 658 y(9.2.3)93
+b(Distributed)30 b(Mail)i(Sp)s(o)s(ol)d(Service)d Fa(:)15
+b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
+(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)55 b Fx(96)399 768
+y(9.2.4)93 b(Wh)m(y)31 b(Deliv)m(er)h(In)m(to)f(the)f(Home)h
+(Directory?)21 b Fa(:)c(:)e(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
+(:)f(:)g(:)h(:)f(:)h(:)50 b Fx(97)275 878 y(9.3)92 b(Using)30
+b(Hlfsd)20 b Fa(:)15 b(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h
+(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
+f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
+(:)f(:)h(:)49 b Fx(98)399 987 y(9.3.1)93 b(Con)m(trolling)31
+b(Hlfsd)13 b Fa(:)i(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
+(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
+f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)43 b Fx(98)399 1097
+y(9.3.2)93 b(Hlfsd)30 b(Options)19 b Fa(:)c(:)h(:)f(:)g(:)h(:)f(:)h(:)f
+(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
+f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
+(:)49 b Fx(98)399 1206 y(9.3.3)93 b(Hlfsd)30 b(Files)20
+b Fa(:)c(:)g(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
+h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
+(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)50 b Fx(100)150
+1449 y Fw(10)135 b(Assorted)45 b(T)-11 b(o)t(ols)29 b
+Fb(:)19 b(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h
+(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)73
+b Fw(101)275 1586 y Fx(10.1)92 b(am-eject)18 b Fa(:)f(:)e(:)h(:)f(:)h
+(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)
+f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
+(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)48 b Fx(101)275
+1695 y(10.2)92 b(amd.conf-sample)15 b Fa(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)
+h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
+(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
+f(:)45 b Fx(101)275 1805 y(10.3)92 b(amd2ldif)13 b Fa(:)i(:)g(:)h(:)f
+(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
+h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
+(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)43
+b Fx(101)275 1914 y(10.4)92 b(amd2sun)9 b Fa(:)14 b(:)i(:)f(:)g(:)h(:)f
+(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
+g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
+(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)39 b Fx(101)275
+2024 y(10.5)92 b(automoun)m(t2amd)23 b Fa(:)16 b(:)g(:)f(:)g(:)h(:)f(:)
+h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
+(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
+h(:)f(:)53 b Fx(101)275 2134 y(10.6)92 b(ctl-amd)14 b
+Fa(:)i(:)g(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
+(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
+f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
+(:)44 b Fx(102)275 2243 y(10.7)92 b(ctl-hlfsd)25 b Fa(:)16
+b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
+(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
+h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)55
+b Fx(102)275 2353 y(10.8)92 b(\014x-amd-map)15 b Fa(:)g(:)h(:)f(:)g(:)h
+(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
+f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f
+(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)45 b Fx(102)275 2462 y(10.9)92
+b(\014xmoun)m(t)9 b Fa(:)15 b(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f
+(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
+f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
+(:)g(:)h(:)f(:)h(:)f(:)39 b Fx(103)275 2572 y(10.10)93
+b(\014xrm)m(tab)14 b Fa(:)g(:)i(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
+(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
+f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f
+(:)g(:)h(:)f(:)44 b Fx(103)275 2682 y(10.11)93 b(lostaltmail)14
+b Fa(:)j(:)f(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
+h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
+(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)44
+b Fx(103)275 2791 y(10.12)93 b(lostaltmail.conf-sample)10
+b Fa(:)18 b(:)e(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
+(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
+g(:)h(:)f(:)40 b Fx(103)275 2901 y(10.13)93 b(mk-amd-map)20
+b Fa(:)15 b(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
+(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
+f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)50 b
+Fx(103)275 3010 y(10.14)93 b(pa)m(wd)18 b Fa(:)c(:)i(:)f(:)g(:)h(:)f(:)
+h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h
+(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
+h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)48 b
+Fx(103)275 3120 y(10.15)93 b(redhat-ctl-amd)9 b Fa(:)16
+b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
+(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
+f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)39 b Fx(104)275 3230
+y(10.16)93 b(w)m(ait4amd)10 b Fa(:)16 b(:)g(:)f(:)h(:)f(:)g(:)h(:)f(:)h
+(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)
+f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
+(:)f(:)h(:)f(:)g(:)h(:)40 b Fx(104)275 3339 y(10.17)93
+b(w)m(ait4amd2die)10 b Fa(:)17 b(:)e(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
+f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
+(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
+40 b Fx(104)275 3449 y(10.18)93 b(wire-test)11 b Fa(:)16
+b(:)g(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
+(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
+f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)41
+b Fx(104)150 3691 y Fw(11)135 b(Examples)27 b Fb(:)20
+b(:)g(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
+(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
+71 b Fw(107)275 3828 y Fx(11.1)92 b(User)30 b(Filesystems)13
+b Fa(:)18 b(:)d(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
+(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
+h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)43 b Fx(107)275
+3938 y(11.2)92 b(Home)31 b(Directories)23 b Fa(:)17 b(:)f(:)f(:)h(:)f
+(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
+g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
+(:)h(:)f(:)53 b Fx(108)275 4047 y(11.3)92 b(Arc)m(hitecture)32
+b(Sharing)14 b Fa(:)g(:)h(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
+(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
+f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)44 b Fx(109)275 4157
+y(11.4)92 b(Wildcard)31 b(Names)g(&)f(Replicated)i(Serv)m(ers)27
+b Fa(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
+(:)h(:)f(:)h(:)f(:)g(:)58 b Fx(110)275 4266 y(11.5)92
+b(`)p Fp(rwho)p Fx(')30 b(serv)m(ers)16 b Fa(:)g(:)f(:)g(:)h(:)f(:)h(:)
+f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
+(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)
+f(:)h(:)f(:)g(:)h(:)46 b Fx(110)275 4376 y(11.6)92 b(`)p
+Fp(/vol)p Fx(')24 b Fa(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
+(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
+h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
+(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)55 b Fx(110)275 4486 y(11.7)92
+b(`)p Fp(/defaults)p Fx(')28 b(with)i(selectors)25 b
+Fa(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
+(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
+53 b Fx(111)275 4595 y(11.8)92 b(`)p Fp(/tftpboot)p Fx(')28
+b(in)i(a)h(c)m(hro)s(ot-ed)h(en)m(vironmen)m(t)17 b Fa(:)f(:)f(:)h(:)f
+(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)47
+b Fx(112)150 4838 y Fw(12)135 b(In)l(ternals)22 b Fb(:)f(:)e(:)g(:)h(:)
+f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h
+(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)66
+b Fw(115)275 4975 y Fx(12.1)92 b(Log)31 b(Messages)16
+b Fa(:)h(:)f(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
+h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
+(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)46
+b Fx(115)399 5084 y(12.1.1)93 b(F)-8 b(atal)33 b(errors)19
+b Fa(:)14 b(:)i(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
+(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)
+h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)49 b Fx(115)399
+5194 y(12.1.2)93 b(Info)30 b(messages)19 b Fa(:)e(:)e(:)h(:)f(:)g(:)h
+(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
+f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
+(:)49 b Fx(116)p eop end
+%%Page: -8 138
+TeXDict begin -8 137 bop 150 -116 a Fx(viii)1822 b(Am-utils)30
+b(\(4.4BSD)j(Automoun)m(ter)d(Utilities\))150 83 y Fw(Ac)l(kno)l
+(wledgmen)l(ts)46 b(&)f(T)-11 b(rademarks)21 b Fb(:)f(:)f(:)h(:)f(:)h
+(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)65 b Fw(119)150
+353 y(Index)15 b Fb(:)k(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
+(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
+f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)59
+b Fw(121)p eop end
+%%Trailer
+
+userdict /end-hook known{end-hook}if
+%%EOF
diff --git a/doc/am-utils.texi b/doc/am-utils.texi
index 1cc46b608bae..2430bafa4821 100644
--- a/doc/am-utils.texi
+++ b/doc/am-utils.texi
@@ -1,6 +1,6 @@
\input texinfo @c -*-texinfo-*-
@c
-@c Copyright (c) 1997-2006 Erez Zadok
+@c Copyright (c) 1997-2014 Erez Zadok
@c Copyright (c) 1989 Jan-Simon Pendry
@c Copyright (c) 1989 Imperial College of Science, Technology & Medicine
@c Copyright (c) 1989 The Regents of the University of California.
@@ -17,11 +17,7 @@
@c 2. Redistributions in binary form must reproduce the above copyright
@c notice, this list of conditions and the following disclaimer in the
@c documentation and/or other materials provided with the distribution.
-@c 3. All advertising materials mentioning features or use of this software
-@c must display the following acknowledgment:
-@c This product includes software developed by the University of
-@c California, Berkeley and its contributors.
-@c 4. Neither the name of the University nor the names of its contributors
+@c 3. Neither the name of the University nor the names of its contributors
@c may be used to endorse or promote products derived from this software
@c without specific prior written permission.
@c
@@ -60,14 +56,14 @@
(Originally by Jan-Simon Pendry and Nick Williams)
@page
-Copyright @copyright{} 1997-2006 Erez Zadok
+Copyright @copyright{} 1997-2014 Erez Zadok
@*
Copyright @copyright{} 1989 Jan-Simon Pendry
@*
Copyright @copyright{} 1989 Imperial College of Science, Technology & Medicine
@*
Copyright @copyright{} 1989 The Regents of the University of California.
-@sp
+@sp 1
All Rights Reserved.
@vskip 1ex
Permission to copy this document, or any portion of it, as
@@ -93,7 +89,7 @@ For version @value{VERSION}, @value{UPDATED}
@*
(Originally by Jan-Simon Pendry and Nick Williams)
-Copyright @copyright{} 1997-2006 Erez Zadok
+Copyright @copyright{} 1997-2014 Erez Zadok
@*
Copyright @copyright{} 1989 Jan-Simon Pendry
@*
@@ -179,16 +175,6 @@ notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
@item
-All advertising materials mentioning features or use of this software
-must display the following acknowledgment:
-
-@cartouche
-``This product includes software developed by the University of
-California, Berkeley and its contributors, as well as the Trustees of
-Columbia University.''
-@end cartouche
-
-@item
Neither the name of the University nor the names of its contributors may
be used to endorse or promote products derived from this software
without specific prior written permission.
@@ -234,7 +220,7 @@ Revision 5.3bsdnet, a late alpha version of 5.3, was part
of the BSD network version 2 distribution
Revision 6.0 was made independently by
-@email{ezk@@cs.columbia.edu,Erez Zadok} at the Computer Science
+Erez Zadok at the Computer Science
Department of @uref{http://www.cs.columbia.edu/,Columbia University},
as part of his
@uref{http://www.fsl.cs.sunysb.edu/docs/zadok-thesis-proposal/,PhD
@@ -262,7 +248,8 @@ If you find a problem and hopefully you can reproduce it, please
describe it in detail and
@uref{https://bugzilla.filesystems.org/,submit a bug report} via
@uref{http://www.bugzilla.org/,Bugzilla}. Alternatively, you can send
-your bug report to @email{am-utils@@am-utils.org} quoting the details
+your bug report to the ``am-utils'' list (see
+@url{http://www.am-utils.org/} under ``Mailing Lists'') quoting the details
of the release and your configuration. These details can be obtained
by running the command @samp{amd -v}. It would greatly help if you
could provide a reproducible procedure for detecting the bug you are
@@ -297,11 +284,10 @@ discussions of new features for am-utils
implementation and porting issues
@end itemize
-To subscribe, visit
-@url{http://lists.am-utils.org/mailman/listinfo/am-utils}. After
-subscribing, you can post a message to this list at
-@email{am-utils@@am-utils.org}. To avoid as much spam as
-possible, only subscribers to this list may post to it.
+To subscribe, visit @url{http://www.am-utils.org/} under ``Mailing
+Lists.'' After subscribing, you can post a message to this list. To
+avoid as much spam as possible, only subscribers to this list may post
+to it.
Subscribers of @samp{am-utils} are most helpful if they have the time
and resources to test new and development versions of amd, on as many
@@ -318,7 +304,7 @@ before January 1st, 2004. Please use the new name, @samp{am-utils}.
@item
The announcements mailing list, @samp{am-utils-announce} is for
announcements only (mostly new releases). To subscribe, visit
-@url{http://lists.am-utils.org/mailman/listinfo/am-utils-announce}.
+@url{http://www.am-utils.org/} under ``Mailing Lists.''
This list is read-only: only am-utils developers may post to it.
@item
@@ -326,17 +312,18 @@ We distribute nightly CVS snapshots in
@url{ftp://ftp.am-utils.org/pub/am-utils/snapshots/daily/}. If you
like to get email notices of commits to the am-utils CVS repository,
subscribe to the CVS logs mailing list, @samp{am-utils-cvs} at
-@url{http://lists.am-utils.org/mailman/listinfo/am-utils-cvs}.
+@url{http://www.am-utils.org/} under ``Mailing Lists.''
@item
The older list which was used to user discussions, @samp{amd-workers},
is defunct as of January 2004. (Its last address was
-@email{amd-workers@@majordomo.glue.umd.edu}.) Don't use
+@email{amd-workers AT majordomo.glue.umd.edu}.) Don't use
@samp{amd-workers}: use the newer, more active @samp{am-utils} list.
@item
For completeness, there's a developers-only closed list called
-@samp{am-utils-developers@@am-utils.org}.
+@samp{am-utils-developers} (see @url{http://www.am-utils.org/} under
+``Mailing Lists'').
@end enumerate
@@ -346,7 +333,7 @@ For completeness, there's a developers-only closed list called
@cindex Automounter book
@cindex book
-@email{ezk@@cs.sunysb.edu,Erez Zadok} wrote a
+@uref{http://www.cs.sunysb.edu/~ezk,Erez Zadok} wrote a
@uref{http://www.fsl.cs.sunysb.edu/docs/amd-book/,book}, titled @i{Linux NFS and
Automounter Administration}, ISBN 0-7821-2739-8, (Sybex, 2001). The
book is full of details and examples that go beyond what this manual
@@ -389,7 +376,7 @@ numerous flavors of Unix.
The @i{Amd} package has been without an official maintainer since 1992.
Several people have stepped in to maintain it unofficially. Most
notable were the `upl' (Unofficial Patch Level) releases of @i{Amd},
-created by me (@email{ezk@@cs.sunysb.edu,Erez Zadok}), and available from
+created by me (@uref{http://www.cs.sunysb.edu/~ezk,Erez Zadok}), and available from
@url{ftp://ftp.am-utils.org/pub/amd/}. The last such unofficial
release was `upl102'.
@@ -428,7 +415,7 @@ end-user, aside from the fact that @code{/bin/pwd} now always returns
the correct amd-ified path. The administrator can easily switch
between NFS and autofs mounts by changing one parameter in
@code{amd.conf}. Autofs support and maintenance was developed in
-conjunction with @email{ionut@@badula.org,Ion Badulescu}.
+conjunction with @email{ionut AT badula.org,Ion Badulescu}.
@c ################################################################
@node Overview, Supported Platforms, History, Top
@@ -1040,7 +1027,7 @@ Similarly, if the password file entry was
the map entry used by @i{Amd} would be
@example
-rfs:=/home/sugar;rhost:=sugar.cc;sublink:=jsp
+rfs:=/home/sugar;rhost:=sugar.cc;sublink:=mhj
@end example
@c ----------------------------------------------------------------
@@ -1795,8 +1782,8 @@ Always evaluates to false. @i{ARG} is ignored.
The argument @i{ARG} of this selector is a netgroup name followed
optionally by a comma and a host name. If the host name is not
specified, it defaults to @code{$@{host@}}. If the host name (short
-name) is a member of the netgroup, this selector evaluates to
-true. Otherwise it evaluates to false.
+name) is a member of the netgroup, this selector evaluates to true.
+Otherwise it evaluates to false.
For example, suppose you have a netgroup @samp{ppp-hosts}, and for
reasons of performance, these have a local @file{/home} partition,
@@ -2098,6 +2085,10 @@ Ignore this mount by @b{df}(1).
@cindex Mount flags; cache
Allow data to be cached from a remote server for this mount.
+@item closesession
+@cindex Mount flags; closesession
+For UDF mounts, close the session when unmounting.
+
@item compress
@cindex Mount flags; compress
Use NFS compression protocol.
@@ -2137,10 +2128,16 @@ Set ID of filesystem.
Enable generations in ISO-9660 file systems. Generations allow you to
see all versions of a given file.
+@item gmtoff=@var{n}
+@cindex Mount flags; gmtoff
+For UDF mounts, set the time zone offset from UTC to @var{n} seconds,
+with positive values indicating east of the Prime Meridian. If not
+set, the user's current time zone will be used.
+
@item group=@var{n}
@cindex Mount flags; group
-For PCFS mounts, set the group of the files in the file system to
-@var{n} (which can either be a group name or a GID number). The
+For PCFS and UDF mounts, set the group of the files in the file system
+to @var{n} (which can either be a group name or a GID number). The
default group is the group of the directory on which the file system
is being mounted.
@@ -2199,6 +2196,11 @@ is used.
Do not allow data to be cached from a remote server for this
mount.
+@item nocasetrans
+@cindex Mount flags; nocasetrans
+Don't do case translation. Useful for CD-ROMS formatted as
+ISO-9660.
+
@item noconn
@cindex Mount flags; noconn
Don't make a connection on datagram transports.
@@ -2226,6 +2228,10 @@ Don't allow program execution.
@cindex Mount flags; noint
Do not allow keyboard interrupts for this mount
+@item nojoliet
+@cindex Mount flags; nojoliet
+Turn off the Joliet extensions. Useful for CD-ROMS formatted as ISO-9660.
+
@item nolock
@cindex Mount flags; nolock
Do not use the NFS locking protocol
@@ -2320,6 +2326,11 @@ trying}.
@cindex Mount flags; retry
Set the NFS retry counter.
+@item rrcaseins
+@cindex Mount flags; rrcaseins
+Enable the Rock Ridge Interchange Protocol (RRIP) case insensitive extensions.
+Useful for CD-ROMS formatted as ISO-9660.
+
@item rrip
@cindex Mount flags; rrip
Uses the Rock Ridge Interchange Protocol (RRIP) extensions to ISO-9660.
@@ -2333,6 +2344,10 @@ NFS/UDP through a gateway or a slow link.
@cindex Mount flags; rw
Allow reads and writes on this filesystem.
+@item sessionnr=@var{n}
+@cindex Mount Flags; sessionnr
+For multisession UDF mounts, use session number @var{n} when mounting.
+
@item shortname
@cindex Mount Flags; longname
For PCFS mounts, force old DOS short names only.
@@ -2368,8 +2383,8 @@ The NFS timeout, in tenth-seconds, before a request is retransmitted.
@item user=@var{n}
@cindex Mount flags; user
-For PCFS mounts, set the owner of the files in the file system to
-@var{n} (which can either be a user name or a UID number). The
+For PCFS and UDF mounts, set the owner of the files in the file system
+to @var{n} (which can either be a user name or a UID number). The
default owner is the owner of the directory on which the file system
is being mounted.
@@ -2824,13 +2839,13 @@ Copyright (c) 1990 Jan-Simon Pendry
Copyright (c) 1990 Imperial College of Science, Technology & Medicine
Copyright (c) 1990 The Regents of the University of California.
am-utils version 6.0a15 (build 61).
-Built by ezk@@cs.columbia.edu on date Wed Oct 22 15:21:03 EDT 1997.
+Built by ezk@@example.com on date Wed Oct 22 15:21:03 EDT 1997.
cpu=sparc (big-endian), arch=sun4, karch=sun4u.
full_os=solaris2.5.1, os=sos5, osver=5.5.1, vendor=sun.
Map support for: root, passwd, union, nisplus, nis, ndbm, file, error.
AMFS: nfs, link, nfsx, nfsl, host, linkx, program, union, inherit,
ufs, lofs, hsfs, pcfs, auto, direct, toplvl, error.
-FS: autofs, cachefs, cdfs, lofs, nfs, nfs3, pcfs, tfs, tmpfs, ufs.
+FS: autofs, cachefs, cdfs, lofs, nfs, nfs3, pcfs, tfs, tmpfs, udf, ufs.
Network 1: wire="mcl-lab-net.cs.columbia.edu" (netnumber=128.59.13).
Network 2: wire="14-net.cs.columbia.edu" (netnumber=128.59.14).
Network 3: wire="old-net.cs.columbia.edu" (netnumber=128.59.16).
@@ -2879,9 +2894,9 @@ a comma separated list selected from the following options:
@table @code
@item fatal
-Fatal errors
+Fatal errors (cannot be turned off)
@item error
-Non-fatal errors
+Non-fatal errors (cannot be turned off)
@item user
Non-fatal user errors
@item warn
@@ -2896,10 +2911,15 @@ Mount map usage
Additional statistics
@item all
All of the above
+@item defaults
+An alias for "fatal,error,user,warning,info".
@end table
Initially a set of default logging flags is enabled. This is as if
-@samp{-x all,nomap,nostats} had been selected. The command line is
+@samp{-x defaults}
+or
+@samp{-x fatal,error,user,warning,info}
+had been selected. The command line is
parsed and logging is controlled by the @code{-x} option. The very first
set of logging flags is saved and can not be subsequently disabled using
@i{Amq}. This default set of options is useful for general production
@@ -2932,7 +2952,6 @@ of the message types.@refill
@samp{LOG_INFO}
@end table
-
The options can be prefixed by the string @samp{no} to indicate
that this option should be turned off. For example, to obtain all
but @samp{info} messages the option @samp{-x all,noinfo} would be used.
@@ -3011,13 +3030,17 @@ can be prefixed with @samp{no} to turn it off.
@table @code
@item all
-all ``reasonable'' options (currently trace|str|full|mem|info|readdir)
+all options (excluding hrtime and mtab)
+@item defaults
+``sensible'' default options (all--excluding hrtime, mtab, and xdrtrace)
+@item test
+full debug options plus mtab,nodaemon,nofork,noamq
@item amq
-do not register for amq
+register @i{Amd} with the RPC portmapper, for @i{Amq}
@item daemon
-do not enter daemon mode
+enter daemon mode
@item fork
-do not fork child worker (hlfsd only)
+fork child worker (hlfsd only)
@item full
program trace
@item hrtime
@@ -3028,16 +3051,14 @@ print high resolution time stamps (only if @b{syslog}(3) is not used)
info service specific debugging (hesiod, nis, etc.) In the case of
hesiod maps, turns on the hesiod RES_DEBUG internal debugging option.
@item mem
-trace memory allocations. Needs to be explicitly enabled at compile
+trace memory allocations. Needs to be explicitly enabled at compile
time with --enable-debug=mem.
@item mtab
-use local @file{./mtab} file
+use local mount-table file (defaults to @file{/tmp/mtab}, @pxref{debug_mtab_file Parameter})
@item readdir
show readdir progress
@item str
debug string munging
-@item test
-full debug but no daemon
@item trace
trace RPC protocol and NFS mount arguments
@item xdrtrace
@@ -3150,6 +3171,7 @@ effect visible to the user.@refill
* Unix Filesystem:: Native disk filesystem.
* Caching Filesystem:: Caching from remote server filesystem.
* CD-ROM Filesystem:: ISO9660 CD ROM.
+* UDF Filesystem:: Universal Disk Format filesystem.
* Loopback Filesystem:: Local loopback-mount filesystem.
* Memory/RAM Filesystem:: A memory or RAM-based filesystem.
* Null Filesystem:: 4.4BSD's loopback-mount filesystem.
@@ -3475,7 +3497,7 @@ inconsistent, requiring running the command @file{fsck -F cachefs
@end enumerate
@c ----------------------------------------------------------------
-@node CD-ROM Filesystem, Loopback Filesystem, Caching Filesystem, Filesystem Types
+@node CD-ROM Filesystem, UDF Filesystem, Caching Filesystem, Filesystem Types
@comment node-name, next, previous, up
@section CD-ROM Filesystem (@samp{cdfs})
@cindex CD-ROM Filesystem
@@ -3504,7 +3526,36 @@ cdfs os==sunos4;type:=cdfs;dev:=/dev/sr0 \
@end example
@c ----------------------------------------------------------------
-@node Loopback Filesystem, Memory/RAM Filesystem, CD-ROM Filesystem, Filesystem Types
+@node UDF Filesystem, Loopback Filesystem, CD-ROM Filesystem, Filesystem Types
+@comment node-name, next, previous, up
+@section CD-ROM Filesystem (@samp{udf})
+@cindex CD-ROM Filesystem
+@cindex udf, filesystem type
+@cindex Filesystem type; udf
+
+The @dfn{udf} (@samp{type:=udf}) filesystem mounts media with a
+Universal Disk Format (UDF) filesystem on it, e.g., a video DVD.
+
+@noindent
+The following option must be specified:
+
+@table @code
+@cindex dev, mount option
+@cindex Mount option; dev
+@item dev
+the block special device to be mounted.
+@end table
+
+Some operating systems will fail to mount read-only media unless the
+@samp{ro} option is specified. A udf entry might be:
+
+@example
+udf os==sunos4;type:=udf;dev:=/dev/sr0 \
+ os==sunos5;addopts:=ro;type:=udf;dev:=/dev/dsk/c0t6d0s2
+@end example
+
+@c ----------------------------------------------------------------
+@node Loopback Filesystem, Memory/RAM Filesystem, UDF Filesystem, Filesystem Types
@comment node-name, next, previous, up
@section Loopback Filesystem (@samp{lofs})
@cindex Loopback Filesystem
@@ -4203,6 +4254,7 @@ sections that follow.
* mount_type Parameter::
* search_path Parameter::
* selectors_in_defaults Parameter::
+* sun_map_syntax Parameter::
@end menu
@c ----------------------------------------------------------------
@@ -4326,7 +4378,7 @@ sites can allow for local map customizations and overrides, and can
distributed maps in several locations as needed.
@c ----------------------------------------------------------------
-@node selectors_in_defaults Parameter, , search_path Parameter, Common Parameters
+@node selectors_in_defaults Parameter, sun_map_syntax Parameter, search_path Parameter, Common Parameters
@comment node-name, next, previous, up
@subsection @t{selectors_in_defaults} Parameter
@cindex selectors_in_defaults Parameter
@@ -4346,6 +4398,15 @@ performance over slow slip-based networks as follows:
Deprecated form: selectors_on_default.
+@c ----------------------------------------------------------------
+@node sun_map_syntax Parameter, , selectors_in_defaults Parameter, Common Parameters
+@comment node-name, next, previous, up
+@subsection @t{sun_map_syntax} Parameter
+@cindex sun_map_syntax Parameter
+
+(type=boolean, default=@samp{no}). If @samp{yes}, then @i{Amd} will
+parse the map according to the Sun Automount syntax.
+
@c ================================================================
@node Global Parameters, Regular Map Parameters, Common Parameters, Amd Configuration File
@@ -4527,14 +4588,14 @@ remain in the cache.
(type=string, default no cluster). Same as the @code{-C} option to
@i{Amd}. Specifies the alternate HP-UX cluster to use.
-@c ----------------------------------------------------------------
-@node debug_mtab_file Parameter, debug_options Parameter, cluster Parameter, Global Parameters
-@comment node-name, next, previous, up
-@subsection @t{debug_mtab_file} Parameter
-@cindex debug_mtab_file Parameter
+@c ----------------------------------------------------------------
+@node debug_mtab_file Parameter, debug_options Parameter, cluster Parameter, Global Parameters
+@comment node-name, next, previous, up
+@subsection @t{debug_mtab_file} Parameter
+@cindex debug_mtab_file Parameter
-(type=string, default="/tmp/mnttab"). Path to mtab file that is used
-by @i{Amd} to store a list of mounted file systems during debug-mtab mode.
+(type=string, default="/tmp/mtab"). Path to mtab file that is used
+by @i{Amd} to store a list of mounted file systems during debug-mtab mode.
This option only applies to systems that store mtab information on disk.
@c ----------------------------------------------------------------
@@ -4774,7 +4835,7 @@ is generally a bad idea to use those reserved for other services such as
@subsection @t{log_options} Parameter
@cindex log_options Parameter
-(type=string, default no logging options). Same as the @code{-x}
+(type=string, default=``defaults''). Same as the @code{-x}
option to @i{Amd}. Specify any logging options for @i{Amd}. Options
are comma delimited, and can be preceded by the string @samp{no} to
negate their meaning. The @samp{debug} logging option is only available
@@ -4785,12 +4846,14 @@ values are:
@table @samp
@item all
all messages
+@item defaults
+an alias for "fatal,error,user,warning,info"
@item debug
debug messages
@item error
-non-fatal system errors
+non-fatal system errors (cannot be turned off)
@item fatal
-fatal errors
+fatal errors (cannot be turned off)
@item info
information
@item map
@@ -5271,7 +5334,7 @@ restart_mounts = yes
auto_dir = /n
log_file = /var/log/amd
log_options = all
-#debug_options = all
+#debug_options = defaults
plock = no
selectors_in_defaults = yes
# config.guess picks up "sunos5" and I don't want to edit my maps yet
@@ -5436,6 +5499,7 @@ mount point.
* Amq -m option:: Obtaining mount statistics.
* Amq -p option:: Getting Amd's process ID.
* Amq -P option:: Contacting alternate Amd processes.
+* Amq -q option:: Suppress synchronous unmounting errors.
* Amq -s option:: Obtaining global statistics.
* Amq -T option:: Use TCP transport.
* Amq -U option:: Use UDP transport.
@@ -5641,7 +5705,7 @@ rather not have to search through the process table. This option is
used in the @file{ctl-amd} script.
@c ----------------------------------------------------------------
-@node Amq -P option, Amq -s option, Amq -p option, Controlling Amd
+@node Amq -P option, Amq -q option, Amq -p option, Controlling Amd
@comment node-name, next, previous, up
@subsection @i{Amq} @code{-P} option
@cindex Multiple Amd processes
@@ -5664,7 +5728,16 @@ kill `amq -p -P 300020`
@end example
@c ----------------------------------------------------------------
-@node Amq -s option, Amq -T option, Amq -P option, Controlling Amd
+@node Amq -q option, Amq -s option, Amq -P option, Controlling Amd
+@comment node-name, next, previous, up
+@subsection @i{Amq} @code{-q} option
+@cindex Unmounting a filesystem
+
+Suppress any error messages produced when a synchronous unmount fails.
+See @ref{Amq -u option}.
+
+@c ----------------------------------------------------------------
+@node Amq -s option, Amq -T option, Amq -q option, Controlling Amd
@comment node-name, next, previous, up
@subsection @i{Amq} @code{-s} option
@cindex Global statistics
@@ -5729,11 +5802,19 @@ and if that failed, will try UDP.
@cindex Forcing filesystem to time out
@cindex Unmounting a filesystem
-The @code{-u} option causes the time-to-live interval of the named mount
-points to be expired, thus causing an unmount attempt. This is the only
-safe way to unmount an automounted filesystem. It is not possible to
-unmount a filesystem which has been mounted with the @samp{nounmount}
-flag.
+The @code{-u} option causes the time-to-live interval of the named
+mount points to be expired, thus causing an unmount attempt. This is
+the only safe way to unmount an automounted filesystem. If @code{-u}
+is repeated, then @i{Amd} will attempt to unmount the filesystem
+synchronously. This makes things like
+
+@example
+amq -uu /t/cd0d && eject cd0
+@end example
+
+@noindent
+work as expected. Any error messages this might produce can be
+suppressed with the @code{-q} option. See @ref{Amq -q option}.
@c The @code{-H} option informs @i{Amd} that the specified mount point
@c has hung - as if its keepalive timer had expired.
@@ -5769,11 +5850,10 @@ as a whole, rather than any particular filesystem. The @code{-x} and
@code{-D} options have exactly the same effect as @i{Amd}'s corresponding
command line options.
-When @i{Amd} receives a @code{-x} flag it limits the log options being
-modified to those which were not enabled at startup. This prevents a
-user turning @emph{off} any logging option which was specified at
-startup, though any which have been turned on since then can still be
-turned off. The @code{-D} option has a similar behavior.
+When @i{Amd} receives the @code{-x} flag, it disallows turning off the
+@samp{fatal} or @samp{error} flags. Both are on by default. They are
+mandatory so that @i{Amd} could report important errors, including
+errors relating to turning flags on/off.
@c ################################################################
@node FSinfo, Hlfsd, Run-time Administration, Top
@@ -6904,8 +6984,8 @@ symbolic link to subdirectory within a user's home directory, depending
on the user which accessed that link. It was primarily designed to
redirect incoming mail to users' home directories, so that it can be read
from anywhere. It was designed and implemented by
-@email{ezk@@cs.columbia.edu,Erez Zadok} and
-@email{dupuy@@cs.columbia.edu,Alexander Dupuy}, at the
+@uref{http://www.cs.sunysb.edu/~ezk,Erez Zadok} and
+@email{dupuy AT cs.columbia.edu,Alexander Dupuy}, at the
@uref{http://www.cs.columbia.edu/,Computer Science Department} of
@uref{http://www.columbia.edu/,Columbia University}. A
@uref{http://www.fsl.cs.sunysb.edu/docs/hlfsd/hlfsd.html,paper}
@@ -7522,7 +7602,6 @@ am-utils, and get installed.
* automount2amd::
* ctl-amd::
* ctl-hlfsd::
-* expn::
* fix-amd-map::
* fixmount::
* fixrmtab::
@@ -7649,7 +7728,7 @@ then start a new process --- only if the previous one died cleanly.
@xref{Run-time Administration}, for more details.
@c ----------------------------------------------------------------
-@node ctl-hlfsd, expn, ctl-amd, Assorted Tools
+@node ctl-hlfsd, fix-amd-map, ctl-amd, Assorted Tools
@comment node-name, next, previous, up
@section ctl-hlfsd
@pindex ctl-hlfsd
@@ -7671,27 +7750,7 @@ died cleanly.
@xref{Hlfsd}, for more details.
@c ----------------------------------------------------------------
-@node expn, fix-amd-map, ctl-hlfsd, Assorted Tools
-@comment node-name, next, previous, up
-@section expn
-@pindex expn
-
-A script to expand email addresses into their full name. It is
-generally useful when using with the @file{lostaltmail} script, but is a
-useful tools otherwise.
-
-@example
-$ expn -v ezk@@cs.columbia.edu
-ezk@@cs.columbia.edu ->
- ezk@@shekel.mcl.cs.columbia.edu
-ezk@@shekel.mcl.cs.columbia.edu ->
- Erez Zadok <"| /usr/local/mh/lib/slocal -user ezk || exit 75>
- Erez Zadok <\ezk>
- Erez Zadok </u/zing/ezk/.mailspool/backup>
-@end example
-
-@c ----------------------------------------------------------------
-@node fix-amd-map, fixmount, expn, Assorted Tools
+@node fix-amd-map, fixmount, ctl-hlfsd, Assorted Tools
@comment node-name, next, previous, up
@section fix-amd-map
@pindex fix-amd-map
@@ -8581,7 +8640,7 @@ XXX: This section needs to be updated
@comment node-name, next, previous, up
@unnumbered Acknowledgments & Trademarks
-Many thanks to the @email{am-utils@@am-utils.org,Am-Utils Users}
+Many thanks to the Am-Utils Users
mailing list through the months developing am-utils. These members
have contributed to the discussions, ideas, code and documentation,
and subjected their systems to alpha quality code. Special thanks go
@@ -8589,10 +8648,10 @@ to those @uref{http://www.am-utils.org/docs/am-utils/AUTHORS.txt,authors} who ha
submitted patches, and especially to the maintainers:
@itemize @bullet
-@item @email{ezk@@cs.sunysb.edu,Erez Zadok}
-@item @email{ib42@@cs.columbia.edu,Ion Badulescu}
-@item @email{ro@@techfak.uni-bielefeld.de,Rainer Orth}
-@item @email{nick.williams@@morganstanley.com,Nick Williams}
+@item @uref{http://www.cs.sunysb.edu/~ezk,Erez Zadok}
+@item @email{ionut AT badula.org,Ion Badulescu}
+@item @email{ro AT techfak.uni-bielefeld.de,Rainer Orth}
+@item @email{nick.williams AT morganstanley.com,Nick Williams}
@end itemize
Thanks to the Formal Methods Group at Imperial College for suffering
@@ -8602,7 +8661,7 @@ Thanks to the many people who have helped with the development of
@i{Amd}, especially Piete Brooks at the Cambridge University Computing
Lab for many hours of testing, experimentation and discussion.
-Thanks to the older @email{amd-workers@@majordomo.glue.umd.edu,Amd
+Thanks to the older @email{amd-workers AT majordomo.glue.umd.edu,Amd
Workers} mailing list (now defunct) members for many suggestions and
bug reports to @i{Amd}.
diff --git a/doc/hlfsd.ps b/doc/hlfsd.ps
new file mode 100644
index 000000000000..18c257d993a1
--- /dev/null
+++ b/doc/hlfsd.ps
@@ -0,0 +1,2718 @@
+%!PS-Adobe-2.0
+%%Creator: dvips 5.47 Copyright 1986-91 Radical Eye Software
+%%Title: hlfsd.dvi
+%%Pages: 15 1
+%%BoundingBox: 0 0 612 792
+%%EndComments
+%%BeginProcSet: /usr/local/lib/tex/ps/psfig.pro
+/TeXscale { 65536 div } def
+
+/DocumentInitState [ matrix currentmatrix currentlinewidth currentlinecap
+currentlinejoin currentdash currentgray currentmiterlimit ] cvx def
+
+/startTexFig {
+ /SavedState save def
+ userdict maxlength dict begin
+ currentpoint transform
+
+ DocumentInitState setmiterlimit setgray setdash setlinejoin setlinecap
+ setlinewidth setmatrix
+
+ itransform moveto
+
+ /ury exch TeXscale def
+ /urx exch TeXscale def
+ /lly exch TeXscale def
+ /llx exch TeXscale def
+ /y exch TeXscale def
+ /x exch TeXscale def
+
+ currentpoint /cy exch def /cx exch def
+
+ /sx x urx llx sub div def % scaling for x
+ /sy y ury lly sub div def % scaling for y
+
+ sx sy scale % scale by (sx,sy)
+
+ cx sx div llx sub
+ cy sy div ury sub translate
+
+ /DefFigCTM matrix currentmatrix def
+
+ /initmatrix {
+ DefFigCTM setmatrix
+ } def
+ /defaultmatrix {
+ DefFigCTM exch copy
+ } def
+
+ /initgraphics {
+ DocumentInitState setmiterlimit setgray setdash
+ setlinejoin setlinecap setlinewidth setmatrix
+ DefFigCTM setmatrix
+ } def
+
+ /showpage {
+ initgraphics
+ } def
+ /erasepage {
+ initgraphics
+ } def
+ /copypage {} def
+
+} def
+/clipFig {
+ currentpoint 6 2 roll
+ newpath 4 copy
+ 4 2 roll moveto
+ 6 -1 roll exch lineto
+ exch lineto
+ exch lineto
+ closepath clip
+ newpath
+ moveto
+} def
+/doclip { llx lly urx ury clipFig } def
+/endTexFig {
+ end SavedState restore
+} def
+%%EndProcSet
+%%BeginProcSet: tex.pro
+/TeXDict 200 dict def TeXDict begin /N /def load def /B{bind def}N /S /exch
+load def /X{S N}B /TR /translate load N /isls false N /vsize 10 N /@rigin{
+isls{[0 1 -1 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale
+Resolution VResolution vsize neg mul TR matrix currentmatrix dup dup 4 get
+round 4 exch put dup dup 5 get round 5 exch put setmatrix}N /@letter{/vsize 10
+N}B /@landscape{/isls true N /vsize -1 N}B /@a4{/vsize 10.6929133858 N}B /@a3{
+/vsize 15.5531 N}B /@ledger{/vsize 16 N}B /@legal{/vsize 13 N}B /@manualfeed{
+statusdict /manualfeed true put}B /@copies{/#copies X}B /FMat[1 0 0 -1 0 0]N
+/FBB[0 0 0 0]N /nn 0 N /IE 0 N /ctr 0 N /df-tail{/nn 8 dict N nn begin
+/FontType 3 N /FontMatrix fntrx N /FontBBox FBB N string /base X array
+/BitMaps X /BuildChar{CharBuilder}N /Encoding IE N end dup{/foo setfont}2
+array copy cvx N load 0 nn put /ctr 0 N[}B /df{/sf 1 N /fntrx FMat N df-tail}
+B /dfs{div /sf X /fntrx[sf 0 0 sf neg 0 0]N df-tail}B /E{pop nn dup definefont
+setfont}B /ch-width{ch-data dup length 5 sub get}B /ch-height{ch-data dup
+length 4 sub get}B /ch-xoff{128 ch-data dup length 3 sub get sub}B /ch-yoff{
+ch-data dup length 2 sub get 127 sub}B /ch-dx{ch-data dup length 1 sub get}B
+/ch-image{ch-data dup type /stringtype ne{ctr get /ctr ctr 1 add N}if}B /id 0
+N /rw 0 N /rc 0 N /gp 0 N /cp 0 N /G 0 N /sf 0 N /CharBuilder{save 3 1 roll S
+dup /base get 2 index get S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx 0
+ch-xoff ch-yoff ch-height sub ch-xoff ch-width add ch-yoff setcachedevice
+ch-width ch-height true[1 0 0 -1 -.1 ch-xoff sub ch-yoff .1 add]{ch-image}
+imagemask restore}B /D{/cc X dup type /stringtype ne{]}if nn /base get cc ctr
+put nn /BitMaps get S ctr S sf 1 ne{dup dup length 1 sub dup 2 index S get sf
+div put}if put /ctr ctr 1 add N}B /I{cc 1 add D}B /bop{userdict /bop-hook
+known{bop-hook}if /SI save N @rigin 0 0 moveto}N /eop{clear SI restore
+showpage userdict /eop-hook known{eop-hook}if}N /@start{userdict /start-hook
+known{start-hook}if /VResolution X /Resolution X 1000 div /DVImag X /IE 256
+array N 0 1 255{IE S 1 string dup 0 3 index put cvn put}for}N /p /show load N
+/RMat[1 0 0 -1 0 0]N /BDot 260 string N /rulex 0 N /ruley 0 N /v{/ruley X
+/rulex X V}B /V statusdict begin /product where{pop product dup length 7 ge{0
+7 getinterval(Display)eq}{pop false}ifelse}{false}ifelse end{{gsave TR -.1 -.1
+TR 1 1 scale rulex ruley false RMat{BDot}imagemask grestore}}{{gsave TR -.1
+-.1 TR rulex ruley scale 1 1 false RMat{BDot}imagemask grestore}}ifelse B /a{
+moveto}B /delta 0 N /tail{dup /delta X 0 rmoveto}B /M{S p delta add tail}B /b{
+S p tail}B /c{-4 M}B /d{-3 M}B /e{-2 M}B /f{-1 M}B /g{0 M}B /h{1 M}B /i{2 M}B
+/j{3 M}B /k{4 M}B /w{0 rmoveto}B /l{p -4 w}B /m{p -3 w}B /n{p -2 w}B /o{p -1 w
+}B /q{p 1 w}B /r{p 2 w}B /s{p 3 w}B /t{p 4 w}B /x{0 S rmoveto}B /y{3 2 roll p
+a}B /bos{/SS save N}B /eos{clear SS restore}B end
+%%EndProcSet
+%%BeginProcSet: special.pro
+TeXDict begin /SDict 200 dict N SDict begin /@SpecialDefaults{/hs 612 N /vs
+792 N /ho 0 N /vo 0 N /hsc 1 N /vsc 1 N /ang 0 N /CLIP false N /BBcalc false N
+/p 3 def}B /@scaleunit 100 N /@hscale{@scaleunit div /hsc X}B /@vscale{
+@scaleunit div /vsc X}B /@hsize{/hs X /CLIP true N}B /@vsize{/vs X /CLIP true
+N}B /@hoffset{/ho X}B /@voffset{/vo X}B /@angle{/ang X}B /@rwi{10 div /rwi X}
+B /@llx{/llx X}B /@lly{/lly X}B /@urx{/urx X}B /@ury{/ury X /BBcalc true N}B
+/magscale true def end /@MacSetUp{userdict /md known{userdict /md get type
+/dicttype eq{md begin /letter{}N /note{}N /legal{}N /od{txpose 1 0 mtx
+defaultmatrix dtransform S atan/pa X newpath clippath mark{transform{
+itransform moveto}}{transform{itransform lineto}}{6 -2 roll transform 6 -2
+roll transform 6 -2 roll transform{itransform 6 2 roll itransform 6 2 roll
+itransform 6 2 roll curveto}}{{closepath}}pathforall newpath counttomark array
+astore /gc xdf pop ct 39 0 put 10 fz 0 fs 2 F/|______Courier fnt invertflag{
+PaintBlack}if}N /txpose{pxs pys scale ppr aload pop por{noflips{pop S neg S TR
+pop 1 -1 scale}if xflip yflip and{pop S neg S TR 180 rotate 1 -1 scale ppr 3
+get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip yflip
+not and{pop S neg S TR pop 180 rotate ppr 3 get ppr 1 get neg sub neg 0 TR}if
+yflip xflip not and{ppr 1 get neg ppr 0 get neg TR}if}{noflips{TR pop pop 270
+rotate 1 -1 scale}if xflip yflip and{TR pop pop 90 rotate 1 -1 scale ppr 3 get
+ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip yflip not
+and{TR pop pop 90 rotate ppr 3 get ppr 1 get neg sub neg 0 TR}if yflip xflip
+not and{TR pop pop 270 rotate ppr 2 get ppr 0 get neg sub neg 0 S TR}if}
+ifelse scaleby96{ppr aload pop 4 -1 roll add 2 div 3 1 roll add 2 div 2 copy
+TR .96 dup scale neg S neg S TR}if}N /cp{pop pop showpage pm restore}N end}if}
+if}N /normalscale{Resolution 72 div VResolution 72 div neg scale magscale{
+DVImag dup scale}if}N /psfts{S 65536 div N}N /startTexFig{/psf$SavedState save
+N userdict maxlength dict begin /magscale false def normalscale currentpoint
+TR /psf$ury psfts /psf$urx psfts /psf$lly psfts /psf$llx psfts /psf$y psfts
+/psf$x psfts currentpoint /psf$cy X /psf$cx X /psf$sx psf$x psf$urx psf$llx
+sub div N /psf$sy psf$y psf$ury psf$lly sub div N psf$sx psf$sy scale psf$cx
+psf$sx div psf$llx sub psf$cy psf$sy div psf$ury sub TR /showpage{}N
+/erasepage{}N /copypage{}N /p 3 def @MacSetUp}N /doclip{psf$llx psf$lly
+psf$urx psf$ury currentpoint 6 2 roll newpath 4 copy 4 2 roll moveto 6 -1 roll
+S lineto S lineto S lineto closepath clip newpath moveto}N /endTexFig{end
+psf$SavedState restore}N /@beginspecial{SDict begin /SpecialSave save N gsave
+normalscale currentpoint TR @SpecialDefaults}N /@setspecial{CLIP{newpath 0 0
+moveto hs 0 rlineto 0 vs rlineto hs neg 0 rlineto closepath clip}if ho vo TR
+hsc vsc scale ang rotate BBcalc{rwi urx llx sub div dup scale llx neg lly neg
+TR}if /showpage{}N /erasepage{}N /copypage{}N newpath}N /@endspecial{grestore
+clear SpecialSave restore end}N /@defspecial{SDict begin}N /@fedspecial{end}B
+/li{lineto}B /rl{rlineto}B /rc{rcurveto}B /np{/SaveX currentpoint /SaveY X N 1
+setlinecap newpath}N /st{stroke SaveX SaveY moveto}N /fil{fill SaveX SaveY
+moveto}N /ellipse{/endangle X /startangle X /yrad X /xrad X /savematrix matrix
+currentmatrix N TR xrad yrad scale 0 0 1 startangle endangle arc savematrix
+setmatrix}N end
+%%EndProcSet
+TeXDict begin 1000 300 300 @start /Fa 2 117 df<3E0006000C000C000C000C00180019
+E01E30183038303030303030306060606460C460C4C0C8C0700E147E9313>104
+D<02000600060006000C00FF800C000C001800180018001800300031003100320032001C000912
+7F910D>116 D E /Fb 5 116 df<001FC0001FC0001FC00001C00001C00001C00001C00001C000
+01C001F1C007FDC00FFFC01E0FC03C07C07803C07001C0E001C0E001C0E001C0E001C0E001C0E0
+01C0E001C07003C07003C03807C03E0FC01FFFFC07FDFC01F1FC161E7E9D1A>100
+D<0007E0001FF0003FF800787800F03000E00000E00000E00000E0007FFFF0FFFFF0FFFFF000E0
+0000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E0
+0000E0003FFF807FFFC03FFF80151E7F9D1A>102 D<FE0000FE0000FE00000E00000E00000E00
+000E00000E00000E00000E3E000EFF800FFFC00FC1C00F80E00F00E00E00E00E00E00E00E00E00
+E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E0FFE3FEFFE7FEFFE3FE171E7F9D1A
+>104 D<FFE000FFE000FFE00000E00000E00000E00000E00000E00000E00000E00000E00000E0
+0000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E0
+0000E00000E000FFFFE0FFFFE0FFFFE0131E7D9D1A>108 D<07FB801FFF807FFF80780780E003
+80E00380E003807800007FC0003FFC0007FE00003F800007806001C0E001C0E001C0F003C0FC07
+80FFFF00EFFE00E3F80012157C941A>115 D E /Fc 13 118 df<000180000180000380000380
+000780000780000B800013800013800023C00021C00041C000C1C00081C00101C001FFC00201C0
+0201C00401C00801C00801C01801C0FE0FF815177E961A>65 D<03FFFE00E00E00E00400E00400
+E00401C00401C00401C10001C10003820003820003FE000386000704000704080704080700100E
+00100E00300E00200E00601C01C0FFFFC017177E9618>69 D<03F0003F8000F000780000B80078
+0000B800B80000B80138000138017000013802700001380270000138047000023808E000021C08
+E000021C10E000021C10E000041C21C000041C41C000041C41C000041C81C000081D038000081D
+038000080E038000080E038000180C070000FE083FE00021177E9620>77
+D<03F00FE000F0030000F0020000B8020000B80200011C0400011C0400011C0400010E0400020E
+0800020E080002070800020708000403900004039000040390000401D0000801E0000800E00008
+00E0000800E00018004000FE0040001B177E961A>I<03FFE000E03800E01C00E01C00E01C01C0
+1C01C01C01C01C01C0380380700381C003FF000381800700C00700E00700E00700E00E01C00E01
+C00E01C20E01C21C00C4FF807817177E961A>82 D<007C400182800301800601800601800C0100
+0C01000C00000E00000FC00007F80003FC00007C00000E00000E00000600200600400C00400C00
+600800601000D8600087C00012177D9614>I<7FC1FC1C00601C00401C00401C00403800803800
+80380080380080700100700100700100700100E00200E00200E00200E00200E00400E00800E008
+006030003040001F8000161779961A>85 D<007C00180018001800180030003000300030076008
+E018E0306030C060C060C060C0C180C188C1884388659038E00E177C9612>100
+D<030706000000000000384C4C4C8C18181830326262243808177D960B>105
+D<078018C0304060606060C060C060C06080C080C08180C10046003C000B0E7B8D12>111
+D<38F04518463846308C000C000C000C001800180018001800300030000D0E7D8D0F>114
+D<07800C4018E018E038001E001F8007C000C060C0E0C0C180C3003E000B0E7D8D0F>I<1C0826
+184618461886300C300C300C30186018621862186208E407380F0E7D8D13>117
+D E /Fd 25 127 df<60F0F0600404798312>46 D<0018003800380070007000E000E001C001C0
+01C003800380070007000E000E001C001C001C003800380070007000E000E000C0000D1A7E9612
+>I<07C00FE01C703838701C701CE00EE00EE00EE00EE00EE00EE00EE01E701C701C38381C700F
+E007C00F147F9312>I<FFFEFFFE7FFE0000000000007FFEFFFEFFFE0F097F8E12>61
+D<3F807FC070E0207000700FF03FF07870E070E070E07070F03FFE1F3E0F0E7E8D12>97
+D<F800F80038003800380038003BE03FF03C38381C380C380E380E380E380E380C381C3C383FF0
+1BC00F147F9312>I<07F01FF8383870106000E000E000E000E0006000703838381FF007E00D0E
+7E8D12>I<00F800F8003800380038003807B81FF8387870386038E038E038E038E03860387078
+38781FFE0FBE0F147F9312>I<07801FE0387070706038E038FFF8FFF8E0006000703838381FF0
+07C00D0E7E8D12>I<007E00FF01C70382038003807FFEFFFE0380038003800380038003800380
+0380038003803FF83FF81014809312>I<F800F800380038003800380039E03FF03E383C383838
+3838383838383838383838383838FE3EFE3E0F147F9312>104 D<06000F000F00060000000000
+0000FF00FF000700070007000700070007000700070007000700FFF0FFF00C157D9412>I<F800
+F80038003800380038003BFC3BFC38F039E03BC03F803F803FC03DE038E038703838FC7EFC7E0F
+147F9312>107 D<FF00FF00070007000700070007000700070007000700070007000700070007
+0007000700FFF8FFF80D147E9312>I<F71C00FFBE0079E70079E70071C70071C70071C70071C7
+0071C70071C70071C70071C700F9E780F8E380110E808D12>I<F9E0FFF03E383C383838383838
+3838383838383838383838FE3EFE3E0F0E7F8D12>I<0F803FE038E07070E038E038E038E038E0
+38F078707038E03FE00F800D0E7E8D12>I<FBE0FFF03C38381C380C380E380E380E380E380C38
+1C3C383FF03BC038003800380038003800FE00FE000F157F8D12>I<FCF8FDFC1F1C1E081E001C
+001C001C001C001C001C001C00FFC0FFC00E0E7E8D12>114 D<1FF03FF06070C070E0007F003F
+E00FF000786018E018F030FFE0DFC00D0E7E8D12>I<06000E000E000E007FF8FFF80E000E000E
+000E000E000E000E000E380E380E3807F003C00D127F9112>I<F8F8F8F8383838383838383838
+38383838383838383838781FFE0FBE0F0E7F8D12>I<FC7EFC7E38383C781C701C701C700EE00E
+E00EE006C007C007C003800F0E7F8D12>I<3FFC7FFC7038707000E001C0038007000E001C1C38
+1C701CFFFCFFFC0E0E7F8D12>122 D<18403CE0E78043000B047D9312>126
+D E /Fe 64 125 df<00FCF807839C0E079C1C07081C07001C07001C07001C07001C0700FFFFE0
+1C07001C07001C07001C07001C07001C07001C07001C07001C07001C07001C07001C0700FF1FE0
+1617809615>11 D<00FC000782000E07001C07001C02001C00001C00001C00001C0000FFFF001C
+07001C07001C07001C07001C07001C07001C07001C07001C07001C07001C07001C0700FF1FE013
+17809614>I<00FC7E000703C1000E0783801C0703801C0701001C0700001C0700001C0700001C
+070000FFFFFF801C0703801C0703801C0703801C0703801C0703801C0703801C0703801C070380
+1C0703801C0703801C0703801C070380FF1FCFF01C1780961D>14 D<60F0F07010102020404004
+0A7D960A>39 D<0102040C1818303070606060E0E0E0E0E0E0E0E0E0E060606070303018180C04
+020108227D980E>I<8040203018180C0C0E060606070707070707070707070606060E0C0C1818
+3020408008227E980E>I<60F0F070101020204040040A7D830A>44 D<FF80FF80090280870C>I<
+60F0F06004047D830A>I<0008001800300030003000600060006000C000C000C0018001800180
+030003000600060006000C000C000C00180018001800300030003000600060006000C000C0000D
+217E9812>I<03000700FF00070007000700070007000700070007000700070007000700070007
+000700070007007FF00C157E9412>49 D<0F8030E040708030C038E03840380038007000700060
+00C00180030006000C08080810183FF07FF0FFF00D157E9412>I<0FE030306018701C701C001C
+00180038006007E000300018000C000E000EE00EE00EC00C401830300FE00F157F9412>I<0030
+0030007000F001F001700270047008701870107020704070C070FFFE0070007000700070007003
+FE0F157F9412>I<01F00608080C181C301C70006000E000E3E0EC30F018F00CE00EE00EE00E60
+0E600E300C3018183007C00F157F9412>54 D<40007FFE7FFC7FF8C00880108020004000800080
+0100010003000200060006000E000E000E000E000E0004000F167E9512>I<07E018302018600C
+600C700C78183E101F600FC00FF018F8607C601EC00EC006C006C004600C38300FE00F157F9412
+>I<07C0183030186018E00CE00CE00EE00EE00E601E301E186E0F8E000E000C001C7018701860
+3020C01F800F157F9412>I<60F0F06000000000000060F0F07010102020404004147D8D0A>59
+D<001000003800003800003800005C00005C00005C00008E00008E00008E000107000107000307
+8002038002038007FFC00401C00401C00800E00800E01800E03800F0FE03FE17177F961A>65
+D<FFFE001C03801C00E01C00601C00701C00701C00701C00701C00E01C01C01FFF801FFFC01C00
+E01C00701C00301C00381C00381C00381C00381C00701C00E01C01C0FFFF0015177F9619>I<00
+FC100383300E00B01C0070380030300030700010600010E00010E00000E00000E00000E00000E0
+0000E000106000107000103000203800201C00400E008003830000FC0014177E9619>I<FFFF00
+1C01C01C00E01C00301C00381C00181C001C1C000C1C000E1C000E1C000E1C000E1C000E1C000E
+1C000E1C000C1C001C1C001C1C00381C00301C00601C01C0FFFF0017177F961B>I<FFFFE01C00
+E01C00601C00201C00101C00101C00101C04001C04001C04001C0C001FFC001C0C001C04001C04
+001C04001C00001C00001C00001C00001C00001C0000FFC00014177F9617>70
+D<FF83FE1C00701C00701C00701C00701C00701C00701C00701C00701C00701C00701FFFF01C00
+701C00701C00701C00701C00701C00701C00701C00701C00701C0070FF83FE17177F961A>72
+D<FFE00E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E00
+0E000E000E00FFE00B177F960D>I<FFC0001C00001C00001C00001C00001C00001C00001C0000
+1C00001C00001C00001C00001C00001C00001C00201C00201C00201C00601C00601C00401C00C0
+1C03C0FFFFC013177F9616>76 D<FE0003F81E0003C0170005C0170005C0170005C0138009C013
+8009C011C011C011C011C011C011C010E021C010E021C0107041C0107041C0107041C0103881C0
+103881C0101D01C0101D01C0100E01C0100E01C0380E01C0FE040FF81D177F9620>I<FC00FE1E
+00381F001017001013801011C01011C01010E010107010103810103810101C10100E10100F1010
+07101003901001D01001D01000F0100070100030380030FE001017177F961A>I<00FC00030300
+0E01C01C00E0380070300030700038600018E0001CE0001CE0001CE0001CE0001CE0001CE0001C
+7000387000383000303800701C00E00E01C003030000FC0016177E961B>I<FFFE001C03801C00
+C01C00601C00701C00701C00701C00701C00601C00C01C03801FFE001C00001C00001C00001C00
+001C00001C00001C00001C00001C00001C0000FF800014177F9618>I<FFFC001C03801C00C01C
+00E01C00701C00701C00701C00701C00E01C00C01C03801FFE001C07801C01C01C00E01C00E01C
+00E01C00E01C00E01C00E11C00E11C0072FF803C18177F961A>82 D<0FC4302C601C400CC004C0
+04C004E00070007F003FE00FF801FC001C000E0006800680068006C004E008D81087E00F177E96
+14>I<7FFFF8603818403808403808803804803804803804003800003800003800003800003800
+00380000380000380000380000380000380000380000380000380000380007FFC016177F9619>
+I<FF80FE1C00381C00101C00101C00101C00101C00101C00101C00101C00101C00101C00101C00
+101C00101C00101C00101C00101C00100E0020060020030040018180007E0017177F961A>I<FF
+80FE3C00381C00101C00100E00200E002007004007004007004003808003808003C18001C10001
+C10000E20000E20000F60000740000740000380000380000380000100017177F961A>I<FF83FC
+1F01E00E008007008007810003820001C20001E40000E800007800007800003800007C00005E00
+008E000187000107800203800601C00401E00C00E01C00F0FF03FE17177F961A>88
+D<FCFCC0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0FCFC06217D980A
+>91 D<FCFC0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0CFCFC062180
+980A>93 D<1FC0386038301038003803F81E3830387038E039E039E07970FF1F1E100E7F8D12>
+97 D<FC00001C00001C00001C00001C00001C00001C00001C00001C00001CF8001F06001C0300
+1C03801C01801C01C01C01C01C01C01C01C01C01801C03801C03001B0E0010F8001217809614>
+I<07F01838303870106000E000E000E000E000600070083008183007C00D0E7F8D10>I<007E00
+000E00000E00000E00000E00000E00000E00000E00000E0007CE001C3E00300E00700E00600E00
+E00E00E00E00E00E00E00E00600E00700E00301E00182E0007CFC012177F9614>I<0FC0186030
+307038E018FFF8E000E000E000600070083010183007C00D0E7F8D10>I<03E006700E701C201C
+001C001C001C001C00FF801C001C001C001C001C001C001C001C001C001C001C001C00FF800C17
+80960B>I<0F9E18E33060707070707070306018C02F80200060003FE03FF83FFC600EC006C006
+C006600C38380FE010157F8D12>I<FC00001C00001C00001C00001C00001C00001C00001C0000
+1C00001C7C001D8E001E07001C07001C07001C07001C07001C07001C07001C07001C07001C0700
+1C0700FF9FE01317809614>I<183C3C1800000000007C1C1C1C1C1C1C1C1C1C1C1C1CFF081780
+960A>I<FC00001C00001C00001C00001C00001C00001C00001C00001C00001C3F801C1C001C18
+001C20001C40001CC0001FE0001CF0001C70001C78001C3C001C1E001C1E00FF3FC01217809613
+>107 D<FC001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C
+001C001C001C001C00FF80091780960A>I<FC7C1F001D8E63801E0781C01C0701C01C0701C01C
+0701C01C0701C01C0701C01C0701C01C0701C01C0701C01C0701C01C0701C0FF9FE7F81D0E808D
+1E>I<FC7C001D8E001E07001C07001C07001C07001C07001C07001C07001C07001C07001C0700
+1C0700FF9FE0130E808D14>I<07C018303018600C600CE00EE00EE00EE00EE00E701C30181830
+07C00F0E7F8D12>I<FCF8001F0E001C03001C03801C01801C01C01C01C01C01C01C01C01C0180
+1C03801C07001F0E001CF8001C00001C00001C00001C00001C0000FF80001214808D14>I<07C2
+001C2600381E00700E00600E00E00E00E00E00E00E00E00E00600E00700E00301E001C2E0007CE
+00000E00000E00000E00000E00000E00007FC012147F8D13>I<FCF01D381E381C101C001C001C
+001C001C001C001C001C001C00FF800D0E808D0E>I<1F4060C0C040C040E000FF007F801FC001
+E080608060C060E0C09F000B0E7F8D0E>I<080008000800180018003800FF8038003800380038
+0038003800380038403840384038401C800F000A147F930E>I<FC3F001C07001C07001C07001C
+07001C07001C07001C07001C07001C07001C07001C0F000E170003E7E0130E808D14>I<FE1F3C
+0E3C0C1C081C080E100E100720072003C003C003C001800180100E7F8D13>I<FCFE7C38383838
+38101C3C201C3C201C4C200E4E400E4E400E8640078780078780070380030300030300160E7F8D
+19>I<FE3F3C181C100E20074007C0038001C002E004F008701838383CFC7F100E7F8D13>I<FE1F
+3C0E3C0C1C081C080E100E100720072003C003C003C00180018001000100E200E200A400780010
+147F8D13>I<FFFFFFFFC02201808823>124 D E /Ff 10 58 df<1F00318060C04040C060C060
+C060C060C060C060C060C060404060C031801F000B107F8F0F>48 D<0C003C00CC000C000C000C
+000C000C000C000C000C000C000C000C000C00FF8009107E8F0F>I<1F00618040C08060C06000
+60006000C00180030006000C00102020207FC0FFC00B107F8F0F>I<1F00218060C060C000C000
+8001800F00008000400060C060C060804060801F000B107F8F0F>I<0300030007000F000B0013
+00330023004300C300FFE003000300030003001FE00B107F8F0F>I<20803F002C002000200020
+002F0030802040006000600060C06080C061801F000B107F8F0F>I<0780184030C060C06000C0
+00CF00F080E040C060C060C060406060C030801F000B107F8F0F>I<40007FE07FC08080808001
+000200040004000C0008000800180018001800180018000B117E900F>I<1F00318060C060C060
+C071803F000F00338061C0C060C060C060404060801F000B107F8F0F>I<1F00318060C0C040C0
+60C060C06040E021E01E600060004060C0608043003E000B107F8F0F>I
+E /Fg 10 58 df<0F0030C0606060604020C030C030C030C030C030C030C030C030C030402060
+60606030C00F000C137E9211>48 D<0C001C00EC000C000C000C000C000C000C000C000C000C00
+0C000C000C000C000C000C00FFC00A137D9211>I<1F0060C06060F070F0306030007000700060
+00C001C00180020004000810101020207FE0FFE00C137E9211>I<0FC030707038703870380038
+003000E00FC0007000380018001C601CF01CF018E03860701FC00E137F9211>I<006000E000E0
+0160026006600C600860106020606060C060FFFC0060006000600060006003FC0E137F9211>I<
+60607FC07F8044004000400040004F0070C040E0006000700070E070E070E06040E021C01F000C
+137E9211>I<07C00C201070207060006000C000CF00D0C0E060C020C030C030C0304030602020
+6010C00F000C137E9211>I<40007FFC7FF8401080108020004000800100010003000200060006
+000E000E000E000E000E0004000E147E9311>I<0FC0107020186018601870183C303F600F800F
+E031F06078C01CC00CC00CC00C601830300FC00E137F9211>I<0F00308060404060C020C030C0
+30C0304030607030B00F30003000200060E040E08041003E000C137E9211>I
+E /Fh 59 122 df<183C3C3C0404080810204080060C779C0D>39 D<1838783808081010204040
+80050C7D830D>44 D<FFC0FFC0FFC00A037D890F>I<3078F06005047C830D>I<003C0000C60001
+83000303000603000603800E03800C03801C03801C0300380700380700380700380700700E0070
+0E00700E00700E00E01C00E01C00E01C00E03800E03800E03000C06000E0600060C0007180001E
+0000111D7B9B15>48 D<00020006000C001C007C039C0038003800380038007000700070007000
+E000E000E000E001C001C001C001C003800380038003800780FFF00F1C7C9B15>I<003C0000C3
+000101800201800201C00441C00441C00841C00841C00841C01083801083801107000E0600000C
+0000180000300000C0000100000600000800001001001002002002004006007E0C00C7F80083F8
+0080E000121D7C9B15>I<0001800001C000038000038000038000030000070000070000060000
+0E00000C00001C0000180000180000300000300000600000400000C600018E00010E00020E0006
+1C000C1C00181C003F1C0040F800803F0000380000380000700000700000700000700000E00000
+600012247E9B15>52 D<00C06000FFC001FF8001FE000100000100000200000200000200000200
+00047800058C00060600040600080600000700000700000600000E00000E00700E00700C00E01C
+0080180080380040300040600021C0001F0000131D7C9B15>I<09C04017E0801FE0803C610030
+2700601A00400600400400800C0080080000180000100000300000600000600000600000C00000
+C00001C0000180000380000380000300000700000700000700000E00000E00000C0000121D799B
+15>55 D<001E000061000081800180800300C00300C006018006018006018007030007860003CC
+0003F00001F000037800063C00081E00180E00300E00600600600600600600C00C00C00C00C018
+0060100060200030C0000F0000121D7C9B15>I<003C0000C6000183000303000603000E03000C
+03801C03801C03001C0300380700380700380700380F00380E00181E00181E000C6C00079C0000
+1C00001800003800003000006000E0C000E0C0008180008600007C0000111D7B9B15>I<060F0F
+06000000000000000000003078F06008127C910D>I<0000180000001800000038000000380000
+007800000078000000B8000001B800000138000002380000023C0000041C0000041C0000081C00
+00181C0000101C0000201C0000201C00007FFC0000401C0000801C0001801C0001001C0002001C
+0002001C0004000E000C000E001C001E00FF00FFC01A1D7E9C1F>65 D<01FFFE00003C07800038
+03C0003801C0003801C0003801C0007001C0007003C0007003C00070078000E0070000E00E0000
+E03C0000FFF80001C01C0001C00E0001C00F0001C00F0003800F0003800F0003800F0003800F00
+07001E0007001C0007003C00070078000E01E000FFFF80001A1C7D9B1D>I<0003F020001E0C60
+003002E000E003C001C001C0038001C0070000C00E0000801E0000801C0000803C0000803C0000
+00780000007800000078000000F0000000F0000000F0000000F0000000F0000400F0000400F000
+0400F0000800700008007000100038002000180040000C0180000706000001F800001B1E7A9C1E
+>I<01FFFE00003C0780003801C0003801C0003800E0003800E0007000F0007000700070007000
+7000F000E000F000E000F000E000F000E000F001C001E001C001E001C001E001C001C0038003C0
+03800380038007800380070007000E0007001C0007003800070070000E01C000FFFF00001C1C7D
+9B1F>I<01FFFFE0003C00E0003800600038004000380040003800400070004000700040007020
+400070200000E0400000E0400000E0C00000FFC00001C0800001C0800001C0800001C080000381
+0100038001000380020003800200070004000700040007000C00070018000E007800FFFFF0001B
+1C7D9B1C>I<01FFFFC0003C01C0003800C0003800800038008000380080007000800070008000
+7020800070200000E0400000E0400000E0C00000FFC00001C0800001C0800001C0800001C08000
+03810000038000000380000003800000070000000700000007000000070000000F000000FFF000
+001A1C7D9B1B>I<0003F020001E0C60003002E000E003C001C001C0038001C0070000C00E0000
+801E0000801C0000803C0000803C000000780000007800000078000000F0000000F0000000F001
+FFC0F0001E00F0001C00F0001C00F0001C00F0001C00700038007000380038003800180078000C
+0090000707100001F800001B1E7A9C20>I<01FFCFFE003C01E0003801C0003801C0003801C000
+3801C00070038000700380007003800070038000E0070000E0070000E0070000FFFF0001C00E00
+01C00E0001C00E0001C00E0003801C0003801C0003801C0003801C000700380007003800070038
+00070038000F007800FFE7FF001F1C7D9B1F>I<01FFC0003C0000380000380000380000380000
+700000700000700000700000E00000E00000E00000E00001C00001C00001C00001C00003800003
+80000380000380000700000700000700000700000F0000FFE000121C7E9B10>I<007FF0000780
+000700000700000700000700000E00000E00000E00000E00001C00001C00001C00001C00003800
+00380000380000380000700000700000700000700060E000E0E000C0C00081C000838000470000
+3C0000141D7B9B16>I<01FFC0FF003C003C003800300038004000380080003801000070020000
+700400007010000070200000E0400000E0C00000E1C00000E5C00001C8E00001D0E00001E0E000
+01C07000038070000380700003803800038038000700380007001C0007001C0007001C000F001E
+00FFE0FF80201C7D9B20>I<01FFE0003C00003800003800003800003800007000007000007000
+00700000E00000E00000E00000E00001C00001C00001C00001C000038008038008038008038010
+0700100700300700600700E00E03C0FFFFC0151C7D9B1A>I<01FE0007F8003E000780002E000F
+00002E001700002E001700002E002700004E002E00004E004E00004E004E00004E008E00008E01
+1C00008E011C00008E021C00008E021C0001070438000107043800010708380001071038000207
+107000020720700002072070000207407000040740E000040780E000040700E0000C0700E0001C
+0601E000FF861FFC00251C7D9B25>I<01FC03FE001C0070003C0060002E0040002E0040002E00
+40004700800047008000470080004380800083810000838100008181000081C1000101C2000101
+C2000100E2000100E2000200E4000200740002007400020074000400380004003800040038000C
+0018001C001000FF8010001F1C7D9B1F>I<0007F000001C1C0000700E0000E0070001C0038003
+800380070003800E0003C01E0003C01C0003C03C0003C03C0003C0780003C0780003C0780003C0
+F0000780F0000780F0000780F0000F00F0000F00F0000E00F0001E00F0003C0070003800700070
+007800E0003801C0001C0380000E0E000003F800001A1E7A9C20>I<01FFFC00003C0700003803
+80003801C0003801C0003801C0007003C0007003C0007003C00070038000E0078000E0070000E0
+0E0000E0380001FFE00001C0000001C0000001C000000380000003800000038000000380000007
+0000000700000007000000070000000F000000FFE000001A1C7D9B1C>I<01FFF800003C0E0000
+38070000380380003803800038038000700780007007800070078000700F0000E00E0000E01C00
+00E0700000FFC00001C0C00001C0600001C0700001C07000038070000380700003807000038070
+000700F0000700F0400700F0400700F0800F007880FFE0790000001E001A1D7D9B1E>82
+D<000F8400304C00403C00801801001803001803001806001006001006000007000007000003E0
+0003FC0001FF00007F800007C00001C00001C00000C00000C02000C02000C06001806001806003
+00600200F00400CC180083E000161E7D9C17>I<1FFFFFC01C0701C0300E00C0200E0080600E00
+80400E0080401C0080801C0080801C0080001C0000003800000038000000380000003800000070
+000000700000007000000070000000E0000000E0000000E0000000E0000001C0000001C0000001
+C0000001C0000003C000007FFE00001A1C799B1E>I<7FF0FF800F001C000E0018000E0010000E
+0010000E0010001C0020001C0020001C0020001C00200038004000380040003800400038004000
+70008000700080007000800070008000E0010000E0010000E0010000E0020000E0020000E00400
+00E00400006008000030300000104000000F800000191D779B1F>I<FF83FF0FF03C007001C038
+007001803800F001003800F0020038017002003801700400380270040038027008001C04700800
+1C047010001C087010001C087020001C107020001C107040001C207040001C207080001C407180
+001C407100001C807200001D807200001D007400001E007400001E007800001C007800001C0070
+0000180070000018006000001000600000241D779B29>87 D<01FF81FE001E00F0001C0060001E
+0080000E0180000E0100000F02000007040000070800000790000003A0000003C0000001C00000
+01C0000001E0000002E0000004E0000008F0000010700000207000006038000040380000803C00
+01001C0002001C0006001E001E001E00FF80FFC01F1C7E9B1F>I<00FFFF8000F0070001C00E00
+01801E0001001C0001003800020070000200E0000201C0000001C0000003800000070000000E00
+00001C0000001C0000003800000070000000E0080001C0100001C0100003801000070020000E00
+20001C0060003C00C0003801C00070078000FFFF8000191C7D9B19>90 D<03CC063C0C3C181C38
+38303870387038E070E070E070E070E0E2C0E2C0E261E462643C380F127B9115>97
+D<3F00070007000E000E000E000E001C001C001C001C0039C03E60383038307038703870387038
+E070E070E070E060E0E0C0C0C1C0618063003C000D1D7B9C13>I<01F007080C08181C38383000
+70007000E000E000E000E000E000E008E010602030C01F000E127B9113>I<001F800003800003
+80000700000700000700000700000E00000E00000E00000E0003DC00063C000C3C00181C003838
+00303800703800703800E07000E07000E07000E07000E0E200C0E200C0E20061E4006264003C38
+00111D7B9C15>I<01E007100C1018083810701070607F80E000E000E000E000E000E008601060
+2030C01F000D127B9113>I<0003C0000670000C70001C60001C00001C00003800003800003800
+00380000380003FF8000700000700000700000700000700000E00000E00000E00000E00000E000
+01C00001C00001C00001C00001C000038000038000038000030000030000070000C60000E60000
+CC00007800001425819C0D>I<00F3018F030F06070E0E0C0E1C0E1C0E381C381C381C381C3838
+30383038187818F00F700070007000E000E0C0C0E1C0C3007E00101A7D9113>I<0FC00001C000
+01C0000380000380000380000380000700000700000700000700000E78000E8C000F0E000E0E00
+1C0E001C0E001C0E001C0E00381C00381C00381C00383800703880703880707080707100E03200
+601C00111D7D9C15>I<01800380010000000000000000000000000000001C002600470047008E
+008E000E001C001C001C0038003800710071007100720072003C00091C7C9B0D>I<0FC00001C0
+0001C0000380000380000380000380000700000700000700000700000E0F000E11000E23800E43
+801C83001C80001D00001E00003F800039C00038E00038E00070E20070E20070E20070E400E064
+00603800111D7D9C13>107 D<1F800380038007000700070007000E000E000E000E001C001C00
+1C001C0038003800380038007000700070007000E400E400E400E40068003800091D7C9C0B>I<
+3C1E0780266318C04683A0E04703C0E08E0380E08E0380E00E0380E00E0380E01C0701C01C0701
+C01C0701C01C070380380E0388380E0388380E0708380E0710701C0320300C01C01D127C9122>
+I<3C3C002646004687004707008E07008E07000E07000E07001C0E001C0E001C0E001C1C00381C
+40381C40383840383880701900300E0012127C9117>I<01E007180C0C180C380C300E700E700E
+E01CE01CE01CE018E038E030E06060C031801E000F127B9115>I<07870004D98008E0C008E0C0
+11C0E011C0E001C0E001C0E00381C00381C00381C00381800703800703000707000706000E8C00
+0E70000E00000E00001C00001C00001C00001C00003C0000FF8000131A7F9115>I<3C3C26C246
+8747078E068E000E000E001C001C001C001C0038003800380038007000300010127C9112>114
+D<01F006080C080C1C18181C001F001FC00FF007F0007800386030E030C030806060C01F000E12
+7D9111>I<00C001C001C001C00380038003800380FFE00700070007000E000E000E000E001C00
+1C001C001C00384038403840388019000E000B1A7D990E>I<1E0300270700470700470700870E
+00870E000E0E000E0E001C1C001C1C001C1C001C1C003838803838801838801839001C5900078E
+0011127C9116>I<1E06270E470E4706870287020E020E021C041C041C041C0818083808181018
+200C4007800F127C9113>I<1E01832703874703874703838707018707010E07010E07011C0E02
+1C0E021C0E021C0E04180C04181C04181C081C1C100C263007C3C018127C911C>I<070E001991
+0010E38020E38041C30041C00001C00001C000038000038000038000038000070200670200E704
+00CB04008B080070F00011127D9113>I<1E03270747074707870E870E0E0E0E0E1C1C1C1C1C1C
+1C1C38383838183818381C7007F00070007000E0E0C0E1C0818047003C00101A7C9114>I
+E /Fi 5 104 df<03C00FF01FF83FFC7FFE7FFEFFFFFFFFFFFFFFFF7FFE7FFE3FFC1FF80FF003
+C010107E9115>15 D<0000030000000003000000000180000000018000000000C0000000006000
+7FFFFFF000FFFFFFF8000000000E00000000070000000001E0000000007800000001E000000003
+8000000006000000001C00FFFFFFF8007FFFFFF0000000006000000000C0000000018000000001
+80000000030000000003000025187E952A>41 D<0000600000600000C00000C000018000018000
+0180000300000300000600000600000C00000C0000180000180000180000300000300000600000
+600000C00000C0000180000180000300000300000300000600000600000C00000C000018000018
+0000300000300000300000600000600000C0000040000013287A9D00>54
+D<003C00E001C00180038003800380038003800380038003800380038003800380038003000700
+1C00F0001C00070003000380038003800380038003800380038003800380038003800380018001
+C000E0003C0E297D9E15>102 D<F0001C00070003000380038003800380038003800380038003
+800380038003800380018001C000E0003C00E001C0018003800380038003800380038003800380
+03800380038003800380030007001C00F0000E297D9E15>I E /Fj 57 123
+df<3803807C07C0FE0FE0FF0FF0FF0FF07F07F03B03B00300300300300700700600600600600C
+00C01C01C018018070070020020014117EA21D>34 D<387CFEFFFF7F3B03030706060C1C187020
+08117C8610>44 D<FFFCFFFCFFFCFFFC0E047F8C13>I<387CFEFEFE7C3807077C8610>I<00FE00
+07FFC00F83E01F01F03E00F83E00F87C007C7C007C7C007CFC007CFC007EFC007EFC007EFC007E
+FC007EFC007EFC007EFC007EFC007EFC007EFC007EFC007EFC007E7C007C7C007C7C007C3E00F8
+3E00F81F01F00F83E007FFC000FE0017207E9F1C>48 D<00180000780001F800FFF800FFF80001
+F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001
+F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F8007FFFE07F
+FFE013207C9F1C>I<03FC000FFF003C1FC07007E07C07F0FE03F0FE03F8FE03F8FE01F87C01F8
+3803F80003F80003F00003F00007E00007C0000F80001F00003E0000380000700000E01801C018
+0380180700180E00380FFFF01FFFF03FFFF07FFFF0FFFFF0FFFFF015207D9F1C>I<00FE0007FF
+C00F07E01E03F03F03F03F81F83F81F83F81F81F03F81F03F00003F00003E00007C0001F8001FE
+0001FF000007C00001F00001F80000FC0000FC3C00FE7E00FEFF00FEFF00FEFF00FEFF00FC7E01
+FC7801F81E07F00FFFC001FE0017207E9F1C>I<0000E00001E00003E00003E00007E0000FE000
+1FE0001FE00037E00077E000E7E001C7E00187E00307E00707E00E07E00C07E01807E03807E070
+07E0E007E0FFFFFEFFFFFE0007E00007E00007E00007E00007E00007E00007E000FFFE00FFFE17
+207E9F1C>I<1000201E01E01FFFC01FFF801FFF001FFE001FF8001BC000180000180000180000
+18000019FC001FFF001E0FC01807E01803E00003F00003F00003F80003F83803F87C03F8FE03F8
+FE03F8FC03F0FC03F07007E03007C01C1F800FFF0003F80015207D9F1C>I<001F8000FFE003F0
+7007C0F00F01F81F01F83E01F83E01F87E00F07C00007C0000FC0800FC7FC0FCFFE0FD80F0FF00
+F8FE007CFE007CFC007EFC007EFC007EFC007E7C007E7C007E7C007E3C007C3E007C1E00F80F00
+F00783E003FFC000FF0017207E9F1C>I<6000007800007FFFFE7FFFFE7FFFFC7FFFF87FFFF87F
+FFF0E00060E000C0C00180C00300C00300000600000C00001C0000180000380000780000780000
+F00000F00000F00001F00001F00001F00003F00003F00003F00003F00003F00003F00003F00001
+E00017227DA11C>I<00FE0003FFC00703E00E00F01C00F01C00783C00783E00783F00783F8078
+3FE0F01FF9E01FFFC00FFF8007FFC003FFE007FFF01E7FF83C1FFC7807FC7801FEF000FEF0003E
+F0001EF0001EF0001CF8001C7800383C00381F01F00FFFC001FF0017207E9F1C>I<01FE0007FF
+800F83E01E01F03E00F07C00F87C0078FC007CFC007CFC007CFC007EFC007EFC007EFC007E7C00
+FE7C00FE3E01FE1E037E0FFE7E07FC7E00207E00007C00007C1E007C3F00F83F00F83F00F03F01
+E01E03C01C0F800FFE0003F80017207E9F1C>I<07FC001FFF00380F807007C0F807E0FC07E0FC
+07E0FC07E07807E0000FC0001F80001F00003C0000780000700000E00000E00000C00000C00000
+C00000C00000C00000C00000000000000000000000000000000001C00003E00007F00007F00007
+F00003E00001C00013237DA21A>63 D<000070000000007000000000F800000000F800000000F8
+00000001FC00000001FC00000003FE00000003FE00000003FE00000006FF000000067F0000000E
+7F8000000C3F8000000C3F800000183FC00000181FC00000381FE00000300FE00000300FE00000
+600FF000006007F00000E007F80000FFFFF80000FFFFF800018001FC00018001FC00038001FE00
+030000FE00030000FE000600007F000600007F00FFE00FFFF8FFE00FFFF825227EA12A>65
+D<FFFFFF8000FFFFFFE00007F001F80007F000FC0007F0007E0007F0007E0007F0007F0007F000
+7F0007F0007F0007F0007F0007F0007F0007F0007E0007F000FE0007F000FC0007F003F80007FF
+FFF00007FFFFF00007F001FC0007F0007E0007F0003F0007F0003F8007F0001F8007F0001FC007
+F0001FC007F0001FC007F0001FC007F0001FC007F0001FC007F0003F8007F0003F8007F0007F00
+07F001FE00FFFFFFF800FFFFFFC00022227EA128>I<0003FE0080001FFF818000FF01E38001F8
+003F8003E0001F8007C0000F800F800007801F800007803F000003803F000003807F000001807E
+000001807E00000180FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000
+FE00000000FE000000007E000000007E000001807F000001803F000001803F000003801F800003
+000F8000030007C000060003F0000C0001F800380000FF00F000001FFFC0000003FE000021227D
+A128>I<FFFFFF8000FFFFFFF00007F003FC0007F0007E0007F0003F0007F0001F8007F0000FC0
+07F00007E007F00007E007F00007F007F00003F007F00003F007F00003F007F00003F807F00003
+F807F00003F807F00003F807F00003F807F00003F807F00003F807F00003F807F00003F807F000
+03F007F00003F007F00003F007F00007E007F00007E007F0000FC007F0001F8007F0003F0007F0
+007E0007F003FC00FFFFFFF000FFFFFF800025227EA12B>I<FFFFFFFCFFFFFFFC07F000FC07F0
+003C07F0001C07F0000C07F0000E07F0000E07F0000607F0180607F0180607F0180607F0180007
+F0380007F0780007FFF80007FFF80007F0780007F0380007F0180007F0180007F0180307F01803
+07F0000307F0000607F0000607F0000607F0000E07F0000E07F0001E07F0003E07F001FCFFFFFF
+FCFFFFFFFC20227EA125>I<FFFFFFF8FFFFFFF807F001F807F0007807F0003807F0001807F000
+1C07F0001C07F0000C07F0000C07F0180C07F0180C07F0180007F0180007F0380007F0780007FF
+F80007FFF80007F0780007F0380007F0180007F0180007F0180007F0180007F0000007F0000007
+F0000007F0000007F0000007F0000007F0000007F00000FFFFE000FFFFE0001E227EA123>I<FF
+FF83FFFEFFFF83FFFE07F0001FC007F0001FC007F0001FC007F0001FC007F0001FC007F0001FC0
+07F0001FC007F0001FC007F0001FC007F0001FC007F0001FC007F0001FC007F0001FC007FFFFFF
+C007FFFFFFC007F0001FC007F0001FC007F0001FC007F0001FC007F0001FC007F0001FC007F000
+1FC007F0001FC007F0001FC007F0001FC007F0001FC007F0001FC007F0001FC007F0001FC007F0
+001FC0FFFF83FFFEFFFF83FFFE27227EA12C>72 D<FFFFE0FFFFE003F80003F80003F80003F800
+03F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F800
+03F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F800
+FFFFE0FFFFE013227FA115>I<FFFFE000FFFFE00007F0000007F0000007F0000007F0000007F0
+000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007
+F0000007F0000007F0000007F0000007F0000007F0001807F0001807F0001807F0001807F00038
+07F0003807F0007007F0007007F000F007F001F007F007F0FFFFFFF0FFFFFFF01D227EA122>76
+D<FFF000000FFFFFF800001FFF07F800001FE006FC000037E006FC000037E006FC000037E0067E
+000067E0067E000067E0063F0000C7E0063F0000C7E0061F800187E0061F800187E0060FC00307
+E0060FC00307E0060FC00307E00607E00607E00607E00607E00603F00C07E00603F00C07E00601
+F81807E00601F81807E00601F81807E00600FC3007E00600FC3007E006007E6007E006007E6007
+E006003FC007E006003FC007E006001F8007E006001F8007E006001F8007E006000F0007E0FFF0
+0F00FFFFFFF00600FFFF30227EA135>I<0007FC0000003FFF800000FC07E00003F001F80007E0
+00FC000FC0007E001F80003F001F80003F003F00001F803F00001F807F00001FC07E00000FC07E
+00000FC0FE00000FE0FE00000FE0FE00000FE0FE00000FE0FE00000FE0FE00000FE0FE00000FE0
+FE00000FE0FE00000FE07E00000FC07F00001FC07F00001FC03F00001F803F80003F801F80003F
+000FC0007E0007E000FC0003F001F80000FC07E000003FFF80000007FC000023227DA12A>79
+D<FFFFFF00FFFFFFE007F007F007F001FC07F000FC07F0007E07F0007E07F0007F07F0007F07F0
+007F07F0007F07F0007F07F0007E07F0007E07F000FC07F001FC07F007F007FFFFE007FFFF0007
+F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F00000
+07F0000007F0000007F00000FFFF8000FFFF800020227EA126>I<FFFFFE0000FFFFFFC00007F0
+07F00007F001F80007F000FC0007F0007E0007F0007F0007F0007F0007F0007F0007F0007F0007
+F0007F0007F0007F0007F0007E0007F000FC0007F001F80007F007F00007FFFFC00007FFFF8000
+07F00FE00007F007F00007F003F80007F001FC0007F001FC0007F001FC0007F001FC0007F001FC
+0007F001FC0007F001FC0007F001FC0007F001FC0607F000FE0607F000FF0CFFFF803FF8FFFF80
+0FF027227EA12A>82 D<01FC0407FF8C1F03FC3C007C7C003C78001C78001CF8000CF8000CFC00
+0CFC0000FF0000FFE0007FFF007FFFC03FFFF01FFFF80FFFFC03FFFE003FFE0003FF00007F0000
+3F00003FC0001FC0001FC0001FE0001EE0001EF0003CFC003CFF00F8C7FFE080FF8018227DA11F
+>I<7FFFFFFF807FFFFFFF807E03F80F807803F807807003F803806003F80180E003F801C0E003
+F801C0C003F800C0C003F800C0C003F800C0C003F800C00003F800000003F800000003F8000000
+03F800000003F800000003F800000003F800000003F800000003F800000003F800000003F80000
+0003F800000003F800000003F800000003F800000003F800000003F800000003F800000003F800
+000003F8000003FFFFF80003FFFFF80022227EA127>I<FFFF803FFCFFFF803FFC07F000018007
+F000018007F000018007F000018007F000018007F000018007F000018007F000018007F0000180
+07F000018007F000018007F000018007F000018007F000018007F000018007F000018007F00001
+8007F000018007F000018007F000018007F000018007F000018007F000018007F000018003F000
+030003F800030001F800060000FC000E00007E001C00003F80F800000FFFE0000001FF00002622
+7EA12B>I<FFFF0FFFF01FFEFFFF0FFFF01FFE0FF000FF0000E007F0007F0000C007F0007F0000
+C003F8007F80018003F8003F80018003FC003F80038001FC003FC0030001FC003FC0030000FE00
+7FE0060000FE006FE0060000FF006FE00600007F00C7F00C00007F00C7F00C00007F80C7F81C00
+003F8183F81800003F8183F81800001FC383FC3000001FC301FC3000001FE301FC3000000FE600
+FE6000000FE600FE6000000FF600FFE0000007FC007FC0000007FC007FC0000003FC007F800000
+03F8003F80000003F8003F80000001F0001F00000001F0001F00000000F0001E00000000E0000E
+00000000E0000E000037227FA13A>87 D<0400400E00E0180180380380300300600600600600E0
+0E00C00C00C00C00DC0DC0FE0FE0FF0FF0FF0FF07F07F03E03E01C01C014117AA21D>92
+D<07FC001FFF803F07C03F03E03F01E03F01F01E01F00001F00001F0003FF003FDF01FC1F03F01
+F07E01F0FC01F0FC01F0FC01F0FC01F07E02F07E0CF81FF87F07E03F18167E951B>97
+D<FF000000FF0000001F0000001F0000001F0000001F0000001F0000001F0000001F0000001F00
+00001F0000001F0000001F0000001F0FE0001F3FF8001FF07C001F801E001F001F001F000F801F
+000F801F000FC01F000FC01F000FC01F000FC01F000FC01F000FC01F000FC01F000FC01F000F80
+1F001F801F801F001FC03E001EE07C001C3FF800180FC0001A237EA21F>I<00FF8007FFE00F83
+F01F03F03E03F07E03F07C01E07C0000FC0000FC0000FC0000FC0000FC0000FC00007C00007E00
+007E00003E00301F00600FC0E007FF8000FE0014167E9519>I<0001FE000001FE0000003E0000
+003E0000003E0000003E0000003E0000003E0000003E0000003E0000003E0000003E0000003E00
+01FC3E0007FFBE000F81FE001F007E003E003E007E003E007C003E00FC003E00FC003E00FC003E
+00FC003E00FC003E00FC003E00FC003E00FC003E007C003E007C003E003E007E001E00FE000F83
+BE0007FF3FC001FC3FC01A237EA21F>I<00FE0007FF800F87C01E01E03E01F07C00F07C00F8FC
+00F8FC00F8FFFFF8FFFFF8FC0000FC0000FC00007C00007C00007E00003E00181F00300FC07003
+FFC000FF0015167E951A>I<003F8000FFC001E3E003C7E007C7E00F87E00F83C00F80000F8000
+0F80000F80000F80000F8000FFFC00FFFC000F80000F80000F80000F80000F80000F80000F8000
+0F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80007FF8007FF800
+13237FA211>I<03FC1E0FFF7F1F0F8F3E07CF3C03C07C03E07C03E07C03E07C03E07C03E03C03
+C03E07C01F0F801FFF0013FC003000003000003800003FFF801FFFF00FFFF81FFFFC3800FC7000
+3EF0001EF0001EF0001EF0001E78003C7C007C3F01F80FFFE001FF0018217E951C>I<FF000000
+FF0000001F0000001F0000001F0000001F0000001F0000001F0000001F0000001F0000001F0000
+001F0000001F0000001F07E0001F1FF8001F307C001F403C001F803E001F803E001F003E001F00
+3E001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F
+003E001F003E001F003E00FFE1FFC0FFE1FFC01A237EA21F>I<1C003E007F007F007F003E001C
+000000000000000000000000000000FF00FF001F001F001F001F001F001F001F001F001F001F00
+1F001F001F001F001F001F001F001F00FFE0FFE00B247EA310>I<FF000000FF0000001F000000
+1F0000001F0000001F0000001F0000001F0000001F0000001F0000001F0000001F0000001F0000
+001F00FF801F00FF801F0038001F0060001F01C0001F0380001F0700001F0E00001F1C00001F7E
+00001FFF00001FCF00001F0F80001F07C0001F03E0001F01E0001F01F0001F00F8001F007C001F
+003C00FFE0FFC0FFE0FFC01A237EA21E>107 D<FF00FF001F001F001F001F001F001F001F001F
+001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F00
+1F001F001F001F00FFE0FFE00B237EA210>I<FF07F007F000FF1FFC1FFC001F303E303E001F40
+3E403E001F801F801F001F801F801F001F001F001F001F001F001F001F001F001F001F001F001F
+001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F00
+1F001F001F001F001F001F001F001F001F001F001F00FFE0FFE0FFE0FFE0FFE0FFE02B167E9530
+>I<FF07E000FF1FF8001F307C001F403C001F803E001F803E001F003E001F003E001F003E001F
+003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E00
+1F003E00FFE1FFC0FFE1FFC01A167E951F>I<00FE0007FFC00F83E01E00F03E00F87C007C7C00
+7C7C007CFC007EFC007EFC007EFC007EFC007EFC007EFC007E7C007C7C007C3E00F81F01F00F83
+E007FFC000FE0017167E951C>I<FF0FE000FF3FF8001FF07C001F803E001F001F001F001F801F
+001F801F000FC01F000FC01F000FC01F000FC01F000FC01F000FC01F000FC01F000FC01F001F80
+1F001F801F803F001FC03E001FE0FC001F3FF8001F0FC0001F0000001F0000001F0000001F0000
+001F0000001F0000001F0000001F000000FFE00000FFE000001A207E951F>I<FE1F00FE3FC01E
+67E01EC7E01E87E01E87E01F83C01F00001F00001F00001F00001F00001F00001F00001F00001F
+00001F00001F00001F00001F0000FFF000FFF00013167E9517>114 D<0FF3003FFF00781F0060
+0700E00300E00300F00300FC00007FE0007FF8003FFE000FFF0001FF00000F80C00780C00380E0
+0380E00380F00700FC0E00EFFC00C7F00011167E9516>I<018000018000018000018000038000
+0380000780000780000F80003F8000FFFF00FFFF000F80000F80000F80000F80000F80000F8000
+0F80000F80000F80000F80000F80000F81800F81800F81800F81800F81800F830007C30003FE00
+00F80011207F9F16>I<FF01FE00FF01FE001F003E001F003E001F003E001F003E001F003E001F
+003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E00
+1F007E001F00FE000F81BE0007FF3FC001FC3FC01A167E951F>I<FFE01FE0FFE01FE00F800600
+0F8006000FC00E0007C00C0007E01C0003E0180003E0180001F0300001F0300000F8600000F860
+00007CC000007CC000007FC000003F8000003F8000001F0000001F0000000E0000000E00001B16
+7F951E>I<FFE7FF07F8FFE7FF07F81F007800C00F807801800F807C01800F807C018007C07E03
+0007C0DE030007E0DE070003E0DF060003E18F060001F18F0C0001F38F8C0001FB079C0000FB07
+D80000FE03D800007E03F000007E03F000007C01F000003C01E000003800E000001800C0002516
+7F9528>I<FFE07FC0FFE07FC00F801C0007C0380003E0700003F0600001F8C00000F98000007F
+8000003F0000001F0000001F8000003FC0000037C0000063E00000C1F00001C0F8000380FC0007
+007E000E003E00FF80FFE0FF80FFE01B167F951E>I<FFE01FE0FFE01FE00F8006000F8006000F
+C00E0007C00C0007E01C0003E0180003E0180001F0300001F0300000F8600000F86000007CC000
+007CC000007FC000003F8000003F8000001F0000001F0000000E0000000E0000000C0000000C00
+000018000078180000FC380000FC300000FC60000069C000007F8000001F0000001B207F951E>
+I<7FFFF07FFFF07C03E07007C0600FC0E01F80C01F00C03E00C07E0000FC0000F80001F00003F0
+3007E03007C0300F80701F80703F00603E00E07C03E0FFFFE0FFFFE014167E9519>I
+E /Fk 44 127 df<E038F078F078F078F078F078F078F078E038E03860300D0B7C9816>34
+D<00C00001C00001C00001C00007F0001FFC003FFE007DCF0071C780E1C380E1C780E1C780F1C3
+0079C0003FC0001FF00007FC0001FE0001CF0001C70061C380F1C380F1C380E1C38071C70079DF
+003FFE001FF80007E00001C00001C00000C00011207E9C16>36 D<00E001E0038007000E001C00
+1C0038003800700070007000E000E000E000E000E000E000E000E000E000700070007000380038
+001C001C000E000700038001E000E00B217A9C16>40 D<C000E000700038001C000E000E000700
+070003800380038001C001C001C001C001C001C001C001C001C0038003800380070007000E000E
+001C0038007000E000C0000A217B9C16>I<FFFF80FFFF80FFFF8011037E8D16>45
+D<70F8F8F8700505788416>I<000180000380000380000700000700000E00000E00001C00001C
+0000380000380000700000700000E00000E00001C00001C0000380000380000700000700000E00
+000E00001C00001C0000380000380000700000700000E00000E00000C0000011207E9C16>I<03
+E0000FF8001FFC001E3C00380E00780F00700700700700E00380E00380E00380E00380E00380E0
+0380E00380E00380F00780700700700700780F003C1E001E3C001FFC000FF80003E00011197E98
+16>I<70F8F8F870000000000000000070F8F8F8700512789116>58 D<7FFF00FFFF80FFFF8000
+0000000000000000000000000000FFFF80FFFF807FFF00110B7E9116>61
+D<00F80003FC0007FE000F07001C3F80387F8078FF8071C3C071C3C0E381C0E381C0E381C0E381
+C0E381C0E381C0E381C071C38071C38078FF00387E001C3C000F03C007FFC003FF0000FC001219
+7E9816>64 D<00E00001F00001F00001B00001B00003B80003B80003B800031800071C00071C00
+071C00071C00071C000E0E000E0E000FFE000FFE001FFF001C07001C07001C07007F1FC0FF1FE0
+7F1FC013197F9816>I<7FFFC0FFFFC07FFFC01C01C01C01C01C01C01C01C01C00001C00001C1C
+001C1C001FFC001FFC001FFC001C1C001C1C001C00001C00E01C00E01C00E01C00E01C00E07FFF
+E0FFFFE07FFFE013197F9816>69 D<7F1FC0FFBFE07F1FC01C07001C07001C07001C07001C0700
+1C07001C07001FFF001FFF001FFF001C07001C07001C07001C07001C07001C07001C07001C0700
+1C07007F1FC0FFBFE07F1FC013197F9816>72 D<FC07E0FE0FE0FE0FE03A0B803B1B803B1B803B
+1B803B1B803B1B803BBB8039B38039B38039B38039B38039F38038E38038E38038038038038038
+0380380380380380FE0FE0FE0FE0FE0FE013197F9816>77 D<7FE000FFF8007FFC001C1E001C0F
+001C07001C07001C07001C07001C0F001C1E001FFC001FF8001FFC001C1C001C0E001C0E001C0E
+001C0E001C0E201C0E701C0E707F07E0FF87E07F03C014197F9816>82 D<07E3001FFF003FFF00
+781F00F00700E00700E00700E00000F000007800003F80001FF00007FC0000FE00000F00000700
+000380000380600380E00380E00700F80F00FFFE00FFFC00C7F00011197E9816>I<7F07F0FF8F
+F87F07F01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01
+C01C01C01C01C01C01C01C01C00E03800E038007070007FF0003FE0000F8001519809816>85
+D<FE0FE0FF1FE0FE0FE01C07001C07000E0E000E0E00071C00071C00071C0003B80003B80001F0
+0001F00000E00000E00000E00000E00000E00000E00000E00000E00003F80007FC0003F8001319
+7F9816>89 D<1FE0003FF0007FF800783C00300E00000E00000E0003FE001FFE003E0E00700E00
+E00E00E00E00E00E00783E007FFFE03FE7E00F83E013127E9116>97 D<7E0000FE00007E00000E
+00000E00000E00000E00000E3E000EFF000FFF800F83C00F00E00E00E00E00700E00700E00700E
+00700E00700E00700E00E00F01E00F83C00FFF800EFF00063C001419809816>I<03F80FFC1FFE
+3C1E780C7000E000E000E000E000E000F000700778073E0E1FFC0FF803F010127D9116>I<003F
+00007F00003F0000070000070000070000070003C7000FF7001FFF003C1F00780F00700700E007
+00E00700E00700E00700E00700E00700700F00700F003C1F001FFFE00FE7F007C7E014197F9816
+>I<03E00FF81FFC3C1E780E7007E007FFFFFFFFFFFFE000E000700778073C0F1FFE0FFC03F010
+127D9116>I<001F00007F8000FF8001E78001C30001C00001C0007FFF00FFFF00FFFF0001C000
+01C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C0003FFE007FFF00
+3FFE0011197F9816>I<03E3C007F7E00FFFE01C1CC0380E00380E00380E00380E00380E001C1C
+000FF8001FF0001BE0003800001800001FFC001FFF003FFF807803C0E000E0E000E0E000E0E000
+E07001C07C07C03FFF800FFE0003F800131C7F9116>I<7E0000FE00007E00000E00000E00000E
+00000E00000E3C000EFE000FFF000F87800F03800E03800E03800E03800E03800E03800E03800E
+03800E03800E03800E03807FC7F0FFE7F87FC7F01519809816>I<018003C003C0018000000000
+000000007FC07FC07FC001C001C001C001C001C001C001C001C001C001C001C001C07FFFFFFF7F
+FF101A7D9916>I<7E0000FE00007E00000E00000E00000E00000E00000E7FE00E7FE00E7FE00E
+0F000E1E000E3C000E78000EF0000FF0000FF8000FBC000F1E000E0E000E07000E07807F87F0FF
+CFF07F87F01419809816>107 D<FFC000FFC000FFC00001C00001C00001C00001C00001C00001
+C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001
+C000FFFF80FFFF80FFFF8011197E9816>I<F9C380FFEFC0FFFFE03C78E03C78E03870E03870E0
+3870E03870E03870E03870E03870E03870E03870E03870E0FE7CF8FE7CF8FE3C781512809116>
+I<7E3C00FEFE007FFF000F87800F03800E03800E03800E03800E03800E03800E03800E03800E03
+800E03800E03807FC7F0FFE7F87FC7F01512809116>I<03E0000FF8001FFC003C1E00780F0070
+0700E00380E00380E00380E00380E00380F00780700700780F003C1E001FFC000FF80003E00011
+127E9116>I<7E3E00FEFF007FFF800F83C00F00E00E00E00E00700E00700E00700E00700E0070
+0E00700E00E00F01E00F83C00FFF800EFF000E3C000E00000E00000E00000E00000E00000E0000
+7FC000FFE0007FC000141B809116>I<FF0FC0FF3FE0FF7FE007F04007C0000780000780000700
+00070000070000070000070000070000070000070000FFFC00FFFC00FFFC0013127F9116>114
+D<0FEC3FFC7FFCF03CE01CE01C70007F801FF007F8003C600EE00EF00EF81EFFFCFFF8C7E00F12
+7D9116>I<0300000700000700000700000700007FFF00FFFF00FFFF0007000007000007000007
+000007000007000007000007010007038007038007038007870003FE0001FC0000F80011177F96
+16>I<7E1F80FE3F807E1F800E03800E03800E03800E03800E03800E03800E03800E03800E0380
+0E03800E03800E0F800FFFF007FBF803E3F01512809116>I<7F1FC0FF1FE07F1FC01C07001E0F
+000E0E000E0E000E0E00071C00071C00071C00071C0003B80003B80003B80001F00001F00000E0
+0013127F9116>I<FF1FE0FFBFE0FF1FE038038038038038038038038038E38019F30019F30019
+B3001DB7001DB7001DB7001DB7000F1E000F1E000F1E0013127F9116>I<7F1FC07F3FC07F1FC0
+0F1C00073C0003B80003F00001F00000E00001E00001F00003B800073C00071C000E0E007F1FC0
+FF3FE07F1FC013127F9116>I<7F1FC0FF9FE07F1FC01C07000E07000E0E000E0E00070E00071C
+00071C00039C00039C0003980001B80001B80000F00000F00000F00000E00000E00000E00001C0
+0079C0007BC0007F80003F00003C0000131B7F9116>I<3FFFC07FFFC07FFFC0700780700F0070
+1E00003C0000780001F00003E0000780000F00001E01C03C01C07801C0FFFFC0FFFFC0FFFFC012
+127F9116>I<1C303F78FFF8F7E061C00D057C9816>126 D E /Fl 86 125
+df<007E1F0001C1B1800303E3C00703C3C00E03C1800E01C0000E01C0000E01C0000E01C0000E
+01C0000E01C000FFFFFC000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C000
+0E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0007F87FC
+001A1D809C18>11 D<007E0001C1800301800703C00E03C00E01800E00000E00000E00000E0000
+0E0000FFFFC00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C0
+0E01C00E01C00E01C00E01C00E01C07F87F8151D809C17>I<007FC001C1C00303C00703C00E01
+C00E01C00E01C00E01C00E01C00E01C00E01C0FFFFC00E01C00E01C00E01C00E01C00E01C00E01
+C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C07FCFF8151D809C17
+>I<003F07E00001C09C18000380F018000701F03C000E01E03C000E00E018000E00E000000E00
+E000000E00E000000E00E000000E00E00000FFFFFFFC000E00E01C000E00E01C000E00E01C000E
+00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C00
+0E00E01C000E00E01C000E00E01C000E00E01C000E00E01C007FC7FCFF80211D809C23>I<C0C0
+61803F000C000A047B9915>20 D<60F0F0F0F0F0F0F06060606060606060606060606000000000
+0060F0F060041E7C9D0C>33 D<6060F0F0F8F86868080808080808101010102020404080800D0C
+7F9C15>I<0080008007E01898308460824081C087C08FC08FC086E080F0807E803FC01FF00FF8
+03FC00BE008E00876087F083F083E0838082408240842088189007E00080008010217E9E15>36
+D<00E0000001900000030800000308000007080000070800000708000007080000071000000710
+0000072000000740000003C03FE003800F00038006000380040005C0040009C0080010E0100030
+E010006070200060702000E0384000E03C4000E01C8000E00F0020E0070020700780403009C040
+1830E18007C03E001B1F7E9D20>38 D<60F0F8680808081010204080050C7C9C0C>I<00400080
+0100020006000C000C0018001800300030007000600060006000E000E000E000E000E000E000E0
+00E000E000E000E000E000600060006000700030003000180018000C000C000600020001000080
+00400A2A7D9E10>I<800040002000100018000C000C0006000600030003000380018001800180
+01C001C001C001C001C001C001C001C001C001C001C001C0018001800180038003000300060006
+000C000C00180010002000400080000A2A7E9E10>I<60F0F0701010101020204080040C7C830C>
+44 D<FFE0FFE00B0280890E>I<60F0F06004047C830C>I<00010003000600060006000C000C00
+0C0018001800180030003000300060006000C000C000C001800180018003000300030006000600
+0C000C000C00180018001800300030003000600060006000C000C00010297E9E15>I<03C00C30
+1818300C300C700E60066006E007E007E007E007E007E007E007E007E007E007E007E007E00760
+066006700E300C300C18180C3007E0101D7E9B15>I<030007003F00C700070007000700070007
+00070007000700070007000700070007000700070007000700070007000700070007000F80FFF8
+0D1C7C9B15>I<07C01830201C400C400EF00FF80FF807F8077007000F000E000E001C001C0038
+0070006000C00180030006010C01180110023FFE7FFEFFFE101C7E9B15>I<07E01830201C201C
+781E780E781E381E001C001C00180030006007E00030001C001C000E000F000F700FF80FF80FF8
+0FF00E401C201C183007E0101D7E9B15>I<000C00000C00001C00003C00003C00005C0000DC00
+009C00011C00031C00021C00041C000C1C00081C00101C00301C00201C00401C00C01C00FFFFC0
+001C00001C00001C00001C00001C00001C00001C0001FFC0121C7F9B15>I<300C3FF83FF03FC0
+20002000200020002000200023E024302818301C200E000E000F000F000F600FF00FF00FF00F80
+0E401E401C2038187007C0101D7E9B15>I<00F0030C06040C0E181E301E300C700070006000E3
+E0E430E818F00CF00EE006E007E007E007E007E007600760077006300E300C18180C3003E0101D
+7E9B15>I<4000007FFF807FFF007FFF0040020080040080040080080000100000100000200000
+600000400000C00000C00001C00001800001800003800003800003800003800007800007800007
+8000078000078000078000030000111D7E9B15>I<03E00C301008200C20066006600660067006
+780C3E083FB01FE007F007F818FC307E601E600FC007C003C003C003C00360026004300C1C1007
+E0101D7E9B15>I<03C00C301818300C700C600EE006E006E007E007E007E007E0076007700F30
+0F18170C2707C700060006000E300C780C78187010203030C00F80101D7E9B15>I<60F0F06000
+00000000000000000060F0F06004127C910C>I<60F0F0600000000000000000000060F0F07010
+10101020204080041A7C910C>I<7FFFFFC0FFFFFFE00000000000000000000000000000000000
+000000000000000000000000000000FFFFFFE07FFFFFC01B0C7E8F20>61
+D<003F800000C0600003001800040004000800020010000100201F00802070808040E0404040C0
+384041C038408180382083803820838038208380382083803820838038208180382041C0382040
+C0384040E0784020709880201F0F00100000000800000004000000030001E000C01F80003FF000
+1B1D7E9C20>64 D<000600000006000000060000000F0000000F0000000F000000178000001780
+00001780000023C0000023C0000023C0000041E0000041E0000041E0000080F0000080F0000180
+F8000100780001FFF80003007C0002003C0002003C0006003E0004001E0004001E000C001F001E
+001F00FF80FFF01C1D7F9C1F>I<FFFFC00F00F00F00380F003C0F001C0F001E0F001E0F001E0F
+001E0F001C0F003C0F00780F01F00FFFE00F00780F003C0F001E0F000E0F000F0F000F0F000F0F
+000F0F000F0F001E0F001E0F003C0F0078FFFFE0181C7E9B1D>I<001F808000E0618001801980
+070007800E0003801C0003801C00018038000180780000807800008070000080F0000000F00000
+00F0000000F0000000F0000000F0000000F0000000F00000007000008078000080780000803800
+00801C0001001C0001000E000200070004000180080000E03000001FC000191E7E9C1E>I<FFFF
+C0000F00F0000F003C000F000E000F0007000F0007000F0003800F0003C00F0001C00F0001C00F
+0001E00F0001E00F0001E00F0001E00F0001E00F0001E00F0001E00F0001E00F0001C00F0001C0
+0F0003C00F0003800F0007800F0007000F000E000F001C000F007000FFFFC0001B1C7E9B20>I<
+FFFFFC0F003C0F000C0F00040F00040F00060F00020F00020F02020F02000F02000F02000F0600
+0FFE000F06000F02000F02000F02000F02010F00010F00020F00020F00020F00060F00060F000C
+0F003CFFFFFC181C7E9B1C>I<FFFFF80F00780F00180F00080F00080F000C0F00040F00040F02
+040F02000F02000F02000F06000FFE000F06000F02000F02000F02000F02000F00000F00000F00
+000F00000F00000F00000F00000F8000FFF800161C7E9B1B>I<001F808000E061800180198007
+0007800E0003801C0003801C00018038000180780000807800008070000080F0000000F0000000
+F0000000F0000000F0000000F0000000F000FFF0F0000F80700007807800078078000780380007
+801C0007801C0007800E00078007000B800180118000E06080001F80001C1E7E9C21>I<FFF3FF
+C00F003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C000F00
+3C000F003C000F003C000FFFFC000F003C000F003C000F003C000F003C000F003C000F003C000F
+003C000F003C000F003C000F003C000F003C000F003C000F003C00FFF3FFC01A1C7E9B1F>I<FF
+F00F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F00
+0F000F000F000F000F000F000F00FFF00C1C7F9B0F>I<1FFF00F8007800780078007800780078
+00780078007800780078007800780078007800780078007800787078F878F878F878F0F040E021
+C01F00101D7F9B15>I<FFF03FE00F000F000F000C000F0008000F0010000F0020000F0040000F
+0080000F0100000F0200000F0400000F0E00000F1F00000F2F00000F2780000F4780000F83C000
+0F01E0000F01E0000F00F0000F00F8000F0078000F003C000F003C000F001E000F001F000F001F
+80FFF07FF01C1C7E9B20>I<FFF8000F80000F00000F00000F00000F00000F00000F00000F0000
+0F00000F00000F00000F00000F00000F00000F00000F00000F00000F00080F00080F00080F0018
+0F00180F00100F00300F00700F01F0FFFFF0151C7E9B1A>I<FF8000FF800F8000F8000F8000F8
+000BC00178000BC00178000BC001780009E002780009E002780008F004780008F004780008F004
+7800087808780008780878000878087800083C107800083C107800083C107800081E207800081E
+207800081E207800080F407800080F40780008078078000807807800080780780008030078001C
+03007800FF8307FF80211C7E9B26>I<FF007FC00F800E000F8004000BC0040009E0040009E004
+0008F0040008F8040008780400083C0400083C0400081E0400080F0400080F0400080784000807
+C4000803C4000801E4000801E4000800F40008007C0008007C0008003C0008003C0008001C0008
+000C001C000C00FF8004001A1C7E9B1F>I<003F800000E0E0000380380007001C000E000E001C
+0007003C00078038000380780003C0780003C0700001C0F00001E0F00001E0F00001E0F00001E0
+F00001E0F00001E0F00001E0F00001E0700001C0780003C0780003C0380003803C0007801C0007
+000E000E0007001C000380380000E0E000003F80001B1E7E9C20>I<FFFF800F00E00F00780F00
+3C0F001C0F001E0F001E0F001E0F001E0F001E0F001C0F003C0F00780F00E00FFF800F00000F00
+000F00000F00000F00000F00000F00000F00000F00000F00000F00000F0000FFF000171C7E9B1C
+>I<FFFF00000F01E0000F0078000F003C000F001C000F001E000F001E000F001E000F001E000F
+001C000F003C000F0078000F01E0000FFF00000F03C0000F00E0000F00F0000F0078000F007800
+0F0078000F0078000F0078000F0078000F0078100F0078100F0038100F003C20FFF01C20000007
+C01C1D7E9B1F>82 D<07E0801C1980300580700380600180E00180E00080E00080E00080F00000
+F800007C00007FC0003FF8001FFE0007FF0000FF80000F800007C00003C00001C08001C08001C0
+8001C0C00180C00180E00300D00200CC0C0083F800121E7E9C17>I<7FFFFFC0700F01C0600F00
+C0400F0040400F0040C00F0020800F0020800F0020800F0020000F0000000F0000000F0000000F
+0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F000000
+0F0000000F0000000F0000000F0000001F800003FFFC001B1C7F9B1E>I<FFF07FC00F000E000F
+0004000F0004000F0004000F0004000F0004000F0004000F0004000F0004000F0004000F000400
+0F0004000F0004000F0004000F0004000F0004000F0004000F0004000F0004000F0004000F0004
+000700080007800800038010000180100000C020000070C000001F00001A1D7E9B1F>I<FFE00F
+F01F0003C00F0001800F0001000F800300078002000780020003C0040003C0040003C0040001E0
+080001E0080001F0080000F0100000F0100000F830000078200000782000003C4000003C400000
+3C4000001E8000001E8000001F8000000F0000000F00000006000000060000000600001C1D7F9B
+1F>I<FFE0FFE0FF1F001F003C1E001E00180F001F00100F001F00100F001F001007801F002007
+80278020078027802003C027804003C043C04003C043C04003E043C04001E081E08001E081E080
+01E081E08000F100F10000F100F10000F100F100007900FA00007A007A00007A007A00003E007C
+00003C003C00003C003C00003C003C00001800180000180018000018001800281D7F9B2B>I<7F
+F0FFC00FC03E000780180003C0180003E0100001E0200001F0600000F0400000788000007D8000
+003D0000001E0000001F0000000F0000000F8000000F80000013C0000023E0000021E0000041F0
+0000C0F8000080780001007C0003003C0002001E0006001F001F003F80FFC0FFF01C1C7F9B1F>
+I<FFF007FC0F8001E00780008007C0018003C0010003E0020001F0020000F0040000F804000078
+0800007C1800003C1000001E2000001F2000000F4000000FC00000078000000780000007800000
+07800000078000000780000007800000078000000780000007800000078000007FF8001E1C809B
+1F>I<7FFFF07C01F07001E06003C06003C0400780400F80400F00401E00001E00003C00007C00
+00780000F00000F00001E00003E00003C0100780100780100F00101F00301E00203C00203C0060
+7800E0F803E0FFFFE0141C7E9B19>I<FEFEC0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0FEFE07297C9E0C>I<0808101020204040404080808080
+8080B0B0F8F8787830300D0C7A9C15>I<FEFE0606060606060606060606060606060606060606
+0606060606060606060606060606060606FEFE0729809E0C>I<1FC000307000783800781C0030
+1C00001C00001C0001FC000F1C00381C00701C00601C00E01C40E01C40E01C40603C40304E801F
+870012127E9115>97 D<FC00001C00001C00001C00001C00001C00001C00001C00001C00001C00
+001C00001C7C001D86001E03001C01801C01C01C00C01C00E01C00E01C00E01C00E01C00E01C00
+E01C00C01C01C01C01801E030019060010F800131D7F9C17>I<07E00C301878307870306000E0
+00E000E000E000E000E00060007004300418080C3007C00E127E9112>I<003F00000700000700
+00070000070000070000070000070000070000070000070003E7000C1700180F00300700700700
+600700E00700E00700E00700E00700E00700E00700600700700700300700180F000C370007C7E0
+131D7E9C17>I<03E00C301818300C700E6006E006FFFEE000E000E000E0006000700230021804
+0C1803E00F127F9112>I<00F8018C071E061E0E0C0E000E000E000E000E000E00FFE00E000E00
+0E000E000E000E000E000E000E000E000E000E000E000E000E000E007FE00F1D809C0D>I<0003
+8003C4C00C38C01C3880181800381C00381C00381C00381C001818001C38000C300013C0001000
+003000001800001FF8001FFF001FFF803003806001C0C000C0C000C0C000C06001803003001C0E
+0007F800121C7F9215>I<FC00001C00001C00001C00001C00001C00001C00001C00001C00001C
+00001C00001C7C001C87001D03001E03801C03801C03801C03801C03801C03801C03801C03801C
+03801C03801C03801C03801C03801C0380FF9FF0141D7F9C17>I<18003C003C00180000000000
+00000000000000000000FC001C001C001C001C001C001C001C001C001C001C001C001C001C001C
+001C001C00FF80091D7F9C0C>I<00C001E001E000C000000000000000000000000000000FE000
+E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E0
+60E0F0C0F1C061803E000B25839C0D>I<FC00001C00001C00001C00001C00001C00001C00001C
+00001C00001C00001C00001C3FC01C0F001C0C001C08001C10001C20001C40001CE0001DE0001E
+70001C78001C38001C3C001C1C001C0E001C0F001C0F80FF9FE0131D7F9C16>I<FC001C001C00
+1C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C
+001C001C001C001C001C00FF80091D7F9C0C>I<FC7E07E0001C838838001D019018001E01E01C
+001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C0
+1C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C00FF8FF8FF8021127F9124>I<
+FC7C001C87001D03001E03801C03801C03801C03801C03801C03801C03801C03801C03801C0380
+1C03801C03801C03801C0380FF9FF014127F9117>I<03F0000E1C001806003003007003806001
+80E001C0E001C0E001C0E001C0E001C0E001C06001807003803003001806000E1C0003F0001212
+7F9115>I<FC7C001D86001E03001C01801C01C01C00C01C00E01C00E01C00E01C00E01C00E01C
+00E01C01C01C01C01C01801E03001D06001CF8001C00001C00001C00001C00001C00001C00001C
+0000FF8000131A7F9117>I<03C1000C3300180B00300F00700700700700E00700E00700E00700
+E00700E00700E00700600700700700300F00180F000C370007C700000700000700000700000700
+000700000700000700003FE0131A7E9116>I<FCE01D301E781E781C301C001C001C001C001C00
+1C001C001C001C001C001C001C00FFC00D127F9110>I<1F9030704030C010C010E010F8007F80
+3FE00FF000F880388018C018C018E010D0608FC00D127F9110>I<04000400040004000C000C00
+1C003C00FFE01C001C001C001C001C001C001C001C001C001C101C101C101C101C100C100E2003
+C00C1A7F9910>I<FC1F801C03801C03801C03801C03801C03801C03801C03801C03801C03801C
+03801C03801C03801C03801C07800C07800E1B8003E3F014127F9117>I<FF07E03C03801C0100
+1C01000E02000E020007040007040007040003880003880003D80001D00001D00000E00000E000
+00E00000400013127F9116>I<FF3FCFE03C0F03801C0701801C0701001C0B01000E0B82000E0B
+82000E1182000711C4000711C4000720C40003A0E80003A0E80003C0680001C0700001C0700001
+803000008020001B127F911E>I<7F8FF00F03800F030007020003840001C80001D80000F00000
+700000780000F800009C00010E00020E000607000403801E07C0FF0FF81512809116>I<FF07E0
+3C03801C01001C01000E02000E020007040007040007040003880003880003D80001D00001D000
+00E00000E00000E000004000004000008000008000F08000F10000F300006600003C0000131A7F
+9116>I<7FFC70386038407040F040E041C003C0038007000F040E041C043C0C380870087038FF
+F80E127F9112>I<FFFFF01401808B15>I<FFFFFFFFFF802901808B2A>I
+E /Fm 42 127 df<00C00000C00007F0001FFC003CCE0070C30060C300E0C780E0CF80E0CF80F0
+CF80F8C700FEC0007FE0007FF8003FFC001FFE000FFF0003FF0000DF8020CF8070C780F8C380F8
+C380F0C380C0C30060C70070C60038DE001FF80007E00000C00000C00011217D9E18>36
+D<FFE0FFE0FFE0FFE00B047F8A10>45 D<000180000380000380000700000700000700000E0000
+0E00001C00001C00001C0000380000380000380000700000700000E00000E00000E00001C00001
+C00001C0000380000380000380000700000700000E00000E00000E00001C00001C00001C000038
+0000380000700000700000700000E00000E00000C0000011297D9E18>47
+D<00600001E0000FE000FFE000F3E00003E00003E00003E00003E00003E00003E00003E00003E0
+0003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E0007FFF
+807FFF80111B7D9A18>49 D<00038000000380000007C0000007C0000007C000000FE000000FE0
+00001FF000001BF000001BF0000031F8000031F8000061FC000060FC0000E0FE0000C07E0000C0
+7E0001803F0001FFFF0003FFFF8003001F8003001F8006000FC006000FC00E000FE00C0007E0FF
+C07FFEFFC07FFE1F1C7E9B24>65 D<FFFFF800FFFFFF000FC01F800FC00FC00FC007C00FC007E0
+0FC007E00FC007E00FC007E00FC007E00FC007C00FC00F800FC03F000FFFFE000FC00F800FC007
+C00FC007E00FC003E00FC003F00FC003F00FC003F00FC003F00FC003F00FC007E00FC007E00FC0
+1FC0FFFFFF00FFFFFC001C1C7E9B22>I<001FE02000FFF8E003F80FE007C003E00F8001E01F00
+00E03E0000E03E0000607E0000607C000060FC000000FC000000FC000000FC000000FC000000FC
+000000FC000000FC0000007C0000607E0000603E0000603E0000C01F0000C00F80018007C00300
+03F80E0000FFFC00001FE0001B1C7D9B22>I<FFFFF800FFFFFF000FC01FC00FC007E00FC001F0
+0FC001F80FC000F80FC000FC0FC0007C0FC0007C0FC0007E0FC0007E0FC0007E0FC0007E0FC000
+7E0FC0007E0FC0007E0FC0007E0FC0007C0FC0007C0FC0007C0FC000F80FC000F80FC001F00FC0
+07E00FC01FC0FFFFFF00FFFFF8001F1C7E9B25>I<FFFFFF00FFFFFF000FC01F000FC007000FC0
+03000FC003800FC003800FC181800FC181800FC181800FC180000FC380000FFF80000FFF80000F
+C380000FC180000FC180000FC180600FC180600FC000E00FC000C00FC000C00FC001C00FC001C0
+0FC003C00FC00F80FFFFFF80FFFFFF801B1C7E9B1F>I<FFFFFFFF07E007E007E007E007E007E0
+07E007E007E007E007E007E007E007E007E007E007E007E007E007E007E007E007E007E0FFFFFF
+FF101C7F9B12>73 D<FFFF00FFFF000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC000
+0FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0030FC0030FC0030FC0070FC0070FC006
+0FC00E0FC01E0FC07EFFFFFEFFFFFE181C7E9B1D>76 D<FFC00003FFFFE00007FF0FE00007F00D
+F0000DF00DF0000DF00DF0000DF00CF80019F00CF80019F00C7C0031F00C7C0031F00C3E0061F0
+0C3E0061F00C1F00C1F00C1F00C1F00C1F00C1F00C0F8181F00C0F8181F00C07C301F00C07C301
+F00C03E601F00C03E601F00C01FC01F00C01FC01F00C01FC01F00C00F801F00C00F801F0FFC070
+1FFFFFC0701FFF281C7E9B2D>I<FFFFF800FFFFFE000FC03F800FC00F800FC007C00FC007E00F
+C007E00FC007E00FC007E00FC007E00FC007C00FC007C00FC00F800FC03F000FFFFC000FC00000
+0FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC000
+00FFFC0000FFFC00001B1C7E9B21>80 D<FFFFF00000FFFFFE00000FC03F00000FC00F80000FC0
+07C0000FC007E0000FC007E0000FC007E0000FC007E0000FC007E0000FC007C0000FC00F80000F
+C03E00000FFFF000000FC07C00000FC03E00000FC03F00000FC01F80000FC01F80000FC01F8000
+0FC01F80000FC01F80000FC01F80000FC01F81800FC01F81800FC00FC180FFFC07C300FFFC01FE
+00211C7E9B24>82 D<07F8201FFEE03C07E07801E07000E0F000E0F00060F00060F80000FE0000
+FFE0007FFE003FFF003FFF800FFFC007FFE0007FE00003F00001F00000F0C000F0C000F0C000E0
+E000E0F001C0FC03C0EFFF0083FC00141C7D9B1B>I<7FFFFFE07FFFFFE0781F81E0701F80E060
+1F8060E01F8070C01F8030C01F8030C01F8030C01F8030001F8000001F8000001F8000001F8000
+001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F80
+00001F8000001F800007FFFE0007FFFE001C1C7E9B21>I<FFFC01FF80FFFC01FF800FC0001800
+07E000300007E000300007F000700003F000600003F800E00001F800C00001FC00C00000FC0180
+0000FC018000007E030000007E030000007F070000003F060000003F8E0000001F8C0000001FCC
+0000000FD80000000FD800000007F000000007F000000007F000000003E000000003E000000001
+C000000001C00000211C7F9B24>86 D<7FFFFC7FFFFC7E01F87803F87003F0E007E0E007E0C00F
+C0C01FC0C01F80003F00007F00007E0000FC0000FC0001F80003F80603F00607E0060FE0060FC0
+0E1F800E1F801C3F001C7F003C7E00FCFFFFFCFFFFFC171C7D9B1D>90 D<0FF8001C1E003E0F80
+3E07803E07C01C07C00007C0007FC007E7C01F07C03C07C07C07C0F807C0F807C0F807C0780BC0
+3E13F80FE1F815127F9117>97 D<FF0000FF00001F00001F00001F00001F00001F00001F00001F
+00001F00001F00001F3F801FE1E01F80701F00781F003C1F003C1F003E1F003E1F003E1F003E1F
+003E1F003E1F003C1F003C1F00781F80701EC1E01C3F00171D7F9C1B>I<03FC000E0E001C1F00
+3C1F00781F00780E00F80000F80000F80000F80000F80000F800007800007801803C01801C0300
+0E0E0003F80011127E9115>I<000FF0000FF00001F00001F00001F00001F00001F00001F00001
+F00001F00001F001F9F00F07F01C03F03C01F07801F07801F0F801F0F801F0F801F0F801F0F801
+F0F801F07801F07801F03C01F01C03F00F0FFE03F9FE171D7E9C1B>I<01FC000F07001C03803C
+01C07801C07801E0F801E0F801E0FFFFE0F80000F80000F800007800007C00603C00601E00C00F
+038001FC0013127F9116>I<007F0001E38003C7C00787C00F87C00F83800F80000F80000F8000
+0F80000F8000FFF800FFF8000F80000F80000F80000F80000F80000F80000F80000F80000F8000
+0F80000F80000F80000F80000F80007FF8007FF800121D809C0F>I<03F8F00E0F381E0F381C07
+303C07803C07803C07803C07801C07001E0F000E0E001BF8001000001800001800001FFF001FFF
+C00FFFE01FFFF07801F8F00078F00078F000787000707800F01E03C007FF00151B7F9118>I<FF
+0000FF00001F00001F00001F00001F00001F00001F00001F00001F00001F00001F0FC01F31E01F
+40F01F80F81F80F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F
+00F8FFE7FFFFE7FF181D7F9C1B>I<1E003F003F003F003F001E00000000000000000000000000
+FF00FF001F001F001F001F001F001F001F001F001F001F001F001F001F001F00FFE0FFE00B1E7F
+9D0E>I<FF0000FF00001F00001F00001F00001F00001F00001F00001F00001F00001F00001F0F
+F81F0FF81F03801F07001F0C001F18001F70001FF8001FFC001FBC001F3E001F1F001F0F001F0F
+801F07C01F03E0FFC7FCFFC7FC161D7F9C19>107 D<FF00FF001F001F001F001F001F001F001F
+001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F00FFE0
+FFE00B1D7F9C0E>I<FF0FC07E00FF31E18F001F40F207801F80FC07C01F80FC07C01F00F807C0
+1F00F807C01F00F807C01F00F807C01F00F807C01F00F807C01F00F807C01F00F807C01F00F807
+C01F00F807C01F00F807C0FFE7FF3FF8FFE7FF3FF825127F9128>I<FF0FC0FF31E01F40F01F80
+F81F80F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F8FFE7
+FFFFE7FF18127F911B>I<01FC000F07801C01C03C01E07800F07800F0F800F8F800F8F800F8F8
+00F8F800F8F800F87800F07800F03C01E01E03C00F078001FC0015127F9118>I<FF3F80FFE1E0
+1F80F01F00781F007C1F003C1F003E1F003E1F003E1F003E1F003E1F003E1F003C1F007C1F0078
+1F80F01FC1E01F3F001F00001F00001F00001F00001F00001F0000FFE000FFE000171A7F911B>
+I<FE3E00FE47001E8F801E8F801E8F801F07001F00001F00001F00001F00001F00001F00001F00
+001F00001F00001F0000FFF000FFF00011127F9114>114 D<1FD830786018E018E018F000FF80
+7FE07FF01FF807FC007CC01CC01CE01CE018F830CFC00E127E9113>I<03000300030003000700
+07000F000F003FFCFFFC1F001F001F001F001F001F001F001F001F001F0C1F0C1F0C1F0C0F0807
+9803F00E1A7F9913>I<FF07F8FF07F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00
+F81F00F81F00F81F00F81F00F81F01F80F01F80786FF01F8FF18127F911B>I<FFC1FCFFC1FC1F
+00601F80E00F80C00FC0C007C18007C18003E30003E30001F60001F60001FE0000FC0000FC0000
+780000780000300016127F9119>I<FFC7FCFFC7FC1F81800F838007C70003EE0001FC0001F800
+00F800007C0000FE0001DF00039F00070F800607C00C03E0FF07FCFF07FC16127F9119>120
+D<FFC1FCFFC1FC1F00601F80E00F80C00FC0C007C18007C18003E30003E30001F70001F60000FE
+0000FC0000FC00007800007800003000003000007000706000F86000F8C000F980007300003E00
+00161A7F9119>I<3FFF803C1F00303F00303E00607C0060FC0060F80001F00003F00007E00007
+C1800F81801F81801F03803E03007E07007C0F00FFFF0011127F9115>I<1E023FFC7FF880F00F
+047C9C18>126 D E /Fn 32 123 df<0E1E1E1E1E02020404080810204080070F7D840F>44
+D<0000030000000300000007000000070000000F0000000F0000001F0000002F0000002F000000
+4F0000004F80000087800000878000010780000207800002078000040780000407800008078000
+080780001007800030078000200780007FFF80004007C0008007C0008003C0010003C0030003C0
+020003C0040003C0040003C00C0003C03C0007C0FF003FFC1E237DA224>65
+D<00007F00800003808100000E00630000380027000070001F0000E0000E0001C0000E00038000
+0E000700000E000F000004000E000004001E000004003C000004003C0000080078000000007800
+0000007800000000F000000000F000000000F000000000F000000000F000000000E000000000E0
+00002000E000002000E000004000E000004000F000008000700000800070000100003800020000
+18000400001C0008000006003000000381C0000000FE000000212479A223>67
+D<00FFFFF000000F003C00000F000E00000F000700001E000380001E000380001E0001C0001E00
+01C0003C0001C0003C0001E0003C0001E0003C0001E000780001E000780001E000780001E00078
+0001E000F00003C000F00003C000F00003C000F00003C001E000078001E000078001E000070001
+E0000F0003C0000E0003C0001C0003C0003C0003C00038000780007000078000E000078001C000
+07800700000F801C0000FFFFF0000023227DA125>I<00FFFFFF80000F000780000F000180000F
+000180001E000180001E000180001E000100001E000100003C000100003C000100003C01010000
+3C01000000780200000078020000007806000000780E000000FFFC000000F00C000000F00C0000
+00F00C000001E008000001E008000001E008040001E000080003C000080003C000080003C00010
+0003C000100007800020000780006000078000C000078001C0000F8007C000FFFFFF800021227D
+A121>I<00FF800007FC000F80000F80000F80001780000F80001780001780002F000013C0002F
+000013C0004F000013C0008F000023C0009E000023C0011E000023C0011E000023C0021E000043
+C0043C000043C0043C000043C0083C000041E0083C000081E01078000081E02078000081E02078
+000081E04078000101E040F0000101E080F0000101E100F0000101E100F0000200F201E0000200
+F201E0000200F401E0000200F801E0000400F803C0000400F003C0000400F003C0000C00E003C0
+001E00C007C000FFC0C07FFC002E227DA12C>77 D<00FFFFC0000F0070000F003C000F001C001E
+000E001E000E001E000F001E000F003C001E003C001E003C001E003C003C007800380078007000
+7801E00078078000FFFC0000F00E0000F0070000F0038001E003C001E003C001E003C001E003C0
+03C0078003C0078003C0078003C0078007800F0007800F0107800F01078007020F800702FFF803
+8C000000F020237DA124>82 D<0001F020000E0C40001802C0003001C0006001C000E0018000C0
+018001C0018001C0018003C0010003C0010003C0000003C0000003E0000001F8000001FF000000
+FFE000007FF000001FF8000003FC0000007C0000003C0000001E0000001E0000001E0020001C00
+20001C0020001C00200018006000380060003000700060007000C000C8018000C607000081FC00
+001B247DA21B>I<1FFFFFF81E03C0381803C0183003C018200780182007801840078010400780
+10400F0010800F0010800F0010000F0000001E0000001E0000001E0000001E0000003C0000003C
+0000003C0000003C00000078000000780000007800000078000000F0000000F0000000F0000000
+F0000001E0000001E0000001E0000001E0000003E00000FFFF00001D2277A123>I<3FFE03FF03
+C0007803C0006003C00020078000400780004007800040078000400F0000800F0000800F000080
+0F0000801E0001001E0001001E0001001E0001003C0002003C0002003C0002003C000200780004
+0078000400780004007800040070000800F0000800F00010007000100070002000700040003000
+400038018000180200000E0C000003F00000202377A124>I<007FFFFE007E001E0078003C0060
+007800C000F000C001E0008003E0008003C00100078001000F0001001E0000003C0000007C0000
+0078000000F0000001E0000003C00000078000000F8000000F0000001E0000003C004000780040
+00F0008001F0008001E0008003C00100078001000F0003001E0006001E0006003C001E0078007C
+00FFFFFC001F227DA11E>90 D<00F8C00185C00705C00E03800E03801C03803C03803807007807
+00780700780700F00E00F00E00F00E00F00E10F01C20701C20703C20305C40308C400F07801415
+7B9419>97 D<03C03F8003800380038007000700070007000E000E000E000E001C001CF81D0C1E
+0E3C0638073807380F700F700F700F700FE01EE01EE01EE03CE038E038607060E031C01F001023
+7BA216>I<007E0001C1000301800703800E07801C07803C0000380000780000780000780000F0
+0000F00000F00000F00000F00100700100700200300C001830000FC00011157B9416>I<00003C
+0003F80000380000380000380000700000700000700000700000E00000E00000E00000E00001C0
+00F9C00185C00705C00E03800E03801C03803C0380380700780700780700780700F00E00F00E00
+F00E00F00E10F01C20701C20703C20305C40308C400F078016237BA219>I<00F803840E021C02
+3C0238027804F018FFE0F000F000E000E000E000E000E002E0026004701830600F800F157A9416
+>I<001F180030B800E0B801C07001C0700380700780700700E00F00E00F00E00F00E01E01C01E
+01C01E01C01E01C01E03800E03800E0780060B8006170001E700000700000700000E00000E0000
+0E00701C00F01800F0300060E0003F8000151F7E9416>103 D<00C001E001C001C00000000000
+00000000000000000000001C002300430043008700870087000E000E001C001C001C0038003800
+3840708070807080710032001C000B217BA00F>105 D<00F0000FE00000E00000E00000E00001
+C00001C00001C00001C0000380000380000380000380000700000701E0070210070C700E10F00E
+10F00E20600E40001D80001E00001FC0001C7000383800383800381C00381C2070384070384070
+3840701880E01880600F0014237DA216>107 D<01E01FC001C001C001C0038003800380038007
+000700070007000E000E000E000E001C001C001C001C0038003800380038007000700070007100
+E200E200E200E200640038000B237CA20C>I<1C0F80F8002610C10C0047606606008780780700
+8780780700870070070087007007000E00E00E000E00E00E000E00E00E000E00E00E001C01C01C
+001C01C01C001C01C01C001C01C038203803803840380380704038038070803803803080700700
+31003003001E0023157B9428>I<1C0F002631C04740C08780E08780E08700E08700E00E01C00E
+01C00E01C00E01C01C03801C03801C03801C0704380708380E08380E103806107006203003C016
+157B941B>I<007E0001C3000381800701C00E01C01C01E03C01E03801E07801E07801E07801E0
+F003C0F003C0F00380F00780700700700E00700C0030180018700007C00013157B9419>I<01C1
+F002621804741C08780C08700E08700E08701E00E01E00E01E00E01E00E01E01C03C01C03C01C0
+3C01C07803807003807003C0E003C1C0072380071E000700000700000E00000E00000E00000E00
+001C00001C00001C0000FFC000171F7F9419>I<1C1F002620804741C08783C08703C087018087
+00000E00000E00000E00000E00001C00001C00001C00001C000038000038000038000038000070
+000030000012157B9415>114 D<00FC000183000200800401800C03800C03000C00000F00000F
+F00007FC0003FE00003E00000F00000700700700F00600F00600E004004008002030001FC00011
+157D9414>I<00C001C001C001C001C003800380038003800700FFF8070007000E000E000E000E
+001C001C001C001C003800380038003810702070207040708031001E000D1F7C9E10>I<1E0060
+2300E04380E04381C08381C08701C08701C00703800E03800E03800E03801C07001C07001C0700
+1C07081C0E10180E101C0E101C1E200C262007C3C015157B941A>I<1E03802307C04387C04383
+C08381C08700C08700C00700800E00800E00800E00801C01001C01001C01001C02001C02001C04
+001C08001C08000C300003C00012157B9416>I<03C1E0046210083470103CF02038F020386020
+380000700000700000700000700000E00000E00000E00000E02061C040F1C040F1C080E2C10044
+6200383C0014157D9416>120 D<1E00302300704380704380E08380E08700E08700E00701C00E
+01C00E01C00E01C01C03801C03801C03801C03801C07001C07001C07001C0F000C3E0003CE0000
+0E00000E00001C00601C00F03800F03000E0600080C0004380003E0000141F7B9418>I<01E020
+03F06007F8C0041F80080100080200000400000800001000002000004000008000010000020000
+0400800801001003003F060061FC0040F80080700013157D9414>I E /Fo
+23 119 df<00038000000380000003800000038000001FF00000FFFE0003FFFF0007E38FC00F03
+83E01E0380F03C0380703C038038780380F8780381FCF80383FCF80387FCF80387FCFC0387FCFC
+0387FCFE0383F8FF0381F0FFC380007FFB80007FFFC0003FFFF8003FFFFE001FFFFF000FFFFF80
+07FFFFC003FFFFE001FFFFF0007FFFF0000FFFF80003FFF800038FF8000383FC3E0381FC7F0380
+FCFF8380FCFF83807CFF83807CFF83807CFF03807CFE0380787C038078700380F8780380F03803
+80E01C0381E00F0387C007E39F8003FFFF0000FFFC00001FE00000038000000380000003800000
+0380001E3A7BB529>36 D<1F003F807FC0FFE0FFE0FFE0FFE0FFE07FC03F801F00000000000000
+00000000000000000000000000001F003F807FC0FFE0FFE0FFE0FFE0FFE07FC03F801F000B207A
+9F17>58 D<FFFFFFFFF00000FFFFFFFFFF0000FFFFFFFFFFC00000FFC000FFF00000FFC0000FFC
+0000FFC00007FE0000FFC00001FF0000FFC00000FF8000FFC000007FC000FFC000003FE000FFC0
+00003FE000FFC000001FF000FFC000001FF000FFC000001FF800FFC000000FF800FFC000000FFC
+00FFC000000FFC00FFC000000FFC00FFC000000FFC00FFC000000FFE00FFC000000FFE00FFC000
+000FFE00FFC000000FFE00FFC000000FFE00FFC000000FFE00FFC000000FFE00FFC000000FFE00
+FFC000000FFE00FFC000000FFE00FFC000000FFE00FFC000000FFC00FFC000000FFC00FFC00000
+0FFC00FFC000000FFC00FFC000000FF800FFC000001FF800FFC000001FF800FFC000001FF000FF
+C000003FE000FFC000003FE000FFC000007FC000FFC00000FF8000FFC00001FF0000FFC00003FE
+0000FFC0000FFC0000FFC0007FF000FFFFFFFFFFE000FFFFFFFFFF0000FFFFFFFFF0000037317E
+B03F>68 D<FFFFFFFFFFF000FFFFFFFFFFF000FFFFFFFFFFF00000FFC0003FF00000FFC00007F8
+0000FFC00003F80000FFC00000F80000FFC00000F80000FFC00000780000FFC00000780000FFC0
+0000380000FFC00000380000FFC00000380000FFC000001C0000FFC007001C0000FFC007001C00
+00FFC007001C0000FFC00700000000FFC00700000000FFC00F00000000FFC01F00000000FFC03F
+00000000FFFFFF00000000FFFFFF00000000FFFFFF00000000FFC03F00000000FFC01F00000000
+FFC00F00000000FFC00700000000FFC00700000000FFC00700038000FFC00700038000FFC00700
+038000FFC00000070000FFC00000070000FFC00000070000FFC00000070000FFC000000F0000FF
+C000000F0000FFC000001E0000FFC000001E0000FFC000003E0000FFC000007E0000FFC00000FE
+0000FFC00003FE0000FFC0001FFE00FFFFFFFFFFFC00FFFFFFFFFFFC00FFFFFFFFFFFC0031317E
+B036>I<FFFFFFFFFFF0FFFFFFFFFFF0FFFFFFFFFFF000FFC0003FF000FFC00007F800FFC00003
+F800FFC00000F800FFC00000F800FFC000007800FFC000007800FFC000003800FFC000003800FF
+C000003800FFC000001C00FFC000001C00FFC007001C00FFC007001C00FFC007000000FFC00700
+0000FFC007000000FFC00F000000FFC01F000000FFC03F000000FFFFFF000000FFFFFF000000FF
+FFFF000000FFC03F000000FFC01F000000FFC00F000000FFC007000000FFC007000000FFC00700
+0000FFC007000000FFC007000000FFC000000000FFC000000000FFC000000000FFC000000000FF
+C000000000FFC000000000FFC000000000FFC000000000FFC000000000FFC000000000FFC00000
+0000FFC0000000FFFFFFF00000FFFFFFF00000FFFFFFF000002E317EB034>I<FFFFFFC03FFFFF
+F0FFFFFFC03FFFFFF0FFFFFFC03FFFFFF000FFC000003FF00000FFC000003FF00000FFC000003F
+F00000FFC000003FF00000FFC000003FF00000FFC000003FF00000FFC000003FF00000FFC00000
+3FF00000FFC000003FF00000FFC000003FF00000FFC000003FF00000FFC000003FF00000FFC000
+003FF00000FFC000003FF00000FFC000003FF00000FFC000003FF00000FFC000003FF00000FFC0
+00003FF00000FFC000003FF00000FFFFFFFFFFF00000FFFFFFFFFFF00000FFFFFFFFFFF00000FF
+C000003FF00000FFC000003FF00000FFC000003FF00000FFC000003FF00000FFC000003FF00000
+FFC000003FF00000FFC000003FF00000FFC000003FF00000FFC000003FF00000FFC000003FF000
+00FFC000003FF00000FFC000003FF00000FFC000003FF00000FFC000003FF00000FFC000003FF0
+0000FFC000003FF00000FFC000003FF00000FFC000003FF00000FFC000003FF00000FFC000003F
+F00000FFC000003FF000FFFFFFC03FFFFFF0FFFFFFC03FFFFFF0FFFFFFC03FFFFFF03C317EB041
+>72 D<FFFFFFF00000FFFFFFF00000FFFFFFF0000000FFC000000000FFC000000000FFC0000000
+00FFC000000000FFC000000000FFC000000000FFC000000000FFC000000000FFC000000000FFC0
+00000000FFC000000000FFC000000000FFC000000000FFC000000000FFC000000000FFC0000000
+00FFC000000000FFC000000000FFC000000000FFC000000000FFC000000000FFC000000000FFC0
+00000000FFC000000000FFC000000000FFC000000000FFC000000000FFC000007000FFC0000070
+00FFC000007000FFC00000F000FFC00000F000FFC00000E000FFC00000E000FFC00001E000FFC0
+0001E000FFC00003E000FFC00003E000FFC00007E000FFC0000FE000FFC0001FE000FFC0007FC0
+00FFC003FFC0FFFFFFFFFFC0FFFFFFFFFFC0FFFFFFFFFFC02C317EB032>76
+D<FFFF8000000001FFFF80FFFFC000000003FFFF80FFFFE000000007FFFF8000FFE000000007FF
+800000EFF00000000EFF800000EFF00000000EFF800000EFF00000000EFF800000E7F80000001C
+FF800000E7F80000001CFF800000E3FC00000038FF800000E3FC00000038FF800000E1FE000000
+70FF800000E1FE00000070FF800000E0FF000000E0FF800000E0FF000000E0FF800000E07F8000
+01C0FF800000E07F800001C0FF800000E03FC0000380FF800000E03FC0000380FF800000E03FC0
+000380FF800000E01FE0000700FF800000E01FE0000700FF800000E00FF0000E00FF800000E00F
+F0000E00FF800000E007F8001C00FF800000E007F8001C00FF800000E003FC003800FF800000E0
+03FC003800FF800000E001FE007000FF800000E001FE007000FF800000E000FF00E000FF800000
+E000FF00E000FF800000E000FF00E000FF800000E0007F81C000FF800000E0007F81C000FF8000
+00E0003FC38000FF800000E0003FC38000FF800000E0001FE70000FF800000E0001FE70000FF80
+0000E0000FFE0000FF800000E0000FFE0000FF800000E00007FC0000FF800000E00007FC0000FF
+800000E00007FC0000FF800000E00003F80000FF800001F00003F80000FF8000FFFFE001F000FF
+FFFF80FFFFE001F000FFFFFF80FFFFE000E000FFFFFF8049317EB04E>I<00000FFE0000000000
+FFFFE000000007FFFFFC0000001FFC07FF0000003FE000FF800000FF80003FE00001FF00001FF0
+0003FE00000FF80007FC000007FC0007FC000007FC000FF8000003FE001FF8000003FF001FF000
+0001FF003FF0000001FF803FF0000001FF803FF0000001FF807FE0000000FFC07FE0000000FFC0
+7FE0000000FFC0FFE0000000FFE0FFE0000000FFE0FFE0000000FFE0FFE0000000FFE0FFE00000
+00FFE0FFE0000000FFE0FFE0000000FFE0FFE0000000FFE0FFE0000000FFE0FFE0000000FFE0FF
+E0000000FFE07FE0000000FFC07FE0000000FFC07FF0000001FFC07FF0000001FFC03FF0000001
+FF803FF0000001FF801FF8000003FF001FF8000003FF000FFC000007FE000FFC000007FE0007FE
+00000FFC0003FF00001FF80001FF80003FF00000FFC0007FE000003FE000FF8000001FFC07FF00
+000007FFFFFC00000000FFFFE0000000000FFE00000033317BB03E>79 D<001FF0018000FFFF03
+8003FFFFC78007F00FFF800F8001FF801F00007F803F00001F803E00000F807E00000F807E0000
+0780FE00000780FE00000780FE00000380FF00000380FF00000380FF80000000FFE00000007FFC
+0000007FFFE000007FFFFE00003FFFFFC0001FFFFFF0001FFFFFF8000FFFFFFC0003FFFFFE0001
+FFFFFF00007FFFFF80001FFFFF800000FFFFC0000007FFC0000000FFE00000003FE00000003FE0
+0000001FE06000001FE0E000000FE0E000000FE0E000000FE0E000000FC0F000000FC0F000000F
+C0F800001F80FC00001F80FF00003F00FFC0007E00FFFC01FC00F1FFFFF800E03FFFE000C007FF
+000023317BB02E>83 D<FFFFFF0000FFFF80FFFFFF0000FFFF80FFFFFF0000FFFF8003FFC00000
+0FF00001FFE0000007C00000FFE000000F800000FFF000000F8000007FF800001F0000003FF800
+001E0000001FFC00003E0000001FFE00007C0000000FFE00007800000007FF0000F800000007FF
+8001F000000003FF8001E000000001FFC003E000000001FFE007C000000000FFF0078000000000
+7FF00F80000000007FF81F00000000003FFC1E00000000001FFC3E00000000001FFE7C00000000
+000FFF78000000000007FFF8000000000007FFF0000000000003FFF0000000000001FFE0000000
+000001FFC0000000000000FFC0000000000000FFC0000000000000FFC0000000000000FFC00000
+00000000FFC0000000000000FFC0000000000000FFC0000000000000FFC0000000000000FFC000
+0000000000FFC0000000000000FFC0000000000000FFC0000000000000FFC0000000000000FFC0
+000000000000FFC0000000000000FFC0000000000000FFC00000000000FFFFFF8000000000FFFF
+FF8000000000FFFFFF80000039317EB03E>89 D<007FF8000003FFFF000007FFFFC0000FE01FE0
+001FF007F0001FF003F8001FF003FC001FF001FE000FE001FE0007C001FE00010001FE00000001
+FE00000001FE000001FFFE00003FFFFE0001FFF1FE0007FE01FE000FF001FE001FC001FE003F80
+01FE007F8001FE00FF0001FE00FF0001FE00FF0001FE00FF0001FE00FF0003FE007F8003FE007F
+C00EFE003FF03CFF000FFFF87FF807FFF03FF800FF800FF825207E9F28>97
+D<0007FC0000003FFF800000FFFFE00003FC07F00007F801F8000FE000FC001FE0007E003FC000
+7E003FC0003F007FC0003F007F80003F007F80003F80FF80003F80FF80003F80FFFFFFFF80FFFF
+FFFF80FFFFFFFF80FF80000000FF80000000FF800000007F800000007F800000003FC00000003F
+C00003801FC00003801FE00007800FF0000F0007F8001E0003FE00FC0000FFFFF800003FFFE000
+0003FF000021207E9F26>101 D<001FF007E000FFFE3FF001FFFF7FF807F83FF1F80FE00FE1F8
+0FE00FE0F01FC007F0601FC007F0003FC007F8003FC007F8003FC007F8003FC007F8003FC007F8
+001FC007F0001FC007F0000FE00FE0000FE00FE00007F83FC00007FFFF000006FFFE00000E1FF0
+00000E000000001E000000001E000000001F000000001F800000001FFFFFC0000FFFFFF8000FFF
+FFFE0007FFFFFF0003FFFFFF8007FFFFFFC01FFFFFFFE03F00007FE07E00000FF0FC000007F0FC
+000003F0FC000003F0FC000003F0FC000003F07E000007E03F00000FC01FC0003F800FF801FF00
+07FFFFFE0000FFFFF000001FFF8000252F7E9F29>103 D<01C00007F0000FF8000FF8001FFC00
+1FFC001FFC000FF8000FF80007F00001C000000000000000000000000000000000000000000000
+00000001F800FFF800FFF800FFF8000FF80007F80007F80007F80007F80007F80007F80007F800
+07F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F800
+07F80007F80007F80007F800FFFF80FFFF80FFFF8011337DB217>105 D<01F800FFF800FFF800
+FFF8000FF80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F800
+07F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F800
+07F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F800
+07F80007F80007F80007F80007F800FFFFC0FFFFC0FFFFC012327DB117>108
+D<03F007F8000FF000FFF03FFF007FFE00FFF07FFF80FFFF00FFF0F03FC1E07F800FF1C01FE380
+3FC007F3000FE6001FC007F6000FFC001FE007FE000FFC001FE007FC000FF8001FE007FC000FF8
+001FE007F8000FF0001FE007F8000FF0001FE007F8000FF0001FE007F8000FF0001FE007F8000F
+F0001FE007F8000FF0001FE007F8000FF0001FE007F8000FF0001FE007F8000FF0001FE007F800
+0FF0001FE007F8000FF0001FE007F8000FF0001FE007F8000FF0001FE007F8000FF0001FE007F8
+000FF0001FE007F8000FF0001FE007F8000FF0001FE007F8000FF0001FE007F8000FF0001FE0FF
+FFC1FFFF83FFFFFFFFC1FFFF83FFFFFFFFC1FFFF83FFFF40207D9F45>I<03F007F80000FFF03F
+FF0000FFF07FFF8000FFF0F03FC0000FF1C01FE00007F3000FE00007F6000FF00007FE000FF000
+07FC000FF00007FC000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF00007F800
+0FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF000
+07F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF00007F800
+0FF00007F8000FF000FFFFC1FFFF80FFFFC1FFFF80FFFFC1FFFF8029207D9F2E>I<0007FE0000
+003FFFC00000FFFFF00003FC03FC0007F000FE000FE0007F001FC0003F803FC0003FC03FC0003F
+C07F80001FE07F80001FE07F80001FE0FF80001FF0FF80001FF0FF80001FF0FF80001FF0FF8000
+1FF0FF80001FF0FF80001FF0FF80001FF07F80001FE07F80001FE07F80001FE03FC0003FC03FC0
+003FC01FE0007F800FE0007F0007F801FE0003FE07FC0001FFFFF800003FFFC0000007FE000024
+207E9F29>I<03F03F00FFF07FC0FFF1FFE0FFF3C7F00FF38FF807F70FF807F60FF807FE0FF807
+FC07F007FC03E007FC008007F8000007F8000007F8000007F8000007F8000007F8000007F80000
+07F8000007F8000007F8000007F8000007F8000007F8000007F8000007F8000007F8000007F800
+0007F80000FFFFE000FFFFE000FFFFE0001D207E9F22>114 D<00380000380000380000380000
+380000780000780000780000F80000F80001F80003F80007F8001FF800FFFFFEFFFFFEFFFFFE07
+F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007
+F80007F80007F80007F80707F80707F80707F80707F80707F80707F80703F80E03FC0E01FE1C00
+FFF8007FF0000FE0182E7EAD20>116 D<01F80003F000FFF801FFF000FFF801FFF000FFF801FF
+F0000FF8001FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF00007
+F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8000F
+F00007F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF00007
+F8000FF00007F8001FF00007F8001FF00003F8003FF00003F8006FF00001FE03CFF80000FFFF8F
+FF80007FFF0FFF80000FFC0FFF8029207D9F2E>I<FFFF801FFEFFFF801FFEFFFF801FFE07F800
+03E007F80001C007FC0003C003FC00038003FE00078001FE00070001FF000F0000FF000E0000FF
+801E00007F801C00007FC03C00003FC03800003FE03800001FE07000001FE07000000FF0E00000
+0FF0E000000FF9E0000007F9C0000007FFC0000003FF80000003FF80000001FF00000001FF0000
+0000FE00000000FE000000007C000000007C0000000038000027207E9F2C>I
+E end
+%%EndProlog
+%%BeginSetup
+%%Feature: *Resolution 300
+TeXDict begin
+%%EndSetup
+%%Page: 1 1
+bop 193 216 a Fo(HLFSD:)26 b(Deliv)n(ering)h(Email)g(to)h(Y)-7
+b(our)28 b($HOME)280 336 y Fn(Er)n(ez)17 b(Zadok,)g(Computer)h(Scienc)n(e)h
+(Dep)n(artment,)e(Columbia)h(University)482 394 y(A)o(lexander)h(Dupuy,)e
+(System)h(Management)h(AR)l(TS)841 541 y Fm(ABSTRA)o(CT)241
+628 y Fl(W)m(e)12 b(consider)h(the)g(problem)e(of)h(enabling)g(users)i(to)e
+(access)i(their)f(mailb)q(o)o(x)d(\014les)i(from)f(an)o(y)h(host)179
+678 y(on)k(our)h(lo)q(cal)f(net)o(w)o(ork,)h(and)f(not)h(only)f(on)g(one)h
+(designated)g(\\home)f(mac)o(hine".)25 b(W)m(e)16 b(require)h(a)179
+728 y(solution)11 b(whic)o(h)g(will)f(not)i(in)o(tro)q(duce)g(an)o(y)f(new)h
+(single)g(p)q(oin)o(ts)f(of)g(failure,)g(force)h(us)g(to)g(mo)q(dify)d(mail)
+179 778 y(transfer)16 b(agen)o(ts)f(and)g(user)i(agen)o(ts,)e(or)g(require)h
+(c)o(hanges)g(to)f(the)h(op)q(erating)f(system)g(k)o(ernels.)22
+b(In)179 828 y(other)15 b(w)o(ords,)g(minim)o(ize)e(the)i(amoun)o(t)e(of)h(w)
+o(ork)h(needed)h(b)o(y)e(system-administrators)g(and)g(users.)179
+877 y(Our)i(solution)e(is)h(to)h(deliv)o(er)f(mail)e(in)o(to)h(the)i(users')h
+(home)d(directories,)i(whic)o(h)g(are)f(exp)q(orted)i(via)179
+927 y(NFS[20)o(,)g(25])f(to)i(all)e(of)h(the)h(mac)o(hines)e(on)h(our)h(net)o
+(w)o(ork.)29 b(W)m(e)17 b(wrote)h(a)f(small)e(user-lev)o(el)j(NFS)179
+977 y(serv)o(er)d(implemen)o(ting)c(a)j(single)f(sym)o(b)q(olic)f(link)h
+(that)h(references)j(the)e(home)e(directory)h(of)g(a)g(user,)179
+1027 y(either)h(the)g(one)g(who)f(accessed)j(it,)c(or)i(b)o(y)f(name,)f(with)
+h(a)g(fallbac)o(k)f(reference)k(in)d(case)h(of)f(failures.)179
+1077 y(This)d(enables)h(electronic)g(mail)d(to)i(b)q(e)h(deliv)o(ered)g
+(directly)g(in)o(to)e(the)i(user's)g(home)f(directory)m(,)g(whic)o(h)179
+1126 y(is)f(already)h(accessible)h(from)d(an)o(y)h(mac)o(hine)g(on)h(the)g
+(net)o(w)o(ork.)17 b(Although)10 b(w)o(e)i(ha)o(v)o(e)e(used)i(our)f(serv)o
+(er)179 1176 y(primarily)f(for)i(mail)e(deliv)o(ery)j(redirection,)g(it)f
+(can)h(b)q(e)g(used)h(to)e(redirect)i(sp)q(o)q(oled)f(faxes,)g(access)h(to)
+179 1226 y Fk(/tmp)p Fl(,)e(etc.)75 1345 y Fj(1)56 b(In)n(tro)r(duction)175
+1420 y Fl(Electronic)16 b(mail)e(has)i(b)q(ecome)g(one)g(of)f(the)i(ma)r(jor)
+d(applications)h(for)h(man)o(y)e(computer)i(net)o(w)o(orks,)g(and)75
+1470 y(use)k(of)f(this)g(service)h(is)f(exp)q(ected)j(to)d(increase)h(o)o(v)o
+(er)f(time,)g(as)g(net)o(w)o(orks)h(proliferate)f(and)g(b)q(ecome)g(faster.)
+75 1520 y(Pro)o(viding)10 b(a)h(con)o(v)o(enien)o(t)h(en)o(vironmen)o(t)f
+(for)g(users)i(to)e(read,)h(comp)q(ose,)f(and)g(send)h(electronic)h(mail)c
+(has)i(b)q(ecome)75 1570 y(a)j(requiremen)o(t)f(for)h(systems)g
+(administrators)e(\(SAs\).)175 1644 y(Widely)j(used)j(metho)q(ds)d(for)i
+(handling)e(mail)f(usually)h(require)j(users)f(to)g(b)q(e)g(logged)e(in)o(to)
+h(a)g(designated)75 1694 y(\\home")e(mac)o(hine,)f(where)k(their)e(mailb)q(o)
+o(x)e(\014les)i(reside.)23 b(Only)15 b(on)g(that)h(one)f(mac)o(hine)f(can)i
+(they)f(read)h(newly)75 1744 y(arriv)o(ed)i(mail.)28 b(Since)19
+b(users)g(ha)o(v)o(e)f(to)g(b)q(e)h(logged)e(in)o(to)g(that)h(system)g(to)g
+(read)h(their)f(mail,)e(they)j(often)f(\014nd)75 1794 y(it)h(con)o(v)o(enien)
+o(t)h(to)g(run)g(all)f(of)g(their)h(other)g(pro)q(cesses)j(on)c(that)h
+(system)f(as)h(w)o(ell,)g(including)f(memory)e(and)75 1844
+y(CPU-in)o(tensiv)o(e)j(jobs.)34 b(F)m(or)19 b(example,)g(in)g(our)g
+(departmen)o(t,)h(w)o(e)g(ha)o(v)o(e)f(allo)q(cated)g(and)g(con\014gured)h
+(sev)o(eral)75 1893 y(m)o(ulti-pro)q(cessor)11 b(serv)o(ers)i(to)e(handle)g
+(suc)o(h)i(demanding)c(CPU)q(/memory)f(applications,)j(but)g(these)i(w)o(ere)
+f(under-)75 1943 y(utilized,)k(in)g(large)g(part)g(due)h(to)f(the)g(incon)o
+(v)o(enience)i(of)d(not)h(b)q(eing)g(able)g(to)g(read)h(mail)c(on)j(those)h
+(mac)o(hines.)75 1993 y(\(No)h(home)e(directories)j(w)o(ere)g(lo)q(cated)f
+(on)f(these)i(designated)g(CPU-serv)o(ers,)h(since)f(w)o(e)e(did)h(not)f(w)o
+(an)o(t)h(NFS)75 2043 y(service)g(for)f(users')g(home)f(directories)i(to)f
+(ha)o(v)o(e)f(to)h(comp)q(ete)g(with)f(in)o(tensiv)o(e)h(jobs.)27
+b(A)o(t)17 b(the)g(same)f(time,)g(w)o(e)75 2093 y(discouraged)e(users)i(from)
+c(running)h(demanding)g(applications)f(on)i(their)g(home)f(mac)o(hines.\))175
+2167 y(Man)o(y)k(di\013eren)o(t)h(solutions)f(ha)o(v)o(e)h(b)q(een)h(prop)q
+(osed)f(to)f(allo)o(w)f(users)j(to)f(read)g(their)g(mail)d(on)i(an)o(y)g
+(host.)75 2217 y(Ho)o(w)o(ev)o(er,)d(all)e(of)i(these)h(solutions)f(fail)e
+(in)h(one)h(or)g(more)f(of)g(sev)o(eral)i(w)o(a)o(ys:)137 2328
+y Fi(\017)21 b Fl(they)14 b(in)o(tro)q(duce)h(new)f(single)g(p)q(oin)o(ts)f
+(of)h(failure)137 2409 y Fi(\017)21 b Fl(they)14 b(require)h(using)f
+(di\013eren)o(t)g(mail)e(transfer)i(agen)o(ts)h(\(MT)m(As\)[15)o(])e(or)h
+(user)h(agen)o(ts)g(\(UAs\))137 2490 y Fi(\017)21 b Fl(they)16
+b(do)f(not)g(solv)o(e)g(the)h(problem)e(for)h(all)f(cases,)i(i.e.)22
+b(the)16 b(solution)e(is)h(only)g(partially)e(successful)k(for)e(a)179
+2539 y(particular)e(en)o(vironmen)o(t.)175 2650 y(W)m(e)e(ha)o(v)o(e)h
+(designed)g(a)f(simple)g(\014lesystem,)g(called)h(the)g Fh(Home-Link)h(File)f
+(System)p Fl(,)g(to)g(pro)o(vide)f(the)i(abilit)o(y)75 2700
+y(to)d(deliv)o(er)h(mail)d(to)i(users')h(home)e(directories,)j(without)e(mo)q
+(di\014cation)f(to)h(mail-related)e(applications.)16 b(W)m(e)10
+b(ha)o(v)o(e)p eop
+%%Page: 2 2
+bop 75 42 a Fl(endea)o(v)o(ored)15 b(to)e(mak)o(e)f(it)i(as)f(stable)h(as)g
+(p)q(ossible.)k(Of)c(great)g(imp)q(ortance)f(to)g(us)h(w)o(as)g(to)f(mak)o(e)
+g(sure)h(the)h(HLFS)75 91 y(daemon,)10 b Fk(hlfsd)o Fl(,)h(w)o(ould)g(not)g
+(hang)g(under)h(an)o(y)f(circumstances,)h(and)f(w)o(ould)f(tak)o(e)i(the)g
+(next-b)q(est)h(action)d(when)75 141 y(faced)16 b(with)g(problems.)24
+b(Compared)15 b(to)g(alternativ)o(e)h(metho)q(ds,)g Fk(hlfsd)f
+Fl(is)h(a)g(stable,)g(more)f(general)h(solution,)75 191 y(and)g(easier)h(to)f
+(install/use.)25 b(In)16 b(fact,)g(in)g(some)f(w)o(a)o(ys,)i(w)o(e)f(ha)o(v)o
+(e)g(ev)o(en)h(managed)e(to)h(impro)o(v)o(e)e(the)j(reliabilit)o(y)75
+241 y(and)d(securit)o(y)h(of)e(mail)e(service.)175 315 y(Our)k(serv)o(er)i
+(implemen)o(ts)c(a)i(small)e(\014lesystem)i(con)o(taining)f(a)h(sym)o(b)q
+(olic)f(link)g(to)h(a)g(sub)q(directory)i(of)d(the)75 365 y(in)o(v)o(oking)c
+(user's)j(home)e(directory)m(,)i(and)f(named)e(sym)o(b)q(olic)h(links)g(to)h
+(users')h(mailb)q(o)o(x)c(\014les.)18 b(An)13 b(example,)d(using)75
+415 y(pathnames)j(from)f(our)i(en)o(vironmen)o(t,)e(is)i(depicted)h(in)f
+(Figure)g(1.)1128 400 y Fg(1)p 75 477 1800 5 v 75 1424 a @beginspecial
+0 @llx 0 @lly 599 @urx 311 @ury 4320 @rwi @setspecial
+%%BeginDocument: hlfs-flowchart.eps
+/$F2psDict 200 dict def
+$F2psDict begin
+$F2psDict /mtrx matrix put
+/l {lineto} bind def
+/m {moveto} bind def
+/s {stroke} bind def
+/n {newpath} bind def
+/gs {gsave} bind def
+/gr {grestore} bind def
+/clp {closepath} bind def
+/graycol {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
+4 -2 roll mul setrgbcolor} bind def
+/col-1 {} def
+/col0 {0 0 0 setrgbcolor} bind def
+/col1 {0 0 1 setrgbcolor} bind def
+/col2 {0 1 0 setrgbcolor} bind def
+/col3 {0 1 1 setrgbcolor} bind def
+/col4 {1 0 0 setrgbcolor} bind def
+/col5 {1 0 1 setrgbcolor} bind def
+/col6 {1 1 0 setrgbcolor} bind def
+/col7 {1 1 1 setrgbcolor} bind def
+ end
+/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
+/$F2psEnd {$F2psEnteredState restore end} def
+
+$F2psBegin
+0 setlinecap 0 setlinejoin
+-4.0 329.0 translate 0.900 -0.900 scale
+0.500 setlinewidth
+n 319 19 m 312 19 312 32 7 arcto 4 {pop} repeat 312 39 350 39 7 arcto 4 {pop} repeat 357 39 357 26 7 arcto 4 {pop} repeat 357 19 319 19 7 arcto 4 {pop} repeat clp gs col-1 s gr
+/Times-Roman findfont 12.00 scalefont setfont
+317 34 m
+gs 1 -1 scale (START) col-1 show gr
+/Times-Roman findfont 18.00 scalefont setfont
+269 360 m
+gs 1 -1 scale (".") col-1 show gr
+/Times-Roman findfont 18.00 scalefont setfont
+254 335 m
+gs 1 -1 scale (Return) col-1 show gr
+n 256 320 m 249 320 249 358 7 arcto 4 {pop} repeat 249 365 302 365 7 arcto 4 {pop} repeat 309 365 309 327 7 arcto 4 {pop} repeat 309 320 256 320 7 arcto 4 {pop} repeat clp gs col-1 s gr
+n 274 100 m 199 100 l 199 170 l gs col-1 s gr
+n 201.000 162.000 m 199.000 170.000 l 197.000 162.000 l gs 2 setlinejoin col-1 s gr
+n 394 100 m 479 100 l 479 120 l gs col-1 s gr
+n 481.000 112.000 m 479.000 120.000 l 477.000 112.000 l gs 2 setlinejoin col-1 s gr
+n 139 210 m 124 210 l 124 320 l gs col-1 s gr
+n 126.000 312.000 m 124.000 320.000 l 122.000 312.000 l gs 2 setlinejoin col-1 s gr
+n 479 200 m 479 220 l gs col-1 s gr
+n 481.000 212.000 m 479.000 220.000 l 477.000 212.000 l gs 2 setlinejoin col-1 s gr
+n 539 260 m 569 260 l 569 320 l gs col-1 s gr
+n 571.000 312.000 m 569.000 320.000 l 567.000 312.000 l gs 2 setlinejoin col-1 s gr
+n 334 40 m 334 60 l gs col-1 s gr
+n 336.000 52.000 m 334.000 60.000 l 332.000 52.000 l gs 2 setlinejoin col-1 s gr
+n 334 60 m 274 100 l 334 140 l 394 100 l 334 60 l gs col-1 s gr
+n 199 170 m 139 210 l 199 250 l 259 210 l 199 170 l gs col-1 s gr
+n 479 120 m 419 160 l 479 200 l 539 160 l 479 120 l gs col-1 s gr
+n 479 220 m 419 260 l 479 300 l 539 260 l 479 220 l gs col-1 s gr
+n 326 319 m 319 319 319 357 7 arcto 4 {pop} repeat 319 364 467 364 7 arcto 4 {pop} repeat 474 364 474 326 7 arcto 4 {pop} repeat 474 319 326 319 7 arcto 4 {pop} repeat clp gs col-1 s gr
+n 419 159 m 364 159 l 364 179 l gs col-1 s gr
+n 366.000 171.000 m 364.000 179.000 l 362.000 171.000 l gs 2 setlinejoin col-1 s gr
+n 306 179 m 299 179 299 212 7 arcto 4 {pop} repeat 299 219 427 219 7 arcto 4 {pop} repeat 434 219 434 186 7 arcto 4 {pop} repeat 434 179 306 179 7 arcto 4 {pop} repeat clp gs col-1 s gr
+n 491 319 m 484 319 484 357 7 arcto 4 {pop} repeat 484 364 662 364 7 arcto 4 {pop} repeat 669 364 669 326 7 arcto 4 {pop} repeat 669 319 491 319 7 arcto 4 {pop} repeat clp gs col-1 s gr
+n 11 319 m 4 319 4 357 7 arcto 4 {pop} repeat 4 364 237 364 7 arcto 4 {pop} repeat 244 364 244 326 7 arcto 4 {pop} repeat 244 319 11 319 7 arcto 4 {pop} repeat clp gs col-1 s gr
+n 259 210 m 279 210 l 279 320 l gs col-1 s gr
+n 281.000 312.000 m 279.000 320.000 l 277.000 312.000 l gs 2 setlinejoin col-1 s gr
+n 419 259 m 389 259 l 389 319 l gs col-1 s gr
+n 391.000 311.000 m 389.000 319.000 l 387.000 311.000 l gs 2 setlinejoin col-1 s gr
+/Times-BoldItalic findfont 12.00 scalefont setfont
+399 90 m
+gs 1 -1 scale (No) col-1 show gr
+/Times-BoldItalic findfont 12.00 scalefont setfont
+254 90 m
+gs 1 -1 scale (Yes) col-1 show gr
+/Times-BoldItalic findfont 12.00 scalefont setfont
+259 200 m
+gs 1 -1 scale (Yes) col-1 show gr
+/Times-BoldItalic findfont 12.00 scalefont setfont
+124 200 m
+gs 1 -1 scale (No) col-1 show gr
+/Times-BoldItalic findfont 12.00 scalefont setfont
+399 150 m
+gs 1 -1 scale (Yes) col-1 show gr
+/Times-BoldItalic findfont 12.00 scalefont setfont
+489 215 m
+gs 1 -1 scale (No) col-1 show gr
+/Times-BoldItalic findfont 12.00 scalefont setfont
+544 250 m
+gs 1 -1 scale (Yes) col-1 show gr
+/Times-BoldItalic findfont 12.00 scalefont setfont
+404 250 m
+gs 1 -1 scale (No) col-1 show gr
+/Times-Roman findfont 12.00 scalefont setfont
+459 280 m
+gs 1 -1 scale (Writable?) col-1 show gr
+/Times-Roman findfont 18.00 scalefont setfont
+102 335 m
+gs 1 -1 scale (Return) col-1 show gr
+/Times-Roman findfont 18.00 scalefont setfont
+547 335 m
+gs 1 -1 scale (Return) col-1 show gr
+/Times-Italic findfont 12.00 scalefont setfont
+454 164 m
+gs 1 -1 scale (uid) col-1 show gr
+/Times-Roman findfont 12.00 scalefont setfont
+474 164 m
+gs 1 -1 scale (== 0?) col-1 show gr
+/Times-Roman findfont 12.00 scalefont setfont
+192 215 m
+gs 1 -1 scale (==) col-1 show gr
+/Times-Roman findfont 18.00 scalefont setfont
+369 335 m
+gs 1 -1 scale (Return) col-1 show gr
+/Times-BoldItalic findfont 18.00 scalefont setfont
+487 355 m
+gs 1 -1 scale (~USER) col-1 show gr
+/Courier-Bold findfont 18.00 scalefont setfont
+549 354 m
+gs 1 -1 scale (.mailspool/) col-1 show gr
+/Courier-Bold findfont 18.00 scalefont setfont
+542 354 m
+gs 1 -1 scale (/) col-1 show gr
+/Courier findfont 11.00 scalefont setfont
+461 264 m
+gs 1 -1 scale (.mailspool/) col-1 show gr
+/Courier findfont 12.00 scalefont setfont
+459 263 m
+gs 1 -1 scale (/) col-1 show gr
+/Times-Italic findfont 12.00 scalefont setfont
+424 264 m
+gs 1 -1 scale (~USER) col-1 show gr
+/Courier findfont 12.00 scalefont setfont
+207 215 m
+gs 1 -1 scale (home) col-1 show gr
+/Times-Roman findfont 12.00 scalefont setfont
+239 215 m
+gs 1 -1 scale (?) col-1 show gr
+/Times-Italic findfont 12.00 scalefont setfont
+155 215 m
+gs 1 -1 scale (NAME) col-1 show gr
+/Times-Roman findfont 18.00 scalefont setfont
+341 194 m
+gs 1 -1 scale (Return) col-1 show gr
+/Times-Italic findfont 12.00 scalefont setfont
+284 102 m
+gs 1 -1 scale (gid) col-1 show gr
+/Times-Roman findfont 12.00 scalefont setfont
+302 103 m
+gs 1 -1 scale (== HLFS_GID?) col-1 show gr
+/Times-Roman findfont 12.00 scalefont setfont
+474 249 m
+gs 1 -1 scale (Is) col-1 show gr
+/Courier-Bold findfont 18.00 scalefont setfont
+322 354 m
+gs 1 -1 scale (/var/alt_mail/) col-1 show gr
+/Times-BoldItalic findfont 18.00 scalefont setfont
+189 354 m
+gs 1 -1 scale (NAME) col-1 show gr
+/Times-BoldItalic findfont 18.00 scalefont setfont
+6 353 m
+gs 1 -1 scale (~NAME) col-1 show gr
+/Courier-Bold findfont 18.00 scalefont setfont
+69 353 m
+gs 1 -1 scale (/) col-1 show gr
+/Courier-Bold findfont 18.00 scalefont setfont
+73 353 m
+gs 1 -1 scale (.mailspool/) col-1 show gr
+/Courier-Bold findfont 18.00 scalefont setfont
+300 214 m
+gs 1 -1 scale (/.mailspool/) col-1 show gr
+$F2psEnd
+%%EndDocument
+ @endspecial 371 1515 a Fl(Figure)g(1:)j Fk(Hlfsd)c Fl(resolving)h(the)g
+Fh(NAME)g Fl(comp)q(onen)o(t)f(of)h Fk(/mail/)p Fh(NAME)p 75
+1565 V 175 1707 a Fl(The)c Fk(hlfsd)f Fl(serv)o(er)j(\014nds)f(out)f(the)h
+Fh(uid)782 1692 y Fg(2)810 1707 y Fl(of)f(the)h(pro)q(cess)h(that)e(is)g
+(accessing)h(its)g(moun)o(t)d(p)q(oin)o(t,)i(and)g(resolv)o(es)75
+1756 y(the)j(pathname)e(comp)q(onen)o(t)g Fk(home)g Fl(as)i(a)f(sym)o(b)q
+(olic)e(link)h(to)h(a)g(sub)q(directory)h(within)f(the)h(home)e(directory)h
+(giv)o(en)75 1806 y(b)o(y)18 b(the)h Fh(uid)p Fl('s)f(en)o(try)h(in)e(the)i
+(passw)o(ord)g(\014le.)30 b(See)19 b(T)m(able)f(1.)30 b(If)18
+b(the)h Fh(gid)f Fl(of)f(the)i(pro)q(cess)h(that)e(attempts)g(to)75
+1856 y(access)c(a)f(mailb)q(o)o(x)d(\014le)i(is)h(a)f(sp)q(ecial)h(one)g
+(\(called)f(HLFS)p 976 1856 13 2 v 16 w(GID\),)f(then)j(the)f(serv)o(er)h
+(maps)d(the)j(name)d(of)h(the)h(next)p 1795 1863 80 2 v 75
+1906 a(pathname)h(comp)q(onen)o(t)h(directly)h(to)g(the)g(user's)g(mailb)q(o)
+o(x)d(\(T)m(able)i(2\).)23 b(This)15 b(is)h(necessary)h(so)f(that)g(access)h
+(to)75 1956 y(a)d(mailb)q(o)o(x)e(\014le)i(b)o(y)h(users)h(other)f(than)g
+(the)g(o)o(wner)g(can)f(succeed.)23 b(The)15 b(serv)o(er)h(has)f(safet)o(y)f
+(features)i(in)e(case)i(of)75 2006 y(failures)d(suc)o(h)i(as)f(h)o(ung)g
+(\014lesystems)g(or)g(home)e(directory)j(\014lesystems)f(that)g(are)g
+(inaccessible)h(or)f(full.)175 2080 y(On)20 b(most)f(of)g(our)h(mac)o(hines,)
+g(mail)e(gets)j(deliv)o(ered)f(to)g(the)h(directory)f Fk(/var/spool/mail)p
+Fl(.)1720 2065 y Fg(3)1772 2080 y Fl(Man)o(y)75 2130 y(programs,)12
+b(including)g(UAs,)i(dep)q(end)h(on)e(that)h(path.)k Fk(Hlfsd)12
+b Fl(creates)k(a)d(directory)h Fk(/mail)p Fl(,)f(and)g(moun)o(ts)f(itself)75
+2180 y(on)18 b(top)h(of)f(that)h(directory)m(.)32 b Fk(Hlfsd)18
+b Fl(implem)o(en)o(ts)f(the)i(path)g(name)e(comp)q(onen)o(t)h(called)g
+Fk(home)p Fl(,)h(p)q(oin)o(ting)e(to)75 2230 y(a)f(sub)q(directory)j(of)d
+(the)h(user's)h(home)e(directory)m(.)27 b(W)m(e)16 b(ha)o(v)o(e)h(made)e
+Fk(/var/spool/mail)f Fl(a)i(sym)o(b)q(olic)f(link)h(to)75 2280
+y Fk(/mail/home)p Fl(,)d(so)i(that)g(accessing)h Fk(/var/spool/mail)c
+Fl(actually)i(causes)i(access)h(to)e(a)g(sub)q(directory)h(within)e(a)75
+2329 y(user's)h(home)e(directory)m(.)175 2404 y(The)20 b(rest)h(of)f(this)g
+(pap)q(er)g(is)g(organized)g(as)g(follo)o(ws.)35 b(Section)21
+b(2)e(discusses)j(in)e(detail)f(the)i(problems)75 2454 y(and)e(limitations)d
+(of)j(other)h(home-mai)o(l-deli)o(v)o(ery)d(metho)q(ds.)34
+b(Section)19 b(3)g(detail)g(the)h(design)f(of)g(the)h Fh(Home-)p
+75 2488 720 2 v 121 2515 a Ff(1)139 2527 y Fe(In)10 b(Figure)g(1,)h
+Fd(~)p Fc(NAME)h Fe(is)f(the)g(home)f(directory)e(of)j(the)g(user)f(whose)h
+(user-name)d(is)j Fc(NAME)p Fe(;)i Fd(~)p Fc(USER)e Fe(is)h(the)e(home)g
+(directory)75 2566 y(of)h(the)g(user)g(with)g(user-id)f Fc(uid)p
+Fe(.)121 2594 y Ff(2)139 2606 y Fe(NFS)h(uses)g(e\013ectiv)o(e)e
+Fc(uids)p Fe(.)121 2634 y Ff(3)139 2646 y Fe(Other)i(directories)f(used)h
+(for)g(this)h(purp)q(ose)e(are)h Fd(/var/mail)f Fe(on)h(SVR4,)h
+Fd(/usr/mail)d Fe(on)j(other)f(System)f(V-based)h(op)q(erating-)75
+2685 y(systems,)f(and)g Fd(/usr/spool/)o(mai)o(l)f Fe(on)i(BSD-based)e
+(systems.)965 2825 y Fl(2)p eop
+%%Page: 3 3
+bop 75 4 1800 5 v 229 58 a Fl(Conditions:)17 b Fh(uid)p Fl(=)p
+Fk(ezk)p Fl(,)c Fh(gid)p Fi(6)p Fl(=HLFS)p 828 58 13 2 v 16
+w(GID,)f(and)i Fk(/users/ezk/.mailsp)o(ool/)c Fl(is)k(writable.)p
+157 77 1636 2 v 156 127 2 50 v 165 127 V 190 112 a Fm(Resolving)p
+453 127 V 1088 127 V 1784 127 V 1793 127 V 156 177 V 165 177
+V 190 162 a(comp)q(onen)o(t)p 453 177 V 58 w(P)o(athname)g(left)p
+1088 177 V 337 w(V)l(alue)h(if)g(sym)o(b)q(olic)f(link)p 1784
+177 V 1793 177 V 157 179 1636 2 v 157 189 V 156 238 2 50 v
+165 238 V 190 223 a Fk(/)p 453 238 V 267 w(var/mail/)p Fh(NAME)p
+1088 238 V 1784 238 V 1793 238 V 157 240 1636 2 v 156 290 2
+50 v 165 290 V 190 275 a Fk(var)p Fl(/)p 453 290 V 202 w Fk(mail/)p
+Fh(NAME)p 1088 290 V 1784 290 V 1793 290 V 157 291 1636 2 v
+156 341 2 50 v 165 341 V 190 326 a Fk(mail)p Fl(@)p 453 341
+V 169 w Fk(/mail/home/)p Fh(NAME)p 1088 341 V 265 w Fk(mail)p
+Fl(@)g Fi(\))f Fk(/mail/home)p 1784 341 V 1793 341 V 157 343
+1636 2 v 156 393 2 50 v 165 393 V 190 378 a(/)p 453 393 V 267
+w(mail/home/)p Fh(NAME)p 1088 393 V 1784 393 V 1793 393 V 157
+394 1636 2 v 156 444 2 50 v 165 444 V 190 429 a Fk(mail)p Fl(/)p
+453 444 V 180 w Fk(home/)p Fh(NAME)p 1088 444 V 1784 444 V
+1793 444 V 157 446 1636 2 v 156 496 2 50 v 165 496 V 190 481
+a Fk(home)p Fl(@)p 453 496 V 169 w Fh(NAME)p 1088 496 V 507
+w Fk(home)p Fl(@)h Fi(\))f Fk(/users/ezk/.mailsp)o(ool)p 1784
+496 V 1793 496 V 157 497 1636 2 v 156 547 2 50 v 165 547 V
+190 532 a(/)p 453 547 V 267 w(users/ezk/.mailsp)o(ool/)o Fh(NAME)p
+1088 547 V 1784 547 V 1793 547 V 157 549 1636 2 v 156 599 2
+50 v 165 599 V 190 584 a Fk(users)p Fl(/)p 453 599 V 158 w
+Fk(ezk/.mailspool/)p Fh(NA)o(ME)p 1088 599 V 1784 599 V 1793
+599 V 157 600 1636 2 v 156 650 2 50 v 165 650 V 190 635 a Fk(ezk)p
+Fl(/)p 453 650 V 202 w Fk(.mailspool/)p Fh(NAME)p 1088 650
+V 1784 650 V 1793 650 V 157 652 1636 2 v 156 702 2 50 v 165
+702 V 190 687 a Fk(.mailspool)p Fl(/)p 453 702 V 48 w Fh(NAME)p
+1088 702 V 1784 702 V 1793 702 V 157 703 1636 2 v 156 753 2
+50 v 165 753 V 190 738 a(NAME)p 453 753 V 1088 753 V 1784 753
+V 1793 753 V 157 755 1636 2 v 290 829 a Fl(T)m(able)g(1:)18
+b(Resolving)13 b Fk(/var/mail/)p Fh(NAME)f Fl(to)h Fk(/users/ezk/.mailspo)o
+(ol/)p Fh(NAME)p 75 879 1800 5 v 75 1000 a(Link)19 b(File)f(System)h
+Fl(and)f(Section)g(4)g(describ)q(es)i(the)f(implemen)o(tation)c(of)i
+Fk(hlfsd)o Fl(.)31 b(Section)19 b(5)f(ev)n(aluates)g(our)75
+1050 y(implemen)o(tatio)o(n.)e(Related)d(systems,)h(conclusions,)g(future)g
+(directions,)g(and)g(alternativ)o(e)g(uses)h(are)f(describ)q(ed)75
+1100 y(in)f(Sections)i(6)f(and)f(7.)75 1208 y Fj(2)56 b(Bac)n(kground)175
+1283 y Fl(This)16 b(section)h(pro)o(vides)f(an)g(in-depth)g(discussion)h(of)f
+(wh)o(y)g(a)o(v)n(ailable)d(metho)q(ds)j(for)g(deliv)o(ering)g(mail)d(to)75
+1333 y(home)g(directories)i(are)f(not)g(as)g(go)q(o)q(d)f(as)h(the)h(one)f
+(used)h(b)o(y)e Fk(hlfsd)o Fl(.)75 1441 y Fj(2.1)56 b(Single-Host)17
+b(Mail)h(Sp)r(o)r(ol)g(Directory)175 1516 y Fl(The)d(most)e(common)f(metho)q
+(d)i(for)g(mail)e(deliv)o(ery)i(is)h(for)f(mail)e(to)i(b)q(e)h(app)q(ended)h
+(to)f(a)f(mailb)q(o)o(x)e(\014le)i(in)g(a)75 1566 y(standard)d(sp)q(o)q(ol)f
+(directory)h(on)f(the)h(designated)g(\\mail)c(home")i(mac)o(hine)g(of)h(the)h
+(user.)17 b(The)11 b(greatest)h(adv)n(an)o(tage)75 1616 y(of)i(this)h(metho)q
+(d)f(is)g(that)h(it)f(is)h(the)g(default)f(metho)q(d)g(most)g(v)o(endors)h
+(pro)o(vide)g(with)f(their)h(systems,)g(th)o(us)g(v)o(ery)75
+1665 y(little)h(\(if)g(an)o(y\))g(con\014guration)g(is)h(required)g(on)f(the)
+i(SA's)e(part.)26 b(All)16 b(they)h(need)h(to)e(set)i(up)e(are)h(mail)d
+(aliases)75 1715 y(directing)g(mail)c(to)j(the)h(host)g(on)f(whic)o(h)g(the)h
+(user's)h(mailb)q(o)o(x)10 b(\014le)k(is)f(assigned.)18 b(\(Otherwise,)d
+(mail)10 b(is)j(deliv)o(ered)75 1765 y(lo)q(cally)m(,)f(and)h(users)j(\014nd)
+e(mailb)q(o)o(xes)d(on)j(man)o(y)e(mac)o(hines.\))175 1840
+y(As)k(users)i(b)q(ecome)e(more)f(sophisticated,)i(and)f(aided)g(b)o(y)g
+(windo)o(wing)f(systems,)i(they)f(\014nd)h(themselv)o(es)75
+1890 y(logging)12 b(in)i(on)g(m)o(ultiple)e(hosts)j(at)f(once,)g(p)q
+(erforming)f(sev)o(eral)i(tasks)g(concurren)o(tly)m(.)k(They)c(ask)f(to)g(b)q
+(e)h(able)f(to)75 1939 y(read)g(their)h(mail)c(on)j(an)o(y)f(host)h(on)g(the)
+g(net)o(w)o(ork,)g(not)g(just)g(the)g(one)g(designated)h(as)f(their)g(\\mail)
+d(home.")75 2047 y Fj(2.2)56 b(Cen)n(tralized)18 b(Mail)g(Sp)r(o)r(ol)f
+(Directory)175 2122 y Fl(A)f(p)q(opular)g(metho)q(d)f(for)h(pro)o(viding)f
+(mail)f(readabilit)o(y)h(from)g(an)o(y)h(host)g(is)g(to)h(ha)o(v)o(e)f(all)f
+(mail)e(deliv)o(ered)75 2172 y(to)18 b(a)g(mail)e(sp)q(o)q(ol)i(directory)h
+(on)f(a)g(designated)h(\\mail-serv)o(er")e(whic)o(h)h(is)g(exp)q(orted)h(via)
+f(NFS)g(to)h(all)e(of)g(the)75 2222 y(hosts)f(on)g(the)g(net)o(w)o(ork.)24
+b(Con\014guring)15 b(suc)o(h)h(a)f(system)h(is)f(relativ)o(ely)g(easy)m(.)24
+b(On)16 b(most)e(systems,)i(the)g(bulk)g(of)75 2272 y(the)i(w)o(ork)f(is)h(a)
+f(one-time)f(addition)g(to)i(one)f(or)h(t)o(w)o(o)f(con\014guration)g
+(\014les)h(in)f Fk(/etc)p Fl(.)28 b(The)17 b(\014le-serv)o(er's)i(sp)q(o)q
+(ol)75 2322 y(directory)d(is)f(then)h(hard-moun)o(ted)e(across)i(ev)o(ery)g
+(mac)o(hine)e(on)h(the)h(lo)q(cal)e(net)o(w)o(ork.)22 b(In)16
+b(small)d(en)o(vironmen)o(ts)75 2371 y(with)f(only)g(a)g(handful)g(of)g
+(hosts)h(this)f(can)h(b)q(e)g(an)f(acceptable)i(solution.)i(In)d(our)f
+(departmen)o(t,)h(with)f(a)g(couple)h(of)75 2421 y(h)o(undred)j(activ)o(e)f
+(hosts)h(and)f(thousands)g(of)g(mail)d(messages)j(pro)q(cessed)j(daily)m(,)13
+b(this)i(w)o(as)g(deemed)g(completely)75 2471 y(unacceptable,)g(as)f(it)f(in)
+o(tro)q(duced)i(sev)o(eral)f(t)o(yp)q(es)h(of)e(problems:)137
+2587 y Fi(\017)21 b Fm(Scalabili)o(t)o(y)12 b(and)i(P)o(erformance)p
+Fl(:)h(as)d(more)g(and)h(more)f(mac)o(hines)g(get)h(added)g(to)g(the)g(net)o
+(w)o(ork,)g(more)179 2637 y(mail)7 b(tra\016c)j(has)g(to)g(go)f(o)o(v)o(er)h
+(NFS)g(to)g(and)g(from)e(the)j(mail-serv)o(er.)k(Users)c(lik)o(e)f(to)f(run)i
+(mail-w)o(a)o(tc)o(hers[2)n(,)f(7)o(])179 2687 y(and)g(read)i(their)f(mail)d
+(often.)17 b(The)11 b(stress)i(on)d(the)i(shared)g(infrastructure)g
+(increases)g(with)f(ev)o(ery)g(user)h(and)965 2825 y(3)p eop
+%%Page: 4 4
+bop 179 42 a Fl(host)14 b(added;)f(loads)g(on)h(the)g(mail)d(serv)o(er)k(w)o
+(ould)e(most)f(certainly)i(b)q(e)g(high)f(since)i(all)d(mail)f(deliv)o(ery)j
+(go)q(es)179 91 y(through)i(that)h(one)g(mac)o(hine.)672 76
+y Fg(4)715 91 y Fl(This)g(leads)g(to)f(lo)o(w)o(er)g(reliabilit)o(y)f(and)h
+(p)q(erformance.)26 b(T)m(o)16 b(reduce)i(the)179 141 y(n)o(um)o(b)q(er)11
+b(of)g(concurren)o(t)j(connections)f(b)q(et)o(w)o(een)g(clien)o(ts)f(and)g
+(the)h(serv)o(er)g(host,)f(some)f(SAs)i(ha)o(v)o(e)e(resorted)179
+191 y(to)16 b(automoun)o(ting)e(the)j(mail-sp)q(o)q(ol)c(directory)m(.)26
+b(But)17 b(this)g(solution)e(only)h(mak)o(es)f(things)h(w)o(orse:)24
+b(since)179 241 y(users)15 b(often)e(run)h(mail)d(w)o(atc)o(hers,)j(and)f
+(man)o(y)e(p)q(opular)i(applications)g(suc)o(h)h(as)f Fk(trn)p
+Fl(,)g Fk(emacs)p Fl(,)f Fk(csh)g Fl(or)i Fk(ksh)179 291 y
+Fl(c)o(hec)o(k)h(p)q(erio)q(dically)f(for)g(new)h(mail,)d(the)j(automoun)o
+(ted)e(directory)i(w)o(ould)f(b)q(e)h(e\013ectiv)o(ely)h(p)q(ermanen)o(tly)
+179 340 y(moun)o(ted.)g(If)c(it)g(gets)i(unmoun)o(ted)d(automatically)e(b)o
+(y)k(the)g(automoun)o(ter)e(program[3)n(],)h(it)g(is)g(most)f(lik)o(ely)179
+390 y(to)17 b(get)h(moun)o(ted)e(shortly)i(afterw)o(ards,)g(consuming)e(more)
+h(I/O)g(resources)j(b)o(y)d(the)h(constan)o(t)g(cycle)h(of)179
+440 y Fk(mount)13 b Fl(and)g Fk(umount)g Fl(calls.)137 523
+y Fi(\017)21 b Fm(Reliabil)o(i)o(t)o(y)p Fl(:)16 b(the)f(mail-serv)o(er)f
+(host)h(and)f(its)h(net)o(w)o(ork)f(connectivit)o(y)h(m)o(ust)f(b)q(e)h(v)o
+(ery)g(reliable.)k(W)m(orse,)179 573 y(since)g(the)g(sp)q(o)q(ol)f(directory)
+h(has)f(to)g(b)q(e)h(hard-moun)o(ted,)1117 558 y Fg(5)1153
+573 y Fl(man)o(y)d(pro)q(cesses)21 b(whic)o(h)d(access)i(the)f(sp)q(o)q(ol)
+179 623 y(directory)f(\(v)n(arious)e(shells,)i Fk(login)p Fl(,)f
+Fk(emacs)p Fl(,)f(etc.\))30 b(w)o(ould)16 b(b)q(e)i(h)o(ung)f(as)g(long)g(as)
+g(connectivit)o(y)g(to)g(the)179 672 y(mail-serv)o(er)9 b(is)h(sev)o(ered.)19
+b(T)m(o)10 b(impro)o(v)o(e)f(reliabilit)o(y)m(,)f(SAs)j(ma)o(y)e(c)o(ho)q
+(ose)i(to)f(bac)o(kup)h(the)g(mail-serv)o(er's)e(sp)q(o)q(ol)179
+722 y(partition)16 b(sev)o(eral)h(times)g(a)f(da)o(y)m(.)27
+b(This)17 b(ma)o(y)e(mak)o(e)g(things)i(w)o(orse)h(since)f(reading)g(or)g
+(deliv)o(ering)g(mail)179 772 y(while)e(bac)o(kups)h(are)g(in)f(progress)i
+(ma)o(y)d(cause)j(bac)o(kups)f(to)f(b)q(e)i(inconsisten)o(t;)f(more)f(bac)o
+(kups)h(consume)179 822 y(more)d(bac)o(kup-media)f(resources,)k(and)d
+(increase)j(the)e(load)f(on)h(the)g(mail-serv)o(er)f(host.)75
+946 y Fj(2.3)56 b(Distributed)17 b(Mail)h(Sp)r(o)r(ol)g(Service)175
+1022 y Fl(Despite)d(the)f(existence)i(of)e(a)g(few)g(systems)h(that)f(supp)q
+(ort)h(deliv)o(ery)f(to)h(users')g(home)e(directories,)1763
+1007 y Fg(6)1797 1022 y Fl(mail)75 1071 y(deliv)o(ery)18 b(to)f(home)g
+(directories)i(hasn't)e(caugh)o(t)h(on.)29 b(W)m(e)17 b(b)q(eliev)o(e)i(the)f
+(main)d(reason)k(is)e(that)h(there)h(are)f(to)q(o)75 1121 y(man)o(y)12
+b(programs)h(that)h(\\kno)o(w")g(where)h(mailb)q(o)o(x)c(\014les)k(reside.)20
+b(Besides)15 b(the)g(ob)o(vious)f(\(the)h(deliv)o(ery)f(program)75
+1171 y Fk(/bin/mail)9 b Fl(and)i(mail)e(readers)k(lik)o(e)d
+Fk(/usr/ucb/Mail)p Fl(,)f Fk(mush)p Fl(,)h Fk(mm)p Fl(,)h(etc.\),)h(other)g
+(programs)e(that)h(kno)o(w)g(mailb)q(o)o(x)75 1221 y(lo)q(cation)g(are)g
+Fk(login)p Fl(,)g Fk(from)p Fl(,)g(almost)e(ev)o(ery)j(shell,)g
+Fk(xbiff)p Fl(,)e Fk(xmailbox)p Fl(,)g(and)h(ev)o(en)h(some)f(programs)f(not)
+i(directly)75 1271 y(related)h(to)g(mail,)c(suc)o(h)14 b(as)f
+Fk(emacs)e Fl(and)i Fk(trn)p Fl(.)k(Although)12 b(some)f(of)h(these)i
+(programs)e(can)h(b)q(e)g(con\014gured)g(to)g(lo)q(ok)75 1320
+y(in)18 b(di\013eren)o(t)h(directories)g(with)f(the)g(use)h(of)e(en)o
+(vironmen)o(t)g(v)n(ariables)h(and)g(other)g(resources,)j(man)o(y)16
+b(of)i(them)75 1370 y(cannot.)g(The)d(o)o(v)o(erall)d(p)q(orting)i(w)o(ork)f
+(is)h(signi\014can)o(t.)175 1445 y(Other)g(metho)q(ds)f(that)g(ha)o(v)o(e)g
+(y)o(et)g(to)g(catc)o(h)h(on)f(require)h(the)g(use)g(of)e(a)h(sp)q(ecial)h
+(mail-reading)c(serv)o(er,)k(suc)o(h)75 1495 y(as)g(IMAP[16)o(])f(or)h(POP)q
+([17)o(].)j(The)d(main)e(disadv)n(an)o(tage)h(of)g(these)i(systems)f(is)f
+(that)h(UAs)g(need)h(to)e(b)q(e)h(mo)q(di\014ed)75 1545 y(to)i(use)h(these)g
+(services)h(|)d(a)h(long)f(and)h(in)o(v)o(olv)o(ed)f(task.)24
+b(That)16 b(is)g(wh)o(y)f(they)i(are)f(not)g(p)q(opular)g(at)g(this)g(time.)
+75 1594 y(See)f(Section)f(6.1)f(for)h(more)e(details.)175 1669
+y(Sev)o(eral)h(other)i(ideas)e(ha)o(v)o(e)h(b)q(een)g(prop)q(osed)h(and)e(ev)
+o(en)h(used)h(in)e(v)n(arious)g(en)o(vironmen)o(ts.)k(None)d(of)f(them)75
+1719 y(is)g(robust.)18 b(They)c(are)g(mostly)d(v)o(ery)j(sp)q(ecialized,)f
+(in\015exible,)g(and)g(do)g(not)g(extend)h(to)f(the)h(general)f(case.)19
+b(Some)75 1769 y(of)13 b(the)i(ideas)f(are)g(plain)f(bad,)g(p)q(oten)o
+(tially)g(leading)g(to)h(lost)f(or)h(corrupt)h(mail:)137 1885
+y Fi(\017)21 b Fm(automoun)o(ter)o(s)p Fl(:)14 b(using)f(an)f(automoun)o(ter)
+f(suc)o(h)i(as)g Fk(amd)p Fl([13)n(])f(to)g(pro)o(vide)g(a)g(set)i(of)d(sym)o
+(b)q(olic)g(links)h(from)179 1935 y(the)h(normal)e(sp)q(o)q(ol)i(directory)g
+(to)g(user)h(home)d(directories)j(is)f(not)g(su\016cien)o(t.)18
+b(UAs)13 b(rename,)f(unlink,)g(and)179 1985 y(recreate)20 b(the)f(mailb)q(o)o
+(x)c(as)k(a)f(regular)g(\014le,)h(therefore)g(it)f(m)o(ust)f(b)q(e)i(a)f
+(real)g(\014le,)h(not)f(a)g(sym)o(b)q(olic)e(link.)179 2034
+y(F)m(urthermore,)d(it)g(m)o(ust)f(reside)j(in)e(a)g(real)g(directory)i(whic)
+o(h)e(is)g(writable)g(b)o(y)h(the)g(UAs)g(and)f(MT)m(As.)18
+b(This)179 2084 y(metho)q(d)c(ma)o(y)g(also)h(require)h(p)q(opulating)e
+Fk(/var/spool/mail)e Fl(with)j(sym)o(b)q(olic)f(links)h(and)g(making)e(sure)
+179 2134 y(they)j(are)g(up)q(dated.)24 b(Making)15 b Fk(amd)g
+Fl(manage)f(that)i(directory)g(directly)g(fails,)f(since)i(man)o(y)c(v)n
+(arious)i(lo)q(c)o(k)179 2184 y(\014les)g(need)g(to)g(b)q(e)g(managed)e(as)h
+(w)o(ell)g(\(see)i(Section)f(4.6\).)k(Also,)14 b Fk(amd)g Fl(do)q(es)h(not)g
+(pro)o(vide)f(all)g(of)g(the)h(NFS)179 2234 y(op)q(erations)f(whic)o(h)g(are)
+g(required)h(to)f(write)g(mail)d(suc)o(h)k(as)f Fh(write)p
+Fl(,)e Fh(cr)n(e)n(ate)p Fl(,)h Fh(r)n(emove)p Fl(,)g(and)g
+Fh(unlink)p Fl(.)137 2317 y Fi(\017)21 b Fm($MAIL)p Fl(:)15
+b(setting)g(this)h(v)n(ariable)e(to)h(an)h(automoun)o(ted)e(directory)i(p)q
+(oin)o(ting)e(to)h(the)h(user's)g(mail)d(sp)q(o)q(ol)179 2367
+y(host)g(only)f(solv)o(es)i(the)f(problem)f(for)h(those)g(programs)f(whic)o
+(h)h(kno)o(w)f(and)h(use)h($MAIL.)f(Man)o(y)f(programs)179
+2416 y(don't,)j(therefore)i(this)e(solution)g(is)g(partial)g(and)g(of)g
+(limited)e(\015exibilit)o(y)m(.)21 b(Also,)15 b(it)g(requires)i(the)f(SAs)g
+(or)179 2466 y(the)e(users)i(to)d(set)i(it)f(themselv)o(es)g(|)f(an)h(added)g
+(lev)o(el)f(of)h(incon)o(v)o(enience)g(and)g(p)q(ossible)g(failures.)p
+75 2501 720 2 v 121 2528 a Ff(4)139 2539 y Fe(Deliv)o(ery)8
+b(via)i(NFS-moun)o(ted)e(\014lesystems)h(ma)o(y)g(require)g(usage)h(of)g
+Fd(rpc.lockd)e Fe(and)i Fd(rpc.statd)d Fe(to)k(pro)o(vide)d(distributed)g
+(\014le-)75 2579 y(lo)q(c)o(king,)j(b)q(oth)g(of)i(whic)o(h)f(are)g(widely)f
+(regarded)g(as)h(unstable)f(and)g(unreliable.)16 b(F)m(urthermore,)10
+b(this)i(will)h(degrade)d(p)q(erformance)o(,)75 2618 y(as)h(lo)q(cal)g(pro)q
+(cesses)e(as)i(w)o(ell)h(as)f(remote)f Fd(nfsd)g Fe(pro)q(cesses)g(are)h(k)o
+(ept)f(busy)m(.)121 2646 y Ff(5)139 2658 y Fe(No)h(SA)h(in)f(their)g(righ)o
+(t)f(minds)g(w)o(ould)h(soft-moun)o(t)e(read/write)g(partitions)g(|)j(the)f
+(c)o(hances)e(for)i(data)g(loss)g(are)g(to)q(o)f(great.)121
+2686 y Ff(6)139 2697 y Fe(AIX)i(1.2's)e Fd(bellmail)f Fe(for)i(the)g(IBM)h
+(PS/2)p Fc(s)p Fe([9)n(],)f Fd(/bin/mail)e Fe(on)i(SunOS)f(for)h(the)g(Sun)f
+(386i)h(mac)o(hines,)e(and)h Fd(zmailer)p Fe([27)m(].)965 2825
+y Fl(4)p eop
+%%Page: 5 5
+bop 137 42 a Fi(\017)21 b Fm(/bin/mail)o Fl(:)h(using)17 b(a)g(di\013eren)o
+(t)h(mail)d(deliv)o(ery)i(agen)o(t)g(could)g(b)q(e)h(the)g(solution.)27
+b(One)18 b(suc)o(h)g(example)179 91 y(is)h Fk(hdmail)p Fl([6)n(].)34
+b(Ho)o(w)o(ev)o(er,)21 b Fk(hdmail)d Fl(still)h(requires)h(mo)q(difying)d
+(all)h(UAs,)j(the)f(MT)m(A's)f(con\014guration,)179 141 y(installing)c(new)i
+(daemons,)e(and)i(c)o(hanging)e(login)h(scripts.)27 b(This)16
+b(mak)o(es)g(the)h(system)f(less)h(upgradable)179 191 y(or)f(compatible)f
+(with)i(others,)h(and)e(adds)h(one)g(more)f(complicated)f(system)h(for)h(SAs)
+g(to)f(deal)h(with.)26 b(It)179 241 y(is)14 b(not)g(a)g(complete)g(solution)g
+(b)q(ecause)i(it)e(still)f(requires)j(eac)o(h)f(user)g(ha)o(v)o(e)g(their)f
+($MAIL)h(v)n(ariable)e(setup)179 291 y(correctly)m(,)h(and)g(that)g(ev)o(ery)
+g(program)e(use)j(this)f(v)n(ariable.)75 415 y Fj(2.3.1)55
+b(Wh)n(y)19 b(Deliv)n(er)e(In)n(to)i(the)f(Home)f(Directory?)175
+490 y Fl(There)g(are)f(sev)o(eral)g(ma)r(jor)e(reasons)j(wh)o(y)f(SAs)g(migh)
+o(t)e(w)o(an)o(t)h(to)h(deliv)o(er)g(mail)d(directly)j(in)o(to)f(the)i
+(users')75 540 y(home)c(directories:)137 656 y Fi(\017)21 b
+Fm(Lo)q(cation)p Fl(:)16 b(man)o(y)c(mail)g(readers)j(need)g(to)f(mo)o(v)o(e)
+e(mail)f(from)h(the)j(sp)q(o)q(ol)e(directory)i(to)f(the)g(user's)h(home)179
+706 y(directory)m(.)j(It)13 b(sp)q(eeds)h(up)f(this)g(op)q(eration)g(if)e
+(the)j(t)o(w)o(o)e(are)h(on)g(the)g(same)f(\014lesystem.)18
+b(If)12 b(for)g(some)g(reason)179 756 y(the)19 b(user's)g(home)e(directory)i
+(is)g(inaccessible,)h(it)e(isn't)g(that)g(useful)g(to)h(b)q(e)g(able)f(to)g
+(read)h(mail,)d(since)179 806 y(there)f(is)e(no)g(place)h(to)f(mo)o(v)o(e)f
+(it)i(to.)737 791 y Fg(7)773 806 y Fl(In)f(some)g(cases,)i(trying)e(to)g(mo)o
+(v)o(e)f(mail)f(to)i(a)h(non-existen)o(t)g(or)f(h)o(ung)179
+856 y(\014lesystem)g(ma)o(y)f(result)j(in)f(mail)d(loss.)137
+939 y Fi(\017)21 b Fm(Distrib)o(uti)o(on)o Fl(:)27 b(ha)o(ving)19
+b(all)f(mail)f(sp)q(o)q(ol)j(directories)h(spread)f(among)e(the)i(man)o(y)e
+(more)h(\014lesystems)179 988 y(minim)o(izes)14 b(the)j(c)o(hances)h(that)f
+(complete)f(en)o(vironmen)o(ts)g(will)f(grind)h(to)g(a)g(halt)g(when)h(a)f
+(single)g(serv)o(er)179 1038 y(is)e(do)o(wn.)19 b(It)c(do)q(es)g(increase)g
+(the)g(c)o(hance)h(that)e(there)i(will)d(b)q(e)i(someone)f(who)g(is)g(not)g
+(able)g(to)h(read)g(their)179 1088 y(mail)d(when)j(a)g(mac)o(hine)e(is)i(do)o
+(wn,)f(but)h(that)g(is)g(usually)f(preferred)j(to)d(ha)o(ving)g(no)h(one)g(b)
+q(e)g(able)g(to)f(read)179 1138 y(their)j(mail)e(b)q(ecause)k(a)d(cen)o
+(tralized)i(mail)d(serv)o(er)k(is)d(do)o(wn.)28 b(The)17 b(problem)f(of)h
+(losing)f(some)g(mail)e(due)179 1188 y(to)i(the)h(\(presumably\))f(higher)g
+(c)o(hances)i(that)e(a)g(user's)i(mac)o(hine)d(is)h(do)o(wn)g(is)g(minimi)o
+(zed)e(in)i(HLFS)h(as)179 1237 y(describ)q(ed)e(in)f(Sections)h(4.3)d(and)i
+(4.4.)137 1320 y Fi(\017)21 b Fm(Securit)o(y)p Fl(:)e(deliv)o(ering)d(mail)d
+(to)j(users')g(home)f(directories)i(has)f(another)h(adv)n(an)o(tage)e(|)g
+(enhanced)i(se-)179 1370 y(curit)o(y)e(and)g(priv)n(acy)m(.)21
+b(Since)15 b(a)g(shared)h(system)f(mail)d(sp)q(o)q(ol)j(directory)h(has)f(to)
+g(b)q(e)h(w)o(orld-readable)e(and)179 1420 y(searc)o(hable,)376
+1405 y Fg(8)407 1420 y Fl(an)o(y)d(user)i(can)f(see)i(whether)f(other)f
+(users)h(ha)o(v)o(e)f(mail,)d(when)k(they)f(last)g(receiv)o(ed)h(new)f(mail,)
+179 1470 y(or)j(when)h(they)g(last)f(read)h(their)g(mail.)k(Programs)14
+b(suc)o(h)i(as)g Fk(finger)e Fl(displa)o(y)g(this)i(information,)c(whic)o(h)
+179 1520 y(some)f(consider)i(an)f(infringemen)o(t)f(of)h(priv)n(acy)m(.)k
+(While)c(it)g(is)g(p)q(ossible)g(to)g(disable)g(this)h(feature)g(of)e
+Fk(finger)179 1570 y Fl(so)16 b(that)f(remote)g(users)j(cannot)d(see)i(a)f
+(mailb)q(o)o(x)c(\014le's)k(status,)g(this)g(do)q(esn't)g(prev)o(en)o(t)h(lo)
+q(cal)e(users)i(from)179 1619 y(getting)d(the)g(information.)i(F)m
+(urthermore,)e(there)h(are)g(more)e(programs)g(whic)o(h)h(mak)o(e)e(use)j(of)
+f(this)g(infor-)179 1669 y(mation.)24 b(In)17 b(shared)h(en)o(vironmen)o(ts,)
+e(disabling)f(suc)o(h)j(programs)d(has)i(to)g(b)q(e)g(done)g(on)g(a)f
+(system-wide)179 1719 y(basis,)i(but)g(with)g(mail)d(deliv)o(ered)j(to)g
+(users')h(home)e(directories,)i(users)h(less)e(concerned)i(with)d(priv)n(acy)
+179 1769 y(who)f Fh(do)g Fl(w)o(an)o(t)f(to)h(let)g(others)h(kno)o(w)f(when)g
+(they)h(last)f(receiv)o(ed)h(or)f(read)g(mail)e(can)i(easily)f(do)h(so)g
+(using)179 1819 y(\014le)e(protection)i(bits.)k(Lastly)m(,)14
+b(on)g(systems)h(that)g(do)f(not)h(exp)q(ort)g(their)g(NFS)g(\014lesystem)f
+(with)h Fk(anon=0)p Fl(,)179 1868 y(sup)q(erusers)f(are)e(less)g(lik)o(ely)d
+(to)j(sno)q(op)f(around)g(others')h(mail,)d(as)i(they)h(b)q(ecome)f(\\nob)q
+(o)q(dies")g(across)h(NFS.)175 1985 y(In)j(summary)m(,)e(deliv)o(ering)i
+(mail)d(to)k(home)e(directories)j(pro)o(vides)f(users)h(the)f(functionalit)o
+(y)e(sough)o(t,)h(and)75 2034 y(also)e(a)o(v)o(oids)g(most)g(of)g(the)i
+(problems)e(discussed)i(in)f(Section)g(2.2.)75 2142 y Fj(3)56
+b(Design)175 2218 y Fl(W)m(e)16 b(named)f(our)h(\014le)h(system)f(the)h
+Fh(Home-Link)h(File)e(System)p Fl(,)h(b)q(ecause)h(that's)f(all)e(it)h(do)q
+(es)h(|)f(pro)o(vide)75 2267 y(sym)o(b)q(olic)11 b(links)g(to)i(\014les)f
+(and)h(directories)g(in)f(a)g(user's)i(home)d(directory)m(.)18
+b(The)13 b(soft)f(link)f(has)i(a)f(\014xed)h(name,)e(but)75
+2317 y(unlik)o(e)16 b(regular)h(soft)g(links,)f(what)h(it)f(p)q(oin)o(ts)h
+(to)f(is)h(\\dynamic")e(dep)q(ending)i(on)f(who)h(accesses)i(the)f(sym)o(b)q
+(olic)75 2367 y(link.)25 b(The)18 b(ideas)e(that)h(this)g(\014lesystem)f
+(represen)o(ts)k(are)d(not)f(limited)f(just)i(to)f(handling)g(electronic)h
+(mail)d(|)75 2417 y(that)g(is)g(only)f(one)h(application)e(of)i(this)g
+(\014lesystem.)j(See)e(Sections)g(7.1)e(and)g(7.2)g(for)h(other)g(ideas.)175
+2491 y(Our)g(k)o(ey)g(goals)f(in)g(designing)h(HLFS)g(w)o(ere:)p
+75 2526 720 2 v 121 2553 a Ff(7)139 2565 y Fe(This)e(assumes)f(that)h(they)g
+(can)g(login)f(to)i(a)f(di\013eren)o(t)f(host.)18 b(Some)11
+b(systems,)g(suc)o(h)h(as)h(HP-UX,)h(do)e(not)g(allo)o(w)g(login)g(if)g(they)
+75 2604 y(cannot)e Fd(chdir)g Fe(to)h(the)g(user's)f(home)g(directory)m(.)121
+2632 y Ff(8)139 2644 y Fe(System)g(V)i(has)g(the)f(mail)g(sp)q(o)q(ol)f
+(directory)g(only)h(group)f(writable)h(but)g(that)g(mak)o(es)f(it)i(more)f
+(di\016cult)g(to)g(install)g(other)f(UAs)75 2683 y(or)h(MT)m(As.)965
+2825 y Fl(5)p eop
+%%Page: 6 6
+bop 126 42 a Fl(1.)20 b(T)m(o)13 b(pro)o(vide)h(ev)o(ery)g(user)h(with)f(the)
+g(abilit)o(y)e(to)i(read)h(mail)c(from)h(an)o(y)h(host.)126
+125 y(2.)20 b(T)m(o)14 b(ensure)j(that)f(all)e(MT)m(As)h(and)g(UAs)h(in)f
+(use,)h(as)f(w)o(ell)g(as)g(an)o(y)g(other)h(utilities)f(whic)o(h)g(dep)q
+(end)h(on)f(the)179 174 y(standard)f(mail)d(sp)q(o)q(ol)i(directory)m(,)g
+(face)h(no)g(problems)e(from)g(the)i(c)o(hange)g(in)f(the)h(underlying)g
+(\014lesystem.)126 257 y(3.)20 b(T)m(o)13 b(minim)o(ize)e(the)k(p)q
+(ossibilit)o(y)e(of)g(mail)e(b)q(eing)j(lost)g(or)f(b)q(ouncing)h(bac)o(k)g
+(to)g(the)g(sender.)126 340 y(4.)20 b(T)m(o)13 b(pro)o(vide)h(more)e(priv)n
+(acy)i(for)f(users')i(mail)d(\014les.)175 457 y(Since)g(most)f(sites)i(pro)o
+(vide)f(access)i(to)e(users')i(home)c(directories)k(from)c(an)o(y)i(host,)g
+(it)g(made)f(sense)j(to)e(store)75 506 y(incoming)f(mail)g(there)k(as)f(w)o
+(ell.)j(That)c(w)o(a)o(y)m(,)f(as)i(long)f(as)g(users)i(could)f(log)e(in)o
+(to)h(a)h(host)f(and)h(access)h(their)f(home)75 556 y(directories)f(via)e
+(NFS,)h(their)g(mail)d(w)o(ould)i(b)q(e)h(accessible)h(as)f(w)o(ell.)17
+b(This)11 b(solv)o(ed)h(the)g(\014rst)h(problem.)j(Also,)11
+b(since)75 606 y(users)16 b(m)o(ust)e(login)f(in)i(order)g(to)g(read)g(their)
+g(mail,)d(causing)i(their)i(home)d(directories)j(to)f(b)q(e)g(automoun)o
+(ted,)e(no)75 656 y(extra)h(moun)o(ts)f(are)h(required)h(in)f(order)g(to)g(b)
+q(egin)g(reading)f(mail.)175 731 y(The)f(second)g(problem)f(w)o(as)g(solv)o
+(ed)h(b)o(y)f(making)e(sure)k(that)f(the)g(\014nal)f(access)j(of)d(the)h
+(mail)d(sp)q(o)q(ol)i(directory)75 780 y(remains)17 b(a)g(\\real")h
+(directory)g(\(not)g(a)g(read-only)f(pseudo-\014lesystem)i(pro)o(vided)f(b)o
+(y)f(an)h(automoun)o(ter\).)29 b(All)75 830 y(UAs)20 b(access)h(the)f(sp)q(o)
+q(ol)f(directory)h(for)f(reading)g(and)h(writing)e(the)i(user's)h(mail)16
+b(\014le)k(and)f(create)i(lo)q(c)o(k)e(\014les)75 880 y(there.)178
+865 y Fg(9)217 880 y Fl(That)14 b(means)f(that)h Fk(/var/spool/mail)d
+Fl(needs)16 b(to)e(b)q(e)g(readable,)g(writable,)g(and)g(searc)o(hable)h(for)
+e(UAs)75 930 y(and)i(MT)m(As)g(so)g(that)g(lo)q(c)o(k)f(\014les)h(can)g(b)q
+(e)h(written)f(and)g(remo)o(v)o(ed.)20 b(See)c(also)e(Section)i(4.6.)k(F)m
+(or)14 b(the)i(purp)q(ose)g(of)75 980 y(writing)g(the)i(mail)c(and)j(lo)q(c)o
+(k)g(\014les,)g(a)g(sub)q(directory)h(inside)f(the)h(user's)g(home)e
+(directory)i(is)e(su\016cien)o(t,)i(since)75 1029 y(it)d(is)f(already)h(o)o
+(wned)g(b)o(y)g(that)g(user.)22 b(Ensuring)15 b(that)g(users)i(cannot)e
+(access)i(other)e(users')h(\014les)g(can)f(easily)f(b)q(e)75
+1079 y(ac)o(hiev)o(ed)g(b)o(y)g(protecting)g(this)g(sub)q(directory)m(.)175
+1154 y(In)h(order)i(not)f(to)g(c)o(hange)g(the)g(b)q(eha)o(vior)g(of)f
+(programs)g(lik)o(e)g Fk(comsat)p Fl([21)m(,)h(23)o(],)g Fk(from)f
+Fl(or)g Fk(finger)p Fl(,)g(whic)o(h)75 1204 y(are)j(designed)g(to)g(read)g
+(an)o(y)f(user's)h(mail,)e(w)o(e)i(implem)o(en)o(ted)e(a)h(sp)q(ecial)h(c)o
+(hec)o(k)h(for)e(a)g(designated)h(group.)29 b(If)75 1254 y(the)17
+b(e\013ectiv)o(e)g Fh(gid)f Fl(of)g(the)g(pro)q(cess)i(is)e(the)h(designated)
+g(group,)f(w)o(e)g(assume)g(that)g(suc)o(h)h(a)e(sp)q(ecial)i(program)d(is)75
+1303 y(executing,)20 b(and)e Fk(hlfsd)f Fl(arranges)i(to)f(do)g(the)h(lo)q
+(okup)f(not)g(only)g(of)f(the)i(real)g(sp)q(o)q(ol)f(directory)m(,)h(but)g
+(of)e(the)75 1353 y(mailb)q(o)o(x)f(itself.)34 b(See)20 b(T)m(able)e(2.)33
+b(Note)20 b(that)f(this)g(metho)q(d)g(only)f(supp)q(orts)i(read)g(access)h
+(without)d(lo)q(c)o(king;)p 75 1415 1800 5 v 607 1469 a(Conditions:)f
+Fh(gid)p Fl(=HLFS)p 1027 1469 13 2 v 15 w(GID)d(for)f(an)o(y)h
+Fh(uid)p Fl(.)p 206 1487 1538 2 v 205 1537 2 50 v 214 1537
+V 239 1522 a Fm(Resolving)p 502 1537 V 919 1537 V 1735 1537
+V 1744 1537 V 205 1587 V 214 1587 V 239 1572 a(comp)q(onen)o(t)p
+502 1587 V 58 w(P)o(athname)g(left)p 919 1587 V 120 w(V)l(alue)g(if)h(sym)o
+(b)q(olic)f(link)p 1735 1587 V 1744 1587 V 206 1589 1538 2
+v 206 1599 V 205 1648 2 50 v 214 1648 V 239 1633 a Fk(/)p 502
+1648 V 267 w(var/mail/)p Fh(NAME)p 919 1648 V 1735 1648 V 1744
+1648 V 206 1650 1538 2 v 205 1700 2 50 v 214 1700 V 239 1685
+a Fk(var)p Fl(/)p 502 1700 V 202 w Fk(mail/)p Fh(NAME)p 919
+1700 V 1735 1700 V 1744 1700 V 206 1701 1538 2 v 205 1751 2
+50 v 214 1751 V 239 1736 a Fk(mail)p Fl(@)p 502 1751 V 169
+w Fk(/mail/home/)p Fh(NAME)p 919 1751 V 48 w Fk(mail)p Fl(@)f
+Fi(\))g Fk(/mail/home)p 1735 1751 V 1744 1751 V 206 1753 1538
+2 v 205 1803 2 50 v 214 1803 V 239 1788 a(/)p 502 1803 V 267
+w(mail/home/)p Fh(NAME)p 919 1803 V 1735 1803 V 1744 1803 V
+206 1804 1538 2 v 205 1854 2 50 v 214 1854 V 239 1839 a Fk(mail)p
+Fl(/)p 502 1854 V 180 w Fk(home/)p Fh(NAME)p 919 1854 V 1735
+1854 V 1744 1854 V 206 1856 1538 2 v 205 1906 2 50 v 214 1906
+V 239 1891 a Fk(home)p Fl(@)p 502 1906 V 169 w Fh(NAME)p 919
+1906 V 290 w Fk(home)p Fl(@)g Fi(\))g Fk(.)p 1735 1906 V 1744
+1906 V 206 1907 1538 2 v 205 1957 2 50 v 214 1957 V 239 1942
+a(.)p Fl(/)p 502 1957 V 246 w Fh(NAME)p 919 1957 V 1735 1957
+V 1744 1957 V 206 1959 1538 2 v 206 1969 V 205 2019 2 50 v
+214 2019 V 239 2004 a(NAME)p Fl(@)p 502 2019 V 919 2019 V 547
+w Fh(NAME)p Fl(@)h Fi(\))f Fk(~)p Fh(NAME)p Fk(/.mailspool/)p
+Fh(NAME)p 1735 2019 V 1744 2019 V 206 2020 1538 2 v 205 2070
+2 50 v 214 2070 V 239 2055 a Fk(~)p Fh(NAME)p Fl(/)p 502 2070
+V 119 w Fk(.mailspool/)p Fh(NAME)p 919 2070 V 1735 2070 V 1744
+2070 V 206 2072 1538 2 v 205 2122 2 50 v 214 2122 V 239 2107
+a Fk(.mailspool)p Fl(/)p 502 2122 V 48 w Fh(NAME)p 919 2122
+V 1735 2122 V 1744 2122 V 206 2123 1538 2 v 205 2173 2 50 v
+214 2173 V 239 2158 a(NAME)p 502 2173 V 919 2173 V 1735 2173
+V 1744 2173 V 206 2175 1538 2 v 243 2249 a Fl(T)m(able)g(2:)18
+b(Sp)q(ecially)13 b(resolving)h Fk(/var/mail/)p Fh(NAME)e Fl(to)h
+Fm(~)p Fh(NAME)p Fk(/.mailspool/)p Fh(NAME)p 75 2299 1800 5
+v 75 2440 a Fl(ho)o(w)o(ev)o(er,)k(this)g(is)f(su\016cien)o(t)h(for)f(all)g
+(programs)f(that)i(need)g(to)g(access)h(other)f(users')h(mailb)q(o)o(xes.)24
+b(All)15 b(that)i(is)75 2490 y(required)e(is)f(to)f(set)i(these)g(programs)e
+(to)h(b)q(e)g Fh(setgid)g Fl(to)g(the)g(designated)h(group.)p
+75 2525 720 2 v 121 2552 a Ff(9)139 2563 y Fe(Note)e(that,)g(in)g(order)g(to)
+g(allo)o(w)g(mail)g(deliv)o(ery)e(to)i(NFS)q(-moun)o(ted)d(mail)j(sp)q(o)q
+(ol)g(directories,)e(most)h(v)o(endors)g(ha)o(v)o(e)h(mo)q(di\014ed)75
+2603 y(the)d Fd(/bin/mail)e Fe(program)g(to)j(set)f(its)g Fc(uid)h
+Fe(to)g(that)f(of)g(the)g(recipien)o(t)e(when)j(deliv)o(ering)d(mail.)13
+b(If)e(a)g(lo)q(cal)e(deliv)o(ery)g(agen)o(t)g(\(LD)o(A\))i(on)75
+2642 y(a)g(system)f(do)q(es)g(not)g(pro)o(vide)f(this)i(b)q(eha)o(vior,)d
+(the)j(MT)m(A)i(m)o(ust)d(arrange)f(to)i(in)o(v)o(ok)o(e)e(it)i(with)g(the)f
+Fc(uid)i Fe(of)f(the)f(recipien)o(t)f(|)j(this)e(can)75 2682
+y(b)q(e)h(done)f(b)o(y)h(a)h(wrapp)q(er)e(C)i(program.)965
+2825 y Fl(6)p eop
+%%Page: 7 7
+bop 175 42 a Fl(The)14 b(third)h(problem)d(is)j(solv)o(ed)f(b)o(y)g(ensuring)
+g(that)h(all)e(op)q(erations)h(whic)o(h)g(migh)o(t)f(hang)g
+Fk(hlfsd)h Fl(are)g(p)q(er-)75 91 y(formed)e(in)h(the)h(bac)o(kground,)f
+(while)g(still)g(pro)o(viding)f(service)j(in)e(the)h(paren)o(t)g(or)g(c)o
+(hild)f(pro)q(cess.)20 b(F)m(urthermore,)75 141 y(if)12 b Fk(hlfsd)f
+Fl(is)i(not)g(running)f(an)o(ymore,)f(or)i(if)f(the)h(user's)h(home)d
+(\014lesystem)i(is)f(full,)f(mail)f(gets)k(deliv)o(ered)f(to)f(an)h(al-)75
+191 y(ternate)f(directory)g(\(See)g(also)f(Section)g(4.3\).)16
+b(A)11 b Fk(cron)f Fl(job)h(\(running)g(sev)o(eral)g(times)g(a)f(da)o(y)h(in)
+f(our)i(departmen)o(t\),)75 241 y(lo)q(oks)h(at)h(the)h(alternate)g
+(directory)m(,)f(and)g(attempts)f(to)h(resend)i(messages)e(in)g(it)f(to)h
+(their)h(righ)o(tful)e(o)o(wners.)19 b(All)75 291 y(that)12
+b(is)h(incurred)g(is)g(a)f(dela)o(y)g(in)g(mail)d(deliv)o(ery)m(,)j(whic)o
+(h,)g(in)g(most)f(cases,)j(is)e(no)g(longer)h(than)f(the)h(length)f(of)g
+(time)75 340 y(b)q(et)o(w)o(een)j(consecutiv)o(e)h(in)o(v)o(o)q(cations)d(of)
+g(the)h(lost-mail)d(remailing)h(script.)175 415 y(Ha)o(ving)h(a)h(sp)q(ecial)
+g(mail-sp)q(o)q(ol)e(sub)q(directory)j(o)o(wned)g(and)f(con)o(trolled)g(b)o
+(y)g(the)h(user)g(also)f(addresses)i(the)75 465 y(last)c(problem,)f(that)i
+(of)f(priv)n(acy)m(.)k(Users)e(can)f(c)o(hange)g(the)g(protection)g(bits)g
+(on)f(their)h(mailb)q(o)o(x)d(directory)j(inside)75 515 y(their)g(home)f
+(directory)i(so)f(that)g(it)f(is)h(readable)g(and)g(searc)o(hable)h(only)e(b)
+o(y)h(the)g(o)o(wner.)18 b(An)o(y)13 b(other)h(program)d(or)75
+565 y(user,)16 b(unless)f(running)g(as)g(the)g(sup)q(eruser)j(on)c(the)i
+(same)e(host,)1091 549 y Fg(10)1141 565 y Fl(w)o(ould)g(not)h(b)q(e)g(able)g
+(to)f(\014nd)h(out)g(whether)h(a)75 614 y(user)f(has)f(new)g(mail,)d(ho)o(w)j
+(m)o(uc)o(h)e(of)i(it)f(there)i(is,)f(or)f(when)i(it)e(w)o(as)h(last)g(read.)
+75 722 y Fj(4)56 b(Impleme)o(n)n(tation)16 b(of)j Fb(hlfsd)175
+797 y Fl(W)m(e)f(used)i(a)f(protot)o(yp)q(e)h(NFS)f(serv)o(er,)j(and)d
+(implem)o(en)o(ted)e(only)i(the)g(op)q(erations)h(that)f(w)o(ere)h(needed.)75
+847 y(W)m(e)14 b(generated)i(NFS)e(stubs)i(using)e Fk(rpcgen)p
+Fl(.)k(The)d(serv)o(er)h(w)o(as)e(dev)o(elop)q(ed)h(\014rst)g(under)h(SunOS)f
+(v)o(ersion)f(4.1.2.)75 897 y(This)g(serv)o(er)i(w)o(as)e(incorp)q(orated)h
+(in)o(to)e(the)i Fk(amd)e Fl(source)j(tree,)f(and)f(w)o(e)g(used)h(some)e(of)
+h Fk(amd)p Fl('s)f(sources)j(as)e(utilit)o(y)75 947 y(functions,)k(since)g
+(they)g(are)g(w)o(ell-written)f(to)h(handle)f(a)g(v)n(ariet)o(y)g(of)g(arc)o
+(hitectures)j(and)d(op)q(erating)g(systems.)75 997 y(\(See)e(Section)f(4.7)f
+(for)h(source)h(co)q(de)g(a)o(v)n(ailabil)o(it)o(y)l(.\))75
+1105 y Fj(4.1)56 b(The)18 b(\\Home-Link")d(File)j(Service)175
+1180 y Fl(This)10 b(subsection)i(includes)g(tec)o(hnical)f(details)f(of)h
+(the)g(NFS)g(op)q(erations)g(and)g(ma)o(y)e(b)q(e)i(skipp)q(ed.)18
+b(Ho)o(w)o(ev)o(er,)75 1230 y(it)13 b(pro)o(vides)g(an)g(example)e(of)i(the)g
+(design)h(and)f(implem)o(en)o(tation)d(of)i(a)h(small)e(sp)q(ecial-purp)q
+(ose)j(NFS)g(serv)o(er)g(and)75 1279 y(ma)o(y)e(b)q(e)i(of)g(use)g(to)g
+(others.)175 1354 y(HLFS)j(is)g(a)g(read-only)g(\014lesystem,)g(and)g(as)h
+(suc)o(h,)g(all)e(op)q(erations)i(that)f(require)h(write)g(access)h(return)75
+1404 y(the)d(error)h(co)q(de)f(NFSERR)p 522 1404 13 2 v 14
+w(R)o(OFS)g(\(\\Read-Only)f(Filesystem"\):)20 b Fh(setattr,)c(write,)f(cr)n
+(e)n(ate,)h(r)n(emove,)g(r)n(ename,)75 1454 y(link,)g(unlink,)g(symlink,)g
+(mkdir,)f Fl(and)g Fh(rmdir)p Fl(.)21 b(T)m(rivially)13 b(implemen)o(ted)g(w)
+o(ere)j(the)g Fh(nul)r(l)p Fl(,)f Fh(r)n(o)n(ot)p Fl(,)g(and)g
+Fh(write)n(c)n(ache)75 1504 y Fl(op)q(erations.)i(W)m(e)11
+b(decided)h(to)e(ha)o(v)o(e)h Fh(statfs)f Fl(return)i(some)e(v)n(alue)h
+(\(all)e(zeros)k(in)d(most)g(cases\).)18 b(The)11 b Fh(r)n(e)n(ad)g
+Fl(op)q(eration)75 1553 y(simply)h(returns)j(NFSERR)p 524 1553
+V 15 w(A)o(CCES)f(\(\\P)o(ermission)f(Denied"\).)175 1628 y(The)e(remaining)e
+(op)q(erations)i(are)h(the)f(heart)h(of)e(this)h(\014lesystem:)17
+b Fh(r)n(e)n(addir)p Fl(,)10 b Fh(getattr)p Fl(,)g Fh(lo)n(okup)p
+Fl(,)i(and)f Fh(r)n(e)n(ad)r(link)p Fl(.)175 1703 y(Our)j(serv)o(er)h(m)o
+(ust)d(distinguish)h(b)q(et)o(w)o(een)i(the)f(directory)g(and)g(the)g(link,)e
+(so)i(w)o(e)f(assigned)h(them)f(di\013eren)o(t)75 1753 y(in)o(tegers)f(to)f
+(serv)o(e)i(as)f(\014lehandles.)17 b(Note)12 b(that)f(these)i(need)g(not)e(b)
+q(e)h(as)f(complicated)g(as)g(the)h(\014lehandles)g(usually)75
+1802 y(generated)j(b)o(y)f(NFS.)k(They)c(need)h(only)e(to)h(b)q(e)h(unique,)e
+(and)h(their)g(v)n(alue)f(is)h(meaningful)d(only)i(to)h(the)h(serv)o(er.)75
+1910 y Fj(4.1.1)55 b(The)19 b(readdir)f(Op)r(eration)175 1985
+y Fl(Op)q(ening)h(this)g(directory)h(returns)h(the)f(\\.")33
+b(and)19 b(\\..")33 b(directories,)21 b(and)e(one)g(sym)o(b)q(olic)e(link,)i
+Fk(home)p Fl(.)75 2035 y(A)o(ttempting)e(to)g(readdir)h(on)g(the)g(sym)o(b)q
+(olic)e(link)h(results)i(in)f(an)f(NFSERR)p 1326 2035 V 15
+w(NOTDIR.)g(An)o(ything)g(else)i(is)e(a)75 2085 y(stale)d(\014lehandle.)75
+2193 y Fj(4.1.2)55 b(The)19 b(getattr)e(Op)r(eration)175 2268
+y Fh(Getattr)h Fl(returns)i(r-xr-xr-x)e(for)h(the)g(\\.")32
+b(and)18 b(\\..")32 b(directories.)h(The)19 b(link)f(itself,)h(named)e
+Fk(home)h Fl(b)o(y)75 2318 y(default,)d(is)h(protected)h(as)f(rwxrwxrwx.)23
+b(It)16 b(do)q(es)g(not)g(matter)f(for)g(the)h(link)f(that)h(it)f(is)g(w)o
+(orld-writable.)23 b(The)75 2368 y(mo)q(di\014cation)10 b(and)j(creation)f
+(times)g(for)g(the)h(link)e(and)i(directories)g(are)g(the)g(startup)g(time)e
+(of)h(the)h(serv)o(er.)19 b(If)12 b(the)75 2418 y(e\013ectiv)o(e)k
+Fh(gid)f Fl(of)f(the)h(pro)q(cess)h(is)f(HLFS)p 721 2418 V
+15 w(GID,)e(then)j(some)d(\014xed)i(v)n(alid)e(attributes)j(are)f(returned.)
+22 b(An)o(y)14 b(other)75 2467 y(\014lehandle)i(giv)o(en)f(to)g
+Fk(hlfsd)g Fl(is)g(considered)i(stale)f(and)f(the)i(NFSERR)p
+1227 2467 V 14 w(ST)m(ALE)f(\(\\Stale)f(Filehandle"\))g(result)75
+2517 y(co)q(de)g(is)e(returned.)p 75 2544 720 2 v 106 2571
+a Ff(10)139 2582 y Fe(Or)e(as)h(the)f(sup)q(eruser)e(elsewhere,)h(if)h(the)g
+(\014lesystem)e(is)i(NFS-exp)q(orted)e(with)j Fd(anon=0)p Fe(.)965
+2825 y Fl(7)p eop
+%%Page: 8 8
+bop 75 42 a Fj(4.1.3)55 b(The)19 b(lo)r(okup)e(Op)r(eration)175
+117 y Fl(Ob)o(viously)m(,)c(w)o(e)i(only)f(allo)o(w)f(lo)q(oking)g(up)h(in)h
+(the)g(\\.")20 b(and)14 b(\\..")20 b(directories,)15 b(b)q(oth)g(of)f(whic)o
+(h)g(return)i(the)75 166 y(same)e(v)n(alues.)22 b(T)m(rying)15
+b(to)g(lo)q(okup)f(\\in")h(the)g(link)g(results)h(in)f(an)g(NFSERR)p
+1312 166 13 2 v 15 w(NOTDIR)f(\(\\Not)i(a)f(Directory"\))75
+216 y(error)k(co)q(de.)32 b(An)o(y)18 b(link)g(not)g(kno)o(wn)g(to)g(the)h
+(serv)o(er)g(returns)h(an)e(NFSERR)p 1338 216 V 15 w(NOENT)h(\(\\No)f(Suc)o
+(h)h(En)o(try"\))75 266 y(error,)f(unless)f(the)g Fh(gid)g
+Fl(of)e(the)j(requesting)f(pro)q(cess)h(is)f(HLFS)p 1088 266
+V 15 w(GID)f(and)g(the)h(name)e(corresp)q(onds)k(to)d(a)h(v)n(alid)75
+316 y(user.)i(In)12 b(this)g(case)h(the)g Fh(username)f Fl(for)g(that)g(user)
+h(is)f(used)h(in)f(the)g(returned)i(\014lehandle,)e(allo)o(wing)e(the)i
+(readlink)75 366 y(op)q(eration)i(to)f(return)j(the)e(correct)i(link.)h(An)o
+(ything)c(else)i(is)e(a)h(stale)g(\014lehandle.)75 474 y Fj(4.1.4)55
+b(The)19 b(readlink)e(Op)r(eration)175 549 y Fl(This)d(is)h(the)g(most)f(imp)
+q(ortan)o(t)e(op)q(eration,)j(the)g(cen)o(tral)g(p)q(oin)o(t)f(of)g(this)h(w)
+o(ork.)20 b(W)m(e)15 b(get)g(the)g Fh(uid)g Fl(n)o(um)o(b)q(er)75
+599 y(from)c(the)j(creden)o(tials)g(sen)o(t)g(with)e(the)i(RPC)f(op)q
+(eration.)k(W)m(e)c(mak)o(e)e(sure)j(that)f(Unix)g(Authen)o(tication)g(or)g
+(DES)75 648 y(is)h(used)h(or)e(else)i(w)o(e)f(return)h(the)g(NFSERR)p
+774 648 V 14 w(PERM)f(\(\\Not)g(Owner"\))h(co)q(de.)175 723
+y(If)j(the)h Fh(gid)g Fl(of)f(the)h(accessing)h(pro)q(cess)g(is)f(not)g(HLFS)
+p 1064 723 V 15 w(GID,)e(the)i(v)n(alue)f(w)o(e)h(return)h(for)f(the)g(sym)o
+(b)q(olic)75 773 y(link)13 b(named)g Fk(home)379 758 y Fg(11)427
+773 y Fl(is)h(a)g(string)g(represen)o(ting)i(the)f(home)e(directory)i(of)e
+(the)i(user)g(whose)g Fh(uid)f Fl(w)o(e)h(just)f(found,)75
+823 y(concatenated)g(with)e(a)h(\014xed)g(comp)q(onen)o(t)e(name)h(represen)o
+(ting)i(a)e(sub)q(directory)i(within)e(it.)17 b(W)m(e)c(used)g(a)f(binary)75
+873 y(searc)o(h)h(on)e(the)h(lo)q(okup)e(table)h(to)h(quic)o(kly)e(get)i(the)
+g(righ)o(t)f(pathname.)16 b(Di\013eren)o(t)c(home)e(directories)i(for)f(m)o
+(ultiple)75 922 y(passw)o(ord)i(database)f(en)o(tries)h(with)f(the)h(same)e
+Fh(uid)i Fl(n)o(um)o(b)q(ers)f(ma)o(y)e(return)j(an)o(y)f(of)g(the)h(home)e
+(directories.)18 b(Only)75 972 y Fh(uid)c Fl(0)g(is)f(guaran)o(teed)i(to)f
+(return)h(\\)p Fk(/)p Fl(".)i(See)e(also)e(Section)h(5.3.)175
+1047 y(If)h(the)h(sym)o(b)q(olic)e(link)g(is)i(named)e Fk(home)h
+Fl(and)g(the)h Fh(gid)g Fl(is)f(HLFS)p 1206 1047 V 15 w(GID,)g(w)o(e)h
+(return)g(a)g(link)e(to)i(\\.",)e(whic)o(h)75 1097 y(causes)19
+b Fk(hlfsd)d Fl(to)h(b)q(e)h(used)g(to)f(resolv)o(e)h(the)g(next)g(pathname)e
+(comp)q(onen)o(t.)27 b(This)17 b(is)h(designed)g(to)f(main)o(tain)75
+1147 y(functionalit)o(y)c(of)i(programs)f(suc)o(h)i(as)f Fk(from)p
+Fl(.)20 b(If)15 b(the)h(sym)o(b)q(olic)d(link)h(is)h(not)g(named)f
+Fk(home)g Fl(and)h(the)h Fh(gid)f Fl(of)f(the)75 1196 y(accessing)j(pro)q
+(cess)g(is)e(HLFS)p 553 1196 V 16 w(GID,)f(w)o(e)i(return)g(a)f(v)n(alue)g(p)
+q(oin)o(ting)g(to)g(the)h(user's)h(mailb)q(o)o(x)12 b(\014le)k(in)f(their)h
+(mail)75 1246 y(sp)q(o)q(ol)c(directory)m(.)18 b(T)m(o)12 b(do)g(this,)g(w)o
+(e)h(extract)g(the)h Fh(username)e Fl(from)f(the)i(\014lehandle,)f(whic)o(h)h
+(w)o(as)f(returned)i(b)o(y)e(the)75 1296 y(lo)q(okup)h(op)q(eration.)18
+b(See)d(T)m(able)e(2.)175 1371 y(T)m(rying)c(to)i(readlink)f(on)h(one)g(of)f
+(the)i(t)o(w)o(o)e(directories)i(results)g(in)e(an)h(NFSERR)p
+1426 1371 V 15 w(ISDIR)f(\(\\Is)h(a)f(directory"\))75 1421
+y(error.)19 b(An)o(ything)13 b(else)i(is)f(a)f(stale)h(\014lehandle.)75
+1528 y Fj(4.2)56 b(Execution)17 b(Flo)n(w)175 1604 y Fl(A)o(t)12
+b(initialization)d(time,)i Fk(hlfsd)g Fl(creates)j(a)e(UDP)g(service,)i(and)e
+(forks)g(a)g(c)o(hild.)17 b(The)c(c)o(hild)e(builds)h(the)h
+Fh(uid)75 1653 y Fl(lo)q(okup)h(table,)g(sets)i(up)e(signal)g(handlers,)h
+(and)f(in)o(terv)n(al)g(timers.)19 b(The)c(signal)e(handlers)i(are)g(mean)o
+(t)f(to)g(reload)75 1703 y(the)i(lo)q(okup)f(table)g(at)g(expiration)g(time)f
+(of)h(the)h(in)o(terv)n(al)f(timer,)f(or)i(when)g(a)f(SIGHUP)g(is)h(sen)o(t)g
+(to)f(the)h(serv)o(er)75 1753 y(\(presumably)11 b(b)o(y)h(a)f(sup)q
+(eruser\).)20 b(A)12 b(sp)q(ecial)g(clean)o(up)h(handler)f(is)f(setup)i(for)f
+(SIGTERM,)f(to)g(ensure)j(the)e(serv)o(er)75 1803 y(terminates)i(cleanly)m(.)
+j(Then)d(the)h Fk(svc)p 682 1803 14 2 v 15 w(run\(\))e Fl(routine)h(is)f(in)o
+(v)o(ok)o(ed.)175 1878 y(Mean)o(while)i(the)i(paren)o(t)g(w)o(aits)f(for)f
+(the)i(c)o(hild)f(to)g(initialize.)23 b(When)16 b(it)g(do)q(es,)h(the)g
+(paren)o(t)f(moun)o(ts)f(the)75 1927 y(serv)o(er)g(on)f(the)g(moun)o(t)e(p)q
+(oin)o(t.)18 b(Of)c(utmost)e(imp)q(ortance)h(is)h(to)g(mak)o(e)e(sure)j(the)f
+(attribute)g(cac)o(he)h(is)f(turned)g(o\013.)75 1977 y(If)h(the)g(attribute)h
+(cac)o(he)f(is)g(not)g(turned)h(o\013,)f(successiv)o(e)i(accesses)g(to)e
+Fk(/mail/home)e Fl(w)o(ould)h(return)i(previously)75 2027 y(computed)f
+(pathnames)g(p)q(oin)o(ting)f(to)i(another)g(user's)g(mail,)d(resulting)j(in)
+f(mail)e(loss)i(or)h(misdeliv)o(ery)m(.)21 b(If)15 b(it)g(is)75
+2077 y(not)d(p)q(ossible)g(to)g(turn)h(o\013)e(the)i(attribute)g(cac)o(he,)f
+Fk(hlfsd)f Fl(will)g(exit.)17 b(Ho)o(w)o(ev)o(er,)c(the)f(SA)g(has)h(the)f
+(option)g(to)f(force)75 2127 y Fk(hlfsd)j Fl(to)h(con)o(tin)o(ue)g(running)g
+(and)g(set)h(the)f(attribute)h(cac)o(he)g(to)f(as)g(short)g(an)g(in)o(terv)n
+(al)f(as)h(p)q(ossible)h(\(See)g(also)75 2176 y(Section)e(5.3\).)j(A)o(t)d
+(this)g(p)q(oin)o(t)g(the)g(paren)o(t)h(terminates,)e(lea)o(ving)f(the)j(c)o
+(hild)e(to)h(run.)175 2251 y(When)j(an)f(in)o(terv)n(al)g(timer)g(go)q(es)h
+(o\013)g(\(SIGALRM\))f(or)h(a)f(SIGHUP)h(is)g(sen)o(t)g(to)g(the)h(serv)o
+(er,)g(the)f(serv)o(er)75 2301 y(forks)d(a)g(c)o(hild)g(that)g(con)o(tin)o
+(ues)h(serving,)f(while)g(the)h(paren)o(t)g(reloads)f(the)h(lo)q(okup)f
+(table.)19 b(When)14 b(the)h(paren)o(t)g(is)75 2351 y(\014nished)f(loading,)d
+(it)i(sends)i(a)e(SIGKILL)g(to)g(the)h(c)o(hild)e(pro)q(cess,)j(and)e
+(resumes)h(serving.)k(When)c(a)f(SIGTERM)75 2401 y(is)h(receiv)o(ed,)h(the)g
+(serv)o(er)g(forks)f(a)g(c)o(hild)g(that)g(con)o(tin)o(ues)g(serving,)g
+(while)g(it)g(tries)g(to)g(unmoun)o(t)f(the)i(\014lesystem.)75
+2450 y(If)f(and)f(when)i(that)f(succeeds,)i(b)q(oth)e(paren)o(t)g(and)g(c)o
+(hild)f(exit.)175 2525 y(As)i(mail)d(service)k(is)e(v)o(ery)h(imp)q(ortan)o
+(t,)d(w)o(e)j(w)o(an)o(ted)g(to)f(mak)o(e)g Fk(hlfsd)f Fl(as)i(robust)g(as)g
+(p)q(ossible.)20 b(W)m(e)14 b(could)75 2575 y(ha)o(v)o(e)k(designed)g(it)f
+(as)h(another)g Fk(amd)g Fl(\\\014lesystem)f(t)o(yp)q(e",)h(but)g(decided)h
+(that)f(a)f(separate)i(daemon)e(pro)o(vides)75 2625 y(b)q(etter)i(reliabilit)
+o(y)c(and)j(faster)g(service.)29 b(In)18 b(general,)g(w)o(e)f(try)h(to)f(do)g
+(as)h(m)o(uc)o(h)e(as)h(p)q(ossible:)25 b(w)o(e)18 b(mak)o(e)e(sure)p
+75 2659 720 2 v 106 2686 a Ff(11)139 2698 y Fe(The)11 b(name)f(of)h(the)g
+(sym)o(b)q(olic)e(link)i(is)g(con\014gurable.)965 2825 y Fl(8)p
+eop
+%%Page: 9 9
+bop 75 42 a Fl(\014lesystems)10 b(are)h(accessible)h(and)e(con)o(tain)f(some)
+h(disk)g(space)h(to)f(ha)o(v)o(e)g(mail)e(deliv)o(ered)j(there.)18
+b(Where)11 b(directories)75 91 y(are)j(exp)q(ected)h(w)o(e)f(mak)o(e)d(sure)k
+(there)f(are)g(no)f(\014les)h(b)o(y)f(these)h(names;)f(where)h(sym)o(b)q
+(olic)d(links)i(are)h(exp)q(ected,)h(w)o(e)75 141 y(mak)o(e)f(sure)i(there)h
+(are)e(no)g(real)h(\014les)f(or)h(directories)g(with)f(the)h(same)e(name.)21
+b(Whenev)o(er)c(p)q(ossible,)e(w)o(e)g(create)75 191 y(directories,)f(with)f
+(prop)q(er)i(o)o(wnership)f(and)f(p)q(ermissions.)k(W)m(e)c(ev)o(en)h(c)o
+(hec)o(k)h(that)e(the)h(moun)o(t)e(p)q(oin)o(t)h(for)g Fk(hlfsd)75
+241 y Fl(is)h(w)o(orld)f(readable)h(and)g(executable,)h(since)f(if)f(it)h
+(isn't,)f Fk(getwd\(".."\))e Fl(migh)o(t)h(fail.)75 349 y Fj(4.3)56
+b(Alternate)17 b(Mail)h(Sp)r(o)r(ol)g(Directories)175 424 y
+Fk(Hlfsd)e Fl(tries)i(to)g(ensure)h(that)f(the)g(user's)g(home)f(directory)h
+(is)f(accessible.)31 b(P)o(erio)q(dically)16 b(it)i(also)f(tests)75
+474 y(that)i(it)f(can)h(b)q(e)g(written)g(in)o(to)f(\(Section)h(4.5\).)31
+b(If)18 b(for)h(an)o(y)f(reason)h(a)f(failure)g(o)q(ccurs,)j
+Fk(hlfsd)c Fl(rep)q(oin)o(ts)i(the)75 523 y(sym)o(b)q(olic)11
+b(link)h(for)g(that)h(user)h(to)f(an)f(alternate)h(lo)q(cal)f(directory)m(,)h
+(whic)o(h)g(is)g(presumably)e(highly)h(a)o(v)n(ailable.)j(W)m(e)75
+573 y(use)g Fk(/var/spool/alt)p 457 573 14 2 v 13 w(mail)e
+Fl(in)g(our)h(en)o(vironmen)o(t.)j(See)e(T)m(able)e(3.)1167
+558 y Fg(12)p 75 636 1800 5 v 238 690 a Fl(Conditions:)k(An)o(y)d
+Fh(uid)p Fl(,)g Fh(gid)p Fi(6)p Fl(=HLFS)p 829 690 13 2 v 15
+w(GID,)f(and)g Fk(~)p Fh(USER)p Fk(/.mailspool/)f Fl(is)i(not)p
+1479 697 60 2 v 14 w(writable.)p 343 710 1265 2 v 342 759 2
+50 v 351 759 V 376 744 a Fm(Resolving)p 629 759 V 1083 759
+V 1598 759 V 1607 759 V 342 809 V 351 809 V 376 794 a(comp)q(onen)o(t)p
+629 809 V 47 w(P)o(athname)g(left)p 1083 809 V 157 w(V)l(alue)h(if)g(sym)o(b)
+q(olic)f(link)p 1598 809 V 1607 809 V 343 811 1265 2 v 343
+821 V 342 871 2 50 v 351 871 V 376 856 a Fk(/)p 629 871 V 256
+w(var/mail/)p Fh(NAME)p 1083 871 V 1598 871 V 1607 871 V 343
+872 1265 2 v 342 922 2 50 v 351 922 V 376 907 a Fk(var)p Fl(/)p
+629 922 V 191 w Fk(mail/)p Fh(NAME)p 1083 922 V 1598 922 V
+1607 922 V 343 924 1265 2 v 342 974 2 50 v 351 974 V 376 959
+a Fk(mail)p Fl(@)p 629 974 V 158 w Fk(/mail/home/)p Fh(NAME)p
+1083 974 V 85 w Fk(mail)p Fl(@)g Fi(\))f Fk(/mail/home)p 1598
+974 V 1607 974 V 343 975 1265 2 v 342 1025 2 50 v 351 1025
+V 376 1010 a(/)p 629 1025 V 256 w(mail/home/)p Fh(NAME)p 1083
+1025 V 1598 1025 V 1607 1025 V 343 1027 1265 2 v 342 1077 2
+50 v 351 1077 V 376 1062 a Fk(mail)p Fl(/)p 629 1077 V 169
+w Fk(home/)p Fh(NAME)p 1083 1077 V 1598 1077 V 1607 1077 V
+343 1078 1265 2 v 342 1128 2 50 v 351 1128 V 376 1113 a Fk(home)p
+Fl(@)p 629 1128 V 158 w Fh(NAME)p 1083 1128 V 327 w Fk(home)p
+Fl(@)h Fi(\))f Fk(/var/alt)p 1476 1113 14 2 v 14 w(mail)p 1598
+1128 2 50 v 1607 1128 V 343 1130 1265 2 v 342 1180 2 50 v 351
+1180 V 376 1165 a(/)p 629 1180 V 256 w(var/alt)p 811 1165 14
+2 v 15 w(mail/)p Fh(NAME)p 1083 1180 2 50 v 1598 1180 V 1607
+1180 V 343 1181 1265 2 v 342 1231 2 50 v 351 1231 V 376 1216
+a Fk(var)p Fl(/)p 629 1231 V 191 w Fk(alt)p 723 1216 14 2 v
+15 w(mail/)p Fh(NAME)p 1083 1231 2 50 v 1598 1231 V 1607 1231
+V 343 1233 1265 2 v 342 1282 2 50 v 351 1282 V 376 1268 a Fk(alt)p
+445 1268 14 2 v 15 w(mail)p Fl(/)p 629 1282 2 50 v 88 w Fh(NAME)p
+1083 1282 V 1598 1282 V 1607 1282 V 343 1284 1265 2 v 342 1334
+2 50 v 351 1334 V 376 1319 a(NAME)p 629 1334 V 1083 1334 V
+1598 1334 V 1607 1334 V 343 1336 1265 2 v 380 1410 a Fl(T)m(able)g(3:)18
+b(Resolving)13 b Fk(/var/mail/)p Fh(NAME)f Fl(to)i Fk(/var/alt)p
+1323 1410 14 2 v 14 w(mail/)p Fh(NAME)p 75 1460 1800 5 v 175
+1600 a Fl(When)f Fk(hlfsd)f Fl(starts)i(up,)f(and)g(b)q(efore)h(it)f(moun)o
+(ts)f(itself)h(on)f(top)i(of)e(the)i(moun)o(t)d(p)q(oin)o(t,)i(hiding)f(an)o
+(ything)75 1650 y(that)k(is)f(underneath,)i Fk(hlfsd)e Fl(creates)i(a)f
+(\014xed)g(sym)o(b)q(olic)e(link)g(to)i(the)g(alternate)g(sp)q(o)q(ol)g
+(directory)g(\(if)f(it)g(do)q(es)75 1700 y(not)e(exist)g(already\).)k(This)c
+(is)g(done)g(so)g(that)f Fk(/var/spool/mail)e Fl(w)o(ould)i(not)h(b)q(e)g(a)g
+(\\dangling")d(sym)o(b)q(olic)h(link,)75 1750 y(and)j(p)q(oin)o(ts)g(to)f(a)h
+(real)g(directory)h(at)f(all)e(times,)h(ev)o(en)i(after)f Fk(hlfsd)f
+Fl(terminates.)18 b(When)c Fk(hlfsd)f Fl(runs,)h(it)g(hides)75
+1799 y(this)h(sym)o(b)q(olic)e(link,)h(and)h(pro)o(vides)g(our)g(\\dynamic")e
+(sym)o(b)q(olic)g(link.)20 b(This)15 b(tric)o(k)g(at)g(least)g(pro)o(vides)g
+(us)g(with)75 1849 y(an)f(alternate)g(place)g(to)g(deliv)o(er)g(mail)d(when)j
+(things)g(go)f(wrong,)h(rather)g(than)g(b)q(ounce)h(or)f(drop)g(the)g(mail.)
+175 1924 y(A)g(cron)h(job)e(on)h(our)h(systems)f(c)o(hec)o(ks)i(the)f
+(alternate)f(mail)e(sp)q(o)q(ol)i(directory)h(sev)o(eral)g(times)e(a)h(da)o
+(y)m(.)k(An)o(y)75 1974 y(messages)12 b(found)g(there)i(are)f(resen)o(t)g(to)
+g(their)f(righ)o(tful)f(o)o(wners.)19 b(The)12 b(remailing)e(script)j(can)g
+(b)q(e)g(run)f(as)h(often)f(as)75 2024 y(needed.)19 b(Eac)o(h)14
+b(in)o(v)o(o)q(cation)e(of)h(the)g(script)h(deals)g(only)e(with)h(newly)g
+(lost)g(mail)e(since)j(the)g(previous)g(in)o(v)o(o)q(cation;)75
+2073 y(the)f(script)g(lo)q(c)o(ks)g(and)f(renames)h(the)g(lost)f(mailb)q(o)o
+(x)e(\014le)i(to)h(a)f(unique)h(name,)e(b)q(efore)i(parsing)f(and)h
+(remailing)d(it.)175 2148 y(Similar)j(to)k Fk(amd)p Fl(,)f
+Fk(hlfsd)f Fl(can)i(log)e(debugging)h(and)h(v)n(arious)e(status)j
+(information)13 b(to)k(a)f(designated)h(log)75 2198 y(\014le)e(or)h(using)f
+(the)h Fk(syslog)p Fl([22)n(])f(facilit)o(y)m(.)21 b(The)16
+b(SA)f(ma)o(y)f(c)o(ho)q(ose)i(to)g(w)o(atc)o(h)f(these)i(log)e(\014les)g
+(and)h(facilities)e(and)75 2248 y(b)q(e)h(noti\014ed)e(when)i(serious)f
+(problems)f(o)q(ccur)i(suc)o(h)g(as)f(a)g(full)e(\014lesystem.)75
+2356 y Fj(4.4)56 b(Av)n(oiding)18 b(Hangs)175 2431 y Fl(As)10
+b(describ)q(ed)i(in)e(Section)h(4.2,)e Fk(hlfsd)g Fl(forks)i(a)e(c)o(hild)h
+(at)g(an)o(y)g(p)q(oin)o(t)g(where)h(w)o(e)g(susp)q(ect)h(that)e(an)g(op)q
+(eration)75 2481 y(migh)o(t)h(hang.)17 b(If,)12 b(for)h(example,)e(the)j
+(home)e(mac)o(hine)f(of)i(the)g(user)h(is)f(do)o(wn,)g(and)f(the)i
+(\014lesystem)f(on)f(a)h(clien)o(t)g(is)75 2530 y(hard-moun)o(ted,)h
+Fk(hlfsd)f Fl(will)h(hang)g(un)o(til)g(the)i(remote)e(serv)o(er)i(is)f(bac)o
+(k)g(up.)21 b(P)o(erforming)13 b(these)j(op)q(erations)f(in)75
+2580 y(the)f(bac)o(kground)g(pro)o(vides)g(added)h(reliabilit)o(y)m(,)c(an)i
+(idea)h(tak)o(en)g(from)e Fk(amd)p Fl(.)p 75 2615 720 2 v 106
+2642 a Ff(12)139 2653 y Fe(In)f(the)f(conditions)f(for)i(T)m(able)g(3,)g
+Fd(~)p Fc(USER)h Fe(is)g(the)f(home)f(directory)f(of)i(the)g(user)f(with)i
+(user-id)e Fc(uid)p Fe(.)965 2825 y Fl(9)p eop
+%%Page: 10 10
+bop 75 42 a Fj(4.5)56 b(Disk)18 b(Space)g(Problems)175 117
+y Fk(Hlfsd)13 b Fl(c)o(hec)o(ks)j(if)e(the)h(user's)h(home)e(directory)h(is)g
+(full)e(or)i(they)g(exceeded)i(their)e(quota.)20 b(It)15 b(attempts)f(to)75
+166 y(create)i(and)e(then)h(remo)o(v)o(e)e(a)h(simple)f(nonzero-length)i
+(\014le)f(in)g(the)h(user's)g(sp)q(o)q(ol)f(directory)m(,)h(with)f(the)h
+(e\013ectiv)o(e)75 216 y Fh(uid)j Fl(set)g(to)f(that)h(of)f(the)h(user.)30
+b(If)17 b(that)g(fails,)g(it)g(instead)h(returns)h(bac)o(k)e(the)h(name)e(of)
+h(the)h(alternate)g(sp)q(o)q(ol)75 266 y(directory)d(as)f(the)g(v)n(alue)f
+(of)h(the)g Fk(home)f Fl(sym)o(b)q(olic)f(link.)17 b(Otherwise)f(mail)11
+b(migh)o(t)h(b)q(e)i(dropp)q(ed)h(or)f(b)q(ounce.)175 341 y(An)o(y)j(success)
+k(or)d(failure)f(state)h(is)g(recorded)i(in)d Fk(hlfsd)o Fl(.)30
+b(It)18 b(is)g(left)g(there)h(for)e(a)h(sp)q(eci\014ed)h(n)o(um)o(b)q(er)f
+(of)75 391 y(seconds,)k(after)f(whic)o(h)e(the)i(en)o(try)g(\\times)d(out")i
+(and)g(a)f(new)i(actual)e(bac)o(kgrounded)i(lo)q(okup)e(is)g(required.)75
+440 y(Otherwise,)14 b(the)g(cac)o(hed)g(result)g(is)f(used)g(and)g(no)g(exp)q
+(ensiv)o(e)h Fk(fork)e Fl(is)h(required.)19 b(This)13 b(simple)e(cac)o(hing)i
+(feature)75 490 y(of)g Fk(hlfsd)g Fl(has)h(greatly)g(impro)o(v)o(ed)e(its)i
+(p)q(erformance)g(and)f(reliabilit)o(y)m(.)j(See)f(also)e(Section)h(5.3.)75
+598 y Fj(4.6)56 b(Lo)r(c)n(k)17 b(Files)175 673 y Fl(An)12
+b(alternativ)o(e)h(design)g(for)f Fk(hlfsd)f Fl(is)i(to)f(ha)o(v)o(e)h(it)f
+(moun)o(t)f(on)h(top)h(of)f(the)h(mail)d(sp)q(o)q(ol)i(directory)i(directly)m
+(,)75 723 y(instead)d(of)f(ha)o(ving)f(the)j(mail)c(sp)q(o)q(ol)i(directory)h
+(b)q(e)g(a)g(sym)o(b)q(olic)e(link)g(to)i(another)g(link)e(\()p
+Fk(home)p Fl(\))h(within)g(the)h(HLFS,)75 773 y(whic)o(h)k(p)q(oin)o(ts)g(to)
+g(a)f(real)h(sub)q(directory)i(of)d(the)i(user's)g(home.)k(With)15
+b(some)f(mo)q(di\014cations)f(to)i(the)g(serv)o(er,)i(w)o(e)75
+823 y(could)d(ha)o(v)o(e)g(made)f(all)h(of)f(the)i(user's)h(mailb)q(o)o(x)11
+b(\014les)k(p)q(oin)o(t)f(to)g(the)h(righ)o(t)f(place,)g(but)g(it)g
+(su\013ered)j(from)12 b(serious)75 873 y(dra)o(wbac)o(ks:)137
+977 y Fi(\017)21 b Fl(The)15 b(sp)q(o)q(ol)f(directory)i(w)o(ould)d(no)i
+(longer)f(b)q(e)h(a)g(regular)f(directory)m(.)21 b(It)14 b(w)o(ould)g(ha)o(v)
+o(e)h(to)f(b)q(e)h(managed)e(b)o(y)179 1027 y Fk(hlfsd)o Fl(.)18
+b(This)c(w)o(ould)f(require)h(the)h(implemen)o(tatio)o(n)c(of)i(more)g(NFS)h
+(op)q(erations.)137 1105 y Fi(\017)21 b Fl(The)e(user's)h(sp)q(o)q(ol)f
+(\014le)g(w)o(ould)g(not)g(b)q(e)g(a)g(regular)g(\014le,)h(but)f(a)g(sym)o(b)
+q(olic)e(link)h(to)h(suc)o(h.)35 b(Some)18 b(mail)179 1155
+y(programs)e(remo)o(v)o(e)g(that)h(\014le,)g(not)g(c)o(hec)o(king)g(if)f
+(it's)h(a)f(sym)o(b)q(olic)g(link.)26 b(Therefore)18 b(the)g(sym)o(b)q(olic)d
+(link)179 1205 y(w)o(ould)10 b(b)q(e)i(remo)o(v)o(ed.)k(W)m(e)10
+b(w)o(ould)h(ha)o(v)o(e)g(had)f(to)h(c)o(hange)h(the)f(serv)o(er)i(so)e(that)
+g(remo)o(ving)e(the)j(sym)o(b)q(olic)d(link)179 1255 y(w)o(ould)14
+b(\014rst)i(follo)o(w)d(it)i(and)g(remo)o(v)o(e)f(the)i(\014le)f(it)g(w)o(as)
+g(p)q(oin)o(ting)f(to.)22 b(The)16 b(same)e(go)q(es)i(for)f(all)f(op)q
+(erations)179 1304 y(whic)o(h)g(require)g(access)i(to)e(the)g(user's)h(mail)c
+(sp)q(o)q(ol)j(\014le.)137 1383 y Fi(\017)21 b Fl(The)11 b(w)o(orst)f
+(problem)f(w)o(as)h(that)h(di\013eren)o(t)g(UAs)g(and)f(MT)m(As)g(use)h
+(di\013eren)o(t)h(metho)q(ds)d(for)h(lo)q(c)o(king)g(the)h(mail)179
+1432 y(\014le.)17 b(Some)12 b(of)g(them)h(create)h(temp)q(orary)e(\014les)h
+(named)f Fk($)p Fi(f)p Fk(USER)p Fi(g)p Fk(.lock)p Fl(,)e(others)k(use)g(the)
+f Fk(mktemp)f Fl(library)179 1482 y(call)17 b(to)h(generate)i(unique)e
+(names.)31 b(Our)19 b(metho)q(d)e(a)o(v)o(oids)h(the)g(need)i(to)e(\014gure)h
+(out)f(all)f(the)i(di\013eren)o(t)179 1532 y(metho)q(ds)13
+b(used)i(in)e(lo)q(c)o(king)g(mail)e(\014les,)j(and)g(usage)g(of)g(temp)q
+(orary)f(\014les.)175 1636 y(An)g(alternate)h(w)o(a)o(y)e(to)h(a)o(v)o(oid)f
+(the)i(need)g(for)f(lo)q(c)o(k)g(\014les)h(is)f(to)g(deliv)o(er)g(mail)e(one)
+i(message)g(p)q(er)h(\014le)f(using)g(a)75 1686 y(di\013eren)o(t)i(system)g
+(suc)o(h)g(as)f(with)h(INN[19)o(])f(and)g(NNTP[10];)f(ho)o(w)o(ev)o(er,)i
+(this)f(w)o(ould)g(require)h(mo)q(di\014cations)e(to)75 1736
+y(all)g(UAs)h(and)g(MT)m(As.)75 1844 y Fj(4.7)56 b(Source)18
+b(Co)r(de)g(Size,)g(Av)m(ailabilit)n(y)-5 b(,)16 b(and)k(P)n(ortabilit)n(y)
+175 1919 y Fk(Hlfsd)c Fl(is)h(less)h(than)f(2500)f(lines)h(of)f(C)h(co)q(de,)
+i(including)d(commen)o(ts)f(and)i(white-spaces.)29 b(Ho)o(w)o(ev)o(er,)18
+b(it)75 1969 y(mak)o(es)13 b(use)h(of)g(almost)e(4000)h(lines)g(of)h(co)q(de)
+g(from)f(the)h Fk(amd)f Fl(distribution)h(itself.)175 2044
+y Fk(Hlfsd)g Fl(is)h(a)o(v)n(ailable)e(in)i(source)i(form)c(as)j(part)f(of)g
+(a)g(sp)q(ecial)h(distribution)e(of)h Fk(amd)p Fl(.)22 b(It)15
+b(can)h(b)q(e)g(retriev)o(ed)75 2094 y(via)d(anon)o(ymous)f
+Fk(ftp)h Fl(from)f Fk(ftp.cs.columbia.edu)e Fl(in)k(the)g(directory)h
+Fk(/pub/amd)p Fl(.)175 2168 y Fk(Hlfsd)h Fl(is)i(built)f(as)g(part)h(of)f
+(the)h(sp)q(ecial)g(distribution)f(of)g Fk(amd)g Fl(a)o(v)n(ailable)f(from)g
+(our)h(ftp)h(serv)o(er.)30 b(It)18 b(is)75 2218 y(almost)12
+b(as)j(p)q(ortable)f(as)g Fk(amd)g Fl(is.)k(It)c(is)h(only)e(the)i(lac)o(k)e
+(of)h(access)i(to)e(certain)h(mac)o(hines)e(that)h(stopp)q(ed)h(us)g(from)75
+2268 y(p)q(orting)d Fk(hlfsd)f Fl(to)i(the)g(n)o(umerous)f(platforms)e
+Fk(amd)i Fl(runs)h(on.)k(A)o(t)c(the)g(writing)f(of)f(this)i(pap)q(er,)g
+Fk(hlfsd)e Fl(has)i(b)q(een)75 2318 y(successfully)h(p)q(orted)g(and)e
+(running)h(on)f(SunOS)i(4.1.3,)c(HP-UX)k(9.0.1,)d(and)h(Solaris)g(2.2.)17
+b(Those)c(represen)o(t)i(the)75 2367 y(3)h(main)e(system)i(t)o(yp)q(es)h
+Fk(amd)e Fl(runs)i(on)f(and)f(span)i(most)e(Unix)g(\015a)o(v)o(ors:)22
+b(a)16 b(BSD-st)o(yle)g(system,)g(an)g(SVR-BSD)75 2417 y(h)o(ybrid,)d(and)h
+(a)f(system)h(v)o(ery)g(close)h(to)e(SVR4,)g(resp)q(ectiv)o(ely)m(.)75
+2525 y Fj(5)56 b(Ev)m(aluation)175 2600 y Fl(This)11 b(system)h(is)g(implem)o
+(en)o(ted)e(and)i(has)g(b)q(een)h(in)e(use)i(on)e(a)h(n)o(um)o(b)q(er)f(of)g
+(mac)o(hines)g(for)h(more)e(than)i(a)g(y)o(ear)75 2650 y(no)o(w.)20
+b(F)m(or)14 b(the)h(\014rst)g(nine)g(mon)o(ths)e Fk(hlfsd)h
+Fl(w)o(as)g(in)g(exp)q(erimen)o(tal)g(use.)21 b(W)m(e)14 b(ha)o(v)o(e)h
+(since)g(deplo)o(y)o(ed)g(it)f(on)g(most)75 2700 y(pro)q(duction)g(mac)o
+(hines)f(in)h(our)f(departmen)o(t,)h(spanning)f(o)o(v)o(er)h(a)g(100)f(hosts)
+h(and)g(3)g(di\013eren)o(t)g(arc)o(hitectures.)954 2825 y(10)p
+eop
+%%Page: 11 11
+bop 175 42 a Fl(The)11 b(goal)f(of)h(this)g(w)o(ork)g(is)f(to)h(expand)h(the)
+f(accessibilit)o(y)g(of)g(electronic)h(mail,)d(impro)o(v)o(e)g(o)o(v)o(erall)
+h(reliabilit)o(y)75 91 y(and)i(stabilit)o(y)f(of)g(this)h(vital)f(service,)j
+(while)d(at)h(the)h(same)e(time)g(main)o(tain)e(the)k(sanit)o(y)f(of)f(our)h
+(SAs)h(\(y)o(ours)f(truly)75 141 y(included\).)18 b(F)m(or)c(this)g(to)g
+(really)f(w)o(ork,)g(it)g(m)o(ust)g(ha)o(v)o(e:)126 257 y(1.)20
+b(V)m(ery)14 b(high)f(a)o(v)n(ailabilit)o(y)l(.)126 340 y(2.)20
+b(Little)13 b(o)o(v)o(erhead.)126 423 y(3.)20 b(Little)14 b(hassle)g(for)g
+(users)i(and)e(administrators)e(as)i(the)h(system)f(is)g(b)q(eing)g(used)h
+(or)f(installed)g(for)f(the)i(\014rst)179 473 y(time.)75 598
+y Fj(5.1)56 b(P)n(erformance)175 673 y Fl(W)m(e)15 b(ha)o(v)o(e)g(carried)h
+(out)g(some)e(measuremen)o(ts)h(to)h(quan)o(tify)e(the)i(ab)q(o)o(v)o(e)f
+(requiremen)o(ts)h(and)g(more.)22 b(The)75 723 y(tests)15 b(w)o(ere)g(p)q
+(erformed)f(on)f(a)h(Sun)g(SP)m(AR)o(Cstation-2)f(running)g(SunOS)i(4.1.3.)
+175 797 y(Accessing)20 b(a)f(lo)q(cal)g(sp)q(o)q(ol)g(\014le)g(via)f
+Fk(stat)h Fl(normally)d(tak)o(es)k(180)e(msec)h(without)g Fk(hlfsd)o
+Fl(.)34 b(If)19 b Fk(hlfsd)f Fl(is)75 847 y(running)g(and)g(has)g(the)h
+(user's)h(en)o(try)e(already)g(cac)o(hed,)i(it)e(tak)o(es)h(60)f(msec)g(more)
+f(to)h(access)i(the)f(\014le.)31 b(This)75 897 y(o)o(v)o(erhead)19
+b(is)f(attributed)h(to)f(the)h(fact)g(that)f(the)h(k)o(ernel)g(has)g(to)f
+(access)i(a)e(user-lev)o(el)h(NFS)g(serv)o(er,)h(making)75
+947 y(sev)o(eral)14 b(con)o(text)h(switc)o(hes.)175 1022 y(If)h(the)h(en)o
+(try)h(is)e(not)h(cac)o(hed,)h Fk(hlfsd)e Fl(forks)g(a)h(c)o(hild)f(to)h(p)q
+(erform)f(op)q(erations)h(whic)o(h)f(ma)o(y)f(cause)j(it)e(to)75
+1071 y(hang.)21 b(The)16 b(o)o(v)o(erhead)f(of)f(that)i Fk(fork)e
+Fl(and)h(other)g(c)o(hec)o(ks)i(is)e(an)f(additional)g(70)g(msec)h(\(or)g
+(130)f(msec)h(o)o(v)o(er)g(the)75 1121 y(regular)d(lo)q(okup)f(not)g(using)h
+Fk(hlfsd)o Fl(\).)17 b(Ho)o(w)o(ev)o(er,)12 b(this)g(o)o(v)o(erhead)g(is)g
+(incurred)h(only)d(once)j(in)e(5)h(min)o(utes,)e(b)q(ecause)75
+1171 y(the)k(result)h(of)e(eac)o(h)i(c)o(hec)o(k)g(is)e(cac)o(hed)i(for)f
+(that)g(long)f(b)o(y)g(default.)175 1246 y(The)f(ab)q(o)o(v)o(e)g(times)f
+(are)i(somewhat)e(signi\014can)o(t,)g(but)i(not)e(b)o(y)h(m)o(uc)o(h,)f
+(considering)h(the)h(use)g(of)f(a)f(user-lev)o(el)75 1296 y(\014le-serv)o
+(er.)19 b(\(By)12 b(comparison,)e(in)h(our)h(en)o(vironmen)o(t)f(it)g(tak)o
+(es)h(ab)q(out)g(0.5)e(seconds)k(to)d(access)j(a)d(new)h(\014lesystem)75
+1345 y(using)h Fk(amd)p Fl(.\))18 b(Giv)o(en)13 b(the)h(b)q(ene\014ts)i(of)d
+Fk(hlfsd)o Fl(,)g(w)o(e)h(feel)g(that)g(a)f(minima)o(l)e(access)k(slo)o(wdo)o
+(wn)e(is)h(a)f(small)f(price)i(to)75 1395 y(pa)o(y)m(.)j(In)d(practice,)g(o)o
+(v)o(er)g(12)g(mon)o(ths)e(of)i(usage)g(w)o(e)g(ha)o(v)o(e)g(noticed)g(no)g
+(visible)f(degradation)g(of)h(service.)1734 1380 y Fg(13)175
+1470 y Fl(The)h(in)o(ternal)g(data)h(structures)h(\(tables)f(and)f(cac)o
+(hes\))i(require)g(50)e(b)o(ytes)h(p)q(er)g(user)g(on)g(the)g(system.)22
+b(In)75 1520 y(our)16 b(en)o(vironmen)o(t,)e(with)i(750)f(users,)i(that)f
+(translates)g(to)g(ab)q(out)f(37KB)h(|)f(rather)i(insigni\014can)o(t)e(giv)o
+(en)g(that)75 1570 y(w)o(orkstations)f(these)h(da)o(ys)f(come)f(installed)g
+(with)h(at)f(least)i(16-32MB)e(of)g(RAM.)75 1677 y Fj(5.1.1)55
+b(Remailing)16 b(Lost)i(Mail)175 1753 y Fl(The)h Fk(hlfsd)f
+Fl(distribution)h(con)o(tains)g(a)f Fk(perl)p Fl([26)o(])g(script)i(called)f
+Fk(lostaltmail)p Fl(.)31 b(Remailing)16 b(a)i(single)75 1802
+y(message)c(with)g(a)g(b)q(o)q(dy)g(size)h(of)f(1KB,)g(tak)o(es)h(an)f(a)o(v)
+o(erage)g(of)g(1.2)f(seconds)j(\(total)d(time\).)18 b(In)c(our)h(departmen)o
+(t,)75 1852 y(resending)g(an)e(a)o(v)o(erage)h(mailb)q(o)o(x)d(\014le)j(tak)o
+(es)h(ab)q(out)e(20)h(seconds.)175 1927 y(Initially)f(w)o(e)j(ran)g(the)h
+(script)f(once)h(a)e(da)o(y)m(,)g(but)h(found)g(ha)o(ving)f(to)g(w)o(ait)g
+(up)h(to)g(24)f(hours)i(for)e(lost)h(mail)75 1977 y(redeliv)o(ery)f(to)q(o)g
+(long.)k(W)m(e)14 b(then)i(exp)q(erimen)o(ted)f(with)f(running)g
+Fk(lostaltmail)f Fl(once)i(an)f(hour.)21 b(Ho)o(w)o(ev)o(er,)15
+b(w)o(e)75 2027 y(found)c(that)g(frequency)h(to)q(o)f(fast.)17
+b(The)12 b(most)e(lik)o(ely)f(situation)i(in)g(whic)o(h)g Fk(hlfsd)f
+Fl(will)f(rep)q(oin)o(t)j(its)f(sym)o(b)q(olic)e(link)75 2076
+y(to)14 b(the)g(alternate)g(sp)q(o)q(ol)g(directory)g(is)g(when)g(the)g
+(user's)h(\014lesystem)f(is)f(full.)k(A)d(full)e(\014lesystem)i(is)g(a)f(p)q
+(ersisten)o(t)75 2126 y(situation)18 b(that)h(in)f(most)f(cases)j(tak)o(es)f
+(some)f(time)f(to)h(get)h(\014xed,)h(as)e(it)h(requires)g(h)o(uman)e(in)o
+(terv)o(en)o(tion.)32 b(If)75 2176 y(the)19 b(situation)f(that)h(causes)h
+Fk(hlfsd)e Fl(to)g(use)i(the)f(alternate)g(sp)q(o)q(ol)g(directory)g(is)g
+(lik)o(ely)e(to)i(p)q(ersist,)h(running)75 2226 y(the)15 b
+Fk(lostaltmail)e Fl(script)i(will)f(consume)g(unnecessary)j(resources,)g
+(only)d(to)h(redeliv)o(er)g(the)h(mail)c(bac)o(k)j(to)f(the)75
+2276 y(alternate)f(sp)q(o)q(ol)f(directory)m(.)18 b(W)m(e)12
+b(\014nally)g(settled)h(on)g(running)f Fk(lostaltmail)e Fl(b)q(et)o(w)o(een)k
+(6)e(and)h(12)f(times)f(a)h(da)o(y)m(.)75 2325 y(Dep)q(ending)i(on)g(the)g
+(amoun)o(t)e(of)i(lost)f(mail)e(exp)q(ected,)16 b(the)e(script)h(could)f(b)q
+(e)g(run)h(more)d(or)i(less)h(often.)75 2433 y Fj(5.1.2)55
+b(Reliabilit)n(y)175 2509 y Fl(W)m(e)11 b(ha)o(v)o(e)h(sim)o(ulated)f(w)o
+(orst-case)i(scenarios)g(b)o(y)f(\014lling)e(up)i(a)g(user)h(\014lesystem)f
+(and)g(letting)g Fk(hlfsd)f Fl(decide)75 2558 y(to)k(redirect)i(mail)12
+b(to)j(the)h(alternate)g(sp)q(o)q(ol)e(directory)m(.)22 b(A)o(t)16
+b(this)f(p)q(oin)o(t)f(w)o(e)i(\014lled)f(up)g(that)g(\014lesystem)g(as)g(w)o
+(ell.)p 75 2593 720 2 v 106 2620 a Ff(13)139 2632 y Fe(The)g(SAs)h(group)e
+(felt)h(so)g(con)o(vinced)e(that)i Fd(hlfsd)f Fe(w)o(as)i(w)o(orking)e(w)o
+(ell,)j(that)d(w)o(e)i(w)o(ere)g(the)f(\014rst)g(to)g(use)g(it)g(on)g
+Fc(our)i Fe(home)75 2671 y(mac)o(hines.)954 2825 y Fl(11)p
+eop
+%%Page: 12 12
+bop 75 42 a Fk(Hlfsd)16 b Fl(k)o(ept)i(on)e(p)q(oin)o(ting)g(to)h(the)h
+(alternate)g(sp)q(o)q(ol)f(directory)g(during)g(the)h(cac)o(hed)g(en)o(try)g
+(in)o(terv)n(al,)e(but)i(w)o(e)75 91 y(observ)o(ed)d(no)g(mail)c(lost.)19
+b(Instead,)c(the)g(sending)g(side)f(detected)j(that)d(the)h(\014lesystem)f(w)
+o(as)h(full,)d(and)j(k)o(ept)f(the)75 141 y(message)g(in)f(the)i(remote)e
+(\(priv)n(ate\))h(sp)q(o)q(ol)g(directory)m(.)k(This)c(is)f(the)i(default)e
+(b)q(eha)o(vior)h Fk(sendmail)p Fl([1)n(])f(pro)o(vides.)175
+216 y Fk(Hlfsd)d Fl(do)q(es)i(not)g(in)o(tro)q(duce)g(an)o(y)f(new)h
+(problems;)f(that)h(is,)f(if)g(a)h(\014lesystem)f(is)g(completely)g(full,)f
+(whatev)o(er)75 266 y(b)q(eha)o(vior)j(y)o(our)g(curren)o(t)h(LD)o(A)f(pro)o
+(vides)g(is)g(main)o(tained.)j(Since)e Fk(hlfsd)e Fl(uses)i(b)q(oth)f(the)h
+(user's)g(\014lesystem)f(and)75 315 y(an)18 b(alternate)h(sp)q(o)q(ol)f
+(directory)m(,)h(it)f(actually)g(increases)i(the)f(a)o(v)n(ailabili)o(t)o(y)c
+(of)j(mail)e(services,)21 b(b)o(y)d(\\virtually")75 365 y(increasing)c(the)h
+(disk)e(space)i(a)o(v)n(ailable)d(for)h(mail)f(sp)q(o)q(oling.)175
+440 y(Once)g(space)g(has)f(b)q(een)h(freed)g(in)f(the)g(user's)h
+(\014lesystem,)f(and)g(the)h(cac)o(hed)g(en)o(try)f(expired,)h
+Fk(hlfsd)e Fl(p)q(oin)o(ted)75 490 y(its)h(sym)o(b)q(olic)f(link)h(bac)o(k)g
+(to)g(the)h(user's)h(home)d(directory)m(.)18 b(The)12 b(next)g(time)e(the)i
+(remailing)d(script)j(ran,)f(all)g(\\lost")75 540 y(mail)g(got)j(resen)o(t)h
+(to)f(its)g(o)o(wners.)175 614 y(Since)f(the)g(installation)d(of)i
+Fk(hlfsd)f Fl(in)h(our)h(pro)q(duction)f(en)o(vironmen)o(t,)f(w)o(e)i(ha)o(v)
+o(e)f(seen)i(a)e(few)h(cases)g(of)f(lost)75 664 y(mail)i(b)q(eing)i(resen)o
+(t,)i(mostly)c(due)j(to)f(full)f(\014lesystems.)25 b(W)m(e)16
+b(kno)o(w)g(of)g(no)g(case)h(where)g(mail)d(w)o(as)i(completely)75
+714 y(lost.)75 822 y Fj(5.2)56 b(Installation)175 897 y Fl(Since)13
+b Fk(hlfsd)e Fl(w)o(as)i(written)g(b)o(y)f(SAs)h(for)f(other)h(SAs,)g(w)o(e)g
+(ha)o(v)o(e)f(pro)o(vided)h(it)f(with)g(sev)o(eral)h(command-li)o(ne)75
+947 y(options)f(to)h(use)g(at)g(startup)g(time,)e(enabling)h
+Fk(hlfsd)g Fl(to)g(b)q(e)h(tailored)g(for)f(a)g(particular)h(en)o(vironmen)o
+(t.)j(Needless)75 997 y(to)g(sa)o(y)m(,)g(a)g(man)e(page)i(is)h(pro)o(vided,)
+f(as)g(w)o(ell)g(as)g(complete)g(source)h(co)q(de.)26 b(F)m(urthermore,)16
+b(w)o(e)h(included)f(a)g(few)75 1046 y(scripts)f(written)f(in)f
+Fk(sh)g Fl(and)h Fk(perl)e Fl(whic)o(h)i(w)o(e)g(use)g(in)f(our)h(en)o
+(vironmen)o(t)e(to)i(re/start)h Fk(hlfsd)o Fl(,)e(test)h(for)g(p)q(ossible)75
+1096 y(con\014guration)f(anomalies,)f(and)h(resend)j(\\lost")d(mail.)175
+1171 y(The)e(most)f(signi\014can)o(t)h(w)o(ork)f(that)i(SAs)f(need)h(to)f(do)
+g(is)g(iden)o(tify)f(programs)g(that)h(need)h(to)f(access)i(mailb)q(o)o(x)75
+1221 y(\014les)18 b(of)f(other)i(users,)h(and)d(\\)p Fh(setgid)p
+Fl(")h(them)f(to)g(HLFS)p 967 1221 13 2 v 15 w(GID.)g(In)h(our)g(en)o
+(vironmen)o(t)e(w)o(e)i(had)g(to)g(do)f(that)h(for)75 1271
+y Fk(comsat)p Fl(,)f Fk(from)p Fl(,)g Fk(finger)g Fl(and)g(a)h(few)g(others.)
+30 b(Our)19 b(en)o(vironmen)o(t)d(uses)j(the)g Fk(rdist)p Fl([5)n(])e
+(automatic)f(soft)o(w)o(are)75 1320 y(distribution)i(program,)g(and)g(th)o
+(us)h(these)h(c)o(hanges)f(w)o(ere)h(required)f(only)f(in)g(one)h(place)f(|)g
+(the)i(top)e(of)g(our)75 1370 y Fk(rdist)13 b Fl(tree.)75 1478
+y Fj(5.3)56 b(Problems)175 1553 y Fl(There)15 b(are)f(a)g(few)g(problems,)e
+(some)h(of)g(whic)o(h)h(cannot)g(b)q(e)h(easily)e(resolv)o(ed:)137
+1670 y Fi(\017)21 b Fl(Some)15 b(programs)g(need)i(to)f(b)q(e)h
+Fh(setgid)g Fl(to)f(the)h(sp)q(ecial)f(HLFS)p 1181 1670 V 15
+w(GID)g(group.)25 b(There)17 b(is)g(no)f(easy)g(w)o(a)o(y)g(to)179
+1719 y(lo)q(cate)f(them)g(other)h(than)g(kno)o(wing)e(ahead)i(of)f(time)f
+(what)h(they)h(do.)23 b(Note)16 b(that)f(if)g(the)h(programs)f(are)179
+1769 y(not)c Fh(setgid)p Fl(,)g(the)h(only)f(consequence)i(is)e(that)h(these)
+g(programs)f(are)g(unable)g(to)g(\014nd)h(mailb)q(o)o(xes.)j(Ho)o(w)o(ev)o
+(er,)179 1819 y(with)e(other)i(metho)q(ds,)e(if)g($MAIL)h(is)f(not)h(used,)g
+(mail)e(is)h(not)h(deliv)o(ered.)137 1902 y Fi(\017)21 b Fl(It)12
+b(is)f(p)q(ossible)h(that)g(the)h(status)f(of)g(a)f(home)g(directory)h
+(access)i(will)c(c)o(hange)j(during)e(the)i(time)d(that)i Fk(hlfsd)179
+1952 y Fl(cac)o(hes)17 b(this)g(information.)23 b(Pic)o(king)15
+b(a)h(smaller)f(cac)o(he)i(expiration)f(time)f(can)i(alleviate)e(this)i
+(problem,)179 2002 y(but)d(it)g(increases)h(the)g(resources)h(tak)o(en)e(b)o
+(y)g Fk(hlfsd)f Fl(and)h(slo)o(ws)f(do)o(wn)h(access)i(to)e(mail.)h(It)f(is)g
+(left)g(for)f(the)179 2051 y(individual)f(SAs)i(to)g(c)o(hange)g(this)g
+(default)f(v)n(alue.)137 2134 y Fi(\017)21 b Fl(An)o(y)14 b(logins)e(with)i
+(the)h(same)e Fh(uid)h Fl(and)f(a)h(di\013eren)o(t)h(home)e(directory)h(ma)o
+(y)e(ha)o(v)o(e)i(mail)d(deliv)o(ered)k(or)e(read)179 2184
+y(from)c(an)o(y)i(of)f(their)h(home)f(directory)i(pathnames.)k
+Fk(Hlfsd)10 b Fl(stores)j(pathnames)d(in)g(an)h(in)o(ternal)g(hash)g(table)
+179 2234 y(k)o(ey)o(ed)i(b)o(y)g(the)g Fh(uid)p Fl(;)g(therefore,)h(it)f(is)g
+(unde\014ned)h(whic)o(h)f(pathname)f(is)g(returned)j(in)d(the)i(case)g(of)e
+(m)o(ultiple)179 2284 y(users)k(with)e(the)h(same)f Fh(uid)h
+Fl(and)g(di\013eren)o(t)g(home)f(directories.)21 b(W)m(e)14
+b(pro)o(vide)h(a)f(script)i(whic)o(h)e(c)o(hec)o(ks)i(for)179
+2334 y(this)e(situation)f(and)h(w)o(arns)g(the)g(SAs.)137 2417
+y Fi(\017)21 b Fl(On)16 b(systems)g(that)g(cannot)g(turn)g(o\013)g(the)g(NFS)
+g(attribute)g(cac)o(he,)h(the)g(k)o(ernel)f(migh)o(t)d(return)k(the)g(same)
+179 2467 y(sym)o(b)q(olic)8 b(link)h(name)f(for)i(t)o(w)o(o)f(di\013eren)o(t)
+i(users)g(who)f(access)h(the)g(sp)q(o)q(ol)e(directory)i(consecutiv)o(ely)m
+(,)f(p)q(ossibly)179 2516 y(resulting)17 b(in)f(mail)e(getting)i(deliv)o
+(ered)h(to)g(the)g(wrong)g(mailb)q(o)o(x!)23 b(On)17 b(these)h(systems,)f
+Fk(hlfsd)f Fl(will)f(not)179 2566 y(run)h(unless)g(started)g(with)f(a)h(sp)q
+(ecial)f(option.)22 b(In)16 b(that)f(case)i(it)e(will)f(set)i(the)g
+(attribute)g(cac)o(he)g(v)n(alue)f(to)179 2616 y(the)f(shortest)i(p)q
+(ossible)e(in)o(terv)n(al,)e(but)i(it)g(ma)o(y)e(not)i(b)q(e)g(su\016cien)o
+(t.)954 2825 y(12)p eop
+%%Page: 13 13
+bop 75 42 a Fj(6)56 b(Related)17 b(W)-5 b(ork)175 117 y Fl(The)18
+b(idea)f(of)h(dynamic)e(or)h(v)n(ariable)g(pathname)g(comp)q(onen)o(ts)g(is)h
+(not)g(new.)30 b(HP-UX)18 b(do)q(es)g(this)g(with)75 166 y(con)o(text-dep)q
+(enden)o(t)g(\014les[8],)d(and)g(Mac)o(h)h(with)f(the)h(\\)p
+Fk(@SYS)p Fl(")f(v)n(ariables[4)n(].)23 b(Both)16 b(of)f(these)i(implemen)o
+(tations)75 216 y(supp)q(ort)11 b(replacemen)o(t)f(of)f(pathname)g(comp)q
+(onen)o(ts)h(b)o(y)g(k)o(ernel)g(v)n(ariables.)16 b(Ap)q(ollo's)9
+b(DOMAIN/OS)i(supp)q(orted)75 266 y(a)20 b(more)g(sophisticated)h(system)f
+(where)i(arbitrary)e(user)i(en)o(vironmen)o(t)d(v)n(ariables)h(could)g(b)q(e)
+h(referenced)i(in)75 316 y(pathnames[11)n(,)12 b(12].)k(On)d(the)g(issue)g
+(of)e(ha)o(ving)g(a)h(user's)i(home)d(\014les)h(and)g(mailb)q(o)o(x)e(\014le)
+i(reside)h(in)f(one)g(lo)q(cation,)75 366 y(Plan)h(9's)h Fh(attach)g
+Fl(op)q(erator)h(can)f(b)q(e)g(used)h(to)f(unify)f(sev)o(eral)h(\014le)g
+(serv)o(ers)i(in)o(to)d(one)h(user)h(name)e(space[14].)175
+440 y(What)f(is)h(new)g(ab)q(out)g(our)g(idea)g(is)g(that)g(w)o(e)g(do)f(not)
+h(require)h(an)o(y)f(c)o(hange)g(to)g(an)o(y)f(part)h(of)g(the)g
+(\014lesystem)75 490 y(implemen)o(tatio)o(n)c(in)i(the)i(k)o(ernel.)18
+b(All)10 b(that)i(is)g(required)h(are)f(RPC)f(and)h(NFS,)f(making)f(the)i
+(system)f(m)o(uc)o(h)g(more)75 540 y(widely)i(applicable.)175
+615 y(Though)i(at)h(\014rst)h(it)e(ma)o(y)f(app)q(ear)i(that)g
+Fk(amd)f Fl(can)i(do)e(what)h(hlfsd)f(do)q(es,)i(it)f(can't.)24
+b Fk(Amd)15 b Fl(cannot)h(return)75 665 y(di\013eren)o(t)d(pathnames)f(as)g
+(a)g(v)n(alue)g(of)g(a)g(sym)o(b)q(olic)f(link)g(dep)q(ending)i(on)f(who)g
+(accessed)j(it.)i(See)c(also)f(Section)h(2.3)75 714 y(for)h(more)e(details)i
+(on)g(v)n(arious)f(w)o(a)o(ys)g(in)h(whic)o(h)g Fk(amd)f Fl(cannot)h(help)g
+(the)g(w)o(a)o(y)g Fk(hlfsd)e Fl(can.)75 822 y Fj(6.1)56 b(Mail-reading)17
+b(Serv)n(ers)175 897 y Fl(The)11 b(future)g(of)g(mail)d(reading)i(and)h
+(sending)g(ma)o(y)e(b)q(e)i(similar)e(to)h(that)h(used)h(b)o(y)f(the)g(NNTP)g
+(proto)q(col)g(used)75 947 y(for)g(managing)d(NetNews[10)q(,)j(19)o(].)17
+b(That)11 b(is,)g(a)g(sp)q(ecial-purp)q(ose)h(serv)o(er)h(whic)o(h)e(pro)o
+(vides)h(net)o(w)o(ork)f(connections)75 997 y(for)j(reading)f(and)h(writing)f
+(mail)e(remotely)m(.)175 1072 y(Sev)o(eral)19 b(suc)o(h)g(programs)f(exist,)i
+(most)e(notably)g(IMAP[16])g(and)h(POP[17].)32 b(Ho)o(w)o(ev)o(er,)20
+b(use)g(of)f(these)75 1122 y(serv)o(ers)14 b(is)e(limited)e(at)i(this)g(time)
+e(b)q(ecause)k(most)d(MT)m(As)h(and)g(UAs)h(ha)o(v)o(e)f(not)g(b)q(een)h(con)
+o(v)o(erted)g(to)f(use)h(them,)e(or)75 1171 y(they)i(require)h(sp)q(ecial)f
+(en)o(vironmen)o(ts)f(\(the)i Fh(A)o(ndr)n(ew)f(Message)i(Delivery)e(System)p
+Fl([18)o(])g(requires)h(AFS\).)e(P)o(orting)75 1221 y(those)18
+b(applications)f(for)h(most)e(p)q(opular)i(en)o(vironmen)o(ts)f(is)g(not)h
+(going)f(to)g(b)q(e)i(an)e(easy)h(task.)30 b(Nev)o(ertheless,)75
+1271 y(the)15 b(b)q(ene\014ts)h(of)d(suc)o(h)i(services)h(o)o(v)o(er)e(that)g
+(of)g Fk(hlfsd)f Fl(w)o(ould)g(include)h(faster)h(and)f(more)f(reliable)h
+(service,)h(plus)75 1321 y(greatly)e(expanded)h(functionalit)o(y)e(\(p)q
+(ossibly)h(pro)o(viding)f(threads)i(information)c(for)j(threaded)i(mail)10
+b(readers\).)75 1429 y Fj(7)56 b(Conclusion)175 1504 y Fl(W)m(e)16
+b(ha)o(v)o(e)h(describ)q(ed)i(the)f(b)q(ene\014ts)h(of)d(deliv)o(ering)h
+(mail)d(to)j(users')h(home)e(directories,)j(the)e(traditional)75
+1554 y(w)o(a)o(ys)10 b(to)f(do)h(that)g(and)g(wh)o(y)f(w)o(e)i(think)e(they)h
+(are)h(inadequate,)f(and)g(the)g(design,)h(implemen)o(tatio)o(n,)d(p)q
+(erformance,)75 1604 y(and)14 b(con)o(v)o(enience)h(of)e(our)h(alternativ)o
+(e.)175 1678 y(The)i(main)f(con)o(tribution)g(of)h(our)g(w)o(ork)g(is)h(the)g
+(idea)f(mail)d(can)k(b)q(e)g(reliably)e(deliv)o(ered)i(to)f(user's)h(home)75
+1728 y(directories)12 b(for)e(easy)h(access)i(with)d(v)o(ery)h(little)f(o)o
+(v)o(erhead,)h(user)g(hassle,)h(or)e(the)i(need)f(for)f(extensiv)o(e)i(in)o
+(terv)o(en)o(tion)75 1778 y(on)i(the)g(part)g(of)f(SAs.)175
+1853 y(A)h(w)o(orking)f(protot)o(yp)q(e)i(v)o(ersion)f(of)g
+Fk(hlfsd)f Fl(w)o(as)h(written)h(in)f(one)g(w)o(eek)o(end.)20
+b(Ho)o(w)o(ev)o(er,)15 b(the)f(ideas)h(repre-)75 1902 y(sen)o(ted)e(in)e(the)
+i(w)o(ork)e(span)h(sev)o(eral)h(y)o(ears)f(of)f(exp)q(erience)j(in)d(net)o(w)
+o(ork)h(programming)c(\(esp)q(ecially)13 b(RPC)o(\),)f(NFS,)75
+1952 y Fk(amd)p Fl(,)h(and)g(mail)f(systems.)75 2060 y Fj(7.1)56
+b(F)-5 b(uture)18 b(W)-5 b(ork)175 2135 y Fl(It)15 b(w)o(ould)e(b)q(e)j(p)q
+(ossible)f(to)g(in)o(tegrate)g(some)f(of)g Fk(hlfsd)o Fl('s)g(functionalit)o
+(y)g(in)o(to)g Fk(amd)p Fl(,)g(b)o(y)g(pro)o(viding)g(sp)q(ecial)75
+2185 y(k)o(eyw)o(ords)g(lik)o(e)f Fk($)p Fi(f)p Fk(home)p Fi(g)p
+Fl(,)f Fk($)p Fi(f)p Fk(user)p Fi(g)g Fl(and)i Fk($)p Fi(f)p
+Fk(group)p Fi(g)e Fl(for)i(use)h(in)e Fk(amd)p Fl('s)g(maps.)175
+2260 y(W)m(e)e(plan)g(on)g(making)e(sure)k Fk(hlfsd)d Fl(is)h(as)h(p)q
+(ortable)g(as)f Fk(amd)g Fl(is,)g(and)h(impro)o(ving)d(its)i(p)q(erformance)h
+(as)f(m)o(uc)o(h)75 2310 y(as)j(p)q(ossible.)k(An)c(RPC)g(in)o(terface)g(for)
+g(querying)g Fk(hlfsd)o Fl('s)f(status)i(is)f(needed)h(as)f(w)o(ell.)75
+2418 y Fj(7.2)56 b(Alternativ)n(e)17 b(Uses)175 2493 y Fk(Hlfsd)o
+Fl('s)g(primary)e(use)j(is)f(that)h(of)e(a)h(mail-sp)q(o)q(ol)e(redirector.)
+29 b(Ho)o(w)o(ev)o(er,)18 b(it)f(can)h(b)q(e)g(used)g(to)f(p)q(erform)75
+2543 y(other)e(tasks.)j(All)13 b(it)h(tak)o(es)g(are)g(the)h(righ)o(t)e
+(command-li)o(ne)f(options:)137 2650 y Fi(\017)21 b Fk(Hlfsd)10
+b Fl(can)h(manage)e(the)j Fk(/var/tmp)d Fl(directory)m(.)17
+b(Th)o(us)12 b(ev)o(ery)f(user)h(who)f(uses)h Fk(/var/tmp)e
+Fl(w)o(ould)g(actually)179 2700 y(b)q(e)j(using)e(a)h(sub)q(directory)i
+(within)d(their)i(o)o(wn)e(home)g(directory)m(,)i(rather)g(than)f(taking)f
+(from)f(system-wide)954 2825 y(13)p eop
+%%Page: 14 14
+bop 179 42 a Fl(resources.)137 124 y Fi(\017)21 b Fl(Other)13
+b(t)o(yp)q(es)g(of)e(user-sp)q(eci\014c)k(\014les)d(whic)o(h)g(get)h(sp)q(o)q
+(oled)f(to)g(a)g(particular)g(host,)g(suc)o(h)h(as)f Fh(Se)n(cr)n(et)h(Mail)p
+Fl([24)n(])179 173 y(or)h(electronic)h(faxes)f(can)g(also)f(b)q(e)h
+(redirected)i(for)e(sp)q(o)q(oling)f(in)o(to)g(home)g(directories.)75
+296 y Fj(8)56 b(Ac)n(kno)n(wledgmen)n(ts)175 371 y Fl(Sp)q(ecial)10
+b(thanks)h(go)e(to)i(Daniel)e(Duc)o(hamp)g(for)h(his)g(in)o(v)n(aluable)f
+(commen)o(ts)f(on)i(the)h(pap)q(er,)h(to)e(James)g(T)m(anis)75
+421 y(who)g(wrote)h(the)f(remailing)e(script)j(and)f(pro)o(vided)g(useful)g
+(feedbac)o(k,)h(and)f(to)g(all)f(mem)o(b)q(ers)g(of)g(the)i(tec)o(hnical)g
+(sta\013)75 471 y(who)e(help)q(ed)h(in)f(stress-testing)i Fk(hlfsd)o
+Fl(.)17 b(W)m(e)9 b(also)f(thank)h(man)o(y)f(mem)o(b)q(ers)g(of)g(the)i
+Fk(amd-workers@acl.lan)o(l.gov)75 520 y Fl(mailing)h(list)i(for)h(pro)o
+(viding)e(v)n(aluable)h(discussion)h(on)g(the)g(sub)r(ject.)175
+595 y(This)f(w)o(ork)h(w)o(as)f(supp)q(orted)i(in)e(part)h(b)o(y)f(a)h
+(National)e(Science)j(F)m(oundation)d(CISE)i(Institutional)f(Infras-)75
+645 y(tructure)j(gran)o(t,)d(n)o(um)o(b)q(er)g(CD)o(A-90-24735.)175
+720 y(As)i Fk(hlfsd)f Fl(uses)i(parts)f(of)f(the)i Fk(amd)e
+Fl(distribution,)g(it)h(is)f(distributed)i(under)g(the)f(same)f(restrictions)
+i(and)75 769 y(licenses)f(that)f Fk(amd)f Fl(is.)75 877 y Fj(9)56
+b(References)75 952 y Fl([1])20 b(E.)14 b(Allman.)k(SENDMAIL)d({)f(An)h(In)o
+(ternet)o(w)o(ork)h(Mail)d(Router.)21 b(In)14 b Fh(UNIX)i(System)f(Manager's)
+h(Manual.)140 1002 y Fl(Univ)o(ersit)o(y)d(of)h(California,)d(Berk)o(eley)m
+(,)j(1986.)75 1084 y([2])20 b(F.)g(C.)g(Baran.)39 b(MW:)20
+b(Mail-W)m(atc)o(h.)37 b(An)21 b(unpublished)g(man)o(ual)d(page,)k(Academic)e
+(Systems)h(Group,)140 1134 y(Colum)o(bia)11 b(Univ)o(ersit)o(y)i(Cen)o(ter)i
+(for)f(Computing)e(Activities,)h(1987.)75 1216 y([3])20 b(B.)12
+b(Callaghan)f(and)h(T.)g(Ly)o(on.)j(The)e(Automoun)o(ter.)i(In)e
+Fh(Pr)n(o)n(c.)g(1989)h(Winter)g(USENIX)g(Conf.)p Fl(,)e(pp.)g(43{51,)140
+1266 y(Jan)o(uary)h(1989.)75 1348 y([4])20 b(M.)13 b(N.)g(Condict.)18
+b(Con\014guring)13 b(and)g(Building)g(Mac)o(h)h(3.0.)i(OSF)e(Researc)o(h)h
+(Institute,)f(Grenoble,)g(F)m(rance.)140 1398 y(Unpublished)g(notes)g(a)o(v)n
+(ailable)e(via)h(ftp)h(from)e Fk(mach.cs.cmu.edu:d)o(oc/no)o(tes/k)o(ernel)p
+1595 1398 14 2 v 12 w(build.doc)p Fl(.)75 1480 y([5])20 b(M.)13
+b(A.)g(Co)q(op)q(er.)18 b(Ov)o(erhauling)13 b(Rdist)g(for)h(the)g('90s.)j
+Fh(L)n(ar)n(ge)d(Instal)r(lation)h(System)g(A)n(dministr)n(ators)e(Work-)140
+1530 y(shop)i(Pr)n(o)n(c)n(e)n(e)n(dings)p Fl(,)e(pp.)h(1-8,)f(USENIX,)h
+(Long)f(Beac)o(h,)h(CA,)g(Octob)q(er)h(19-June)f(23,)f(1992.)75
+1612 y([6])20 b(A.)13 b(J.)h(Findla)o(y)m(.)i(The)e(Home-Directory)f(Mail)g
+(System.)18 b(In)13 b Fh(EUUG)i(News)p Fl(,)e(Autumn)g(1988.)75
+1694 y([7])20 b(J.)13 b(F)m(ulton.)k(MIT)d(X)g(Consortium.)j(X11R5)12
+b(Reference)k(Man)o(ual)d(P)o(ages,)h(Section)g(1:)k(\\xbi\013\(1\)",)12
+b(1988.)75 1776 y([8])20 b(Hewlett-P)o(ac)o(k)n(ard)14 b(Compan)o(y)m(.)j
+(HP-UX)e(Release)g(9.0)e(Reference)j(Man)o(ual,)d(Section)i(4:)k
+(\\cdf\(4\)",)13 b(August)140 1826 y(1992.)75 1908 y([9])20
+b(IBM)11 b(Corp.)j(AIX)e(Comma)o(nds)d(Reference,)k(V)m(olume)d(1,)h(\\b)q
+(ellmail\(1\)")o(,)e(pp.)i(1-84|1-87,)e(Decem)o(b)q(er)i(1989.)75
+1990 y([10])19 b(B.)14 b(Kan)o(tor)g(and)g(P)m(.)f(Lapsley)m(.)k(Net)o(w)o
+(ork)e(News)f(T)m(ransfer)h(Proto)q(col.)j(RF)o(C)13 b(977,)f(F)m(ebruary)j
+(1986;)d(27)h(p.)75 2073 y([11])19 b(P)m(.)14 b(J.)h(Leac)o(h,)g(P)m(.)f(H.)g
+(Levine,)h(B.)f(P)m(.)g(Douros,)h(J.)f(A.)h(Hamilton,)c(D.L.)j(Nelson,)g(and)
+h(B.)g(L.)f(Stumpf.)19 b Fh(The)140 2122 y(A)o(r)n(chite)n(ctur)n(e)14
+b(of)j(an)f(Inte)n(gr)n(ate)n(d)g(L)n(o)n(c)n(al)g(Network.)22
+b Fl(In)15 b Fh(IEEE)i(Journal)f(on)h(Sele)n(cte)n(d)f(A)o(r)n(e)n(as)g(in)g
+(Communi-)140 2172 y(c)n(ations,)d Fm(SA)o(C-1)p Fl(\(5\),)g(pp.)h(842-856,)e
+(No)o(v)o(em)o(b)q(er)h(1983.)75 2254 y([12])19 b(P)m(.)12
+b(H.)f(Levine.)16 b Fh(The)d(Ap)n(ol)r(lo)g(DOMAIN)g(Distribute)n(d)g(File)f
+(System.)k Fl(In)c Fh(NA)m(TO)g(ASI)i(Series:)j(The)n(ory)c(and)140
+2304 y(Pr)n(actic)n(e)k(of)i(Distribute)n(d)f(Op)n(er)n(ating)g(Systems,)g
+Fl(Y.)g(P)o(ak)o(er,)g(J-P)m(.)g(Banatre,)h(M.)e(Bozyi\024)-21
+b(git,)18 b(pp.)f(241-260,)140 2354 y(editors,)d(Springer-V)m(erlag,)f(1987.)
+75 2436 y([13])19 b(J.)14 b(S.)g(P)o(endry)h(and)f(N.)g(William)o(s.)j
+Fh(A)o(md)e(-)g(The)g(4.4)g(BSD)h(A)o(utomounter)p Fl(.)k(Imp)q(erial)12
+b(College)i(of)g(Science)140 2486 y(T)m(ec)o(hnology)f(and)g(Medicine,)h
+(London.)f(Marc)o(h)h(1991.)75 2568 y([14])19 b(R.)14 b(Pik)o(e,)g(D.)f
+(Presotto,)i(K.)f(Thompson,)f(and)h(H.)g(T)m(ric)o(k)o(ey)m(.)19
+b Fh(Plan)d(9)f(fr)n(om)g(Bel)r(l)g(L)n(abs)p Fl(.)k(In)c Fh(Pr)n(o)n(c)n(e)n
+(e)n(dings)g(of)140 2618 y(the)g(Summer)f(1990)i(UKUUG)f(Conf.)p
+Fl(,)e(London,)g(July)m(,)f(1990,)h(pp.)g(1-9.)75 2700 y([15])19
+b(J.)14 b(B.)g(P)o(ostel.)k(Simple)12 b(Mail)h(T)m(ransfer)h(Proto)q(col.)k
+(RF)o(C)13 b(821,)g(August)h(1982;)f(68)g(p.)954 2825 y(14)p
+eop
+%%Page: 15 15
+bop 75 42 a Fl([16])19 b(J.)14 b(Rice.)k(In)o(teractiv)o(e)d(Mail)d(Access)k
+(Proto)q(col.)i(RF)o(C)c(1203,)e(F)m(ebruary)i(1991;)f(49)g(p.)75
+125 y([17])19 b(M.)14 b(Rose.)k(P)o(ost)c(O\016ce)h(Proto)q(col.)j(RF)o(C)13
+b(1225,)f(Ma)o(y)i(1991;)e(16)h(p.)75 208 y([18])19 b(J.)f(Roseneb)q(erg,)h
+(C.)f(F.)f(Ev)o(erhart,)i(and)f(N.)g(S.)f(Borenstein.)32 b
+Fh(A)o(n)19 b(Overview)f(of)g(the)h(A)o(ndr)n(ew)f(Message)140
+257 y(System)p Fl(.)i(In)15 b Fh(Pr)n(o)n(c)n(e)n(e)n(dings)h(of)f(the)h(A)o
+(CM)f(SIGCOMM)h('87)g(Workshop)p Fl(,)g(Sto)o(w)o(e,)e(V)m(ermon)o(t,)f
+(August)j(11-13,)140 307 y(1987,)c(pp.)h(99-108.)75 390 y([19])19
+b(R.)d(Salz.)24 b Fh(InterNetNews:)e(Usenet)17 b(tr)n(ansp)n(ort)g(for)f
+(Internet)h(sites)p Fl(.)24 b(In)17 b Fh(Pr)n(o)n(c.)f(1992)i(Summer)f
+(USENIX)140 440 y(Conf.)p Fl(,)c(pages)h(93{98,)e(June)j(1992.)75
+523 y([20])k(R.)14 b(Sandb)q(erg)h(et)g(al.)k(Design)c(and)f(Implemen)o
+(tation)e(of)i(the)h(Sun)f(Net)o(w)o(ork)h(Filesystem.)20 b(In)14
+b Fh(Pr)n(o)n(c.)h(1985)140 573 y(Summer)g(Usenix)g(Conf.)p
+Fl(,)e(pages)h(119-130,)e(June)i(1985.)75 656 y([21])19 b(Sun)13
+b(Microsystems,)f(Inc.)k(SunOS)d(Reference)h(Man)o(ual,)e(V)m(olume)e(I,)i
+(Section)h(1:)k(\\bi\013\(1\)",)12 b(Septem)o(b)q(er)h(9,)140
+706 y(1987.)75 789 y([22])19 b(Sun)11 b(Microsystems,)f(Inc.)j(SunOS)e
+(Reference)i(Man)o(ual,)d(V)m(olume)e(I)q(I,)i(Section)h(3:)16
+b(\\syslog\(3\)",)10 b(Septem)o(b)q(er)140 839 y(9,)j(1987.)75
+922 y([23])19 b(Sun)g(Microsystems,)f(Inc.)33 b(SunOS)19 b(Reference)h(Man)o
+(ual,)e(V)m(olume)f(I,)h(Section)h(1:)27 b(\\comsat\(8c\)",)18
+b(and)140 971 y(\\in.comsat\(8c\)",)11 b(Septem)o(b)q(er)k(9,)e(1987.)75
+1054 y([24])19 b(Sun)14 b(Microsystems,)f(Inc.)k(SunOS)d(Reference)h(Man)o
+(ual,)d(V)m(olume)f(I,)i(Section)h(1:)j(\\xsend\(1\)",)d(\\xget\(1\)",)140
+1104 y(and)f(\\enroll\(1\)",)g(Septem)o(b)q(er)h(9,)f(1987.)75
+1187 y([25])19 b(Sun)f(Microsystems,)g(Inc.)31 b(NFS:)18 b(Net)o(w)o(ork)g
+(File)g(System)f(Proto)q(col)h(sp)q(eci\014cation.)31 b(RF)o(C)17
+b(1094,)h(1989)140 1237 y(Marc)o(h;)13 b(27)h(p.)75 1320 y([26])19
+b(L.)c(W)m(all)f(and)h(R.)f(L.)h(Sc)o(h)o(w)o(artz.)23 b Fh(Pr)n(o)n(gr)n
+(amming)16 b(Perl)p Fl(.)22 b(O'Reilly)14 b(&)h(Asso)q(ciates,)i(Inc.,)e
+(Sebastop)q(ol,)h(CA)140 1370 y(\(1991\).)75 1453 y([27])j(R.)d(S.)g(Zac)o
+(hariassen.)26 b Fh(ZMOG:)18 b(The)f(ZMailer)g(Op)n(er)n(ations)f(Guide)p
+Fl(.)26 b(Av)n(ailable)15 b(via)g(ftp)i(as)f(part)h(of)e(the)140
+1503 y(ZMailer)e(distribution)h(from)e Fk(ftp.uu.net:/netwo)o(rkin)o(g/mai)o
+(l/zma)o(iler)p Fl(.)75 1627 y Fj(10)56 b(Author)19 b(Information)175
+1702 y Fm(Erez)f(Zadok)e Fl(is)g(an)f(MS)h(candidate)g(and)g(full-time)d
+(Sta\013)k(Asso)q(ciate)f(in)g(the)g(Computer)g(Science)h(De-)75
+1752 y(partmen)o(t)11 b(at)h(Colum)o(bia)d(Univ)o(ersit)o(y)m(.)16
+b(His)c(primary)e(in)o(terests)k(include)e(op)q(erating)f(systems,)h(\014le)g
+(systems,)g(and)75 1802 y(w)o(a)o(ys)j(to)g(ease)h(system)f(administration)e
+(tasks.)23 b(In)15 b(Ma)o(y)g(1991,)f(he)i(receiv)o(ed)g(his)f(B.S.)g(in)g
+(Computer)g(Science)75 1852 y(from)g(Colum)o(bia's)f(Sc)o(ho)q(ol)i(of)g
+(Engineering)h(and)f(Applied)h(Science.)28 b(Erez)18 b(came)e(to)g(the)i
+(United)f(States)g(six)75 1902 y(y)o(ears)d(ago)e(and)i(has)f(liv)o(ed)g(in)g
+(New)g(Y)m(ork)g(\\Sin")g(Cit)o(y)f(ev)o(er)j(since.)j(In)c(his)f(rare)h
+(free)g(time)e(Erez)j(is)e(an)g(amateur)75 1951 y(photographer,)h(science)h
+(\014ction)f(dev)o(otee,)h(and)e(ro)q(c)o(k-n-roll)g(fan.)175
+2026 y(Mailing)h(address:)25 b(500)16 b(W)m(est)h(120)747 2011
+y Fa(th)797 2026 y Fl(Street,)h(Colum)o(bia)c(Univ)o(ersit)o(y)m(,)i(New)h(Y)
+m(ork,)g(NY)f(10027.)25 b(Email)75 2076 y(address:)19 b Fk
+(ezk@cs.columbia.edu)o Fl(.)175 2151 y Fm(Alexander)10 b(Dupuy)g
+Fl(has)h(b)q(een)h(a)e(Senior)h(Researc)o(h)i(Sta\013)e(Asso)q(ciate)h(for)e
+(the)i(Distributed)f(Computing)75 2200 y(and)i(Comm)o(uni)o(cations)d(Lab)j
+(in)f(the)i(Computer)e(Science)i(Departmen)o(t)f(at)f(Colum)o(bia)e(Univ)o
+(ersit)o(y)j(for)g(the)g(last)75 2250 y(7)h(y)o(ears.)21 b(He)16
+b(has)f(recen)o(tly)g(tak)o(en)g(a)f(p)q(osition)h(at)f(System)g(Managemen)o
+(t)g(AR)m(TS,)f(a)i(small)d(startup)k(compan)o(y)75 2300 y(dev)o(eloping)e
+(net)o(w)o(ork)h(and)g(systems)g(managemen)o(t)d(tec)o(hnology)m(.)20
+b(A)15 b(nativ)o(e)g(b)q(orn)g(and)g(bred)g(New)h(Y)m(ork)o(er,)e(he)75
+2350 y(insists)g(that)g(w)o(orking)f(in)h(the)g(suburbs)h(is)f(not)g(the)g
+(\014rst)h(step)g(to)o(w)o(ards)f(living)e(there.)175 2425
+y(Mailing)h(address:)23 b(System)15 b(Managemen)o(t)f(AR)m(TS,)g(199)h(Main)g
+(Street,)h(Suite)g(900,)f(White)g(Plains,)g(NY)75 2474 y(10601.)i(Email)11
+b(address:)20 b Fk(dupuy@smarts.co)o(m)p Fl(.)954 2825 y(15)p
+eop
+%%Trailer
+end
+userdict /end-hook known{end-hook}if
+%%EOF
diff --git a/doc/mdate-sh b/doc/mdate-sh
new file mode 100755
index 000000000000..b3719cf76191
--- /dev/null
+++ b/doc/mdate-sh
@@ -0,0 +1,224 @@
+#!/bin/sh
+# Get modification time of a file or directory and pretty-print it.
+
+scriptversion=2010-08-21.06; # UTC
+
+# Copyright (C) 1995-2013 Free Software Foundation, Inc.
+# written by Ulrich Drepper <drepper@gnu.ai.mit.edu>, June 1995
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# This file is maintained in Automake, please report
+# bugs to <bug-automake@gnu.org> or send patches to
+# <automake-patches@gnu.org>.
+
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+ emulate sh
+ NULLCMD=:
+ # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '${1+"$@"}'='"$@"'
+ setopt NO_GLOB_SUBST
+fi
+
+case $1 in
+ '')
+ echo "$0: No file. Try '$0 --help' for more information." 1>&2
+ exit 1;
+ ;;
+ -h | --h*)
+ cat <<\EOF
+Usage: mdate-sh [--help] [--version] FILE
+
+Pretty-print the modification day of FILE, in the format:
+1 January 1970
+
+Report bugs to <bug-automake@gnu.org>.
+EOF
+ exit $?
+ ;;
+ -v | --v*)
+ echo "mdate-sh $scriptversion"
+ exit $?
+ ;;
+esac
+
+error ()
+{
+ echo "$0: $1" >&2
+ exit 1
+}
+
+
+# Prevent date giving response in another language.
+LANG=C
+export LANG
+LC_ALL=C
+export LC_ALL
+LC_TIME=C
+export LC_TIME
+
+# GNU ls changes its time format in response to the TIME_STYLE
+# variable. Since we cannot assume 'unset' works, revert this
+# variable to its documented default.
+if test "${TIME_STYLE+set}" = set; then
+ TIME_STYLE=posix-long-iso
+ export TIME_STYLE
+fi
+
+save_arg1=$1
+
+# Find out how to get the extended ls output of a file or directory.
+if ls -L /dev/null 1>/dev/null 2>&1; then
+ ls_command='ls -L -l -d'
+else
+ ls_command='ls -l -d'
+fi
+# Avoid user/group names that might have spaces, when possible.
+if ls -n /dev/null 1>/dev/null 2>&1; then
+ ls_command="$ls_command -n"
+fi
+
+# A 'ls -l' line looks as follows on OS/2.
+# drwxrwx--- 0 Aug 11 2001 foo
+# This differs from Unix, which adds ownership information.
+# drwxrwx--- 2 root root 4096 Aug 11 2001 foo
+#
+# To find the date, we split the line on spaces and iterate on words
+# until we find a month. This cannot work with files whose owner is a
+# user named "Jan", or "Feb", etc. However, it's unlikely that '/'
+# will be owned by a user whose name is a month. So we first look at
+# the extended ls output of the root directory to decide how many
+# words should be skipped to get the date.
+
+# On HPUX /bin/sh, "set" interprets "-rw-r--r--" as options, so the "x" below.
+set x`$ls_command /`
+
+# Find which argument is the month.
+month=
+command=
+until test $month
+do
+ test $# -gt 0 || error "failed parsing '$ls_command /' output"
+ shift
+ # Add another shift to the command.
+ command="$command shift;"
+ case $1 in
+ Jan) month=January; nummonth=1;;
+ Feb) month=February; nummonth=2;;
+ Mar) month=March; nummonth=3;;
+ Apr) month=April; nummonth=4;;
+ May) month=May; nummonth=5;;
+ Jun) month=June; nummonth=6;;
+ Jul) month=July; nummonth=7;;
+ Aug) month=August; nummonth=8;;
+ Sep) month=September; nummonth=9;;
+ Oct) month=October; nummonth=10;;
+ Nov) month=November; nummonth=11;;
+ Dec) month=December; nummonth=12;;
+ esac
+done
+
+test -n "$month" || error "failed parsing '$ls_command /' output"
+
+# Get the extended ls output of the file or directory.
+set dummy x`eval "$ls_command \"\\\$save_arg1\""`
+
+# Remove all preceding arguments
+eval $command
+
+# Because of the dummy argument above, month is in $2.
+#
+# On a POSIX system, we should have
+#
+# $# = 5
+# $1 = file size
+# $2 = month
+# $3 = day
+# $4 = year or time
+# $5 = filename
+#
+# On Darwin 7.7.0 and 7.6.0, we have
+#
+# $# = 4
+# $1 = day
+# $2 = month
+# $3 = year or time
+# $4 = filename
+
+# Get the month.
+case $2 in
+ Jan) month=January; nummonth=1;;
+ Feb) month=February; nummonth=2;;
+ Mar) month=March; nummonth=3;;
+ Apr) month=April; nummonth=4;;
+ May) month=May; nummonth=5;;
+ Jun) month=June; nummonth=6;;
+ Jul) month=July; nummonth=7;;
+ Aug) month=August; nummonth=8;;
+ Sep) month=September; nummonth=9;;
+ Oct) month=October; nummonth=10;;
+ Nov) month=November; nummonth=11;;
+ Dec) month=December; nummonth=12;;
+esac
+
+case $3 in
+ ???*) day=$1;;
+ *) day=$3; shift;;
+esac
+
+# Here we have to deal with the problem that the ls output gives either
+# the time of day or the year.
+case $3 in
+ *:*) set `date`; eval year=\$$#
+ case $2 in
+ Jan) nummonthtod=1;;
+ Feb) nummonthtod=2;;
+ Mar) nummonthtod=3;;
+ Apr) nummonthtod=4;;
+ May) nummonthtod=5;;
+ Jun) nummonthtod=6;;
+ Jul) nummonthtod=7;;
+ Aug) nummonthtod=8;;
+ Sep) nummonthtod=9;;
+ Oct) nummonthtod=10;;
+ Nov) nummonthtod=11;;
+ Dec) nummonthtod=12;;
+ esac
+ # For the first six month of the year the time notation can also
+ # be used for files modified in the last year.
+ if (expr $nummonth \> $nummonthtod) > /dev/null;
+ then
+ year=`expr $year - 1`
+ fi;;
+ *) year=$3;;
+esac
+
+# The result.
+echo $day $month $year
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/doc/stamp-vti b/doc/stamp-vti
index 41b19a30d5c6..9a4feda60f57 100644
--- a/doc/stamp-vti
+++ b/doc/stamp-vti
@@ -1,4 +1,4 @@
-@set UPDATED 20 April 2006
-@set UPDATED-MONTH April 2006
-@set EDITION 6.1.5
-@set VERSION 6.1.5
+@set UPDATED 28 October 2014
+@set UPDATED-MONTH October 2014
+@set EDITION 6.2
+@set VERSION 6.2
diff --git a/doc/texinfo.tex b/doc/texinfo.tex
index e758cedae7e6..85f184cc4cbb 100644
--- a/doc/texinfo.tex
+++ b/doc/texinfo.tex
@@ -1,18 +1,18 @@
% texinfo.tex -- TeX macros to handle Texinfo files.
-%
+%
% Load plain if necessary, i.e., if running under initex.
\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
%
-\def\texinfoversion{2004-09-06.16}
+\def\texinfoversion{2013-02-01.11}
%
-% Copyright (C) 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995,
-% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free Software
-% Foundation, Inc.
+% Copyright 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995,
+% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
+% 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
%
-% This texinfo.tex file is free software; you can redistribute it and/or
+% This texinfo.tex file is free software: you can redistribute it and/or
% modify it under the terms of the GNU General Public License as
-% published by the Free Software Foundation; either version 2, or (at
-% your option) any later version.
+% published by the Free Software Foundation, either version 3 of the
+% License, or (at your option) any later version.
%
% This texinfo.tex file is distributed in the hope that it will be
% useful, but WITHOUT ANY WARRANTY; without even the implied warranty
@@ -20,19 +20,18 @@
% General Public License for more details.
%
% You should have received a copy of the GNU General Public License
-% along with this texinfo.tex file; see the file COPYING. If not, write
-% to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-% Boston, MA 02111-1307, USA.
+% along with this program. If not, see <http://www.gnu.org/licenses/>.
%
% As a special exception, when this file is read by TeX when processing
% a Texinfo source document, you may use the result without
-% restriction. (This has been our intent since Texinfo was invented.)
+% restriction. This Exception is an additional permission under section 7
+% of the GNU General Public License, version 3 ("GPLv3").
%
% Please try the latest version of texinfo.tex before submitting bug
% reports; you can get the latest version from:
-% http://www.gnu.org/software/texinfo/ (the Texinfo home page), or
-% ftp://tug.org/tex/texinfo.tex
-% (and all CTAN mirrors, see http://www.ctan.org).
+% http://ftp.gnu.org/gnu/texinfo/ (the Texinfo release area), or
+% http://ftpmirror.gnu.org/texinfo/ (same, via a mirror), or
+% http://www.gnu.org/software/texinfo/ (the Texinfo home page)
% The texinfo.tex in any given distribution could well be out
% of date, so if that's what you're using, please check.
%
@@ -67,7 +66,6 @@
\everyjob{\message{[Texinfo version \texinfoversion]}%
\catcode`+=\active \catcode`\_=\active}
-\message{Basics,}
\chardef\other=12
% We never want plain's \outer definition of \+ in Texinfo.
@@ -89,15 +87,19 @@
\let\ptexhat=^
\let\ptexi=\i
\let\ptexindent=\indent
-\let\ptexnoindent=\noindent
\let\ptexinsert=\insert
\let\ptexlbrace=\{
\let\ptexless=<
+\let\ptexnewwrite\newwrite
+\let\ptexnoindent=\noindent
\let\ptexplus=+
+\let\ptexraggedright=\raggedright
\let\ptexrbrace=\}
\let\ptexslash=\/
\let\ptexstar=\*
\let\ptext=\t
+\let\ptextop=\top
+{\catcode`\'=\active \global\let\ptexquoteright'}% active in plain's math mode
% If this character appears in an error message or help string, it
% starts a new line in the output.
@@ -115,10 +117,11 @@
% Set up fixed words for English if not already set.
\ifx\putwordAppendix\undefined \gdef\putwordAppendix{Appendix}\fi
\ifx\putwordChapter\undefined \gdef\putwordChapter{Chapter}\fi
+\ifx\putworderror\undefined \gdef\putworderror{error}\fi
\ifx\putwordfile\undefined \gdef\putwordfile{file}\fi
\ifx\putwordin\undefined \gdef\putwordin{in}\fi
-\ifx\putwordIndexIsEmpty\undefined \gdef\putwordIndexIsEmpty{(Index is empty)}\fi
-\ifx\putwordIndexNonexistent\undefined \gdef\putwordIndexNonexistent{(Index is nonexistent)}\fi
+\ifx\putwordIndexIsEmpty\undefined \gdef\putwordIndexIsEmpty{(Index is empty)}\fi
+\ifx\putwordIndexNonexistent\undefined \gdef\putwordIndexNonexistent{(Index is nonexistent)}\fi
\ifx\putwordInfo\undefined \gdef\putwordInfo{Info}\fi
\ifx\putwordInstanceVariableof\undefined \gdef\putwordInstanceVariableof{Instance Variable of}\fi
\ifx\putwordMethodon\undefined \gdef\putwordMethodon{Method on}\fi
@@ -152,20 +155,25 @@
\ifx\putwordDefopt\undefined \gdef\putwordDefopt{User Option}\fi
\ifx\putwordDeffunc\undefined \gdef\putwordDeffunc{Function}\fi
-% In some macros, we cannot use the `\? notation---the left quote is
-% in some cases the escape char.
+% Since the category of space is not known, we have to be careful.
+\chardef\spacecat = 10
+\def\spaceisspace{\catcode`\ =\spacecat}
+
+% sometimes characters are active, so we need control sequences.
+\chardef\ampChar = `\&
\chardef\colonChar = `\:
\chardef\commaChar = `\,
+\chardef\dashChar = `\-
\chardef\dotChar = `\.
\chardef\exclamChar= `\!
+\chardef\hashChar = `\#
+\chardef\lquoteChar= `\`
\chardef\questChar = `\?
+\chardef\rquoteChar= `\'
\chardef\semiChar = `\;
+\chardef\slashChar = `\/
\chardef\underChar = `\_
-\chardef\spaceChar = `\ %
-\chardef\spacecat = 10
-\def\spaceisspace{\catcode\spaceChar=\spacecat}
-
% Ignore a token.
%
\def\gobble#1{}
@@ -194,36 +202,7 @@
% that mark overfull boxes (in case you have decided
% that the text looks ok even though it passes the margin).
%
-\def\finalout{\overfullrule=0pt}
-
-% @| inserts a changebar to the left of the current line. It should
-% surround any changed text. This approach does *not* work if the
-% change spans more than two lines of output. To handle that, we would
-% have adopt a much more difficult approach (putting marks into the main
-% vertical list for the beginning and end of each change).
-%
-\def\|{%
- % \vadjust can only be used in horizontal mode.
- \leavevmode
- %
- % Append this vertical mode material after the current line in the output.
- \vadjust{%
- % We want to insert a rule with the height and depth of the current
- % leading; that is exactly what \strutbox is supposed to record.
- \vskip-\baselineskip
- %
- % \vadjust-items are inserted at the left edge of the type. So
- % the \llap here moves out into the left-hand margin.
- \llap{%
- %
- % For a thicker or thinner bar, change the `1pt'.
- \vrule height\baselineskip width1pt
- %
- % This is the space between the bar and the text.
- \hskip 12pt
- }%
- }%
-}
+\def\finalout{\overfullrule=0pt }
% Sometimes it is convenient to have everything in the transcript file
% and nothing on the terminal. We don't just call \tracingall here,
@@ -241,7 +220,7 @@
\tracingmacros2
\tracingrestores1
\showboxbreadth\maxdimen \showboxdepth\maxdimen
- \ifx\eTeXversion\undefined\else % etex gives us more logging
+ \ifx\eTeXversion\thisisundefined\else % etex gives us more logging
\tracingscantokens1
\tracingifs1
\tracinggroups1
@@ -252,6 +231,13 @@
\errorcontextlines16
}%
+% @errormsg{MSG}. Do the index-like expansions on MSG, but if things
+% aren't perfect, it's not the end of the world, being an error message,
+% after all.
+%
+\def\errormsg{\begingroup \indexnofonts \doerrormsg}
+\def\doerrormsg#1{\errmessage{#1}}
+
% add check for \lastpenalty to plain's definitions. If the last thing
% we did was a \nobreak, we don't want to insert more space.
%
@@ -262,7 +248,6 @@
\def\bigbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\bigskipamount
\removelastskip\penalty-200\bigskip\fi\fi}
-% For @cropmarks command.
% Do @cropmarks to get crop marks.
%
\newif\ifcropmarks
@@ -276,6 +261,50 @@
\newdimen\cornerthick \cornerthick=.3pt
\newdimen\topandbottommargin \topandbottommargin=.75in
+% Output a mark which sets \thischapter, \thissection and \thiscolor.
+% We dump everything together because we only have one kind of mark.
+% This works because we only use \botmark / \topmark, not \firstmark.
+%
+% A mark contains a subexpression of the \ifcase ... \fi construct.
+% \get*marks macros below extract the needed part using \ifcase.
+%
+% Another complication is to let the user choose whether \thischapter
+% (\thissection) refers to the chapter (section) in effect at the top
+% of a page, or that at the bottom of a page. The solution is
+% described on page 260 of The TeXbook. It involves outputting two
+% marks for the sectioning macros, one before the section break, and
+% one after. I won't pretend I can describe this better than DEK...
+\def\domark{%
+ \toks0=\expandafter{\lastchapterdefs}%
+ \toks2=\expandafter{\lastsectiondefs}%
+ \toks4=\expandafter{\prevchapterdefs}%
+ \toks6=\expandafter{\prevsectiondefs}%
+ \toks8=\expandafter{\lastcolordefs}%
+ \mark{%
+ \the\toks0 \the\toks2
+ \noexpand\or \the\toks4 \the\toks6
+ \noexpand\else \the\toks8
+ }%
+}
+% \topmark doesn't work for the very first chapter (after the title
+% page or the contents), so we use \firstmark there -- this gets us
+% the mark with the chapter defs, unless the user sneaks in, e.g.,
+% @setcolor (or @url, or @link, etc.) between @contents and the very
+% first @chapter.
+\def\gettopheadingmarks{%
+ \ifcase0\topmark\fi
+ \ifx\thischapter\empty \ifcase0\firstmark\fi \fi
+}
+\def\getbottomheadingmarks{\ifcase1\botmark\fi}
+\def\getcolormarks{\ifcase2\topmark\fi}
+
+% Avoid "undefined control sequence" errors.
+\def\lastchapterdefs{}
+\def\lastsectiondefs{}
+\def\prevchapterdefs{}
+\def\prevsectiondefs{}
+\def\lastcolordefs{}
+
% Main output routine.
\chardef\PAGE = 255
\output = {\onepageout{\pagecontents\PAGE}}
@@ -293,7 +322,9 @@
%
% Do this outside of the \shipout so @code etc. will be expanded in
% the headline as they should be, not taken literally (outputting ''code).
+ \ifodd\pageno \getoddheadingmarks \else \getevenheadingmarks \fi
\setbox\headlinebox = \vbox{\let\hsize=\pagewidth \makeheadline}%
+ \ifodd\pageno \getoddfootingmarks \else \getevenfootingmarks \fi
\setbox\footlinebox = \vbox{\let\hsize=\pagewidth \makefootline}%
%
{%
@@ -301,10 +332,14 @@
% take effect in \write's, yet the group defined by the \vbox ends
% before the \shipout runs.
%
- \escapechar = `\\ % use backslash in output files.
\indexdummies % don't expand commands in the output.
\normalturnoffactive % \ in index entries must not stay \, e.g., if
- % the page break happens to be in the middle of an example.
+ % the page break happens to be in the middle of an example.
+ % We don't want .vr (or whatever) entries like this:
+ % \entry{{\tt \indexbackslash }acronym}{32}{\code {\acronym}}
+ % "\acronym" won't work when it's read back in;
+ % it needs to be
+ % {\code {{\tt \backslashcurfont }acronym}
\shipout\vbox{%
% Do this early so pdf references go to the beginning of the page.
\ifpdfmakepagedest \pdfdest name{\the\pageno} xyz\fi
@@ -332,9 +367,9 @@
\pagebody{#1}%
\ifdim\ht\footlinebox > 0pt
% Only leave this space if the footline is nonempty.
- % (We lessened \vsize for it in \oddfootingxxx.)
+ % (We lessened \vsize for it in \oddfootingyyy.)
% The \baselineskip=24pt in plain's \makefootline has no effect.
- \vskip 2\baselineskip
+ \vskip 24pt
\unvbox\footlinebox
\fi
%
@@ -355,7 +390,7 @@
\egroup % \vbox from first cropmarks clause
\fi
}% end of \shipout\vbox
- }% end of group with \normalturnoffactive
+ }% end of group with \indexdummies
\advancepageno
\ifnum\outputpenalty>-20000 \else\dosupereject\fi
}
@@ -368,7 +403,7 @@
% marginal hacks, juha@viisa.uucp (Juha Takala)
\ifvoid\margin\else % marginal info is present
\rlap{\kern\hsize\vbox to\z@{\kern1pt\box\margin \vss}}\fi
-\dimen@=\dp#1 \unvbox#1
+\dimen@=\dp#1\relax \unvbox#1\relax
\ifvoid\footins\else\vskip\skip\footins\footnoterule \unvbox\footins\fi
\ifr@ggedbottom \kern-\dimen@ \vfil \fi}
}
@@ -390,7 +425,7 @@
%
\def\parsearg{\parseargusing{}}
\def\parseargusing#1#2{%
- \def\next{#2}%
+ \def\argtorun{#2}%
\begingroup
\obeylines
\spaceisspace
@@ -409,7 +444,7 @@
\def\argremovecomment#1\comment#2\ArgTerm{\argremovec #1\c\ArgTerm}
\def\argremovec#1\c#2\ArgTerm{\argcheckspaces#1\^^M\ArgTerm}
-% Each occurence of `\^^M' or `<space>\^^M' is replaced by a single space.
+% Each occurrence of `\^^M' or `<space>\^^M' is replaced by a single space.
%
% \argremovec might leave us with trailing space, e.g.,
% @end itemize @c foo
@@ -421,8 +456,7 @@
\def\argcheckspacesY#1\^^M#2\^^M#3\ArgTerm{%
\def\temp{#3}%
\ifx\temp\empty
- % We cannot use \next here, as it holds the macro to run;
- % thus we reuse \temp.
+ % Do not use \next, perhaps the caller of \parsearg uses it; reuse \temp:
\let\temp\finishparsearg
\else
\let\temp\argcheckspaces
@@ -434,14 +468,14 @@
% If a _delimited_ argument is enclosed in braces, they get stripped; so
% to get _exactly_ the rest of the line, we had to prevent such situation.
% We prepended an \empty token at the very beginning and we expand it now,
-% just before passing the control to \next.
-% (Similarily, we have to think about #3 of \argcheckspacesY above: it is
+% just before passing the control to \argtorun.
+% (Similarly, we have to think about #3 of \argcheckspacesY above: it is
% either the null string, or it ends with \^^M---thus there is no danger
% that a pair of braces would be stripped.
%
% But first, we have to remove the trailing space token.
%
-\def\finishparsearg#1 \ArgTerm{\expandafter\next\expandafter{#1}}
+\def\finishparsearg#1 \ArgTerm{\expandafter\argtorun\expandafter{#1}}
% \parseargdef\foo{...}
% is roughly equivalent to
@@ -492,12 +526,12 @@
% used to check whether the current environment is the one expected.
%
% Non-false conditionals (@iftex, @ifset) don't fit into this, so they
-% are not treated as enviroments; they don't open a group. (The
+% are not treated as environments; they don't open a group. (The
% implementation of @end takes care not to call \endgroup in this
% special case.)
-% At runtime, environments start with this:
+% At run-time, environments start with this:
\def\startenvironment#1{\begingroup\def\thisenv{#1}}
% initialize
\let\thisenv\empty
@@ -515,7 +549,7 @@
\fi
}
-% Evironment mismatch, #1 expected:
+% Environment mismatch, #1 expected:
\def\badenverr{%
\errhelp = \EMsimple
\errmessage{This command can appear only \inenvironment\temp,
@@ -523,7 +557,7 @@
}
\def\inenvironment#1{%
\ifx#1\empty
- out of any environment%
+ outside of any environment%
\else
in environment \expandafter\string#1%
\fi
@@ -535,7 +569,7 @@
\parseargdef\end{%
\if 1\csname iscond.#1\endcsname
\else
- % The general wording of \badenverr may not be ideal, but... --kasal, 06nov03
+ % The general wording of \badenverr may not be ideal.
\expandafter\checkenv\csname#1\endcsname
\csname E#1\endcsname
\endgroup
@@ -545,85 +579,6 @@
\newhelp\EMsimple{Press RETURN to continue.}
-%% Simple single-character @ commands
-
-% @@ prints an @
-% Kludge this until the fonts are right (grr).
-\def\@{{\tt\char64}}
-
-% This is turned off because it was never documented
-% and you can use @w{...} around a quote to suppress ligatures.
-%% Define @` and @' to be the same as ` and '
-%% but suppressing ligatures.
-%\def\`{{`}}
-%\def\'{{'}}
-
-% Used to generate quoted braces.
-\def\mylbrace {{\tt\char123}}
-\def\myrbrace {{\tt\char125}}
-\let\{=\mylbrace
-\let\}=\myrbrace
-\begingroup
- % Definitions to produce \{ and \} commands for indices,
- % and @{ and @} for the aux file.
- \catcode`\{ = \other \catcode`\} = \other
- \catcode`\[ = 1 \catcode`\] = 2
- \catcode`\! = 0 \catcode`\\ = \other
- !gdef!lbracecmd[\{]%
- !gdef!rbracecmd[\}]%
- !gdef!lbraceatcmd[@{]%
- !gdef!rbraceatcmd[@}]%
-!endgroup
-
-% @comma{} to avoid , parsing problems.
-\let\comma = ,
-
-% Accents: @, @dotaccent @ringaccent @ubaraccent @udotaccent
-% Others are defined by plain TeX: @` @' @" @^ @~ @= @u @v @H.
-\let\, = \c
-\let\dotaccent = \.
-\def\ringaccent#1{{\accent23 #1}}
-\let\tieaccent = \t
-\let\ubaraccent = \b
-\let\udotaccent = \d
-
-% Other special characters: @questiondown @exclamdown @ordf @ordm
-% Plain TeX defines: @AA @AE @O @OE @L (plus lowercase versions) @ss.
-\def\questiondown{?`}
-\def\exclamdown{!`}
-\def\ordf{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{a}}}
-\def\ordm{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{o}}}
-
-% Dotless i and dotless j, used for accents.
-\def\imacro{i}
-\def\jmacro{j}
-\def\dotless#1{%
- \def\temp{#1}%
- \ifx\temp\imacro \ptexi
- \else\ifx\temp\jmacro \j
- \else \errmessage{@dotless can be used only with i or j}%
- \fi\fi
-}
-
-% The \TeX{} logo, as in plain, but resetting the spacing so that a
-% period following counts as ending a sentence. (Idea found in latex.)
-%
-\edef\TeX{\TeX \spacefactor=1000 }
-
-% @LaTeX{} logo. Not quite the same results as the definition in
-% latex.ltx, since we use a different font for the raised A; it's most
-% convenient for us to use an explicitly smaller font, rather than using
-% the \scriptstyle font (since we don't reset \scriptstyle and
-% \scriptscriptstyle).
-%
-\def\LaTeX{%
- L\kern-.36em
- {\setbox0=\hbox{T}%
- \vbox to \ht0{\hbox{\selectfonts\lllsize A}\vss}}%
- \kern-.15em
- \TeX
-}
-
% Be sure we're in horizontal mode when doing a tie, since we make space
% equivalent to this in @example-like environments. Otherwise, a space
% at the beginning of a line will start with \penalty -- and
@@ -640,19 +595,34 @@
\def\:{\spacefactor=1000 }
% @* forces a line break.
-\def\*{\hfil\break\hbox{}\ignorespaces}
+\def\*{\unskip\hfil\break\hbox{}\ignorespaces}
% @/ allows a line break.
\let\/=\allowbreak
% @. is an end-of-sentence period.
-\def\.{.\spacefactor=3000 }
+\def\.{.\spacefactor=\endofsentencespacefactor\space}
% @! is an end-of-sentence bang.
-\def\!{!\spacefactor=3000 }
+\def\!{!\spacefactor=\endofsentencespacefactor\space}
% @? is an end-of-sentence query.
-\def\?{?\spacefactor=3000 }
+\def\?{?\spacefactor=\endofsentencespacefactor\space}
+
+% @frenchspacing on|off says whether to put extra space after punctuation.
+%
+\def\onword{on}
+\def\offword{off}
+%
+\parseargdef\frenchspacing{%
+ \def\temp{#1}%
+ \ifx\temp\onword \plainfrenchspacing
+ \else\ifx\temp\offword \plainnonfrenchspacing
+ \else
+ \errhelp = \EMsimple
+ \errmessage{Unknown @frenchspacing option `\temp', must be on|off}%
+ \fi\fi
+}
% @w prevents a word break. Without the \leavevmode, @w at the
% beginning of a paragraph, when TeX is still in vertical mode, would
@@ -732,15 +702,6 @@ where each line of input produces a line of output.}
\newdimen\mil \mil=0.001in
-% Old definition--didn't work.
-%\parseargdef\need{\par %
-%% This method tries to make TeX break the page naturally
-%% if the depth of the box does not fit.
-%{\baselineskip=0pt%
-%\vtop to #1\mil{\vfil}\kern -#1\mil\nobreak
-%\prevdepth=-1000pt
-%}}
-
\parseargdef\need{%
% Ensure vertical mode, so we don't make a big box in the middle of a
% paragraph.
@@ -804,7 +765,7 @@ where each line of input produces a line of output.}
% @inmargin{WHICH}{TEXT} puts TEXT in the WHICH margin next to the current
% paragraph. For more general purposes, use the \margin insertion
-% class. WHICH is `l' or `r'.
+% class. WHICH is `l' or `r'. Not documented, written for gawk manual.
%
\newskip\inmarginspacing \inmarginspacing=1cm
\def\strutdepth{\dp\strutbox}
@@ -851,15 +812,51 @@ where each line of input produces a line of output.}
\temp
}
-% @include file insert text of that file as input.
+% @| inserts a changebar to the left of the current line. It should
+% surround any changed text. This approach does *not* work if the
+% change spans more than two lines of output. To handle that, we would
+% have adopt a much more difficult approach (putting marks into the main
+% vertical list for the beginning and end of each change). This command
+% is not documented, not supported, and doesn't work.
+%
+\def\|{%
+ % \vadjust can only be used in horizontal mode.
+ \leavevmode
+ %
+ % Append this vertical mode material after the current line in the output.
+ \vadjust{%
+ % We want to insert a rule with the height and depth of the current
+ % leading; that is exactly what \strutbox is supposed to record.
+ \vskip-\baselineskip
+ %
+ % \vadjust-items are inserted at the left edge of the type. So
+ % the \llap here moves out into the left-hand margin.
+ \llap{%
+ %
+ % For a thicker or thinner bar, change the `1pt'.
+ \vrule height\baselineskip width1pt
+ %
+ % This is the space between the bar and the text.
+ \hskip 12pt
+ }%
+ }%
+}
+
+% @include FILE -- \input text of FILE.
%
\def\include{\parseargusing\filenamecatcodes\includezzz}
\def\includezzz#1{%
\pushthisfilestack
\def\thisfile{#1}%
{%
- \makevalueexpandable
- \def\temp{\input #1 }%
+ \makevalueexpandable % we want to expand any @value in FILE.
+ \turnoffactive % and allow special characters in the expansion
+ \indexnofonts % Allow `@@' and other weird things in file names.
+ \wlog{texinfo.tex: doing @include of #1^^J}%
+ \edef\temp{\noexpand\input #1 }%
+ %
+ % This trickery is to read FILE outside of a group, in case it makes
+ % definitions, etc.
\expandafter
}\temp
\popthisfilestack
@@ -874,6 +871,8 @@ where each line of input produces a line of output.}
\catcode`>=\other
\catcode`+=\other
\catcode`-=\other
+ \catcode`\`=\other
+ \catcode`\'=\other
}
\def\pushthisfilestack{%
@@ -889,7 +888,7 @@ where each line of input produces a line of output.}
\def\popthisfilestack{\errthisfilestackempty}
\def\errthisfilestackempty{\errmessage{Internal error:
the stack of filenames is empty.}}
-
+%
\def\thisfile{}
% @center line
@@ -897,36 +896,46 @@ where each line of input produces a line of output.}
%
\parseargdef\center{%
\ifhmode
- \let\next\centerH
+ \let\centersub\centerH
\else
- \let\next\centerV
+ \let\centersub\centerV
\fi
- \next{\hfil \ignorespaces#1\unskip \hfil}%
+ \centersub{\hfil \ignorespaces#1\unskip \hfil}%
+ \let\centersub\relax % don't let the definition persist, just in case
}
-\def\centerH#1{%
- {%
- \hfil\break
- \advance\hsize by -\leftskip
- \advance\hsize by -\rightskip
- \line{#1}%
- \break
- }%
+\def\centerH#1{{%
+ \hfil\break
+ \advance\hsize by -\leftskip
+ \advance\hsize by -\rightskip
+ \line{#1}%
+ \break
+}}
+%
+\newcount\centerpenalty
+\def\centerV#1{%
+ % The idea here is the same as in \startdefun, \cartouche, etc.: if
+ % @center is the first thing after a section heading, we need to wipe
+ % out the negative parskip inserted by \sectionheading, but still
+ % prevent a page break here.
+ \centerpenalty = \lastpenalty
+ \ifnum\centerpenalty>10000 \vskip\parskip \fi
+ \ifnum\centerpenalty>9999 \penalty\centerpenalty \fi
+ \line{\kern\leftskip #1\kern\rightskip}%
}
-\def\centerV#1{\line{\kern\leftskip #1\kern\rightskip}}
% @sp n outputs n lines of vertical space
-
+%
\parseargdef\sp{\vskip #1\baselineskip}
% @comment ...line which is ignored...
% @c is the same as @comment
% @ignore ... @end ignore is another way to write a comment
-
+%
\def\comment{\begingroup \catcode`\^^M=\other%
\catcode`\@=\other \catcode`\{=\other \catcode`\}=\other%
\commentxxx}
{\catcode`\^^M=\other \gdef\commentxxx#1^^M{\endgroup}}
-
+%
\let\c=\comment
% @paragraphindent NCHARS
@@ -1019,86 +1028,6 @@ where each line of input produces a line of output.}
}
-% @asis just yields its argument. Used with @table, for example.
-%
-\def\asis#1{#1}
-
-% @math outputs its argument in math mode.
-%
-% One complication: _ usually means subscripts, but it could also mean
-% an actual _ character, as in @math{@var{some_variable} + 1}. So make
-% _ active, and distinguish by seeing if the current family is \slfam,
-% which is what @var uses.
-{
- \catcode\underChar = \active
- \gdef\mathunderscore{%
- \catcode\underChar=\active
- \def_{\ifnum\fam=\slfam \_\else\sb\fi}%
- }
-}
-% Another complication: we want \\ (and @\) to output a \ character.
-% FYI, plain.tex uses \\ as a temporary control sequence (why?), but
-% this is not advertised and we don't care. Texinfo does not
-% otherwise define @\.
-%
-% The \mathchar is class=0=ordinary, family=7=ttfam, position=5C=\.
-\def\mathbackslash{\ifnum\fam=\ttfam \mathchar"075C \else\backslash \fi}
-%
-\def\math{%
- \tex
- \mathunderscore
- \let\\ = \mathbackslash
- \mathactive
- $\finishmath
-}
-\def\finishmath#1{#1$\endgroup} % Close the group opened by \tex.
-
-% Some active characters (such as <) are spaced differently in math.
-% We have to reset their definitions in case the @math was an argument
-% to a command which sets the catcodes (such as @item or @section).
-%
-{
- \catcode`^ = \active
- \catcode`< = \active
- \catcode`> = \active
- \catcode`+ = \active
- \gdef\mathactive{%
- \let^ = \ptexhat
- \let< = \ptexless
- \let> = \ptexgtr
- \let+ = \ptexplus
- }
-}
-
-% @bullet and @minus need the same treatment as @math, just above.
-\def\bullet{$\ptexbullet$}
-\def\minus{$-$}
-
-% @dots{} outputs an ellipsis using the current font.
-% We do .5em per period so that it has the same spacing in a typewriter
-% font as three actual period characters.
-%
-\def\dots{%
- \leavevmode
- \hbox to 1.5em{%
- \hskip 0pt plus 0.25fil
- .\hfil.\hfil.%
- \hskip 0pt plus 0.5fil
- }%
-}
-
-% @enddots{} is an end-of-sentence ellipsis.
-%
-\def\enddots{%
- \dots
- \spacefactor=3000
-}
-
-% @comma{} is so commas can be inserted into text without messing up
-% Texinfo's parsing.
-%
-\let\comma = ,
-
% @refill is a no-op.
\let\refill=\relax
@@ -1163,9 +1092,8 @@ where each line of input produces a line of output.}
\newif\ifpdfmakepagedest
% when pdftex is run in dvi mode, \pdfoutput is defined (so \pdfoutput=1
-% can be set). So we test for \relax and 0 as well as \undefined,
-% borrowed from ifpdf.sty.
-\ifx\pdfoutput\undefined
+% can be set). So we test for \relax and 0 as well as being undefined.
+\ifx\pdfoutput\thisisundefined
\else
\ifx\pdfoutput\relax
\else
@@ -1175,40 +1103,157 @@ where each line of input produces a line of output.}
\fi
\fi
\fi
-%
+
+% PDF uses PostScript string constants for the names of xref targets,
+% for display in the outlines, and in other places. Thus, we have to
+% double any backslashes. Otherwise, a name like "\node" will be
+% interpreted as a newline (\n), followed by o, d, e. Not good.
+%
+% See http://www.ntg.nl/pipermail/ntg-pdftex/2004-July/000654.html and
+% related messages. The final outcome is that it is up to the TeX user
+% to double the backslashes and otherwise make the string valid, so
+% that's what we do. pdftex 1.30.0 (ca.2005) introduced a primitive to
+% do this reliably, so we use it.
+
+% #1 is a control sequence in which to do the replacements,
+% which we \xdef.
+\def\txiescapepdf#1{%
+ \ifx\pdfescapestring\thisisundefined
+ % No primitive available; should we give a warning or log?
+ % Many times it won't matter.
+ \else
+ % The expandable \pdfescapestring primitive escapes parentheses,
+ % backslashes, and other special chars.
+ \xdef#1{\pdfescapestring{#1}}%
+ \fi
+}
+
+\newhelp\nopdfimagehelp{Texinfo supports .png, .jpg, .jpeg, and .pdf images
+with PDF output, and none of those formats could be found. (.eps cannot
+be supported due to the design of the PDF format; use regular TeX (DVI
+output) for that.)}
+
\ifpdf
- \input pdfcolor
- \pdfcatalog{/PageMode /UseOutlines}%
+ %
+ % Color manipulation macros based on pdfcolor.tex,
+ % except using rgb instead of cmyk; the latter is said to render as a
+ % very dark gray on-screen and a very dark halftone in print, instead
+ % of actual black.
+ \def\rgbDarkRed{0.50 0.09 0.12}
+ \def\rgbBlack{0 0 0}
+ %
+ % k sets the color for filling (usual text, etc.);
+ % K sets the color for stroking (thin rules, e.g., normal _'s).
+ \def\pdfsetcolor#1{\pdfliteral{#1 rg #1 RG}}
+ %
+ % Set color, and create a mark which defines \thiscolor accordingly,
+ % so that \makeheadline knows which color to restore.
+ \def\setcolor#1{%
+ \xdef\lastcolordefs{\gdef\noexpand\thiscolor{#1}}%
+ \domark
+ \pdfsetcolor{#1}%
+ }
+ %
+ \def\maincolor{\rgbBlack}
+ \pdfsetcolor{\maincolor}
+ \edef\thiscolor{\maincolor}
+ \def\lastcolordefs{}
+ %
+ \def\makefootline{%
+ \baselineskip24pt
+ \line{\pdfsetcolor{\maincolor}\the\footline}%
+ }
+ %
+ \def\makeheadline{%
+ \vbox to 0pt{%
+ \vskip-22.5pt
+ \line{%
+ \vbox to8.5pt{}%
+ % Extract \thiscolor definition from the marks.
+ \getcolormarks
+ % Typeset the headline with \maincolor, then restore the color.
+ \pdfsetcolor{\maincolor}\the\headline\pdfsetcolor{\thiscolor}%
+ }%
+ \vss
+ }%
+ \nointerlineskip
+ }
+ %
+ %
+ \pdfcatalog{/PageMode /UseOutlines}
+ %
+ % #1 is image name, #2 width (might be empty/whitespace), #3 height (ditto).
\def\dopdfimage#1#2#3{%
- \def\imagewidth{#2}%
- \def\imageheight{#3}%
- % without \immediate, pdftex seg faults when the same image is
+ \def\pdfimagewidth{#2}\setbox0 = \hbox{\ignorespaces #2}%
+ \def\pdfimageheight{#3}\setbox2 = \hbox{\ignorespaces #3}%
+ %
+ % pdftex (and the PDF format) support .pdf, .png, .jpg (among
+ % others). Let's try in that order, PDF first since if
+ % someone has a scalable image, presumably better to use that than a
+ % bitmap.
+ \let\pdfimgext=\empty
+ \begingroup
+ \openin 1 #1.pdf \ifeof 1
+ \openin 1 #1.PDF \ifeof 1
+ \openin 1 #1.png \ifeof 1
+ \openin 1 #1.jpg \ifeof 1
+ \openin 1 #1.jpeg \ifeof 1
+ \openin 1 #1.JPG \ifeof 1
+ \errhelp = \nopdfimagehelp
+ \errmessage{Could not find image file #1 for pdf}%
+ \else \gdef\pdfimgext{JPG}%
+ \fi
+ \else \gdef\pdfimgext{jpeg}%
+ \fi
+ \else \gdef\pdfimgext{jpg}%
+ \fi
+ \else \gdef\pdfimgext{png}%
+ \fi
+ \else \gdef\pdfimgext{PDF}%
+ \fi
+ \else \gdef\pdfimgext{pdf}%
+ \fi
+ \closein 1
+ \endgroup
+ %
+ % without \immediate, ancient pdftex seg faults when the same image is
% included twice. (Version 3.14159-pre-1.0-unofficial-20010704.)
\ifnum\pdftexversion < 14
\immediate\pdfimage
\else
\immediate\pdfximage
\fi
- \ifx\empty\imagewidth\else width \imagewidth \fi
- \ifx\empty\imageheight\else height \imageheight \fi
+ \ifdim \wd0 >0pt width \pdfimagewidth \fi
+ \ifdim \wd2 >0pt height \pdfimageheight \fi
\ifnum\pdftexversion<13
- #1.pdf%
+ #1.\pdfimgext
\else
- {#1.pdf}%
+ {#1.\pdfimgext}%
\fi
\ifnum\pdftexversion < 14 \else
\pdfrefximage \pdflastximage
\fi}
+ %
\def\pdfmkdest#1{{%
- % We have to set dummies so commands such as @code in a section title
- % aren't expanded.
- \atdummies
- \normalturnoffactive
- \pdfdest name{#1} xyz%
+ % We have to set dummies so commands such as @code, and characters
+ % such as \, aren't expanded when present in a section title.
+ \indexnofonts
+ \turnoffactive
+ \makevalueexpandable
+ \def\pdfdestname{#1}%
+ \txiescapepdf\pdfdestname
+ \safewhatsit{\pdfdest name{\pdfdestname} xyz}%
}}
+ %
+ % used to mark target names; must be expandable.
\def\pdfmkpgn#1{#1}
- \let\linkcolor = \Blue % was Cyan, but that seems light?
- \def\endlink{\Black\pdfendlink}
+ %
+ % by default, use a color that is dark enough to print on paper as
+ % nearly black, but still distinguishable for online viewing.
+ \def\urlcolor{\rgbDarkRed}
+ \def\linkcolor{\rgbDarkRed}
+ \def\endlink{\setcolor{\maincolor}\pdfendlink}
+ %
% Adding outlines to PDF; macros for calculating structure of outlines
% come from Petr Olsak
\def\expnumber#1{\expandafter\ifx\csname#1\endcsname\relax 0%
@@ -1217,38 +1262,44 @@ where each line of input produces a line of output.}
\advance\tempnum by 1
\expandafter\xdef\csname#1\endcsname{\the\tempnum}}
%
- % #1 is the section text. #2 is the pdf expression for the number
- % of subentries (or empty, for subsubsections). #3 is the node
- % text, which might be empty if this toc entry had no
- % corresponding node. #4 is the page number.
+ % #1 is the section text, which is what will be displayed in the
+ % outline by the pdf viewer. #2 is the pdf expression for the number
+ % of subentries (or empty, for subsubsections). #3 is the node text,
+ % which might be empty if this toc entry had no corresponding node.
+ % #4 is the page number
%
\def\dopdfoutline#1#2#3#4{%
% Generate a link to the node text if that exists; else, use the
% page number. We could generate a destination for the section
% text in the case where a section has no node, but it doesn't
- % seem worthwhile, since most documents are normally structured.
- \def\pdfoutlinedest{#3}%
- \ifx\pdfoutlinedest\empty \def\pdfoutlinedest{#4}\fi
+ % seem worth the trouble, since most documents are normally structured.
+ \edef\pdfoutlinedest{#3}%
+ \ifx\pdfoutlinedest\empty
+ \def\pdfoutlinedest{#4}%
+ \else
+ \txiescapepdf\pdfoutlinedest
+ \fi
+ %
+ % Also escape PDF chars in the display string.
+ \edef\pdfoutlinetext{#1}%
+ \txiescapepdf\pdfoutlinetext
%
- \pdfoutline goto name{\pdfmkpgn{\pdfoutlinedest}}#2{#1}%
+ \pdfoutline goto name{\pdfmkpgn{\pdfoutlinedest}}#2{\pdfoutlinetext}%
}
%
\def\pdfmakeoutlines{%
\begingroup
- % Thanh's hack / proper braces in bookmarks
- \edef\mylbrace{\iftrue \string{\else}\fi}\let\{=\mylbrace
- \edef\myrbrace{\iffalse{\else\string}\fi}\let\}=\myrbrace
- %
% Read toc silently, to get counts of subentries for \pdfoutline.
+ \def\partentry##1##2##3##4{}% ignore parts in the outlines
\def\numchapentry##1##2##3##4{%
\def\thischapnum{##2}%
- \let\thissecnum\empty
- \let\thissubsecnum\empty
+ \def\thissecnum{0}%
+ \def\thissubsecnum{0}%
}%
\def\numsecentry##1##2##3##4{%
\advancenumber{chap\thischapnum}%
\def\thissecnum{##2}%
- \let\thissubsecnum\empty
+ \def\thissubsecnum{0}%
}%
\def\numsubsecentry##1##2##3##4{%
\advancenumber{sec\thissecnum}%
@@ -1257,9 +1308,9 @@ where each line of input produces a line of output.}
\def\numsubsubsecentry##1##2##3##4{%
\advancenumber{subsec\thissubsecnum}%
}%
- \let\thischapnum\empty
- \let\thissecnum\empty
- \let\thissubsecnum\empty
+ \def\thischapnum{0}%
+ \def\thissecnum{0}%
+ \def\thissubsecnum{0}%
%
% use \def rather than \let here because we redefine \chapentry et
% al. a second time, below.
@@ -1271,7 +1322,7 @@ where each line of input produces a line of output.}
\def\unnsecentry{\numsecentry}%
\def\unnsubsecentry{\numsubsecentry}%
\def\unnsubsubsecentry{\numsubsubsecentry}%
- \input \jobname.toc
+ \readdatafile{toc}%
%
% Read toc second time, this time actually producing the outlines.
% The `-' means take the \expnumber as the absolute number of
@@ -1293,64 +1344,63 @@ where each line of input produces a line of output.}
% Latin 2 (0xea) gets translated to a | character. Info from
% Staszek Wawrykiewicz, 19 Jan 2004 04:09:24 +0100.
%
- % xx to do this right, we have to translate 8-bit characters to
- % their "best" equivalent, based on the @documentencoding. Right
- % now, I guess we'll just let the pdf reader have its way.
+ % TODO this right, we have to translate 8-bit characters to
+ % their "best" equivalent, based on the @documentencoding. Too
+ % much work for too little return. Just use the ASCII equivalents
+ % we use for the index sort strings.
+ %
\indexnofonts
- \turnoffactive
- \input \jobname.toc
+ \setupdatafile
+ % We can have normal brace characters in the PDF outlines, unlike
+ % Texinfo index files. So set that up.
+ \def\{{\lbracecharliteral}%
+ \def\}{\rbracecharliteral}%
+ \catcode`\\=\active \otherbackslash
+ \input \tocreadfilename
\endgroup
}
+ {\catcode`[=1 \catcode`]=2
+ \catcode`{=\other \catcode`}=\other
+ \gdef\lbracecharliteral[{]%
+ \gdef\rbracecharliteral[}]%
+ ]
%
- \def\makelinks #1,{%
- \def\params{#1}\def\E{END}%
- \ifx\params\E
- \let\nextmakelinks=\relax
- \else
- \let\nextmakelinks=\makelinks
- \ifnum\lnkcount>0,\fi
- \picknum{#1}%
- \startlink attr{/Border [0 0 0]}
- goto name{\pdfmkpgn{\the\pgn}}%
- \linkcolor #1%
- \advance\lnkcount by 1%
- \endlink
- \fi
- \nextmakelinks
- }
- \def\picknum#1{\expandafter\pn#1}
- \def\pn#1{%
- \def\p{#1}%
- \ifx\p\lbrace
- \let\nextpn=\ppn
- \else
- \let\nextpn=\ppnn
- \def\first{#1}
- \fi
- \nextpn
- }
- \def\ppn#1{\pgn=#1\gobble}
- \def\ppnn{\pgn=\first}
- \def\pdfmklnk#1{\lnkcount=0\makelinks #1,END,}
\def\skipspaces#1{\def\PP{#1}\def\D{|}%
\ifx\PP\D\let\nextsp\relax
\else\let\nextsp\skipspaces
- \ifx\p\space\else\addtokens{\filename}{\PP}%
- \advance\filenamelength by 1
- \fi
+ \addtokens{\filename}{\PP}%
+ \advance\filenamelength by 1
\fi
\nextsp}
- \def\getfilename#1{\filenamelength=0\expandafter\skipspaces#1|\relax}
+ \def\getfilename#1{%
+ \filenamelength=0
+ % If we don't expand the argument now, \skipspaces will get
+ % snagged on things like "@value{foo}".
+ \edef\temp{#1}%
+ \expandafter\skipspaces\temp|\relax
+ }
\ifnum\pdftexversion < 14
\let \startlink \pdfannotlink
\else
\let \startlink \pdfstartlink
\fi
+ % make a live url in pdf output.
\def\pdfurl#1{%
\begingroup
- \normalturnoffactive\def\@{@}%
+ % it seems we really need yet another set of dummies; have not
+ % tried to figure out what each command should do in the context
+ % of @url. for now, just make @/ a no-op, that's the only one
+ % people have actually reported a problem with.
+ %
+ \normalturnoffactive
+ \def\@{@}%
+ \let\/=\empty
\makevalueexpandable
- \leavevmode\Red
+ % do we want to go so far as to use \indexnofonts instead of just
+ % special-casing \var here?
+ \def\var##1{##1}%
+ %
+ \leavevmode\setcolor{\urlcolor}%
\startlink attr{/Border [0 0 0]}%
user{/Subtype /Link /A << /S /URI /URI (#1) >>}%
\endgroup}
@@ -1377,13 +1427,15 @@ where each line of input produces a line of output.}
{\noexpand\pdflink{\the\toksC}}\toksC={}\global\countA=0}
\def\pdflink#1{%
\startlink attr{/Border [0 0 0]} goto name{\pdfmkpgn{#1}}
- \linkcolor #1\endlink}
+ \setcolor{\linkcolor}#1\endlink}
\def\done{\edef\st{\global\noexpand\toksA={\the\toksB}}\st}
\else
+ % non-pdf mode
\let\pdfmkdest = \gobble
\let\pdfurl = \gobble
\let\endlink = \relax
- \let\linkcolor = \relax
+ \let\setcolor = \gobble
+ \let\pdfsetcolor = \gobble
\let\pdfmakeoutlines = \relax
\fi % \ifx\pdfoutput
@@ -1406,9 +1458,13 @@ where each line of input produces a line of output.}
\def\rm{\fam=0 \setfontstyle{rm}}
\def\it{\fam=\itfam \setfontstyle{it}}
\def\sl{\fam=\slfam \setfontstyle{sl}}
-\def\bf{\fam=\bffam \setfontstyle{bf}}
+\def\bf{\fam=\bffam \setfontstyle{bf}}\def\bfstylename{bf}
\def\tt{\fam=\ttfam \setfontstyle{tt}}
+% Unfortunately, we have to override this for titles and the like, since
+% in those cases "rm" is bold. Sigh.
+\def\rmisbold{\rm\def\curfontstyle{bf}}
+
% Texinfo sort of supports the sans serif font style, which plain TeX does not.
% So we set up a \sf.
\newfam\sffam
@@ -1418,8 +1474,6 @@ where each line of input produces a line of output.}
% We don't need math for this font style.
\def\ttsl{\setfontstyle{ttsl}}
-% Default leading.
-\newdimen\textleading \textleading = 13.2pt
% Set the baselineskip to #1, and the lineskip and strut size
% correspondingly. There is no deep meaning behind these magic numbers
@@ -1429,8 +1483,13 @@ where each line of input produces a line of output.}
\def\strutheightpercent{.70833}
\def\strutdepthpercent {.29167}
%
+% can get a sort of poor man's double spacing by redefining this.
+\def\baselinefactor{1}
+%
+\newdimen\textleading
\def\setleading#1{%
- \normalbaselineskip = #1\relax
+ \dimen0 = #1\relax
+ \normalbaselineskip = \baselinefactor\dimen0
\normallineskip = \lineskipfactor\normalbaselineskip
\normalbaselines
\setbox\strutbox =\hbox{%
@@ -1439,20 +1498,295 @@ where each line of input produces a line of output.}
}%
}
-% Set the font macro #1 to the font named #2, adding on the
-% specified font prefix (normally `cm').
-% #3 is the font's design size, #4 is a scale factor
-\def\setfont#1#2#3#4{\font#1=\fontprefix#2#3 scaled #4}
+% PDF CMaps. See also LaTeX's t1.cmap.
+%
+% do nothing with this by default.
+\expandafter\let\csname cmapOT1\endcsname\gobble
+\expandafter\let\csname cmapOT1IT\endcsname\gobble
+\expandafter\let\csname cmapOT1TT\endcsname\gobble
+
+% if we are producing pdf, and we have \pdffontattr, then define cmaps.
+% (\pdffontattr was introduced many years ago, but people still run
+% older pdftex's; it's easy to conditionalize, so we do.)
+\ifpdf \ifx\pdffontattr\thisisundefined \else
+ \begingroup
+ \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char.
+ \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap
+%%DocumentNeededResources: ProcSet (CIDInit)
+%%IncludeResource: ProcSet (CIDInit)
+%%BeginResource: CMap (TeX-OT1-0)
+%%Title: (TeX-OT1-0 TeX OT1 0)
+%%Version: 1.000
+%%EndComments
+/CIDInit /ProcSet findresource begin
+12 dict begin
+begincmap
+/CIDSystemInfo
+<< /Registry (TeX)
+/Ordering (OT1)
+/Supplement 0
+>> def
+/CMapName /TeX-OT1-0 def
+/CMapType 2 def
+1 begincodespacerange
+<00> <7F>
+endcodespacerange
+8 beginbfrange
+<00> <01> <0393>
+<09> <0A> <03A8>
+<23> <26> <0023>
+<28> <3B> <0028>
+<3F> <5B> <003F>
+<5D> <5E> <005D>
+<61> <7A> <0061>
+<7B> <7C> <2013>
+endbfrange
+40 beginbfchar
+<02> <0398>
+<03> <039B>
+<04> <039E>
+<05> <03A0>
+<06> <03A3>
+<07> <03D2>
+<08> <03A6>
+<0B> <00660066>
+<0C> <00660069>
+<0D> <0066006C>
+<0E> <006600660069>
+<0F> <00660066006C>
+<10> <0131>
+<11> <0237>
+<12> <0060>
+<13> <00B4>
+<14> <02C7>
+<15> <02D8>
+<16> <00AF>
+<17> <02DA>
+<18> <00B8>
+<19> <00DF>
+<1A> <00E6>
+<1B> <0153>
+<1C> <00F8>
+<1D> <00C6>
+<1E> <0152>
+<1F> <00D8>
+<21> <0021>
+<22> <201D>
+<27> <2019>
+<3C> <00A1>
+<3D> <003D>
+<3E> <00BF>
+<5C> <201C>
+<5F> <02D9>
+<60> <2018>
+<7D> <02DD>
+<7E> <007E>
+<7F> <00A8>
+endbfchar
+endcmap
+CMapName currentdict /CMap defineresource pop
+end
+end
+%%EndResource
+%%EOF
+ }\endgroup
+ \expandafter\edef\csname cmapOT1\endcsname#1{%
+ \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}%
+ }%
+%
+% \cmapOT1IT
+ \begingroup
+ \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char.
+ \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap
+%%DocumentNeededResources: ProcSet (CIDInit)
+%%IncludeResource: ProcSet (CIDInit)
+%%BeginResource: CMap (TeX-OT1IT-0)
+%%Title: (TeX-OT1IT-0 TeX OT1IT 0)
+%%Version: 1.000
+%%EndComments
+/CIDInit /ProcSet findresource begin
+12 dict begin
+begincmap
+/CIDSystemInfo
+<< /Registry (TeX)
+/Ordering (OT1IT)
+/Supplement 0
+>> def
+/CMapName /TeX-OT1IT-0 def
+/CMapType 2 def
+1 begincodespacerange
+<00> <7F>
+endcodespacerange
+8 beginbfrange
+<00> <01> <0393>
+<09> <0A> <03A8>
+<25> <26> <0025>
+<28> <3B> <0028>
+<3F> <5B> <003F>
+<5D> <5E> <005D>
+<61> <7A> <0061>
+<7B> <7C> <2013>
+endbfrange
+42 beginbfchar
+<02> <0398>
+<03> <039B>
+<04> <039E>
+<05> <03A0>
+<06> <03A3>
+<07> <03D2>
+<08> <03A6>
+<0B> <00660066>
+<0C> <00660069>
+<0D> <0066006C>
+<0E> <006600660069>
+<0F> <00660066006C>
+<10> <0131>
+<11> <0237>
+<12> <0060>
+<13> <00B4>
+<14> <02C7>
+<15> <02D8>
+<16> <00AF>
+<17> <02DA>
+<18> <00B8>
+<19> <00DF>
+<1A> <00E6>
+<1B> <0153>
+<1C> <00F8>
+<1D> <00C6>
+<1E> <0152>
+<1F> <00D8>
+<21> <0021>
+<22> <201D>
+<23> <0023>
+<24> <00A3>
+<27> <2019>
+<3C> <00A1>
+<3D> <003D>
+<3E> <00BF>
+<5C> <201C>
+<5F> <02D9>
+<60> <2018>
+<7D> <02DD>
+<7E> <007E>
+<7F> <00A8>
+endbfchar
+endcmap
+CMapName currentdict /CMap defineresource pop
+end
+end
+%%EndResource
+%%EOF
+ }\endgroup
+ \expandafter\edef\csname cmapOT1IT\endcsname#1{%
+ \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}%
+ }%
+%
+% \cmapOT1TT
+ \begingroup
+ \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char.
+ \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap
+%%DocumentNeededResources: ProcSet (CIDInit)
+%%IncludeResource: ProcSet (CIDInit)
+%%BeginResource: CMap (TeX-OT1TT-0)
+%%Title: (TeX-OT1TT-0 TeX OT1TT 0)
+%%Version: 1.000
+%%EndComments
+/CIDInit /ProcSet findresource begin
+12 dict begin
+begincmap
+/CIDSystemInfo
+<< /Registry (TeX)
+/Ordering (OT1TT)
+/Supplement 0
+>> def
+/CMapName /TeX-OT1TT-0 def
+/CMapType 2 def
+1 begincodespacerange
+<00> <7F>
+endcodespacerange
+5 beginbfrange
+<00> <01> <0393>
+<09> <0A> <03A8>
+<21> <26> <0021>
+<28> <5F> <0028>
+<61> <7E> <0061>
+endbfrange
+32 beginbfchar
+<02> <0398>
+<03> <039B>
+<04> <039E>
+<05> <03A0>
+<06> <03A3>
+<07> <03D2>
+<08> <03A6>
+<0B> <2191>
+<0C> <2193>
+<0D> <0027>
+<0E> <00A1>
+<0F> <00BF>
+<10> <0131>
+<11> <0237>
+<12> <0060>
+<13> <00B4>
+<14> <02C7>
+<15> <02D8>
+<16> <00AF>
+<17> <02DA>
+<18> <00B8>
+<19> <00DF>
+<1A> <00E6>
+<1B> <0153>
+<1C> <00F8>
+<1D> <00C6>
+<1E> <0152>
+<1F> <00D8>
+<20> <2423>
+<27> <2019>
+<60> <2018>
+<7F> <00A8>
+endbfchar
+endcmap
+CMapName currentdict /CMap defineresource pop
+end
+end
+%%EndResource
+%%EOF
+ }\endgroup
+ \expandafter\edef\csname cmapOT1TT\endcsname#1{%
+ \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}%
+ }%
+\fi\fi
+
+
+% Set the font macro #1 to the font named \fontprefix#2.
+% #3 is the font's design size, #4 is a scale factor, #5 is the CMap
+% encoding (only OT1, OT1IT and OT1TT are allowed, or empty to omit).
+% Example:
+% #1 = \textrm
+% #2 = \rmshape
+% #3 = 10
+% #4 = \mainmagstep
+% #5 = OT1
+%
+\def\setfont#1#2#3#4#5{%
+ \font#1=\fontprefix#2#3 scaled #4
+ \csname cmap#5\endcsname#1%
+}
+% This is what gets called when #5 of \setfont is empty.
+\let\cmap\gobble
+%
+% (end of cmaps)
% Use cm as the default font prefix.
% To specify the font prefix, you must define \fontprefix
% before you read in texinfo.tex.
-\ifx\fontprefix\undefined
+\ifx\fontprefix\thisisundefined
\def\fontprefix{cm}
\fi
% Support font families that don't use the same naming scheme as CM.
\def\rmshape{r}
-\def\rmbshape{bx} %where the normal face is bold
+\def\rmbshape{bx} % where the normal face is bold
\def\bfshape{b}
\def\bxshape{bx}
\def\ttshape{tt}
@@ -1467,118 +1801,291 @@ where each line of input produces a line of output.}
\def\scshape{csc}
\def\scbshape{csc}
+% Definitions for a main text size of 11pt. (The default in Texinfo.)
+%
+\def\definetextfontsizexi{%
% Text fonts (11.2pt, magstep1).
-\newcount\mainmagstep
-\ifx\bigger\relax
- % not really supported.
- \mainmagstep=\magstep1
- \setfont\textrm\rmshape{12}{1000}
- \setfont\texttt\ttshape{12}{1000}
-\else
- \mainmagstep=\magstephalf
- \setfont\textrm\rmshape{10}{\mainmagstep}
- \setfont\texttt\ttshape{10}{\mainmagstep}
-\fi
-\setfont\textbf\bfshape{10}{\mainmagstep}
-\setfont\textit\itshape{10}{\mainmagstep}
-\setfont\textsl\slshape{10}{\mainmagstep}
-\setfont\textsf\sfshape{10}{\mainmagstep}
-\setfont\textsc\scshape{10}{\mainmagstep}
-\setfont\textttsl\ttslshape{10}{\mainmagstep}
+\def\textnominalsize{11pt}
+\edef\mainmagstep{\magstephalf}
+\setfont\textrm\rmshape{10}{\mainmagstep}{OT1}
+\setfont\texttt\ttshape{10}{\mainmagstep}{OT1TT}
+\setfont\textbf\bfshape{10}{\mainmagstep}{OT1}
+\setfont\textit\itshape{10}{\mainmagstep}{OT1IT}
+\setfont\textsl\slshape{10}{\mainmagstep}{OT1}
+\setfont\textsf\sfshape{10}{\mainmagstep}{OT1}
+\setfont\textsc\scshape{10}{\mainmagstep}{OT1}
+\setfont\textttsl\ttslshape{10}{\mainmagstep}{OT1TT}
\font\texti=cmmi10 scaled \mainmagstep
\font\textsy=cmsy10 scaled \mainmagstep
+\def\textecsize{1095}
% A few fonts for @defun names and args.
-\setfont\defbf\bfshape{10}{\magstep1}
-\setfont\deftt\ttshape{10}{\magstep1}
-\setfont\defttsl\ttslshape{10}{\magstep1}
+\setfont\defbf\bfshape{10}{\magstep1}{OT1}
+\setfont\deftt\ttshape{10}{\magstep1}{OT1TT}
+\setfont\defttsl\ttslshape{10}{\magstep1}{OT1TT}
\def\df{\let\tentt=\deftt \let\tenbf = \defbf \let\tenttsl=\defttsl \bf}
% Fonts for indices, footnotes, small examples (9pt).
-\setfont\smallrm\rmshape{9}{1000}
-\setfont\smalltt\ttshape{9}{1000}
-\setfont\smallbf\bfshape{10}{900}
-\setfont\smallit\itshape{9}{1000}
-\setfont\smallsl\slshape{9}{1000}
-\setfont\smallsf\sfshape{9}{1000}
-\setfont\smallsc\scshape{10}{900}
-\setfont\smallttsl\ttslshape{10}{900}
+\def\smallnominalsize{9pt}
+\setfont\smallrm\rmshape{9}{1000}{OT1}
+\setfont\smalltt\ttshape{9}{1000}{OT1TT}
+\setfont\smallbf\bfshape{10}{900}{OT1}
+\setfont\smallit\itshape{9}{1000}{OT1IT}
+\setfont\smallsl\slshape{9}{1000}{OT1}
+\setfont\smallsf\sfshape{9}{1000}{OT1}
+\setfont\smallsc\scshape{10}{900}{OT1}
+\setfont\smallttsl\ttslshape{10}{900}{OT1TT}
\font\smalli=cmmi9
\font\smallsy=cmsy9
+\def\smallecsize{0900}
% Fonts for small examples (8pt).
-\setfont\smallerrm\rmshape{8}{1000}
-\setfont\smallertt\ttshape{8}{1000}
-\setfont\smallerbf\bfshape{10}{800}
-\setfont\smallerit\itshape{8}{1000}
-\setfont\smallersl\slshape{8}{1000}
-\setfont\smallersf\sfshape{8}{1000}
-\setfont\smallersc\scshape{10}{800}
-\setfont\smallerttsl\ttslshape{10}{800}
+\def\smallernominalsize{8pt}
+\setfont\smallerrm\rmshape{8}{1000}{OT1}
+\setfont\smallertt\ttshape{8}{1000}{OT1TT}
+\setfont\smallerbf\bfshape{10}{800}{OT1}
+\setfont\smallerit\itshape{8}{1000}{OT1IT}
+\setfont\smallersl\slshape{8}{1000}{OT1}
+\setfont\smallersf\sfshape{8}{1000}{OT1}
+\setfont\smallersc\scshape{10}{800}{OT1}
+\setfont\smallerttsl\ttslshape{10}{800}{OT1TT}
\font\smalleri=cmmi8
\font\smallersy=cmsy8
+\def\smallerecsize{0800}
% Fonts for title page (20.4pt):
-\setfont\titlerm\rmbshape{12}{\magstep3}
-\setfont\titleit\itbshape{10}{\magstep4}
-\setfont\titlesl\slbshape{10}{\magstep4}
-\setfont\titlett\ttbshape{12}{\magstep3}
-\setfont\titlettsl\ttslshape{10}{\magstep4}
-\setfont\titlesf\sfbshape{17}{\magstep1}
+\def\titlenominalsize{20pt}
+\setfont\titlerm\rmbshape{12}{\magstep3}{OT1}
+\setfont\titleit\itbshape{10}{\magstep4}{OT1IT}
+\setfont\titlesl\slbshape{10}{\magstep4}{OT1}
+\setfont\titlett\ttbshape{12}{\magstep3}{OT1TT}
+\setfont\titlettsl\ttslshape{10}{\magstep4}{OT1TT}
+\setfont\titlesf\sfbshape{17}{\magstep1}{OT1}
\let\titlebf=\titlerm
-\setfont\titlesc\scbshape{10}{\magstep4}
+\setfont\titlesc\scbshape{10}{\magstep4}{OT1}
\font\titlei=cmmi12 scaled \magstep3
\font\titlesy=cmsy10 scaled \magstep4
-\def\authorrm{\secrm}
-\def\authortt{\sectt}
+\def\titleecsize{2074}
% Chapter (and unnumbered) fonts (17.28pt).
-\setfont\chaprm\rmbshape{12}{\magstep2}
-\setfont\chapit\itbshape{10}{\magstep3}
-\setfont\chapsl\slbshape{10}{\magstep3}
-\setfont\chaptt\ttbshape{12}{\magstep2}
-\setfont\chapttsl\ttslshape{10}{\magstep3}
-\setfont\chapsf\sfbshape{17}{1000}
+\def\chapnominalsize{17pt}
+\setfont\chaprm\rmbshape{12}{\magstep2}{OT1}
+\setfont\chapit\itbshape{10}{\magstep3}{OT1IT}
+\setfont\chapsl\slbshape{10}{\magstep3}{OT1}
+\setfont\chaptt\ttbshape{12}{\magstep2}{OT1TT}
+\setfont\chapttsl\ttslshape{10}{\magstep3}{OT1TT}
+\setfont\chapsf\sfbshape{17}{1000}{OT1}
\let\chapbf=\chaprm
-\setfont\chapsc\scbshape{10}{\magstep3}
+\setfont\chapsc\scbshape{10}{\magstep3}{OT1}
\font\chapi=cmmi12 scaled \magstep2
\font\chapsy=cmsy10 scaled \magstep3
+\def\chapecsize{1728}
% Section fonts (14.4pt).
-\setfont\secrm\rmbshape{12}{\magstep1}
-\setfont\secit\itbshape{10}{\magstep2}
-\setfont\secsl\slbshape{10}{\magstep2}
-\setfont\sectt\ttbshape{12}{\magstep1}
-\setfont\secttsl\ttslshape{10}{\magstep2}
-\setfont\secsf\sfbshape{12}{\magstep1}
+\def\secnominalsize{14pt}
+\setfont\secrm\rmbshape{12}{\magstep1}{OT1}
+\setfont\secit\itbshape{10}{\magstep2}{OT1IT}
+\setfont\secsl\slbshape{10}{\magstep2}{OT1}
+\setfont\sectt\ttbshape{12}{\magstep1}{OT1TT}
+\setfont\secttsl\ttslshape{10}{\magstep2}{OT1TT}
+\setfont\secsf\sfbshape{12}{\magstep1}{OT1}
\let\secbf\secrm
-\setfont\secsc\scbshape{10}{\magstep2}
+\setfont\secsc\scbshape{10}{\magstep2}{OT1}
\font\seci=cmmi12 scaled \magstep1
\font\secsy=cmsy10 scaled \magstep2
+\def\sececsize{1440}
% Subsection fonts (13.15pt).
-\setfont\ssecrm\rmbshape{12}{\magstephalf}
-\setfont\ssecit\itbshape{10}{1315}
-\setfont\ssecsl\slbshape{10}{1315}
-\setfont\ssectt\ttbshape{12}{\magstephalf}
-\setfont\ssecttsl\ttslshape{10}{1315}
-\setfont\ssecsf\sfbshape{12}{\magstephalf}
+\def\ssecnominalsize{13pt}
+\setfont\ssecrm\rmbshape{12}{\magstephalf}{OT1}
+\setfont\ssecit\itbshape{10}{1315}{OT1IT}
+\setfont\ssecsl\slbshape{10}{1315}{OT1}
+\setfont\ssectt\ttbshape{12}{\magstephalf}{OT1TT}
+\setfont\ssecttsl\ttslshape{10}{1315}{OT1TT}
+\setfont\ssecsf\sfbshape{12}{\magstephalf}{OT1}
\let\ssecbf\ssecrm
-\setfont\ssecsc\scbshape{10}{1315}
+\setfont\ssecsc\scbshape{10}{1315}{OT1}
\font\sseci=cmmi12 scaled \magstephalf
\font\ssecsy=cmsy10 scaled 1315
+\def\ssececsize{1200}
% Reduced fonts for @acro in text (10pt).
-\setfont\reducedrm\rmshape{10}{1000}
-\setfont\reducedtt\ttshape{10}{1000}
-\setfont\reducedbf\bfshape{10}{1000}
-\setfont\reducedit\itshape{10}{1000}
-\setfont\reducedsl\slshape{10}{1000}
-\setfont\reducedsf\sfshape{10}{1000}
-\setfont\reducedsc\scshape{10}{1000}
-\setfont\reducedttsl\ttslshape{10}{1000}
+\def\reducednominalsize{10pt}
+\setfont\reducedrm\rmshape{10}{1000}{OT1}
+\setfont\reducedtt\ttshape{10}{1000}{OT1TT}
+\setfont\reducedbf\bfshape{10}{1000}{OT1}
+\setfont\reducedit\itshape{10}{1000}{OT1IT}
+\setfont\reducedsl\slshape{10}{1000}{OT1}
+\setfont\reducedsf\sfshape{10}{1000}{OT1}
+\setfont\reducedsc\scshape{10}{1000}{OT1}
+\setfont\reducedttsl\ttslshape{10}{1000}{OT1TT}
\font\reducedi=cmmi10
\font\reducedsy=cmsy10
+\def\reducedecsize{1000}
+
+\textleading = 13.2pt % line spacing for 11pt CM
+\textfonts % reset the current fonts
+\rm
+} % end of 11pt text font size definitions, \definetextfontsizexi
+
+
+% Definitions to make the main text be 10pt Computer Modern, with
+% section, chapter, etc., sizes following suit. This is for the GNU
+% Press printing of the Emacs 22 manual. Maybe other manuals in the
+% future. Used with @smallbook, which sets the leading to 12pt.
+%
+\def\definetextfontsizex{%
+% Text fonts (10pt).
+\def\textnominalsize{10pt}
+\edef\mainmagstep{1000}
+\setfont\textrm\rmshape{10}{\mainmagstep}{OT1}
+\setfont\texttt\ttshape{10}{\mainmagstep}{OT1TT}
+\setfont\textbf\bfshape{10}{\mainmagstep}{OT1}
+\setfont\textit\itshape{10}{\mainmagstep}{OT1IT}
+\setfont\textsl\slshape{10}{\mainmagstep}{OT1}
+\setfont\textsf\sfshape{10}{\mainmagstep}{OT1}
+\setfont\textsc\scshape{10}{\mainmagstep}{OT1}
+\setfont\textttsl\ttslshape{10}{\mainmagstep}{OT1TT}
+\font\texti=cmmi10 scaled \mainmagstep
+\font\textsy=cmsy10 scaled \mainmagstep
+\def\textecsize{1000}
+
+% A few fonts for @defun names and args.
+\setfont\defbf\bfshape{10}{\magstephalf}{OT1}
+\setfont\deftt\ttshape{10}{\magstephalf}{OT1TT}
+\setfont\defttsl\ttslshape{10}{\magstephalf}{OT1TT}
+\def\df{\let\tentt=\deftt \let\tenbf = \defbf \let\tenttsl=\defttsl \bf}
+
+% Fonts for indices, footnotes, small examples (9pt).
+\def\smallnominalsize{9pt}
+\setfont\smallrm\rmshape{9}{1000}{OT1}
+\setfont\smalltt\ttshape{9}{1000}{OT1TT}
+\setfont\smallbf\bfshape{10}{900}{OT1}
+\setfont\smallit\itshape{9}{1000}{OT1IT}
+\setfont\smallsl\slshape{9}{1000}{OT1}
+\setfont\smallsf\sfshape{9}{1000}{OT1}
+\setfont\smallsc\scshape{10}{900}{OT1}
+\setfont\smallttsl\ttslshape{10}{900}{OT1TT}
+\font\smalli=cmmi9
+\font\smallsy=cmsy9
+\def\smallecsize{0900}
+
+% Fonts for small examples (8pt).
+\def\smallernominalsize{8pt}
+\setfont\smallerrm\rmshape{8}{1000}{OT1}
+\setfont\smallertt\ttshape{8}{1000}{OT1TT}
+\setfont\smallerbf\bfshape{10}{800}{OT1}
+\setfont\smallerit\itshape{8}{1000}{OT1IT}
+\setfont\smallersl\slshape{8}{1000}{OT1}
+\setfont\smallersf\sfshape{8}{1000}{OT1}
+\setfont\smallersc\scshape{10}{800}{OT1}
+\setfont\smallerttsl\ttslshape{10}{800}{OT1TT}
+\font\smalleri=cmmi8
+\font\smallersy=cmsy8
+\def\smallerecsize{0800}
+
+% Fonts for title page (20.4pt):
+\def\titlenominalsize{20pt}
+\setfont\titlerm\rmbshape{12}{\magstep3}{OT1}
+\setfont\titleit\itbshape{10}{\magstep4}{OT1IT}
+\setfont\titlesl\slbshape{10}{\magstep4}{OT1}
+\setfont\titlett\ttbshape{12}{\magstep3}{OT1TT}
+\setfont\titlettsl\ttslshape{10}{\magstep4}{OT1TT}
+\setfont\titlesf\sfbshape{17}{\magstep1}{OT1}
+\let\titlebf=\titlerm
+\setfont\titlesc\scbshape{10}{\magstep4}{OT1}
+\font\titlei=cmmi12 scaled \magstep3
+\font\titlesy=cmsy10 scaled \magstep4
+\def\titleecsize{2074}
+
+% Chapter fonts (14.4pt).
+\def\chapnominalsize{14pt}
+\setfont\chaprm\rmbshape{12}{\magstep1}{OT1}
+\setfont\chapit\itbshape{10}{\magstep2}{OT1IT}
+\setfont\chapsl\slbshape{10}{\magstep2}{OT1}
+\setfont\chaptt\ttbshape{12}{\magstep1}{OT1TT}
+\setfont\chapttsl\ttslshape{10}{\magstep2}{OT1TT}
+\setfont\chapsf\sfbshape{12}{\magstep1}{OT1}
+\let\chapbf\chaprm
+\setfont\chapsc\scbshape{10}{\magstep2}{OT1}
+\font\chapi=cmmi12 scaled \magstep1
+\font\chapsy=cmsy10 scaled \magstep2
+\def\chapecsize{1440}
+
+% Section fonts (12pt).
+\def\secnominalsize{12pt}
+\setfont\secrm\rmbshape{12}{1000}{OT1}
+\setfont\secit\itbshape{10}{\magstep1}{OT1IT}
+\setfont\secsl\slbshape{10}{\magstep1}{OT1}
+\setfont\sectt\ttbshape{12}{1000}{OT1TT}
+\setfont\secttsl\ttslshape{10}{\magstep1}{OT1TT}
+\setfont\secsf\sfbshape{12}{1000}{OT1}
+\let\secbf\secrm
+\setfont\secsc\scbshape{10}{\magstep1}{OT1}
+\font\seci=cmmi12
+\font\secsy=cmsy10 scaled \magstep1
+\def\sececsize{1200}
+
+% Subsection fonts (10pt).
+\def\ssecnominalsize{10pt}
+\setfont\ssecrm\rmbshape{10}{1000}{OT1}
+\setfont\ssecit\itbshape{10}{1000}{OT1IT}
+\setfont\ssecsl\slbshape{10}{1000}{OT1}
+\setfont\ssectt\ttbshape{10}{1000}{OT1TT}
+\setfont\ssecttsl\ttslshape{10}{1000}{OT1TT}
+\setfont\ssecsf\sfbshape{10}{1000}{OT1}
+\let\ssecbf\ssecrm
+\setfont\ssecsc\scbshape{10}{1000}{OT1}
+\font\sseci=cmmi10
+\font\ssecsy=cmsy10
+\def\ssececsize{1000}
+
+% Reduced fonts for @acro in text (9pt).
+\def\reducednominalsize{9pt}
+\setfont\reducedrm\rmshape{9}{1000}{OT1}
+\setfont\reducedtt\ttshape{9}{1000}{OT1TT}
+\setfont\reducedbf\bfshape{10}{900}{OT1}
+\setfont\reducedit\itshape{9}{1000}{OT1IT}
+\setfont\reducedsl\slshape{9}{1000}{OT1}
+\setfont\reducedsf\sfshape{9}{1000}{OT1}
+\setfont\reducedsc\scshape{10}{900}{OT1}
+\setfont\reducedttsl\ttslshape{10}{900}{OT1TT}
+\font\reducedi=cmmi9
+\font\reducedsy=cmsy9
+\def\reducedecsize{0900}
+
+\divide\parskip by 2 % reduce space between paragraphs
+\textleading = 12pt % line spacing for 10pt CM
+\textfonts % reset the current fonts
+\rm
+} % end of 10pt text font size definitions, \definetextfontsizex
+
+
+% We provide the user-level command
+% @fonttextsize 10
+% (or 11) to redefine the text font size. pt is assumed.
+%
+\def\xiword{11}
+\def\xword{10}
+\def\xwordpt{10pt}
+%
+\parseargdef\fonttextsize{%
+ \def\textsizearg{#1}%
+ %\wlog{doing @fonttextsize \textsizearg}%
+ %
+ % Set \globaldefs so that documents can use this inside @tex, since
+ % makeinfo 4.8 does not support it, but we need it nonetheless.
+ %
+ \begingroup \globaldefs=1
+ \ifx\textsizearg\xword \definetextfontsizex
+ \else \ifx\textsizearg\xiword \definetextfontsizexi
+ \else
+ \errhelp=\EMsimple
+ \errmessage{@fonttextsize only supports `10' or `11', not `\textsizearg'}
+ \fi\fi
+ \endgroup
+}
+
% In order for the font changes to affect most math symbols and letters,
% we have to define the \textfont of the standard families. Since
@@ -1608,6 +2115,7 @@ where each line of input produces a line of output.}
\let\tenbf=\textbf \let\tentt=\texttt \let\smallcaps=\textsc
\let\tensf=\textsf \let\teni=\texti \let\tensy=\textsy
\let\tenttsl=\textttsl
+ \def\curfontsize{text}%
\def\lsize{reduced}\def\lllsize{smaller}%
\resetmathfonts \setleading{\textleading}}
\def\titlefonts{%
@@ -1615,13 +2123,16 @@ where each line of input produces a line of output.}
\let\tenbf=\titlebf \let\tentt=\titlett \let\smallcaps=\titlesc
\let\tensf=\titlesf \let\teni=\titlei \let\tensy=\titlesy
\let\tenttsl=\titlettsl
+ \def\curfontsize{title}%
\def\lsize{chap}\def\lllsize{subsec}%
- \resetmathfonts \setleading{25pt}}
-\def\titlefont#1{{\titlefonts\rm #1}}
+ \resetmathfonts \setleading{27pt}}
+\def\titlefont#1{{\titlefonts\rmisbold #1}}
\def\chapfonts{%
\let\tenrm=\chaprm \let\tenit=\chapit \let\tensl=\chapsl
\let\tenbf=\chapbf \let\tentt=\chaptt \let\smallcaps=\chapsc
- \let\tensf=\chapsf \let\teni=\chapi \let\tensy=\chapsy \let\tenttsl=\chapttsl
+ \let\tensf=\chapsf \let\teni=\chapi \let\tensy=\chapsy
+ \let\tenttsl=\chapttsl
+ \def\curfontsize{chap}%
\def\lsize{sec}\def\lllsize{text}%
\resetmathfonts \setleading{19pt}}
\def\secfonts{%
@@ -1629,6 +2140,7 @@ where each line of input produces a line of output.}
\let\tenbf=\secbf \let\tentt=\sectt \let\smallcaps=\secsc
\let\tensf=\secsf \let\teni=\seci \let\tensy=\secsy
\let\tenttsl=\secttsl
+ \def\curfontsize{sec}%
\def\lsize{subsec}\def\lllsize{reduced}%
\resetmathfonts \setleading{16pt}}
\def\subsecfonts{%
@@ -1636,6 +2148,7 @@ where each line of input produces a line of output.}
\let\tenbf=\ssecbf \let\tentt=\ssectt \let\smallcaps=\ssecsc
\let\tensf=\ssecsf \let\teni=\sseci \let\tensy=\ssecsy
\let\tenttsl=\ssecttsl
+ \def\curfontsize{ssec}%
\def\lsize{text}\def\lllsize{small}%
\resetmathfonts \setleading{15pt}}
\let\subsubsecfonts = \subsecfonts
@@ -1644,6 +2157,7 @@ where each line of input produces a line of output.}
\let\tenbf=\reducedbf \let\tentt=\reducedtt \let\reducedcaps=\reducedsc
\let\tensf=\reducedsf \let\teni=\reducedi \let\tensy=\reducedsy
\let\tenttsl=\reducedttsl
+ \def\curfontsize{reduced}%
\def\lsize{small}\def\lllsize{smaller}%
\resetmathfonts \setleading{10.5pt}}
\def\smallfonts{%
@@ -1651,6 +2165,7 @@ where each line of input produces a line of output.}
\let\tenbf=\smallbf \let\tentt=\smalltt \let\smallcaps=\smallsc
\let\tensf=\smallsf \let\teni=\smalli \let\tensy=\smallsy
\let\tenttsl=\smallttsl
+ \def\curfontsize{small}%
\def\lsize{smaller}\def\lllsize{smaller}%
\resetmathfonts \setleading{10.5pt}}
\def\smallerfonts{%
@@ -1658,9 +2173,20 @@ where each line of input produces a line of output.}
\let\tenbf=\smallerbf \let\tentt=\smallertt \let\smallcaps=\smallersc
\let\tensf=\smallersf \let\teni=\smalleri \let\tensy=\smallersy
\let\tenttsl=\smallerttsl
+ \def\curfontsize{smaller}%
\def\lsize{smaller}\def\lllsize{smaller}%
\resetmathfonts \setleading{9.5pt}}
+% Fonts for short table of contents.
+\setfont\shortcontrm\rmshape{12}{1000}{OT1}
+\setfont\shortcontbf\bfshape{10}{\magstep1}{OT1} % no cmb12
+\setfont\shortcontsl\slshape{12}{1000}{OT1}
+\setfont\shortconttt\ttshape{12}{1000}{OT1TT}
+
+% Define these just so they can be easily changed for other fonts.
+\def\angleleft{$\langle$}
+\def\angleright{$\rangle$}
+
% Set the fonts to use with the @small... environments.
\let\smallexamplefonts = \smallfonts
@@ -1674,55 +2200,219 @@ where each line of input produces a line of output.}
%
% By the way, for comparison, here's what fits with @example (10pt):
% 8.5x11=71 smallbook=60 a4=75 a5=58
-%
-% I wish the USA used A4 paper.
% --karl, 24jan03.
-
% Set up the default fonts, so we can use them for creating boxes.
%
-\textfonts \rm
+\definetextfontsizexi
-% Define these so they can be easily changed for other fonts.
-\def\angleleft{$\langle$}
-\def\angleright{$\rangle$}
+
+\message{markup,}
+
+% Check if we are currently using a typewriter font. Since all the
+% Computer Modern typewriter fonts have zero interword stretch (and
+% shrink), and it is reasonable to expect all typewriter fonts to have
+% this property, we can check that font parameter.
+%
+\def\ifmonospace{\ifdim\fontdimen3\font=0pt }
+
+% Markup style infrastructure. \defmarkupstylesetup\INITMACRO will
+% define and register \INITMACRO to be called on markup style changes.
+% \INITMACRO can check \currentmarkupstyle for the innermost
+% style and the set of \ifmarkupSTYLE switches for all styles
+% currently in effect.
+\newif\ifmarkupvar
+\newif\ifmarkupsamp
+\newif\ifmarkupkey
+%\newif\ifmarkupfile % @file == @samp.
+%\newif\ifmarkupoption % @option == @samp.
+\newif\ifmarkupcode
+\newif\ifmarkupkbd
+%\newif\ifmarkupenv % @env == @code.
+%\newif\ifmarkupcommand % @command == @code.
+\newif\ifmarkuptex % @tex (and part of @math, for now).
+\newif\ifmarkupexample
+\newif\ifmarkupverb
+\newif\ifmarkupverbatim
+
+\let\currentmarkupstyle\empty
+
+\def\setupmarkupstyle#1{%
+ \csname markup#1true\endcsname
+ \def\currentmarkupstyle{#1}%
+ \markupstylesetup
+}
+
+\let\markupstylesetup\empty
+
+\def\defmarkupstylesetup#1{%
+ \expandafter\def\expandafter\markupstylesetup
+ \expandafter{\markupstylesetup #1}%
+ \def#1%
+}
+
+% Markup style setup for left and right quotes.
+\defmarkupstylesetup\markupsetuplq{%
+ \expandafter\let\expandafter \temp
+ \csname markupsetuplq\currentmarkupstyle\endcsname
+ \ifx\temp\relax \markupsetuplqdefault \else \temp \fi
+}
+
+\defmarkupstylesetup\markupsetuprq{%
+ \expandafter\let\expandafter \temp
+ \csname markupsetuprq\currentmarkupstyle\endcsname
+ \ifx\temp\relax \markupsetuprqdefault \else \temp \fi
+}
+
+{
+\catcode`\'=\active
+\catcode`\`=\active
+
+\gdef\markupsetuplqdefault{\let`\lq}
+\gdef\markupsetuprqdefault{\let'\rq}
+
+\gdef\markupsetcodequoteleft{\let`\codequoteleft}
+\gdef\markupsetcodequoteright{\let'\codequoteright}
+}
+
+\let\markupsetuplqcode \markupsetcodequoteleft
+\let\markupsetuprqcode \markupsetcodequoteright
+%
+\let\markupsetuplqexample \markupsetcodequoteleft
+\let\markupsetuprqexample \markupsetcodequoteright
+%
+\let\markupsetuplqkbd \markupsetcodequoteleft
+\let\markupsetuprqkbd \markupsetcodequoteright
+%
+\let\markupsetuplqsamp \markupsetcodequoteleft
+\let\markupsetuprqsamp \markupsetcodequoteright
+%
+\let\markupsetuplqverb \markupsetcodequoteleft
+\let\markupsetuprqverb \markupsetcodequoteright
+%
+\let\markupsetuplqverbatim \markupsetcodequoteleft
+\let\markupsetuprqverbatim \markupsetcodequoteright
+
+% Allow an option to not use regular directed right quote/apostrophe
+% (char 0x27), but instead the undirected quote from cmtt (char 0x0d).
+% The undirected quote is ugly, so don't make it the default, but it
+% works for pasting with more pdf viewers (at least evince), the
+% lilypond developers report. xpdf does work with the regular 0x27.
+%
+\def\codequoteright{%
+ \expandafter\ifx\csname SETtxicodequoteundirected\endcsname\relax
+ \expandafter\ifx\csname SETcodequoteundirected\endcsname\relax
+ '%
+ \else \char'15 \fi
+ \else \char'15 \fi
+}
+%
+% and a similar option for the left quote char vs. a grave accent.
+% Modern fonts display ASCII 0x60 as a grave accent, so some people like
+% the code environments to do likewise.
+%
+\def\codequoteleft{%
+ \expandafter\ifx\csname SETtxicodequotebacktick\endcsname\relax
+ \expandafter\ifx\csname SETcodequotebacktick\endcsname\relax
+ % [Knuth] pp. 380,381,391
+ % \relax disables Spanish ligatures ?` and !` of \tt font.
+ \relax`%
+ \else \char'22 \fi
+ \else \char'22 \fi
+}
+
+% Commands to set the quote options.
+%
+\parseargdef\codequoteundirected{%
+ \def\temp{#1}%
+ \ifx\temp\onword
+ \expandafter\let\csname SETtxicodequoteundirected\endcsname
+ = t%
+ \else\ifx\temp\offword
+ \expandafter\let\csname SETtxicodequoteundirected\endcsname
+ = \relax
+ \else
+ \errhelp = \EMsimple
+ \errmessage{Unknown @codequoteundirected value `\temp', must be on|off}%
+ \fi\fi
+}
+%
+\parseargdef\codequotebacktick{%
+ \def\temp{#1}%
+ \ifx\temp\onword
+ \expandafter\let\csname SETtxicodequotebacktick\endcsname
+ = t%
+ \else\ifx\temp\offword
+ \expandafter\let\csname SETtxicodequotebacktick\endcsname
+ = \relax
+ \else
+ \errhelp = \EMsimple
+ \errmessage{Unknown @codequotebacktick value `\temp', must be on|off}%
+ \fi\fi
+}
+
+% [Knuth] pp. 380,381,391, disable Spanish ligatures ?` and !` of \tt font.
+\def\noligaturesquoteleft{\relax\lq}
% Count depth in font-changes, for error checks
\newcount\fontdepth \fontdepth=0
-% Fonts for short table of contents.
-\setfont\shortcontrm\rmshape{12}{1000}
-\setfont\shortcontbf\bfshape{10}{\magstep1} % no cmb12
-\setfont\shortcontsl\slshape{12}{1000}
-\setfont\shortconttt\ttshape{12}{1000}
-
-%% Add scribe-like font environments, plus @l for inline lisp (usually sans
-%% serif) and @ii for TeX italic
-
-% \smartitalic{ARG} outputs arg in italics, followed by an italic correction
-% unless the following character is such as not to need one.
-\def\smartitalicx{\ifx\next,\else\ifx\next-\else\ifx\next.\else
- \ptexslash\fi\fi\fi}
-\def\smartslanted#1{{\ifusingtt\ttsl\sl #1}\futurelet\next\smartitalicx}
-\def\smartitalic#1{{\ifusingtt\ttsl\it #1}\futurelet\next\smartitalicx}
-
-% like \smartslanted except unconditionally uses \ttsl.
-% @var is set to this for defun arguments.
-\def\ttslanted#1{{\ttsl #1}\futurelet\next\smartitalicx}
-
-% like \smartslanted except unconditionally use \sl. We never want
+% Font commands.
+
+% #1 is the font command (\sl or \it), #2 is the text to slant.
+% If we are in a monospaced environment, however, 1) always use \ttsl,
+% and 2) do not add an italic correction.
+\def\dosmartslant#1#2{%
+ \ifusingtt
+ {{\ttsl #2}\let\next=\relax}%
+ {\def\next{{#1#2}\futurelet\next\smartitaliccorrection}}%
+ \next
+}
+\def\smartslanted{\dosmartslant\sl}
+\def\smartitalic{\dosmartslant\it}
+
+% Output an italic correction unless \next (presumed to be the following
+% character) is such as not to need one.
+\def\smartitaliccorrection{%
+ \ifx\next,%
+ \else\ifx\next-%
+ \else\ifx\next.%
+ \else\ptexslash
+ \fi\fi\fi
+ \aftersmartic
+}
+
+% Unconditional use \ttsl, and no ic. @var is set to this for defuns.
+\def\ttslanted#1{{\ttsl #1}}
+
+% @cite is like \smartslanted except unconditionally use \sl. We never want
% ttsl for book titles, do we?
-\def\cite#1{{\sl #1}\futurelet\next\smartitalicx}
+\def\cite#1{{\sl #1}\futurelet\next\smartitaliccorrection}
+
+\def\aftersmartic{}
+\def\var#1{%
+ \let\saveaftersmartic = \aftersmartic
+ \def\aftersmartic{\null\let\aftersmartic=\saveaftersmartic}%
+ \smartslanted{#1}%
+}
\let\i=\smartitalic
\let\slanted=\smartslanted
-\let\var=\smartslanted
\let\dfn=\smartslanted
\let\emph=\smartitalic
+% Explicit font changes: @r, @sc, undocumented @ii.
+\def\r#1{{\rm #1}} % roman font
+\def\sc#1{{\smallcaps#1}} % smallcaps font
+\def\ii#1{{\it #1}} % italic font
+
+% @b, explicit bold. Also @strong.
\def\b#1{{\bf #1}}
\let\strong=\b
+% @sansserif, explicit sans.
+\def\sansserif#1{{\sf #1}}
+
% We can't just use \exhyphenpenalty, because that only has effect at
% the end of a paragraph. Restore normal hyphenation at the end of the
% group within which \nohyphenation is presumably called.
@@ -1735,35 +2425,34 @@ where each line of input produces a line of output.}
% sometimes \x has an active definition that messes things up.
%
\catcode`@=11
- \def\frenchspacing{%
+ \def\plainfrenchspacing{%
\sfcode\dotChar =\@m \sfcode\questChar=\@m \sfcode\exclamChar=\@m
\sfcode\colonChar=\@m \sfcode\semiChar =\@m \sfcode\commaChar =\@m
+ \def\endofsentencespacefactor{1000}% for @. and friends
+ }
+ \def\plainnonfrenchspacing{%
+ \sfcode`\.3000\sfcode`\?3000\sfcode`\!3000
+ \sfcode`\:2000\sfcode`\;1500\sfcode`\,1250
+ \def\endofsentencespacefactor{3000}% for @. and friends
}
\catcode`@=\other
+\def\endofsentencespacefactor{3000}% default
+% @t, explicit typewriter.
\def\t#1{%
- {\tt \rawbackslash \frenchspacing #1}%
+ {\tt \rawbackslash \plainfrenchspacing #1}%
\null
}
-\def\samp#1{`\tclose{#1}'\null}
-\setfont\keyrm\rmshape{8}{1000}
-\font\keysy=cmsy9
-\def\key#1{{\keyrm\textfont2=\keysy \leavevmode\hbox{%
- \raise0.4pt\hbox{\angleleft}\kern-.08em\vtop{%
- \vbox{\hrule\kern-0.4pt
- \hbox{\raise0.4pt\hbox{\vphantom{\angleleft}}#1}}%
- \kern-0.4pt\hrule}%
- \kern-.06em\raise0.4pt\hbox{\angleright}}}}
-% The old definition, with no lozenge:
-%\def\key #1{{\ttsl \nohyphenation \uppercase{#1}}\null}
-\def\ctrl #1{{\tt \rawbackslash \hat}#1}
-% @file, @option are the same as @samp.
-\let\file=\samp
-\let\option=\samp
+% @samp.
+\def\samp#1{{\setupmarkupstyle{samp}\lq\tclose{#1}\rq\null}}
-% @code is a modification of @t,
-% which makes spaces the same size as normal in the surrounding text.
+% @indicateurl is \samp, that is, with quotes.
+\let\indicateurl=\samp
+
+% @code (and similar) prints in typewriter, but with spaces the same
+% size as normal in the surrounding text, without hyphenation, etc.
+% This is a subroutine for that.
\def\tclose#1{%
{%
% Change normal interword space to be same as for the current font.
@@ -1779,33 +2468,44 @@ where each line of input produces a line of output.}
\nohyphenation
%
\rawbackslash
- \frenchspacing
+ \plainfrenchspacing
#1%
}%
- \null
+ \null % reset spacefactor to 1000
}
% We *must* turn on hyphenation at `-' and `_' in @code.
% Otherwise, it is too hard to avoid overfull hboxes
% in the Emacs manual, the Library manual, etc.
-
+%
% Unfortunately, TeX uses one parameter (\hyphenchar) to control
% both hyphenation at - and hyphenation within words.
% We must therefore turn them both off (\tclose does that)
% and arrange explicitly to hyphenate at a dash.
% -- rms.
{
- \catcode`\-=\active
- \catcode`\_=\active
+ \catcode`\-=\active \catcode`\_=\active
+ \catcode`\'=\active \catcode`\`=\active
+ \global\let'=\rq \global\let`=\lq % default definitions
%
\global\def\code{\begingroup
- \catcode`\-=\active \let-\codedash
- \catcode`\_=\active \let_\codeunder
+ \setupmarkupstyle{code}%
+ % The following should really be moved into \setupmarkupstyle handlers.
+ \catcode\dashChar=\active \catcode\underChar=\active
+ \ifallowcodebreaks
+ \let-\codedash
+ \let_\codeunder
+ \else
+ \let-\normaldash
+ \let_\realunder
+ \fi
\codex
}
}
-\def\realdash{-}
+\def\codex #1{\tclose{#1}\endgroup}
+
+\def\normaldash{-}
\def\codedash{-\discretionary{}{}{}}
\def\codeunder{%
% this is all so @math{@code{var_name}+1} can work. In math mode, _
@@ -1818,53 +2518,44 @@ where each line of input produces a line of output.}
\discretionary{}{}{}}%
{\_}%
}
-\def\codex #1{\tclose{#1}\endgroup}
-% @kbd is like @code, except that if the argument is just one @key command,
-% then @kbd has no effect.
+% An additional complication: the above will allow breaks after, e.g.,
+% each of the four underscores in __typeof__. This is bad.
+% @allowcodebreaks provides a document-level way to turn breaking at -
+% and _ on and off.
+%
+\newif\ifallowcodebreaks \allowcodebreakstrue
-% @kbdinputstyle -- arg is `distinct' (@kbd uses slanted tty font always),
-% `example' (@kbd uses ttsl only inside of @example and friends),
-% or `code' (@kbd uses normal tty font always).
-\parseargdef\kbdinputstyle{%
- \def\arg{#1}%
- \ifx\arg\worddistinct
- \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\ttsl}%
- \else\ifx\arg\wordexample
- \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\tt}%
- \else\ifx\arg\wordcode
- \gdef\kbdexamplefont{\tt}\gdef\kbdfont{\tt}%
+\def\keywordtrue{true}
+\def\keywordfalse{false}
+
+\parseargdef\allowcodebreaks{%
+ \def\txiarg{#1}%
+ \ifx\txiarg\keywordtrue
+ \allowcodebreakstrue
+ \else\ifx\txiarg\keywordfalse
+ \allowcodebreaksfalse
\else
\errhelp = \EMsimple
- \errmessage{Unknown @kbdinputstyle option `\arg'}%
- \fi\fi\fi
+ \errmessage{Unknown @allowcodebreaks option `\txiarg', must be true|false}%
+ \fi\fi
}
-\def\worddistinct{distinct}
-\def\wordexample{example}
-\def\wordcode{code}
-
-% Default is `distinct.'
-\kbdinputstyle distinct
-
-\def\xkey{\key}
-\def\kbdfoo#1#2#3\par{\def\one{#1}\def\three{#3}\def\threex{??}%
-\ifx\one\xkey\ifx\threex\three \key{#2}%
-\else{\tclose{\kbdfont\look}}\fi
-\else{\tclose{\kbdfont\look}}\fi}
-% For @indicateurl, @env, @command quotes seem unnecessary, so use \code.
-\let\indicateurl=\code
-\let\env=\code
+% For @command, @env, @file, @option quotes seem unnecessary,
+% so use \code rather than \samp.
\let\command=\code
+\let\env=\code
+\let\file=\code
+\let\option=\code
% @uref (abbreviation for `urlref') takes an optional (comma-separated)
% second argument specifying the text to display and an optional third
% arg as text to display instead of (rather than in addition to) the url
-% itself. First (mandatory) arg is the url. Perhaps eventually put in
-% a hypertex \special here.
-%
-\def\uref#1{\douref #1,,,\finish}
-\def\douref#1,#2,#3,#4\finish{\begingroup
+% itself. First (mandatory) arg is the url.
+% (This \urefnobreak definition isn't used now, leaving it for a while
+% for comparison.)
+\def\urefnobreak#1{\dourefnobreak #1,,,\finish}
+\def\dourefnobreak#1,#2,#3,#4\finish{\begingroup
\unsepspaces
\pdfurl{#1}%
\setbox0 = \hbox{\ignorespaces #3}%
@@ -1885,6 +2576,103 @@ where each line of input produces a line of output.}
\endlink
\endgroup}
+% This \urefbreak definition is the active one.
+\def\urefbreak{\begingroup \urefcatcodes \dourefbreak}
+\let\uref=\urefbreak
+\def\dourefbreak#1{\urefbreakfinish #1,,,\finish}
+\def\urefbreakfinish#1,#2,#3,#4\finish{% doesn't work in @example
+ \unsepspaces
+ \pdfurl{#1}%
+ \setbox0 = \hbox{\ignorespaces #3}%
+ \ifdim\wd0 > 0pt
+ \unhbox0 % third arg given, show only that
+ \else
+ \setbox0 = \hbox{\ignorespaces #2}%
+ \ifdim\wd0 > 0pt
+ \ifpdf
+ \unhbox0 % PDF: 2nd arg given, show only it
+ \else
+ \unhbox0\ (\urefcode{#1})% DVI: 2nd arg given, show both it and url
+ \fi
+ \else
+ \urefcode{#1}% only url given, so show it
+ \fi
+ \fi
+ \endlink
+\endgroup}
+
+% Allow line breaks around only a few characters (only).
+\def\urefcatcodes{%
+ \catcode\ampChar=\active \catcode\dotChar=\active
+ \catcode\hashChar=\active \catcode\questChar=\active
+ \catcode\slashChar=\active
+}
+{
+ \urefcatcodes
+ %
+ \global\def\urefcode{\begingroup
+ \setupmarkupstyle{code}%
+ \urefcatcodes
+ \let&\urefcodeamp
+ \let.\urefcodedot
+ \let#\urefcodehash
+ \let?\urefcodequest
+ \let/\urefcodeslash
+ \codex
+ }
+ %
+ % By default, they are just regular characters.
+ \global\def&{\normalamp}
+ \global\def.{\normaldot}
+ \global\def#{\normalhash}
+ \global\def?{\normalquest}
+ \global\def/{\normalslash}
+}
+
+% we put a little stretch before and after the breakable chars, to help
+% line breaking of long url's. The unequal skips make look better in
+% cmtt at least, especially for dots.
+\def\urefprestretch{\urefprebreak \hskip0pt plus.13em }
+\def\urefpoststretch{\urefpostbreak \hskip0pt plus.1em }
+%
+\def\urefcodeamp{\urefprestretch \&\urefpoststretch}
+\def\urefcodedot{\urefprestretch .\urefpoststretch}
+\def\urefcodehash{\urefprestretch \#\urefpoststretch}
+\def\urefcodequest{\urefprestretch ?\urefpoststretch}
+\def\urefcodeslash{\futurelet\next\urefcodeslashfinish}
+{
+ \catcode`\/=\active
+ \global\def\urefcodeslashfinish{%
+ \urefprestretch \slashChar
+ % Allow line break only after the final / in a sequence of
+ % slashes, to avoid line break between the slashes in http://.
+ \ifx\next/\else \urefpoststretch \fi
+ }
+}
+
+% One more complication: by default we'll break after the special
+% characters, but some people like to break before the special chars, so
+% allow that. Also allow no breaking at all, for manual control.
+%
+\parseargdef\urefbreakstyle{%
+ \def\txiarg{#1}%
+ \ifx\txiarg\wordnone
+ \def\urefprebreak{\nobreak}\def\urefpostbreak{\nobreak}
+ \else\ifx\txiarg\wordbefore
+ \def\urefprebreak{\allowbreak}\def\urefpostbreak{\nobreak}
+ \else\ifx\txiarg\wordafter
+ \def\urefprebreak{\nobreak}\def\urefpostbreak{\allowbreak}
+ \else
+ \errhelp = \EMsimple
+ \errmessage{Unknown @urefbreakstyle setting `\txiarg'}%
+ \fi\fi\fi
+}
+\def\wordafter{after}
+\def\wordbefore{before}
+\def\wordnone{none}
+
+\urefbreakstyle after
+
% @url synonym for @uref, since that's how everyone uses it.
%
\let\url=\uref
@@ -1906,34 +2694,81 @@ where each line of input produces a line of output.}
\let\email=\uref
\fi
-% Check if we are currently using a typewriter font. Since all the
-% Computer Modern typewriter fonts have zero interword stretch (and
-% shrink), and it is reasonable to expect all typewriter fonts to have
-% this property, we can check that font parameter.
-%
-\def\ifmonospace{\ifdim\fontdimen3\font=0pt }
+% @kbdinputstyle -- arg is `distinct' (@kbd uses slanted tty font always),
+% `example' (@kbd uses ttsl only inside of @example and friends),
+% or `code' (@kbd uses normal tty font always).
+\parseargdef\kbdinputstyle{%
+ \def\txiarg{#1}%
+ \ifx\txiarg\worddistinct
+ \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\ttsl}%
+ \else\ifx\txiarg\wordexample
+ \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\tt}%
+ \else\ifx\txiarg\wordcode
+ \gdef\kbdexamplefont{\tt}\gdef\kbdfont{\tt}%
+ \else
+ \errhelp = \EMsimple
+ \errmessage{Unknown @kbdinputstyle setting `\txiarg'}%
+ \fi\fi\fi
+}
+\def\worddistinct{distinct}
+\def\wordexample{example}
+\def\wordcode{code}
+
+% Default is `distinct'.
+\kbdinputstyle distinct
+
+% @kbd is like @code, except that if the argument is just one @key command,
+% then @kbd has no effect.
+\def\kbd#1{{\def\look{#1}\expandafter\kbdsub\look??\par}}
+
+\def\xkey{\key}
+\def\kbdsub#1#2#3\par{%
+ \def\one{#1}\def\three{#3}\def\threex{??}%
+ \ifx\one\xkey\ifx\threex\three \key{#2}%
+ \else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi
+ \else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi
+}
+
+% definition of @key that produces a lozenge. Doesn't adjust to text size.
+%\setfont\keyrm\rmshape{8}{1000}{OT1}
+%\font\keysy=cmsy9
+%\def\key#1{{\keyrm\textfont2=\keysy \leavevmode\hbox{%
+% \raise0.4pt\hbox{\angleleft}\kern-.08em\vtop{%
+% \vbox{\hrule\kern-0.4pt
+% \hbox{\raise0.4pt\hbox{\vphantom{\angleleft}}#1}}%
+% \kern-0.4pt\hrule}%
+% \kern-.06em\raise0.4pt\hbox{\angleright}}}}
+
+% definition of @key with no lozenge. If the current font is already
+% monospace, don't change it; that way, we respect @kbdinputstyle. But
+% if it isn't monospace, then use \tt.
+%
+\def\key#1{{\setupmarkupstyle{key}%
+ \nohyphenation
+ \ifmonospace\else\tt\fi
+ #1}\null}
+
+% @clicksequence{File @click{} Open ...}
+\def\clicksequence#1{\begingroup #1\endgroup}
+
+% @clickstyle @arrow (by default)
+\parseargdef\clickstyle{\def\click{#1}}
+\def\click{\arrow}
% Typeset a dimension, e.g., `in' or `pt'. The only reason for the
% argument is to make the input look right: @dmn{pt} instead of @dmn{}pt.
%
\def\dmn#1{\thinspace #1}
-\def\kbd#1{\def\look{#1}\expandafter\kbdfoo\look??\par}
-
% @l was never documented to mean ``switch to the Lisp font'',
% and it is not used as such in any manual I can find. We need it for
% Polish suppressed-l. --karl, 22sep96.
%\def\l#1{{\li #1}\null}
-% Explicit font changes: @r, @sc, undocumented @ii.
-\def\r#1{{\rm #1}} % roman font
-\def\sc#1{{\smallcaps#1}} % smallcaps font
-\def\ii#1{{\it #1}} % italic font
-
% @acronym for "FBI", "NATO", and the like.
% We print this one point size smaller, since it's intended for
% all-uppercase.
-%
+%
\def\acronym#1{\doacronym #1,,\finish}
\def\doacronym#1,#2,#3\finish{%
{\selectfonts\lsize #1}%
@@ -1941,24 +2776,392 @@ where each line of input produces a line of output.}
\ifx\temp\empty \else
\space ({\unsepspaces \ignorespaces \temp \unskip})%
\fi
+ \null % reset \spacefactor=1000
}
% @abbr for "Comput. J." and the like.
% No font change, but don't do end-of-sentence spacing.
-%
+%
\def\abbr#1{\doabbr #1,,\finish}
\def\doabbr#1,#2,#3\finish{%
- {\frenchspacing #1}%
+ {\plainfrenchspacing #1}%
\def\temp{#2}%
\ifx\temp\empty \else
\space ({\unsepspaces \ignorespaces \temp \unskip})%
\fi
+ \null % reset \spacefactor=1000
+}
+
+% @asis just yields its argument. Used with @table, for example.
+%
+\def\asis#1{#1}
+
+% @math outputs its argument in math mode.
+%
+% One complication: _ usually means subscripts, but it could also mean
+% an actual _ character, as in @math{@var{some_variable} + 1}. So make
+% _ active, and distinguish by seeing if the current family is \slfam,
+% which is what @var uses.
+{
+ \catcode`\_ = \active
+ \gdef\mathunderscore{%
+ \catcode`\_=\active
+ \def_{\ifnum\fam=\slfam \_\else\sb\fi}%
+ }
+}
+% Another complication: we want \\ (and @\) to output a math (or tt) \.
+% FYI, plain.tex uses \\ as a temporary control sequence (for no
+% particular reason), but this is not advertised and we don't care.
+%
+% The \mathchar is class=0=ordinary, family=7=ttfam, position=5C=\.
+\def\mathbackslash{\ifnum\fam=\ttfam \mathchar"075C \else\backslash \fi}
+%
+\def\math{%
+ \tex
+ \mathunderscore
+ \let\\ = \mathbackslash
+ \mathactive
+ % make the texinfo accent commands work in math mode
+ \let\"=\ddot
+ \let\'=\acute
+ \let\==\bar
+ \let\^=\hat
+ \let\`=\grave
+ \let\u=\breve
+ \let\v=\check
+ \let\~=\tilde
+ \let\dotaccent=\dot
+ $\finishmath
+}
+\def\finishmath#1{#1$\endgroup} % Close the group opened by \tex.
+
+% Some active characters (such as <) are spaced differently in math.
+% We have to reset their definitions in case the @math was an argument
+% to a command which sets the catcodes (such as @item or @section).
+%
+{
+ \catcode`^ = \active
+ \catcode`< = \active
+ \catcode`> = \active
+ \catcode`+ = \active
+ \catcode`' = \active
+ \gdef\mathactive{%
+ \let^ = \ptexhat
+ \let< = \ptexless
+ \let> = \ptexgtr
+ \let+ = \ptexplus
+ \let' = \ptexquoteright
+ }
+}
+
+% ctrl is no longer a Texinfo command, but leave this definition for fun.
+\def\ctrl #1{{\tt \rawbackslash \hat}#1}
+
+% @inlinefmt{FMTNAME,PROCESSED-TEXT} and @inlineraw{FMTNAME,RAW-TEXT}.
+% Ignore unless FMTNAME == tex; then it is like @iftex and @tex,
+% except specified as a normal braced arg, so no newlines to worry about.
+%
+\def\outfmtnametex{tex}
+%
+\long\def\inlinefmt#1{\doinlinefmt #1,\finish}
+\long\def\doinlinefmt#1,#2,\finish{%
+ \def\inlinefmtname{#1}%
+ \ifx\inlinefmtname\outfmtnametex \ignorespaces #2\fi
+}
+% For raw, must switch into @tex before parsing the argument, to avoid
+% setting catcodes prematurely. Doing it this way means that, for
+% example, @inlineraw{html, foo{bar} gets a parse error instead of being
+% ignored. But this isn't important because if people want a literal
+% *right* brace they would have to use a command anyway, so they may as
+% well use a command to get a left brace too. We could re-use the
+% delimiter character idea from \verb, but it seems like overkill.
+%
+\long\def\inlineraw{\tex \doinlineraw}
+\long\def\doinlineraw#1{\doinlinerawtwo #1,\finish}
+\def\doinlinerawtwo#1,#2,\finish{%
+ \def\inlinerawname{#1}%
+ \ifx\inlinerawname\outfmtnametex \ignorespaces #2\fi
+ \endgroup % close group opened by \tex.
+}
+
+
+\message{glyphs,}
+% and logos.
+
+% @@ prints an @, as does @atchar{}.
+\def\@{\char64 }
+\let\atchar=\@
+
+% @{ @} @lbracechar{} @rbracechar{} all generate brace characters.
+% Unless we're in typewriter, use \ecfont because the CM text fonts do
+% not have braces, and we don't want to switch into math.
+\def\mylbrace{{\ifmonospace\else\ecfont\fi \char123}}
+\def\myrbrace{{\ifmonospace\else\ecfont\fi \char125}}
+\let\{=\mylbrace \let\lbracechar=\{
+\let\}=\myrbrace \let\rbracechar=\}
+\begingroup
+ % Definitions to produce \{ and \} commands for indices,
+ % and @{ and @} for the aux/toc files.
+ \catcode`\{ = \other \catcode`\} = \other
+ \catcode`\[ = 1 \catcode`\] = 2
+ \catcode`\! = 0 \catcode`\\ = \other
+ !gdef!lbracecmd[\{]%
+ !gdef!rbracecmd[\}]%
+ !gdef!lbraceatcmd[@{]%
+ !gdef!rbraceatcmd[@}]%
+!endgroup
+
+% @comma{} to avoid , parsing problems.
+\let\comma = ,
+
+% Accents: @, @dotaccent @ringaccent @ubaraccent @udotaccent
+% Others are defined by plain TeX: @` @' @" @^ @~ @= @u @v @H.
+\let\, = \ptexc
+\let\dotaccent = \ptexdot
+\def\ringaccent#1{{\accent23 #1}}
+\let\tieaccent = \ptext
+\let\ubaraccent = \ptexb
+\let\udotaccent = \d
+
+% Other special characters: @questiondown @exclamdown @ordf @ordm
+% Plain TeX defines: @AA @AE @O @OE @L (plus lowercase versions) @ss.
+\def\questiondown{?`}
+\def\exclamdown{!`}
+\def\ordf{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{a}}}
+\def\ordm{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{o}}}
+
+% Dotless i and dotless j, used for accents.
+\def\imacro{i}
+\def\jmacro{j}
+\def\dotless#1{%
+ \def\temp{#1}%
+ \ifx\temp\imacro \ifmmode\imath \else\ptexi \fi
+ \else\ifx\temp\jmacro \ifmmode\jmath \else\j \fi
+ \else \errmessage{@dotless can be used only with i or j}%
+ \fi\fi
}
+% The \TeX{} logo, as in plain, but resetting the spacing so that a
+% period following counts as ending a sentence. (Idea found in latex.)
+%
+\edef\TeX{\TeX \spacefactor=1000 }
+
+% @LaTeX{} logo. Not quite the same results as the definition in
+% latex.ltx, since we use a different font for the raised A; it's most
+% convenient for us to use an explicitly smaller font, rather than using
+% the \scriptstyle font (since we don't reset \scriptstyle and
+% \scriptscriptstyle).
+%
+\def\LaTeX{%
+ L\kern-.36em
+ {\setbox0=\hbox{T}%
+ \vbox to \ht0{\hbox{%
+ \ifx\textnominalsize\xwordpt
+ % for 10pt running text, \lllsize (8pt) is too small for the A in LaTeX.
+ % Revert to plain's \scriptsize, which is 7pt.
+ \count255=\the\fam $\fam\count255 \scriptstyle A$%
+ \else
+ % For 11pt, we can use our lllsize.
+ \selectfonts\lllsize A%
+ \fi
+ }%
+ \vss
+ }}%
+ \kern-.15em
+ \TeX
+}
+
+% Some math mode symbols.
+\def\bullet{$\ptexbullet$}
+\def\geq{\ifmmode \ge\else $\ge$\fi}
+\def\leq{\ifmmode \le\else $\le$\fi}
+\def\minus{\ifmmode -\else $-$\fi}
+
+% @dots{} outputs an ellipsis using the current font.
+% We do .5em per period so that it has the same spacing in the cm
+% typewriter fonts as three actual period characters; on the other hand,
+% in other typewriter fonts three periods are wider than 1.5em. So do
+% whichever is larger.
+%
+\def\dots{%
+ \leavevmode
+ \setbox0=\hbox{...}% get width of three periods
+ \ifdim\wd0 > 1.5em
+ \dimen0 = \wd0
+ \else
+ \dimen0 = 1.5em
+ \fi
+ \hbox to \dimen0{%
+ \hskip 0pt plus.25fil
+ .\hskip 0pt plus1fil
+ .\hskip 0pt plus1fil
+ .\hskip 0pt plus.5fil
+ }%
+}
+
+% @enddots{} is an end-of-sentence ellipsis.
+%
+\def\enddots{%
+ \dots
+ \spacefactor=\endofsentencespacefactor
+}
+
+% @point{}, @result{}, @expansion{}, @print{}, @equiv{}.
+%
+% Since these characters are used in examples, they should be an even number of
+% \tt widths. Each \tt character is 1en, so two makes it 1em.
+%
+\def\point{$\star$}
+\def\arrow{\leavevmode\raise.05ex\hbox to 1em{\hfil$\rightarrow$\hfil}}
+\def\result{\leavevmode\raise.05ex\hbox to 1em{\hfil$\Rightarrow$\hfil}}
+\def\expansion{\leavevmode\hbox to 1em{\hfil$\mapsto$\hfil}}
+\def\print{\leavevmode\lower.1ex\hbox to 1em{\hfil$\dashv$\hfil}}
+\def\equiv{\leavevmode\hbox to 1em{\hfil$\ptexequiv$\hfil}}
+
+% The @error{} command.
+% Adapted from the TeXbook's \boxit.
+%
+\newbox\errorbox
+%
+{\tentt \global\dimen0 = 3em}% Width of the box.
+\dimen2 = .55pt % Thickness of rules
+% The text. (`r' is open on the right, `e' somewhat less so on the left.)
+\setbox0 = \hbox{\kern-.75pt \reducedsf \putworderror\kern-1.5pt}
+%
+\setbox\errorbox=\hbox to \dimen0{\hfil
+ \hsize = \dimen0 \advance\hsize by -5.8pt % Space to left+right.
+ \advance\hsize by -2\dimen2 % Rules.
+ \vbox{%
+ \hrule height\dimen2
+ \hbox{\vrule width\dimen2 \kern3pt % Space to left of text.
+ \vtop{\kern2.4pt \box0 \kern2.4pt}% Space above/below.
+ \kern3pt\vrule width\dimen2}% Space to right.
+ \hrule height\dimen2}
+ \hfil}
+%
+\def\error{\leavevmode\lower.7ex\copy\errorbox}
+
% @pounds{} is a sterling sign, which Knuth put in the CM italic font.
%
\def\pounds{{\it\$}}
+% @euro{} comes from a separate font, depending on the current style.
+% We use the free feym* fonts from the eurosym package by Henrik
+% Theiling, which support regular, slanted, bold and bold slanted (and
+% "outlined" (blackboard board, sort of) versions, which we don't need).
+% It is available from http://www.ctan.org/tex-archive/fonts/eurosym.
+%
+% Although only regular is the truly official Euro symbol, we ignore
+% that. The Euro is designed to be slightly taller than the regular
+% font height.
+%
+% feymr - regular
+% feymo - slanted
+% feybr - bold
+% feybo - bold slanted
+%
+% There is no good (free) typewriter version, to my knowledge.
+% A feymr10 euro is ~7.3pt wide, while a normal cmtt10 char is ~5.25pt wide.
+% Hmm.
+%
+% Also doesn't work in math. Do we need to do math with euro symbols?
+% Hope not.
+%
+%
+\def\euro{{\eurofont e}}
+\def\eurofont{%
+ % We set the font at each command, rather than predefining it in
+ % \textfonts and the other font-switching commands, so that
+ % installations which never need the symbol don't have to have the
+ % font installed.
+ %
+ % There is only one designed size (nominal 10pt), so we always scale
+ % that to the current nominal size.
+ %
+ % By the way, simply using "at 1em" works for cmr10 and the like, but
+ % does not work for cmbx10 and other extended/shrunken fonts.
+ %
+ \def\eurosize{\csname\curfontsize nominalsize\endcsname}%
+ %
+ \ifx\curfontstyle\bfstylename
+ % bold:
+ \font\thiseurofont = \ifusingit{feybo10}{feybr10} at \eurosize
+ \else
+ % regular:
+ \font\thiseurofont = \ifusingit{feymo10}{feymr10} at \eurosize
+ \fi
+ \thiseurofont
+}
+
+% Glyphs from the EC fonts. We don't use \let for the aliases, because
+% sometimes we redefine the original macro, and the alias should reflect
+% the redefinition.
+%
+% Use LaTeX names for the Icelandic letters.
+\def\DH{{\ecfont \char"D0}} % Eth
+\def\dh{{\ecfont \char"F0}} % eth
+\def\TH{{\ecfont \char"DE}} % Thorn
+\def\th{{\ecfont \char"FE}} % thorn
+%
+\def\guillemetleft{{\ecfont \char"13}}
+\def\guillemotleft{\guillemetleft}
+\def\guillemetright{{\ecfont \char"14}}
+\def\guillemotright{\guillemetright}
+\def\guilsinglleft{{\ecfont \char"0E}}
+\def\guilsinglright{{\ecfont \char"0F}}
+\def\quotedblbase{{\ecfont \char"12}}
+\def\quotesinglbase{{\ecfont \char"0D}}
+%
+% This positioning is not perfect (see the ogonek LaTeX package), but
+% we have the precomposed glyphs for the most common cases. We put the
+% tests to use those glyphs in the single \ogonek macro so we have fewer
+% dummy definitions to worry about for index entries, etc.
+%
+% ogonek is also used with other letters in Lithuanian (IOU), but using
+% the precomposed glyphs for those is not so easy since they aren't in
+% the same EC font.
+\def\ogonek#1{{%
+ \def\temp{#1}%
+ \ifx\temp\macrocharA\Aogonek
+ \else\ifx\temp\macrochara\aogonek
+ \else\ifx\temp\macrocharE\Eogonek
+ \else\ifx\temp\macrochare\eogonek
+ \else
+ \ecfont \setbox0=\hbox{#1}%
+ \ifdim\ht0=1ex\accent"0C #1%
+ \else\ooalign{\unhbox0\crcr\hidewidth\char"0C \hidewidth}%
+ \fi
+ \fi\fi\fi\fi
+ }%
+}
+\def\Aogonek{{\ecfont \char"81}}\def\macrocharA{A}
+\def\aogonek{{\ecfont \char"A1}}\def\macrochara{a}
+\def\Eogonek{{\ecfont \char"86}}\def\macrocharE{E}
+\def\eogonek{{\ecfont \char"A6}}\def\macrochare{e}
+%
+% Use the ec* fonts (cm-super in outline format) for non-CM glyphs.
+\def\ecfont{%
+ % We can't distinguish serif/sans and italic/slanted, but this
+ % is used for crude hacks anyway (like adding French and German
+ % quotes to documents typeset with CM, where we lose kerning), so
+ % hopefully nobody will notice/care.
+ \edef\ecsize{\csname\curfontsize ecsize\endcsname}%
+ \edef\nominalsize{\csname\curfontsize nominalsize\endcsname}%
+ \ifmonospace
+ % typewriter:
+ \font\thisecfont = ectt\ecsize \space at \nominalsize
+ \else
+ \ifx\curfontstyle\bfstylename
+ % bold:
+ \font\thisecfont = ecb\ifusingit{i}{x}\ecsize \space at \nominalsize
+ \else
+ % regular:
+ \font\thisecfont = ec\ifusingit{ti}{rm}\ecsize \space at \nominalsize
+ \fi
+ \fi
+ \thisecfont
+}
+
% @registeredsymbol - R in a circle. The font for the R should really
% be smaller yet, but lllsize is the best we can do for now.
% Adapted from the plain.tex definition of \copyright.
@@ -1969,14 +3172,24 @@ where each line of input produces a line of output.}
}$%
}
+% @textdegree - the normal degrees sign.
+%
+\def\textdegree{$^\circ$}
+
% Laurent Siebenmann reports \Orb undefined with:
% Textures 1.7.7 (preloaded format=plain 93.10.14) (68K) 16 APR 2004 02:38
% so we'll define it if necessary.
-%
-\ifx\Orb\undefined
+%
+\ifx\Orb\thisisundefined
\def\Orb{\mathhexbox20D}
\fi
+% Quotes.
+\chardef\quotedblleft="5C
+\chardef\quotedblright=`\"
+\chardef\quoteleft=`\`
+\chardef\quoteright=`\'
+
\message{page headings,}
@@ -1995,8 +3208,9 @@ where each line of input produces a line of output.}
\newif\ifsetshortcontentsaftertitlepage
\let\setshortcontentsaftertitlepage = \setshortcontentsaftertitlepagetrue
-\parseargdef\shorttitlepage{\begingroup\hbox{}\vskip 1.5in \chaprm \centerline{#1}%
- \endgroup\page\hbox{}\page}
+\parseargdef\shorttitlepage{%
+ \begingroup \hbox{}\vskip 1.5in \chaprm \centerline{#1}%
+ \endgroup\page\hbox{}\page}
\envdef\titlepage{%
% Open one extra group, as we want to close it in the middle of \Etitlepage.
@@ -2056,17 +3270,28 @@ where each line of input produces a line of output.}
\finishedtitlepagetrue
}
-%%% Macros to be used within @titlepage:
+% Settings used for typesetting titles: no hyphenation, no indentation,
+% don't worry much about spacing, ragged right. This should be used
+% inside a \vbox, and fonts need to be set appropriately first. Because
+% it is always used for titles, nothing else, we call \rmisbold. \par
+% should be specified before the end of the \vbox, since a vbox is a group.
+%
+\def\raggedtitlesettings{%
+ \rmisbold
+ \hyphenpenalty=10000
+ \parindent=0pt
+ \tolerance=5000
+ \ptexraggedright
+}
+
+% Macros to be used within @titlepage:
\let\subtitlerm=\tenrm
\def\subtitlefont{\subtitlerm \normalbaselineskip = 13pt \normalbaselines}
-\def\authorfont{\authorrm \normalbaselineskip = 16pt \normalbaselines
- \let\tt=\authortt}
-
\parseargdef\title{%
\checkenv\titlepage
- \leftline{\titlefonts\rm #1}
+ \vbox{\titlefonts \raggedtitlesettings #1\par}%
% print a rule at the page bottom also.
\finishedtitlepagefalse
\vskip4pt \hrule height 4pt width \hsize \vskip4pt
@@ -2087,12 +3312,12 @@ where each line of input produces a line of output.}
\else
\checkenv\titlepage
\ifseenauthor\else \vskip 0pt plus 1filll \seenauthortrue \fi
- {\authorfont \leftline{#1}}%
+ {\secfonts\rmisbold \leftline{#1}}%
\fi
}
-%%% Set up page headings and footings.
+% Set up page headings and footings.
\let\thispage=\folio
@@ -2140,12 +3365,39 @@ where each line of input produces a line of output.}
%
% Leave some space for the footline. Hopefully ok to assume
% @evenfooting will not be used by itself.
- \global\advance\pageheight by -\baselineskip
- \global\advance\vsize by -\baselineskip
+ \global\advance\pageheight by -12pt
+ \global\advance\vsize by -12pt
}
\parseargdef\everyfooting{\oddfootingxxx{#1}\evenfootingxxx{#1}}
+% @evenheadingmarks top \thischapter <- chapter at the top of a page
+% @evenheadingmarks bottom \thischapter <- chapter at the bottom of a page
+%
+% The same set of arguments for:
+%
+% @oddheadingmarks
+% @evenfootingmarks
+% @oddfootingmarks
+% @everyheadingmarks
+% @everyfootingmarks
+
+\def\evenheadingmarks{\headingmarks{even}{heading}}
+\def\oddheadingmarks{\headingmarks{odd}{heading}}
+\def\evenfootingmarks{\headingmarks{even}{footing}}
+\def\oddfootingmarks{\headingmarks{odd}{footing}}
+\def\everyheadingmarks#1 {\headingmarks{even}{heading}{#1}
+ \headingmarks{odd}{heading}{#1} }
+\def\everyfootingmarks#1 {\headingmarks{even}{footing}{#1}
+ \headingmarks{odd}{footing}{#1} }
+% #1 = even/odd, #2 = heading/footing, #3 = top/bottom.
+\def\headingmarks#1#2#3 {%
+ \expandafter\let\expandafter\temp \csname get#3headingmarks\endcsname
+ \global\expandafter\let\csname get#1#2marks\endcsname \temp
+}
+
+\everyheadingmarks bottom
+\everyfootingmarks bottom
% @headings double turns headings on for double-sided printing.
% @headings single turns headings on for single-sided printing.
@@ -2159,10 +3411,14 @@ where each line of input produces a line of output.}
\def\headings #1 {\csname HEADINGS#1\endcsname}
-\def\HEADINGSoff{%
-\global\evenheadline={\hfil} \global\evenfootline={\hfil}
-\global\oddheadline={\hfil} \global\oddfootline={\hfil}}
-\HEADINGSoff
+\def\headingsoff{% non-global headings elimination
+ \evenheadline={\hfil}\evenfootline={\hfil}%
+ \oddheadline={\hfil}\oddfootline={\hfil}%
+}
+
+\def\HEADINGSoff{{\globaldefs=1 \headingsoff}} % global setting
+\HEADINGSoff % it's the default
+
% When we turn headings on, set the page number to 1.
% For double-sided printing, put current file name in lower left corner,
% chapter name on inside top of right hand pages, document
@@ -2213,7 +3469,7 @@ where each line of input produces a line of output.}
% This produces Day Month Year style of output.
% Only define if not already defined, in case a txi-??.tex file has set
% up a different format (e.g., txi-cs.tex does this).
-\ifx\today\undefined
+\ifx\today\thisisundefined
\def\today{%
\number\day\space
\ifcase\month
@@ -2274,7 +3530,7 @@ where each line of input produces a line of output.}
\begingroup
\advance\leftskip by-\tableindent
\advance\hsize by\tableindent
- \advance\rightskip by0pt plus1fil
+ \advance\rightskip by0pt plus1fil\relax
\leavevmode\unhbox0\par
\endgroup
%
@@ -2288,7 +3544,7 @@ where each line of input produces a line of output.}
% cause the example and the item to crash together. So we use this
% bizarre value of 10001 as a signal to \aboveenvbreak to insert
% \parskip glue after all. Section titles are handled this way also.
- %
+ %
\penalty 10001
\endgroup
\itemxneedsnegativevskipfalse
@@ -2314,15 +3570,26 @@ where each line of input produces a line of output.}
% @table, @ftable, @vtable.
\envdef\table{%
\let\itemindex\gobble
- \tablex
+ \tablecheck{table}%
}
\envdef\ftable{%
\def\itemindex ##1{\doind {fn}{\code{##1}}}%
- \tablex
+ \tablecheck{ftable}%
}
\envdef\vtable{%
\def\itemindex ##1{\doind {vr}{\code{##1}}}%
- \tablex
+ \tablecheck{vtable}%
+}
+\def\tablecheck#1{%
+ \ifnum \the\catcode`\^^M=\active
+ \endgroup
+ \errmessage{This command won't work in this context; perhaps the problem is
+ that we are \inenvironment\thisenv}%
+ \def\next{\doignore{#1}}%
+ \else
+ \let\next\tablex
+ \fi
+ \next
}
\def\tablex#1{%
\def\itemindicate{#1}%
@@ -2371,9 +3638,18 @@ where each line of input produces a line of output.}
\parindent=0pt
\parskip=\smallskipamount
\ifdim\parskip=0pt \parskip=2pt \fi
+ %
+ % Try typesetting the item mark that if the document erroneously says
+ % something like @itemize @samp (intending @table), there's an error
+ % right away at the @itemize. It's not the best error message in the
+ % world, but it's better than leaving it to the @item. This means if
+ % the user wants an empty mark, they have to say @w{} not just @w.
\def\itemcontents{#1}%
+ \setbox0 = \hbox{\itemcontents}%
+ %
% @itemize with no arg is equivalent to @itemize @bullet.
\ifx\itemcontents\empty\def\itemcontents{\bullet}\fi
+ %
\let\item=\itemizeitem
}
@@ -2394,6 +3670,7 @@ where each line of input produces a line of output.}
\ifnum\lastpenalty<10000 \parskip=0in \fi
\noindent
\hbox to 0pt{\hss \itemcontents \kern\itemmargin}%
+ %
\vadjust{\penalty 1200}}% not good to break after first line of item.
\flushcr
}
@@ -2615,12 +3892,19 @@ where each line of input produces a line of output.}
%
% @headitem starts a heading row, which we typeset in bold.
% Assignments have to be global since we are inside the implicit group
-% of an alignment entry. Note that \everycr resets \everytab.
-\def\headitem{\checkenv\multitable \crcr \global\everytab={\bf}\the\everytab}%
+% of an alignment entry. \everycr resets \everytab so we don't have to
+% undo it ourselves.
+\def\headitemfont{\b}% for people to use in the template row; not changeable
+\def\headitem{%
+ \checkenv\multitable
+ \crcr
+ \global\everytab={\bf}% can't use \headitemfont since the parsing differs
+ \the\everytab % for the first item
+}%
%
% A \tab used to include \hskip1sp. But then the space in a template
% line is not enough. That is bad. So let's go back to just `&' until
-% we encounter the problem it was intended to solve again.
+% we again encounter the problem the 1sp was intended to solve.
% --karl, nathan@acm.org, 20apr99.
\def\tab{\checkenv\multitable &\the\everytab}%
@@ -2721,31 +4005,29 @@ where each line of input produces a line of output.}
\global\setpercentfalse
}
-\def\setmultitablespacing{% test to see if user has set \multitablelinespace.
-% If so, do nothing. If not, give it an appropriate dimension based on
-% current baselineskip.
+\def\setmultitablespacing{%
+ \def\multistrut{\strut}% just use the standard line spacing
+ %
+ % Compute \multitablelinespace (if not defined by user) for use in
+ % \multitableparskip calculation. We used define \multistrut based on
+ % this, but (ironically) that caused the spacing to be off.
+ % See bug-texinfo report from Werner Lemberg, 31 Oct 2004 12:52:20 +0100.
\ifdim\multitablelinespace=0pt
\setbox0=\vbox{X}\global\multitablelinespace=\the\baselineskip
\global\advance\multitablelinespace by-\ht0
-%% strut to put in table in case some entry doesn't have descenders,
-%% to keep lines equally spaced
-\let\multistrut = \strut
-\else
-%% FIXME: what is \box0 supposed to be?
-\gdef\multistrut{\vrule height\multitablelinespace depth\dp0
-width0pt\relax} \fi
-%% Test to see if parskip is larger than space between lines of
-%% table. If not, do nothing.
-%% If so, set to same dimension as multitablelinespace.
+\fi
+% Test to see if parskip is larger than space between lines of
+% table. If not, do nothing.
+% If so, set to same dimension as multitablelinespace.
\ifdim\multitableparskip>\multitablelinespace
\global\multitableparskip=\multitablelinespace
-\global\advance\multitableparskip-7pt %% to keep parskip somewhat smaller
- %% than skip between lines in the table.
+\global\advance\multitableparskip-7pt % to keep parskip somewhat smaller
+ % than skip between lines in the table.
\fi%
\ifdim\multitableparskip=0pt
\global\multitableparskip=\multitablelinespace
-\global\advance\multitableparskip-7pt %% to keep parskip somewhat smaller
- %% than skip between lines in the table.
+\global\advance\multitableparskip-7pt % to keep parskip somewhat smaller
+ % than skip between lines in the table.
\fi}
@@ -2791,6 +4073,7 @@ width0pt\relax} \fi
\def\doignore#1{\begingroup
% Scan in ``verbatim'' mode:
+ \obeylines
\catcode`\@ = \other
\catcode`\{ = \other
\catcode`\} = \other
@@ -2811,16 +4094,16 @@ width0pt\relax} \fi
\gdef\dodoignore#1{%
% #1 contains the command name as a string, e.g., `ifinfo'.
%
- % Define a command to find the next `@end #1', which must be on a line
- % by itself.
- \long\def\doignoretext##1^^M@end #1{\doignoretextyyy##1^^M@#1\_STOP_}%
+ % Define a command to find the next `@end #1'.
+ \long\def\doignoretext##1^^M@end #1{%
+ \doignoretextyyy##1^^M@#1\_STOP_}%
+ %
% And this command to find another #1 command, at the beginning of a
% line. (Otherwise, we would consider a line `@c @ifset', for
% example, to count as an @ifset for nesting.)
\long\def\doignoretextyyy##1^^M@#1##2\_STOP_{\doignoreyyy{##2}\_STOP_}%
%
% And now expand that command.
- \obeylines %
\doignoretext ^^M%
}%
}
@@ -2850,7 +4133,12 @@ width0pt\relax} \fi
}
% Finish off ignored text.
-\def\enddoignore{\endgroup\ignorespaces}
+{ \obeylines%
+ % Ignore anything after the last `@end #1'; this matters in verbatim
+ % environments, where otherwise the newline after an ignored conditional
+ % would result in a blank line in the output.
+ \gdef\enddoignore#1^^M{\endgroup\ignorespaces}%
+}
% @set VAR sets the variable VAR to an empty value.
@@ -2900,7 +4188,7 @@ width0pt\relax} \fi
% ..., but we might end up with active ones in the argument if
% we're called from @code, as @code{@value{foo-bar_}}, though.
% So \let them to their normal equivalents.
- \let-\realdash \let_\normalunderscore
+ \let-\normaldash \let_\normalunderscore
}
}
@@ -2940,7 +4228,7 @@ width0pt\relax} \fi
}
\def\ifsetfail{\doignore{ifset}}
-% @ifclear VAR ... @end ifclear reads the `...' iff VAR has never been
+% @ifclear VAR ... @end executes the `...' iff VAR has never been
% defined with @set, or has been undefined with @clear.
%
% The `\else' inside the `\doifset' parameter is a trick to reuse the
@@ -2951,6 +4239,35 @@ width0pt\relax} \fi
\def\ifclear{\parsearg{\doifset{\else \let\next=\ifclearfail}}}
\def\ifclearfail{\doignore{ifclear}}
+% @ifcommandisdefined CMD ... @end executes the `...' if CMD (written
+% without the @) is in fact defined. We can only feasibly check at the
+% TeX level, so something like `mathcode' is going to considered
+% defined even though it is not a Texinfo command.
+%
+\makecond{ifcommanddefined}
+\def\ifcommanddefined{\parsearg{\doifcmddefined{\let\next=\ifcmddefinedfail}}}
+%
+\def\doifcmddefined#1#2{{%
+ \makevalueexpandable
+ \let\next=\empty
+ \expandafter\ifx\csname #2\endcsname\relax
+ #1% If not defined, \let\next as above.
+ \fi
+ \expandafter
+ }\next
+}
+\def\ifcmddefinedfail{\doignore{ifcommanddefined}}
+
+% @ifcommandnotdefined CMD ... handled similar to @ifclear above.
+\makecond{ifcommandnotdefined}
+\def\ifcommandnotdefined{%
+ \parsearg{\doifcmddefined{\else \let\next=\ifcmdnotdefinedfail}}}
+\def\ifcmdnotdefinedfail{\doignore{ifcommandnotdefined}}
+
+% Set the `txicommandconditionals' variable, so documents have a way to
+% test if the @ifcommand...defined conditionals are available.
+\set txicommandconditionals
+
% @dircategory CATEGORY -- specify a category of the dir file
% which this file should belong to. Ignore this in TeX.
\let\dircategory=\comment
@@ -2963,9 +4280,8 @@ width0pt\relax} \fi
% Index generation facilities
% Define \newwrite to be identical to plain tex's \newwrite
-% except not \outer, so it can be used within \newindex.
-{\catcode`\@=11
-\gdef\newwrite{\alloc@7\write\chardef\sixt@@n}}
+% except not \outer, so it can be used within macros and \if's.
+\edef\newwrite{\makecsname{ptexnewwrite}}
% \newindex {foo} defines an index named foo.
% It automatically defines \fooindex such that
@@ -3016,11 +4332,11 @@ width0pt\relax} \fi
\def\dosynindex#1#2#3{%
% Only do \closeout if we haven't already done it, else we'll end up
% closing the target index.
- \expandafter \ifx\csname donesynindex#2\endcsname \undefined
+ \expandafter \ifx\csname donesynindex#2\endcsname \relax
% The \closeout helps reduce unnecessary open files; the limit on the
% Acorn RISC OS is a mere 16 files.
\expandafter\closeout\csname#2indfile\endcsname
- \expandafter\let\csname\donesynindex#2\endcsname = 1
+ \expandafter\let\csname donesynindex#2\endcsname = 1
\fi
% redefine \fooindfile:
\expandafter\let\expandafter\temp\expandafter=\csname#3indfile\endcsname
@@ -3051,42 +4367,53 @@ width0pt\relax} \fi
% we have to laboriously prevent expansion for those that we don't.
%
\def\indexdummies{%
+ \escapechar = `\\ % use backslash in output files.
\def\@{@}% change to @@ when we switch to @ as escape char in index files.
\def\ {\realbackslash\space }%
- % Need these in case \tex is in effect and \{ is a \delimiter again.
- % But can't use \lbracecmd and \rbracecmd because texindex assumes
- % braces and backslashes are used only as delimiters.
- \let\{ = \mylbrace
- \let\} = \myrbrace
- %
- % \definedummyword defines \#1 as \realbackslash #1\space, thus
- % effectively preventing its expansion. This is used only for control
- % words, not control letters, because the \space would be incorrect
- % for control characters, but is needed to separate the control word
- % from whatever follows.
%
- % For control letters, we have \definedummyletter, which omits the
- % space.
- %
- % These can be used both for control words that take an argument and
- % those that do not. If it is followed by {arg} in the input, then
- % that will dutifully get written to the index (or wherever).
- %
- \def\definedummyword##1{%
- \expandafter\def\csname ##1\endcsname{\realbackslash ##1\space}%
- }%
- \def\definedummyletter##1{%
- \expandafter\def\csname ##1\endcsname{\realbackslash ##1}%
- }%
- \let\definedummyaccent\definedummyletter
+ % Need these unexpandable (because we define \tt as a dummy)
+ % definitions when @{ or @} appear in index entry text. Also, more
+ % complicated, when \tex is in effect and \{ is a \delimiter again.
+ % We can't use \lbracecmd and \rbracecmd because texindex assumes
+ % braces and backslashes are used only as delimiters. Perhaps we
+ % should define @lbrace and @rbrace commands a la @comma.
+ \def\{{{\tt\char123}}%
+ \def\}{{\tt\char125}}%
+ %
+ % I don't entirely understand this, but when an index entry is
+ % generated from a macro call, the \endinput which \scanmacro inserts
+ % causes processing to be prematurely terminated. This is,
+ % apparently, because \indexsorttmp is fully expanded, and \endinput
+ % is an expandable command. The redefinition below makes \endinput
+ % disappear altogether for that purpose -- although logging shows that
+ % processing continues to some further point. On the other hand, it
+ % seems \endinput does not hurt in the printed index arg, since that
+ % is still getting written without apparent harm.
+ %
+ % Sample source (mac-idx3.tex, reported by Graham Percival to
+ % help-texinfo, 22may06):
+ % @macro funindex {WORD}
+ % @findex xyz
+ % @end macro
+ % ...
+ % @funindex commtest
+ %
+ % The above is not enough to reproduce the bug, but it gives the flavor.
+ %
+ % Sample whatsit resulting:
+ % .@write3{\entry{xyz}{@folio }{@code {xyz@endinput }}}
+ %
+ % So:
+ \let\endinput = \empty
%
% Do the redefinitions.
\commondummies
}
-% For the aux file, @ is the escape character. So we want to redefine
-% everything using @ instead of \realbackslash. When everything uses
-% @, this will be simpler.
+% For the aux and toc files, @ is the escape character. So we want to
+% redefine everything using @ as the escape character (instead of
+% \realbackslash, still used for index files). When everything uses @,
+% this will be simpler.
%
\def\atdummies{%
\def\@{@@}%
@@ -3094,146 +4421,184 @@ width0pt\relax} \fi
\let\{ = \lbraceatcmd
\let\} = \rbraceatcmd
%
- % (See comments in \indexdummies.)
- \def\definedummyword##1{%
- \expandafter\def\csname ##1\endcsname{@##1\space}%
- }%
- \def\definedummyletter##1{%
- \expandafter\def\csname ##1\endcsname{@##1}%
- }%
- \let\definedummyaccent\definedummyletter
- %
% Do the redefinitions.
\commondummies
+ \otherbackslash
}
-% Called from \indexdummies and \atdummies. \definedummyword and
-% \definedummyletter must be defined first.
+% Called from \indexdummies and \atdummies.
%
\def\commondummies{%
%
- \normalturnoffactive
+ % \definedummyword defines \#1 as \string\#1\space, thus effectively
+ % preventing its expansion. This is used only for control words,
+ % not control letters, because the \space would be incorrect for
+ % control characters, but is needed to separate the control word
+ % from whatever follows.
+ %
+ % For control letters, we have \definedummyletter, which omits the
+ % space.
+ %
+ % These can be used both for control words that take an argument and
+ % those that do not. If it is followed by {arg} in the input, then
+ % that will dutifully get written to the index (or wherever).
+ %
+ \def\definedummyword ##1{\def##1{\string##1\space}}%
+ \def\definedummyletter##1{\def##1{\string##1}}%
+ \let\definedummyaccent\definedummyletter
%
\commondummiesnofonts
%
- \definedummyletter{_}%
+ \definedummyletter\_%
+ \definedummyletter\-%
%
% Non-English letters.
- \definedummyword{AA}%
- \definedummyword{AE}%
- \definedummyword{L}%
- \definedummyword{OE}%
- \definedummyword{O}%
- \definedummyword{aa}%
- \definedummyword{ae}%
- \definedummyword{l}%
- \definedummyword{oe}%
- \definedummyword{o}%
- \definedummyword{ss}%
- \definedummyword{exclamdown}%
- \definedummyword{questiondown}%
- \definedummyword{ordf}%
- \definedummyword{ordm}%
+ \definedummyword\AA
+ \definedummyword\AE
+ \definedummyword\DH
+ \definedummyword\L
+ \definedummyword\O
+ \definedummyword\OE
+ \definedummyword\TH
+ \definedummyword\aa
+ \definedummyword\ae
+ \definedummyword\dh
+ \definedummyword\exclamdown
+ \definedummyword\l
+ \definedummyword\o
+ \definedummyword\oe
+ \definedummyword\ordf
+ \definedummyword\ordm
+ \definedummyword\questiondown
+ \definedummyword\ss
+ \definedummyword\th
%
% Although these internal commands shouldn't show up, sometimes they do.
- \definedummyword{bf}%
- \definedummyword{gtr}%
- \definedummyword{hat}%
- \definedummyword{less}%
- \definedummyword{sf}%
- \definedummyword{sl}%
- \definedummyword{tclose}%
- \definedummyword{tt}%
- %
- \definedummyword{LaTeX}%
- \definedummyword{TeX}%
+ \definedummyword\bf
+ \definedummyword\gtr
+ \definedummyword\hat
+ \definedummyword\less
+ \definedummyword\sf
+ \definedummyword\sl
+ \definedummyword\tclose
+ \definedummyword\tt
+ %
+ \definedummyword\LaTeX
+ \definedummyword\TeX
%
% Assorted special characters.
- \definedummyword{bullet}%
- \definedummyword{comma}%
- \definedummyword{copyright}%
- \definedummyword{registeredsymbol}%
- \definedummyword{dots}%
- \definedummyword{enddots}%
- \definedummyword{equiv}%
- \definedummyword{error}%
- \definedummyword{expansion}%
- \definedummyword{minus}%
- \definedummyword{pounds}%
- \definedummyword{point}%
- \definedummyword{print}%
- \definedummyword{result}%
+ \definedummyword\arrow
+ \definedummyword\bullet
+ \definedummyword\comma
+ \definedummyword\copyright
+ \definedummyword\registeredsymbol
+ \definedummyword\dots
+ \definedummyword\enddots
+ \definedummyword\entrybreak
+ \definedummyword\equiv
+ \definedummyword\error
+ \definedummyword\euro
+ \definedummyword\expansion
+ \definedummyword\geq
+ \definedummyword\guillemetleft
+ \definedummyword\guillemetright
+ \definedummyword\guilsinglleft
+ \definedummyword\guilsinglright
+ \definedummyword\lbracechar
+ \definedummyword\leq
+ \definedummyword\minus
+ \definedummyword\ogonek
+ \definedummyword\pounds
+ \definedummyword\point
+ \definedummyword\print
+ \definedummyword\quotedblbase
+ \definedummyword\quotedblleft
+ \definedummyword\quotedblright
+ \definedummyword\quoteleft
+ \definedummyword\quoteright
+ \definedummyword\quotesinglbase
+ \definedummyword\rbracechar
+ \definedummyword\result
+ \definedummyword\textdegree
+ %
+ % We want to disable all macros so that they are not expanded by \write.
+ \macrolist
+ %
+ \normalturnoffactive
%
% Handle some cases of @value -- where it does not contain any
% (non-fully-expandable) commands.
\makevalueexpandable
- %
- % Normal spaces, not active ones.
- \unsepspaces
- %
- % No macro expansion.
- \turnoffmacros
}
% \commondummiesnofonts: common to \commondummies and \indexnofonts.
%
-% Better have this without active chars.
-{
- \catcode`\~=\other
- \gdef\commondummiesnofonts{%
- % Control letters and accents.
- \definedummyletter{!}%
- \definedummyaccent{"}%
- \definedummyaccent{'}%
- \definedummyletter{*}%
- \definedummyaccent{,}%
- \definedummyletter{.}%
- \definedummyletter{/}%
- \definedummyletter{:}%
- \definedummyaccent{=}%
- \definedummyletter{?}%
- \definedummyaccent{^}%
- \definedummyaccent{`}%
- \definedummyaccent{~}%
- \definedummyword{u}%
- \definedummyword{v}%
- \definedummyword{H}%
- \definedummyword{dotaccent}%
- \definedummyword{ringaccent}%
- \definedummyword{tieaccent}%
- \definedummyword{ubaraccent}%
- \definedummyword{udotaccent}%
- \definedummyword{dotless}%
- %
- % Texinfo font commands.
- \definedummyword{b}%
- \definedummyword{i}%
- \definedummyword{r}%
- \definedummyword{sc}%
- \definedummyword{t}%
- %
- % Commands that take arguments.
- \definedummyword{acronym}%
- \definedummyword{cite}%
- \definedummyword{code}%
- \definedummyword{command}%
- \definedummyword{dfn}%
- \definedummyword{emph}%
- \definedummyword{env}%
- \definedummyword{file}%
- \definedummyword{kbd}%
- \definedummyword{key}%
- \definedummyword{math}%
- \definedummyword{option}%
- \definedummyword{samp}%
- \definedummyword{strong}%
- \definedummyword{tie}%
- \definedummyword{uref}%
- \definedummyword{url}%
- \definedummyword{var}%
- \definedummyword{verb}%
- \definedummyword{w}%
- }
+\def\commondummiesnofonts{%
+ % Control letters and accents.
+ \definedummyletter\!%
+ \definedummyaccent\"%
+ \definedummyaccent\'%
+ \definedummyletter\*%
+ \definedummyaccent\,%
+ \definedummyletter\.%
+ \definedummyletter\/%
+ \definedummyletter\:%
+ \definedummyaccent\=%
+ \definedummyletter\?%
+ \definedummyaccent\^%
+ \definedummyaccent\`%
+ \definedummyaccent\~%
+ \definedummyword\u
+ \definedummyword\v
+ \definedummyword\H
+ \definedummyword\dotaccent
+ \definedummyword\ogonek
+ \definedummyword\ringaccent
+ \definedummyword\tieaccent
+ \definedummyword\ubaraccent
+ \definedummyword\udotaccent
+ \definedummyword\dotless
+ %
+ % Texinfo font commands.
+ \definedummyword\b
+ \definedummyword\i
+ \definedummyword\r
+ \definedummyword\sansserif
+ \definedummyword\sc
+ \definedummyword\slanted
+ \definedummyword\t
+ %
+ % Commands that take arguments.
+ \definedummyword\abbr
+ \definedummyword\acronym
+ \definedummyword\anchor
+ \definedummyword\cite
+ \definedummyword\code
+ \definedummyword\command
+ \definedummyword\dfn
+ \definedummyword\dmn
+ \definedummyword\email
+ \definedummyword\emph
+ \definedummyword\env
+ \definedummyword\file
+ \definedummyword\image
+ \definedummyword\indicateurl
+ \definedummyword\inforef
+ \definedummyword\kbd
+ \definedummyword\key
+ \definedummyword\math
+ \definedummyword\option
+ \definedummyword\pxref
+ \definedummyword\ref
+ \definedummyword\samp
+ \definedummyword\strong
+ \definedummyword\tie
+ \definedummyword\uref
+ \definedummyword\url
+ \definedummyword\var
+ \definedummyword\verb
+ \definedummyword\w
+ \definedummyword\xref
}
% \indexnofonts is used when outputting the strings to sort the index
@@ -3243,14 +4608,10 @@ width0pt\relax} \fi
%
\def\indexnofonts{%
% Accent commands should become @asis.
- \def\definedummyaccent##1{%
- \expandafter\let\csname ##1\endcsname\asis
- }%
+ \def\definedummyaccent##1{\let##1\asis}%
% We can just ignore other control letters.
- \def\definedummyletter##1{%
- \expandafter\def\csname ##1\endcsname{}%
- }%
- % Hopefully, all control words can become @asis.
+ \def\definedummyletter##1{\let##1\empty}%
+ % All control words become @asis by default; overrides below.
\let\definedummyword\definedummyaccent
%
\commondummiesnofonts
@@ -3262,50 +4623,95 @@ width0pt\relax} \fi
%
\def\ { }%
\def\@{@}%
- % how to handle braces?
\def\_{\normalunderscore}%
+ \def\-{}% @- shouldn't affect sorting
+ %
+ % Unfortunately, texindex is not prepared to handle braces in the
+ % content at all. So for index sorting, we map @{ and @} to strings
+ % starting with |, since that ASCII character is between ASCII { and }.
+ \def\{{|a}%
+ \def\lbracechar{|a}%
+ %
+ \def\}{|b}%
+ \def\rbracechar{|b}%
%
% Non-English letters.
\def\AA{AA}%
\def\AE{AE}%
+ \def\DH{DZZ}%
\def\L{L}%
\def\OE{OE}%
\def\O{O}%
+ \def\TH{ZZZ}%
\def\aa{aa}%
\def\ae{ae}%
+ \def\dh{dzz}%
+ \def\exclamdown{!}%
\def\l{l}%
\def\oe{oe}%
- \def\o{o}%
- \def\ss{ss}%
- \def\exclamdown{!}%
- \def\questiondown{?}%
\def\ordf{a}%
\def\ordm{o}%
+ \def\o{o}%
+ \def\questiondown{?}%
+ \def\ss{ss}%
+ \def\th{zzz}%
%
\def\LaTeX{LaTeX}%
\def\TeX{TeX}%
%
% Assorted special characters.
% (The following {} will end up in the sort string, but that's ok.)
+ \def\arrow{->}%
\def\bullet{bullet}%
\def\comma{,}%
\def\copyright{copyright}%
- \def\registeredsymbol{R}%
\def\dots{...}%
\def\enddots{...}%
\def\equiv{==}%
\def\error{error}%
+ \def\euro{euro}%
\def\expansion{==>}%
+ \def\geq{>=}%
+ \def\guillemetleft{<<}%
+ \def\guillemetright{>>}%
+ \def\guilsinglleft{<}%
+ \def\guilsinglright{>}%
+ \def\leq{<=}%
\def\minus{-}%
- \def\pounds{pounds}%
\def\point{.}%
+ \def\pounds{pounds}%
\def\print{-|}%
+ \def\quotedblbase{"}%
+ \def\quotedblleft{"}%
+ \def\quotedblright{"}%
+ \def\quoteleft{`}%
+ \def\quoteright{'}%
+ \def\quotesinglbase{,}%
+ \def\registeredsymbol{R}%
\def\result{=>}%
+ \def\textdegree{o}%
%
- % Don't write macro names.
- \emptyusermacros
+ \expandafter\ifx\csname SETtxiindexlquoteignore\endcsname\relax
+ \else \indexlquoteignore \fi
+ %
+ % We need to get rid of all macros, leaving only the arguments (if present).
+ % Of course this is not nearly correct, but it is the best we can do for now.
+ % makeinfo does not expand macros in the argument to @deffn, which ends up
+ % writing an index entry, and texindex isn't prepared for an index sort entry
+ % that starts with \.
+ %
+ % Since macro invocations are followed by braces, we can just redefine them
+ % to take a single TeX argument. The case of a macro invocation that
+ % goes to end-of-line is not handled.
+ %
+ \macrolist
}
+% Undocumented (for FSFS 2nd ed.): @set txiindexlquoteignore makes us
+% ignore left quotes in the sort term.
+{\catcode`\`=\active
+ \gdef\indexlquoteignore{\let`=\empty}}
+
\let\indexbackslash=0 %overridden during \printindex.
\let\SETmarginindex=\relax % put index entries in margin (undocumented)?
@@ -3331,11 +4737,7 @@ width0pt\relax} \fi
%
\edef\writeto{\csname#1indfile\endcsname}%
%
- \ifvmode
- \dosubindsanitize
- \else
- \dosubindwrite
- \fi
+ \safewhatsit\dosubindwrite
}%
\fi
}
@@ -3350,7 +4752,6 @@ width0pt\relax} \fi
%
% Remember, we are within a group.
\indexdummies % Must do this here, since \bf, etc expand at this stage
- \escapechar=`\\
\def\backslashcurfont{\indexbackslash}% \indexbackslash isn't defined now
% so it will be output as is; and it will print as backslash.
%
@@ -3373,13 +4774,13 @@ width0pt\relax} \fi
\temp
}
-% Take care of unwanted page breaks:
+% Take care of unwanted page breaks/skips around a whatsit:
%
% If a skip is the last thing on the list now, preserve it
% by backing up by \lastskip, doing the \write, then inserting
% the skip again. Otherwise, the whatsit generated by the
-% \write will make \lastskip zero. The result is that sequences
-% like this:
+% \write or \pdfdest will make \lastskip zero. The result is that
+% sequences like this:
% @end defun
% @tindex whatever
% @defun ...
@@ -3403,25 +4804,30 @@ width0pt\relax} \fi
%
\edef\zeroskipmacro{\expandafter\the\csname z@skip\endcsname}
%
+\newskip\whatsitskip
+\newcount\whatsitpenalty
+%
% ..., ready, GO:
%
-\def\dosubindsanitize{%
+\def\safewhatsit#1{\ifhmode
+ #1%
+ \else
% \lastskip and \lastpenalty cannot both be nonzero simultaneously.
- \skip0 = \lastskip
+ \whatsitskip = \lastskip
\edef\lastskipmacro{\the\lastskip}%
- \count255 = \lastpenalty
+ \whatsitpenalty = \lastpenalty
%
% If \lastskip is nonzero, that means the last item was a
% skip. And since a skip is discardable, that means this
- % -\skip0 glue we're inserting is preceded by a
+ % -\whatsitskip glue we're inserting is preceded by a
% non-discardable item, therefore it is not a potential
% breakpoint, therefore no \nobreak needed.
\ifx\lastskipmacro\zeroskipmacro
\else
- \vskip-\skip0
+ \vskip-\whatsitskip
\fi
%
- \dosubindwrite
+ #1%
%
\ifx\lastskipmacro\zeroskipmacro
% If \lastskip was zero, perhaps the last item was a penalty, and
@@ -3429,20 +4835,19 @@ width0pt\relax} \fi
% to re-insert the same penalty (values >10000 are used for various
% signals); since we just inserted a non-discardable item, any
% following glue (such as a \parskip) would be a breakpoint. For example:
- %
% @deffn deffn-whatever
% @vindex index-whatever
% Description.
% would allow a break between the index-whatever whatsit
% and the "Description." paragraph.
- \ifnum\count255>9999 \penalty\count255 \fi
+ \ifnum\whatsitpenalty>9999 \penalty\whatsitpenalty \fi
\else
% On the other hand, if we had a nonzero \lastskip,
% this make-up glue would be preceded by a non-discardable item
% (the whatsit from the \write), so we must insert a \nobreak.
- \nobreak\vskip\skip0
+ \nobreak\vskip\whatsitskip
\fi
-}
+\fi}
% The index entry written in the file actually looks like
% \entry {sortstring}{page}{topic}
@@ -3484,6 +4889,7 @@ width0pt\relax} \fi
%
\smallfonts \rm
\tolerance = 9500
+ \plainfrenchspacing
\everypar = {}% don't want the \kern\-parindent from indentation suppression.
%
% See if the index file exists and is nonempty.
@@ -3557,10 +4963,9 @@ width0pt\relax} \fi
%
% A straightforward implementation would start like this:
% \def\entry#1#2{...
-% But this frozes the catcodes in the argument, and can cause problems to
+% But this freezes the catcodes in the argument, and can cause problems to
% @code, which sets - active. This problem was fixed by a kludge---
% ``-'' was active throughout whole index, but this isn't really right.
-%
% The right solution is to prevent \entry from swallowing the whole text.
% --kasal, 21nov03
\def\entry{%
@@ -3597,10 +5002,17 @@ width0pt\relax} \fi
% columns.
\vskip 0pt plus1pt
%
+ % When reading the text of entry, convert explicit line breaks
+ % from @* into spaces. The user might give these in long section
+ % titles, for instance.
+ \def\*{\unskip\space\ignorespaces}%
+ \def\entrybreak{\hfil\break}%
+ %
% Swallow the left brace of the text (first parameter):
\afterassignment\doentry
\let\temp =
}
+\def\entrybreak{\unskip\space\ignorespaces}%
\def\doentry{%
\bgroup % Instead of the swallowed brace.
\noindent
@@ -3613,11 +5025,8 @@ width0pt\relax} \fi
% The following is kludged to not output a line of dots in the index if
% there are no page numbers. The next person who breaks this will be
% cursed by a Unix daemon.
- \def\tempa{{\rm }}%
- \def\tempb{#1}%
- \edef\tempc{\tempa}%
- \edef\tempd{\tempb}%
- \ifx\tempc\tempd
+ \setbox\boxA = \hbox{#1}%
+ \ifdim\wd\boxA = 0pt
\ %
\else
%
@@ -3641,9 +5050,9 @@ width0pt\relax} \fi
\endgroup
}
-% Like \dotfill except takes at least 1 em.
+% Like plain.tex's \dotfill, except uses up at least 1 em.
\def\indexdotfill{\cleaders
- \hbox{$\mathsurround=0pt \mkern1.5mu ${\it .}$ \mkern1.5mu$}\hskip 1em plus 1fill}
+ \hbox{$\mathsurround=0pt \mkern1.5mu.\mkern1.5mu$}\hskip 1em plus 1fill}
\def\primary #1{\line{#1\hfil}}
@@ -3753,6 +5162,34 @@ width0pt\relax} \fi
%
% All done with double columns.
\def\enddoublecolumns{%
+ % The following penalty ensures that the page builder is exercised
+ % _before_ we change the output routine. This is necessary in the
+ % following situation:
+ %
+ % The last section of the index consists only of a single entry.
+ % Before this section, \pagetotal is less than \pagegoal, so no
+ % break occurs before the last section starts. However, the last
+ % section, consisting of \initial and the single \entry, does not
+ % fit on the page and has to be broken off. Without the following
+ % penalty the page builder will not be exercised until \eject
+ % below, and by that time we'll already have changed the output
+ % routine to the \balancecolumns version, so the next-to-last
+ % double-column page will be processed with \balancecolumns, which
+ % is wrong: The two columns will go to the main vertical list, with
+ % the broken-off section in the recent contributions. As soon as
+ % the output routine finishes, TeX starts reconsidering the page
+ % break. The two columns and the broken-off section both fit on the
+ % page, because the two columns now take up only half of the page
+ % goal. When TeX sees \eject from below which follows the final
+ % section, it invokes the new output routine that we've set after
+ % \balancecolumns below; \onepageout will try to fit the two columns
+ % and the final section into the vbox of \pageheight (see
+ % \pagebody), causing an overfull box.
+ %
+ % Note that glue won't work here, because glue does not exercise the
+ % page builder, unlike penalties (see The TeXbook, pp. 280-281).
+ \penalty0
+ %
\output = {%
% Split the last of the double-column material. Leave it on the
% current page, no automatic page break.
@@ -3808,7 +5245,22 @@ width0pt\relax} \fi
\message{sectioning,}
% Chapters, sections, etc.
-% \unnumberedno is an oxymoron, of course. But we count the unnumbered
+% Let's start with @part.
+\outer\parseargdef\part{\partzzz{#1}}
+\def\partzzz#1{%
+ \chapoddpage
+ \null
+ \vskip.3\vsize % move it down on the page a bit
+ \begingroup
+ \noindent \titlefonts\rmisbold #1\par % the text
+ \let\lastnode=\empty % no node to associate with
+ \writetocentry{part}{#1}{}% but put it in the toc
+ \headingsoff % no headline or footline on the part page
+ \chapoddpage
+ \endgroup
+}
+
+% \unnumberedno is an oxymoron. But we count the unnumbered
% sections so that we can refer to them unambiguously in the pdf
% outlines by their "section number". We avoid collisions with chapter
% numbers by starting them at 10000. (If a document ever has 10000
@@ -3862,11 +5314,15 @@ width0pt\relax} \fi
\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi}
-% Each @chapter defines this as the name of the chapter.
-% page headings and footings can use it. @section does likewise.
-% However, they are not reliable, because we don't use marks.
+% Each @chapter defines these (using marks) as the number+name, number
+% and name of the chapter. Page headings and footings can use
+% these. @section does likewise.
\def\thischapter{}
+\def\thischapternum{}
+\def\thischaptername{}
\def\thissection{}
+\def\thissectionnum{}
+\def\thissectionname{}
\newcount\absseclevel % used to calculate proper heading level
\newcount\secbase\secbase=0 % @raisesections/@lowersections modify this count
@@ -3883,8 +5339,8 @@ width0pt\relax} \fi
\chardef\maxseclevel = 3
%
% A numbered section within an unnumbered changes to unnumbered too.
-% To achive this, remember the "biggest" unnum. sec. we are currently in:
-\chardef\unmlevel = \maxseclevel
+% To achieve this, remember the "biggest" unnum. sec. we are currently in:
+\chardef\unnlevel = \maxseclevel
%
% Trace whether the current chapter is an appendix or not:
% \chapheadtype is "N" or "A", unnumbered chapters are ignored.
@@ -3909,8 +5365,8 @@ width0pt\relax} \fi
% The heading type:
\def\headtype{#1}%
\if \headtype U%
- \ifnum \absseclevel < \unmlevel
- \chardef\unmlevel = \absseclevel
+ \ifnum \absseclevel < \unnlevel
+ \chardef\unnlevel = \absseclevel
\fi
\else
% Check for appendix sections:
@@ -3922,10 +5378,10 @@ width0pt\relax} \fi
\fi\fi
\fi
% Check for numbered within unnumbered:
- \ifnum \absseclevel > \unmlevel
+ \ifnum \absseclevel > \unnlevel
\def\headtype{U}%
\else
- \chardef\unmlevel = 3
+ \chardef\unnlevel = 3
\fi
\fi
% Now print the heading:
@@ -3979,7 +5435,9 @@ width0pt\relax} \fi
\gdef\chaplevelprefix{\the\chapno.}%
\resetallfloatnos
%
- \message{\putwordChapter\space \the\chapno}%
+ % \putwordChapter can contain complex things in translations.
+ \toks0=\expandafter{\putwordChapter}%
+ \message{\the\toks0 \space \the\chapno}%
%
% Write the actual heading.
\chapmacro{#1}{Ynumbered}{\the\chapno}%
@@ -3990,15 +5448,17 @@ width0pt\relax} \fi
\global\let\subsubsection = \numberedsubsubsec
}
-\outer\parseargdef\appendix{\apphead0{#1}} % normally apphead0 calls appendixzzz
+\outer\parseargdef\appendix{\apphead0{#1}} % normally calls appendixzzz
+%
\def\appendixzzz#1{%
\global\secno=0 \global\subsecno=0 \global\subsubsecno=0
\global\advance\appendixno by 1
\gdef\chaplevelprefix{\appendixletter.}%
\resetallfloatnos
%
- \def\appendixnum{\putwordAppendix\space \appendixletter}%
- \message{\appendixnum}%
+ % \putwordAppendix can contain complex things in translations.
+ \toks0=\expandafter{\putwordAppendix}%
+ \message{\the\toks0 \space \appendixletter}%
%
\chapmacro{#1}{Yappendix}{\appendixletter}%
%
@@ -4007,7 +5467,8 @@ width0pt\relax} \fi
\global\let\subsubsection = \appendixsubsubsec
}
-\outer\parseargdef\unnumbered{\unnmhead0{#1}} % normally unnmhead0 calls unnumberedzzz
+% normally unnmhead0 calls unnumberedzzz:
+\outer\parseargdef\unnumbered{\unnmhead0{#1}}
\def\unnumberedzzz#1{%
\global\secno=0 \global\subsecno=0 \global\subsubsecno=0
\global\advance\unnumberedno by 1
@@ -4051,40 +5512,47 @@ width0pt\relax} \fi
\let\top\unnumbered
% Sections.
+%
\outer\parseargdef\numberedsec{\numhead1{#1}} % normally calls seczzz
\def\seczzz#1{%
\global\subsecno=0 \global\subsubsecno=0 \global\advance\secno by 1
\sectionheading{#1}{sec}{Ynumbered}{\the\chapno.\the\secno}%
}
-\outer\parseargdef\appendixsection{\apphead1{#1}} % normally calls appendixsectionzzz
+% normally calls appendixsectionzzz:
+\outer\parseargdef\appendixsection{\apphead1{#1}}
\def\appendixsectionzzz#1{%
\global\subsecno=0 \global\subsubsecno=0 \global\advance\secno by 1
\sectionheading{#1}{sec}{Yappendix}{\appendixletter.\the\secno}%
}
\let\appendixsec\appendixsection
-\outer\parseargdef\unnumberedsec{\unnmhead1{#1}} % normally calls unnumberedseczzz
+% normally calls unnumberedseczzz:
+\outer\parseargdef\unnumberedsec{\unnmhead1{#1}}
\def\unnumberedseczzz#1{%
\global\subsecno=0 \global\subsubsecno=0 \global\advance\secno by 1
\sectionheading{#1}{sec}{Ynothing}{\the\unnumberedno.\the\secno}%
}
% Subsections.
-\outer\parseargdef\numberedsubsec{\numhead2{#1}} % normally calls numberedsubseczzz
+%
+% normally calls numberedsubseczzz:
+\outer\parseargdef\numberedsubsec{\numhead2{#1}}
\def\numberedsubseczzz#1{%
\global\subsubsecno=0 \global\advance\subsecno by 1
\sectionheading{#1}{subsec}{Ynumbered}{\the\chapno.\the\secno.\the\subsecno}%
}
-\outer\parseargdef\appendixsubsec{\apphead2{#1}} % normally calls appendixsubseczzz
+% normally calls appendixsubseczzz:
+\outer\parseargdef\appendixsubsec{\apphead2{#1}}
\def\appendixsubseczzz#1{%
\global\subsubsecno=0 \global\advance\subsecno by 1
\sectionheading{#1}{subsec}{Yappendix}%
{\appendixletter.\the\secno.\the\subsecno}%
}
-\outer\parseargdef\unnumberedsubsec{\unnmhead2{#1}} %normally calls unnumberedsubseczzz
+% normally calls unnumberedsubseczzz:
+\outer\parseargdef\unnumberedsubsec{\unnmhead2{#1}}
\def\unnumberedsubseczzz#1{%
\global\subsubsecno=0 \global\advance\subsecno by 1
\sectionheading{#1}{subsec}{Ynothing}%
@@ -4092,21 +5560,25 @@ width0pt\relax} \fi
}
% Subsubsections.
-\outer\parseargdef\numberedsubsubsec{\numhead3{#1}} % normally numberedsubsubseczzz
+%
+% normally numberedsubsubseczzz:
+\outer\parseargdef\numberedsubsubsec{\numhead3{#1}}
\def\numberedsubsubseczzz#1{%
\global\advance\subsubsecno by 1
\sectionheading{#1}{subsubsec}{Ynumbered}%
{\the\chapno.\the\secno.\the\subsecno.\the\subsubsecno}%
}
-\outer\parseargdef\appendixsubsubsec{\apphead3{#1}} % normally appendixsubsubseczzz
+% normally appendixsubsubseczzz:
+\outer\parseargdef\appendixsubsubsec{\apphead3{#1}}
\def\appendixsubsubseczzz#1{%
\global\advance\subsubsecno by 1
\sectionheading{#1}{subsubsec}{Yappendix}%
{\appendixletter.\the\secno.\the\subsecno.\the\subsubsecno}%
}
-\outer\parseargdef\unnumberedsubsubsec{\unnmhead3{#1}} %normally unnumberedsubsubseczzz
+% normally unnumberedsubsubseczzz:
+\outer\parseargdef\unnumberedsubsubsec{\unnmhead3{#1}}
\def\unnumberedsubsubseczzz#1{%
\global\advance\subsubsecno by 1
\sectionheading{#1}{subsubsec}{Ynothing}%
@@ -4122,15 +5594,6 @@ width0pt\relax} \fi
% Define @majorheading, @heading and @subheading
-% NOTE on use of \vbox for chapter headings, section headings, and such:
-% 1) We use \vbox rather than the earlier \line to permit
-% overlong headings to fold.
-% 2) \hyphenpenalty is set to 10000 because hyphenation in a
-% heading is obnoxious; this forbids it.
-% 3) Likewise, headings look best if no \parindent is used, and
-% if justification is not attempted. Hence \raggedright.
-
-
\def\majorheading{%
{\advance\chapheadingskip by 10pt \chapbreak }%
\parsearg\chapheadingzzz
@@ -4138,10 +5601,8 @@ width0pt\relax} \fi
\def\chapheading{\chapbreak \parsearg\chapheadingzzz}
\def\chapheadingzzz#1{%
- {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
- \parindent=0pt\raggedright
- \rm #1\hfill}}%
- \bigskip \par\penalty 200\relax
+ \vbox{\chapfonts \raggedtitlesettings #1\par}%
+ \nobreak\bigskip \nobreak
\suppressfirstparagraphindent
}
@@ -4157,17 +5618,28 @@ width0pt\relax} \fi
% (including whitespace, linebreaking, etc. around it),
% given all the information in convenient, parsed form.
-%%% Args are the skip and penalty (usually negative)
+% Args are the skip and penalty (usually negative)
\def\dobreak#1#2{\par\ifdim\lastskip<#1\removelastskip\penalty#2\vskip#1\fi}
-%%% Define plain chapter starts, and page on/off switching for it
% Parameter controlling skip before chapter headings (if needed)
-
\newskip\chapheadingskip
+% Define plain chapter starts, and page on/off switching for it.
\def\chapbreak{\dobreak \chapheadingskip {-4000}}
\def\chappager{\par\vfill\supereject}
-\def\chapoddpage{\chappager \ifodd\pageno \else \hbox to 0pt{} \chappager\fi}
+% Because \domark is called before \chapoddpage, the filler page will
+% get the headings for the next chapter, which is wrong. But we don't
+% care -- we just disable all headings on the filler page.
+\def\chapoddpage{%
+ \chappager
+ \ifodd\pageno \else
+ \begingroup
+ \headingsoff
+ \null
+ \chappager
+ \endgroup
+ \fi
+}
\def\setchapternewpage #1 {\csname CHAPPAG#1\endcsname}
@@ -4201,41 +5673,78 @@ width0pt\relax} \fi
\def\Yappendixkeyword{Yappendix}
%
\def\chapmacro#1#2#3{%
+ % Insert the first mark before the heading break (see notes for \domark).
+ \let\prevchapterdefs=\lastchapterdefs
+ \let\prevsectiondefs=\lastsectiondefs
+ \gdef\lastsectiondefs{\gdef\thissectionname{}\gdef\thissectionnum{}%
+ \gdef\thissection{}}%
+ %
+ \def\temptype{#2}%
+ \ifx\temptype\Ynothingkeyword
+ \gdef\lastchapterdefs{\gdef\thischaptername{#1}\gdef\thischapternum{}%
+ \gdef\thischapter{\thischaptername}}%
+ \else\ifx\temptype\Yomitfromtockeyword
+ \gdef\lastchapterdefs{\gdef\thischaptername{#1}\gdef\thischapternum{}%
+ \gdef\thischapter{}}%
+ \else\ifx\temptype\Yappendixkeyword
+ \toks0={#1}%
+ \xdef\lastchapterdefs{%
+ \gdef\noexpand\thischaptername{\the\toks0}%
+ \gdef\noexpand\thischapternum{\appendixletter}%
+ % \noexpand\putwordAppendix avoids expanding indigestible
+ % commands in some of the translations.
+ \gdef\noexpand\thischapter{\noexpand\putwordAppendix{}
+ \noexpand\thischapternum:
+ \noexpand\thischaptername}%
+ }%
+ \else
+ \toks0={#1}%
+ \xdef\lastchapterdefs{%
+ \gdef\noexpand\thischaptername{\the\toks0}%
+ \gdef\noexpand\thischapternum{\the\chapno}%
+ % \noexpand\putwordChapter avoids expanding indigestible
+ % commands in some of the translations.
+ \gdef\noexpand\thischapter{\noexpand\putwordChapter{}
+ \noexpand\thischapternum:
+ \noexpand\thischaptername}%
+ }%
+ \fi\fi\fi
+ %
+ % Output the mark. Pass it through \safewhatsit, to take care of
+ % the preceding space.
+ \safewhatsit\domark
+ %
+ % Insert the chapter heading break.
\pchapsepmacro
+ %
+ % Now the second mark, after the heading break. No break points
+ % between here and the heading.
+ \let\prevchapterdefs=\lastchapterdefs
+ \let\prevsectiondefs=\lastsectiondefs
+ \domark
+ %
{%
- \chapfonts \rm
+ \chapfonts \rmisbold
%
- % Have to define \thissection before calling \donoderef, because the
+ % Have to define \lastsection before calling \donoderef, because the
% xref code eventually uses it. On the other hand, it has to be called
% after \pchapsepmacro, or the headline will change too soon.
- \gdef\thissection{#1}%
- \gdef\thischaptername{#1}%
+ \gdef\lastsection{#1}%
%
% Only insert the separating space if we have a chapter/appendix
% number, and don't print the unnumbered ``number''.
- \def\temptype{#2}%
\ifx\temptype\Ynothingkeyword
\setbox0 = \hbox{}%
\def\toctype{unnchap}%
- \def\thischapter{#1}%
\else\ifx\temptype\Yomitfromtockeyword
\setbox0 = \hbox{}% contents like unnumbered, but no toc entry
\def\toctype{omit}%
- \xdef\thischapter{}%
\else\ifx\temptype\Yappendixkeyword
\setbox0 = \hbox{\putwordAppendix{} #3\enspace}%
\def\toctype{app}%
- % We don't substitute the actual chapter name into \thischapter
- % because we don't want its macros evaluated now. And we don't
- % use \thissection because that changes with each section.
- %
- \xdef\thischapter{\putwordAppendix{} \appendixletter:
- \noexpand\thischaptername}%
\else
\setbox0 = \hbox{#3\enspace}%
\def\toctype{numchap}%
- \xdef\thischapter{\putwordChapter{} \the\chapno:
- \noexpand\thischaptername}%
\fi\fi\fi
%
% Write the toc entry for this chapter. Must come before the
@@ -4251,8 +5760,8 @@ width0pt\relax} \fi
\donoderef{#2}%
%
% Typeset the actual heading.
- \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \raggedright
- \hangindent=\wd0 \centerparametersmaybe
+ \nobreak % Avoid page breaks at the interline glue.
+ \vbox{\raggedtitlesettings \hangindent=\wd0 \centerparametersmaybe
\unhbox0 #1\par}%
}%
\nobreak\bigskip % no page break after a chapter title
@@ -4274,18 +5783,18 @@ width0pt\relax} \fi
\def\setchapterstyle #1 {\csname CHAPF#1\endcsname}
%
\def\unnchfopen #1{%
-\chapoddpage {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
- \parindent=0pt\raggedright
- \rm #1\hfill}}\bigskip \par\nobreak
+ \chapoddpage
+ \vbox{\chapfonts \raggedtitlesettings #1\par}%
+ \nobreak\bigskip\nobreak
}
\def\chfopen #1#2{\chapoddpage {\chapfonts
\vbox to 3in{\vfil \hbox to\hsize{\hfil #2} \hbox to\hsize{\hfil #1} \vfil}}%
\par\penalty 5000 %
}
\def\centerchfopen #1{%
-\chapoddpage {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
- \parindent=0pt
- \hfill {\rm #1}\hfill}}\bigskip \par\nobreak
+ \chapoddpage
+ \vbox{\chapfonts \raggedtitlesettings \hfill #1\hfill}%
+ \nobreak\bigskip \nobreak
}
\def\CHAPFopen{%
\global\let\chapmacro=\chfopen
@@ -4313,47 +5822,110 @@ width0pt\relax} \fi
% the section type for xrefs (Ynumbered, Ynothing, Yappendix), #4 is the
% section number.
%
+\def\seckeyword{sec}
+%
\def\sectionheading#1#2#3#4{%
{%
+ \checkenv{}% should not be in an environment.
+ %
% Switch to the right set of fonts.
- \csname #2fonts\endcsname \rm
+ \csname #2fonts\endcsname \rmisbold
+ %
+ \def\sectionlevel{#2}%
+ \def\temptype{#3}%
+ %
+ % Insert first mark before the heading break (see notes for \domark).
+ \let\prevsectiondefs=\lastsectiondefs
+ \ifx\temptype\Ynothingkeyword
+ \ifx\sectionlevel\seckeyword
+ \gdef\lastsectiondefs{\gdef\thissectionname{#1}\gdef\thissectionnum{}%
+ \gdef\thissection{\thissectionname}}%
+ \fi
+ \else\ifx\temptype\Yomitfromtockeyword
+ % Don't redefine \thissection.
+ \else\ifx\temptype\Yappendixkeyword
+ \ifx\sectionlevel\seckeyword
+ \toks0={#1}%
+ \xdef\lastsectiondefs{%
+ \gdef\noexpand\thissectionname{\the\toks0}%
+ \gdef\noexpand\thissectionnum{#4}%
+ % \noexpand\putwordSection avoids expanding indigestible
+ % commands in some of the translations.
+ \gdef\noexpand\thissection{\noexpand\putwordSection{}
+ \noexpand\thissectionnum:
+ \noexpand\thissectionname}%
+ }%
+ \fi
+ \else
+ \ifx\sectionlevel\seckeyword
+ \toks0={#1}%
+ \xdef\lastsectiondefs{%
+ \gdef\noexpand\thissectionname{\the\toks0}%
+ \gdef\noexpand\thissectionnum{#4}%
+ % \noexpand\putwordSection avoids expanding indigestible
+ % commands in some of the translations.
+ \gdef\noexpand\thissection{\noexpand\putwordSection{}
+ \noexpand\thissectionnum:
+ \noexpand\thissectionname}%
+ }%
+ \fi
+ \fi\fi\fi
+ %
+ % Go into vertical mode. Usually we'll already be there, but we
+ % don't want the following whatsit to end up in a preceding paragraph
+ % if the document didn't happen to have a blank line.
+ \par
+ %
+ % Output the mark. Pass it through \safewhatsit, to take care of
+ % the preceding space.
+ \safewhatsit\domark
%
% Insert space above the heading.
\csname #2headingbreak\endcsname
%
- % Only insert the space after the number if we have a section number.
- \def\sectionlevel{#2}%
- \def\temptype{#3}%
+ % Now the second mark, after the heading break. No break points
+ % between here and the heading.
+ \let\prevsectiondefs=\lastsectiondefs
+ \domark
%
+ % Only insert the space after the number if we have a section number.
\ifx\temptype\Ynothingkeyword
\setbox0 = \hbox{}%
\def\toctype{unn}%
- \gdef\thissection{#1}%
+ \gdef\lastsection{#1}%
\else\ifx\temptype\Yomitfromtockeyword
% for @headings -- no section number, don't include in toc,
- % and don't redefine \thissection.
+ % and don't redefine \lastsection.
\setbox0 = \hbox{}%
\def\toctype{omit}%
\let\sectionlevel=\empty
\else\ifx\temptype\Yappendixkeyword
\setbox0 = \hbox{#4\enspace}%
\def\toctype{app}%
- \gdef\thissection{#1}%
+ \gdef\lastsection{#1}%
\else
\setbox0 = \hbox{#4\enspace}%
\def\toctype{num}%
- \gdef\thissection{#1}%
+ \gdef\lastsection{#1}%
\fi\fi\fi
%
- % Write the toc entry (before \donoderef). See comments in \chfplain.
+ % Write the toc entry (before \donoderef). See comments in \chapmacro.
\writetocentry{\toctype\sectionlevel}{#1}{#4}%
%
% Write the node reference (= pdf destination for pdftex).
- % Again, see comments in \chfplain.
+ % Again, see comments in \chapmacro.
\donoderef{#3}%
%
+ % Interline glue will be inserted when the vbox is completed.
+ % That glue will be a valid breakpoint for the page, since it'll be
+ % preceded by a whatsit (usually from the \donoderef, or from the
+ % \writetocentry if there was no node). We don't want to allow that
+ % break, since then the whatsits could end up on page n while the
+ % section is on page n+1, thus toc/etc. are wrong. Debian bug 276000.
+ \nobreak
+ %
% Output the actual section heading.
- \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \raggedright
+ \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \ptexraggedright
\hangindent=\wd0 % zero if no section number
\unhbox0 #1}%
}%
@@ -4367,15 +5939,15 @@ width0pt\relax} \fi
%
% We'll almost certainly start a paragraph next, so don't let that
% glue accumulate. (Not a breakpoint because it's preceded by a
- % discardable item.)
+ % discardable item.) However, when a paragraph is not started next
+ % (\startdefun, \cartouche, \center, etc.), this needs to be wiped out
+ % or the negative glue will cause weirdly wrong output, typically
+ % obscuring the section heading with something else.
\vskip-\parskip
- %
- % This is purely so the last item on the list is a known \penalty >
- % 10000. This is so \startdefun can avoid allowing breakpoints after
- % section headings. Otherwise, it would insert a valid breakpoint between:
- %
- % @section sec-whatever
- % @deffn def-whatever
+ %
+ % This is so the last item on the main vertical list is a known
+ % \penalty > 10000, so \startdefun, etc., can recognize the situation
+ % and do the needful.
\penalty 10001
}
@@ -4410,11 +5982,11 @@ width0pt\relax} \fi
\fi
%
\iflinks
- \toks0 = {#2}%
- \toks2 = \expandafter{\lastnode}%
- \edef\temp{\write\tocfile{\realbackslash #1entry{\the\toks0}{#3}%
- {\the\toks2}{\noexpand\folio}}}%
- \temp
+ {\atdummies
+ \edef\temp{%
+ \write\tocfile{@#1entry{#2}{#3}{\lastnode}{\noexpand\folio}}}%
+ \temp
+ }%
\fi
\fi
%
@@ -4427,6 +5999,31 @@ width0pt\relax} \fi
\ifpdf \global\pdfmakepagedesttrue \fi
}
+
+% These characters do not print properly in the Computer Modern roman
+% fonts, so we must take special care. This is more or less redundant
+% with the Texinfo input format setup at the end of this file.
+%
+\def\activecatcodes{%
+ \catcode`\"=\active
+ \catcode`\$=\active
+ \catcode`\<=\active
+ \catcode`\>=\active
+ \catcode`\\=\active
+ \catcode`\^=\active
+ \catcode`\_=\active
+ \catcode`\|=\active
+ \catcode`\~=\active
+}
+
+
+% Read the toc file, which is essentially Texinfo input.
+\def\readtocfile{%
+ \setupdatafile
+ \activecatcodes
+ \input \tocreadfilename
+}
+
\newskip\contentsrightmargin \contentsrightmargin=1in
\newcount\savepageno
\newcount\lastnegativepageno \lastnegativepageno = -1
@@ -4443,29 +6040,29 @@ width0pt\relax} \fi
%
% Don't need to put `Contents' or `Short Contents' in the headline.
% It is abundantly clear what they are.
- \def\thischapter{}%
\chapmacro{#1}{Yomitfromtoc}{}%
%
\savepageno = \pageno
\begingroup % Set up to handle contents files properly.
- \catcode`\\=0 \catcode`\{=1 \catcode`\}=2 \catcode`\@=11
- % We can't do this, because then an actual ^ in a section
- % title fails, e.g., @chapter ^ -- exponentiation. --karl, 9jul97.
- %\catcode`\^=7 % to see ^^e4 as \"a etc. juha@piuha.ydi.vtt.fi
- \raggedbottom % Worry more about breakpoints than the bottom.
+ \raggedbottom % Worry more about breakpoints than the bottom.
\advance\hsize by -\contentsrightmargin % Don't use the full line length.
%
% Roman numerals for page numbers.
\ifnum \pageno>0 \global\pageno = \lastnegativepageno \fi
}
+% redefined for the two-volume lispref. We always output on
+% \jobname.toc even if this is redefined.
+%
+\def\tocreadfilename{\jobname.toc}
% Normal (long) toc.
+%
\def\contents{%
\startcontents{\putwordTOC}%
- \openin 1 \jobname.toc
+ \openin 1 \tocreadfilename\space
\ifeof 1 \else
- \input \jobname.toc
+ \readtocfile
\fi
\vfill \eject
\contentsalignmacro % in case @setchapternewpage odd is in effect
@@ -4482,6 +6079,7 @@ width0pt\relax} \fi
\def\summarycontents{%
\startcontents{\putwordShortTOC}%
%
+ \let\partentry = \shortpartentry
\let\numchapentry = \shortchapentry
\let\appentry = \shortchapentry
\let\unnchapentry = \shortunnchapentry
@@ -4501,9 +6099,9 @@ width0pt\relax} \fi
\let\numsubsubsecentry = \numsecentry
\let\appsubsubsecentry = \numsecentry
\let\unnsubsubsecentry = \numsecentry
- \openin 1 \jobname.toc
+ \openin 1 \tocreadfilename\space
\ifeof 1 \else
- \input \jobname.toc
+ \readtocfile
\fi
\closein 1
\vfill \eject
@@ -4537,6 +6135,19 @@ width0pt\relax} \fi
% The last argument is the page number.
% The arguments in between are the chapter number, section number, ...
+% Parts, in the main contents. Replace the part number, which doesn't
+% exist, with an empty box. Let's hope all the numbers have the same width.
+% Also ignore the page number, which is conventionally not printed.
+\def\numeralbox{\setbox0=\hbox{8}\hbox to \wd0{\hfil}}
+\def\partentry#1#2#3#4{\dochapentry{\numeralbox\labelspace#1}{}}
+%
+% Parts, in the short toc.
+\def\shortpartentry#1#2#3#4{%
+ \penalty-300
+ \vskip.5\baselineskip plus.15\baselineskip minus.1\baselineskip
+ \shortchapentry{{\bf #1}}{\numeralbox}{}{}%
+}
+
% Chapters, in the main contents.
\def\numchapentry#1#2#3#4{\dochapentry{#2\labelspace#1}{#4}}
%
@@ -4626,45 +6237,12 @@ width0pt\relax} \fi
\message{environments,}
% @foo ... @end foo.
-% @point{}, @result{}, @expansion{}, @print{}, @equiv{}.
-%
-% Since these characters are used in examples, it should be an even number of
-% \tt widths. Each \tt character is 1en, so two makes it 1em.
-%
-\def\point{$\star$}
-\def\result{\leavevmode\raise.15ex\hbox to 1em{\hfil$\Rightarrow$\hfil}}
-\def\expansion{\leavevmode\raise.1ex\hbox to 1em{\hfil$\mapsto$\hfil}}
-\def\print{\leavevmode\lower.1ex\hbox to 1em{\hfil$\dashv$\hfil}}
-\def\equiv{\leavevmode\lower.1ex\hbox to 1em{\hfil$\ptexequiv$\hfil}}
-
-% The @error{} command.
-% Adapted from the TeXbook's \boxit.
-%
-\newbox\errorbox
-%
-{\tentt \global\dimen0 = 3em}% Width of the box.
-\dimen2 = .55pt % Thickness of rules
-% The text. (`r' is open on the right, `e' somewhat less so on the left.)
-\setbox0 = \hbox{\kern-.75pt \tensf error\kern-1.5pt}
-%
-\setbox\errorbox=\hbox to \dimen0{\hfil
- \hsize = \dimen0 \advance\hsize by -5.8pt % Space to left+right.
- \advance\hsize by -2\dimen2 % Rules.
- \vbox{%
- \hrule height\dimen2
- \hbox{\vrule width\dimen2 \kern3pt % Space to left of text.
- \vtop{\kern2.4pt \box0 \kern2.4pt}% Space above/below.
- \kern3pt\vrule width\dimen2}% Space to right.
- \hrule height\dimen2}
- \hfil}
-%
-\def\error{\leavevmode\lower.7ex\copy\errorbox}
-
-% @tex ... @end tex escapes into raw Tex temporarily.
+% @tex ... @end tex escapes into raw TeX temporarily.
% One exception: @ is still an escape character, so that @end tex works.
-% But \@ or @@ will get a plain tex @ character.
+% But \@ or @@ will get a plain @ character.
\envdef\tex{%
+ \setupmarkupstyle{tex}%
\catcode `\\=0 \catcode `\{=1 \catcode `\}=2
\catcode `\$=3 \catcode `\&=4 \catcode `\#=6
\catcode `\^=7 \catcode `\_=8 \catcode `\~=\active \let~=\tie
@@ -4674,8 +6252,14 @@ width0pt\relax} \fi
\catcode `\|=\other
\catcode `\<=\other
\catcode `\>=\other
+ \catcode`\`=\other
+ \catcode`\'=\other
\escapechar=`\\
%
+ % ' is active in math mode (mathcode"8000). So reset it, and all our
+ % other math active characters (just in case), to plain's definitions.
+ \mathactive
+ %
\let\b=\ptexb
\let\bullet=\ptexbullet
\let\c=\ptexc
@@ -4693,6 +6277,8 @@ width0pt\relax} \fi
\let\/=\ptexslash
\let\*=\ptexstar
\let\t=\ptext
+ \expandafter \let\csname top\endcsname=\ptextop % outer
+ \let\frenchspacing=\plainfrenchspacing
%
\def\endldots{\mathinner{\ldots\ldots\ldots\ldots}}%
\def\enddots{\relax\ifmmode\endldots\else$\mathsurround=0pt \endldots\,$\fi}%
@@ -4738,7 +6324,8 @@ width0pt\relax} \fi
\let\afterenvbreak = \aboveenvbreak
-% \nonarrowing is a flag. If "set", @lisp etc don't narrow margins.
+% \nonarrowing is a flag. If "set", @lisp etc don't narrow margins; it will
+% also clear it, so that its embedded environments do the narrowing again.
\let\nonarrowing=\relax
% @cartouche ... @end cartouche: draw rectangle w/rounded corners around
@@ -4775,7 +6362,13 @@ width0pt\relax} \fi
% each corner char, and rule thickness
\normbskip=\baselineskip \normpskip=\parskip \normlskip=\lineskip
% Flag to tell @lisp, etc., not to narrow margin.
- \let\nonarrowing=\comment
+ \let\nonarrowing = t%
+ %
+ % If this cartouche directly follows a sectioning command, we need the
+ % \parskip glue (backspaced over by default) or the cartouche can
+ % collide with the section heading.
+ \ifnum\lastpenalty>10000 \vskip\parskip \penalty\lastpenalty \fi
+ %
\vbox\bgroup
\baselineskip=0pt\parskip=0pt\lineskip=0pt
\carttop
@@ -4789,7 +6382,7 @@ width0pt\relax} \fi
\lineskip=\normlskip
\parskip=\normpskip
\vskip -\parskip
- \comment % For explanation, see the end of \def\group.
+ \comment % For explanation, see the end of def\group.
}
\def\Ecartouche{%
\ifhmode\par\fi
@@ -4806,6 +6399,7 @@ width0pt\relax} \fi
% This macro is called at the beginning of all the @example variants,
% inside a group.
+\newdimen\nonfillparindent
\def\nonfillstart{%
\aboveenvbreak
\hfuzz = 12pt % Don't be fussy
@@ -4813,17 +6407,40 @@ width0pt\relax} \fi
\let\par = \lisppar % don't ignore blank lines
\obeylines % each line of input is a line of output
\parskip = 0pt
+ % Turn off paragraph indentation but redefine \indent to emulate
+ % the normal \indent.
+ \nonfillparindent=\parindent
\parindent = 0pt
+ \let\indent\nonfillindent
+ %
\emergencystretch = 0pt % don't try to avoid overfull boxes
- % @cartouche defines \nonarrowing to inhibit narrowing
- % at next level down.
\ifx\nonarrowing\relax
\advance \leftskip by \lispnarrowing
\exdentamount=\lispnarrowing
+ \else
+ \let\nonarrowing = \relax
\fi
\let\exdent=\nofillexdent
}
+\begingroup
+\obeyspaces
+% We want to swallow spaces (but not other tokens) after the fake
+% @indent in our nonfill-environments, where spaces are normally
+% active and set to @tie, resulting in them not being ignored after
+% @indent.
+\gdef\nonfillindent{\futurelet\temp\nonfillindentcheck}%
+\gdef\nonfillindentcheck{%
+\ifx\temp %
+\expandafter\nonfillindentgobble%
+\else%
+\leavevmode\nonfillindentbox%
+\fi%
+}%
+\endgroup
+\def\nonfillindentgobble#1{\nonfillindent}
+\def\nonfillindentbox{\hbox to \nonfillparindent{\hss}}
+
% If you want all examples etc. small: @set dispenvsize small.
% If you want even small examples the full size: @set dispenvsize nosmall.
% This affects the following displayed environments:
@@ -4834,53 +6451,59 @@ width0pt\relax} \fi
\let\SETdispenvsize\relax
\def\setnormaldispenv{%
\ifx\SETdispenvsize\smallword
+ % end paragraph for sake of leading, in case document has no blank
+ % line. This is redundant with what happens in \aboveenvbreak, but
+ % we need to do it before changing the fonts, and it's inconvenient
+ % to change the fonts afterward.
+ \ifnum \lastpenalty=10000 \else \endgraf \fi
\smallexamplefonts \rm
\fi
}
\def\setsmalldispenv{%
\ifx\SETdispenvsize\nosmallword
\else
+ \ifnum \lastpenalty=10000 \else \endgraf \fi
\smallexamplefonts \rm
\fi
}
% We often define two environments, @foo and @smallfoo.
-% Let's do it by one command:
-\def\makedispenv #1#2{
- \expandafter\envdef\csname#1\endcsname {\setnormaldispenv #2}
- \expandafter\envdef\csname small#1\endcsname {\setsmalldispenv #2}
+% Let's do it in one command. #1 is the env name, #2 the definition.
+\def\makedispenvdef#1#2{%
+ \expandafter\envdef\csname#1\endcsname {\setnormaldispenv #2}%
+ \expandafter\envdef\csname small#1\endcsname {\setsmalldispenv #2}%
\expandafter\let\csname E#1\endcsname \afterenvbreak
\expandafter\let\csname Esmall#1\endcsname \afterenvbreak
}
-% Define two synonyms:
-\def\maketwodispenvs #1#2#3{
- \makedispenv{#1}{#3}
- \makedispenv{#2}{#3}
+% Define two environment synonyms (#1 and #2) for an environment.
+\def\maketwodispenvdef#1#2#3{%
+ \makedispenvdef{#1}{#3}%
+ \makedispenvdef{#2}{#3}%
}
-
-% @lisp: indented, narrowed, typewriter font; @example: same as @lisp.
+%
+% @lisp: indented, narrowed, typewriter font;
+% @example: same as @lisp.
%
% @smallexample and @smalllisp: use smaller fonts.
% Originally contributed by Pavel@xerox.
%
-\maketwodispenvs {lisp}{example}{%
+\maketwodispenvdef{lisp}{example}{%
\nonfillstart
- \tt
+ \tt\setupmarkupstyle{example}%
\let\kbdfont = \kbdexamplefont % Allow @kbd to do something special.
- \gobble % eat return
+ \gobble % eat return
}
-
% @display/@smalldisplay: same as @lisp except keep current font.
%
-\makedispenv {display}{%
+\makedispenvdef{display}{%
\nonfillstart
\gobble
}
% @format/@smallformat: same as @display except don't narrow margins.
%
-\makedispenv{format}{%
+\makedispenvdef{format}{%
\let\nonarrowing = t%
\nonfillstart
\gobble
@@ -4899,27 +6522,47 @@ width0pt\relax} \fi
\envdef\flushright{%
\let\nonarrowing = t%
\nonfillstart
- \advance\leftskip by 0pt plus 1fill
+ \advance\leftskip by 0pt plus 1fill\relax
\gobble
}
\let\Eflushright = \afterenvbreak
+% @raggedright does more-or-less normal line breaking but no right
+% justification. From plain.tex.
+\envdef\raggedright{%
+ \rightskip0pt plus2em \spaceskip.3333em \xspaceskip.5em\relax
+}
+\let\Eraggedright\par
+
+\envdef\raggedleft{%
+ \parindent=0pt \leftskip0pt plus2em
+ \spaceskip.3333em \xspaceskip.5em \parfillskip=0pt
+ \hbadness=10000 % Last line will usually be underfull, so turn off
+ % badness reporting.
+}
+\let\Eraggedleft\par
+
+\envdef\raggedcenter{%
+ \parindent=0pt \rightskip0pt plus1em \leftskip0pt plus1em
+ \spaceskip.3333em \xspaceskip.5em \parfillskip=0pt
+ \hbadness=10000 % Last line will usually be underfull, so turn off
+ % badness reporting.
+}
+\let\Eraggedcenter\par
+
+
% @quotation does normal linebreaking (hence we can't use \nonfillstart)
% and narrows the margins. We keep \parskip nonzero in general, since
% we're doing normal filling. So, when using \aboveenvbreak and
% \afterenvbreak, temporarily make \parskip 0.
%
-\envdef\quotation{%
- {\parskip=0pt \aboveenvbreak}% because \aboveenvbreak inserts \parskip
- \parindent=0pt
- %
- % @cartouche defines \nonarrowing to inhibit narrowing at next level down.
+\makedispenvdef{quotation}{\quotationstart}
+%
+\def\quotationstart{%
+ \indentedblockstart % same as \indentedblock, but increase right margin too.
\ifx\nonarrowing\relax
- \advance\leftskip by \lispnarrowing
\advance\rightskip by \lispnarrowing
- \exdentamount = \lispnarrowing
- \let\nonarrowing = \relax
\fi
\parsearg\quotationlabel
}
@@ -4929,12 +6572,13 @@ width0pt\relax} \fi
%
\def\Equotation{%
\par
- \ifx\quotationauthor\undefined\else
+ \ifx\quotationauthor\thisisundefined\else
% indent a bit.
\leftline{\kern 2\leftskip \sl ---\quotationauthor}%
\fi
{\parskip=0pt \afterenvbreak}%
}
+\def\Esmallquotation{\Equotation}
% If we're given an argument, typeset it in bold with a colon after.
\def\quotationlabel#1{%
@@ -4944,6 +6588,32 @@ width0pt\relax} \fi
\fi
}
+% @indentedblock is like @quotation, but indents only on the left and
+% has no optional argument.
+%
+\makedispenvdef{indentedblock}{\indentedblockstart}
+%
+\def\indentedblockstart{%
+ {\parskip=0pt \aboveenvbreak}% because \aboveenvbreak inserts \parskip
+ \parindent=0pt
+ %
+ % @cartouche defines \nonarrowing to inhibit narrowing at next level down.
+ \ifx\nonarrowing\relax
+ \advance\leftskip by \lispnarrowing
+ \exdentamount = \lispnarrowing
+ \else
+ \let\nonarrowing = \relax
+ \fi
+}
+
+% Keep a nonzero parskip for the environment, since we're doing normal filling.
+%
+\def\Eindentedblock{%
+ \par
+ {\parskip=0pt \afterenvbreak}%
+}
+\def\Esmallindentedblock{\Eindentedblock}
+
% LaTeX-like @verbatim...@end verbatim and @verb{<char>...<char>}
% If we want to allow any <char> as delimiter,
@@ -4959,18 +6629,16 @@ width0pt\relax} \fi
\do\ \do\\\do\{\do\}\do\$\do\&%
\do\#\do\^\do\^^K\do\_\do\^^A\do\%\do\~%
\do\<\do\>\do\|\do\@\do+\do\"%
+ % Don't do the quotes -- if we do, @set txicodequoteundirected and
+ % @set txicodequotebacktick will not have effect on @verb and
+ % @verbatim, and ?` and !` ligatures won't get disabled.
+ %\do\`\do\'%
}
%
% [Knuth] p. 380
\def\uncatcodespecials{%
\def\do##1{\catcode`##1=\other}\dospecials}
%
-% [Knuth] pp. 380,381,391
-% Disable Spanish ligatures ?` and !` of \tt font
-\begingroup
- \catcode`\`=\active\gdef`{\relax\lq}
-\endgroup
-%
% Setup for the @verb command.
%
% Eight spaces for a tab
@@ -4982,7 +6650,7 @@ width0pt\relax} \fi
\def\setupverb{%
\tt % easiest (and conventionally used) font for verbatim
\def\par{\leavevmode\endgraf}%
- \catcode`\`=\active
+ \setupmarkupstyle{verb}%
\tabeightspaces
% Respect line breaks,
% print special symbols as themselves, and
@@ -4993,35 +6661,46 @@ width0pt\relax} \fi
% Setup for the @verbatim environment
%
-% Real tab expansion
+% Real tab expansion.
\newdimen\tabw \setbox0=\hbox{\tt\space} \tabw=8\wd0 % tab amount
%
-\def\starttabbox{\setbox0=\hbox\bgroup}
+% We typeset each line of the verbatim in an \hbox, so we can handle
+% tabs. The \global is in case the verbatim line starts with an accent,
+% or some other command that starts with a begin-group. Otherwise, the
+% entire \verbbox would disappear at the corresponding end-group, before
+% it is typeset. Meanwhile, we can't have nested verbatim commands
+% (can we?), so the \global won't be overwriting itself.
+\newbox\verbbox
+\def\starttabbox{\global\setbox\verbbox=\hbox\bgroup}
+%
\begingroup
\catcode`\^^I=\active
\gdef\tabexpand{%
\catcode`\^^I=\active
\def^^I{\leavevmode\egroup
- \dimen0=\wd0 % the width so far, or since the previous tab
- \divide\dimen0 by\tabw
- \multiply\dimen0 by\tabw % compute previous multiple of \tabw
- \advance\dimen0 by\tabw % advance to next multiple of \tabw
- \wd0=\dimen0 \box0 \starttabbox
+ \dimen\verbbox=\wd\verbbox % the width so far, or since the previous tab
+ \divide\dimen\verbbox by\tabw
+ \multiply\dimen\verbbox by\tabw % compute previous multiple of \tabw
+ \advance\dimen\verbbox by\tabw % advance to next multiple of \tabw
+ \wd\verbbox=\dimen\verbbox \box\verbbox \starttabbox
}%
}
\endgroup
+
+% start the verbatim environment.
\def\setupverbatim{%
+ \let\nonarrowing = t%
\nonfillstart
- \advance\leftskip by -\defbodyindent
- % Easiest (and conventionally used) font for verbatim
- \tt
- \def\par{\leavevmode\egroup\box0\endgraf}%
- \catcode`\`=\active
+ \tt % easiest (and conventionally used) font for verbatim
+ % The \leavevmode here is for blank lines. Otherwise, we would
+ % never \starttabox and the \egroup would end verbatim mode.
+ \def\par{\leavevmode\egroup\box\verbbox\endgraf}%
\tabexpand
+ \setupmarkupstyle{verbatim}%
% Respect line breaks,
% print special symbols as themselves, and
- % make each space count
- % must do in this order:
+ % make each space count.
+ % Must do in this order:
\obeylines \uncatcodespecials \sepspaces
\everypar{\starttabbox}%
}
@@ -5077,6 +6756,8 @@ width0pt\relax} \fi
{%
\makevalueexpandable
\setupverbatim
+ \indexnofonts % Allow `@@' and other weird things in file names.
+ \wlog{texinfo.tex: doing @verbatiminclude of #1^^J}%
\input #1
\afterenvbreak
}%
@@ -5102,27 +6783,35 @@ width0pt\relax} \fi
\endgroup
}
+
\message{defuns,}
% @defun etc.
\newskip\defbodyindent \defbodyindent=.4in
\newskip\defargsindent \defargsindent=50pt
\newskip\deflastargmargin \deflastargmargin=18pt
+\newcount\defunpenalty
% Start the processing of @deffn:
\def\startdefun{%
\ifnum\lastpenalty<10000
\medbreak
+ \defunpenalty=10003 % Will keep this @deffn together with the
+ % following @def command, see below.
\else
% If there are two @def commands in a row, we'll have a \nobreak,
% which is there to keep the function description together with its
% header. But if there's nothing but headers, we need to allow a
% break somewhere. Check specifically for penalty 10002, inserted
- % by \defargscommonending, instead of 10000, since the sectioning
+ % by \printdefunline, instead of 10000, since the sectioning
% commands also insert a nobreak penalty, and we don't want to allow
% a break between a section heading and a defun.
- %
- \ifnum\lastpenalty=10002 \penalty2000 \fi
+ %
+ % As a further refinement, we avoid "club" headers by signalling
+ % with penalty of 10003 after the very first @deffn in the
+ % sequence (see above), and penalty of 10002 after any following
+ % @def command.
+ \ifnum\lastpenalty=10002 \penalty2000 \else \defunpenalty=10002 \fi
%
% Similarly, after a section heading, do not allow a break.
% But do insert the glue.
@@ -5140,7 +6829,7 @@ width0pt\relax} \fi
%
% As above, allow line break if we have multiple x headers in a row.
% It's not a great place, though.
- \ifnum\lastpenalty=10002 \penalty3000 \fi
+ \ifnum\lastpenalty=10002 \penalty3000 \else \defunpenalty=10002 \fi
%
% And now, it's time to reuse the body of the original defun:
\expandafter\gobbledefun#1%
@@ -5155,10 +6844,10 @@ width0pt\relax} \fi
#1#2 \endheader
% common ending:
\interlinepenalty = 10000
- \advance\rightskip by 0pt plus 1fil
+ \advance\rightskip by 0pt plus 1fil\relax
\endgraf
\nobreak\vskip -\parskip
- \penalty 10002 % signal to \startdefun and \dodefunx
+ \penalty\defunpenalty % signal to \startdefun and \dodefunx
% Some of the @defun-type tags do not enable magic parentheses,
% rendering the following check redundant. But we don't optimize.
\checkparencounts
@@ -5168,7 +6857,7 @@ width0pt\relax} \fi
\def\Edefun{\endgraf\medbreak}
% \makedefun{deffn} creates \deffn, \deffnx and \Edeffn;
-% the only thing remainnig is to define \deffnheader.
+% the only thing remaining is to define \deffnheader.
%
\def\makedefun#1{%
\expandafter\let\csname E#1\endcsname = \Edefun
@@ -5185,13 +6874,36 @@ width0pt\relax} \fi
\def\domakedefun#1#2#3{%
\envdef#1{%
\startdefun
+ \doingtypefnfalse % distinguish typed functions from all else
\parseargusing\activeparens{\printdefunline#3}%
}%
\def#2{\dodefunx#1}%
\def#3%
}
-%%% Untyped functions:
+\newif\ifdoingtypefn % doing typed function?
+\newif\ifrettypeownline % typeset return type on its own line?
+
+% @deftypefnnewline on|off says whether the return type of typed functions
+% are printed on their own line. This affects @deftypefn, @deftypefun,
+% @deftypeop, and @deftypemethod.
+%
+\parseargdef\deftypefnnewline{%
+ \def\temp{#1}%
+ \ifx\temp\onword
+ \expandafter\let\csname SETtxideftypefnnl\endcsname
+ = \empty
+ \else\ifx\temp\offword
+ \expandafter\let\csname SETtxideftypefnnl\endcsname
+ = \relax
+ \else
+ \errhelp = \EMsimple
+ \errmessage{Unknown @txideftypefnnl value `\temp',
+ must be on|off}%
+ \fi\fi
+}
+
+% Untyped functions:
% @deffn category name args
\makedefun{deffn}{\deffngeneral{}}
@@ -5210,7 +6922,7 @@ width0pt\relax} \fi
\defname{#2}{}{#3}\magicamp\defunargs{#4\unskip}%
}
-%%% Typed functions:
+% Typed functions:
% @deftypefn category type name args
\makedefun{deftypefn}{\deftypefngeneral{}}
@@ -5225,10 +6937,11 @@ width0pt\relax} \fi
%
\def\deftypefngeneral#1#2 #3 #4 #5\endheader{%
\dosubind{fn}{\code{#4}}{#1}%
+ \doingtypefntrue
\defname{#2}{#3}{#4}\defunargs{#5\unskip}%
}
-%%% Typed variables:
+% Typed variables:
% @deftypevr category type var args
\makedefun{deftypevr}{\deftypecvgeneral{}}
@@ -5246,7 +6959,7 @@ width0pt\relax} \fi
\defname{#2}{#3}{#4}\defunargs{#5\unskip}%
}
-%%% Untyped variables:
+% Untyped variables:
% @defvr category var args
\makedefun{defvr}#1 {\deftypevrheader{#1} {} }
@@ -5257,7 +6970,8 @@ width0pt\relax} \fi
% \defcvof {category of}class var args
\def\defcvof#1#2 {\deftypecvof{#1}#2 {} }
-%%% Type:
+% Types:
+
% @deftp category name args
\makedefun{deftp}#1 #2 #3\endheader{%
\doind{tp}{\code{#2}}%
@@ -5285,25 +6999,49 @@ width0pt\relax} \fi
% We are followed by (but not passed) the arguments, if any.
%
\def\defname#1#2#3{%
+ \par
% Get the values of \leftskip and \rightskip as they were outside the @def...
\advance\leftskip by -\defbodyindent
%
- % How we'll format the type name. Putting it in brackets helps
+ % Determine if we are typesetting the return type of a typed function
+ % on a line by itself.
+ \rettypeownlinefalse
+ \ifdoingtypefn % doing a typed function specifically?
+ % then check user option for putting return type on its own line:
+ \expandafter\ifx\csname SETtxideftypefnnl\endcsname\relax \else
+ \rettypeownlinetrue
+ \fi
+ \fi
+ %
+ % How we'll format the category name. Putting it in brackets helps
% distinguish it from the body text that may end up on the next line
% just below it.
\def\temp{#1}%
\setbox0=\hbox{\kern\deflastargmargin \ifx\temp\empty\else [\rm\temp]\fi}
%
- % Figure out line sizes for the paragraph shape.
+ % Figure out line sizes for the paragraph shape. We'll always have at
+ % least two.
+ \tempnum = 2
+ %
% The first line needs space for \box0; but if \rightskip is nonzero,
% we need only space for the part of \box0 which exceeds it:
\dimen0=\hsize \advance\dimen0 by -\wd0 \advance\dimen0 by \rightskip
+ %
+ % If doing a return type on its own line, we'll have another line.
+ \ifrettypeownline
+ \advance\tempnum by 1
+ \def\maybeshapeline{0in \hsize}%
+ \else
+ \def\maybeshapeline{}%
+ \fi
+ %
% The continuations:
\dimen2=\hsize \advance\dimen2 by -\defargsindent
- % (plain.tex says that \dimen1 should be used only as global.)
- \parshape 2 0in \dimen0 \defargsindent \dimen2
%
- % Put the type name to the right margin.
+ % The final paragraph shape:
+ \parshape \tempnum 0in \dimen0 \maybeshapeline \defargsindent \dimen2
+ %
+ % Put the category name at the right margin.
\noindent
\hbox to 0pt{%
\hfil\box0 \kern-\hsize
@@ -5325,8 +7063,16 @@ width0pt\relax} \fi
% . this still does not fix the ?` and !` ligatures, but so far no
% one has made identifiers using them :).
\df \tt
- \def\temp{#2}% return value type
- \ifx\temp\empty\else \tclose{\temp} \fi
+ \def\temp{#2}% text of the return type
+ \ifx\temp\empty\else
+ \tclose{\temp}% typeset the return type
+ \ifrettypeownline
+ % put return type on its own line; prohibit line break following:
+ \hfil\vadjust{\nobreak}\break
+ \else
+ \space % type on same line, so just followed by a space
+ \fi
+ \fi % no return type
#3% output function name
}%
{\rm\enskip}% hskip 0.5 em of \tenrm
@@ -5346,8 +7092,11 @@ width0pt\relax} \fi
\df \sl \hyphenchar\font=0
%
% On the other hand, if an argument has two dashes (for instance), we
- % want a way to get ttsl. Let's try @var for that.
- \let\var=\ttslanted
+ % want a way to get ttsl. We used to recommend @var for that, so
+ % leave the code in, but it's strange for @var to lead to typewriter.
+ % Nowadays we recommend @code, since the difference between a ttsl hyphen
+ % and a tt hyphen is pretty tiny. @code also disables ?` !`.
+ \def\var##1{{\setupmarkupstyle{var}\ttslanted{##1}}}%
#1%
\sl\hyphenchar\font=45
}
@@ -5427,12 +7176,14 @@ width0pt\relax} \fi
\ifnum\parencount=0 \else \badparencount \fi
\ifnum\brackcount=0 \else \badbrackcount \fi
}
+% these should not use \errmessage; the glibc manual, at least, actually
+% has such constructs (when documenting function pointers).
\def\badparencount{%
- \errmessage{Unbalanced parentheses in @def}%
+ \message{Warning: unbalanced parentheses in @def...}%
\global\parencount=0
}
\def\badbrackcount{%
- \errmessage{Unbalanced square braces in @def}%
+ \message{Warning: unbalanced square brackets in @def...}%
\global\brackcount=0
}
@@ -5442,7 +7193,7 @@ width0pt\relax} \fi
% To do this right we need a feature of e-TeX, \scantokens,
% which we arrange to emulate with a temporary file in ordinary TeX.
-\ifx\eTeXversion\undefined
+\ifx\eTeXversion\thisisundefined
\newwrite\macscribble
\def\scantokens#1{%
\toks0={#1}%
@@ -5453,26 +7204,30 @@ width0pt\relax} \fi
}
\fi
-\def\scanmacro#1{%
- \begingroup
- \newlinechar`\^^M
- \let\xeatspaces\eatspaces
- % Undo catcode changes of \startcontents and \doprintindex
- % When called from @insertcopying or (short)caption, we need active
- % backslash to get it printed correctly. Previously, we had
- % \catcode`\\=\other instead. We'll see whether a problem appears
- % with macro expansion. --kasal, 19aug04
- \catcode`\@=0 \catcode`\\=\active \escapechar=`\@
- % ... and \example
- \spaceisspace
- %
- % Append \endinput to make sure that TeX does not see the ending newline.
- %
- % I've verified that it is necessary both for e-TeX and for ordinary TeX
- % --kasal, 29nov03
- \scantokens{#1\endinput}%
- \endgroup
-}
+\def\scanmacro#1{\begingroup
+ \newlinechar`\^^M
+ \let\xeatspaces\eatspaces
+ %
+ % Undo catcode changes of \startcontents and \doprintindex
+ % When called from @insertcopying or (short)caption, we need active
+ % backslash to get it printed correctly. Previously, we had
+ % \catcode`\\=\other instead. We'll see whether a problem appears
+ % with macro expansion. --kasal, 19aug04
+ \catcode`\@=0 \catcode`\\=\active \escapechar=`\@
+ %
+ % ... and for \example:
+ \spaceisspace
+ %
+ % The \empty here causes a following catcode 5 newline to be eaten as
+ % part of reading whitespace after a control sequence. It does not
+ % eat a catcode 13 newline. There's no good way to handle the two
+ % cases (untried: maybe e-TeX's \everyeof could help, though plain TeX
+ % would then have different behavior). See the Macro Details node in
+ % the manual for the workaround we recommend for macros and
+ % line-oriented commands.
+ %
+ \scantokens{#1\empty}%
+\endgroup}
\def\scanexp#1{%
\edef\temp{\noexpand\scanmacro{#1}}%
@@ -5482,14 +7237,25 @@ width0pt\relax} \fi
\newcount\paramno % Count of parameters
\newtoks\macname % Macro name
\newif\ifrecursive % Is it recursive?
-\def\macrolist{} % List of all defined macros in the form
- % \do\macro1\do\macro2...
+
+% List of all defined macros in the form
+% \definedummyword\macro1\definedummyword\macro2...
+% Currently is also contains all @aliases; the list can be split
+% if there is a need.
+\def\macrolist{}
+
+% Add the macro to \macrolist
+\def\addtomacrolist#1{\expandafter \addtomacrolistxxx \csname#1\endcsname}
+\def\addtomacrolistxxx#1{%
+ \toks0 = \expandafter{\macrolist\definedummyword#1}%
+ \xdef\macrolist{\the\toks0}%
+}
% Utility routines.
% This does \let #1 = #2, with \csnames; that is,
% \let \csname#1\endcsname = \csname#2\endcsname
% (except of course we have to play expansion games).
-%
+%
\def\cslet#1#2{%
\expandafter\let
\csname#1\expandafter\endcsname
@@ -5515,13 +7281,18 @@ width0pt\relax} \fi
% Macro bodies are absorbed as an argument in a context where
% all characters are catcode 10, 11 or 12, except \ which is active
-% (as in normal texinfo). It is necessary to change the definition of \.
-
+% (as in normal texinfo). It is necessary to change the definition of \
+% to recognize macro arguments; this is the job of \mbodybackslash.
+%
+% Non-ASCII encodings make 8-bit characters active, so un-activate
+% them to avoid their expansion. Must do this non-globally, to
+% confine the change to the current group.
+%
% It's necessary to have hard CRs when the macro is executed. This is
-% done by making ^^M (\endlinechar) catcode 12 when reading the macro
+% done by making ^^M (\endlinechar) catcode 12 when reading the macro
% body, and then making it the \newlinechar in \scanmacro.
-
-\def\scanctxt{%
+%
+\def\scanctxt{% used as subroutine
\catcode`\"=\other
\catcode`\+=\other
\catcode`\<=\other
@@ -5531,15 +7302,16 @@ width0pt\relax} \fi
\catcode`\_=\other
\catcode`\|=\other
\catcode`\~=\other
+ \ifx\declaredencoding\ascii \else \setnonasciicharscatcodenonglobal\other \fi
}
-\def\scanargctxt{%
+\def\scanargctxt{% used for copying and captions, not macros.
\scanctxt
\catcode`\\=\other
\catcode`\^^M=\other
}
-\def\macrobodyctxt{%
+\def\macrobodyctxt{% used for @macro definitions
\scanctxt
\catcode`\{=\other
\catcode`\}=\other
@@ -5547,32 +7319,56 @@ width0pt\relax} \fi
\usembodybackslash
}
-\def\macroargctxt{%
+\def\macroargctxt{% used when scanning invocations
\scanctxt
- \catcode`\\=\other
+ \catcode`\\=0
}
+% why catcode 0 for \ in the above? To recognize \\ \{ \} as "escapes"
+% for the single characters \ { }. Thus, we end up with the "commands"
+% that would be written @\ @{ @} in a Texinfo document.
+%
+% We already have @{ and @}. For @\, we define it here, and only for
+% this purpose, to produce a typewriter backslash (so, the @\ that we
+% define for @math can't be used with @macro calls):
+%
+\def\\{\normalbackslash}%
+%
+% We would like to do this for \, too, since that is what makeinfo does.
+% But it is not possible, because Texinfo already has a command @, for a
+% cedilla accent. Documents must use @comma{} instead.
+%
+% \anythingelse will almost certainly be an error of some kind.
+
% \mbodybackslash is the definition of \ in @macro bodies.
% It maps \foo\ => \csname macarg.foo\endcsname => #N
% where N is the macro parameter number.
% We define \csname macarg.\endcsname to be \realbackslash, so
% \\ in macro replacement text gets you a backslash.
-
+%
{\catcode`@=0 @catcode`@\=@active
@gdef@usembodybackslash{@let\=@mbodybackslash}
@gdef@mbodybackslash#1\{@csname macarg.#1@endcsname}
}
\expandafter\def\csname macarg.\endcsname{\realbackslash}
+\def\margbackslash#1{\char`\#1 }
+
\def\macro{\recursivefalse\parsearg\macroxxx}
\def\rmacro{\recursivetrue\parsearg\macroxxx}
\def\macroxxx#1{%
- \getargs{#1}% now \macname is the macname and \argl the arglist
+ \getargs{#1}% now \macname is the macname and \argl the arglist
\ifx\argl\empty % no arguments
- \paramno=0%
+ \paramno=0\relax
\else
\expandafter\parsemargdef \argl;%
+ \if\paramno>256\relax
+ \ifx\eTeXversion\thisisundefined
+ \errhelp = \EMsimple
+ \errmessage{You need eTeX to compile a file with macros with more than 256 arguments}
+ \fi
+ \fi
\fi
\if1\csname ismacro.\the\macname\endcsname
\message{Warning: redefining \the\macname}%
@@ -5581,10 +7377,7 @@ width0pt\relax} \fi
\else \errmessage{Macro name \the\macname\space already defined}\fi
\global\cslet{macsave.\the\macname}{\the\macname}%
\global\expandafter\let\csname ismacro.\the\macname\endcsname=1%
- % Add the macroname to \macrolist
- \toks0 = \expandafter{\macrolist\do}%
- \xdef\macrolist{\the\toks0
- \expandafter\noexpand\csname\the\macname\endcsname}%
+ \addtomacrolist{\the\macname}%
\fi
\begingroup \macrobodyctxt
\ifrecursive \expandafter\parsermacbody
@@ -5598,7 +7391,7 @@ width0pt\relax} \fi
% Remove the macro name from \macrolist:
\begingroup
\expandafter\let\csname#1\endcsname \relax
- \let\do\unmacrodo
+ \let\definedummyword\unmacrodo
\xdef\macrolist{\macrolist}%
\endgroup
\else
@@ -5610,10 +7403,10 @@ width0pt\relax} \fi
% macro definitions that have been changed to \relax.
%
\def\unmacrodo#1{%
- \ifx#1\relax
+ \ifx #1\relax
% remove this
\else
- \noexpand\do \noexpand #1%
+ \noexpand\definedummyword \noexpand#1%
\fi
}
@@ -5622,46 +7415,269 @@ width0pt\relax} \fi
% an opening brace, and that opening brace is not consumed.
\def\getargs#1{\getargsxxx#1{}}
\def\getargsxxx#1#{\getmacname #1 \relax\getmacargs}
-\def\getmacname #1 #2\relax{\macname={#1}}
+\def\getmacname#1 #2\relax{\macname={#1}}
\def\getmacargs#1{\def\argl{#1}}
+% For macro processing make @ a letter so that we can make Texinfo private macro names.
+\edef\texiatcatcode{\the\catcode`\@}
+\catcode `@=11\relax
+
% Parse the optional {params} list. Set up \paramno and \paramlist
-% so \defmacro knows what to do. Define \macarg.blah for each blah
-% in the params list, to be ##N where N is the position in that list.
+% so \defmacro knows what to do. Define \macarg.BLAH for each BLAH
+% in the params list to some hook where the argument si to be expanded. If
+% there are less than 10 arguments that hook is to be replaced by ##N where N
+% is the position in that list, that is to say the macro arguments are to be
+% defined `a la TeX in the macro body.
+%
% That gets used by \mbodybackslash (above).
-
+%
% We need to get `macro parameter char #' into several definitions.
-% The technique used is stolen from LaTeX: let \hash be something
+% The technique used is stolen from LaTeX: let \hash be something
% unexpandable, insert that wherever you need a #, and then redefine
% it to # just before using the token list produced.
%
% The same technique is used to protect \eatspaces till just before
% the macro is used.
-
-\def\parsemargdef#1;{\paramno=0\def\paramlist{}%
- \let\hash\relax\let\xeatspaces\relax\parsemargdefxxx#1,;,}
+%
+% If there are 10 or more arguments, a different technique is used, where the
+% hook remains in the body, and when macro is to be expanded the body is
+% processed again to replace the arguments.
+%
+% In that case, the hook is \the\toks N-1, and we simply set \toks N-1 to the
+% argument N value and then \edef the body (nothing else will expand because of
+% the catcode regime underwhich the body was input).
+%
+% If you compile with TeX (not eTeX), and you have macros with 10 or more
+% arguments, you need that no macro has more than 256 arguments, otherwise an
+% error is produced.
+\def\parsemargdef#1;{%
+ \paramno=0\def\paramlist{}%
+ \let\hash\relax
+ \let\xeatspaces\relax
+ \parsemargdefxxx#1,;,%
+ % In case that there are 10 or more arguments we parse again the arguments
+ % list to set new definitions for the \macarg.BLAH macros corresponding to
+ % each BLAH argument. It was anyhow needed to parse already once this list
+ % in order to count the arguments, and as macros with at most 9 arguments
+ % are by far more frequent than macro with 10 or more arguments, defining
+ % twice the \macarg.BLAH macros does not cost too much processing power.
+ \ifnum\paramno<10\relax\else
+ \paramno0\relax
+ \parsemmanyargdef@@#1,;,% 10 or more arguments
+ \fi
+}
\def\parsemargdefxxx#1,{%
\if#1;\let\next=\relax
\else \let\next=\parsemargdefxxx
- \advance\paramno by 1%
+ \advance\paramno by 1
\expandafter\edef\csname macarg.\eatspaces{#1}\endcsname
{\xeatspaces{\hash\the\paramno}}%
\edef\paramlist{\paramlist\hash\the\paramno,}%
\fi\next}
+\def\parsemmanyargdef@@#1,{%
+ \if#1;\let\next=\relax
+ \else
+ \let\next=\parsemmanyargdef@@
+ \edef\tempb{\eatspaces{#1}}%
+ \expandafter\def\expandafter\tempa
+ \expandafter{\csname macarg.\tempb\endcsname}%
+ % Note that we need some extra \noexpand\noexpand, this is because we
+ % don't want \the to be expanded in the \parsermacbody as it uses an
+ % \xdef .
+ \expandafter\edef\tempa
+ {\noexpand\noexpand\noexpand\the\toks\the\paramno}%
+ \advance\paramno by 1\relax
+ \fi\next}
+
% These two commands read recursive and nonrecursive macro bodies.
% (They're different since rec and nonrec macros end differently.)
+%
+\catcode `\@\texiatcatcode
\long\def\parsemacbody#1@end macro%
{\xdef\temp{\eatcr{#1}}\endgroup\defmacro}%
\long\def\parsermacbody#1@end rmacro%
{\xdef\temp{\eatcr{#1}}\endgroup\defmacro}%
+\catcode `\@=11\relax
+
+\let\endargs@\relax
+\let\nil@\relax
+\def\nilm@{\nil@}%
+\long\def\nillm@{\nil@}%
+
+% This macro is expanded during the Texinfo macro expansion, not during its
+% definition. It gets all the arguments values and assigns them to macros
+% macarg.ARGNAME
+%
+% #1 is the macro name
+% #2 is the list of argument names
+% #3 is the list of argument values
+\def\getargvals@#1#2#3{%
+ \def\macargdeflist@{}%
+ \def\saveparamlist@{#2}% Need to keep a copy for parameter expansion.
+ \def\paramlist{#2,\nil@}%
+ \def\macroname{#1}%
+ \begingroup
+ \macroargctxt
+ \def\argvaluelist{#3,\nil@}%
+ \def\@tempa{#3}%
+ \ifx\@tempa\empty
+ \setemptyargvalues@
+ \else
+ \getargvals@@
+ \fi
+}
+
+%
+\def\getargvals@@{%
+ \ifx\paramlist\nilm@
+ % Some sanity check needed here that \argvaluelist is also empty.
+ \ifx\argvaluelist\nillm@
+ \else
+ \errhelp = \EMsimple
+ \errmessage{Too many arguments in macro `\macroname'!}%
+ \fi
+ \let\next\macargexpandinbody@
+ \else
+ \ifx\argvaluelist\nillm@
+ % No more arguments values passed to macro. Set remaining named-arg
+ % macros to empty.
+ \let\next\setemptyargvalues@
+ \else
+ % pop current arg name into \@tempb
+ \def\@tempa##1{\pop@{\@tempb}{\paramlist}##1\endargs@}%
+ \expandafter\@tempa\expandafter{\paramlist}%
+ % pop current argument value into \@tempc
+ \def\@tempa##1{\longpop@{\@tempc}{\argvaluelist}##1\endargs@}%
+ \expandafter\@tempa\expandafter{\argvaluelist}%
+ % Here \@tempb is the current arg name and \@tempc is the current arg value.
+ % First place the new argument macro definition into \@tempd
+ \expandafter\macname\expandafter{\@tempc}%
+ \expandafter\let\csname macarg.\@tempb\endcsname\relax
+ \expandafter\def\expandafter\@tempe\expandafter{%
+ \csname macarg.\@tempb\endcsname}%
+ \edef\@tempd{\long\def\@tempe{\the\macname}}%
+ \push@\@tempd\macargdeflist@
+ \let\next\getargvals@@
+ \fi
+ \fi
+ \next
+}
+
+\def\push@#1#2{%
+ \expandafter\expandafter\expandafter\def
+ \expandafter\expandafter\expandafter#2%
+ \expandafter\expandafter\expandafter{%
+ \expandafter#1#2}%
+}
+
+% Replace arguments by their values in the macro body, and place the result
+% in macro \@tempa
+\def\macvalstoargs@{%
+ % To do this we use the property that token registers that are \the'ed
+ % within an \edef expand only once. So we are going to place all argument
+ % values into respective token registers.
+ %
+ % First we save the token context, and initialize argument numbering.
+ \begingroup
+ \paramno0\relax
+ % Then, for each argument number #N, we place the corresponding argument
+ % value into a new token list register \toks#N
+ \expandafter\putargsintokens@\saveparamlist@,;,%
+ % Then, we expand the body so that argument are replaced by their
+ % values. The trick for values not to be expanded themselves is that they
+ % are within tokens and that tokens expand only once in an \edef .
+ \edef\@tempc{\csname mac.\macroname .body\endcsname}%
+ % Now we restore the token stack pointer to free the token list registers
+ % which we have used, but we make sure that expanded body is saved after
+ % group.
+ \expandafter
+ \endgroup
+ \expandafter\def\expandafter\@tempa\expandafter{\@tempc}%
+ }
+
+\def\macargexpandinbody@{%
+ %% Define the named-macro outside of this group and then close this group.
+ \expandafter
+ \endgroup
+ \macargdeflist@
+ % First the replace in body the macro arguments by their values, the result
+ % is in \@tempa .
+ \macvalstoargs@
+ % Then we point at the \norecurse or \gobble (for recursive) macro value
+ % with \@tempb .
+ \expandafter\let\expandafter\@tempb\csname mac.\macroname .recurse\endcsname
+ % Depending on whether it is recursive or not, we need some tailing
+ % \egroup .
+ \ifx\@tempb\gobble
+ \let\@tempc\relax
+ \else
+ \let\@tempc\egroup
+ \fi
+ % And now we do the real job:
+ \edef\@tempd{\noexpand\@tempb{\macroname}\noexpand\scanmacro{\@tempa}\@tempc}%
+ \@tempd
+}
+
+\def\putargsintokens@#1,{%
+ \if#1;\let\next\relax
+ \else
+ \let\next\putargsintokens@
+ % First we allocate the new token list register, and give it a temporary
+ % alias \@tempb .
+ \toksdef\@tempb\the\paramno
+ % Then we place the argument value into that token list register.
+ \expandafter\let\expandafter\@tempa\csname macarg.#1\endcsname
+ \expandafter\@tempb\expandafter{\@tempa}%
+ \advance\paramno by 1\relax
+ \fi
+ \next
+}
+
+% Save the token stack pointer into macro #1
+\def\texisavetoksstackpoint#1{\edef#1{\the\@cclvi}}
+% Restore the token stack pointer from number in macro #1
+\def\texirestoretoksstackpoint#1{\expandafter\mathchardef\expandafter\@cclvi#1\relax}
+% newtoks that can be used non \outer .
+\def\texinonouternewtoks{\alloc@ 5\toks \toksdef \@cclvi}
-% This defines the macro itself. There are six cases: recursive and
-% nonrecursive macros of zero, one, and many arguments.
+% Tailing missing arguments are set to empty
+\def\setemptyargvalues@{%
+ \ifx\paramlist\nilm@
+ \let\next\macargexpandinbody@
+ \else
+ \expandafter\setemptyargvaluesparser@\paramlist\endargs@
+ \let\next\setemptyargvalues@
+ \fi
+ \next
+}
+
+\def\setemptyargvaluesparser@#1,#2\endargs@{%
+ \expandafter\def\expandafter\@tempa\expandafter{%
+ \expandafter\def\csname macarg.#1\endcsname{}}%
+ \push@\@tempa\macargdeflist@
+ \def\paramlist{#2}%
+}
+
+% #1 is the element target macro
+% #2 is the list macro
+% #3,#4\endargs@ is the list value
+\def\pop@#1#2#3,#4\endargs@{%
+ \def#1{#3}%
+ \def#2{#4}%
+}
+\long\def\longpop@#1#2#3,#4\endargs@{%
+ \long\def#1{#3}%
+ \long\def#2{#4}%
+}
+
+% This defines a Texinfo @macro. There are eight cases: recursive and
+% nonrecursive macros of zero, one, up to nine, and many arguments.
% Much magic with \expandafter here.
% \xdef is used so that macro definitions will survive the file
% they're defined in; @include reads the file inside a group.
+%
\def\defmacro{%
\let\hash=##% convert placeholders to macro parameter chars
\ifrecursive
@@ -5676,17 +7692,25 @@ width0pt\relax} \fi
\expandafter\noexpand\csname\the\macname xxx\endcsname}%
\expandafter\xdef\csname\the\macname xxx\endcsname##1{%
\egroup\noexpand\scanmacro{\temp}}%
- \else % many
- \expandafter\xdef\csname\the\macname\endcsname{%
- \bgroup\noexpand\macroargctxt
- \noexpand\csname\the\macname xx\endcsname}%
- \expandafter\xdef\csname\the\macname xx\endcsname##1{%
- \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}%
- \expandafter\expandafter
- \expandafter\xdef
- \expandafter\expandafter
- \csname\the\macname xxx\endcsname
- \paramlist{\egroup\noexpand\scanmacro{\temp}}%
+ \else
+ \ifnum\paramno<10\relax % at most 9
+ \expandafter\xdef\csname\the\macname\endcsname{%
+ \bgroup\noexpand\macroargctxt
+ \noexpand\csname\the\macname xx\endcsname}%
+ \expandafter\xdef\csname\the\macname xx\endcsname##1{%
+ \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}%
+ \expandafter\expandafter
+ \expandafter\xdef
+ \expandafter\expandafter
+ \csname\the\macname xxx\endcsname
+ \paramlist{\egroup\noexpand\scanmacro{\temp}}%
+ \else % 10 or more
+ \expandafter\xdef\csname\the\macname\endcsname{%
+ \noexpand\getargvals@{\the\macname}{\argl}%
+ }%
+ \global\expandafter\let\csname mac.\the\macname .body\endcsname\temp
+ \global\expandafter\let\csname mac.\the\macname .recurse\endcsname\gobble
+ \fi
\fi
\else
\ifcase\paramno
@@ -5703,63 +7727,57 @@ width0pt\relax} \fi
\egroup
\noexpand\norecurse{\the\macname}%
\noexpand\scanmacro{\temp}\egroup}%
- \else % many
- \expandafter\xdef\csname\the\macname\endcsname{%
- \bgroup\noexpand\macroargctxt
- \expandafter\noexpand\csname\the\macname xx\endcsname}%
- \expandafter\xdef\csname\the\macname xx\endcsname##1{%
- \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}%
- \expandafter\expandafter
- \expandafter\xdef
- \expandafter\expandafter
- \csname\the\macname xxx\endcsname
- \paramlist{%
- \egroup
- \noexpand\norecurse{\the\macname}%
- \noexpand\scanmacro{\temp}\egroup}%
+ \else % at most 9
+ \ifnum\paramno<10\relax
+ \expandafter\xdef\csname\the\macname\endcsname{%
+ \bgroup\noexpand\macroargctxt
+ \expandafter\noexpand\csname\the\macname xx\endcsname}%
+ \expandafter\xdef\csname\the\macname xx\endcsname##1{%
+ \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}%
+ \expandafter\expandafter
+ \expandafter\xdef
+ \expandafter\expandafter
+ \csname\the\macname xxx\endcsname
+ \paramlist{%
+ \egroup
+ \noexpand\norecurse{\the\macname}%
+ \noexpand\scanmacro{\temp}\egroup}%
+ \else % 10 or more:
+ \expandafter\xdef\csname\the\macname\endcsname{%
+ \noexpand\getargvals@{\the\macname}{\argl}%
+ }%
+ \global\expandafter\let\csname mac.\the\macname .body\endcsname\temp
+ \global\expandafter\let\csname mac.\the\macname .recurse\endcsname\norecurse
+ \fi
\fi
\fi}
+\catcode `\@\texiatcatcode\relax
+
\def\norecurse#1{\bgroup\cslet{#1}{macsave.#1}}
% \braceorline decides whether the next nonwhitespace character is a
% {. If so it reads up to the closing }, if not, it reads the whole
% line. Whatever was read is then fed to the next control sequence
-% as an argument (by \parsebrace or \parsearg)
-\def\braceorline#1{\let\next=#1\futurelet\nchar\braceorlinexxx}
+% as an argument (by \parsebrace or \parsearg).
+%
+\def\braceorline#1{\let\macnamexxx=#1\futurelet\nchar\braceorlinexxx}
\def\braceorlinexxx{%
\ifx\nchar\bgroup\else
\expandafter\parsearg
- \fi \next}
-
-% We want to disable all macros during \shipout so that they are not
-% expanded by \write.
-\def\turnoffmacros{\begingroup \def\do##1{\let\noexpand##1=\relax}%
- \edef\next{\macrolist}\expandafter\endgroup\next}
-
-% For \indexnofonts, we need to get rid of all macros, leaving only the
-% arguments (if present). Of course this is not nearly correct, but it
-% is the best we can do for now. makeinfo does not expand macros in the
-% argument to @deffn, which ends up writing an index entry, and texindex
-% isn't prepared for an index sort entry that starts with \.
-%
-% Since macro invocations are followed by braces, we can just redefine them
-% to take a single TeX argument. The case of a macro invocation that
-% goes to end-of-line is not handled.
-%
-\def\emptyusermacros{\begingroup
- \def\do##1{\let\noexpand##1=\noexpand\asis}%
- \edef\next{\macrolist}\expandafter\endgroup\next}
+ \fi \macnamexxx}
% @alias.
% We need some trickery to remove the optional spaces around the equal
-% sign. Just make them active and then expand them all to nothing.
+% sign. Make them active and then expand them all to nothing.
+%
\def\alias{\parseargusing\obeyspaces\aliasxxx}
\def\aliasxxx #1{\aliasyyy#1\relax}
\def\aliasyyy #1=#2\relax{%
{%
\expandafter\let\obeyedspace=\empty
+ \addtomacrolist{#1}%
\xdef\next{\global\let\makecsname{#1}=\makecsname{#2}}%
}%
\next
@@ -5769,13 +7787,13 @@ width0pt\relax} \fi
\message{cross references,}
\newwrite\auxfile
-
\newif\ifhavexrefs % True if xref values are known.
\newif\ifwarnedxrefs % True if we warned once that they aren't known.
% @inforef is relatively simple.
\def\inforef #1{\inforefzzz #1,,,,**}
-\def\inforefzzz #1,#2,#3,#4**{\putwordSee{} \putwordInfo{} \putwordfile{} \file{\ignorespaces #3{}},
+\def\inforefzzz #1,#2,#3,#4**{%
+ \putwordSee{} \putwordInfo{} \putwordfile{} \file{\ignorespaces #3{}},
node \samp{\ignorespaces#1{}}}
% @node's only job in TeX is to define \lastnode, which is used in
@@ -5814,7 +7832,7 @@ width0pt\relax} \fi
% \setref{NAME}{SNT} defines a cross-reference point NAME (a node or an
% anchor), which consists of three parts:
-% 1) NAME-title - the current sectioning name taken from \thissection,
+% 1) NAME-title - the current sectioning name taken from \lastsection,
% or the anchor name.
% 2) NAME-snt - section number and type, passed as the SNT arg, or
% empty for anchors.
@@ -5829,20 +7847,39 @@ width0pt\relax} \fi
\iflinks
{%
\atdummies % preserve commands, but don't expand them
- \turnoffactive
- \otherbackslash
\edef\writexrdef##1##2{%
\write\auxfile{@xrdef{#1-% #1 of \setref, expanded by the \edef
##1}{##2}}% these are parameters of \writexrdef
}%
- \toks0 = \expandafter{\thissection}%
+ \toks0 = \expandafter{\lastsection}%
\immediate \writexrdef{title}{\the\toks0 }%
\immediate \writexrdef{snt}{\csname #2\endcsname}% \Ynumbered etc.
- \writexrdef{pg}{\folio}% will be written later, during \shipout
+ \safewhatsit{\writexrdef{pg}{\folio}}% will be written later, at \shipout
}%
\fi
}
+% @xrefautosectiontitle on|off says whether @section(ing) names are used
+% automatically in xrefs, if the third arg is not explicitly specified.
+% This was provided as a "secret" @set xref-automatic-section-title
+% variable, now it's official.
+%
+\parseargdef\xrefautomaticsectiontitle{%
+ \def\temp{#1}%
+ \ifx\temp\onword
+ \expandafter\let\csname SETxref-automatic-section-title\endcsname
+ = \empty
+ \else\ifx\temp\offword
+ \expandafter\let\csname SETxref-automatic-section-title\endcsname
+ = \relax
+ \else
+ \errhelp = \EMsimple
+ \errmessage{Unknown @xrefautomaticsectiontitle value `\temp',
+ must be on|off}%
+ \fi\fi
+}
+
+%
% @xref, @pxref, and @ref generate cross-references. For \xrefX, #1 is
% the node name, #2 the name of the Info cross-reference, #3 the printed
% node name, #4 the name of the Info file, #5 the name of the printed
@@ -5851,26 +7888,41 @@ width0pt\relax} \fi
\def\pxref#1{\putwordsee{} \xrefX[#1,,,,,,,]}
\def\xref#1{\putwordSee{} \xrefX[#1,,,,,,,]}
\def\ref#1{\xrefX[#1,,,,,,,]}
+%
+\newbox\toprefbox
+\newbox\printedrefnamebox
+\newbox\infofilenamebox
+\newbox\printedmanualbox
+%
\def\xrefX[#1,#2,#3,#4,#5,#6]{\begingroup
\unsepspaces
- \def\printedmanual{\ignorespaces #5}%
+ %
+ % Get args without leading/trailing spaces.
\def\printedrefname{\ignorespaces #3}%
- \setbox1=\hbox{\printedmanual\unskip}%
- \setbox0=\hbox{\printedrefname\unskip}%
- \ifdim \wd0 = 0pt
+ \setbox\printedrefnamebox = \hbox{\printedrefname\unskip}%
+ %
+ \def\infofilename{\ignorespaces #4}%
+ \setbox\infofilenamebox = \hbox{\infofilename\unskip}%
+ %
+ \def\printedmanual{\ignorespaces #5}%
+ \setbox\printedmanualbox = \hbox{\printedmanual\unskip}%
+ %
+ % If the printed reference name (arg #3) was not explicitly given in
+ % the @xref, figure out what we want to use.
+ \ifdim \wd\printedrefnamebox = 0pt
% No printed node name was explicitly given.
- \expandafter\ifx\csname SETxref-automatic-section-title\endcsname\relax
- % Use the node name inside the square brackets.
+ \expandafter\ifx\csname SETxref-automatic-section-title\endcsname \relax
+ % Not auto section-title: use node name inside the square brackets.
\def\printedrefname{\ignorespaces #1}%
\else
- % Use the actual chapter/section title appear inside
- % the square brackets. Use the real section title if we have it.
- \ifdim \wd1 > 0pt
- % It is in another manual, so we don't have it.
+ % Auto section-title: use chapter/section title inside
+ % the square brackets if we have it.
+ \ifdim \wd\printedmanualbox > 0pt
+ % It is in another manual, so we don't have it; use node name.
\def\printedrefname{\ignorespaces #1}%
\else
\ifhavexrefs
- % We know the real title if we have the xref values.
+ % We (should) know the real title if we have the xref values.
\def\printedrefname{\refx{#1-title}{}}%
\else
% Otherwise just copy the Info node name.
@@ -5882,18 +7934,32 @@ width0pt\relax} \fi
%
% Make link in pdf output.
\ifpdf
- \leavevmode
- \getfilename{#4}%
- {\turnoffactive \otherbackslash
+ {\indexnofonts
+ \turnoffactive
+ \makevalueexpandable
+ % This expands tokens, so do it after making catcode changes, so _
+ % etc. don't get their TeX definitions. This ignores all spaces in
+ % #4, including (wrongly) those in the middle of the filename.
+ \getfilename{#4}%
+ %
+ % This (wrongly) does not take account of leading or trailing
+ % spaces in #1, which should be ignored.
+ \edef\pdfxrefdest{#1}%
+ \ifx\pdfxrefdest\empty
+ \def\pdfxrefdest{Top}% no empty targets
+ \else
+ \txiescapepdf\pdfxrefdest % escape PDF special chars
+ \fi
+ %
+ \leavevmode
+ \startlink attr{/Border [0 0 0]}%
\ifnum\filenamelength>0
- \startlink attr{/Border [0 0 0]}%
- goto file{\the\filename.pdf} name{#1}%
+ goto file{\the\filename.pdf} name{\pdfxrefdest}%
\else
- \startlink attr{/Border [0 0 0]}%
- goto name{\pdfmkpgn{#1}}%
+ goto name{\pdfmkpgn{\pdfxrefdest}}%
\fi
}%
- \linkcolor
+ \setcolor{\linkcolor}%
\fi
%
% Float references are printed completely differently: "Figure 1.2"
@@ -5904,60 +7970,98 @@ width0pt\relax} \fi
% include an _ in the xref name, etc.
\indexnofonts
\turnoffactive
- \otherbackslash
\expandafter\global\expandafter\let\expandafter\Xthisreftitle
\csname XR#1-title\endcsname
}%
\iffloat\Xthisreftitle
% If the user specified the print name (third arg) to the ref,
% print it instead of our usual "Figure 1.2".
- \ifdim\wd0 = 0pt
- \refx{#1-snt}%
+ \ifdim\wd\printedrefnamebox = 0pt
+ \refx{#1-snt}{}%
\else
\printedrefname
\fi
%
- % if the user also gave the printed manual name (fifth arg), append
+ % If the user also gave the printed manual name (fifth arg), append
% "in MANUALNAME".
- \ifdim \wd1 > 0pt
+ \ifdim \wd\printedmanualbox > 0pt
\space \putwordin{} \cite{\printedmanual}%
\fi
\else
% node/anchor (non-float) references.
+ %
+ % If we use \unhbox to print the node names, TeX does not insert
+ % empty discretionaries after hyphens, which means that it will not
+ % find a line break at a hyphen in a node names. Since some manuals
+ % are best written with fairly long node names, containing hyphens,
+ % this is a loss. Therefore, we give the text of the node name
+ % again, so it is as if TeX is seeing it for the first time.
+ %
+ \ifdim \wd\printedmanualbox > 0pt
+ % Cross-manual reference with a printed manual name.
+ %
+ \crossmanualxref{\cite{\printedmanual\unskip}}%
+ %
+ \else\ifdim \wd\infofilenamebox > 0pt
+ % Cross-manual reference with only an info filename (arg 4), no
+ % printed manual name (arg 5). This is essentially the same as
+ % the case above; we output the filename, since we have nothing else.
+ %
+ \crossmanualxref{\code{\infofilename\unskip}}%
%
- % If we use \unhbox0 and \unhbox1 to print the node names, TeX does not
- % insert empty discretionaries after hyphens, which means that it will
- % not find a line break at a hyphen in a node names. Since some manuals
- % are best written with fairly long node names, containing hyphens, this
- % is a loss. Therefore, we give the text of the node name again, so it
- % is as if TeX is seeing it for the first time.
- \ifdim \wd1 > 0pt
- \putwordsection{} ``\printedrefname'' \putwordin{} \cite{\printedmanual}%
\else
+ % Reference within this manual.
+ %
% _ (for example) has to be the character _ for the purposes of the
% control sequence corresponding to the node, but it has to expand
% into the usual \leavevmode...\vrule stuff for purposes of
% printing. So we \turnoffactive for the \refx-snt, back on for the
% printing, back off for the \refx-pg.
- {\turnoffactive \otherbackslash
+ {\turnoffactive
% Only output a following space if the -snt ref is nonempty; for
% @unnumbered and @anchor, it won't be.
\setbox2 = \hbox{\ignorespaces \refx{#1-snt}{}}%
\ifdim \wd2 > 0pt \refx{#1-snt}\space\fi
}%
- % output the `[mynode]' via a macro so it can be overridden.
+ % output the `[mynode]' via the macro below so it can be overridden.
\xrefprintnodename\printedrefname
%
% But we always want a comma and a space:
,\space
%
% output the `page 3'.
- \turnoffactive \otherbackslash \putwordpage\tie\refx{#1-pg}{}%
- \fi
+ \turnoffactive \putwordpage\tie\refx{#1-pg}{}%
+ \fi\fi
\fi
\endlink
\endgroup}
+% Output a cross-manual xref to #1. Used just above (twice).
+%
+% Only include the text "Section ``foo'' in" if the foo is neither
+% missing or Top. Thus, @xref{,,,foo,The Foo Manual} outputs simply
+% "see The Foo Manual", the idea being to refer to the whole manual.
+%
+% But, this being TeX, we can't easily compare our node name against the
+% string "Top" while ignoring the possible spaces before and after in
+% the input. By adding the arbitrary 7sp below, we make it much less
+% likely that a real node name would have the same width as "Top" (e.g.,
+% in a monospaced font). Hopefully it will never happen in practice.
+%
+% For the same basic reason, we retypeset the "Top" at every
+% reference, since the current font is indeterminate.
+%
+\def\crossmanualxref#1{%
+ \setbox\toprefbox = \hbox{Top\kern7sp}%
+ \setbox2 = \hbox{\ignorespaces \printedrefname \unskip \kern7sp}%
+ \ifdim \wd2 > 7sp % nonempty?
+ \ifdim \wd2 = \wd\toprefbox \else % same as Top?
+ \putwordSection{} ``\printedrefname'' \putwordin{}\space
+ \fi
+ \fi
+ #1%
+}
+
% This macro is called from \xrefX for the `[nodename]' part of xref
% output. It's a separate macro only so it can be changed more easily,
% since square brackets don't work well in some documents. Particularly
@@ -6008,7 +8112,8 @@ width0pt\relax} \fi
\angleleft un\-de\-fined\angleright
\iflinks
\ifhavexrefs
- \message{\linenumber Undefined cross reference `#1'.}%
+ {\toks0 = {#1}% avoid expansion of possibly-complex value
+ \message{\linenumber Undefined cross reference `\the\toks0'.}}%
\else
\ifwarnedxrefs\else
\global\warnedxrefstrue
@@ -6028,10 +8133,18 @@ width0pt\relax} \fi
% collisions). But if this is a float type, we have more work to do.
%
\def\xrdef#1#2{%
- \expandafter\gdef\csname XR#1\endcsname{#2}% remember this xref value.
+ {% The node name might contain 8-bit characters, which in our current
+ % implementation are changed to commands like @'e. Don't let these
+ % mess up the control sequence name.
+ \indexnofonts
+ \turnoffactive
+ \xdef\safexrefname{#1}%
+ }%
+ %
+ \expandafter\gdef\csname XR\safexrefname\endcsname{#2}% remember this xref
%
% Was that xref control sequence that we just defined for a float?
- \expandafter\iffloat\csname XR#1\endcsname
+ \expandafter\iffloat\csname XR\safexrefname\endcsname
% it was a float, and we have the (safe) float type in \iffloattype.
\expandafter\let\expandafter\floatlist
\csname floatlist\iffloattype\endcsname
@@ -6046,7 +8159,8 @@ width0pt\relax} \fi
%
% Remember this xref in the control sequence \floatlistFLOATTYPE,
% for later use in \listoffloats.
- \expandafter\xdef\csname floatlist\iffloattype\endcsname{\the\toks0{#1}}%
+ \expandafter\xdef\csname floatlist\iffloattype\endcsname{\the\toks0
+ {\safexrefname}}%
\fi
}
@@ -6055,13 +8169,13 @@ width0pt\relax} \fi
\def\tryauxfile{%
\openin 1 \jobname.aux
\ifeof 1 \else
- \readauxfile
+ \readdatafile{aux}%
\global\havexrefstrue
\fi
\closein 1
}
-\def\readauxfile{\begingroup
+\def\setupdatafile{%
\catcode`\^^@=\other
\catcode`\^^A=\other
\catcode`\^^B=\other
@@ -6130,11 +8244,11 @@ width0pt\relax} \fi
%
% Make the characters 128-255 be printing characters.
{%
- \count 1=128
+ \count1=128
\def\loop{%
- \catcode\count 1=\other
- \advance\count 1 by 1
- \ifnum \count 1<256 \loop \fi
+ \catcode\count1=\other
+ \advance\count1 by 1
+ \ifnum \count1<256 \loop \fi
}%
}%
%
@@ -6142,8 +8256,12 @@ width0pt\relax} \fi
\catcode`\{=1
\catcode`\}=2
\catcode`\@=0
- %
- \input \jobname.aux
+}
+
+\def\readdatafile#1{%
+\begingroup
+ \setupdatafile
+ \input\jobname.#1
\endgroup}
@@ -6159,7 +8277,7 @@ width0pt\relax} \fi
% space to prevent strange expansion errors.)
\def\supereject{\par\penalty -20000\footnoteno =0 }
-% @footnotestyle is meaningful for info output only.
+% @footnotestyle is meaningful for Info output only.
\let\footnotestyle=\comment
{\catcode `\@=11
@@ -6222,6 +8340,8 @@ width0pt\relax} \fi
% expands into a box, it must come within the paragraph, lest it
% provide a place where TeX can split the footnote.
\footstrut
+ %
+ % Invoke rest of plain TeX footnote routine.
\futurelet\next\fo@t
}
}%end \catcode `\@=11
@@ -6229,7 +8349,7 @@ width0pt\relax} \fi
% In case a @footnote appears in a vbox, save the footnote text and create
% the real \insert just after the vbox finished. Otherwise, the insertion
% would be lost.
-% Similarily, if a @footnote appears inside an alignment, save the footnote
+% Similarly, if a @footnote appears inside an alignment, save the footnote
% text to a box and make the \insert when a row of the table is finished.
% And the same can be done for other insert classes. --kasal, 16nov03.
@@ -6309,7 +8429,7 @@ width0pt\relax} \fi
it from ftp://tug.org/tex/epsf.tex.}
%
\def\image#1{%
- \ifx\epsfbox\undefined
+ \ifx\epsfbox\thisisundefined
\ifwarnednoepsf \else
\errhelp = \noepsfhelp
\errmessage{epsf.tex not found, images will be ignored}%
@@ -6325,7 +8445,7 @@ width0pt\relax} \fi
% #2 is (optional) width, #3 is (optional) height.
% #4 is (ignored optional) html alt text.
% #5 is (ignored optional) extension.
-% #6 is just the usual extra ignored arg for parsing this stuff.
+% #6 is just the usual extra ignored arg for parsing stuff.
\newif\ifimagevmode
\def\imagexxx#1,#2,#3,#4,#5,#6\finish{\begingroup
\catcode`\^^M = 5 % in case we're inside an example
@@ -6333,15 +8453,30 @@ width0pt\relax} \fi
% If the image is by itself, center it.
\ifvmode
\imagevmodetrue
- \nobreak\bigskip
+ \else \ifx\centersub\centerV
+ % for @center @image, we need a vbox so we can have our vertical space
+ \imagevmodetrue
+ \vbox\bgroup % vbox has better behavior than vtop herev
+ \fi\fi
+ %
+ \ifimagevmode
+ \nobreak\medskip
% Usually we'll have text after the image which will insert
% \parskip glue, so insert it here too to equalize the space
% above and below.
\nobreak\vskip\parskip
\nobreak
- \line\bgroup\hss
\fi
%
+ % Leave vertical mode so that indentation from an enclosing
+ % environment such as @quotation is respected.
+ % However, if we're at the top level, we don't want the
+ % normal paragraph indentation.
+ % On the other hand, if we are in the case of @center @image, we don't
+ % want to start a paragraph, which will create a hsize-width box and
+ % eradicate the centering.
+ \ifx\centersub\centerV\else \noindent \fi
+ %
% Output the image.
\ifpdf
\dopdfimage{#1}{#2}{#3}%
@@ -6352,7 +8487,10 @@ width0pt\relax} \fi
\epsfbox{#1.eps}%
\fi
%
- \ifimagevmode \hss \egroup \bigbreak \fi % space after the image
+ \ifimagevmode
+ \medskip % space after a standalone image
+ \fi
+ \ifx\centersub\centerV \egroup \fi
\endgroup}
@@ -6419,13 +8557,13 @@ width0pt\relax} \fi
\global\advance\floatno by 1
%
{%
- % This magic value for \thissection is output by \setref as the
+ % This magic value for \lastsection is output by \setref as the
% XREFLABEL-title value. \xrefX uses it to distinguish float
% labels (which have a completely different output format) from
% node and anchor labels. And \xrdef uses it to construct the
% lists of floats.
%
- \edef\thissection{\floatmagic=\safefloattype}%
+ \edef\lastsection{\floatmagic=\safefloattype}%
\setref{\floatlabel}{Yfloat}%
}%
\fi
@@ -6492,7 +8630,8 @@ width0pt\relax} \fi
% \floatlabel-lof. Besides \floatident, we include the short
% caption if specified, else the full caption if specified, else nothing.
{%
- \atdummies \turnoffactive \otherbackslash
+ \atdummies
+ %
% since we read the caption text in the macro world, where ^^M
% is turned into a normal character, we have to scan it back, so
% we don't write the literal three characters "^^M" into the aux file.
@@ -6513,8 +8652,9 @@ width0pt\relax} \fi
%
% place the captured inserts
%
- % BEWARE: when the floats start float, we have to issue warning whenever an
- % insert appears inside a float which could possibly float. --kasal, 26may04
+ % BEWARE: when the floats start floating, we have to issue warning
+ % whenever an insert appears inside a float which could possibly
+ % float. --kasal, 26may04
%
\checkinserts
}
@@ -6558,7 +8698,7 @@ width0pt\relax} \fi
% #1 is the control sequence we are passed; we expand into a conditional
% which is true if #1 represents a float ref. That is, the magic
-% \thissection value which we \setref above.
+% \lastsection value which we \setref above.
%
\def\iffloat#1{\expandafter\doiffloat#1==\finish}
%
@@ -6619,39 +8759,909 @@ width0pt\relax} \fi
\writeentry
}}
+
\message{localization,}
-% and i18n.
-% @documentlanguage is usually given very early, just after
-% @setfilename. If done too late, it may not override everything
-% properly. Single argument is the language abbreviation.
-% It would be nice if we could set up a hyphenation file here.
+% For single-language documents, @documentlanguage is usually given very
+% early, just after @documentencoding. Single argument is the language
+% (de) or locale (de_DE) abbreviation.
%
-\parseargdef\documentlanguage{%
+{
+ \catcode`\_ = \active
+ \globaldefs=1
+\parseargdef\documentlanguage{\begingroup
+ \let_=\normalunderscore % normal _ character for filenames
\tex % read txi-??.tex file in plain TeX.
- % Read the file if it exists.
+ % Read the file by the name they passed if it exists.
\openin 1 txi-#1.tex
\ifeof 1
- \errhelp = \nolanghelp
- \errmessage{Cannot read language file txi-#1.tex}%
+ \documentlanguagetrywithoutunderscore{#1_\finish}%
\else
+ \globaldefs = 1 % everything in the txi-LL files needs to persist
\input txi-#1.tex
\fi
\closein 1
- \endgroup
+ \endgroup % end raw TeX
+\endgroup}
+%
+% If they passed de_DE, and txi-de_DE.tex doesn't exist,
+% try txi-de.tex.
+%
+\gdef\documentlanguagetrywithoutunderscore#1_#2\finish{%
+ \openin 1 txi-#1.tex
+ \ifeof 1
+ \errhelp = \nolanghelp
+ \errmessage{Cannot read language file txi-#1.tex}%
+ \else
+ \globaldefs = 1 % everything in the txi-LL files needs to persist
+ \input txi-#1.tex
+ \fi
+ \closein 1
}
+}% end of special _ catcode
+%
\newhelp\nolanghelp{The given language definition file cannot be found or
-is empty. Maybe you need to install it? In the current directory
-should work if nowhere else does.}
+is empty. Maybe you need to install it? Putting it in the current
+directory should work if nowhere else does.}
+% This macro is called from txi-??.tex files; the first argument is the
+% \language name to set (without the "\lang@" prefix), the second and
+% third args are \{left,right}hyphenmin.
+%
+% The language names to pass are determined when the format is built.
+% See the etex.log file created at that time, e.g.,
+% /usr/local/texlive/2008/texmf-var/web2c/pdftex/etex.log.
+%
+% With TeX Live 2008, etex now includes hyphenation patterns for all
+% available languages. This means we can support hyphenation in
+% Texinfo, at least to some extent. (This still doesn't solve the
+% accented characters problem.)
+%
+\catcode`@=11
+\def\txisetlanguage#1#2#3{%
+ % do not set the language if the name is undefined in the current TeX.
+ \expandafter\ifx\csname lang@#1\endcsname \relax
+ \message{no patterns for #1}%
+ \else
+ \global\language = \csname lang@#1\endcsname
+ \fi
+ % but there is no harm in adjusting the hyphenmin values regardless.
+ \global\lefthyphenmin = #2\relax
+ \global\righthyphenmin = #3\relax
+}
-% @documentencoding should change something in TeX eventually, most
-% likely, but for now just recognize it.
-\let\documentencoding = \comment
+% Helpers for encodings.
+% Set the catcode of characters 128 through 255 to the specified number.
+%
+\def\setnonasciicharscatcode#1{%
+ \count255=128
+ \loop\ifnum\count255<256
+ \global\catcode\count255=#1\relax
+ \advance\count255 by 1
+ \repeat
+}
+\def\setnonasciicharscatcodenonglobal#1{%
+ \count255=128
+ \loop\ifnum\count255<256
+ \catcode\count255=#1\relax
+ \advance\count255 by 1
+ \repeat
+}
-% Page size parameters.
+% @documentencoding sets the definition of non-ASCII characters
+% according to the specified encoding.
%
+\parseargdef\documentencoding{%
+ % Encoding being declared for the document.
+ \def\declaredencoding{\csname #1.enc\endcsname}%
+ %
+ % Supported encodings: names converted to tokens in order to be able
+ % to compare them with \ifx.
+ \def\ascii{\csname US-ASCII.enc\endcsname}%
+ \def\latnine{\csname ISO-8859-15.enc\endcsname}%
+ \def\latone{\csname ISO-8859-1.enc\endcsname}%
+ \def\lattwo{\csname ISO-8859-2.enc\endcsname}%
+ \def\utfeight{\csname UTF-8.enc\endcsname}%
+ %
+ \ifx \declaredencoding \ascii
+ \asciichardefs
+ %
+ \else \ifx \declaredencoding \lattwo
+ \setnonasciicharscatcode\active
+ \lattwochardefs
+ %
+ \else \ifx \declaredencoding \latone
+ \setnonasciicharscatcode\active
+ \latonechardefs
+ %
+ \else \ifx \declaredencoding \latnine
+ \setnonasciicharscatcode\active
+ \latninechardefs
+ %
+ \else \ifx \declaredencoding \utfeight
+ \setnonasciicharscatcode\active
+ \utfeightchardefs
+ %
+ \else
+ \message{Unknown document encoding #1, ignoring.}%
+ %
+ \fi % utfeight
+ \fi % latnine
+ \fi % latone
+ \fi % lattwo
+ \fi % ascii
+}
+
+% A message to be logged when using a character that isn't available
+% the default font encoding (OT1).
+%
+\def\missingcharmsg#1{\message{Character missing in OT1 encoding: #1.}}
+
+% Take account of \c (plain) vs. \, (Texinfo) difference.
+\def\cedilla#1{\ifx\c\ptexc\c{#1}\else\,{#1}\fi}
+
+% First, make active non-ASCII characters in order for them to be
+% correctly categorized when TeX reads the replacement text of
+% macros containing the character definitions.
+\setnonasciicharscatcode\active
+%
+% Latin1 (ISO-8859-1) character definitions.
+\def\latonechardefs{%
+ \gdef^^a0{\tie}
+ \gdef^^a1{\exclamdown}
+ \gdef^^a2{\missingcharmsg{CENT SIGN}}
+ \gdef^^a3{{\pounds}}
+ \gdef^^a4{\missingcharmsg{CURRENCY SIGN}}
+ \gdef^^a5{\missingcharmsg{YEN SIGN}}
+ \gdef^^a6{\missingcharmsg{BROKEN BAR}}
+ \gdef^^a7{\S}
+ \gdef^^a8{\"{}}
+ \gdef^^a9{\copyright}
+ \gdef^^aa{\ordf}
+ \gdef^^ab{\guillemetleft}
+ \gdef^^ac{$\lnot$}
+ \gdef^^ad{\-}
+ \gdef^^ae{\registeredsymbol}
+ \gdef^^af{\={}}
+ %
+ \gdef^^b0{\textdegree}
+ \gdef^^b1{$\pm$}
+ \gdef^^b2{$^2$}
+ \gdef^^b3{$^3$}
+ \gdef^^b4{\'{}}
+ \gdef^^b5{$\mu$}
+ \gdef^^b6{\P}
+ %
+ \gdef^^b7{$^.$}
+ \gdef^^b8{\cedilla\ }
+ \gdef^^b9{$^1$}
+ \gdef^^ba{\ordm}
+ %
+ \gdef^^bb{\guillemetright}
+ \gdef^^bc{$1\over4$}
+ \gdef^^bd{$1\over2$}
+ \gdef^^be{$3\over4$}
+ \gdef^^bf{\questiondown}
+ %
+ \gdef^^c0{\`A}
+ \gdef^^c1{\'A}
+ \gdef^^c2{\^A}
+ \gdef^^c3{\~A}
+ \gdef^^c4{\"A}
+ \gdef^^c5{\ringaccent A}
+ \gdef^^c6{\AE}
+ \gdef^^c7{\cedilla C}
+ \gdef^^c8{\`E}
+ \gdef^^c9{\'E}
+ \gdef^^ca{\^E}
+ \gdef^^cb{\"E}
+ \gdef^^cc{\`I}
+ \gdef^^cd{\'I}
+ \gdef^^ce{\^I}
+ \gdef^^cf{\"I}
+ %
+ \gdef^^d0{\DH}
+ \gdef^^d1{\~N}
+ \gdef^^d2{\`O}
+ \gdef^^d3{\'O}
+ \gdef^^d4{\^O}
+ \gdef^^d5{\~O}
+ \gdef^^d6{\"O}
+ \gdef^^d7{$\times$}
+ \gdef^^d8{\O}
+ \gdef^^d9{\`U}
+ \gdef^^da{\'U}
+ \gdef^^db{\^U}
+ \gdef^^dc{\"U}
+ \gdef^^dd{\'Y}
+ \gdef^^de{\TH}
+ \gdef^^df{\ss}
+ %
+ \gdef^^e0{\`a}
+ \gdef^^e1{\'a}
+ \gdef^^e2{\^a}
+ \gdef^^e3{\~a}
+ \gdef^^e4{\"a}
+ \gdef^^e5{\ringaccent a}
+ \gdef^^e6{\ae}
+ \gdef^^e7{\cedilla c}
+ \gdef^^e8{\`e}
+ \gdef^^e9{\'e}
+ \gdef^^ea{\^e}
+ \gdef^^eb{\"e}
+ \gdef^^ec{\`{\dotless i}}
+ \gdef^^ed{\'{\dotless i}}
+ \gdef^^ee{\^{\dotless i}}
+ \gdef^^ef{\"{\dotless i}}
+ %
+ \gdef^^f0{\dh}
+ \gdef^^f1{\~n}
+ \gdef^^f2{\`o}
+ \gdef^^f3{\'o}
+ \gdef^^f4{\^o}
+ \gdef^^f5{\~o}
+ \gdef^^f6{\"o}
+ \gdef^^f7{$\div$}
+ \gdef^^f8{\o}
+ \gdef^^f9{\`u}
+ \gdef^^fa{\'u}
+ \gdef^^fb{\^u}
+ \gdef^^fc{\"u}
+ \gdef^^fd{\'y}
+ \gdef^^fe{\th}
+ \gdef^^ff{\"y}
+}
+
+% Latin9 (ISO-8859-15) encoding character definitions.
+\def\latninechardefs{%
+ % Encoding is almost identical to Latin1.
+ \latonechardefs
+ %
+ \gdef^^a4{\euro}
+ \gdef^^a6{\v S}
+ \gdef^^a8{\v s}
+ \gdef^^b4{\v Z}
+ \gdef^^b8{\v z}
+ \gdef^^bc{\OE}
+ \gdef^^bd{\oe}
+ \gdef^^be{\"Y}
+}
+
+% Latin2 (ISO-8859-2) character definitions.
+\def\lattwochardefs{%
+ \gdef^^a0{\tie}
+ \gdef^^a1{\ogonek{A}}
+ \gdef^^a2{\u{}}
+ \gdef^^a3{\L}
+ \gdef^^a4{\missingcharmsg{CURRENCY SIGN}}
+ \gdef^^a5{\v L}
+ \gdef^^a6{\'S}
+ \gdef^^a7{\S}
+ \gdef^^a8{\"{}}
+ \gdef^^a9{\v S}
+ \gdef^^aa{\cedilla S}
+ \gdef^^ab{\v T}
+ \gdef^^ac{\'Z}
+ \gdef^^ad{\-}
+ \gdef^^ae{\v Z}
+ \gdef^^af{\dotaccent Z}
+ %
+ \gdef^^b0{\textdegree}
+ \gdef^^b1{\ogonek{a}}
+ \gdef^^b2{\ogonek{ }}
+ \gdef^^b3{\l}
+ \gdef^^b4{\'{}}
+ \gdef^^b5{\v l}
+ \gdef^^b6{\'s}
+ \gdef^^b7{\v{}}
+ \gdef^^b8{\cedilla\ }
+ \gdef^^b9{\v s}
+ \gdef^^ba{\cedilla s}
+ \gdef^^bb{\v t}
+ \gdef^^bc{\'z}
+ \gdef^^bd{\H{}}
+ \gdef^^be{\v z}
+ \gdef^^bf{\dotaccent z}
+ %
+ \gdef^^c0{\'R}
+ \gdef^^c1{\'A}
+ \gdef^^c2{\^A}
+ \gdef^^c3{\u A}
+ \gdef^^c4{\"A}
+ \gdef^^c5{\'L}
+ \gdef^^c6{\'C}
+ \gdef^^c7{\cedilla C}
+ \gdef^^c8{\v C}
+ \gdef^^c9{\'E}
+ \gdef^^ca{\ogonek{E}}
+ \gdef^^cb{\"E}
+ \gdef^^cc{\v E}
+ \gdef^^cd{\'I}
+ \gdef^^ce{\^I}
+ \gdef^^cf{\v D}
+ %
+ \gdef^^d0{\DH}
+ \gdef^^d1{\'N}
+ \gdef^^d2{\v N}
+ \gdef^^d3{\'O}
+ \gdef^^d4{\^O}
+ \gdef^^d5{\H O}
+ \gdef^^d6{\"O}
+ \gdef^^d7{$\times$}
+ \gdef^^d8{\v R}
+ \gdef^^d9{\ringaccent U}
+ \gdef^^da{\'U}
+ \gdef^^db{\H U}
+ \gdef^^dc{\"U}
+ \gdef^^dd{\'Y}
+ \gdef^^de{\cedilla T}
+ \gdef^^df{\ss}
+ %
+ \gdef^^e0{\'r}
+ \gdef^^e1{\'a}
+ \gdef^^e2{\^a}
+ \gdef^^e3{\u a}
+ \gdef^^e4{\"a}
+ \gdef^^e5{\'l}
+ \gdef^^e6{\'c}
+ \gdef^^e7{\cedilla c}
+ \gdef^^e8{\v c}
+ \gdef^^e9{\'e}
+ \gdef^^ea{\ogonek{e}}
+ \gdef^^eb{\"e}
+ \gdef^^ec{\v e}
+ \gdef^^ed{\'{\dotless{i}}}
+ \gdef^^ee{\^{\dotless{i}}}
+ \gdef^^ef{\v d}
+ %
+ \gdef^^f0{\dh}
+ \gdef^^f1{\'n}
+ \gdef^^f2{\v n}
+ \gdef^^f3{\'o}
+ \gdef^^f4{\^o}
+ \gdef^^f5{\H o}
+ \gdef^^f6{\"o}
+ \gdef^^f7{$\div$}
+ \gdef^^f8{\v r}
+ \gdef^^f9{\ringaccent u}
+ \gdef^^fa{\'u}
+ \gdef^^fb{\H u}
+ \gdef^^fc{\"u}
+ \gdef^^fd{\'y}
+ \gdef^^fe{\cedilla t}
+ \gdef^^ff{\dotaccent{}}
+}
+
+% UTF-8 character definitions.
+%
+% This code to support UTF-8 is based on LaTeX's utf8.def, with some
+% changes for Texinfo conventions. It is included here under the GPL by
+% permission from Frank Mittelbach and the LaTeX team.
+%
+\newcount\countUTFx
+\newcount\countUTFy
+\newcount\countUTFz
+
+\gdef\UTFviiiTwoOctets#1#2{\expandafter
+ \UTFviiiDefined\csname u8:#1\string #2\endcsname}
+%
+\gdef\UTFviiiThreeOctets#1#2#3{\expandafter
+ \UTFviiiDefined\csname u8:#1\string #2\string #3\endcsname}
+%
+\gdef\UTFviiiFourOctets#1#2#3#4{\expandafter
+ \UTFviiiDefined\csname u8:#1\string #2\string #3\string #4\endcsname}
+
+\gdef\UTFviiiDefined#1{%
+ \ifx #1\relax
+ \message{\linenumber Unicode char \string #1 not defined for Texinfo}%
+ \else
+ \expandafter #1%
+ \fi
+}
+
+\begingroup
+ \catcode`\~13
+ \catcode`\"12
+
+ \def\UTFviiiLoop{%
+ \global\catcode\countUTFx\active
+ \uccode`\~\countUTFx
+ \uppercase\expandafter{\UTFviiiTmp}%
+ \advance\countUTFx by 1
+ \ifnum\countUTFx < \countUTFy
+ \expandafter\UTFviiiLoop
+ \fi}
+
+ \countUTFx = "C2
+ \countUTFy = "E0
+ \def\UTFviiiTmp{%
+ \xdef~{\noexpand\UTFviiiTwoOctets\string~}}
+ \UTFviiiLoop
+
+ \countUTFx = "E0
+ \countUTFy = "F0
+ \def\UTFviiiTmp{%
+ \xdef~{\noexpand\UTFviiiThreeOctets\string~}}
+ \UTFviiiLoop
+
+ \countUTFx = "F0
+ \countUTFy = "F4
+ \def\UTFviiiTmp{%
+ \xdef~{\noexpand\UTFviiiFourOctets\string~}}
+ \UTFviiiLoop
+\endgroup
+
+\begingroup
+ \catcode`\"=12
+ \catcode`\<=12
+ \catcode`\.=12
+ \catcode`\,=12
+ \catcode`\;=12
+ \catcode`\!=12
+ \catcode`\~=13
+
+ \gdef\DeclareUnicodeCharacter#1#2{%
+ \countUTFz = "#1\relax
+ %\wlog{\space\space defining Unicode char U+#1 (decimal \the\countUTFz)}%
+ \begingroup
+ \parseXMLCharref
+ \def\UTFviiiTwoOctets##1##2{%
+ \csname u8:##1\string ##2\endcsname}%
+ \def\UTFviiiThreeOctets##1##2##3{%
+ \csname u8:##1\string ##2\string ##3\endcsname}%
+ \def\UTFviiiFourOctets##1##2##3##4{%
+ \csname u8:##1\string ##2\string ##3\string ##4\endcsname}%
+ \expandafter\expandafter\expandafter\expandafter
+ \expandafter\expandafter\expandafter
+ \gdef\UTFviiiTmp{#2}%
+ \endgroup}
+
+ \gdef\parseXMLCharref{%
+ \ifnum\countUTFz < "A0\relax
+ \errhelp = \EMsimple
+ \errmessage{Cannot define Unicode char value < 00A0}%
+ \else\ifnum\countUTFz < "800\relax
+ \parseUTFviiiA,%
+ \parseUTFviiiB C\UTFviiiTwoOctets.,%
+ \else\ifnum\countUTFz < "10000\relax
+ \parseUTFviiiA;%
+ \parseUTFviiiA,%
+ \parseUTFviiiB E\UTFviiiThreeOctets.{,;}%
+ \else
+ \parseUTFviiiA;%
+ \parseUTFviiiA,%
+ \parseUTFviiiA!%
+ \parseUTFviiiB F\UTFviiiFourOctets.{!,;}%
+ \fi\fi\fi
+ }
+
+ \gdef\parseUTFviiiA#1{%
+ \countUTFx = \countUTFz
+ \divide\countUTFz by 64
+ \countUTFy = \countUTFz
+ \multiply\countUTFz by 64
+ \advance\countUTFx by -\countUTFz
+ \advance\countUTFx by 128
+ \uccode `#1\countUTFx
+ \countUTFz = \countUTFy}
+
+ \gdef\parseUTFviiiB#1#2#3#4{%
+ \advance\countUTFz by "#10\relax
+ \uccode `#3\countUTFz
+ \uppercase{\gdef\UTFviiiTmp{#2#3#4}}}
+\endgroup
+
+\def\utfeightchardefs{%
+ \DeclareUnicodeCharacter{00A0}{\tie}
+ \DeclareUnicodeCharacter{00A1}{\exclamdown}
+ \DeclareUnicodeCharacter{00A3}{\pounds}
+ \DeclareUnicodeCharacter{00A8}{\"{ }}
+ \DeclareUnicodeCharacter{00A9}{\copyright}
+ \DeclareUnicodeCharacter{00AA}{\ordf}
+ \DeclareUnicodeCharacter{00AB}{\guillemetleft}
+ \DeclareUnicodeCharacter{00AD}{\-}
+ \DeclareUnicodeCharacter{00AE}{\registeredsymbol}
+ \DeclareUnicodeCharacter{00AF}{\={ }}
+
+ \DeclareUnicodeCharacter{00B0}{\ringaccent{ }}
+ \DeclareUnicodeCharacter{00B4}{\'{ }}
+ \DeclareUnicodeCharacter{00B8}{\cedilla{ }}
+ \DeclareUnicodeCharacter{00BA}{\ordm}
+ \DeclareUnicodeCharacter{00BB}{\guillemetright}
+ \DeclareUnicodeCharacter{00BF}{\questiondown}
+
+ \DeclareUnicodeCharacter{00C0}{\`A}
+ \DeclareUnicodeCharacter{00C1}{\'A}
+ \DeclareUnicodeCharacter{00C2}{\^A}
+ \DeclareUnicodeCharacter{00C3}{\~A}
+ \DeclareUnicodeCharacter{00C4}{\"A}
+ \DeclareUnicodeCharacter{00C5}{\AA}
+ \DeclareUnicodeCharacter{00C6}{\AE}
+ \DeclareUnicodeCharacter{00C7}{\cedilla{C}}
+ \DeclareUnicodeCharacter{00C8}{\`E}
+ \DeclareUnicodeCharacter{00C9}{\'E}
+ \DeclareUnicodeCharacter{00CA}{\^E}
+ \DeclareUnicodeCharacter{00CB}{\"E}
+ \DeclareUnicodeCharacter{00CC}{\`I}
+ \DeclareUnicodeCharacter{00CD}{\'I}
+ \DeclareUnicodeCharacter{00CE}{\^I}
+ \DeclareUnicodeCharacter{00CF}{\"I}
+
+ \DeclareUnicodeCharacter{00D0}{\DH}
+ \DeclareUnicodeCharacter{00D1}{\~N}
+ \DeclareUnicodeCharacter{00D2}{\`O}
+ \DeclareUnicodeCharacter{00D3}{\'O}
+ \DeclareUnicodeCharacter{00D4}{\^O}
+ \DeclareUnicodeCharacter{00D5}{\~O}
+ \DeclareUnicodeCharacter{00D6}{\"O}
+ \DeclareUnicodeCharacter{00D8}{\O}
+ \DeclareUnicodeCharacter{00D9}{\`U}
+ \DeclareUnicodeCharacter{00DA}{\'U}
+ \DeclareUnicodeCharacter{00DB}{\^U}
+ \DeclareUnicodeCharacter{00DC}{\"U}
+ \DeclareUnicodeCharacter{00DD}{\'Y}
+ \DeclareUnicodeCharacter{00DE}{\TH}
+ \DeclareUnicodeCharacter{00DF}{\ss}
+
+ \DeclareUnicodeCharacter{00E0}{\`a}
+ \DeclareUnicodeCharacter{00E1}{\'a}
+ \DeclareUnicodeCharacter{00E2}{\^a}
+ \DeclareUnicodeCharacter{00E3}{\~a}
+ \DeclareUnicodeCharacter{00E4}{\"a}
+ \DeclareUnicodeCharacter{00E5}{\aa}
+ \DeclareUnicodeCharacter{00E6}{\ae}
+ \DeclareUnicodeCharacter{00E7}{\cedilla{c}}
+ \DeclareUnicodeCharacter{00E8}{\`e}
+ \DeclareUnicodeCharacter{00E9}{\'e}
+ \DeclareUnicodeCharacter{00EA}{\^e}
+ \DeclareUnicodeCharacter{00EB}{\"e}
+ \DeclareUnicodeCharacter{00EC}{\`{\dotless{i}}}
+ \DeclareUnicodeCharacter{00ED}{\'{\dotless{i}}}
+ \DeclareUnicodeCharacter{00EE}{\^{\dotless{i}}}
+ \DeclareUnicodeCharacter{00EF}{\"{\dotless{i}}}
+
+ \DeclareUnicodeCharacter{00F0}{\dh}
+ \DeclareUnicodeCharacter{00F1}{\~n}
+ \DeclareUnicodeCharacter{00F2}{\`o}
+ \DeclareUnicodeCharacter{00F3}{\'o}
+ \DeclareUnicodeCharacter{00F4}{\^o}
+ \DeclareUnicodeCharacter{00F5}{\~o}
+ \DeclareUnicodeCharacter{00F6}{\"o}
+ \DeclareUnicodeCharacter{00F8}{\o}
+ \DeclareUnicodeCharacter{00F9}{\`u}
+ \DeclareUnicodeCharacter{00FA}{\'u}
+ \DeclareUnicodeCharacter{00FB}{\^u}
+ \DeclareUnicodeCharacter{00FC}{\"u}
+ \DeclareUnicodeCharacter{00FD}{\'y}
+ \DeclareUnicodeCharacter{00FE}{\th}
+ \DeclareUnicodeCharacter{00FF}{\"y}
+
+ \DeclareUnicodeCharacter{0100}{\=A}
+ \DeclareUnicodeCharacter{0101}{\=a}
+ \DeclareUnicodeCharacter{0102}{\u{A}}
+ \DeclareUnicodeCharacter{0103}{\u{a}}
+ \DeclareUnicodeCharacter{0104}{\ogonek{A}}
+ \DeclareUnicodeCharacter{0105}{\ogonek{a}}
+ \DeclareUnicodeCharacter{0106}{\'C}
+ \DeclareUnicodeCharacter{0107}{\'c}
+ \DeclareUnicodeCharacter{0108}{\^C}
+ \DeclareUnicodeCharacter{0109}{\^c}
+ \DeclareUnicodeCharacter{0118}{\ogonek{E}}
+ \DeclareUnicodeCharacter{0119}{\ogonek{e}}
+ \DeclareUnicodeCharacter{010A}{\dotaccent{C}}
+ \DeclareUnicodeCharacter{010B}{\dotaccent{c}}
+ \DeclareUnicodeCharacter{010C}{\v{C}}
+ \DeclareUnicodeCharacter{010D}{\v{c}}
+ \DeclareUnicodeCharacter{010E}{\v{D}}
+
+ \DeclareUnicodeCharacter{0112}{\=E}
+ \DeclareUnicodeCharacter{0113}{\=e}
+ \DeclareUnicodeCharacter{0114}{\u{E}}
+ \DeclareUnicodeCharacter{0115}{\u{e}}
+ \DeclareUnicodeCharacter{0116}{\dotaccent{E}}
+ \DeclareUnicodeCharacter{0117}{\dotaccent{e}}
+ \DeclareUnicodeCharacter{011A}{\v{E}}
+ \DeclareUnicodeCharacter{011B}{\v{e}}
+ \DeclareUnicodeCharacter{011C}{\^G}
+ \DeclareUnicodeCharacter{011D}{\^g}
+ \DeclareUnicodeCharacter{011E}{\u{G}}
+ \DeclareUnicodeCharacter{011F}{\u{g}}
+
+ \DeclareUnicodeCharacter{0120}{\dotaccent{G}}
+ \DeclareUnicodeCharacter{0121}{\dotaccent{g}}
+ \DeclareUnicodeCharacter{0124}{\^H}
+ \DeclareUnicodeCharacter{0125}{\^h}
+ \DeclareUnicodeCharacter{0128}{\~I}
+ \DeclareUnicodeCharacter{0129}{\~{\dotless{i}}}
+ \DeclareUnicodeCharacter{012A}{\=I}
+ \DeclareUnicodeCharacter{012B}{\={\dotless{i}}}
+ \DeclareUnicodeCharacter{012C}{\u{I}}
+ \DeclareUnicodeCharacter{012D}{\u{\dotless{i}}}
+
+ \DeclareUnicodeCharacter{0130}{\dotaccent{I}}
+ \DeclareUnicodeCharacter{0131}{\dotless{i}}
+ \DeclareUnicodeCharacter{0132}{IJ}
+ \DeclareUnicodeCharacter{0133}{ij}
+ \DeclareUnicodeCharacter{0134}{\^J}
+ \DeclareUnicodeCharacter{0135}{\^{\dotless{j}}}
+ \DeclareUnicodeCharacter{0139}{\'L}
+ \DeclareUnicodeCharacter{013A}{\'l}
+
+ \DeclareUnicodeCharacter{0141}{\L}
+ \DeclareUnicodeCharacter{0142}{\l}
+ \DeclareUnicodeCharacter{0143}{\'N}
+ \DeclareUnicodeCharacter{0144}{\'n}
+ \DeclareUnicodeCharacter{0147}{\v{N}}
+ \DeclareUnicodeCharacter{0148}{\v{n}}
+ \DeclareUnicodeCharacter{014C}{\=O}
+ \DeclareUnicodeCharacter{014D}{\=o}
+ \DeclareUnicodeCharacter{014E}{\u{O}}
+ \DeclareUnicodeCharacter{014F}{\u{o}}
+
+ \DeclareUnicodeCharacter{0150}{\H{O}}
+ \DeclareUnicodeCharacter{0151}{\H{o}}
+ \DeclareUnicodeCharacter{0152}{\OE}
+ \DeclareUnicodeCharacter{0153}{\oe}
+ \DeclareUnicodeCharacter{0154}{\'R}
+ \DeclareUnicodeCharacter{0155}{\'r}
+ \DeclareUnicodeCharacter{0158}{\v{R}}
+ \DeclareUnicodeCharacter{0159}{\v{r}}
+ \DeclareUnicodeCharacter{015A}{\'S}
+ \DeclareUnicodeCharacter{015B}{\'s}
+ \DeclareUnicodeCharacter{015C}{\^S}
+ \DeclareUnicodeCharacter{015D}{\^s}
+ \DeclareUnicodeCharacter{015E}{\cedilla{S}}
+ \DeclareUnicodeCharacter{015F}{\cedilla{s}}
+
+ \DeclareUnicodeCharacter{0160}{\v{S}}
+ \DeclareUnicodeCharacter{0161}{\v{s}}
+ \DeclareUnicodeCharacter{0162}{\cedilla{t}}
+ \DeclareUnicodeCharacter{0163}{\cedilla{T}}
+ \DeclareUnicodeCharacter{0164}{\v{T}}
+
+ \DeclareUnicodeCharacter{0168}{\~U}
+ \DeclareUnicodeCharacter{0169}{\~u}
+ \DeclareUnicodeCharacter{016A}{\=U}
+ \DeclareUnicodeCharacter{016B}{\=u}
+ \DeclareUnicodeCharacter{016C}{\u{U}}
+ \DeclareUnicodeCharacter{016D}{\u{u}}
+ \DeclareUnicodeCharacter{016E}{\ringaccent{U}}
+ \DeclareUnicodeCharacter{016F}{\ringaccent{u}}
+
+ \DeclareUnicodeCharacter{0170}{\H{U}}
+ \DeclareUnicodeCharacter{0171}{\H{u}}
+ \DeclareUnicodeCharacter{0174}{\^W}
+ \DeclareUnicodeCharacter{0175}{\^w}
+ \DeclareUnicodeCharacter{0176}{\^Y}
+ \DeclareUnicodeCharacter{0177}{\^y}
+ \DeclareUnicodeCharacter{0178}{\"Y}
+ \DeclareUnicodeCharacter{0179}{\'Z}
+ \DeclareUnicodeCharacter{017A}{\'z}
+ \DeclareUnicodeCharacter{017B}{\dotaccent{Z}}
+ \DeclareUnicodeCharacter{017C}{\dotaccent{z}}
+ \DeclareUnicodeCharacter{017D}{\v{Z}}
+ \DeclareUnicodeCharacter{017E}{\v{z}}
+
+ \DeclareUnicodeCharacter{01C4}{D\v{Z}}
+ \DeclareUnicodeCharacter{01C5}{D\v{z}}
+ \DeclareUnicodeCharacter{01C6}{d\v{z}}
+ \DeclareUnicodeCharacter{01C7}{LJ}
+ \DeclareUnicodeCharacter{01C8}{Lj}
+ \DeclareUnicodeCharacter{01C9}{lj}
+ \DeclareUnicodeCharacter{01CA}{NJ}
+ \DeclareUnicodeCharacter{01CB}{Nj}
+ \DeclareUnicodeCharacter{01CC}{nj}
+ \DeclareUnicodeCharacter{01CD}{\v{A}}
+ \DeclareUnicodeCharacter{01CE}{\v{a}}
+ \DeclareUnicodeCharacter{01CF}{\v{I}}
+
+ \DeclareUnicodeCharacter{01D0}{\v{\dotless{i}}}
+ \DeclareUnicodeCharacter{01D1}{\v{O}}
+ \DeclareUnicodeCharacter{01D2}{\v{o}}
+ \DeclareUnicodeCharacter{01D3}{\v{U}}
+ \DeclareUnicodeCharacter{01D4}{\v{u}}
+
+ \DeclareUnicodeCharacter{01E2}{\={\AE}}
+ \DeclareUnicodeCharacter{01E3}{\={\ae}}
+ \DeclareUnicodeCharacter{01E6}{\v{G}}
+ \DeclareUnicodeCharacter{01E7}{\v{g}}
+ \DeclareUnicodeCharacter{01E8}{\v{K}}
+ \DeclareUnicodeCharacter{01E9}{\v{k}}
+
+ \DeclareUnicodeCharacter{01F0}{\v{\dotless{j}}}
+ \DeclareUnicodeCharacter{01F1}{DZ}
+ \DeclareUnicodeCharacter{01F2}{Dz}
+ \DeclareUnicodeCharacter{01F3}{dz}
+ \DeclareUnicodeCharacter{01F4}{\'G}
+ \DeclareUnicodeCharacter{01F5}{\'g}
+ \DeclareUnicodeCharacter{01F8}{\`N}
+ \DeclareUnicodeCharacter{01F9}{\`n}
+ \DeclareUnicodeCharacter{01FC}{\'{\AE}}
+ \DeclareUnicodeCharacter{01FD}{\'{\ae}}
+ \DeclareUnicodeCharacter{01FE}{\'{\O}}
+ \DeclareUnicodeCharacter{01FF}{\'{\o}}
+
+ \DeclareUnicodeCharacter{021E}{\v{H}}
+ \DeclareUnicodeCharacter{021F}{\v{h}}
+
+ \DeclareUnicodeCharacter{0226}{\dotaccent{A}}
+ \DeclareUnicodeCharacter{0227}{\dotaccent{a}}
+ \DeclareUnicodeCharacter{0228}{\cedilla{E}}
+ \DeclareUnicodeCharacter{0229}{\cedilla{e}}
+ \DeclareUnicodeCharacter{022E}{\dotaccent{O}}
+ \DeclareUnicodeCharacter{022F}{\dotaccent{o}}
+
+ \DeclareUnicodeCharacter{0232}{\=Y}
+ \DeclareUnicodeCharacter{0233}{\=y}
+ \DeclareUnicodeCharacter{0237}{\dotless{j}}
+
+ \DeclareUnicodeCharacter{02DB}{\ogonek{ }}
+
+ \DeclareUnicodeCharacter{1E02}{\dotaccent{B}}
+ \DeclareUnicodeCharacter{1E03}{\dotaccent{b}}
+ \DeclareUnicodeCharacter{1E04}{\udotaccent{B}}
+ \DeclareUnicodeCharacter{1E05}{\udotaccent{b}}
+ \DeclareUnicodeCharacter{1E06}{\ubaraccent{B}}
+ \DeclareUnicodeCharacter{1E07}{\ubaraccent{b}}
+ \DeclareUnicodeCharacter{1E0A}{\dotaccent{D}}
+ \DeclareUnicodeCharacter{1E0B}{\dotaccent{d}}
+ \DeclareUnicodeCharacter{1E0C}{\udotaccent{D}}
+ \DeclareUnicodeCharacter{1E0D}{\udotaccent{d}}
+ \DeclareUnicodeCharacter{1E0E}{\ubaraccent{D}}
+ \DeclareUnicodeCharacter{1E0F}{\ubaraccent{d}}
+
+ \DeclareUnicodeCharacter{1E1E}{\dotaccent{F}}
+ \DeclareUnicodeCharacter{1E1F}{\dotaccent{f}}
+
+ \DeclareUnicodeCharacter{1E20}{\=G}
+ \DeclareUnicodeCharacter{1E21}{\=g}
+ \DeclareUnicodeCharacter{1E22}{\dotaccent{H}}
+ \DeclareUnicodeCharacter{1E23}{\dotaccent{h}}
+ \DeclareUnicodeCharacter{1E24}{\udotaccent{H}}
+ \DeclareUnicodeCharacter{1E25}{\udotaccent{h}}
+ \DeclareUnicodeCharacter{1E26}{\"H}
+ \DeclareUnicodeCharacter{1E27}{\"h}
+
+ \DeclareUnicodeCharacter{1E30}{\'K}
+ \DeclareUnicodeCharacter{1E31}{\'k}
+ \DeclareUnicodeCharacter{1E32}{\udotaccent{K}}
+ \DeclareUnicodeCharacter{1E33}{\udotaccent{k}}
+ \DeclareUnicodeCharacter{1E34}{\ubaraccent{K}}
+ \DeclareUnicodeCharacter{1E35}{\ubaraccent{k}}
+ \DeclareUnicodeCharacter{1E36}{\udotaccent{L}}
+ \DeclareUnicodeCharacter{1E37}{\udotaccent{l}}
+ \DeclareUnicodeCharacter{1E3A}{\ubaraccent{L}}
+ \DeclareUnicodeCharacter{1E3B}{\ubaraccent{l}}
+ \DeclareUnicodeCharacter{1E3E}{\'M}
+ \DeclareUnicodeCharacter{1E3F}{\'m}
+
+ \DeclareUnicodeCharacter{1E40}{\dotaccent{M}}
+ \DeclareUnicodeCharacter{1E41}{\dotaccent{m}}
+ \DeclareUnicodeCharacter{1E42}{\udotaccent{M}}
+ \DeclareUnicodeCharacter{1E43}{\udotaccent{m}}
+ \DeclareUnicodeCharacter{1E44}{\dotaccent{N}}
+ \DeclareUnicodeCharacter{1E45}{\dotaccent{n}}
+ \DeclareUnicodeCharacter{1E46}{\udotaccent{N}}
+ \DeclareUnicodeCharacter{1E47}{\udotaccent{n}}
+ \DeclareUnicodeCharacter{1E48}{\ubaraccent{N}}
+ \DeclareUnicodeCharacter{1E49}{\ubaraccent{n}}
+
+ \DeclareUnicodeCharacter{1E54}{\'P}
+ \DeclareUnicodeCharacter{1E55}{\'p}
+ \DeclareUnicodeCharacter{1E56}{\dotaccent{P}}
+ \DeclareUnicodeCharacter{1E57}{\dotaccent{p}}
+ \DeclareUnicodeCharacter{1E58}{\dotaccent{R}}
+ \DeclareUnicodeCharacter{1E59}{\dotaccent{r}}
+ \DeclareUnicodeCharacter{1E5A}{\udotaccent{R}}
+ \DeclareUnicodeCharacter{1E5B}{\udotaccent{r}}
+ \DeclareUnicodeCharacter{1E5E}{\ubaraccent{R}}
+ \DeclareUnicodeCharacter{1E5F}{\ubaraccent{r}}
+
+ \DeclareUnicodeCharacter{1E60}{\dotaccent{S}}
+ \DeclareUnicodeCharacter{1E61}{\dotaccent{s}}
+ \DeclareUnicodeCharacter{1E62}{\udotaccent{S}}
+ \DeclareUnicodeCharacter{1E63}{\udotaccent{s}}
+ \DeclareUnicodeCharacter{1E6A}{\dotaccent{T}}
+ \DeclareUnicodeCharacter{1E6B}{\dotaccent{t}}
+ \DeclareUnicodeCharacter{1E6C}{\udotaccent{T}}
+ \DeclareUnicodeCharacter{1E6D}{\udotaccent{t}}
+ \DeclareUnicodeCharacter{1E6E}{\ubaraccent{T}}
+ \DeclareUnicodeCharacter{1E6F}{\ubaraccent{t}}
+
+ \DeclareUnicodeCharacter{1E7C}{\~V}
+ \DeclareUnicodeCharacter{1E7D}{\~v}
+ \DeclareUnicodeCharacter{1E7E}{\udotaccent{V}}
+ \DeclareUnicodeCharacter{1E7F}{\udotaccent{v}}
+
+ \DeclareUnicodeCharacter{1E80}{\`W}
+ \DeclareUnicodeCharacter{1E81}{\`w}
+ \DeclareUnicodeCharacter{1E82}{\'W}
+ \DeclareUnicodeCharacter{1E83}{\'w}
+ \DeclareUnicodeCharacter{1E84}{\"W}
+ \DeclareUnicodeCharacter{1E85}{\"w}
+ \DeclareUnicodeCharacter{1E86}{\dotaccent{W}}
+ \DeclareUnicodeCharacter{1E87}{\dotaccent{w}}
+ \DeclareUnicodeCharacter{1E88}{\udotaccent{W}}
+ \DeclareUnicodeCharacter{1E89}{\udotaccent{w}}
+ \DeclareUnicodeCharacter{1E8A}{\dotaccent{X}}
+ \DeclareUnicodeCharacter{1E8B}{\dotaccent{x}}
+ \DeclareUnicodeCharacter{1E8C}{\"X}
+ \DeclareUnicodeCharacter{1E8D}{\"x}
+ \DeclareUnicodeCharacter{1E8E}{\dotaccent{Y}}
+ \DeclareUnicodeCharacter{1E8F}{\dotaccent{y}}
+
+ \DeclareUnicodeCharacter{1E90}{\^Z}
+ \DeclareUnicodeCharacter{1E91}{\^z}
+ \DeclareUnicodeCharacter{1E92}{\udotaccent{Z}}
+ \DeclareUnicodeCharacter{1E93}{\udotaccent{z}}
+ \DeclareUnicodeCharacter{1E94}{\ubaraccent{Z}}
+ \DeclareUnicodeCharacter{1E95}{\ubaraccent{z}}
+ \DeclareUnicodeCharacter{1E96}{\ubaraccent{h}}
+ \DeclareUnicodeCharacter{1E97}{\"t}
+ \DeclareUnicodeCharacter{1E98}{\ringaccent{w}}
+ \DeclareUnicodeCharacter{1E99}{\ringaccent{y}}
+
+ \DeclareUnicodeCharacter{1EA0}{\udotaccent{A}}
+ \DeclareUnicodeCharacter{1EA1}{\udotaccent{a}}
+
+ \DeclareUnicodeCharacter{1EB8}{\udotaccent{E}}
+ \DeclareUnicodeCharacter{1EB9}{\udotaccent{e}}
+ \DeclareUnicodeCharacter{1EBC}{\~E}
+ \DeclareUnicodeCharacter{1EBD}{\~e}
+
+ \DeclareUnicodeCharacter{1ECA}{\udotaccent{I}}
+ \DeclareUnicodeCharacter{1ECB}{\udotaccent{i}}
+ \DeclareUnicodeCharacter{1ECC}{\udotaccent{O}}
+ \DeclareUnicodeCharacter{1ECD}{\udotaccent{o}}
+
+ \DeclareUnicodeCharacter{1EE4}{\udotaccent{U}}
+ \DeclareUnicodeCharacter{1EE5}{\udotaccent{u}}
+
+ \DeclareUnicodeCharacter{1EF2}{\`Y}
+ \DeclareUnicodeCharacter{1EF3}{\`y}
+ \DeclareUnicodeCharacter{1EF4}{\udotaccent{Y}}
+
+ \DeclareUnicodeCharacter{1EF8}{\~Y}
+ \DeclareUnicodeCharacter{1EF9}{\~y}
+
+ \DeclareUnicodeCharacter{2013}{--}
+ \DeclareUnicodeCharacter{2014}{---}
+ \DeclareUnicodeCharacter{2018}{\quoteleft}
+ \DeclareUnicodeCharacter{2019}{\quoteright}
+ \DeclareUnicodeCharacter{201A}{\quotesinglbase}
+ \DeclareUnicodeCharacter{201C}{\quotedblleft}
+ \DeclareUnicodeCharacter{201D}{\quotedblright}
+ \DeclareUnicodeCharacter{201E}{\quotedblbase}
+ \DeclareUnicodeCharacter{2022}{\bullet}
+ \DeclareUnicodeCharacter{2026}{\dots}
+ \DeclareUnicodeCharacter{2039}{\guilsinglleft}
+ \DeclareUnicodeCharacter{203A}{\guilsinglright}
+ \DeclareUnicodeCharacter{20AC}{\euro}
+
+ \DeclareUnicodeCharacter{2192}{\expansion}
+ \DeclareUnicodeCharacter{21D2}{\result}
+
+ \DeclareUnicodeCharacter{2212}{\minus}
+ \DeclareUnicodeCharacter{2217}{\point}
+ \DeclareUnicodeCharacter{2261}{\equiv}
+}% end of \utfeightchardefs
+
+
+% US-ASCII character definitions.
+\def\asciichardefs{% nothing need be done
+ \relax
+}
+
+% Make non-ASCII characters printable again for compatibility with
+% existing Texinfo documents that may use them, even without declaring a
+% document encoding.
+%
+\setnonasciicharscatcode \other
+
+
+\message{formatting,}
+
\newdimen\defaultparindent \defaultparindent = 15pt
\chapheadingskip = 15pt plus 4pt minus 2pt
@@ -6661,10 +9671,10 @@ should work if nowhere else does.}
% Prevent underfull vbox error messages.
\vbadness = 10000
-% Don't be so finicky about underfull hboxes, either.
-\hbadness = 2000
+% Don't be very finicky about underfull hboxes, either.
+\hbadness = 6666
-% Following George Bush, just get rid of widows and orphans.
+% Following George Bush, get rid of widows and orphans.
\widowpenalty=10000
\clubpenalty=10000
@@ -6682,9 +9692,9 @@ should work if nowhere else does.}
\fi
}
-% Parameters in order: 1) textheight; 2) textwidth; 3) voffset;
-% 4) hoffset; 5) binding offset; 6) topskip; 7) physical page height; 8)
-% physical page width.
+% Parameters in order: 1) textheight; 2) textwidth;
+% 3) voffset; 4) hoffset; 5) binding offset; 6) topskip;
+% 7) physical page height; 8) physical page width.
%
% We also call \setleading{\textleading}, so the caller should define
% \textleading. The caller should also set \parskip.
@@ -6711,6 +9721,10 @@ should work if nowhere else does.}
\ifpdf
\pdfpageheight #7\relax
\pdfpagewidth #8\relax
+ % if we don't reset these, they will remain at "1 true in" of
+ % whatever layout pdftex was dumped with.
+ \pdfhorigin = 1 true in
+ \pdfvorigin = 1 true in
\fi
%
\setleading{\textleading}
@@ -6725,19 +9739,19 @@ should work if nowhere else does.}
\textleading = 13.2pt
%
% If page is nothing but text, make it come out even.
- \internalpagesizes{46\baselineskip}{6in}%
+ \internalpagesizes{607.2pt}{6in}% that's 46 lines
{\voffset}{.25in}%
{\bindingoffset}{36pt}%
{11in}{8.5in}%
}}
-% Use @smallbook to reset parameters for 7x9.5 (or so) format.
+% Use @smallbook to reset parameters for 7x9.25 trim size.
\def\smallbook{{\globaldefs = 1
\parskip = 2pt plus 1pt
\textleading = 12pt
%
\internalpagesizes{7.5in}{5in}%
- {\voffset}{.25in}%
+ {-.2in}{0in}%
{\bindingoffset}{16pt}%
{9.25in}{7in}%
%
@@ -6748,6 +9762,24 @@ should work if nowhere else does.}
\defbodyindent = .5cm
}}
+% Use @smallerbook to reset parameters for 6x9 trim size.
+% (Just testing, parameters still in flux.)
+\def\smallerbook{{\globaldefs = 1
+ \parskip = 1.5pt plus 1pt
+ \textleading = 12pt
+ %
+ \internalpagesizes{7.4in}{4.8in}%
+ {-.2in}{-.4in}%
+ {0pt}{14pt}%
+ {9in}{6in}%
+ %
+ \lispnarrowing = 0.25in
+ \tolerance = 700
+ \hfuzz = 1pt
+ \contentsrightmargin = 0pt
+ \defbodyindent = .4cm
+}}
+
% Use @afourpaper to print on European A4 paper.
\def\afourpaper{{\globaldefs = 1
\parskip = 3pt plus 2pt minus 1pt
@@ -6763,7 +9795,7 @@ should work if nowhere else does.}
% \global\normaloffset = -6mm
% \global\bindingoffset = 10mm
% @end tex
- \internalpagesizes{51\baselineskip}{160mm}
+ \internalpagesizes{673.2pt}{160mm}% that's 51 lines
{\voffset}{\hoffset}%
{\bindingoffset}{44pt}%
{297mm}{210mm}%
@@ -6828,7 +9860,7 @@ should work if nowhere else does.}
\parskip = 3pt plus 2pt minus 1pt
\setleading{\textleading}%
%
- \dimen0 = #1
+ \dimen0 = #1\relax
\advance\dimen0 by \voffset
%
\dimen2 = \hsize
@@ -6847,25 +9879,21 @@ should work if nowhere else does.}
\message{and turning on texinfo input format.}
+\def^^L{\par} % remove \outer, so ^L can appear in an @comment
+
+% DEL is a comment character, in case @c does not suffice.
+\catcode`\^^? = 14
+
% Define macros to output various characters with catcode for normal text.
-\catcode`\"=\other
-\catcode`\~=\other
-\catcode`\^=\other
-\catcode`\_=\other
-\catcode`\|=\other
-\catcode`\<=\other
-\catcode`\>=\other
-\catcode`\+=\other
-\catcode`\$=\other
-\def\normaldoublequote{"}
-\def\normaltilde{~}
-\def\normalcaret{^}
-\def\normalunderscore{_}
-\def\normalverticalbar{|}
-\def\normalless{<}
-\def\normalgreater{>}
-\def\normalplus{+}
-\def\normaldollar{$}%$ font-lock fix
+\catcode`\"=\other \def\normaldoublequote{"}
+\catcode`\$=\other \def\normaldollar{$}%$ font-lock fix
+\catcode`\+=\other \def\normalplus{+}
+\catcode`\<=\other \def\normalless{<}
+\catcode`\>=\other \def\normalgreater{>}
+\catcode`\^=\other \def\normalcaret{^}
+\catcode`\_=\other \def\normalunderscore{_}
+\catcode`\|=\other \def\normalverticalbar{|}
+\catcode`\~=\other \def\normaltilde{~}
% This macro is used to make a character print one way in \tt
% (where it can probably be output as-is), and another way in other fonts,
@@ -6900,6 +9928,7 @@ should work if nowhere else does.}
\catcode`\_=\active
\def_{\ifusingtt\normalunderscore\_}
+\let\realunder=_
% Subroutine for the previous macro.
\def\_{\leavevmode \kern.07em \vbox{\hrule width.3em height.1ex}\kern .07em }
@@ -6922,6 +9951,13 @@ should work if nowhere else does.}
% \otherifyactive is called near the end of this file.
\def\otherifyactive{\catcode`+=\other \catcode`\_=\other}
+% Used sometimes to turn off (effectively) the active characters even after
+% parsing them.
+\def\turnoffactive{%
+ \normalturnoffactive
+ \otherbackslash
+}
+
\catcode`\@=0
% \backslashcurfont outputs one backslash character in current font,
@@ -6929,43 +9965,55 @@ should work if nowhere else does.}
\global\chardef\backslashcurfont=`\\
\global\let\rawbackslashxx=\backslashcurfont % let existing .??s files work
+% \realbackslash is an actual character `\' with catcode other, and
+% \doublebackslash is two of them (for the pdf outlines).
+{\catcode`\\=\other @gdef@realbackslash{\} @gdef@doublebackslash{\\}}
+
+% In texinfo, backslash is an active character; it prints the backslash
+% in fixed width font.
+\catcode`\\=\active % @ for escape char from now on.
+
+% The story here is that in math mode, the \char of \backslashcurfont
+% ends up printing the roman \ from the math symbol font (because \char
+% in math mode uses the \mathcode, and plain.tex sets
+% \mathcode`\\="026E). It seems better for @backslashchar{} to always
+% print a typewriter backslash, hence we use an explicit \mathchar,
+% which is the decimal equivalent of "715c (class 7, e.g., use \fam;
+% ignored family value; char position "5C). We can't use " for the
+% usual hex value because it has already been made active.
+@def@normalbackslash{{@tt @ifmmode @mathchar29020 @else @backslashcurfont @fi}}
+@let@backslashchar = @normalbackslash % @backslashchar{} is for user documents.
+
+% On startup, @fixbackslash assigns:
+% @let \ = @normalbackslash
% \rawbackslash defines an active \ to do \backslashcurfont.
% \otherbackslash defines an active \ to be a literal `\' character with
-% catcode other.
-{\catcode`\\=\active
- @gdef@rawbackslash{@let\=@backslashcurfont}
- @gdef@otherbackslash{@let\=@realbackslash}
-}
-
-% \realbackslash is an actual character `\' with catcode other.
-{\catcode`\\=\other @gdef@realbackslash{\}}
-
-% \normalbackslash outputs one backslash in fixed width font.
-\def\normalbackslash{{\tt\backslashcurfont}}
-
-\catcode`\\=\active
-
-% Used sometimes to turn off (effectively) the active characters
-% even after parsing them.
-@def@turnoffactive{%
- @let"=@normaldoublequote
- @let\=@realbackslash
- @let~=@normaltilde
- @let^=@normalcaret
- @let_=@normalunderscore
- @let|=@normalverticalbar
- @let<=@normalless
- @let>=@normalgreater
- @let+=@normalplus
- @let$=@normaldollar %$ font-lock fix
- @unsepspaces
-}
+% catcode other. We switch back and forth between these.
+@gdef@rawbackslash{@let\=@backslashcurfont}
+@gdef@otherbackslash{@let\=@realbackslash}
% Same as @turnoffactive except outputs \ as {\tt\char`\\} instead of
-% the literal character `\'. (Thus, \ is not expandable when this is in
-% effect.)
-%
-@def@normalturnoffactive{@turnoffactive @let\=@normalbackslash}
+% the literal character `\'. Also revert - to its normal character, in
+% case the active - from code has slipped in.
+%
+{@catcode`- = @active
+ @gdef@normalturnoffactive{%
+ @let-=@normaldash
+ @let"=@normaldoublequote
+ @let$=@normaldollar %$ font-lock fix
+ @let+=@normalplus
+ @let<=@normalless
+ @let>=@normalgreater
+ @let\=@normalbackslash
+ @let^=@normalcaret
+ @let_=@normalunderscore
+ @let|=@normalverticalbar
+ @let~=@normaltilde
+ @markupsetuplqdefault
+ @markupsetuprqdefault
+ @unsepspaces
+ }
+}
% Make _ and + \other characters, temporarily.
% This is canceled by @fixbackslash.
@@ -6979,9 +10027,9 @@ should work if nowhere else does.}
@global@let\ = @eatinput
% On the other hand, perhaps the file did not have a `\input texinfo'. Then
-% the first `\{ in the file would cause an error. This macro tries to fix
+% the first `\' in the file would cause an error. This macro tries to fix
% that, assuming it is called before the first `\' could plausibly occur.
-% Also back turn on active characters that might appear in the input
+% Also turn back on active characters that might appear in the input
% file name, in case not using a pre-dumped format.
%
@gdef@fixbackslash{%
@@ -6993,11 +10041,28 @@ should work if nowhere else does.}
% Say @foo, not \foo, in error messages.
@escapechar = `@@
-% These look ok in all fonts, so just make them not special.
-@catcode`@& = @other
-@catcode`@# = @other
-@catcode`@% = @other
+% These (along with & and #) are made active for url-breaking, so need
+% active definitions as the normal characters.
+@def@normaldot{.}
+@def@normalquest{?}
+@def@normalslash{/}
+% These look ok in all fonts, so just make them not special.
+% @hashchar{} gets its own user-level command, because of #line.
+@catcode`@& = @other @def@normalamp{&}
+@catcode`@# = @other @def@normalhash{#}
+@catcode`@% = @other @def@normalpercent{%}
+
+@let @hashchar = @normalhash
+
+@c Finally, make ` and ' active, so that txicodequoteundirected and
+@c txicodequotebacktick work right in, e.g., @w{@code{`foo'}}. If we
+@c don't make ` and ' active, @code will not get them as active chars.
+@c Do this last of all since we use ` in the previous @catcode assignments.
+@catcode`@'=@active
+@catcode`@`=@active
+@markupsetuplqdefault
+@markupsetuprqdefault
@c Local variables:
@c eval: (add-hook 'write-file-hooks 'time-stamp)
diff --git a/doc/version.texi b/doc/version.texi
index 41b19a30d5c6..9a4feda60f57 100644
--- a/doc/version.texi
+++ b/doc/version.texi
@@ -1,4 +1,4 @@
-@set UPDATED 20 April 2006
-@set UPDATED-MONTH April 2006
-@set EDITION 6.1.5
-@set VERSION 6.1.5
+@set UPDATED 28 October 2014
+@set UPDATED-MONTH October 2014
+@set EDITION 6.2
+@set VERSION 6.2